Pull Request on 2026年09月06日

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

注意点

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



#133312 [Mono][browser] Quarantine double Min/Max NaN payload tests

概要

Mono browser-WASM環境で、double型のMax/Minジェネリック数学テストケースのNaN符号・ペイロードテストをQuarantine(隔離)します。共有テストメソッドやデータセットを分割せず、MaxDoubleとMinDoubleに条件付きチェック(PlatformDetection.IsMonoRuntime && PlatformDetection.IsWasm)を追加することで、Mono browser-WASM環境でのみ該当テストケースを除外します。他のランタイムではすべてのMax/Minカバレッジは変更されません。

変更内容

  • src/libraries/Common/tests/System/GenericMathTestMemberData.cs: MaxDoubleとMinDoubleのNaN符号・ペイロード行に条件付きフィルタリングを追加。Mono browser-WASM環境でのみこれらの行を除外します。
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DoubleTests.GenericMath.cs: 新しい理論テストメソッドを追加してNaN符号・ペイロードケースを隔離(内容は提供情報に記載なし)

パフォーマンスへの影響

影響なし

関連Issue

#133311

その他

Copilotからの指摘事項:

  1. テストカバレッジの懸念: NaN符号・ペイロード行をMaxDouble/MinDoubleから移動させることで、これらの共有データセットを使用する他のテストスイート(Math.cs、Vector*テストなど)のカバレッジが低下する可能性があります。
  2. プラットフォーム判定の曖昧性: PlatformDetection.IsWasmはWASI(IsBrowser || IsWasi)も含むため、実際の隔離スコープが説明(browser-WASM)より広くなっている可能性があります。WASI環境の意図が明確でない場合、IsBrowserへの変更が検討されています。

検証済み: Mono browser-WASM環境で17/17のMaxTest、17/17のMinTestケースが合格


#133310 Narrow browser WASM R2R test exclusions

概要

WASM ReadyToRun(R2R)テスト環境を復帰させるため、既知の失敗パターンに絞り込んでテスト除外条件を設定するもの。インタープリタとその他プラットフォームのカバレッジは維持しながら、ブラウザR2R専用の失敗を抑制します。具体的には、メソッドレベルのActiveIssue条件、空のAssembly.Locationの処理、Crossgen2コンパイル失敗への対応を含みます。

変更内容

  • Runtime_79354、Runtime_58874:メソッドレベルのActiveIssue条件を追加し、WASM R2R環境でのみ除外
  • Runtime_117566:Assembly.Locationが空の場合の早期リターンを追加(既存のLoadFromAssemblyPathの呼び出しを防止)
  • TypeMapApp(Interop.csproj):CoreCLR WasmでTypeMapAppメタデータ解決時のCrossgen2中止を回避するため、R2R非互換マークを設定
  • crossgen2smoke_donotalwaysusecrossgen2.csproj、Program.cs:PlatformDetection.IsWasmとPlatformDetection.IsReadyToRunCompiledを用いて、ジェネリック多次元配列のみの失敗サブテストをスキップ

パフォーマンスへの影響

影響なし

関連Issue

#131886、#133259、#133303、#133307、#133274、#133308

その他

  • Copilotによるレビューで3件の懸念が指摘されています:
    1. Assembly.Locationが空の場合、早期リターンではなく明示的なスキップ(または意図したプラットフォーム外での早期失敗)が望ましい
    2. ジェネリック多次元配列テストの除外が、単一の失敗サブテストより広すぎる可能性
    3. Interop.csprojのR2R非互換条件がブラウザ限定ではなく全CoreCLR Wasmに適用される懸念
  • テスト内容:単体テスト実行、ローカル非R2Rスクリプト実行、WASI比較テスト、Crossgen2smoke 70サブテスト全実行確認済み
  • 意図的に非抑制とされた失敗:#133219、#133221、#133224、#133286、#133305内の未分類失敗形状

#133203 [perf][wasm] fix wasm-perf lane, stage complete CoreCLR toolchain cohort

