diff --git a/ChangeLog.md b/ChangeLog.md index d98a95c0..639a106b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -11,7 +11,7 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic Исправления: - - Доработка `mdbx_close_dbi()` для возврата ошибки `MDBX_DANGLING_DBI` + - Функция `mdbx_close_dbi()` доработана для возврата ошибки `MDBX_DANGLING_DBI` при попытке закрыть dbi-дескриптор таблицы, созданной и/или измененной в ещё выполняющейся транзакции. Такое преждевременное закрытие дескриптора является неверным использованием API и нарушением контракта/предусловий @@ -20,22 +20,31 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic приводить к созданию таблицы с пустым именем, утечки страниц БД и/или нарушению структуры b-tree (неверной ссылкой на корень таблицы). - - Исправление открытия таблицы с пустым/нулевым именем и устранение - `SIGSEGV` при закрытии её дескриптора. + - Исправлено открытие таблицы с пустым/нулевым именем, в том числе устранена + возможность `SIGSEGV` при закрытии её дескриптора. - Добавлены упущенные inline-реализации `mdbx::cursor::upper_bound()` и `mdbx::cursor::upper_bound_multivalue()`. - - Корректировка описания С++ API для использования термина "таблица" вместо "sub-database". - - Исправление условия внутри `assert()` в пути обработки `MDBX_GET/NEXT/PREV_MULTIPLE`. - - Допущение 4-байтового выравнивания данных `MDBX_MULTIPLE` для 32-битных сборок. + - Продолжена корректировка описания С++ API для использования термина "таблица" вместо "sub-database". + - Исправлено проверяемое условие внутри `assert()` в пути обработки `MDBX_GET/NEXT/PREV_MULTIPLE`. + - На 32-битных платформах разрешено использовть 4-байтное выравнивание при получении 64-битных значений посредством `MDBX_MULTIPLE`. - Добавлен костыль для устранения проблем из-за некорректной обработки `[[gnu::pure]]` в Apple Clang. Новое: - - Добавление `mdbx::cursor::get_multiple_samelength()` и переименование `mdbx::txn::put_multiple_samelength()`. - - Возвращение ключа при выполнении операции `MDBX_GET_MULTIPLE` для единообразия C++ API. - - Смена базового типа на `intptr_t` для размерных констант `mdbx::env::geometry`. - - Включение стандарта `C23` в CMake-скриптах сборки. - - Добавление T-макросов для парных `char`/`wchar_t` функций. + - Ускорено обновление GC при возврате/помещении списков страниц в + сложных сценариях. Был доработан и активирован ранее отключенный + экспериментальный режим корректирующей обратной связи. Этим + принципиально улучшилась сходимость (сократилось количество повторных + попыток), а также устранен дефект приводящий к "зацикливанию" при + фиксации транзакций (с возвратом ошибки `MDBX_PROBLEM`) в редких + специфических условиях. + Подробности см. в описании коммита [`6c56ed97bbd8ca46abac61886a113ba31e5f1291`](https://gitflic.ru/project/erthink/libmdbx/commit/6c56ed97bbd8ca46abac61886a113ba31e5f1291). + + - Добавлен метод `mdbx::cursor::get_multiple_samelength()` и переименован `mdbx::txn::put_multiple_samelength()`. + - Для единообразия C++ API при выполнении операции `MDBX_GET_MULTIPLE` теперь также возвращается значение самого ключа. + - Для размерных констант `mdbx::env::geometry` базовый тип изменен с беззнакового `size_t` на знаковый `intptr_t`. + - Включен стандарт `C23` в CMake-скриптах сборки. + - Добавлены T-макросы для парных `char`/`wchar_t` функций. Мелочи: @@ -52,6 +61,7 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic - Корректировка API-макросов для Doxygen. - Уточнение описания `mdbx_dbi_close()` для случая хендлов измененных таблиц. - Добавление теста `extra/early_close_dbi`. + - Доработка скрипта стохастического теста и его переименование в `stochastic.sh`. --------------------------------------------------------------------------------