libmdbx v0.9.2 Release Notes
Release Date: 2020-11-27 // 3 months ago-
Acknowledgements:
- Jens Alfke (Mobile Architect at Couchbase) for NimDBX.
- ClΓ©ment Renault (CTO at MeiliSearch) for mdbx-rs.
- β Alex Sharov (Go-Lang Teach Lead at TurboGeth/Ethereum) for an extreme test cases and bug reporting.
- George Hazan (CTO at Miranda NG) for bug reporting.
- Positive Technologies for funding and The Standoff.
β Added features:
- π Provided package for buildroot.
- Binding for Nim is available now by Jens Alfke.
- Added
mdbx_env_delete()
for deletion an environment files in a proper and multiprocess-safe way. - Added
mdbx_txn_commit_ex()
with collecting latency information. - Fast completion pure nested transactions.
- Added
LIBMDBX_INLINE_API
macro and inline versions of some API functions. - Added
mdbx_cursor_copy()
function. - β Extended tests for checking cursor tracking.
- Added
MDBX_SET_LOWERBOUND
operation formdbx_cursor_get()
.
π Fixes:
- π Fixed missing installation of
mdbx.h++
. - π Fixed use of obsolete
__noreturn
. - π Fixed use of
yield
instruction on ARM if unsupported. - β Added pthread workaround for buggy toolchain/cmake/buildroot.
- π Fixed use of
pthread_yield()
for non-GLIBC. - π Fixed use of
RegGetValueA()
on Windows 2000/XP. - π Fixed use of
GetTickCount64()
on Windows 2000/XP. - π Fixed opening DB on a network shares (in the exclusive mode).
- π Fixed copy&paste typos.
- π Fixed minor false-positive GCC warning.
- Added workaround for broken
DEFINE_ENUM_FLAG_OPERATORS
from Windows SDK. - π Fixed cursor state after multimap/dupsort repeated deletes (#121).
- Added
SIGPIPE
suppression for internal thread duringmdbx_env_copy()
. - Fixed extra-rare
MDBX_KEY_EXIST
error duringmdbx_commit()
(#131). - π Fixed spilled pages checking (#126).
- π Fixed
mdbx_load
for 'plain text' and without-s name
cases (#136). - π Fixed save/restore/commit of cursors for nested transactions.
- π Fixed cursors state in rare/special cases (move next beyond end-of-data, after deletion and so on).
- β Added workaround for MSVC 19.28 (Visual Studio 16.8) (but may still hang during compilation).
- π Fixed paranoidal Clang C++ UB for bitwise operations with flags defined by enums.
- π Fixed large pages checking (for compatibility and to avoid false-positive errors from
mdbx_chk
). - β Added workaround for Wine (miranda-ng/miranda-ng#1209).
- Fixed
ERROR_NOT_SUPPORTED
while opening DB by UNC pathnames (miranda-ng/miranda-ng#2627). - Added handling
EXCEPTION_POSSIBLE_DEADLOCK
condition for Windows.
TODO for v0.9.3
- Engage new terminology (#137).
- π Rework/speedup the implementation of the dirty page list (lazy compactification, lazy sorting via merge).
- Resolve few TODOs (#123, #124, #127, #128, #132, #115).
- βοΈ Finalize C++ API (few typos and trivia bugs are still likely for now).
- π§ Packages for ROSA Linux, ALT Linux, Fedora/RHEL, Debian/Ubuntu.
SHA256 checksums
c35cc53d66d74ebfc86e39441ba26276541ac7892bf91dba1e70c83665a02767 libmdbx-amalgamated-0.9.2.tar.gz 82523330f701939325ce96becace35ec739d30f8e98ec776c4d50bc8745297a8 libmdbx-amalgamated-0_9_2.zip a98382d85a06a551393a89152a50c53fd45abf6bf9f5e01e594bbd799c1352c7 v0.9.2.tar.gz 099b31eef060bd41c35221ba2c805571d173b936075da9a97fcaf4801c8c2ecf v0.9.2.zip
Previous changes from v0.9.1
-
β Added features:
- π Preliminary C++ API with support for C++17 polymorphic allocators.
- Online C++ API reference by Doxygen.
- β‘οΈ Quick reference for Insert/Update/Delete operations.
- π Explicit
MDBX_SYNC_DURABLE
to sync modes for API clarity. - Explicit
MDBX_ALLDUPS
andMDBX_UPSERT
for API clarity. - Support for read transactions preparation (
MDBX_TXN_RDONLY_PREPARE
flag). - Support for cursor preparation/(pre)allocation and reusing (
mdbx_cursor_create()
andmdbx_cursor_bind()
functions). - π Support for checking database using specified meta-page (see
mdbx_chk -h
). - π Support for turn to the specific meta-page after checking (see
mdbx_chk -h
). - π Support for explicit reader threads (de)registration.
- The
mdbx_txn_break()
function to explicitly mark a transaction as broken. - Improved handling of corrupted databases by
mdbx_chk
utility andmdbx_walk_tree()
function. - π Improved DB corruption detection by checking parent-page-txnid.
- π Improved opening large DB (> 4Gb) from 32-bit code.
- Provided
pure-function
andconst-function
attributes to C API. - π Support for user-settable context for transactions & cursors.
- π Revised API and documentation related to Handle-Slow-Readers callback feature.
π Deprecated functions and flags:
- π For clarity and API simplification the
MDBX_MAPASYNC
flag is deprecated.
Just useMDBX_SAFE_NOSYNC
orMDBX_UTTERLY_NOSYNC
instead of it. MDBX_oom_func
,mdbx_env_set_oomfunc()
andmdbx_env_get_oomfunc()
replaced withMDBX_hsr_func
,mdbx_env_get_hsr
andmdbx_env_get_hsr()
.
π Fixes:
- Fix
mdbx_strerror()
forMDBX_BUSY
error (no error description is returned). - π Fix update internal meta-geo information in read-only mode (
EACCESS
orEBADFD
error). - Fix
mdbx_page_get()
null-defer when DB corrupted (crash bySIGSEGV
). - Fix
mdbx_env_open()
for re-opening after non-fatal errors (mdbx_chk
unexpected failures). - βͺ Workaround for MSVC 19.27
static_assert()
bug. - Doxygen descriptions and refinement.
- β‘οΈ Update Valgrind's suppressions.
- β Workaround to avoid infinite loop of 'nested' testcase on MIPS under QEMU.
- π Fix a lot of typos & spelling (Thanks to Josh Soref for PR).
- π Fix
getopt()
messages for Windows (Thanks to Andrey Sporaw for reporting). - π Fix MSVC compiler version requirements (Thanks to Andrey Sporaw for reporting).
- π Workarounds for QEMU's bugs to run tests for cross-builded library under QEMU.
- π Now C++ compiler optional for building by CMake.
TODO for next version(s):
- π Rework/speedup the implementation of the dirty page list (lazy compactification, lazy sorting via merge).
- βοΈ Finalize C++ API (few typos and trivia bugs are likely for now).
- π§ Packages for ROSA Linux, ALT Linux, Fedora/RHEL, Debian/Ubuntu.