mORMot2 DailyLecture quotidienne des commits upstream

Les sockets POSIX survivent aux signaux tandis que TSynLog change son ABI de format

Cette série cross-platform est volumineuse. Les attentes, accept et I/O socket POSIX reprennent après EINTR sans allonger les deadlines, tandis que Delphi AArch64 gagne le dispatch d’interfaces, les variants late-bound et un cache temporel bien aligné. TSynLog remplace volontairement PUtf8Char par RawUtf8 dans ses API formatées et pré-rend hors verrou ; prenez les correctifs finaux car la build 2.4.16999 peut dépasser son buffer stack de 4 Ko.

En bref

  • Visez la build 2.4.17002 au commit 4ef9dc663bbf00ad1920c83a7274e3676610b37f.
  • Ne déployez pas la build 2.4.16999 : un log formaté proche de 4 Ko avec instance peut dépasser le buffer stack TSynLog.
  • Migrez les paramètres de format TSynLogProc, Log, DoLog, Enter, EnterLocal et ManualEnter de PUtf8Char vers const RawUtf8.
  • Les I/O socket POSIX, poll, epoll et accept reprennent après EINTR en conservant les deadlines ; prenez la séquence complète plutôt que les builds 2.4.16947 à 2.4.16964.
  • Delphi AArch64 gagne DispInvoke et les appels d’interface sur Android/iOS, avec correction de l’alignement du verrou GlobalTime.
  • Delphi POSIX corrige le blocage des ressources ordinales au démarrage et le décodage inversé des resourcestring courtes/longues.

Conseil de mise à jour

Visez la build 2.4.17002. Évitez 2.4.16947 à 2.4.16964, où les corrections POSIX EINTR, timeout et connexion async restent incomplètes ; 2.4.16954 régresse le reporting des timeouts. Ne déployez jamais 2.4.16999 : une ligne TSynLog formatée avec instance peut dépasser le buffer stack de 4 Ko ; 2.4.17000 corrige ce défaut. Migrez callbacks et wrappers vers RawUtf8, recompilez chaque cible Delphi/FPC, puis testez les signaux, les connexions en échec, les logs proches de 4 Ko, les ressources Delphi POSIX et les appels AArch64.

Build2.4.16943 → 2.4.17002
Commits59
Lignes+7434 -629
Lecture10 min

51 sur 51 entrées · 59 commits upstream

Sujets
# Entrée Catégorie Unités
1 Critique Le buffer de pré-rendu des logs ne peut plus déborder TSynLogFamily.PreRenderFmt soustrait le préfixe d’instance de la capacité 4 Ko, et l’overload Unicode Log fournit maintenant son buffer stack. Correctifs mormot.core.log 99d189cc+7-4

core: fixed TSynLog latest commits

Impact

Build 2.4.16999 pouvait écrire au-delà du buffer stack pour une ligne proche de 4 Ko avec instance. Build 2.4.17000 supprime ce risque de corruption et rétablit la compilation Unicode.

Arnaud Bouchez · 16:40 UTC · voir le commit sur GitHub →

2 Élevée Les overloads formatés TSynLog.Enter passent aussi à RawUtf8 Les overloads formatés Enter, EnterLocal et ManualEnter remplacent PUtf8Char par const RawUtf8 et partagent le pré-rendu 4 Ko. Ruptures mormot.core.log 5b05ee28+46-29

core: BREAKING CHANGE TSynLog.Enter Format is RawUtf8

Impact

Les wrappers de trace typés PUtf8Char ou variables d’overload ne compilent plus ; les appels RawUtf8 et littéraux restent directs.

Migration nécessaire

Recherchez les wrappers formatés Enter, EnterLocal et ManualEnter en PUtf8Char et passez leurs formats à RawUtf8.

API publique

  • TSynLog.Enter / EnterLocalsignature-changed — Les overloads formatés prennent const RawUtf8.
  • TSynLog.ManualEntersignature-changed — L’overload formaté prend const RawUtf8.

Arnaud Bouchez · 16:26 UTC · voir le commit sur GitHub →

3 Élevée Les API TSynLog formatées prennent maintenant RawUtf8 TSynLogProc, TSynLog.Log, TSynLog.DoLog et leur formatter interne remplacent PUtf8Char par const RawUtf8. Ruptures mormot.core.base+1 1bde88e2+13-13

core: BREAKING CHANGE TSynLog Format text is now RawUtf8

Impact

