mORMot2 DailyLecture quotidienne des commits upstream

Le nettoyage de fin de thread devient automatique et change les callbacks

La fin des threads est désormais centralisée dans TThreadAbstract, avec des signatures de callbacks et de méthodes REST/ORM incompatibles au niveau source pour les applications qui les redéfinissent ou les affectent. Un correctif séparé empêche TWebSocketProtocol.SetEncryptKey de désactiver silencieusement le chiffrement lorsque aSettings vaut nil. Le démarrage des WebSockets HTTP API sous Windows, plusieurs caches partagés et des déclencheurs de nettoyage périodique reçoivent aussi des corrections de concurrence, tandis qu’une fonctionnalité fusionnée permet aux gestionnaires HTTP de diffuser un corps depuis TStream.

En bref

  • TOnNotifyThread reçoit maintenant TThreadAbstract, TSynLogFamily.OnThreadEnded est supprimé et les méthodes virtuelles REST/ORM associées utilisent TThreadAbstract.
  • TWebSocketProtocol.SetEncryptKey conserve maintenant le chiffrement avec une clé non vide et aSettings = nil.
  • L’initialisation HTTP API WebSocket est paresseuse et sérialisée ; Wine évite explicitement les chemins websocket.dll et http.sys incomplets.
  • Les gestionnaires HTTP peuvent renvoyer un TStream via SetOutStream ; les serveurs socket le diffusent, tandis que http.sys et REST-over-WebSockets le mettent en mémoire dans les limites documentées.
  • Des corrections CAS et de verrouillage évitent les travaux en double pour l’inactivité, les sessions et les purges de caches ou de connexions.

Conseil de mise à jour

Prenez la build 2.4.16737 si vous utilisez le chiffrement WebSocket avec un pointeur de paramètres nil, les WebSockets HTTP API sous Windows ou les caches partagés concernés. Recompilez les callbacks de thread et descendants REST/ORM personnalisés : TOnNotifyThread et plusieurs méthodes virtuelles exigent maintenant TThreadAbstract. Les appels directs à LockedGet32 doivent devenir LockedReset32. Le payload brut ne signale aucun successeur ultérieur dans cette édition.

Build2.4.16701 → 2.4.16737
Commits35
Lignes+1598 -392
Lecture9 min

33 sur 33 entrées · 35 commits upstream

Sujets
# Entrée Catégorie Unités
1 Élevée Les hooks de thread REST et ORM exigent maintenant TThreadAbstract Les déclarations publiques BeginCurrentThread, EndCurrentThread, OnBeginCurrentThread, OnEndCurrentThread, HttpThreadStart et HttpThreadTerminate dans mormot.rest.core, mormot.rest.server, mormot.rest.http.server et mormot.orm utilisent TThreadAbstract au lieu de TThread. Le nettoyage explicite via la famille de logs est supprimé. Ruptures mormot.orm.core+5 69869f49+33-36

rest/orm: use TOnNotifyThread new definition

Impact

Les descendants personnalisés qui redéfinissent ces méthodes virtuelles et les méthodes affectées aux hooks peuvent ne plus compiler avant de remplacer Sender par TThreadAbstract. Le nettoyage à l’exécution vient ensuite de la nouvelle classe de base.

Migration nécessaire

Recherchez les redéfinitions et callbacks BeginCurrentThread, EndCurrentThread, OnBeginCurrentThread, OnEndCurrentThread, HttpThreadStart et HttpThreadTerminate ; remplacez Sender: TThread par Sender: TThreadAbstract puis recompilez.

API publique

  • TRest.BeginCurrentThread / TRest.EndCurrentThreadsignature-changed — Sender passe de TThread à TThreadAbstract.
  • TRestOrmParent.BeginCurrentThread / TRestOrmParent.EndCurrentThreadsignature-changed — Sender passe de TThread à TThreadAbstract.

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

