Pull Request on 2026年08月06日

dotnet/runtimeにマージされたPull RequestをAIで日本語要約

注意点

このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。


目次

  1. #131918 Fix GetGeneration GC API test failure under interpreter
  2. #131912 [release/10.0] bump azure.storage.blob and azure.identity versions
  3. #131901 [cDAC] Add stackwalk DAC flags
  4. #131896 [cDAC] Make AMD64 unwinding breakpoint-aware
  5. #131889 [release/9.0] Update branding to 9.0.20
  6. #131888 [release/8.0] Update branding to 8.0.31
  7. #131881 Reenable the GC/Regressions/Github/Runtime_76219 test
  8. #131880 [mono][wasm] Fix delegate over static abstract interface method under gsharedvt
  9. #131862 [System.Net] Fix IPNetwork.Contains for mapped IPv4 addresses
  10. #131860 Fix integer overflow infinite loop in WriteStateInfoBase.EnsureSpaceInBuffer
  11. #131855 Feature/cdac contract renumber to v1
  12. #131841 JIT: fix three wasm R2R codegen bugs
  13. #131834 Skip CooperativeBlockingCanCreateThreadsFaster on Debug runtimes
  14. #131831 Remove runtime Helix MSBuild parallelism override
  15. #131803 Fix link-layer address enumeration on macOS
  16. #131788 Share crashing thread id gate between in-proc crash report and createdump.
  17. #131776 [cDAC] Use precise EnC IL
  18. #131770 Extract WASM section model
  19. #131765 Prevent Apple Helix stalls and skip hanging MacCatalyst test
  20. #131630 Improve Apple CryptoKit performance for AesGcm and ChaCha20Poly1305
  21. #131596 Add reply size limits to SmtpReplyReaderFactory
  22. #131582 Fix HTTP/2 Pings not being sent/enforced in multiple scenarios
  23. #130557 Remove unused parameter in RestartGC
  24. #130459 Add deterministic NativeAOT regression smoke test for GC restricted reverse P/Invoke assert path
  25. #130447 Fix cDAC GC info for argument types not yet loaded
  26. #130303 [release/10.0] [mono][interp] Add missing intrinsic for Volatile.ReadBarrier/WriteBarrier
  27. #129863 Move Ubuntu Helix queues to bare 24.04/26.04 VMs
  28. #129846 Implement DnsResolver for Linux
  29. #129292 Fix standalone coreclr tests build

#131918 Fix GetGeneration GC API test failure under interpreter

概要

GetGeneration GC APIのテストがインタープリータモードで失敗する問題を修正します。インタープリータ互換性チェックが正しく機能していなかったため、RequiresProcessIsolationプロパティを調整し、インタープリータガード機能とOutOfProcessTestマーカーが正しく生成されることを確認しました。

変更内容

  • GetGeneration.csproj: RequiresProcessIsolation関連の設定を変更(2行削除)
  • GetGeneration.cs: テストコード側の修正(1行追加、1行削除)

パフォーマンスへの影響

影響なし

関連Issue

#131914

その他

  • 本修正は主にテストの実行環境検証の問題に対するものです
  • インタープリータモード(DOTNET_InterpMode=1)下でのテスト実行時のスキップロジックが正常に機能するよう改善されています
  • プロセス分離テストの設定により、通常実行とインタープリータ実行の両方で適切に動作することが検証されています

#131912 [release/10.0] bump azure.storage.blob and azure.identity versions

概要

Azure Storage BlobおよびAzure Identity パッケージのバージョンを更新するインフラストラクチャ修正です。JIT Rolling Buildで使用されるAzureパッケージの依存関係を更新するもので、#120868のrelease/10.0ブランチへのバックポートです。

変更内容

  • eng/pipelines/common/templates/runtimes/run-test-job.yml: Azure パッケージバージョン更新(1行変更)
  • eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml: Azure パッケージバージョン更新(1行変更)
  • eng/pipelines/coreclr/templates/upload-jits-steps.yml: Azure パッケージバージョン更新(1行変更)
  • eng/pipelines/libraries/superpmi-postprocess-step.yml: Azure パッケージバージョン更新(1行変更)

パフォーマンスへの影響

影響なし

関連Issue

#120868

その他

本変更はビルドパイプラインの設定変更であり、ランタイムやコンパイラのコード変更ではありません。JIT Rolling Build のCI/CDパイプラインで使用されるAzureサービスの依存関係を更新するものです。