Les littéraux restent souvent compatibles, mais les callbacks, method variables et appels PUtf8Char doivent passer à RawUtf8.

Migration nécessaire

Recherchez TSynLogProc et les callbacks avec format PUtf8Char ; passez-les à const RawUtf8 et convertissez les appels par pointeur.

API publique

  • TSynLogProcsignature-changed — Le paramètre Format est const RawUtf8.
  • TSynLog.Log / TSynLog.DoLogsignature-changed — Les overloads formatés acceptent const RawUtf8.

Arnaud Bouchez · 16:06 UTC · voir le commit sur GitHub →

4 Élevée POSIX reprend systématiquement les I/O stream et datagram après EINTR Les méthodes Send, Recv, SendTo et RecvFrom passent dans les includes de plateforme ; POSIX reprend les syscalls interrompus et Windows garde WinSock direct. Correctifs mormot.net.sock+2 7e5228a5+159-87

net: fixed POSIX signals interception for Send/Recv/SendTo/RecvFrom

Impact

Le trafic socket Linux/BSD échoue moins sous les signaux, en TCP comme en UDP. Windows et les signatures publiques restent inchangés.

Arnaud Bouchez · 08:37 UTC · voir le commit sur GitHub →

5 Élevée Les constantes MSG_NOSIGNAL sont corrigées sur les systèmes POSIX mormot.net.sock.posix corrige MSG_NOSIGNAL pour Darwin, FreeBSD, NetBSD, DragonFlyBSD, OpenBSD et Solaris, sans changer Linux/Android. Correctifs mormot.net.sock.posix e8264e1b+21-23

net: fixed cross-platform MSG_NOSIGNAL definitions

Impact

Les envois socket sur BSD/Solaris demandent maintenant le bon comportement no-SIGPIPE au lieu d’un flag incorrect.

Arnaud Bouchez · 14:31 UTC · voir le commit sur GitHub →

6 Élevée La connexion non bloquante renvoie la vraie erreur de fin TNetAddr.SocketConnect remplace une boucle de 50 ms par WaitFor puis SO_ERROR, gère les connexions async en attente et renomme GetSocketError en GetRawSocketError. Correctifs mormot.net.sock 04130d2b+15-22

net: fixed TNetAddr.SocketConnect error handling

Impact

Les échecs TCP ne sont plus pris pour un succès writable, et les appelants async reçoivent nrOk pendant l’attente. Les utilisateurs du nom intermédiaire doivent le renommer.

API publique

  • TNetSocketWrap.GetSocketErrorrenamed — Renommé GetRawSocketError.

Arnaud Bouchez · 09:56 UTC · voir le commit sur GitHub →

7 Élevée Les attentes socket conservent leur deadline après les signaux POSIX PollNoEintr enveloppe poll, reprend après EINTR et recalcule le timeout restant ; TNetSocketWrap.WaitFor l’utilise au lieu de traiter EINTR comme un timeout. Correctifs mormot.net.sock.posix 989e6d5b+28-4

net: fixed POSIX EINTR for TNetSocketWrap.WaitFor

Impact

Les clients et serveurs POSIX ne sortent plus trop tôt et n’allongent plus indéfiniment les attentes finies après un signal. Windows n’est pas affecté.

Arnaud Bouchez · 08:46 UTC · voir le commit sur GitHub →

8 Élevée accept et accept4 reprennent après interruption Le helper POSIX doaccept reprend accept4/accept après EINTR, préserve les descriptors non bloquants et ne marque accept4 unsupported que pour ENOSYS/EOPNOTSUPP. Correctifs mormot.net.sock.posix 109cf3c5+19-13

net: fixed accept/accept4 POSIX signals support

Impact

La livraison d’un signal ne produit plus de faux échec accept sur POSIX, et les anciens kernels gardent un fallback correct.

Arnaud Bouchez · 08:52 UTC · voir le commit sur GitHub →

9 Élevée Les constantes socket BSD correspondent aux headers natifs Les définitions POSIX corrigent NI_NUMERIC*, les flags poll write, le keepalive FreeBSD, l’interface cellulaire Darwin et ARPOP_InREPLY. Correctifs mormot.net.sock.posix 6949ac17+21-11

net: fixed POSIX cross-platform constants for various BSD flavors

Impact

Le réseau FreeBSD, NetBSD, DragonFlyBSD, OpenBSD, Darwin et Solaris utilise les bons numéros natifs au lieu de valeurs orientées Linux.

