mORMot2 DailyЕжедневный обзор коммитов апстрима

Очистка при завершении потока автоматизирована, типы callback изменены

Завершение потоков теперь централизовано в TThreadAbstract; для приложений, которые переопределяют или назначают соответствующие callbacks и методы REST/ORM, изменились несовместимые на уровне исходников сигнатуры. Отдельное исправление не позволяет TWebSocketProtocol.SetEncryptKey молча отключать шифрование при aSettings = nil. Также исправлена конкурентность запуска HTTP API WebSocket в Windows, нескольких общих кэшей и периодических очисток, а слитая функция позволяет HTTP-обработчикам передавать тело ответа из TStream.

Коротко

  • TOnNotifyThread теперь принимает TThreadAbstract, TSynLogFamily.OnThreadEnded удалён, связанные виртуальные методы REST/ORM также используют TThreadAbstract.
  • TWebSocketProtocol.SetEncryptKey теперь сохраняет шифрование при непустом ключе и aSettings = nil.
  • HTTP API WebSocket инициализируется лениво и последовательно; Wine явно не использует неполные пути websocket.dll и http.sys.
  • HTTP-обработчики могут возвращать TStream через SetOutStream; socket-серверы передают поток, а http.sys и REST-over-WebSockets буферизуют его в документированных пределах.
  • Исправления CAS и блокировок исключают дублирование очисток idle, сессий, кэшей и соединений при конкурентных запросах.

Рекомендации по обновлению

Используйте build 2.4.16737, если применяете WebSocket-шифрование с nil в параметрах, Windows HTTP API WebSocket или затронутые общие кэши. Пересоберите пользовательские callbacks потоков и потомков REST/ORM: TOnNotifyThread и несколько виртуальных методов теперь требуют TThreadAbstract. Прямые вызовы LockedGet32 замените на LockedReset32. В исходном payload нет более поздних замен этих изменений в этой редакции.

Сборка2.4.16701 → 2.4.16737
Коммиты35
Строки+1598 -392
Чтение7 мин

33 из 33 записей · 35 коммитов в апстриме

Сюжеты
# Запись Категория Модули
1 Высокий REST- и ORM-хуки потоков теперь требуют TThreadAbstract Публичные BeginCurrentThread, EndCurrentThread, OnBeginCurrentThread, OnEndCurrentThread, HttpThreadStart и HttpThreadTerminate в mormot.rest.core, mormot.rest.server, mormot.rest.http.server и mormot.orm теперь принимают TThreadAbstract вместо TThread. Явная очистка семейства логов удалена. Несовместимые изменения mormot.orm.core+5 69869f49+33-36

rest/orm: use TOnNotifyThread new definition

Влияние

Пользовательские потомки с override этих методов и методы, назначенные хукам, могут не компилироваться до замены Sender на TThreadAbstract. Очистка во время выполнения затем идёт через новый базовый класс.

Требуется миграция

Найдите override и callbacks BeginCurrentThread, EndCurrentThread, OnBeginCurrentThread, OnEndCurrentThread, HttpThreadStart и HttpThreadTerminate; замените Sender: TThread на Sender: TThreadAbstract и пересоберите.

Публичный API

  • TRest.BeginCurrentThread / TRest.EndCurrentThreadsignature-changed — Sender изменён с TThread на TThreadAbstract.
  • TRestOrmParent.BeginCurrentThread / TRestOrmParent.EndCurrentThreadsignature-changed — Sender изменён с TThread на TThreadAbstract.

Arnaud Bouchez · 13:46 UTC · открыть коммит на GitHub →

2 Высокий TOnNotifyThread сужен, callback семейства журналов удалён mormot.core.threads меняет TOnNotifyThread с procedure(Sender: TThread) на procedure(Sender: TThreadAbstract). Добавлен TThreadAbstract.OnThreadEnded, из mormot.core.log удалён TSynLogFamily.OnThreadEnded, очистка TLoggedThread вынесена из его DoTerminate. Несовместимые изменения mormot.core.log+1 f1f8d766+12-13

core: breaking change of TSynLogFamily.OnThreadEnded into TThreadAbstract

Влияние

Существующие callback-методы с Sender: TThread несовместимы с TOnNotifyThread, прямые ссылки на TSynLogFamily.OnThreadEnded не компилируются. Нужна миграция исходников Delphi и FPC.

