Releases: erthink/libmdbx
Release v0.11.6 (stable)
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:
- David Bouyssié for Scala bindings.
- Michelangelo Riccobene for reporting and testing.
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
andlib-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 ***
Release v0.11.5 (obsolete hotfix)
The bobsolete hotfix release for a flaw of Linux unified page/buffer cache.
See issue#269 for more information.
Acknowledgements:
- Simon Leier for reporting and testing.
- Kai Wetlesen for RPMs.
- Tullio Canepa for reporting C++ API issue and contributing.
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 ***
Release v0.11.4 (obsolete)
The stable release with fixes for large and huge databases sized of 4..128 TiB.
Acknowledgements:
- Ledgerwatch, Binance and Positive Technologies teams for reporting, assistance in investigation and testing.
- Alex Sharov for reporting, testing and provide resources for remote debugging/investigation.
- Kris Zyp for Deno support.
New features, extensions and improvements:
- Added treating the
UINT64_MAX
value as maximum for given option insidemdbx_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
&
forstd::ostream &operator<<()
overloads. - Fixed unexpected
EXDEV
(Cross-device link) error frommdbx_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 ***
Release v0.11.3 (obsolete)
Acknowledgements:
- gcxfd i@rmw.link for reporting, contributing and testing.
- 장세연 (Чан Се Ен) for reporting and testing.
- Alex Sharov for reporting, testing and provide resources for remote debugging/investigation.
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
withMDBX_ACCEDE
.
Minors:
- Fixed returning
MDBX_RESULT_TRUE
(unexpected -1) frommdbx_env_set_option()
. - Added
mdbx_env_get_syncbytes()
andmdbx_env_get_syncperiod()
. - Clarified description of
MDBX_INTEGERKEY
. - Reworked/simplified
mdbx_env_sync_internal()
. - Fixed extra assertion inside
mdbx_cursor_put()
forMDBX_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_ENODATA
for 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 ***
Release v0.11.2 (obsolete)
Acknowledgements:
- 장세연 (Чан Се Ен) for contributing to C++ API.
- Alain Picard for Java bindings.
- Alex Sharov for reporting and testing.
- Kris Zyp for reporting and testing.
- Artem Vorotnikov for support Rust wrapper.
Fixes:
- Fixed compilation with
devtoolset-9
on CentOS/RHEL 7. - Fixed unexpected
MDBX_PROBLEM
error because of update an obsolete meta-page. - Fixed returning
MDBX_NOTFOUND
error in case an inexact value found forMDBX_GET_BOTH
operation. - Fixed compilation without kernel/libc-devel headers.
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 ***
Release v0.11.1 (obsolete)
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:
- Alex Sharov for reporting and testing.
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 ***
Release v0.10.5 (obsolete)
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 forv0.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:
- Noel Kuntze for immediately bug reporting.
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 ***
Release v0.10.4 (obsolete)
Acknowledgements:
- Artem Vorotnikov for support Rust wrapper.
- Andrew Ashikhmin for contributing to C++ API.
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 throwingtxn::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 ***
Release v0.10.3 (obsolete)
Acknowledgements:
- Francisco Vallarino for Haskell bindings for libmdbx.
- Alex Sharov for reporting and testing.
- Andrea Lanfranchi for contributing.
Extensions and improvements:
- Added
cursor::erase()
overloads forkey
and forkey-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:
- Always setup
madvise
while opening DB (fixes #231). - Fixed checking legacy
P_DIRTY
flag (0x10
) for nested/sub-pages.
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 ***
Release v0.10.2 (obsolete)
Acknowledgements:
- Alex Sharov for reporting and testing.
- Andrea Lanfranchi for reporting bugs.
- Lionel Debroux for fuzzing tests and reporting bugs.
- Sergey Fedotov for
node-mdbx
NodeJS bindings. - Kris Zyp for
lmdbx-store
NodeJS bindings. - Noel Kuntze for draft Python bindings.
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 to32767
. - 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 avoidSIGSEGV
, ASAN failures, etc).- Added more checks for rare/fuzzing corruption cases.
Backward compatibility break:
- Use file
VERSION.txt
for version information instead ofVERSION
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 toMDBX_SMOKE_EXTRA
. - Some details of the C++ API have been changed for subsequent freezing.
Fixes:
- Fixed excess meta-pages checks in case
mdbx_chk
is called to check the DB for a specific meta page and thus could prevent switching to the selected meta page, even if the check passed without errors. - Fixed recursive use of SRW-lock on Windows cause by
MDBX_NOTLS
option. - Fixed log a warning during a new DB creation.
- Fixed false-negative
mdbx_cursor_eof()
result. - Fixed
make install
with non-GNUinstall
utility (OSX, BSD). - Fixed installation by
CMake
in special cases by complete useGNUInstallDirs
's variables. - Fixed C++ Buffer issue with
std::string
and alignment. - Fixed
safe64_reset()
for platforms without atomic 64-bit compare-and-swap. - Fixed hang/shutdown on big-endian platforms without
__cxa_thread_atexit()
. - Fixed using bad meta-pages if DB was partially/recoverable corrupted.
- Fixed extra
noexcept
forbuffer::&assign_reference()
. - Fixed
bootid
generation on Windows for case of change system' time. - Fixed test framework keygen-related issue.
TODO for next releases:
- Engage an "overlapped I/O" on Windows.
- Simple careful mode for working with corrupted DB.
- Move most of
mdbx_chk
functional to the library API. - Replace SRW-lock on Windows to allow shrink DB with
MDBX_NOTLS
option. - More flexible support of asynchronous runtime/framework(s).
- Migration guide from LMDB to MDBX.
- Get rid of dirty-pages list in MDBX_WRITEMAP mode.
- Large/Overflow pages accounting for dirty-room.
- Support for RAW devices.
- Support MessagePack for Keys & Values.
- Engage new terminology.
- Finalize C++ API (few typos and trivia bugs are still likely for now).
- Packages for Astra Linux, ALT Linux, ROSA Linux, etc.
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 ***