v0.40.0 (mdbx v0.14.1 beta)
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).