4362 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
fe627ed2f2 mdbx: дополнение ChangeLog. 2024-12-08 09:33:08 +03:00
Леонид Юрьев (Leonid Yuriev)
7aed3a7609 mdbx: дополнение и корректировка README. 2024-12-08 09:33:08 +03:00
Леонид Юрьев (Leonid Yuriev)
1566a0006c mdbx: исправление регресса в mdbx_env_stat_ex(). 2024-12-07 19:04:27 +03:00
Леонид Юрьев (Leonid Yuriev)
9481c0e5c4 mdbx: опечатки/орфография. 2024-12-06 23:56:13 +03:00
Леонид Юрьев (Leonid Yuriev)
207ad31257 mdbx: добавление в README упоминаний о поддержке Conan. 2024-12-06 20:36:48 +03:00
Леонид Юрьев (Leonid Yuriev)
3a09b8fb0c mdbx: координаты для спонсирования в ETH.
// Пока Positive Technologies, пора заняться делом.
2024-12-06 18:44:41 +03:00
Леонид Юрьев (Leonid Yuriev)
d1b2ec0489 mdbx-cmake: удаление двойной проверки версии MSVC. 2024-12-04 23:50:33 +03:00
Леонид Юрьев (Leonid Yuriev)
367a118a8f mdbx: дополнение ChangeLog. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
e2ca81ae83 mdbx: поддержка Conan. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
44865dadc7 mdbx: переименование и доработка опций сборки. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
35177611d2 mdbx: исправление сборки при MDBX_ENABLE_DBI_SPARSE=OFF. 2024-12-03 00:11:28 +03:00
Леонид Юрьев (Leonid Yuriev)
99fa43f322 mdbx: удаление устаревшего CMakeSettings.json 2024-12-02 18:10:32 +03:00
Леонид Юрьев (Leonid Yuriev)
acb3cb0290 mdbx: исправление сборки при включении профилирования GC (опция MDBX_ENABLE_PROFGC). 2024-12-02 17:40:07 +03:00
Леонид Юрьев (Leonid Yuriev)
5327f42465 mdbx: дополнение ChangeLog. 2024-11-28 20:07:27 +03:00
Леонид Юрьев (Leonid Yuriev)
4c5be88038 mdbx-cmake: исправление semver_provide() для случая символических ссылок в путях. 2024-11-28 14:54:55 +03:00
Леонид Юрьев (Leonid Yuriev)
ad0b374eb5 mdbx: добавление MDBX_MAYBE_UNUSED для log_if_error(). 2024-11-28 00:05:36 +03:00
Леонид Юрьев (Leonid Yuriev)
c716531bd4 mdbx-cmake: использование CMAKE_C_STANDARD при выборе стандарта C. 2024-11-27 23:25:41 +03:00
Леонид Юрьев (Leonid Yuriev)
9d79d2ba95 mdbx: дополнение ChangeLog. 2024-11-27 21:17:49 +03:00
Леонид Юрьев (Leonid Yuriev)
76c9b42e86 mdbx: исправление GET_MULTIPLE для специальных случаев и/или одного значения. 2024-11-27 18:28:39 +03:00
Леонид Юрьев (Leonid Yuriev)
81a8127084 mdbx: устранение "may be used uninitialized" предупреждений в LTO-сбрках из-за усложнения SSA/CTF вследствие добавления LOG_IFERR(). 2024-11-27 18:28:39 +03:00
Леонид Юрьев (Leonid Yuriev)
28bd805ed8 mdbx: возможность логирования ошибок возвращаемых из API (return LOG_IFERR).
Возможность полезная, но пожалуй еще нуждается в доработке и/или
до-осмыслении. Основное неудобство в нестыковке с основным логированием.

С одной стороны, сообщение об ошибках следует выводить с
уровнем/severity MDBX_LOG_ERROR. Однако, это замусоривает и ломает
тесты.

