Performance
- Streaming compress+encrypt pipeline — backup hot path now produces one Vec per chunk instead of 3–4, with exact-sized pack buffers that avoid glibc ptmalloc2 realloc-shrink pitfalls (~140 MB RSS reduction)
- Eliminate redundant copies on pack upload — zero-copy
put_ownedfor remote backends (S3, REST) avoids one full-pack-size allocation per flush; pre-sized worker chunk Vecs avoid ~7 reallocations per 10 MiB file - REST backend restore — preallocated
get_rangebuffers and positionalwrite_all_aton Unix halve syscalls per chunk - LZ4/ZSTD compression — LZ4 writes directly into spare capacity (no zero-fill); ZSTD uses
compress_to_bufferto eliminate a ~131 KiB temp Vec per chunk - FileCache key compaction — replace full path strings with 16-byte BLAKE2b hashes as HashMap keys, saving ~20–35 MB RSS; backwards-compatible deserialization of legacy caches
Bug Fixes
- REST 404 on empty-prefix LIST —
list("")now uses the base URL directly instead of appending a trailing slash, with a newrepo_list_allhandler on the server
Documentation
- Low-resource background backup recipe (ionice, nice, cgroup limits)
Infrastructure
- Extracted shared script library (
scripts/lib/) and simplified CLIs for stress.sh, benchmark.sh, and profile.sh
Downloads
| Platform | Binary |
|---|---|
| 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
|