A new version of the LIBMDBX 0.13.3 (MDBX) library has been released, featuring a high-performance compact built-in data database of key-value pairs. The LIBMDBX code is distributed under the Apache 2.0 license and is supported on various operating systems and architectures, including Russian Elbrus 2000. The library offers a developed API for C++, as well as bindings for Rust, Haskell, Python, Nodejs, Ruby, GO, NIM, Deno, and Scala.
LIBMDBX is a descendant of the deep processing DBMDB DBMS and surpasses its predecessor in reliability, capabilities, and performance. It prioritizes code quality, stable API operation, testing, and automatic checks. The library includes a utility for checking database structure integrity and offers features such as ACID compliance, strict serialization of changes, non-blocking reading with linear scaling across CPU cores, auto compaction, automatic database control, and Range Query Estimation.
Key changes in the latest release include:
- Stable status for branch 0.13.x with development on branch 0.14.x started.
- Addition of the function mdbx_cursor_count_ex() in the C API for obtaining the number of values corresponding to the current key and information about the tree storing these values.
- In the C++ API, the method MDBX::txn::make_broken() is added, similar to mdbx_txn_break().
- Enhancements to utilities such as mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat, logging, and warnings.
- Behavior changes include:
- Calculating CPU time costs for merging page lists when profiling the garbage collector.
- Renaming the data mode value in the test utility from Data.dups to Data.multi.
- Improved key length control in cursor_seek().
- Automatic adjustment of DIRTY-PAGES-LIMIT when value not provided by user in mdbx_env_set_option(mdbx_opt_txn_dp_limit).
- Allowing MDBX_NOSTICYTHREADS mode for COMMIT/ABORT of nested transactions from any thread or stream.
- Displaying error MDBX_INCOMPATILLE when attempting to launch nested transactions in MDBX_WRITEMAP mode.
- Using Default-Relations by default in C++ API for database geometry formation.
- Refinements in selecting default database parameters in mdbx_env_set_geometry().