Rad Studio
[+] : Rad Studio 13.1 のサポートを追加しました。新しいプラットフォーム WinARM64EC に対応しています。
[+] : 新しいコンポーネント TsgcWSFirewall。WebSocket サーバー向けの多機能ファイアウォールで、IP のブラックリスト / ホワイトリスト(CIDR 対応)、自動 BAN 付きのブルートフォース対策、SQL インジェクション検出、XSS 検出、レート制限、フラッド保護を備えています。
[+] : サーバーファイアウォールの新しいデモ。新しいファイアウォールの主要な機能を示すもので、フォルダ "Demos\04.WebSocket_Other_Samples\13.Firewall" にあります。
[+] : HTTP/2 大容量ファイル転送の新しいデモ。HTTP/2 経由で 1GB を超えるファイルのダウンロードをテストするサーバーとクライアントのデモで、"Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer" にあります。
[+] : HTTP/2 の新しいデバッグログ。sgcVer.inc で {$DEFINE SGC_DEBUG} を有効にすると、フレームの送受信、WINDOW_UPDATE の増分、ストリーミングのチャンク読み取りが LoggerPro を通じて記録されます。
[+] : MQTT クライアントの改善。サーバーから受信した最新の MQTT メッセージにアクセスするための新しいプロパティ RcvMsg が追加されました。
[+] : 新しいコンポーネント TsgcTCPClient。WebSocket クライアントの基盤の上に構築された多機能 TCP クライアントで、TLS/SSL、プロキシ、ウォッチドッグ、プロトコル統合をサポートします。プロトコル(MQTT、AMQP、STOMP、WAMP など)は、Client プロパティを通じて TsgcTCPClient と TsgcWebSocketClient のどちらでも利用できるようになりました。
[+] : OAuth2 クライアントのトークン失効(RFC 7009)のサポートを追加しました。OnBeforeRevokeToken、OnAfterRevokeToken、OnRevokeTokenError の各イベントを備えた Revoke() メソッドです。
[+] : OAuth2 クライアントのトークンイントロスペクション(RFC 7662)のサポートを追加しました。OnBeforeIntrospectToken、OnAfterIntrospectToken、OnIntrospectTokenError の各イベントを備えた Introspect() メソッドです。
[+] : OAuth2 クライアントの新しいデバイス認可グラント(RFC 8628)。自動ポーリングと、OnDeviceCode および OnDeviceCodeExpired イベントを備えた auth2DeviceCode グラントタイプです。
[+] : OAuth2 サーバーの新しいトークン失効エンドポイント(RFC 7009)。OnOAuth2AfterRevokeToken イベントを備えた /sgc/oauth2/revoke です。
[+] : OAuth2 サーバーの新しいトークンイントロスペクションエンドポイント(RFC 7662)。OnOAuth2AfterIntrospectToken イベントを備えた /sgc/oauth2/introspect です。
[+] : OAuth2 サーバーの新しいデバイス認可エンドポイント(RFC 8628)。OnOAuth2DeviceAuthorization および OnOAuth2DeviceCodeVerification イベントを備えた /sgc/oauth2/device と /sgc/oauth2/device/verify です。
[+] : OAuth2 サーバーがリソースオーナーパスワードクレデンシャルグラントを処理できるようになりました(password grant_type)。
[+] : OAuth2 サーバーの新しいデバイスコードによるトークン交換(urn:ietf:params:oauth:grant-type:device_code grant_type)。
[+] : OAuth2 クライアントの DPoP(RFC 9449)のサポートを追加しました。ES256/RS256 署名による送信者制約トークンを DPoPOptions を通じて利用でき、DPoP プルーフ JWT の自動生成、JWK サムプリントの計算(RFC 7638)、DPoP-Nonce のリトライ処理を行います。
[+] : OAuth2 クライアントの新しい DPoP メソッド。リソースリクエスト用の GetDPoPProof() と、トークンバインディングの検証用の GetDPoPJWKThumbprint() です。
[+] : OAuth2 サーバーの DPoP(RFC 9449)のサポートを追加しました。DPoP プルーフの検証、JWK サムプリントによるトークンバインディング、token_type DPoP の発行、OnOAuth2ValidateDPoP イベントに対応します。
[+] : Deflate 拡張の改善。特に小さなメッセージで速度が向上しました。(Michael さん、修正をありがとうございます)
[+] : 新しいコンポーネント TsgcWebView2。Microsoft Edge WebView2 用のビジュアルな VCL ラッパーで、ナビゲーション、JavaScript(非同期 / 同期 / 初期化スクリプト)、Cookie 管理、ダウンロード制御、プロファイル管理、印刷、音声とミュート、証明書の処理、コンテキストメニュー、favicon、仮想ホストマッピング、スクリーンショットの取得、そして 20 を超えるイベントを備えています。Delphi 7 から Delphi 13 Florence までをサポートします。
[+] : WebView2 ブラウザの新しいデモ。ナビゲーション、JavaScript の実行、Cookie、印刷、ミュート、データの消去、仮想ホストマッピング、イベントログを示します。"Demos\50.Other\WebView2_Browser" にあります。
[+] : 新しい Gemini API。Google Gemini との連携で、コンテンツ生成(ストリーミング対応)、Vision、構造化 JSON 出力、ツール利用(関数呼び出し)、トークンカウント、埋め込み、モデル一覧に対応します。
[+] : 新しい DeepSeek API。DeepSeek との連携で、チャット補完(ストリーミング対応)、Vision、ツール利用(関数呼び出し)、モデル一覧に対応します。
[+] : 新しい Ollama API。ローカル LLM の Ollama との連携で、チャット補完(ストリーミング対応)、モデル管理(show、pull、delete、list tags)、埋め込みに対応します。
[+] : 新しい Grok API。xAI Grok との連携で、チャット補完(ストリーミング対応)、Vision、ツール利用(関数呼び出し)、モデル一覧に対応します。
[+] : 新しい Mistral API。Mistral AI との連携で、チャット補完(ストリーミング対応)、Vision、構造化 JSON 出力、ツール利用(関数呼び出し)、埋め込み、モデル一覧に対応します。
[*] : 大きなレスポンスに対する HTTP/2 のサーバー側ストリーミングを修正しました。大きなファイルを配信する際のメモリ不足によるクラッシュがなくなり、サーバーのピークメモリが削減されます。
[*] : 大きなレスポンスを受信する際の HTTP/2 クライアント側のメモリ再割り当てを修正しました。ペイロードバッファは、DATA フレームごとに再割り当てするのではなく、プラットフォームごとの上限(Win32 で 128 MB、Win64 で 1 GB)を持つ容量拡張方式を使うようになりました。
[*] : 大容量ファイル転送時の HTTP/2 の SSL 書き込みデッドロックを修正しました。WINDOW_UPDATE はフレーム処理中にインラインで書き込まれるのではなく、キューに入れられて読み取りの反復の合間にフラッシュされるようになり、クライアントとサーバーが同時に SSL_write でブロックすることがなくなりました。
[*] : 2 GB を超えるファイルでの HTTP/2 の整数オーバーフローを修正しました。FrameLength、Offset、WindowSize、PayLoadCapacity、ReadWindowSize、およびフロー制御の累算値を Integer から Int64 に変更しました。
[*] : HTTP/2 のストリーム状態を修正しました。アイドル状態のストリームで(ストリームのクリーンアップ後に)受信した RST_STREAM フレームは、PROTOCOL_ERROR を発生させる代わりに、正常に closed へ遷移するようになりました。
[*] : HPACK エンコーダーを修正しました。GetBestMatchingIndex が静的テーブルの名前のみの一致を正しく返すようになり、HTTP/2 接続での圧縮エラーを防ぎます。
[*] : HPACK エンコーダーを修正しました。ハフマンのビットマスクが正しい左シフト演算を使うようになりました。
[*] : HPACK デコーダーを修正しました。バイト数と利用可能なバイト数の計算が、バッファのオフセットを正しく考慮するようになりました。
[*] : SetBytesFromInteger を修正しました。中間のバイト抽出が $FF でマスクされるようになり、WINDOW_UPDATE の増分のような値で範囲チェックエラーが発生しなくなりました。
[*] : "Typed @ operator" オプションを有効にしてコンパイルした際の、型付きポインタの非互換性を修正しました。
[*] : JWT の RSA 署名を修正しました。DoSignRSA の vLength パラメータが TIdNativeUInt ではなく Integer として宣言されており、64 ビットプラットフォームでスタック破壊を引き起こす可能性がありました。(Gabriel さん、修正をありがとうございます)
[*] : sgcHTTP_API_OpenAI における Win64 のポインタ切り詰めを修正しました。mciSendCommand の呼び出しでポインタに Cardinal() のキャストが使われていたため、NativeUInt() に置き換えました。
[*] : OAuth2 サーバーを修正しました。SetOAuth2Options のメモリリークを解消しました。
[*] : AWS Signature V4 を修正しました。正規リクエストにおけるクエリ文字列パラメータのソートを修正しました。
[*] : チャンネルの購読を解除する際に発生する Bitfinex のアクセス違反を修正しました。
[*] : FSpecifications および FConnections フィールドのスレッドセーフでない遅延初期化に起因する Indy サーバーのメモリリークを修正しました。並行する Indy のワーカースレッドが生成時に競合し、インスタンスが孤立する可能性がありました。
[/] : OnMQTTPublishEx イベントのシグネチャが変更され、TsgcWSMQTTMessage 型の新しいパラメータ aMessage が追加されました。
.NET
[+] : 新しいコンポーネント TsgcWSFirewall。WebSocket サーバー向けの多機能ファイアウォールで、IP のブラックリスト / ホワイトリスト(CIDR 対応)、自動 BAN 付きのブルートフォース対策、SQL インジェクション検出、XSS 検出、レート制限、フラッド保護を備えています。
[+] : サーバーファイアウォールの新しいデモ。新しいファイアウォールの主要な機能を示すもので、フォルダ "Demos\04.WebSocket_Other_Samples\13.Firewall" にあります。
[+] : HTTP/2 大容量ファイル転送の新しいデモ。HTTP/2 経由で 1GB を超えるファイルのダウンロードをテストするサーバーとクライアントのデモで、"Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer" にあります。
[+] : OAuth2 クライアントのトークン失効(RFC 7009)のサポートを追加しました。OnBeforeRevokeToken、OnAfterRevokeToken、OnRevokeTokenError の各イベントを備えた Revoke() メソッドです。
[+] : OAuth2 クライアントのトークンイントロスペクション(RFC 7662)のサポートを追加しました。OnBeforeIntrospectToken、OnAfterIntrospectToken、OnIntrospectTokenError の各イベントを備えた Introspect() メソッドです。
[+] : OAuth2 クライアントの新しいデバイス認可グラント(RFC 8628)。自動ポーリングと、OnDeviceCode および OnDeviceCodeExpired イベントを備えた auth2DeviceCode グラントタイプです。
[+] : OAuth2 サーバーの新しいトークン失効エンドポイント(RFC 7009)。OnOAuth2AfterRevokeToken イベントを備えた /sgc/oauth2/revoke です。
[+] : OAuth2 サーバーの新しいトークンイントロスペクションエンドポイント(RFC 7662)。OnOAuth2AfterIntrospectToken イベントを備えた /sgc/oauth2/introspect です。
[+] : OAuth2 サーバーの新しいデバイス認可エンドポイント(RFC 8628)。OnOAuth2DeviceAuthorization および OnOAuth2DeviceCodeVerification イベントを備えた /sgc/oauth2/device と /sgc/oauth2/device/verify です。
[+] : OAuth2 サーバーがリソースオーナーパスワードクレデンシャルグラントを処理できるようになりました(password grant_type)。
[+] : OAuth2 サーバーの新しいデバイスコードによるトークン交換(urn:ietf:params:oauth:grant-type:device_code grant_type)。
[+] : OAuth2 クライアントの DPoP(RFC 9449)のサポートを追加しました。ES256/RS256 署名による送信者制約トークンを DPoPOptions を通じて利用でき、DPoP プルーフ JWT の自動生成、JWK サムプリントの計算(RFC 7638)、DPoP-Nonce のリトライ処理を行います。
[+] : OAuth2 クライアントの新しい DPoP メソッド。リソースリクエスト用の GetDPoPProof() と、トークンバインディングの検証用の GetDPoPJWKThumbprint() です。
[+] : OAuth2 サーバーの DPoP(RFC 9449)のサポートを追加しました。DPoP プルーフの検証、JWK サムプリントによるトークンバインディング、token_type DPoP の発行、OnOAuth2ValidateDPoP イベントに対応します。
[+] : Deflate 拡張の改善。特に小さなメッセージで速度が向上しました。(Michael さん、修正をありがとうございます)
[+] : 新しい Gemini API。Google Gemini との連携で、コンテンツ生成(ストリーミング対応)、Vision、構造化 JSON 出力、ツール利用(関数呼び出し)、トークンカウント、埋め込み、モデル一覧に対応します。
[+] : 新しい DeepSeek API。DeepSeek との連携で、チャット補完(ストリーミング対応)、Vision、ツール利用(関数呼び出し)、モデル一覧に対応します。
[+] : 新しい Ollama API。ローカル LLM の Ollama との連携で、チャット補完(ストリーミング対応)、モデル管理(show、pull、delete、list tags)、埋め込みに対応します。
[+] : 新しい Grok API。xAI Grok との連携で、チャット補完(ストリーミング対応)、Vision、ツール利用(関数呼び出し)、モデル一覧に対応します。
[+] : 新しい Mistral API。Mistral AI との連携で、チャット補完(ストリーミング対応)、Vision、構造化 JSON 出力、ツール利用(関数呼び出し)、埋め込み、モデル一覧に対応します。
[*] : 大きなレスポンスに対する HTTP/2 のサーバー側ストリーミングを修正しました。大きなファイルを配信する際のメモリ不足によるクラッシュがなくなり、サーバーのピークメモリが削減されます。
[*] : 大きなレスポンスを受信する際の HTTP/2 クライアント側のメモリ再割り当てを修正しました。ペイロードバッファは、DATA フレームごとに再割り当てするのではなく、プラットフォームごとの上限(Win32 で 128 MB、Win64 で 1 GB)を持つ容量拡張方式を使うようになりました。
[*] : 大容量ファイル転送時の HTTP/2 の SSL 書き込みデッドロックを修正しました。WINDOW_UPDATE はフレーム処理中にインラインで書き込まれるのではなく、キューに入れられて読み取りの反復の合間にフラッシュされるようになり、クライアントとサーバーが同時に SSL_write でブロックすることがなくなりました。
[*] : 2 GB を超えるファイルでの HTTP/2 の整数オーバーフローを修正しました。FrameLength、Offset、WindowSize、PayLoadCapacity、ReadWindowSize、およびフロー制御の累算値を Integer から Int64 に変更しました。
[*] : HTTP/2 のストリーム状態を修正しました。アイドル状態のストリームで(ストリームのクリーンアップ後に)受信した RST_STREAM フレームは、PROTOCOL_ERROR を発生させる代わりに、正常に closed へ遷移するようになりました。
[*] : HPACK エンコーダーを修正しました。GetBestMatchingIndex が静的テーブルの名前のみの一致を正しく返すようになり、HTTP/2 接続での圧縮エラーを防ぎます。
[*] : HPACK エンコーダーを修正しました。ハフマンのビットマスクが正しい左シフト演算を使うようになりました。
[*] : HPACK デコーダーを修正しました。バイト数と利用可能なバイト数の計算が、バッファのオフセットを正しく考慮するようになりました。
[*] : SetBytesFromInteger を修正しました。中間のバイト抽出が $FF でマスクされるようになり、WINDOW_UPDATE の増分のような値で範囲チェックエラーが発生しなくなりました。
[*] : "Typed @ operator" オプションを有効にしてコンパイルした際の、型付きポインタの非互換性を修正しました。
[*] : JWT の RSA 署名を修正しました。DoSignRSA の vLength パラメータが TIdNativeUInt ではなく Integer として宣言されており、64 ビットプラットフォームでスタック破壊を引き起こす可能性がありました。(Gabriel さん、修正をありがとうございます)
[*] : sgcHTTP_API_OpenAI における Win64 のポインタ切り詰めを修正しました。mciSendCommand の呼び出しでポインタに Cardinal() のキャストが使われていたため、NativeUInt() に置き換えました。
[*] : OAuth2 サーバーを修正しました。SetOAuth2Options のメモリリークを解消しました。
[*] : チャンネルの購読を解除する際に発生する Bitfinex のアクセス違反を修正しました。
[*] : FSpecifications および FConnections フィールドのスレッドセーフでない遅延初期化に起因する Indy サーバーのメモリリークを修正しました。並行する Indy のワーカースレッドが生成時に競合し、インスタンスが孤立する可能性がありました。
すべてのリリースの変更点はsgcWebSockets のリリースノートで確認できます。