Требуется миграция

Найдите назначения TOnNotifyThread и обработчики Sender: TThread, замените на Sender: TThreadAbstract; ссылки TSynLogFamily.OnThreadEnded замените на TThreadAbstract.OnThreadEnded или автоматическую очистку TThreadAbstract.

Публичный API

  • TOnNotifyThreadsignature-changed — Sender теперь TThreadAbstract вместо TThread.
  • TSynLogFamily.OnThreadEndedremoved — Очистка перенесена в TThreadAbstract.
  • TThreadAbstract.OnThreadEndedadded — Обёртка TSynLog.NotifyThreadEnded с новым типом callback.

Arnaud Bouchez · 13:41 UTC · открыть коммит на GitHub →

3 Высокий LockedGet32 переименован и атомарно устанавливает любое целое mormot.core.base заменяет публичную функцию LockedGet32(Target) на LockedReset32(Target, New), где New по умолчанию равен нулю. Оба вызова счётчиков пробуждения в mormot.net.async обновлены. Несовместимые изменения mormot.core.base+1 bcf834a5+9-9

core: new LockedReset32() wrapper function

Влияние

Код с прямым вызовом LockedGet32 больше не компилируется. LockedReset32 без второго аргумента сохраняет прежний обмен с нулём, новый параметр позволяет задать другое значение.

Требуется миграция

Найдите LockedGet32 и замените каждый вызов на LockedReset32; передавайте New только для значения, отличного от нуля.

Публичный API

  • LockedGet32removed — Заменена на LockedReset32.
  • LockedReset32added — Атомарно возвращает Target^ и заменяет его на New, по умолчанию ноль.

Arnaud Bouchez · 18:44 UTC · открыть коммит на GitHub →

4 Высокий nil в настройках WebSocket больше не отключает шифрование TWebSocketProtocol.SetEncryptKey в mormot.net.ws.core теперь выходит только при пустом ключе, а не при aSettings = nil. Без настроек он пробует ECDHE-файл, полную синтаксическую форму ключа, затем legacy Sha256Weak для AES-CTR-128. Безопасность mormot.net.ws.core 57660dac+18-11

net: fixed TWebSocketProtocol.SetEncryptKey() with aSettings = nil

Влияние

Раньше непустой ключ с aSettings = nil очищал fEncryption и выходил, молча оставляя протокол без защиты. Теперь такой вызов включает шифрование с документированными настройками совместимости.

Публичный API

  • TWebSocketProtocol.SetEncryptKeybehaviour-changed — nil в aSettings теперь выбирает настройки совместимости, а не отключает шифрование.

Модули

Arnaud Bouchez · 07:41 UTC · открыть коммит на GitHub →

5 Высокий Конструктор HTTP API WebSocket безопасно инициализирует websocket.dll THttpApiWebSocketServer.Create в mormot.net.server вызывает WebSocketApiInitialize до проверки WebSocketApi.WebSocketEnabled. mormot.lib.winhttp загружает DLL и связывает exports под реентерабельной глобальной блокировкой; тесты покрывают первый вызов конструктора и 16 потоков. Исправления mormot.lib.winhttp+1 41dbfbba+211-18

fix: initialize HTTP API WebSockets lazily

Влияние

Windows HTTP API WebSocket сервер может быть первым пользователем API в процессе без ложной ошибки 'not supported'; конкурентный первый вызов не увидит частично связанные указатели функций.

Публичный API

  • THttpApiWebSocketServer.Createbehaviour-changed — Лениво инициализирует WebSocket API до проверки доступности.

Sven Harazim · 11:03 UTC · открыть коммит на GitHub →

6 Средний Финальная правка не даёт старому результату кэша перезаписать новый В mormot.core.os TCachedValue.Cache сохраняет результат медленного callback только если TixShr всё ещё равен tick, захваченному до вызова. Также чтение TSynDictionary переведено на VCardinal, код в mormot.rest.server упрощён, в остальных модулях уточнены комментарии. Исправления mormot.core.json+4 14d901e8+16-16

all: some refactoring after today's commits

Влияние

Конкурентный старый медленный расчёт больше не перезапишет новое значение кэша. API существующего кода Delphi/FPC этим commit не меняется.

