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

Анализ логов сохраняет MAB-файлы и получает cross-platform caller tracing

В этой редакции усилены прежде всего инструменты вокруг TSynLog, без изменения backend-протоколов. Чтение логов больше не падает на пустых profiler data или выборе plain text, а TDebugFile не удаляет нечитаемый внешний .mab-файл. FreeBSD, FPC и Android получают socket/POSIX compatibility fixes, а поиск caller symbol теперь работает через TDebugFile на всех поддерживаемых компиляторах.

Коротко

  • Переходите на build 2.4.17019 в fc996116ae8a2534c5e763ac180649cdb78013ab.
  • TDebugFile.Create больше не удаляет нечитаемый внешний .mab-файл, переданный как aExeName.
  • TSynLogFile и TSynLogFileView безопасно обрабатывают логи без sllEnter, plain-text строки для clipboard и пустой level filter.
  • Размер UNIX-domain socket для FreeBSD и последующие FPC, BSD и Android compilation fixes завершены в финальной build.
  • Добавлен TDebugFile.AppendCallerShort; TSynLog.Enter или Log без текста теперь определяет caller и в FPC, и в Delphi.
  • Lazarus package теперь сохраняет mormot.crypt.pkcs11 при регенерации mormot2.pas.

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

Переходите на build 2.4.17019. Обновляйтесь быстрее, если LogView открывает внешние .mab, логи могут не содержать sllEnter или поддерживаются FreeBSD, FPC BSD и Android. Пересоберите все platform packages, проверьте plain-text clipboard и пустой filter, а также влияние automatic caller symbols на объём и стоимость логирования. В raw payload нет superseded_by, поэтому avoid window не заявляется.

Сборка2.4.17002 → 2.4.17019
Коммиты13
Строки+796 -383
Чтение2 мин

8 из 8 записей · 13 коммитов в апстриме

Сюжеты
# Запись Категория Модули
1 Высокий Пустые и plain-text логи больше не ломают viewer TSynLogFile.SetLogProcMerged не обращается к profiler arrays, если нет sllEnter. TSynLogFileView.GetLineForClipboard возвращает исходную строку при fLevels=nil, а Select очищает fSelectedCount до обработки пустого event filter. В TTestCoreBase.Debugging добавлены regression tests. Исправления mormot.core.log a01ae51e+56-8

core: fixed TSynLogFile/TSynLogFileView edge cases found by the LogView tool

Влияние

LogView и пользовательские анализаторы избегают nil/out-of-range access для логов без method profiling, копируют plain-text строки и правильно показывают ноль строк после снятия всех levels.

Публичный API

  • TSynLogFile.SetLogProcMergedbehaviour-changed — Merged profiling для лога без sllEnter теперь оставляет пустой profiler вместо dereference пустых arrays.
  • TSynLogFileView.GetLineForClipboardbehaviour-changed — Plain-text файлы возвращают исходную выбранную строку, а out-of-range rows — пустую строку.

Модули

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

2 Высокий Нечитаемые внешние MAB-файлы больше не удаляются TDebugFile.Create по-прежнему вызывает LoadMab при совпадении timestamp cache, но больше не вызывает DeleteFile, если blocks или symbols не загружены. Исправления mormot.core.log 4ca916cb+1-3

core: TDebugFile.Create() won't delete an unreadable .mab file

Влияние

Переданный через aExeName пользовательский .mab, как в LogView, больше не удаляется только из-за нечитаемости, повреждения или несовместимости. После сбоя cache остаётся fallback к .map или .dbg.

Публичный API

  • TDebugFile.Createbehaviour-changed — Нечитаемый MAB сохраняется, а не удаляется до fallback-загрузки символов.

Модули

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

3 Высокий После platform merge сходятся пути сборки BSD, FPC и Android Follow-up использует CPUAARCH64 для CPU_ARCH_TEXT, задаёт pointer для PosixStatFS на обоих компиляторах, выбирает Android st_ino через DELPHIPOSIX, исправляет conditional socket syntax и FPC shift cast, а getifaddrs загружает через LibraryOpen/LibraryResolve. Компилятор и платформы mormot.core.os+4 e68dce4a+17-20

all: some fixes after #598

Влияние

