2026年03月のダイジェスト

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

← アーカイブ一覧へ戻る

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

673
PR 数(Total)
460
PR 数(Community)
152
PR 数(AI Agent)
61
PR 数(Bot)
113
ラベルタイプ数
31
更新日数

日別 Pull Request 数

日付をクリックするとその日のセクションへ移動します。

ラベル別 Pull Request 数(上位10)

ラベル別 Pull Request 数の上位10 上位10件の合計552件を100%とした内訳です。各スライスの番号は凡例の番号に対応します。ラベルごとの件数は凡例を参照してください。 1. area-CodeGen-coreclr — 100 PRs (18.1%) 2. community-contribution — 93 PRs (16.8%) 3. arch-wasm — 67 PRs (12.1%) 4. Servicing-approved — 66 PRs (12.0%) 5. area-Diagnostics-coreclr — 57 PRs (10.3%) 6. area-Infrastructure — 46 PRs (8.3%) 7. area-codeflow — 45 PRs (8.2%) 8. area-VM-coreclr — 31 PRs (5.6%) 9. linkable-framework — 26 PRs (4.7%) 10. area-NativeAOT-coreclr — 21 PRs (3.8%)
  1. area-CodeGen-coreclr100 PRs18.1%
  2. community-contribution93 PRs16.8%
  3. arch-wasm67 PRs12.1%
  4. Servicing-approved66 PRs12.0%
  5. area-Diagnostics-coreclr57 PRs10.3%
  6. area-Infrastructure46 PRs8.3%
  7. area-codeflow45 PRs8.2%
  8. area-VM-coreclr31 PRs5.6%
  9. linkable-framework26 PRs4.7%
  10. area-NativeAOT-coreclr21 PRs3.8%
上位10件で全1033件中552件(53.4%)を占めます。ラベルは1つの Pull Request に複数付くため、比率は PR 数ではなくラベル付与の延べ数に対するものです。

各 Pull Request の概要

この月にマージされた 673 件を新しい日から順に並べています。タイトルをクリックするとその日のページの該当箇所へ移動します。Bot が作成した 61 件はタイトルのみにして、各日の最後にまとめています。

2026年03月31日 (21 PRs)うち Bot 1 件 この日のページ →

#126347 Skip Verify_ConstructDelegateFromFunctionPointer on NativeAOT

@Copilot・GitHub・area-NativeAOT-coreclr

NativeAOT環境でVerify_ConstructDelegateFromFunctionPointerテストがPlatformNotSupportedExceptionで失敗する問題を修正します。NativeAOTは検証可能なデリゲート構築シーケンスの外でデリゲートコンストラクタを直接呼び出すことをサポートしていないため、[ActiveIssue]属性を追加してNativeAOT上でテストをスキップします。

#126328 Fix NativeAOT GC crash: populate volatile arg registers from UniversalTransitionThunk

@Copilot・GitHub・area-NativeAOT-coreclr

NativeAOT環境でスレッドがRhpUniversalTransition内で割り込まれる際のGCスタックウォーク中のクラッシュを修正します。問題は、スタックフレームイテレータが揮発性引数レジスタ(AMD64のpRcx、pRdx、pR8、pR9など)のセーブ位置をREGDISPLAYに設定せず、NULLのままにしていたため、GCが生きたレジスタ参照をスキャンする際にヌルポインタ参照エラー(0xC0000005)を引き起こしていました。

#126327 [Wasm RyuJit] multi entry try preliminaries

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly (Wasm) ターゲット向けに、複数のエントリポイントを持つtry領域を処理するためのRyuJIT基盤を整備するPRです。FlowGraphTryRegion記述子をDFSなしで構築可能にし、Wasm EH dispatch ブロックにおけるcatch resumption entryの検出とベイルアウト機能を追加します。現段階では複数エントリtry領域に対して未実装(NYI)として動作します。

#126326 [Wasm RyuJIT] Partially implement genStructReturn

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly RyuJIT バックエンドに genStructReturn の部分的な実装を追加し、構造体の戻り値処理に対応します。これにより、wasm crossgen実行時のアサート問題(#125756)に対応します。

現在は FIELD_LIST シナリオのみ実装されており、その他のシナリオは再現環境がないため未実装です。

#126314 Follow-up to #126192: address review comments (doc nit, ShellExecuteHelper refactor, field keyword, test, trimming, waitStateHolder fix)

@Copilot・GitHub・area-System.Diagnostics.Process

#126192のマージ後のレビューコメントに対応した改善。System.Diagnostics.ProcessのShellExecuteサポートをリファクタリングし、ShellExecuteHelper.csを削除してSafeProcessHandle.Windows.csにインライン化。ProcessStartInfo.UseShellExecuteを共有ファイルに統合し、トリミング用のフックを追加。ProcessIdプロパティでfieldキーワードを採用し、無効なハンドルでの検証テストを追加。

#126294 Stop RyuJIT from injecting thumb bit under ILC, remove ObjectWriter compensation

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

ILC(Intermediate Language Compiler)環境下でのARM32 thumb bitの二重カウント問題を修正します。RyuJITがmovw/movt命令にthumb bitを追加する際、ILCで既に定義されているシンボルのthumb bit(+1)と重複していました。修正により、RyuJITのthumb bit注入をReadyToRunとランタイムJITのみに限定し、ObjectWriterの補正ロジックを簡潔化します。

#126281 Adding GetJitHelperFunctionName cDAC API

@rcj1・GitHub・area-Diagnostics-coreclrarea-Diagnostics-cdac

JIT動的書き込みバリア関数などのヘルパー関数に対して、実行時に割り当てられたIPアドレスから人間が読める名前を解決するための新しいcDAC契約(AuxiliarySymbols)を追加します。これにより、SOS DAC の GetJitHelperFunctionName API がディスアセンブリ時に動的JITヘルパーの人間が読める名前を返すことができるようになります。

#126232 Add --tree arg to src/tests/run.[sh|cmd]

@jtschuster・GitHub・area-Infrastructure

テストビルド時に使用される --tree 引数をテスト実行スクリプト(src/tests/run.[sh|cmd])に追加し、ビルドと同じ方法でテスト実行を制限できるようにしました。これにより、開発者は特定のディレクトリツリー配下のテストのみを実行でき、ワークフローを統一できます。

#126228 [RyuJIT Wasm] Support Additional Reloc Types used in R2R in WasmObjectWriter

@adamperlin・GitHub・arch-wasmarea-crossgen2-coreclr

RyuJIT Wasm ReadyToRun(R2R)コンパイラにおいて、WebAssemblyオブジェクトライターで使用される追加の再配置型(WASM_FUNCTION_INDEX、WASM_TABLE_INDEX、WASM_MEMORY_ADDR)をサポートします。これにより、R2R生成時にWasm符号化された即値の正しいパッチアップが可能になります。メモリアドレス再配置は__image_baseを基準にしたWebcilイメージ内のシンボルオフセットとして機能します。

#126123 Fix R2R TypeMap fallback for unresolved assembly targets

@Copilot・GitHub・area-CodeGen-coreclr

ReadyToRun (R2R) モードで TypeMapAssemblyTarget が解決不可能なアセンブリを参照する場合の処理を修正しました。CrossGen2 が解決に失敗した際に空のターゲットエントリを生成し、ランタイムがフォールバック処理をスキップしていた問題を解決し、適切に属性処理にフォールバックして FileNotFoundException をスローするようになります。

#126109 [GeneratedComInterface] Add unsafe to derived partial interface when base has unsafe methods

@Copilot・GitHub・area-Codegen-Interpreter-mono

[GeneratedComInterface]属性を持つ派生インターフェースが、unsafeメソッド(ポインタパラメータを含むメソッド)を持つ基本インターフェースから継承する場合、生成されるシャドウイング/フォワーディングメソッドにunsafe修飾子が不足し、コンパイルエラー(CS0214)が発生していた問題を修正します。生成される派生インターフェース宣言にunsafe修飾子を追加することで、ポインタ型を使用するメソッドをシャドウする際の構文エラーを解決します。

#126056 Refactor DownlevelLibraryImportGenerator to inject types via RegisterPostInitializationOutput

@Copilot・GitHub・area-System.Runtime.InteropServices

DownlevelLibraryImportGeneratorをリファクタリングし、LibraryImportAttributeとStringMarshalling型をRegisterPostInitializationOutput経由でコンパイルに直接注入するように変更しました。従来のeng/generators.targetsによる別ファイル配布方式から移行し、[Microsoft.CodeAnalysis.Embedded]属性を付与してCS0436警告を自動的に抑制します。これにより、源ファイルの#pragma warningディレクティブやダウンレベル向けの#if条件コンパイルが不要になります。

#126043 Redo GC heap size fix in heavily pinning scenarios

@janvorli・GitHub・area-GC-coreclr

GCが4MBリージョンを使用する際に、大量のピン留めシナリオでヒープサイズが増加する問題を修正したPRを再導入し、無限ループによるハング問題も同時に解決しました。大きなプラグ(0x3FFFD0サイズ)がリージョンに収まらない場合、フロントパディングを追加しないようにすることで、リロケーション時の無限リトライを防止します。

#126028 JIT: Refactor async analysis

@jakobbotsch・GitHub・area-CodeGen-coreclrruntime-async

JITコンパイラの非同期変換分析コードを機械的にリファクタリング。AsyncLivenessをAsyncAnalysisに名称変更し、非同期関連の分析を専用の翻訳単位(asyncanalysis.cpp)に統合。また、例外処理(EH)のtry-region連続性に関する命名と前提条件の明確化を行いました。

#125720 [Interpreter] Fix localloc to guarantee 16-byte stack alignment

@Copilot・GitHub・area-CodeGen-Interpreter-coreclr

CoreCLRインタープリタのlocalloc実装が、スタック割り当てポインタをsizeof(void*)(4〜8バイト)にしか整列させていなかった問題を修正します。INTERP_STACK_ALIGNMENT(16バイト)への整列を保証することで、WASMなど16バイト整列が必須のプラットフォームでstackallocが正しく動作するようになります。

#120326 Utf16.IsValid and Utf8/16.IndexOfInvalidSubsequence

@lilinus・GitHub・area-System.Runtimecommunity-contribution

UTF-16とUTF-8の検証APIを標準化するPRです。新たにUtf16.IsValidとUtf16.IndexOfInvalidSubsequenceメソッドをSystem.Text.Unicodeに追加し、併せてUtf8.IndexOfInvalidSubsequenceも追加します。これらの新しい公開APIで既存のカスタム検証ロジックを置き換えることで、コード重複を削減し検証処理を統一します。

Bot PRs (1 PRs)

2026年03月30日 (27 PRs)うち Bot 2 件 この日のページ →

#126282 Remove PSEUDORANDOM_NOP_INSERTION and associated code including GT_PINVOKE_PROLOG, GT_PINVOKE_EPILOG, GT_EMITNOP

@Copilot・GitHub・area-Infrastructure

PSEUDORANDOM_NOP_INSERTION(JIT Spraying対策)および関連する不要なコードを削除。部分信頼(Partial Trust)はランタイムに復帰しないため、数年前からコメントアウトされていたPSEUDORANDOM_NOP_INSERTION定義とそれに関連するGT_PINVOKE_PROLOG、GT_PINVOKE_EPILOG、GT_EMITNOPのGenTreeノード型を完全に削除。

#126225 Remove assertion for unmanaged return frame

@jkoritzinsky・GitHub・area-Diagnostics-coreclr

CoreCLR デバッグのスタックウォークにおけるアサーションを削除します。インタロップデバッギングが有効な場合、スタック全体がアンマネージドコード(C++など)で構成されているシナリオでは、アンマネージド「リターンフレーム」(Frame* フレーム)が存在しない可能性があるため、このアサーションは不正確でした。

#126214 Fix NativeAOT ILC failure on android

@sbomer・GitHub・area-NativeAOT-coreclr

NativeAOT の ILC (Intermediate Language Compiler) がandroidでビルド失敗する問題を修正しました。RuntimeFiles と LibrariesRuntimeFiles から発行されるアセットに対して、ファイル拡張子に基づいて正しい AssetType を割り当てるようにしました。従来は全ファイルに AssetType="runtime" が設定されており、.pdb、.so、.dbg、.dwarf などの非PE形式ファイルまで管理アセンブリとして扱われ、ILC に -r: 参照として渡されることで BadImageFormatException: Unknown file format が発生していました。

#126207 Fix Helix work item premature exit in cDAC dump tests

@max-charlamb・GitHub・area-Diagnostics-cdac

cDAC Helix ダンプテストにおいて、exitコマンドによるシェル強制終了を防ぎ、テスト後処理とxUnit結果報告が正常に実行されるよう修正しました。Windows では %ComSpec% /C exit <code> でサブシェルを使用し、Unix では set_return パターンで exit の代わりに return を使用することで、親シェルを保持しながら終了コードを伝播させます。

#126203 Support all ldloc/ldarg variants in TypeEqualityPatternAnalyzer

@larkliy・GitHub・community-contributionarea-NativeAOT-coreclr

TypeEqualityPatternAnalyzerが、従来の短形式opcodeだけでなく、長形式(ldloc.s/ldarg.s)や他のバリアント(ldloc.0-3/ldarg.0-3など)のldloc/ldargオペコードにも対応するようになりました。これにより、様々な形式の型等値パターンが正しく認識されます。同時にファイルを現代的なC#パターンマッチングに更新しています。

#126192 Introduce SafeProcessHandle.Start and ProcessId

@adamsitnik・GitHub・area-System.Diagnostics.Process

SafeProcessHandle に Start メソッドと ProcessId プロパティを導入し、プロセス起動とハンドル管理のロジックを再構成しました。プロセス起動に関するヘルパーメソッドを Process.[Unix/Win32/Windows].cs から ProcessUtils.$platform.cs に移動し、起動ロジックを SafeProcessHandle.StartCore に統合しました。

#126175 Fix KeyError in crossgen2_comparison.py for omitted_from_diff_dir lookups

@Copilot・GitHub・area-crossgen2-coreclr

crossgen2_comparison.pyスクリプトにおいて、ベース出力に存在するがdiff出力に存在しないアセンブリに対するXML結果生成時に発生していたKeyErrorを修正しました。原因は、omitted_from_diff_dirループで誤ってdiff_results_by_name(該当データが存在しない辞書)を参照していたもので、base_results_by_nameへの参照に修正しました。

#126146 Add built-in OpenTelemetry metrics to MemoryCache

@rjmurillo・GitHub・area-Extensions-Cachingcommunity-contribution

MemoryCache に OpenTelemetry メトリクスサポートを追加します。TrackStatistics = true の場合、キャッシュヒット/ミス、エビクション数、エントリ数、推定サイズを観測可能なインストルメントとして公開します。System.Net.Http の実装パターンに従い、IMeterFactory をサポートし、ファクトリが提供されない場合は SharedMeter にフォールバックします。

#126089 Fix stems handling.

@cincuranet・GitHub・area-Extensions-FileSystem

Microsoft.Extensions.FileSystemGlobbingにおいて、ディレクトリトラバーサル時のステム(パス要素)の不正な累積を修正します。構造体フレームのコピー時に_stemItemsリストの参照が共有されていた問題を、フレームのクローン化により隔離することで解決します。

#126000 ARM64: Display method names for indirect calls in JitDisasm output

@Copilot・GitHub・area-CodeGen-coreclr

ARM64のJitDisasm出力において、間接呼び出し(blr/br_tail)命令にメソッド名のアノテーションコメントを追加する変更です。x64では既にcall [addr] ; MethodNameの形式でメソッド名が表示されていますが、ARM64では表示されていませんでした。メソッドハンドルはidMemCookieに格納されていたため、IF_BR_1Bの表示処理で読み込むようにしました。

変更例:

// Before:
            blr     x2

// After:
            blr     x2      // code for IndirectCallAnnotation:VirtualCallee():int

#125981 SPMI: Fixes to record-and-replay workflows

@jakobbotsch・GitHub・area-CodeGen-coreclr

SuperPMI(コンパイラテスト用ツール)の記録・リプレイワークフローの3つの問題を修正します:

  1. リプレイ時に保存されたコンパイル結果の再利用を防止(既存結果があるとrecAllocMemなど記録関数が動作不正)
  2. -mch_filesオプションでディレクトリと.mcファイルの入力をサポート
  3. 成功したコンテキストがゼロの場合のdiffsレポート生成時の除算エラーを修正

#125868 Fix JIT assert with UnsafeAccessor and delegate ctor

@Copilot・GitHub・area-VM-coreclr

UnsafeAccessor(UnsafeAccessorKind.Constructor)がデリゲート型をターゲットとする場合、JIT最適化フェーズで不正なアサーションが発火する問題を修正します。マルチレベルインライニング後に関数ポインタ引数がGT_FTN_ADDRノードに変換される際、ldftnTokenがnullであってもtargetMethodHndが非nullになり得るケースに対応しました。

[UnsafeAccessor(UnsafeAccessorKind.Constructor)]
extern static Del Construct(object o, IntPtr p);

// 修正前: Assert failed 'targetMethodHnd == nullptr'
Construct(null, (nint)Resolver<Program>.Resolve())();

#125759 Use checked context for memcpy's like API invocations

@Copilot・GitHub・area-System.IO

memcpy関連API(Buffer.MemoryCopy、Buffer.BlockCopy、Unsafe.Copy*)に渡されるサイズ計算でオーバーフローが静かに発生しないようにするため、checked contextを導入します。サイズ計算時のオーバーフローを検出して例外をスロー(fail fast)することで、メモリ安全性を強化します。

#124926 Implement cDAC memory region APIs (GetHandleTableMemoryRegions, GetGCBookkeepingMemoryRegions, GetGCFreeRegions)

@Copilot・GitHub・area-Diagnostics-coreclrarea-Diagnostics-cdac

ISOSDacInterface13の3つのメモリ領域列挙API(GetHandleTableMemoryRegions、GetGCBookkeepingMemoryRegions、GetGCFreeRegions)をcDACネイティブに実装しました。これらのAPIは従来はレガシーDACに委譲されるかE_NOTIMPLを返していました。SOSMemoryEnum実装パターンに従い、ハンドルテーブル、GCブックキープ、フリーリージョンのメモリ領域を効率的に列挙できます。

#121985 JIT: Constant fold SequenceEqual with the help of VN

@hez2010・GitHub・area-CodeGen-coreclrcommunity-contribution

JIT コンパイラのValue Numbering(VN)を活用して、SequenceEqual操作の定数折りたたみを最適化します。異なる文字列定数の比較を、実行時の比較処理を省略して直接コンパイル時に計算結果に置き換えることで、コード生成を大幅に削減します。

示例のStr1.Equals(Str2) ("abcdef" vs "bcdefg") の比較では、生成されたアセンブリが50バイト・PerfScore 11.50から2バイト・PerfScore 0.25に削減されます。

2026年03月29日 (5 PRs) この日のページ →

#126267 Disable CrlBuilderTests.DsaNotDirectlySupported on Android

@steveisok・GitHub・area-System.Security

Android環境でのCRL署名検証テストの不安定性に対処するため、CrlBuilderTests.DsaNotDirectlySupportedテストをAndroidプラットフォームで無効化しました。AndroidのHelix deviceプールに含まれるデバイスのBoringSSLバージョン差異とDSA署名の非決定性により、月間約25%の失敗率が発生していたため、[ActiveIssue]属性を追加してテストをスキップするように修正しています。

#126240 Skip Unicode 17.0 named block tests on .NET Framework

@stephentoub・GitHub・area-System.Text.RegularExpressions

Unicode 17.0アップデート後に追加された58個の新しい名前付きブロックのテストケースが、Unicode 4.0のブロックのみをサポートする.NET Frameworkで失敗していた問題を修正します。新しいブロックテストを!PlatformDetection.IsNetFrameworkガードで条件付き実行して、.NET Frameworkでの116個のouterloopテスト失敗を解決します。

#126235 clang-21 on macos fixes

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

Apple Clang 21(Xcode最新版)でのビルド失敗に対応するパッチです。主な変更は、新しいClangの厳格な型チェック(特に-Wc++-keyword警告と暗黙的なvoid*変換)に対応するため、ネイティブライブラリ群に明示的なキャストを追加しています。ICUヘッダーの警告も抑制しています。

#126230 Enable the PatternsDataSet_GenerateInputsWithNonBacktracking test

@stephentoub・GitHub・area-System.Text.RegularExpressions

NonBacktrackingサンプラーの無限ループバグと、ループバックトラッキング最適化における論理エラーを修正して、PatternsDataSet_GenerateInputsWithNonBacktrackingテストを再有効化します。

修正内容:

  1. サンプラー無限ループ修正:すべてのミンタームが行き止まり状態に到達する場合、UndoTransitionで状態が復元されても終了条件がトリガーされない問題をtransitionSucceededフラグで追跡して解決
  2. バックトラッキング最適化バグ修正:CanReduceLoopBacktrackingToSinglePositionで、後続シーケンスが完全にnullableの場合に不正な削減が発生していた問題を修正(iterateNullableSubsequentをtrueからfalseに変更)

2026年03月28日 (18 PRs)うち Bot 1 件 この日のページ →

#126254 [Wasm RyuJIT] Fix build break

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WASM JIT Loweringパスのデバッグビルド破損を修正するPRです。SetMultiplyUsed呼び出しで、デバッグ構成において必須の"reason"引数を渡すようにしました。マージ時の競合により、チェックを通り抜けてしまった変更を修正します。

#126243 Fix RedirectedOutputDoesNotUseAnsiSequences test failure

@Copilot・GitHub・area-Infrastructure

RedirectedOutputDoesNotUseAnsiSequences テストの失敗を修正しました。xunitのバックグラウンド診断レポーター スレッドが、テスト実行中にリダイレクトされた Console.Out に対してテスト名を書き込み、キャプチャされた出力を汚染していたことが原因です。テスト本体を RemoteExecutor.Invoke() でラップして、xunitレポーター スレッドが干渉しない独立した子プロセスで実行するように修正しました。

#126242 Escape U+2028/U+2029 in regex source generator XML doc comments

@stephentoub・GitHub・area-System.Text.RegularExpressions

正規表現ソースジェネレータがXML doc コメント内でU+2028(行区切り文字)とU+2029(段落区切り文字)をリテラルで出力する際に、C#のコンパイラがコメント内の行終了と解釈してXML解析エラー(CS1519/CS1056)を引き起こす問題を修正しました。これらの文字をエスケープシーケンス(\u2028/\u2029)として出力することで問題を解決します。

#126238 [Wasm RyuJit] Fix another TARGET_64BIT issue

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly RyuJit構成におけるTARGET_64BITマクロの誤った使用を修正しています。WASM環境ではTARGET_64BITがfalseですが、longが分解されない場合がある点に対応するため、#ifndef TARGET_64BITを#if LOWER_DECOMPOSE_LONGSに置き換え、実際にlong分解を行うターゲット(x86/arm32など)でのみアサーション検証を実施するようにしました。

#126221 Revert "Simplify RegexInterpreter (#124628)"

@danmoseley・GitHub・area-System.Text.RegularExpressions

#124628で導入されたRegexInterpreter.MatchStringの簡略化(char-by-charループをStartsWith/EndsWithに置換)をrevertします。この変更により、arm64環境で短い文字列を対象とした正規表現パターン(例:.{0,2}(Tom|Sawyer|Huckleberry|Finn))で7-11%のパフォーマンス低下が発生したため、元の実装に戻します。

#126216 Disable FastReducer_AssertFailure_RegressionTest on 32-bit platforms

@Copilot・GitHub・area-System.Numerics

32ビットプラットフォームでのFastReducer_AssertFailure_RegressionTestのテスト失敗に対するワークアラウンドです。[ActiveIssue]属性を追加して、32ビットプロセスで実行する際にこのテストをスキップします。

[Theory]
[MemberData(nameof(AssertFailureRegressionTest_InputData))]
[ActiveIssue("https://github.com/dotnet/runtime/issues/126212", typeof(PlatformDetection), nameof(PlatformDetection.Is32BitProcess))]
public static void FastReducer_AssertFailure_RegressionTest(...)

#126201 Avoid intermediate managed string and array allocations for envp and argv in Unix process start

@Copilot・GitHub・area-System.Diagnostics.Process

Unix プロセス起動時の argv と envp の構築に関わる中間的なマネージド割り当てを削除し、単一の連続したネイティブメモリブロックに直接エンコードするように最適化したものです。ProcessStartInfo.Environment 辞書を直接渡し、文字列連結や中間配列の割り当てを排除することで、メモリ効率を向上させます。

#126141 Revert "Partially revert PR #125326: revert ComActivator/LicenseInter…

@AaronRobinsonMSFT・GitHub・area-Interop-coreclr

COM ライセンス認証の実装をリファクタリングするプルリクエストです。以前の部分的なリバートをリバートし、CoreCLR と管理側のライセンス相互運用グルーを [UnmanagedCallersOnly] 呼び出しパターンと BSTR マーシャリングを使用するように改善します。また、ネイティブテストの所有権バグを修正し、不要なシグネチャを削除します。

#126063 Prefer posix_spawn on OSX

@Copilot・GitHub・area-System.Diagnostics.Processtenet-performance

macOS上でプロセス生成時にfork/execの代わりにposix_spawnを使用するよう変更しました。これにより、認証情報の設定が不要な場合のパフォーマンスと安全性が向上します。posix_spawnは認証情報設定に未対応のため、setCredentialsがtrueの場合は既存のfork/execパスにフォールバックします。

#126007 Fix regex test OOM on x86 checked coreclr

@danmoseley・GitHub・area-System.Text.RegularExpressions

x86 checked coreclr上でSystem.Text.RegularExpressions.Testsの4つのテストがOutOfMemoryExceptionで失敗する問題を修正します。SourceGenerated正規表現エンジンはテスト時にRoslyn全体コンパイルを実行し、大量のパターン(最大~2,903パターン)が32ビットアドレス空間(~2GB)を枯渇させます。本変更により、32ビットプロセスではRoslyn呼び出しごとに最大200パターンに制限し、メモリ使用量を削減します。

#125914 Fix flaky MountVolume tests: replace fixed delays with polling loops

@Copilot・GitHub・area-System.IO

NTFS マウントポイント操作の伝播に必要な時間を考慮していない固定遅延(300ms)が原因で、Directory_Delete_MountVolume および Directory_ReparsePoints_MountVolume テストが高負荷CI環境で不安定になっていた問題を修正。固定遅延をポーリングループに置き換え、マウントボリュームの削除完了を確実に待機するようにしました。

#125865 Adding R2R cDAC dump tests

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Common Data Access Component)ダンプテストに対してR2R(Ready-To-Run)コンパイル検証機能を追加するPRです。ダンプテストがR2Rコンパイル版とJIT版(DOTNET_ReadyToRun=0で強制)の両構成でテストされるようになります。テスト構成はExecutionManagerおよびStackWalkダンプについてR2R vs JITの検証をカバーしています。

#125406 Enable runtime-async for shared framework source projects in net11.0+ and remove RuntimeAsync config knob

@Copilot・GitHub・area-Infrastructure-librarieslinkable-framework

runtime-asyncをnet11.0以上の共有フレームワークソースプロジェクトで自動有効化し、設定用のRuntimeAsyncconfig knobを削除する変更です。プラットフォーム除外(browser、wasi、android、Apple mobile、Mono)とOOBパッケージの除外条件を設定し、RISC-VとLoongArchのリロケーションハンドリングを修正します。

#124794 Rewrite ConvertToDecimal in XslNumber.cs to use safe code with string.Create and for loop

@Copilot・GitHub・area-CodeGen-coreclrreduce-unsafe

XslNumber.csのConvertToDecimalメソッドをアンセーフコードからセーフコードに書き直しました。stackallocとポインタ演算を使用したunsafeブロックを、string.Createと境界チェック対応のforループに置き換えています。これにより、中間バッファのコピーを削減し、コード安全性を向上させます。

2026年03月27日 (27 PRs)うち Bot 1 件 この日のページ →

#126191 Require RemoteExecutorSupported on color env test

@am11・GitHub・area-Extensions-Loggingcommunity-contribution

NativeAOT環境でRemoteExecutorがサポートされていないため、色環境変数に関連するテストが失敗していた問題を修正しました。DoesConsoleSupportAnsi_RespectsColorEnvVarsテストにRemoteExecutorSupported属性を追加し、RemoteExecutorが利用可能なプラットフォームでのみテストが実行されるようにしました。

#126155 Update llvm-libunwind to 22.1.1

@am11・GitHub・community-contributionarea-NativeAOT-coreclr

LLVM libunwind を 22.1.1 にアップデートします。このPRは3つのコミットで構成され、最初のコミットで libunwind ソースを更新、2番目で過去のパッチを cherry-pick、3番目でバージョンファイルを更新します。squash せずにマージすることが重要です(コミット参照を保持するため)。

#126132 Cache AsyncResumptionStub instances to avoid duplicate resumption stubs in the node factory

@jtschuster・GitHub・area-crossgen2-coreclr

NativeAOT/ReadyToRun コンパイル時に、メソッドの再コンパイル(クロスモジュールインライニングなど)によって同一ターゲットメソッドに対する重複した AsyncResumptionStub インスタンスが作成される問題を修正します。これにより依存グラフのソート時に TypeSystemComparer.Compare() の Debug.Assert が発火していました。CompilerTypeSystemContext に AsyncResumptionStubHashtable を追加し、(targetMethod, owningType) をキーとしてスタブをインターン化することで、重複作成を防止します。

#126116 Remove dead LastReportedFuncletInfo struct

@Copilot・GitHub・area-VM-coreclr

