Skip to content

v0.40.0 (mdbx v0.14.1 beta)

Choose a tag to compare

@JkLondon JkLondon released this 15 May 15:55
· 45 commits to master since this release
f8885bc

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).