Arnaud Bouchez · 18:45 UTC · открыть коммит на GitHub →

7 Средний Кэш времени REST получил атомарное обновление и чтение под блокировкой TRest.GetServerTimestamp в mormot.rest.core использует LockedExc32, выбирая одно обновление на интервал 512 мс. TLightLock защищает чтение и запись кэшированного TTimeLogBits. Исправления mormot.rest.core ad1dcbf5+18-12

rest: made TRest.GetServerTimestamp atomic

Влияние

Параллельные REST-запросы получают согласованное время, в том числе в 32-битных Delphi/FPC, где 64-битное значение не атомарно. API приложения не меняется.

Модули

Arnaud Bouchez · 15:22 UTC · открыть коммит на GitHub →

8 Средний Повторно используемые слоты журналирования полностью сбрасывают состояние TSynLog.NotifyThreadEnded в mormot.core.log обнуляет ThreadNumber как одноразовый маркер возврата, а InitThreadNumber сбрасывает RecursionCount и Flags до назначения повторного слота. ThreadBitLo остаётся маркером lazy initialization. Исправления mormot.core.log 35d353c9+13-9

core: fixed TSynLog.NotifyThreadEnded threads recycling

Влияние

Короткоживущие потоки при повторном слоте TSynLog не наследуют recursion и per-thread flags предыдущего потока. Это исключает молчаливое подавление записей и устаревшее состояние.

Модули

Arnaud Bouchez · 09:41 UTC · открыть коммит на GitHub →

9 Средний Обновление Kerberos keytab сериализовано без блокировки на время загрузки TServerSspiKeyTab.TryRefresh в mormot.lib.gssapi через fSafe захватывает двухсекундное окно, затем вызывает SetKeyTab вне блокировки. Tick увеличен на один, чтобы первый интервал не совпал с начальным нулём. Исправления mormot.lib.gssapi 6f53f3d7+14-7

lib: optimized TServerSspiKeyTab.TryRefresh thread safety

Влияние

Конкурентные SSPI/GSSAPI-проверки больше не перезагружают один keytab одновременно, а другие вызовы не ждут под блокировкой разбора файла. Публичные API не меняются.

Модули

Arnaud Bouchez · 14:52 UTC · открыть коммит на GitHub →

10 Средний WebSocket DLL проверяется один раз и отключается под Wine TWebSocketApi получает флаг Tested в mormot.lib.winhttp. WebSocketApiInitialize фиксирует первую попытку под глобальной блокировкой, не повторяет неудачные загрузки и сразу возвращается под Wine, где websocket.dll содержит лишь часть заглушек. Исправления mormot.lib.winhttp 2f0cdace+14-6

lib: fixed WebSocketApiInitialize

Влияние

Неподдерживаемые Windows-среды не повторяют проверку DLL, а Wine не считается WebSocket-совместимым лишь из-за заглушек экспорта. Поддерживаемые системы инициализируются один раз.

Публичный API

  • TWebSocketApi.Testedadded — Показывает, что доступность websocket.dll уже проверена.

Модули

Arnaud Bouchez · 14:18 UTC · открыть коммит на GitHub →

11 Средний Конкурентные REST-запросы больше не вызывают OnIdle одновременно TRestServer.Uri в mormot.rest.server заменяет проверку read-then-write fOnIdleLastTix на compare-and-swap LockedExc32. OnIdle вызывает только запрос, продвинувший tick. Исправления mormot.rest.server 7df2308e+8-8

rest: fixed TRestServer.OnIdle trigger

Влияние

OnIdle больше не выполняется параллельно только из-за завершения запросов в один tick. Backend с нереентерабельным idle-кодом избегают дублирования и гонок.

Публичный API

  • TRestServer.OnIdlebehaviour-changed — За один tick его вызывает не более одного запроса.

Модули

Arnaud Bouchez · 14:53 UTC · открыть коммит на GitHub →

12 Средний CAS кэша времени больше не использует одну переменную как ожидаемое значение FromGlobalTime в mormot.core.datetime копирует GlobalTime.clock в локальную c и передаёт это стабильное ожидаемое значение в LockedExc32. Ранее clock служил и целью, и ожидаемым аргументом. Исправления mormot.core.datetime f7cfb5db+8-5

