Pull Request on 2026年03月05日

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

注意点

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



#125223 Remove mcs stuff from linker test framework.

  • 作成者: @mrvoorhe
  • 作成日時: 2026年03月05日 15:05:56(UTC)
  • マージ日時: 2026年03月05日 22:00:15(UTC)
  • ラベル: linkable-framework community-contribution area-Tools-ILLink

概要

ILLink linkerのテストフレームワークからmcs(Monoコンパイラ)関連のコードを削除するPRです。Unityが唯一のmcs使用理由でしたが、メソッドボディ変更テストのためのカバレッジ維持コストが利益を上回ったため、mcs関連のテストインフラを全削除します。

変更内容

  • TestCaseCompiler.cs: mcs/外部コンパイラサポートコード(69行)を削除
  • mcs関連テストケース削除:
    • CanCompileTestCaseWithMcs.cs(39行削除)
    • CanCompileReferencesWithResourcesWithMcs.cs(29行削除)
    • CanCompileTestCaseWithMcs_Lib.cs(9行削除)
    • CanCompileTestCaseWithMcs.txt(1行削除)
  • プロジェクト設定更新:
    • Mono.Linker.Tests.Cases.csprojからリソース参照を削除
    • TestFrameworkTests.g.csから生成されたmcsテストメソッド(12行)を削除
  • TestRunCharacteristics.cs: mcs関連の列挙値を削除

パフォーマンスへの影響

影響なし。テストフレームワークの簡素化により、テスト実行時のセットアップオーバーヘッドが若干削減されます。

関連Issue

なし

その他

  • 破壊的変更なし(mcsサポートは内部テストインフラのみ)
  • テストカバレッジの削減ですが、Unityの要件がなくなったため正当化される
  • コード削除による保守性向上(外部コンパイラプロセスの複雑性排除)

