Pull Request on 2026年05月15日

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

注意点

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



#128215 [cDAC] Reparse pending sub-descriptors on Flush

概要

cDAC(Compact Diagnostic Access Component)がランタイム起動時に早期にアタッチされた場合、サブモジュール(特にGC)の契約記述子アドレスがまだnullであるため、初期スキャンで見落とされる問題を修正します。Flush() メソッド時にペンディング中のサブ記述子を再解析し、動的に設定されたサブ記述子を取得できるようにします。

変更内容

  • ContractDescriptorTarget.cs: 二段階ビルド方式に再構築
    • Pass 1: ペンディング中のサブ記述子スロットをウォークし、nullから非nullに変更されたポインタについてサブ記述子をロード、_descriptorsに追加。ロードされたサブ記述子は自身のペンディングスロットを提供し、外側のdo/whileループで反復的にドレイン
    • Pass 2: 記述子セットが実際に拡張された場合(またはコンストラクション時)のみ、_contracts、_types、_globalsを再構築
  • Target.cs: 軽微な変更(1行追加・削除)

パフォーマンスへの影響

影響なし(Flush()呼び出し時の既存処理フロー内での再解析のため、新たなオーバーヘッドは最小化)

関連Issue

#128215 関連する既知の問題: SOS.StackAndOtherTests の失敗(ランタイム診断パイプライン)

その他

  • テスト結果: Microsoft.Diagnostics.DataContractReader.Testsで2133パス、0失敗、16スキップ
  • 手動検証済み: cdb + !SetHostRuntime -none + DOTNET_ENABLE_CDAC=1でランタイム起動直後のテストに成功
  • 不変式: サブ記述子が一度設定されると変更されないが、null から値に遷移する可能性がある設計に依存
  • 内部実装変更(パブリックAPI非該当)

#128202 Fix build, modifier order

概要

IDE0036ルール違反(修飾子の順序が正しくない)を修正しました。C#のコーディング標準に従い、修飾子の順序を適切に並べ替えています。

変更内容

  • BitVector256.cs: 修飾子の順序を修正(2行変更)
  • RabinKarp.cs: 修飾子の順序を修正(1行変更)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは機能変更を含まず、コード品質向上を目的とした修飾子順序の修正です。


#128172 [Wasm RyuJIT] Fix: Use passed in ig when possible for IF_CODE_SIZE in emitDispIns()

概要

Wasm RyuJITにおいて、emitDispIns()が呼び出される際にemitCurIGに依存する代わりに、渡されたパラメータのigを優先して使用するように修正しました。コードジェネレーション完了後にemitDispIns()が呼び出されるシナリオで、emitCurIGが設定されていない可能性があるため、より堅牢な実装に改善しています。

変更内容

  • src/coreclr/jit/emitwasm.cpp: IF_CODE_SIZEの処理において、渡されたigパラメータを優先して使用し、必要な場合のみemitCurIGにフォールバックするように修正。アサーション追加により、命令グループが利用可能であることの不変性を強制するようにしました。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この修正は内部実装の改善であり、公開APIには影響しません。Wasmバックエンドのディスアセンブリパスの堅牢性向上が目的です。


#128139 [ci-scan] Skip StartDetached_GrandchildSurvivesSignalingParent on Windows (refs #126936)

概要

Windows上でStartDetached_GrandchildSurvivesSignalingParentテストが継続的に不安定になっているため、[ActiveIssue]属性を追加してWindows環境でのテスト実行をスキップする変更。過去1ヶ月間に23回、過去7日間に5回の失敗が記録されており、根本原因の調査が進むまでCI環境を安定させるための一時的な対応。

変更内容

  • src/libraries/System.Diagnostics.Process/tests/ProcessTests.cs: StartDetached_GrandchildSurvivesSignalingParentテストメソッドに[ActiveIssue(..., TestPlatforms.Windows)]属性を追加し、Windows環境でのみテストを実行スキップ

パフォーマンスへの影響

影響なし(テストスキップによるCI実行時間の短縮)

関連Issue

#126936

