Libmdbx Versions Save

One of the fastest embeddable key-value ACID database without WAL. libmdbx surpasses the legendary LMDB in terms of reliability, features and performance.

v0.11.6

2 years ago

The stable release with the complete workaround for an incoherence flaw of Linux unified page/buffer cache. Nonetheless the cause for this trouble may be an issue of Intel CPU cache/MESI. See issue#269 for more information.

Acknowledgements:

Fixes:

  • Added complete workaround for an incoherence flaw of Linux unified page/buffer cache.
  • Fixed cursor reusing for read-only transactions.
  • Fixed copy&paste typo inside mdbx::cursor::find_multivalue().

Minors:

  • Minor refine C++ API for convenience.
  • Minor internals refines.
  • Added lib-static and lib-shared targets for make.
  • Added minor workaround for AppleClang 13.3 bug.
  • Clarified error messages of a signature/version mismatch.

Please refer to the ChangeLog for more historical information and actual TODOs.


SHA256 checksums

c15168cc97d8d2eb182f9b18f44295d72523d6654a2e34a5c634c62855047606  libmdbx-amalgamated-0.11.6.tar.gz
f95524829d01361abeabc1283db6c1418c94629d01dd2766c574d1e534217c35  libmdbx-amalgamated-0_11_6.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.11.5

2 years ago

The bobsolete hotfix release for a flaw of Linux unified page/buffer cache. See issue#269 for more information.

Acknowledgements:

Fixes:

  • Added workaround for a flaw of Linux 4.19 (at least) unified page/buffer cache.
  • Fixed/Reworked move-assignment operators for "managed" classes of C++ API.
  • Fixed potential SIGSEGV while open DB with overrided non-default page size.
  • Made mdbx_env_open() idempotence in failure cases.
  • Refined/Fixed pages reservation inside mdbx_update_gc() to avoid non-reclamation in a rare cases.
  • Fixed typo in a retained space calculation for the hsr-callback.

Minors:

  • Reworked functions for meta-pages, split-off non-volatile.
  • Disentangled C11-atomic fences/barriers and pure-functions (with __attribute__((__pure__))) to avoid compiler misoptimization.
  • Fixed hypotetic unaligned access to 64-bit dwords on ARM with __ARM_FEATURE_UNALIGNED defined.
  • Reasonable paranoia that makes clarity for code readers.
  • Minor fixes Doxygen references, comments, descriptions, etc.

Please refer to the ChangeLog for more historical information and actual TODOs.


SHA256 checksums

d6f42ed3d910046eb1df8a6dc1e7959d59a409c1d0d7250837a843e2b5f43bd2  libmdbx-amalgamated-0.11.5.tar.gz
88ba43a888f45718d6fc7f8b529ec9bcd40726d54feae8fa5e5892516f2acfb1  libmdbx-amalgamated-0_11_5.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.11.4

2 years ago

The stable release with fixes for large and huge databases sized of 4..128 TiB.

Acknowledgements:

New features, extensions and improvements:

  • Added treating the UINT64_MAX value as maximum for given option inside mdbx_env_set_option().
  • Added to_hex/to_base58/to_base64::output(std::ostream&) overloads without using temporary string objects as buffers.
  • Added --geometry-jitter=YES|no option to the test framework.
  • Added support for Deno support by Kris Zyp.

Fixes:

  • Fixed handling MDBX_opt_rp_augment_limit for GC's records from huge transactions (Ethereum: Erigon/Akula/Silkworm).
  • Fixed build on Android (avoid including sys/sem.h).
  • Fixed missing copy assignment operator for mdbx::move_result.
  • Fixed missing & for std::ostream &operator<<() overloads.
  • Fixed unexpected EXDEV (Cross-device link) error from mdbx_env_copy().
  • Fixed base64 encoding/decoding bugs in auxillary C++ API.
  • Fixed overflow of pgno_t during checking PNL on 64-bit platforms.
  • Fixed excessive PNL checking after sort for spilling.
  • Reworked checking MAX_PAGENO and DB upper-size geometry limit.
  • Fixed build for some combinations of versions of MSVC and Windows SDK.

Minors:

  • Added workaround for CLANG bug D79919/PR42445.
  • Fixed build test on Android (using pthread_barrier_t stub).
  • Disabled C++20 concepts for CLANG < 14 on Android.
  • Fixed minor unused parameter warning.
  • Added CI for Android.
  • Refine/cleanup internal logging.
  • Refined line splitting inside hex/base58/base64 encoding to avoid \n at the end.
  • Added workaround for modern libstdc++ with CLANG < 4.x
  • Relaxed txn-check rules for auxiliary functions.
  • Clarified a comments and descriptions, etc.
  • Using the -fno-semantic interposition option to reduce the overhead to calling self own public functions.