PR #119863でCoreCLR例外処理(EH)の第2パス処理がネイティブコードに移行された際に、不要となったLastReportedFuncletInfo構体の定義が残されていたため、これを削除するクリーンアップです。削除対象の構体はコード内に全く参照されていない完全な孤立した定義です。

#126103 [browser][coreCLR] host cleanup

@pavelsavara・GitHub・arch-wasmarea-System.Runtime.InteropServices.JavaScriptos-browser

Browser/CoreCLR JS ホストサーフェスをクリーンアップするPRです。文字列/UTF-8ヘルパー関数をBrowserUtilsExportsに統合し、相互運用呼び出しサイトを更新しています。主な変更点は、utf8ToStringRelaxedとviewOrCopyをクロスモジュール交換に移行、ReceiverShouldFreeの処理を追加、WASM初期化失敗時のエラーハンドリングを改善、SharedArrayBuffer使用時のバッファコピーに対応しています。

#126099 Implement System.Diagnostics.Process tests for Android

@Copilot・GitHub・area-System.Diagnostics.Processtest-enhancementos-android

System.Diagnostics.ProcessのAndroidプラットフォーム向けテストスイートを実装しました。モバイルプラットフォームではRemoteExecutorがサポートされていないため、これまでテストカバレッジがゼロでした。本PRではlsとsleepコマンドを使用したAndroid固有の5つのテストを追加し、基本的なプロセス操作(起動、標準出力リダイレクト、プロセス終了、終了コード、ハンドルベースのIO)をカバーしています。

#126095 Fix OverflowException in COSE decoder for oversized integer header labels

@Copilot・GitHub・area-System.Security

CoseMessage.DecodeSign1がCBORヘッダーラベルまたは重要なヘッダー値にInt32をオーバーフローするような大きな整数が含まれている場合、CryptographicExceptionの代わりに生のOverflowExceptionをスローしていた問題を修正します。新しい拡張メソッドReadInt32ForCryptoを導入し、OverflowExceptionを適切にCryptographicExceptionでラップします。

// Before: OverflowException escapes to caller
CoseMessage.DecodeSign1(malformedData); // throws OverflowException

// After: properly wrapped
CoseMessage.DecodeSign1(malformedData); // throws CryptographicException (inner: OverflowException)

#126074 Move IDispatch helpers into IDispatchHelpers.cs

@Copilot・GitHub・area-VM-coreclr

CoreCLR COM相互運用性(IDispatch)のサポートをリファクタリングし、IDispatch関連のマネージドヘルパーメソッドをStubHelpersから専用のSystem.Runtime.InteropServices.IDispatchHelpersクラスに移動します。これに伴い、MethodDescCallSiteをUnmanagedCallersOnly(UCO)に変換し、VM呼び出しサイトを更新して新しいエントリポイントを使用するようにします。

#126015 Log cgroup memory.events on exit code 137 as dmesg fallback

@danmoseley・GitHub・area-Infrastructure

Helix Linux コンテナでテストプロセスが終了コード137(SIGKILL/OOM)で終了する際、dmesgがCAP_SYSLOG権限不足で失敗するため、特別な権限を必要としない/sys/fs/cgroup/memory.events(cgroup v2)から OOM 情報を取得するフォールバックを追加します。プロセス固有の cgroup パスは /proc/self/cgroup から導出され、ルート cgroup へのフォールバックも試行します。

#126006 Fix CanReadArrayOfAnySize timeout on checked coreclr by skipping the 2 GB case on non-release runtimes

@Copilot・GitHub・test-enhancementarea-System.Formats.Nrbf

System.Formats.Nrbf.Tests.EdgeCaseTests.CanReadArrayOfAnySizeテストがChecked CoreCLRで14分以上タイムアウトする問題を修正しました。2GB配列テストケースを対象に、Checked/Debug RuntimeおよびNon-64bitプロセスでのみスキップするランタイムチェックを追加しています。小規模なテストケース(100、64,001、127,000要素)は全プラットフォームで実行継続されます。

[ConditionalTheory]
[InlineData(100)]
[InlineData(64_001)]
[InlineData(127_000)]
[InlineData(2147483591)] // Array.MaxLength
public void CanReadArrayOfAnySize(int length)
{
    if (length == 2147483591 && (!PlatformDetection.Is64BitProcess || !PlatformDetection.IsReleaseRuntime || !PlatformDetection.IsNetCore))
    {
        throw new SkipTestException("It would take too much time to execute.");
    }
    // ...
}

#125908 Fix intermittent NRE in ETW listener tests by using GUID overload of EnableProvider

@Copilot・GitHub・area-System.Diagnostics.Tracing

BasicEventSourceTests の ETW テストが CI ストレス環境(PGO、jitstress)で断続的に NullReferenceException で失敗する問題を修正。原因は EtwListener.ApplyEventSourceCommand が文字列ベースの EnableProvider を使用していたため、Windows API の TdhEnumerateProviders が負荷下で一時的に失敗し、null プロバイダー辞書を返していた。修正として、GUID ベースの EnableProvider オーバーロードに切り替え、プロバイダー GUID をアルゴリズム的に計算することで Windows API 呼び出しを排除。

// 変更前
_session.EnableProvider(eventSourceName, (TraceEventLevel)options.Level, (ulong)options.Keywords, ...);

// 変更後
var providerGuid = TraceEventProviders.GetEventSourceGuidFromName(eventSourceName);
_session.EnableProvider(providerGuid, (TraceEventLevel)options.Level, (ulong)options.Keywords, ...);

#125834 Stabilize ML-DSA X.509 PKIs with published RFC 9881.

@vcsjones・GitHub・area-System.Security

RFC 9881の公開に伴い、ML-DSA X.509 PKI関連のAPIを安定化させるため、ExperimentalAttributeを削除するPRです。PublicKey、X509Certificate2、X509CertificateKeyAccessorsのML-DSA関連メンバー、およびML-DSA SPKI/PKCS#8インポート/エクスポートAPIから実験的属性を削除します。なお、External-MuおよびSignPreHashメンバーは引き続き実験的状態です。

#125799 Rewrite BigInteger internals to use native-width (nuint) limbs

@stephentoub・GitHub・area-System.Numerics

System.Numerics.BigIntegerの内部実装をuintリムからnuint(ネイティブ幅)リムへ書き直しました。64ビットプラットフォームではリム数が半減し、マルチリム算術のスループットが向上します。公開APIは変更されていません。

主な改善:

  • 64ビットプラットフォームで各リムが64ビットを保持(32ビットから倍増)
  • Montgomery乗算とREDCをModPow用に追加し、奇数法での除算ベース削減を排除
  • スライディングウィンドウ指数演算でModPowの乗算回数を削減
  • ビット演算での2の補数演算を融合し、アロケーション削減
  • 10のべき乗テーブルをキャッシュして計算コスト削減

#125676 Fix flaky UserPreferenceTests.SignalsUserPreferenceEventsAsynchronously under JIT stress

@Copilot・GitHub・area-Microsoft.Win32

SignalsUserPreferenceEventsAsynchronouslyテストがJITストレス環境で不安定だった問題を修正します。OSから予期しないWM_SETTINGCHANGEメッセージ(wParam=0、カテゴリGeneral)がハンドラー登録とテストメッセージ処理の間に送信される競合状態が原因でした。非同期パスではメッセージ反映までにラグがあるため、JITストレスによる遅延がこの競合ウィンドウを拡大します。

修正内容:changingHandlerとchangedHandlerの両方に、e.Category == expectedCategoryのガード条件を追加し、予期しないOS生成イベントを無視するようにしました。

// 修正後
UserPreferenceChangingEventHandler changingHandler = (o, e) =>
{
    if (e.Category == expectedCategory)
    {
        changingArgs = e;
        changing.Set();
    }
};

#125610 Add System.Text.Json support for F# discriminated unions

@eiriktsarpalis・GitHub・area-System.Text.Json

System.Text.JsonでF#の判別共用体(discriminated unions)のシリアライゼーション/デシリアライゼーション機能が実装されました。フィールドなしの共用体は JSON文字列として、フィールド付きはJSON オブジェクト($type型判別子付き)としてシリアライズされます。

type Shape =
    | Point
    | Circle of radius: float
    | Rectangle of height: float * length: float

let json = JsonSerializer.Serialize(Circle 3.14)
// -> {"$type":"Circle","radius":3.14}

#125468 [RyuJIT Wasm] WasmObjectWriter Webcil Envelope Support

@adamperlin・GitHub・area-crossgen2-coreclr

WasmObjectWriter に WebCIL エンベロープサポートを実装しました。RyuJIT Wasm AOT コンパイラが WebAssembly バイナリ内に PE/CLI ヘッダーとデバッグディレクトリデータを配置できるようになります。

WebCIL ペイロードは、WebCIL 仕様に従って 2 つの Wasm データセグメントとして出力されます:

(data "\0f\00\00\00") ;; データセグメント 0: ペイロードサイズ(4バイト LE uint32)
(data "payload\cc")  ;; データセグメント 1: webcil ペイロード(4バイト境界に整列)

#125083 [browser][coreCLR] no COM, no swift

@pavelsavara・GitHub・arch-wasmarea-VM-coreclrlinkable-frameworksize-reductionos-browser

Browser WASM向けのCoreCLRランタイムビルドをトリミングするため、非Windows環境でCOM相互運用、SEH例外、Windows固有のコードパスを条件付きコンパイルで除外します。また、ComActivatorの逆P/Invokeサンク生成をスキップし、WASM PInvokeCollectorにBrowser非サポート型のコールバック処理をスキップさせる機能を追加します。

#124492 Support the FORCE_COLOR emerging standard in ConsoleUtils.EmitAnsiColorCodes

@Copilot・GitHub・area-System.Console

FORCE_COLOR環境変数(force-color.orgで定義されるスタンダード)のサポートを追加し、標準出力がリダイレクトされていても強制的にANSIカラー出力を有効にします。これによりdotnet watchなどでリダイレクトされた子プロセスにおいても色付き出力が保持されます。DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTIONは従来の動作を保つレガシーエイリアスとなり、優先順位は①FORCE_COLOR/DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION(任意の非空値で色ON) → ②NO_COLOR(任意の非空値で色OFF) → ③リダイレクト検査となります。またNO_COLOR=""は仕様に基づき無視されるようになります。

#124139 Add support for floating-point hex formatting and parsing

@stephentoub・GitHub・area-System.Runtime

IEEE 754形式の16進浮動小数点数のパース・フォーマット機能をdouble、float、Half、BFloat16に追加しました。新しいNumberStyles.HexFloat複合スタイルと"x"/"X"フォーマット指定子により、16進浮動小数点数の入出力が可能になります。

// パース例
double d = double.Parse("0x1.8p+3", NumberStyles.HexFloat); // 12.0

// フォーマット例
double d = 12.0;
string hex = d.ToString("x"); // "0x1.8p+3"

2026年03月26日 (26 PRs)うち Bot 3 件 この日のページ →

#126145 Disable System.Security.Cryptography.Tests from Android CoreCLR smoke tests

@danmoseley・GitHub・disabled-testarea-Infrastructure-coreclros-android

Android CoreCLR エミュレータ上で System.Security.Cryptography.Tests が メモリ不足(OOM)により確定的に失敗するため、スモークテストから除外します。暗号テストスイートが約2GBのメモリ上限に達して lowmemorykiller により強制終了されており、個別テストの無効化では根本的な解決にならないため、プロジェクト全体を除外することで対応します。

#126114 Remove redundant Atomic wrapper and fix shared-prefix extraction in regex reduction

@danmoseley・GitHub・area-System.Text.RegularExpressions

正規表現の解析時ツリーリダクション処理を改善する2つの変更を実施します。

  1. 冗長なAtomicラッパーの削除: バックトラック不可能な単一ノード(One/Notone/Set/Multi)から不要なAtomic((?>...))ラッパーを削除。383パターン(2.2%)に影響。

  2. ExtractCommonPrefixTextの修正: 非テキストブランチが存在する場合、処理を中断せず継続することで、後続する共通プレフィックスを持つテキストブランチのファクタリングを可能に。1,090パターン(6.3%)に影響。

#126092 Lower regex MaxUnrollSize from 16 to 7

@stephentoub・GitHub・area-System.Text.RegularExpressions

正規表現エンジンの固定カウント単一文字リピーター(例:\d{N})に対して、アンロール展開とベクトル化操作の選択基準となるMaxUnrollSize閾値を16から8に低下させました。ベンチマーク結果から、カウント8以上ではベクトル化操作(ContainsAnyExceptなど)が全ての文字クラス型で有効であることが確認されています。

#126087 [browser] deprecate setEnvironmentVariable for mono, drop it for coreclr

@pavelsavara・GitHub・arch-wasmarea-System.Runtime.InteropServices.JavaScriptos-browser

ブラウザ環境での setEnvironmentVariable ランタイムAPIの廃止・削除。CoreCLR向けブラウザランタイムからは完全に削除し、Mono向けブラウザランタイムでは非推奨化する。環境変数の設定には withEnvironmentVariable() またはホストビルダーベースの構成を使用すべき。

#126019 [wasm][coreclr] Disable structinreg P/Invoke test on platforms without native test assets

@radekdoulik・GitHub・arch-wasmarea-Infrastructure-coreclr

WebAssembly/CoreCLRプラットフォーム上で、ネイティブテストアセットが利用できない環境におけるstructinreg P/Invokeテストの実行を無効化するもの。テストが[DllImport("jitstructtests_lib")]を使用するため、ネイティブリンクの準備が完了するまでテストをスキップします。

#126012 Set MSBUILDDEBUGPATH in CI so MSBuild crash diagnostics are preserved

@danmoseley・GitHub・area-Infrastructure

MSBuild がクラッシュした際の診断ファイル(MSBuild_*.failure.txt)を CI パイプラインで保持するため、グローバルビルドジョブテンプレートに MSBUILDDEBUGPATH 環境変数を追加します。

これまで一部のコンポーネント固有のビルドスクリプトのみが診断ファイルを artifacts/log/<config>/MsbuildDebugLogs に出力していましたが、トップレベルのビルドパイプラインではデフォルトのシステム一時ディレクトリが使用され、エージェントのクリーンアップ時に失われていました。

#126011 [release/8.0] Fix OOM in BigInteger OuterLoop tests causing SIGKILL on Linux

@Copilot・GitHub・Servicing-approvedarea-System.Numericstest-bug

release/8.0ブランチのSystem.Runtime.Numerics.TestsのOuterLoopテストがLinux環境でOOM(メモリ不足)によるSIGKILL(終了コード137)で失敗していた問題を修正します。LargeValueLogTestsとDoubleExplicitCastFromLargeBigIntegerTestsでBigIntegerをint.MaxValue / 10ビット単位でシフトしていたため、反復ごとに107MBのメモリを消費していました。この変更により、シフト量を1 << 24に削減し、反復ごとのメモリ消費を107MBから~8MBに削減しながら、テストの正当性を維持します。

#126010 Reduce LargeUriAndHeaders_Works test size on Android to fix timeout flakiness

@Copilot・GitHub・area-System.Net.Http

AndroidのHTTPスタック上でLargeUriAndHeaders_Worksテストが一貫してタイムアウトしていた問題を修正。テストが生成するパス・ヘッダー名・ヘッダー値の文字列サイズをプラットフォーム別に調整し、Androidでは100K文字に削減する一方、他のプラットフォームでは元の10M文字のテストレベルを維持します。

#125964 Fix flaky test by throwing only after all services have started

@svick・GitHub・area-Extensions-Hosting

BackgroundServiceの例外集約テストのフレーキーネスを削減するPR。複数のバックグラウンドサービスが全て開始された後にのみ例外を発生させるよう、DI提供のBarrierを使用することで、タイミング依存の問題を解決します。また、ホスティングシャットダウンヘルパーでのリソース処理も改善しています。

#125918 Fix flaky Linux process name tests by polling after Process.Start

@Copilot・GitHub・area-System.Diagnostics.Process

Linux上でProcess.Start()直後にProcessNameが期待値(例:"sleep")ではなく親プロセスの切り詰められた名前(".NET Long Runni")を返すフレーキーなテスト失敗を修正します。根本原因は、fork()後でexecve()完了前にプロセス情報を読み取る際に発生する競合状態です。修正では、ProcessNameが期待値と一致するまで50ms間隔で最大1秒間ポーリングするようテストを更新します。本番コードの変更はありません。

#125907 Fix flaky MainWindow tests by replacing notepad.exe with a deterministic RemoteExecutor helper

@Copilot・GitHub・area-System.Diagnostics.Process

Windows 11の新型メモ帳がApp Execution Aliasを使用している問題により、Process.Start("notepad.exe")がスタブランチャーのPIDを返すため、MainWindowFinderがウィンドウマッチングに失敗していました。このPRでは、notepad.exeへの依存をRemoteExecutorを使用した決定論的なヘルパープロセスに置き換えます。ヘルパープロセスはバックグラウンドスレッドでMessageBoxWを呼び出し、制御されたPIDを持つ可視の所有者なしトップレベルウィンドウを作成します。

#125848 Add StandardInputHandle/OutputHandle/ErrorHandle SafeFileHandle properties to ProcessStartInfo

@Copilot・GitHub・area-System.Diagnostics.Process

ProcessStartInfoに3つの新しいSafeFileHandle?プロパティ(StandardInputHandle、StandardOutputHandle、StandardErrorHandle)を追加し、子プロセスにファイルハンドルを直接渡す機能を実装しました。これにより、RedirectStandard*パイプメカニズムを経由せずにハンドルベースのリダイレクションが可能になります。

var psi = new ProcessStartInfo("grep") { ArgumentList = { "test" } };
SafeFileHandle.CreateAnonymousPipe(out SafeFileHandle readPipe, out SafeFileHandle writePipe);
psi.StandardInputHandle = readPipe;
psi.StandardOutputHandle = File.OpenHandle("output.txt", FileMode.Create, FileAccess.Write);
using Process process = Process.Start(psi)!;
writePipe.Dispose();

#125655 [browser] Fix WasmEmitTypeScriptDefinitions making builds non-incremental (WBT test)

@maraf・GitHub・arch-wasmarea-Build-monoos-browser

WASM テンプレートビルドテストを更新し、WasmEmitTypeScriptDefinitions 有効時のビルド増分性(インクリメンタルビルド)を検証するようにしました。MSBuild の -question フラグを使用してプロジェクトの最新状態を直接確認し、dotnet.d.ts が wwwroot にコピーされた後もビルドが非増分化しないことを保証します。

#125645 [browser] Remove public WasmInlineBootConfig, WasmBootConfigFileName properties

@maraf・GitHub・arch-wasmarea-Build-monoos-browser