core: fixed FromGlobalTime() atomicity

Влияние

Конкурентное форматирование времени теперь однозначно выбирает обновляющий поток через CAS перед записью в общий кэш 16 мс. Сигнатура и точность для Delphi/FPC прежние.

Arnaud Bouchez · 14:50 UTC · открыть коммит на GitHub →

13 Средний TLoggedThread освобождает logging-состояние даже без записей TLoggedThread.DoTerminate в mormot.core.threads удаляет ранний выход при fLog = nil и безусловно вызывает TSynLog.NotifyThreadEnded после inherited DoTerminate, затем очищает fLog. Исправления mormot.core.threads 2c03b28a+3-5

core: fixed TLoggedThread.DoTerminate

Влияние

TLoggedThread, получивший thread-local метаданные, но не записавший строку, теперь корректно возвращает слот. Долгоживущие службы не исчерпывают реестр logging-потоков.

Arnaud Bouchez · 07:56 UTC · открыть коммит на GitHub →

14 Средний Предварительно подключённые tunnel workers начинают с успешного результата TTunnelLocalThread.DoExecute в mormot.net.tunnel устанавливает res := nrOk, когда socket уже подключён главным потоком, до fState := stProcessing. Раньше ветка оставляла res неинициализированным или старым. Исправления mormot.net.tunnel 677a3579+5-2

net: fixed TTunnelLocalThread process

Влияние

Tunnel-сессии с socket, подключённым главным потоком, больше не передают неопределённый результат в обработку ошибок или завершения. Процесс и API прежние.

Модули

Arnaud Bouchez · 07:36 UTC · открыть коммит на GitHub →

15 Средний TCachedValue резервирует обновление до снятия блокировки TCachedValue.Cache в mormot.core.os записывает Tix32 под Safe до медленного callback Call вне блокировки. Обновление помечается занятым до входа другого потока. Исправления mormot.core.os 84ab9449+3-3

core: fixed race in TCachedValue.Cache

Влияние

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

Модули

Arnaud Bouchez · 14:50 UTC · открыть коммит на GitHub →

16 Средний TThreadAbstract теперь всегда очищает журнал при завершении TThreadAbstract.DoTerminate в mormot.core.threads вызывает TSynLog.NotifyThreadEnded после inherited termination и legacy-обновления Finished, подавляя исключения завершения. Очереди и таймеры удаляют явные callbacks, отдельный logging flush TThread сохраняет ручной вызов. Новые возможности mormot.core.log+2 8ef4ae1b+30-35

core: TThreadAbstract calls TSynLog.NotifyThreadEnded

Влияние

Каждый потомок, корректно вызывающий inherited DoTerminate, автоматически освобождает per-thread состояние журналирования. Потомки обычного TThread с TSynLog всё ещё должны вызывать TSynLog.NotifyThreadEnded сами.

Стоит взглянуть

Публичный API

  • TThreadAbstract.DoTerminatebehaviour-changed — Автоматически вызывает TSynLog.NotifyThreadEnded при завершении потока.

Arnaud Bouchez · 13:43 UTC · открыть коммит на GitHub →

17 Средний TThreadAbstract предоставляет Finished и в Delphi 7/2007 mormot.core.threads добавляет в TThreadAbstract публичное эмулированное Finished и fFinished, если их нет в RTL, устанавливая флаг в DoTerminate. TLoggedThread.ExecuteDone удалён, mormot.net.tftp.server использует Finished. Компилятор и платформы mormot.core.threads+1 5678b9d9+31-13

core: emulate TThread.Finished property on Delphi 7/2007

Влияние

Старые Delphi могут проверять TThreadAbstract.Finished так же, как новые Delphi/FPC. Код с публичным TLoggedThread.ExecuteDone должен перейти на Finished.

Требуется миграция

Найдите TLoggedThread.ExecuteDone и замените на унаследованное свойство Finished.

Публичный API

  • TThreadAbstract.Finishedadded — Эмулируется для Delphi 7/2007; в новых RTL уже существует.
  • TLoggedThread.ExecuteDoneremoved — Используйте Finished.

Arnaud Bouchez · 11:54 UTC · открыть коммит на GitHub →

