libmdbx v0.9.1 Release Notes
Release Date: 2020-09-30 // over 3 years ago-
โ 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.