4.37

stalwartlabs/stalwart4.37Jun 29, 2026by chrislusf

AI Summary

This release focuses on performance enhancements for the Rust Volume Server, adds support for AWS-style bucket policies in S3, and improves EC (Erasure Coding) shard recovery. It also includes optimizations for the FUSE mount layer and new Prometheus metrics for EC operations.

Key Highlights

  • Performance CI benchmarks added for throughput and memory usage.
  • Rust Volume Server stream copy fixes to reduce memory buffering.
  • S3 API support for AWS object form bucket policies (Principal, NotPrincipal).
  • EC shard recovery improvements for shards with index files on specific peers.
  • FUSE directory cache state moved to a side map to reduce memory footprint.

New Features

  • New Prometheus metrics for EC rebuild/reconstruct operations.
  • S3 bucket policy support for AWS Principal and NotPrincipal.
  • S3 remote cache wait timeout to prevent hangs on large cold GetObject requests.

Full Release Notes

## What's Changed


### CI / Build & Performance
- Add performance CI (profiling, throughput, S3 read/write) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10105
- Perf CI: benchmark the Rust volume server and report memory usage by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10111
- docker release: per-platform builds on native runners, drop mode=max cache by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10109

### Volume Server (Rust)
- fix (Volume [Rust]): stream copy_file and volume_incremental_copy instead of buffering the whole file in memory by @justadri in https://github.com/seaweedfs/seaweedfs/pull/10110
- fix(volume): serve reads from remote after tier upload (Rust) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10112
- fix(volume): make tier-down crash-safe and serve from local (Rust) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10113

### Volume Server & EC
- volume server: route VolumeMarkReadonly to raft leader by @jk2lx in https://github.com/seaweedfs/seaweedfs/pull/10120
- fix: apply collectionPattern during detection in volume.fix.replication by @qzhello in https://github.com/seaweedfs/seaweedfs/pull/10115
- ec: recover EC shards whose .ecx index lives only on a peer server by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10108
- feat(metrics): Add EC rebuild/reconstruct Prometheus metrics by @rushikesh90 in https://github.com/seaweedfs/seaweedfs/pull/10124

### Master
- fix(master): shed assign load when volume growth is already in flight by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10121

### S3
- s3: support AWS object form for bucket policy Principal, add NotPrincipal by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10125

### Filer
- fix(filer.sync.verify): sort listings client-side before merge by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10117

### Mount / FUSE
- mount: move directory cache state to a side map to shrink InodeEntry (152 to 32 bytes) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10114

### Admin
- fix(admin): volume TTL in dashboard by @jayl1e in https://github.com/seaweedfs/seaweedfs/pull/10107

## New Contributors
* @jayl1e made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10107
* @justadri made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10110

**Full Changelog**: https://github.com/seaweedfs/seaweedfs/compare/4.36...4.37