2 Élevée TOnNotifyThread est restreint et le callback de famille de logs supprimé mormot.core.threads change TOnNotifyThread de procedure(Sender: TThread) en procedure(Sender: TThreadAbstract). TThreadAbstract.OnThreadEnded est ajouté, mormot.core.log supprime TSynLogFamily.OnThreadEnded et le nettoyage de TLoggedThread quitte son propre DoTerminate. Ruptures mormot.core.log+1 f1f8d766+12-13

core: breaking change of TSynLogFamily.OnThreadEnded into TThreadAbstract

Impact

Les méthodes callback déclarées avec Sender: TThread ne sont plus compatibles avec TOnNotifyThread, et les références directes à TSynLogFamily.OnThreadEnded ne compilent plus. Une migration source est nécessaire en Delphi comme en FPC.

Migration nécessaire

Recherchez les affectations TOnNotifyThread et handlers Sender: TThread, passez-les à Sender: TThreadAbstract et remplacez TSynLogFamily.OnThreadEnded par TThreadAbstract.OnThreadEnded ou le nettoyage automatique de TThreadAbstract.

API publique

  • TOnNotifyThreadsignature-changed — Sender est désormais TThreadAbstract au lieu de TThread.
  • TSynLogFamily.OnThreadEndedremoved — Le nettoyage passe dans TThreadAbstract.
  • TThreadAbstract.OnThreadEndedadded — Wrapper de TSynLog.NotifyThreadEnded avec le nouveau type de callback.

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

3 Élevée LockedGet32 est renommé et peut poser atomiquement tout entier mormot.core.base remplace la fonction publique LockedGet32(Target) par LockedReset32(Target, New), avec New valant zéro par défaut. mormot.net.async adapte les deux appels des compteurs de réveil. Ruptures mormot.core.base+1 bcf834a5+9-9

core: new LockedReset32() wrapper function

Impact

Le code appelant directement LockedGet32 ne compile plus. LockedReset32 sans second argument conserve l’échange avec zéro ; le nouveau paramètre accepte aussi une autre valeur de remplacement.

Migration nécessaire

Recherchez LockedGet32 et renommez chaque appel en LockedReset32 ; passez New seulement si une valeur autre que zéro est nécessaire.

API publique

  • LockedGet32removed — Remplacée par LockedReset32.
  • LockedReset32added — Retourne atomiquement Target^ et le remplace par New, zéro par défaut.

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

4 Élevée Un pointeur de paramètres WebSocket nil ne désactive plus le chiffrement TWebSocketProtocol.SetEncryptKey dans mormot.net.ws.core ne sort plus que pour une clé vide, et non pour aSettings nil. Sans paramètres, il essaie le fichier ECDHE par défaut, puis la syntaxe complète, puis dérive une clé legacy Sha256Weak pour AES-CTR-128. Sécurité mormot.net.ws.core 57660dac+18-11

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

Impact

Auparavant, une clé non vide avec aSettings nil effaçait fEncryption puis sortait, laissant silencieusement le protocole non chiffré. Le même appel établit maintenant le chiffrement avec les valeurs de compatibilité documentées.

API publique

  • TWebSocketProtocol.SetEncryptKeybehaviour-changed — aSettings nil choisit maintenant des valeurs de compatibilité au lieu de désactiver le chiffrement.

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

5 Élevée La construction HTTP API WebSocket initialise websocket.dll sûrement THttpApiWebSocketServer.Create dans mormot.net.server appelle WebSocketApiInitialize avant de tester WebSocketApi.WebSocketEnabled. mormot.lib.winhttp charge la DLL et lie ses exports sous le verrou global réentrant ; de nouveaux tests couvrent le constructeur en premier et 16 threads concurrents. Correctifs mormot.lib.winhttp+1 41dbfbba+211-18

fix: initialize HTTP API WebSockets lazily

Impact

Un serveur HTTP API WebSocket sous Windows peut être le premier utilisateur de l’API sans lever à tort « not supported », et un premier usage concurrent ne voit pas de pointeurs de fonctions partiellement liés.

