Skip to content

Commit

Permalink
save
Browse files Browse the repository at this point in the history
  • Loading branch information
AskAlexSharov committed Jan 27, 2025
1 parent 44b59c6 commit b81e668
Show file tree
Hide file tree
Showing 23 changed files with 270 additions and 121 deletions.
16 changes: 15 additions & 1 deletion mdbxdist/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2020-2024 Леонид Юрьев aka Leonid Yuriev <[email protected]> ###############################################
# Copyright (c) 2020-2025 Леонид Юрьев aka Leonid Yuriev <[email protected]> ###############################################
# SPDX-License-Identifier: Apache-2.0
#
# Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`. Всё будет хорошо!
Expand Down Expand Up @@ -213,6 +213,20 @@ if(DEFINED PROJECT_NAME AND NOT MDBX_FORCE_BUILD_AS_MAIN_PROJECT)
else()
set(SUBPROJECT OFF)
set(NOT_SUBPROJECT ON)

# Setup Apple stuff which should be set prior to the first project() or enable_language()
if(APPLE)
# Enable universal binaries for macOS (target arm64 and x86_64)
if(NOT DEFINED CMAKE_OSX_ARCHITECTURES)
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64")
endif()

# Set the minimum macOS deployment target if not already defined
if(NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0")
endif()
endif()

project(libmdbx C)
if(NOT MDBX_AMALGAMATED_SOURCE AND NOT DEFINED BUILD_TESTING)
set(BUILD_TESTING ON)
Expand Down
139 changes: 138 additions & 1 deletion mdbxdist/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,36 @@ ChangeLog
English version [by liar Google](https://libmdbx-dqdkfa-ru.translate.goog/md__change_log.html?_x_tr_sl=ru&_x_tr_tl=en)
and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx.dqdkfa.ru/md__change_log.html).

## v0.13.4 "Sigma Boy" запланирован на 2025-02-14

Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов.

Благодарности:

- [Алексею Костюку (aka Keller)](https://t.me/keller18306) за сообщения об ошибках и недочетах.
- [Erigon](https://docs.erigon.tech/) за спонсорство.
- [Alain Picard](https://github.com/castortech) for support [Java bindings](https://github.com/castortech/mdbxjni) and MacOS universal binaries patch for CMake build scenario.
- [Alex Sharov](https://github.com/AskAlexSharov) за сообщение об ошибках и тестирование.

Новое:

- Поддержка MacOS universal binaries при сборке посредством CMake.

Исправления:

- Устранён регресс допускающий SIGSEGV в операциях обновления после вытеснения/spilling страниц в больших транзакциях.
Ошибка присутствует в выпусках v0.13.1, v0.13.2, v0.13.3 и оставалась незамеченной из-за специфических условий и низкой вероятности проявления.
Более подробная информация в описании коммита `a060057e480aa5196c7d5c00ea441c962e3b952d`.

- Исправлена опечатка в документации в упоминании `mdbx_env_resurrect_after_fork()`.

- Исправлена опечатка в условном операторе внутри `cursor_touch()`.
При переделке курсоров было пропущено отрицание в условии, при оценке кол-ва страниц, которые могут потребоваться для выполнения операции.
В текущем понимании ошибка не приводила к каким-либо проблемам, ибо оценка делает по верхней границе с существенным запасом, а в худшем
случае это могло приводить к прерыванию транзакции из-за достижения ограничения на кол-во грязных страниц.

--------------------------------------------------------------------------------

## v0.13.3 "Королёв" от 2025-01-12

Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов
Expand Down Expand Up @@ -501,6 +531,113 @@ Signed-off-by: Леонид Юрьев (Leonid Yuriev) <[email protected]>

--------------------------------------------------------------------------------

## v0.12.12 "Доллежаль" от 2024-10-27

Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов,
в память о советском ученом-энергетике Николае Антоновиче Доллежаль в день 125-летия со дня его рождения.

Это последний выпуск куста стабильных версий 0.12.x, спустя более двух
лет после выпуска 0.12.1. Последующие выпуски 0.12.x будут формироваться
только в случае существенных проблем/ошибок, вероятность чего близка к
нулю. Для всех проектов находящихся в стадии активной разраборки
рекомендуется использовать ветку `master`.

```
git diff' stat: x commits, y files changed, z insertions(+), zz deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <[email protected]>
```

Значимые исправления:

- Исправление упущенного `TXN_END_EOTDONE` при сбое старта читающей транзакции.
Упомянутый флажок отсутствовал в пути разрушения транзакции при ошибке
её запуска. Из-за чего делалась попытка разрушить курсоры, что приводило
к падению **отладочных сборок**, так как в них соответствующий массив
намеренно заполнен некорректными указателями.

- Устранение возможности `SIGSEGV` внутри `coherency_check()` после
изменения геометрии другим процессом с увеличением верхнего размера БД
и увеличением БД больше предыдущего лимита.

- Доработка `mdbx_close_dbi()` для возврата ошибки при попытке закрыть
dbi-дескриптор таблицы, созданной и/или измененной в ещё выполняющейся
транзакции. Такое преждевременное закрытие дескриптора является неверным
использованием API и нарушением контракта/предусловий сформулированных
в описании `mdbx_close_dbi()`. Однако, вместо возврата ошибки
выполнялось некорректное закрытие дескриптора, что могло приводить к
созданию таблицы с пустым именем, утечки страниц БД и/или нарушению
структуры b-tree (неверной ссылкой на корень таблицы).
Добавлен соответствующий тест `extra/early_close_dbi`.

--------------------------------------------------------------------------------

## v0.12.11 "Лиза и Соня" от 2024-07-23

Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов,
в память об убитых в Крыму девочках 2 и 9 лет.

Лиза и Соня погибли 23 Июня 2024 на глазах у родителей, в результате
удара по общественному городскому пляжу ракетами ATACMS с кассетными
боеприпасами. Всего пострадало более 150 граждан России, в том числе 27
детей. Ракеты были выпущенными украинскими бандеровцами/фашистами, но
полетные задания формировались и загружались военными США, а управление
и наведение ATACAMS невозможно без использования орбитальной группировки
военных спутников США.

```
git diff' stat: 29 commits, 14 files changed, 379 insertions(+), 151 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <[email protected]>
```

Значимые исправления:

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

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

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

- Исправление опечаток в документации и README.

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

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

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

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

- Исправление опечатки `равно`/`неравно` в условии внутри
`update_gc()`. Существенных последствий ошибки не было, но в
определенных сценариях, сходимость требовала еще одного цикла повтора
внутри update_gc().

Прочие доработки:

- Проверка совместимости флагов GC/FreeDB на случай их изменения в будущих версиях.
- Очистка сообщений `FormatMessageA()` от концевых переводов строк.
- Уточнение макроса `__always_inline` для особо яблочных версий CLANG.
- Использование `\n` вместо `std::endl` в C++ API для разделения строк в кодировщиках данных.
- Проверка дополнительных и пока не используемых полей в meta-страницах.
- Отключение ненужной отладки внутри `txn_merge()`.
- Исправление условий и привязки к версиям компиляторов при формировании макроса `MDBX_DEPRECATED`.
- Больше атрибутов `__cold` для редко-используемых функций (backport).
- Добавление методов `buffer::append_bytes()` и `buffer::clear_and_reserve()`.
- Отключение установки признака фатальной ошибки для не-активной среды при отличии идентификатора процесса.

--------------------------------------------------------------------------------

## v0.12.10 "СЭМ" от 2024-03-12

Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов
Expand Down Expand Up @@ -2250,7 +2387,7 @@ Deprecated functions and flags:
- Rework `MADV_DONTNEED` threshold.
- Fix `mdbx_chk` utility for don't checking some numbers if walking on the B-tree was disabled.
- Use page's mp_txnid for basic integrity checking.
- Add `MDBX_FORCE_ASSERTIONS` built-time option.
- Add `MDBX_FORCE_ASSERTIONS` build-time option.
- Rework `MDBX_DBG_DUMP` to avoid performance degradation.
- Rename `MDBX_NOSYNC` to `MDBX_SAFE_NOSYNC` for clarity.
- Interpret `ERROR_ACCESS_DENIED` from `OpenProcess()` as 'process exists'.
Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ to the Telegram' group https://t.me/libmdbx.
Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`.
Всё будет хорошо!

Copyright 2015-2024 Леонид Юрьев aka Leonid Yuriev <[email protected]>
Copyright 2015-2025 Леонид Юрьев aka Leonid Yuriev <[email protected]>
SPDX-License-Identifier: Apache-2.0
For notes about the license change, credits and acknowledgments,
please refer to the COPYRIGHT file within original libmdbx source code
Expand Down
27 changes: 17 additions & 10 deletions mdbxdist/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
> with [`C` API description](https://libmdbx.dqdkfa.ru/group__c__api.html)
> and pay attention to the [`C++` API](https://gitflic.ru/project/erthink/libmdbx/blob?file=mdbx.h%2B%2B#line-num-1).
> Questions, feedback and suggestions are welcome to the [Telegram' group](https://t.me/libmdbx).
> Questions, feedback and suggestions are welcome to the [Telegram' group](https://t.me/libmdbx) (archive [1](https://libmdbx.dqdkfa.ru/tg-archive/messages1.html),
> [2](https://libmdbx.dqdkfa.ru/tg-archive/messages2.html), [3](https://libmdbx.dqdkfa.ru/tg-archive/messages3.html), [4](https://libmdbx.dqdkfa.ru/tg-archive/messages4.html),
> [5](https://libmdbx.dqdkfa.ru/tg-archive/messages5.html), [6](https://libmdbx.dqdkfa.ru/tg-archive/messages6.html), [7](https://libmdbx.dqdkfa.ru/tg-archive/messages7.html)).
> See the [ChangeLog](https://gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md) for `NEWS` and latest updates.
> Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`.
Expand Down Expand Up @@ -634,19 +636,24 @@ Bindings

| Runtime | Repo | Author |
| ------- | ------ | ------ |
| Rust | [libmdbx-rs](https://github.com/vorot93/libmdbx-rs) | [Artem Vorotnikov](https://github.com/vorot93) |
| Python | [PyPi/libmdbx](https://pypi.org/project/libmdbx/) | [Lazymio](https://github.com/wtdcode) |
| Java | [mdbxjni](https://github.com/castortech/mdbxjni) | [Castor Technologies](https://castortech.com/) |
| Go | [mdbx-go](https://github.com/torquem-ch/mdbx-go) | [Alex Sharov](https://github.com/AskAlexSharov) |
| Ruby | [ruby-mdbx](https://rubygems.org/gems/mdbx/) | [Mahlon E. Smith](https://github.com/mahlonsmith) |

##### Obsolete/Outdated/Unsupported:

| Runtime | Repo | Author |
| ------- | ------ | ------ |
| .NET | [mdbx.NET](https://github.com/wangjia184/mdbx.NET) | [Jerry Wang](https://github.com/wangjia184) |
| Scala | [mdbx4s](https://github.com/david-bouyssie/mdbx4s) | [David Bouyssié](https://github.com/david-bouyssie) |
| Rust | [mdbx](https://crates.io/crates/mdbx) | [gcxfd](https://github.com/gcxfd) |
| Haskell | [libmdbx-hs](https://hackage.haskell.org/package/libmdbx) | [Francisco Vallarino](https://github.com/fjvallarino) |
| Lua | [lua-libmdbx](https://github.com/mah0x211/lua-libmdbx) | [Masatoshi Fukunaga](https://github.com/mah0x211) |
| NodeJS, [Deno](https://deno.land/) | [lmdbx-js](https://github.com/kriszyp/lmdbx-js) | [Kris Zyp](https://github.com/kriszyp/)
| NodeJS | [node-mdbx](https://www.npmjs.com/package/node-mdbx/) | [Сергей Федотов](mailto:[email protected]) |
| Ruby | [ruby-mdbx](https://rubygems.org/gems/mdbx/) | [Mahlon E. Smith](https://github.com/mahlonsmith) |
| Go | [mdbx-go](https://github.com/torquem-ch/mdbx-go) | [Alex Sharov](https://github.com/AskAlexSharov) |
| [Nim](https://en.wikipedia.org/wiki/Nim_(programming_language)) | [NimDBX](https://github.com/snej/nimdbx) | [Jens Alfke](https://github.com/snej)
| Lua | [lua-libmdbx](https://github.com/mah0x211/lua-libmdbx) | [Masatoshi Fukunaga](https://github.com/mah0x211) |
| Rust | [libmdbx-rs](https://github.com/vorot93/libmdbx-rs) | [Artem Vorotnikov](https://github.com/vorot93) |
| Rust | [mdbx](https://crates.io/crates/mdbx) | [gcxfd](https://github.com/gcxfd) |
| Java | [mdbxjni](https://github.com/castortech/mdbxjni) | [Castor Technologies](https://castortech.com/) |
| Python | [PyPi/libmdbx](https://pypi.org/project/libmdbx/) | [Lazymio](https://github.com/wtdcode) |
| .NET (obsolete) | [mdbx.NET](https://github.com/wangjia184/mdbx.NET) | [Jerry Wang](https://github.com/wangjia184) |
| Nim | [NimDBX](https://github.com/snej/nimdbx) | [Jens Alfke](https://github.com/snej)

<!-- section-end -->

Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/cmake/compiler.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2010-2024 Леонид Юрьев aka Leonid Yuriev <[email protected]> ###############################################
# Copyright (c) 2010-2025 Леонид Юрьев aka Leonid Yuriev <[email protected]> ###############################################
# SPDX-License-Identifier: Apache-2.0

if(CMAKE_VERSION VERSION_LESS 3.8.2)
Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/cmake/profile.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2012-2024 Леонид Юрьев aka Leonid Yuriev <[email protected]> ###############################################
# Copyright (c) 2012-2025 Леонид Юрьев aka Leonid Yuriev <[email protected]> ###############################################
# SPDX-License-Identifier: Apache-2.0

if(CMAKE_VERSION VERSION_LESS 3.8.2)
Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/cmake/utils.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2012-2024 Леонид Юрьев aka Leonid Yuriev <[email protected]> ###############################################
# Copyright (c) 2012-2025 Леонид Юрьев aka Leonid Yuriev <[email protected]> ###############################################
# SPDX-License-Identifier: Apache-2.0

if(CMAKE_VERSION VERSION_LESS 3.8.2)
Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/man1/mdbx_chk.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.\" Copyright 2015-2024 Leonid Yuriev <[email protected]>.
.\" Copyright 2015-2025 Leonid Yuriev <[email protected]>.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_CHK 1 "2024-08-29" "MDBX 0.13"
.SH NAME
Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/man1/mdbx_copy.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.\" Copyright 2015-2024 Leonid Yuriev <[email protected]>.
.\" Copyright 2015-2025 Leonid Yuriev <[email protected]>.
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copyright 2012-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/man1/mdbx_drop.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.\" Copyright 2021-2024 Leonid Yuriev <[email protected]>.
.\" Copyright 2021-2025 Leonid Yuriev <[email protected]>.
.\" Copyright 2014-2021 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_DROP 1 "2024-08-29" "MDBX 0.13"
Expand Down
2 changes: 1 addition & 1 deletion mdbxdist/man1/mdbx_dump.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.\" Copyright 2015-2024 Leonid Yuriev <[email protected]>.
.\" Copyright 2015-2025 Leonid Yuriev <[email protected]>.
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copyright 2014-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
Expand Down
Loading

0 comments on commit b81e668

Please sign in to comment.