v0.3.20

fpta: выпуск v0.3.20

Стабильная версия с исправлением замеченных ошибок и недочетов.

Исправления и доработки в libfpta:
==================================

 - Устранение предупреждений новых версий apple-clang.

 - Удаление использования VLA.

 - Устранение предупреждений/ошибок из-за `NaN` при использовании `-Ofast`/`-Ofast-math` с новыми компиляторами

 - Прерывание тестов Threaded.AsyncSchemaChange и Threaded.RacingOverflow при ошибках.

 - Доработка поддержки Valgrind/memcheck и обновление имен функций в списке подавлений/исключений.

 - Упрощение ограничений на версии компиляторов для LTO.

 - Добавление упущенного `include <iomanip>`.

 - Корректировка макросов `__hot`/`__cold`.

Исправления и доработки в libmdbx:
==================================

 - Исправление для ОС Windows нарезки `FILE_SEGMENT_ELEMENT`.
   Похоже что был потерян коммит входе работы над оптимизацией пути записи
   на диск в ОС Windows. В текущем понимании, вероятность проявления ошибки
   достаточно низкая, так как выявлена она была синтетическими тестами в
   ходе других доработок, а соответствующих сообщений/жалоб не поступало. К
   повреждению БД ошибка не приводила, так как сбой происходил до записи
   данных с возвратом `ERROR_INVALID_PARAMETER` из системного вызова, т.е.
   либо ошибка не проявлялась, либо транзакция не фиксировалась.

 - Устранение вероятности `SIGSEGV` при включении логирования
   уровня `MDBX_LOG_TRACE` в отладочных сборках.

 - Исправление генерации исключения `key_exists` в C++ API.

 - Исправление обработки курсоров, открытых в родительских транзакциях и
   закрытых до завершения вложенных транзакций. В описанной ситуации
   закрытые курсоры "воскрешались", что приводило к утечке памяти
   выделенной под такие курсоры.

 - Костыль для MSVC ARM/ARM64 для предотвращения ICE (Internal Compiler Error).

 - Устранение `MDBX_EINVAL` для случая вызова `mdbx_env_remove(".")`.

 - Исправление инверсии bool-результата `env::remove()`в C++ API.

Более полная информация в [списке изменений libmdbx](https://gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md&branch=stable).

---

53 files changed, 1436 insertions(+), 1026 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>

Стабильная версия с исправлением замеченных ошибок и недочетов.

53 files changed, 1436 insertions(+), 1026 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>

Исправления и доработки в libfpta:

  • Устранение предупреждений новых версий apple-clang.

  • Удаление использования VLA.

  • Устранение предупреждений/ошибок из-за NaN при использовании -Ofast/-Ofast-math с новыми компиляторами

  • Прерывание тестов Threaded.AsyncSchemaChange и Threaded.RacingOverflow при ошибках.

  • Доработка поддержки Valgrind/memcheck и обновление имен функций в списке подавлений/исключений.

  • Упрощение ограничений на версии компиляторов для LTO.

  • Добавление упущенного include <iomanip>.

  • Корректировка макросов __hot/__cold.

Исправления и доработки в libmdbx:

  • Исправление для ОС Windows нарезки FILE_SEGMENT_ELEMENT. Похоже что был потерян коммит входе работы над оптимизацией пути записи на диск в ОС Windows. В текущем понимании, вероятность проявления ошибки достаточно низкая, так как выявлена она была синтетическими тестами в ходе других доработок, а соответствующих сообщений/жалоб не поступало. К повреждению БД ошибка не приводила, так как сбой происходил до записи данных с возвратом ERROR_INVALID_PARAMETER из системного вызова, т.е. либо ошибка не проявлялась, либо транзакция не фиксировалась.

  • Устранение вероятности SIGSEGV при включении логирования уровня MDBX_LOG_TRACE в отладочных сборках.

  • Исправление генерации исключения key_exists в C++ API.

  • Исправление обработки курсоров, открытых в родительских транзакциях и закрытых до завершения вложенных транзакций. В описанной ситуации закрытые курсоры "воскрешались", что приводило к утечке памяти выделенной под такие курсоры.

  • Костыль для MSVC ARM/ARM64 для предотвращения ICE (Internal Compiler Error).

  • Устранение MDBX_EINVAL для случая вызова mdbx_env_remove(".").

  • Исправление инверсии bool-результата env::remove()в C++ API.

Более полная информация в списке изменений libmdbx.