その他

  • テスト失敗内容: Assert.Equal() Failureで期待値Falseに対し実際の値がTrueを返す
  • 影響範囲: Windows x64 Release ビルドのruntime-extra-platformsパイプライン
  • 本修正は一時的な対応であり、@adamsitnikによる根本原因の調査が別途進行中

#128107 Make IL Scanner report both variants

概要

IL Scannerが Runtime async メソッド内で async バリアント(サンク)のみをレポートしていた問題を修正。async バリアントが thunk である場合、JIT は元の task 返却バリアントに切り替える可能性があるため、両バリアントをレポートするよう変更し、JIT がコンパイル時に最適なバリアントを選択できるようにします。

変更内容

  • ILImporter.Scanner.cs: スキャンされた呼び出しターゲットの async バリアントへの書き換えを削除し、元の呼び出しターゲットを保持しながら async バリアントを並行してトラッキング。generic-lookup 関連ノードを含め、async バリアントの依存関係もレポートするよう追加(+29行/-21行)
  • awaitingnoasyncgeneric.csproj: テストファイルの削除(-6行)

パフォーマンスへの影響

影響なし

関連Issue

#127179

その他

NativeAOT コンパイラの内部実装変更です。公開 API への影響はなく、IL Scanner が両方のバリアントの依存関係情報をレポートすることで、JIT がコンパイル時により適切な実装を選択できるようになります。


#128066 Fix runtime-async on riscv64 with R2R

概要

RISC-V64アーキテクチャでReady2Run (R2R)コンパイルを使用する際に発生していたランタイムエラー(SIGSEGV、NRE)を修正します。AUIPC命令の即値フィールドを置換する処理を、既存の値にOR演算を行う方式から置換方式に変更することで、リロケーション処理を正確に行うようにしました。

変更内容

  • src/coreclr/jit/emitriscv64.cpp: RISC-V64 JITコンパイラのAUIPCリロケーション処理を修正。即値フィールドの置換ロジックを改善
  • src/coreclr/tools/Common/Compiler/DependencyAnalysis/Relocation.cs: リロケーション解析の即値フィールド処理をAUIPCに対応させて修正
  • src/coreclr/tools/superpmi/superpmi-shared/spmiutil.cpp: SuperPMIユーティリティのAUIPCリロケーション処理を修正
  • src/coreclr/utilcode/util.cpp: ランタイムユーティリティのAUIPCリロケーション処理を修正

パフォーマンスへの影響

影響なし

関連Issue

#128066

その他

この修正はRISC-V64プラットフォーム固有の問題であり、R2Rコンパイルが有効な場合の実行時クラッシュ(SIGSEGV)とNull参照例外(NRE)を解決します。Common.TestsおよびSystem.IO.FileSystemテストが正常に動作することが確認されています。


#127945 Emit platform-native line endings in requesting assembly chain

  • 作成者: @Copilot
  • 作成日時: 2026年05月08日 04:25:17(UTC)
  • マージ日時: 2026年05月15日 03:26:00(UTC)
  • ラベル: area-AssemblyLoader

概要

例外の要求元アセンブリチェーンがネイティブコードで構築される際に、プラットフォーム固有の改行コード(Windows: \r\n、Unix: \n)を使用するように変更しました。これにより、マネージド側のToString()オーバーライドでReplaceLineEndings()呼び出しが不要になります。

変更内容

  • src/coreclr/vm/appdomain.cpp: AppDomain::GetParentAssemblyChainメソッド内で、" --> "の前に追加するプラットフォーム固有の改行コードを条件付きコンパイル(Windows: \r\n、Unix: \n)で出力
  • BadImageFormatException.cs: ToString()メソッドから_requestingAssemblyChain.ReplaceLineEndings()呼び出しを削除
  • FileLoadException.cs: ToString()メソッドから_requestingAssemblyChain.ReplaceLineEndings()呼び出しを削除
  • FileNotFoundException.cs: ToString()メソッドから_requestingAssemblyChain.ReplaceLineEndings()呼び出しを削除

パフォーマンスへの影響

軽微な改善:例外のToString()が呼び出されるたびにReplaceLineEndings()処理が実行されなくなるため、わずかなメモリアロケーション削減と実行時間短縮が期待できます。

