Memory Optimization
This release dramatically reduces peak memory usage across all operations through mmap-backed storage and streaming processing:
- Mmap-backed pack assembly: Replace heap pack buffers with mmap-backed assembly, reducing backup heap usage from 384 MiB to ~4 MiB
- Pack buffer pool memory reduction: ~40% reduction in pack buffer pool memory (640→384 MiB) before mmap conversion
- Tiered dedup index: Add mmap cache and xor filter for memory-efficient chunk deduplication
- Index-free extract: Restore files without loading the full chunk index into memory, using mmap restore cache
- Streaming item serialization/deserialization: Eliminate temp allocations during backup and reduce extract peak memory
- Incremental index update: Reduce save_state() peak memory by flushing incrementally (~138M saved)
- Open-phase optimization: Reduce open-phase peak memory from ~227M to ~128M
- Restore planner compaction: Use SmallVec and filtered chunk index for ~40% better throughput
Features
cache_dirconfig option: Control where mmap temp files and cache data are stored- Reuse ZSTD compression context: Thread-local
Compressorreuse reduces allocation churn - Pre-size FileCache HashMap: Use old cache length for initial capacity
Bug Fixes
- Release pack buffer pool in
save_state()to avoid retaining memory past its useful life - Recalculate pack writer targets in
load_chunk_index()for correct sizing
Infrastructure
- Add profiling build option to release workflow
- Add
linux_onlyoption for manual release workflow runs
Downloads
| Platform | File |
|---|---|
| Linux x86_64 | vger-x86_64-unknown-linux-gnu.tar.gz
|
| macOS aarch64 | vger-aarch64-apple-darwin.tar.gz
|
| Windows x86_64 | vger-x86_64-pc-windows-msvc.zip
|
Verify checksums with sha256sum -c SHA256SUMS.