Rad Studio
[+] : Ajout de la prise en charge de Rad Studio 13.1: la nouvelle plateforme WinARM64EC est prise en charge.[+] : Nouveau TsgcWSFirewall composant : firewall complet pour serveurs WebSocket avec liste noire/blanche d'IP (prise en charge CIDR), protection contre la force brute avec bannissement automatique, détection des injections SQL, détection XSS, limitation de débit, et protection contre les flux.
[+] : Nouvelle démo pour Server Firewall: montre les principales fonctionnalités du nouveau Firewall et se trouve dans le dossier : "Demos\04.WebSocket_Other_Samples\13.Firewall".
[+] : Nouvelle démo pour HTTP/2 Large File Transfer: démo serveur + client pour tester les téléchargements de fichiers de 1 Go et plus via HTTP/2, situé dans "Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer".
[+] : Nouveau HTTP/2 debug logging: envoi/réception de trames, incréments WINDOW_UPDATE et lectures de chunks en streaming sont journalisés via LoggerPro when {$DEFINE SGC_DEBUG} est activé dans sgcVer.inc.
[+] : Amélioration du client MQTT: nouvelle propriété RcvMsg pour accéder à dernier message MQTT reçu du serveur.
[+] : Nouveau TsgcTCPClient composant : client TCP complet basé sur l'infrastructure du client WebSocket, prenant en charge TLS/SSL, proxy, watchdog et intégration de protocoles. Les protocoles (MQTT, AMQP, STOMP, WAMP, etc.) peuvent désormais utiliser soit TsgcTCPClient ou TsgcWebSocketClient via leur propriété Client.
[+] : Nouveau OAuth2 Client Token Revocation prise en charge (RFC 7009): Revoke() méthode avec OnBeforeRevokeToken, OnAfterRevokeToken, et OnRevokeTokenError événements.
[+] : Nouveau OAuth2 Client Token Introspection prise en charge (RFC 7662): Introspect() méthode avec OnBeforeIntrospectToken, OnAfterIntrospectToken, et OnIntrospectTokenError événements.
[+] : Nouveau OAuth2 Client Device Authorization Grant (RFC 8628): auth2DeviceCode type d'autorisation avec interrogation automatique, OnDeviceCode et OnDeviceCodeExpired événements.
[+] : Nouveau OAuth2 Server Token Revocation endpoint (RFC 7009): /sgc/oauth2/revoke avec OnOAuth2AfterRevokeToken événement.
[+] : Nouveau OAuth2 Server Token Introspection endpoint (RFC 7662): /sgc/oauth2/introspect avec OnOAuth2AfterIntrospectToken événement.
[+] : Nouveau OAuth2 Server Device Authorization endpoint (RFC 8628): /sgc/oauth2/device et /sgc/oauth2/device/verify avec OnOAuth2DeviceAuthorization et OnOAuth2DeviceCodeVerification événements.
[+] : Nouveau OAuth2 Server Resource Owner Password Credentials gestion d'autorisation (password grant_type).
[+] : Nouveau OAuth2 Server Device Code échange de token (urn:ietf:params:oauth:grant-type:device_code grant_type).
[+] : Nouveau OAuth2 Client DPoP prise en charge (RFC 9449): tokens liés à l'émetteur via DPoPOptions avec ES256/RS256 signature, génération automatique de JWT de preuve DPoP, JWK calcul d'empreinte (RFC 7638), et gestion des relances DPoP-Nonce.
[+] : Nouveau OAuth2 Client méthodes DPoP : GetDPoPProof() pour requêtes de ressources, GetDPoPJWKThumbprint() pour vérification de la liaison du token.
[+] : Nouveau OAuth2 Server DPoP prise en charge (RFC 9449): DPoP validation de la preuve, JWK thumbprint liaison du token, émission de token_type DPoP, et OnOAuth2ValidateDPoP événement.
[+] : Amélioration de Deflate extension: vitesse a été améliorée particulièrement pour petits messages. (Merci à Michael pour le correctif).
[+] : Nouveau TsgcWebView2 composant : wrapper VCL visuel pour Microsoft Edge WebView2 avec navigation, JavaScript (scripts async/sync/init), gestion des cookies, contrôle des téléchargements, gestion des profils, print, audio/mute, gestion des certificats, menus contextuels, favicon, mappage d'hôte virtuel, capture d'écran, et 20+ événements. Compatible avec Delphi 7 à Delphi 13.
[+] : Nouvelle démo pour WebView2 Browser: montre la navigation, l'exécution JavaScript, les cookies, l'impression, la mise en sourdine, effacement des données, mappage d'hôte virtuel et journalisation des événements. Situé dans "Demos\50.Other\WebView2_Browser".
[+] : Nouveau Gemini API: intégration Google Gemini avec Content Generation (avec streaming), Vision, sortie JSON structurée, utilisation d'outils (appel de fonctions), comptage de tokens, Embeddings, et listing des modèles.
[+] : Nouveau DeepSeek API: intégration DeepSeek avec Chat Completions (avec streaming), Vision, utilisation d'outils (appel de fonctions), et listing des modèles.
[+] : Nouveau Ollama API: Ollama intégration LLM locale avec Chat Completions (avec streaming), gestion des modèles (show, pull, delete, list tags), et Embeddings.
[+] : Nouveau Grok API: intégration xAI Grok avec Chat Completions (avec streaming), Vision, utilisation d'outils (appel de fonctions), et listing des modèles.
[+] : Nouveau Mistral API: intégration Mistral AI avec Chat Completions (avec streaming), Vision, sortie JSON structurée, utilisation d'outils (appel de fonctions), Embeddings, et listing des modèles.
[*] : Correction HTTP/2 server-side streaming pour grandes réponses: Élimine les crashs par manque de mémoire lors du service de grands fichiers et réduit le pic de mémoire serveur.
[*] : Correction HTTP/2 client-side memory reallocation lors de la réception de grandes réponses: le buffer de payload utilise désormais une stratégie de croissance de capacité avec des plafonds spécifiques à la plateforme (128 MB on Win32, 1 GB on Win64) au lieu de réallouer à chaque trame DATA.
[*] : Correction HTTP/2 SSL write deadlock lors de transferts de grands fichiers: les WINDOW_UPDATE sont désormais mis en file d'attente et envoyés entre les itérations de lecture au lieu d'être écrits inline durant le traitement des trames, ce qui empêche client et serveur de se bloquer simultanément sur SSL_write.
[*] : Correction HTTP/2 Integer overflow pour des fichiers plus grands que 2 GB: modification de FrameLength, Offset, WindowSize, PayLoadCapacity, ReadWindowSize et des accumulateurs de contrôle de flux d'Integer à Int64.
[*] : Correction HTTP/2 stream state: les trames RST_STREAM reçues sur des streams inactifs (après nettoyage du stream) passent désormais proprement à l'état closed au lieu de lever une PROTOCOL_ERROR.
[*] : Correction HPACK encoder: GetBestMatchingIndex retourne désormais correctement les correspondances par nom uniquement de la table statique, ce qui évite les erreurs de compression sur les connexions HTTP/2.
[*] : Correction HPACK encoder: le masque de bits Huffman utilise la bonne opération de décalage à gauche.
[*] : Correction HPACK decoder: les calculs de nombre d'octets et d'octets disponibles tiennent désormais correctement compte du décalage du buffer.
[*] : Correction de SetBytesFromInteger: les extractions intermédiaires d'octets sont désormais masquées avec $FF pour éviter les erreurs de range check sur des valeurs comme les incréments WINDOW_UPDATE.
[*] : Correction des pointeurs typés incompatibilités lors de la compilation avec l'option active "Typed @ operator".
[*] : Correction JWT RSA signature: le paramètre vLength dans DoSignRSA était déclaré comme Integer au lieu de TIdNativeUInt, ce qui pouvait corrompre la pile sur les plateformes 64 bits. (Merci à Gabriel pour le correctif).
[*] : Correction Win64 pointer truncation dans sgcHTTP_API_OpenAI: les appels à mciSendCommand utilisaient un cast Cardinal() sur des pointeurs, remplacé par NativeUInt().
[*] : Correction OAuth2 Server: fuite mémoire SetOAuth2Options corrigée.
[*] : Correction AWS Signature V4: correction du tri des paramètres de query string dans la requête canonique.
[*] : Correction Bitfinex violation d'accès lors du désabonnement d'un canal.
[*] : Correction de fuites mémoire dans les serveurs Indy causé par initialisation paresseuse non thread-safe des champs FSpecifications et FConnections. Les threads worker Indy concurrents pouvaient entrer en concurrence à la création, orphelinant des instances.
[/] : L'événement OnMQTTPublishEx a changé de signature avec l'ajout d'un nouveau paramètre aMessage de type TsgcWSMQTTMessage.
.NET
[+] : Nouveau TsgcWSFirewall composant : firewall complet pour serveurs WebSocket avec liste noire/blanche d'IP (prise en charge CIDR), protection contre la force brute avec bannissement automatique, détection des injections SQL, détection XSS, limitation de débit, et protection contre les flux.[+] : Nouvelle démo pour Server Firewall: montre les principales fonctionnalités du nouveau Firewall et se trouve dans le dossier : "Demos\04.WebSocket_Other_Samples\13.Firewall".
[+] : Nouvelle démo pour HTTP/2 Large File Transfer: démo serveur + client pour tester les téléchargements de fichiers de 1 Go et plus via HTTP/2, situé dans "Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer".
[+] : Nouveau OAuth2 Client Token Revocation prise en charge (RFC 7009): Revoke() méthode avec OnBeforeRevokeToken, OnAfterRevokeToken, et OnRevokeTokenError événements.
[+] : Nouveau OAuth2 Client Token Introspection prise en charge (RFC 7662): Introspect() méthode avec OnBeforeIntrospectToken, OnAfterIntrospectToken, et OnIntrospectTokenError événements.
[+] : Nouveau OAuth2 Client Device Authorization Grant (RFC 8628): auth2DeviceCode type d'autorisation avec interrogation automatique, OnDeviceCode et OnDeviceCodeExpired événements.
[+] : Nouveau OAuth2 Server Token Revocation endpoint (RFC 7009): /sgc/oauth2/revoke avec OnOAuth2AfterRevokeToken événement.
[+] : Nouveau OAuth2 Server Token Introspection endpoint (RFC 7662): /sgc/oauth2/introspect avec OnOAuth2AfterIntrospectToken événement.
[+] : Nouveau OAuth2 Server Device Authorization endpoint (RFC 8628): /sgc/oauth2/device et /sgc/oauth2/device/verify avec OnOAuth2DeviceAuthorization et OnOAuth2DeviceCodeVerification événements.
[+] : Nouveau OAuth2 Server Resource Owner Password Credentials gestion d'autorisation (password grant_type).
[+] : Nouveau OAuth2 Server Device Code échange de token (urn:ietf:params:oauth:grant-type:device_code grant_type).
[+] : Nouveau OAuth2 Client DPoP prise en charge (RFC 9449): tokens liés à l'émetteur via DPoPOptions avec ES256/RS256 signature, génération automatique de JWT de preuve DPoP, JWK calcul d'empreinte (RFC 7638), et gestion des relances DPoP-Nonce.
[+] : Nouveau OAuth2 Client méthodes DPoP : GetDPoPProof() pour requêtes de ressources, GetDPoPJWKThumbprint() pour vérification de la liaison du token.
[+] : Nouveau OAuth2 Server DPoP prise en charge (RFC 9449): DPoP validation de la preuve, JWK thumbprint liaison du token, émission de token_type DPoP, et OnOAuth2ValidateDPoP événement.
[+] : Amélioration de Deflate extension: vitesse a été améliorée particulièrement pour petits messages. (Merci à Michael pour le correctif).
[+] : Nouveau Gemini API: intégration Google Gemini avec Content Generation (avec streaming), Vision, sortie JSON structurée, utilisation d'outils (appel de fonctions), comptage de tokens, Embeddings, et listing des modèles.
[+] : Nouveau DeepSeek API: intégration DeepSeek avec Chat Completions (avec streaming), Vision, utilisation d'outils (appel de fonctions), et listing des modèles.
[+] : Nouveau Ollama API: Ollama intégration LLM locale avec Chat Completions (avec streaming), gestion des modèles (show, pull, delete, list tags), et Embeddings.
[+] : Nouveau Grok API: intégration xAI Grok avec Chat Completions (avec streaming), Vision, utilisation d'outils (appel de fonctions), et listing des modèles.
[+] : Nouveau Mistral API: intégration Mistral AI avec Chat Completions (avec streaming), Vision, sortie JSON structurée, utilisation d'outils (appel de fonctions), Embeddings, et listing des modèles.
[*] : Correction HTTP/2 server-side streaming pour grandes réponses: Élimine les crashs par manque de mémoire lors du service de grands fichiers et réduit le pic de mémoire serveur.
[*] : Correction HTTP/2 client-side memory reallocation lors de la réception de grandes réponses: le buffer de payload utilise désormais une stratégie de croissance de capacité avec des plafonds spécifiques à la plateforme (128 MB on Win32, 1 GB on Win64) au lieu de réallouer à chaque trame DATA.
[*] : Correction HTTP/2 SSL write deadlock lors de transferts de grands fichiers: les WINDOW_UPDATE sont désormais mis en file d'attente et envoyés entre les itérations de lecture au lieu d'être écrits inline durant le traitement des trames, ce qui empêche client et serveur de se bloquer simultanément sur SSL_write.
[*] : Correction HTTP/2 Integer overflow pour des fichiers plus grands que 2 GB: modification de FrameLength, Offset, WindowSize, PayLoadCapacity, ReadWindowSize et des accumulateurs de contrôle de flux d'Integer à Int64.
[*] : Correction HTTP/2 stream state: les trames RST_STREAM reçues sur des streams inactifs (après nettoyage du stream) passent désormais proprement à l'état closed au lieu de lever une PROTOCOL_ERROR.
[*] : Correction HPACK encoder: GetBestMatchingIndex retourne désormais correctement les correspondances par nom uniquement de la table statique, ce qui évite les erreurs de compression sur les connexions HTTP/2.
[*] : Correction HPACK encoder: le masque de bits Huffman utilise la bonne opération de décalage à gauche.
[*] : Correction HPACK decoder: les calculs de nombre d'octets et d'octets disponibles tiennent désormais correctement compte du décalage du buffer.
[*] : Correction de SetBytesFromInteger: les extractions intermédiaires d'octets sont désormais masquées avec $FF pour éviter les erreurs de range check sur des valeurs comme les incréments WINDOW_UPDATE.
[*] : Correction des pointeurs typés incompatibilités lors de la compilation avec l'option active "Typed @ operator".
[*] : Correction JWT RSA signature: le paramètre vLength dans DoSignRSA était déclaré comme Integer au lieu de TIdNativeUInt, ce qui pouvait corrompre la pile sur les plateformes 64 bits. (Merci à Gabriel pour le correctif).
[*] : Correction Win64 pointer truncation dans sgcHTTP_API_OpenAI: les appels à mciSendCommand utilisaient un cast Cardinal() sur des pointeurs, remplacé par NativeUInt().
[*] : Correction OAuth2 Server: fuite mémoire SetOAuth2Options corrigée.
[*] : Correction Bitfinex violation d'accès lors du désabonnement d'un canal.
[*] : Correction de fuites mémoire dans les serveurs Indy causé par initialisation paresseuse non thread-safe des champs FSpecifications et FConnections. Les threads worker Indy concurrents pouvaient entrer en concurrence à la création, orphelinant des instances.
