Pull Request on 2026年05月14日

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

注意点

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


目次

  1. #128213 [release/8.0] Disable crypto.xml package generation
  2. #128191 Fix integer overflow in string.IndexOf range validation
  3. #128183 [manual] Merge release/9.0-staging into release/9.0
  4. #128171 Handle Generic Context Arg in runtime implementation of signature key computation
  5. #128167 [Wasm] Instantiate error detection
  6. #128163 Fix createdump SIGSEGV on Heap dumps with interpreter active
  7. #128160 Include cDAC exception details in HResult mismatch asserts
  8. #128156 Test harness and assorted changes for R2R testing in Wasm
  9. #128154 [cDAC] Use NativeCodeVersion entry for GetMethodVarInfo offset
  10. #128146 JIT: restore type-based upper bound for RSZ in range analysis
  11. #128137 Exclude badendfinally from Mono MiniFullAOT build to avoid missing AOT module crash
  12. #128133 [release/8.0][browser] Disable debugger tests on CI (#108178)
  13. #128132 [release/9.0][browser] Disable debugger tests on CI (#108178)
  14. #128131 [release/8.0] Merge release/8.0-staging -> release/8.0
  15. #128125 [ci-scanner] Improve workflow and fix detection auth
  16. #128123 Resolve generic descriptor method signatures in ILC
  17. #128117 Ensure we don't do duplicate checks for various multi-reg paths
  18. #128106 [cDAC] Add DacDbi API GetVarArgSig
  19. #128104 [Wasm] Add missing return buffer argument in wasm import thunks
  20. #128086 X25519DiffieHellman agreement with byte-based public keys
  21. #128030 Model typeof(delegate*<...>) as SystemTypeValue in Roslyn analyzer
  22. #128020 Work around illink incorrectly trimming static virtual implementations
  23. #128000 [wasm] Bump chrome for testing - linux: 148.0.7778.96, windows: 148.0.7778.97
  24. #127782 Add test for non-async generic methods mismatch in ILC scanner/JIT
  25. #127416 JIT: Fix morph FIELD_ADDR null check reordering for stores
  26. #127333 Add Complex<T> generic struct mirroring Complex API surface

#128213 [release/8.0] Disable crypto.xml package generation

概要

release/8.0ブランチでSystem.Security.Cryptography.Xmlパッケージの自動生成を無効化します。これは他のサービシング/パッケージプロジェクトと揃えるもので、プロジェクトはパッケージ化可能なままですが、ビルド時に自動的にパッケージを生成しなくなります。

変更内容

  • System.Security.Cryptography.Xml.csproj: GeneratePackageOnBuildプロパティをfalseに設定

パフォーマンスへの影響

ビルド時のパッケージ生成処理がスキップされるため、ビルド時間が短縮される可能性があります。

関連Issue

なし

その他

このプロジェクトプロパティの変更により、release/8.0ブランチの他のサービシングプロジェクトとの整合性が取られます。


#128191 Fix integer overflow in string.IndexOf range validation

概要

string.IndexOf メソッドの範囲検証ロジックを修正し、整数オーバーフローを防止します。従来の count + startIndex > Length という検証式を count > Length - startIndex に変更することで、startIndex + count が int.MaxValue を超える場合でも正しく ArgumentOutOfRangeException をスローするようにしました。同様の修正を IndexOf(Rune, int, int, StringComparison) にも適用しています。

変更内容

  • System.Private.CoreLib/src/System/String.Searching.cs: string.IndexOf の範囲検証ロジックを整数オーバーフロー対策版に変更し、IndexOf(Rune, ...) メソッドも ArgumentOutOfRangeException.ThrowIfNegative と ArgumentOutOfRangeException.ThrowIfGreaterThan を使用した一貫性のある検証に更新
  • System.Runtime.Tests/System/StringTests.cs: オーバーフロー時の動作を検証するテストケースを追加

パフォーマンスへの影響

影響なし(検証ロジックの実装方式変更のため、実行時オーバーヘッドの増減なし)

関連Issue

#128192

その他

この修正は StringComparison.OrdinalIgnoreCase 指定時を含め、すべての IndexOf オーバーロードでの整数オーバーフロー時の安全性向上です。公開APIの外部動作に変更なく、内部実装の修正となります。


#128183 [manual] Merge release/9.0-staging into release/9.0

概要

release/9.0-stagingからrelease/9.0へのマージPRです。依存関係の更新、WebAssemblyデバッガーテストパイプラインの削除、JITループクローニングの修正とリグレッション対策、Unix環境でのX509チェーンハンドリング用CRLキャッシュの改善が含まれます。

変更内容

依存関係更新

  • global.json: SDK・Arcadeバージョン更新
  • eng/Version.Details.xml: 複数依存関係のバージョン・メタデータ更新
  • eng/Versions.props: パッケージ・ツールセット・ランタイムアセットのバージョン更新
  • .config/dotnet-tools.json: xharnessツール バージョン更新

WebAssemblyデバッガーテスト削除

  • パイプラインテンプレート・定義の削除(wasm-debugger-tests.ymlなど)
  • ビルド設定から関連ターゲット・シナリオを削除
  • テストプロジェクト参照を削除

