Changelog

View Source

All notable changes to this project are documented here.

0.3.0 - 2026-07-27

  • Added configurable read_ahead: false support for LMDB's MDB_NORDAHEAD performance hint, including compatibility checks and benchmark reporting.
  • Added opt-in versioned value codecs with transparent CRUD/scans/batches, deterministic CAS, explicit raw migration access, and a safe Erlang-term codec.
  • Added an opt-in supervised BatchWriter with bounded FIFO group commits, producer-side codec encoding, overload control, and separate flush/sync barriers.
  • Added monitored commit workers with exact waiter notification, conservative unknown-outcome termination, no automatic retry, and graceful drain/stop.
  • Added cross-BEAM BatchWriter/codec/read-ahead/durability validation and BatchWriter benchmark workloads with queue high-water and trigger metrics.

0.2.0 - 2026-07-27

  • Added per-environment :sync, :no_meta_sync, and :no_sync durability modes, plus LeanLmdb.sync/1 for explicit forced checkpoints.
  • Added opt-in experimental fixed_map: true support for MDB_FIXEDMAP while continuing to reject WRITE_MAP, MAP_ASYNC, and NO_LOCK.
  • Added comprehensive configurable Benchee workloads with JSON and interactive HTML reports.

0.1.0 - 2026-07-27

Initial release.

  • Shared, canonical-path LMDB environments and immutable named-database handles.
  • Raw binary CRUD with stable missing/error results.
  • Atomic cross-database batches and compare-and-swap conflict results.
  • Bounded prefix/range scans with opaque process-local continuation tokens.
  • Multi-BEAM coordination and stale-reader diagnostics.
  • RustlerPrecompiled bootstrap for seven NIF 2.16 targets, with checksummed download-by-default installation and packaged Rust source fallback.
  • Source fallback retains Rustler/heed test-support builds, ExDoc API documentation, and an offline release QA gate.
  • Manual-only, draft-first release automation validated and published all seven archives at the v0.1.0 GitHub release; the package pins their SHA-256 values in checksum-Elixir.LeanLmdb.Native.exs.

Known constraints: LMDB permits one writer per environment; map growth is not automatic; scans do not retain a cross-page snapshot; values are copied rather than exposed zero-copy; only local filesystems are supported; Windows is limited to the x86-64 precompiled target; NIF hot upgrade with live resources is unsupported.