sgcWebSockets 2026.10

· Wydania
sgcWebSockets 2026.10

sgcWebSockets 2026.10 jest już dostępny. Przez tę wersję przewijają się dwa wątki: sgcHTML urósł o elementy, których potrzebuje biznesowa aplikacja webowa i których nie musisz już pisać ręcznie, a kryptografia stała się postkwantowa bez dodania choćby jednej zewnętrznej biblioteki.

Aplikacje webowe: nudna część, załatwiona

Sesje, logowanie i CSRF. Nowy komponent TsgcHTMLAuth i jego magazyny sesji utrzymują ciasteczko, odpowiadają na żądania logowania i wylogowania, zamykają nieaktywne sesje i ograniczają nieudane próby logowania. Token CSRF podróżuje w znaczniku meta, htmx dodaje go samodzielnie do każdego żądania, a serwer odrzuca post, który go nie niesie.

FAuth := TsgcHTMLAuth.Create(Self);
FAuth.SessionStore := TsgcHTMLSessionStore_Memory.Create(Self);
FAuth.CookieName := 'app_session';
FEngine.Auth := FAuth;

Trasy, które czyta się jak trasy. Parametry ścieżki, filtr metod oraz dostęp do nagłówków, ciasteczek i treści żądania:

with FRouter.Routes.Add do
begin
  Path := '/customers/{id}/edit';
  Methods := [hrmGet, hrmPost];
  RequireLogin := True;
  RequireRoles := 'admin,sales';
end;

Strony, które można testować. DispatchDirect odpowiada na żądanie bez żadnego gniazda za nim, a nowa jednostka odczytuje wygenerowany HTML, znajduje elementy po id, klasie, znaczniku lub atrybucie i porównuje stronę z zapisaną kopią, dzięki czemu niezamierzoną zmianę w znacznikach wychwytuje test, a nie klient.

Nawigacja, która przypomina aplikację. Strony zmieniają się bez pełnego przeładowania i zachowują pozycję przewijania oraz to, co użytkownik akurat wpisywał, z paskiem ładowania, oknem dialogowym, gdy połączenie się zrywa, i komunikatem, gdy żądanie się nie powiedzie. Wszystko to domyślnie wyłączone.

Cztery najważniejsze funkcje

Każda z nich ma osobny artykuł, podlinkowany na końcu, więc tutaj tylko czym jest:

Push, na dwa sposoby

Server sent events mogą teraz przenosić aktualizacje zamiast WebSocketu, z odtworzeniem tego, co zostało pominięte podczas rozłączenia, i działa to ze zwykłym serwerem HTTP. Web Push dociera do przeglądarki, która jest zamknięta. Razem z nimi pojawiają się skrzynka powiadomień i tabela preferencji, a komponent powiadomień decyduje, który kanał otrzymuje dany użytkownik.

AI: odpowiedzi, na których można działać

TsgcAIChat może poprosić o JSON zgodny ze schematem, który podasz, w OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok i Mistral, przez nową metodę ChatJSON, która analizuje odpowiedź i pyta ponownie, dołączając błąd analizy, gdy nie da się jej odczytać. Komponent czatu wysyła i odbiera teraz także obrazy, a BaseUrl jest teraz respektowany przez każdego dostawcę, a nie tylko przez Ollama, więc każdego z nich można skierować na proxy albo lokalną bramę.

Kryptografia: postkwantowa, w Object Pascalu

ML-KEM (FIPS 203), ML-DSA (FIPS 204) i SLH-DSA (FIPS 205), hybrydowa enkapsulacja kluczy X-Wing, postkwantowe certyfikaty X.509 i urzędy certyfikacji oraz JWT podpisywane ML-DSA. Wszystko napisane w Object Pascalu w pakiecie sgcCrypto, bez żadnej zewnętrznej biblioteki, zweryfikowane wobec znanych wektorów odpowiedzi NIST.

Na tym opiera się natywny silnik TLS 1.3, także w czystym Pascalu: klient albo serwer mówi w TLS bez OpenSSL i bez SChannel, negocjując hybrydowe postkwantowe grupy z RFC 10024, z ALPN, S N I, certyfikatami klienta i opcjonalnym użyciem magazynu zaufania systemu operacyjnego.

Klasyczna strona została wzmocniona przy tej samej okazji: zaślepione RSA w stałym czasie, mnożenie skalarne krzywej eliptycznej w stałym czasie i Ed25519, AES i GHASH bez tabel, importowane klucze prywatne sprawdzane wobec ich publicznej połowy oraz odrzucane niezminimalizowane podpisy DER.

Poprawki warte wymienienia

.NET

Biblioteka .NET nadąża: uwierzytelnianie i sesje z mostkiem ClaimsPrincipal dla ASP.NET Core, router, narzędzia testowe, nawigacja SPA, transport SSE z natywnym punktem końcowym, ustrukturyzowane wyjście, AI Data Pack, Web Push, MCP Apps i komponent CRUD wraz z adapterami, wszystko pod tymi samymi nazwami API co w Delphi.

Aktualizacja

Wszystko, co nowe, jest addytywne i domyślnie wyłączone. Dodaj nowe jednostki, przebuduj swoje pakiety, a istniejąca aplikacja będzie zachowywać się dokładnie tak jak wcześniej.

Pełne wersje

Zobacz wideo

Jest na ten temat krótkie wideo na kanale eSeGeCe.

Pytania, uwagi lub pomoc przy migracji? Skontaktuj się z nami — otrzymasz odpowiedź od osób, które napisały ten kod.