Skip to content

v0.5.6

Choose a tag to compare

@LarsArtmann LarsArtmann released this 10 Aug 07:03
· 37 commits to master since this release

API polish and test-coverage expansion

The SegmentStore trait is now sealed (feature-gated under loom; no impact on default-feature consumers), SegmentConfig gains PartialEq/Eq, FlushPolicy gains a reusable validate() method, and BufferStats/DurabilityPolicy/SegmentConfig gain human-readable Display impls. Test coverage expands with 2 loom tests, 2 property tests, 1 stress test, 1 fuzz target, and 2 criterion benchmarks.

No on-disk format change, no new dependency, no API break for default-feature consumers.

Added — API

  • PartialEq + Eq for SegmentConfig (cipher compared by Arc::ptr_eq — no key material in comparisons)
  • FlushPolicy::validate() — reusable validation for BatchOrIntervalMin constraints
  • Sealed SegmentStore trait — prevents downstream implementations (loom feature re-exports the seal marker)
  • Display impls for DurabilityPolicy, BufferStats, and SegmentConfig (cipher masked as [set]/[none])
  • #[must_use] on BufferStats
  • #[doc(alias = "backlog")] on pending_count()

Added — test coverage

  • 2 loom tests: for_each_from Phase 2 snapshot + iter_from under concurrent append (loom suite: 12 → 14)
  • 2 property tests: publish_disk_stats correctness (counters vs directory truth after sync + recover), delete_acked idempotency (overlapping ack ranges + concurrent append)
  • 1 stress test: segment_size_stats under concurrent flush + delete
  • 1 fuzz target: fuzz_for_each_from (7 fuzz targets total)
  • 2 benchmarks: bench_segment_size_stats (100/1k/10k segments), bench_cipher (AES-256-GCM + XChaCha20-Poly1305 vs baseline)

Changed

  • Internal deduplication: seq_to_index helper, BufferInner::pending_count()/latest_sequence()/pending_start() const fns, compute_store_pressure extracted from inline formula
  • BufferStats Display now formats bytes in human-readable binary units (4.0KB, 1.0MB)

Full changelog

v0.5.5...v0.5.6