diff --git a/ChangeLog.md b/ChangeLog.md index 19bdbd73..51269f92 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -7,18 +7,73 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic ## v0.13.1 (в процессе подготовки выпуска) Новая версия с существенным расширением API и добавлением функционала. +В том числе, с незначительным нарушением обратной совместимости API +библиотеки. Новое: + - Перенос функционала утилиты `mdbx_chk` внутрь библиотеки в виде + функции `mdbx_env_chk() `для проверка целостности структуры БД, в том + числе с вовлечением логики приложения. + + - Опция `MDBX_opt_gc_time_limit` для более гибкого контроля времени + расходуемого на поиск последовательностей соседствующих свободных + страниц в GC. + + - Снижение накладных расходов на запуск транзакций в сценариях с + большим количеством DBI-хендов, за счет отложенной/ленивой инициализации + элементов служебных таблиц. В том числе, механизм поддержки разреженных + наборов DBI-хендов, управляемый опцией сборки `MDBX_ENABLE_DBI_SPARSE`, + которая включена по-умолчанию. + + - Снижение накладных расходов на открытие DBI-хендов. В том числе, + механизм отложенного освобождения и поддержки быстрого пути открытия без + использования блокировок, управляемый опцией сборки + `MDBX_ENABLE_DBI_LOCKFREE`, которая включена по-умолчанию. + + - Расширение API позиционирования курсоров более удобными и очевидными + операциями по аналогии условиям `<`, `<=`, `==`, `>=`, `>` как для + ключей, так и для пар ключ-значение. + + - Функции `mdbx_dbi_rename()` и `mdbx_dbi_rename2()` для переименования таблиц. + + - Функции `mdbx_cursor_unbind()` и `mdbx_txn_release_all_cursors()` для + гибкого управления курсорами в сценариях повторного использования для + уменьшения накладных расходов. + + - Функция `mdbx_env_resurrect_after_fork()` для восстановление открытой + среды работы с БД в дочернем процессе после ветвления/расщепления + процесса. + + - Функция `mdbx_cursor_compare()` для сравнения позиций курсоров + аналогично оператору `<=>`. + + - Функции `mdbx_cursor_scan()` и `mdbx_cursor_scan_from()` для + сканирования таблиц с использованием функционального предиката и + уменьшением сопутствующих накладных расходов. + + - Функции `mdbx_cursor_on_first_dup()` и `mdbx_cursor_on_last_dup()` + для оценки позиции курсора. + + - Функция `mdbx_preopen_snapinfo()` для получения информации о БД без + её открытия. + + - Поддержка функций логирования обратного вызова без функционала + `vprintf()`, что существенно облегчает использование логирования в + привязках к другим языкам программирования. + + - Режим работы `MDBX_NOSTICKYTHREADS` вместо `MDBX_NOTLS` для упрощения + интеграции с легковесными потоками/нитями их мультиплексирования вместе + с транзакциями по потокам операционной системы. + + - TODO: Опция `MDBX_opt_prefer_waf_insteadof_balance`. + + - TODO: Опции `MDBX_opt_subpage_limit`, `MDBX_opt_subpage_room_threshold`, `MDBX_opt_subpage_reserve_prereq`, `MDBX_opt_subpage_reserve_limit`. + - Управление основной блокировкой lock/unlock/upgrade/downgrade для координации пишущих транзакций. - - `mdbx_env_chk() `для проверка целостности структуры БД, с переработкой и переносом функционала утилиты `mdbx_chk` внутрь библиотеки. - - `mdbx_dbi_rename()` и `mdbx_dbi_rename()` для переименования таблиц. - - `mdbx_cursor_unbind()` и `mdbx_txn_release_all_cursors()` для управления курсорами. - - `mdbx_env_resurrect_after_fork()` для восстановление открытой среды работы с БД в дочернем процессе после ветвления/расщепления процесса. - - `mdbx_cursor_compare()` для сравнения позиций курсоров. - - `mdbx_cursor_scan()` и `mdbx_cursor_scan_from()` для сканирования таблиц с использованием функционального предиката. - - `mdbx_cursor_on_first_dup()` и `mdbx_cursor_on_last_dup()` для проверки позиции курсора. - - `mdbx_preopen_snapinfo()` для получения информации о БД без её открытия. + + - Функции `mdbx_limits_keysize_min()` и `mdbx_limits_valsize_min()` для + получения нижней границы длины ключей и значений. - Расширение и доработка C++ API: @@ -38,6 +93,13 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic - поддержка base58 переработана и приведена в соответствии с черновиком RFC, в текущем понимании теперь это одна из самых высокопроизводительных реализаций; - переработка `to_hex()` и `from_hex()`. +Нарушение совместимости: + - Опция `MDBX_COALESCE` объявлена устаревшей, так как соответствующий функционал всегда включен начиная с предыдущей версии 0.12. + - Опция `MDBX_NOTLS` объявлена устаревшей и заменена на `MDBX_NOSTICKYTHREADS`. + - Опция сборки `MDBX_USE_VALGRIND` заменена на общепринятую `ENABLE_MEMCHECK`. + - В структуре `MDBX_envinfo` серии полей вида `meta1`, `meta2` и `meta3` заменены на массивы вида `meta[3]`. + - В шаблонных классах и функциях С++ API по-умолчанию вместо `mdbx::legacy_buffer` использован тип `mdbx::default_buffer` использующий полиморфные аллокаторы С++ 17. + ## v0.13.0 от 2023-04-23