Skip to content

v5.0.0

Choose a tag to compare

@sw-release-bot sw-release-bot released this 09 Jun 00:10
· 12 commits to main since this release
300d6fa

Added

  • (fs) filesystem-aware capability framework (CoW-disable + reflink) (#428)
  • (encryption) activate AAD-bound block encryption on the live path (#423)
  • (manifest) incremental manifest via append-only edit log (#421)
  • (query) cold-block partial decode with resumable zstd (#415)
  • (ecc) configurable ECC-at-rest scheme (XOR / Reed-Solomon) on the Page ECC path (#414)
  • (tooling) repair_db — rebuild MANIFEST from on-disk SSTs (#409)
  • (compaction) compaction-time range tombstones + bottommost seqno-zeroing (#407)
  • (compaction) parallel sub-compaction across key ranges (#402)
  • (compaction) parallel block compression (#401)
  • (bench) add point-read workload to compare-rocksdb harness (#372)
  • (index) per-block seqno bounds in SST index entries (#371)
  • (integrity) [breaking] per-KV checksum protection + flag-based ECC parity (V5 block header) (#369)
  • (encryption) outer Reed-Solomon ECC frame codec over block ciphertext (#365)
  • (manifest) Blocks-based manifest hardening (#297) (#357)
  • (config) runtime-toggleable RuntimeConfig foundation (#352) (#355)
  • (version) PointInTimeRecovery + SkipAnyCorruptedRecords + per-record framing (#323) (#342)
  • (io) local Read/Write/Seek trait surface to lift Fs off std::io (#311) (#347)
  • (bench) foundation for compare-rocksdb head-to-head harness (#244) (#345)
  • (encryption) top-level encrypt_block/decrypt_block + KeyChain + wire format (#251) (#344)
  • (ecc) per-block Reed-Solomon Page ECC (#267) (#343)
  • (sst-dump) dump subcommand + public inspect::iter_data_block_entries facade (#335)
  • (sst-dump) filter-stats subcommand + public inspect::read_filter_stats facade (#334)
  • (encryption) AEAD dispatch with AES-256-GCM + ChaCha20-Poly1305 (#251 PR2) (#338)
  • (encryption) AAD construction + decode-time error types (#251 foundation) (#336)
  • (sst-dump) index-dump subcommand + public inspect facade extension (#333)
  • (sst-dump) properties subcommand + public inspect facade (#328)
  • (table) mirror TLI block near file tail for torn-write safety (#325)
  • (sst-dump) hex subcommand for raw block-region dump with header decode (#327)
  • (tooling) sst-dump CLI scaffold + verify subcommand (#301) (#316)
  • (config) ManifestRecoveryMode + TolerateCorruptedTailRecords (#299) (#317)
  • (verify) per-block XXH3 scrub for proactive bit-rot detection (#300 part 1) (#313)
  • (fs) FileHint enum + FsFile::hint() primitive for posix_fadvise (#133 Phase 1a) (#307)
  • (seeking-merger) allow self-coordinating independent-cursor sources via broadened CoherentMergeSource (#280) (#305)
  • (range) wire SeekingMerger into Tree::range read path (#222) (#288)
  • (merge) SeekingMerger — RocksDB-style dual loser trees (#222) (#284)
  • (checkpoint) [breaking] hard-link snapshot for PITR backup (V5 storage) (#276)
  • (filter) replace standard bloom with BuRR (#269)

Documentation

  • fix broken and redundant intra-doc links across the crate (#368)
  • (format_version) document on-disk version bump policy (#360)
  • add Manifest recovery modes section to README (#332)
  • (encryption) AAD-bound encrypted block wire format spec (#250) (#318)

Fixed

  • (compaction/leveled) tie level-count assertion to config (#359)
  • (table/index) default partitioned index ON at every level (#329) (#340)
  • (table) mirror meta block at mid-file for tail-corruption resilience (#295) (#314)

Performance

  • (memtable) stop zeroing the arena, restore cheap fixed-block decode (#420)
  • (memtable) geometric arena chunks (no 64 MiB zeroing per flush) (#417)
  • (compression) pass source-size hint on zstd block compression (#404)
  • (table) raise index spill threshold to 4 MiB (#399)
  • (table) size-adaptive block index — single-level for small SSTs (#397)
  • (read) lock-free latest-version fast path for point reads (#394)
  • (compaction) I/O rate limiter (leaky token bucket) (#389)
  • (io) drop cold-level SST output from the page cache after write (#392)
  • (table) extend longest_shared_prefix_length SIMD to 32-bit x86 (i686) (#382)
  • (table) AVX-512BW 64-byte lane for longest_shared_prefix_length (#380)
  • (fs) pure hard_link; single SyncMode-aware cross-fs copy path (#378)
  • (fs) configurable SyncMode; default plain fsync on macOS (#374)
  • (read) borrow index block on point-read, parse trailer once (#376)
  • (zstd) retain dictionary id in frame header (#366)
  • (fs) O_DIRECT foundation — AlignedBuf + FsOpenOptions::direct_io (#133 phase 2) (#310)
  • (table/scanner) bump compaction readahead 32 KiB → 2 MiB (#133 Phase 1c) (#308)
  • (ci) proptest env-var budgets + slow-timeout audit (#158 items 2-5) (#306)
  • (table) add Table::batch_get for sorted multi-key point reads (#223 phase 1) (#290)
  • (loser_tree) eliminate comparator dispatch, close #283 fully (#287)
  • (loser_tree) close N≥16 regression, reduce small-N gap (#283 partial) (#286)
  • (compression) pre-parse zstd dict once via OnceCell + no-std foundation (#273)

Refactored

  • (block) collapse 4 Block I/O paths into a single BlockTransform enum (#248) (#337)
  • (block) [breaking] thread BlockIdentity through Block I/O API (#252) (#294)
  • (table/block/tests) extract write_block_to_tempfile helper (#128 part 1) (#293)
  • (filter/burr) re-deny indexing/expect/unwrap with per-site justifications (#270) (#282)

Testing

  • (compare) honest L3 compaction baseline vs RocksDB (#427)
  • (compare) add surrealkv as a third bench engine (#425)
  • (compare-rocksdb) zstd-22 compression axis + scan/seek/overwrite scenarios (#386)
  • (encryption) AAD threat-model regression suite (first wave) (#361)
  • (table/index) tighten blast-radius assertion to corruption variants (#341)
  • triage all #[ignore] annotations across the crate (#326)
  • (table) pin global-seqno translation on Table::get return path (#321) (#322)
  • (verify) pin DataReadError routing for truncated data segment (#315) (#319)
  • (encryption) mixed-load stress test across encryption × compression matrix (#128 part 2) (#304)
  • (bench) P99/P999 tail-latency reporting for BuRR/ribbon probes (#271) (#281)