- Update fixedbitset to 0.4
- Update indicatif to 0.16
- Update libc to 0.2.*
- Update nix to 0.21
- Update nom to 6.2.*
- Update dependencies with cargo-update
- Update crc32c to 0.6, which allows it to be built on AArch64.
- Update base64 to 0.13
- Update byteorder to 0.14
- Update io-uring to 0.4
- Update libc to 0.2.83
- Update nix to 0.19
- Update nom to 6.0.1
- Update quick-xml to 0.20
- Update rand to 0.8
- Update tempfile to 3.2
- Update tui to 0.14
Signed-off-by: Kay Lin <i@v2bv.net>
The Rust implementation is multithreaded, performs better in general and
does custom compression of btree nodes to achieve much better compression
ratios. unpack also checksums expanded metadata to validate it.
Format version has jumped to 3, no backwards compatibility, but I think
that's ok since we never made a release that contained the C++ version
of these tools.
Benchmarks
==========
On an 8 core, 16 hyperthread machine.
metadata 1G, full:
Pack size pack time unpack time
------------------------------------------------------
C++ 193M 50.3s 6.9s (no verify)
Rust 70M 1.4s 1.8s (verify)
metadata 16G, sparse:
Pack size pack time unpack time
------------------------------------------------------
C++ 21M 68s 1s (no verify)
Rust 4M 8.6s 0.5s (verify)