JIT最適化修正

  • src/coreclr/jit/loopcloning.cpp: 減少ループのループクローニング条件導出を調整
  • src/tests/JIT/opt/Cloning/DownCounted.cs/.csproj: リグレッション対策としてダウンカウントループの配列・スパン境界チェックテストを追加

X509チェーン・CRLキャッシュ改善

  • OpenSslCrlCache.cs: メモリ内MRU(Most Recently Used)CRLキャッシュを追加、ディスク/ダウンロードCRLキャッシュを再構成
  • OpenSslX509ChainEventSource.cs: CRLキャッシュイベントメッセージを更新、メモリ内キャッシュイベントを追加
  • X509FilesystemTests.Unix.cs: CRLディスクキャッシュリカバリーテストとイベントリスナーヘルパーを追加

パフォーマンスへの影響

メモリ内MRU CRLキャッシュの導入により、X509チェーン検証時のCRL取得パフォーマンスが改善される見込みですが、具体的なベンチマーク数値は提供されていません。

関連Issue

なし

その他

このPRは内部実装変更であり、公開APIへの破壊的変更はありません。WebAssemblyデバッガーテストの削除はテストインフラの整理であり、機能削除ではありません。


#128171 Handle Generic Context Arg in runtime implementation of signature key computation

  • 作成者: @davidwrighton
  • 作成日時: 2026年05月13日 23:30:15(UTC)
  • マージ日時: 2026年05月14日 18:22:15(UTC)
  • ラベル: area-VM-coreclr

概要

R2Rコンパイル済みメソッドがジェネリック インスタンス化引数を使用して呼び出される際、署名キー計算がジェネリック コンテキスト引数を考慮していなかったバグを修正します。HasGenericContextArg()チェックを追加し、署名キーに隠し引数を含めることで、マネージコードからR2Rコード経由での呼び出し時の署名不一致を解決します。

変更内容

  • src/coreclr/vm/wasm/helpers.cpp: GetSignatureKeyメソッドでMetaSig.HasGenericContextArg()がtrueの場合、署名キーバッファに'i'(整数/ポインタパラメータ)を追加。隠し引数の順序は「Wasm Signature String Encoding」仕様に従い、this引数の後、明示的パラメータの前に配置。

パフォーマンスへの影響

影響なし

関連Issue

#128171

その他

  • 変更はWASM署名キー計算(内部実装)に限定されます
  • ジェネリックコンテキスト引数の処理は呼び出し規約の実装に関わるため、正確な署名キー生成はランタイムの正確な動作に必須です
  • AIアシスト生成のPR説明が含まれています

#128167 [Wasm] Instantiate error detection

  • 作成者: @kg
  • 作成日時: 2026年05月13日 21:33:32(UTC)
  • マージ日時: 2026年05月14日 17:54:56(UTC)
  • ラベル: arch-wasm area-Host

概要

WebAssembly環境のcorerun.jsにおいて、R2R/Webcilモジュール読み込み時のエラー検出を改善します。__stack_pointerが利用不可の場合に明示的なチェックを追加し、インスタンス化失敗時にwasmパスとエラーメッセージをログ出力するようにしました。リリースビルドのcorerun.jsを使用してR2Rモジュールを読み込もうとした際の失敗モードが改善されます。

変更内容

  • src/coreclr/hosts/corerun/wasm/libCorerun.js
    • WebAssemblyインスタンス化前に__stack_pointerの可用性を明示的にチェック
    • インスタンス化失敗時に、wasmパスとエラーメッセージをログ出力するエラーハンドリングを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • WASM/corerun.jsホストの内部実装の改善で、公開APIへの影響はありません
  • 診断ログの充実により、開発者が問題を特定しやすくなります

#128163 Fix createdump SIGSEGV on Heap dumps with interpreter active

概要

Linux上でインタープリタが動作している際のヒープダンプ生成時にcreatedumpがSIGSEGVで異常終了する問題を修正します。Thread::m_pInterpThreadContextフィールドをDAC(Debugger Assist Code)対応ポインタ型に変更し、ターゲットプロセスのアドレスをホストアドレスとして誤読する問題を解決します。

変更内容

  • src/coreclr/vm/common.h: FEATURE_INTERPRETER下でPTR_InterpThreadContext型定義を追加
  • src/coreclr/vm/threads.h: Thread::m_pInterpThreadContextを生ポインタからPTR_InterpThreadContext(DPTR)に変更。これにより非DAC環境ではT*と同等、DAC環境では正しくマーシャリング処理が行われます
  • InterpreterStack.csproj・InterpreterStackDumpTests.cs: <DumpTypes>Full</DumpTypes>ワークアラウンドを削除し、修正後のヒープダンプパスを再度テスト対象に戻す

パフォーマンスへの影響

影響なし。非DAC環境ではDPTR(T)はT*と同一のため、オーバーヘッドは発生しません。

関連Issue

#128044

その他

  • 本修正はランタイムのDAC層に関連する内部実装の改善です
  • 破壊的変更ではありません
  • 修正前はIsAddressInStack()内でm_pInterpThreadContext->pStackStartをホストアドレスとして誤ってデリファレンスしていました
  • 本PR作成にはGitHub Copilotの支援を受けています