API publique

  • THttpApiWebSocketServer.Createbehaviour-changed — Initialise paresseusement l’API WebSocket avant de tester sa disponibilité.

Sven Harazim · 11:03 UTC · voir le commit sur GitHub →

6 Moyenne Le nettoyage final empêche un ancien résultat de cache de l’emporter Dans mormot.core.os, TCachedValue.Cache ne conserve le résultat d’un callback lent que si TixShr correspond encore au tick réservé avant l’appel. Le commit utilise aussi VCardinal pour TSynDictionary et simplifie du code équivalent dans mormot.rest.server, avec des commentaires dans les autres unités. Correctifs mormot.core.json+4 14d901e8+16-16

all: some refactoring after today's commits

Impact

Des appels concurrents ne peuvent plus laisser un calcul ancien et lent écraser une valeur de cache plus récente. Ce commit ne change aucune API pour le code Delphi/FPC existant.

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

7 Moyenne Le cache d’horodatage REST gagne un rafraîchissement atomique TRest.GetServerTimestamp dans mormot.rest.core utilise LockedExc32 pour choisir un seul rafraîchissement par tranche de 512 ms. Un TLightLock protège désormais les lectures et écritures du TTimeLogBits mis en cache. Correctifs mormot.rest.core ad1dcbf5+18-12

rest: made TRest.GetServerTimestamp atomic

Impact

Les requêtes REST parallèles lisent un horodatage cohérent, notamment en Delphi/FPC 32 bits où une valeur 64 bits n’est pas naturellement atomique. Aucune API applicative ne change.

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

8 Moyenne Les slots de thread recyclés réinitialisent tout leur état local TSynLog.NotifyThreadEnded dans mormot.core.log efface maintenant ThreadNumber comme marqueur de recyclage unique, tandis que InitThreadNumber remet RecursionCount et Flags à zéro avant de réaffecter un slot. ThreadBitLo reste le marqueur d’initialisation paresseuse. Correctifs mormot.core.log 35d353c9+13-9

core: fixed TSynLog.NotifyThreadEnded threads recycling

Impact

Les threads courts qui réutilisent des slots TSynLog n’héritent plus du niveau de récursion ni des drapeaux d’un thread précédent. Cela évite une suppression silencieuse du journal ou un comportement périmé.

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

9 Moyenne Le rafraîchissement keytab Kerberos est sérialisé hors du verrou long TServerSspiKeyTab.TryRefresh dans mormot.lib.gssapi utilise fSafe pour réserver chaque fenêtre de deux secondes, puis appelle SetKeyTab hors verrou. Le tick est décalé de un afin que la première fenêtre ne soit pas confondue avec le zéro initial. Correctifs mormot.lib.gssapi 6f53f3d7+14-7

lib: optimized TServerSspiKeyTab.TryRefresh thread safety

Impact

Les authentifications SSPI/GSSAPI concurrentes ne rechargent plus le même keytab ensemble, et les autres appels n’attendent pas sous verrou pendant la lecture du fichier. Les API publiques ne changent pas.

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

10 Moyenne La DLL WebSocket n’est testée qu’une fois et désactivée sous Wine TWebSocketApi gagne un drapeau Tested dans mormot.lib.winhttp. WebSocketApiInitialize mémorise la première tentative sous verrou global, évite les chargements échoués répétés et sort immédiatement sous Wine, dont websocket.dll n’expose que des stubs partiels. Correctifs mormot.lib.winhttp 2f0cdace+14-6

lib: fixed WebSocketApiInitialize

Impact

Les environnements Windows non pris en charge cessent de tester la DLL à répétition, et Wine n’est plus considéré compatible à cause de simples exports factices. Les systèmes natifs compatibles s’initialisent une fois.

API publique

  • TWebSocketApi.Testedadded — Mémorise que la disponibilité de websocket.dll a déjà été testée.

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

11 Moyenne Les requêtes REST concurrentes ne déclenchent plus OnIdle ensemble TRestServer.Uri dans mormot.rest.server remplace le test lecture-écriture de fOnIdleLastTix par un compare-and-swap LockedExc32. Seule la requête qui avance le tick appelle OnIdle. Correctifs mormot.rest.server 7df2308e+8-8