Объединённые изменения Delphi Android и размера socket FreeBSD правильно компилируются на POSIX targets Delphi/FPC. Android использует поле file identifier своей RTL, а FPC больше не зависит здесь от прямых объявлений dlopen.

Публичный API

  • PosixStatFSsignature-changed — Параметр Info теперь имеет тип pointer и в FPC, и в Delphi, вместо PStatfs в FPC.

Arnaud Bouchez · 12:16 UTC · PR #598 · открыть коммит на GitHub →

4 Средний Lazarus package сохраняет поддержку PKCS #11 packages/lazarus/mormot2.lpk добавляет mormot.crypt.pkcs11 как item 114, сдвигает остальные элементы и увеличивает число файлов с 123 до 124. Исправления mormot.crypt.pkcs11 7b98b09a+24-20

packages: added mormot.crypt.pkcs11 to the Lazarus package

Влияние

Открытие или сборка Lazarus package больше не регенерирует mormot2.pas без mormot.crypt.pkcs11. Прямое использование unit и Delphi не затронуты.

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

Пересоберите Lazarus package и убедитесь, что mormot.crypt.pkcs11 остаётся в сгенерированном umbrella unit.

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

5 Средний UNIX socket addresses используют нативный размер FreeBSD TSockAddrUnix использует sun_path размером 104 bytes на платформах с sun_len и 108 bytes на остальных. SOCKADDR_SIZE следует этому layout, а TNetAddr.Size и SetFamily явно обрабатывают AF_UNIX. Исправления mormot.net.sock+1 b6262622+22-9

net: fixed TSockAddrUnix size for FreeBSD

Влияние

FreeBSD и другие targets с sun_len больше не передают увеличенный sockaddr_un buffer и не возвращают общий storage size для AF_UNIX. Layout Linux и Windows не меняется.

Публичный API

  • SOCKADDR_SIZEbehaviour-changed — Публичная константа равна 106 вместо 110 на платформах, где socket record содержит sun_len.

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

6 Средний Caller symbols добавляются без heap allocation TDebugFile.AppendCallerShort захватывает до 62 raw frames, удаляет дубликаты и добавляет resolved locations в ShortString. RawStackTrace используется вместе со StackTrace и защищает от intercepted exceptions при обходе frames в Delphi и FPC. Новые возможности mormot.core.log 19b48603+186-111

core: new TDebugFile.AppendCallerShort method

Влияние

Logging и diagnostic code получает компактные caller locations в FPC и Delphi без создания RawUtf8 result. Качество symbols по-прежнему зависит от .map, .gdb или .mab.

Публичный API

  • TDebugFile.AppendCallerShortadded — Новая class procedure добавляет aSkip/aDepth resolved stack locations в переданную ShortString.

Модули

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

7 Средний TSynLog entries без текста определяют caller на всех targets TSynLog.Enter с aMethodName=nil и TSynLog.Log(Level) вызывают TDebugFile.AppendCallerShort до writer lock. LogEnter принимает заранее вычисленный PShortString location, а прежний Delphi-only address capture удалён. Новые возможности mormot.core.log fc996116+74-145

core: TSynLog.Enter/Log with no text nor method name will use caller info

Влияние

При наличии debug data FPC logs получают тот же caller symbol context, что и Delphi. Вызовы без текста выполняют stack capture и могут писать больше данных, поэтому hot logging paths следует измерить.

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

Проверьте вызовы Enter и Log без текста, подтвердите необходимость нового caller text и измерьте частые пути с production debug artifacts.

Публичный API

  • TSynLog.Enterbehaviour-changed — При aMethodName=nil теперь запускается TDebugFile caller resolution и в FPC, и в Delphi.
  • TSynLog.Logbehaviour-changed — Overload только с level теперь добавляет resolved caller location, если он доступен.

Модули

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

8 Низкий POSIX host records соответствуют нативному типу C Внутреннее объявление hostent.h_length меняется с TSockLen на cint в соответствии с C ABI. Комментарий sockaddr_dl уточнён без изменения layout. Компилятор и платформы mormot.net.sock.posix de2e5034+4-4

net: minor cleanup after latest PR

Влияние

Bindings разрешения имён POSIX используют нативный integer type в FPC и Delphi. API приложений и поведение Windows не меняются.

Arnaud Bouchez · 08:02 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