#125218 Mark SampleProfilerSampleType.TestEntryPoint with [ActiveIssue] for Native AOT

  • 作成者: @Copilot
  • 作成日時: 2026年03月05日 12:32:52(UTC)
  • マージ日時: 2026年03月05日 22:04:41(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

Native AOT環境で失敗するSampleProfilerSampleType.TestEntryPointテストに対して、[ActiveIssue]属性を追加してスキップするようマークしました。これにより、追跡中の issue #125217 が解決されるまで、Native AOT 実行時のテスト失敗を抑制します。

[ActiveIssue("https://github.com/dotnet/runtime/issues/125217", typeof(Utilities), nameof(Utilities.IsNativeAot))]
[Fact]
public static int TestEntryPoint()

変更内容

  • ファイル: src/tests/tracing/eventpipe/eventsvalidation/SampleProfilerSampleType.cs
  • 追加行: 2行
    • using TestLibrary; を使用文に追加(Utilities.IsNativeAot のため必要)
    • [ActiveIssue] 属性を TestEntryPoint メソッドの [Fact] 属性直前に追加

既存の rundownvalidation.cs と同じパターンに従っています。

パフォーマンスへの影響

影響なし

関連Issue

  • Issue #125217: Native AOT における SampleProfiler の問題
  • PR #124410: SampleProfilerSampleType.TestEntryPoint の追加元

その他

この変更はテストの実行制御のみで、製品コードへの影響はありません。Native AOT 環境での既知の失敗を正式に追跡・管理することで、テスト スイートの安定性を向上させます。


#125215 Revert "Revert 'Increase number of assertions (GlobalAP) + VN cache (#124132)'"

  • 作成者: @Copilot
  • 作成日時: 2026年03月05日 11:33:10(UTC)
  • マージ日時: 2026年03月05日 17:28:30(UTC)
  • ラベル: area-Infrastructure

概要

JIT コンパイラのアサーション伝播を最適化するPRです。Value Number (VN) 存在キャッシュを追加して、アサーション検索の計算量を O(n) から O(1) に削減しました。また、グローバルアサーション テーブルサイズの計算を経験的に検証された公式に変更し、メモリ効率を改善しました。

変更内容

  • compiler.h: optAssertionVNsMap (VNSet*) フィールドと optAssertionHasAssertionsForVN() メソッドを追加
  • assertionprop.cpp:
    • optMaxAssertionCount の段関数テーブルを公式 max(64, min(256, (lvaTrackedCount + 3 * fgBBcount + 48) >> 2)) に置換(1.1M メソッドで検証)
    • VN キャッシュで optAddAssertion の重複検出ガード、optAssertionProp_LclVaroptAssertionVNIsNonNull の早期終了を実装
    • VN + const 分解パターンのレジスタも追加(#124306 より)
  • rangecheck.cpp: MergeEdgeAssertions で NoVN ガードをキャッシュチェックに置換

パフォーマンスへの影響

改善: アサーション検索が O(n) スキャンから O(1) キャッシュ参照に変更され、JIT コンパイル時間を削減。テーブルサイズ公式により、94.6% のメソッドが下限 64、0.4% が上限 256 に収まり、メモリ効率を向上。前回の過度なメモリ割り当て問題は修正済み。

関連Issue

  • #124132(元のPR)
  • #124928(前回のRevert)
  • #124306(VN + const 分解パターン修正)

その他

本 PR は #124928 で Revert された #124132 の再適用です。前回の Revert 原因となった JIT メモリ割り当ての過度な問題は既に修正されています。


#125193 Revert "A few fixes in the threadpool semaphore. Unify Windows/Unix implementation of LIFO policy."

  • 作成者: @agocke
  • 作成日時: 2026年03月04日 21:54:03(UTC)
  • マージ日時: 2026年03月05日 22:46:26(UTC)
  • ラベル: area-System.Threading

概要

PR #123921で統一されたスレッドプール セマフォの実装をリバートします。NuGetリストア パフォーマンスで10-15%の大幅な低下が確認されたため、元のプラットフォーム固有の実装(Windows: IO Completion Ports、Unix: WaitSubsystem)に戻します。futexベースのスレッド ブロッキング インフラストラクチャ全体が削除されます。

変更内容

  • スレッドプール セマフォ実装: LowLevelLifoSemaphoreを、Windows向けIOCP実装とUnix向けWaitSubsystem実装に分離復元
  • futex関連コードの削除: LowLevelFutex.csLowLevelThreadBlocker.cs、futex関連のP/Invoke宣言を削除
  • Win32 API削除: WaitOnAddress/WakeByAddressSingleの使用を削除、Synchronization.lib依存関係を削除
  • スピン戦略の簡素化: 適応型コア利用可能性チェックから単純な設定可能なスピンカウント + ランダム指数バックオフに回帰
  • Backoff.csの変更: 戻り値をvoidに、maxbitsを14に戻す
// PortableThreadPool.WorkerThread.cs の変更例
// 変更前: semaphore.Wait(optimizeForOSScheduler: false)
// 変更後: semaphore.Wait(spinCount) 形式に復帰

パフォーマンスへの影響

改善: 確認済みでNuGetリストア パフォーマンスが10-15%向上します。PR #123921の統一実装がこの領域で回帰を引き起こしていました。プラットフォーム最適化された実装により、スレッド ブロッキングのオーバーヘッドが削減されます。

関連Issue

  • PR #123921(リバート対象)

その他

  • 破壊的変更なし(内部実装のリバート)
  • 21ファイルの変更で、コンパイラ、ランタイム、P/Invoke層に跨る広範な修正
  • ネイティブ側(pal_threading.c/h)のfutex実装も削除

#125190 Make MarkAssembly virtual again

  • 作成者: @mrvoorhe
  • 作成日時: 2026年03月04日 21:26:00(UTC)
  • マージ日時: 2026年03月05日 22:41:55(UTC)
  • ラベル: linkable-framework community-contribution area-Tools-ILLink

概要

PR #120477で誤って削除されたMarkAssemblyメソッドのvirtual修飾子を復元する変更です。Unityのリンカーカスタマイズがこのメソッドをオーバーライドする必要があるため、仮想メソッドとして再度有効化しています。

変更内容

  • MarkStep.cs: MarkAssembly(AssemblyDefinition, DependencyInfo, MessageOrigin)メソッドにvirtual修飾子を追加
// 修正内容(概要)
// virtual 修飾子を付与して、派生クラスでのオーバーライドを可能に
virtual void MarkAssembly(AssemblyDefinition assembly, DependencyInfo dependencyInfo, MessageOrigin origin)
{
    // メソッド実装
}

パフォーマンスへの影響

影響なし。本変更はメソッドのシグネチャ修正のみで、実行時のパフォーマンスに直接的な影響はありません。

関連Issue

  • PR #120477(TypeMap属性処理の更新で本メソッドのvirtualが誤って削除された)

その他

この変更はILLinkツール(.NETランタイムのリンカー)に関連するものです。Unityなど、ILLinkの動作をカスタマイズする外部ツールにとって重要な修正となります。メソッドの仮想化により、派生クラスでMarkAssemblyメソッドの動作をオーバーライド可能になります。


#125188 JIT: fix don't remove issue for loop/try split

  • 作成者: @AndyAyersMS
  • 作成日時: 2026年03月04日 20:50:00(UTC)
  • マージ日時: 2026年03月05日 00:36:27(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITコンパイラにおいて、ループヘッダーがtry-entryでもある場合の分割処理で、元のブロックが不要にBBF_DONT_REMOVEフラグでマークされたままになる問題を修正しました。このフラグが残存するとWasm CodeGenの到達不可能ブロッククリーンアップが妨げられます。修正により、try-beginブロックが更新された後、元のループヘッダーからBBF_DONT_REMOVEフラグを明示的にクリアします。

変更内容

  • src/coreclr/jit/optimizer.cpp: optSplitHeaderIfNecessary関数内で、ループヘッダーがtry-entryの場合、分割後に元のループヘッダーのBBF_DONT_REMOVEフラグをクリアする処理を追加(+5行)

パフォーマンスへの影響

改善点:

  • Wasmコードジェネレーション時の到達不可能ブロック削除が正常に動作するようになり、コード最適化の効率向上が期待できます
  • 不要なフラグ残存による最適化機会の喪失が解消されます

その他:

  • 本修正はWasm実装における既知の問題への直接的な対処で、一般的なx86/ARM環境でのパフォーマンスへの顕著な影響は想定されません

関連Issue

なし

その他

  • この修正は、Wasmコードジェネレーターが到達不可能ブロックに対して特に敏感であるという制約条件への対処です
  • 変更は最小限で、既存ロジックの正確性向上に焦点を当てています

#125187 [RyuJit/WASM] Disable args sorting

  • 作成者: @SingleAccretion
  • 作成日時: 2026年03月04日 20:31:39(UTC)
  • マージ日時: 2026年03月05日 10:26:30(UTC)
  • ラベル: area-CodeGen-coreclr community-contribution

概要

RyuJIT/WebAssembly (WASM) コンパイラにおいて、引数のソート機能を無効化する変更です。この変更により、コード品質(Code Quality)への影響に関する注記が Issue #121865 に追加されました。

変更内容

  • src/coreclr/jit/morph.cpp: 引数ソート処理の無効化(+2/-0)

パフォーマンスへの影響

コンパイル時のコード品質(CQ)への影響が Issue #121865 で検討されています。詳細については、当該 Issue を参照してください。

関連Issue

#121865 - CQ implications に関する注記が追加されています

その他

  • 変更規模が非常に小さい(2行の追加)
  • WASM プラットフォーム固有の最適化に関連する変更
  • レビュワーの承認待ちの状況

#125183 Adjustments to how compiler generated types are ignored.

  • 作成者: @mrvoorhe
  • 作成日時: 2026年03月04日 18:00:13(UTC)
  • マージ日時: 2026年03月05日 22:32:21(UTC)
  • ラベル: linkable-framework community-contribution area-Tools-ILLink

概要

ILLink テストにおいて、コンパイラが生成したポリフィル型(NullableAttribute など)がテスト検証を妨害する問題に対応しました。新しい PrepareToVerifyAssembly メソッドを公開し、検証前に不要な型を無視できるようにしました。これにより Unity の古いバージョンの UnityLinker でのテスト実行やルート型テストがより正確に機能するようになります。

変更内容

  • src/tools/illink/test/Mono.Linker.Tests/TestCasesRunner/AssemblyChecker.cs
    • AssemblyChecker 内のコンパイラ生成属性処理ロジックの削除(EmbeddedAttribute 等の特別処理を廃止)
    • 新メソッド PrepareToVerifyAssembly の追加(検証前の型フィルタリング用)
    • ヘルパーメソッド IgnoreTypeAndItsMembers の追加(型とそのメンバーを一括無視)

パフォーマンスへの影響

影響なし

関連Issue

#125183

その他

本変更は主に Unity の ILLink テスト環境での不正な検証結果を防ぐための改修です。.NET Framework をまだサポートする古いバージョンの UnityLinker や、test.exe 内のルート型に対応するために、コンパイラが自動生成したポリフィル型(NullableAttribute など)の取り扱いを改善しました。PrepareToVerifyAssembly メソッドは拡張ポイントとして設計されており、外部から利用可能です。


#125172 SVE: truncate Extract results for small types

  • 作成者: @a74nh
  • 作成日時: 2026年03月04日 13:01:16(UTC)
  • マージ日時: 2026年03月05日 10:29:46(UTC)
  • ラベル: area-CodeGen-coreclr community-contribution

概要

ARM64 SVE スカラー抽出命令(clasta/clastb および lasta/lastb)が、byte/sbyte/short/ushort などの小さな整数型の戻り値に対して、32ビット/64ビット値を返していた問題を修正します。C# APIの期待値に合わせ、結果を適切に符号拡張/ゼロ拡張するようにコード生成を調整しています。

// 修正前: 32/64ビット値が返される
// 修正後: byte/short型に対して正しく拡張される
var result = Sve.ConditionalExtractAfterLastActiveElement(vector); // short型

変更内容

  • hwintrinsiccodegenarm64.cpp: SVE スカラー clast*/last* 命令の結果を小さな整数型向けに正しく拡張処理を追加。4/8バイト単位の正確な出力サイズを使用
  • hwintrinsicarm64.cpp: 条件付き抽出スカラー import パスの補助的な型伝播ロジックを削除し、簡潔化
  • Runtime_125058.cs: 新規リグレッション試験を追加。SVE対応環境での Sve.ConditionalExtractAfterLastActiveElementshort 型を返す場合の動作を検証
  • Regression_ro_2.csproj: 新規テストソースファイルをコンパイル対象に追加

パフォーマンスへの影響

影響なし。本修正は正確性に関するもので、小さな整数型の結果に対して必要な符号拡張/ゼロ拡張を追加するだけです。

関連Issue

#125058(修正対象)

その他

Copilotレビューより、コメント内の説明が byte/short のみに言及していますが、実装では varTypeIsSmall(intrin.baseType)sbyte/ushort も対象としている点について、コメント文言の正確性向上の提案がありました。


#125156 Add visit budget checks to IsMonotonicallyIncreasing and ComputeDoesOverflow

  • 作成者: @Copilot
  • 作成日時: 2026年03月03日 23:59:24(UTC)
  • マージ日時: 2026年03月05日 11:30:18(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT コンパイラの範囲チェック最適化(RangeCheck)において、IsMonotonicallyIncreasingComputeDoesOverflow の 2 つの関数にビジット予算チェック(m_nVisitBudgetガード)を追加しました。これにより、病的なケースでの無限再帰を防止し、JIT コンパイル時間の爆発を回避します。既に ComputeRange に存在していたパターンと統一されました。

変更内容

修正対象ファイル: src/coreclr/jit/rangecheck.cpp

  • IsMonotonicallyIncreasing(): 予算超過時に false(単調性が証明されない)を返す早期終了処理を追加
  • ComputeDoesOverflow(): 予算超過時に false(オーバーフローなし)を返す早期終了処理を追加
  • 両関数ともサーチパスへの不正な状態書き込みを回避するため、予算チェックを GetSearchPath()->Set(...) より前 に配置

実装パターン(両関数で同一):

// C++コードですが形式統一のため記載
if (IsOverBudget())
{
    return false;
}
m_nVisitBudget--;

パフォーマンスへの影響

改善点:

  • 複雑な型や制御フローを含む病的なコード例において、JIT コンパイル時間の爆発的増加を防止
  • 予算枯渇時に早期終了することで、不必要な再帰処理を削減

その他の考慮点:

  • ComputeDoesOverflow での false 返却は若干楽観的ですが、ComputeRange が独立して予算超過時に Unknown を返すため、不正な最適化(bounds-check elimination)が発生しない設計

関連Issue

なし

その他

  • この変更は既存の ComputeRange で確立されたパターンとの統一性を重視した修正
  • RangeCheck最適化パスで予算管理の一貫性が強化され、JIT の堅牢性が向上

#125154 Add gap fill yaml for gap fill tool

  • 作成者: @DrewScoggins
  • 作成日時: 2026年03月03日 23:44:51(UTC)
  • マージ日時: 2026年03月05日 19:07:46(UTC)
  • ラベル: area-Infrastructure

概要

GapFiller ツールによるパフォーマンスデータのバックフィルに対応するための新しい Azure Pipelines 定義を追加しました。プログラム的に呼び出され、特定のコミットに対するパフォーマンステストを実行し、キャッシュされたビルドの再利用をサポートします。

変更内容

  • eng/pipelines/performance/perf-gapfill.yml (+156行)
    • 新しい Azure Pipelines パイプライン定義ファイルを追加
    • trigger: none / pr: none で手動/プログラム的な呼び出しのみに対応
    • ジョブグループ選択パラメータを実装
    • Sanity Only モード(簡易テスト実行)のサポート
    • キャッシュされたビルド ID を指定してダウンロード可能な機能を実装
    • internal/dotnet-performance リポジトリの既存パフォーマンステンプレートと連携

パフォーマンスへの影響

影響なし。本変更はパフォーマンステストの実行パイプラインを定義するもので、ランタイム性能に直接の影響はありません。ただし、キャッシュされたビルドの再利用により、CI/CD パイプラインの実行時間短縮が期待できます。

関連Issue

なし

その他

  • このパイプラインは GapFiller ツール(外部ツール)からの呼び出しを想定した設計となっています
  • 過去のコミットに対するパフォーマンスデータの欠落を補完するためのインフラストラクチャ機能です

#125146 [RyuJit/WASW] Insert temporaries when needed in the stackifier

  • 作成者: @SingleAccretion
  • 作成日時: 2026年03月03日 19:23:34(UTC)
  • マージ日時: 2026年03月05日 18:59:52(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr community-contribution

概要

このPRは、WebAssembly(WASM)ターゲット向けのJIT stackifierを改善し、必要に応じて一時変数を挿入できるようにしたものです。stackifierを単一ブロックウォークから完全なブロック走査に変更することで、より詳細な状態管理を実現し、スタック値のより正確な処理が可能になります。

変更内容

  • lowerwasm.cpp: Stackifier実装の主要な変更(+184/-58)。ブロック全体を走査する構造に変更し、一時変数の挿入ロジックを追加
  • registeropswasm.cpp: 新しい補助関数の追加(+40行)。スタック操作に関連する新しいロジックを実装
  • lower.h/lower.cpp: Stackifier関連のメンバー定義と実装の調整。13行削除されていることから、不要な定義が整理された可能性が高い
  • regallocwasm.cpp: レジスタ割り当てロジックの微調整(+5/-6)

パフォーマンスへの影響

影響なし。本変更は生成されるコードの正確性を改善するための構造的な変更であり、パフォーマンスに直接的な影響を与えるものではありません。むしろ、不正なスタック値の処理によるランタイムエラーを防ぎ、正確なコード生成を保証します。

関連Issue

PR#125073に依存しています。

その他

  • WASM JIT コンパイラのスタック値管理に関わる重要な改善です
  • 複数回のレビューを経ており、レビュープロセスで慎重に検討されたことが伺えます
  • 状態管理の強化により、エッジケースにおけるコード生成の信頼性が向上します

#125119 [browser][coreclr] Conditionally disable tests which need MT in Pri1

  • 作成者: @radekdoulik
  • 作成日時: 2026年03月03日 14:22:49(UTC)
  • マージ日時: 2026年03月05日 09:19:21(UTC)
  • ラベル: arch-wasm area-Infrastructure-coreclr

概要

このPRは、WASM単一スレッド環境を含むマルチスレッドをサポートしないプラットフォームで実行されるべきではないテストを条件付きでスキップするように、CoreCLRブラウザ/スレッドテストを更新しています。PlatformDetection.IsMultithreadingSupportedを使用してテストをゲート化し、必要に応じてTestLibraryを組み込んでいます。

// 変更例:[Fact]から[ConditionalFact]へ
[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsMultithreadingSupported))]
public void TestMethod() { }

変更内容

  • 236ファイル更新

  • テストコードの変更(約100ファイル)[Fact]属性を[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsMultithreadingSupported))]に置き換え

    • ThreadStatic関連テスト(6ファイル)
    • ThreadPool関連テスト(1ファイル)
    • スレッド回帰テスト(1ファイル)
    • ジェネリクス ThreadStart テスト(30ファイル)
    • ジェネリクス WaitCallback テスト(30ファイル)
    • ジェネリクス TimerCallback テスト(31ファイル)
    • Monitor (TryEnter/EnterExit) テスト(20ファイル)
  • プロジェクトファイルの変更(約130ファイル)$(TestLibraryProjectPath)参照を各.csprojファイルに追加

  • Importの追加:テストファイルにusing TestLibrary;を追加

パフォーマンスへの影響

影響なし

このPRは条件付きテスト実行のためのメタデータ変更のみであり、実行時のパフォーマンスに直接的な影響はありません。マルチスレッド非対応プラットフォーム(WASM単一スレッド)ではテストが自動的にスキップされることで、テストスイートの不適切な失敗を回避し、テスト実行時間を短縮できます。

関連Issue

なし

その他

品質管理上の懸念:Copilotのレビュー結果によれば、WaitCallback関連の複数の.csprojファイル(30ファイル)に重複したTestLibraryプロジェクト参照が追加されています。これらは既存参照との重複であり、クリーンアップが必要な可能性があります。


#125116 [mono][sgen] Fix card scanning in LOS non-array objects

  • 作成者: @BrzVlad
  • 作成日時: 2026年03月03日 13:43:09(UTC)
  • マージ日時: 2026年03月05日 11:20:05(UTC)
  • ラベル: area-GC-mono

概要

SGen(Mono のガベージコレクタ)のカードテーブルスキャン処理における重大なバグを修正しました。オブジェクト開始アドレスがカード境界にアライン されていない場合に、複数カードにまたがるLOS(Large Object Space)の非配列オブジェクトをスキャンするときに、後続のカードがスキップされていた問題を解決します。

変更内容

  • ファイル: src/mono/mono/sgen/sgen-cardtable.c
  • 変更: sgen_card_table_region_begin_scanning 関数で、開始アドレスを含むカード境界の開始位置にアラインダウンする処理を追加(オーバーラップするカード設定で有効)

パフォーマンスへの影響

懸念点: 本来スキップされるべきでなかったカードを正しく走査するようになるため、GC処理時間が若干増加する可能性があります。

緩和要因: 実際には以下の条件を満たすオブジェクトのみに影響するため、実用上の影響は限定的です:

  • オブジェクトサイズが8KB以上(LOS対象)
  • 配列ではないオブジェクト
  • 開始アドレスがカード(512バイト)の中途に位置

関連Issue

その他

バグの技術詳細: カードサイズが512バイトの場合、開始アドレス500、サイズ20のオブジェクトは2つのカードにまたがりますが、500 + 512 < 520 の判定で次のカードが走査されていませんでした。修正により、開始アドレスをカード境界にアラインダウンすることで、オブジェクトが複数カードにまたがるかどうかを正確に判定できます。


#125030 [main] Source code updates from dotnet/dotnet

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年03月02日 02:03:03(UTC)
  • マージ日時: 2026年03月05日 02:40:37(UTC)
  • ラベル: area-codeflow

概要

dotnet/dotnetのVMR(Virtual Monolithic Repository)から定期的に同期された自動更新PRです。Roslyn、NuGet、System.Text.Jsonなど複数の主要コンポーネントの依存関係を2026年3月2日のビルドに更新します。このコードフロー更新により、コンパイラツールチェーンとビルドインフラが最新の状態に保たれます。

変更内容

  • eng/Version.Details.props (+39/-39): バージョン定義ファイル
  • eng/Version.Details.xml (+79/-79): 詳細なバージョン管理メタデータ
  • global.json (+4/-4): .NET SDKバージョン設定
  • eng/common/native/install-dependencies.sh (+1/-1): ネイティブ依存関係インストールスクリプト

主な依存関係更新:

  • Microsoft.CodeAnalysis: 5.5.0-2.26124.102 → 5.6.0-2.26152.106(Roslynコンパイラ)
  • Microsoft.DotNet.Arcade.Sdk: ビルド基盤の更新
  • System.Text.Json: 11.0.0-preview.3対応
  • *NuGet. (Frameworks/Packaging/ProjectModel)**: 7.5.0-rc.12502 → 7.5.0-rc.15306
  • Microsoft.NET.Sdk.IL: IL生成ツールチェーン更新

パフォーマンスへの影響

影響なし。このPRは依存関係の自動同期であり、直接的なパフォーマンス変更を含みません。ただし、Roslyn 5.6.0への更新により、コンパイル時の解析パフォーマンスが向上する可能性があります。

関連Issue

なし(コードフロー自動更新PR)

その他

  • このPRはdotnet-maestro[bot]による自動生成です
  • ビルド ID: 20260302.6
  • VMRコミット: 5507d7a
  • 関連ソースリポジトリ更新: arcade、aspnetcore、roslyn、efcore、msbuild、nuget.client、fsharp、wpf、winformsなど複数のコンポーネント

#125029 Add RecommendedReaderVersion advisory mechanism to cDAC RuntimeInfo contract

  • 作成者: @noahfalk
  • 作成日時: 2026年03月02日 00:06:31(UTC)
  • マージ日時: 2026年03月05日 09:35:42(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC RuntimeInfo契約に新しい推奨読者バージョンアドバイザリーメカニズムが追加されました。ランタイムがダイアグnosticsツール更新の推奨が必要な変更を行う際、CDAC_RECOMMENDED_READER_VERSION定数をインクリメントすることで、ツール開発者が更新の必要性を判断できるようになります。

主な追加内容:

  • CurrentReaderVersion: 契約作成時のリーダーバージョン(現在は1)
  • RecommendedReaderVersion: ランタイム全体で定義される推奨バージョン
// ツール側での利用例
if (runtimeInfo.RecommendedReaderVersion > tool.CurrentReaderVersion)
{
    // ユーザーに更新を推奨
}

変更内容

  • datadescriptor.inc: CDAC_RECOMMENDED_READER_VERSION定数とグローバル変数を追加
  • IRuntimeInfo.cs: 新しいRecommendedReaderVersionプロパティをインターフェースに追加
  • RuntimeInfo_1.cs: ランタイムグローバルから推奨バージョンを読み込む実装
  • Constants.cs: 定数定義を追加
  • RuntimeInfoTests.cs: テストケース追加
  • RuntimeInfo.md: 設計ドキュメント更新

パフォーマンスへの影響

影響なし。これは診断ツール用のメタデータメカニズムであり、ランタイムのパフォーマンスには直接影響しません。

関連Issue

なし

その他

  • 破壊的変更なし(既存APIに対する加算的な変更)
  • 新しいプロパティは読み取り専用で、ランタイムグローバルから取得
  • ツール開発者はこの値を参照して、互換性に関する推奨表示を実装可能

#125016 Add CodeQL query exclusions for dangerous deserialization rules

  • 作成者: @GrabYourPitchforks
  • 作成日時: 2026年02月28日 21:01:09(UTC)
  • マージ日時: 2026年03月05日 00:46:31(UTC)
  • ラベル: area-Meta

概要

dotnet/runtimeリポジトリにおいて、CodeQL解析ツールの危険な逆シリアライズルール関連のアラートを除外する設定を追加しました。この変更により、内部作業項目データベースで約470件のアラートが静かになります。

変更内容

  • .CodeQL.yml: CodeQL query exclusions設定を追加(+17行)
    • 危険な逆シリアライズルール(deserialization rules)に対する除外条件を設定
    • 既存の設定に対して新規除外ルールを統合

パフォーマンスへの影響

影響なし

このPRはCodeQL解析の設定変更のみであり、ランタイムコードやコンパイルシステムには影響しません。

関連Issue

その他

  • 本変更はセキュリティスキャンの結果報告(アラート)を管理するためのものです
  • 除外対象のルールは既知の安全なパターンまたは誤検知の可能性がある逆シリアライズ関連の警告と考えられます
  • TSA(Threat Security Analysis)による完全なデータベース取込後に効果が反映されます

#124996 [cDAC] Implement GetCurrentAppDomain on IXCLRDataTask

  • 作成者: @barosiak
  • 作成日時: 2026年02月28日 01:04:23(UTC)
  • マージ日時: 2026年03月05日 20:15:12(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact Data Access Contract)において、IXCLRDataTaskインターフェースにGetCurrentAppDomainメソッドを実装しました。このメソッドにより、タスク(スレッド)の現在のAppDomainを取得できるようになります。デバッグおよび診断ツールがランタイム情報にアクセスする際に必要な機能です。

変更内容

  • ClrDataTask.cs: GetCurrentAppDomainメソッドを追加実装(+27行)
  • ClrDataAppDomain.cs: 新規作成、AppDomain情報を管理するクラス(+70行)
  • ClrDataFrame.cs: マイナーな修正(+1/-1行)
  • IXCLRData.cs: インターフェース定義の調整(+2/-2行)
  • ClrDataTaskTests.cs: GetCurrentAppDomainの動作検証テストを追加(+45行)

パフォーマンスへの影響

影響なし。本変更は診断・デバッグ機能の追加であり、ランタイムのホットパス上の処理ではありません。

関連Issue

なし

その他

  • 本実装はcDAC(Compact DAC)フレームワークの一部で、マネージド診断インフラストラクチャの拡張です
  • 複数のレビュワーによる段階的なレビューが実施されており、実装の品質確保が図られています
  • テストカバレッジが同時に追加されています

#124244 Reduce custom operator behavior in the Volatile structure

  • 作成者: @davidwrighton
  • 作成日時: 2026年02月10日 21:47:59(UTC)
  • マージ日時: 2026年03月05日 17:55:17(UTC)
  • ラベル: area-PAL-coreclr

概要

Volatile<T> 構造体の不要なカスタムオペレーター実装を削除し、スレッド安全性が必要な箇所で interlocked 操作を導入するリファクタリングです。主な変更は Module::SetDebuggerInfoBitsModule::EnableEditAndContinue でのレースコンディション対策、および critical section で保護されているフィールドの volatile 修飾子削除です。

変更内容

  • volatile.h (gc/env, inc): カスタムオペレーター実装の削除(計90行削減)
  • ceeload.cpp/h: Module クラスの SetDebuggerInfoBitsEnableEditAndContinue メソッドを interlocked 操作に変更
  • synchcache.hpp: volatile 修飾子の削除(critical section で保護されているメンバー)
  • synchobjects.hpp: volatile 修飾子の削除
  • gc.cpp/gcpriv.h: alloc_context_count 関連の変更(ただし意図的にレーシー実装を維持)
  • threads.h, init.h: volatile 関連の修正
  • ceemain.cpp, pal.cpp: Reflection.Emit の不具合対策

パフォーマンスへの影響

影響は最小限。Reflection.Emit に起因する理論的なレースコンディション対策のため interlocked 操作を導入していますが、実際の性能インパクトは無視できる程度です。alloc_context_count はレーシー実装を意図的に維持しており、現代 CPU の再オーダーバッファ長増加時の動作については今後の検討課題として残されています。

関連Issue

#124106 から独立したレビュー/マージ向けに抽出した変更

その他

本変更は主にコードの正確性向上を目的とした整理です。alloc_context_count のレーシー実装については、より広範なテストなしに動作変更を加えることは避けられており、modern CPU アーキテクチャでの atomic increment/decrement の採用検討が将来の課題として存在します。


目次