18 Средний Wine получил отдельный флаг ненадёжного http.sys mormot.core.os добавляет wsWeakHttpSys в TWindowsSpecs и устанавливает его при обнаружении Wine. TRestHttpServer.Create в mormot.rest.http.server использует флаг для перехода с HTTP_API_MODES на useHttpAsync. Компилятор и платформы mormot.core.os+3 b4238a29+10-8

net: introducing wsWeakHttpSys flag

Влияние

REST-серверы под Wine обходят заведомо неполный http.sys и используют асинхронный socket-сервер. Поведение нативной Windows не меняется.

Публичный API

  • TWindowsSpecs.wsWeakHttpSysadded — Отмечает окружения, где не следует выбирать http.sys.

Arnaud Bouchez · 14:31 UTC · открыть коммит на GitHub →

19 Средний Рабочие потоки HTTP API WebSocket перешли на новый тип callback mormot.net.server меняет параметры TSynThreadPoolHttpApiWebSocketServer.OnThreadStart и OnThreadTerminate на TThreadAbstract. TSynWebSocketGuard наследуется от TThreadAbstract и удаляет ручной TSynLog.NotifyThreadEnded. Компилятор и платформы mormot.net.server f115b536+7-8

net: follow new TThreadAbstract / TOnNotifyThread definitions

Влияние

WebSocket workers и guard компилируются с новым TOnNotifyThread и получают автоматическую очистку журнала. Пользовательским потомкам с override защищённых callbacks может понадобиться та же смена сигнатуры.

Стоит взглянуть

Модули

Arnaud Bouchez · 13:45 UTC · открыть коммит на GitHub →

20 Низкий Очистка словаря получила атомарный секундный затвор TSynDictionary.DeleteDeprecated в mormot.core.json читает общий tick через новое поле TSynVarData.VCardinal и захватывает проверку через LockedExc32. mormot.core.base добавляет это поле variant record. Производительность mormot.core.base+1 c7887dc9+35-33

core: ensure TSynDictionary.DeleteDeprecated trigger is atomic

Влияние

Конкурентные пользователи словаря не дублируют очистку в одну секунду. Поведение TSynDictionary сохраняется; код с TSynVarData может использовать новое беззнаковое представление.

Публичный API

  • TSynVarData.VCardinaladded — 32-битное беззнаковое представление variant record.

Arnaud Bouchez · 15:03 UTC · открыть коммит на GitHub →

21 Низкий Сканирование устаревших соединений выполняется один раз за интервал TSqlDBConnectionPropertiesThreadSafe.ThreadSafeConnection в mormot.db.sql заменяет несинхронную запись времени на LockedExc32 перед DeleteDeprecated. ClearConnectionPool атомарно сбрасывает триггер. Производительность mormot.db.sql a6d76aa9+12-9

db: use CAS for TSqlDBConnectionPropertiesThreadSafe.DeleteDeprecated

Влияние

При конкурентной SQL-нагрузке только один поток выполняет необязательную очистку соединений раз в 32 секунды. Поведение backend и публичные API не меняются.

Модули

Arnaud Bouchez · 15:15 UTC · открыть коммит на GitHub →

22 Низкий Очистка кэша методов MVC выполняется один раз в секунду Обработка TMvcRunWithViews в mormot.core.mvc теперь захватывает fOnIdlePurgeCacheTix32 через LockedExc32 до PurgeMethodCache. Сам PurgeMethodCache больше не записывает tick. Производительность mormot.core.mvc 83f4846b+6-5

mvc: atomic TMvcRunWithViews.PurgeMethodCache

Влияние

Конкурентные MVC-запросы не дублируют полный просмотр кэша в одну секунду. Результаты и прикладные API MVC ведут себя по-прежнему.

Модули

Arnaud Bouchez · 15:10 UTC · открыть коммит на GitHub →

23 Низкий Устаревшие REST-сессии очищает один запрос за интервал TRestServerUriContext.Authenticate в mormot.rest.server теперь продвигает fSessionsDeprecatedTix через LockedExc32 до SessionDeleteDeprecated. Отдельная неатомарная запись из очистки удалена. Производительность mormot.rest.server 14d5a05d+6-5

rest: use a CAS trigger for TRestServer.SessionDeleteDeprecated

Влияние