Поэтому сейчас при возвращении ошибок из API сообщения логируются
MDBX_LOG_ERROR, но производится это только при включении уровня
логирования MDBX_LOG_DEBUG или более детальном.
2024-11-27 12:08:32 +03:00
Леонид Юрьев (Leonid Yuriev)
9daff17c82 mdbx: поддержка Semantic Versioning.
Было `MAJOR.MINOR.RELEASE.REVISION`
Теперь `MAJOR.MINOR.PATCH[.TWEAK][-PRERELEASE][+BUILDMETADATA]`

https://semver.org/

 - вместо квартета `MAJOR.MINOR.RELEASE.REVISION`
   триплет c опцинальным четвертым членом `MAJOR.MINOR.PATCH[.TWEAK]`

 - `TWEAK` не входит в тег git, а формируется автоматически и
   соответствует кол-ву коммитов после тега git и опускается если 0.

 - Поле `PRERELEASE` опционально и переносится в версию из тега git.

 - Поле `BUILDMETADATA` опционально, не входит в тег git, а
   добавляется во время сборки если задана опцией `MDBX_BUILD_METADATA`.
2024-11-24 20:46:21 +03:00
Леонид Юрьев (Leonid Yuriev)
bcf0a1273f mdbx-make: добавление .WAIT для устранения коллизий при распараллеливании сборки. 2024-11-24 19:59:40 +03:00
Леонид Юрьев (Leonid Yuriev)
6508bd5a97 mdbx-cmake: включение CMP0054. 2024-11-24 18:42:53 +03:00
Леонид Юрьев (Leonid Yuriev)
3110c2206f mdbx: дополнение ChangeLog. 2024-11-23 01:12:55 +03:00
Леонид Юрьев (Leonid Yuriev)
652587b33f mdbx: добавление проверки и использования __deprecated_enum. 2024-11-23 01:10:33 +03:00
Леонид Юрьев (Leonid Yuriev)
aa3b39d9ed mdbx: исправление потенциального повторного определения __has_exceptions_disabled. 2024-11-23 01:10:33 +03:00
Леонид Юрьев (Leonid Yuriev)
b6a851b3d6 mdbx-testing: добавление extra/probe.c++ просто для проверки компилируемости. 2024-11-23 01:10:33 +03:00
Леонид Юрьев (Leonid Yuriev)
8369b8ff64 mdbx-cmake: перемещение add_extra_test(). 2024-11-23 01:10:33 +03:00
Леонид Юрьев (Leonid Yuriev)
2194349644 mdbx: устранение зацикливания обновления GC при фиксации транзакций.
В продолжение 6c56ed97bbd8ca46abac61886a113ba31e5f1291, включая исправление регрессов.
2024-11-22 20:14:45 +03:00
Леонид Юрьев (Leonid Yuriev)
1c9c49dd1a mdbx-build: поддержка переменной среды SOURCE_DATE_EPOCH в качестве MDBX_BUILD_TIMESTAMP для воспроизводимости сборок. 2024-11-22 20:14:45 +03:00
Леонид Юрьев (Leonid Yuriev)
881d4d4207 mdbx-build: добавление build-metadata и опции сборки MDBX_BUILD_METADATA. 2024-11-22 20:14:45 +03:00
Леонид Юрьев (Leonid Yuriev)
2b71df417e mdbx-windows: использование ntdll вместо CRT только при явном отключении C++ API.
Изменение поведения по-умолчанию, но без утраты контроля.

Без изменения:
  Определение опции MDBX_WITHOUT_MSVC_CRT в значение 0 или 1 позволяет явно выбирать между использование ntdll и CRT.
  При этом включение C++ API (MDBX_BUILD_CXX=1) требует использования CRT.

Ранее:
  По-умолчанию, когда не определены опции MDBX_WITHOUT_MSVC_CRT и MDBX_BUILD_CXX, делался выбор в пользу использования ntdll, вместо CRT.

Теперь:
  Функции ntdll будет использоваться вместо CRT только если явно выключена поддержка C++ API (задано MDBX_BUILD_CXX=0).