rest: fixed TRestServer.OnIdle trigger

Impact

Les gestionnaires OnIdle ne sont plus appelés simultanément parce que plusieurs requêtes finissent au même tick. Les backends avec un travail d’inactivité non réentrant évitent doublons et courses.

API publique

  • TRestServer.OnIdlebehaviour-changed — Une seule requête au plus l’appelle pour un tick donné.

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

12 Moyenne Le compare-and-swap du cache horaire n’alias plus sa valeur attendue FromGlobalTime dans mormot.core.datetime copie GlobalTime.clock dans la variable locale c et fournit cette valeur attendue stable à LockedExc32. L’ancien appel utilisait clock comme cible et comme valeur attendue. Correctifs mormot.core.datetime f7cfb5db+8-5

core: fixed FromGlobalTime() atomicity

Impact

Le formatage concurrent de l’heure dispose maintenant d’une élection CAS définie avant la mise à jour du cache partagé de 16 ms. Les appels Delphi/FPC gardent la même signature et précision.

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

13 Moyenne TLoggedThread libère son état même sans avoir écrit de journal TLoggedThread.DoTerminate dans mormot.core.threads supprime la sortie anticipée lorsque fLog vaut nil et appelle toujours TSynLog.NotifyThreadEnded après inherited DoTerminate, puis efface fLog. Correctifs mormot.core.threads 2c03b28a+3-5

core: fixed TLoggedThread.DoTerminate

Impact

Un TLoggedThread ayant obtenu des métadonnées locales sans écrire d’entrée rend maintenant correctement son slot. Les services longs évitent l’épuisement progressif du registre des threads de journalisation.

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

14 Moyenne Les workers tunnel préconnectés démarrent avec un résultat réseau valide TTunnelLocalThread.DoExecute dans mormot.net.tunnel affecte res := nrOk lorsque la connexion socket a déjà été créée par le thread principal, avant fState := stProcessing. Cette branche laissait auparavant res non initialisé ou périmé. Correctifs mormot.net.tunnel 677a3579+5-2

net: fixed TTunnelLocalThread process

Impact

Les sessions tunnel dont le socket est connecté dans le thread principal n’emportent plus un résultat réseau indéfini vers la gestion des erreurs ou de fermeture. Le workflow et les signatures restent identiques.

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

15 Moyenne TCachedValue réserve le rafraîchissement avant de libérer son verrou TCachedValue.Cache dans mormot.core.os déplace l’affectation Tix32 sous Safe avant d’exécuter le callback lent Call hors verrou. Le rafraîchissement est ainsi réservé avant l’entrée d’un autre thread. Correctifs mormot.core.os 84ab9449+3-3

core: fixed race in TCachedValue.Cache

Impact

Plusieurs appels ne lancent plus le même calcul coûteux durant un intervalle. Le commit ultérieur 14d901e empêche aussi un ancien calcul retardé d’écraser un résultat plus récent.

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

16 Moyenne TThreadAbstract nettoie désormais toujours le journal en fin de thread TThreadAbstract.DoTerminate dans mormot.core.threads appelle maintenant TSynLog.NotifyThreadEnded après la terminaison héritée et la mise à jour legacy de Finished, en absorbant les exceptions de fermeture. Les queues et timers retirent leurs callbacks explicites ; le TThread autonome de flush garde un appel manuel. Nouveautés mormot.core.log+2 8ef4ae1b+30-35

core: TThreadAbstract calls TSynLog.NotifyThreadEnded

Impact

Tout descendant qui atteint correctement inherited DoTerminate libère automatiquement son état de journalisation par thread. Les descendants directs de TThread utilisant TSynLog doivent encore appeler TSynLog.NotifyThreadEnded.

À regarder

API publique

  • TThreadAbstract.DoTerminatebehaviour-changed — Appelle automatiquement TSynLog.NotifyThreadEnded à la fermeture du thread.

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