#128160 Include cDAC exception details in HResult mismatch asserts

概要

cDAC と legacy DAC の HRESULT 不一致時の DEBUG アサーション出力を改善するPR です。Debug.ValidateHResult で不一致を検出した際に、HRESULTs の値のみでなく、その原因となった例外の詳細情報(型・メッセージ・スタックトレース)を表示できるようにしました。これにより、デバッグ時の問題の根本原因を容易に特定できます。

変更内容

  • ファイル: src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/DebugExtensions.cs
    • DEBUG ビルド時専用の FirstChanceException ハンドラを静的コンストラクタで登録
    • スレッドローカルなリング(サイズ 4)で最近の例外を記録
    • ValidateHResult で HRESULT 不一致を検出した場合、リングから該当する例外を検索し、その ToString() 出力をアサーション出力に追記
    • すべての ValidateHResult 呼び出しでリングをクリアし、古い情報の誤帰属を防止

パフォーマンスへの影響

影響なし。DEBUG ビルド時のみ有効化([Conditional("DEBUG")] および #if DEBUG)で、リリースビルドは変更なし。DEBUG ビルドでも FirstChanceException ハンドラのリング書き込みコストは無視できるレベル。

関連Issue

なし

その他

  • 互換性: 既存の約 250 個の呼び出し箇所と約 270 個の catch ブロックへの変更は不要。診断機能の改善は DebugExtensions.cs に完全に閉じ込められています。
  • テスト結果: dotnet test で 2133 passed、16 skipped、0 failed。
  • 設計の特徴: リング構造により、cDAC の catch ブロックの後で発生した例外(validation 処理内や legacy DAC 呼び出し中など)が、本来の原因例外を置き換えることを防止しています。HResult による絞り込みで、中間の helper が throw-catch した場合の誤帰属も防いでいます。

#128156 Test harness and assorted changes for R2R testing in Wasm

概要

このPRはWebAssemblyターゲットでのReadyToRun (R2R) / Crossgen2テスト実行をサポートするため、テストハーネスとツール群を更新しています。主な目的は、Wasmターゲット特有の出力形式(.wasmファイル)の処理、テスト実行フローの改善、およびNode.js実行環境のデフォルト化です。

テスト実行例:

./build.sh clr+libs -rc debug -c release -os browser
./src/tests/build.sh skipmanaged browser
export CORE_ROOT=/path/to/Core_Root
export RunCrossGen2=1
/path/to/test.sh

変更内容

  • Crossgen2ツール: --obj-formatオプションのヘルプ出力追加、Wasm32ターゲット時のPE形式のWasm形式への変換
  • テストハーネス構成: Directory.Build.propsでTargetOS=browser時にCrossGen2OutputFormat=wasmを設定
  • R2R/Crossgenビルド: .wasm出力ファイル処理の追加、Crossgen2実行時に--obj-formatパラメータを渡す
  • テスト実行環境: Bash/BatchスクリプトでRuntimeFlavor=coreclrかつWasmターゲット時にNode.jsをデフォルト実行環境に設定、Crossgen2ロック処理の統合
  • ビルドスクリプト: -browser/-wasiショートハンドを追加(アーキテクチャを自動的にwasmに設定)
  • クロスビルド対応: クロスアーキテクチャ出力ディレクトリからのCrossgen2実行ファイルコピー機能追加
  • R2RTestツール: --target-osオプション追加
  • テスト除外: Wasmターゲットで実行不可の一部R2Rテスト(mainv1/v2、determinism、async-inline-thunks)を無効化

パフォーマンスへの影響

影響なし

関連Issue

#127935(このPRと一緒にマージされると、テスト実行が容易になる)

その他

なし


#128154 [cDAC] Use NativeCodeVersion entry for GetMethodVarInfo offset

概要

tiered compilation環境で、古いtier層のフレームスタック上に存在する場合にDebugInfo_2.GetMethodVarInfoが誤ったIP-to-codeOffsetオフセット計算を行う不具合を修正します。修正前はMethodDesc.NativeCode(最新コンパイルtier)を基準としていたため、変数位置情報が空リストになっていました。修正後はICodeVersionsコントラクト経由で特定NativeCodeVersionを解決し、legacy DAC動作(ExecutionManager::GetNativeCodeVersion(address).GetNativeCode())と一致させます。

変更内容

  • DebugInfo_2.cs: GetMethodVarInfoでIP-specific NativeCodeVersionをCodeVersions.GetNativeCodeVersionForIP()経由で取得し、該当バージョンのNativeCodeを基準に計算。不正なNativeCodeVersionの場合はInvalidOperationExceptionをスロー(native DAC のE_INVALIDARGに対応)
  • IExecutionManager.cs: GetStartAddress/GetFuncletStartAddressの戻り値型をTargetCodePointerからTargetPointerに修正(ARM32 thumb bit問題を解決)
  • CodeVersions_1.cs: GetNativeCodeVersionForIPでの比較時にCodePointerFromAddressを使用(ARM32での型ミスマッチ解決)
  • ExecutionManager関連: AddressFromCodePointerの冗長な変換を削除、TargetPointer型統一
  • テスト: CodeVersionsTests.csに関連テストを追加

パフォーマンスへの影響

影響なし

関連Issue

dotnet/diagnostics#5767、#125463

その他

本修正は2つのコミットで構成:

  1. 型正確性の修正:ARM32でのthumb bit比較問題(MethodDesc.NativeCode のPCODE vs GetStartAddressの生TADDR)をTargetPointer型導入で解決
  2. GetMethodVarInfo修正:IP-specific NativeCodeVersion解決処理の本体変更

ARM32・x64で検証済み。cDACテストスイート 2133/2133 パス確認。


#128146 JIT: restore type-based upper bound for RSZ in range analysis

  • 作成者: @EgorBo
  • 作成日時: 2026年05月13日 13:47:38(UTC)
  • マージ日時: 2026年05月14日 21:33:47(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT の範囲解析でロジカル右シフト(GT_RSZ)に対する型ベースの上限境界の復元。範囲チェック排除の最適化機会が喪失する回帰を修正しました。

public static int M(int i)
{
    ReadOnlySpan<int> vals = [0, 1];
    return vals[i >>> 31]; // 範囲チェックが正しく排除される
}

変更内容

  • rangecheck.h: RangeOps::ShiftRight にオプショナルなオペランドビット幅パラメータを追加し、ロジカルシフトに対して型ベースの上限境界 UMAX(op1Type) >> minShift を計算できるように拡張
  • rangecheck.cpp: GT_RSZ の範囲計算時にシフトオペランドのビット幅を ShiftRight に提供
  • ElidedBoundsChecks.cs: i >>> 31 で2要素スパンにインデックスする場合と i >>> 28 で16要素スパンにインデックスする場合について、範囲チェックが排除されることをアサートする回帰テストを追加

パフォーマンスへの影響

ロジカル右シフトを使用したインデックス計算時に不要な範囲チェック命令の排除が可能になることで、生成されるコードの効率が向上します。影響なし(既存の最適化レベルの復元)

関連Issue

#128146

その他

この修正は @saucecontrol により発見された回帰に対応するものです。シフト回数が既知だが右シフト値の範囲が有用な定数でない場合に、範囲チェック排除の最適化機会が喪失していた問題を解決します。


#128137 Exclude badendfinally from Mono MiniFullAOT build to avoid missing AOT module crash

  • 作成者: @Copilot
  • 作成日時: 2026年05月13日 12:32:43(UTC)
  • マージ日時: 2026年05月14日 08:53:02(UTC)
  • ラベル: area-Infrastructure

概要

Mono MiniFullAOT ビルドにおいて、AOT モジュール badendfinally.dll.so が生成されないまま badendfinally テストがスケジュールされ、aot-only モードでのクラッシュが発生していた問題を修正します。既存の AOT 非互換テストパターンを適用して、Mono minifullaot ビルド時にこのプロジェクトがビルドされないようにします。

変更内容

  • badendfinally.ilproj: RuntimeFlavor == mono かつ RuntimeVariant == minifullaot の条件で DisableProjectBuild を true に設定し、MiniFullAOT ビルド時のプロジェクトビルドを無効化

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この変更は既に確立された AOT 非互換テストの除外パターンを適用したものです
  • MiniFullAOT ビルドにおいて、対応する .so ファイルが存在しないテストがペイロードに含まれることを防ぎます

#128133 [release/8.0][browser] Disable debugger tests on CI (#108178)

概要

release/8.0ブランチにおいて、Mono WebAssemblyデバッガーテストスイートのCI実行を無効化するPRをバックポートしたものです。Azure PipelinesのジョブやHelixの送信パイプラインを削除することで、CI不安定性の問題(#128130)を解決します。

変更内容

  • Azure Pipelines設定: Wasmデバッガーテストの実行スケジューリングに関するジョブ/テンプレートを削除

    • runtime.ymlからデバッガーテスト実行レグを削除
    • runtime-extra-platforms-wasm.ymlから追加プラットフォーム向けレグを削除
    • wasm-debugger-tests.ymlテンプレート全体を削除
    • evaluate-default-paths.ymlからパス評価ロジックを削除
  • Helix送信設定: Wasmデバッガーテストの送信配線を削除

    • sendtohelix.projでのプロジェクト展開を削除
    • sendtohelix-wasm.targetsのシナリオマーカープロパティを削除
  • ビルド設定: テスト関連の構成を更新

    • MakefileからHelix向けのビルド/送信ターゲットを削除(wasm、wasi両方)
    • Wasm.Debugger.Tests.csprojから削除されたHelix対象ファイルの参照を削除
    • tests.projからデバッガーテストラッパープロジェクトのビルド削除

パフォーマンスへの影響

影響なし。本変更はCI/CD設定のみを対象としており、ランタイムやコンパイラの性能には直接的な影響はありません。

関連Issue

#128130、#108178(バックポート元)

その他

  • 本変更は削除のみで、新機能追加や機能修正は含まれません
  • release/8.0ブランチへのバックポートであるため、メインブランチの同様のPRと平行して適用される見込みです

#128132 [release/9.0][browser] Disable debugger tests on CI (#108178)

概要

release/9.0ブランチへのバックポート。Mono WASM/ブラウザデバッガーテストをCI から無効化・削除する変更。環境やICU差分によるCI失敗に対応するため、デバッガーテストのHelix投入・ビルド・パイプライン統合を完全に廃止します。

変更内容

  • Helix投入の削除: src/mono/browser/Makefile、src/mono/wasi/Makefile から WASM デバッガーテスト関連の Helix ターゲットを削除
  • ビルド設定の更新: src/libraries/sendtohelix.proj、src/libraries/sendtohelix-browser.targets、src/libraries/tests.proj で WasmDebuggerTests シナリオのサポートを廃止
  • テスト設定の削除: src/mono/browser/debugger/Wasm.Debugger.Tests/ 配下のHelix関連設定ファイル(wasm.helix.targets、Wasm.Debugger.Tests.csproj のHelixTargetsFile)を削除
  • パイプライン設定の廃止: eng/pipelines/ 配下でWASDデバッガーテストジョブのスケジューリング・テンプレート・パストリガーサブセットを削除

パフォーマンスへの影響

影響なし(CI/デプロイメント設定の変更のため)

関連Issue

#128130

その他

  • オリジナルのバックポート元PR: #108178
  • Copilotレビューで指摘:eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml の debuggerTestsOnly パラメータが廃止後、runtime-wasm-dbgtests.yml が空のパイプラインになる可能性。該当パイプラインの削除または更新が必要

#128131 [release/8.0] Merge release/8.0-staging -> release/8.0

概要

release/8.0-stagingからrelease/8.0へのマージにより、CoreCLR(DAC/デバッグ、JIT)、暗号化ライブラリ(OpenSSL CRL キャッシング)、テストインフラストラクチャ、および依存関係のサービシング更新をもたらします。主な改善はデバッグ/DAC診断の高速化、OpenSSL CRLのメモリ内MRUキャッシング、テストツール/インフラの刷新です。

変更内容

  • DAC/デバッグ(CoreCLR):ヒープダンプ列挙の最適化、デバッガパッチエントリのキャッシング(dacfn.cpp、dacaccess.cpp)、DAC インスタンステーブルを SHash に切り替え、EnableFastHeapDumps設定の追加(enummem.cpp、vars.cpp/hpp、ceemain.cpp)
  • JIT:ループクローニング条件の調整(loopcloning.cpp)、ダウンカウントループ回帰テストの追加
  • 暗号化ライブラリ:OpenSSL CRL キャッシング機能の拡張(メモリ内MRU キャッシング+参照カウント管理)、CRL ディスクキャッシュテスト追加、EventSource イベントの追加
  • テストインフラ:XHarness ターゲットフレームワークのピン留め、WASM テスト引数フィルタリング、タスクベースの API 更新、WasmTestRunner の-verbosity引数対応
  • 依存関係:SDK/Arcade/XHarness/ICU 各バージョン更新

パフォーマンスへの影響

  • ヒープダンプ:EnableFastHeapDumps設定により、ダンプ列挙の高速化が期待される
  • デバッガパッチ処理:キャッシング導入により、アンワインド時のパッチ置換パフォーマンスが向上
  • CRL キャッシング:メモリ内MRU キャッシング追加により、CRL 検証の応答性向上

関連Issue

なし

その他

  • 破壊的変更なし(サービシング更新のため内部実装レベルの改善が中心)
  • WASM テスト環境の複数テンプレートファイル削除に伴う簡素化
  • Android TimeZoneInfo テストでActiveIssueアノテーション追加

#128125 [ci-scanner] Improve workflow and fix detection auth

概要

CI Outer-Loop Failure Scannerのワークフローとプロンプトをリファクタリングし、セキュリティスキャン認証エラーを修正するとともに、Issue/PRの生成フローを決定的で一貫性のあるプロセスに改善しました。

変更内容

  • ci-failure-scan.md: スキャナープロンプトを段階的な決定フロー構造に再構成。テンプレートに## Error Detailsセクションを追加し、update_projectによる自動Project連携ガイダンスを追加
  • ci-failure-scan.lock.yml: 生成されたワークフロー定義を更新。threat-detection jobにpat_poolへの依存を追加してCOPILOTトークン式を解決し、update_projectをsafe-outputs設定に統合

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • Area-path割り当ては既存のruntime labeler botに委譲され、各IssueごとのSingle Area Path保証を実現
  • Project連携は既存のnet-helix[bot]自動化に依存(Known Build Errorラベルを検出して~2秒でプロジェクトに追加)
  • ワークフロー自体はKnown Build Errorラベル適用に専念
  • 検証用の試験実行により3つのIssueが生成されています(#128126, #128128, #128129)

#128123 Resolve generic descriptor method signatures in ILC

概要

NativeAOTのILC(Intermediate Language Compiler)が、XML記述子で指定されたジェネリック型のメソッドシグネチャを解決できなかった問題を修正します。例えば System.Void Method(T) のような型パラメータを参照するシグネチャをILLinkと同様に正しく処理できるようになります。

<type fullname="MyGenericClass`1">
  <method signature="System.Void GenericMethod(T)" />
</type>

変更内容

  • ProcessLinkerXmlBase.cs: ジェネリック型/メソッドコンテキストを考慮してメソッドシグネチャをフォーマットし、署名変数を型パラメータ名に解決する機能を追加
  • MethodDefinitionNode.cs: ILTrimの空メソッドボディ最適化ヒューリスティックを追加(nop + ret のみで構成されるボディを保持)
  • ILTrimExpectedFailures.txt: 既存の予想失敗エントリを削除(ジェネリック記述子対応により解決)
  • UnusedMethodPreservedByLinkXmlIsKept.cs: 共有LinkXmlテスト期待値を更新し、ジェネリック記述子ルート化メソッドの保持を期待

パフォーマンスへの影響

影響なし

関連Issue

#128123

その他

  • ILCompilerとILTrimの記述子マッチング処理のパリティを向上
  • 不要だった --disable-opt unreachablebodies test ワークアラウンドを削除
  • ILTrim と ILLink の動作をより緊密に統合

#128117 Ensure we don't do duplicate checks for various multi-reg paths

概要

JITコンパイラのGenTreeヘルパー関数におけるマルチレジスタ処理の最適化。重複するマルチレジスタ分類チェックを削除し、GetRegisterDstCount()を直接的に既知のマルチレジ形状(呼び出し、コピー/リロード、HW組み込み、マルチレジスタローカル)を処理するように リファクタリング。ARM64でのスループット向上を期待できます。

変更内容

  • src/coreclr/jit/gentree.cpp: GenTree::GetRegisterDstCount()をリファクタリングし、先頭のIsMultiRegNode()ゲートなしで既知のマルチレジ形状を直接処理。IsMultiRegNode()の軽微なクリーンアップでIsCopyOrReload()をオペコードチェックの代わりに使用。デバッグツリーダンプヘルパー(gtDispMultiRegCount、gtDispRegValのマルチレジプリント)からFEATURE_MULTIREG_RETガードを削除。
  • src/coreclr/jit/compiler.h: DEBUG ビルドで常にgtDispMultiRegCountを宣言するよう変更(FEATURE_MULTIREG_RETガード除去)

パフォーマンスへの影響

ARM64プラットフォームでスループット(TP)の向上が期待されます。重複したマルチレジ分類チェックが削除されることにより、JIT コンパイル時間の削減につながります。

関連Issue

なし

その他

デバッグヘルパー機能(gtDispMultiRegCount)がFEATURE_MULTIREG_RETビルド設定に依存しなくなり、デバッグ時の動作が多くのプラットフォーム構成で一貫性を持つようになります。


#128106 [cDAC] Add DacDbi API GetVarArgSig

  • 作成者: @Copilot
  • 作成日時: 2026年05月12日 23:27:42(UTC)
  • マージ日時: 2026年05月14日 23:57:23(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDACシグネチャ契約を拡張し、vararg cookie(可変長引数クッキー)のデコーディングをサポートする新しいDacDbi APIを追加します。GetVarArgArgsBaseとGetVarArgSignatureメソッドにより、varargシグネチャの引数ベースアドレスと生シグネチャポインタ/長さを取得できるようになります。

変更内容

  • ISignature.cs: GetVarArgArgsBaseとGetVarArgSignatureメソッドを公開APIとして追加
  • Signature_1.cs: 新しいvararg cookie APIの実装(引数ベース計算とシグネチャメタデータ抽出)
  • VASigCookie.cs: ネイティブVASigCookieデータ記述子用のマネージドリーダー(sizeOfArgsフィールドと埋め込みシグネチャアクセス)
  • DacDbiImpl.cs: 従来のGetVarArgSig実装をcDAC Signature契約APIを使用するよう更新
  • datadescriptor.inc・siginfo.hpp: ネイティブ側のvararg cookieデータ記述子定義とシグネチャプライベートフィールドへのアクセス許可
  • DataType.cs: 新しいVASigCookieデータ型定数を追加
  • SignatureTests.cs: vararg cookie署名・引数ベースAPIとエラーパスの単体テスト
  • Signature.md: 新APIとデータ記述子の動作ドキュメント

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

Copilot指摘事項: DataType列挙型にVASigCookieを挿入した場合、後続のGC関連型の数値が変更される可能性があり、この値を永続化またはプロトコルで使用している場合は破壊的変更となる可能性があります。既存値への明示的な値割り当てまたは末尾への新メンバー追加の検討が推奨されています。


#128104 [Wasm] Add missing return buffer argument in wasm import thunks

概要

WebAssemblyインポートサンク内で構造体の戻り値に必要な隠れた返却バッファ引数が不足していたバグを修正しました。ReadyToRun AOTツールチェーンの間接呼び出しで無効なWasmコードが生成される問題を解決しています。

変更内容

  • WasmImportThunk.cs: 構造体の戻り値が必要なシグネチャを検出し、call_indirectディスパッチ前に返却バッファ引数をスタックにプッシュする処理を追加しました(+13行)。

パフォーマンスへの影響

影響なし

関連Issue

#128104

その他

本修正により、以下のようなWebAssemblyモジュール構築エラーが解決されます:

  • not enough arguments on the stack for call_indirect エラー
  • 間接呼び出しで引数スタック不足によるBadImageFormatException

修正内容は内部実装の変更で、公開APIへの影響はありません。


#128086 X25519DiffieHellman agreement with byte-based public keys

  • 作成者: @vcsjones
  • 作成日時: 2026年05月12日 16:52:49(UTC)
  • マージ日時: 2026年05月14日 22:06:05(UTC)
  • ラベル: area-System.Security

概要

X25519DiffieHellman に対して、他方の公開鍵をバイト列として受け取る DeriveRawSecretAgreement メソッドを追加します。これにより、X25519DiffieHellman インスタンスを作成する必要がなくなり、一般的な利用シーンでのメモリ割り当てを削減できます。

// 新しいAPI
public byte[] DeriveRawSecretAgreement(byte[] otherPartyPublicKey);
public int DeriveRawSecretAgreement(ReadOnlySpan<byte> otherPartyPublicKey, Span<byte> destination);

変更内容

  • 公開API: X25519DiffieHellman に 2 つのオーバーロード DeriveRawSecretAgreement を追加(バイト配列版とスパン版)
  • 抽象メソッド: プラットフォーム実装用に保護された抽象メソッド DeriveRawSecretAgreementCore を追加
  • プラットフォーム実装: OpenSSL(Unix)、Apple(macOS/iOS)、Windows/CNG 各プラットフォームで新しいコアメソッドを実装
  • ネイティブインターオペ: OpenSSL と Apple の新しいネイティブエントリポイント (CryptoNative_X25519DeriveSecretAgreementWithPublicKey、AppleCryptoNative_X25519DeriveRawSecretAgreementWithBytes) を追加
  • テスト: 引数チェック、Disposal 動作、対称性、テストベクトル、ゼロ共有秘密の動作を検証するテストを追加

パフォーマンスへの影響

メモリ割り当て削減。既存の DeriveRawSecretAgreement(ReadOnlySpan<byte> otherPartyPublicKey, Span<byte> destination) を使用することで、X25519DiffieHellman インスタンスの作成と破棄に関連する割り当てを回避できます。具体的なベンチマーク数値は提供されていません。

関連Issue

#128040

その他

なし


#128030 Model typeof(delegate*<...>) as SystemTypeValue in Roslyn analyzer

概要

Roslyn アナライザーが関数ポインタ型(delegate*<...>)に対して null (Top) を返していた問題を修正し、NativeAOT の動作に合わせて SystemTypeValue としてモデル化するようにしました。これにより、Type.get_Assembly の短絡評価を防ぎ、適切な警告が発行されるようになります。

変更内容

  • SingleValueExtensions.cs: 関数ポインタ型に対するデータフロー処理を追加
  • AssemblyGetTypeDataFlow.cs: テストケースを更新し、すべてのツールで警告が期待されるように修正

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更は ILLink の Roslyn アナライザーの内部実装に関するもので、公開 API には影響しません。関数ポインタの ldtoken 処理が NativeAOT と Roslyn アナライザーで一貫性を持つようになります。


#128020 Work around illink incorrectly trimming static virtual implementations

概要

illink(IL Trimmer)がstatic virtual実装を誤ってトリミングする問題に対応するPRです。System.Private.CoreLibのトリミングルートを更新し、System.Runtime.InteropServicesにトリミング回帰テストを追加して、Marshal.StructureToPtr / Marshal.DestroyStructureで[MarshalAs(UnmanagedType.ByValArray)] DateTime[]を含む構造体を扱う際のトリミング後の検証失敗を防ぎます。

変更内容

  • ILLink.Descriptors.Shared.xml (+11行): System.StubHelpersマーシャラー(DateMarshalerおよびアレイマーシャラー関連)をトリミングルートとして追加し、トリミング後の制約/検証失敗を回避。
  • MarshalStructureToPtrByValDateArray.cs (新規): DateTime[] ByValArray を含む構造体に対してStructureToPtr/DestroyStructureを実行するトリミング回帰テスト。
  • System.Runtime.InteropServices.TrimmingTests.proj: 新規トリミングテストをプロジェクトに登録。

パフォーマンスへの影響

影響なし(トリミング対象外としてマークする変更のため、実行時パフォーマンスへの直接的な影響なし)

関連Issue

#128120

その他

  • このPRはCopilot開発エージェントにより生成されました。
  • トリミング後の検証失敗を防ぐための内部実装側の対応です(公開API変更なし)。

#128000 [wasm] Bump chrome for testing - linux: 148.0.7778.96, windows: 148.0.7778.97

概要

WebAssembly(WASM)テスト環境で使用するChrome for Testingのバージョンを更新するPull Requestです。Linux環境を148.0.7778.96に、Windows環境を148.0.7778.97に更新しています。

変更内容

  • eng/testing/BrowserVersions.props: Chrome for Testingのバージョン番号を更新
    • Linux: 148.0.7778.96
    • Windows: 148.0.7778.97

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

なし


#127782 Add test for non-async generic methods mismatch in ILC scanner/JIT

概要

ILC(Intermediate Language Compiler)が汎用型上のランタイム非同期メソッドをコンパイルする際にクラッシュする問題(#127179)のテストを追加します。非同期汎用メソッドが非同期汎用メソッドを呼び出す場合、ILCスキャナーが生成した情報とJITの期待値がミスマッチする問題を検証するリグレッションテストです。

変更内容

  • src/tests/async/awaitingnoasyncgeneric/awaitingnoasyncgeneric.csproj: 新しいテストプロジェクトを追加。Microsoft.NET.Sdk.ILを使用し、最適化を有効化してスキャナー/コード生成パスを確実に実行
  • src/tests/async/awaitingnoasyncgeneric/awaitingnoasyncgeneric.cs: 汎用ValueTask<T>を使用した最小限の再現パターンを含むxUnitテストを追加。参照型と値型の汎用インスタンス化の両方をテスト

パフォーマンスへの影響

影響なし(テストコードの追加のため)

関連Issue

#127179

その他

なし


#127416 JIT: Fix morph FIELD_ADDR null check reordering for stores

概要

JITのmorph処理において、GT_FIELD_ADDRの暗黙的なnullチェックを親のstore命令に折り畳む際に、store値のside effectsが不正に再順序化される問題を修正しました。store値にside effectがある場合、base objectが明らかにnull-safeでない限り、nullチェックの折り畳みを拒否するようにしました。これにより、例外やグローバル書き込みなどのside effectが正しい順序で実行されるようになります。

変更内容

  • morph.cpp: fgMorphSmpOpでstore indirectionの場合、op2(store値)にside effect(GTF_SIDE_EFFECT|GTF_ORDER_SIDEEFF)がある場合はGT_FIELD_ADDRのnullチェック折り畳みを拒否。base objectがnon-nullと証明できる場合のみ折り畳みを許可
  • sideeffects.cpp/h: Side effect検出の改善、特にfgAddrCouldBeNullとoptAssertionIsNonNullの判定結果を活用
  • lower.cpp/h: Lower処理の関連ロジック調整(26行追加/削除)
  • JIT回帰テスト追加: Runtime_125343.ilで、nullチェックの順序が不正な場合にNullReferenceExceptionではなくDivideByZeroExceptionが発生することを検証

パフォーマンスへの影響

影響なし。これは正当性の修正であり、一部のケースで最適化を保守的に制限するものです。

関連Issue

#125343

その他

本修正は内部JIT実装(morph処理)の変更であり、公開APIに直接の影響はありません。ただし、以前は不正な例外発生順序を示していたコードが正しい動作をするようになるため、edge caseでの動作変更の可能性があります。


#127333 Add Complex<T> generic struct mirroring Complex API surface

  • 作成者: @Copilot
  • 作成日時: 2026年04月23日 17:37:31(UTC)
  • マージ日時: 2026年05月14日 00:41:01(UTC)
  • ラベル: area-System.Numerics

概要

Complex<T>汎用構造体を新たに実装し、既存の非ジェネリックComplexの完全なAPI表面をミラーリングします。制約はIFloatingPointIeee754<T>, IMinMaxValue<T>です。ComplexとComplex<T>間の双方向変換、パース・フォーマット、数学関数(三角関数、対数、べき乗など)、汎用数値インターフェース実装を含みます。コード重複を避けるため、Complexの長いメソッドはComplex<double>に委譲します。

Complex<float> z = Complex<float>.FromPolarCoordinates(2.0f, MathF.PI / 4);
float mag = z.GetMagnitude();
Complex<float> w = z * 3.0f + new Complex<float>(1.0f, -1.0f);

// 型間変換が双方向で機能
Complex c = Complex.CreateChecked(new Complex<double>(3, 4));
Complex<float> cf = Complex<float>.CreateChecked(new Complex(3, 4));

変更内容

  • Complex.Generic.cs(新規): Complex<T>の完全実装

    • 算術演算子(+, -, *, /, ++, --)
    • 静的プロパティ(Zero, One, ImaginaryOne, NaN, Infinity)
    • インスタンスメソッド(GetMagnitude(), GetPhase())
    • 数学関数(Abs, Sqrt, Pow, Sin, Cos, Logなど三角・双曲・逆三角関数)
    • 述語メソッド(IsFinite, IsInfinityなど)
    • インターフェース実装(INumberBase<Complex<T>>, ISignedNumber<Complex<T>>, IParsable, ISpanFormattable, IUtf8SpanFormattable)
    • 内部静的ヘルパー(TryConvertFrom*Core, TryConvertTo*Core)
  • Complex.cs: リファクタリング

    • DefaultNumberStyle, InvalidNumberStylesをprivateからinternalに昇格
    • 4行超の長いメソッドをComplex<double>に委譲(Sqrt, Asin, Tan, Pow, MaxMagnitude, MinMagnitude, ToStringなど)
    • TryConvertFrom*, TryConvertTo*の長い型チェーンをComplex<double>呼び出しに統合
    • 重複していた定数・ヘルパー(s_sqrtRescaleThreshold, s_asinOverflowThreshold, Log1P, Asin_Internal)を削除
  • ref/System.Runtime.Numerics.cs: Complex<T>の公開API定義を追加

  • テスト: 37個の汎用テストをComplexTests_Genericに追加

パフォーマンスへの影響

影響なし。Complexの委譲は既に実装されたComplex<double>メソッドを呼び出すため、パフォーマンス特性は変わりません。オーバーヘッドについての測定値は提供されていません。

関連Issue

#127333

その他

  • 制約の根拠: IMinMaxValue<T>はSqrtやAsinアルゴリズムがT.MaxValueからオーバーフロー閾値を計算するため必須です。すべての

目次