Arnaud Bouchez · 14:58 UTC · voir le commit sur GitHub →

10 Élevée Les anciens kernels passent correctement de accept4 à accept doaccept mémorise errno, sort sur erreur fatale accept4 et passe à accept après ENOSYS/EOPNOTSUPP ; les I/O POSIX testent directement cerrno. Correctifs mormot.net.sock.posix 29c8bebb+14-11

net: fixed POSIX accept4 -> accept fallback

Impact

Les systèmes Linux sans accept4 utilisable ne restent plus sur le chemin unsupported et exécutent bien le fallback listener.

Arnaud Bouchez · 09:04 UTC · voir le commit sur GitHub →

11 Élevée SocketConnect change de mode seulement après une attente réussie TNetAddr.SocketConnect garde la socket async pendant WaitForWithRawSocketError, convertit nrRetry en nrTimeout et appelle MakeBlocking seulement après succès. Correctifs mormot.net.sock 1d878f7f+9-14

net: fixed TNetAddr.SocketConnect

Impact

La fin de connexion POSIX/Windows est vérifiée sans passer trop tôt en mode bloquant, évitant les blocages et respectant le mode demandé.

Arnaud Bouchez · 11:59 UTC · voir le commit sur GitHub →

12 Élevée Les échecs d’entrée TSynLog gardent timing et scope cohérents TSynLog initialise le timing dans son constructeur, transmet MicroSecs via LogEnterFmt et fait renvoyer nil par EnterLocal si LockAndPrepareEnter échoue. Correctifs mormot.core.log e4c69cc1+12-9

core: some TSynLog.Enter fixes on error

Impact

Un démarrage ou une rotation en échec ne laisse plus un faux scope réussi, et les pointeurs de timing manuel reçoivent le timestamp attendu.

Arnaud Bouchez · 06:38 UTC · voir le commit sur GitHub →

13 Élevée Les connexions TCP immédiates rétablissent le mode bloquant Quand connect réussit immédiatement, TNetAddr.SocketConnect appelle MakeBlocking pour ms >= 0 et laisse les appels ms = -1 asynchrones. Correctifs mormot.net.sock+1 496af189+9-4

net: fixed TNetAddr.SocketConnect immediate connection

Impact

Les clients Delphi/FPC synchrones ne reçoivent plus une socket non bloquante sur le chemin de connexion immédiate.

Arnaud Bouchez · 10:07 UTC · voir le commit sur GitHub →

14 Élevée Les noms de ressource entiers ne bloquent plus le démarrage Delphi POSIX TExecutableResource.Open et ResourceExists rejettent sous Delphi POSIX les pointeurs MAKEINTRESOURCE inférieurs à $10000 avant leur conversion en chaîne par la RTL. Correctifs mormot.core.os a21c2edb+8-0

core: fixed startup hang of Delphi POSIX apps using integer resource names

Impact

Les applications Delphi Linux, macOS, Android et iOS évitent une boucle GPF/stack overflow au démarrage ; les ressources ordinales restent non prises en charge.

Stefan Diestelmann · 08:30 UTC · voir le commit sur GitHub →

15 Élevée Les verrous GlobalTime sont alignés sous Delphi AArch64 Le record du cache GlobalTime n’est plus packed, assurant l’alignement de TRWLightLock ; les assertions ultérieures tolèrent le padding du compiler. Correctifs mormot.core.datetime b8eaea86+6-1

core: fixed unaligned GlobalTime[] breaking its lock on Delphi aarch64

Impact

Les applications Delphi AArch64, notamment iOS, évitent les access violations des instructions atomiques sur adresse impaire. Les autres compilers gardent la même sémantique.

Stefan Diestelmann · 08:34 UTC · voir le commit sur GitHub →

16 Élevée Une régression de timeout socket est réparée PollNoEintr rétablit result := 0 à l’expiration, et TNetSocketWrap.WaitFor sort avant de lire des revents périmés. Correctifs mormot.net.sock.posix 8187f47f+5-2

net: fixed TNetSocketWrap.WaitFor timeout regression

Impact

Les attentes POSIX renvoient de nouveau un timeout propre au lieu d’interpréter un état poll périmé. Cette réparation est indispensable à la refonte précédente.

Arnaud Bouchez · 09:23 UTC · voir le commit sur GitHub →

17 Élevée Les resourcestring Delphi POSIX utilisent le bon layout LoadResString teste ShortLen <> $ffff pour le layout court ; $ffff sélectionne maintenant correctement le record resourcestring long de la RTL Delphi. Correctifs mormot.core.os.delphi 2b55dc23+1-1

