Skip to content

Releases: erigontech/mdbx-go

zero-alloc `.Count()` method

21 Mar 01:55
e2fd233

Choose a tag to compare

v0.39.17

zero-alloc `Count()` (#209)

PutCurrent method

16 Mar 05:52
2de3265

Choose a tag to compare

mdbx: add Cursor.PutCurrent for DupSort in-place dup replacement (#208)

* mdbx: add Cursor.PutCurrent for DupSort in-place dup replacement

For DupSort tables, after positioning with Get(GetBothRange), calling
PutCurrent(key, newVal) replaces the current duplicate entry in-place
using MDBX_CURRENT flag — saving one CGo call per update vs the
previous Del(Current)+Put() pattern.

Add TestCursor_PutCurrent_DupSort verifying the Erigon domain flush
pattern: insert (key, stepPrefix+payload) pairs, seek to exact step,
replace payload in-place, verify count and values are correct.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* mdbx: fix appendAssign lint in TestCursor_PutCurrent_DupSort

Use explicit copies for val1/val2 to avoid appending to step1/step2
backing arrays (gocritic appendAssign).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* mdbx: simplify TestCursor_PutCurrent_DupSort — merge 4 txns into 2

Combine DBI open + insert into one transaction (matching the pattern
used in other DupSort tests). Combine PutCurrent + verification into
one transaction (read-your-own-writes within an Update works fine).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* go.mod: bump go directive to 1.24 for b.Loop() support

BenchmarkCursor_Put_Sequence uses testing.Loop which requires go1.24.
The toolchain was already go1.24.1; align the go directive to match.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

v0.39.15

13 Jan 01:41

Choose a tag to compare

added NoStickyThreads as Default option

v0.39.14 libmdbx new version 0.13.10 "Gloss of Glory"

25 Dec 00:00

Choose a tag to compare

What's new?

NB! Breaking changes in the code distribution model of db repository (bindings are not affected). Please read carefully
release notes and post in telegram describing the situation.

What else?

Full changelog here:
https://sourcecraft.dev/dqdkfa/libmdbx/releases/v0.13.10

TL;DR

  • Fixed multiple stability issues, including TLS-related crashes on library unload and Windows ERROR_IO_PENDING errors when reopening the same database within a process.
  • Improved filesystem robustness on Linux by mitigating ext4 fast_commit edge cases.
  • Fixed page-size auto-tuning that could incorrectly increase page size on high-RAM systems.
  • Resolved several CMake/CTest regressions, including incorrect Valgrind integration and false-positive memcheck reports.
  • Cleaned up minor memory leaks, UBSAN warnings, and compiler false positives.
  • Improved C++ API internals and buffer handling.
  • Extended build and test support (RISC-V, HarmonyOS, additional CMake tests).

p.s. 0.39.13 dropped due to a minor bug, nvm

v0.39.12 libmdbx v0.13.9 "ИС-2"

01 Nov 10:56

Choose a tag to compare

What's changed:

new mdbx 0.13.9 IS-2 release full changelog here

TL;DR

  • Fixed an assert crash in the DBI bitmap scan path affecting rare 32-bit debug builds.
  • Improved detection of lib.exe and dlltool.exe utilities in CMake builds on Windows.
  • Fixed a regression where database size could increase instead of shrink after introducing fallocate() (to prevent SIGBUS on low disk space).
  • Fixed a typo in test/battery-tmux.sh that created a stray file named -.
  • Removed leftover unnecessary uses of the MDBX_INTERNAL macro.
  • Added a workaround on Android to reduce EAGAIN errors caused by system resource limits when reopening a database quickly.
  • Added support for Harmony OS (OHOS).

v0.39.11 libmdbx v0.13.7 with small fix

17 Oct 07:35

Choose a tag to compare

added cp of small fix from 0.13.8 to 0.13.7
Mithril-mine/libmdbx@43cb913

v0.39.10 libmdbx v0.13.8 Vseobuch

29 Sep 17:38

Choose a tag to compare

What's Changed

changed mdbx version to latest stable 0.13.8 (vseobuch) release

TL:DR

  • Patched rare SIGBUS crash on full filesystems when extending DB.
  • Restored compatibility with Linux 3.16+ while keeping 4.x+ support.
  • Fixed regression in MDBX_WANNA_RECOVERY checks for read-only DBs.

Full changelog here

mdbx v0.13.7

30 Jul 20:10

Choose a tag to compare

What's Changed

changed mdbx version to latest stable 0.13 release

TL:DR

  • Fixed critical semaphore issue in mdbx_env_resurrect_after_fork() (SysV semaphores on macOS/POSIX with MDBX_LOCKING=5)
  • Resolved POSIX DB copy API errors (EWOULDBLOCK/EAGAIN) on non‑Linux and non‑local filesystems
  • Corrected unexpected MDBX_BAD_DBI and MDBX_DBS_FULL returns during concurrent transactions and DBI reopen
  • Patched Android build with _FILE_OFFSET_BITS, and replaced misuse of ENOMEM with MDBX_ENOMEM
  • Removed various incorrect assert()s (in txn_end(), txn_lock(), txn_unlock()) and silenced MSVC warnings C5286/C5287
  • Enhanced POSIX OFD‑lock fallback to handle additional error codes (ENOSYS, ENOTSUP, etc.)
  • Improved test framework: NUMA‑binding option --numa, tmux script NUMA distribution, and random test order

For full release info: https://gitflic.ru/project/erthink/libmdbx/release/4465d9ff-62a2-4104-ad9b-c0224ea60e48

v0.40.0 (mdbx v0.14.1 beta)

15 May 15:55
f8885bc

Choose a tag to compare

What's Changed

Full Changelog: v0.39.8...v0.40.0

Added new version of MDBX 0.14.1
Full changelog:
https://gitflic.ru/project/erthink/libmdbx/release/a9cfaf48-ba05-4824-8d4c-b2e5c2f91e3f
TLDR:

  • GC Rewrite: Replaced legacy LMDB-based GC with a new algorithm using compact container structures (RKL), drastically reducing overhead and complexity. Enables GC updates from O(1) to O(log N) depending on transaction size.
  • New Cursor API:
    • MDBX_SEEK_AND_GET_MULTIPLE: batch-read multi-values from a specific key.
    • mdbx_cursor_close2(), mdbx_txn_release_all_cursors_ex(), cursor::put_multiple_samelength(), etc.
  • Build Options:
    • MDBX_NOSUCCESS_PURE_COMMIT: helps detect redundant write transactions.
    • MDBX_ENABLE_NON_READ_EXPORT: allows DBs on NFS (at user’s risk).
  • New Tooling Features:
    • mdbx_chk: now includes a histogram of multi-values.
    • mdbx_dump / mdbx_load: support for compact mode to reduce dump size.
  • Behavioral Changes:
    • No-op inserts: In dupsort tables, inserting existing duplicates now avoids unnecessary copy-on-write operations.
    • Improved error handling and more robust cursor management (e.g. disallowed unbinding in nested transactions).

v0.39.8

27 Apr 13:43
0e38ee2

Choose a tag to compare

What's Changed

Full Changelog: v0.39.7...v0.39.8