WebAssembly ブートコンフィグのカスタマイズ用公開 API を削除するPRです。MSBuild プロパティ(WasmInlineBootConfig、WasmBootConfigFileName)と TypeScript API の withConfigSrc メソッドを廃止し、デフォルトの埋め込みブートコンフィグまたはユーザー独自の実装に統一します。タイムアウト問題(#124947)の解決を目指しています。

2026年03月25日 (35 PRs)うち Bot 2 件 この日のページ →

#126115 [cDAC] Fix GetLocalVariableCount to return E_FAIL for missing local signatures

@max-charlamb・GitHub・area-Diagnostics-coreclr

cDAC(Contracts DAC)の GetLocalVariableCount メソッドをネイティブDAC仕様に合わせて修正しました。ローカル署名がないメソッド(動的メソッド、ILスタブ、ローカル変数なしのメソッド)に対して、S_OKで count 0 を返していた仕様を E_FAIL に変更します。これにより、ネイティブDACとの動作パリティが確保され、検証アサートの失火を防ぎます。

#126076 Allow null arguments in ProcessStartInfo constructor and Process.Start

@Copilot・GitHub・area-System.Diagnostics.Process

ProcessStartInfo コンストラクタと Process.Start() メソッドの arguments パラメータを nullable (string?) に変更する nullability アノテーション更新。これまで null を受け取ると内部的に null のまま保存されていましたが、getter で string.Empty を返していた実際の動作に公開 API 契約を合わせるもの。

// 以前は nullable 警告が出ていたが、今後は正しく null を受け付ける
var psi = new ProcessStartInfo("dotnet", null);
var p = Process.Start("dotnet", null);

#126071 Fix reentrant Monitor wait

@eduardo-vp・GitHub・area-System.Threading

Monitor.Waitの再入可能性に関する問題を修正します。メッセージポンピングを許可する同期コンテキスト(SynchronizationContext.Waitなど)を使用する場合、同じスレッド上での入れ子になったMonitor.Wait呼び出しが単一のスレッド静的Waiterを共有し、一方の待機がもう一方のPulseを横取りする問題が発生していました。

本修正では、待機中にスレッド静的Waiterをnullに設定することで、再入可能なMonitor.Waitは独立したAutoResetEventを持つ独自のWaiterを取得するようにします。待機完了後にWaiterは復元されます。

#126066 Add code-review agentic workflow

@stephentoub・GitHub・area-Infrastructure

dotnet/runtimeリポジトリに自動コードレビュー機能を提供するGitHub Agentic Workflowを追加します。このワークフローはプルリクエストがオープンされた時、または新しくプッシュされた時に自動的にトリガーされ、リポジトリのcode-reviewスキルを使用して構造化されたレビューコメントをPR上にポストします。

#126064 Fix OperIs(GT_CNS_INT, GT_CNS_LNG) assertion during import

@dhartglassMSFT・GitHub・area-CodeGen-coreclr

JIT コンパイラの gtFoldExprHWIntrinsic 関数内で、Vector.WithElement メソッドのインデックス引数がバウンドチェック付きの値(COMMA式)である場合に発生していたアサーション エラーを修正します。従来は単純な整数定数のみを想定していましたが、実際にはバウンドチェック結果を含むCOMMA式が渡される可能性があったため、この条件の厳密性を緩和しました。

#126057 Set up GitHub Agentic Workflows

@jeffhandley・GitHub・area-Infrastructure

このPRはGitHub Agentic Workflows (gh-aw) をGitHub Copilotで安全に実行するためのインフラストラクチャを導入します。主な機能として、複数のCopilot Personal Access Token (PAT) から無作為に選択するメカニズムを実装し、レート制限の問題を軽減します。

#126005 Defer GetServiceInfo initialization in ActivatorUtilities

@MichalStrehovsky・GitHub・area-Extensions-DependencyInjection

ActivatorUtilitiesのスタートアップ最適化を目的とした変更です。GetServiceInfo MethodInfoの初期化を遅延させることで、クラス読み込み時に発生していた負荷の高いDelegate.Methodリフレクション呼び出しを、実際に必要になるまで先延ばしにします。ネイティブAOTビルドでは不要ですが、自動的に除去するのが困難なため、遅延初期化パターンで対応します。

#125987 Disable MonoAPI tests on Mono Windows (dotnet/runtime#67047)

@Copilot・GitHub・area-Build-mono

MonoAPI相互運用テスト(InstallEHCallback、PInvokeDetach、Thunks)がMono Windows x64でのテスト実行時に失敗するため、これらのテストに[ActiveIssue]属性を追加しました。xUnit変換時(#123248)に失敗スキップ属性が喪失した問題の復旧です。

[ActiveIssue("https://github.com/dotnet/runtime/issues/67047", TestPlatforms.Windows, runtimes: TestRuntimes.Mono)]

#125916 Fix EPERM when killing sudo-launched createdump process in CollectCrashDumpWithCreateDump

@Copilot・GitHub・area-Infrastructure-coreclr

macOS/Linuxでsudo経由で起動されたcreatedumpプロセスのタイムアウト時にEPERMエラーが発生する問題を修正。root所有のプロセスに対して非rootプロセスからProcess.Kill()を実行できない制限に対し、sudo killを使用した専用の終了ヘルパーメソッドを実装。従来の失敗時リトライワークアラウンド(最大5回)を削除し、根本的な解決方法に置き換え。

#125881 Include declaring type name in assembly loading handler tracing events

@Copilot・GitHub・area-AssemblyLoader-coreclr

アセンブリロード時のETWトレーシングイベント(AssemblyLoadContextResolvingHandlerInvoked と AppDomainAssemblyResolveHandlerInvoked)における HandlerName フィールドに、メソッド名だけでなく宣言型の完全修飾名を含めるように改善しました。これにより dotnet-trace での診断時にハンドラーの登録元コンポーネントを特定しやすくなります。

変更例:

// Before: OnResolving
// After: MyNamespace.MyClass.OnResolving (DeclaringTypeがnullの場合は OnResolving)

#125876 Fix ErrorOnUnknownConfiguration to respect ConfigurationKeyNameAttribute

@haltandcatchwater・GitHub・area-Extensions-Configurationcommunity-contribution

ErrorOnUnknownConfigurationが有効な場合、ConfigurationKeyNameAttributeで指定されたプロパティ名を認識しない不具合を修正しました。既知のプロパティ名セットを構築する際に、属性で指定された名前ではなくC#プロパティ名のみを使用していたため、属性で指定された名前に一致する設定キーが未知の設定キーとして誤って判定されていました。

#125845 Add r2 r composite

@DrewScoggins・GitHub・area-Infrastructure

ランタイムパフォーマンスパイプラインテンプレートを更新し、インタープリタフォールバックを使用したR2Rコンポジットベンチマーク向けの新しいCoreClrビルドバリアント(coreclr_r2r_interpreter)を追加しました。動的コード生成を無効化(-dynamiccodecompiled false)したCoreClrビルドを実装しています。

#125798 Fix: wrap AssignCopy with IfFailThrow in GetMetaDataFileInfoFromPEFile

@Copilot・GitHub・area-Diagnostics-coreclr

CoreCLR DAC/DBI デバッグAPIの DacDbiInterfaceImpl::GetMetaDataFileInfoFromPEFile メソッドにおいて、pStrFilename->AssignCopy(wszFilePath) の戻り値(HRESULT)が無視されていたバグを修正します。AssignCopy が失敗(例:E_OUTOFMEMORY)した場合でも、メソッドが S_OK を返してしまう問題を、IfFailThrow() でラップして適切にエラーを伝播させます。

#125793 Add linux_arm and windows_x86 to cDAC dump test platforms

@max-charlamb・GitHub・area-Infrastructure

cDAC(コンテナ化されたデータアクセスコンポーネント)ダンプテストのHelix CI/CDインフラに、32ビットプラットフォーム対応を追加します。windows_x86(WoW64経由)とlinux_arm(コンテナ化ARM32キュー)を新たにテスト対象プラットフォームとして統合し、6プラットフォーム全体でのダンプ生成/テストカバレッジを拡大します。

#125747 Fix for 125246

@dhartglassMSFT・GitHub・area-CodeGen-coreclr

Random-inline JIT stress テストで ARM64 上の多重レジスタ返却(multi-reg-ret)構造体の Copy Propagation 処理中に lvIsMultiRegRet フラグが正しく伝播されず、Lowering::ContainCheckRet でアサーション失敗が発生する問題を修正します。Assertion-driven Copy Propagation 実行時に、置換先のローカル変数へ lvIsMultiRegRet フラグを明示的に設定することで対応します。

#125542 Add Wasm import thunks

@davidwrighton・GitHub・arch-wasmarea-crossgen2-coreclr

このPRはWebAssembly (Wasm32) import thunkサポートをReadyToRun (R2R) コンパイラに追加します。Wasm向けの新しいR2Rノード(WasmImportThunk、WasmImportThunkPortableEntrypoint)を導入し、Wasm命令エンコーディング、オブジェクトライター、JIT側のリロケーション処理を拡張して、R2Rで生成されたWasmコードがfixup/importヘルパー経由で外部コードを呼び出せるようにします。

#125463 [cDAC] Implement GetArgumentByIndex and GetLocalVariableByIndex on ClrDataFrame

@max-charlamb・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Component)のデバッグ機能を拡張するPRで、ClrDataFrame.GetArgumentByIndex/GetLocalVariableByIndexを実装し、フレーム内の引数と局所変数の検査を可能にします。DebugInfo契約v2、SignatureDecoder契約、RuntimeTypeSystem契約の新規追加により、ネイティブ変数位置の解決、メソッドシグネチャのデコード、型情報の取得をサポートします。

#125329 Use Framework SourceType for WASM pass-through assets in multi-client solutions

@lewing・GitHub・area-Build-mono

PR #124125で導入されたバグを修正します。複数のBlazor WebAssemblyクライアントプロジェクトが同じランタイムパックを参照する場合、パススルーアセット(JS、maps、ICUデータ、native WASM)が同じNuGetキャッシュパスに解決され、静的Webアセットパイプラインで重複したIdentityキーが発生し、DiscoverPrecompressedAssetsでArgumentExceptionが発生していました。

修正では、SDK側のSourceType="Framework"慣例を使用して、パススルーファイルをプロジェクトごとのobj/fx/{PackageId}/ディレクトリに具体化し、各プロジェクトで一意なIdentityを生成します。

#125175 [release/10.0] Fix bug in LowerCallMemmove

@EgorBo・GitHub・Servicing-approvedarea-CodeGen-coreclr

C++/CLI関数がaggregate initializationで構造体を返す場合、LowerCallMemmoveでJITがアクセス違反(0xC0000005)でクラッシュする問題をバックポートで修正しました。問題はCORINFO_HELP_MEMCPYに対してBlkOpKindUnrollを使用していたため、contained address nodeがgenCodeForMemmoveに渡されてしまうことが原因です。修正により、CORINFO_HELP_MEMCPYとSpanHelpers.Memmoveの両方に対してBlkOpKindUnrollMemmoveを統一的に使用するようにしました。

#124877 Revert forwarding activation signal

@janvorli・GitHub・area-PAL-coreclr

macOS上でのスレッドアクティベーション用SIGUSRシグナルのハンドラー転送機能を部分的に復元します。以前の変更で追加された、登録済みハンドラーへのシグナル転送がvsdbgの動作を破壊していたため、その部分のみを復元して互換性を回復します。

#123874 TarWriter: when writing entries for the same hard-linked file use HardLink entries.

@tmds・GitHub・breaking-changeneeds-breaking-change-doc-createdcommunity-contributionarea-System.Formats.Tar

System.Formats.Tar ライブラリに、ハードリンクされたファイルを書き込む際にHardLink形式のTarエントリを使用する機能を追加しました。これにより、同じファイルへの複数の参照をより効率的にTarアーカイブに格納できます。TarWriter、TarFile、TarExtractOptions、TarWriterOptions の各コンポーネントが拡張され、プラットフォーム固有(Unix/Windows)の実装も追加されています。

#123717 arm64: Refactor mov/movprfx for unmasked operations

@ylpoonlg・GitHub・area-CodeGen-coreclrcommunity-contributionarm-sve

ARM64 SVE(Scalable Vector Extensions)向けのJITコンパイラにおいて、読み取り修正書き込み(RMW)命令のmov/movprfxプリフィックス生成ロジックをリファクタリングしました。従来はコード生成時に分散していたこのロジックを、emit段階で統一的に処理するように変更し、非マスク付きオペレーション対応を改善しました。

2026年03月24日 (35 PRs)うち Bot 6 件 この日のページ →

#126021 [wasm][coreclr] Fix tpa list population in corerun.html

@radekdoulik・GitHub・arch-wasmarea-Infrastructure-coreclr

WASM環境のcorerun.htmlにおける、preRunコールバック内でのTPA(Trusted Platform Assemblies)リスト生成の初期化順序の問題を修正しました。EmscriptenのaddOnPreRunはunshift()を使用するため、ファイルプリロードのrunWithFSコールバックがカスタムpreRunより先に実行される場合があり、それによってTPA列挙が失敗していました。修正後は、preRun実行時に仮想ファイルシステムがすでに生成されているか確認し、ロード済みならば即座にTPA列挙を、未ロードならば依存関係監視アプローチにフォールバックします。

#125942 [cDAC] : Implement ClrDataModule GetName

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(CoreCLR Data Access Component)レガシーシムの IXCLRDataModule.GetName を実装するPRです。Loaderコントラクトからモジュールの「シンプル名」(UTF-8)を取得する機能を追加し、対象ランタイムからこのシンプル名を公開できるようにLoaderコントラクト/データモデルを拡張します。

#125930 Fix OOM in BinHexDecoder, Base64Decoder, and XmlSchemaValidator when throwing on large invalid input

@Copilot・GitHub・area-System.Xml

32ビットプラットフォーム(x86、WASM)で大きな無効入力に対する例外スローの際に発生していたOutOfMemoryExceptionを修正。BinHexDecoderとBase64Decoderが例外メッセージ生成時にデコードバッファ全体(数百万文字)を文字列化していたため、実際の例外送出前にメモリ枯渇が発生していた。またXmlSchemaValidatorも同様に例外メッセージに要素/属性値全体を埋め込んでいた。修正により、無効文字の場合は該当文字のみ、スキーマ検証では値を40文字に截断してメッセージサイズを制限する。

#125928 Shorten thread names exceeding the 15-char Linux pthread_setname_np limit

@Copilot・GitHub・area-Diagnostics-coreclr

Linux の pthread_setname_np による15文字の制限を超えるランタイムスレッド名を短縮する変更です。過去にスレッド名が無言で切り詰められていたため、デバッガや診断ツール(ps、top、htop)での識別が困難でした。6つのスレッド名をそれぞれ15文字以下に短縮し、複数のランタイムレイヤー(CoreCLR、Mono WASM)で一貫性を保ちました。

#125882 Add global:: qualifier to System namespaces in OptionsValidatorGenerator

@haltandcatchwater・GitHub・area-Extensions-Optionscommunity-contribution

OptionsValidatorGeneratorが生成するコード内のUnconditionalSuppressMessage属性にglobal::修飾子を追加し、名前空間解決の競合を修正します。消費プロジェクトにXXX.Systemのような名前空間が存在する場合、System.Diagnosticsが誤ってXXX.Systemに対して解決され、CS0234エラーが発生していました。

#125836 [Wasm RyuJIT] initblk fix for #125756

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly RyuJIT における initblk 操作の識別ロジックを修正するPRです。GenTree::OperIsInitBlkOp() メソッドが、ソースが int 型の値 かつ init-value セマンティクスを持つ場合のみ init block として認識するように厳密化しました。これにより、WASM環境で initblk と copyblk が異なるネイティブオペコードにマッピングされることによる不正な lowering/codegen を防ぎます。

#125774 Increase TTL in SendPingWithLowTtl_RoundtripTimeIsNonZero to fix macOS flakiness

@rzikm・GitHub・area-System.Net

macOSでSendPingWithLowTtl_RoundtripTimeIsNonZeroテストが一貫して失敗する問題を修正します。macOSの生ソケットPing実装は1ms未満のRTT値を整数キャストで0に切り詰めるため、TTL=1では最初のホップまでの往復時間が0msと計測されていました。TTLを1から5に増やし、ICMPパケットがより遠くまで到達してから期限切れになるようにすることで、計測可能なRTTが得られる確率を高めます。

#125745 Fix SingleConsumerUnboundedChannel WaitToReadAsync returning exception instead of false

@Copilot・GitHub・area-System.Threading.Channels

SingleConsumerUnboundedChannel.WaitToReadAsyncが、先行するReadAsyncのキャンセル後にチャネルが正常に完了した場合に、falseを返すべきところChannelClosedExceptionをスローしていた問題を修正しました。

TryCompleteメソッド内でerror変数がCreateInvalidCompletionExceptionの呼び出しで上書きされ、その結果待機中のリーダーに例外が誤って伝播していた根本原因を解決しています。

#125721 Add unsafe evolution attributes

@jjonescz・GitHub・area-System.Runtime.CompilerServices

unsafe機能の利用に関する属性APIの公開と進化のサポートを追加するPR。RequiresUnsafeAttributeを内部属性から公開APIに変更し、新たにMemorySafetyRulesAttributeをSystem.Runtime.CompilerServicesに導入します。これらはメモリ安全性ルールの進化を追跡するためのコンパイラサポート属性です。

#125646 [ios-clr] Resolve throw helpers to managed methods in R2R compilation

@kotlarmilos・GitHub・area-crossgen2-coreclr

iOS/MacCatalyst での完全R2R(ReadyToRun)コンパイルを実現するため、4つの throw ヘルパー(CORINFO_HELP_THROW_ARGUMENTEXCEPTION、CORINFO_HELP_THROW_ARGUMENTOUTOFRANGEEXCEPTION、CORINFO_HELP_THROW_PLATFORM_NOT_SUPPORTED、CORINFO_HELP_THROW_NOT_IMPLEMENTED)を Internal.Runtime.CompilerHelpers.ThrowHelpers の管理されたメソッドエントリポイントにマッピングします。これまでこれらのヘルパーを参照するメソッドは crossgen2 でプリコンパイルできず、実行時にインタプリタにフォールバックしていました。

#125635 Add BarrierPostPhaseException to Barrier XML doc comments

@Copilot・GitHub・area-System.Threading

System.Threading.BarrierクラスのXMLドキュメントコメントを更新し、BarrierPostPhaseExceptionの発生可能性を正確に文書化しました。RemoveParticipant(s)メソッドと全6つのSignalAndWaitオーバーロードにBarrierPostPhaseExceptionの例外ドキュメントを追加しています。これはドキュメント修正のみで、ランタイム動作への変更はありません。

#125615 JIT: Add a runtime async optimization to skip saving unmutated locals into reused continuations

@jakobbotsch・GitHub・area-CodeGen-coreclrruntime-async

非同期メソッドの継続(continuation)再利用時に、前の再開ポイント以降に変更されていないローカル変数の保存をスキップする最適化を追加しました。PR #125556で導入された継続再利用の仕組みを活用し、変更されていないローカル変数への不要な書き込みバリアを削減することで、約10%のパフォーマンス向上を実現します。

#125460 Remove unnecessary RequiresProcessIsolation from 172 tests and update comments on 18 that need it

@Copilot・GitHub・area-Infrastructure

src/tests/配下の190個のテストプロジェクトに対して、RequiresProcessIsolation属性の必要性を監査しました。172個のテストではこの属性が不要であることが確認されたため削除し、18個のテストでは実際の必要理由に基づいてコメントを置き換えました。これにより、テストプロジェクト定義の精度が向上し、不要なプロセス分離オーバーヘッドが削減されます。

#125458 Remove ByValueMarshalKindSupport.Unnecessary and move ByValueContentsMarshalKindValidator to analyzers only

@Copilot・GitHub・area-System.Runtime.InteropServices

interop ソースジェネレータインフラのクリーンアップが行われました。ByValueContentsMarshalKindValidator を検証・診断専用のアナライザ側に移動し、コード生成パイプラインから削除。また、実際に使用されることのない ByValueMarshalKindSupport.Unnecessary 列挙値と関連する死コードを削除しました。

#125324 improve error handling in OpenSSL init code

@wfurt・GitHub・area-System.Net.Security

OpenSSL初期化処理のエラーハンドリングを改善し、OpenSSL設定の問題によるハードフェイルure(セグメンテーション違反など)を削減するPR。System.Security.Cryptography.Nativeのネイティブコード層で、初期化失敗時のフォールバック処理とnullポインタチェックを追加します。

#125074 Convert IDacDbiInterface to COM interface

@max-charlamb・GitHub・area-Diagnostics-coreclr

IDacDbiInterfaceをプレーンなC++抽象クラスからCOMインターフェースに変換します。これにより、将来的にマネージド(C#)のcDAC実装でIDacDbiInterfaceを実装可能になり、標準的なCOMのライフサイクル管理(ref-counting)が適用されます。このPRはISOSDacInterface / SOSDacImplパターンに従います。

#124644 Add JsonNamingPolicy.PascalCase and JsonKnownNamingPolicy.PascalCase

@Copilot・GitHub・area-System.Text.Json

System.Text.Jsonに新しいPascalCase命名ポリシーを追加します。JsonNamingPolicy.PascalCase静的プロパティとJsonKnownNamingPolicy.PascalCase = 6を実装し、camelCaseをCamelCaseに、XMLHttpRequestをXmlHttpRequestに変換するなど、各単語の最初の文字を大文字に統一します。既存のCamelCaseポリシーとは異なり、単語境界を適切に検出して処理します。

// 使用例
var policy = JsonNamingPolicy.PascalCase;
string result = policy.ConvertName("camelCase"); // "CamelCase"

#124192 Fix NativeAOT publish including satellite assemblies despite embedding them

@Copilot・GitHub・linkable-frameworkarea-NativeAOT-coreclr

NativeAOTアプリケーション公開時に、ネイティブバイナリに埋め込まれているサテライトアセンブリ(リソースアセンブリ)が公開フォルダにも重複してコピーされる問題を修正します。PR #124801のリファクタリング後、ComputeLinkedFilesToPublishターゲットでIntermediateSatelliteAssembliesWithTargetPathをResolvedFileToPublishから削除することで、冗長なサテライトアセンブリの公開をスキップします。

サテライトアセンブリ(例:es\AppName.resources.dll)はNativeAOTコンパイル時にネイティブバイナリに埋め込まれており、ディスクに配置する必要がありません。

2026年03月23日 (27 PRs)うち Bot 4 件 この日のページ →

#125946 Fix CS4007: ReadOnlySpan across await in TrailingHeadersTest

@Copilot・GitHub・area-System.Net.Http

System.Net.Http.WinHttpHandler の機能テストビルドで発生していた CS4007 コンパイルエラーを修正します。Assert.Equal<byte>() が ReadOnlySpan<byte> オーバーロードを選択し、await 式と同じステートメント内に存在することで、ReadOnlySpan<byte> が await 境界を越えて保持できないという問題を解決します。

// 修正前(エラー):
Assert.Equal<byte>(Array.Empty<byte>(), await response.Content.ReadAsByteArrayAsync());

// 修正後(正常):
byte[] responseBody = await response.Content.ReadAsByteArrayAsync();
Assert.Equal(Array.Empty<byte>(), responseBody);

#125940 Bump WaitOne timeouts in StartCanBeCancelled test from 5s to 30s

@Copilot・GitHub・area-Extensions-Hosting

StartCanBeCancelled テストが .NET Framework 4.8.1 x86 Windows で不安定に失敗する問題に対応しています。Host.StartAsync が複数の非同期 ThreadPool ホップを必要とする一方で、Framework の ThreadPool は遅いスレッド立ち上げ速度(約500ms/スレッド)を持つため、並列テスト実行時に 5 秒の WaitOne タイムアウトが不足していました。タイムアウトを 30 秒に引き上げることで、テストの信頼性を向上させます。

#125936 Fix dotnet-pgo dump crash when CallWeights are present

@benaadams・GitHub・area-VM-coreclrcommunity-contribution

dotnet-pgo dump コマンドで CallWeights データを含む .mibc ファイルを処理する際に発生していた InvalidOperationException を修正しました。JSON シリアライザが配列内に直接命名プロパティを書き込もうとしていたのが原因で、各配列要素を適切な JSON オブジェクトでラップすることで解決しています。

#125934 Fix TestNativeDigits for ur-IN on Apple platforms

@lewing・GitHub・area-System.Globalizationos-mac-os-xos-iosos-maccatalyst

Apple プラットフォームにおける ICU ロケールデータの差異により、ur-IN カルチャーの NativeDigits テストが失敗する問題を修正します。Apple ICU はラテン数字("0"–"9")を返しますが、上流の CLDR では Extended Arabic-Indic 数字(arabext, U+06F0–U+06F9)が指定されています。xUnit v3 へのアップグレードにより ConditionalTheory + MemberData が正常に動作し始め、このテストが初めて実行されて Apple プラットフォーム固有の差異が露呈しました。

#125925 Fix CrlDiskCacheRecovers test flakiness: OuterLoop, longer timeout, retries

@Copilot・GitHub・area-System.Security

CrlDiskCacheRecoversテストの不安定性を改善するPR。このテストはhttps://get.dot.net/への生のHTTPSリクエストを含むため、CI環境の負荷下でDNS・TCP・TLS・リダイレクト処理がタイムアウト(元々10秒)を超過し、TaskCanceledExceptionが頻発していました。[OuterLoop]属性の追加、タイムアウト延長(10秒→60秒)、リトライロジック(最大3回)を導入して、トランジェントなネットワーク障害に対する耐性を強化します。

#125912 Disable EnsureEnvironmentExitDoesntHang on .NET Framework

@Copilot・GitHub・area-Extensions-Hosting

ConsoleLifetimeExitTests.EnsureEnvironmentExitDoesntHang テストが .NET Framework で失敗する問題を解決します。.NET Framework のシャットダウン時に System.Console.ControlCHooker.Unhook() が IOException をスローし、プロセス終了時に未処理例外(終了コード -532462766 / EXCEPTION_COMPLUS)が発生するという既知の制限に対応するため、テストを .NET Framework でスキップします。

#125911 Fix flaky NonPowerOfTwoKeySizeOaepRoundtrip test with retry on transient CryptographicException

@Copilot・GitHub・area-System.Security

Linux CI環境でNonPowerOfTwoKeySizeOaepRoundtripテストが不安定に失敗する問題を修正します。RSAFactory.Create(3072)時にInterop.Crypto.RsaGenerateKey内で一時的なCryptographicExceptionが発生する(リソース枯渇やエントロピー不足が原因と推測)ため、テスト本体をRetryHelper.Executeでラップし、最大5回の再試行(指数バックオフ)を行うようにしました。

#125910 Fix intermittent SystemTrustCertificateWithCustomRootTrust CI failure

@Copilot・GitHub・area-System.Security

SystemTrustCertificateWithCustomRootTrust テストの間欠的な失敗(CI月8回程度)を修正しました。Linux Bionic がシステム信頼ストアに「DigiCert Global Root G2」を含まないため、AIA HTTP ダウンロードに依存していました。ローカル解決とネットワーク依存性の排除により、すべてのプラットフォームで決定的な動作を実現します。

#125909 Make TestKeyRing.CreateECDsa resilient to transient macOS OSStatus -50 failures

@Copilot・GitHub・area-System.Security

macOSのApple Security frameworkが断続的に返すOSStatus error -50エラーに対応するため、TestKeyRing.CreateECDsaにリトライロジックを追加しました。このエラーはEC鍵インポート時に発生し、COSE テストスイート全体で月21回の頻度でテスト失敗を引き起こしていました。すべてのテストがTestKeyRing経由で鍵を共有しているため、この改善により全体的なCI信頼性が向上します。

ECDsa? result = null;
RetryHelper.Execute(
    () => result = ECDsa.Create(parametersLocalCopy),
    maxAttempts: 3,
    retryWhen: e => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && e is CryptographicException { HResult: -50 });
return result!;

#125616 Fix memory leaks from mono_type_full_name in marshal-shared.c error paths

@Copilot・GitHub・area-VM-meta-mono

mono_type_full_name()が返すヒープ割り当てされた文字列が、marshal-shared.cの複数のエラーパスでg_strdup_printfに直接渡され、解放されずにメモリリークしていた問題を修正。AOT コンパイル時に無効なマーシャル設定を持つアセンブリを処理する際に、これらパスが繰り返し実行されて累積的なメモリ増加を引き起こしていた。

修正パターン:

// 修正前
char *msg = g_strdup_printf("Type %s ...", mono_type_full_name(m_class_get_byval_arg(klass)));

// 修正後
char *type_name = mono_type_full_name(m_class_get_byval_arg(klass));
char *msg = g_strdup_printf("Type %s ...", type_name);
g_free(type_name);

#124771 Fix localization of ExtendedPropertyDescriptor.DisplayName

@Zurisen・GitHub・area-System.ComponentModelcommunity-contribution

ExtendedPropertyDescriptor.DisplayNameのローカライゼーションバグを修正します。トリミングまたはWASM環境でSR.UsingResourceKeys()がtrueを返す場合、ハードコードされた英語文字列"{0} on {1}"にフォールバックされていたため、既にローカライズされたSR.MetaExtenderNameリソースがバイパスされていました。不要なターナリ演算子を削除し、SR.Format(SR.MetaExtenderName, ...)が全環境で正しく機能するようにしました。

#124642 JIT: Fix fgFoldCondToReturnBlock for multi-statement return blocks

@yykkibbb・GitHub・area-CodeGen-coreclrcommunity-contribution

JITコンパイラのfgFoldCondToReturnBlock最適化を改善し、短絡評価&&式で定数がnon定数の後に現れる場合に、インライン化による死亡ローカル変数の割り当てが存在しても条件をブランチレスな戻り値へ折りたたむことができるようにしました。これにより、より効率的なコード生成(ARM64ではcmp+cset+ret)が実現されます。

#123990 Synchronize PaxTarEntry ExtendedAttributes with property setters

@Copilot・GitHub・area-System.Formats.Tar

PaxTarEntryの公開プロパティ(ModificationTime、Name、UserNameなど)のセッターとExtendedAttributes辞書の同期を実装します。プロパティ変更時にExtendedAttributesが更新されず、値が矛盾する問題を解決します。プロパティセッターが常に優先され、コンストラクタで競合する場合はプロパティ値でExtendedAttributesを正規化します(既存の拡張属性は読み込み時に削除されず、ラウンドトリップの忠実性を保持)。

var attrs = new Dictionary<string, string> { { "mtime", "1234567890.0" } };
var entry = new PaxTarEntry(TarEntryType.RegularFile, "test.txt", attrs);
entry.ModificationTime = DateTimeOffset.FromUnixTimeSeconds(9876543210);
// After: entry.ExtendedAttributes["mtime"] == "9876543210" (同期済み)

2026年03月22日 (10 PRs)うち Bot 2 件 この日のページ →

#125887 Fix multithreaded browser-wasm build: CS0102 errors in PortableThreadPool; remove redundant ThreadPoolBoundHandle.Browser.Threads.cs; regenerate WASM call helpers

@Copilot・GitHub・area-System.Threading

WebAssembly(WASM)マルチスレッドビルドのCS0102エラー(重複する型/メンバー定義)を修正するPRです。ThreadPoolBoundHandle.Browser.Threads.csの冗長なファイルを削除し、WASM呼び出しヘルパーを再生成して、ビルドエラーを解決します。

#125697 Convert remaining PREPARE_NONVIRTUAL_CALLSITE call sites to UnmanagedCallersOnly

@Copilot・GitHub・area-VM-coreclr

PREPARE_NONVIRTUAL_CALLSITE + CALL_MANAGED_METHOD* パターンを [UnmanagedCallersOnly] / UnmanagedCallersOnlyCaller パターンに変換し、ネイティブ→マネージドの呼び出しを簡潔化します。約23のコアライブラリメソッドのシグネチャを更新し、GCモードのセレモニーを削減し、呼び出しサイトの明確性を向上させます。

#125512 Relax RandomAccess type requirements: make Read/Write methods work with non-seekable files

@Copilot・GitHub・area-System.IO

System.IO.RandomAccess の型検証を緩和し、パイプやソケットなどの非シークable ハンドルに対応しました。シークをサポートしないファイルでは、オフセット指定なしのシステムコールにフォールバックします。Unix 上の多重バッファ操作に readv/writev を導入し、System.Console と System.Diagnostics.Process の呼び出し箇所を RandomAccess.Read/Write に統合しました。

2026年03月21日 (12 PRs) この日のページ →

#125886 Cleaning up codepaths for DAC_HASHTABLE

@Copilot・GitHub・area-Diagnostics-coreclr

DAC(Debugging Access Component)のレガシーなハンドロール型ハッシュテーブル実装を廃止し、SHashベースの実装に統一するクリーンアップです。DAC_HASHTABLEマクロと関連する古いコードパスをすべて削除し、DacInstanceManagerは常にSHashを使用するようになります。

#125863 Disable attribute trimming android 124958

@vitek-karas・GitHub・area-NativeAOT-coreclr

NativeAOT の AttributeTrimming スモークテストを Android プラットフォームでスキップするように変更しました。Android 環境ではホスティング/相互運用コードが追加されることで、リンカー(トリマー)の動作が予測不可能になり、テストの信頼性が低下するため対応されました。

#125861 Don't build native host tests when building clr subset

@elinor-fung・GitHub・area-Host

clrサブセットのビルド時に、不要なネイティブホストテストアセット(mockcoreclr、mockhostfxr、mockhostpolicyなど)がビルドされていた問題を解決します。CMakeの条件付きビルド変数を導入し、clrサブセット時はテストアセットをスキップし、host.testsサブセット時は製品バイナリをスキップするようになりました。これにより開発ビルド時のビルド時間を削減します。

#125846 Adding GetObjectComWrappers cDAC API

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Common Data Access Component)APIにGetObjectComWrappers機能を追加するPRです。COM相互運用オブジェクトのメタデータにアクセスするための新しいデータコントラクト定義と実装が含まれます。また、ConditionalWeakTableおよびGC関連のデータコントラクトも拡張されています。

#125754 Clear RCW cache entries when releasing wrapper objects

@jkoritzinsky・GitHub・area-System.Runtime.InteropServicespartner-impact

Jupiter ランタイムの外部オブジェクト解放時に RCW(Runtime Callable Wrapper)キャッシュエントリを明示的にクリアする修正です。ComWrappers.ReleaseObjects による強制的な切断後も、古い RCW がキャッシュに残る問題を解決します。同じネイティブ COM アドレスが再割り当てされた場合、切断された古いラッパーが誤って返されることを防ぎます。これにより NativeAOT マイグレーションをアンロックします。

2026年03月20日 (29 PRs)うち Bot 1 件 この日のページ →

#125842 Require AI-generated content disclosure in copilot instructions and skills

@stephentoub・GitHub・area-skills

dotnet/runtimeリポジトリにおいて、Copilotがユーザー認証情報を使用してGitHubに投稿するコンテンツに対して、AI/Copilot生成であることを明示する開示ルールを追加しました。ボットアカウントやCopilotアプリアカウントからの投稿、またはユーザーの明示的なオプトアウトの場合は例外として扱われます。

#125841 Fix cDAC dump tests on 32-bit ARM targets

@max-charlamb・GitHub・area-Diagnostics-coreclr

ClrMD の ELF32 シンボル解析バグ(microsoft/clrmd#1407)に対応するため、32ビット ARM ターゲットでの cDAC ダンプテストの失敗を修正します。ClrMD が 32ビット ELF モジュールのエクスポートシンボルアドレスを破損したアドレス(上位32ビットに st_size が混入)として返すため、ターゲットのポインタサイズが 4 バイトの場合にアドレスを 32ビットにマスクする対策を実施しました。

if (_dataTarget.DataReader.PointerSize == 4)
    address &= 0xFFFF_FFFF;

#125829 Revert "[release/9.0] Fix intermediate artifact upload collisions for NativeAOT and Mono"

@steveisok・GitHub・Servicing-approvedarea-Infrastructure-mono

PR #125564の変更をRevertし、NativeAOTおよびMonoの中間成果物(intermediate artifacts)アップロードパスを、ジョブ固有から共有ディレクトリに戻すもの。runtime-official.yml内で、これら両技術の中間成果物が単一の共有サブディレクトリにアップロードされるように復元する。

#125814 Add retry for StackTraceTests.ToString_ShowILOffset AMSI hang

@danmoseley・GitHub・area-System.Diagnostics

StackTraceTests.ToString_ShowILOffsetテストにおいて、Assembly.Load(byte[])がWindows Defender AMSI(マルウェア対策スキャンインターフェース)のRPC呼び出しをトリガーし、Helix CI環境の一部マシンで無限にハングする問題に対応。AMSI問題は.NETのバグではなくWindows OSレベルの外部問題であるため、テストの分割とリトライロジックを追加してCI安定性を向上。

#125813 Fix OleTxTests.Recovery CI timeout by bounding remote process wall-clock time

@Copilot・GitHub・area-System.Transactions

OleTxTests.RecoveryテストがCI環境で無限にタイムアウトする問題を修正します。MSDTC(Microsoft Distributed Transaction Coordinator)が応答しない場合に子プロセスがハング状態になり、RemoteInvokeOptions.TimeOutがデフォルトでTimeout.Infiniteであるため、テストが完了しない状況を改善します。

RemoteInvokeOptionsにTimeOut = 120_000(2分)を設定し、子プロセスを強制終了することでテストの実行時間を制限し、CI作業項目全体のタイムアウトを防ぎます。

#125811 Fix ProcessThreadTests.TestStartTimeProperty flakiness due to /proc visibility race

@Copilot・GitHub・area-System.Diagnostics.Process

ProcessThreadTests.TestStartTimePropertyはLinux/Monoで不安定でした。新しく起動したLongRunningスレッドの/proc/self/task/エントリが即座に表示されないことが原因です。1回のp.Refresh()とAssert.Singleの組み合わせから、最大10回(100ms間隔)の制限付き再試行ループに変更し、スレッドが表示されるまでp.Refresh()を繰り返すようにしました。

int newThreadId = GetCurrentThreadId();

ProcessThread newThread = null;
for (int i = 0; i < 10 && newThread is null; i++)
{
    if (i > 0) Thread.Sleep(100);
    p.Refresh();
    newThread = p.Threads.Cast<ProcessThread>().FirstOrDefault(t => t.Id == newThreadId);
}

Assert.True(newThread is not null, $"Thread with id {newThreadId} was not found after retrying.");
Assert.InRange(newThread.StartTime.ToUniversalTime(), curTime - allowedWindow, DateTime.Now.ToUniversalTime() + allowedWindow);

#125796 Fix bug in TraverseEhInfo

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC ExecutionManager の EEJitManager.GetExceptionClauses メソッドにおいて、例外ハンドリング情報の列挙時に、メソッドの実開始アドレスを正しく解決するバグを修正しました。GetRealCodeHeader に渡す前に FindMethodCode(...) を使用してコード開始アドレスを計算することで、他の EEJitManager ヘルパーメソッドとの動作を統一しています。

#125772 [QUIC] Disable platform tests as well

@ManickaP・GitHub・area-System.Net.Quic

QUIC プラットフォーム検出テスト(MsQuicPlatformDetectionTests)がAzureLinux 3 VMs上で実行されないようにするためのテスト条件を追加します。MsQuicがメモリ不足エラー(QUIC_STATUS_OUT_OF_MEMORY)で失敗する環境でのテスト失敗を回避する目的です。

#125653 Fix inner build of community archs

@am11・GitHub・area-Infrastructure-coreclrcommunity-contributionarch-loongarch64arch-riscv

RISC-V 64とLoongArch 64アーキテクチャの内部ビルド(CMake直接実行)失敗を修正します。CMakeの機能設定にFEATURE_DYNAMIC_CODE_COMPILED=1のアーキテクチャ別デフォルトが欠落していたため、Virtual Stub Dispatch(VSD)が無効化され、実装されていないアセンブリスタブへの未定義シンボルリンカエラーが発生していました。修正により、CMakeレベルで明示的にこれらのアーキテクチャにおいてVSD+動的コード生成を有効にし、トップレベルビルド(MSBuild経由)との一貫性を確保します。

#125631 Use SHash as DAC instance hash

@hoyosjs・GitHub・area-Diagnostics-coreclr

DacInstanceManager のハッシュテーブル実装を手書きの実装から SHash ベースの実装に置き換え。DAC がミニダンプ収集時に行う大量の検索操作の効率化により、深いスタック(2.5k フレーム、50スレッド)シナリオで約 9.5 倍の高速化を実現。

#125594 [Wasm RyuJit] eh flow

@AndyAyersMS・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly(Wasm)JITで例外処理後の制御フロー再開を実装する基盤整備を行うPRです。新しいfgWasmEhFlowフェーズにより、例外キャッチ後の継続フロー(continuation flow)をCFG/IRで明示化し、Wasm try_table命令による例外ハンドリングの生成をサポートします。

// 例外キャッチ後、制御変数を使用した分岐により適切な継続先へ遷移
// try_table命令でキャッチブロックを保護し、catch_refで例外参照を取得

#125582 Fix broadcast output shape computation in tensor binary operations

@Copilot・GitHub・area-System.Numerics.Tensors

テンソル二項演算(加算、乗算など)でブロードキャスト互換の異なるサイズの形状を持つテンソルに適用した場合、出力テンソルの形状が誤って計算される問題を修正しました。例えば、形状 [2, 3] と [2, 1] のテンソルを乗算する場合、期待される [2, 3] ではなく [2, 1] の形状で結果が返されていました。

#125555 Fix IndexOutOfRangeException in FrozenHashTable when creating from huge collections

@Copilot・GitHub・area-System.Collections

大規模コレクション(約10億要素以上)からToFrozenSet()/ToFrozenDictionary()を作成する際に発生していたIndexOutOfRangeExceptionを修正しました。FrozenHashTable.CalcNumBucketsでのint型オーバーフローが原因でしたが、修正後は意図的にOutOfMemoryExceptionを発生させるようになります。

// 修正前: IndexOutOfRangeException
// 修正後: OutOfMemoryException(正しい失敗モード)
var frozen = new HashSet<int>(1_188_074_137) { ... }.ToFrozenSet();

#125545 Improve UnwindInfoTable's performance

@eduardo-vp・GitHub・area-VM-coreclr

Windows x64でのアンワインド情報発行のパフォーマンスを改善するPRです。UnwindInfoTableに保留中のバッファを追加し、RUNTIME_FUNCTIONエントリをバッチ処理してOS側の高コストなテーブル操作(RtlAddGrowableFunctionTable/RtlDeleteGrowableFunctionTable)の頻度を削減します。これによりJIT中の複数の同時コンパイルでのロック競合を緩和することが目的です。

#125507 Consolidate overlapped I/O non-Windows stubs; remove stale ILLink workaround; remove incorrect [RequiresUnsafe] annotations

@Copilot・GitHub・area-System.Threadinglinkable-framework

PreAllocatedOverlappedおよびThreadPoolBoundHandleの非Windows実装を統合し、プラットフォーム共通のPlatformNotSupportedスタブに置き換えます。非Windowsプラットフォーム(Unix、Browser、Wasi)ではオーバーラップドI/Oが未サポートであるため、別実装の必要がなくなります。また、古いILLinkディスクリプタワークアラウンドを削除し、不正な[RequiresUnsafe]アノテーションを除去しています。

#125416 Enable GC regions on macOS

@Copilot・GitHub・area-GC-coreclr

GC regions(Windows/Linuxでのserver GC標準メモリモデル)をmacOSで有効化します。2022年に追加された!defined(__APPLE__)ガードを削除し、(!defined(HOST_APPLE) || defined(HOST_OSX))に置き換えることでmacOSのみ有効化し、大規模仮想アドレス空間予約をサポートしないiOS/tvOS/MacCatalystは引き続き無効化します。

#125288 Add cDAC API GetCCWData

@Copilot・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Contract)の BuiltInCOM コントラクトに GetCCWData API を追加し、COM Call Wrapper(CCW)情報の取得を最適化しました。複数の個別読み取りを単一のデータ構造取得に統合することで、ターゲットメモリへのアクセス回数を削減します。

新しいAPI:

public TargetPointer GetObjectHandle(TargetPointer ccw);
public SimpleComCallWrapperData GetSimpleComCallWrapperData(TargetPointer ccw);
public TargetPointer GetStartWrapper(TargetPointer ccw);

#124893 Fix possible deadlocks on PosixSignalRegistration disposal on Windows

@mrek-msft・GitHub・area-System.Runtime.InteropServices

Windows上のPosixSignalRegistrationのデッドロック問題を修正します。マルチスレッド環境でハンドラ登録中に別スレッドがHandlerRoutineを実行する際、ロック(s_registrations)とKernelBase.dllのクリティカルセクション間のAB/BAデッドロックが発生していました。本修正は、コンソール制御ハンドラの一度限りの登録と登録解除の廃止により、デッドロックリスクを軽減します。

#124645 Add JsonNamingPolicyAttribute for member-level naming policies in System.Text.Json

@Copilot・GitHub・area-System.Text.Json

System.Text.JsonにJsonNamingPolicyAttributeを追加し、型およびメンバーレベルでの命名規則の細粒度制御を実現します。これにより、グローバルなJsonSerializerOptions.PropertyNamingPolicyをオーバーライドできるようになります。

使用例:

[JsonNamingPolicyAttribute(JsonKnownNamingPolicy.CamelCase)]
public class MyPoco
{
    public string MyFirstProperty { get; set; } = "first";

    [JsonNamingPolicyAttribute(JsonKnownNamingPolicy.KebabCaseLower)]
    public string MySecondProperty { get; set; } = "second";
}

var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower };
JsonSerializer.Serialize(new MyPoco(), options);
// {"MyFirstProperty":"first","my-second-property":"second"}