Please refer to the ChangeLog for more historical information and actual TODOs.


SHA256 checksums

884de528f5c2abab2187b7c4c84b769d2551e1a748cbfdf0ae4c0f5c9f8dbd27  libmdbx-amalgamated-0.11.4.tar.gz
a4cbe9b81df78ef6ab14276d31bdb3c982fe5b78cc26fb54aed785c2048f5947  libmdbx-amalgamated-0_11_4.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.11.3

2 years ago

Acknowledgements:

New features, extensions and improvements:

  • Added mdbx_cursor_get_batch().
  • Added MDBX_SET_UPPERBOUND.
  • C++ API is finalized now.
  • The GC update stage has been significantly speeded when fixing huge Erigon's transactions (Ethereum ecosystem).

Fixes:

  • Disabled C++20 concepts for stupid AppleClang 13.x
  • Fixed internal collision of MDBX_SHRINK_ALLOWED with MDBX_ACCEDE.

Minors:

  • Fixed returning MDBX_RESULT_TRUE (unexpected -1) from mdbx_env_set_option().
  • Added mdbx_env_get_syncbytes() and mdbx_env_get_syncperiod().
  • Clarified description of MDBX_INTEGERKEY.
  • Reworked/simplified mdbx_env_sync_internal().
  • Fixed extra assertion inside mdbx_cursor_put() for MDBX_DUPFIXED cases.
  • Avoiding extra looping inside mdbx_env_info_ex().
  • Explicitly enabled core dumps from stochastic tests scripts on Linux.
  • Fixed mdbx_override_meta() to avoid false-positive assertions.
  • For compatibility reverted returning MDBX_ENODATAfor some cases.

Please refer to the ChangeLog for more historical information and actual TODOs.


SHA256 checksums

bede0a58803c0183ecd56aecafb77d5defe57ec16fabc34eaf810317c15efd44  libmdbx-amalgamated-0.11.3.tar.gz
03abf99bcc2ca45ff56b2c67ac50dab65e5451282fe0c1dcdd5d77073b027f11  libmdbx-amalgamated-0_11_3.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.11.2

2 years ago

Acknowledgements:

Fixes:

Minors:

  • Fixed constexpr-related macros for legacy compilers.
  • Allowed to define CMAKE_CXX_STANDARD using an environment variable.
  • Simplified collection statistics of page operation .
  • Added MDBX_FORCE_BUILD_AS_MAIN_PROJECT cmake option.
  • Remove unneeded #undef P_DIRTY.

Please refer to the ChangeLog for more historical information and actual TODOs.


SHA256 checksums

efe64856e934621adf104385fad788e679c41e2df3eae96ab35caf19403c75e2  libmdbx-amalgamated-0.11.2.tar.gz
2170d2f812a1df83ccb70e2978ee520d3fa9b254641d5834e2da0fc400fdd69a  libmdbx-amalgamated-0_11_2.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.11.1

2 years ago

Backward compatibility break:

The database format signature has been changed to prevent forward-interoperability with an previous releases, which may lead to a false positive diagnosis of database corruption due to flaws of an old library versions.

This change is mostly invisible:

  • previously versions are unable to read/write a new DBs;
  • but the new release is able to handle an old DBs and will silently upgrade ones.

Acknowledgements:

Please refer to the ChangeLog for more historical information and actual TODOs.


SHA256 checksums

f954ba8c9768914a92c2b46aac0d66bec674dbb4d7b0f01e362ea2921746ddaa  libmdbx-amalgamated-0.11.1.tar.gz
dcc36463dd5239b2ed21eda58eddbefa695eddebef86cdaae3dac5dc89a575df  libmdbx-amalgamated-0_11_1.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.10.5

2 years ago

Warning:

Unfortunately, the v0.10.5 accidentally comes not full-compatible with previous releases:

  • v0.10.5 can read/processing DBs created by previous releases, i.e. the backward-compatibility is provided;
  • however, previous releases may lead to false-corrupted state with DB that was touched by v0.10.5, i.e. the forward-compatibility is broken for v0.10.4 and earlier.

This cannot be fixed, as it requires fixing past versions, which as a result we will just get a current version. Therefore, it is recommended to use v0.11.1 instead of v0.10.5.


Acknowledgements:

