The LIBMDBX 0.13.2 (MDBX) library release has been published, featuring a high-performance compact built-in data database for key-value implementation. The LIBMDBX code is distributed under the Apache 2.0 license and is supported on all relevant operating systems and architectures including Russian Elbrus 2000. LibMDBX offers a developed API for C++, as well as bindings for enthusiasts in Rust, Haskell, Python, Nodejs, Ruby, Go, Nim, Deno, and Scala.
Historically, Libmdbx is a DBMDB DBMS that goes beyond its predecessor in terms of capabilities and performance, surpassing LMDB. LIBMDBX places a strong emphasis on code quality, stable API operation, testing, and automatic checks. It includes a utility for checking the database structure integrity with some restoration capabilities. Technologically, LibMDBX provides ACID compliance, strict serialization of changes, and non-blocking reads with linear scaling across CPU cores. It also supports auto compacting, automatic database maintenance, and Range Query Estimation.
The main changes in this release include:
- Accelerated GC updating in complex scenarios with page lists return/placement. The experimental regime of corrective feedback has been modified and activated, significantly improving convergence and eliminating bouncing issues during transaction fixation.
- Standard C23 is now included in the assembly scripts CMAKE.
- T-macros for paired functions Char/Wchar_t have been added.
- Support for invested writing transactions has been added to the C++ API.
- Transition to Semantic Versioning 2 specification and export of version information in Version.json.
- Support for Source_Date_epoch variable for assembly reproduction.
- Ability to provide additional assembly information through the MDBX_Build_metadata option.
- Logging errors returned from the API, with the option to set logo levels for specific error logs.
- Changes in behavior include new functions like MDBX::cursor::get_multiple_sameleng() and renaming of MDBX::txn::put_multiple_samelength().
- Return value of the key itself in MDBX::get_multiple operation for uniformity in C++ API.
- Change in base type for dimensional constants MDBX::ENV::Geometry from Size_t to the Sign Intptr_T.