core: fixed swapped short/long resourcestring layout on Delphi POSIX

Impact

Les applications Delphi POSIX chargent les resourcestring courtes et longues depuis les bons champs au lieu d’un texte corrompu ou inversé.

Stefan Diestelmann · 08:31 UTC · voir le commit sur GitHub →

18 Élevée Delphi Android et iOS gagnent des stubs d’interface AArch64 statiques mormot.core.interfaces lie des stubs AArch64 externes, passe les résultats by-reference via X8 et utilise des thunks statiques là où iOS interdit les pages exécutables générées. Nouveautés mormot.core.interfaces+1 0d9880b7+319-2

interfaces: external aarch64 stubs for the Delphi Android and iOS compilers

Impact

Interface services et fake dispatch deviennent utilisables sous Delphi Android/iOS AArch64, y compris sur iOS signé. macOS et Windows ARM64 restent hors de cette implémentation.

Stefan Diestelmann · 08:42 UTC · voir le commit sur GitHub →

19 Élevée DispInvoke comprend les varargs Delphi AArch64 mormot.core.variants ajoute des lecteurs va_list AAPCS64 et Apple AArch64 afin que DispInvokeNamed récupère les arguments selon chaque ABI. Nouveautés mormot.core.variants+1 ea847060+90-13

variants: implemented DispInvoke late-binding on Delphi aarch64

Impact

Late-bound variant fonctionne maintenant sous Delphi Android, Linux, iOS et macOS AArch64 au lieu d’un layout incompatible.

Stefan Diestelmann · 08:36 UTC · voir le commit sur GitHub →

20 Moyenne LogView normalise le layout de chaque client distant TRemoteLogNormalizer réécrit les lignes calendrier, zonées, haute résolution ou texte dans un layout unique et attribue des threads uniques par connexion HTTP. Correctifs mormot.tools.logview+1 6a02c38a+500-40

tools: LogView remote logging with any client layout - fix #344

Impact

Les logs live de clients aux layouts TSynLog différents deviennent tous visibles et filtrables. Le changement reste limité à LogView et à sa capture distante.

Sven Harazim · 16:38 UTC · PR #344 · voir le commit sur GitHub →

21 Moyenne La disponibilité socket gère explicitement les signaux POSIX TNetSocketWrap.Available reçoit des implémentations POSIX et Windows séparées ; POSIX MSG_PEEK reprend après EINTR et conserve errno. Correctifs mormot.net.sock+2 b0bbdf13+94-59

net: fixed TNetSocketWrap.Available on POSIX

Impact

Les contrôles de connexion ne classent plus un peek POSIX interrompu comme socket fermée. Le comportement Windows reste identique.

Arnaud Bouchez · 09:38 UTC · voir le commit sur GitHub →

22 Moyenne Les envois et réceptions UDP reprennent après EINTR sous POSIX TNetSocketWrap.SendTo et RecvFrom répètent sendto et recvfrom sous POSIX lorsque errno vaut EINTR, sans changer Windows. Correctifs mormot.net.sock 389ef677+27-8

net: fixed EINTR on TNetSocketWrap.SendTo/RecvFrom

Impact

Les services Linux et BSD riches en signaux ne signalent plus d’échec UDP transitoire dû seulement à une interruption syscall. Les signatures ne changent pas.

Arnaud Bouchez · 07:53 UTC · voir le commit sur GitHub →

23 Moyenne epoll_ctl reprend après EINTR et les boucles de timeout sont resserrées EpollCtlNoEIntr enveloppe epoll_ctl pour subscribe/unsubscribe, et les boucles poll/epoll s’arrêtent quand le timeout recalculé atteint zéro. Correctifs mormot.net.sock.posix 99bc19a1+15-17

net: fixed EINTR in TPollSocketEpoll and poll/epoll timeouts

Impact

Linux subscriptions résistent aux signaux, mais cette build intermédiaire omet un reset du résultat timeout rétabli ensuite ; ne restez pas sur 2.4.16954.

À regarder

Arnaud Bouchez · 09:18 UTC · voir le commit sur GitHub →

24 Moyenne Les tests de reachability utilisent des connexions async vérifiées GetReachableNetAddr utilise SocketConnect(-1), WaitForWithRawSocketError et MakeBlocking, ferme les sockets en échec et s’arrête sans candidat. Correctifs mormot.net.sock a74fa349+22-10