#131901 [cDAC] Add stackwalk DAC flags

  • 作成者: @rcj1
  • 作成日時: 2026年08月05日 19:55:05(UTC)
  • マージ日時: 2026年08月06日 23:56:07(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC の IXCLRDataTask.CreateStackWalk API にスタックウォークフラグを追加し、フレーム列挙時にどのフレームを対象とするかを制御できるようにする変更です。新しい CLRDataStackWalkFlag enum を導入し、このフラグを ClrDataStackWalk に連携させることで、「レガシー互換」なフレームをフィルタリングして表示します。

変更内容

  • IXCLRData.cs: COM インターフェース IXCLRDataTask.CreateStackWalk の署名を変更。第1引数を raw uint から CLRDataStackWalkFlag enum に変更。CLRDataStackWalkFlag enum を新規追加。
  • ClrDataTask.cs: CreateStackWalk メソッド実装でフラグ型を伝播。レガシー実装への転送も対応。
  • ClrDataStackWalk.cs: 受け取ったフラグを保持し、フレーム列挙時に「レガシー互換」なフレームを判定する際に使用。

パフォーマンスへの影響

影響なし

関連Issue

#112366

その他

Copilot により、cDAC テストスイートが非ゼロフラグを指定した IXCLRDataStackWalk 列挙をカバーしていないことが指摘されています。フラグ動作のカバレッジ向上とレガシー DAC との同期確認のため、ユニット/統合テストの追加が推奨されています。


#131896 [cDAC] Make AMD64 unwinding breakpoint-aware

概要

AMD64アンワインダーがデバッガーブレークポイント(int3)によって上書きされたエピローグ命令を正しく認識できない問題を修正します。デバッガーパッチテーブルをデータディスクリプタ経由で公開し、cDACが元の命令バイトを読み取れるようにすることで、ブレークポイント設定時でも正確なスタックウォークを実現します。

変更内容

  • CoreCLR側: datadescriptor.inc/hとcontroller.hにAMD64専用のデバッガーパッチテーブル型とグローバル変数を追加
  • cDAC側:
    • IDebugger契約にReadInstructionByteメソッドを追加
    • Debugger_1でパッチテーブルのキャッシング機構を実装
    • AMD64アンワインダーのエピローグデコーディングでReadInstructionByteを使用するよう変更
    • DebuggerPatchTableとDebuggerControllerPatchのマネージドデータディスクリプタ型を新規追加
  • ドキュメント: Debugger.mdおよびdata-descriptor-meanings.jsonを更新
  • テスト: ReadInstructionByteの動作とキャッシュフラッシュを検証するユニットテストを追加

パフォーマンスへの影響

影響なし。パッチテーブルはオンデマンドで読み取られ、キャッシュによってアクティブなパッチまでの効率的な参照が可能です。

関連Issue

#112273

その他

  • AMD64専用の変更であり、他のアーキテクチャへの影響なし
  • 破壊的変更なし(新規API追加のみ)
  • MDbgでのレグレッション検証済み(レガシーDAC/cDAC両対応)
  • 内部的にエンドツーエンドのレグレッションテストが追加されている

#131889 [release/9.0] Update branding to 9.0.20

概要

.NET 9.0のバージョンをパッチレベルで 9.0.19 から 9.0.20 へ更新するブランディング変更です。

変更内容

  • eng/Versions.props: PatchVersion を 19 から 20 に更新(+2 -2行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは release/9.0 ブランチへのマージを想定した自動化された更新です
  • リビジョンレベルのバージョン更新のみであり、機能変更は含まれません

#131888 [release/8.0] Update branding to 8.0.31

概要

.NET 8.0のパッチバージョンを30から31にアップデートするバージョンブランディング変更です。release/8.0ブランチでの定期的なバージョン管理更新です。

変更内容

  • eng/Versions.props: パッチバージョン番号を30から31に更新(2行変更)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

なし


#131881 Reenable the GC/Regressions/Github/Runtime_76219 test

  • 作成者: @janvorli
  • 作成日時: 2026年08月05日 15:19:54(UTC)
  • マージ日時: 2026年08月06日 17:41:02(UTC)
  • ラベル: area-GC-coreclr

概要

以前無効化されていたGCリグレッションテスト(Runtime_76219)を再度有効化するPRです。作成者によると、このテストは現在パスしており、x86 Windows および arm64 macOS での元の障害は再現できなくなっているとのことです。

変更内容

  • Runtime_76219.cs: テストコード内の無効化フラグを削除(1行削除)
  • Runtime_76219.csproj: テストプロジェクト設定から無効化関連の設定を削除(4行削除)

パフォーマンスへの影響

影響なし

関連Issue

#78899

その他

このテストの元の障害は#76219に関連していると考えられます。


#131880 [mono][wasm] Fix delegate over static abstract interface method under gsharedvt

概要

Mono WebAssembly AOT(llvmonly)で、静的抽象インターフェースメソッド上の委譲がgsharedvt(汎用的な値型ジェネリック実体化)を通じて解決される場合の「function signature mismatch」エラーを修正しました。SixLabors.ImageSharpのPixelOperations<TPixel>パターンが該当します。

変更内容

  • src/mono/mono/mini/method-to-ir.c: CEE_LDFTN+委譲newobjの最適化パスを拡張し、gshared_static_virtualの場合にMONO_RGCTX_INFO_VIRT_METHOD経由でターゲットを解決してmini_llvmonly_init_delegateで委譲を直接初期化。これにより、シグネチャ不一致の原因となる汎用的なnewobj Func<T>::.ctorフォールバックを回避します。
  • src/tests/Loader/classloader/StaticVirtualMethods/Regression/GitHub_130545.cs: 静的抽象メソッド上の委譲を通じたLazy初期化パターンを再現するリグレッションテストを追加
  • src/tests/Loader/classloader/StaticVirtualMethods/Regression/GitHub_130545.csproj: テストプロジェクトの最小構成

パフォーマンスへの影響

影響なし(最適化パスの範囲拡大により、該当ケースの実行効率向上の可能性あり)

関連Issue

#130545

その他

修正はcfg->llvm_onlyでゲートされており、llvmonly AOTコンパイル時のみ適用されます。JITインタープリタモードでは既に動作していたため、AOT固有の問題です。


#131862 [System.Net] Fix IPNetwork.Contains for mapped IPv4 addresses

  • 作成者: @wfurt
  • 作成日時: 2026年08月05日 09:06:04(UTC)
  • マージ日時: 2026年08月06日 09:49:41(UTC)
  • ラベル: area-System.Net

概要

IPNetwork.Contains メソッドが IPv4 マップドアドレスを使用する際の比較ロジックを修正しました。従来は照会アドレスのアドレスファミリーから比較パスを選択していましたが、ネットワークアドレスのアドレスファミリーから選択するように変更。これにより、IPv6 ネットワークに対する IPv4 マップドアドレスの照会が正しく IPv6 セマンティクス(128ビットプレフィックス)を使用するようになりました。

変更内容

  • System/Net/IPNetwork.cs: 比較パスの選択ロジックを修正(1行追加、1行削除)。ネットワークのアドレスファミリーに基づいて比較パスを決定するよう変更
  • IPNetworkTest.cs: IPv4 マップドアドレスを使用した含有判定テストケース(10行追加)。IPv6 ネットワーク内外の両ケースでのカバレッジを追加

パフォーマンスへの影響

影響なし

関連Issue

#131861

その他

  • ビルドテスト実施:6,311 件のテストすべてパス
  • 破壊的変更なし。公開API IPNetwork.Contains の動作修正(バグ修正)

#131860 Fix integer overflow infinite loop in WriteStateInfoBase.EnsureSpaceInBuffer

  • 作成者: @Copilot
  • 作成日時: 2026年08月05日 09:00:26(UTC)
  • マージ日時: 2026年08月06日 09:37:36(UTC)
  • ラベル: area-System.Net

概要

WriteStateInfoBase.EnsureSpaceInBufferメソッドのバッファサイズ計算時の整数オーバーフロー問題を修正します。バッファサイズが約1GB に近づくと、int型でのサイズ倍化がオーバーフローして負の値になり、ループ終了条件が永遠に真となってスレッドがハングする不具合を解決します。

修正内容:バッファサイズ計算をlong型で行い、ループ条件が正しく機能するようにしてから、checkedキャストでintに変換。実際のメモリ割り当て時にサイズが範囲外の場合はOverflowExceptionで即座に失敗させます。

変更内容

  • src/libraries/System.Net.Mail/src/System/Net/Mime/WriteStateInfoBase.cs
    • EnsureSpaceInBufferメソッドのバッファサイズ倍化ロジックを修正
    • long型の累積変数newsizeを使用してオーバーフロー防止
    • メモリ割り当て時にchecked((int)newsize)で型変換し、範囲外の値を検出

パフォーマンスへの影響

影響なし(ロジック修正による機能面の改善で、実行速度やメモリ効率の変化なし)

関連Issue

#131823

その他

この修正は、約1GB以上のバッファが必要になるシナリオでのハング問題を解決するセキュリティ/安定性関連の修正です。System.Net.Mailライブラリの内部実装の変更で、公開APIには影響しません。


#131855 Feature/cdac contract renumber to v1

  • 作成者: @noahfalk
  • 作成日時: 2026年08月05日 05:43:27(UTC)
  • マージ日時: 2026年08月06日 01:56:02(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC(Common Data Access Contract)の契約バージョンを1から開始するよう再番号付けするもの。開発段階のみのバージョンを統合し、PrecodeStubs、ExecutionManager、DebugInfoの実装をc1に統一し、古いバージョンの実装を削除します。これにより契約体系をシンプル化し、CoreCLRの契約登録、テスト、仕様ドキュメントを更新します。

変更内容

  • 契約実装の統合: PrecodeStubs_2/3、ExecutionManager_2、DebugInfo_2を削除し、c1に機能を統合
  • ExecutionManagerの最適化: NibbleMapLinearLookupを削除し、NibbleMapConstantLookupをc1で使用
  • CoreCLRの契約登録: datadescriptor.incで広告契約バージョンを新しいc1セットに更新(StressLogはc2のまま)
  • テスト更新: バージョン駆動テストをc1のみに簡略化し、モックディスクリプタレイアウトを調整
  • ドキュメント更新: PrecodeStubs.md、ExecutionManager.md、DebugInfo.mdを統合後のc1仕様に更新し、data-descriptor-overrides.json/data-descriptor-meanings.jsonから古いバージョン関連の記述を削除

パフォーマンスへの影響

影響なし

関連Issue

#131790

その他

  • 本PRは131790の全コミットを含んでおり、131790がマージされたら再ベースしてスカッシュされる予定です
  • Copilotレビューで1件のコメントが抑制されています:PrecodeStubs_1.csでDynamicHelperとUMEntryのprecode型がPrecodeStubsCommon.GetPrecodeFromEntryPoint()で未サポートのため、これらを処理するか報告を避ける必要があることが指摘されています

#131841 JIT: fix three wasm R2R codegen bugs

概要

WebAssembly ReadyToRun (R2R) コンパイル時のJIT codegen不具合を修正するパッチです。wasm向けのテスト実行で発見された3つのバグに対応しています:

  1. ValueNum offset peeling時のメモリサイズ読み込み誤り
  2. Vector.GetElement/WithElement で範囲外定数インデックス処理
  3. wasm try/catchヘッダーのエッジ反転による不具合

変更内容

  • src/coreclr/jit/valuenum.cpp: ref/byref定数のオフセットをホストサイズのsize_tで読み込むように修正。target_ssize_tでの読み込みはwasm上で誤ったサイズの読み込みになるため。
  • src/coreclr/jit/hwintrinsic.cpp: Vector.GetElement/WithElementで定数レーン インデックスが範囲外の場合、wasm環境では例外を投げるソフトウェア実装にフォールバック。非定数インデックスはジャンプテーブル方式を継続。
  • src/coreclr/jit/fgopt.cpp: fgUpdateFlowGraphが wasm try/catchヘッダーのGT_WASM_JEXCEPTを反転しないように制限。エッジの極性はtry_table codegenに必須。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはwasm R2R実装の内部JITコンパイラ処理の修正であり、公開APIには影響しません。wasm特有の制約(メモリレイアウト、例外処理モデル)への対応となっています。


#131834 Skip CooperativeBlockingCanCreateThreadsFaster on Debug runtimes

  • 作成者: @Copilot
  • 作成日時: 2026年08月04日 22:04:02(UTC)
  • マージ日時: 2026年08月06日 19:47:12(UTC)
  • ラベル: area-System.Threading

概要

ThreadPoolTests.CooperativeBlockingCanCreateThreadsFasterテストがDebugランタイム上で時間的に不安定になる問題を修正するテスト専用変更です。Debugランタイムが遅すぎるためテストのタイミング仮定が成り立たなくなるため、Debugランタイムではテストをスキップし、Release/Checkedでのみ実行するようにします。

public static bool IsThreadingAndRemoteExecutorSupportedAndNotDebugRuntime =>
    IsThreadingAndRemoteExecutorSupported && !PlatformDetection.IsDebugRuntime;

変更内容

  • ThreadPoolTestsにIsThreadingAndRemoteExecutorSupportedAndNotDebugRuntime条件を追加
    • 既存のIsThreadingAndRemoteExecutorSupportedと!PlatformDetection.IsDebugRuntimeを組み合わせた条件
  • CooperativeBlockingCanCreateThreadsFasterのConditionalFactをこの新しい条件に切り替え
    • Release/Checked構成では実行、Debug構成ではスキップ

パフォーマンスへの影響

影響なし(テスト専用変更)

関連Issue

#129976、#66765

その他

  • 製品コードへの影響なし(テストのみの変更)
  • 過去の調査(#66765)により、Debug構成下の同時負荷によるタイムアウトが失敗の原因として判明しているため、このアプローチで定着していた問題が解決される

#131831 Remove runtime Helix MSBuild parallelism override

概要

Runtime Helix CI パイプラインの MSBuild 並列処理設定を簡素化するPRです。Helix Job Monitor が有効化されたことにより、ランタイムテスト送信時に強制していた /maxcpucount:55 オーバーライドを削除し、共有テンプレートのデフォルト動作にフォールバックさせます。

変更内容

  • run-test-job.yml: 条件付きの msbuildParallelism: '/maxcpucount:55' オーバーライドを削除(-11行)
  • send-to-helix-step.yml: 関連する設定を調整(+1/-2行)
  • 共有send-to-Helixテンプレートのデフォルト /maxcpucount の動作はそのまま維持

パフォーマンスへの影響

影響なし。本変更は CI インフラの並列化戦略の切り替えであり、ランタイム製品のパフォーマンスには影響を与えません。

関連Issue

#131614

その他

  • ランタイムテストのみに関連する CI パイプライン YAML の変更であり、製品コードへの影響なし
  • リスク度は低く、既存の共有テンプレートのデフォルト値にフォールバックするため、破壊的変更なし
  • Helix Job Monitor の有効化に伴う、意図された並列処理設定の変更

#131803 Fix link-layer address enumeration on macOS

  • 作成者: @wfurt
  • 作成日時: 2026年08月04日 13:46:15(UTC)
  • マージ日時: 2026年08月06日 09:47:51(UTC)
  • ラベル: area-System.Net

概要

macOS上のリンク層アドレス列挙でバッファオーバーフロー脆弱性を修正するPRです。ネットワークインターフェース列挙時にリンク層アドレス(AF_LINK/sockaddr_dl)が従来の8バイトバッファを超えた場合の安全な処理を実装しています。

変更内容

  • pal_interfaceaddresses.h: ネイティブ構造体のリンク層アドレスバッファを8バイトから12バイトに拡張
  • pal_interfaceaddresses.c: AF_LINKアドレスのコピー時に、ソースの報告容量と宛先バッファサイズの両方に基づいて長さをクランプ。SunOS用にsdl_lenが利用できない場合の特別な処理を追加。また、インターオップ構造体レイアウトの検証用ネイティブコンパイル時アサーションを追加
  • Interop.EnumerateInterfaceAddresses.cs: マネージド側のインターオップ構造体を12バイトバッファに対応

パフォーマンスへの影響

影響なし

関連Issue

#125711

その他

  • 既存のmacOS インターフェース列挙テスト(246件)に合格
  • ハードウェア固有のシナリオについては特別なリンク層アダプタが必要で、ローカルでの再現は未実施。ネイティブコンパイルとテスト、専門家レビューによって境界とレイアウトを検証済み
  • Copilotによる潜在的な脆弱性指摘として、NumAddressBytesがクランプして0になった場合でもLLADDR(sadl)が計算されることが指摘されています

#131788 Share crashing thread id gate between in-proc crash report and createdump.

  • 作成者: @lateralusX
  • 作成日時: 2026年08月04日 09:30:52(UTC)
  • マージ日時: 2026年08月06日 18:13:19(UTC)
  • ラベル: area-PAL-coreclr

概要

CoreCLR PALのクラッシュ診断シリアライゼーションを統一し、out-of-proc createdump パスと in-proc クラッシュレポート間で g_crashingThreadId をキーとした単一の共有ゲート(TryEnterCrashDumpGate/ExitCrashDumpGate)を導入。CrashDumpSerializeMode {None, NoWait, WaitInfinite} を新たに定義し、両メカニズムのシリアライゼーションをPALで一元管理し、複数のクラッシュ診断メカニズムの競合を防止。

変更内容

  • src/coreclr/pal/src/thread/process.cpp: 共有クラッシュダンプゲートヘルパーを追加。createdump 起動ロジックを PROCLaunchCreateDump に分離し、PROCCreateCrashDump でゲート制御。
  • src/coreclr/pal/src/include/pal/process.h: CrashDumpSerializeMode enum を導入、PROCCreateCrashDumpIfEnabled シグネチャを更新。
  • src/coreclr/pal/src/exception/signal.cpp: 致命的シグナルパスと SIGTERM パスを新しい CrashDumpSerializeMode 値に対応。
  • src/coreclr/pal/inc/pal.h: in-proc クラッシュレポートコールバック ABI から serialize パラメータを削除し、シリアライゼーションがPAL所有であることを明記。
  • src/coreclr/debug/crashreport/inproccrashreporter.cpp: ディスパッチャーシグネチャを更新、内部ブロッキング/シリアライゼーションを削除してPALゲート動作に依存。

パフォーマンスへの影響

影響なし(シリアライゼーション機構の統一による競合状態の排除で堅牢性向上)

関連Issue

なし

その他

互換性への影響: in-proc クラッシュレポートコールバック ABI の破壊的変更(serialize パラメータ削除)。シリアライゼーション責務がPALに移行。

注記(Copilot指摘): on-demand レポート実行中に別スレッドで致命的シグナルが発生した場合、in-proc クラッシュレポートが暗黙的にスキップされ、パフォーマンスへの悪影響の可能性あり。


#131776 [cDAC] Use precise EnC IL

  • 作成者: @rcj1
  • 作成日時: 2026年08月03日 22:42:05(UTC)
  • マージ日時: 2026年08月06日 16:55:49(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC(Common Data Access)の ClrDataMethodDefinition を更新し、Edit-and-Continue(EnC)編集が有効な場合に、最新のEnC IL ヘッダーを優先的に使用するようにしました。これにより、デバッグスタック内の他の部分との動作が統一されます。

変更内容

  • ClrDataMethodDefinition.cs: GetILExtentStart() メソッドで、MethodDesc を解決して ICodeVersions コントラクトをクエリし、アクティブなEnC IL ヘッダーを取得します。利用不可の場合は ILoader.GetILHeader にフォールバックします。
  • IXCLRDataProcessTests.cs: IXCLRDataProcessTests のモックを拡張し、新しいメソッド呼び出しに対応するセットアップを追加。アクティブなEnC IL ヘッダーが使用されることを検証するユニットテストを追加します。

パフォーマンスへの影響

潜在的な懸念: GetILExtentStart() は TryResolveMethodDesc() を無条件に呼び出すようになり、ICodeVersions コントラクトが利用不可な場合でも余分なメタデータ参照が発生します。Copilot のコメントでは、ICodeVersions が利用可能な場合のみ MethodDesc 解決を実行することや、既に計算されたモジュールハンドルを再利用して二重呼び出しを避けることを推奨しています。

関連Issue

なし

その他

Copilot からの指摘により、以下の改善機会が指摘されています:

  • GetLookupTables() と GetModuleLookupMapElement(TargetPointer, ...) のモック設定が既存の ILoader インターフェースと不一致の可能性
  • ICodeVersions が存在してもEnCでない場合(ReJIT など)のテストカバレッジが不足している
  • 不要なメタデータ参照を削減するために、ICodeVersions 利用可能時のみ MethodDesc 解決を行うことが推奨されている

#131770 Extract WASM section model

概要

WASM オブジェクトライターのセクション処理をリファクタリングし、セクション関連の型を専用ファイルに抽出するPRです。WasmSection、WasmDataSection、WasmDataSegment、WebcilSectionを個別ファイルに移動し、セクション管理を統一するWasmSectionsヘルパークラスを導入します。これはNativeAOTとReadyToRunの間で共有されるベースWasmObjectWriterの抽出に向けた4PR構成の第1段階です。

変更内容

  • WasmObjectWriter.cs: List<WasmSection> + 名前辞書から WasmSections ラッパーへの切り替え。セクション検索・カウントの更新
  • WasmSection.cs: 基本セクション型の抽出(ヘッダエンコード/出力 + カウント処理)
  • WasmDataSection.cs: 複数セグメントを複数行/パディング付きで出力するセクションの抽出
  • WasmDataSegment.cs: データセクション出力時に使用されるデータセグメント型の抽出
  • WebcilSection.cs: ReadyToRun Webcil形式のラップされたデータセクションの実装
  • WasmSections.cs: セクションリスト + 名前→インデックスマッピングを一元化するラッパー
  • ILCompiler.ReadyToRun.csproj: 抽出されたWASMオブジェクトライターソースのコンパイルインクルード追加

パフォーマンスへの影響

影響なし(コード移動に伴う機械的なリファクタリングで、既存の出力とセクション作成ポリシーを保持)

関連Issue

なし

その他

  • レビュアーからの指摘:WebcilSection.csの冗長な_streamフィールド削除後、基底クラスのStreamプロパティを使用すべき(実装の一貫性向上)
  • 本PRは動作変更を意図しない機械的なリファクタリング層として位置づけられている
  • 後続のPR(#131771、#131772、#131778)で、型付きセクション、WebcilオブジェクトライターのIntroduction、共有WASM ロジックの統合が予定されている

#131765 Prevent Apple Helix stalls and skip hanging MacCatalyst test

概要

Apple Helixでの実行時のタイムアウト問題を解決するPRです。ASP.NET Core開発証明書の自動生成を無効化してXHarness起動前のブロッキングを防ぎ、MacCatalystでの特定のハンギングテストをスキップします。

変更内容

  • sendtohelix-mobile.targets: Apple モバイルHelix ワークアイテムのプリコマンドで DOTNET_GENERATE_ASPNET_CERTIFICATE=false を設定。これにより、XHarness起動前にdotnetの初回実行時の証明書生成がブロッキングされるのを防止
  • SearchValues.cs: MacCatalyst CoreCLR環境でのみ SearchValues_GetValues テストをスキップ(#131891で追跡中のランタイムハング対応)。Monoおよび NativeAOT は引き続きカバー

パフォーマンスへの影響

影響なし(テスト実行時のタイムアウト削減により信頼性向上)

関連Issue

#131891

その他

  • Mono および NativeAOT でのテストカバレッジは維持されます
  • 変更はCI/CD環境設定(Helix)と特定プラットフォーム向けテスト調整が中心です

#131630 Improve Apple CryptoKit performance for AesGcm and ChaCha20Poly1305

  • 作成者: @vcsjones
  • 作成日時: 2026年07月31日 01:45:56(UTC)
  • マージ日時: 2026年08月06日 01:25:44(UTC)
  • ラベル: area-System.Security

概要

Apple CryptoKitを使用したAesGcmとChaCha20Poly1305のパフォーマンスを改善するPRです。ネイティブSymmetricKeyのキャッシング、空のAAD(Associated Authenticated Data)パラメータの省略、新しいAppleプラットフォーム(v26以降)での不要なデータコピーの削除により、暗号化・復号化操作の呼び出しオーバーヘッドを削減します。

変更内容

  • pal_swiftbindings.swift: AEAD関数をネイティブSymmetricKeyハンドルを消費する形式に変更;空のAADを省略;OS バージョンに基づいてスライスコピーの回避策を条件付きで適用;キーのインポート/解放機能を追加
  • pal_swiftbindings.h: 新しいSwiftバインディング(キーのインポート/解放用)をエクスポート
  • entrypoints.c: 新しいエントリポイントを登録
  • ChaCha20Poly1305.Apple.cs / AesGcm.Apple.cs: FixedMemoryKeyBoxを新しいSafeAppleCryptoSymmetricKeyHandleに置き換え
  • Interop.Aead.cs: AEAD相互運用シグネチャを更新;キーのインポート/解放用P/Invokeを追加

パフォーマンスへの影響

大幅な改善(内部実装レベルの最適化)

ベンチマーク結果(Apple M1 Ultra、macOS 26.6):

  • AesGcm Encrypt: 27%改善(1呼び出し、ペイロード16B)から26%改善(5呼び出し、ペイロード1024B)
  • AesGcm Decrypt: 12%~11%改善
  • ChaCha20Poly1305 Encrypt: 24%~16%改善
  • ChaCha20Poly1305 Decrypt: 9%~7%改善

特に単一ペイロードや複数呼び出しにおいて、空AAD(AADサイズ0)時に顕著な改善が見られます(約250nsのオーバーヘッド削減)。複数呼び出しではキャッシング効果が累積し、さらなる効果が期待できます。メモリ割り当ては変化なし。

関連Issue

#131630

その他

  • 互換性: 公開API(AesGcm.cs、ChaCha20Poly1305.cs)に変更なし;内部実装の最適化のみ
  • プラットフォーム依存: macOS 26.0以降でData.copyBytesの不具合回避を削除可能(swift-foundation Issue #638対応)
  • 注意点: Copilotによる指摘で、macOS 26.0の利用可能性チェックが正しく機能するか、および#availableが実際にswift-foundationの修正が含まれたOS版に対応しているか、確認が推奨されています

#131596 Add reply size limits to SmtpReplyReaderFactory

  • 作成者: @liveans
  • 作成日時: 2026年07月30日 15:41:49(UTC)
  • マージ日時: 2026年08月06日 08:19:22(UTC)
  • ラベル: area-System.Net

概要

System.Net.Mail の SMTP クライアントにおいて、SMTPサーバーからのリプライサイズに上限を設定し、無制限のバッファリングを防ぐセキュリティ対策です。単一行は16KiB、マルチライン全体は256KiBの制限を実装しています。

変更内容

  • SmtpReplyReaderFactory.cs: リプライ解析時に単一行16KiB、全体256KiBのサイズ制限を追加し、超過時に例外をスロー
  • LoopbackSmtpServer.cs: テスト用LoopbackサーバーがLargeなリプライを送信できるよう、固定1KBバッファを超過する場合の動的割り当てに対応
  • SmtpClientConnectionTest.cs: 過度に大きいSMTPリプライ(単一行・複数行)がエラーとなることを検証する機能テストを追加

パフォーマンスへの影響

影響なし。本変更はメモリ使用量の歯止めと悪意あるサーバーからの過度なリプライに対する防御力強化を目的としており、通常のSMTP通信性能には影響ありません。

関連Issue

#131596

その他

内部実装(SmtpReplyReaderFactory)の変更であり、公開APIに対する破壊的変更はありません。超過時の例外発生による既存コードへの影響は、不正な過度なリプライを送信するサーバーとの通信を試みる稀なケースに限定されます。


#131582 Fix HTTP/2 Pings not being sent/enforced in multiple scenarios

  • 作成者: @MihaZupan
  • 作成日時: 2026年07月30日 11:57:42(UTC)
  • マージ日時: 2026年08月06日 12:39:21(UTC)
  • ラベル: area-System.Net.Http

概要

HTTP/2接続のkeep-alive ping送信・検証が、接続がコネクションプール内で「利用可能」な状態でなくなる複数のシナリオ(ストリーム上限到達、GOAWAY受信、ハンドラー破棄)で停止する問題を修正しました。修正により、ハートビートタイマーの寿命を延長し、プール内で不要になった接続やハンドラー破棄後でも進行中のリクエストのpingを継続します。

変更内容

  • HttpConnectionPool.Http2.cs: HTTP/2接続のハートビート専用トラッキングリストを導入し、従来の「利用可能な接続」リストと分離。HeartBeat()メソッドでハートビート専用リストを使用。
  • Http2Connection.cs: 接続をプールのハートビートに登録/解除するライフサイクル管理を追加。setup完了までpingをゲート。
  • HttpConnectionPoolManager.cs: ハートビートタイマーの破棄タイミングを変更。ハンドラー破棄時には停止せず、マネージャー破棄時かつハートビート対象の接続がなくなった時点で停止。
  • HttpConnectionPool.cs: ドレイン中のHTTP/2接続がハートビート対象の場合、プール破棄を防止。
  • SocketsHttpHandlerTest.Http2KeepAlivePing.cs: GOAWAY/最大同時ストリーム数/ハンドラー破棄シナリオでのkeep-alive pingの動作を検証する機能テストを追加。

パフォーマンスへの影響

影響なし

関連Issue

#120179

その他

修正は内部実装(SocketsHttpHandler/HTTP/2コネクションプール管理)の変更であり、公開APIへの影響はありません。


#130557 Remove unused parameter in RestartGC

概要

GCのRestartGC関数の未使用パラメータを削除するリファクタリング。ただし、スタンドアロンGCで使用されている公開APIが変更されるため、破壊的変更となる。

変更内容

  • gcinterface.ee.h: RestartGC関数のシグネチャを変更(パラメータ削除)
  • gcenv.ee.h, gcenv.ee.standalone.inl: スタンドアロンGC向けインターフェースを更新
  • VM層(複数ファイル): RestartGC呼び出しサイトを更新(callcounting.cpp, comutilnative.cpp, crashreportstackwalker.cpp, eventing, gccover.cpp, gcenv.ee.cpp, loaderallocator.cpp, proftoeeinterfaceimpl.cpp, threadsuspend.cpp等)
  • GCSample.cpp, nativeaot/Runtime: サンプルコードとNativeAOTランタイムを更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

破壊的変更: このPRはスタンドアロンGC向けの公開APIを変更するため、スタンドアロンGC実装に依存するコードはコンパイル失敗の可能性あり。


#130459 Add deterministic NativeAOT regression smoke test for GC restricted reverse P/Invoke assert path

  • 作成者: @Copilot
  • 作成日時: 2026年07月10日 03:00:58(UTC)
  • マージ日時: 2026年08月06日 18:18:21(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOTランタイムにおいて、GC制限されたリバースP/Invoke呼び出しパスの回帰テストを追加します。背景GCがマネージド[UnmanagedCallersOnly]コールバックを呼び出す際に、Thread::InlineTryFastReversePInvokeの断言エラーを引き起こしていた問題に対応します。テストのみの変更で、製品動作は修正されていません。

// テストで強制的に並行Gen2 GCを駆動
GC.Collect(2, GCCollectionMode.Forced, blocking: false, compacting: false);

// トラッカーGCコールバック登録中に並行Gen2を確認
if (GC.GetGCMemoryInfo().Generation == 2 && GC.GetGCMemoryInfo().Concurrent)
{
    // #110683の対象となる回帰テストシナリオ
}

変更内容

  • src/coreclr/nativeaot/Runtime/thread.inl (+2/-2)

    • リバースP/Invoke高速パスの断言条件を緩和し、IsGCSpecial()スレッドでの実行を許可
  • src/tests/Interop/COM/ComWrappers/GcRestrictedCalloutReversePInvoke/ (新規追加)

    • Program.cs: トラッカーサポート登録、トラッカーオブジェクト生成、並行Gen2 GC駆動による回帰テスト
    • GcRestrictedCalloutReversePInvoke.csproj: プロセス分離テスト設定、ネイティブ依存性のCMakeProject参照、Apple/Android除外設定

パフォーマンスへの影響

影響なし(テストのみの追加)

関連Issue

#110683

その他

  • テストは確定的な再現を実現するため、無限ループではなくタイムアウト+同期(SpinWait)による有界ループを採用
  • Apple mobile および Android ターゲットは除外(必要なネイティブ依存性が利用不可)
  • テスト実行環境の制約により、Release設定ではなくChecked設定で検証されている

#130447 Fix cDAC GC info for argument types not yet loaded

概要

cDAC(Compact Debugger Address Consumer)のGC情報レポート機能における、メソッド引数のシグネチャに含まれる未ロード型の処理を修正します。PrestubMethodFrame実行中など、型がまだ完全にロードされていない時点でのサンプリングで、参照型引数の省略やbyref-like型のジェネリックフィールドのGCRefMapエントリ喪失が発生していた問題を解決します。

変更内容

  • CallingConvention_1.cs:シグネチャデコーディングロジックを刷新し、SignatureTypeInfoProviderを導入。未解決型に対する構造的表現を保持
  • SignatureTypeInfo.cs, SignatureTypeInfoProvider.cs:新規追加。型ハンドルが利用不可な場合でも型情報を保持する構造的表現を提供(ExactTypeHandle、GenericTypeDefinition、ジェネリック引数を記録)
  • CdacTypeHandle.cs:型の分類判定をより堅牢化
  • CallingConvention.md:シグネチャデコーディングの入出力、構造的型表現、ArgIteratorの動作を定義する契約ドキュメント追加
  • NotYetLoadedArgType ストレステストデバッギー追加:参照型引数の未解決ケースを再現(AssemblyResolveで型ロードを遅延)
  • SignatureTypeInfoProviderTests.cs:218行の新規ユニットテスト追加

パフォーマンスへの影響

影響なし

関連Issue

#130447

その他

  • 修正は診断機能(SOS/dumpコマンド)のGCルート報告に限定。ランタイムGCには影響しない
  • CallingConvention契約に新しい内部プロバイダーを導入(SRM.SignatureDecoderに倣う)。公開API、Signature契約API、データディスクリプタの追加なし
  • ローカルでcDACユニットテストとUsageテストが合格

#130303 [release/10.0] [mono][interp] Add missing intrinsic for Volatile.ReadBarrier/WriteBarrier

概要

Mono インタープリターで Volatile.ReadBarrier と Volatile.WriteBarrier の呼び出しでクラッシュしていた問題を修正するため、これらのAPIに対する欠落していたインライン化(intrinsic)を追加します。.NET 10で新たに追加されたこのAPIを使用するライブラリ(例:Microsoft.CodeAnalysis.CSharp 5.6.0以降)の利用時に、iOS/Android デバッグおよび WebAssemblyで問題が発生していました。

変更内容

  • src/mono/mono/mini/interp/transform.c: Mono インタープリターに Volatile.ReadBarrier/Volatile.WriteBarrier のインライン化ロジックを追加(3行追加)
  • src/libraries/System.Threading/tests/VolatileTests.cs: 両APIの動作検証テストを追加(64行追加)
  • src/libraries/System.Threading/tests/System.Threading.Tests.csproj: テストプロジェクト設定の更新

この修正は release/10.0 ブランチへのバックポート(#124538 の既存修正をマージ)です。

パフォーマンスへの影響

影響なし。実装はフルメモリバリアを保守的に発行するもので、パフォーマンス最適化は目的としていません。

関連Issue

#124538(オリジナルの修正)

その他

  • リスク評価: Low。新しいAPIに対するインライン化を追加するだけのため、影響範囲は限定的です
  • テスト実績: シンプルなアプリケーションで動作確認済み
  • 対象環境: iOS、Android(デバッグ)、WebAssemblyでのMono インタープリター実行時

#129863 Move Ubuntu Helix queues to bare 24.04/26.04 VMs

  • 作成者: @richlander
  • 作成日時: 2026年06月25日 18:32:56(UTC)
  • マージ日時: 2026年08月06日 15:41:51(UTC)
  • ラベル: area-Infrastructure

概要

Ubuntu 26.04および24.04 Helix VMが利用可能になったため、テストインフラストラクチャをコンテナベースのAzureLinux環境からベアUbuntu VMに移行します。Ubuntu 22.04 VMを廃止し、最も古いテストスロットを24.04に更新します。これにより、ポリシーで求められるベアVM上でのテストを復元します。

変更内容

  • eng/pipelines/helix-platforms.yml: Helix キューの6つのスロットをコンテナからベアVMに移行

    • helix_linux_x64_oldest: Ubuntu 22.04 → Ubuntu 24.04 ベアVM
    • helix_linux_x64_ubuntu_latest: Ubuntu 26.04 コンテナ → Ubuntu 26.04 ベアVM
    • helix_linux_x64_ubuntu_oldest: Ubuntu 22.04 → Ubuntu 24.04 ベアVM
    • helix_linux_arm64_latest: Ubuntu 26.04 コンテナ → Ubuntu 26.04 ベアVM
    • helix_linux_arm64_oldest: Ubuntu 22.04 → Ubuntu 24.04 ベアVM
    • helix_browser_wasm_oldest: Ubuntu 22.04 → Ubuntu 24.04(コンテナ継続)
  • eng/pipelines/libraries/helix-queues-setup.yml: CoreCLR プライマリディストロをUbuntu 26.04ベアVMに更新

  • .github/skills/update-os-coverage/SKILL.md: MCRレジストリタグリストをコンテナイメージタグ検証の信頼できるソースとして使用するよう更新

パフォーマンスへの影響

影響なし(テストインフラストラクチャの構成変更のため、ランタイムパフォーマンスへの直接的な影響なし)

関連Issue

#125748(Ubuntu 26.04 VM計画) dotnet/docker-tools#2142(ORAS/OCI-artifact移行に関連)

その他

  • WASM環境は継続してコンテナ化: WebAssemblyツールチェーンイメージが必須なため、コンテナ構成を維持しながらバージョンを26.04(最新)および24.04(最古)に更新

  • Ubuntu 22.04の完全な廃止は別途: Android エミュレータVM(Ubuntu.2204.Amd64.Android.*)およびSuperPMI ARM/arm64ホストVM(src/coreclr/scripts/superpmi_collect_setup.py)は本PRの対象外であり、#125748で引き続き追跡

  • 全ベアVMキューおよびイメージタグの存在確認済み(Helix queue APIおよびMCRレジストリタグリスト)


#129846 Implement DnsResolver for Linux

  • 作成者: @rzikm
  • 作成日時: 2026年06月25日 11:47:54(UTC)
  • マージ日時: 2026年08月06日 09:56:00(UTC)
  • ラベル: area-System.Net

概要

.NET 9で導入された新しいDnsResolver / Dns.Resolve* DNS クエリAPIのLinux/Unix向けマネージド実装を追加します。UDP with TCP fallback方式によるDNSリゾルバー、/etc/resolv.confからのサーバー自動検出、DNS wire形式のクエリ/レスポンス解析を実装します。

変更内容

  • マネージドDNSリゾルバー(Unix/Linux): DnsResolverPal.Managed.csでDNS wire形式のクエリ構築、UDP送信とTCP フォールバック、レスポンス解析を実装
  • DNS wire プロトコル実装: DnsEncodedName.cs(名前エンコーディング)、DnsMessageWriter.cs(クエリ生成)、DnsMessageReader.cs(レスポンス解析)、DnsMessageHeader.cs(ヘッダ処理)
  • レコード解析: DnsRecordParsing.csで複数のDNSレコード型(A、AAAA、MX、SRV、TXTなど)をパース
  • 設定ファイル読取: ResolvConf.csで/etc/resolv.confを解析してシステムDNSサーバーを自動検出
  • テスト基盤: ループバックDNSサーバー、レスポンスビルダー、ユニット・機能テスト追加

パフォーマンスへの影響

影響なし

関連Issue

#129845

その他

  • 内部実装のため公開APIの変更なし(既存のDns.Resolve* APIを支える実装)
  • IDN(多言語ドメイン名)対応のDNS名エンコーディング含む
  • negative-cache TTL対応
  • DnsSocket.csでUDP/TCPソケット操作を抽象化
  • 拡張テストカバレッジ:657行のDnsEncodedNameテスト、342行のDnsMessageReaderテスト、118行のResolvConfテストなど

#129292 Fix standalone coreclr tests build

概要

BuildAllTestsAsStandalone=true オプションでのスタンドアロンCoreCLRテストビルド、および Tizen armel プラットフォーム対応に関する修正です。テスト プロジェクトファイルと IL/F# ソースファイルに対して、スタンドアロンビルド時の互換性や依存関係の問題を解決しています。

変更内容

  • XUnitLogChecker.csproj: ターゲットフレームワーク/ビルド設定の修正(2行変更)
  • テストプロジェクト複数: VectorABI、bigvtbl(2ファイル)、async-versions、capacity、userevents_common 各プロジェクトに <PropertyGroup> エントリを追加(各1行)
  • F# テストソース: mutual_recursion.fs、Runtime_87393.fs に対応コードを追加(合計16行)
  • IL テストソース: async-versions.il に対応コードを追加(24行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本修正はテストビルドインフラストラクチャの修正であり、ランタイムや公開API への変更はありません。スタンドアロンビルドモード特有のビルド制約を満たすための内部的な調整です。


目次