libmdbx 0.10.4 comes with various improvements and bug fixes

The release of version 0.10.4 libraries "Libmdbx" in which in total, over 160 changes made to 57 files, ~ 5000 lines added and ~ 2500 removed. For those unfamiliar with libmdbx, you should know that this is a set of libraries which is an implementation of a compact, high-performance embedded database of the key-value class.

Historically, libmdbx is a deep reworking of the LMDB DBMS and outperforms its predecessor in reliability, feature set, and performance. Compared to LMDB, libmdbx places a lot of emphasis on code quality, API stability, testing, and automated checks. A utility to verify the integrity of the database structure is provided with some recovery options.

Technologically, libmdbx offers ACID, strict change serialization, and non-blocking reads with linear scaling across the cores of the CPU. Supports automatic compaction, automatic database size control, and rank query estimation. Since 2016, the projects have been funded by Positive Technologies and used in their products since 2017.

For libmdbx, a C ++ API is offered, as well as bindings compatible with Rust, Haskell, Python, NodeJS, Ruby, Go, Nim enthusiasts. For libfpta, only the API description in the form of a C / C ++ header file is publicly available.

In addition to supporting Linux, Windows, MacOS, Android, iOS, FreeBSD, DragonFly, Solaris, OpenSolaris, OpenIndiana, NetBSD, OpenBSD and other compatible systems POSIX.1-2008.

Main new features of libmdbx 0.10.4

In this new version of libmdbx 0.10.4 the developers worked to be able to provide the ability for playable builds, In addition, testing has been improved and test scripts have been extended to check all achievable non-isomorphic states of the page tree and GC content within the database.

In the C ++ API fixed once "noexcept", added extra overload for "cursor :: erase ()" method, implementation of buffers is relieved by using "std :: string" to ensure alignment (current for CLANG libstdc ++)

In addition, it is also highlighted that a phased verification was carried out with the addition of a series of verifications to ensure stability in the event of deliberate damage to the database.

On the other hand, it is highlighted that the search for the compiler components necessary for LTO (link time optimization) has been improved in the CMake scripts, in addition to that the maximum number of simultaneous readers has been increased to 32.767 and also performance has improved when using Valgrind and AddressSanitizer.

Regarding bug fixes that were made in this new version, the following are mentioned:

  • Fixed a bug where, in very rare circumstances, a loop / crash could occur during committing a transaction. The problem was identified by specialists at Positive Technologies during internal testing of their own products.
  • Fixed regression in dirty page spill algorithm (selective eviction of modified database pages) manifesting in rare unexpected MDBX_PROBLEM error when changing data in large transactions.
  • Fixed minor UndefinedBehaviorSanitizer and Coverity Scan issues.
    Fixed stale and unused internal flag checking "P_DIRTY" on pages nested within database images created by older versions of the library.
  • Fixed recursive use of SRW-lock in Windows when working in MDBX_NOTLS mode (without using thread local storage), fixed bootid generation in case of system time change, improved detection of WSL1 and WSL2 , added the ability to open a Plan 9 database mounted using DrvFS.

Finally if you are interested in knowing more about it about this new version, you can check the details In the following link.


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.