net: rewritten GetReachableNetAddr() function

Impact

Le probing ne considère plus comme reachable une socket writable avec SO_ERROR en attente, améliorant la sélection d’endpoint.

Arnaud Bouchez · 12:00 UTC · voir le commit sur GitHub →

25 Moyenne L’alignement AArch64 et le nettoyage Tunnel reçoivent des correctifs Les assertions GlobalTime tolèrent le padding, les commentaires resource sont clarifiés et TTunnelLocal.OpenInternal initialise thread avant les exceptions. Correctifs mormot.core.datetime+2 ce3a81b8+11-17

core: some fixes after previous commits

Impact

Cela supprime un risque d’assertion au démarrage Delphi AArch64 et évite des diagnostics indéfinis si Tunnel échoue avant la création du thread.

Arnaud Bouchez · 12:28 UTC · voir le commit sur GitHub →

26 Moyenne Les attentes epoll gardent aussi leur timeout après EINTR EpollWaitNoEintr reprend epoll_wait après EINTR et soustrait le temps écoulé avant la reprise de TPollSocketEpoll.WaitForModified. Correctifs mormot.net.sock.posix 9c8515b0+24-3

net: fixed EINTR support on TPollSocketEpoll.WaitForModified

Impact

Les serveurs epoll Linux respectent leur deadline et ne remontent pas les interruptions comme événements manquants. Les API ne changent pas.

Arnaud Bouchez · 09:03 UTC · voir le commit sur GitHub →

27 Moyenne La découverte MAC distante survit aux envois ARP interrompus GetRemoteMacAddress reprend son sendto ARP après EINTR, et les helpers poll/epoll initialisent explicitement leurs deadlines. Correctifs mormot.net.sock.posix 3af914ac+14-12

net: fixed EINTR support on GetRemoteMacAddress()

Impact

La recherche MAC par ARP sous Linux ne se perd plus à cause d’un signal. Les autres plateformes et API ne changent pas.

Arnaud Bouchez · 09:43 UTC · voir le commit sur GitHub →

28 Moyenne Les échecs Tunnel conservent leur contexte socket TTunnelLocalThread inclut l’erreur accept brute, et TTunnelLocal.OpenInternal logue classe, message, thread et socket avant nettoyage. Correctifs mormot.net.tunnel 93ac7a4a+13-7

net: enhanced Tunnel error handling

Impact

Les échecs Tunnel deviennent diagnostiquables et ferment toujours la socket partielle. Le protocole et les signatures ne changent pas.

Arnaud Bouchez · 12:01 UTC · voir le commit sur GitHub →

29 Moyenne Les recherches XML absolues déplacent volontairement le parser TXmlParser.GetU renvoie false pour nil, préserve la position pour les chemins relatifs et //, mais un chemin / absolu rewind et reste au résultat ; GetI suit ce comportement. Correctifs mormot.core.fmt 9dc38579+15-5

core: refined TXmlParser.GetU/GetI process

Impact

Le code qui attendait une restauration après GetU('/...') ou GetI('/...') observe maintenant un curseur déplacé et doit revoir sa séquence.

À regarder

Recherchez les GetU/GetI avec chemin absolu et utilisez Save/Restore si la position doit survivre.

API publique

  • TXmlParser.GetU / GetIbehaviour-changed — Les chemins absolus laissent le parser au résultat.

Arnaud Bouchez · 14:49 UTC · voir le commit sur GitHub →

30 Moyenne L’interception SIGPIPE utilise SIG_IGN et mémorise le succès SigPipeIntercept installe SIG_IGN au lieu d’un handler vide et ne pose son flag qu’après succès de fpSigaction. Correctifs mormot.core.os.posix ec6e317b+5-5

core: SigPipeIntercept() cleanup

Impact

Les processus POSIX obtiennent une suppression conventionnelle de SIGPIPE et peuvent retenter après un sigaction en échec. Les API ne changent pas.

Arnaud Bouchez · 11:57 UTC · voir le commit sur GitHub →

31 Moyenne Les ensembles socket basés sur poll ignorent EINTR sans perdre le temps TPollSocketPoll.WaitForModified et WaitForSeveral appellent maintenant PollNoEintr et conservent leur timeout fini malgré les signaux. Correctifs mormot.net.sock.posix e637b45f+4-4

net: fixed TPollSocketPoll.WaitForModified / WaitForSeveral EINTR support

Impact