#124628 Vectorize RegexInterpreter opcode loops for Oneloop, Onerep, Notonerep, and MatchString

@danmoseley・GitHub・area-System.Text.RegularExpressions

RegexInterpreterの4つのオペコード(Oneloop、Onerep、Notonerep、MatchString)のホットパスをSIMD加速されたSpan操作に置き換えることで、正規表現マッチングの性能を大幅に向上させます。既存のNotoneloopベクトル化パターンを拡張し、左から右方向のマッチングのみを最適化します。

#124354 Add support for async thunk methods in GetNativeCodeInfo

@tommcdon・GitHub・area-Diagnostics-coreclrruntime-async

DacDbiInterfaceImpl::GetNativeCodeInfoがасинхронメソッドのネイティブコード情報取得時に、メソッドディフマップにキャッシュされたasync thunk(非同期サンク)ではなく、実際のasync実装メソッドのデータを返すように修正しました。ランタイムはデフォルトでメソッド参照の検索時にasync thunkをキャッシュするため、正しいメソッド情報が返されていない問題に対応しています。

#122950 Support constructors with byref parameters (in/ref/out) in System.Text.Json

@Copilot・GitHub・area-System.Text.Json

System.Text.Jsonがbyref修飾子(in/ref/out)付きのコンストラクタパラメータのdeserialization に対応しました。byref型(例:DateTime&)はジェネリック型引数として使用できず型検証に失敗していたため、基本型を抽出して処理するように修正されました。リフレクションベースとソース生成の両方で動作します。

// これが機能するようになりました
public class TestClass
{
    public TestClass(in DateTime dateTime, in TimeSpan timeSpan) { ... }
    public DateTime DateTime { get; set; }
    public TimeSpan TimeSpan { get; set; }
}

JsonSerializer.Deserialize<TestClass>(json);

#122274 Avoid writing jitdump code for block data

@tommcdon・GitHub・area-Diagnostics-coreclr

.NET 10で導入されたスタブ粒度の変更により、JITダンプがメモリコミット前にブロックデータを読み取ろうとして失敗する問題を修正します。ブロック割り当ての場合、JITダンプへのコード出力を抑制することで、linuxのperfツールがDOTNET_PerfMapEnabled設定を正しく処理できるようにします。

2026年03月19日 (32 PRs)うち Bot 2 件 この日のページ →

#125790 [release/8.0] Remove Homebrew LLVM during macOS CI setup - Part 2

@steveisok・GitHub・area-Infrastructure

macOS CI環境において、HomebrewでインストールされたLLVMライブラリ(例:/usr/local/lib内のx86_64のみのlibunwind.dylib)がApple SDKと競合し、ネイティブリンクを破損する問題を解決するため、CI設定からHomebrew LLVM (llvm@18) をアンインストールするスクリプト変更。ビルドはApple clang (/usr/bin/clang) のみを使用するため、Homebrew LLVMは不要。

#125785 [release/9.0] Remove Homebrew LLVM during macOS CI setup

@steveisok・GitHub・Servicing-approvedarea-Infrastructure-libraries

macOS CI環境でHomebrewのLLVMがApple SDKと競合し、ネイティブリンクを破損する問題を解決するPR。CI実行環境に含まれるHomebrewのLLVM(特に/usr/local/libのlibunwind.dylibなど)を事前に削除し、ビルドがApple clangのみを使用するようにします。本PR (#125763)の9.0リリースブランチへのバックポートです。

#125763 Remove Homebrew LLVM during macOS CI setup

@steveisok・GitHub・area-NativeAOT-coreclr

macOS 15 CI ランナーイメージに付属する Homebrew LLVM 18 が、x86_64 専用の libunwind.dylib などを /usr/local/lib にインストールし、ネイティブリンク時に間違ったアーキテクチャのライブラリを拾うことで、_unw_step や __Unwind_Resume などのシンボルが未解決になり、macOS でのネイティブリンクが全て失敗する問題を修正します。ビルドは Apple clang(/usr/bin/clang)のみを使用するため、Homebrew LLVM を CI セットアップ時に削除します。

#125744 Increase FileSystemWatcher test event timeout to 1000ms

@lewing・GitHub・area-System.IO

FileSystemWatcher テストの WaitForExpectedEventTimeout を 500ms から 1000ms に増加させるもの。inotify リファクタリング(#117148)後の stop/start タイミング変更により、ストレス環境(特に arm32 jitstress)でのイベント配信が遅延する問題に対処。500ms のタイムアウトは遅いハードウェアで false failure を引き起こしていたため、タイムアウト値を拡大することで タイミング起因のフラキーテストと機能的なバグの区別を容易にする。

#125706 Partially revert PR #125326: revert ComActivator/LicenseInteropProxy changes

@Copilot・GitHub・area-Interop-coreclr

PR #125326で導入されたLicenseInteropProxyの[UnmanagedCallersOnly]ベースの実装がGCストレス下でヒープ破損(終了コード -1073740940)を引き起こしていたため、部分的に元の実装に戻すパッチです。GC安全な管理呼び出しパターン(MethodDescCallSite + ARG_SLOT)を復元することで、ポインタベースのメタシグネチャの安全性問題を解決しています。

#125703 Split gc.cpp to multiple files based on the functionality - part 1

@janvorli・GitHub・NO-SQUASHarea-GC-coreclr

モノリシックなgc.cpp(約57,000行)を19の機能別ファイルに分割するコード再編成です。gc.cppは約8,300行に削減され、新しいファイルはgc.cppの末尾で#includeされることで、単一コンパイル単位のビルドモデルを維持しています。この変更は純粋な構造的な再編成であり、機能的・動作的な変更はありません。

#125684 Filter out SPMI metric diffs smaller than ±0.001%

@Copilot・GitHub・area-Infrastructure

SuperPMI(Static Program Metrics Infrastructure)のメトリクス差分レポートにおいて、コード変更がない場合でも数値の微小な誤差がノイズとして報告される問題を解決します。superpmi.pyのwrite_metricdiff_markdown_summary関数に±0.01%の閾値チェックを追加し、このしきい値より小さいメトリクス差分は無視するようにしました。これは既存のis_significant_pctパターン(write_tpdiff_markdown_summaryで使用)との一貫性を保ちます。

#125682 Fix flaky FileSystemWatcher_SymbolicLink_TargetsDirectory_Create_IncludeSubdirectories test

@Copilot・GitHub・area-System.IO

FileSystemWatcher_SymbolicLink_TargetsDirectory_Create_IncludeSubdirectories テストのmacOS上での不安定性を修正しました。原因はmacOS FSEventsが遅延したCreatedイベントを配信する可能性があり、ExpectNoEventが無関係なパスのイベントにも反応していたためです。修正により、特定のネストされたパスのイベントのみを検証するようにExpectNoEventにパスフィルタを追加し、[ActiveIssue]属性をmacOSのみに限定しました。

#125669 [Wasm RyuJIT] Insert r2r ind cell at the end of the args list instead of after 'this'

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly RyuJIT対象のReadyToRun間接呼び出しにおいて、R2R間接セル引数の位置を修正しました。従来は(sp) (indcell) (arg0) (arg1) ...の順序でしたが、(sp) (arg0) (arg1) (indcell)の順序に変更し、WASM後端の期待するLIR評価順序とスタック順序に合わせました。

再帰的フィボナッチ計算が可能になり、ヒープをプライムすることで動作確認済みです。

// fib(31) が 1346269 を返すようになった
[MethodImpl(MethodImplOptions.NoInlining)]
public static int fib(int n) {
    return (n < 2) ? n : fib(n - 1) + fib(n - 2);
}

#125617 Fix WebWorker hang when debugging Blazor WASM apps in Visual Studio

@ilonatommy・GitHub・area-Debugger-mono

Blazor WebAssemblyアプリでWeb Workersを使用する際、Visual Studioでのデバッグ中にワーカースレッドが起動時にハングする問題を修正しました。BrowserDebugProxy(MonoProxy)の2つの問題を解決します:

  1. Chrome がワーカーをアタッチ時に一時停止した後、Runtime.runIfWaitingForDebugger を送信していなかった
  2. ワーカーセッションの起動時に Debugger.paused イベントが IDE に転送され、ワーカーが再開されないままになっていた

#125564 [release/9.0] Fix intermediate artifact upload collisions for NativeAOT and Mono

@lewing・GitHub・Servicing-approvedarea-Infrastructure

release/9.0のdotnet-runtime-officialパイプラインで、NativeAOTとMonoが複数プラットフォームから同じアーティファクトパスにアーキテクチャ非依存パッケージ(Microsoft.NETCore.App.Ref.9.0.15.nupkgなど)をアップロードする際の競合による間欠的なアップロード失敗を修正します。根本原因は複数ジョブが同時に同じファイルをBlob storageに書き込もうとすることです。各プラットフォームのアップロード名を一意にすることで解決します。

#125556 Add runtime async support for saving and reusing continuation instances

@jakobbotsch・GitHub・area-CodeGen-coreclrruntime-async

ランタイム非同期メソッドの最適化として、全ての停止点に対応した単一の共有継続レイアウトを生成し、複数の中断時に同じ継続インスタンスを再利用できるようにしました。これにより割り当て回数を削減し、GC圧力を軽減します。ベンチマークでは約30%のパフォーマンス改善が確認されています。

// 中断が多いループでのパフォーマンス向上
// 修正前: ~539ms
// 修正後: ~404ms (約25%削減)
for (int i = 0; i < n; i++)
{
    await na;  // 複数の中断点で同じ継続インスタンスを再利用
}

#125421 Ensure the Thumb bit is set for resumption stub relocs

@jtschuster・GitHub・arch-arm32area-crossgen2-coreclr

ARM32 Thumb-2コード生成の要件に対応し、ReadyToRun/crossgen2でARM32上の非同期メソッドを安全に出力できるようにしました。ARM32ではThumb-2命令セットのため、コードポインタのビット0(Thumbビット)を設定する必要があります。これまでこのビットが未設定のため、CI上で不正命令エラーが発生し、ARM32での非同期メソッド出力が無効化されていました。

#125385 Refactor System.Net.* AppContextSwitch usage to LocalAppContextSwitches

@rzikm・GitHub・area-System.Net

System.Net.* アセンブリ全体のAppContextスイッチ処理を標準化するためのリファクタリング。従来のAppContextSwitchHelperや手動のAppContext.TryGetSwitchパターンを統一されたLocalAppContextSwitches部分クラスパターンに置き換えることで、コード保守性を向上させます。HTTPのランタイム設定パーサーは対象外。

#125289 Improve regex optimizer through investigation of regex optimizer passes

@danmoseley・GitHub・area-System.Text.RegularExpressions

正規表現オプティマイザーの最終処理段階にFinalReduce()メソッドを追加し、グローバルパス(FindAndMakeLoopsAtomic、EliminateEndingBacktracking)による新規ノード構造を再度削減することで、221パターン(実世界の18,931パターン中1.2%)の追加最適化を実現します。すべてのパターンが最大2ラウンドで収束し、リグレッションはゼロです。

#125260 Configure FileStreamOptions with PreallocationSize and async access in ZipArchiveEntry extract methods

@rzikm・GitHub・area-System.IO.Compression

ZipArchiveEntryの抽出メソッドにおいて、FileStreamOptionsを最適化することで抽出パフォーマンスを向上させます。具体的には、エントリの非圧縮サイズ(ZipArchiveEntry.Length)に基づいてPreallocationSizeを設定してディスク領域を事前割り当てし、フラグメンテーション低減と書き込み性能向上を実現します。また、非同期抽出メソッド(ExtractToFileAsync)ではFileOptions.Asynchronousを有効化して非同期I/Oを使用させます。

#125196 Add analyzer+codefix for applying RequiresUnsafe to pointer methods

@Copilot・GitHub・area-Infrastructure-librarieslinkable-framework

Roslyn アナライザー UnsafeMethodMissingRequiresUnsafeAnalyzer と対応するコードフィックスプロバイダーを追加し、unsafe 修飾子を持つメソッドで [RequiresUnsafe] 属性が欠落している場合に警告(IL2900)を発する機能です。System.Private.CoreLib 全体の 276 ファイルにわたって [RequiresUnsafe] を適用しました。

#124782 [cDAC] Convert cDAC dump tests to run on Helix

@max-charlamb・GitHub・area-Diagnostics-coreclr

cDAC dump テストを ADO パイプラインステージから Helix インフラストラクチャへの実行に転換します。従来の DumpCreation + DumpTest の 2 段階ステージを、単一の CdacDumpTests ステージに統合し、ダンプ生成とテスト実行を Helix マシン上で実行するようにします。windows_arm64 プラットフォームのサポートも追加されます。

#124766 Add CRC32 validation when reading zip archive entries

@alinpahontu2912・GitHub・area-System.IO.Compressionbreaking-change

ZIP アーカイブエントリ読み込み時の CRC32 チェックサム検証機能を追加しました。新しい CrcValidatingReadStream クラスがデータ読み込み中にランニング CRC32 を計算し、期待されたバイト数を読み込み終了時に ZIP エントリヘッダーの CRC 値と比較して検証します。データ破損(改ざんされた非圧縮サイズなど)を検出すると InvalidDataException をスローします。

#124646 Support type-level JsonIgnoreCondition via [JsonIgnore] on classes, structs, and interfaces

@Copilot・GitHub・area-System.Text.Json

[JsonIgnore(Condition = ...)]属性がクラス、構造体、インターフェースの型レベルで使用可能になりました。型レベルで設定したJsonIgnoreConditionは、すべてのプロパティとフィールドのデフォルト値として機能し、プロパティごとの重複指定を削減できます。プロパティレベルの属性は型レベルの設定をオーバーライドでき、型レベルの指定はグローバルなJsonSerializerOptions.DefaultIgnoreConditionよりも優先されます。

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
class MyPoco
{
    public string? PropA { get; set; }
    public string? PropB { get; set; }
    public string? PropC { get; set; }
}

#123209 Support generic converters on generic types with JsonConverterAttribute

@Copilot・GitHub・area-System.Text.Json

JsonConverterAttribute がオープンジェネリック型のコンバーターを、型パラメーター数が一致するジェネリック型に対して使用できるようになりました。リフレクションベースのプロバイダーおよびソースジェネレーターの両方で動作します。従来は Type.ContainsGenericParameters is true エラーが発生していた以下のコードが正常に動作するようになります:

[JsonConverter(typeof(OptionConverter<>))]
public readonly struct Option<T>
{
    public bool HasValue { get; }
    public T Value { get; }
    public Option(T value) { HasValue = true; Value = value; }
}

public sealed class OptionConverter<T> : JsonConverter<Option<T>>
{
    // ... 実装
}

// これまではエラー、今は動作
JsonSerializer.Serialize(new Option<int>(42));

2026年03月18日 (28 PRs)うち Bot 3 件 この日のページ →

#125719 Enable linux_arm64 coreclr build for SVE perf benchmarks.

@ilonatommy・GitHub・arch-wasmarea-Infrastructureperf-pipeline

Linux ARM64プラットフォーム向けのCoreClrパフォーマンスベンチマークビルドを有効化するパイプライン設定変更。dotnet-performanceリポジトリのcobaltSveMicroジョブがlinux_arm64上で実行される際に必要なbuild_linux_arm64_release_coreclrジョブの依存関係を解決し、YAML検証エラーによるパイプラインビルド失敗を修正しています。

#125709 Unify SECURITY_ATTRIBUTES code across the codebase

@Copilot・GitHub・area-System.IO

SECURITY_ATTRIBUTES構造体の初期化処理を統一するため、Kernel32インタロップレイヤーに3つのファクトリメソッドを追加し、複数の箇所で重複していた初期化コードを削除する変更です。これにより、ファイル、パイプ、レジストリ、ディレクトリ、メモリマップドファイル、スレッド同期プリミティブ関連のコード全体で一貫性が向上します。

// 新しいファクトリメソッド
SECURITY_ATTRIBUTES.Create()                          // nLengthのみ設定
SECURITY_ATTRIBUTES.Create(void* securityDescriptor)  // nLengthとセキュリティ記述子を設定
SECURITY_ATTRIBUTES.Create(bool inheritable)          // nLengthとハンドル継承可能性を設定

#125707 Re-enable the WhenDiskIsFullTheErrorMessageContainsAllDetails test on Windows

@Copilot・GitHub・area-System.IOtest-enhancement

Windows上でSetFileInformationByHandleが返すERROR_INVALID_PARAMETER(87)エラーを処理する修正が既に適用されたため、抑制されていたテストを再度有効化します。このテストは1EiBのプリアロケーションがファイルパスとサイズを含むIOExceptionをスローし、ディスク上にファイルを残さないことを検証します。

#125681 More reduction of PointerMemoryManager

@vcsjones・GitHub・area-System.Securityreduce-unsafe

暗号スタック全体における PointerMemoryManager の使用を削減する継続的な取り組みの一環です。PKCS#7 ContentInfo のASN.1デコーディングを PointerMemoryManager から生成された ref struct ベースのデコーダ(ValueContentInfoAsn)に置き換え、複数のPKCS/CMS/X.509呼び出しサイトをReadOnlySpan<byte>ベースのAPIに切り替えます。これにより、メモリピニングのオーバーヘッドを削減し、より安全で効率的なコード生成を実現します。

#125679 Revert "[release/9.0-staging] Update dependencies from dotnet/roslyn …

@sbomer・GitHub・Servicing-approvedarea-System.Runtime.InteropServiceslinkable-framework

release/9.0-stagingブランチでのRoslyn依存関係更新をリバート(コミット f505b9455c334cb1107a1db30daeeb3930b7e58c)。Roslyn/Roslyn-analyzersのパッケージバージョンを以前の状態に戻し、リバートされたコンパイラ/分析ツールの動作に合わせてテストと設定を調整。

#125643 Process: use overlapped I/O for parent end of stdout/stderr pipes on Windows

@Copilot・GitHub・area-System.Diagnostics.Process

Windows上でプロセスのstdout/stderr パイプの親側で重複I/O(非同期I/O)を有効化し、ブロッキング読み取りでスレッドプール スレッドを消費するのを回避します。子プロセス側は同期のまま維持し、GetStdHandle() との互換性を保証します。

// stdin: 常に同期(parentInputs=true → asyncRead=false)
CreatePipe(out parentInputPipeHandle, out childInputPipeHandle, true);

// stdout/stderr: 常に親側で非同期/重複I/O(parentInputs=false → asyncRead=true)
CreatePipe(out parentOutputPipeHandle, out childOutputPipeHandle, false);

#125636 Reduce backtracking for greedy loops followed by subsumed literals

@stephentoub・GitHub・area-System.Text.RegularExpressions

正規表現エンジンで、貪欲なループ(\w+、\d+ など)の後に、そのループのクラスに含まれるリテラルが続き、さらにその後が不連続パターンの場合、バックトラッキングを最適化するパフォーマンス改善です。例えば \b\w+n\b では、\w+ の最後の位置だけが成功可能なため、繰り返される LastIndexOf 呼び出しをスキップできます。

#125621 [cDAC] Remove reflection from register access in ContextHolder

@max-charlamb・GitHub・area-Diagnostics-coreclr

cDAC(Compact Diagnostic Access Component)のスタックウォーク機能において、ContextHolder<T>の反射ベースのレジスタアクセスを削除し、各プラットフォーム固有のコンテキスト構造体での明示的な切り替え実装に置き換えました。これにより、AOTトリミング互換性を改善し、ホットパスのパフォーマンスオーバーヘッドを削減します。

#125536 Add property and event parent lookup table entries in AddPropertyToPropertyMap and AddEventToEventMap

@tommcdon・GitHub・area-Diagnostics-coreclr

ホットリロード中に複数のメタデータ差分を適用する際に、既存型へのプロパティ/イベント追加と新しい型の作成が交互に行われると、System.ArgumentOutOfRangeException: Token 2000000 is not valid がスローされる問題を修正します。

根本原因は、AddPropertyToPropertyMapとAddEventToEventMapがインダイレクト(ポインタ)テーブルパスを使用する際に親ルックアップテーブルのキャッシュを更新していなかったため、FindParentOfPropertyHelperが古いキャッシュからRID 0を返してしまっていました。

#125525 Fix most of the diagnostic EH tests with interpreter

@janvorli・GitHub・area-CodeGen-Interpreter-coreclr

インタープリタでの例外処理(EH)診断テストのサポートを改善するPRです。デバッガスタックウォーク、例外インターセプション、IL↔ネイティブオフセットマッピングの動作をインタープリタに対応させることで、21個の診断EHテストのうち18個が成功するようになりました。また、最近のデバッグエラーハンドリング リファクタリングで発生していたLinux環境での退行も修正されています。

#125471 Add a directive to asm files to manually inject a .note.GNU-stack section when using clang 22

@jtschuster・GitHub・area-PAL-coreclr

clang 22でコンパイルされたELF出力ファイルが実行可能スタックをリクエストしないようにするため、.note.GNU-stackセクションを明示的に出力する回避策を追加します。NO_EXEC_STACK_DIRECTIVEマクロを定義し、ELF + clang 22以上でビルドされるアセンブリファイルに追加しています。

#125455 [wasm][interpreter] Defer managed calli cookie resolution to execution time

@radekdoulik・GitHub・arch-wasmarea-CodeGen-Interpreter-coreclr

WebAssembly インタープリタにおいて、マネージド calli 命令のクッキー解決をコンパイル時から実行時に遅延させる変更です。ポータブルエントリポイント上の全マネージド/FCall calli 呼び出しについて、コンパイル時にクッキーを計算する代わりに実行時に MethodDesc から解決することで、デリゲートシャッフルサンクの対応が可能になり、約40シグネチャ分のハードコード化されたスタブが不要になります。

#125139 Fix GetValue<object>() and TryGetValue<JsonElement?> on JsonValueOfJsonPrimitive types

@Copilot・GitHub・area-System.Text.Json

.NET 10で導入されたJsonValueOfJsonString、JsonValueOfJsonBool、JsonValueOfJsonNumberがGetValue<object>()とTryGetValue<JsonElement?>()でInvalidOperationExceptionをスローする回帰バグを修正します。これらの型のTryGetValue<T>メソッドがtypeof(T) == typeof(object)とtypeof(T) == typeof(JsonElement?)のチェックを欠いていたことが原因です。

var reader = new Utf8JsonReader("\"Hello World!\""u8);
reader.Read();
var node = converter.Read(ref reader, typeof(JsonNode), options);

// .NET 10: 修正前は InvalidOperationException をスロー
// .NET 9:  正常に動作
var o = node.GetValue<object>();

#124902 Migrate Windows build pools from VS2026 preview scout to production VS2026 image

@Copilot・GitHub・area-Infrastructure-libraries

Windows ビルドエージェントプールを Visual Studio 2026 Preview Scout イメージから安定版の VS2026 本番イメージに移行するビルドインフラストラクチャ更新です。プレビュー/スカウトイメージ参照を削除し、本番対応のイメージ名(内部ビルド:windows.vs2026.amd64、公開ビルド:windows.vs2026.amd64.open)に統一します。

#124842 Handle Capture nodes in TryGetOrdinalCaseInsensitiveString

@danmoseley・GitHub・area-System.Text.RegularExpressions

TryGetOrdinalCaseInsensitiveStringメソッドがCaptureノードを透過的に処理し、ネストされたConcatenateノードを再帰的に探索するよう改善しました。これにより、\b(in)\b(IgnoreCaseオプション)のようなパターンが、単一文字列による高速なLeadingString_OrdinalIgnoreCase_LeftToRight戦略を使用できるようになります。

#124699 Fix: Allow inline regex options in conditional expression branches

@danmoseley・GitHub・area-System.Text.RegularExpressions

正規表現パーサーが条件式の yes/no ブランチ内でインラインオプション(例:(?i))を拒否していた問題を修正しました。これは .NET Framework からのリグレッションで、(?(test)(?i)yes|no) のような構文が Unrecognized grouping construct エラーを発生させていました。

修正は RegexParser.ScanGroupOpen() で ChildCount() > 0 チェックを追加し、テスト式が未追加の場合(ChildCount == 0)のみオプションをブロックし、ブランチ内(テスト式追加後)でのオプション使用を許可するものです。

#118207 Optimize Version JSON deserialization with UTF-8 parsing

@Copilot・GitHub・area-System.Text.Json

Version JSON逆シリアル化のパフォーマンス最適化PR。主な変更は、先頭のプラス記号の検証を削除してVersion.Parseの動作に合わせ、UTF-8パースのサポートを追加することで、UTF-8→UTF-16のトランスコーディングオーバーヘッドを排除します。.NET 11+ではUTF-8バイト直接パースにより、中間バッファの割り当てを削除し、スループットを向上させます。

2026年03月17日 (23 PRs)うち Bot 4 件 この日のページ →

#125627 [cDAC]: Flush contract caches

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Component)の contract キャッシュフラッシング機構を実装するPRです。デバッグ対象プロセスの状態変化(例:resume後)時に、キャッシュされたcontract データをクリアするための統一的なFlush()メカニズムを追加し、既存のDAC フラッシュエントリポイント(IXCLRDataProcess.Flush()、ISOSDacInterface13.LockedFlush())に統合します。

#125590 Fix race in BackgroundService exception aggregation during Host shutdown

@danmoseley・GitHub・area-Extensions-Hosting

BackgroundService が StopHost 動作で複数同時に失敗する場合、一部の例外が失われるレース条件を修正します。火・忘れ(fire-and-forget)で実行されていた TryExecuteBackgroundServiceAsync の監視タスクを追跡し、StopAsync でそれらが例外を記録するまで待機してから例外リストを読む仕様に変更しました。これにより、複数の BackgroundService が同時故障する本番環境シナリオでも全ての例外が正しく集約されます。

#125570 Fix race condition in BackgroundServiceExceptionTests

@lewing・GitHub・area-Extensions-Hosting

BackgroundServiceExceptionTestsのフレーキーなテストを修正します。タイミング依存のTask.Delay(200ms)を、より決定的な同期メカニズムに置き換えることで、CI環境での不安定な実行を解決します。

特にBackgroundService_AsynchronousException_StopAsync_ThrowsExceptionテストが高負荷CI環境で例外の伝播を待ちきれず失敗していたため、IHostApplicationLifetime.ApplicationStoppingシグナルを活用して、ホストが実際に例外を処理した後の正確なタイミングで検証するように改善されました。

#125531 [Wasm RyuJIT] Generate element section and populate function pointer table

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly RyuJIT コンパイラの関数ポインタテーブル初期化機能を実装するため、Wasm オブジェクトライターを更新しました。Element セクションを生成し、モジュール内のすべての関数に対して順序付けられた関数ポインタを作成します。

(import "env" "__image_function_pointer_base" (global (;2;) i32))
(elem (;0;) (offset global.get 2 i32.const 0 i32.add) func 0 1 2 3 ... 22)

#125528 Use ref struct key loaders

@vcsjones・GitHub・area-System.Securityreduce-unsafe

ASN.1キーローダーをref structベースの値型(Value*)に移行し、メモリ割り当てを削減しPointerMemoryManagerの使用を排除する変更です。エミットされたref structローダーにEncodeメンバーのサポートを追加し、asn:Choiceの検証をファイルスコープ型のバリデータに移動しました。暗号キー関連の多くのASN.1型がrefエミット専用に変更されます。

#125447 Add missing XML documentation for Microsoft.Extensions.FileSystemGlobbing APIs

@Copilot・GitHub・area-Extensions-FileSystem

Microsoft.Extensions.FileSystemGlobbing APIの欠落していたXML documentation を追加・修正するPRです。MatcherExtensionsクラスへの<summary>追加、各クラスのコンストラクタと プロパティのドキュメンテーション整備、FilePatternMatch.GetHashCode()の<returns>タグ修正、およびFileInfoWrapper.FullNameの不正な remarks参照の修正を実施しました。dotnet-api-docsへの後続ポートを前提としています。

#125422 Fix crossgen2 JitHost OOM crash: throw on allocation failure

@jtschuster・GitHub・area-CodeGen-coreclr

crossgen2のJitHostメモリ割り当て失敗時の処理を改善。従来はmallocの失敗時にNULLを返していたため、JIT's ArenaAllocatorがNULLチェックなしに逆参照してアクセス違反が発生していました。本修正により、malloc/calloc失敗時にstd::bad_allocを発生させ、JitCompileMethod境界で捕捉してCORJIT_OUTOFMEMを返すことで、メモリ不足時の例外処理を統一します。

#125372 [r2r] Fix rule for skipping compilation of methods with CompExactlyDependsOn

@BrzVlad・GitHub・area-crossgen2-coreclr

ReadyToRun (R2R) コンパイラが CompExactlyDependsOn 属性を持つメソッドをスキップする判定ロジックのバグを修正。対象アーキテクチャに適用されない命令セット(InstructionSet.ILLEGAL)を参照する場合、メソッドが不正にR2R コンパイルから除外されていました。修正により、ILLEGAL命令セットは既知の非サポート状態として扱われ、メソッドがR2Rでコンパイルされるようになります。JSON シリアライゼーション/デシリアライゼーションのパフォーマンスが約2倍向上。

#125273 Add issue-triage Copilot skill with type-specific guides

@eiriktsarpalis・GitHub・area-skills

dotnet/runtime リポジトリ向けの GitHub Issue トリアージ用 Copilot skill を追加します。このスキルは Issue を調査し、KEEP/CLOSE/NEEDS INFO の推奨事項を構造化されたマークダウンレポートで出力します。8段階のワークフロー(安全性スキャン、Issue 分類、重複検出、タイプ別調査など)と、バグ・API提案・パフォーマンス回帰・質問など Issue タイプ別の詳細ガイドで構成されています。

#124701 Add RegexOptions.AnyNewLine via parser lowering

@danmoseley・GitHub・area-System.Text.RegularExpressions

RegexOptions.AnyNewLine フラグ (値: 0x0800) を新規追加し、^、$、\Z、. が Unicode のすべての行区切り文字 (\r、\r\n、\n、\u0085、\u2028、\u2029) を認識するようにします。これにより、Windows 形式の \r\n や Unicode 改行に対応する際の煩雑な回避策(\r?\n や (\r\n|\n) など)が不要になります。

// 修正前: match.Value == "foo\r" (末尾の\rが含まれる)
var match = Regex.Match("foo\r\nbar", ".*$", RegexOptions.Multiline);

// 修正後: match.Value == "foo" (正しく動作)
var match = Regex.Match("foo\r\nbar", ".*$", RegexOptions.Multiline | RegexOptions.AnyNewLine);

#124352 Add support for pre-compiling interop type maps in crossgen2

@jkoritzinsky・GitHub・area-crossgen2-coreclrlinkable-framework

crossgen2でInterop型マップの事前コンパイル機能を追加します。従来はTypeMap属性を実行時に処理していましたが、本変更ではNativeAOTと同様にネイティブ形式のハッシュテーブルにエンコードします。3つの新しいReadyToRunセクション(ExternalTypeMaps、ProxyTypeMaps、TypeMapAssemblyTargets)を導入し、型マップをR2Rイメージに事前計算して格納することで、実行時の属性処理オーバーヘッドを削減します。

#124225 Fix non-dense TensorSpan handling in SequenceEqual, Fill*, Resize*, IndexOf*, and ConcatenateOnDimension

@Copilot・GitHub・area-System.Numerics.Tensors

非密集(strided)テンソルスパンにおける複数のメソッドの不正な動作を修正するPRです。これらのメソッドが基となるストレージ全体を処理していたのに対し、論理的なテンソル要素のみを操作するように改善しました。主な対象メソッドは SequenceEqual、Fill*、Resize*、IndexOf*、ConcatenateOnDimension です。

問題例:

int[] d1 = [10, 20, 99, 99, 30, 40, 99, 99];
int[] d2 = [10, 20, 77, 77, 30, 40, 77, 77];
var ts1 = new ReadOnlyTensorSpan<int>(d1, [2, 2], [4, 1]);
var ts2 = new ReadOnlyTensorSpan<int>(d2, [2, 2], [4, 1]);
// 論理要素は同じ [10, 20, 30, 40] だが、SequenceEqual が false を返していた
bool result = ts1.SequenceEqual(ts2); // 修正後: true

#124200 Restore blocking mode after successful ConnectAsync on Unix

@liveans・GitHub・area-System.Net.Sockets

Unix環境において、ConnectAsyncの成功後にソケットをブロッキングモードに復元します。ユーザーが明示的にSocket.Blocking = falseを設定していない場合、その後の同期操作(Send/Receive)がepoll/kqueueでのエミュレーションではなくネイティブなブロッキングシステムコールを使用することで、パフォーマンスを最適化します。後続の非同期I/O操作が実行される際には、既存のSetHandleNonBlocking()メカニズムを通じてソケットは非ブロッキングモードに戻されます。

await socket.ConnectAsync(endpoint);
// 以降の同期操作がネイティブブロッキングシステムコールを使用(より効率的)
socket.Receive(buffer);
socket.Send(data);

2026年03月16日 (32 PRs)うち Bot 3 件 この日のページ →

#125620 Update create-pull-request action version

@akoeplinger・GitHub・area-Infrastructure

aspnetcore→runtime同期ワークフローで使用されているdotnet/actions-create-pull-requestアクションを、Aspireで使用されているバージョンに更新します。アクションで発生していた問題に対応するため、v4タグから特定のコミットSHAにピン留めされたバージョンに切り替えています。

#125614 Add cdac.slnx solution file for cDAC development

@max-charlamb・GitHub・area-Diagnostics-coreclr

cDAC(Compact DAC)開発用の公式ソリューションファイル cdac.slnx をチェックインして、開発者の環境構築を簡素化します。従来はREADMEの手動テンプレートを使用していましたが、5つのライブラリプロジェクトと2つのテストプロジェクト(ユニットテスト・ダンプテスト)をまとめた検証済みソリューションを提供することで、セットアップの手間を削減します。

#125605 Do not store result of cast in IDynIntfCastable scenarios

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

NativeAOT環境において、IDynamicInterfaceCastable型のインターフェース型チェック結果が誤ってキャッシュされ、異なるインスタンス間で結果が誤った形で再利用される不具合を修正します。修正により、IsInterfaceImplementedメソッドの結果がインスタンスごとに正しく評価されるようになります。

#125583 [mono] Fix jit_mm mismatch in delegate trampoline creation for dynamic methods

@lewing・GitHub・area-VM-meta-mono

Mono JITランタイムにおけるdelegate trampolineの作成時のメモリマネージャー選択ミスマッチを修正します。動的メソッドの場合、jit_mm_for_methodを一貫して使用し、hash table挿入をアトミックに行うことで、マルチスレッド環境での不整合状態を排除します。特にWASM with AOT + threads環境での予期しないアサーション失敗を解決します。

#125575 Fix Mono AOT crash on struct fields with unsupported marshal conversion

@lewing・GitHub・area-VM-meta-mono

Mono AOT コンパイラが、参照型フィールド(string、class、array など)で MONO_MARSHAL_CONV_NONE に解決されるマーシャリング変換に遭遇した際に SIGABRT でクラッシュする問題を修正。例えば [MarshalAs(UnmanagedType.CustomMarshaler)] が指定された string フィールドを含む構造体がこれに該当します。修正により、AOT コンパイラはアサーションではなく MarshalDirectiveException を発行して正常に完了し、ランタイムが適切な例外をスロー可能になります。

#125574 Remove more fixed buffers and replace them with InlineArray

@EgorBo・GitHub・area-System.Netreduce-unsafe

固定サイズバッファ(fixedキーワード)をC# InlineArray(InlineArray*<T>および[InlineArray(N)])に置き換えることで、interop関連の低レベルコードにおけるunsafeな操作を削減するマイグレーションです。ネイティブレイアウトの互換性を維持しながら、Spanベースのアクセスパターンを採用しています。

#125573 Fix flaky TestResourceManagerIsSafeForConcurrentAccessAndEnumeration timeout

@lewing・GitHub・area-System.Resources

TestResourceManagerIsSafeForConcurrentAccessAndEnumerationテストの不安定性を解決するPRです。このテストは複数スレッドでのリソース列挙時のスレッドセーフティを検証していますが、CI環境の負荷により30秒のタイムアウトで頻繁に失敗していました。Task.WaitAllの代わりにTask.WhenAllを使用し、タイムアウトを120秒に延長し、例外伝播を改善することで、フレークテストを解消しています。

#125540 [cDAC] Implement GetLastExceptionState on IXCLRDataTask

@barosiak・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Component)のマネージド実装において、IXCLRDataTask.GetLastExceptionStateメソッドを実装しました。このメソッドは、スレッドの最後に発生した例外の状態を取得します。ThreadData.LastThrownObjectHandleから情報を読み込み、ネストされた例外チェーンなしのClrDataExceptionStateを構築し、既存のGetCurrentExceptionStateと同じパターンに従っています。