На загруженных серверах несколько потоков больше не входят одновременно в ежесекундную проверку истечения сессий. Семантика и публичные API не меняются.

Модули

Arnaud Bouchez · 15:07 UTC · открыть коммит на GitHub →

24 Низкий Время HTTP-журнала форматирует один поток в секунду THttpLogger.Append в mormot.net.http применяет LockedExc32 к fTimeTix32 перед SetTimeText. Конкурентные запросы переиспользуют строки ISO-8601 и NCSA вместо параллельного форматирования. Производительность mormot.net.http d7b698d8+6-5

net: optimized THttpLogger.Append time update

Влияние

При интенсивном HTTP-журналировании меньше дублируется преобразование дат, сохраняя секундный кэш. Формат журнала и публичные API не меняются.

Модули

Arnaud Bouchez · 14:55 UTC · открыть коммит на GitHub →

25 Низкий Объявления StackTrace снова компилируются в Delphi 7 mormot.core.log добавляет static к двум перегрузкам TSynLog.StackTrace только при HASINLINE. Старые Delphi больше не разбирают неподдерживаемую директиву. Компилятор и платформы mormot.core.log 332614f5+6-4

code: fixed Delphi 7 compilation

Влияние

Сборки Delphi 7 с mormot.core.log снова компилируются. Новые Delphi и FPC сохраняют API StackTrace и поведение.

Модули

Arnaud Bouchez · 13:40 UTC · открыть коммит на GitHub →

26 Низкий Флаги компилятора теперь отражают наличие TThread.Finished mormot.defines добавляет HASTTHREADFINISHED для FPC и Unicode Delphi и документирует WINDELPHI перед определением для Delphi в Windows. Условия поддерживают legacy-совместимость TThread. Компилятор и платформы mormot.defines 86422854+6-3

core: added missing HASTTHREADFINISHED conditional

Влияние

Фреймворк включает эмуляцию Finished только для Delphi 7/2007, а не для платформ с готовым свойством. Прямого изменения API приложения нет.

Модули

Arnaud Bouchez · 11:55 UTC · открыть коммит на GitHub →

27 Низкий Правка response streams уточняет очистку и диагностику тестов После merge SetOutStream mormot.net.http делает OutContentStreamDiscard безопасным для nil и централизованно сбрасывает поля. mormot.net.async уточняет, что AsyncResponse удаляет ожидающий поток; тесты используют RaiseStreamError и игнорируют ожидаемый EStreamError. Внутреннее устройство mormot.net.async+1 7627b1ad+20-26

net: some refactoring after #554

Влияние

Owned response streams по-прежнему освобождаются, отложенный async-контент заменяет ожидающий поток. API SetOutStream и ограничения серверов не меняются.

Arnaud Bouchez · 07:35 UTC · PR #554 · открыть коммит на GitHub →

28 Низкий Стартовые nonce больше не входят рекурсивно в основной Random128 TCryptRandomEntropy.Create в mormot.crypt.secure заполняет 16-байтный nonce приложения через RandomBytes вместо Random128. Комментарии уточняют предотвращение рекурсии Random128 в TAes.EncryptInitRandom и роль системного RNG как fallback seed. Внутреннее устройство mormot.core.os.posix+5 a0141ee6+13-23

core: don't call Random128() at startup

Влияние

Инициализация источника энтропии не входит повторно в основной PRNG во время его создания. Nonce остаётся случайным; публичные random API и форматы данных не меняются.

Arnaud Bouchez · 07:33 UTC · открыть коммит на GitHub →

29 Низкий Кэш времени теперь хранит TSynSystemTime напрямую mormot.core.datetime меняет поле GlobalTime с TSystemTime на TSynSystemTime и удаляет локальный absolute alias в FromGlobalTime. Padding сохраняет размер записи в 64 байта. Внутреннее устройство mormot.core.datetime 6dda432f+12-11

core: simplified FromGlobalTime() implementation

Влияние

Это упрощает внутреннее копирование без изменения публичного контракта FromGlobalTime и точности 16 мс. Код Delphi/FPC не затронут.

Arnaud Bouchez · 13:49 UTC · открыть коммит на GitHub →

