注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #124762 Don't build managed ilasm in the VMR yet
- #124759 JIT: minor cleanups in RBO
- #124758 [browser][CoreCLR] Loading Webcil - JS part
- #124752 Disable localhost subdomain AddressFamily tests on Android
- #124743 [HTTP] Re-disable quic.nginx.org interop test
- #124737 Remove duplicate typeof(decimal) check in IsKnownComparable
- #124734 Improve jit-regression-test skill with structured description and stop signals
- #124711 More AP-related optimizations
- #124705 Allow range check cloning for BBJ_RETURN blocks
- #124652 Fix Uri.GetHashCode hash/equality contract violation for file: URIs
- #124641 [browser][CoreCLR] smoke test libraries on V8 and Firefox
- #124639 Propagate _abortException in Http2Connection.SetupAsync (#119022)
- #124598 Fix ManagedNtlm on big-endian architectures
- #124597 [HTTP] Re-enable PostAsync_Cancel_CancellationTokenPassedToContent test
- #124596 [HTTP] Re-enable GetAsync_UnicodeHostName_SuccessStatusCodeInResponse test
- #124595 [HTTP] Re-enable AuthProxy__ValidCreds_ProxySendsRequestToServer test
- #124594 [HTTP] Re-enable GetAsync_CancelDuringResponseBodyReceived_Buffered test
- #124592 Add remarks/seealso docs to DI Add*/TryAdd* methods in DependencyInjection.Abstractions
- #123738 [Wasm RyuJIT] Block stores
- #123727 Managed fixes for async task tracking
#124762 Don't build managed ilasm in the VMR yet
- 作成者: @jkoritzinsky
- 作成日時: 2026年02月23日 19:41:50(UTC)
- マージ日時: 2026年02月23日 23:44:21(UTC)
- ラベル: area-ILTools-coreclr
概要
VMR(Vertical Monolithic Repository)での管理対象のilasm(IL Assembler)ビルドを一時的に無効化するための変更です。source-build対応の完了を待つため、および現在出荷されていないため、ビルドプロセスから除外しています。
変更内容
- eng/Subsets.props (+3/-1)
- マネージドilasm(IL Assembler)のビルド設定をVMRのサブセットから削除
- source-build環境での条件付きビルド制御を調整
パフォーマンスへの影響
影響なし
ビルド時間の短縮が期待されますが、この変更はビルド対象の削除であるため、実行時パフォーマンスには直接的な影響はありません。
関連Issue
なし
その他
背景情報:
- SB-externals(source-build externals)の作業が完了していない状態
- ローカル依存関係の変更が必要
- 現在、マネージドilasm機能は出荷対象外
この変更は一時的な除外措置であり、SB-externals対応やその他の前提条件が満たされた時点で、ilasm のVMRビルド対応が再度有効化される見込みです。
#124759 JIT: minor cleanups in RBO
- 作成者: @AndyAyersMS
- 作成日時: 2026年02月23日 17:41:42(UTC)
- マージ日時: 2026年02月23日 21:35:49(UTC)
- ラベル: area-CodeGen-coreclr
概要
JIT コンパイラの Redundant Branch Optimization (RBO) フェーズにおける軽微なコード品質改善が行われました。コメントの誤字修正、ドキュメント更新、ブール式の簡略化、重複するビジターコードの統合が含まれています。機能的な変更はありません。
変更内容
src/coreclr/jit/redundantbranchopts.cpp (+29/-44, 73行)
- jitdump 引数の誤り修正(bbFalse → bbTrue)
- コメント内の誤字修正("domnating" → "dominating"、"providced" → "provided"、"staring" → "starting")
- 関数ヘッダーコメントの精度向上
- ブール式の簡略化(より慣用的な表現に)
- 重複するラムダビジター実装の統合(条件付き予算チェック機能付き)
パフォーマンスへの影響
影響なし
本変更は内部的なコード整理と文書改善のみであり、JIT コンパイラの動作や パフォーマンス特性に影響しません。
関連Issue
なし
その他
- 変更対象は JIT コンパイラの内部実装(redundantbranchopts.cpp)のため、ユーザーレベルでの影響はありません
- 削除行数が追加行数を上回る(-44 vs +29)ため、コードの簡潔化により全体的なコード保守性が向上しています
#124758 [browser][CoreCLR] Loading Webcil - JS part
- 作成者: @pavelsavara
- 作成日時: 2026年02月23日 16:36:39(UTC)
- マージ日時: 2026年02月23日 21:55:36(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
ブラウザ/WASM環境でWebcil 1.0フォーマットのアセンブリをロードするためのJavaScript実装を追加します。.wasmラッパーモジュールをインスタンス化し、Webcilペイロードを抽出して16バイト境界にアラインされたメモリに登録します。これにより、CoreCLRはブラウザ上でWebcilフォーマットのアセンブリを直接読み込めるようになります。
// 使用側のイメージ(JavaScript/TypeScript)
const module = await instantiateWebcilModule(wasmPath);
// 内部で以下が実行される:
// 1. getWebcilSize/getWebcilPayload エクスポートで生のWebcilを抽出
// 2. 16バイト境界にアラインされたメモリにコピー
// 3. .dll仮想パスで登録
変更内容
- host/assets.ts:
instantiateWebcilModule()関数を実装。Webアセンブリモジュールをインスタンス化し、エクスポートからペイロードを抽出、16バイトアラインメント対応のメモリに登録 - host/index.ts: 新しいホストエクスポートテーブルに
instantiateWebcilModuleを追加 - host/host.ts: ハードコードされた値4を
sizeOfPtr定数に置き換え - loader/assets.ts:
.wasmアセンブリ検出、"webcil10"動作タイプの分類、instantiateWebcilModuleへの経路指定 - types/: 新しい型定義追加(exchange.ts、public-api.ts、ems-ambient.ts)
- per-module/index.ts:
sizeOfPtr定数(WASM32で値4)をエクスポート - System.Native.Browser/native/index.ts:
getWasmMemory()/getWasmTable()をネイティブモジュールにエクスポート - その他: ファイル12個に変更、合計123行の追加/削除
パフォーマンスへの影響
影響なし。本実装はWebcilアセンブリロードの初期化フェーズの処理です。16バイトアラインメントはパフォーマンス最適化の一部であり、メモリアクセスの効率化に寄与します。
関連Issue
なし(PR #124268の分割実装)
その他
- 本PRはより大きなPR #124268の分割実装(JavaScript部分のみ)
- "WASM-TODO: webCIL"コメントを削除(実装完了を示唆)
- クロスモジュール連携テーブル更新により、モジュール間での新規エクスポート参照を可能化
#124752 Disable localhost subdomain AddressFamily tests on Android
- 作成者: @rzikm
- 作成日時: 2026年02月23日 12:25:24(UTC)
- マージ日時: 2026年02月23日 15:24:34(UTC)
- ラベル: area-System.Net
概要
Android プラットフォーム上で localhost サブドメイン解決テスト 2 件が一貫して失敗するため、[ActiveIssue] 属性を使用して Android でのテスト実行を無効化します。RFC 6761 の localhost サブドメイン処理実装により、AddressFamily.InterNetwork や AddressFamily.InterNetworkV6 を指定して "test.localhost" を解決する際、Android の getaddrinfo() が特定のアドレスファミリーでは EAI_NONAME エラーを返すことが原因です。
変更内容
| ファイル | 変更内容 |
|---|---|
| src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostAddressesTest.cs | DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily に [ActiveIssue(..., TestPlatforms.Android)] を追加 |
| src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.cs | DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily に [ActiveIssue(..., TestPlatforms.Android)] を追加 |
パフォーマンスへの影響
影響なし。テスト実行スキップのみであり、ランタイムのパフォーマンスには直接的な影響はありません。
関連Issue
- #124751(このPRが対応する親Issue)
- #123076(RFC 6761 localhost サブドメイン処理導入時のPR)
その他
- 影響を受けるテストは
AddressFamily.Unspecifiedを使用する他の localhost サブドメイン関連テスト(例:ReturnsLoopback)は Android 上で正常に動作しており、問題は AddressFamily フィルタリング適用時の Android resolver 動作に限定されています。 [ActiveIssue]はテストを一時的にスキップするため、Android 上での resolver 動作の改善またはテストロジックの見直しが必要になります。
#124743 [HTTP] Re-disable quic.nginx.org interop test
- 作成者: @rzikm
- 作成日時: 2026年02月23日 09:11:09(UTC)
- マージ日時: 2026年02月23日 17:27:49(UTC)
- ラベル: area-System.Net.Http
概要
QUIC/HTTP3相互運用性テストにおいて、外部サーバ quic.nginx.org が Helix CI 環境から到達不可能になったため、テスト対象から完全に削除する変更です。2月21日以降、このサーバへの接続がタイムアウト(10秒)し、当該テスト Public_Interop_ExactVersion_BufferContent_Success で100%の失敗率(26失敗、0成功)が継続していました。
変更内容
- ファイル:
src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Http3.cs- テスト URI リストから
quic.nginx.orgを削除(1行削除)
- テスト URI リストから
パフォーマンスへの影響
影響なし。本変更はテストスイートから不安定な外部サーバを除外する対応であり、ランタイムコードへの変更ではありません。ただし、相互運用性テストのカバレッジが若干低下します。
関連Issue
- #120257(元々のサーバ無効化)
- #124591(サーバの再度有効化、2月19日マージ)
その他
- 根本原因: サーバのHTTP/1.1エンドポイントは正常に応答するものの、QUIC/UDPエンドポイントが Helix CI マシンから応答なし
- 影響範囲:
quic.nginx.orgのみが該当。代替のcloudflare-quic.comURI は正常に動作 - コード回帰なし: 外部サーバの信頼性問題であり、.NET ランタイム実装の不具合ではない
- 本サーバは信頼性が低いため、CI 環境での継続的な使用は不適切と判断
#124737 Remove duplicate typeof(decimal) check in IsKnownComparable
- 作成者: @prozolic
- 作成日時: 2026年02月23日 02:22:30(UTC)
- マージ日時: 2026年02月23日 04:43:08(UTC)
- ラベル: area-System.Collections community-contribution
概要
System.Collections.FrozenのConstants.IsKnownComparable<T>()メソッド内で重複していたtypeof(T) == typeof(decimal)チェックを削除しました。メソッドの機能は変わらず、冗長なロジックを排除したコード品質向上のための変更です。
変更内容
- ファイル:
src/libraries/System.Collections.Immutable/src/System/Collections/Frozen/Constants.cs- 主な変更:
typeof(T) == typeof(decimal)の重複チェックを1行削除(-1行)
- 主な変更:
パフォーマンスへの影響
影響なし - 削除されたのは冗長な条件判定であり、実質的な処理フローには変更がありません。わずかにコンパイル後のILサイズが削減される可能性がありますが、実行時パフォーマンスへの影響は無視できるレベルです。
関連Issue
なし
その他
- この変更は
System.Collections.Frozenの型比較ホワイトリスト機能を維持しながら、コード保守性を向上させるリファクタリングです - 変更規模が極めて小さく(1行削除)、既存の動作に影響を与えない安全な修正です
#124734 Improve jit-regression-test skill with structured description and stop signals
- 作成者: @lewing
- 作成日時: 2026年02月23日 00:06:30(UTC)
- マージ日時: 2026年02月23日 17:51:00(UTC)
- ラベル: area-skills
概要
このPRはCopilot AIスキル「jit-regression-test」の説明文を改善するドキュメント更新です。構造化された記述、明示的なストップシグナル、および統合されたヒントを追加することで、スキルの適切な起動と誤用防止を実現します。評価結果では、Claude Haikuのストップシグナル準拠が2/5から5/5に向上しました。
変更内容
| ファイル | 変更 | 詳細 |
|---|---|---|
.github/skills/jit-regression-test/SKILL.md |
+22/-13行 | 以下の3つの改善を実施 |
具体的な変更内容:
構造化された説明の追加 — USE FOR / DO NOT USE FORキーワードを追加し、スキル起動の判定精度を向上
- トリガーフレーズ:JIT回帰テスト作成、再現コード抽出、「このJITバグのテストを書く」など
- アンチトリガー:非JITテスト、再現なしのデバッグ、パフォーマンスベンチマーク
ストップシグナル(ブロッククォート)の追加 — テスト作成すべきでない条件を明示的に指定
- 再現可能なコードがない、既存テストの重複、バグがJITではなくライブラリ内
ヒントの統合 — 4項目から2項目に削減し、Conventionsセクションと重複する内容を削除
パフォーマンスへの影響
影響なし (ドキュメント更新のため、ランタイムパフォーマンスへの影響はありません)
関連Issue
なし
その他
評価結果の改善 — マルチモデル評価で5つの質問項目をテスト実施
- Claude Sonnet:25/25(変化なし)
- Claude Haiku:22/25 → 25/25(ストップシグナル準拠が2/5 → 5/5に向上)
パターン根拠 — 使用されているパターン(構造化説明、ブロッククォートストップシグナル)は、Copilot Skills Guidanceで文書化され、他スキル(ci-analysis、flow-analysis、flow-tracing)でも検証済み
ブロッククォートパターンにより、弱いモデルでも一般知識から推測するのではなく、ストップ条件で正しく拒否する傾向が向上
#124711 More AP-related optimizations
- 作成者: @EgorBo
- 作成日時: 2026年02月21日 21:09:02(UTC)
- マージ日時: 2026年02月23日 11:13:42(UTC)
- ラベル: area-CodeGen-coreclr
概要
このPRはJITコンパイラのAssertion Propagation(AP)最適化を強化し、より多くのアサーションを生成可能にします。共変配列ストア後の範囲チェック削除、ゼロ除算チェックの最適化、到達不可能なコード削除など、複数の最適化シナリオに対応し、生成コードサイズを大幅に削減しています。
変更内容
- assertionprop.cpp: 70行追加 - 新しいアサーション生成ロジック
- valuenum.cpp: 40行追加、22行削除 - Value Numbering改善でアサーション推定精度向上
- valuenum.h: 型定義追加(2行)
- compiler.h: API調整(符号変更1行)
- gentree.cpp: コード調整(3行追加、4行削除)
- earlyprop.cpp: 軽微な変更(1行)
パフォーマンスへの影響
大幅な改善:
- Case1(共変配列ストア): 46バイト → 34バイト(26%削減)、範囲チェック命令削除
- Case2(ゼロ除算チェック): 16バイト → 9バイト(44%削減)、不要なテスト命令削除
- Case3(負数チェック): 71バイト → 28バイト(61%削減)、到達不可能な例外処理コード削除
改善点:
- 範囲チェック(ARRADDR_ST後)の冗長削除
- 除算後のゼロ判定最適化
- 配列サイズの負数チェック排除
- コードサイズ削減によるキャッシュ効率向上
関連Issue
なし
その他
- JITの値番号付け(Value Numbering)エンジンを強化してアサーション推定能力を向上させています
- 既存APIとの互換性維持(内部最適化パスのみ変更)
- 破壊的変更なし
#124705 Allow range check cloning for BBJ_RETURN blocks
- 作成者: @Copilot
- 作成日時: 2026年02月21日 16:50:37(UTC)
- マージ日時: 2026年02月23日 14:01:52(UTC)
- ラベル: area-CodeGen-coreclr
概要
BBJ_RETURN ブロック内の境界チェック(range check)をクローニング対象として許可し、連続した配列/スパンアクセスの冗長な境界チェックを削除する最適化を実装しました。戻り値の式内の複数アクセスで、最後のインデックスのチェックのみが必要になります。
static int ArrayAccess(int[] abcd)
{
// 最適化前:4つの冗長なチェック
// 最適化後:abcd[3]のチェックのみ必要
return abcd[0] + abcd[1] + abcd[2] + abcd[3];
}
変更内容
- rangecheckcloning.cpp(スキャンフェーズ): BBJ_RETURN ブロックの最後のステートメント内の境界チェックを処理対象に追加(JIT32_GCENCODER と genReturnBB チェック付き)
- rangecheckcloning.cpp(クローンフェーズ): BBJ_RETURN ブロック時は diamond/join 形状を作成せず、fast/fallback パス両方が直接 BBJ_RETURN になるよう変更
- ReturnBlockRangeCheckCloning.cs: 定数インデックス、可変オフセット、スパンアクセスパターン、範囲外例外検証をカバーするテスト追加
パフォーマンスへの影響
改善点: 戻り値ステートメント内の冗長な境界チェックが削除され、PerfScore が向上します(PR作成者による「pure PerfScore improvement」の報告)。
懸念点: クローン化されたブロックからコードサイズが増加する可能性があります(サイズ回帰の報告)が、全体的なパフォーマンス利得が優先されています。
関連Issue
#79490(連続する範囲チェックの結合に関する最適化改善)
その他
- x86 環境での epilogue 制限(JIT32_GCENCODER)と shared return block(genReturnBB)の処理により、プラットフォーム固有の制約を考慮
- 既存の
fgFoldCondToReturnBlockと同様の設計パターンを採用
#124652 Fix Uri.GetHashCode hash/equality contract violation for file: URIs
- 作成者: @Copilot
- 作成日時: 2026年02月20日 15:55:43(UTC)
- マージ日時: 2026年02月23日 09:38:17(UTC)
- ラベル: area-System.Net
概要
Uri.GetHashCode()とEquals()のハッシュ/等価性契約違反を修正しました。UNC派生のファイルURI(IsUncOrDosPath=true)と明示的なfile:/// URI(IsUncOrDosPath=false)が等値として比較される場合でも、異なるハッシュコードが生成されていた問題に対応しています。
var uri1 = new Uri("\\\\\u202a"); // UNC path → file:/// に正規化
var uri2 = new Uri("file:///"); // 明示的なfile URI
Console.WriteLine(uri1 == uri2); // True(修正前)
Console.WriteLine(uri1.GetHashCode()); // 異なるハッシュ(修正前)
Console.WriteLine(uri2.GetHashCode()); // 異なるハッシュ(修正前)
変更内容
src/libraries/System.Private.Uri/src/System/Uri.cs
GetHashCode()メソッド内の条件をIsUncOrDosPathからIsFileに変更- すべての
file:スキームURIに対してOrdinalIgnoreCaseハッシング処理を適用
src/libraries/System.Private.Uri/tests/FunctionalTests/UriMethodsTests.cs
Equals_TestDataにUNC派生パス(\\\\\u202a)とfile:///の比較テストケースを追加- 既存の
EqualsTestハーネスで自動的に等価性対称性とハッシュコード一貫性を検証
パフォーマンスへの影響
影響なし。変更は単純な条件判定の置き換えで、ハッシング戦略自体(OrdinalIgnoreCase)は変わりません。IsFileチェックはIsUncOrDosPathと同等の低コストです。
関連Issue
#124651
その他
- 互換性:破壊的変更はありません。修正は
file:URIのハッシュコード値を変更しますが、これは内部実装の詳細であり、.NETの安定性契約の一部ではありません。 - 技術的根拠:
Flags.DosPathとFlags.UncPathは常にsyntax = UriParser.FileUriと共に設定されるため、IsUncOrDosPath ⇒ IsFileは証明可能な不変量です。IsFileを使用することで、すべてのファイルスキームURIに対して一貫したハッシュメカニズムが保証されます。
#124641 [browser][CoreCLR] smoke test libraries on V8 and Firefox
- 作成者: @pavelsavara
- 作成日時: 2026年02月20日 14:36:25(UTC)
- マージ日時: 2026年02月23日 15:24:06(UTC)
- ラベル: arch-wasm area-Infrastructure-coreclr os-browser
概要
ブラウザベースのテスト環境でV8およびFirefoxに対するスモークテストをサポートするために、JavaScriptランタイムローダーにシェルバージョンチェック機能を追加しました。主にTypeScriptコードでのポーランド修正とローダーロジックの強化が行われています。
変更内容
- eng/pipelines/runtime.yml: CI/CDパイプライン設定を2行追加(V8/Firefox テスト実行の自動化関連)
- TypeScript ブートストラップローダー:
src/native/libs/Common/JavaScript/loader/bootstrap.tsにバージョンチェック機能を追加(13行追加) - テストファイル修正:
HttpRequestMessageTest.cs(2行変更)JSImportTest.cs(1行変更)
- ポーランド修正: 複数のTypeScriptファイルで軽微な修正
polyfills.ts(ローダー側で6行、ネイティブ側で1行)http.ts(2箇所で計4行)web-socket.ts(2箇所で計4行)startup.ts、run.ts、exit.ts(各1〜2行)
- ビルド設定:
sendtohelix-browser.targetsで1行変更
パフォーマンスへの影響
影響なし。本変更は主にテストインフラストラクチャとシェルバージョン検証の追加であり、ランタイム実行時のパフォーマンスへの直接的な影響はありません。
関連Issue
なし
その他
- ブラウザベースのテスト環境(特にWebAssembly経由でのMonoランタイム実行)における、複数のJavaScriptエンジン(V8、Firefox)での互換性確保が目的
- TypeScript側での軽微な修正が大多数を占めており、比較的低リスクな変更
- Copilot AIレビュアーが関与していることから、自動レビューが実施されています
#124639 Propagate _abortException in Http2Connection.SetupAsync (#119022)
- 作成者: @yykkibbb
- 作成日時: 2026年02月20日 13:59:56(UTC)
- マージ日時: 2026年02月23日 12:14:01(UTC)
- ラベル: area-System.Net.Http community-contribution
概要
HTTP/2接続のセットアップ中にサーバーが切断された際、ObjectDisposedExceptionではなく実際の原因例外(_abortException)を伝播させるように改善しました。これにより、ネットワーク障害やサーバー側の問題など、実際の失敗理由がより適切に報告されるようになります。
// 修正前: 非情報的なObjectDisposedExceptionが発生
// 修正後: catch block で _abortException ?? e を使用
throw new HttpRequestException("...", _abortException ?? e);
変更内容
- Http2Connection.cs:
SetupAsyncメソッドの例外処理を改善。catch block で_abortException ?? eを内部例外として使用(既存のPerformWriteAsyncおよびAddStreamのパターンと一貫性を持たせる) - HttpClientHandlerTest.Http2.cs: 新しいテストケース
ServerDisconnectDuringSetup_PropagatesMeaningfulExceptionを追加。サーバー切断時に意味のある例外が伝播することを検証
パフォーマンスへの影響
影響なし
関連Issue
#119022
その他
- 既存の858個のHTTP/2テストが全てパスしており、後方互換性に問題なし
- 例外処理の一貫性向上により、デバッグが容易になる
- サーバー起動フレームの処理中に
Abort()が呼び出された場合、保存されている_abortExceptionが正しく利用されるようになる
#124598 Fix ManagedNtlm on big-endian architectures
- 作成者: @ShreyaLaxminarayan
- 作成日時: 2026年02月19日 14:34:55(UTC)
- マージ日時: 2026年02月23日 14:33:24(UTC)
- ラベル: area-System.Net.Security community-contribution
概要
ManagedNtlmの複数のエンディアネスバグを修正し、ビッグエンディアンアーキテクチャ上での不正な動作を解決するプルリクエストです。既存のNtlmテストケースで検証済みです。
変更内容
- NegotiateAuthenticationPal.ManagedNtlm.cs: エンディアネス関連のバグ修正(+19行、-4行)
- ビッグエンディアンプラットフォームでのバイト順序処理の修正
- メモリレイアウトおよびバイト解釈の正確性を確保
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 互換性: ビッグエンディアンアーキテクチャ(PowerPC、s390xなど)での動作が修正されるため、当該プラットフォームでのNTLM認証の互換性向上に寄与します
- テスト検証: 既存のNtlmテストスイートで検証済みであり、リトルエンディアンプラットフォームでの既存動作への影響はないと考えられます
- 修正内容:
System.Net.Securityライブラリ内のNTLM認証実装における、プラットフォーム間のエンディアネス問題を解決する修正です
#124597 [HTTP] Re-enable PostAsync_Cancel_CancellationTokenPassedToContent test
- 作成者: @ManickaP
- 作成日時: 2026年02月19日 14:34:34(UTC)
- マージ日時: 2026年02月23日 10:17:44(UTC)
- ラベル: area-System.Net.Http
概要
HTTP/2キャンセレーション処理の改善に伴い、PostAsync_Cancel_CancellationTokenPassedToContentテストの無効化属性を削除するPRです。本テストは2021年1月に60秒タイムアウトの間欠的な失敗のため無効化されていましたが、HTTP/2実装の大幅な改書とキャンセレーション処理の改善により、根本的な競合状態は解決されたと考えられます。ローカルで20回の反復実行で問題なく動作することを確認済みです。
変更内容
- src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.Cancellation.cs
ActiveIssue属性を削除(テスト無効化解除)outerloop属性を削除(理由が陳腐化のため)- ファイル変更: +1行/-3行
パフォーマンスへの影響
影響なし。本変更はテストの有効化のみであり、製品コードの変更は含まれません。
関連Issue
その他
- 本テストは2021年1月より約3年以上無効化されていました
- 元の失敗:
System.TimeoutException: Task timed out after 00:01:00(キャンセレーション処理中の60秒タイムアウト) - 失敗は製品コードのバグではなく、CI環境の負荷とタイミングに敏感なテストに起因していました
- その後のランタイムの改善により、キャンセレーションとHTTP/2ストリーム処理が堅牢化されたため、テストが安定するようになったと判断されます
#124596 [HTTP] Re-enable GetAsync_UnicodeHostName_SuccessStatusCodeInResponse test
- 作成者: @ManickaP
- 作成日時: 2026年02月19日 14:22:21(UTC)
- マージ日時: 2026年02月23日 15:48:47(UTC)
- ラベル: area-System.Net.Http
概要
.NET runtimeの HTTP クライアント テスト GetAsync_UnicodeHostName_SuccessStatusCodeInResponse が削除されました。このテストは2019年に外部の韓国語ウェブサイト(스타벅스코리아.com)の到達不可により無効化されていましたが、最終的にテスト対象が不安定であるため削除されることになりました。
変更内容
- src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.cs:
ActiveIssue属性で無効化されていたテストコードを削除(-16行)- Unicode ホスト名から Punycode IDN 変換パスをテストするテストケースが完全に削除
パフォーマンスへの影響
影響なし。テストの削除であり、製品コードの変更ではありません。
関連Issue
- #29424 - テスト削除に関連する Issue
その他
初版の PR 説明ではテストを再度有効化する方向でしたが、最終的には外部サイト(スターバックス韓国サイト)への依存が信頼できないと判断され、テスト自体が削除されました。外部リソースへの依存があるテストは保守性が低いため、この決定は妥当と言えます。将来、専用のテストサーバーやモック環境を構築できれば、同等の機能テストの実装が検討される可能性があります。
#124595 [HTTP] Re-enable AuthProxy__ValidCreds_ProxySendsRequestToServer test
- 作成者: @ManickaP
- 作成日時: 2026年02月19日 13:53:25(UTC)
- マージ日時: 2026年02月23日 10:08:40(UTC)
- ラベル: area-System.Net.Http
概要
HTTP/2コネクションプール完全書き直し以降に発生していたAuthProxy__ValidCreds_ProxySendsRequestToServerテストの無効化を解除しました。このテストは2018年10月からHttp2Connection.InvalidateHttp2Connectionのアサーション失敗とコネクションリセットエラーにより無効化されていましたが、HTTP/2実装の刷新により問題が解決されたため復活させます。ローカルで20回の反復テストを実施して安定性を確認済みです。
変更内容
- src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.Proxy.cs
AuthProxy__ValidCreds_ProxySendsRequestToServerメソッドから[ActiveIssue("https://github.com/dotnet/runtime/issues/1507")]属性を削除- 変更:1行削除、0行追加
パフォーマンスへの影響
影響なし。テスト復活による実行時間の増加はありますが、機能的なパフォーマンス変更はありません。
関連Issue
その他
- このテストはOuterLoopテストに分類されており、CI/CDパイプラインの拡張テストスイートで実行されます
- HTTP/2コネクション実装の完全書き直しが、長期間無効化されていた既知の問題を解決したことを示唆しています
- 安定性確認済み(ローカル20回反復で失敗なし)
#124594 [HTTP] Re-enable GetAsync_CancelDuringResponseBodyReceived_Buffered test
- 作成者: @ManickaP
- 作成日時: 2026年02月19日 13:41:45(UTC)
- マージ日時: 2026年02月23日 14:48:11(UTC)
- ラベル: area-System.Net.Http
概要
HTTP クライアントの応答本体受信中のキャンセルテストを再有効化します。このテストは以前、CI 環境での遅延によるタイミング断言の失敗で無効化されていましたが、ValidateClientCancellationAsync でタイムアウト閾値が 30 秒から 60 秒に引き上げられたため、再有効化が可能になりました。
変更内容
- src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.Cancellation.cs
GetAsync_CancelDuringResponseBodyReceived_Buffered_TaskCanceledQuicklyテストメソッドから[ActiveIssue]属性を削除- 変更箇所: +4行/-1行(合計 5 行)
パフォーマンスへの影響
影響なし。この変更はテストの有効化のみで、製品コード(ランタイムやライブラリ)の変更ではありません。ただし、CI パイプラインにおけるテスト実行時間に若干の増加が予想されます。
関連Issue
- #25760(本 PR で解決)
その他
- タイムアウト閾値の緩和(30秒 → 60秒)により、負荷がかかった CI 環境でのタイミング断言の失敗が防止される
- テストの信頼性向上に寄与し、キャンセレーション機能の動作を再度検証可能になる
#124592 Add remarks/seealso docs to DI Add*/TryAdd* methods in DependencyInjection.Abstractions
- 作成者: @Copilot
- 作成日時: 2026年02月19日 13:18:21(UTC)
- マージ日時: 2026年02月23日 09:38:38(UTC)
- ラベル: documentation area-Extensions-DependencyInjection
概要
Dependency Injection AbstractionsライブラリのAddSingleton/AddScoped/AddTransientおよびTryAdd*メソッドに対し、複数登録時のセマンティクスとAdd*とTryAdd*のオーバーロード間の関連性を説明するドキュメント(<remarks>と<seealso>タグ)を追加しました。各呼び出しで無条件に登録が追加され、GetServiceは最後に登録されたインスタンスを返し、GetServices<T>はすべての登録を取得することを明確に記載しています。
変更内容
- ServiceCollectionServiceExtensions.cs —
AddTransient、AddScoped、AddSingletonの全オーバーロード(計17個)に<remarks>を追加。複数登録の動作、GetServiceの動作、GetServices<T>での全取得を説明 - ServiceCollectionServiceExtensions.Keyed.cs —
AddKeyedTransient、AddKeyedScoped、AddKeyedSingletonの全オーバーロード(計17個)に同様の<remarks>を追加。キー付きサービスの取得にはGetKeyedService{T}とGetKeyedServices{T}を使用することを明示 - ServiceCollectionDescriptorExtensions.cs —
TryAddTransient、TryAddScoped、TryAddSingletonの全オーバーロード(計13個)に対応するAdd*メソッドへの<seealso>クロスリファレンスを追加 - ServiceCollectionDescriptorExtensions.Keyed.cs —
TryAddKeyed*メソッド(計13個)に対応するAddKeyed*メソッドへの<seealso>クロスリファレンスを追加
パフォーマンスへの影響
影響なし(ドキュメント変更のみで、動作・実装の変更はありません)
関連Issue
dotnet/runtime#108024 — DI メソッドのドキュメントが例外情報と複数登録時の動作説明を欠いていた問題を解決
その他
- この変更はドキュメント専用であり、ビルド成果物やランタイム動作への影響はありません
- キー付きサービス(
ServiceProviderKeyedServiceExtensions)と非キー付きサービスAPIの動作を正確に区別しており、開発者が正しいAPIを選択する際の参考になります
#123738 [Wasm RyuJIT] Block stores
- 作成者: @kg
- 作成日時: 2026年01月28日 23:35:40(UTC)
- マージ日時: 2026年02月23日 18:10:27(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssembly (Wasm) RyuJIT コンパイラに対して、ブロック単位のメモリ操作(メモリ初期化とコピー)を最適化するための機能を追加しました。構造体のゼロ初期化やコピー操作を、ネイティブな memory.fill および memory.copy Wasm命令に対応させることで、より効率的なコード生成を実現します。
// memory.fill を使用したゼロ初期化の例
unsafe void zeroStruct(S *result) {
*result = default; // memory.fill 命令に変換される
}
// memory.copy を使用した構造体のコピー
unsafe void copyStruct(S *a, S *b) {
*a = *b; // memory.copy 命令に変換される
}
変更内容
- codegenwasm.cpp (+68): Wasm用のコード生成ロジック追加
- lowerwasm.cpp (+57): ブロックストア操作の低レベル最適化処理
- emitwasm.cpp (+20): Wasm命令エミッション処理の拡張
- instrswasm.h (+3): 新規Wasm命令定義
- gentree.cpp/h (+6/+3): IR ノード操作の拡張
- emitfmtswasm.h (+1): 形式定義の更新
- WasmLowering.cs (-29/+14): 既存ロジックの簡素化・統合
パフォーマンスへの影響
改善あり:ネイティブ memory.fill および memory.copy 命令の使用により、メモリ操作のパフォーマンスが向上します。特に大規模な構造体のコピーやゼロ初期化時に顕著な改善が期待できます。従来のループベースの操作よりもWasm VMによって最適化された高速実装が利用されます。
関連Issue
なし
その他
参照型フィールドを含む構造体(例:S2 の string フィールド)のゼロ初期化にも対応しており、メモリ安全性を保証しつつ最適化を実現しています。
#123727 Managed fixes for async task tracking
- 作成者: @rcj1
- 作成日時: 2026年01月28日 19:24:11(UTC)
- マージ日時: 2026年02月23日 22:39:21(UTC)
- ラベル: area-Diagnostics-coreclr runtime-async
概要
このPRはruntime-asyncの非同期タスク追跡機能を強化し、Visual Studioなどのデバッガーによる検査を容易にします。主な追加機能は:1) Continuationのタイムスタンプ追跡(await チェーン内の論理的タスクの開始時刻と実行時間を可視化)、2) TPLイベントの発行(タスクステータス変更の通知と実行スレッド情報の提供)です。
変更内容
- AsyncHelpers.CoreCLR.cs (+119/-6): Continuationのタイムスタンプ追跡用の辞書管理とTPLイベント発行ロジックを追加
- Task.cs (+78/-1): タスクステータス変更時のTPLイベント通知機構を実装
- RuntimeAsyncTests.cs (+47/-0): runtime-async追跡機能の新規テストケースを追加
- System.Runtime.CompilerServices.Tests.csproj (+3/-0): テストプロジェクト構成の更新
パフォーマンスへの影響
タイムスタンプ追跡と TPL イベント発行の追加により、わずかなオーバーヘッドが予想されます。ただしこれはデバッグシナリオ(F5デバッグ時)の検査機能向上が主目的であり、リリースビルドでのパフォーマンス影響の詳細は記載されていません。
関連Issue
#123727
その他
- このPRは Visual Studio の Concord デバッガー機能との統合を想定しており、await チェーン内の複数の Continuation を仮想的な「タスク」として扱う設計になっています
- TPL イベント機構の導入は asyncv1(非runtime-async)との互換性維持が考慮されています
- 多数のレビュアーによる細部検討を経ているため、実装の信頼性が高いと考えられます