#125538 Add pipeline legs for crossgen2 with --large_version_bubble

@jtschuster・GitHub・area-crossgen2-coreclr

crossgen2のコンポジットモード(--large_version_bubble)でのCI カバレッジを追加し、非同期メソッドのコンパイル処理を調整してトークン解析エラーを回避するもの。従来のクロスジェン2パイプラインでは、フレームワークライブラリを含むテストをコンポジットモードでビルドするテストがなかったため、コンポジットモード固有の問題が検出されていませんでした。

#125537 Fix racy mvid tests.

@mrvoorhe・GitHub・linkable-frameworkcommunity-contributionarea-Tools-ILLink

IL Linkerのテスト実行時にMVID関連テスト(DeterministicMvidWorks、NewMvidWorks、RetainMvid)が同じサンドボックスロケーションで競合し、UnauthorizedAccessExceptionが発生する問題を解決。3つのテストをAll.CommandLineTestsから除外し、Individualフォルダに移動して個別実行テストに統合。重複トリミング処理を削減。

#125526 Sync shared HPack/QPack changes from aspnetcore

@Copilot・GitHub・area-System.Net.Http

Huffman符号化された文字列がデコード時に著しく膨張する場合(例:10バイト→16バイト)に、デコード後のヘッダー長が設定された制限を超える可能性がある脆弱性を修正しました。HPackDecoderとQPackDecoderでは、エンコード済み文字列長のみを事前チェックしていましたが、デコード後の長さをチェックしていませんでした。デコード後に長さチェックを追加し、制限を超える場合は例外をスローするよう改善しました。

#125509 [browser] Fix WasmEmitTypeScriptDefinitions making builds non-incremental

@maraf・GitHub・arch-wasmarea-Build-monoos-browser

WasmEmitTypeScriptDefinitions が有効な場合、ビルド時に dotnet.d.ts が wwwroot/ にコピーされます。2回目以降のビルドでは、wwwroot の Content グロブがこのファイルを検出し、Static Web Assets マニフェストが再生成されることでビルドが非インクリメンタルになります。本修正は、dotnet.d.ts を評価時の Content から除外することで、SWA パイプラインがグロブを通じてファイルを検出しないようにし、マニフェストの安定性を保ちます。

#125497 JIT: Create suspensions/resumptions separately from processing calls in async transformation

@jakobbotsch・GitHub・area-CodeGen-coreclrruntime-async

JIT非同期変換をリファクタリングし、継続情報の収集とサスペンション/レジューム生成を分離しました。この変更により、複数のサスペンションポイント間で継続レイアウトを再利用できるようになり、将来的に単一の継続を割り当てて全ての後続サスペンションで再利用する戦略の実験が可能になります。ローカル変数の割り当て順序が異なる箇所では、スタックフレームエンコーディングに軽微な差異が発生する可能性があります。

#125418 Fix missing call to write barrier in static constructors of ref structs

@janvorli・GitHub・area-CodeGen-coreclr

JITがref structの静的フィールド初期化時に書き込みバリア(write barrier)の呼び出しを誤って省略していた問題を修正しました。GCヒープに存在する静的フィールドに対してJIT_ByRefWriteBarrierが呼び出されていなかったため、メモリ破損につながる可能性がありました。この問題は.NET 10のPR #111733で導入されました。

#125384 Initialize WebProxy credentials from URI UserInfo

@Copilot・GitHub・area-System.Net

WebProxyがプロキシURI内に埋め込まれた認証情報(UserInfo)を無視していた問題を修正します。socks5://username:password@host:portのような形式でURI内に指定された認証情報を自動的に抽出し、Credentialsプロパティに設定するようになります。これにより、SOCKS5認証が正常に機能するようになります。

// URIから認証情報が自動的に抽出される
handler.Proxy = new WebProxy("socks5://username:password@host:1080");
// handler.Proxy.Credentials は自動設定される

// Addressセッターでも動作
var proxy = new WebProxy();
proxy.Address = new Uri("socks5://username:password@host:1080");
// proxy.Credentials は自動設定される

// 明示的な認証情報が優先される
handler.Proxy = new WebProxy("socks5://username:password@host:1080");
handler.Proxy.Credentials = new NetworkCredential("other", "creds"); // こちらが優先

#125219 JIT: Preference SDSU intervals away from killed registers

@jakobbotsch・GitHub・area-CodeGen-coreclr

JIT の線形スキャンレジスタアロケーション (LSRA) において、単一定義・単一使用 (SDSU) の一時的なインターバルを、消費側ノードで殺されるレジスタから遠ざけるようにする優先度ロジックを復活させました。これにより #125214 の変更による回帰を解決し、レジスタスピルの削減とコード品質の向上を実現しています。

サンプルコード(生成アセンブリの改善例):

-       sub      rsp, 40        // より大きなスタック調整
-       xor      eax, eax
-       mov      qword ptr [rsp+0x20], rax
+       push     rbx            // レジスタ保存による効率化
+       sub      rsp, 32

#124965 Include propertyName in KeyNotFoundException thrown by JsonElement.GetProperty

@Copilot・GitHub・area-System.Text.Json

JsonElement.GetProperty が KeyNotFoundException をスロー時に、プロパティ名を例外メッセージに含めるように改善しました。チェーンメソッド呼び出しで失敗時に、どのプロパティが原因かを特定できるようになります。

// Before: メッセージにプロパティ名がない
// The given key was not present in the dictionary.

// After: プロパティ名が含まれる
// The given key 'dateRange' was not present in the dictionary.

#124801 Decouple ILC from ManagedAssemblyToLink

@Copilot・GitHub・linkable-frameworkarea-Tools-ILLink

NativeAOTのILLink準備処理(_ComputeManagedAssemblyForILLink)がComputeIlcCompileInputsの副作用に依存していた結合関係を解除します。@(ManagedBinary)に依存するのではなく、@(IntermediateAssembly)を使用することで、ILLinkの準備フェーズがComputeIlcCompileInputsの実行順序に依存しなくなり、インクリメンタルビルド時の問題を解決します。

#124728 Use PF_LINK on SunOS

@gwr・GitHub・area-System.Net.Socketsos-SunOScommunity-contribution

SunOS(Illumos)プラットフォームでのネットワーキング実装を改善するPR。SunOSはAF_LINKとAF_PACKETの両方を定義していますが、AF_LINKを優先することで、システムプライベートヘッダーへのアクセスが不要になります。これにより、クロスコンパイル時のヘッダーコピー処理が簡略化されます。

#124611 NativeAOT: Use lib prefix by default on Unix for native library outputs

@Copilot・GitHub・breaking-changearea-NativeAOT-coreclr

NativeAOT で Unix プラットフォーム上のネイティブライブラリ出力にデフォルトで lib プレフィックス(例:libfoo.so、libfoo.dylib、libfoo.a)を適用するようにしました。従来は内部プロパティ _UseNativeLibPrefix を明示的に設定する必要がありました。公開プロパティ UseNativeLibPrefix で無効化できます。

<!-- オプトアウト設定 -->
<UseNativeLibPrefix>false</UseNativeLibPrefix>

#124482 Fix UdpClient.EnableBroadcast not preventing broadcast sends

@matantsach・GitHub・area-System.Net.Socketscommunity-contribution

UdpClient.CheckForBroadcast()がユーザーの明示的な設定を無視してEnableBroadcast = falseの場合でもブロードキャスト送信時に自動的にソケットオプションを有効化していた問題を修正します。修正後は、ユーザーがEnableBroadcastを明示的に設定した場合はその選択を尊重し、設定していない場合は従来通りの自動有効化動作を保つ後方互換的な実装です。

#124428 Fix XmlReader ArgumentOutOfRangeException for malformed UTF-8 in XML …

@lufen・GitHub・area-System.Xmlcommunity-contribution

XmlReader で UTF-8 が不正な XML 宣言を処理する際の ArgumentOutOfRangeException を修正しました。SafeAsciiDecoder 使用時の UnDecodeChars() メソッドにおいて、非ASCII文字(例:バイト0xBFから生成されるU+00BF)が UTF-8 では2バイト以上になることを考慮せず、bytePos が bytesUsed を超過してしまう問題を解決しました。修正後は、SafeAsciiDecoder を検出して charPos を直接利用し、ターゲットエンコーディングのバイト数が一致することを検証。不一致の場合は XmlException を Xml_InvalidCharInThisEncoding で投げ、不正なバイトを ParsingState を破損させる前に検出します。

2026年03月15日 (5 PRs)うち Bot 1 件 この日のページ →

#125568 [release/9.0] Disable Datagram_UDP_AccessDenied_Throws_DoesNotBind on all macOS/MacCatalyst

@lewing・GitHub・Servicing-approvedarea-System.Net.Sockets

macOS 15+におけるAppleのLocal Network privacy機能に対応したテスト修正です。UDP broadcast送信時にSO_BROADCASTなしの場合、macOS 15+はEACCESではなくEHOSTUNREACHを返すため、テストが失敗していました。既存のActiveIssue属性をMacCatalyst x64のみから全macOS/MacCatalystプラットフォームに拡大し、テスト無効化の対象を統一します。

#125514 Replace fixed buffers with InlineArray

@EgorBo・GitHub・area-System.Runtime.InteropServicesreduce-unsafe

このPRは、Interop層および低レベルの構造体において、unsafe fixedバッファをInlineArrayベースのバッファに置き換え、unsafeキーワードの使用範囲を削減しています。互操作性レイアウトを保持しながら、より安全で保守性の高いコードへの現代化を実現しています。23ファイルにおいて、fixedバッファからInlineArrayN<T>または[InlineArray(...)]属性付きバッファへの段階的な移行を行っています。

#125459 Cache debugger patches to speed up x64 stackwalk epilogue/prologue scanning

@hoyosjs・GitHub・area-Diagnostics-coreclr

x64スタックウォーク中のデバッガブレークポイントパッチスキャンのパフォーマンスを最適化するため、DAC側にパッチキャッシュを導入しました。ミニダンプ収集時に毎フレームで実行されていたパッチハッシュテーブルの走査を削減することで、大幅な高速化を実現しています。

#125274 Remove unnecessary volatile from fields in Libraries

@stephentoub・GitHub・area-Meta

.NET メモリモデル(docs/design/specs/Memory-model.md)に基づき、187個のフィールドから不要なvolatile修飾子を削除するメンテナンス変更です。参照型フィールド(159個)ではオブジェクトアサインメントがリリースセマンティクスを提供し、値型フィールド(28個)ではメモリモデルで読み込み導入が禁止されたため、volatileが不要になりました。破壊的変更ではなく、メモリ最適化による内部実装の改善です。

2026年03月14日 (7 PRs)うち Bot 1 件 この日のページ →

#125548 Fix wasm Playwright TargetClosedException caused by wrong Helix queue

@lewing・GitHub・area-Infrastructure-mono

Wasm Playwright ブラウザテストの間欠的な TargetClosedException 失敗を修正します。内部ビルドではAndroidキューが誤ってすべてのプラットフォームに適用されていた(特に browser_wasm)ため、Chrome 共有ライブラリ依存関係がないベアメタルマシンでテストが実行されていました。また、メモリ不足によるChrome クラッシュに対する耐性も不足していました。

#125426 cDAC: Implement ISOSDacInterface::GetRCWData

@Copilot・GitHub・area-Diagnostics-coreclr

RCW(Runtime Callable Wrapper)データ取得機能を cDAC(Compact Diagnostic Access Component)の ISOSDacInterface::GetRCWData として実装します。RCW フラグのデコード機能と切断検出を含み、ダンプテストと単体テストを追加して RCW データおよびインターフェースキャッシュ動作を検証します。

#124920 Convert constructor invocations from the runtime to use UnmanagedCallersOnly

@jkoritzinsky・GitHub・area-VM-coreclr

ランタイム内のコンストラクタ呼び出しをUnmanagedCallersOnlyパターンに移行するPRです。クラスコンストラクタ(.cctor)とデフォルトインスタンスコンストラクタの呼び出しを、VM-to-Managed逆P/Invokeパターンで実装し直します。これにより、CATCH_HANDLER_FOUND_NOTIFICATION_CALLSITEとPREPARE_NONVIRTUAL_CALLSITE_USING_METHODDESCの不要なインフラが削除されます。

Bot PRs (1 PRs)

2026年03月13日 (19 PRs)うち Bot 1 件 この日のページ →

#125515 JIT: Bump JIT-EE GUID after removal of hardware intrinsics

@jakobbotsch・GitHub・area-CodeGen-coreclr

PR #124033のハードウェアイントリンシック削除に伴うJIT-EE GUID(JIT/EE インターフェースバージョン)の更新です。JIT CI環境で、JITと前バージョンのBCL/SPMI collectionsとの互換性チェックが失敗していたため、JITEEVersionIdentifierを新しいGUID値にバンプすることで互換性検証をリセットし、JIT CIのブロッキングを解除します。

#125488 Add curl retry flags to wasi-sdk Linux download

@steveisok・GitHub・area-Infrastructure

Linux/macOS環境におけるWASI SDK ダウンロードの信頼性向上を目的とした変更です。従来、Linux の curl コマンドには再試行ロジックがなく、一時的なGitHubダウンロード失敗(レート制限、ネットワーク問題、不完全な転送)により暗号的な tar エラーでビルドが失敗していました。Windows用の download-wasi-sdk.ps1 と同様に、再試行機能を追加して堅牢性を高めます。

curl --silent --show-error --fail --retry 3 --retry-delay 5 -L -o wasi-sdk-25.0.tar.gz <url>

#125470 Enable the crypto shim to build against OpenSSL 4.0-alpha1 headers

@bartonjs・GitHub・area-System.Security

OpenSSL 4.0-alpha1対応のため、ネイティブ暗号シムをビルド可能にする変更です。主な課題はASN1_STRING型の不透明化と、APIの戻り値にconstポインタが増えたこと。ASN1_STRINGフィールドへの直接アクセスをアクセッサAPI(ASN1_STRING_length、ASN1_STRING_get0_data)に置き換え、const戻り値に対応するためOSSL4CONSTマクロを導入しています。

#125403 Fix Tensor stride computation for single-element (length <= 1) tensors

@Copilot・GitHub・area-System.Numerics.Tensors

単一要素(length <= 1)のテンソルにおいてstrideの計算が誤っていた問題を修正。TensorShape.Createの2つのショートカットオーバーロードが、stride 0を使用すべき場合に hardcode された strides: [1] を使用していたため、単一要素テンソルの作成と操作が失敗していました。

// 修正前:stride = 1(誤り)
var src = Tensor.Create([1.0]);
var dst = Tensor.CreateFromShapeUninitialized<double>(src.Lengths);
src.CopyTo(dst);  // 例外発生

// 修正後:stride = 0(正常)で動作

#125373 [wasm] Restore net472 multi-targeting for WasmAppBuilder; fix Type.IsFunctionPointer compile break

@Copilot・GitHub・area-Build-mono

WasmAppBuilder タスク プロジェクトの net472 マルチ ターゲットが PR #122007 で誤って削除されたことを復元し、CoreCLR PInvoke ジェネレータで .NET 7+ API の Type.IsFunctionPointer を直接使用することによるコンパイル エラーを修正します。Visual Studio などのフルフレームワーク MSBuild ホストでのビルドが必要です。

#125365 Simplify ILLink/ILC root assembly handling: TrimmerRootAssembly assembly names only

@Copilot・GitHub・area-AssemblyLoader-coreclrlinkable-framework

ILLink/ILC のルートアセンブリ指定をファイルパスからアセンブリ名のみに統一し、インクリメンタルビルドのギャップを解消します。従来、TrimmerRootAssembly と illink の -a フラグはファイルパスを受け入れていたため、ビルド入力として宣言されていないファイルをリンカーが読み込む可能性がありました。本変更により、MSBuild ターゲットと ILLink/ILC の動作を一貫させ、アセンブリ名(拡張子なし)のみを使用するようにします。

#125253 Fix RhpThrowImpl on ARM32

@eduardo-vp・GitHub・area-System.Diagnostics

ARM32プラットフォームのRhpThrowImpl関数で、例外スロー処理の際に呼び出し元保存レジスタの保存が不完全だった問題を修正しました。INLINE_GETTHREAD呼び出し前にr0だけでなくr2(例外種別を格納)も保存する必要があります。併せてARM上のスタックトレーステスト(ToString_Async)の隔離を解除しました。

#125161 [cDAC] Implement GetCurrentExceptionState on IXCLRDataTask

@barosiak・GitHub・area-Diagnostics-coreclr

cDAC(Common Data Access Component)のIXCLRDataTaskにGetCurrentExceptionStateメソッドを実装し、IXCLRDataExceptionState COM クラスであるClrDataExceptionStateを新規実装しました。Thread契約にGetCurrentExceptionHandleを追加して、アクティブな例外ハンドルを特定し、GetFlags、GetPrevious、GetString、GetTask、Requestなどのメソッドをネイティブ cDAC実装で提供します。レガシーDAC実装との互換性検証も含まれています。

#124863 Propagate BackgroundService exceptions from the host

@svick・GitHub・breaking-changearea-Extensions-Hosting