17 Moyenne TThreadAbstract expose Finished aussi sous Delphi 7 et 2007 mormot.core.threads ajoute à TThreadAbstract une propriété publique Finished émulée et fFinished lorsque le RTL ne les fournit pas, puis pose le drapeau dans DoTerminate. TLoggedThread.ExecuteDone est supprimé et mormot.net.tftp.server utilise Finished. Compilateur & plateforme mormot.core.threads+1 5678b9d9+31-13

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

Impact

Les anciens Delphi peuvent tester TThreadAbstract.Finished comme Delphi moderne et FPC. Le code qui référençait la propriété publique TLoggedThread.ExecuteDone doit passer à Finished.

Migration nécessaire

Recherchez TLoggedThread.ExecuteDone et remplacez-le par la propriété héritée Finished.

API publique

  • TThreadAbstract.Finishedadded — Émulée pour Delphi 7/2007 ; déjà fournie par les RTL récents.
  • TLoggedThread.ExecuteDoneremoved — Utiliser Finished à la place.

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

18 Moyenne Wine reçoit un indicateur explicite de faiblesse de http.sys mormot.core.os ajoute wsWeakHttpSys à TWindowsSpecs et l’active lors de la détection de Wine. TRestHttpServer.Create dans mormot.rest.http.server utilise ce drapeau pour remplacer HTTP_API_MODES par useHttpAsync. Compilateur & plateforme mormot.core.os+3 b4238a29+10-8

net: introducing wsWeakHttpSys flag

Impact

Les serveurs REST sous Wine n’utilisent plus une implémentation http.sys incomplète et passent au serveur socket asynchrone. Le comportement sous Windows natif ne change pas.

API publique

  • TWindowsSpecs.wsWeakHttpSysadded — Marque les environnements où http.sys ne doit pas être choisi.

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

19 Moyenne Les workers HTTP API WebSocket suivent le nouveau type de callback mormot.net.server fait accepter TThreadAbstract à TSynThreadPoolHttpApiWebSocketServer.OnThreadStart et OnThreadTerminate. TSynWebSocketGuard hérite maintenant de TThreadAbstract et supprime son appel manuel à TSynLog.NotifyThreadEnded. Compilateur & plateforme mormot.net.server f115b536+7-8

net: follow new TThreadAbstract / TOnNotifyThread definitions

Impact

Les workers et gardes WebSocket compilent avec le nouveau contrat TOnNotifyThread et bénéficient du nettoyage automatique. Les descendants personnalisés redéfinissant les callbacks protégés peuvent devoir adapter leur signature.

À regarder

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

20 Faible Les scans d’expiration du dictionnaire gagnent une barrière atomique TSynDictionary.DeleteDeprecated dans mormot.core.json lit le tick partagé via la nouvelle vue TSynVarData.VCardinal et réserve le scan avec LockedExc32. mormot.core.base ajoute ce champ de record variant pour l’accès atomique. Performance mormot.core.base+1 c7887dc9+35-33

core: ensure TSynDictionary.DeleteDeprecated trigger is atomic

Impact

Les utilisateurs concurrents du dictionnaire évitent les scans d’expiration en double durant la même seconde. Le comportement de TSynDictionary est conservé ; le code inspectant TSynVarData peut utiliser la nouvelle vue non signée.

API publique

  • TSynVarData.VCardinaladded — Vue non signée 32 bits du record variant.

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

21 Faible Un seul scan d’expiration du pool est élu par intervalle TSqlDBConnectionPropertiesThreadSafe.ThreadSafeConnection dans mormot.db.sql remplace l’affectation non synchronisée du timestamp par LockedExc32 avant DeleteDeprecated. ClearConnectionPool réinitialise atomiquement le déclencheur. Performance mormot.db.sql a6d76aa9+12-9

db: use CAS for TSqlDBConnectionPropertiesThreadSafe.DeleteDeprecated

Impact

