From e34d4de760744d5937dad075811a954d97e4e07a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?=
 =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= <leo@yuriev.ru>
Date: Thu, 4 Apr 2024 12:53:13 +0300
Subject: [PATCH] =?UTF-8?q?mdbx:=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD?=
 =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20ChangeLog.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ChangeLog.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 70 insertions(+), 8 deletions(-)

diff --git a/ChangeLog.md b/ChangeLog.md
index 19bdbd73..51269f92 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -7,18 +7,73 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic
 ## v0.13.1 (в процессе подготовки выпуска)
 
 Новая версия с существенным расширением API и добавлением функционала.
+В том числе, с незначительным нарушением обратной совместимости API
+библиотеки.
 
 Новое:
 
+ - Перенос функционала утилиты `mdbx_chk` внутрь библиотеки в виде
+   функции `mdbx_env_chk() `для проверка целостности структуры БД, в том
+   числе с вовлечением логики приложения.
+
+ - Опция `MDBX_opt_gc_time_limit` для более гибкого контроля времени
+   расходуемого на поиск последовательностей соседствующих свободных
+   страниц в GC.
+
+ - Снижение накладных расходов на запуск транзакций в сценариях с
+   большим количеством DBI-хендов, за счет отложенной/ленивой инициализации
+   элементов служебных таблиц. В том числе, механизм поддержки разреженных
+   наборов DBI-хендов, управляемый опцией сборки `MDBX_ENABLE_DBI_SPARSE`,
+   которая включена по-умолчанию.
+
+ - Снижение накладных расходов на открытие DBI-хендов. В том числе,
+   механизм отложенного освобождения и поддержки быстрого пути открытия без
+   использования блокировок, управляемый опцией сборки
+   `MDBX_ENABLE_DBI_LOCKFREE`, которая включена по-умолчанию.
+
+ - Расширение API позиционирования курсоров более удобными и очевидными
+   операциями по аналогии условиям `<`, `<=`, `==`, `>=`, `>` как для
+   ключей, так и для пар ключ-значение.
+
+ - Функции `mdbx_dbi_rename()` и `mdbx_dbi_rename2()` для переименования таблиц.
+
+ - Функции `mdbx_cursor_unbind()` и `mdbx_txn_release_all_cursors()` для
+   гибкого управления курсорами в сценариях повторного использования для
+   уменьшения накладных расходов.
+
+ - Функция `mdbx_env_resurrect_after_fork()` для восстановление открытой
+   среды работы с БД в дочернем процессе после ветвления/расщепления
+   процесса.
+
+ - Функция `mdbx_cursor_compare()` для сравнения позиций курсоров
+   аналогично оператору `<=>`.
+
+ - Функции `mdbx_cursor_scan()` и `mdbx_cursor_scan_from()` для
+   сканирования таблиц с использованием функционального предиката и
+   уменьшением сопутствующих накладных расходов.
+
+ - Функции `mdbx_cursor_on_first_dup()` и `mdbx_cursor_on_last_dup()`
+   для оценки позиции курсора.
+
+ - Функция `mdbx_preopen_snapinfo()` для получения информации о БД без
+   её открытия.
+
+ - Поддержка функций логирования обратного вызова без функционала
+   `vprintf()`, что существенно облегчает использование логирования в
+   привязках к другим языкам программирования.
+
+ - Режим работы `MDBX_NOSTICKYTHREADS` вместо `MDBX_NOTLS` для упрощения
+   интеграции с легковесными потоками/нитями их мультиплексирования вместе
+   с транзакциями по потокам операционной системы.
+
+ - TODO: Опция `MDBX_opt_prefer_waf_insteadof_balance`.
+
+ - TODO: Опции `MDBX_opt_subpage_limit`, `MDBX_opt_subpage_room_threshold`, `MDBX_opt_subpage_reserve_prereq`, `MDBX_opt_subpage_reserve_limit`.
+
  - Управление основной блокировкой lock/unlock/upgrade/downgrade для координации пишущих транзакций.
- - `mdbx_env_chk() `для проверка целостности структуры БД, с переработкой и переносом функционала утилиты `mdbx_chk` внутрь библиотеки.
- - `mdbx_dbi_rename()` и `mdbx_dbi_rename()` для переименования таблиц.
- - `mdbx_cursor_unbind()` и `mdbx_txn_release_all_cursors()` для управления курсорами.
- - `mdbx_env_resurrect_after_fork()` для восстановление открытой среды работы с БД в дочернем процессе после ветвления/расщепления процесса.
- - `mdbx_cursor_compare()` для сравнения позиций курсоров.
- - `mdbx_cursor_scan()` и `mdbx_cursor_scan_from()` для сканирования таблиц с использованием функционального предиката.
- - `mdbx_cursor_on_first_dup()` и `mdbx_cursor_on_last_dup()` для проверки позиции курсора.
- - `mdbx_preopen_snapinfo()` для получения информации о БД без её открытия.
+
+ - Функции `mdbx_limits_keysize_min()` и `mdbx_limits_valsize_min()` для
+   получения нижней границы длины ключей и значений.
 
  - Расширение и доработка C++ API:
 
@@ -38,6 +93,13 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic
      - поддержка base58 переработана и приведена в соответствии с черновиком RFC, в текущем понимании теперь это одна из самых высокопроизводительных реализаций;
      - переработка `to_hex()` и `from_hex()`.
 
+Нарушение совместимости:
+ - Опция `MDBX_COALESCE` объявлена устаревшей, так как соответствующий функционал всегда включен начиная с предыдущей версии 0.12.
+ - Опция `MDBX_NOTLS` объявлена устаревшей и заменена на `MDBX_NOSTICKYTHREADS`.
+ - Опция сборки `MDBX_USE_VALGRIND` заменена на общепринятую `ENABLE_MEMCHECK`.
+ - В структуре `MDBX_envinfo` серии полей вида `meta1`, `meta2` и `meta3` заменены на массивы вида `meta[3]`.
+ - В шаблонных классах и функциях С++ API по-умолчанию вместо `mdbx::legacy_buffer` использован тип `mdbx::default_buffer` использующий полиморфные аллокаторы С++ 17.
+
 
 ## v0.13.0 от 2023-04-23