# 同梱の HTTP 診断ランタイム HTTP/1.1、HTTP/2、HTTP/3 は、同じ同梱の curl クライアントを使用します。macOS arm64 と Linux x64 では、curl 8.22.0、OpenSSL 3.5.9、nghttp2 1.70.0、ngtcp2 1.25.0、nghttp3 1.18.0 を使用します。Windows x64 では、curl.se 公式の curl-for-win 8.22.0_3 静的ビルドと LibreSSL 4.3.3、および同じ HTTP ライブラリを使用します。システムの curl へのフォールバック、実行時のダウンロード、管理者権限は不要です。Windows 向けアップストリームの再現可能なビルド手順は https://github.com/curl/curl-for-win/tree/9d77e31e にあります。 パッケージングの前に `python3 scripts/native/build.py`(Windows では `python scripts/native/build.py`)でビルドします。macOS/Linux には、C/C++ ツール、CMake、Ninja、Perl、make、pkg-config が必要です。ソースは、バージョンとアップストリームの SHA-256 によって `scripts/native/dependencies.lock.json` で固定されています。スクリプトはすべてのダウンロードを検証し、サードパーティのトランスポートライブラリを静的にリンクし、HTTP2/HTTP3/SSL の機能がない場合は失敗します。動的なままなのは OS のライブラリだけです。Windows では、ローカルでコンパイルした Windows 用トランスポートスタックではなく、固定された公式のバイナリアーカイブを使用します。同梱の CA ファイルには独自に固定されたハッシュがあり、コンポーネントのライセンスとアップストリームのビルドの出所情報がランタイムに付属します。 クライアントとトラストストアは、app.asar の外にある `resources/native-runtime/-/` にインストールされます。診断を実行するたびに、使用前にコンポーネントのハッシュ、アーキテクチャ、実行ファイルの機能を検証します。設定ファイル、プロキシ、TLS の信頼に関する環境変数による上書き、ライブラリのインジェクション用変数は除外されます。curl は、絶対パス、シェルの無効化、検証済みの CA による信頼、明示的に解決した IP アドレスファミリーを使い、Cookie なし、自動リダイレクトなし、出力と時間を制限して実行されます。リダイレクトはアプリケーションが検証し、名前解決をやり直します。443 以外のポートでの HTTPS にも対応しています。 HTTP/3 は `--http3-only` を使用し、HTTP バージョン 3 が報告され、証明書の検証にも成功した転送が完了した場合にのみ確認されます。404 のような HTTP エラー応答でも、プロトコルの確認になります。Alt-Svc は告知であり、証明ではありません。QUIC のタイムアウト、証明書のエラー、DNS のエラー、接続の拒否、互換性のないプロトコル、コンポーネントの障害は、それぞれ区別されます。UDP のタイムアウトでは、サーバーの対応状況は未確認のままです。QUIC のハンドシェイク時間が TCP の時間として報告されることはありません。 計測ごとに個別のプロセス/接続を開始します。warm オプションは、同梱クライアントで接続が再利用されたとはみなしません。これにより、プロトコルの比較に一貫性が保たれます。レポートにはランタイムのバージョン、機能、TLS の検証、QUIC のタイミングが含まれ、履歴/エクスポートでは本文、URL のクエリ、認証ヘッダーが削除されます。 トランスポートスタックや CA のトラストストアを更新するときは、これらの固定値を更新し、対応するすべてのプラットフォームでビルドし直してください。公開済みの成果物とソースのスナップショットは変更されません。