Les backends poll POSIX ne renvoient plus un résultat vide ou erroné à cause d’un signal. Les API ne changent pas.

Arnaud Bouchez · 08:53 UTC · voir le commit sur GitHub →

32 Moyenne LogView revient comme outil desktop Lazarus Une nouvelle application LCL mormot.tools.logview ouvre, filtre, recherche et profile les fichiers TSynLog, SynLZ et texte brut, avec layout DPI et file d’attente distante. Nouveautés mormot.tools.logview 307a9fb7+2162-0

tools: port the mORMot 1 LogView sample as a FPC/Lazarus LCL app

Impact

Les backends ne changent pas ; les utilisateurs FPC/Lazarus gagnent un viewer maintenu, avec traitement sûr des logs distants dans le thread UI.

Sven Harazim · 15:54 UTC · voir le commit sur GitHub →

33 Moyenne OpenSSL 4 supprime SIGPIPE par socket SSLSetFdNoSigPipe utilise BIO_C_SET_SEND_FLAGS avec NET_MSG_NOSIGNAL sous OpenSSL 4+, avec fallback SigPipeIntercept pour OpenSSL 1.1/3.x. Nouveautés mormot.core.os+2 a413d047+67-20

lib: use new OpenSSL 4+ BIO_C_SET_SEND_FLAGS for MSG_NOSIGNAL

Impact

Les applications POSIX avec OpenSSL 4 ne changent plus SIGPIPE pour tout le processus. Les anciennes versions gardent le comportement historique.

À regarder

Arnaud Bouchez · 14:19 UTC · voir le commit sur GitHub →

34 Moyenne Les callbacks de log distant peuvent identifier leur émetteur TRestHttpRemoteLogServer ajoute CreateWithSender et TRemoteLogReceivedFrom, avec ID de connexion et IP distante ; les callbacks sont affectés avant le démarrage HTTP. Nouveautés mormot.rest.http.server e29490aa+30-7

rest: TRestHttpRemoteLogServer.CreateWithSender

Impact

Les utilisateurs de Create gardent leur callback. Les nouveaux viewers Delphi/FPC distinguent les émetteurs simultanés et les requêtes initiales ne rencontrent plus un callback absent.

API publique

  • TRemoteLogReceivedFromadded — Callback avec ID de connexion et IP distante.
  • TRestHttpRemoteLogServer.CreateWithSenderadded — Crée un serveur de log distant avec identification de l’émetteur.

Sven Harazim · 16:38 UTC · voir le commit sur GitHub →

35 Moyenne Les sockets exposent leur résultat SO_ERROR TNetSocketWrap ajoute GetSocketError, interroge SOL_SOCKET/SO_ERROR et convertit la valeur en TNetResult ; Delphi POSIX expose aussi SO_ERROR. Nouveautés mormot.core.os.delphi+1 a299fb59+22-2

net: new TNetSocketWrap.GetSocketError method

Impact

Низкоуровневый код Delphi/FPC может правильно проверять завершение async connect, но это промежуточное имя далее меняется на GetRawSocketError.

API publique

  • TNetSocketWrap.GetSocketErroradded — Nom intermédiaire, renommé ensuite GetRawSocketError.

Arnaud Bouchez · 09:48 UTC · voir le commit sur GitHub →

36 Moyenne Un helper combine attente de connexion et SO_ERROR TNetSocketWrap.WaitForWithRawSocketError attend les événements write/error puis renvoie GetRawSocketError, avec nrRetry si aucun événement. Nouveautés mormot.net.sock 07c8080b+16-2

net: new TNetSocketWrap.WaitForWithRawSocketError method

Impact

Le code de connexion async personnalisé peut réutiliser le même contrôle correct que SocketConnect. Les appelants existants ne changent pas.

API publique

  • TNetSocketWrap.WaitForWithRawSocketErroradded — Attend la fin socket et lit SO_ERROR.

Arnaud Bouchez · 11:59 UTC · voir le commit sur GitHub →

37 Moyenne Accept peut renvoyer l’erreur socket brute TNetSocketWrap.Accept ajoute une sortie rawError optionnelle transmise à NetLastError, tout en gardant les appels à trois arguments grâce à nil par défaut. Nouveautés mormot.core.os.posix+1 e8de6bf7+7-9

net: enhanced TNetSocketWrap.Accept()

Impact

Les serveurs peuvent journaliser errno exact derrière un échec accept sans casser les appels Delphi/FPC existants.