Sous charge SQL concurrente, un seul thread effectue le scan optionnel des connexions expirées toutes les 32 secondes. Le comportement du backend et les API publiques restent inchangés.

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

22 Faible La purge du cache MVC ne s’exécute qu’une fois par seconde Le traitement TMvcRunWithViews dans mormot.core.mvc réserve maintenant fOnIdlePurgeCacheTix32 via LockedExc32 avant PurgeMethodCache. PurgeMethodCache n’affecte plus ce tick lui-même. Performance mormot.core.mvc 83f4846b+6-5

mvc: atomic TMvcRunWithViews.PurgeMethodCache

Impact

Les requêtes MVC concurrentes évitent plusieurs scans complets du cache durant la même seconde. Les résultats et API MVC visibles par l’application gardent le même comportement.

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

23 Faible Une requête par intervalle purge les sessions REST expirées TRestServerUriContext.Authenticate dans mormot.rest.server avance fSessionsDeprecatedTix avec LockedExc32 avant SessionDeleteDeprecated. La routine de purge ne fait plus d’affectation non atomique séparée. Performance mormot.rest.server 14d5a05d+6-5

rest: use a CAS trigger for TRestServer.SessionDeleteDeprecated

Impact

Les serveurs authentifiés chargés évitent que plusieurs threads entrent dans le même scan d’expiration par seconde. La sémantique d’expiration et les API publiques ne changent pas.

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

24 Faible Un seul thread formate l’heure du journal HTTP par seconde THttpLogger.Append dans mormot.net.http utilise LockedExc32 sur fTimeTix32 avant SetTimeText. Les threads concurrents réutilisent les chaînes ISO-8601 et NCSA en cache au lieu de les formater simultanément. Performance mormot.net.http d7b698d8+6-5

net: optimized THttpLogger.Append time update

Impact

La journalisation HTTP à haut débit effectue moins de conversions de date en double tout en gardant le cache d’une seconde. Ni le format du journal ni l’API publique ne changent.

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

25 Faible Les déclarations StackTrace recompilent avec Delphi 7 mormot.core.log place la directive static sur les deux surcharges TSynLog.StackTrace uniquement si HASINLINE est défini. Les anciens compilateurs Delphi ne rencontrent plus cette directive non prise en charge. Compilateur & plateforme mormot.core.log 332614f5+6-4

code: fixed Delphi 7 compilation

Impact

Les builds Delphi 7 utilisant mormot.core.log recompilent. Les cibles Delphi récentes et FPC gardent la même API StackTrace et le même comportement.

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

26 Faible Les drapeaux compilateur décrivent la disponibilité de TThread.Finished mormot.defines ajoute HASTTHREADFINISHED pour FPC et Delphi Unicode, et documente WINDELPHI avant de le définir pour Delphi sous Windows. Ces conditions servent le code de compatibilité TThread ancien. Compilateur & plateforme mormot.defines 86422854+6-3

core: added missing HASTTHREADFINISHED conditional

Impact

Le framework n’active l’émulation de Finished que pour Delphi 7/2007, pas pour les cibles qui possèdent déjà la propriété. Le code applicatif ne voit aucun changement direct d’API.

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

27 Faible Le suivi des flux de réponse resserre le nettoyage et les diagnostics Après la fusion de SetOutStream, mormot.net.http rend OutContentStreamDiscard sûr avec nil et réinitialise ses champs au même endroit. mormot.net.async précise que AsyncResponse abandonne un flux en attente ; les tests utilisent RaiseStreamError et ignorent les EStreamError attendues. Sous le capot mormot.net.async+1 7627b1ad+20-26

net: some refactoring after #554

Impact

Les flux de réponse possédés restent libérés et le contenu asynchrone retardé remplace toujours tout flux en attente. Ce suivi ne change ni l’API SetOutStream documentée ni les limites des serveurs.

Arnaud Bouchez · 07:35 UTC · PR #554 · voir le commit sur GitHub →