30 Низкий Watchdog Angelize отказался от ручных callbacks очистки журнала mormot.app.agl удаляет явные вызовы TSynLog.NotifyThreadEnded и log.Family.OnThreadEnded из TSynAngelizeRunner и создания watchdog. Очистку обеспечивает наследование TThreadAbstract. Внутреннее устройство mormot.app.agl afde3637+4-5

agl: follow new TThreadAbstract feature

Влияние

Поведение Angelize остаётся прежним, но уведомление о завершении централизовано вместо ручных вызовов в каждом классе. API не меняется.

Модули

Arnaud Bouchez · 13:46 UTC · открыть коммит на GitHub →

31 Низкий Потоки SQLite и PostgreSQL согласованы с централизованной очисткой журнала mormot.db.sql.postgres удаляет лишний SynDBLog.NotifyThreadEnded из асинхронного потока на TThreadAbstract. Поток резервной копии SQLite остаётся обычным TThread и сохраняет явно документированный SQLite3Log.NotifyThreadEnded. Внутреннее устройство mormot.db.raw.sqlite3+1 9a1c1313+4-5

db: adapt to the new TThreadAbstract class

Влияние

Очистка журналов DB-потоков должна выполняться ровно один раз без изменения SQLite backup и PostgreSQL async. Прикладные API базы данных не меняются.

Arnaud Bouchez · 13:44 UTC · открыть коммит на GitHub →

32 Низкий Тесты и пример журналирования перешли на TThreadAbstract Демонстрация dmvc-ai и TPipeConsumerThread в test.net.proto теперь наследуются от TThreadAbstract вместо TThread. Реализация фреймворка и публичные объявления не меняются. Тесты 56660c17+4-4

test: favor TThreadAbstract usage

Влияние

Код приложений не затронут; примеры показывают предпочтительный базовый класс с автоматической очисткой журнала.

Arnaud Bouchez · 13:48 UTC · открыть коммит на GitHub →

33 Низкий Документация Sha256Weak явно ограничивает его legacy-совместимостью Комментарии mormot.crypt.core уточняют: Sha256Weak дополняет вход короче 256 байт, нужен только для совместимости mORMot 1 и не должен применяться в новом коде или данных. Рекомендованы TSynSigner.Pbkdf2 и Modular Crypt. Документация mormot.crypt.core 8d60e5ed+7-6

crypt: refined Sha256Weak() documentation

Влияние

Поведение и API не меняются. Формулировка помогает security review считать Sha256Weak долгом совместимости, а не допустимой схемой вывода пароля.

Стоит взглянуть

Публичный API

  • Sha256Weakdeprecated — Документация оставляет его только для совместимости mORMot 1; для новых данных используйте TSynSigner.Pbkdf2 или Modular Crypt.

Модули

Arnaud Bouchez · 07:55 UTC · открыть коммит на GitHub →

Активность апстрима коммитов в день · последние 60 дней
Коммиты977
Активных дней44/60
Пик активности2026-09-30
Максимум60
2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 26 commits2026-08-28: 11 commits2026-08-29: 10 commits2026-08-30: 1 commit2026-08-31: 23 commits2026-09-01: 0 commits2026-09-02: 20 commits2026-09-03: 29 commits2026-09-04: 35 commits2026-09-05: 13 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 23 commits2026-09-09: 10 commits2026-09-10: 17 commits2026-09-11: 23 commits2026-09-12: 14 commits2026-09-13: 9 commits2026-09-14: 7 commits2026-09-15: 4 commits2026-09-16: 24 commits2026-09-17: 26 commits2026-09-18: 21 commits2026-09-19: 59 commits2026-09-20: 13 commits2026-09-21: 5 commits2026-09-22: 34 commits2026-09-23: 17 commits2026-09-24: 57 commits2026-09-25: 22 commits2026-09-26: 26 commits2026-09-27: 0 commits2026-09-28: 2 commits2026-09-29: 19 commits2026-09-30: 60 commits2026-10-01: 26 commits2026-10-02: 30 commits2026-10-03: 32 commits2026-10-04: 15 commits2026-10-05: 1 commit2026-10-06: 26 commits2026-10-07: 37 commits2026-10-08: 27 commits2026-10-09: 35 commits2026-10-10: 33 commits2026-10-11: 9 commits2026-10-12: 11 commits2026-10-13: 35 commits
2026-08-152026-10-13