BackgroundServiceが例外で失敗しBackgroundServiceExceptionBehavior.StopHost(デフォルト)が設定されている場合、デフォルトホストのIHost.RunAsync()/StopAsync()から例外をスローするように変更しました。これにより、バックグラウンドサービスの失敗がホストレベルで適切に伝播され、終了コードに反映されるようになります。

#124326 Fix CallSiteFactoryResolvesIEnumerableOfOpenGenericServiceAfterResolvingClosedImplementation test for issue #57333

@Copilot・GitHub・area-Extensions-DependencyInjection

Issue #57333で報告された、閉じたジェネリック登録(IService<T> -> Impl)とオープンジェネリック登録(IService<> -> GenericImpl<>)を混合する際のGetServices<T>()の不一致な解決を検証するテストを修正しました。テスト自体にセットアップの問題があったもので、DI実装のバグではありません。

2026年03月12日 (21 PRs)うち Bot 1 件 この日のページ →

#125444 Fix crossgen2 crash on Apple mobile for InstantiatedType token resolution in async methods

@kotlarmilos・GitHub・area-crossgen2-coreclros-iosruntime-async

crossgen2がApple mobileプラットフォーム上で非同期メソッド内のジェネリック型インスタンス化(例:CallStruct1M0<T>)を参照する際に、InstantiatedTypeトークン解決が未対応でNotImplementedExceptionをスローするリグレッションを修正します。#124203で導入された問題への対応です。

#125429 [browser][CoreCLR] startup helpers cleanup

@pavelsavara・GitHub・arch-wasmarea-Hostos-browser

WebAssembly/ブラウザでのランタイム起動フローをリファクタリングし、可読性を向上させるものです。リソース集合の反復処理を簡潔にするヘルパー関数(forEachResource/normalizeCollection)を導入し、ライブラリ初期化ロジック(onRuntimeConfigLoaded/onRuntimeReady)をassets.tsに集約しました。

#125420 Enable devirtualization of async methods in crossgen2

@jtschuster・GitHub・area-crossgen2-coreclr

Crossgen2(ReadyToRun コンパイラ)での非同期仮想メソッドの非仮想化を有効にするPRです。従来の MetadataVirtualMethodAlgorithm では非同期メソッドの変種が考慮されていなかったため、R2R コンパイル時に非同期仮想メソッドの非仮想化ができませんでした。AsyncAwareVirtualMethodResolutionAlgorithm に切り替え、ILC の動作と統一します。

インターフェース経由のディスパッチでは、修正前は VIRTUAL_ENTRY による間接ディスパッチが発行されていましたが、修正後は非同期メソッドの変種を解決して直接呼び出しに最適化されます。

#125413 Prepare for xunit.v3.assert migration: forward-compatibility changes

@Copilot・GitHub・area-Infrastructurelinkable-framework

xUnit v3への将来的な移行に向けた前方互換性の改善です。EqualException.ForMismatchedValues()の呼び出しをすべてstring引数に統一し、xUnit v3では文字列引数のみをサポートする仕様に対応させました。また、xUnit v3固有のxUnit1051アナライザ警告を抑制する設定を追加しました。実際のパッケージ切り替えは行われていません。

#125407 Fix race condition leak in RegisterResumptionStub

@jtschuster・GitHub・area-VM-coreclr

RegisterResumptionStub内のレース条件によるメモリリークを修正しました。複数スレッドが同時にMethodDescを割り当てた場合、敗者のスレッドが割り当てたメモリが解放されずにリークしていました。SuppressRelease()呼び出しを挿入成功後に移動し、条件付きにすることで、敗者のAllocMemTrackerが確実にメモリを回収できるようにしました。

#125389 ref struct ASN.1 Decoder type generation

@vcsjones・GitHub・area-System.Security

ASN.1デコーダの型生成システムを拡張し、ref structベースのスパン指向デコーダ(Value*型)を既存のstructデコーダと並行して生成できるようにしました。これにより、PointerMemoryManagerの使用を廃止し、メモリ安全性を向上させます。XSLT生成ツールにemitType属性を追加し、struct/ref struct/両方の生成を制御できるようになりました。PublicKeyとCertificateRequestの実装をこの新しいValue*デコーダに移行し、実装の有効性を実証しています。

#125360 Fix clang -Walloc-size error in CloseHandle test by removing unused WriteBuffer

@Copilot・GitHub・area-PAL-coreclr

PALテストスイートのCloseHandleテストで、未使用で不正なサイズ割り当てをしていたWriteBuffer変数を削除しました。WriteBufferはLPDWORD(4バイト)型でしたが、malloc(sizeof(WORD))で2バイトしか割り当てられておらず、実際には使用されていなかったため、新しいclangの-Walloc-sizeエラーチェックで検出されていました。

#125353 Sync cDAC's RV64/LA64 implementations with ARM64

@am11・GitHub・area-Diagnostics-coreclrcommunity-contributionarch-loongarch64arch-riscv

RV64(RISC-V 64)およびLA64(LoongArch 64)アーキテクチャのcDAC(Compact DAC)実装をARM64の実装と同期させ、GCInfo処理、スタックウォーク、アンワインド機能を拡張するPullRequestです。両アーキテクチャのデバッグ・診断機能を強化し、ARM64と同等のサポートレベルを提供します。

#125220 Add SafeFileHandle.CreateAnonymousPipe with per-end async support, non-blocking I/O support, and Process.Windows adoption

@Copilot・GitHub・area-System.IObreaking-changeneeds-breaking-change-doc-created

新しい公開API SafeFileHandle.CreateAnonymousPipe(out readHandle, out writeHandle, asyncRead = false, asyncWrite = false) を導入し、Windows/Unix両プラットフォームで真のエンド単位の非同期I/Oセマンティクスを実現します。Windows側は名前付きパイプトリックを採用し、Unix側はO_NONBLOCKフラグで非ブロッキング状態を検出します。Process.Windows.csは新APIを採用し、標準ハンドルアクセスはConsole.OpenStandardInputHandle()等に移行しました。

SafeFileHandle.CreateAnonymousPipe(
    out SafeFileHandle readHandle,
    out SafeFileHandle writeHandle,
    asyncRead: true,
    asyncWrite: false);

#125198 Add TraverseEHInfo cDAC API

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Debugger Cooperative Access Contracts)に TraverseEHInfo API を追加し、例外処理情報(EHInfo)の走査機能を実装しました。同時に、catch-all ハンドラーの型判定バグを修正しています。従来は mdTypeRefNil との比較で判定していましたが、実際の catch-all ハンドラーは System.Object 型であるため、キャッシュされた System.Object メソッドテーブルとの比較に変更されました。

#125177 [clr-interp] Fix Swift error handling for marshaled P/Invokes in interpreter

@kotlarmilos・GitHub・os-iosarea-CodeGen-Interpreter-coreclr

Swift P/Invokeがマーシャリングを必要とする場合(例:ref SwiftError)、インタープリタがILスタブ経由で呼び出すときのSwiftエラーハンドリングの問題を修正しました。従来は二重のネイティブ遷移が発生し、x21レジスタ(Swiftエラー用)の値がExecuteInterpretedMethodによる保存/復元で上書きされるバグがありました。修正により、マーシャリング後のcalliでSwift呼び出し規約を正しく適用し、Swiftエラーレジスタを適切なネイティブ遷移時点でキャプチャするようにしました。

#125039 Fix missing big-endian conversions for multi-byte NTLM wire fields

@Copilot・GitHub・area-System.Net.Security

PR #124598でNTLM big-endianサポート実装時に見落とされた複数の多バイトフィールドのエンディアン変換を追加します。NTLM wire protocolはリトルエンディアンであり、big-endianアーキテクチャ上でMessageField.Length/MaximumLength、ChallengeMessage.Flags、AuthenticateMessage.Flags、NtChallengeResponse.Timeが正しくバイトスワップされていないため、wire formatが破損していました。

既に確立されているパターン(_payloadOffset、_productBuild、NegotiateMessage.Flags)を踏襲し、プライベートバッキングフィールド + エンディアン対応プロパティで統一します。

#125002 Streamline SystemIPGlobalProperties

@pentp・GitHub・area-System.Netcommunity-contribution

Windows上のSystemIPGlobalPropertiesのTCP/UDP列挙処理を最適化し、管理側のメモリ割り当てを削減します。GetExtendedTcpTable/GetExtendedUdpTableネイティブAPIを使用してネイティブ層でのフィルタリングを活用し、バイトスライシング解析から型付きspan列挙へ移行することで、複数の割り当てレイヤーを削減します。

#124959 Feature and ifdef FEATURE_MULTITHREADING

@pavelsavara・GitHub・arch-wasmarea-Infrastructure-librariesos-browser

このPRは、.NETランタイムのスレッド機能検出メカニズムをリファクタリングしています。複数のスレッド関連の機能フラグ(FEATURE_WASM_MANAGED_THREADSとFEATURE_SINGLE_THREADED)を、より一貫性のある単一のフラグFEATURE_IS_MULTITHREADING_SUPPORTEDに統一します。WebAssemblyターゲットを中心に、スレッド機能の有無を明確かつ統一的に表現する目的です。

2026年03月11日 (34 PRs)うち Bot 8 件 この日のページ →

#125443 Fix a regression to collection asserting in AssemblyChecker

@mrvoorhe・GitHub・linkable-frameworkcommunity-contributionarea-Tools-ILLink

PR #97605で導入されたToHashSet()とSetEquals()の使用により、ILLinkテストフレームワークのテストカバレッジが低下していた問題を修正します。これらのメソッドはコレクションの重複排除と順序の無視により、命令列の並び替えやメソッド本体の変更を検出できなくなっていました。本PRでは順序を考慮した比較に戻し、さらにKeptAttributeAttributeを拡張してコンストラクタ引数マッチングに対応させ、属性の重複排除による問題を解決します。

#125414 Update copilot-instructions with git confirmation and code-review skip rules

@AaronRobinsonMSFT・GitHub・area-Infrastructure

Copilot指示ファイルを更新し、2つの新しいルールを追加しました:

  1. Git確認ゲート:git commit --amendまたはgit push実行時に常にユーザー確認を求める(不可逆的なGit操作の無許可実行を防止)
  2. コードレビュースキップ:ユーザーが自分でレビューすると明示した場合、code-reviewスキルの呼び出しをスキップ(不要な自動レビュー実行を防止)

#125408 Fix TOCTOU race in AppDomain::LoadAssembly fast-path

@AaronRobinsonMSFT・GitHub・area-AssemblyLoader-coreclr

PR #120515でFileLoadLock::m_pAssemblyの遅延初期化が導入された際、AppDomain::LoadAssemblyの高速パスが更新されず、TOCTOU(Time-of-Check to Time-of-Use)競合状態が発生していました。別スレッドが読み取り間にアセンブリをロードすると、キャッシュされたnullptrがのちに参照され、0xC0000005アクセスバイオレーションでクラッシュしていました。本修正は、ロードレベルチェック後にアセンブリポインタを読み取るよう順序を修正し、スレッド間での安全な読み取りを保証します。

#125377 Implement async handle support on Unix for FileStream

@Copilot・GitHub・area-System.IO

UnixプラットフォームでFileStreamが非ブロッキング(O_NONBLOCK)ハンドルをサポートするようになりました。ネイティブ層にポーリング機能を追加し、パイプやソケットなどの非同期ハンドルをFileStreamでラップできるようになります。これまではUnixで非ブロッキングハンドルを使用するとArgumentExceptionが発生していました。

#125376 [wasm][coreclr] Fix vtable issue and interpreter I4/I8 arithmetic

@radekdoulik・GitHub・arch-wasmarea-VM-coreclr

WASM環境で発生していた2つの問題を修正:

  1. スタブベースメソッドのプリスタブ処理時にスタブのエントリポイントではなくメソッド自身のPortableEntryPointを使用し、MethodDesc-to-entrypointの1:1マッピングを保証
  2. 32ビットターゲットでI4/I8混合算術の拡張を有効化(conv.i8の結果をI4として扱う問題に対応)

#125354 Fix running native aot testing locally

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

NativeAOT テスト実行時にローカル環境で *.testResults.xml アーティファクトが生成されない問題を修正します。各テストプロジェクトを個別のマージドランナーとして扱う従来の方式から、単一の統合テストラッパープロジェクト(nativeaot.csproj)による統一的な管理に変更し、テスト結果の適切な生成を実現します。

#125348 Fix Directory_Delete_MountVolume test: guard Unmount calls with Directory.Exists check

@Copilot・GitHub・area-VM-coreclr

Windows NTFS ボリュームマウントポイント削除テストの間欠的な失敗を修正します。Directory.Delete がマウントポイントディレクトリを削除後、finally ブロック内の MountHelper.Unmount() 呼び出しが Win32 エラー 4390/3 をスローし、テスト失敗につながっていた問題を解決します。Scenarios 1, 2, 3.1, 3.2 の finally ブロックで、アンマウント前にディレクトリの存在確認を追加し、既に Scenarios 3.3–3.5 で使用されているパターンに統一します。

// Before
finally
{
    MountHelper.Unmount(mountedDirName);
    DeleteDir(mountedDirName, true);
}

// After
finally
{
    if (Directory.Exists(mountedDirName))
    {
        MountHelper.Unmount(mountedDirName);
        DeleteDir(mountedDirName, true);
    }
}

#125249 Mark Runtime_76219 GC regression test as CLRTestTargetUnsupported

@Copilot・GitHub・area-System.Runtime

macOS arm64上のGCストレステストでホストレベルのクラッシュ(SIGTRAP、終了コード133)が発生しているRuntime_76219テストを、プロジェクトレベルで無効化します。GCストレス設定(DOTNET_GCStress=0x3など)がxUnitの[ActiveIssue]スキップ判定前に適用されるため、<CLRTestTargetUnsupported>true</CLRTestTargetUnsupported>を追加して、テストの構築・実行そのものを防ぎます。

#125114 [LoongArch64] Enable Runtime Async. (issue#124935)

@LuckyXu-HF・GitHub・area-VM-coreclrcommunity-contributionarch-loongarch64runtime-async

