Releases: mindreframer/lean_lmdb
Release list
v0.3.0
LeanLmdb 0.3.0 adds three opt-in capabilities while preserving raw binary behavior and durable defaults:
- configurable
read_ahead: false(MDB_NORDAHEAD) with compatibility and benchmark reporting; - versioned Elixir value codecs, transparent CRUD/scans/batches, deterministic logical CAS, raw migration access, and the bounded safe
LeanLmdb.Codecs.ErlangTerm; and - a supervised bounded FIFO
LeanLmdb.BatchWriterwith producer-side encoding, overload control, group commit, commit-only flush, forced sync, graceful stop, and conservative unknown-worker-outcome semantics with no automatic retry.
Cross-feature tests cover every durability mode, read-ahead, codecs, independent BatchWriters in multiple BEAM OS processes, worker death before/during/after commit, and explicit relaxed-mode checkpoints. Benchmarks now label BatchWriter acknowledgment boundaries and report codec sizes, queue high-water marks, dispatch reasons, and p50/p95/p99 without machine-dependent CI thresholds.
Every attached NIF 2.16 archive was built from commit 44060a9094828951a6b5fef5133f0978c399133b and directly smoke-tested on its matching runtime before atomic publication. The seven SHA-256 values are pinned by checksum-Elixir.LeanLmdb.Native.exs in the follow-up source commit.
v0.2.0
LeanLmdb 0.2.0
Adds explicit LMDB synchronization control for rebuildable derived stores:
durability: :sync— fully synchronized LMDB commits (default)durability: :no_meta_sync— preserve ACI; a system crash may undo the latest transactiondurability: :no_sync— omit commit-time flushes for maximum throughput; recent data may be lost and filesystems that reorder writes can leave the derived database corrupt after a system crashLeanLmdb.sync/1— force data and metadata to durable storage, suitable for supervised delayed checkpointsfixed_map: true— opt-in experimentalMDB_FIXEDMAP
NO_LOCK, WRITE_MAP, and MAP_ASYNC remain unavailable. Durability and fixed-map settings are immutable compatibility attributes of a shared environment.
Also includes comprehensive Benchee workloads, JSON results, interactive HTML charts, and configuration matrices.
All seven NIF 2.16 archives were built from commit 5d0949240b6bce59b805483343d5784d90f127b2, directly smoke-tested (including :no_sync plus forced sync), and checksum-verified before publication.
v0.1.0
LeanLmdb 0.1.0
Lean, binary-first LMDB for Elixir using Rustler 0.38, heed 0.22.1, and RustlerPrecompiled 0.8.4.
Precompiled NIF matrix
All attached NIF 2.16 archives were built from commit 426cf6b0312a4132b18285926cf87d25b41b77be, directly loaded, and smoke-tested with LMDB CRUD before publication:
- macOS: Apple Silicon and Intel x86-64
- Linux glibc: ARM64 and x86-64
- Linux musl/Alpine: ARM64 and x86-64
- Windows MSVC: x86-64
The seven SHA-256 digests are pinned in checksum-Elixir.LeanLmdb.Native.exs. Normal package compilation downloads and verifies the matching archive; LEAN_LMDB_BUILD=1 forces the packaged Rust source fallback.
Validation
- Release matrix run 30269339484: seven build/package/raw-smoke jobs and atomic release aggregation passed.
- Consumer CI run 30270299422: source QA and clean unpacked-package consumers passed on Linux ARM64/x86-64, macOS ARM64/Intel, and Windows x86-64 without invoking Rust.
- Source QA: 53 ExUnit results for each of two deterministic seeds, 26 Rust tests, Clippy, ExDoc, offline package source-fallback compile/runtime smoke, and release build.
See the README and changelog for API and LMDB operational constraints.