All Versions
30
Latest Version
Avg Release Cycle
36 days
Latest Release
756 days ago

Changelog History
Page 1

  • v0.11.6 Changes

    March 24, 2022

    πŸš€ 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.
  • v0.11.5 Changes

    February 23, 2022

    πŸš‘ The stable release with the hotfix/workaround for a flaw of Linux 4.19 (at least) 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.
  • v0.11.4 Changes

    January 28, 2022

    πŸš€ 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 (Erigon/Akula/Ethereum).
    • 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.
  • v0.11.3 Changes

    December 31, 2021

    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.
  • v0.11.2 Changes

    December 02, 2021

    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.
  • v0.11.1 Changes

    October 23, 2021

    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:

  • v0.10.5 Changes

    October 13, 2021

    πŸš€ 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.
  • v0.10.4 Changes

    October 12, 2021

    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.
  • v0.10.3 Changes

    August 27, 2021

    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
  • v0.10.2 Changes

    July 26, 2021

    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: