Стоит взглянутьисправление или функция, которая может пригодитьсяRaw payload содержит пять merge commits и восемь non-merge commits; ниже покрыт каждый. Маркеров superseded_by и deprecation notice нет. Файлы только с версией проигнорированы.
Анализ логов сохраняет 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 не заявляется.
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.
Рекомендуется обновиться
Обновите инструменты анализа и проверьте plain text, логи без sllEnter и снятие всех level filters.
Публичный API
TSynLogFile.SetLogProcMergedbehaviour-changed — Merged profiling для лога без sllEnter теперь оставляет пустой profiler вместо dereference пустых arrays.TSynLogFileView.GetLineForClipboardbehaviour-changed — Plain-text файлы возвращают исходную выбранную строку, а out-of-range rows — пустую строку.
Модули
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.
Рекомендуется обновиться
Обновите все инструменты, открывающие пользовательские MAB, и проверьте повреждённые и read-only inputs.
Публичный API
TDebugFile.Createbehaviour-changed — Нечитаемый MAB сохраняется, а не удаляется до fallback-загрузки символов.
Модули
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.
Рекомендуется обновиться
Для Delphi Android, FPC BSD и AArch64 используйте build 2.4.17019 и прогоните полную compile matrix вместо cherry-pick ранних platform commits.
Публичный API
PosixStatFSsignature-changed — Параметр Info теперь имеет тип pointer и в FPC, и в Delphi, вместо PStatfs в FPC.
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.
Модули
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 не меняется.
Рекомендуется обновиться
Для UNIX-domain sockets FreeBSD/BSD используйте build 2.4.17019 и повторите bind/connect с путями максимальной длины.
Публичный API
SOCKADDR_SIZEbehaviour-changed — Публичная константа равна 106 вместо 110 на платформах, где socket record содержит sun_len.
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.
Модули
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, если он доступен.
Модули
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 не меняются.