Skip to content

Releases: mindreframer/lean_lmdb

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 18:38

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.BatchWriter with 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

Choose a tag to compare

@github-actions github-actions released this 27 Jul 15:37

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 transaction
  • durability: :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 crash
  • LeanLmdb.sync/1 — force data and metadata to durable storage, suitable for supervised delayed checkpoints
  • fixed_map: true — opt-in experimental MDB_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

Choose a tag to compare

@github-actions github-actions released this 27 Jul 13:16

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.