Skip to content

v0.8.0 Beta — stable

Pre-release
Pre-release

Choose a tag to compare

@jamesgober jamesgober released this 06 Aug 19:25
· 37 commits to main since this release

Smarter Flushes, Platform Parity, and Performance Wins

This release marks a major leap forward in stability, cross-platform reliability, and raw performance. Flush behavior is smarter, visibility is guaranteed across OS boundaries, and internal operations have been benchmarked and optimized for modern workloads like HiveDB.

Major Changes

  • Smart Flush Logic
    Flush operations now intelligently determine what needs to be persisted, reducing unnecessary I/O without sacrificing data safety. flush() and flush_range() honor platform-level durability semantics.

  • Platform Parity: Flush Visibility
    Full parity ensured across Linux, macOS, and Windows. After calling flush() or flush_range(), a fresh read-only mapping on all OSes will reflect the persisted data. This is explicitly tested and contractually guaranteed.

  • Performance Enhancements

    • Up to +122% throughput gains on large flush+update workloads.
    • Faster region updates (update_only, update_plus_flush, etc.).
    • Chunked iterators and resize ops now significantly faster.
    • Flush thresholds improved (tunable for advanced use cases).
    • Memory advice (MADV_WILLNEED, MADV_SEQUENTIAL) now shows measurable wins.

New Tests & Benchmarks

  • tests/platform_parity.rs: Verifies post-flush visibility across platforms.

  • tests/async_flush.rs: Confirms async and threshold flushing work as expected.

  • ✅ Full benchmark suite overhauled with criterion.rs, capturing:

    • Region updates
    • Full vs range flushes
    • Read/write throughput
    • Resize and COW performance

Fixes & Internals

  • Flush thresholds now configurable and actually used during real workloads.
  • Reduced dead_code warnings; huge_pages now properly surfaced in Debug.
  • Clean fallbacks and recoveries from failed mappings.
  • General code cleanup and traceability improvements for contributors.

⚠️ Notes

  • watch-based features now rely on explicit flushes for guaranteed change detection. If you're using watch in tests or production, be sure to call .flush() after writes, or manually force a flush in the watcher path.
  • huge_pages support exists but is not yet wired to retain successful mappings (planned for v0.9.X).

Feedback Wanted

This is a Beta release — API surface is stable, but we're still tuning the guts for edge-case performance. If you're using this in serious workloads (like HiveDB, cache engines, or low-latency pipelines), drop issues or suggestions and we’ll make it better.


Built for devs who care about nanosecond precision, zero-overhead memory I/O, and full platform correctness.

Full Changelog: v0.7.5...v0.8.0