API publique

  • TNetSocketWrap.Acceptsignature-changed — Ajoute rawError: PNetErrorInt = nil optionnel.

Arnaud Bouchez · 11:58 UTC · voir le commit sur GitHub →

38 Moyenne Le texte d’instance est pré-calculé avec la ligne de log TSynLogFamily.PreRenderFmt écrit maintenant le préfixe classe/pointeur de l’instance dans le même buffer stack avant le verrou. Performance mormot.core.log a6bb53dc+31-21

core: pre-compute the TSynLog instance pointer text if possible

Impact

Les logs multithread avec instance réduisent encore le verrou, mais cette version calcule mal l’espace restant et est réparée en 2.4.17000.

À regarder

Arnaud Bouchez · 16:33 UTC · voir le commit sur GitHub →

39 Moyenne Le texte formaté du log est rendu avant le verrou TSynLog pré-rend jusqu’à 4 Ko sur la stack hors du verrou, remplace les contrôles et ajoute TSynLogFamily.DirectRendering pour revenir au rendu sous verrou. Performance mormot.core.log ab869875+29-4

core: pre-render formatted text up to 4KB on stack outside of the TSynLog lock

Impact

Les services multithread réduisent le temps sous verrou. Les arguments object/interface gardent le slow path et DirectRendering préserve les writers personnalisés.

À regarder

Benchmarkez les logs intensifs et activez DirectRendering si un writer personnalisé dépend du rendu sous verrou.

API publique

  • TSynLogFamily.DirectRenderingadded — Désactive le nouveau fast path de pré-rendu 4 Ko.

Arnaud Bouchez · 16:07 UTC · voir le commit sur GitHub →

40 Moyenne Android moderne trouve ICU sans libicudata La détection ICU Android essaie libicuuc.so et libicui18n.so quand libicudata.so est absent, puis résout les symboles versionnés ou non. Compilateur & plateforme mormot.core.os.posix 36796d3c+11-1

core: enhanced ICU detection on modern Android

Impact

Les versions Android actuelles avec ICU dans un APEX retrouvent la conversion Unicode pour les applications Delphi/FPC. Les autres cibles POSIX ne changent pas.

Stefan Diestelmann · 08:34 UTC · voir le commit sur GitHub →

41 Moyenne Le log distant utilise toujours le serveur socket portable TRestHttpRemoteLogServer choisit useHttpSocket partout au lieu de HTTP_DEFAULT_MODE, évitant l’enregistrement http.sys et un fallback dépendant des droits. Compilateur & plateforme mormot.rest.http.server 4f487ad9+5-5

rest: TRestHttpRemoteLogServer now uses useHttpSocket on all systems

Impact

Les déploiements Windows ne changent plus de backend selon les droits administrateur. Le serveur socket convient au faible nombre de clients visé.

À regarder

Sven Harazim · 10:10 UTC · voir le commit sur GitHub →

42 Faible Les échecs accept incluent l’erreur système Les boucles accept async et threadées récupèrent errno brut et ajoutent SystemErrorShort aux logs ; la blacklist n’est testée qu’après succès. Correctifs mormot.net.async+1 d59aeb92+16-11

net: enhanced accept() logged error content

Impact

Les opérateurs obtiennent un diagnostic utile sans changement public. Un accept en échec ne passe plus une adresse non initialisée à la blacklist.

Arnaud Bouchez · 12:01 UTC · voir le commit sur GitHub →

43 Faible LogView garde les colonnes clés visibles et mémorise la police LogView empêche la colonne texte de cacher heure, niveau et thread, et ajoute une taille de police persistante par clavier, molette et menu. Nouveautés mormot.tools.logview 1c454fb6+148-12

tools: LogView keeps the first columns visible and has a custom font size

Impact

Seule l’interface Lazarus LogView change ; le backend de log et les formats de fichier ne changent pas.

Sven Harazim · 19:40 UTC · voir le commit sur GitHub →

44 Faible Les caractères de contrôle peuvent être remplacés sur place mormot.core.unicode ajoute TrimControlCharsBuffer, remplaçant les octets #0 à #31 par des espaces directement dans le buffer UTF-8. Nouveautés mormot.core.unicode bcf4e877+22-2

core: new TrimControlCharsBuffer() function

Impact

Le code existant ne change pas ; les appelants gagnent un helper sans allocation utilisé par le nouveau pre-rendering TSynLog.