LoongArch64アーキテクチャで非同期ランタイム機能を有効化するための実装です。ヒジャッキング処理で非同期継続レジスタを保持し、非同期再開時の情報をリードライトセクションに配置する変更が含まれます。FEATURE_REMAP_FUNCTIONがLoongArch64で有効化されていないため、関連する前の変更(PR #121672)をリバートしています。

#125090 [RyuJit Wasm] Fix Signature Generation Bug with Un-called methods

@adamperlin・GitHub・arch-wasmarea-crossgen2-coreclr

WebAssembly (WASM) コンパイルにおけるシグネチャ生成ロジックのバグを修正。PR #124685で導入されたWasmTypeNodeを使用したシグネチャ記録ロジックに対応するため、MethodWithGCInfoの静的依存性としてWasmTypeNodeを追加し、コンパイルされたすべてのメソッドに対して確実にシグネチャノードが生成されるようにしました。

#125072 JIT: Fix invalid IR and weights in if-conversion

@BoyBaykiller・GitHub・area-CodeGen-coreclrcommunity-contribution

JIT if-conversion機能の無効なIR生成とブロック重みの計算を修正するパッチです。return文を含むif/else パターンにおいて、CFG(制御フロー グラフ)の正確性を改善し、変換後のIRが無効な状態(RETURNブロックが後続ブロックを持つ)にならないようにしました。これにより、if-conversion が認識できるケースが増え、不要なjmp命令が削除されるようになります。

#125064 [cDAC] Implement GetContext and GetAppDomain on ClrDataFrame

@max-charlamb・GitHub・area-Diagnostics-coreclr

cDAC(Contracts-based Debugging And Code Analysis)のClrDataFrameにGetContextとGetAppDomainメソッドの実装を追加します。従来のネイティブ実装のみへの委譲から、マネージドのネイティブコントラクトベースの実装に移行し、ネイティブstack.cppの動作に統一します。新たにIXCLRDataAppDomainの実装ClrDataAppDomainをマネージドレイヤーに導入しています。

#124984 Align final section to file alignment, not to virtual image size

@jkoritzinsky・GitHub・area-NativeAOT-coreclr

PE ファイルの最終的なディスク上のサイズ計算を修正するプルリクエストです。出力ファイルを仮想イメージサイズ(SizeOfImage)ではなく、ファイルアラインメント(_peFileAlignment)に合わせてパディングするよう変更しており、自己完結型アプリケーションのサイズ回帰に対応しています。

#124939 [cDAC] Implement SOSDacImpl.GetRCWInterfaces

@Copilot・GitHub・area-Diagnostics-coreclr

cDAC(Core Dump Access Component)で Runtime Callable Wrapper(RCW)のキャッシュされたCOMインターフェースおよびCOMコンテキストクッキーを列挙するサポートを追加し、レガシISOSDacInterface.GetRCWInterfaces実装に統合しました。BuiltInCOMコントラクトAPIを使用してRCWインターフェースエントリキャッシュを処理し、HRESULT動作を例外経由で保持しています。

#124213 [LoongArch64] Place async resumption info in read-write section which reference #123433

@shushanhf・GitHub・area-CodeGen-coreclrcommunity-contributionarch-loongarch64

LoongArch64アーキテクチャにおいて、非同期再開情報(async resumption info)を読み取り専用セクション(read-only section)から読み取り・書き込みセクション(read-write section)に移動する変更です。これにより、#123433および#124213で報告された問題に対応します。

#124033 Remove duplicated SVE GatherVector APIs

@ylpoonlg・GitHub・area-System.Runtime.Intrinsicscommunity-contribution

SVE(Scalable Vector Extension)の GatherVector APIから重複したメソッドを削除しています。32ビット値は32ビットへの拡張が不要なため、UInt32 拡張メソッドが通常の GatherVector メソッドと重複していました。#103370 で Int32 拡張を削除済みでしたが、UInt32 拡張が残っていたため、今回その削除を完了します。

#123546 arm64: Remove widening casts before truncating

@jonathandavies-arm・GitHub・area-CodeGen-coreclrcommunity-contribution

ARM64アーキテクチャにおいて、不要なキャスト命令を削除する最適化を実装しました。拡大キャスト(widening cast)の後に縮小キャスト(truncating cast)が続く場合、中間の拡大キャスト命令を削除し、最終的な縮小キャスト命令のみを生成するようにしています。

例: (sbyte)(long)x は sxtb のみで済み、その前の sxtw が削除されます。

2026年03月10日 (23 PRs)うち Bot 1 件 この日のページ →

#125398 [Wasm RyuJIT] Move genHomeRegisterParams' output out of the prolog

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly RyuJIT でのレジスタパラメータの初期化コード生成をプロローグから最初の基本ブロックに移行する変更です。プロローグは単一の命令グループに制限されているため、WebAssembly では大量のコードが必要になる場合があり、その対応として Swift 構造体と同様の処理方式に変更しました。同時に未初期化の insGroup メンバーのバグも修正しています。

#125380 Run CI for all copilot/ PRs

@adamsitnik・GitHub・area-Infrastructure

CI/CD パイプラインの設定を変更し、copilot/*.* ブランチをターゲットとするPull Requestに対してもCI実行を有効化します。これにより、GitHub Copilotを使用した分割作業における依存PRでも、マージ前にコンパイルと動作確認のフィードバックが得られるようになります。

#125378 JIT: Fix patchpoint info out-of-bounds read for special OSR locals

@jakobbotsch・GitHub・area-CodeGen-coreclr

OSR(On-Stack Replacement)JITコンパイル中に、MonitorAcquiredやasync contextなどの特殊なOSRローカル変数がenregistered(レジスタに割り当て)された場合、tier0スタックオフセットの計算時にpatchpointのオフセットテーブルを不正にアクセスしていた。新たにCompiler::lvaOSRLocalTier0FrameOffsetヘルパーメソッドを導入して、特殊なOSRローカル変数を含めたtier0フレームオフセットの検索を一元化し、out-of-bounds読み取りを防止している。

#125362 JIT: Stop treating GT_LCLHEAP as inherently exceptional and remove dead StackOverflowException flag

@Copilot・GitHub・area-CodeGen-coreclr

このPRは、JIT コンパイラの GT_LCLHEAP(localloc命令)ノードの例外処理を簡素化するものです。従来は例外フラグ GTF_EXCEPT により自動的に例外を発生させる可能性があるものとして扱われていましたが、この変更により例外フラグの特別扱いを廃止し、明示的な例外処理のみに統一しました。また、使用されなくなった StackOverflowException フラグを削除しています。

#125361 Fix fatal sched_setaffinity EPERM failure during PAL initialization on restricted kernels

@Pietrodjaowjao・GitHub・area-PAL-coreclrcommunity-contribution

Android 13とカスタマイズされたカーネル5.10を搭載するデバイスで、PALスレッド初期化時のsched_setaffinity呼び出しがEPERMエラーで失敗し、coreclr_initializeが0x8007054Fエラーを返して初期化に失敗する問題を修正しました。EPERMとEACCESエラーを非致命的なものとして扱い、警告をログして処理を続行するようにしました。

// 修正前:EPERMでも致命的エラーとして処理
// 修正後:EPERMとEACCESは非致命的、他のエラーのみ致命的エラー

#125346 Use ValueAsnReader in more places where it is easy to do so

@vcsjones・GitHub・area-System.Security

ASN.1パース処理でヒープ割り当てを削減するため、複数の箇所でAsnReaderをValueAsnReader(スタックのみ)に置き換えました。X.509証明書、PKCS、ECC/RSA鍵形式パースなど、暗号スタック全体で7つのファイルを更新し、スパン型APIの活用によりメモリ効率を改善しています。

// 変更例: AsnReader → ValueAsnReader
// 従来: AsnReader reader = new AsnReader(bytes, AsnEncodingRules.DER);
// 新: ValueAsnReader reader = new ValueAsnReader(bytes, AsnEncodingRules.DER);

#125344 Read USTAR prefix field for PAX format entries in TarReader

@rzikm・GitHub・area-System.Formats.Tar

TarReaderでPAX形式のtarballを読み込む際、USTAR prefix fieldが正しく読み込まれていないバグを修正しました。macOS bsdtarが生成する長いシンボリックリンク対象を含むtarballで、ディレクトリプレフィックスが削除されていた問題を解決します。PAX形式はUSTARを拡張しており、同じヘッダレイアウト(prefixフィールド含む)を使用するため、PAX拡張属性ヘッダの後続エントリもReadUstarAttributesを呼び出す必要がありました。

#125331 JIT: Disallow op2 for mulx to be in edx

@jakobbotsch・GitHub・area-CodeGen-coreclr

mulx (AVX2 MultiplyNoFlags) 命令の LSRA レジスタ割り当て処理を修正しました。mulx は第1オペランドが edx に固定されていますが、codegen での移動命令の挿入を考慮して、第2オペランドが edx に割り当てられないよう制約を追加しました。これにより LSRA の理想化されたロケーションモデルと実際の codegen の動作を同期させます。

// mulx は以下のような形式が固定
// mulx edx:eax, op1(edx), op2
// op1 が別のレジスタにある場合、mov で edx に移動する際に
// op2 が edx に割り当てられていないことが必須

#125322 [browser][coreclr] Fix corerun to run in browser again

@radekdoulik・GitHub・arch-wasmarea-Infrastructure-coreclr

WebAssembly上で動作するcorerunをブラウザ環境で再度実行できるようにするための修正です。ES6モジュール形式(-sEXPORT_ES6=1 -sMODULARIZE=1)でビルドされたcorerun.jsがブラウザで正常に動作するよう、HTMLローダー、モジュールスコープの変数シャドウイング、Emscriptenのモジュール依存関係管理を修正しました。

#125308 Extract diagnostic reporting out of COM class generator

@DoctorKrolic・GitHub・area-System.Runtime.InteropServicescommunity-contribution

このPRは、COM クラス生成時の診断報告責任を ComClassGenerator から専用の Roslyn アナライザー ComClassGeneratorDiagnosticsAnalyzer に分離するリファクタリングです。ジェネレータは純粋なコード生成に専念し、診断報告はアナライザーインフラストラクチャ経由で行われるようになりました。これにより関心の分離が改善され、ジェネレータの責務が単純化されます。

// 変更前: ジェネレータが診断を報告
public static DiagnosticOr<ComClassInfo> TryGetFrom(...)
// 変更後: ジェネレータはnullableを返却
public static ComClassInfo? TryGetFrom(...)

#125243 Rework and simplify initial versioning and tiering rules

@davidwrighton・GitHub・area-VM-coreclr

このPRは、.NET Runtimeの初期バージョニングおよびティアリングルールの仕組みを大幅に簡素化したものです。呼び出し数カウント機構の無効化ステージを廃止し、JIT時の動的ロジックからEEConfig同期時の静的決定へ最適化ティアの決定を移行させることで、コード複雑性を削減しながら同等の機能を実現しています。

// 変更例:EEConfig::sync()で一度だけ最適化ティアを決定
// 従来のメソッドごとのJIT時ロジックから移行
TieredCompilation_DefaultTier = ComputeDefaultOptimizationTier();

#125176 [coreclr] Fix LoadLibraryInitializer test

@ilonatommy・GitHub・arch-wasmarea-Infrastructure-coreclros-browser

CoreCLR WASM ローダーのライブラリ初期化機能に関する複数の問題を修正しました。ローダーが onRuntimeConfigLoaded と onRuntimeReady コールバックに適切な引数を渡せていなかったほか、エラーハンドリングの問題を解決しています。テストの有効化と CoreCLR 専用テストケースの追加も含まれます。

#124424 Fix Ping RoundtripTime returning 0 for TtlExpired replies

@lufen・GitHub・area-System.Netcommunity-contribution

Ping操作がTtlExpiredまたはTimeExceededで終了した場合、RoundtripTimeが正しく取得されていなかった問題を修正しました。これまでは非Success状態のすべてのケースでRoundtripTimeが0に硬化されていましたが、今回の修正により、中間ルーターからの有効なラウンドトリップタイムをICMP_ECHO_REPLY構造体から読み取るようになりました。これによりWindows上の動作がUnixのraw socketの実装と一致するようになります。

#124203 Emit Async Methods in crossgen2

@jtschuster・GitHub・area-crossgen2-coreclrruntime-async

crossgen2でasync メソッドとその再開スタブ(resumption stub)をReadyToRun(R2R)イメージに直接エミットできるようにする機能追加です。async メソッドの署名にENCODE_METHOD_SIG_AsyncVariant (0x100)フラグを追加し、再開スタブはprecode fixupとしてエンコードされます。await を含まないasync メソッドは再開スタブが不要なため、エミットされません。

// async メソッドの署名にAsyncVariantフラグが追加される
// 従来: InstanceMethodテーブルに標準的なシグネチャ
// 変更: InstanceMethodテーブルにENCADE_METHOD_SIG_AsyncVariant フラグ付きで記録

2026年03月09日 (23 PRs)うち Bot 2 件 この日のページ →

#125340 Revert "Bump serialize-javascript and @rollup/plugin-terser in /src/native"

@akoeplinger・GitHub・area-NativeAOT-coreclr

PR #125230で行われたserialize-javascriptと@rollup/plugin-terserの依存関係バージョンアップをリバートするPRです。新しいバージョンではNode.jsのcryptoグローバルオブジェクトが必須となり、CI環境でのビルド失敗(ReferenceError: crypto is not defined)が発生していました。このリバートにより、以前の安定したバージョンに戻して問題を解決します。

#125310 Ensure DAC volatile globals included in mini dump

@rcj1・GitHub・area-Diagnostics-coreclr

DAC(Debug Access Component)のボラタイル グローバル変数(DEFINE_DACVAR_VOLATILEで宣言)がミニダンプに確実に含まれるよう修正しました。非ボラタイル グローバルDACVAR と同じく EnumMemCLRStatic 経由で包含されるようになり、g_pContinuationClassIfSubTypeCreated などcDAC向けの重要なグローバル変数がダンプに含まれるようになります。

#125307 Move NullableBool to Common with sbyte backing; replace scattered tri-state int/sbyte patterns

@Copilot・GitHub・area-Meta

.NETランタイム全体で散在する「遅延初期化キャッシュbool」パターンを統合し、共有のNullableBool : sbyte列挙型を導入するリファクタリングです。複数ライブラリのvolatile int/volatile sbyteを使った非標準の三値状態パターンとTextInfoの私有Tristate列挙型を置き換え、コード一貫性を向上させます。

// 新しい共有型
internal enum NullableBool : sbyte 
{ 
    Undefined = 0, 
    False = -1, 
    True = 1 
}

#125292 JIT: Clean up comments and remove redundancy in flowgraph.cpp

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラのflowgraph.cppファイルを対象とした、コメント整備とコード冗長性の削除作業です。複数の関数のヘッダーコメントを統一フォーマットで追加・更新し、タイポ修正とコード品質の向上を実施しています。パフォーマンスに直結する変更はありませんが、保守性の向上を目指しています。

#125278 [Wasm RyuJIT] Fix classifier embiggening small structs that are being passed-as a wasm primitive

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly (Wasm) RyuJIT コンパイラにおいて、小さな構造体(struct)がWasm プリミティブとして渡される際に、不正にサイズが拡大される問題を修正しました。この修正により、構造体の分類(classifier)ロジックが正確に動作し、パラメータ渡しの最適化が改善されます。

#125267 JIT: Disallow partial compilation of runtime async functions

@jakobbotsch・GitHub・area-CodeGen-coreclr

ランタイム非同期関数におけるTier0 Partial Compilation(部分コンパイル)を禁止する変更です。部分コンパイルがIR(中間表現)を削除することで、ランタイム非同期関数の生存期間分析(liveness analysis)が不正確になり、OSR(On-Stack Replacement)遷移後に必要な変数をキャプチャできなくなる問題を修正します。

#125262 Re-enable Manual_CertificateOnlySentWhenValid_Success for WinHttpHandler

@ManickaP・GitHub・area-System.Net.Http

WinHttpHandler の Manual_CertificateOnlySentWhenValid_Success テストを再度有効化するPRです。以前は issue #69238 で報告されたクライアント証明書送信時の断続的な失敗(WINHTTP_CALLBACK_STATUS_REQUEST_ERROR)を回避するため、スキップされていました。作成者が 20 回連続実行で 0 失敗を確認したため、skip ガードを削除してテストを復活させます。

#125261 Re-enable PlatformHandlerTest_Cookies_Http2 for WinHttpHandler

@ManickaP・GitHub・area-System.Net.Http

WinHttpHandler の HTTP/2 クッキー機能テスト (PlatformHandlerTest_Cookies_Http2) を再度有効化するPRです。以前は #if !WINHTTPHANDLER_TEST プリプロセッサガードで無効化されていましたが、このガードを削除して全プラットフォームハンドラーに統一したテストカバレッジを実現します。20回の連続実行で全テストが成功し、フレーキネス(不安定性)は観測されていません。

#125205 Refactor C# DIM resolution to match C++ structure and fix static virtual dispatch

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

このPRはNativeAOTの型システムにおけるDefault Interface Method (DIM)解決とstatic virtual メソッドディスパッチをC++ランタイム実装に合わせるリファクタリングです。static virtualメソッドのリファレンス型での処理バグを修正し、ILC Scannerのクラッシュを解決します。

// static virtualメソッドがクラスでも正常に動作するように修正
interface IStatic
{
    static virtual void M();
}

class Impl : IStatic
{
    public static void M() { }
}

#125163 SVE: Match, NoMatch

@dhartglassMSFT・GitHub・area-System.Runtime.Intrinsics

ARM64 SVE2アーキテクチャ向けのMatchおよびNoMatchイントリンシクを追加しました。これらは3つのベクトルパラメータ(マスク、左、右)を受け取り、条件付きで値を選択する操作です。対応型はsbyte、short、byte、ushortです。

public static unsafe Vector<T> Match(Vector<T> mask, Vector<T> left, Vector<T> right);   // MATCH命令
public static unsafe Vector<T> NoMatch(Vector<T> mask, Vector<T> left, Vector<T> right);  // NMATCH命令

#125153 [Wasm RyuJIT] Call signatures

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly (Wasm) RyuJIT コンパイラで正しいコール署名を生成することにより、有効なモジュール生成をサポートします。これにより、GC Write Barrier ヘルパーなどの関数呼び出しに対して、正確な型情報を含む call_indirect 命令が生成されるようになります。

#125141 JIT: Expand simple stfld addresses early and spill data nodes to retain evaluation order

@jakobbotsch・GitHub・area-CodeGen-coreclr

JITコンパイラのstfld(構造体フィールドストア)命令処理において、評価順序のバグを修正するPRです。従来はobj -> nullcheck(obj) -> data -> storeの順序で評価されていましたが、正しくはobj -> data -> nullcheck(obj) -> storeである必要があります。本修正では、(1)単純なフィールドアドレスの早期展開と、(2)必要に応じてデータノードのスピル処理を導入することで、評価順序を正しく保証します。

#125138 [wasm][coreclr] Fix call delegate with IL stubs

@radekdoulik・GitHub・arch-wasmarea-CodeGen-Interpreter-coreclr

WebAssembly環境でのインタープリタにおいて、オープン仮想デリゲートをインターフェースメソッド経由で呼び出す際のクラッシュを修正しました。インタープリタコードが未コンパイルの場合、fallback pathが不正なエントリーポイントをNonVirtualEntry2MethodDescに渡していたため、IsValid()アサーションで失敗していました。修正により、解決されたメソッドをDoPrestubで事前コンパイルしてからインタープリタコード確認を行うようにしました。

#125049 Disable AIA certificate downloads for server client-cert validation by default

@rzikm・GitHub・area-System.Net.Securitybreaking-changeneeds-breaking-change-doc-created

TLS ハンドシェイク時にサーバー側の SslStream インスタンスで Authority Information Access (AIA) 拡張を使用した中間証明書の自動ダウンロードをデフォルトで無効化する変更です。これにより、パフォーマンス低下と、クライアント指定エンドポイントへのアウトバウンド HTTP GET リクエストによるセキュリティリスクを軽減します。ユーザーが X509ChainPolicy を明示的に指定している場合は影響を受けません。

#124963 Cache boundary delimiter strings in MultipartContent

@cincuranet・GitHub・area-System.Net.Http

MultipartContentクラスのコンストラクタで境界デリミタ文字列(_startBoundaryと_endBoundary)をプリコンピュートしてキャッシュすることで、SerializeToStream、SerializeToStreamAsync、CreateContentReadStreamの呼び出し時における繰り返しの文字列連結を回避します。また、SerializeHeadersToStreamでの書き込み呼び出しを3回から2回に削減します。

#124818 Implement ISOSDacInterface::GetLoaderAllocatorHeapNames and GetLoaderAllocatorHeaps in cDAC SOSDacImpl

@Copilot・GitHub・area-Diagnostics-coreclr

このPRは、マネージドcDACでISOSDacInterface13.GetLoaderAllocatorHeapNamesとISOSDacInterface13.GetLoaderAllocatorHeapsを実装し、レガシーDAC委譲スタブを置き換えます。LoaderAllocatorとVirtualCallStubManagerのヒープ情報をネイティブデータディスクリプタから取得し、ディクショナリ形式で提供する機能です。診断ツールがランタイムのメモリ管理情報にアクセスするための重要な実装となります。

#124624 [X86][APX] Update the CPUID check logics for APX.

@Ruihan-Yin・GitHub・area-Infrastructurecommunity-contribution

Intel APX(Advanced Performance Extensions)命令セットの新しいCPUID判定ロジックを更新するPRです。Intel仕様書に記載された新たなAPX関連のCPUID ビット(APX_NDD_NCI_NF)を追加しています。ただし、このPRはCPUID ビットの導入のみで、JITの最適化動作に変更はなく、既存のAPX_Fビットが設定されていれば全機能が利用可能です。

#124561 Add FileHandleType enum and SafeFileHandle.Type property

@Copilot・GitHub・area-System.IO

System.IO.FileHandleType 列挙型と SafeFileHandle.Type プロパティを追加し、ファイルハンドルの種別(通常ファイル、パイプ、ソケット、キャラクターデバイス、ディレクトリ、シンボリックリンク、ブロックデバイス)を効率的に実行時に検出できるようにします。ハンドルの生存期間中に1回の syscall でキャッシュされるため、繰り返しのネイティブクエリが不要になります。

using SafeFileHandle handle = File.OpenHandle("file.txt", FileMode.Open);
FileHandleType type = handle.Type;  // FileHandleType.RegularFile(キャッシュ済み)

#122602 Implement SVE2 Counting APIs

@ylpoonlg・GitHub・area-System.Runtime.Intrinsicscommunity-contribution

Arm64 SVE2アーキテクチャ向けの新しいカウント系インストリクション「CountMatchingElements」と「CountMatchingElementsIn128BitSegments」を実装しました。これらのAPI(HISTCNT/HISTSEG命令に対応)により、ベクトル要素の条件マッチングとカウント処理が効率化されます。また、マスク付きターナリオペレーションテストテンプレートを改善し、異なる型サイズの演算をサポートするよう修正しました。

// 新しいSVE2 Counting APIs の例用法
public static Vector<uint> CountMatchingElements(Vector<T> left, Vector<T> right);
public static Vector<uint> CountMatchingElementsIn128BitSegments(Vector<T> left, Vector<T> right);

2026年03月08日 (4 PRs) この日のページ →

#124429 Add missing Invalidate() calls to FileInfo state-changing methods

@lufen・GitHub・area-System.IOcommunity-contribution

FileInfo のファイルシステム状態を変更するメソッド(Open、Replace、Encrypt、Decrypt、CreateAsHardLink など)に対して、キャッシュされたプロパティ(Exists、Length、タイムスタンプ)を無効化する Invalidate() 呼び出しを追加しました。これにより、ファイルシステムの変更後にこれらのプロパティが次のアクセス時に正しく更新されるようになります。既に正しく動作している Create()、Delete()、MoveTo() と同じパターンに統一します。

#123348 Fix interpreting baud rate bitmask as decimal value

@mrek-msft・GitHub・community-contributionarea-System.IO.Ports

Windows シリアルポートドライバから取得するボーレート最大値(dwMaxBaud)が、ビットマスク形式ではなく10進数値で返されるケースに対応しました。Silicon Labs USB to UART コンバータなどのドライバが10進数を返す場合、従来は検証エラーが発生していました。新しいヘルパーメソッド ConvertMaxBaudBitMaskToBaudRate を追加し、ビットマスクと10進数の両形式に対応するようになりました。

#107369 Binary writer fix

@koszeggy・GitHub・area-System.IOcommunity-contribution

.NET 6.0で導入されたBinaryWriter.Write(string)の最適化により、派生クラスの仮想メソッド呼び出しがバイパスされる問題を修正しています。短いUTF-8文字列の最適化時にGetType() == typeof(BinaryWriter)チェックを追加し、派生クラスでのメソッドディスパッチを確保します。

2026年03月07日 (8 PRs) この日のページ →

#125286 Fix GetModule_ReturnsModule test failure on browser-wasm

@lewing・GitHub・area-NativeAOT-coreclr

browser-wasm環境でのテスト失敗を修正するPRです。PR #125080で追加されたelse分岐が!HasAssemblyFilesをNativeAOTのみの条件と想定していましたが、browser-wasmもAssembly.Locationが空のため同じ条件を満たすことが原因でした。NativeAOTとwasm環境を別々に処理するよう条件分岐を分割し、各環境の異なるModule.Nameの挙動に対応させています。

#125285 Revert "Eliminate forwarder stubs by reusing method precodes for call counting indirection"

@agocke・GitHub・area-VM-coreclr

PR #124664で導入された最適化がNuGetリストア性能で12-13%の回帰を引き起こしたため、この変更を元に戻すリバートです。問題はThePreStub内のRtlEnterCriticalSectionで過度な時間が消費されていたことが原因です。この変更により、仮エントリーポイントの再利用からコール計数用の専用フォワーダースタブへ戻すことで、パフォーマンスを回復させます。

#125282 Fix interpreter async suspend DiagnosticIP calculation

@davidwrighton・GitHub・area-CodeGen-Interpreter-coreclr

インタープリタの非同期サスペンド処理において、DiagnosticIPが絶対アドレスとして保存されていた問題を修正しました。DiagnosticIPはオフセット値として保存し、FinalizeMethodData時に最終的なバイトコードベースアドレスを加算することで、他のフィールド(methodStartIPなど)と同じ方式に統一しました。これにより、Apple mobileでのAsync例外処理テストにおけるクラッシュが解決されます。

#125259 Replace MemoryBarrier with Volatile operations in HashMap

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

dotnet/runtimeのHashMap実装(hash.cpp)において、フルメモリバリア(MemoryBarrier())を、より効率的なボラタイル操作(VolatileLoad/VolatileStore)に置き換えました。フルフェンス(ARM64のdmb ish、x86のmfence)は単方向の順序付けが必要な場合に過度にコストがかかるため、release/acquireセマンティクスを使い分けることで、キャッシュコヒーレンシを損なわずにパフォーマンスを改善します。

#125254 Implement ValueAsnReader

@vcsjones・GitHub・area-System.Security

ValueAsnReaderという新しい公開API をSystem.Formats.Asn1パッケージに実装し、既存の内部用AsnValueReaderを段階的に置き換えています。このPRは2つのコミットで構成されており、新しいAPIの実装・テストと、既存のASN関連の自動生成ファイルの更新を行っています。完全な置き換えは今後のフォローアップPRで実施予定です。

// 新しいValueAsnReaderの使用例(推定)
ValueAsnReader reader = new ValueAsnReader(data, AsnEncodingRules.DER);
// 既存のAsnValueReaderから移行

#124940 Implement cDAC API GetCCWInterfaces

@Copilot・GitHub・area-Diagnostics-coreclr

cDAC(Common Data Access API)のGetCCWInterfaces API を実装し、COM Callable Wrapper(CCW)が公開するCOMインターフェースの検査を可能にしました。レガシーDAC実装に依存せず、ランタイムデータディスクリプタから直接CCWチェーン内のインターフェースを列挙できるようになります。

// COM インターフェースポインタから ComCallWrapper を解決
public TargetPointer GetCCWFromInterfacePointer(TargetPointer interfacePointer);

// ComCallWrapper チェーン内の COM インターフェースを列挙
public IEnumerable<COMInterfacePointerData> GetCCWInterfaces(TargetPointer ccw);

#124832 Vectorize custom polynomial CRC-32 and CRC-64

@bartonjs・GitHub・area-System.IO.Hashing

System.IO.Hashing内のCRC-32およびCRC-64の計算処理をベクトル化することで、パフォーマンスを向上させました。UpdateVectorizedで128ビット単位のデータを処理し、残りをUpdateScalarで処理する2段階アプローチを採用。カスタムポリノミアル対応のテストケースも追加されています。

2026年03月06日 (22 PRs) この日のページ →

#125258 Remove some unnecessary EventSource suppressions

@agocke・GitHub・area-System.Diagnostics.Tracing

EventSource型に付与されたDynamicallyAccessedMembersAttributeによる不要なトリム解析抑制を削除するため、マニフェスト生成や属性リフレクションのヘルパーメソッドをネストされたプライベート型EventSourceHelpersに移動しました。これにより、NativeAOTでの保持されるメタデータ量を削減し、抑制アノテーションの必要性を排除します。

// 変更前: EventSourceに直接メソッドがあり、DAM属性により抑制が必要
// 変更後: ネストされた型に移動して反射可視性から除外
private static class EventSourceHelpers
{
    public static Guid GetGuid(Type eventSourceType) { ... }
    public static string GetName(Type eventSourceType) { ... }
    // CreateManifestAndDescriptors, GetCustomAttributeHelperもここに移動
}

#125242 Remove obsolete ILLink dependency analyzer project and references

@Copilot・GitHub・linkable-frameworkarea-Tools-ILLink

このPRは、dotnet/runtimeリポジトリから未使用のILLink dependency analyzerプロジェクトを削除し、それに関連するすべてのビルド設定、ソリューション定義、ドキュメント参照をクリーンアップします。ILLinkツールセットを実装メンテナンス対象コンポーネントのみに整理するための整理PRです。

#125236 [cDAC] Relax HRESULT validation to allow divergent failure codes

@max-charlamb・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Component)のDEBUGバリデーションにおいて、cDACとレガシーDAC間のHRESULT比較を緩和します。従来は完全一致を要求していましたが、今後は両者が異なるエラーコード(負の値)を返す場合でも許容し、デバッガプロセスのクラッシュを回避します。成功コード(S_OK、S_FALSE)は引き続き完全一致を要求します。

// 変更前
Debug.Assert(hrLocal == hr, $"cDAC: {hr:x}, DAC: {hrLocal:x}");

// 変更後
Debug.ValidateHResult(hr, hrLocal);

#125235 Fix bounds checks in #123085 repro

@EgorBo・GitHub・area-CodeGen-coreclr

JITコンパイラの範囲チェック最適化における境界チェックのバグを修正しました。(X + negativeConst) u< Y形式の符号なし比較式で、負の定数を含む場合の推論ロジックを改善し、X >= -negativeConstという制約を正しく推導できるようになりました。

#125232 [Tests][UserEvents] Bump tracee timeout and add logs

@mdh1418・GitHub・area-Tracing-coreclr

ユーザーイベントトレーシングテストのタイムアウト値を5秒から10秒に延長し、デバッグログを追加するテスト修正です。JITストレステストレーンで実行中にタイムアウトが発生していた問題に対応しています。record-traceがどのプロセスの.NETイベントを有効化したか、またTraceeプロセスがEventSourceで待機・受信したかをログに記録することで、テスト失敗時のデバッグを改善しています。

#125225 Fix getAsyncOtherVariant JIT-EE implementation in VM

@jakobbotsch・GitHub・area-CodeGen-coreclrruntime-async

このPRは、getAsyncOtherVariant JIT-EE実装において、ペアになった非同期バリアントが存在しないメソッド(AsyncHelpers.Awaitなど)に対して無効な呼び出しが発生する問題を修正します。EnableExtraSuperPmiQueriesモードで両方のバリアントをプロアクティブにクエリする際に問題が発生していました。また、SuperPMI実装の記録処理も簡素化されています。

// HasAsyncOtherVariant() で保護
if (pMethodDesc->HasAsyncOtherVariant())
{
    CORINFO_METHOD_HANDLE otherVariant = pMethodDesc->GetAsyncOtherVariant();
    // 処理
}

#125214 JIT: Handle some def/use conflicts less conservatively in LSRA

@jakobbotsch・GitHub・area-CodeGen-coreclr

LSRA (Linear Scan Register Allocator) における def-use conflict の解決ロジックを改善しました。特に case 1 と case 2 の条件判定が過度に保守的だったため、defRegConflict と useRegConflict 変数の意味を正確に復元し、より効率的なレジスタ割り当てが可能になります。これにより、不要なスピリングやコピーが減少し、生成されるコードの品質が向上します。

#125201 Fix NTLM ProcessTargetInfo returning wrong buffer slice when skipping entries

@Copilot・GitHub・area-System.Net.Security

管理型NTLM認証のProcessTargetInfoメソッドにおいて、サーバーチャレンジにTargetNameまたはChannelBindings AV pairが含まれる場合、バッファスライスのオフセット指定が誤りで未使用部分(ゼロ詰め)を返していた。単一文字の修正で、正しい書き込み済み部分を返すよう改正。

// Before
return targetInfoBuffer.AsSpan(targetInfoOffset).ToArray();

// After
return targetInfoBuffer.AsSpan(0, targetInfoOffset).ToArray();

#125132 [cDAC] Add custom marshallers for COM interface parameters

@max-charlamb・GitHub・area-Diagnostics-coreclr

COM相互運用性のためのカスタムマーシャラーをcDAC(Common Data Access Component)に追加しています。特にDacComNullableByRefという新しいマーシャラーを実装し、COM インターフェース パラメータの正確なマーシャリングを改善しました。複数のISOSDacInterfaceおよびIXCLRDataインターフェース実装において、パラメータ方向と型情報の定義を更新しています。

#125092 Remove resolved ActiveIssue(#14378) skip attributes from IO.FileSystem tests

@Copilot・GitHub・area-System.IO

Issue #14378が解決されたにもかかわらず、System.IO.FileSystemテストで6つのテストメソッドが[ActiveIssue]属性で永遠にスキップされていました。このPRでは、これらのスキップ属性を削除し、テストを再度有効化します。マウントボリュームテストはNTFSドライブでのみ実行され、not-readyドライブテストはプラットフォーム固有の条件付きスキップに変更されています。

#125089 Skip cross process mutex on OpenBSD

@sethjackson・GitHub・area-System.Threadingcommunity-contributionos-openbsd

OpenBSDではクロスプロセスミューテックスに必要なPOSIX関数(pthread_mutexattr_setrobust、pthread_mutexattr_setpshared、pthread_mutex_consistent)がサポートされていないため、OpenBSD環境ではクロスプロセスミューテックス機能をスキップする対応を実施しました。これにより、OpenBsdでのPlatformNotSupportedExceptionを適切に処理するようにしています。

#124918 [cDAC] Add continuation support to RuntimeTypeSystem

@max-charlamb・GitHub・area-Diagnostics-coreclr

このPRはcDAC (Common Data Access Component) の RuntimeTypeSystem コントラクトに continuation サポートを追加します。非同期 continuation 機能で動的に作成される MethodTable を識別・検証できるようになります。continuation は配列やジェネリック型と同様に特殊な MethodTable であり、基本 Continuation クラスを親として持つため、既存の MT→EEClass→MT 検証ラウンドトリップでは拒否されていました。

// IsContinuation を使用して continuation MethodTable を識別
if (runtimeTypeSystem.IsContinuation(typeHandle))
{
    // continuation MethodTable の特殊な処理
}

#124854 Convert priority 3 MethodDescCallSite calls to UnmanagedCallersOnly

@steveisok・GitHub・area-VM-coreclr

MethodDescCallSiteを使用したネイティブからマネージド呼び出しを、UnmanagedCallersOnly属性を使用したリバースP/Invoke呼び出しに変換する優先度3の第1次変更セットです。AppDomain.RaiseExitProcessEvent、AppDomain.OnUnhandledException、RunManagedStartup、ReflectionTypeLoadException/TargetInvocationExceptionコンストラクタなど6つの呼び出しサイトが対象です。

#124720 Expose HTTP.sys kernel response buffering control for HttpListener on Windows

@karimsalem1・GitHub・area-System.Net.Httpnew-api-needs-documentationcommunity-contribution

HttpListener(Windows実装)でHTTP.sys カーネルレスポンスバッファリングを制御するopt-in AppContext スイッチを追加しました。有効化すると、HttpSendHttpResponse と HttpSendResponseEntityBody の呼び出しに HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA フラグが設定されます。小バッファサイズでの応答送信時のレイテンシを最大30倍削減します。

AppContext.SetSwitch("System.Net.HttpListener.EnableKernelResponseBuffering", true);
using var listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8080/");
listener.Start();

#124555 Remove Windows 7 support code from System.Net.Security

@Copilot・GitHub・area-System.Net

Windows 7のサポート終了に伴い、System.Net.Securityから Win7固有のコード経路とバージョン判定ロジックを削除するメンテナンスPRです。IsWindowsVersionAtLeast(6, 2)ガード、Win7関連のコメント、デッドコードを削除し、プロダクトコードとテストコード両方をクリーンアップします。

2026年03月05日 (19 PRs)うち Bot 1 件 この日のページ →

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

@Copilot・GitHub・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()

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

@Copilot・GitHub・area-Infrastructure

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

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

@agocke・GitHub・area-System.Threading

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

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

@AndyAyersMS・GitHub・area-CodeGen-coreclr

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

#125183 Adjustments to how compiler generated types are ignored.

@mrvoorhe・GitHub・linkable-frameworkcommunity-contributionarea-Tools-ILLink

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

#125172 SVE: truncate Extract results for small types

@a74nh・GitHub・area-CodeGen-coreclrcommunity-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型

#125156 Add visit budget checks to IsMonotonicallyIncreasing and ComputeDoesOverflow

@Copilot・GitHub・area-CodeGen-coreclr

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

#125154 Add gap fill yaml for gap fill tool

@DrewScoggins・GitHub・area-Infrastructure

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

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

@SingleAccretion・GitHub・arch-wasmarea-CodeGen-coreclrcommunity-contribution

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

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

@radekdoulik・GitHub・arch-wasmarea-Infrastructure-coreclr

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

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

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

@BrzVlad・GitHub・area-GC-mono

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

#125029 Add RecommendedReaderVersion advisory mechanism to cDAC RuntimeInfo contract

@noahfalk・GitHub・area-Diagnostics-coreclr

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

主な追加内容:

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

#124244 Reduce custom operator behavior in the Volatile<T> structure

@davidwrighton・GitHub・area-PAL-coreclr

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

Bot PRs (1 PRs)

2026年03月04日 (22 PRs)うち Bot 1 件 この日のページ →

#125170 Disable ProxySetViaEnvironmentVariable_DefaultProxyCredentialsUsed on macOS

@rzikm・GitHub・Servicing-approvedarea-System.Net.Http

macOS 14 でテスト ProxySetViaEnvironmentVariable_DefaultProxyCredentialsUsed がクラッシュ(SIGABRT、終了コード 134)する問題に対応。Apple の GSS フレームワーク内の二重解放バグにより、SPNEGO/Negotiate 認証コンテキストのクリーンアップ時にクラッシュするため、macOS でこのテストをスキップするよう修正。

[SkipOnPlatform(TestPlatforms.OSX)]  // 追加された属性
public void ProxySetViaEnvironmentVariable_DefaultProxyCredentialsUsed()
{
    // テストコード...
}

#125165 Use a platform-neutral name for Microsoft.DiaSymReader.Native

@MichalStrehovsky・GitHub・area-crossgen2-coreclr

Microsoft.DiaSymReader.Native DLLの命名方式をプラットフォーム非依存の名前に変更するPRです。従来の Microsoft.DiaSymReader.Native.(x86|x64|arm64).dll という形式から、プラットフォーム別のサフィックスを削除することで、dotnet/dotnetのリブートストラッピングビルド時にランタイムパック内の同名DLLとの衝突問題を解決します。

#125123 Fix locating files in GetCommonSourceFiles

@mrvoorhe・GitHub・linkable-frameworkcommunity-contributionarea-Tools-ILLink

ILLink テストフレームワークの GetCommonSourceFiles メソッドが、設定可能な _testCase.RootCasesDirectory に依存していた問題を修正しました。Unity など外部プロジェクトが異なるテストケースディレクトリを使用する場合に、ファイル解決に失敗する問題を解決しています。修正により、既知のテストフレームワークディレクトリから相対パスを計算するようになり、GetCommonSourceFiles をメソッドにしました。

#125100 More flowgraph cleanup

@AndyAyersMS・GitHub・area-CodeGen-coreclr

このPull Requestは、.NET RuntimeのJIT(Just-In-Time)コンパイラのフローグラフ関連コード(fg*.cppファイル群)をクリーンアップするものです。主な変更は、すべてのメソッドにヘッダーコメントを追加し、式のコンテキスト以外の/* */形式のコメントを削除して、コードの可読性と保守性を向上させることを目的としています。

#125088 Add initial cross-build support for OpenBSD

@am11・GitHub・area-Infrastructureos-openbsd

OpenBSD への初期クロスビルド対応を追加するPRです。ビルドシステムの構成ファイルと CMake ツールチェーンを更新し、OpenBSD を新しいターゲットプラットフォームとして認識・サポートするための基盤を整備しました。ランタイム識別子(RID)の定義、rootfs ビルドスクリプト、プラットフォーム固有の構成が追加されています。

#125080 Fix native AOT test failures in System.Reflection.Context tests

@Copilot・GitHub・area-System.Reflection

PR #123026で追加されたSystem.Reflection.Contextテストの native AOT 互換性を修正しました。Native AOT 環境で非対応のリフレクション API を呼び出すテストに対して、[ConditionalFact]属性とPlatformDetection述語を使用して条件付きスキップを適用しています。メソッドボディ、メタデータトークン、native AOT非対応 API などのカテゴリごとに適切なガードを適用しました。

#125056 Improve range analysis for checked bounds in GlobalAP

@EgorBo・GitHub・area-CodeGen-coreclr

JITのグローバル解析(GlobalAP)における範囲解析を改善するPull Requestです。チェック付きの境界条件に対して、より精密な範囲情報を推論できるようにしました。例えば、if ((uint)i < span.Length) のブロック内では、i の有効範囲が [0..int.MaxValue-1] であることを正確に認識できるようになります。

#125028 JIT: Lower aggressiveRefCnt minimum threshold for CSE promotion

@Copilot・GitHub・area-CodeGen-coreclr

JIT コンパイラの CSE (Common Subexpression Elimination) プロモーション戦略において、aggressiveRefCnt の最小値の閾値を BB_UNITY_WEIGHT * 2 (200) から BB_UNITY_WEIGHT / 2 (50) に引き下げました。これにより、レジスタ圧力が低いメソッド(追跡対象の整数ローカル変数が少ないメソッド)でも、より積極的な CSE の最適化が適用され、有益な共通部分式除去が促進されます。

#124977 Fix JIT assert resolving to C runtime assert after jitshared introduction

@Copilot・GitHub・area-CodeGen-coreclr

PR #123830で導入されたjitshared/ディレクトリの後、JITおよびインタープリタコード内のassertマクロが意図せずC言語ランタイムのassertに解決され、カスタムハンドラのassertAbortの代わりにダイアログポップアップを表示していた問題を修正します。新しい共有ヘッダjitassert.hを導入し、JITとインタープリタ間で統一されたassert定義を提供します。

#124966 docs: document that ServiceProvider.Dispose() throws for async-only disposables, recommend DisposeAsync()

@Copilot・GitHub・area-Extensions-DependencyInjection

ServiceProvider.Dispose() が async-only disposables(IAsyncDisposable のみを実装するサービス)を含む場合に InvalidOperationException をスローすることをドキュメント化しました。従来は /// <inheritdoc /> で曖昧だったため、開発者が予期しない例外に遭遇するリスクがありました。本変更により、同期破棄時の制限を明示し、DisposeAsync() の使用を推奨するようになります。

#124804 Add AVX512 BMM API

@alexcovington・GitHub・area-CodeGen-coreclrcommunity-contribution

AVX512 BMM(Bit Matrix Multiply)APIを.NETランタイムに新規実装します。Avx512BmmクラスをSystem.Runtime.Intrinsics.X86に追加し、ビット反転(ReverseBits)と16×16ビット行列乗算(BitMultiplyMatrix16x16WithOrReduction/WithXorReduction)の操作をVector128/256/512サイズで提供します。これらはAVX512 BMM命令セットをサポートするプロセッサで高速に実行されます。

// 例:ビット反転
Vector512<byte> result = Avx512Bmm.ReverseBits(input);

// 例:16×16ビット行列乗算(OR還元)
Vector512<ushort> result = Avx512Bmm.BitMultiplyMatrix16x16WithOrReduction(addend, left, right);

#124674 Add cDAC tests and implementation for GetGenerationTable and GetFinalizationFillPointers

@noahfalk・GitHub・area-Diagnostics-coreclr

ISOSDacInterface8の4つのメソッド(GetGenerationTable、GetGenerationTableSvr、GetFinalizationFillPointers、GetFinalizationFillPointersSvr)をcDAC SOSDacImplに実装しました。テストインフラとして、TestPlaceholderTarget.Builderという流暢なビルダーパターンを導入し、GCHeapBuilder経由でGCモックデータを設定できるようにしました。同時に、Unix環境でのライブラリロード、HRESULT変数シャドーイング、Release/Debugビルドでのスタックウォーク不具合など、複数の既存の問題を修正しました。

#124558 Add tests for Volatile.ReadBarrier and Volatile.WriteBarrier

@Copilot・GitHub・area-System.Threading

.NET 10で導入されたVolatile.ReadBarrier()とVolatile.WriteBarrier()メソッドにテストカバレッジを追加するPRです。これらのメソッドはWebAssemblyで実装されておらず、スタックオーバーフロー例外を引き起こしていました(PR #124538で修正済み)。本PRでは、これらのメソッドが正常に動作することを確保するための包括的なテストを追加します。

#124421 Update copilot testing instructions

@noahfalk・GitHub・area-Infrastructure

このPRは、.NET runtimeのCopilot AI アシスタントを使用したテスト作成時のガイダンスを改善するものです。リグレッションテスト作成中にエージェント(Copilot)が遭遇した問題を解決するため、Copilot向けの指示を更新し、EventPipeトレーシング関連のテストドキュメントを充実させています。

#124331 Detect circular dependencies in factory-based service registrations at runtime

@Copilot・GitHub・area-Extensions-DependencyInjection

ファクトリ関数を使用したサービス登録時の循環依存関係によるデッドロック(issue #88390)を修正するPull Requestです。CallSiteRuntimeResolverに再入検出機構を実装し、同じロックの再帰的な獲得を防ぐため、循環依存を検出時に例外をスローするようにしました。

// 修正前:デッドロックが発生
services.ConfigureOptions<ConfigureApplicationInsightsServiceOptions>();
services.AddApplicationInsightsTelemetry();

// 修正後:循環依存検出時に InvalidOperationException をスロー

#123360 Align HttpListener.GetContext() exception across platforms for Stop/Abort/Close

@Copilot・GitHub・area-System.Net

HttpListener.GetContext()をStop()、Abort()、Close()後に呼び出した際、WindowsではHttpListenerException(ErrorCode = 995: SocketError.OperationAborted)が発生していましたが、LinuxではErrorCode = 500: HttpStatusCode.InternalServerErrorが発生していました。このPRはLinuxの動作をWindowsに統一し、クロスプラットフォーム対応コードの一貫性を確保します。

2026年03月03日 (38 PRs)うち Bot 1 件 この日のページ →

#125120 Revert "[HTTP] Small comment"

@ManickaP・GitHub・area-System.Net.Http

PR #125106で追加されたHTTP関連のコメント変更をRevertするPRです。HttpMessageInvokerクラスの_handlerフィールド上の内部コメント(2行)を削除し、ファイルを以前の状態に戻します。ドキュメンテーションのみの変更の取り消しです。

#125112 Fix Copilot not working in forks

@martincostello・GitHub・area-Infrastructurecommunity-contribution

Copilotのセットアップワークフローがリポジトリフォークで動作しない問題を修正しています。プライベートランナーラベル 8-core-ubuntu-latest は dotnet 組織内でのみ利用可能なため、フォークではこれを使用できません。フォークに対しては公開ランナー ubuntu-latest にフォールバックする条件付きランナー選択を実装することで対応します。

#125082 Fix incorrect excludeAgent identifier in copilot-instructions.md

@Copilot・GitHub・area-Infrastructure

.github/copilot-instructions.mdのfrontmatterにあるexcludeAgent識別子を修正するPull Requestです。誤ったcode-review-agentを正しいcode-reviewに変更することで、Copilot code-reviewスキルに対する指示の除外が正しく機能するようになります。

// 変更前
// excludeAgent: code-review-agent

// 変更後
// excludeAgent: code-review

#125078 [Wasm RyuJIT] Block Stores follow-ups

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

このPRは、先行するPR #124846(Wasm RyuJIT Block Stores機能)に対するフォローアップであり、未解決のコメント対応を行っています。主にJIT コンパイラのコード生成ロジック、レジスタアロケーション、および型定義の調整が含まれており、WebAssembly プラットフォーム向けの最適化を継続して改善しています。

#125068 Fix variable shadowing bug in DacFreeRegionEnumerator::AddServerRegions

@Copilot・GitHub・area-Diagnostics-coreclr

DacFreeRegionEnumerator::AddServerRegionsで発生していた変数シャドウイングバグを修正しました。内側のループで外側のヒープインデックス変数iが再利用されており、その後のAddSegmentList呼び出しで誤ったパラメータが渡されていました。内側のループ変数をkindに変更することで、すべてのAddSegmentList呼び出しが正しいヒープインデックスを参照するようになります。

// 修正内容: 内側のループ変数を i -> kind に変更
// 修正前: AddSegmentList(..., i) // i は count_free_region_kinds の値
// 修正後: AddSegmentList(..., i) // i は正しいヒープインデックス

#125067 Fix max_slots in DacHandleTableMemoryEnumerator::Init() to use g_totalCpuCount

@Copilot・GitHub・area-Diagnostics-coreclr

PR #124875でDacHandleWalker::WalkHandles()に適用された修正が、DacHandleTableMemoryEnumerator::Init()に漏れていたため、本PRで同一の修正を適用。CPU数 ≠ ヒープ数の環境(DATAS)でハンドルテーブルメモリ列挙が不完全になる問題を解決します。GC DACマイナーバージョン8以上ではg_totalCpuCountを、それ以下ではGCHeapCount()をフォールバックとして使用。

#125062 [wasm][coreclr] Disable tests which need native relinking in Pri1

@radekdoulik・GitHub・arch-wasmarea-Infrastructure-coreclr

WASM ターゲット上で native relinking が必要な Priority-1 JIT HFA(Homogeneous Float Aggregate)テストを無効化するもの。40個のテスト .csproj ファイルに CLRTestTargetUnsupported 条件を追加し、WASM ビルドでのテスト実行をスキップする。これにより、relinking 処理の遅延を回避し、テスト実行時間を短縮する。

#125055 Use SetValueTruncating instead of SetIconValue

@EgorBo・GitHub・area-CodeGen-coreclr

JITコンパイラの定数折り畳み処理におけるバグを修正しました。符号拡張された定数(例:-0xFFFFFFFF80000000)を否定する際に不正な定数が生成される問題を、SetIconValueをSetValueTruncatingに変更することで解決しています。また、MinOptsモード時の最適化実行を制限しています。

// 修正内容の例
// 変更前: SetIconValue(negatedValue)
// 変更後: SetValueTruncating(negatedValue)
// これにより、TYP_LONG以外のノードで正確な切り詰め動作が保証される

#125045 JIT: Fix late devirtualization debug info for inlining

@jakobbotsch・GitHub・area-CodeGen-coreclr

JITコンパイラのレイト デバーチャライゼーション処理において、インライン化時のデバッグ情報が正しく伝播されていない問題を修正しました。LateDevirtualizationInfoにILLocationフィールドを追加し、impCurStmtDIから設定することで、レイト デバーチャライゼーション中に生成される新しいステートメントが適切なデバッグ情報を保持するようになります。

#125032 Fix DuplicateRootAssembly assert failure

@sbomer・GitHub・linkable-frameworkarea-Tools-ILLink

IL リンカー(illink)の Debug.Assert エラーを修正するPRです。同じアセンブリが異なるパスで複数回指定された場合(例:test.exe と ../input/test.exe)のアサーション失敗を解決し、同時に異なる複数のアセンブリが entrypoint ルートモードで指定された場合に新しい診断エラー IL1048 を発行するようにしました。

// 修正前:同じアセンブリの重複指定でアサーション失敗
Debug.Assert(entry_assembly is null);

// 修正後:同じ AssemblyDefinition オブジェクトなら許容
// 異なるアセンブリの場合は IL1048 エラーを発行

#125009 cDAC: implement GetSyncBlockCleanupData

@Copilot・GitHub・area-Diagnostics-coreclr

このPRは、cDAC(Contracts Data for Diagnostics)におけるGetSyncBlockCleanupDataとGetSyncBlockDataAPIの実装を行います。クリーンアップリスト上のオブジェクトは有効な管理オブジェクトではない可能性があるため、COMデータはオブジェクトヘッダーを経由せず、同期ブロックポインタから直接読み込まれます。また、従来のC++実装におけるaddr=0時の仕様違反も修正されています。

#124971 Pass MessageOrigin to the DoAdditional*Processing methods.

@mrvoorhe・GitHub・linkable-frameworkcommunity-contributionarea-Tools-ILLink

ILLink の MarkStep クラスで、DoAdditional*Processing メソッドに MessageOrigin パラメータを追加するための変更です。これにより、サブクラスが追加マーク処理を実行する際に、診断情報の出所(origin)を追跡できるようになり、より詳細なエラー報告が可能になります。

// 変更前
protected virtual void DoAdditionalProcessing() { }

// 変更後
protected virtual void DoAdditionalProcessing(MessageOrigin origin) { }

#124943 Add metric usage diff to SPMI reports

@EgorBo・GitHub・area-CodeGen-coreclr

SPMI(SuperPMI)レポートにメトリック使用量の差分表示機能を追加しました。コンパイラのメトリクス出力を拡張し、ビルド前後の差分をレポートに統合することで、JITコンパイラの最適化による影響をより詳細に追跡できるようになります。

#124938 Implement TraverseRCWCleanupList cDAC API

@Copilot・GitHub・area-Diagnostics-coreclr

このPRは、debuggerが契約ベースのDAC(Data Access Component)パスを通じてRCW(Runtime Callable Wrapper)クリーンアップリストエントリを列挙できるようにするTraverseRCWCleanupList cDAC APIを実装しています。C++側でデータディスクリプタを公開し、C#側でBuiltInCOM契約レイヤーを追加して、RCWのマーシャリング型デコーディングと同期ビットのマスキングを実現しています。

#124927 [clr-interp] Add reverse P/Invoke support for the Swift calling convention to the CoreCLR interpreter on arm64

@kotlarmilos・GitHub・os-iosarea-CodeGen-Interpreter-coreclr

CoreCLR インタープリタに arm64 Apple プラットフォーム向けの Swift 呼び出し規約の逆 P/Invoke サポートを追加します。SwiftSelf、SwiftError、SwiftIndirectResult などの特殊レジスタ処理、引数の書き換え、戻り値処理に対応し、Swift マネージドコールバックをインタープリタ下で正しく動作させます。

#124921 Convert PREPARE_SIMPLE_VIRTUAL_CALLSITE usages to use the UCO pattern

@jkoritzinsky・GitHub・area-VM-coreclr

このPRは、仮想呼び出しサイト準備マクロ PREPARE_SIMPLE_VIRTUAL_CALLSITE の使用法を UCO(Unmanaged Code Object)パターンに統一するリファクタリングです。マクロ自体は使用されなくなったため削除されています。これは .NET ランタイムの内部実装をより一貫性のある設計パターンへ移行させるための変更です。

#124919 [Tests][UserEvents] Improve test timing and re-enable tests

@mdh1418・GitHub・area-Tracing-coreclr

ユーザーイベントトレーシングテストの不安定性を修正し、テストを再有効化するPRです。3つの独立した根本原因を特定し解決しています:(1) イベント生成とトレース設定の競合状態を回避するため、遅延を200msから700msに増加、(2) クロスプロセスのイベント混在を防ぐためProcessIDフィルタリングを追加、(3) 診断ポート削除時の権限エラーをハンドルするよう例外処理を追加。2コアシステムで500回連続実行テストで100%成功率を達成しました。

#124880 [Wasm RyuJit] annotate (some) local accesses with var nums

@AndyAyersMS・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly RyuJit コンパイラでローカル変数へのアクセスに変数番号(var nums)のアノテーションを追加する変更です。シャドウスタックにスピルされたローカル変数に対して、ネイティブダンプで見られるような追加のアノテーション情報を付与し、デバッグ情報の充実を図ります。

#124868 [wasm][coreclr] Improve method portable entrypoints lifecycle

@radekdoulik・GitHub・arch-wasmarea-VM-coreclr

WebAssembly(WASM)環境で動的メソッドがファイナライズされ再利用される際に、ポータブルエントリポイント(Portable Entrypoint)に古いインタプリタコードへのダングリングポインタが残される問題を修正します。インタプリタコードポインタをクリアする箇所でポータブルエントリポイントもリセットし、メモリ安全性を確保します。

#124815 Implement ISOSDacInterface::GetJitManagerList in cDAC SOSDacImpl

@Copilot・GitHub・area-Diagnostics-coreclr

このPRは、cDAC SOSDacImpl に ISOSDacInterface::GetJitManagerList インターフェースの実装を追加するものです。JIT マネージャーの一覧取得機能をデータコントラクトアーキテクチャ(cDAC)経由で診断ツールが利用できるようになります。ExecutionManager契約に新しいメソッドを追加し、16個の新規ユニットテストを含めて173個の ExecutionManager テストが合格しています。

#124631 Remove Debug.Assert in SetSslCertificate that aborts process during dispose-during-handshake race

@Copilot・GitHub・area-System.Net.Security

AuthenticateAsServerAsyncとDispose()の競合状態中に、証明書/キーのSafeHandleが無効化される前にSetSslCertificateに到達する場合がある問題を修正します。Debug.AssertがプロセスをSIGABRTで強制終了させるのではなく、p/invokeマーシャラーがObjectDisposedExceptionを投げることを意図しています。

#124114 JIT: Accelerate uint->floating casts on pre-AVX-512 x86

@saucecontrol・GitHub・area-CodeGen-coreclrcommunity-contributionavx512

uint から浮動小数点への型変換(uint→float/double)をx86プラットフォーム上でヘルパー関数呼び出しなしで高速化するPull Requestです。AVX-512以前のx86では、32ビット変換用のネイティブ命令がないため、SSE命令を組み合わせた変換シーケンスを使用して、ヘルパー呼び出しのオーバーヘッドを排除します。典型的には、関数呼び出しの代わりにSSE命令(vcvtsi2sd、vaddsd、vcvtpd2psなど)で処理し、コード生成の簡潔化と若干の性能改善を実現します。

#123146 JIT: Normalize optimizations for ConditionalSelect and BlendVariable

@saucecontrol・GitHub・area-CodeGen-coreclrcommunity-contribution

JIT コンパイラの x86/x64 アーキテクチャにおいて、ConditionalSelect と BlendVariable SIMD 操作の最適化を統一化しました。定数マスク時のフォーディング、ベクトル定数をマスク定数に変換する最適化、EVEX 組み込みゼロの活用、およびゼロとのブレンドを AND/ANDN 命令に最適化することで、生成コードサイズと実行効率が向上します。

2026年03月02日 (35 PRs)うち Bot 8 件 この日のページ →

#125044 JIT: Fix reordering of inlinee return expression with async save/restore

@jakobbotsch・GitHub・area-CodeGen-coreclr

JIT インライニング時に非同期コンテキストの保存/復元が必要な場合、インリー関数の戻り値式の評価順序が誤ってコンテキスト復元後に移動され、AsyncLocal のセマンティクスが変更される回帰バグを修正しました。戻り値式がコンテキスト復元前に評価されるよう、インリー関数の戻り値をスピルする一時変数の生成ロジックを拡張しています。

#125036 Add guidelines for RequiresProcessIsolation in tests

@Copilot・GitHub・area-Host

CoreCLR テストプロジェクトで <RequiresProcessIsolation>true</RequiresProcessIsolation> を設定する必要がある場合のガイドラインドキュメントを追加しました。プロジェクトファイルのトリガー(環境変数、ランタイムホスト設定、トリミング、ネイティブ依存関係)とソースコードのトリガー(Environment.Exit、プロセス全体のGC操作、collectible ALC、カスタム Main など)をカバーする28個のルールで構成されています。

#125034 Add guidelines for RequiresProcessIsolation in tests

@MichalStrehovsky・GitHub・area-System.Diagnostics.Process

CoreCLR テストプロジェクトにおいて RequiresProcessIsolation 属性をいつ設定するかについてのガイドラインドキュメントを追加しました。プロジェクトプロパティとソースコードパターンに基づいた具体的なルールと設定トリガーを文書化しており、テスト開発者が適切にプロセス分離要件を判断できるようになります。

#125027 Array stack iterators

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラのArrayStackコンテナにrange-based iteratorサポートを追加する変更です。BottomUpOrder()とTopDownOrder()というイテラブルビューを導入し、複数の最適化フェーズでインデックスベースのループをrange-forループに置き換え、コード可読性を向上させ、繰り返しのインデックスアクセス処理を削減します。

// 変更前
for (unsigned i = 0; i < stack.Height(); i++)
{
    process(stack[i]);
}

// 変更後
for (auto item : stack.BottomUpOrder())
{
    process(item);
}

#125007 Disable superpmi tests on Mono

@Copilot・GitHub・os-linuxarea-Infrastructure-mono

Mono AOT ビルドで SuperPMI テストのサブスクリプトに対して「No merged runner found」エラーが発生する問題を修正しています。SuperPMI は CoreCLR 専用のツールであり Mono プラットフォームでは不要なため、superpmicollect.csproj に MonoAotIncompatible マーカーを追加し、Mono LLVM AOT パイプラインから SuperPMI テストツリーを除外しました。

#124989 Fix StreamPipeReader.CopyToAsync not advancing past buffered data

@BrennanConroy・GitHub・bugarea-System.IO.Pipelines

StreamPipeReader.CopyToAsync メソッドにおいて、バッファリングされたデータを正常に処理した後、読み取り位置を適切に進めない不具合を修正しました。ドレイン成功時にセグメントループが終了してsegmentがnullになるため、finally ブロックで AdvanceTo が呼ばれず、バッファリングデータが _readHead/_readIndex に残存して、後続の読み取りで重複返却される問題を解決します。

#124986 [cDAC] Fix NonVirtualEntry2MethodDesc to handle invalid precode addresses

@max-charlamb・GitHub・area-Diagnostics-coreclr

cDAC(Contract-based DAC)のNonVirtualEntry2MethodDescメソッドが、precodeのメモリ範囲内にあるが無効なアドレスに対してInvalidOperationExceptionをスローしていた問題を修正しました。ネイティブDAC実装と同じ動作(NULLを返す)に統一することで、!clru コマンドがIL stubで正常に動作するようになります。

#124972 Clean up SkipUnresolved handling in linker test framework.

@mrvoorhe・GitHub・linkable-frameworkcommunity-contributionarea-Tools-ILLink

ILLinkテストフレームワークのSkipUnresolved設定を整理する変更です。テストフレームワークのデフォルト値がILLink本体と一致していなかったため、デフォルト値をfalseからtrueに修正し、AddSkipUnresolvedメソッドが常に明示的な値をlinker引数に出力するようにしました。これにより、SkipUnresolved=falseを明示的に指定したテストが確実にその値で実行されるようになります。

#124969 [browser][coreCLR] throttling + WBT

@pavelsavara・GitHub・arch-wasmarea-Hostos-browser

WebAssembly(WASM)ブラウザ環境でのアセット読み込みにスロットリング機能を実装し、全ファイルタイプに対して有効化しました。アセット優先度の管理機能を追加し、onDownloadedAsset()がエラー時にもカウントされるよう修正しています。また、WebCIL名の修正も含まれています。

#124915 Cleanup basic block

@AndyAyersMS・GitHub・area-CodeGen-coreclr

BasicBlockクラスの公開フィールドをカプセル化し、関連するクリーンアップを実施。JITコンパイラのコア部分における設計改善で、27個のファイルにわたって直接フィールドアクセスをプロパティやメソッド経由に変更。

#124883 Drop RequiresProcessIsolation from Loader tests

@MichalStrehovsky・GitHub・area-TypeSystem-coreclr

Loader テストスイートから不要な RequiresProcessIsolation 属性を削除するプルリクエストです。AI(Opus 4.6)により RequiresProcessIsolation が必要なケースの判定ルールを確立し、それに基づいてLoader ツリーの不要な属性を削除。その後、ビルドとテスト実行結果により削除の妥当性を検証しています。

#124846 [Wasm RyuJIT] Block Stores pt. 2

@kg・GitHub・arch-wasmarea-CodeGen-coreclr

WebAssembly RyuJIT コンパイラの Block Stores(ブロック転送命令)機能を実装するパート2。genCodeForCpObj の実装、stackifier の NIY シナリオ修正、メモリ操作の最適化により、参照を含む構造体のコピーコンパイルが可能に。ただしライトバリア呼び出し時にクラッシュする既知の問題あり。

// 参照を含む構造体コピー(ライトバリア実装待ち)
static unsafe void copyStructWithRefs(ref S2 a, ref S2 b) {
    a = b;
}

// スタック上へのコピーは正常に動作
static unsafe void loadStructWithRefs(ref S2 src) {
    S2 local = src;
}

#124836 Convert IDacDbiInterface to return HRESULT to fix cross-DSO exception handling on mobile platforms

@steveisok・GitHub・area-Diagnostics-coreclr

モバイルプラットフォームでのクロスDSO例外処理の問題を修正するため、IDacDbiInterfaceの119個の非HRESULTメソッドをすべてHRESULT返却方式に変換しました。DAC側で例外をキャッチしてHRESULTに変換することで、C++例外がDAC→DBI境界を越えることを完全に排除します。

// 変更前
void IDacDbiInterface::GetThreadContext(CORDB_ADDRESS address, void* context);

// 変更後
HRESULT IDacDbiInterface::GetThreadContext(CORDB_ADDRESS address, void* context);

#124834 Convert exception-related MethodDescCallSite calls to UnmanagedCallersOnly

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

例外処理コードパスにおいて、非効率なMethodDescCallSite/CallDescrWorker呼び出しをより効率的なUnmanagedCallersOnly逆P/Invoke呼び出しに置き換えるPRです。excep.cpp内の6つの呼び出しサイト(GetExceptionMessage、ExceptionPreserveStackTrace、WrapNonCompliantException等)がUnmanagedCallersOnlyCallerパターンに変換され、マネージコード側に[UnmanagedCallersOnly]属性付きの静的ラッパーメソッドが追加されます。

#124808 Add an api-proposal Copilot skill

@eiriktsarpalis・GitHub・area-skills

dotnet/runtime リポジトリにおいて、API提案のプロトタイピングと草案作成を自動化する api-proposal Copilot スキルを追加しました。このスキルは、Framework Design Guidelines の確認、プロトタイプ実装、テスト、リファレンスアセンブリ生成、提案ドキュメント作成といった7段階のパイプラインを自動化し、API提案の手探り的な実験作業を削減します。

#124663 Add blittable color types Argb<T> and Rgba<T> to System.Numerics.Vectors

@ViveliDuCh・GitHub・area-System.Numerics

System.Numerics.Vectorsに新しいblittable色型Argb<T>とRgba<T>を追加します。これらのジェネリック構造体は、色データをメモリ効率的に表現し、System.Drawing.Primitivesとの統合をサポートします。実装はSystem.Private.CoreLibに配置され、System.Numerics.Vectorsがファサード層として機能する設計になっています。

// 使用例
var argb = new Argb<byte>(255, 128, 64, 32); // ARGB値
var rgba = new Rgba<byte>(128, 64, 32, 255); // RGBA値

#124566 Replace string.Compare == 0 patterns with Equals/StartsWith/AsSpan calls

@Copilot・GitHub・area-Meta

このPRは、string.Compare(...) == 0 パターンを Equals、StartsWith、EndsWith、AsSpan().Equals() などのより慣用的で読みやすいメソッドに置き換えています。約34ファイルにわたり、冗長な比較パターンを簡潔化し、コード品質を向上させます。

// 置き換え例
// 変更前
if (string.Compare(a, b, StringComparison.OrdinalIgnoreCase) == 0) { }

// 変更後
if (string.Equals(a, b, StringComparison.OrdinalIgnoreCase)) { }

// StartsWith の置き換え例
// 変更前
if (string.Compare(header, 0, "Basic ", 0, 6, StringComparison.Ordinal) == 0) { }

// 変更後
if (header.StartsWith("Basic ", StringComparison.Ordinal)) { }

#124125 Fix WASM boot config ContentRoot to use IntermediateOutputPath

@lewing・GitHub・arch-wasmarea-Metaos-browser

.NET 11のリグレッションを修正し、Blazor WASM増分ビルド時のSRI整合性検証失敗を解決するPRです。Boot configのContentRootを$(OutDir)wwwrootから$(IntermediateOutputPath)に変更し、WebCilアセットの各項目に対してContentRoot="%(RootDir)%(Directory)"を設定することで、ビルド時と発行時のアセットIdentityが実際のファイルパスを正確に指すようにします。

// 修正例:Per-item ContentRoot設定
<ItemGroup>
  <_WebCilAssetsCandidates 
    ContentRoot="%(RootDir)%(Directory)" 
    Include="..." />
</ItemGroup>

#123251 [clr-interp] Support for breakpoints and stepping

@matouskozak・GitHub・area-Diagnostics-coreclr

CoreCLR インタープリターにデバッガサポートを追加するPRです。IDEのブレークポイント設定とシングルステップ(ステップイン/オーバー/アウト)機能をインタープリター実行環境で実装しました。新しい INTOP_BREAKPOINT と INTOP_DEBUG_SEQ_POINT オペコードを導入し、インタープリター用の実行制御ロジックを拡張しています。

#122485 [RISC-V] Enable instruction printing for the Generate code phase in JIT dumps

@SkyShield・GitHub・area-CodeGen-coreclrcommunity-contributionarch-riscv

RISC-V JIT コンパイラのPHASE Generate codeフェーズで命令印字機能を有効化しました。JitDump設定時に、生成されるRISC-V命令が JIT ダンプ出力に表示されるようになり、デバッグの利便性が向上します。例えばfneg.d fa0, fs6やjalr ra, ??(ra)といった命令が出力されます。

2026年03月01日 (6 PRs) この日のページ →

#125021 Skip NonBacktracking deep nesting test on single-threaded WASM

@lewing・GitHub・area-System.Text.RegularExpressions

WASM等のマルチスレッド非対応プラットフォームで、NonBacktracking正規表現エンジンの深いネスト構造テストが失敗する問題を修正しています。テストを[ConditionalTheory]に変更し、マルチスレッド非対応環境ではNonBacktrackingエンジンのみをスキップするガード処理を追加することで、他のエンジン(Interpreter、Compiled)は引き続き全プラットフォームで実行されます。

#125014 Fix browser-targeting builds: move declare global from public-api.ts to export-api.ts

@Copilot・GitHub・arch-wasmarea-System.Runtime.InteropServices.JavaScript

Browser/WASM向けのビルドがrollup-plugin-dts v6.2.3とrollup 4.59.0の組み合わせで失敗する問題を修正しました。public-api.ts内のdeclare global {}ブロックがrollupによって誤ってエクスポート対象として扱われ、"global"が実在しない変数として検出されるのが原因です。修正によりdeclare global {}をrollupのエントリーポイントであるexport-api.tsに移動することで、エクスポート検証に引っかからないようにしました。

#125001 Update EncodingTable to use ConcurrentDictionary for performance

@Copilot・GitHub・area-System.Globalization

System.Text.Encoding.CodePagesのEncodingTable.csで、Dictionary + ReaderWriterLockSlimによる複雑なロック機構をConcurrentDictionaryに置き換えました。読み取り時の高速パスでロック取得が不要になり、パフォーマンスが向上します。既にSystem.Private.CoreLibで使用されているパターンに統一しました。

#124997 Reduce lock contention in socket on Windows

@Copilot・GitHub・area-System.Net.Sockets

Windows上のソケット非同期操作において、DynamicWinsockMethods.GetMethods()が全呼び出しで同じグローバルロックを獲得していたロック競合を削減。List<T> + lock(s_methodTable)をvolatile配列を使用したロックフリーな読み取りパスに置き換え、テーブルが完全に満たされた後の不要なシリアライズを除去。

// 変更前:すべてのsocket操作で単一ロック上でシリアライズ
lock (s_methodTable) { /* linear scan + possible add */ }

// 変更後:読み取りはロックフリー、書き込みはコピーオンライト
foreach (DynamicWinsockMethods methods in s_methodTable)   // volatile読み取り、ロック不要
    if (methods.Matches(...)) return methods;
return GetMethodsSlow(...);                                  // キャッシュミス時のみロック取得

#124850 [WBT] enable coreCLR

@pavelsavara・GitHub・arch-wasmarea-Infrastructure-coreclros-browser

このPRはWebAssembly(WASM)ブラウザテストスイートにおいてcoreCLRサポートを有効化するための変更です。主な内容は、WasmBrowserRunMainOnlyの削除、ネイティブテストカテゴリの追加、CoreCLR実行時のdotnet.diagnostics.jsの常時期待、ネイティブトレイトの無効化、およびAOTテストの分離です。

#124408 Fix TypeLoadException in GetMarshalAs when SafeArray has zero-length user-defined type name

@Copilot・GitHub・area-Interop-coreclr

MetadataImport.GetMarshalAsで、SafeArrayに長さ0のユーザー定義型名がある場合にメモリ範囲外のデータを読み込んでTypeLoadExceptionが発生する回帰バグを修正します。tlibimpが生成するCOM相互運用アセンブリで発生していました。修正は、ネイティブ側でバイト長を提供してマネージド側で正確に読み込むように改善し、FCCallをQCallに変更して安全性を向上させています。

目次