概要

WebAssembly パフォーマンス パイプラインの成果物ステージング処理を改善し、CoreCLR ブラウザ-WASM ビルドの完全な同一ビルド NuGet コホート を実装しました。Mono ワークロード インストール前に必要な Crossgen2 パックと ILLink.Tasks パックを確実に提供し、欠落パッケージエラーとバージョン不一致による restore 失敗を修正します。

変更内容

  • stage-nuget-cohort.sh (新規): 必須パッケージごとに正確に1つの非シンボル nupkg を選択し、全パッケージが同じコホートバージョンであることを検証するステージングスクリプトを追加
  • perf-wasm-prepare-artifacts-steps.yml:
    • Microsoft.NET.ILLink.Tasks の dotnet pack --no-build --no-restore ステップを追加
    • CoreCLR-only の Crossgen2 ステージング スイッチを統合された includeCoreClrToolchainPacks スイッチに置き換え
    • ステージング時に SDK R2R 出力ディレクトリの正規の大文字小文字表記を使用
  • perf-wasm-build-jobs.yml: CoreCLR ジョブで includeCoreClrToolchainPacks: true を有効化
  • Microsoft.NET.Sdk.WebAssembly.Browser.CoreCLR.targets: R2R 出力ディレクトリパスの大文字小文字表記を修正
  • CoreCLRWasmNativeDefaultsTests.cs: R2R ディレクトリパスの大文字小文字を序数で比較する集中テストを追加

パフォーマンスへの影響

影響なし(ビルド パイプラインの artifact staging 改善であり、実行時パフォーマンスへの直接的な影響はありません)

関連Issue

dotnet/performance#5297

その他

  • 制限事項: このPRは Azure Pipelines の artifact staging ロジック変更を含むため、完全な検証には runtime-wasm-perf パイプラインの end-to-end 実行が必要です。既存の失敗したビルドはこのPRの実装前の成果物を使用しているため、その証明に使用できません。
  • 検証済み項目:
    • Azure Pipelines YAML ファイルの構文検証
    • ステージング スクリプトのシミュレーション テスト(正常系・異常系)
    • ビルド 1584559・1581666 の監査による問題確認と修正の検証
  • 構成される完全コホート: SDK、CoreCLR ブラウザ ランタイム パック、Ref パック、WebAssembly SDK パック、Crossgen2 パック(linux-x64)、ILLink.Tasks パック

#133079 JIT: Expand REFANYTYPE QMARK before physical promotion

概要

REFANYTYPE null チェックで生成される GT_QMARK が physical promotion 前の早期段階で展開されるよう修正しました。これまで QMARK 腕内の struct ストアは physical promotion でサポートされていませんでしたが、この変更により QMARK を早期展開対象にマークすることで、unsupported な promotion/readback シナリオを回避します。

変更内容

  • src/coreclr/jit/importer.cpp: REFANYTYPE null チェック QMARK を早期展開可能としてマークし、OMF_HAS_EARLY_QMARKS フラグを設定
  • src/coreclr/jit/morph.cpp: compQmarkRationalized フラグを遅延 QMARK 展開後のみ設定するよう修正
  • src/coreclr/jit/promotion.cpp: DEBUG ビルド時に、promotion 対象の store/retbuf 定義が QMARK 腕内に存在しないことを検証するアサーション追加
  • src/tests/JIT/Directed/physicalpromotion/readbackbeforeqmark.cs: REFANYTYPE を含むリグレッションテスト追加

パフォーマンスへの影響

影響なし。本変更は JIT コンパイル時の QMARK 処理タイミングを調整するもので、生成コードのランタイム動作には影響しません。

関連Issue

#133047

その他

  • 本変更は JIT コンパイラの内部実装(public API に変更なし)
  • REFANYTYPE は特殊なケースのため、physical promotion ロジックを複雑化させず早期展開で対応する設計
  • DEBUG チェックにより将来の regression を防止

目次