Release v0.9.1 2020-09-30 Added features: --------------- - Preliminary C++ API with support for C++17 polymorphic allocators. - [Online C++ API reference](https://erthink.github.io/libmdbx/) 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.
Этот тег не содержит заметок к релизу