API publique

  • TrimControlCharsBufferadded — Remplace les contrôles ASCII par des espaces sur place.

Arnaud Bouchez · 15:55 UTC · voir le commit sur GitHub →

45 Faible La localisation courte peut omettre le fallback hexadécimal TDebugFile.FindLocationShort ajoute aNoHex, utilise PointerToHexShortVar sinon, et corrige des commentaires récents du code de log. Nouveautés mormot.core.log add4ed16+13-9

core: some logging fixes and TSynLogFile enhancement

Impact

Les appelants diagnostic peuvent demander un résultat vide sans symbole. Les appels à deux arguments gardent le fallback hexadécimal.

API publique

  • TDebugFile.FindLocationShortsignature-changed — Ajoute aNoHex: boolean = false optionnel.

Arnaud Bouchez · 19:43 UTC · voir le commit sur GitHub →

46 Faible Le texte d’un pointeur peut être écrit dans tout ShortString mormot.core.text ajoute PointerToHexShortVar, et PointerToHexShort lui délègue la conversion hexadécimale. Nouveautés mormot.core.text cd8db464+15-6

core: new PointerToHexShortVar() function

Impact

Les appelants existants ne changent pas ; le diagnostic sans allocation peut remplir directement un ShortString existant.

API publique

  • PointerToHexShortVaradded — Écrit un pointeur dans un ShortString fourni.

Arnaud Bouchez · 19:43 UTC · voir le commit sur GitHub →

47 Faible Les arguments de format peuvent être testés pour le rendu d’objets mormot.core.text ajoute VarRecHasObject pour détecter vtObject/vtInterface nécessitant TTextWriter.WriteObject. Nouveautés mormot.core.text 906a763f+18-2

core: new VarRecHasObject() function

Impact

Le helper prépare l’optimisation des logs sans changer les applications. Il est renommé VarRecNeedsWriteObject plus tard dans la série.

Arnaud Bouchez · 15:43 UTC · voir le commit sur GitHub →

48 Faible La valeur MSG_NOSIGNAL de la plateforme devient publique mormot.net.sock initialise la variable publique NET_MSG_NOSIGNAL depuis la constante plateforme pour le code socket/TLS supérieur. Nouveautés mormot.net.sock eabe6fba+7-2

net: new NET_MSG_NOSIGNAL global cross-platform constant

Impact

Les applications existantes ne changent pas ; les intégrations bas niveau peuvent lire le flag sans dupliquer les conditionnels.

API publique

  • NET_MSG_NOSIGNALadded — Copie runtime de la valeur MSG_NOSIGNAL plateforme.

Arnaud Bouchez · 14:14 UTC · voir le commit sur GitHub →

49 Faible Le formatage UTF-8 borné arrête le parsing une fois plein TFormatUtf8.InitParse reçoit MaxSize et arrête de collecter les blocs une fois la limite atteinte ; FormatBufferRaw et FormatShort passent leur capacité réelle. Performance mormot.core.text 7a04bb59+14-10

core: optimized TFormatUtf8.InitParse when a maximum size is involved

Impact

Le formatage tronqué évite de convertir les arguments ultérieurs inutiles, réduisant le travail avec la même sortie bornée.

Arnaud Bouchez · 15:25 UTC · voir le commit sur GitHub →

50 Faible Le test de format objet reçoit son nom final VarRecHasObject devient VarRecNeedsWriteObject avec un test VType byte-safe, et les commentaires TXmlParser documentent le curseur absolu. Sous le capot mormot.core.fmt+1 697af472+10-7

core: some renaming/comment with no functional change

Impact

Seul le code écrit contre le nom intermédiaire doit le renommer ; les applications antérieures n’ont aucune migration.

API publique

  • VarRecHasObjectrenamed — Le nom final est VarRecNeedsWriteObject.

Arnaud Bouchez · 16:04 UTC · voir le commit sur GitHub →

51 Faible Le suivi AArch64 ne change que style et inline Le commit corrige l’indentation, marque les helpers va_list AAPCS64 inline et ajuste le changelog Delphi 13.1. Entretien mormot.core.interfaces+1 dfac0653+7-7

core: minor change after previous PR

Impact

Il n’y a aucun impact fonctionnel ; le comportement Delphi/FPC et les API restent identiques.

Arnaud Bouchez · 13:02 UTC · voir le commit sur GitHub →

Activité upstream commits par jour · 60 derniers jours
Commits977
Jours actifs44/60
Plus chargé2026-09-30
Pic60
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