Rad Studio
[+] : Dodano obsługę Rad Studio 13.1: obsługiwana jest nowa platforma WinARM64EC.[+] : Nowe TsgcWSFirewall component: w pełni funkcjonalny firewall dla serwerów WebSocket z listami blokowania/zezwalania IP (obsługa CIDR), ochroną przed atakami brute force z automatycznym banem, detekcją SQL injection, detekcją XSS, ograniczaniem szybkości i ochroną przed zalewaniem.
[+] : Nowe demo serwera Firewall: prezentuje główne funkcje nowego firewalla, w folderze: "Demos\04.WebSocket_Other_Samples\13.Firewall".
[+] : Nowe demo dla HTTP/2 Large File Transfer: demo serwer + klient do testowania pobierania plików 1 GB+ przez HTTP/2, w folderze "Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer".
[+] : Nowe logowanie debugowania HTTP/2: wysyłanie/odbieranie ramek, przyrosty WINDOW_UPDATE i odczyty porcji strumieniowania są rejestrowane przez LoggerPro, gdy w sgcVer.inc jest włączone {$DEFINE SGC_DEBUG}.
[+] : Ulepszono MQTT Client: nowa właściwość RcvMsg umożliwiająca dostęp do ostatniej wiadomości MQTT odebranej z serwera.
[+] : Nowy komponent TsgcTCPClient: w pełni funkcjonalny klient TCP oparty na infrastrukturze klienta WebSocket, obsługujący TLS/SSL, proxy, watchdog i integrację protokołów. Protokoły (MQTT, AMQP, STOMP, WAMP itp.) mogą teraz korzystać z TsgcTCPClient lub TsgcWebSocketClient przez właściwość Client.
[+] : Nowa obsługa odwoływania tokenów OAuth2 po stronie klienta (RFC 7009): metoda Revoke() ze zdarzeniami OnBeforeRevokeToken, OnAfterRevokeToken i OnRevokeTokenError.
[+] : Nowa obsługa introspekcji tokenów OAuth2 po stronie klienta (RFC 7662): metoda Introspect() ze zdarzeniami OnBeforeIntrospectToken, OnAfterIntrospectToken i OnIntrospectTokenError.
[+] : Nowa obsługa Device Authorization Grant OAuth2 po stronie klienta (RFC 8628): typ grantu auth2DeviceCode z automatycznym odpytywaniem oraz zdarzeniami OnDeviceCode i OnDeviceCodeExpired.
[+] : Nowy punkt końcowy odwoływania tokenów serwera OAuth2 (RFC 7009): /sgc/oauth2/revoke ze zdarzeniem OnOAuth2AfterRevokeToken.
[+] : Nowy punkt końcowy introspekcji tokenów serwera OAuth2 (RFC 7662): /sgc/oauth2/introspect ze zdarzeniem OnOAuth2AfterIntrospectToken.
[+] : Nowy punkt końcowy Device Authorization serwera OAuth2 (RFC 8628): /sgc/oauth2/device i /sgc/oauth2/device/verify ze zdarzeniami OnOAuth2DeviceAuthorization i OnOAuth2DeviceCodeVerification.
[+] : Nowa obsługa grantu Resource Owner Password Credentials na serwerze OAuth2 (grant_type: password).
[+] : Nowa obsługa wymiany tokenu Device Code na serwerze OAuth2 (grant_type: urn:ietf:params:oauth:grant-type:device_code).
[+] : Nowa obsługa DPoP po stronie klienta OAuth2 (RFC 9449): tokeny powiązane z nadawcą przez DPoPOptions z podpisywaniem ES256/RS256, automatyczne generowanie JWT dowodu DPoP, obliczanie odcisku JWK (RFC 7638) i obsługa ponownych prób DPoP-Nonce.
[+] : Nowe metody DPoP po stronie klienta OAuth2: GetDPoPProof() dla żądań zasobów, GetDPoPJWKThumbprint() do weryfikacji powiązania tokenu.
[+] : Nowa obsługa DPoP na serwerze OAuth2 (RFC 9449): walidacja dowodu DPoP, powiązanie tokenu przez odcisk JWK, wystawianie tokenów token_type DPoP oraz zdarzenie OnOAuth2ValidateDPoP.
[+] : Ulepszono Deflate extension: prędkość została zwiększona, szczególnie dla małych wiadomości. (Podziękowania dla Michaela za poprawkę).
[+] : Nowy komponent TsgcWebView2: wizualny wrapper VCL dla Microsoft Edge WebView2 obsługujący nawigację, JavaScript (skrypty async/sync/init), zarządzanie ciasteczkami, kontrolę pobierania, zarządzanie profilem, drukowanie, audio/wyciszenie, obsługę certyfikatów, menu kontekstowe, favicon, mapowanie wirtualnych hostów, zrzuty ekranu i ponad 20 zdarzeń. Obsługuje Delphi 7 przez Delphi 13.
[+] : Nowe demo przeglądarki WebView2: prezentuje nawigację, wykonywanie JavaScript, ciasteczka, drukowanie, wyciszanie, czyszczenie danych, mapowanie wirtualnych hostów i rejestrowanie zdarzeń. W folderze "Demos\50.Other\WebView2_Browser".
[+] : Nowe Gemini API: integracja z Google Gemini obejmująca generowanie treści (ze strumieniowaniem), wizję, ustrukturyzowane wyjście JSON, użycie narzędzi (wywoływanie funkcji), zliczanie tokenów, osadzenia i listowanie modeli.
[+] : Nowe DeepSeek API: integracja z DeepSeek obejmująca uzupełnienia czatu (ze strumieniowaniem), wizję, użycie narzędzi (wywoływanie funkcji) i listowanie modeli.
[+] : Nowe Ollama API: integracja z lokalnym LLM Ollama obejmująca uzupełnienia czatu (ze strumieniowaniem), zarządzanie modelami (show, pull, delete, list tags) i osadzenia.
[+] : Nowe Grok API: integracja z xAI Grok obejmująca uzupełnienia czatu (ze strumieniowaniem), wizję, użycie narzędzi (wywoływanie funkcji) i listowanie modeli.
[+] : Nowe Mistral API: integracja z Mistral AI obejmująca uzupełnienia czatu (ze strumieniowaniem), wizję, ustrukturyzowane wyjście JSON, użycie narzędzi (wywoływanie funkcji), osadzenia i listowanie modeli.
[*] : Naprawiono strumieniowanie HTTP/2 po stronie serwera dla dużych odpowiedzi: eliminuje awarie z powodu braku pamięci przy serwowaniu dużych plików i zmniejsza szczytowe użycie pamięci serwera.
[*] : Naprawiono realokację pamięci po stronie klienta HTTP/2 przy odbieraniu dużych odpowiedzi: bufor ładunku teraz używa strategii wzrostu pojemności z limitami specyficznymi dla platformy (128 MB na Win32, 1 GB na Win64) zamiast realokować przy każdej ramce DATA.
[*] : Naprawiono zakleszczenie zapisu SSL HTTP/2 przy przesyłaniu dużych plików: WINDOW_UPDATEs są teraz kolejkowane i opróżniane między iteracjami odczytu zamiast zapisywane inline podczas przetwarzania ramek, co zapobiega jednoczesnemu blokowaniu klienta i serwera na SSL_write.
[*] : Naprawiono przepełnienie Integer HTTP/2 dla plików większych niż 2 GB: zmieniono FrameLength, Offset, WindowSize, PayLoadCapacity, ReadWindowSize i akumulatory sterowania przepływem z Integer na Int64.
[*] : Naprawiono stan strumienia HTTP/2: ramki RST_STREAM odbierane na bezczynnych strumieniach (po czyszczeniu strumienia) teraz płynnie przechodzą do stanu zamkniętego zamiast wywoływać PROTOCOL_ERROR.
[*] : Naprawiono koder HPACK: GetBestMatchingIndex teraz poprawnie zwraca dopasowania tylko po nazwie z tabeli statycznej, zapobiegając błędom kompresji na połączeniach HTTP/2.
[*] : Naprawiono koder HPACK: maska bitowa Huffmana używa poprawnej operacji przesunięcia w lewo.
[*] : Naprawiono dekoder HPACK: obliczenia liczby bajtów i dostępnych bajtów teraz poprawnie uwzględniają przesunięcie bufora.
[*] : Naprawiono SetBytesFromInteger: pośrednie ekstrakcje bajtów są teraz maskowane przez $FF, co zapobiega błędom sprawdzania zakresu dla wartości takich jak przyrosty WINDOW_UPDATE.
[*] : Naprawiono niezgodności typowanych wskaźników podczas kompilacji z aktywną opcją "Typed @ operator".
[*] : Naprawiono podpisywanie JWT RSA: parametr vLength w DoSignRSA był zadeklarowany jako Integer zamiast TIdNativeUInt, co mogło powodować uszkodzenie stosu na platformach 64-bitowych. (Podziękowania dla Gabriela za poprawkę).
[*] : Naprawiono obcinanie wskaźników Win64 w sgcHTTP_API_OpenAI: wywołania mciSendCommand używały rzutowania Cardinal() na wskaźnikach, zastąpiono NativeUInt().
[*] : Naprawiono serwer OAuth2: usunięto wyciek pamięci w SetOAuth2Options.
[*] : Naprawiono AWS Signature V4: poprawiono sortowanie parametrów query string w żądaniu kanonicznym.
[*] : Naprawiono naruszenie dostępu Bitfinex podczas wypisywania się z kanału.
[*] : Naprawiono wycieki pamięci w serwerach Indy spowodowane inicjalizacją leniwą pól FSpecifications i FConnections niebezpieczną wątkowo. Współbieżne wątki robocze Indy mogły ścigać się podczas tworzenia, powodując osierocenie instancji.
[/] : Zdarzenie OnMQTTPublishEx zmieniło sygnaturę, dodając nowy parametr aMessage typu TsgcWSMQTTMessage.
.NET
[+] : Nowe TsgcWSFirewall component: w pełni funkcjonalny firewall dla serwerów WebSocket z listami blokowania/zezwalania IP (obsługa CIDR), ochroną przed atakami brute force z automatycznym banem, detekcją SQL injection, detekcją XSS, ograniczaniem szybkości i ochroną przed zalewaniem.[+] : Nowe demo serwera Firewall: prezentuje główne funkcje nowego firewalla, w folderze: "Demos\04.WebSocket_Other_Samples\13.Firewall".
[+] : Nowe demo dla HTTP/2 Large File Transfer: demo serwer + klient do testowania pobierania plików 1 GB+ przez HTTP/2, w folderze "Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer".
[+] : Nowa obsługa odwoływania tokenów OAuth2 po stronie klienta (RFC 7009): metoda Revoke() ze zdarzeniami OnBeforeRevokeToken, OnAfterRevokeToken i OnRevokeTokenError.
[+] : Nowa obsługa introspekcji tokenów OAuth2 po stronie klienta (RFC 7662): metoda Introspect() ze zdarzeniami OnBeforeIntrospectToken, OnAfterIntrospectToken i OnIntrospectTokenError.
[+] : Nowa obsługa Device Authorization Grant OAuth2 po stronie klienta (RFC 8628): typ grantu auth2DeviceCode z automatycznym odpytywaniem oraz zdarzeniami OnDeviceCode i OnDeviceCodeExpired.
[+] : Nowy punkt końcowy odwoływania tokenów serwera OAuth2 (RFC 7009): /sgc/oauth2/revoke ze zdarzeniem OnOAuth2AfterRevokeToken.
[+] : Nowy punkt końcowy introspekcji tokenów serwera OAuth2 (RFC 7662): /sgc/oauth2/introspect ze zdarzeniem OnOAuth2AfterIntrospectToken.
[+] : Nowy punkt końcowy Device Authorization serwera OAuth2 (RFC 8628): /sgc/oauth2/device i /sgc/oauth2/device/verify ze zdarzeniami OnOAuth2DeviceAuthorization i OnOAuth2DeviceCodeVerification.
[+] : Nowa obsługa grantu Resource Owner Password Credentials na serwerze OAuth2 (grant_type: password).
[+] : Nowa obsługa wymiany tokenu Device Code na serwerze OAuth2 (grant_type: urn:ietf:params:oauth:grant-type:device_code).
[+] : Nowa obsługa DPoP po stronie klienta OAuth2 (RFC 9449): tokeny powiązane z nadawcą przez DPoPOptions z podpisywaniem ES256/RS256, automatyczne generowanie JWT dowodu DPoP, obliczanie odcisku JWK (RFC 7638) i obsługa ponownych prób DPoP-Nonce.
[+] : Nowe metody DPoP po stronie klienta OAuth2: GetDPoPProof() dla żądań zasobów, GetDPoPJWKThumbprint() do weryfikacji powiązania tokenu.
[+] : Nowa obsługa DPoP na serwerze OAuth2 (RFC 9449): walidacja dowodu DPoP, powiązanie tokenu przez odcisk JWK, wystawianie tokenów token_type DPoP oraz zdarzenie OnOAuth2ValidateDPoP.
[+] : Ulepszono Deflate extension: prędkość została zwiększona, szczególnie dla małych wiadomości. (Podziękowania dla Michaela za poprawkę).
[+] : Nowe Gemini API: integracja z Google Gemini obejmująca generowanie treści (ze strumieniowaniem), wizję, ustrukturyzowane wyjście JSON, użycie narzędzi (wywoływanie funkcji), zliczanie tokenów, osadzenia i listowanie modeli.
[+] : Nowe DeepSeek API: integracja z DeepSeek obejmująca uzupełnienia czatu (ze strumieniowaniem), wizję, użycie narzędzi (wywoływanie funkcji) i listowanie modeli.
[+] : Nowe Ollama API: integracja z lokalnym LLM Ollama obejmująca uzupełnienia czatu (ze strumieniowaniem), zarządzanie modelami (show, pull, delete, list tags) i osadzenia.
[+] : Nowe Grok API: integracja z xAI Grok obejmująca uzupełnienia czatu (ze strumieniowaniem), wizję, użycie narzędzi (wywoływanie funkcji) i listowanie modeli.
[+] : Nowe Mistral API: integracja z Mistral AI obejmująca uzupełnienia czatu (ze strumieniowaniem), wizję, ustrukturyzowane wyjście JSON, użycie narzędzi (wywoływanie funkcji), osadzenia i listowanie modeli.
[*] : Naprawiono strumieniowanie HTTP/2 po stronie serwera dla dużych odpowiedzi: eliminuje awarie z powodu braku pamięci przy serwowaniu dużych plików i zmniejsza szczytowe użycie pamięci serwera.
[*] : Naprawiono realokację pamięci po stronie klienta HTTP/2 przy odbieraniu dużych odpowiedzi: bufor ładunku teraz używa strategii wzrostu pojemności z limitami specyficznymi dla platformy (128 MB na Win32, 1 GB na Win64) zamiast realokować przy każdej ramce DATA.
[*] : Naprawiono zakleszczenie zapisu SSL HTTP/2 przy przesyłaniu dużych plików: WINDOW_UPDATEs są teraz kolejkowane i opróżniane między iteracjami odczytu zamiast zapisywane inline podczas przetwarzania ramek, co zapobiega jednoczesnemu blokowaniu klienta i serwera na SSL_write.
[*] : Naprawiono przepełnienie Integer HTTP/2 dla plików większych niż 2 GB: zmieniono FrameLength, Offset, WindowSize, PayLoadCapacity, ReadWindowSize i akumulatory sterowania przepływem z Integer na Int64.
[*] : Naprawiono stan strumienia HTTP/2: ramki RST_STREAM odbierane na bezczynnych strumieniach (po czyszczeniu strumienia) teraz płynnie przechodzą do stanu zamkniętego zamiast wywoływać PROTOCOL_ERROR.
[*] : Naprawiono koder HPACK: GetBestMatchingIndex teraz poprawnie zwraca dopasowania tylko po nazwie z tabeli statycznej, zapobiegając błędom kompresji na połączeniach HTTP/2.
[*] : Naprawiono koder HPACK: maska bitowa Huffmana używa poprawnej operacji przesunięcia w lewo.
[*] : Naprawiono dekoder HPACK: obliczenia liczby bajtów i dostępnych bajtów teraz poprawnie uwzględniają przesunięcie bufora.
[*] : Naprawiono SetBytesFromInteger: pośrednie ekstrakcje bajtów są teraz maskowane przez $FF, co zapobiega błędom sprawdzania zakresu dla wartości takich jak przyrosty WINDOW_UPDATE.
[*] : Naprawiono niezgodności typowanych wskaźników podczas kompilacji z aktywną opcją "Typed @ operator".
[*] : Naprawiono podpisywanie JWT RSA: parametr vLength w DoSignRSA był zadeklarowany jako Integer zamiast TIdNativeUInt, co mogło powodować uszkodzenie stosu na platformach 64-bitowych. (Podziękowania dla Gabriela za poprawkę).
[*] : Naprawiono obcinanie wskaźników Win64 w sgcHTTP_API_OpenAI: wywołania mciSendCommand używały rzutowania Cardinal() na wskaźnikach, zastąpiono NativeUInt().
[*] : Naprawiono serwer OAuth2: usunięto wyciek pamięci w SetOAuth2Options.
[*] : Naprawiono naruszenie dostępu Bitfinex podczas wypisywania się z kanału.
[*] : Naprawiono wycieki pamięci w serwerach Indy spowodowane inicjalizacją leniwą pól FSpecifications i FConnections niebezpieczną wątkowo. Współbieżne wątki robocze Indy mogły ścigać się podczas tworzenia, powodując osierocenie instancji.
