mirror of
https://github.com/isar/libmdbx.git
synced 2024-12-29 08:58:48 +08:00
mdbx: дополнение ChangeLog.
This commit is contained in:
parent
652587b33f
commit
3110c2206f
63
ChangeLog.md
63
ChangeLog.md
@ -9,28 +9,6 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic
|
|||||||
|
|
||||||
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов.
|
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов.
|
||||||
|
|
||||||
Исправления:
|
|
||||||
|
|
||||||
- Функция `mdbx_close_dbi()` доработана для возврата ошибки `MDBX_DANGLING_DBI`
|
|
||||||
при попытке закрыть dbi-дескриптор таблицы, созданной и/или измененной в
|
|
||||||
ещё выполняющейся транзакции. Такое преждевременное закрытие дескриптора
|
|
||||||
является неверным использованием API и нарушением контракта/предусловий
|
|
||||||
сформулированных в описании `mdbx_close_dbi()`. Однако, вместо возврата
|
|
||||||
ошибки выполнялось некорректное закрытие дескриптора, что могло
|
|
||||||
приводить к созданию таблицы с пустым именем, утечки страниц БД и/или
|
|
||||||
нарушению структуры b-tree (неверной ссылкой на корень таблицы).
|
|
||||||
|
|
||||||
- Исправлено открытие таблицы с пустым/нулевым именем, в том числе устранена
|
|
||||||
возможность `SIGSEGV` при закрытии её дескриптора.
|
|
||||||
|
|
||||||
- Добавлены упущенные inline-реализации `mdbx::cursor::upper_bound()` и `mdbx::cursor::upper_bound_multivalue()`.
|
|
||||||
- Продолжена корректировка описания С++ API для использования термина "таблица" вместо "sub-database".
|
|
||||||
- Исправлено проверяемое условие внутри `assert()` в пути обработки `MDBX_GET/NEXT/PREV_MULTIPLE`.
|
|
||||||
- На 32-битных платформах разрешено использовть 4-байтное выравнивание при получении 64-битных значений посредством `MDBX_MULTIPLE`.
|
|
||||||
- Добавлен костыль для устранения проблем из-за некорректной обработки `[[gnu::pure]]` в Apple Clang.
|
|
||||||
- Поправлено определение `MDBX_DEPRECATED_ENUM` для старых компиляторов при включении С++11.
|
|
||||||
- Доработано использование `std::experimental::filesystem`.
|
|
||||||
|
|
||||||
Новое:
|
Новое:
|
||||||
|
|
||||||
- Ускорено обновление GC при возврате/помещении списков страниц в
|
- Ускорено обновление GC при возврате/помещении списков страниц в
|
||||||
@ -41,14 +19,47 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic
|
|||||||
фиксации транзакций (с возвратом ошибки `MDBX_PROBLEM`) в редких
|
фиксации транзакций (с возвратом ошибки `MDBX_PROBLEM`) в редких
|
||||||
специфических условиях.
|
специфических условиях.
|
||||||
Подробности см. в описании коммита [`6c56ed97bbd8ca46abac61886a113ba31e5f1291`](https://gitflic.ru/project/erthink/libmdbx/commit/6c56ed97bbd8ca46abac61886a113ba31e5f1291).
|
Подробности см. в описании коммита [`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-скриптах сборки.
|
- Включен стандарт `C23` в CMake-скриптах сборки.
|
||||||
- Добавлены T-макросы для парных `char`/`wchar_t` функций.
|
- Добавлены T-макросы для парных `char`/`wchar_t` функций.
|
||||||
- Поддержка вложенных пишущих транзакций в C++ API.
|
- Поддержка вложенных пишущих транзакций в C++ API.
|
||||||
- Экспорт информации о версии в `VERSION.json`.
|
- Экспорт информации о версии в `VERSION.json`.
|
||||||
|
- Добавлена поддержка переменной среды `SOURCE_DATE_EPOCH` для воспроизводимости сборок.
|
||||||
|
Прежний способ посредством `MDBX_BUILD_TIMESTAMP` также работает и имеет приоритет.
|
||||||
|
- Добавлена возможность указывать дополнительную информацию о сборке libmdbx через опцию `MDBX_BUILD_METADATA`.
|
||||||
|
Сейчас задаваемая информация просто включается внутрь библиотеки в качестве значения `mdbx_build.metadata`,
|
||||||
|
а в дальнейшем также будет использоваться при формировании пакетов и т.п.
|
||||||
|
|
||||||
|
Изменение поведения:
|
||||||
|
|
||||||
|
- Добавлен метод `mdbx::cursor::get_multiple_samelength()` и переименован `mdbx::txn::put_multiple_samelength()`.
|
||||||
|
- Для единообразия C++ API при выполнении операции `MDBX_GET_MULTIPLE` теперь также возвращается значение самого ключа.
|
||||||
|
- Для размерных констант `mdbx::env::geometry` базовый тип изменен с беззнакового `size_t` на знаковый `intptr_t`.
|
||||||
|
- Теперь выбор в пользу использования ntdll вместо CRT делается только при явном отключении C++ API.
|
||||||
|
- Теперь выполняется освобождение памяти сброшенных/прерванных читающих транзакций передаваемых в `mdbx_txn_commit()`.
|
||||||
|
Соглашение по API требует чтобы такие транзакции освобождались посредством `mdbx_txn_abort()`, из-за чего
|
||||||
|
функция `mdbx_txn_commit()` возвращала ошибку в таких случаях, не разрушая сами транзакции.
|
||||||
|
Это приводило к утечкам памяти из-за ошибок в приложениях, что побудило изменить поведение.
|
||||||
|
- Использование макроса `__deprecated_enum` если он определен.
|
||||||
|
|
||||||
|
Исправления:
|
||||||
|
|
||||||
|
- Функция `mdbx_close_dbi()` доработана для возврата ошибки `MDBX_DANGLING_DBI`
|
||||||
|
при попытке закрыть dbi-дескриптор таблицы, созданной и/или измененной в
|
||||||
|
ещё выполняющейся транзакции. Такое преждевременное закрытие дескриптора
|
||||||
|
является неверным использованием API и нарушением контракта/предусловий
|
||||||
|
сформулированных в описании `mdbx_close_dbi()`. Однако, вместо возврата
|
||||||
|
ошибки выполнялось некорректное закрытие дескриптора, что могло
|
||||||
|
приводить к созданию таблицы с пустым именем, утечки страниц БД и/или
|
||||||
|
нарушению структуры b-tree (неверной ссылкой на корень таблицы).
|
||||||
|
- Исправлено открытие таблицы с пустым/нулевым именем, в том числе устранена
|
||||||
|
возможность `SIGSEGV` при закрытии её дескриптора.
|
||||||
|
- Добавлены упущенные inline-реализации `mdbx::cursor::upper_bound()` и `mdbx::cursor::upper_bound_multivalue()`.
|
||||||
|
- Продолжена корректировка описания С++ API для использования термина "таблица" вместо "sub-database".
|
||||||
|
- Исправлено проверяемое условие внутри `assert()` в пути обработки `MDBX_GET/NEXT/PREV_MULTIPLE`.
|
||||||
|
- На 32-битных платформах разрешено использовать 4-байтное выравнивание при получении 64-битных значений посредством `MDBX_MULTIPLE`.
|
||||||
|
- Добавлен костыль для устранения проблем из-за некорректной обработки `[[gnu::pure]]` в Apple Clang и MSVC.
|
||||||
|
- Поправлено определение `MDBX_DEPRECATED_ENUM` для старых компиляторов при включении С++11.
|
||||||
|
- Доработано использование `std::experimental::filesystem` для решения проблем со сборкой в старых компиляторах.
|
||||||
|
|
||||||
Мелочи:
|
Мелочи:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user