<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel>
  <title>mORMot2 Daily</title>
  <link>https://mormot2daily.fsb.dev</link>
  <description>Daily read of upstream commits</description>
  <language>en</language>
  <lastBuildDate>Tue, 13 Oct 2026 20:21:36 +0000</lastBuildDate>
  <item>
    <title>2026-10-13 — RSA получает FIPS-свидетелей, исправлены дефекты AES-GCM и баз данных</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-13.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-13</guid>
    <pubDate>Tue, 13 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Главная тема выпуска — большая серия исправлений корректности, соответствия стандартам и производительности RSA: fixed-width encoding и более строгие проверки PKCS#1/PSS дополнены NIST DRBG и выбором свидетелей Miller-Rabin по FIPS 186-5. Также исправлены partial blocks AES-GCM, переносы x86, проверка ECC-ключей, ожидание timer и несколько граничных случаев PostgreSQL/SQLite. Пользователям публичного TBigInt нужно учесть изменение сигнатуры IsPrime и новые методы.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17586 со всей серией compliance и optimization для RSA.&lt;/li&gt;&lt;li&gt;TBigInt.IsPrime теперь принимает TAesPrngAbstract вместо PLecuyer; прямые callers должны мигрировать.&lt;/li&gt;&lt;li&gt;RSA выдаёт fixed-width значения, а PKCS#1/PSS отвергает неканонические и неверные encoding.&lt;/li&gt;&lt;li&gt;AES-GCM корректно обрабатывает частичные AVX-блоки и состояние после Clone/Reset.&lt;/li&gt;&lt;li&gt;Исправлены пустые строки PostgreSQL, чтение BOOLINT и удаление thread-safe соединений.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-12 — TTunnelLocal переходит на аутентифицированный AES-GCM с раздельными ключами</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-12.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-12</guid>
    <pubDate>Mon, 12 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;TTunnelLocal получает новую security-схему: AES-CTR заменён аутентифицированными кадрами AES-GCM, ключи приёма и передачи разделены, session включена в authentication, а повреждённые handshakes отклоняются раньше. Также исправлены associated data в OpenSSL GCM, утечка binary cookie и разбор __Secure- cookies после пробела. Для Delphi 2010 отключён небезопасный inline.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Используйте build 2.4.17551: за security rewrite TTunnelLocal сразу следуют три hardening fixes.&lt;/li&gt;&lt;li&gt;Шифрованный трафик TTunnelLocal теперь использует AES-GCM, authenticated frames и разные ключи приёма/передачи.&lt;/li&gt;&lt;li&gt;Код с tlmVersion1 нужно перевести на tlmVersion1_aesctr или новый tlmVersion2.&lt;/li&gt;&lt;li&gt;TAesGcmOsl теперь корректно аутентифицирует AEAD associated information.&lt;/li&gt;&lt;li&gt;TBinaryCookieGenerator больше не теряет managed state при уничтожении после invalidation.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-11 — Лимиты redirects унифицированы, а ожидание POSIX-процессов завершается вовремя</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-11.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-11</guid>
    <pubDate>Sun, 11 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;HTTP-клиенты теперь одинаково применяют RedirectMax в WinHTTP и libcurl, используют более строгую политику downgrade в WinHTTP и включают TLS 1.3 на поддерживаемых версиях Windows. POSIX RunRedirect больше не ждёт весь polling delay после закрытия stdout дочерним процессом. Пользователям ARM также нужен последующий fix нормализации DoubleToAscii.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Используйте build 2.4.17538 со всеми fixes для redirects, TLS и DoubleToAscii.&lt;/li&gt;&lt;li&gt;TWinHttp и TCurlHttp теперь соблюдают RedirectMax, а не используют его только как переключатель.&lt;/li&gt;&lt;li&gt;POSIX RunRedirect возвращается после выхода дочернего процесса без ожидания заданной задержки чтения.&lt;/li&gt;&lt;li&gt;WinHTTP предлагает TLS 1.3 на Windows 11 и Windows Server 2022 или новее.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-10 — HTTP-клиенты и WebSocket стабилизированы после широкой оптимизации ECC</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-10.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-10</guid>
    <pubDate>Sat, 10 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;В этом выпуске закрыты несколько проблем жизненного цикла HTTP.sys WebSocket и исправлена обработка response headers в WinINet, WinHTTP, HTTP-клиенте Delphi и libcurl. Эта же серия переписывает многие арифметические пути ECC P-256 для ARM, i386 и x86-64 и восстанавливает сборку Delphi 7/2007 и Delphi POSIX. Пользователям POSIX Kerberos также нужно учесть два изменения публичных сигнатур keytab.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Используйте build 2.4.17531: в нём завершена серия исправлений HTTP headers и все последующие compatibility fixes.&lt;/li&gt;&lt;li&gt;Build 2.4.17513–2.4.17515 содержит отдельный token fixme в mormot.core.base и не должен использоваться.&lt;/li&gt;&lt;li&gt;TServerSspiKeyTab.PrepareKeyTab теперь возвращает boolean, а ServerForceKeytab принимает RawUtf8 вместо TFileName.&lt;/li&gt;&lt;li&gt;Очистка HTTP.sys WebSocket, idle callbacks, учёт ping и обработка failed send переработаны в семи commits.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-09 — Атомики FPC ARM получают порядок памяти, HTTP.sys WebSockets перестраиваются</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-09.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-09</guid>
    <pubDate>Fri, 09 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;В выпуске исправлены отсутствующие барьеры памяти в блокировках mORMot для FPC ARM и AArch64: защищённые данные могли конфликтовать, хотя слово блокировки оставалось взаимно исключающим. В Windows обработка запросов и WebSocket в HTTP.sys существенно переписана и затем стабилизирована для жизненного цикла соединений, overlapped I/O, отправки, завершения и ping. Прямым пользователям низкоуровневых HTTP.sys wrappers и индексов соединений THttpApiWebSocketServerProtocol нужна миграция исходников.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Операции блокировок FPC ARM и AArch64 теперь задают полные барьеры памяти; прежний код мог терять обновления или повреждать общее состояние.&lt;/li&gt;&lt;li&gt;Движок HTTP.sys правильно принимает unlimited chunked bodies, разрывает соединения с непрочитанным телом после ошибки и изолирует состояние каждого запроса.&lt;/li&gt;&lt;li&gt;Управление HTTP.sys WebSocket теперь использует ID TLockedList, отдельные overlapped-записи чтения/пробуждения и защищённое завершение.&lt;/li&gt;&lt;li&gt;THttpServerRequest.FullUrl теперь RawUtf8, HttpApiRequest удалён, а несколько низкоуровневых HTTP.sys signatures изменены.&lt;/li&gt;&lt;li&gt;optCleanMagicJson удаляет JSON_BASE64_MAGIC из SOA-ответов; добавлены SetErrorText, HtmlEscapeShortVar и TLockedList.Find.&lt;/li&gt;&lt;li&gt;Переходите на build 2.4.17497; не оставайтесь на переходных HTTP.sys builds 2.4.17464–2.4.17496.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-08 — Маршрутизация proxy стабилизирована, ошибка подкласса WebSocket исправлена</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-08.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-08</guid>
    <pubDate>Thu, 08 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;В этом выпуске расширены обнаружение и обход proxy для socket- и REST-клиентов, затем исправлены маршрутизация redirect, учёт proxy credentials, socket layers и проверка URI. Добавлены WebSocket factories с options, а финальный build устраняет регрессию подкласса в legacy overloads. Прямые вызовы GetProxyForUri теперь должны передавать TUri вместо RawUtf8.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;GetProxyForUri теперь принимает TUri вместо RawUtf8, поэтому прямые вызовы требуют миграции исходного кода.&lt;/li&gt;&lt;li&gt;HTTP_PROXY, HTTPS_PROXY, NO_PROXY, Windows bypass lists и REST ProxyName теперь участвуют в выборе маршрута socket-клиента.&lt;/li&gt;&lt;li&gt;Cross-origin redirects, смена proxy credentials и non-TCP reconnect теперь выбирают правильный маршрут и socket layer.&lt;/li&gt;&lt;li&gt;Новые overloads THttpClientWebSockets.WebSocketsConnect принимают TUri и THttpRequestExtendedOptions; build 2.4.17462 исправляет dispatch подклассов в legacy overloads.&lt;/li&gt;&lt;li&gt;RemoveMagicFromJson удаляет JSON_BASE64_MAGIC в начале JSON-строк, не меняя обычные строки.&lt;/li&gt;&lt;li&gt;Переходите на build 2.4.17462 и не останавливайтесь на builds 2.4.17450–2.4.17461.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-07 — HTTP-автоматы стабилизированы, а закрытие Unix-клиента больше не удаляет сокет сервера</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-07.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-07</guid>
    <pubDate>Wed, 07 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Этот сетевой выпуск завершает крупную переработку HTTP-клиентов и таймаутов, а затем исправляет обнаруженные регрессии конструкторов, proxy, WebSocket и native backends. HTTP framing теперь отделяет семантику ответа HEAD от тела запроса, Windows HTTP.sys принимает chunked uploads и повторные заголовки аутентификации или cookie, а POSIX-клиент при закрытии больше не удаляет Unix-domain socket сервера.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;POSIX Unix-domain clients no longer unlink the server socket path when they close.&lt;/li&gt;&lt;li&gt;HTTP.sys now accepts chunked request bodies and preserves repeated Set-Cookie and authentication headers.&lt;/li&gt;&lt;li&gt;HEAD and OPTIONS handling now follows message framing; redirected 301 POST and 303 requests also discard their old bodies.&lt;/li&gt;&lt;li&gt;THttpRequestExtendedOptions.GetTimeouts is replaced by ComputeTimeouts, THttpRequest.InternalConnect loses its parameters, and TCrtSocket.ReOpen no longer accepts a timeout.&lt;/li&gt;&lt;li&gt;TRestHttpClientGeneric connection-definition parsing no longer risks an infinite loop.&lt;/li&gt;&lt;li&gt;Land on final build 2.4.17433 rather than an intermediate build from this refactor sequence.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-06 — Асинхронное завершение закрывает утечки, а HTTP-таймауты разделены по фазам</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-06.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-06</guid>
    <pubDate>Tue, 06 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Это значимый сетевой выпуск. Асинхронные серверы, туннели и RTSP-over-HTTP получили согласованное исправление владения и завершения, а TSynThreadPool устранил гонку, из-за которой работа в очереди могла остаться без пробуждения. HTTP-клиенты получили отдельные таймауты подключения, отправки и приёма, а серверная Kerberos-аутентификация объединена в кроссплатформенном wrapper с удалением одного публичного метода.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;TSynThreadPool now clears a worker&amp;#x27;s processing state under the pending-queue lock, preventing a queued task from being stranded by a wake-up race.&lt;/li&gt;&lt;li&gt;Async socket, tunnel and RTSP-over-HTTP cleanup now closes file descriptors and transferred connections on failure and shutdown paths.&lt;/li&gt;&lt;li&gt;TCrtSocket and HTTP clients now expose separate connect, send and receive timeouts; use 0, not a negative value, when requesting legacy fallback on a live TCrtSocket.&lt;/li&gt;&lt;li&gt;TServerSspiKeyTab.ComputeServerHeader is removed; migrate direct callers to KerberosServerAuthHeader and prepare a POSIX keytab explicitly when required.&lt;/li&gt;&lt;li&gt;Delphi users should land on build 2.4.17398, which repairs compilation after the timeout constructor refactor.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-05 — Тесты RTSP-over-HTTP больше не делят порты прослушивания</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-05.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-05</guid>
    <pubDate>Mon, 05 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Это спокойный выпуск, затрагивающий только тесты. Два варианта регрессионного теста RTSP-over-HTTP теперь получают разные пары портов RTSP и HTTP; production units и public API не меняются.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;RTSPOverHTTP использует порты 3997/3996, а RTSPOverHTTPBufferedWrite сохраняет 3999/3998.&lt;/li&gt;&lt;li&gt;Изменение ограничено test.net.proto и не требует изменений в приложениях Delphi или FPC.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-04 — Исправлены привязка массивов PostgreSQL и конкурентное ожидание</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-04.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-04</guid>
    <pubDate>Sun, 04 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;PostgreSQL batch больше не сериализует неиспользованную ёмкость массивов и не теряет конечные quotes, устраняя явный сбой и тихое изменение данных. TPipeStream теперь возвращает EOF при достижении объявленного размера, а финальный POSIX poll сохраняет timeout при сигналах и временной нехватке ресурсов. Учёт thread pool стал атомарным; остальные commits добавляют общий task pool и расширяют конкурентные тесты.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17369 в 913a072a26c0305bc468a79b658137de5f7d124b.&lt;/li&gt;&lt;li&gt;Связанные массивы PostgreSQL теперь учитывают ValuesCount и сохраняют значения с одной или несколькими quotes в конце.&lt;/li&gt;&lt;li&gt;TPipeStream.Read больше не ждёт бесконечно, когда последний block заканчивается точно на объявленном размере stream.&lt;/li&gt;&lt;li&gt;Повторы POSIX poll сохраняют фактический timeout и единообразно обрабатывают EINTR, EAGAIN и POLLNVAL.&lt;/li&gt;&lt;li&gt;Учёт pending task в TSynThreadPool стал атомарным, включая сбой постановки в IOCP и wake-up ожидающих потоков.&lt;/li&gt;&lt;li&gt;Новые helpers TSynThreadTasks и TSynTestCase упрощают постоянные общие test workers.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-03 — Проверка AES-GCM восстановлена, Tunnel и очереди переработаны</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-03.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-03</guid>
    <pubDate>Sat, 03 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Самое срочное исправление возвращает проверку GMAC в AVX-путь расшифровки AES-GCM, который на подходящих x86-64 системах мог принимать поддельные ciphertext, tag или associated data. Жизненный цикл, handshake и shutdown Tunnel переработаны: внешние вызовы вынесены из блокировок, а владелец детерминированно управляет thread. Ожидание очередей и thread pool получает OS futex и новые API, затем обязательные исправления для Delphi, Win8+ и Linux.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17356 в 1f7febd219f9cb54175a1f87620e6862e4e670b8.&lt;/li&gt;&lt;li&gt;TAesGcmEngine.Decrypt теперь проверяет GMAC после AVX single-pass; тесты отклоняют поддельные ciphertext, tag и AAD.&lt;/li&gt;&lt;li&gt;TTunnelLocal владеет worker и выполняет join, явно передаёт socket и вызывает relay callback вне state lock.&lt;/li&gt;&lt;li&gt;TSynQueue использует OS futex, добавляет WaitPopReset и Waiters, а ожидание с сравнением сохраняет polling.&lt;/li&gt;&lt;li&gt;TSynThreadTasks, PendingTasks и WaitFor добавляют управляемые задачи и ожидание завершения; финальные исправления охватывают Delphi, Win8+ и Linux.&lt;/li&gt;&lt;li&gt;Исправлены data descriptor ZIP в памяти, завершение REST WebSocket callback и запуск THttpApiServer.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-02 — Deadlock в WebSocket устранён, TLS и логирование исключений стабилизированы</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-02.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-02</guid>
    <pubDate>Fri, 02 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Async WebSocket broadcast и RTSP forwarding больше не отправляют данные под connection read lock, устраняя deadlock при удалении peer после failed write. SChannel трактует корректное закрытие во время отправки как closed connection и завершает поддержку TLS 1.3 renegotiation. Исправлен перехват исключений между потоками, в Delphi Win32 и Delphi POSIX, а AVX-512 detection теперь проверяет сохранение ZMM state операционной системой.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17324 в 05e40cd692d391efb62ed97f78f264867477e8e5.&lt;/li&gt;&lt;li&gt;TWebSocketAsyncServer.WebSocketBroadcast и TPostConnection.OnRead больше не deadlock при удалении соединения после failed send.&lt;/li&gt;&lt;li&gt;SChannel send возвращает nrClosed при корректном shutdown, а receive path обрабатывает TLS 1.3 SEC_I_RENEGOTIATE.&lt;/li&gt;&lt;li&gt;Concurrent exceptions больше не теряются, дубли Delphi Win32 подавлены, Delphi POSIX получил interception.&lt;/li&gt;&lt;li&gt;IntelAvx512 стал вычисляемой при запуске переменной с фильтром XCR0; cpuAVX512 обозначает включённый OS уровень x86-64-v4.&lt;/li&gt;&lt;li&gt;Windows http.sys WebSocket regression test для issue #418 отключён из-за нестабильности на Windows 11.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-10-01 — SChannel получает нативный mTLS, а гонки запуска серверов устранены</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-10-01.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-10-01</guid>
    <pubDate>Thu, 01 Oct 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Windows-серверы теперь могут требовать и проверять клиентские сертификаты через SChannel, используя существующие trust stores и callbacks TNetTlsContext. Вторая серия исправляет создание HTTP и async servers: главные потоки не запускаются до готовности sockets, workers и перекрёстных ссылок. Командам с Windows mTLS или созданием серверов под нагрузкой следует брать финальную build.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17294 в de8d47ea7122b30aa81296a1e5e899a3909e34b1.&lt;/li&gt;&lt;li&gt;SChannel servers реализуют mTLS через ClientCertificateAuthentication, CACertificatesFile, CASystemStores, CACertificatesRaw, OnEachPeerVerify и OnAfterPeerValidate.&lt;/li&gt;&lt;li&gt;Потоки HTTP и async servers остаются suspended до инициализации sockets, workers и owner links.&lt;/li&gt;&lt;li&gt;Обновитесь ради исправления CACertificatesRaw, явной ошибки отсутствующего client certificate и финальных правок SChannel declarations/cache.&lt;/li&gt;&lt;li&gt;В public API добавлены acoCreateSuspended, ConsoleLock/ConsoleUnLock и WinCryptTextToBinary.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-30 — Windows CNG и PKCS#11 расширены, исправлены дефекты безопасности JSON и сокетов</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-30.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-30</guid>
    <pubDate>Wed, 30 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;В этом крупном криптографическом выпуске появился backend хранилища сертификатов Windows CNG, завершено расшифрование RSA-envelope через ключи CNG и PKCS#11 и исправлена длинная серия проблем импорта, подписи и жизненного цикла PKCS#11. Также устранено чтение за границами при JSON-логировании, ограничен socket retry, исправлен session cookie за reverse proxy и разделены HTTP connect/send/receive timeouts.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17268 в 80bc2689df777dadbe1f8af745096eeb13205ef7.&lt;/li&gt;&lt;li&gt;Добавьте mormot.crypt.win в uses, если код обращается к TAesAbstractApi или его CryptoAPI AES-потомкам: они перенесены из mormot.crypt.core.&lt;/li&gt;&lt;li&gt;Windows получает TCryptCertAlgoCng, ICryptCertCng и TCryptCertCng.LoadPkcs12 для store, smart-card/KSP и временных PFX identities.&lt;/li&gt;&lt;li&gt;PKCS#11 получает RSA-envelope decryption и больше алгоритмов подписи, но TPkcs11 больше не thread-safe; общий каталог защищайте TCryptCertAlgoPkcs11.Lock/UnLock.&lt;/li&gt;&lt;li&gt;Обновитесь ради исправлений TJsonWriter.AddEscapeBuffer over-read, бесконечного TCrtSocket.TrySockRecv retry, GPF в CNG/PKCS#11 и OpenSSL ABI.&lt;/li&gt;&lt;li&gt;THttpClientSocket.SetTimeouts разделяет connect, send и receive budgets; TRestHttpClientSocket применяет все три.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-29 — SChannel включает TLS 1.3, а поддержка Windows CNG складывается в целое</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-29.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-29</guid>
    <pubDate>Tue, 29 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Эта Windows-серия меняет протокольную политику SChannel по умолчанию, разделяет server credentials между принятыми HTTPS-соединениями и добавляет крупную поддержку CNG, certificate store и msLAPS. Финальные commits также чинят Delphi 7/13, обходят CNG-заглушки Wine и исправляют ownership закрытых ключей.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17208 в 18e7d88c0083b279402c59019c030abdfe39e3e1.&lt;/li&gt;&lt;li&gt;SChannelEnableTls13 теперь по умолчанию true на Windows 11 и Windows Server 2022 или новее; задайте false до инициализации, если такое включение не планировалось.&lt;/li&gt;&lt;li&gt;HTTPS-серверы на SChannel получают один общий server credential и держат его до освобождения последнего принятого TLS context.&lt;/li&gt;&lt;li&gt;TNetTlsContext передаёт SChannel PCCERT_CONTEXT или защищённый паролем PFX, а ReleaseBuffers освобождает неактивные SChannel buffers.&lt;/li&gt;&lt;li&gt;Новые TNCrypt, TWinCertStore и TWinCertCngKey открывают CNG keys, certificate stores, signing, unprotect secrets и расшифровку msLAPS.&lt;/li&gt;&lt;li&gt;Wine обходит свои CNG-заглушки, а Delphi 7 и Delphi 13 получают явные исправления компиляции.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-28 — Срок жизни script engine сохраняет полный диапазон минут</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-28.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-28</guid>
    <pubDate>Mon, 28 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Однострочное исправление арифметики предотвращает переполнение больших значений TThreadSafeManager.EngineExpireTimeOutMinutes при переводе в миллисекунды. Windows SChannel server также включает системную ошибку в exception, когда сертификат не удаётся выбрать из store. Pools с очень долгим сроком жизни script engine следует обновить; TLS change влияет только на диагностику.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на upstream head 5a1509b805bcdc7f239c683bd0e68ab9700c1247, build 2.4.17189.&lt;/li&gt;&lt;li&gt;EngineExpireTimeOutMinutes теперь переводит минуты в миллисекунды через Int64, исключая 32-bit overflow для больших значений.&lt;/li&gt;&lt;li&gt;При сбое поиска SChannel certificate ESChannel теперь содержит текст и код Windows error вместо общего сообщения.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-26 — URI redirects стабилизированы, heartbeat и sessions восстановлены</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-26.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-26</guid>
    <pubDate>Sat, 26 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;URI stack переписан по RFC 3986 с разрешением relative Location и стабилизирован к build 2.4.17187 до применения в HTTP redirects. Production получает successor fix отключённых async WebSocket heartbeats, корректные Signed URI и REST session timeouts, безопасный startup/shutdown proxy cache и опциональную direct IOCP write на Windows. Внешние вызовы ESynSspi.RaiseLastOSError требуют миграции.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на head 215c7bbd240419735ad7e89f5d35ddc9cfeb8b4d, build 2.4.17187, с завершённой URI/redirect серией.&lt;/li&gt;&lt;li&gt;Build 2.4.17171 восстанавливает async WebSocket heartbeat callbacks, отключённые прежним idle-loop сравнением.&lt;/li&gt;&lt;li&gt;Порядок Signed URI timestamps и REST session timeout исправлены для долгих процессов и 32-bit rollover.&lt;/li&gt;&lt;li&gt;Windows proxy cache получил direct IOCP writes и защиту от startup/background-deletion races.&lt;/li&gt;&lt;li&gt;Замените внешние вызовы ESynSspi.RaiseLastOSError на ESynSspi.RaiseSspiError.&lt;/li&gt;&lt;li&gt;Избегайте 2.4.17162–2.4.17170 для heartbeat и 2.4.17176–2.4.17186 для незавершённой URI серии.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-25 — SChannel и HTTP caches стабилизированы, но heartbeat регрессировал</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-25.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-25</guid>
    <pubDate>Fri, 25 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Windows SChannel получает исправления concurrency, handshake, renegotiation и памяти; HTTP clients — опциональные ограничения redirect, а оба proxy caches — корректную обработку статусов. Async WebSocket heartbeat переведён на HeartbeatDelay, но две последующие правки оставили сравнение, отключающее callbacks после стандартного порога освобождения памяти. Внешние реализации INetTls и код с удалённым LastOperationIdleSeconds требуют миграции.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на head c94dba6c18f6a0c5b225734af210da678cc59167, build 2.4.17161, для завершённых исправлений SChannel, redirect и cache.&lt;/li&gt;&lt;li&gt;Async WebSocket heartbeat callbacks отключаются после стандартного idle-memory threshold; временно задайте LastOperationReleaseMemorySeconds = 0.&lt;/li&gt;&lt;li&gt;Внешние реализации INetTls должны добавить ReleaseBuffers, а LastOperationIdleSeconds нужно заменить на GetLastOperationIdleSeconds.&lt;/li&gt;&lt;li&gt;THttpRequestExtendedOptions.RedirectOptions добавляет опциональную очистку cross-origin credentials и запрет redirects при прежнем default.&lt;/li&gt;&lt;li&gt;Proxy cache теперь отвергает неверные GET statuses, прерывает progressive readers при ошибке и проверяет размер файла.&lt;/li&gt;&lt;li&gt;Избегайте build 2.4.17143 и незавершённых redirect builds 2.4.17159–2.4.17160.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-24 — TLS-backends стабилизированы после полного цикла исправлений</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-24.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-24</guid>
    <pubDate>Thu, 24 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;OpenSSL и Windows SChannel получают большой набор исправлений callbacks, certificate policy, async I/O, shutdown и error reporting. Внешние ORM-вставки безопасно прекращаются при ошибке SELECT max(ID), а fallback allocator SQLite восстанавливает alignment для Android ARM64. Это production batch: берите финальный head, не промежуточные TLS builds.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на upstream head 34c5672df4ab31378524d2868b8482b408eafbdd, build 2.4.17135.&lt;/li&gt;&lt;li&gt;Ошибка max-ID во внешнем ORM возвращает 0 и отменяет insert вместо duplicate ID с единицы.&lt;/li&gt;&lt;li&gt;OpenSSL получает связанные исправления callbacks, mTLS authorities, async retries, passwords, SNI и shutdown.&lt;/li&gt;&lt;li&gt;SChannel переписан для buffered async I/O, затем исправлен в handshake, TLS 1.3, shutdown, ClientHello и final errors.&lt;/li&gt;&lt;li&gt;Fallback allocator SQLite использует 16-byte header для alignment Android ARM64 atomic access.&lt;/li&gt;&lt;li&gt;Избегайте 2.4.17117 и серий OpenSSL 2.4.17083–2.4.17113 и SChannel 2.4.17119–2.4.17134.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-23 — История исключений переписана, OpenSSL получил ещё одно I/O-исправление</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-23.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-23</guid>
    <pubDate>Wed, 23 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Путь перехвата исключений существенно переписан после обнаружения случайного GPF и небезопасной memory/threading-модели в прежнем хранилище последних исключений. Финальная версия исправляет newest-first выдачу и хранит ограниченный stack для каждого исключения. OpenSSL получает два завершающих исправления Send/Receive retry и setup errors, а FPC — улучшенный stack capture и починку deterministic seed на ARM32.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17082 в 03ab5c85c4b2982c96b7f38d683dbff85e016f77.&lt;/li&gt;&lt;li&gt;GetLastException и GetLastExceptions используют защищённое кольцо из 16 записей с отдельной копией stack для каждого исключения.&lt;/li&gt;&lt;li&gt;OpenSSL повторяет только WANT_READ/WANT_WRITE, ограничивает ожидание пятью секундами и не применяет SSL_get_error к setup failures.&lt;/li&gt;&lt;li&gt;Публичный class method TDebugFile.AddLog удалён; внешние вызовы нужно перевести на оставшиеся location или StackTrace API.&lt;/li&gt;&lt;li&gt;KEEP_STACKFRAMES сохраняет project stack-frame settings, главным образом для FPC POSIX debugging, с документированной потерей производительности.&lt;/li&gt;&lt;li&gt;FPC Windows использует захваченный RTL exception stack, а FPC ARM32 получает стабильное QWord-хранилище для TLecuyer.SeedGenerator.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-22 — TLS-проверка, безопасное форматирование и мобильная сеть Delphi готовы</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-22.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-22</guid>
    <pubDate>Tue, 22 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Пользователям OpenSSL следует взять всю transport-последовательность: перекрёстные socket retries, проверку hostname по умолчанию и очистку error queue в OpenSSL 1.x/3.x. В одной build регрессия FormatAdder могла писать через неверный адрес при пустом результате. Delphi Android/iOS получают System.Net HTTP backends, Delphi ARMv7 становится рабочим, а TXmlParser принимает простые DOCTYPE без загрузки DTD entities.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17065 в 743a53fd4cb3af700463b0d143581ce17c6c8b31.&lt;/li&gt;&lt;li&gt;OpenSSL clients проверяют ServerAddress при пустом HostNamesCsv; OpenSSL 1.x/3.x очищает старые ошибки перед connect, accept, read и write.&lt;/li&gt;&lt;li&gt;Избегайте 2.4.17025–2.4.17063 с незавершёнными OpenSSL retries и 2.4.17047 с overflow-путём FormatAdder для пустого вывода.&lt;/li&gt;&lt;li&gt;Delphi Android/iOS могут использовать TDelphiNetHttp, TRestHttpClientDelphiNet и TSqlDBDelphiNetConnectionProperties через TLS операционной системы.&lt;/li&gt;&lt;li&gt;Delphi Android ARMv7 получает ABI stubs, выравнивание packed fields при JSON и variadic-call support.&lt;/li&gt;&lt;li&gt;TXmlParser по умолчанию игнорирует простой внешний DOCTYPE; для строгого отказа используйте xpoRejectDocType, internal subsets не поддерживаются.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-21 — Async OpenSSL handshakes корректно повторяются, а TSynLog сокращает write lock</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-21.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-21</guid>
    <pubDate>Mon, 21 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Неблокирующие клиенты и серверы на OpenSSL теперь повторяют SSL_connect и SSL_accept после WANT_READ или WANT_WRITE вместо fatal error. Финальный commit сохраняет первый результат SSL_get_error, чтобы реальный сбой handshake сообщал правильную причину. TSynLog также выносит сбор stack trace и system information за пределы writer lock, уменьшая contention ценой большего per-thread state и ограниченных suffixes.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17024 в 13c7b4dd94b23c25d51e5b0ab9b6e207cb039207.&lt;/li&gt;&lt;li&gt;OpenSSL TLS handshakes на async sockets теперь повторяют WANT_READ и WANT_WRITE до пяти секунд.&lt;/li&gt;&lt;li&gt;Избегайте builds 2.4.17020–2.4.17023: новый retry loop повторно вызывает SSL_get_error при финальной ошибке; 2.4.17024 передаёт сохранённый код.&lt;/li&gt;&lt;li&gt;TSynLog предварительно формирует настроенные stack traces и system information до захвата per-writer lock.&lt;/li&gt;&lt;li&gt;Thread record TSynLog растёт на 320 bytes; stack-trace suffix ограничен 255 bytes, system-information suffix — 63.&lt;/li&gt;&lt;li&gt;AppendSysInfo — новый публичный helper, добавляющий system information без очистки существующей ShortString.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-20 — Анализ логов сохраняет MAB-файлы и получает cross-platform caller tracing</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-20.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-20</guid>
    <pubDate>Sun, 20 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;В этой редакции усилены прежде всего инструменты вокруг TSynLog, без изменения backend-протоколов. Чтение логов больше не падает на пустых profiler data или выборе plain text, а TDebugFile не удаляет нечитаемый внешний .mab-файл. FreeBSD, FPC и Android получают socket/POSIX compatibility fixes, а поиск caller symbol теперь работает через TDebugFile на всех поддерживаемых компиляторах.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17019 в fc996116ae8a2534c5e763ac180649cdb78013ab.&lt;/li&gt;&lt;li&gt;TDebugFile.Create больше не удаляет нечитаемый внешний .mab-файл, переданный как aExeName.&lt;/li&gt;&lt;li&gt;TSynLogFile и TSynLogFileView безопасно обрабатывают логи без sllEnter, plain-text строки для clipboard и пустой level filter.&lt;/li&gt;&lt;li&gt;Размер UNIX-domain socket для FreeBSD и последующие FPC, BSD и Android compilation fixes завершены в финальной build.&lt;/li&gt;&lt;li&gt;Добавлен TDebugFile.AppendCallerShort; TSynLog.Enter или Log без текста теперь определяет caller и в FPC, и в Delphi.&lt;/li&gt;&lt;li&gt;Lazarus package теперь сохраняет mormot.crypt.pkcs11 при регенерации mormot2.pas.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-19 — POSIX sockets переживают signals, а TSynLog меняет format ABI</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-19.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-19</guid>
    <pubDate>Sat, 19 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Это крупная cross-platform серия. POSIX socket waits, accept и I/O теперь повторяют EINTR без продления deadlines, а Delphi AArch64 получает interface dispatch, late-bound variants и правильно выровненный time cache. TSynLog намеренно меняет formatted API с PUtf8Char на RawUtf8 и добавляет pre-rendering вне lock; берите финальные fixes, поскольку build 2.4.16999 может выйти за 4KB stack buffer.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.17002 в 4ef9dc663bbf00ad1920c83a7274e3676610b37f.&lt;/li&gt;&lt;li&gt;Не развёртывайте build 2.4.16999: formatted log около 4KB с instance prefix может выйти за TSynLog stack buffer.&lt;/li&gt;&lt;li&gt;Переведите format parameters TSynLogProc, Log, DoLog, Enter, EnterLocal и ManualEnter с PUtf8Char на const RawUtf8.&lt;/li&gt;&lt;li&gt;POSIX socket I/O, poll, epoll и accept теперь повторяют EINTR с сохранением finite deadlines; используйте завершённую серию, а не промежуточные builds 2.4.16947–2.4.16964.&lt;/li&gt;&lt;li&gt;Delphi AArch64 получает DispInvoke и interface calls на Android/iOS, а alignment lock GlobalTime исправлен.&lt;/li&gt;&lt;li&gt;Delphi POSIX исправляет startup hang ordinal resources и перепутанный decode short/long resourcestring.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-18 — Блокировки на каждый writer внедрены вместе с обязательными исправлениями fallback</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-18.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-18</guid>
    <pubDate>Fri, 18 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;TSynLog заменяет общую для процесса блокировку записи отдельной блокировкой каждого writer, снижая contention, но одновременно выявляя пути отказа, исправленные позднее в той же серии. Прямые пользователи TX64CpuFeatures должны убрать ссылки на cpuSSSE3, а поддерживаемые x86-64 цели теперь автоматически выбирают SSSE3 parser чисел JSON. Просмотрщики логов, диагностические инструменты и вызовы AppendShortByteHex также получают конкретные исправления и улучшения API.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.16943 в 0b26918230d72e33b79365a79c1bc444ec3029b1; избегайте незавершённой серии TSynLog в builds 2.4.16937–2.4.16941.&lt;/li&gt;&lt;li&gt;TSynLog теперь сериализует запись отдельно для каждого logger вместо одной глобальной блокировки, уменьшая contention между независимыми логами.&lt;/li&gt;&lt;li&gt;Build 2.4.16942 исправляет пути отказа Enter, EnterLocal и ManualEnter, появившиеся после рефакторинга блокировок.&lt;/li&gt;&lt;li&gt;TX64CpuFeatures.cpuSSSE3 удалён; для проверки возможности используйте cfSSSE3 в CpuFeatures.&lt;/li&gt;&lt;li&gt;Поддерживаемые non-PIC x86-64 цели Delphi и FPC теперь автоматически выбирают GetNumericVariantSsse3 для чисел JSON.&lt;/li&gt;&lt;li&gt;Поиск в обычных текстовых TSynLogFile снова работает, а AppendShortByteHex безопасно принимает PtrUInt больше 255.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-17 — Устранён deadlock запуска логов, стабилизированы TLS 1.3 и POSIX</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-17.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-17</guid>
    <pubDate>Thu, 17 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;При ошибке создания файла лог мог рекурсивно записываться через неинициализированный writer и оставлять SynLogGlobalLock захваченным, блокируя все последующие logging threads. Выпуск также завершает настройку cipher suites TLS 1.3, исправляет возврат Currency через interface dispatch в FPC POSIX и устраняет busy loop на /dev/null под systemd. POSIX-код, напрямую вызывающий WaitReadPending, должен учесть новый integer-результат, а пользователям низкоуровневого x86-64 numeric parser следует проверить переименованные SSSE3 entry points.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.16922 в cdb7dad52a6989d41ce8405a15d26928e0829ca2; она включает финальные исправления логов и завершения Linux.&lt;/li&gt;&lt;li&gt;TSynLog больше не блокирует все logging threads при ошибке создания файла с включённым exception logging.&lt;/li&gt;&lt;li&gt;Backends OpenSSL теперь настраивают TLS 1.3 через TNetTlsContext.CipherSuites и SSL_CTX_set_ciphersuites.&lt;/li&gt;&lt;li&gt;Interface dispatch FPC POSIX теперь возвращает Currency через x87 FP0, а не обрабатывает его как binary64-результат.&lt;/li&gt;&lt;li&gt;WaitReadPending теперь возвращает -1, 0 или 1 в POSIX; прямые вызовы должны заменить boolean-проверку явным сравнением.&lt;/li&gt;&lt;li&gt;Повторно используемые THttpRequestContext теперь очищают AcceptEncoding, не перенося предпочтения сжатия в следующий запрос.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-16 — SSSE3-парсинг чисел появился в Delphi и FPC вместе с исправлениями границ</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-16.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-16</guid>
    <pubDate>Wed, 16 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Главное изменение — общий x86-64 assembly-путь для GetExtended и GetNumericVariantFromJson на целях Delphi и FPC с SSSE3, со scalar fallback и расширенной матрицей regression tests. Последующие commits исправляют parsing MIN_INT64 с дробью и согласованность FP80. В отчёт о версии macOS добавлен Golden Gate, но первая версия сопоставления kernel исправлена позднее в том же выпуске, поэтому production следует переходить на build 2.4.16897, а не на промежуточную build.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.16897; до финального head серия numeric assembly получает исправления MIN_INT64 и FP80.&lt;/li&gt;&lt;li&gt;GetExtended и GetNumericVariantFromJson теперь используют SSSE3 assembly на поддерживаемых целях Delphi Win64 и FPC Win64/Linux x86-64.&lt;/li&gt;&lt;li&gt;Build 2.4.16888 исправляет parsing -9223372036854775808.0 в путях Pascal и x86-64 assembly.&lt;/li&gt;&lt;li&gt;Отдельный путь FP80 сохраняет 64-битную точность мантиссы, а build 2.4.16891 согласует signed результаты вне диапазона.&lt;/li&gt;&lt;li&gt;MacKernel и metadata Golden Gate — публичные добавления; builds 2.4.16892–2.4.16895 используют неверное сопоставление Darwin, исправленное в 16896.&lt;/li&gt;&lt;li&gt;GetInteger и GetCardinal теперь обрабатывают две цифры за цикл без изменения публичных signatures.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-15 — Числовые парсеры Pascal переписаны вокруг более быстрых целочисленных путей</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-15.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-15</guid>
    <pubDate>Tue, 15 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Pascal-реализации GetExtended и GetNumericVariantFromJson теперь проводят обычные целые числа и короткие десятичные значения через более компактные циклы, сохраняя проверки длинных мантисс, экспонент и границ Int64. Тесты GetExtended также явно фиксируют нормализацию знака нуля и несколько дробей длиной 18–20 цифр. Миграция signature не требуется, но приложениям, зависящим от точного типа numeric variant или граничного поведения floating point, следует проверить build 2.4.16865.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.16865 и проведите regression tests числовых преобразований, зависящих от точного variant type или граничного округления.&lt;/li&gt;&lt;li&gt;Pascal-путь GetExtended вне Win32 был дважды упрощён: отдельные быстрые циклы обрабатывают первые 18 цифр, продолжение с проверкой overflow, дроби и экспоненты.&lt;/li&gt;&lt;li&gt;Pascal-путь GetExtended теперь намеренно нормализует -0 и -0e400 в числовой ноль, как зафиксировано новыми тестами.&lt;/li&gt;&lt;li&gt;GetNumericVariantFromJson разворачивает первые цифры и переписывает выбор Int64, Currency и Double без изменения публичной signature.&lt;/li&gt;&lt;li&gt;mormot.core.base добавляет публичную константу MIN_INT64 и overlay member TSynVarData.VPtrInt.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-14 — Исправлены принадлежность DHCP REQUEST и parsing коротких чисел</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-14.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-14</guid>
    <pubDate>Mon, 14 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;DHCP server теперь точнее соблюдает состояние client и правила выбора server: NAK frames очищены, запросы к другому server игнорируются, а устаревшие static address отклоняются. Последующее исправление не позволяет принимать malformed address option за реальное значение IPv4. Кроме того, GetExtended больше не читает четыре байта из некорректного ввода длиной один или два символа, поэтому сервисам, разбирающим недоверенный числовой текст, следует взять этот выпуск.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на build 2.4.16861; builds 2.4.16857–2.4.16859 могут принять malformed DHCP options 50 или 54 за реальные адреса.&lt;/li&gt;&lt;li&gt;GetExtended теперь отклоняет короткие некорректные tokens до четырёхбайтовой проверки NAN/INF, предотвращая возможное чтение за пределами переданного текста.&lt;/li&gt;&lt;li&gt;DHCP REQUEST, чей server-identifier указывает на другой server, игнорируется и учитывается новой метрикой dsmDroppedOtherServer.&lt;/li&gt;&lt;li&gt;Client, явно запросивший адрес, который больше не совпадает с его static reservation, теперь получает NAK вместо renewal ACK.&lt;/li&gt;&lt;li&gt;DHCPNAK frames исключают lease, network, boot и rule options, сохраняют chaddr пакета и передаются broadcast при отсутствии relay.&lt;/li&gt;&lt;li&gt;DhcpIP4 теперь возвращает ноль для отсутствующих или malformed четырёхбайтовых options, завершая новые проверки REQUEST без ложных NAK или drop.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
  <item>
    <title>2026-09-13 — Десятичный parser получил точное IEEE-округление после регрессии нуля</title>
    <link>https://mormot2daily.fsb.dev/edition/2026-09-13.html</link>
    <guid isPermaLink="false">mormot2-daily-2026-09-13</guid>
    <pubDate>Sun, 13 Sep 2026 07:00:00 +0000</pubDate>
    <description>&lt;p&gt;Этот выпуск продолжает стабилизацию числовых преобразований и исправляет заметные в production ошибки в обоих направлениях. DoubleToAscii теперь корректно обрабатывает научную нотацию и округление sticky bit на 64-bit, а GetExtended принимает граничные exponent и округляет обычные десятичные дроби до ближайшего IEEE double. GetNumericVariantFromJson также восстанавливает числовую обработку 0.0, поэтому backend, обменивающимся JSON numbers или сохраняющим floating-point значения как текст, следует взять всю серию.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Переходите на commit c9eff241 в build 2.4.16851: он включает финальный merge десятичного округления после последнего увеличения номера версии.&lt;/li&gt;&lt;li&gt;GetNumericVariantFromJson снова разбирает 0.0 и дробные формы из одних нулей как числовой ноль вместо отказа числового преобразования.&lt;/li&gt;&lt;li&gt;GetExtended и GetNumericVariantFromJson теперь возвращают ближайший IEEE double для обычных дробей вроде 1.2, а не значение на один ULP выше.&lt;/li&gt;&lt;li&gt;DoubleToAscii исправляет пунктуацию научной нотации и применяет округление sticky bit на CPU64, улучшая точное преобразование floating-point значений в текст и обратно.&lt;/li&gt;&lt;li&gt;Путь GetExtended вне WIN32DELPHI теперь обрабатывает границы минимального subnormal и максимального конечного double без преждевременной ошибки.&lt;/li&gt;&lt;/ul&gt;</description>
  </item>
</channel></rss>