2024-11-21 19:47:26 +03:00
Леонид Юрьев (Leonid Yuriev)
5815ff2ef7 mdbx: переделка костыля namespace::attr для MSVC и Apple. 2024-11-21 19:47:26 +03:00
Леонид Юрьев (Leonid Yuriev)
ddea36c54a mdbx: освобождение памяти сброшенных/прерванных читающих транзакций передаваемых в mdbx_txn_commit().
Исторически в API была слабость/неоднозначность в жизненном цикле читающих транзакций:

 - В простейших сценариях читающие транзакции запускались посредством
   mdbx_txn_begin() и завершались посредством mdbx_txn_abort(), либо mdbx_txn_commit();

 - Для экономии накладных расходов были предусмотрены функции
   mdbx_txn_reset() и mdbx_txn_renew(), которые сбрасывали/прерывали
   читающую транзакцию без её освобождения/разрушения и затем перезапускали её.
   При этом транзакции сброшенные посредством mdbx_txn_reset() должны были
   быть либо перезапущены, либо освобождены посредством mdbx_txn_abort();

 - Заминка возникала при вызове mdbx_txn_commit() для читающих
   транзакций сброшенных/прерванных посредством mdbx_txn_reset().
   В таких ситуациях возвращалась ошибка MDBX_BAD_TXN, а транзакция
   не освобождалась.

Такое поведение вносило лишнюю асимметрию в API и способствовало
появлению ошибок утечки ресурсов, но поддерживалось для совместимости.

Этот коммит изменяет историческое поведение с нарушением совместимости,
но делает API более регулярным и уменьшает вероятность ошибок утечки
ресурсов.

Теперь mdbx_txn_commit() освобождает/разрушает читающие транзакции
сброшенные/прерванные посредством mdbx_txn_reset() возвращая при этом
MDBX_RESULT_TRUE вместо MDBX_SUCCESS, по аналогии обработки фиксации
аварийных пишущих транзакций.
2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
efaa46d7cd mdbx: предотвращение незначащих, но мешающих отладке, ошибок внутри copy2fd(). 2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
92dec0bca9 mdbx: исправление утечки памяти из-за регресса в txn_end() при добавлении парковки транзакций.
Если читающая транзакция была припаркована и затем вытеснена, то при её
завершении ресурсы не освобождались.
2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
c13efb791f mdbx-testing: логирование флагов/опций в copy-сценарии. 2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
12442bd1f4 mdbx-testing: корректировка контроля результата в copy-сценарии. 2024-11-17 22:51:56 +03:00
Леонид Юрьев (Leonid Yuriev)
f5b1e36b9e mdbx-testing: устранение лишней установки prng при завершении цикла тестов. 2024-11-17 10:29:54 +03:00
Леонид Юрьев (Leonid Yuriev)
f32d3f260f mdbx: безусловное прерывание транзакции при опции MDBX_CP_DISPOSE_TXN. 2024-11-16 11:18:47 +03:00
Леонид Юрьев (Leonid Yuriev)
47f96b6afa mdbx: дополнение ChangeLog. 2024-11-15 15:58:48 +03:00
Леонид Юрьев (Leonid Yuriev)
0306ba8136 mdbx-dist: отключение clang-format в амальгамированном исходном коде. 2024-11-13 19:16:26 +03:00
Леонид Юрьев (Leonid Yuriev)
a2984c604d mdbx-cmake: переформатирование cmake-скриптов. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
5862a4b542 mdbx-cmake: исправление упущенных POST_BUILD в add_custom_command(). 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
e2b4245abe mdbx: дополнение .gitignore 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
b5def26565 mdbx-make: добавление целей cmake-build и ninja. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
e27537dd9d mdbx-make: добавление префикса @ к именам служебных/временных файлов/каталогов. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
f550c65476 mdbx-make: использование VERSION.json с полной информацией вместо однострочного текстового файла. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
ab4bf2d7f0 mdbx-cmake: экспорт/импорт информации о версии в VERSION.json 2024-11-13 15:05:26 +03:00