Fixes:

  • Fixed unaligned access regression after the #pragma pack fix for modern compilers.
  • Added UBSAN-test to CI to avoid a regression(s) similar to lately fixed.
  • Fixed possibility of meta-pages clashing after manually turn to a particular meta-page using mdbx_chk utility.

Minors:

  • Refined handling of weak or invalid meta-pages while a DB opening.
  • Refined providing information for the @MAIN and @GC sub-databases of a last committed modification transaction's ID.

SHA256 checksums

67bc2db4de771a9cb3eea41536b37dbfad21b3df1e7e00f2361831fd2fc5f8f7  libmdbx-amalgamated-0.10.5.tar.gz
9eb8fab53721c02e585a553c5eab0e87a888adfc59b10d816de7d6fd1fa0eecb  libmdbx-amalgamated-0_10_5.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.10.4

2 years ago

Acknowledgements:

Fixes:

  • Fixed possibility of looping update GC during transaction commit (no public issue since the problem was discovered inside Positive Technologies).
  • Fixed #pragma pack to avoid provoking some compilers to generate code with unaligned access.
  • Fixed noexcept for potentially throwing txn::put() of C++ API.

Minors:

  • Added stochastic test script for checking small transactions cases.
  • Removed extra transaction commit/restart inside test framework.
  • In debugging builds fixed a too small (single page) by default DB shrink threshold.

SHA256 checksums

e11d5339a1e1cc34407898933b62a208936fd761a2cc31e11244d581d1d2b5d0  libmdbx-amalgamated-0.10.4.tar.gz
59d60111deb27b997d5aac817898e12f82c406f3eab1d411130e60d1d6a9dbf0  libmdbx-amalgamated-0_10_4.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.10.3

2 years ago

Acknowledgements:

Extensions and improvements:

  • Added cursor::erase() overloads for key and for key-value.
  • Resolve minor Coverity Scan issues (no fixes but some hint/comment were added).
  • Resolve minor UndefinedBehaviorSanitizer issues (no fixes but some workaround were added).

Fixes:

Minors:

  • Fixed getting revision number from middle of history during amalgamation (GNU Makefile).
  • Fixed search GCC tools for LTO (CMake scripts).
  • Fixed/reorder dirs list for search CLANG tools for LTO (CMake scripts).
  • Fixed/workarounds for CLANG < 9.x
  • Fixed CMake warning about compatibility with 3.8.2

SHA256 checksums

a8f2436c4d008886e044f568a22bda44329fb1c67f175d91a929ff8e2065340a  libmdbx-amalgamated-0.10.3.tar.gz
26fde175d6a80cbf3a65fbf15e7c78f4940f92089dc379fefdecaae8973f7ef2  libmdbx-amalgamated-0_10_3.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***

v0.10.2

2 years ago

Acknowledgements:

New features, extensions and improvements:

  • Allow to predefine/override MDBX_BUILD_TIMESTAMP for builds reproducibility.
  • Added options support for long-stochastic script.
  • Avoided MDBX_TXN_FULL error for large transactions when possible.
  • The MDBX_READERS_LIMIT increased to 32767.
  • Raise MDBX_TOO_LARGE under Valgrind/ASAN if being opened DB is 100 larger than RAM (to avoid hangs and OOM).
  • Minimized the size of poisoned/unpoisoned regions to avoid Valgrind/ASAN stuck.
  • Added more workarounds for QEMU for testing builds for 32-bit platforms, Alpha and Sparc architectures.
  • mdbx_chk now skips iteration & checking of DB' records if corresponding page-tree is corrupted (to avoid SIGSEGV, ASAN failures, etc).
  • Added more checks for rare/fuzzing corruption cases.

Backward compatibility break:

  • Use file VERSION.txt for version information instead of VERSION to avoid collision with #include <version>.
  • Rename slice::from/to_FOO_bytes() to `slice::envisage_from/to_FOO_length()'.
  • Rename MDBX_TEST_EXTRA make's variable to MDBX_SMOKE_EXTRA.
  • Some details of the C++ API have been changed for subsequent freezing.

Fixes:

TODO for next releases:


SHA256 checksums

745555704df76626a6612ad0c6bc6b1a66bfab98b9245b07dfb82640aa46d6fa  libmdbx-amalgamated-0.10.2.tar.gz
95ca553437d99bb320216592a1b36cc20ef90feeb7dc413875f8e8a2a1d56c72  libmdbx-amalgamated-0_10_2.zip

*** Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository *** *** Moreover, please vote for "disable tarballs" feature to vanish this discommodity ***