diff --git a/ChangeLog.md b/ChangeLog.md index 464cfce4..10cff4e0 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -363,6 +363,61 @@ Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`. ******************************************************************************** +## v0.13.7 "Дружба" (Friendship) от 2025-07-30. + +Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов, +в [международный день дружбы](https://www.un.org/ru/observances/friendship-day). + +Благодарности: + + - [Erigon](https://erigon.tech/) за спонсорство. + - [Артёму Воротникову](https://github.com/vorot93) за сообщение об ошибках и тестировании [призязок для Rust](https://github.com/vorot93/libmdbx-rs). + +Исправления: + + - Устранена критическая ошибка в функционале `mdbx_env_resurrect_after_fork()` при использовании SysV-семафоров. + + Проявлялась ошибка только после порождения дочернего процесса посредством `fork()` на фоне выполняющейся пишущей транзакции, что + приводило к неверной работе семафоров и далее к самым различным ошибкам, вплоть до повреждения БД. Проблема существовала начиная с появления + `mdbx_env_resurrect_after_fork()` и затрагивала OSX, а также POSIX-платформы при сборке с опцией `MDBX_LOCKING=5`. + + - Устранена проблема в API копирования БД на отличных от Linux системах POSIX, + а также в некоторых случаях при расположении целевого файла на не-локальной файловой системе. + Проблема проявлялась в основном на OSX, возвратом ошибки `EWOULDBLOCK`/`EAGAIN` (35), + что обусловлено недочетом/конфликтом блокировок `fcntl(F_SETLK)` и `flock()` в ядре ОС. + Переработана обработка ошибок захвата файловых блокировок в API копирования на системах POSIX. + + - Устранена ошибка приводившая к неожиданному возврату `MDBX_BAD_DBI` при одновременном старте нескольких транзакций внутри одного процесса после открытия БД. + + - Устранена ошибка приводившая к неожиданному возврату `MDBX_DBS_FULL` при повторном открытии уже открытых таблиц и уже достигнутом лимите открытых DBI-дескрипторов. + + - Исправлена ошибка сборки для платформы Android при явном определении `_FILE_OFFSET_BITS`. + + - Исправлена ошибка использования `ENOMEM` вместо `MDBX_ENOMEM`. + Что могло ломать сборку на не-POSIX/Windows платформах, в зависимости от конфигурации и/или версии SDK. + + - Поправлено либо удалено несколько неверных assert-проверок, из-за которых происходили падения отладочных сборок в специфических ситуациях. + Главным образом, в коде функций `txn_end()`, `txn_lock()` и `txn_unlock()` как на Windows, так и на POSIX. + + - Устранены несущественные предупреждения MSVC. Отключены предупреждения `C5286` и `C5287`. + +Прочие доработки: + + - Доработана логика отказа от использования OFD-блокировок на POSIX-платформах. + Теперь кроме `EINVAL` учитываются дополнительные коды ошибок (`ENOSYS`, `ENOIMPL`, `ENOTSUP`, `ENOSUPP`, `EOPNOTSUPP`), + что позволит работать собранной библиотеке в некоторых случаях, + когда актуальное ядро/контейнер/эмулятор не поддерживает требуемых системных вызовов. + + - В тестовый фреймворк добавлена поддержка опции --numa # для привязки стохастического теста к NUMA-узлу, + а в battery/tmux-скрипте добавлено явное распределение по NUMA-узлам, что существенно увеличило КПД + при тестировании на NUMA-машинах. + + - В стохастическом скрипте реализован случайный порядок запуска отдельных тестов. + + +-------------------------------------------------------------------------------- + + ## v0.13.6 "Бузина" от 2025-04-22 Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов,