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 and MDBX_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() and mdbx_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 and mdbx_walk_tree() function.
    • ๐Ÿ‘Œ Improved DB corruption detection by checking parent-page-txnid.
    • ๐Ÿ‘Œ Improved opening large DB (> 4Gb) from 32-bit code.
    • Provided pure-function and const-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 use MDBX_SAFE_NOSYNC or MDBX_UTTERLY_NOSYNC instead of it.
    • MDBX_oom_func, mdbx_env_set_oomfunc() and mdbx_env_get_oomfunc()
      replaced with MDBX_hsr_func, mdbx_env_get_hsr and mdbx_env_get_hsr().

    ๐Ÿ›  Fixes:

    • Fix mdbx_strerror() for MDBX_BUSY error (no error description is returned).
    • ๐Ÿ›  Fix update internal meta-geo information in read-only mode (EACCESS or EBADFD error).
    • Fix mdbx_page_get() null-defer when DB corrupted (crash by SIGSEGV).
    • 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.