You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: mdbxdist/ChangeLog.md
+16-58Lines changed: 16 additions & 58 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,91 +4,49 @@ ChangeLog
4
4
English version [by liar Google](https://libmdbx-dqdkfa-ru.translate.goog/md__change_log.html?_x_tr_sl=ru&_x_tr_tl=en)
5
5
and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx.dqdkfa.ru/md__change_log.html).
6
6
7
-
## v0.14.1 в активной разработке без конкретизации даты выпуска
7
+
## v0.13.4 "Sigma Boy" от 2025-02-14
8
8
9
-
Первый выпуск в новом кусте/линейке версий с добавлением функционала, расширением API и внутренними переработками.
9
+
Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов.
10
10
11
11
Благодарности:
12
12
13
+
-[Алексею Костюку (aka Keller)](https://t.me/keller18306) за сообщения об ошибках и недочетах.
13
14
-[Erigon](https://docs.erigon.tech/) за спонсорство.
14
15
-[Alain Picard](https://github.com/castortech) for support [Java bindings](https://github.com/castortech/mdbxjni) and MacOS universal binaries patch for CMake build scenario.
15
16
-[Alex Sharov](https://github.com/AskAlexSharov) за сообщение об ошибках и тестирование.
16
17
-[Виктору Логунову](https://t.me/vl_username) за сообщение об опечатки в имени переменной в Conan-рецепте.
17
18
18
19
Новое:
19
20
20
-
- Добавлена опция сборки `MDBX_NOSUCCESS_PURE_COMMIT` предназначенная для отладки кода пользователя.
21
-
По-умолчанию опция выключена и при фиксации пустых транзакции возвращается `MDBX_SUCCESS`.
22
-
При включении опции, фиксация пишущих транзакций без каких-либо изменений считается нештатным поведением, с возвратом из `mdbx_txn_commit()` кода `MDBX_RESULT_TRUE` вместо `MDBX_SUCCESS`.
23
-
Таким образом, у пользователя появляется возможность легко диагностировать лишние/ненужные транзакции записи.
24
-
25
-
- Добавлена опция сборки `MDBX_ENABLE_NON_READONLY_EXPORT` позволяющая использовать в режиме чтения-записи БД расположенных в файловых системах экспортированных через NFS.
26
-
По-умолчанию опция выключена и при открытии в неэксклюзивном режиме чтения-записи БД расположенных файловых системах доступных извне по NFS будет возвращаться ошибка `MDBX_EREMOTE`.
27
-
Включение опции позволяет открывать БД в описанных выше ситуациях, но риск чтения неверных данных на удалённой стороне ложится на пользователя.
28
-
29
21
- Поддержка MacOS universal binaries при сборке посредством CMake.
30
22
31
-
Изменение поведения:
32
-
33
-
- Теперь при вставке данных в dupsort-таблицу CoW копирование целевых страниц выполняется после проверки отсутствия добавляемого значения среди уже присутствующих multi-значений (aka дубликатов).
34
-
В результате вставка уже присутствующих "дубликатов" не приводит к каким-либо изменениям в БД и принципиально увеличивает производительность в таких сценариях.
35
-
В текущем понимании, добавленная проверка не приводит к заметному увеличению накладных расходов и, как следствие, не приводит к снижению производительности в сценариях с обычным/регулярным обновлением и/или вставкой данных.
36
-
37
-
- Использование системного кода ошибки `EREMOTEIO` ("Remote I/O error") вместо `ENOTBLK` ("Block device required") в качестве `MDBX_EREMOTE` для индикации ошибочной ситуации открытия БД расположенной на сетевом носителе.
38
-
39
23
Исправления:
40
24
41
25
- Устранён регресс допускающий SIGSEGV в операциях обновления после вытеснения/spilling страниц в больших транзакциях.
42
26
Ошибка присутствует в выпусках v0.13.1, v0.13.2, v0.13.3 и оставалась незамеченной из-за специфических условий и низкой вероятности проявления.
43
-
Более подробная информация в описании коммита `cb8eec6d11cdab4f7d3cf87913e8009149dcf60b`.
44
-
45
-
Прочие доработки:
27
+
Более подробная информация в описании коммита `a060057e480aa5196c7d5c00ea441c962e3b952d`.
46
28
47
-
-Существенный рефакторинг с реструктуризацией кода, переименованием внутренних структур, их полей и внутренних функций.
29
+
-Исправлена опечатка в документации в упоминании `mdbx_env_resurrect_after_fork()`.
48
30
49
-
- Доработка использования LTO в CMake-сценариях: использование `-flto=auto` для GCC >= 11.4, расслабление условий для включения LTO для CLANG на Linux, расширение поиска `LLVMgold.so` в относительных lib-директориях.
31
+
- Исправлена опечатка в условном операторе внутри `cursor_touch()`.
32
+
При переделке курсоров было пропущено отрицание в условии, при оценке количества страниц, которые могут потребоваться для выполнения операции.
33
+
В текущем понимании ошибка не приводила к каким-либо проблемам, ибо оценка делает по верхней границе с существенным запасом, а в худшем
34
+
случае это могло приводить к прерыванию транзакции из-за достижения ограничения на кол-во грязных страниц.
- Исправление опечатки в Conan-рецепте в коде протокольно-отладочного вывода в имени переменной `version_json_pathname`.
57
41
58
-
Запланированные новые возможности 0.14:
59
-
60
-
1. Ранняя (не-отложенная) очистка GC и рефакторинг обновления GC. Самостоятельной видимой для пользователя ценности не имеет, но требуется для последующих пунктов.
61
-
Будет реализовано в 0.14.1.
62
-
63
-
2. Явная дефрагментация БД. В API будет добавлена функция с двумя парами параметров:
64
-
- минимальный (требуемый) объём дефрагментации (уменьшения БД) и минимальное время, которое следует потратить;
65
-
- максимальный (ограничивающий) объём дефрагментации и максимальной время, которое допустимо потратить.
66
-
67
-
Упрощенно, алгоритмически явная дефрагментация сводится к сканированию b-tree с формированием списка страниц расположенных близко к концу БД, а затем копирование этих страниц в не-используемые, но расположенные ближе к началу БД.
68
-
В результате, после фиксации дефрагментирующей транзакции оригиналы скопированных страниц становятся не-используемыми, а размер БД может быть уменьшен за счет отсечения ни-используемых страниц в конце используемого пространства.
69
-
Будет реализовано в 0.14.2.
70
-
71
-
3. Нелинейная переработка GC, без остановки переработки мусора на старом MVCC-снимке используемом долгой транзакцией чтения.
72
-
73
-
После реализации запланированного, любая длительная читающая транзакция по-прежнему будет удерживать от переработки используемый/читаемый MVCC-снимок данных (все образующие его страницы БД), но позволит перерабатывать все неиспользуемые MVCC-снимки, как до читаемого, так и после.
74
-
Это позволит устранить [один из основных архитектурных недостатков](https://libmdbx.dqdkfa.ru/intro.html#long-lived-read) унаследованных от LMDB и связанных с ростом размера БД пропорционально объёму производимых изменений данных на фоне долго работающей транзакции чтения.
75
-
76
-
Будет реализовано предположительно в 0.14.3, 0.14.4 или даже в 0.15.x.
77
-
Перенос в 0.15.x оправдан возможностью переноса функционала дефрагментации в stable-ветку, но посмотри как пойдут дела.
0 commit comments