関連Issue

PR #125795で追加された_requestingAssemblyChainフィールドの実装を改善

その他

  • 既存テスト(MissingTransitiveDependency_ShowsRequestingAssemblyChain)は全てパス(39/39)
  • 例外固有テスト(BadImageFormatException、FileLoadException、FileNotFoundException)も全てパス
  • CodeQL検証合格

#125481 [Android] Re-enable System.Net.Http.Functional.Tests

概要

Android CoreCLRで無効化されていたSystem.Net.Http.Functional.Testsを再度有効化するPR。テストはAndroid Helix キュー(x64-linux、arm64-win)で合格し、30分のデフォルトタイムアウト内に完了することを確認。ただし以前と比べてテスト実行速度が低下しており、根本原因は未特定の状態。

変更内容

  • src/libraries/System.Net.Http/tests/FunctionalTests/AssemblyInfo.cs: Android CoreCLRのActiveIssue属性を削除し、System.Net.Http.Functional.Testsを再度有効化

パフォーマンスへの影響

テスト実行速度が以前と比べて低下しているが、具体的な数値は記載されていない。根本原因は未特定で、別途調査が必要。

関連Issue

#124526 #125171

その他

Copilot Reviewerの概要では、Android Helix work itemのタイムアウトを30分から2時間に延長することが記載されていますが、提供いただいた変更ファイル情報には詳細が含まれていません。


#125367 [browser] WebAssembly SDK targets more incremental

概要

WebAssembly Browser SDK のビルドターゲットにおける MSBuild インクリメンタルビルド対応を改善しました。ConvertDllsToWebcil と GenerateWasmBootJson タスクを複数のより小さなターゲットに分割し、Inputs/Outputs メカニズムを適用することで、入力に変更がないノーオプリビルド時にこれらの高コストな処理をスキップできるようになりました。

変更内容

Microsoft.NET.Sdk.WebAssembly.Browser.targets:

  • Webcil 変換:_ResolveWasmOutputs を 3 つのターゲットに分割
    • _ComputeWasmBuildCandidates(常時実行):ビルド候補の解決と分類、出力パスの計算
    • _ConvertBuildDllsToWebcil(インクリメンタル):DLL から webcil への変換を実施(入力が出力より新しい場合のみ)
    • _ResolveWasmOutputs(常時実行):webcil アイテムの再構築と静的 Web アセット定義
  • Boot JSON 生成:_GenerateBuildWasmBootJson を 3 つ、GeneratePublishWasmBootJson を 2 つのターゲットに分割
    • 各タスク実行後に <Touch> タスクを追加し、内容比較ベースの書き込みロジックがタイムスタンプを保持する問題に対応
    • インクリメンタル実行対象のターゲットをスキップした場合の <FileWrites> アイテム補充

Wasm.Build.Tests/RebuildTests.cs:

  • ノーオプリビルドで _ConvertBuildDllsToWebcil と _WriteBuildWasmBootJsonFile が正しくスキップされることを検証するテスト追加

パフォーマンスへの影響

ノーオプリビルドで改善:

  • _ConvertBuildDllsToWebcil:60ms → 7ms(スキップ時)
  • _WriteBuildWasmBootJsonFile:104ms → 4ms(スキップ時)

クリーンビルド時の総ビルド時間に顕著な悪化なし。インクリメンタルビルドでのターゲット実行オーバーヘッドは最小限。

関連Issue

#125329(Framework SourceType 分類)

その他

  • フレームワークアセット分類時の MSB4096 バッチエラー対応:文化固有 DLL と非文化固有 DLL を別の中間アイテムに分離
  • ConvertDllsToWebcil(Utils.MoveIfDifferent)と GenerateWasmBootJson(ArtifactWriter.PersistFileIfChanged)が内容比較ベースで書き込むため、MSBuild のタイムスタンプベースのインクリメンタル性を損なわないよう <Touch> で対応
  • dotnet clean が正常に機能するよう、常時実行されるラッパーターゲットに <FileWrites> アイテムを追加

目次