28 Faible Les nonces de démarrage n’entrent plus récursivement dans Random128 TCryptRandomEntropy.Create dans mormot.crypt.secure remplit son nonce applicatif de 16 octets avec RandomBytes au lieu de Random128. Les commentaires précisent que TAes.EncryptInitRandom doit éviter la récursion Random128 et que l’aléa système sert de repli. Sous le capot mormot.core.os.posix+5 a0141ee6+13-23

core: don't call Random128() at startup

Impact

L’initialisation de la source d’entropie évite de réentrer dans le PRNG principal pendant sa construction. Le nonce reste aléatoire ; les API publiques et formats générés ne changent pas.

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

29 Faible Le cache horaire stocke directement TSynSystemTime mormot.core.datetime remplace le champ GlobalTime de TSystemTime par TSynSystemTime et supprime l’alias absolute local dans FromGlobalTime. Le padding maintient chaque cache sur une ligne de 64 octets. Sous le capot mormot.core.datetime 6dda432f+12-11

core: simplified FromGlobalTime() implementation

Impact

Cela simplifie la copie interne sans modifier le contrat public de FromGlobalTime ni la précision de 16 ms. Le code applicatif Delphi/FPC n’est pas affecté.

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

30 Faible Le watchdog Angelize abandonne les callbacks de nettoyage manuel mormot.app.agl supprime les appels explicites à TSynLog.NotifyThreadEnded et log.Family.OnThreadEnded dans TSynAngelizeRunner et la création du watchdog. Leur héritage TThreadAbstract assure désormais le nettoyage. Sous le capot mormot.app.agl afde3637+4-5

agl: follow new TThreadAbstract feature

Impact

Le comportement Angelize reste identique, avec une notification de fin centralisée au lieu d’appels manuels par classe. Les API applicatives ne changent pas.

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

31 Faible Les threads SQLite et PostgreSQL s’alignent sur le nettoyage centralisé mormot.db.sql.postgres supprime l’appel redondant à SynDBLog.NotifyThreadEnded de son thread asynchrone fondé sur TThreadAbstract. Le thread de sauvegarde SQLite reste un TThread et conserve l’appel explicite documenté à SQLite3Log.NotifyThreadEnded. Sous le capot mormot.db.raw.sqlite3+1 9a1c1313+4-5

db: adapt to the new TThreadAbstract class

Impact

Le nettoyage du journal des threads de base de données doit avoir lieu exactement une fois, sans modifier les sauvegardes SQLite ni l’asynchrone PostgreSQL. Aucune API applicative ne change.

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

32 Faible Les tests et une démo de journalisation adoptent TThreadAbstract La démo de journalisation dmvc-ai et TPipeConsumerThread dans test.net.proto héritent maintenant de TThreadAbstract au lieu de TThread. Ce commit ne change ni l’implémentation du framework ni une déclaration publique. Tests 56660c17+4-4

test: favor TThreadAbstract usage

Impact

Le code applicatif n’est pas affecté ; les exemples montrent la classe de base recommandée pour automatiser le nettoyage du journal en fin de thread.

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

33 Faible La documentation de Sha256Weak précise son usage strictement legacy Les commentaires de mormot.crypt.core précisent que Sha256Weak complète les entrées de moins de 256 octets, ne sert qu’à la compatibilité mORMot 1 et ne doit pas être utilisé pour du nouveau code ou de nouvelles données. TSynSigner.Pbkdf2 et Modular Crypt sont proposés. Documentation mormot.crypt.core 8d60e5ed+7-6

crypt: refined Sha256Weak() documentation

Impact

Il n’y a aucun changement d’exécution ni d’API. Le texte aide les audits de sécurité à classer Sha256Weak comme dette de compatibilité plutôt que comme dérivation de mot de passe approuvée.

À regarder

API publique

  • Sha256Weakdeprecated — La documentation le réserve à la compatibilité mORMot 1 ; utiliser TSynSigner.Pbkdf2 ou Modular Crypt pour les nouvelles données.

Arnaud Bouchez · 07:55 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