2026年04月のダイジェスト

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

← アーカイブ一覧へ戻る

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

696
PR 数(Total)
505
PR 数(Community)
147
PR 数(AI Agent)
44
PR 数(Bot)
119
ラベルタイプ数
29
更新日数

日別 Pull Request 数

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

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

ラベル別 Pull Request 数の上位10 上位10件の合計485件を100%とした内訳です。各スライスの番号は凡例の番号に対応します。ラベルごとの件数は凡例を参照してください。 1. area-CodeGen-coreclr — 91 PRs (18.8%) 2. community-contribution — 79 PRs (16.3%) 3. area-Diagnostics-coreclr — 60 PRs (12.4%) 4. Servicing-approved — 50 PRs (10.3%) 5. area-Infrastructure — 45 PRs (9.3%) 6. arch-wasm — 43 PRs (8.9%) 7. area-VM-coreclr — 37 PRs (7.6%) 8. area-Diagnostics-cdac — 31 PRs (6.4%) 9. area-NativeAOT-coreclr — 25 PRs (5.2%) 10. area-codeflow — 24 PRs (4.9%)
  1. area-CodeGen-coreclr91 PRs18.8%
  2. community-contribution79 PRs16.3%
  3. area-Diagnostics-coreclr60 PRs12.4%
  4. Servicing-approved50 PRs10.3%
  5. area-Infrastructure45 PRs9.3%
  6. arch-wasm43 PRs8.9%
  7. area-VM-coreclr37 PRs7.6%
  8. area-Diagnostics-cdac31 PRs6.4%
  9. area-NativeAOT-coreclr25 PRs5.2%
  10. area-codeflow24 PRs4.9%
上位10件で全1017件中485件(47.7%)を占めます。ラベルは1つの Pull Request に複数付くため、比率は PR 数ではなくラベル付与の延べ数に対するものです。

各 Pull Request の概要

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

2026年04月30日 (25 PRs)うち Bot 1 件 この日のページ →

#127612 Change unique stack trace GC flag from 0xF to 0x10

@jtschuster・GitHub・area-GC-coreclr

CoreCLR JIT/GC ストレステスト調査ドキュメントにおいて、「ユニーク スタック トレース」GC ストレスフラグ値を誤った 0xF から正しい 0x10 に修正しました。これにより、ドキュメントと実装の gcenv.h で定義されている GCSTRESS_UNIQUE = 16 (0x10) の値が一致するようになります。

#127597 Remove ApplicationContext::GetApplicationName()

@Copilot・GitHub・area-VM-coreclr

.NETランタイムのバインダーコンポーネントから、呼び出されていない不要なコード(ApplicationContext::GetApplicationName()メソッドと関連フィールド)を削除するメンテナンス変更です。これらは宣言・定義されていながら、バインダー内のどこからも呼び出されていないデッドコードでした。

#127595 Improve GCHeap::Promote debug validation

@jkotas・GitHub・area-GC-coreclr

GCのデバッグ検証を強化するPRです。x86プラットフォームでのGCルート報告の穴を塞ぎ、GCHeap::Promoteにおけるデバッグ時の検証を改善しています。オブジェクトポインタがfind_objectブックキーピング範囲外にある場合でも、インテリアポインタでないルートについてCObjectHeader::Validate()を呼び出すことで、メモリ破損の問題をより確定的に再現・診断できるようにしています。

#127592 Fix interpreter breakpoint to pass fIsVEH=FALSE to FirstChanceNativeException

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

Windows x64デバッグにおいて、CET対応ハードウェア上でInterpreterブレークポイントを使用する際のクラッシュを修正します。Interpreterブレークポイントは合成的なソフトウェアコールバックであり、ベクター例外ハンドラー(VEH)コールバックではないため、fIsVEH=FALSEをFirstChanceNativeExceptionに渡すことで、不要なSendSetThreadContextNeededの発火を防ぎます。

#127591 Remove corert#2785 BadImageFormatException workaround from ILCompiler

@Copilot・GitHub・area-NativeAOT-coreclr

ILCompiler の入力ファイル読み込み時に BadImageFormatException を黙って飲み込む長年のハック(corert#2785 対応)を削除し、直接的な割り当てに置き換えています。このワークアラウンドは CoreCLR テストツリーにネイティブ DLL が混在するシナリオに対応していましたが、現在はそのシナリオが存在しないため不要になっています。

typeSystemContext.InputFilePaths = _command.Result.GetValue(_command.InputFilePaths);

#127567 Add JSONL serialization support to System.Text.Json

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

System.Text.Jsonに4つの新しい公開APIを追加し、IAsyncEnumerable<TValue>をJSON Lines (JSONL)形式で直接シリアル化できるようにします。topLevelValuesパラメータをtrueに設定することで、従来のJSON配列形式(デフォルト)の代わりにJSONL形式(\n区切りの行形式)で出力できます。既存のDeserializeAsyncEnumerableと同じAPIパターンを採用しています。

// 例: JSONL形式でシリアル化
public static Task SerializeAsyncEnumerable<TValue>(
    Stream utf8Json, IAsyncEnumerable<TValue> value,
    bool topLevelValues = false, JsonSerializerOptions? options = null,
    CancellationToken cancellationToken = default);

#127561 [cDAC] Use locally-built crossgen2 for dump test debuggees

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

cDAC dump テストのデバッギー アプリケーションが、SDK バンドルの crossgen2 ではなく、ローカルでビルドした crossgen2 を使用して ReadyToRun (R2R) コンパイルされるようにします。ランタイム更新時に型が削除または変更されると、SDK の crossgen2 が存在しない型を参照する R2R サンクを出力し、TypeLoadException または実行時の null グローバルを引き起こすという問題を解決します。

#127533 JIT: VN-level (a-x)+x and a-(a-x) folds

@EgorBo・GitHub・area-CodeGen-coreclr

JITのValue Numbering (VN) レベルで2つの代数的恒等式を追加し、整数型の最適化を強化しています。

  • (a - x) + x == a(及び可換バリアント)
  • a - (a - x) == x

これらは非オーバーフロー整数型に対してのみ適用され、VN等価性の検出と下流の最適化を可能にします。

#127532 Fix Wasm ArgIterator SizeOfArgStack for methods with only hidden args

@davidwrighton・GitHub・area-crossgen2-coreclr

Wasm32環境のArgIterator.ForceSigWalk()メソッドに関連する2つのバグを修正しました。名前付き引数がなく隠し引数(this、retbuf、ジェネリックコンテキストなど)のみが存在するメソッドで、引数スタックサイズの計算に誤りがあり、GCRefMapBuilderが0長度のフェイクスタックを生成してIndexOutOfRangeExceptionが発生していた問題を解決しています。

#127479 Update skip_reason to clarify cancelled leg scenario

@Copilot・GitHub・area-skills

CI パイプラインモニタリングスクリプトの skip_reason メッセージを改善し、テスト結果がゼロの場合の原因をより明確にしました。最も一般的な原因であるキャンセルされたレグ(cancelled leg)を明示することで、トリアージとレポーティングの効率化を図っています。

#127419 cDAC: Add GetGCDescSeries contract API and continuation pretty-printing

@Copilot・GitHub・area-Diagnostics-cdac

cDAC(Compact Diagnostic Access Component)の RuntimeTypeSystem コントラクトに新しい GetGCDescSeries API を追加し、GC ポインタ実行情報を列挙できるようにしました。これにより、動的に作成された continuation 型の pretty-printing が可能になり、WebApp3 テスト失敗の修正につながります。オプションの numComponents パラメータで配列型に対応し、通常の GCDesc 配置と value-class 繰り返し配置の両方をサポートします。

#127412 [Wasm RyuJIT]: Fix LIR Semantics in Stackifier Output

@adamperlin・GitHub・area-CodeGen-coreclr

Wasm RyuJIT スタックファイアの LIR セマンティクス修正。スタック化処理中に導入された一時変数が、同じルートツリー内で過度に早く解放・再利用されることで無効な LIR が生成される問題を修正しました。

修正前は、NOMOVE操作を含む複雑な式の処理時に、一時変数がルートツリーの全オペランド処理前に解放され、後で再利用されると store/read の順序が反転する問題が発生していました。修正後は、全ルートツリーの処理完了まで一時変数の解放を遅延させることで、一時変数間の干渉を防止します。

#127384 Update OSR docs for recent changes

@jakobbotsch・GitHub・area-CodeGen-coreclr

On-Stack Replacement(OSR)機能に関する設計ドキュメントと実装コメントを、最近の仕様変更に合わせて更新するPRです。パッチポイントヘルパーが継続アドレスを返すようになったこと、Tier0からOSRコードへのジャンプベースエントリ、およびターゲット固有のカリー保存処理の変更を反映しています。

#127106 Add Process.ReadAllLines synchronous API

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

Process クラスに新しい同期API ReadAllLines(TimeSpan? timeout = default) を追加します。このAPIは、stdout と stderr からインターリーブされた行を同時に読み取り、ProcessOutputLine インスタンスをyieldする単一スレッドのマルチプレックス実装で、デッドロックを回避します。

using Process process = Process.Start(startInfo);
foreach (ProcessOutputLine line in process.ReadAllLines())
{
    if (line.StandardError)
        Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine(line.Content);
    Console.ResetColor();
}

#127096 Add managed ilasm round-trip testing support

@jkoritzinsky・GitHub・area-ILTools-coreclr

ilasm round-trip テストを新しいマネージド ilasm(Core_Root の managed-ilasm/ サブフォルダに配置)を使用して実行するためのインフラストラクチャを追加します。マネージド ilasm とネイティブ ilasm の両方で round-trip 検証を実行できるようになります。このPRではCI での実行は有効化されていません。

#126778 [Wasm RyuJit] Call Codegen Fixes for R2R

@adamperlin・GitHub・area-CodeGen-coreclr

WebAssembly RyuJit コンパイラにおいて、Ready-to-Run (R2R) 形式のマネージド呼び出しを適切に処理するためのコード生成修正。特に、PEP (Portable Entrypoint) 呼び出し規約を使用するマネージド呼び出しで、追加のPEPパラメータを正しく渡すための lowering ロジックの実装と、helper 呼び出しのコード生成修正を含みます。

lowering 変換では、PEP を保持する一時ローカル変数を導入し、これをマネージド呼び出しの最終パラメータとして追加し、呼び出し対象を *pep に書き直します。

#126765 Implement XmlSerializer end element handling workaround and tests

@StephenMolloy・GitHub・area-Serialization

XmlSerializerのストリーミングトランスポート経由でのXMLフラグメント逆シリアル化時に、トップレベル終了要素後の不要な読み取りを避ける回避策を実装しました。デフォルト有効のUseXmlSerializerReadEndElementWorkaroundAppContextスイッチにより、ブロッキングやタイムアウトを防ぎながら、複数ルート要素の逆シリアル化に対応します。

#126309 Optimize ImmutableHashSet<T>.SetEquals to avoid unnecessary allocations

@aw0lid・GitHub・area-System.Collectionscommunity-contribution

ImmutableHashSet<T>.SetEqualsメソッドを最適化し、不要な中間HashSet<T>の生成を排除しました。パターンマッチングとカウント事前チェックにより、Count不一致やImmutableHashSet/HashSetの同型比較時にゼロアロケーションを実現します。特に100,000要素規模で最大200万倍のスピードアップを達成しています。

#124738 JIT: Treat store in JTRUE block as the ElseOperation in if-conversion

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

JIT の if-conversion フェーズを改善し、明示的な else ブロックがない場合でも、JTRUE ブロック内の無条件ストア操作を else 値として扱うようにしました。これにより、以下の2つのコードパターンが同等の IR を生成され、後続の最適化が有効になります。

// パターン1: else なし
bool First(int tMinLeft, int tMinRight)
{
    bool leftCloser = false;
    if (tMinLeft < tMinRight)
    {
        leftCloser = true;
    }
    return leftCloser;
}

// パターン2: else あり
bool Second(int tMinLeft, int tMinRight)
{
    bool leftCloser;
    if (tMinLeft < tMinRight)
    {
        leftCloser = true;
    }
    else
    {
        leftCloser = false;
    }
    return leftCloser;
}

2026年04月29日 (27 PRs) この日のページ →

#127526 [QUIC] Do not allocate exception if it might not be used

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

QUIC ストリームのシャットダウンパスにおいて、不要な例外割り当てを削減するパフォーマンス最適化です。ストリーム開始タスクソース(_startedTcs)が既に完了している場合、OperationAborted 例外の作成をスキップして、不要なメモリ割り当てと例外処理のオーバーヘッドを回避します。HTTP/3 サーバーシナリオの高頻度シャットダウンイベントパスに対する最適化です。

#127524 JIT: fix Vector{128,256}.ConvertToInt32 use-before-def in gtNewSimdCvtNode

@EgorBo・GitHub・area-CodeGen-coreclr

Compiler::gtNewSimdCvtNodeにおける非AVX-512経路で、Vector{128,256,512}.ConvertToInt32(Vector*<float>)が入力値に対して誤った結果を生成するuse-before-def バグを修正しました。具体的には、float.MinValue入力時に部分的なゼロが混在した結果ではなく、正しく飽和値-2147483648が返されるようになります。

#127471 [cDAC] Implement EnumTypeDefs, EnumMethods, GetExportedTypeProps, FindExportedTypeByName

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

cDAC(Compact Debugging Access Component)の MetaDataImportImpl に4つのメタデータ API を新規実装し、デバッガの no-fallback モード対応を実現しました。以下のメソッドを実装:

  • EnumTypeDefs / EnumMethods:型定義とメソッドの列挙
  • GetExportedTypeProps / FindExportedTypeByName:エクスポート型の検索と属性取得

すべての実装は既存パターン(HResult 返却、FillEnum インフラ、DEBUG 検証)に従い、legacy DAC との parity 検証も付与しました。

#127370 [browser][coreCLR] Support interpreter code resolution on portable entrypoint platforms

@pavelsavara・GitHub・arch-wasmarea-Diagnostics-coreclr

WASM などのポータブルエントリポイント(FEATURE_PORTABLE_ENTRYPOINTS)を使用するプラットフォームで、インタープリタコード解決を有効にする変更です。従来の InterpreterPrecode メカニズムに依存していた EventPipe/ETW の IP-to-メソッド解決が WASM で機能しないため、ポータブルエントリポイント経由で解釈メソッドのバイトコードアドレスを解決できるよう汎化しました。これにより、WASM 上のサンプリングプロファイラが管理メソッドに対してサンプルを正確に帰属させられるようになります。

#127369 Add missing custom attribute marking to ILTrim TokenBased nodes

@Copilot・GitHub・area-Tools-ILLink

ILTrimの複数のTokenBasedNodeサブクラスがカスタム属性依存関係をマークしていなかったため、トリミング時にメタデータテーブル上のカスタム属性が無視されていました。ParameterNode、GenericParameterNode、GenericParameterConstraintNode、ManifestResourceNodeにCustomAttributeNode.AddDependenciesDueToCustomAttributesの呼び出しを追加し、カスタム属性と参照される型・コンストラクタの依存関係を正しく保持するように修正しました。

#127355 Fix sporadic AccessViolation in compressed single-file apps on Apple Silicon

@elinor-fung・GitHub・area-Host

macOS Apple Silicon上の圧縮された自己完結型単一ファイルアプリで発生する散発的なAccessViolationExceptionを修正。問題の原因は、FlatImageLayout::LoadImageByCopyingPartsでMAP_JITメモリのRW → RWXへの保護遷移が不可靠だったため。修正では、Apple SiliconでPAGE_NOACCESSからリザーブし、各セクションを最終的な実行保護で直接コミットすることで、信頼できない遷移を回避。

#127292 Add configurable EventPipe CPU sampling rate via DOTNET_EventPipeThreadSamplingRate

@pavelsavara・GitHub・area-System.Diagnostics

EventPipeのCPUサンプリング間隔をDOTNET_EventPipeThreadSamplingRate環境変数で設定可能にする変更です。デフォルト1msはWASM/ブラウザ環境では速すぎるため、この設定値(ミリ秒単位)でオーバーライド可能にしました。0を設定するとプラットフォームのデフォルト値を使用します。

#127220 [wasm][coreclr] Update the ConvertToInteger tests active issue

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

WASM上のCoreClR インタープリタで double/float.ConvertToInteger<TInteger> が正しく動作するように修正。JIT動作と同じ方式でこのメソッドを intrinsic として展開し、マネージドコードの CreateSaturating へのフォールバックを回避します。これまで小さい整数型で不正な結果が返される問題が発生していました。

#127148 Replace PERFSCORE_MEMORY_* macros with PerfScoreMemoryAccessKind enum class

@Copilot・GitHub・area-CodeGen-coreclr

JIT コンパイラのパフォーマンススコア計算において、マクロ定数 PERFSCORE_MEMORY_* を強く型付けされた PerfScoreMemoryAccessKind enum クラスに置き換えました。None、Read、Write、ReadWrite の enum メンバーを定義し、複数のエミッターバックエンド(ARM64、x86/x64、RISC-V、LoongArch64)でメモリアクセス種別の追跡を更新しています。

#127060 [ios-clr] Enable StackTrace tests on Apple mobile

@kotlarmilos・GitHub・area-System.Diagnostics

Apple mobile(iOS/tvOS)プラットフォームでStackTraceライブラリのテストを有効化するPRです。CoreCLRアプリバンドルにデバッグシンボル(.pdbファイル)を保持することで、スタックトレース情報の取得を改善し、テストスイートを実行可能にします。なお、行番号表示に関する既知の制限は#124087で追跡中です。

#127058 [ios-clr] Enable ResourceAssemblyLoadContext fallback for Apple mobile CoreCLR

@kotlarmilos・GitHub・area-AssemblyLoader-coreclrlinkable-frameworkos-ios

Apple mobile プラットフォーム(iOS/tvOS)上の CoreCLR で、テストアセンブリが .app バンドル内のファイルとして展開される場合、ResourceAssemblyLoadContext が組み込みリソースを見つけられず失敗する問題を解決します。ResourceAssemblyLoadContext.Load に AppContext.BaseDirectory からのフォールバック読み込み機能を追加し、Apple mobile での System.Runtime.Loader.Tests テスト実行を可能にします。

#127033 [X64][APX] Fix a few bugs in APX implementation and improve the control knob design

@Ruihan-Yin・GitHub・area-CodeGen-coreclrcommunity-contribution

AMD64 APX(Advanced Performance eXtensions)実装のJITコンパイラにおける複数のエンコーディングバグ修正と、機能ゲーティング設計の改善です。IMUL命令のREX2エンコーディング修正、CMOV NDD形式の無効化、条件付きチェーニングの制御の厳格化、DIV/IDIV命令のREX2/EVEXプリフィックス対応不足による無効化を含みます。

#126977 Port 126929 to 10.0

@mangod9・GitHub・Servicing-approvedarea-GC-coreclr

DOTNET_GCLargePages=1が有効な場合のGCヒープ破損問題を修正します。ラージページが有効な場合、GCはOS レベルのデコミットをスキップしていますが、メモリ内容をクリアせずにブックキーピングのみ更新していました。この結果、リージョンが再利用時にゼロ化されず、ヒープ破損が発生していました。修正は、論理的にデコミットされたメモリをクリアすることで、リージョンの適切なゼロ化を保証します。

#126953 [interp] Fix doubled interpreter frames in DAC/DBI stack walks

@kotlarmilos・GitHub・area-Diagnostics-coreclros-ios

DAC/DBI(Debugging Access Component/Debugging Breakpoint Interface)がインタープリタコードを指すCONTEXTからStackFrameIteratorを初期化する際に、InterpreterFrameが重複して処理される問題を修正します。ResetRegDisp関数で所有するInterpreterFrame*をCONTEXTの第1引数レジスタから読み込み、ProcessCurrentFrame実行前にm_crawl.pFrameをスキップすることで、ダブルカウントを防ぎます。

#126905 Add Type.GetNullableUnderlyingType() virtual API

@AaronRobinsonMSFT・GitHub・area-System.Reflectionbreaking-change

Type サブクラス(例:MetadataLoadContext の RoType)が Nullable<T> を正しく識別できるよう、新しい公開仮想メソッド Type.GetNullableUnderlyingType() を追加しました。Nullable.GetUnderlyingType() がこの仮想メソッドに委譲されます。Enum.GetUnderlyingType() → Type.GetEnumUnderlyingType() の既存パターンに従います。

public virtual Type? GetNullableUnderlyingType() 
{
    throw new NotSupportedException(SR.NotSupported_SubclassOverride);
}

#126649 Reinstate LINQ join convenience overloads and fix the build break

@eiriktsarpalis・GitHub・area-System.Linq

LINQ join convenience overloads(Join、GroupJoin、LeftJoin、RightJoin)を復活させ、同時にビルド破損を修正するPRです。以前の先制PR(#121998、#121999)で追加されたこれらのオーバーロードが#126624で削除されたため、本PRで再導入します。System.Linq.AsyncEnumerableのテストビルド破損は、ジェネリック型推論が不十分だったAsync対応のセレクタレスオーバーロード呼び出しを明示的にすることで修正されました。

#126576 [clr-interp] Add initial CoreCLR interpreter func-eval support

@matouskozak・GitHub・area-Diagnostics-coreclr

CoreCLRインタープリタで停止しているスレッドに対するデバッガ関数評価(func-eval)サポートを初期実装します。ネイティブコンテキストハイジャッキングを避け、既存の保留中評価ハッシュテーブル(ProcessAnyPendingEvals)に評価要求をキューイングし、InterpBreakpointハンドラから実行します。これにより、インタープリタと例外発生時の評価で共有ディスパッチパスが再利用されます。

#126360 JIT: Fully share helper-based suspension tails

@jakobbotsch・GitHub・area-CodeGen-coreclr

複数の await が共通のコンテキスト処理ロジックを持つ場合、JIT が共有ブロックへのジャンプを通じてそのロジックを完全に共有できるようにする最適化です。新しい finish-suspension ヘルパーメソッドを追加し、複数の suspension epilog を共有ブロック経由でルーティングすることで、生成コードサイズを削減します。

private static async Task Foo()
{
    await Bar();
    await Bar();

    await Bar().ConfigureAwait(false);
    await Bar().ConfigureAwait(false);
}

#125180 JIT: Accelerate floating->long casts on x86

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

x86のJITコンパイラが浮動小数点型からlong/ulong型へのキャストをハードウェアアクセラレーションする機能を追加しました。AVX-512とAVX10.2を活用することで、オーバーフロー発生時以外のすべてのキャストがハードウェア命令で処理されるようになります。これまではCORINFO_HELP_DBL2LNGなどのヘルパー関数呼び出しが必要でしたが、新しい実装により関数呼び出しなしでインライン化された命令列で処理されます。

サンプルコード(double→long AVX-512):

// 従来: ヘルパー関数呼び出しによる処理
double value = 123.456;
long result = (long)value;  // CORINFO_HELP_DBL2LNG呼び出し

// 新実装: AVX-512命令によるインライン処理
// vmovsd, vcmpordsd, vcmpge_oqsd, vcvttpd2qq, vpblendmqなどで直接処理

2026年04月28日 (29 PRs)うち Bot 4 件 この日のページ →

#127488 JIT: eliminate redundant bounds checks for span.Slice(span.Length - cns)

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

JITコンパイラの最適化を強化し、span.Slice(span.Length - cns) パターンで発生する冗長な境界チェックを削除します。値番号付け(VN)の恒等式拡張と範囲チェック(RangeCheck)のアサーション推論改善により、BinaryPrimitives.ReadInt32BigEndian 内の長さチェックなども折り畳み可能になります。

生成されるアセンブリコードが大幅に削減され、例示コードでは stackalloc や冗長な境界チェック呼び出しが完全に除去されています。

#127485 Remove unsafe code from IBinaryInteger.TryReadBigEndian implementations

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

IBinaryInteger<T>.TryReadBigEndian の実装から unsafe コードを削除し、安全な同等物に置き換えました。Unsafe.ReadUnaligned、Unsafe.Add、MemoryMarshal.GetReference の使用を BinaryPrimitives.ReadXxxBigEndian と span インデックスに置き換えています。JIT は既存の長さチェックにより、結果のバウンズチェックを削除することが期待されます。

#127481 [cDAC] Delete GetAssemblyInfo

@rcj1・GitHub・area-Diagnostics-cdac

DAC/DBI(デバッグ)インターフェース内の IDacDbiInterface::GetAssemblyInfo API を削除し、単一の CordbAppDomain を想定することでデバッガー右側(RS)コードパスを簡潔化します。この変更により、フレーム単位での AppDomain トークン処理が不要になり、キャッシュされた AppDomain を直接使用するようになります。

#127480 Fix interpreter context after breakpoint

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

デバッガのブレークポイント後に実行が再開される際、デバッガが修正したスレッドコンテキスト(IP や SP など)が無視されていた問題を修正します。この変更により、インタープリタはコンテキスト変更を検出し、ResumeAfterCatchException を発生させることで、修正されたコンテキストから正しく実行を再開できるようになります。

#127477 Handle GT_CCMP in GenTree::OperConsumesFlags on TARGET_AMD64

@Copilot・GitHub・area-CodeGen-coreclr

GenTree::OperConsumesFlagsメソッドがTARGET_AMD64でもGT_CCMP(条件付きコンパレア)を正しく処理するよう修正しました。従来はTARGET_ARM64のみでGT_CCMPを処理していましたが、GT_CCMPは両アーキテクチャで生成されているため、AMD64での処理を追加します。これにより、フラグ消費ノードとしての正確な認識が可能になり、命令スケジューリングやレジスタ割り当てが改善されます。

#elif defined(TARGET_AMD64)
    static_assert(AreContiguous(GT_JCC, GT_SETCC, GT_SELECTCC, GT_CCMP));
    return (GT_JCC <= gtOper) && (gtOper <= GT_CCMP);
#endif

#127469 Adjust interpreter debugger IL mapping

@tommcdon・GitHub・area-Diagnostics-coreclr

CoreCLRインタープリタのデバッグ時にスタックウォーク中に不正な行番号が報告される問題を修正します。JITの行番号マッピング方式に合わせるため、以下の改善を実施:

  1. IL→ネイティブマッピングデータをILスタックが空の箇所とnop命令のみに限定
  2. デバッグモードで、call命令直後に削除されるIL命令がある場合、nop命令を挿入してリターンアドレスのマッピングを正確化

#127465 Fix trimming test exclusions for iOS/tvOS simulator CoreCLR builds

@tarekgh・GitHub・area-Infrastructure-monoos-ios

iOS/tvOS シミュレータ向けの CoreCLR ビルドで Aggressive Trimming テスト除外ルールが機能していなかった問題を修正。TargetOS の明示的リストチェック(ios/tvos/maccatalyst)では iossimulator/tvossimulator をカバーしていなかったため、Trimming に敏感なテストが実行されて NullReferenceException で失敗していました。修正により、既存の TargetsAppleMobile プロパティを使用することで、すべての Apple モバイルターゲットに対して一貫したテスト除外を適用します。

#127456 Remove unsafe code from CRC vectorized helpers

@EgorBo・GitHub・area-System.IO.Hashingreduce-unsafe

CRC32/CRC64ベクトル化ヘルパーの安全でないコード(ref byte + Vector128.LoadUnsafe + Unsafe.Add)を、安全なコード(ReadOnlySpan<byte> + Vector128.Create(span) + Slice)に置き換えました。最新のJITボーンズチェック除去がこのループパターンの安全性チェックを処理するため、パフォーマンス低下は予想されていません。

#127398 Fix SIGILL crash on ARM64 platforms with SME but no SVE

@AndyAyersMS・GitHub・area-PAL-coreclr

ARM64プラットフォームにおいて、SME(Streaming SVE)は搭載されているがSVEは搭載されていない環境(例:macOS Virtualization.FrameworkのApple M4)で発生していたSIGILL(不正命令例外)クラッシュを修正します。

シグナルコンテキスト処理でCONTEXT_GetSveLengthFromOS()がSVE rdvl命令を実行していましたが、SME専用プラットフォームではこの命令がサポートされていないため例外が発生していました。本修正では、カーネルが提供するシグナルフレーム内のsve->vl値を直接読み込むことで、rdvl実行を回避します。

#127302 Remove unnecessary _featureCheckValues cache from ILLink

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

ILLink の MemberActionStore から不要となった _featureCheckValues キャッシュを削除するクリーンアップ。CodeRewriterStep が SweepStep より前に実行されるようになった (#127090) ため、機能属性値を事前にキャッシュしておく必要がなくなりました。属性は CodeRewriterStep 処理時にも存在するようになります。

#127290 Skip decommit for large pages and add fake large pages test mode

@cshung・GitHub・area-GC-coreclrcommunity-contribution

大ページ(large pages)を使用する場合の仮想メモリ割り当て解除の処理を改善しました。大ページは部分的な割り当て解除ができないため、割り当て解除をスキップして、代わりにメモリをOSに返却し、メモリ統計の正確性を向上させます。また、大ページコードパスのテストを容易にするため、GCLargePages=2モードを追加し、小ページを使用して大ページの動作を模擬できるようにしました。

#127195 [cDAC] Adding IsLeafFrame and GetContext DacDbi APIs

@rcj1・GitHub・area-Diagnostics-cdac

cDAC(Common Data Access Component)と従来のDacDbi APIに新しいスタックウォーク関連API(IsLeafFrameとGetContext)を追加するPRです。スレッドコンテキストの取得とリーフフレームの判定をサポートし、GetThreadContextを実装しないデータターゲットへのネイティブDAC フォールバック動作を削除しています。

#127186 R2r skip return dropping thunks

@jtschuster・GitHub・area-VM-coreclr

R2R(Ready2Run)コンパイル時に、リターン値の型変換(covariant returns)に関連するサンク(thunk)の生成をスキップしないよう修正しました。これにより、CI内のcovariant return テストが正常に動作するようになります。

#127165 Fix HttpHeaders.Remove to handle well-known header names

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

HttpHeaders.Remove()とHttpHeaders.Contains()が、そのコレクションに属さないwell-known headerまたは無効なheader名に対して例外をスローする代わりにfalseを返すように動作を変更します。これにより、呼び出し元が事前にどのコレクションを使用すべきかを知らずに、別のheader collectionにフォールバックできるようになります。

#127114 Add cDAC JIT notification contract with lazy table allocation

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

cDAC JIT通知テーブルの新しい契約実装を追加し、レガシーDAC フォールバックを削除しました。新しい ICodeNotifications 契約(c1)は、Windows上での遅延割り当て(ICLRDataTarget2::AllocVirtual)をサポートし、約24KBのメモリコスト削減を実現します。テーブル容量は1000スロット(コンパイル時定数)で、スロット0に長さ情報を格納します。

#127088 Update Microsoft.Diagnostics.Runtime to 4.0.722401

@max-charlamb・GitHub・area-codeflow

Microsoft.Diagnostics.Runtime (ClrMD) を 4.0.722401 (最初の安定版リリース) に更新しました。この更新により、クロスビットネス環境(32ビットホストで64ビットダンプを読み込む場合など)でのアドレス拡張ハンドリング問題が修正されます。これにより、以前回避されていたクロスビットネスダンプテストを実行できるようになります。

#126529 JIT: Transform 'CONST - x' to 'xor x, CONST' when possible

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

JIT最適化として、CONST - x(内部的にADD(NEG(x), CONST)で表現)を、xの範囲情報に基づいてXOR(x, CONST)に変換する処理を追加しました。また、アサーション伝播における値番号ベースの畳み込み最適化にGT_NOTを対応させています。

例:255 - x(byte型)はx ^ 255に、-1 - xは~xに変換され、より短い機械語コードが生成されます。

#126385 [cDAC] Adding symbols and using heap dumps

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Compact Diagnostic Access Component)のダンプテスト基盤を改善し、フルダンプの代わりにヒープダンプを使用するように切り替えます。ClrMDにシンボルパスを提供することで、System.Private.CoreLibとデバッギープロジェクトのメタデータを解決できるようにし、ダンプ分析の信頼性を向上させます。

#126041 Add size/perf optimized FinishSuspension helpers for runtime async

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

非同期メソッド実行の一時停止(suspension)時のコンテキスト処理を最適化するため、JIT生成コードからの単一呼び出しで完了する2つのランタイムヘルパー FinishSuspensionNoContinuationContext と FinishSuspensionWithContinuationContext を追加します。従来は複数の呼び出しでコンテキスト処理を実装していたため、コード生成サイズ削減とパフォーマンス向上を実現します。

// 新しいヘルパーメソッド(内部実装)
internal static void FinishSuspensionNoContinuationContext(
    ref Continuation continuation,
    bool hasExecutionContext,
    ExecutionContext currentContext,
    SynchronizationContext syncContext);

internal static void FinishSuspensionWithContinuationContext(
    ref Continuation continuation,
    bool hasExecutionContext,
    ExecutionContext currentContext,
    SynchronizationContext syncContext);

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

#127429 Use safe Span.Slice loop pattern in Enumerable.SumSignedIntegersVectorized

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

Enumerable.Sum()のベクトル化された符号付き整数合計処理において、unsafe ポインタ操作を安全なSpan.Sliceベースのループパターンに置き換えました。オーバーフロー検査を各イテレーション後ではなく最終段階で実施することで、パフォーマンスを向上させています。オーバーフロー発生は稀であり、発生時の例外コストが大きいため、早期終了より遅延チェックが有効との考えに基づいています。

#127383 [browser][coreCLR] Fix download() → create() lifecycle for WASM loader

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

WebAssembly ローダーの download() → create() ライフサイクルを修正し、2段階で初期化できるように再構築しました。ダウンロード状態をトラッキングして、download() 実行後の create() が不要な再初期化を行わない仕様に変更し、HTTP キャッシュのみを使用するプリフェッチモード(download(true))も新たに実装しています。

#127327 Extend System.Runtime.Intrinsics.Arm to support nint and nuint (ArmBase + Crc32)

@Copilot・GitHub・area-CodeGen-coreclr

System.Runtime.Intrinsics.Arm API を拡張して nint/nuint オーバーロードを追加する承認提案を実装します。スコープは ArmBase + Crc32 に限定されます。同時に、JIT の GenTreeHWIntrinsic の補助型追跡を CorInfoType から var_types へリファクタリングし、既存の JIT 型プラッシングとの整合性を向上させます。

#127323 [browser] preparation for emscripten bump to v5

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

Emscripten v5へのアップグレードに向けた準備作業。wasm-ldリンカフラグの構文修正、wasm-optの非トラッピング浮動小数点変換サポート追加、LLVM SIMDイントリンシクの標準化、そしてClangの新しい警告への対応を含む。これらはブラウザ/WASI向けネイティブビルドインフラストラクチャとMono WASM実行時を新しいEmscripten/LLVM/wasm-optツールチェーンと互換性を持たせるための内部実装の変更です。

#127305 Handle nullable-unwrapped generic parameter values

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

Nullable.GetUnderlyingType(typeof(T)) パターンのtrim/AOT dataflowモデリングを改善し、新しい値の種類 NullableUnwrappedGenericParameterValue を導入しました。これにより、nullable型から unwrap されたジェネリックパラメータが正しく追跡され、typeof(Gen<>).MakeGenericType(Nullable.GetUnderlyingType(typeof(T))) が不正なジェネリック化を防ぎ、適切なNativeAOT警告(IL3050)を生成するようになります。

#127264 Add a fluent Validate overload for adding validator types

@89netraM・GitHub・area-Extensions-Optionscommunity-contribution

OptionsBuilderに流暢なAPI(fluent API)スタイルの新しいValidateオーバーロードを追加します。このオーバーロードは、IValidateOptionsを実装するバリデータ型を登録し、オプション型の検証を行えます。

// 使用例(推測ではなく、一般的なパターン)
optionsBuilder.Validate<MyValidatorType>();

#127262 Fix SRM branch fixup skipping bytes at BlobBuilder chunk boundaries

@Copilot・GitHub・area-System.Reflection.Metadata

ControlFlowBuilder.CopyCodeAndFixupBranchesのブランチ固定化ロジックにおいて、InstructionEncoderオペコードと直接的なCodeBuilderオペランド書き込みを混在させた場合に、BlobBuilderチャンク境界でバイトをスキップしてしまい、後続のオペランドを破損する問題を修正しました。

チャンク境界(256バイトチャンクのデフォルトでローカルオフセット255)に短分岐プレースホルダが配置された場合、CopyCodeAndFixupBranchesの特殊ケース処理によりsrcBlobOffsetが誤って進行し、次のチャンク開始時に最初のバイトがスキップされていました。

#127258 ILLink AOT analyzer: recognize statically-known Enum.GetValues(Type) as intrinsically handled

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

RequiresDynamicCodeAnalyzerが静的に既知のEnum型に対するEnum.GetValues(Type)呼び出しで不要な警告を出しているため、ILCのインtrinsic処理に合わせて修正しました。型引数がSystemTypeValueで静的に既知の場合、IL3050警告を抑制します。

case IntrinsicId.Enum_GetValues:
{
    foreach (var value in arguments[0].AsEnumerable())
    {
        if (value is not SystemTypeValue)
            return false;
    }
    return true;
}

#127229 Logic to load R2R files on WebAssembly

@davidwrighton・GitHub・area-VM-coreclr

WebAssemblyでReadyToRun (R2R)コードの読み込みと実行をサポートするための包括的な実装です。WebCIL v1画像でのR2Rヘッダーディスカバリー、リロケーション処理、ポータブルエントリポイント対応、およびWasm向けランタイム関数テーブルの再ロケーション生成を追加しています。

#127135 NativeAOT: make external TypeMap trimming array-aware with MdArray element fallback

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

NativeAOTの外部TypeMapトリミングにおいて、配列型トリムターゲットの精度を向上させるため、配列型そのものの到達可能性に基づいて条件付きを行うように改善。従来はSomeType[]がトリムターゲットであっても要素型SomeTypeが到達可能なだけでMapエントリが保持されていたが、本変更により配列型自体またはテンプレートベースのランタイム構築可能性に基づいて判定する。

private static TypeDesc GetEffectiveTrimTargetType(TypeDesc trimmingTargetType)
{
    while (trimmingTargetType is ParameterizedType parameterized && !trimmingTargetType.IsArray)
        trimmingTargetType = parameterized.ParameterType;
    return trimmingTargetType;
}

#127047 Fix string buffer size calculation in Utf8JsonWriter.WriteStringValue

@prozolic・GitHub・area-System.Text.Jsoncommunity-contribution

Utf8JsonWriter.WriteStringValueでバッファサイズ計算の誤りによるIndexOutOfRangeExceptionを修正しました。非常に大きな文字列(最大166,666,666文字まで)をシリアライズする際に発生していた問題に対応しており、エスケープ時の最大バイト数を事前計算して正確に算出するようにしました。

#127028 [cDAC] Add IMetaDataImport COM wrapper over MetadataReader for no-fallback mode

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

cDAC(動的に静的なデータを提供するコンポーネント)のno-fallback mode(レガシーDAC不在時)において、診断ツール(SOS、ClrMD)がメタデータにアクセスできるようにするため、System.Reflection.Metadata.MetadataReaderをIMetaDataImport/IMetaDataImport2/IMetaDataAssemblyImport COM インターフェースにマッピングする管理コード COM ラッパーを実装しました。レガシー DAC が存在する場合は、実装されていない約45メソッドのフォールバックとデバッグ検証に使用されます。

#126562 JIT: STORE_LCL_FLD coalescing

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITの低レベル化時のストア合体(coalescing)ロジックをリファクタリングし、隣接する定数書き込み(GT_STORE_LCL_FLD)をINDIRECT/STORE_BLKで使用されていた既存の合体ロジックで処理できるよう拡張する。新機能はJitEnableStoreLclFldCoalescingフラグで制御可能(デフォルト有効)。

#126106 Fix vararg P/Invoke cross-assembly metadata lookup using wrong module

@Copilot・GitHub・area-VM-coreclr

クロスアセンブリのvararg P/Invoke呼び出しで、スタブ生成時にメソッド実装フラグ(PreserveSigなど)を呼び出し元モジュールではなく定義元モジュールのメタデータから取得するよう修正しました。修正前はBadImageFormatExceptionまたはスタック破損の原因になっていました。

// Assembly A で定義
[DllImport("msvcrt.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static unsafe extern int _scprintf(string format, __arglist);

// Assembly B から呼び出し(修正前は失敗)
_scprintf("%d\n", __arglist(42));

#124167 [clr-interp] Runtime async on armel

@clamp03・GitHub・arch-arm32community-contributionarea-CodeGen-Interpreter-coreclr

armel(ARM EABI)インタープリタに対してランタイム非同期サポートを追加します。これにより、インタープリタモードで非同期メソッドが正常に動作するようになります。また、armelでの関数呼び出し時のスタックサイズに関する問題も修正しています。

テスト: async/async/async.shをRunInterpreter=1で実行済み。

2026年04月26日 (4 PRs) この日のページ →

#127434 JIT: Use normalized block for comparison in RBO dominator walk

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

JIT最適化のRBO(Redundant Branch Optimization)ドミネータウォーク処理において、空のBBJ_ALWAYSブロックチェーンの作成後に早期終了してしまうバグを修正しました。比較対象のブロックを正規化(副作用のないブロックをスキップ)することで、不正なブロック比較を防ぎます。その結果、不必要な条件分岐が削除され、コード生成が改善されています。

#127433 JIT: relax inliner heuristics for callees on [Intrinsic] types

@EgorBo・GitHub・area-CodeGen-coreclr

"unsafe削除"の取り組みで導入されるSpan.SliceやVector.Createなど、[Intrinsic]属性が付与されたメソッドの呼び出しが、JITインライナーの時間予算に負の影響を与えてコード品質が低下している問題を解決します。本PRは、これらのintrinsic型のメソッドをインラインする際の予算チェックを緩和し、小規模メソッドと同様の扱いをすることで、回帰を防ぎます。

#127280 [browser] Enable StackTraceLineNumberSupport in StackTrace tests

@maraf・GitHub・arch-wasmarea-System.Diagnosticstest-enhancementos-browser

ブラウザ(WebAssembly)をターゲットする場合にSystem.Diagnostics.StackTrace.TestsでStackTraceLineNumberSupportを有効化し、スタックトレースのファイル/行番号情報をサポートします。これにより、CoreCLR+browserでPDB情報に依存するテストが[ActiveIssue]でスキップされずに実行できるようになります。

2026年04月25日 (12 PRs) この日のページ →

#127413 Add [NoInlining] to Marvin.ComputeHash32OrdinalIgnoreCase

@AndyAyersMS・GitHub・area-CodeGen-coreclr

Marvin.ComputeHash32OrdinalIgnoreCaseメソッドに[MethodImpl(MethodImplOptions.NoInlining)]属性を追加します。これにより、JITインラインバジェット増加(#118641)で発生していた部分的なインライン化による性能低下を防ぎます。既に同じ属性がMarvin.ComputeHash32に存在しており、OrdinalIgnoreCaseバージョンにも同じ対策が必要でした。

#127394 Replace MemoryMarshal generic Read/Write with BitConverter equivalents

@EgorBo・GitHub・area-Metareduce-unsafe

Generic MemoryMarshal.Read/Write/TryRead/TryWrite<T> APIが将来caller-unsafe属性でマークされるため、プリミティブ型の使用をすべてBitConverterスパン相当の安全なAPIに置き換え、ダウンレベルTFM向けのBitConverterスパンポリフィルを追加します。これは複数ライブラリとSystem.Private.CoreLibにわたる移行の一環です。

#127343 [cDAC] Implement GetModuleForAssembly for cDAC

@Copilot・GitHub・area-Diagnostics-coreclr

cDAC(Contract-based Diagnostics Access Component)において、GetModuleForAssemblyメソッドをレガシー委譲スタブから契約ベースの実装に移植しました。ネイティブC++実装(dacdbiimpl.cpp)のpAssembly->GetModule()呼び出しに相当する処理を、ILoader.GetModuleHandleFromAssemblyPtr → ILoader.GetModuleを使用して管理コードで実装しています。

#127336 Optimize runtime async suspend/resume machinery

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

ランタイムの非同期サスペンド/レジューム機構を最適化するPRです。TLSアクセス回数の削減、書き込みバリアの除去、ホットパスのキャスト削減により、サスペンション負荷の高いベンチマークで約17%のパフォーマンス改善を実現しています。主な最適化は以下の通りです:

  • Thread.CurrentThreadをスタック割り当てのRuntimeAsyncStackStateにキャッシュ
  • TLS参照構造体による書き込みバリア削減
  • ホットパスでUnsafeを使用した不要なキャスト削減

#127247 Fix flaky RegularExpressionAttribute timeout test

@danmoseley・GitHub・area-System.ComponentModel.DataAnnotations

RegularExpressionAttributeTests.Validate_MatchingTimesOut_ThrowsRegexMatchTimeoutExceptionのフレーキーなタイムアウトテストを修正します。正規表現エンジンのパフォーマンス向上により、1msのタイムアウト内に処理が完了してしまう場合があり、期待されるRegexMatchTimeoutExceptionではなくValidationExceptionが発生していました。テスト入力を28文字から100文字に増やすことで、指数関数的なバックトラック(O(2^n))を確実にタイムアウトさせます。

#126585 Clean up dynamic method desc native stack arg tracking

@jkoritzinsky・GitHub・area-VM-coreclr

ネイティブスタック引数サイズ追跡機能をx86アーキテクチャのみに制限する最適化です。FEATURE_DYNAMIC_METHOD_HAS_NATIVE_STACK_ARG_SIZEマクロを廃止し、関連APIと管理フィールドを直接TARGET_X86ゲートに変更することで、x86以外のアーキテクチャにおける不要な管理オーバーヘッドを削減します。

#126259 Fix BigInteger.LeadingZeroCount, PopCount, TrailingZeroCount, RotateLeft, and RotateRight for platform-independent 32-bit word semantics

@Copilot・GitHub・area-System.Numerics

_bitsがuint[]からnuint[]に移行した後、BigIntegerの5つのIBinaryInteger<BigInteger>メソッド(LeadingZeroCount、PopCount、TrailingZeroCount、RotateLeft、RotateRight)がプラットフォーム依存の結果を返していた問題を修正します。このPRはプラットフォーム非依存の32ビット語セマンティクスを復元し、_signパスと_bitsパスの両方に対応します。

#126035 Fix CheckSpecified setter for field-backed members in ReflectionXmlSerializationReader

@haltandcatchwater・GitHub・area-Serializationcommunity-contribution

ReflectionXmlSerializationReaderのバグを修正し、フィールドバック型のXxxSpecifiedメンバーがデシリアライゼーション時に正しく設定されるようにしました。従来はGetMethod("set_X")でプロパティセッターのみを検索していたため、フィールドバック型のSpecifiedメンバーはnullとなり、XMLに要素が存在してもfalseのままでした。本修正により、リフレクションパスとILGenパスの動作を統一し、既存のキャッシュデリゲート基盤を活用しています。

2026年04月24日 (40 PRs)うち Bot 2 件 この日のページ →

#127386 Use safe Span.Slice loop pattern in CRC32 ARM scalar paths

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

ARM/ARM64スカラーCRC32更新パスを、ポインタベースのループからSpanスライシングループパターンに書き換えました。BinaryPrimitives.ReadUInt64LittleEndian/ReadUInt32LittleEndianを使用し、JITが自動的に境界チェックを削除できるようにしました。

while (source.Length >= sizeof(ulong))
{
    crc = System.Runtime.Intrinsics.Arm.Crc32.Arm64.ComputeCrc32(crc, BinaryPrimitives.ReadUInt64LittleEndian(source));
    source = source.Slice(sizeof(ulong));
}

#127382 Use safe Span.Slice loop pattern in HashCode.AddBytes

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

HashCode.AddBytesメソッドを、JITが境界チェックを除去できる安全なSpan.Sliceループパターンに書き直しました。従来のUnsafe APIベースのポインタ走査(Unsafe.ReadUnaligned、Unsafe.Add、Unsafe.IsAddressLessThan)を、BitConverter.ToUInt32とReadOnlySpan<byte>.Sliceを用いた安全なループに置き換えています。JITはこのループ形状(while (data.Length >= CONST) { ...; data = data.Slice(CONST); })を認識して自動的に境界チェックを除去するため、生成コードは前の unsafe 実装と同等です。

// 従来の unsafe ベース → 安全な Span.Slice ベースへ
while (value.Length >= sizeof(int) * 4)
{
    _v1 = Round(_v1, BitConverter.ToUInt32(value));
    _v2 = Round(_v2, BitConverter.ToUInt32(value.Slice(sizeof(int) * 1)));
    _v3 = Round(_v3, BitConverter.ToUInt32(value.Slice(sizeof(int) * 2)));
    _v4 = Round(_v4, BitConverter.ToUInt32(value.Slice(sizeof(int) * 3)));
    
    _length += 4;
    value = value.Slice(sizeof(int) * 4);
}

#127381 Use safe Span.Slice loop pattern in NumericsHelpers.DangerousMakeOnesComplement

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

NumericsHelpers.DangerousMakeOnesComplementメソッドをリファクタリングし、unsafe操作を排除しつつJITの最適化を活用する安全なSpan.Sliceループパターンに統一しました。Vector<N>.LoadUnsafe/StoreUnsafeとUnsafe.AddをVector<N>.Create(span)とvector.CopyTo(span)に置き換え、JITが自動的に境界チェックを削除するループ構造を採用しています。

while (data.Length >= Vector<N><nuint>.Count)
{
    Vector<N><nuint> complement = ~Vector<N>.Create(data);
    complement.CopyTo(data);
    data = data.Slice(Vector<N><nuint>.Count);
}

#127375 [browser] Remove public WasmWebcilVersion MSBuild property; always use internal _WasmWebcilVersion

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

WebAssembly SDK ビルドロジックから公開 MSBuild プロパティ WasmWebcilVersion を削除し、webcil バージョンを常に内部プロパティ _WasmWebcilVersion で決定するようにしました。これにより、webcil バージョンの決定ロジックが一元化されます(CoreCLR の場合は 1、それ以外は 0)。

#127363 JIT: Tolerate edge/successor count mismatch at OSR entry in profile reconstruction

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT のプロファイル再構築時に、OSR(On-Stack Replacement)エントリでエッジ数と後続ブロック数の不一致を許容するように改善しました。PGO エッジプロファイルデータを組み込む際、PropagateOSREntryEdges がエッジ数の厳密な一致をアサートしていましたが、スパニングツリー走査中に一部の BBJ_LEAVE ターゲットが見落とされる場合に失敗していました。この場合、PropagateEdges と同様に、等確率ヒューリスティックスにフォールバックするよう修正しました。

#127357 JIT: Fix profile inconsistency asserts in flow graph optimization

@AndyAyersMS・GitHub・area-CodeGen-coreclr

PGO(Profile Guided Optimization)ストレスモード下でのアサート失敗を修正するため、fgopt.cppのフロー グラフ最適化における3つのプロファイル重み不整合の問題に対処しています。具体的には、ブロック圧縮時の重み不一致検出、条件分岐のマージ後の尤度設定、プロファイル重みのクランプ検出の3つを修正しています。

#127340 [browser] Fix DateTime marshalling to be timezone-independent

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

WebAssembly環境においてDateTime型のマーシャリングがタイムゾーン依存となっていた問題を修正しました。ToJS(DateTime)がnew DateTimeOffset(value)を使用していたため、ローカルタイムゾーンのオフセットが適用されていました。一方、ToManaged側は常に.UtcDateTime(offset=0)を返すため、ラウンドトリップ時にDateTime値がローカルUTCオフセット分シフトしていました。Emscripten 5.0.6がTZ環境変数を正しく処理するようになったことで、UTC以外のタイムゾーンで問題が露出しました。

修正内容:new DateTimeOffset(value)をnew DateTimeOffset(value.Ticks, TimeSpan.Zero)に変更し、Ticksを常にUTCとして解釈するようにしました。

// 変更前
new DateTimeOffset(value)

// 変更後
new DateTimeOffset(value.Ticks, TimeSpan.Zero)

#127337 Support new message CMD_VM_GET_SYSTEM_INFORMATION

@thaystg・GitHub・area-Debugger-mono

Monoデバッガーのワイヤープロトコルに新しいVM コマンド CMD_VM_GET_SYSTEM_INFORMATION を追加します。このコマンドにより、デバッガークライアントがランタイムからプロセッサーアーキテクチャとOSページサイズなどのシステム情報をクエリできるようになります。

#127335 Fix locale collation for build.sh

@vcsjones・GitHub・area-Infrastructure

ビルドスクリプト(eng/build.sh)において、commコマンドとsortコマンドのロケール照合順序をCロケールに固定することで、システムのロケール設定に依存しない一貫した動作を実現します。これにより、Ubuntu 26.04などの新しいディストリビューションで発生する「input is not in sorted order」エラーを防止します。

#127321 Change heap dumps to use HEAP2 as the default

@hoyosjs・GitHub・area-Diagnostics-coreclr

ヒープダンプ生成時のメモリ領域列挙ロジックを簡潔化し、HEAP2パスをデフォルトとします。従来の低速な列挙パスと環境変数ベースの回避策を廃止し、LoaderAllocatorを通じた統一的な領域列挙に統合します。これにより、JitManager、SystemDomain、AppDomain、Assembly、Module、LoaderAllocatorからのメモリ領域が効率的に列挙されます。

#127316 Remove NOTIFY_SOCKET clear side effect from SystemdNotifier ctor

@cincuranet・GitHub・area-Extensions-Hosting

SystemdNotifier コンストラクタから NOTIFY_SOCKET 環境変数のクリア処理を削除し、AddSystemdLifetime 内の ISystemdNotifier DI ファクトリに移動しました。公開パラメータなしコンストラクタが純粋な読み取り操作になり、環境変数はホスティングが実際に構成される場合にのみ更新されるようになります。

#127315 [browser][wasm] Fix CoreCLR Emscripten out/err override

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

CoreCLR browser WASM ローダーにおいて、ユーザー提供の out/err オーバーライド(dotnet.withModuleConfig() 経由)が Emscripten の print/printErr に橋渡しされていない問題を修正します。Mono ランタイムは既にこの機能を実装していましたが、CoreCLR にはその相当機能がありませんでした。本変更により CoreCLR の動作が Mono と一致するようになります。

#127314 [browser] Align CLR completeTaskWrapper to exit on exception, matching Mono

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

ブラウザ環境でのPromise-to-Taskマーシャリング中に発生した例外の処理を改善します。CLR実装が例外を無視していた問題を修正し、Mono実装と同様にランタイムを終了するようにします。例外が発生するとManagedタスクが永遠にハング状態になり、GCHandle/プロキシの状態が破損するため、この修正は重要です。

#127293 JIT: Fix uninitialized gtCallMethHnd for indirect calls causing false recursive tail call detection

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITの間接呼び出し(CT_INDIRECT)処理において、gtCallMethHndフィールドが初期化されずにスタジアムデータを保持することで、gtIsRecursiveCall()が誤った正の判定をし、再帰的末尾呼び出しの検出が誤動作する問題を修正します。結果として、無限ループに陥るコード変換が発生していました。

#127275 [QUIC] Add QuicStream.Priority property

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

QUIC ストリームの優先度制御機能を System.Net.Quic に追加します。API承認済みの設計(#90281)に基づき、QuicStream.Priority プロパティ(byte)と DefaultPriority 定数(0x7F)を実装します。

namespace System.Net.Quic;

public partial class QuicStream
{
    public const byte DefaultPriority = 0x7F;
    public byte Priority { get; set; }
}

#127248 Implement X25519DiffieHellman

@vcsjones・GitHub・area-System.Security

X25519 Diffie-Hellman鍵交換の公開APIを実装します。Windows 10+ (CNG)、Apple macOS/iOS/tvOS (CryptoKit)、OpenSSLをサポートします。鍵のインポート/エクスポート(Raw/SPKI/PKCS#8/PEM形式)と共有秘密導出の機能を提供します。

// 使用例
using var x25519 = X25519DiffieHellman.Create();
byte[] publicKey = x25519.ExportRawPublicKey();
byte[] sharedSecret = x25519.DeriveRawSharedSecret(otherPartyPublicKey);

#127246 System.Reflection.Metadata: preserve pre-linked suffix chain when linking into empty BlobBuilder

@Copilot・GitHub・area-System.Reflection.Metadata

BlobBuilder.LinkSuffixがリンク済みの接尾辞チェーンを持つ空の宛先ビルダーにリンクされた場合、既にリンクされたコンテンツを失う問題を修正しました。本変更により、接尾辞チェーン全体が保持され、バイト順序と全コンテンツが正しく保持されるようになります。例:11-22(修正前は22-00になる場合がありました)。

element.LinkSuffix(tail);  // element: 0x11, tail: 0x22
emptyPrefix.LinkSuffix(element);  // 結果: [0x11, 0x22]

#127181 JIT: relop simplification during redundant branch opts

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラの冗長分岐最適化を拡張し、Value Number (VN)による論理式簡略化を活用して、支配的分岐の比較演算を削除できるようにしました。支配的述語が被支配述語を直接意味しない場合でも、(pB AND pA)をVN空間で簡略化して単一の関係演算子(relop)または定数に変換できれば、被支配側の比較を修正して削除できます。

例:if ((x >= 100) && (x <= 100)) S; → if (x == 100) S;

#127124 JIT: propagate vector constants through assertion prop

@EgorBo・GitHub・area-CodeGen-coreclr

JIT のアサーション伝播機能を拡張し、SIMD ベクトル定数(Vector64/128/256/512)の等値性/不等号チェックを認識して、ガード後のコード内でベクトル定数を伝播できるようにしました。これにより、ベクトル定数を使用する一般的なガード・パターンでより多くの定数畳み込み最適化が可能になります。

if (vec == Vector128<int>.Zero)
{
    // JIT がこのスコープ内の vec の使用すべてを Vector128<int>.Zero として定数伝播
}

#127108 Fix xplat dump test OOM by splitting Helix payloads

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

xplat dump テストの OOM 問題を、Helix ペイロードを分割することで修正します。従来は全プラットフォーム(linux-x64、linux-arm64、windows-x64、windows-x86、windows-arm64)のダンプを単一の MemoryStream ベースの ZipArchive に圧縮していたため、合計サイズが byte[] の ~2GB 制限を超えて OutOfMemoryException が発生していました。

#127073 [browser] Native build on CoreCLR in Wasm.Build.Tests

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

WebAssembly on CoreCLRのWasm.Build.Testsスイートで、ローカルおよびHelix環境での per-app ネイティブリリンク機能を有効化します。CoreCLR WBTレーンがBrowserWasmApp.CoreCLR.targetsを駆動するためのインフラストラクチャ(テンプレートインストール、EMSDK提供、環境変数ブリッジ、Helixペイロード)を追加し、ネイティブリリンクのエンドツーエンド動作を実現します。

#127031 Add cdac-dump-inspect script for ad-hoc dump analysis

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

.NET クラッシュダンプの検査用開発ツール cdac-dump-inspect を追加しました。ClrMD と cDAC(契約ベースのデータアクセス)を使用して、WinDbg/SOS なしにダンプから契約記述子、スレッド、スタック情報を検査できます。

使用例:

./src/native/managed/cdac/scripts/cdac-dump-inspect.ps1 descriptor <dump-path>
./src/native/managed/cdac/scripts/cdac-dump-inspect.ps1 threads <dump-path>
./src/native/managed/cdac/scripts/cdac-dump-inspect.ps1 stacks <dump-path>

#126691 Fix LibraryImportDiagnosticsAnalyzer and DownlevelLibraryImportDiagnosticsAnalyzer missing diagnostics when StringMarshalling is set

@Copilot・GitHub・area-Diagnostics-coreclr

LibraryImportDiagnosticsAnalyzerとDownlevelLibraryImportDiagnosticsAnalyzerがStringMarshalling設定時に診断を報告しない回帰を修正。また、生成される内部[DllImport]スタブがStringMarshalling.Utf16設定時にCharSet = CharSet.Unicodeを省略し、転送型(例:StringBuilder)の実行時マーシャリングが不正になる問題を解決。

#126105 [Interop] AddGeneratedComClassFixer: remove [ComVisible(true)] during conversion

@Copilot・GitHub・area-Infrastructure

AddGeneratedComClassFixerコード修正が、クラスを[GeneratedComClass]に変換する際に冗長な[ComVisible(true)]属性を削除していない問題を修正しました。別ファイルの部分宣言に存在する属性も対象に含まれます。

変換前:

[ComVisible(true)]
class C : I { }

変換後(修正後):

[GeneratedComClass] partial class C : I { }

#126062 JIT: Handle edge cases around BlendVariableMask rewrite

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

JIT の BlendVariableMask リライト処理におけるエッジケースを修正します。具体的には、インポート時に BlendVariable が BlendVariableMask にアップグレードされた後、rationalize フェーズで元の形式にダウングレードされる際の問題に対応しています。

マスク粒度が pblendvb 命令と互換性がない場合の不正なブレンド書き換えと、EVEX 埋め込みマスク最適化において ConvertVectorToMask から生成されたマスクを考慮せず無駄なマスク生成が行われる問題を修正しています。

#125835 [mono] Restore signal handlers during crash chaining

@jpnurmi・GitHub・area-Infrastructure-monocommunity-contribution

Mono のネイティブクラッシュハンドラが crash chaining 有効時に、事前インストールされたシグナルハンドラを SIG_DFL にリセットしてしまう問題を修正しました。この変更により、Sentry などのサードパーティツールが Mono より前にシグナルハンドラをインストールして、ネイティブクラッシュを適切にキャプチャできるようになります。

#123969 Improve FileLoadException message for assembly version conflicts with loaded assembly details

@Copilot・GitHub・area-AssemblyLoader-coreclr

アセンブリバージョン競合時のFileLoadExceptionメッセージを改善するPR。バインディング失敗時に既にロードされているアセンブリの詳細情報(バージョン、パス)を例外メッセージに含めることで、ユーザーがバージョン不一致の原因をより容易に診断できるようになります。

改善例:

// 改善前
Could not load file or assembly 'LibA, Version=2.0.0.0'...

// 改善後
A different copy of assembly 'LibA' is already loaded. 
Loaded assembly: 'LibA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 
from 'C:\repos\helloworld\bin\Debug\net10.0\LibA.dll'

2026年04月23日 (21 PRs) この日のページ →

#127312 Fix race condition: set _canceled before SignalCore in ProcessWaitState

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

ProcessWaitStateでプロセス終了を待機中にキャンセルが発生した際、_canceledフラグの設定とシグナル送信の間にレース条件が存在していた問題を修正しました。_canceledをSignalCore()呼び出し前に設定することで、リーピングスレッドが常に正しいキャンセル状態を観察できるようにします。

#127286 [browser] Make WASM framework asset CopyToOutputDirectory configurable

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

Blazor WASM フレームワークアセットの CopyToOutputDirectory 動作を MSBuild プロパティで設定可能にする変更です。#126407 での変更によって library-tests が回帰していた問題を解決します。デフォルトは Never(static web assets ミドルウェア経由で obj/fx/ から提供)のままで、テスト環境では PreserveNewest に設定することで、bin/ から直接実行するテストをサポートします。

#127268 Add Video sub-class to MediaTypeNames with common video MIME types

@ManickaP・GitHub・area-System.Net

System.Net.Mime名前空間のMediaTypeNamesクラスにVideoネストされたクラスを追加し、一般的なビデオMIMEタイプの定数を提供します。Mp4、Mpeg、Ogg、QuickTime、WebMの5つのビデオコンテナフォーマット定数が追加されます。これらはWebアプリケーションで最も広く使用されるビデオMIMEタイプです。

public static class Video
{
    public const string Mp4 = "video/mp4";
    public const string Mpeg = "video/mpeg";
    public const string Ogg = "video/ogg";
    public const string QuickTime = "video/quicktime";
    public const string WebM = "video/webm";
}

#127251 Fix x64 data breakpoint handling after CORINFO_HELP_ARRADDR_ST inlining

@tommcdon・GitHub・area-Diagnostics-coreclr

PR #126547でWriteBarrier FCallがネイティブ(FCall)からマネージドコードに変換された後、x64データブレークポイントのデバッガアンウインドロジックが不正な動作をしていました。本修正により、デバッガがCastHelpers.StelemRefのJITヘルパーで停止するのではなく、ユーザーコードまで正常にアンウインドするようになります。

#127244 [cDAC] Implement SetCompilerFlags for cDAC

@barosiak・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Component)のDacDbiImplにSetCompilerFlagsメソッドを実装し、デバッガアセンブリ制御フラグを設定できるようにします。ILoaderコントラクトを使用してフラグを更新し、Edit and Continue(EnC)が有効化できない場合はCORDBG_S_NOT_ALL_BITS_SET成功HRESULTを返します。

#127239 Harden permissions for pipe used in SharedServer.

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

Unix名前付きパイプ(Unixドメインソケット)のファイルシステム権限を強化するため、PipeOptions.CurrentUserOnly使用時にソケットファイルのモードを明示的にユーザーのみ(0600)に設定します。ディスク上のエンドポイント権限を「現在のユーザーのみ」という意図に合わせ、リグレッションテストを追加しています。

#127184 JIT: Avoid changing def registers that may assume an implicit kill

@jakobbotsch・GitHub・area-CodeGen-coreclr

LSRA(線形スキャン・レジスタアロケータ)でレジスタ割り当て時の競合解決ロジックを修正しました。BuildDef(tree, SRBM_REG)が固定レジスタへの定義で、そのレジスタに既存のインターバルが割り当てられている場合、定義レジスタの変更を避けることで、暗黙的なスピルが正しく発生するようにしています。

#127182 Fix IJW OverflowException with 17+ by-ref parameters

@jkoritzinsky・GitHub・area-Interop-coreclr

IJW(C++/CLI)リバースP/Invokeにおいて、17個以上のby-refパラメータを持つマネージド関数をネイティブコードから呼び出す際に発生していたOverflowExceptionを修正しました。

根本原因はStubSigBuilder::EnsureEnoughQuickBytesがバッファサイズを1回だけ2倍にしていたため、カスタム修飾子が保持される場合(PR #106000によるRegression)にシグネチャが512バイトを超えるとバッファオーバーフロー(CQuickBytesのインラインバッファ:256→512バイト)が発生し、引数カウント情報が破損していました。

#127117 JIT: eliminate redundant span checks across loop back-edge phis

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

JITコンパイラのスパン範囲チェック最適化を改善し、ループ内でのSpan操作における冗長な境界チェックを削除します。ループバック辺のPhi引数に対して、追跡されたVNがADD(boundVN, cns)経由でチェック済み境界式と一致する場合の認識を強化することで、ループ内での繰り返される範囲チェックを削除します。

int Sum(ReadOnlySpan<int> data)
{
    Vector128<int> sum = default;
    while (data.Length >= Vector128<int>.Count)
    {
        sum += Vector128.Create(data);
        data = data.Slice(Vector128<int>.Count);
    }
    int result = Vector128.Sum(sum);
    foreach (var t in data)
        result += t;
    return result;
}

#127074 JIT: Optimize async OSR resumptions

@jakobbotsch・GitHub・area-CodeGen-coreclr

Async OSR(On-Stack Replacement)の再開処理を最適化するPRです。従来、OSRメソッド内での再開はパッチポイントヘルパーを経由していましたが、このヘルパーのオーバーヘッドは10~20倍でした。本変更により、Tier0コードから直接OSRコードへのジャンプで再開し、パッチポイントヘルパーを完全に迂回します。

主な最適化内容:

  • GT_FTN_ENTRY(現在のコンパイル関数の入口アドレス)とGT_NONLOCAL_JMP(指定アドレスへの直接ジャンプ)という新しいIRノードを導入
  • OSRメソッドの継続情報にILオフセット(-1)の代わりにOSR入口アドレスを格納
  • Tier0のasync変換でGT_NONLOCAL_JMPを生成し、OSR再開時にパッチポイント経由ではなく直接ジャンプ
  • OSRメソッドのプロローグで疑似呼び出しスロット処理を実装
// 実行例:10,000,000回のawaitループの場合
// 最適化前: 6357.1 ms
// 最適化後: 457.1 ms (約13.9倍の高速化)

#127043 [Wasm RyuJit] EH, Unwind, and unwindable frames

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

WebAssemblyのRyuJIT向けに、例外処理(EH)のアンワインド報告とアンワインド可能なフレーム実装を追加しました。Virtual IPスキームを導入して、EH領域と呼び出しサイトに一意のVirtual IP範囲を割り当て、ランタイムのスタックウォーキングと例外処理を可能にするための基盤を構築しています。

#126794 [cDAC] Implement MarkDebuggerAttach* DacDbi APIs

@Copilot・GitHub・area-Diagnostics-cdac

cDAC(Common Data Access Context)デバッガー契約にMarkDebuggerAttachPendingとMarkDebuggerAttached APIを実装します。これらのAPIはg_CORDebuggerControlFlagsへのターゲットメモリ書き込みを通じてデバッガー制御フラグを設定します。また、ファイバーモード関連の不要なコードを削除しています。

#125640 Remove unsafe code from StringParser

@EgorBo・GitHub・area-System.IO

System.IO.StringParserの数値解析メソッドからunsafeなポインタベースのコードを削除し、安全なspanベースのint/long/uint/ulong.Parse呼び出しに置き換えました。NumberStylesとCultureInfo.InvariantCultureを使用して、割り当てなしのまま安全性を向上させます。

#125520 Fix UseSystemd() silently failing with ProtectProc=invisible

@CybCorv・GitHub・area-Extensions-Hostingcommunity-contribution

UseSystemd() が ProtectProc=invisible で設定されたサービスで暗黙的に失敗する問題を修正。$SYSTEMD_EXEC_PID 環境変数(systemd v248+)を主要な検出方法として使用し、古いsystemdバージョン向けに /proc/{ppid}/comm をフォールバックとして保持します。また、NOTIFY_SOCKET に基づいて notifier を登録する仕組みを導入し、より堅牢な systemd サービス検出を実現します。

#114028 Annotate System.ServiceModel.Syndication for trimming and AOT

@reflectronic・GitHub・area-System.ServiceModel.Syndicationnew-api-needs-documentationlinkable-frameworkcommunity-contribution

System.ServiceModel.Syndication ライブラリを trimming と NativeAOT に対応させるため、外部リンカー抑止ファイルをコード内アノテーションに置き換えます。Activator.CreateInstance() が使用される箇所に DynamicallyAccessedMembers を追加し、リフレクション依存の API に RequiresUnreferencedCode / RequiresDynamicCode アノテーションを付与します。

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

#127289 [cDAC] Add Apple to RuntimeInfoOperatingSystem

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

cDAC(Compact Data Access Component)の RuntimeInfoOperatingSystem 列挙型に Apple 値を追加し、Apple プラットフォーム(macOS/iOS/tvOS/MacCatalyst)を他の Unix ターゲットから区別できるようにしました。これにより、Apple ARM64 の特殊な呼び出し規約(スタック引数のアライメントが Linux ARM64 と異なる)を正しく処理できるようになります。

#127284 Switch to the arcade-skills plugin for ci-analysis

@lewing・GitHub・area-skills

dotnet/runtime リポジトリの CI 分析およびVMRコードフロー分析スキルをローカル実装から dotnet/arcade-skills マーケットプレイス プラグインへ移行しました。ローカルの PowerShell スクリプトと参照ドキュメントを削除し、Copilot および Claude の設定を更新して dotnet-dnceng@dotnet-arcade-skills プラグインを有効にしました。

#127241 Fix logical condition in ComWrappers.TryGetComInterfaceDispatch

@elinor-fung・GitHub・area-System.Runtime.InteropServices

ComWrappers.TryGetComInterfaceDispatchメソッドの論理条件バグを修正しました。OR演算子(||)をAND演算子(&&)に変更することで、COMオブジェクトのvtableがランタイム提供のIUnknown/IReferenceTrackerTarget実装と一致しない場合にのみ、"tagged interface"フォールバックパスを実行するようにしました。

#127223 Fix trimability in a couple more test projects

@MichalStrehovsky・GitHub・area-System.IO

複数のテストプロジェクトのトリマビリティ(Trim互換性)を改善するPRです。以前無効化されていたトリミング分析ツール(Trim Analyzer)を再度有効化し、生成された警告に対して標的化された抑制/アノテーションを追加するとともに、トリム非推奨APIをトリム友好的なAPIに置き換えています。主な変更は、EnableTrimAnalyzerフラグの有効化、DynamicallyAccessedMembers属性の追加、Enum.GetValues(typeof(T))からEnum.GetValues<T>()への移行です。

#127221 Fix trimming warnings in System.Diagnostics.Process tests

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

System.Diagnostics.Process テストにおけるトリミング警告を修正するため、トリムアナライザが静的解析できない obj.GetType().GetField(...) および assembly.GetType(...) パターンを、アナライザが解析可能な Type.GetType("FullName, AssemblyName") パターンに置き換えました。併せてテストプロジェクトのトリムアナライザを再有効化します。

#127215 Remove unused FileSystemOperationRecorder from FileSystemGlobbing tests

@MichalStrehovsky・GitHub・area-Extensions-FileSystem

FileSystemGlobbing テストから未使用の FileSystemOperationRecorder を削除するリファクタリング。このユーティリティはリフレクションを使用して匿名オブジェクトを辞書に変換していましたが、収集した Records リストはテストで一度も読まれていませんでした。削除により、トリミング警告(IL2075)を解消し、テストユーティリティコードを簡潔化できます。

#127210 Implement Process.Run, RunAsync, RunAndCaptureText, RunAndCaptureTextAsync APIs

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

Processクラスに4つの新しい静的APIを実装しました:Run、RunAsync、RunAndCaptureText、RunAndCaptureTextAsync。これらは標準出力/標準エラーの自動キャプチャ、タイムアウト、キャンセレーション対応など、一般的なプロセス実行シナリオを簡潔に実装できます。

サンプルコード:

// 出力をキャプチャして実行
var result = Process.RunAndCaptureText("dotnet", "--version");
Console.WriteLine(result.StandardOutput);

// タイムアウト付きで非同期実行
await Process.RunAsync("myapp.exe", timeout: TimeSpan.FromSeconds(30));

// ProcessStartInfoを使用した実行
var psi = new ProcessStartInfo("cmd.exe") { ... };
Process.Run(psi);

#127200 Fix .NETFramework build breaks

@danmoseley・GitHub・area-Infrastructure-libraries

.NETFramework(NET481)の垂直ビルド時に、PNSE(Platform-Specific Non-Emulated)アセンブリの XML ドキュメント生成処理が失敗する問題を修正します。UseCompilerGeneratedDocXmlFileが有効な場合、ローカルターゲティングパック(FrameworkList.xml)が存在しない .NET Framework ビルドで net11.0 の内部ビルドが失敗していました。修正により、ターゲティングパックの存在確認を追加して、その場合は PNSE doc-source の自己参照 ProjectReference をスキップするようにしました。

#127199 Fix x86 DAC stack walk regression from Environment.CallEntryPoint skip

@tommcdon・GitHub・area-Diagnostics-coreclr

x86アーキテクチャにおけるDAC/DBIスタックウォークの回帰問題を修正しました。Environment.CallEntryPointをUnwindStackWalkFrameでスキップすることで、x86の「1フレーム先行アンワインド」が不正なフレームポインタを計算し、ICorDebugStackWalk列挙が失敗する問題を解決します。フレームはデバッガUIからはkRuntimeEntryPointFrame分類とGetFrameWorkerのS_FALSE戻り値により非表示のままです。

#127194 Add obsolete compatibility shims for moved Microsoft.Extensions.Logging internal types

@Copilot・GitHub・api-approvedarea-Extensions-Logging

Microsoft.Extensions.Logging.Abstractions アセンブリにおいて、以前のバージョンで利用可能だった *.Internal 名前空間の型(NullScope、TypeNameHelper、FormattedLogValues、LogValuesFormatter)を [Obsolete(error: true)] + [EditorBrowsable(Never)] の互換性shimとして復元する変更です。これにより、これらの型に依存する既存のコードが TypeLoadException で失敗するシナリオに対応します。新しい非obsoleteなパブリックAPIは追加されません。

#127192 Remove RSA guard for OSSL

@PranavSenthilnathan・GitHub・area-System.Security

OpenSSLの非推奨RSA APIに対するガード条件を削除し、Linux bionic arm64でのMono ビルド失敗を修正するPRです。CMakeの設定時に非推奨APIをプローブする際の検出ロジックを簡略化し、現在のすべてのOpenSSLバージョンで該当APIが存在することを考慮して、ガード条件を安全に削除しました。

#127161 Avoid a duplicate definition of CONTEXT_UNWOUND_TO_CALL if building with the v10.0.28000.0 SDK

@tannergooding・GitHub・area-crossgen2-coreclr

Windows SDK v10.0.28000.0以降でCONTEXT_UNWOUND_TO_CALLマクロが定義されるようになったため、CoreCLRのクロスコンパイルヘッダで重複定義エラーが発生していた問題を修正します。ARM64クロスコンパイルセクションでのマクロ定義を#ifndefでガードすることで、既に定義されている場合の重複を回避します。

#127152 Fix dataflow analysis for MakeGenericType/MakeGenericMethod in local methods

@Copilot・GitHub・area-NativeAOT-coreclr

NativeAOT の dataflow 解析で、ローカルメソッド内の MakeGenericType/MakeGenericMethod 呼び出しが正しく処理されていない問題を修正します。コンパイラが生成したローカルメソッド内の呼び出しは、親メソッドとは異なる型定義を持つため、ランタイム依存関係が正しくマッチングされていません。

MakeGeneric<Atom>();

// ローカルメソッド内の MakeGenericTypeSite が SearchDynamicDependencies でマッチしない
static object MakeGeneric<T>() => Activator.CreateInstance(typeof(Gen<>).MakeGenericType(typeof(T)));

class Gen<T>;
struct Atom;

#127090 Fix UnreachableBody with only ref to assembly.

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

ILLinkerのパイプライン実行順序に関するバグを修正しました。到達不可能なメソッド本体内にのみ存在するアセンブリ参照が、SweepStepで保持される一方で参照先アセンブリが削除されるという矛盾が生じていました。CodeRewriterStepをSweepStepよりも前に実行することで、SweepStepが最終的に変換されたメソッド本体を正しく処理するようになりました。

#127051 DI: prevent keyed-instance/scoped call-site cache collision during scope validation

@Copilot・GitHub・area-Extensions-DependencyInjection

Dependency InjectionコンテナのValidateScopes/ValidateOnBuild機能において、キー付きシングルトン(ImplementationInstance)がキーなしのスコープド登録と誤分類される問題を修正しました。登録順序に依存する誤検出(「Cannot consume scoped service ... from singleton ...」)が発生していました。

修正により、ResultCache.None(...)がserviceKeyを保持し、キャッシュキーを(serviceKey, serviceType)のペアから構築するようになり、キー付きとキーなしのコールサイトが同じキャッシュIDを共有しなくなります。

services.AddScoped<IService, ScopedService>();
services.AddKeyedSingleton<IService>("Key", new KeyedSingletonService());
services.AddSingleton<OtherSingleton>();

// ValidateScopes=trueで正しく検証されるようになった
services.BuildServiceProvider(new ServiceProviderOptions
{
    ValidateScopes = true,
    ValidateOnBuild = true
});

#127022 Implement SafeProcessHandle.WaitForExit* methods

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

SafeProcessHandleに5つの新しい公開メソッドを追加します:WaitForExit、TryWaitForExit、WaitForExitOrKillOnTimeout、WaitForExitAsync、WaitForExitOrKillOnCancellationAsync。これにより、Processを経由せず直接SafeProcessHandleからプロセス終了を待機できるようになります。Windows/Unix双方で実装され、Unixではプロセス終了シグナル情報も報告されるよう拡張されました。

// 使用例
SafeProcessHandle handle = /* ... */;
// 同期待機
if (handle.TryWaitForExit(TimeSpan.FromSeconds(5)))
{
    int exitCode = handle.GetExitCode();
}
// 非同期待機
await handle.WaitForExitAsync();

#126990 Implement TrimmingDescriptorNode for ILTrim XML descriptor support

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

ILTrimで未実装だった-x(XMLディスクリプタ)コマンドラインオプションを実装しました。ILCompiler.CompilerのTrimmingDescriptorNodeを再利用し、ILTrim環境用に条件付きコンパイルで適応させています。これにより、XML形式のトリミング設定ファイルがILTrimで処理されるようになります。

#126331 [release/10.0] Improve UnwindInfoTable's performance

@eduardo-vp・GitHub・Servicing-approvedarea-VM-coreclr

Windows x64プラットフォームにおけるアンワインド情報テーブル(UnwindInfoTable)のパフォーマンスを改善するバックポート。エントリをバッファに蓄積してから一括フラッシュすることで、pRtlAddGrowableFunctionTableとpRtlDeleteGrowableFunctionTableの操作コストを償却し、内部のRUNTIME_FUNCTIONテーブル作成のオーバーヘッドを削減します。

#126279 fix import of SPN with Kerberos realm

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

Kerberos認証フローをテストするため、NegotiateAuthenticationのEnterpriseテストスイートを追加します。実際のKDC(Key Distribution Center)に対してクライアント/サーバー間の認証ハンドシェイク、保護レベル、wrap/unwrapシナリオをテストする新しいテストケースを実装しています。

#126247 [Release/10.0] Pass down DJI and MethodDesc to avoid unnecessary PtrHashMap lookup

@hoyosjs・GitHub・Servicing-approvedarea-Diagnostics-coreclr

ReadyToRun対応アプリケーションをデバッグ時にデバッガハングを引き起こす問題を修正します。DebuggerController::BindPatchでGetCodeRegionInfoを呼び出す際に、既に利用可能なDebuggerJitInfoとMethodDescを渡すことで、不要なHashMap::LookupValueルックアップと連鎖的なGCモード遷移を回避し、キャッシュされたCodeRegionInfoをそのまま利用できます。

#126140 Scope installer helix tests to installer changes (keep osx_arm64 for coreclr)

@davidwrighton・GitHub・area-Infrastructure-installer

Installer Helix テストの実行条件をスコープ化し、インストーラー関連のパス変更時のみ実行するように変更しました。以前は CoreCLR および Libraries PR で毎回 5 つの Helix ジョブが実行されていましたが、インストーラーテストは JIT・GC・ライブラリコード変更の影響を受けないため、不要な実行を削減します。例外として osx_arm64 は coreclr.containsChange も含める条件を保持し、シングルファイル関連の問題検出を強化します。

2026年04月21日 (44 PRs)うち Bot 3 件 この日のページ →

#127227 Mark Continuation field accessors as AggressiveInlining

@jakobbotsch・GitHub・tenet-performancearea-VM-coreclrruntime-async

Continuationクラスの小規模なフィールドアクセッサメソッドに[MethodImpl(MethodImplOptions.AggressiveInlining)]属性を追加し、JITインライニング判定を改善するPRです。Unsafe操作を含む intrinsic-heavy なコードは見た目は大きく見えますが、実際には数命令しか展開されないため、明示的にアグレッシブインライニング対象とすることで、ホットパスでのパフォーマンスを向上させます。

#127204 Fix flaky CounterSampleCalculator_ElapsedTime test

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

CounterSampleCalculator_ElapsedTime テストの不安定性を修正しました。このテストは QPC(クエリ パフォーマンス カウンター)と DateTime.Now(システムクロック)という異なるクロックソースで経過時間を比較していたため、CI 環境の負荷下で 0.3s のトレランスを超える誤差が発生し、稀に失敗していました(0.01%の頻度)。修正により、両方の測定に Stopwatch を使用して同じクロックソース(QPC)を共有するようにしました。

#127188 Fix System.TypeLoadException in NukedBit.NRepo global tool

@Copilot・GitHub・area-Extensions-Hosting

.NET 11上でMicrosoft.Extensions.Hosting v2.2.0.0など古いIHostBuilder実装を読み込む際に発生するTypeLoadExceptionを修正します。v3.0で追加されたUseServiceProviderFactory(Func<HostBuilderContext, IServiceProviderFactory<TContainerBuilder>>)オーバーロードが古いアセンブリに存在しないため、型ローダーが実装の不完全性を検出していました。

#127185 [Wasm RyuJit] Fix: Move implReadyToRunUnsupported() call for funclets before wasm codegen

@adamperlin・GitHub・area-CodeGen-coreclr

Wasm RyuJitにおけるReadyToRun(R2R)コンパイルのバグを修正します。最適化コンパイル時にEH(例外処理)を含むメソッドがインライン化され、ホスト側にリロケーションが記録された後、funcletが原因でベイルアウトし、その後のminopts再コンパイルが成功する際に古いリロケーション情報が残される問題を解決します。

funcletベースのimplReadyToRunUnsupported()呼び出しをコード生成前に移動させることで、このような不整合な状態の発生を防ぎます。

#127177 [wasm][coreclr] Fix native relinking

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

WebAssemblyにおけるネイティブリリンクパイプラインの修正。PR #126901で導入されたリリンク生成ソースがWASM固有のcallhelperを適切にアクセスできるようにするため、TERMINATE_R2R_STACK_WALK定義をWASM専用ヘッダに移動し、必要なヘルパーマクロ(NOINLINEなど)をインクルードパスに追加しました。

#127158 JIT: Disallow using float callee saves in x64 functions with patchpoints

@jakobbotsch・GitHub・area-CodeGen-coreclr

x64 JITコンパイラのレジスタアロケータを更新し、パッチポイントを含むメソッドではフローティングポイントカリー保存レジスタの割り当てを禁止します。OSRメソッドではこれらのレジスタが復元されないため、将来のアンワインダーなしの遷移に対応するための変更です。パッチポイントはTier0メソッドにのみ出現するため、パフォーマンスへの影響は限定的です。

#127146 Handle canonical types in casting logic

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

NativeAOT コンパイラにおいて、MakeGenericType のデータフロー分析時に正規型(__Canon / __UniversalCanon)を用いた制約検証を正しく処理するように修正します。従来は正規型を通常のジェネリック制約として扱っていたため、制約チェックで不正と判定され、不要にコンパイルがスキップされていました。正規型をワイルドカード的に扱うことで、有効なジェネリック生成を適切にルート化・コンパイルできるようになります。

#127115 [cDAC] refactor ObjectHandle IData

@rcj1・GitHub・area-Diagnostics-cdac

cDAC(Common Data Access Contract)の ObjectHandle IData 型をリファクタリングしました。従来は ObjectHandle フィールドのアドレスではなく、そのアドレスフィールドの値を期待していたため、読み込み時に余分なポインタ読み取りが必要でした。本変更により、ObjectHandle コンストラクタパラメータが OBJECTHANDLE フィールドのアドレスになり、他の IData と一貫性を持つようになりました。これにより ObjectHandle フィールドを強型で宣言でき、ReadDataField<ObjectHandle> を直接使用できます。

#127104 [cDAC] Implement ClrDataMethodDefinition APIs

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

cDAC(Common Data Access Component)の管理レイヤーで IXCLRDataMethodDefinition インターフェースの5つのAPI(GetName、HasClassOrMethodInstantiation、StartEnumInstances、EnumInstance、EndEnumInstances)を実装しました。ネイティブDAC相当の動作をcDACコントラクトを活用して実現し、レガシーDAC互換性検証とメタデータフォールバック機能を備えています。SetCodeNotificationのみ実装が保留されています。

#127102 Centralize RuntimeVersions list in DumpTestBase

@Copilot・GitHub・area-Diagnostics-cdac

dump-based cDAC統合テストにおいて、複数の場所に重複していたランタイムバージョンリスト("local"と"net10.0")を一元管理するためにリファクタリング。private static readonly string[] RuntimeVersionsフィールドを追加し、TestConfigurationsとGetDumpSource()の両メソッドで共用することで、新しいランタイムバージョンの追加時に編集が必要な箇所を1ヶ所に統一。

#127093 Throw CryptographicException instead of NullReferenceException when URI attribute is missing in EncryptedXml

@Copilot・GitHub・area-System.Security

EncryptedXml.DecryptDocument()処理時にKeyInfo/RetrievalMethod要素のURI属性が欠落している場合、不適切なNullReferenceExceptionが発生していた問題を修正。Utils.ExtractIdFromLocalUriに null/empty チェックを追加し、適切なCryptographicExceptionをスロー(エラーメッセージ: SR.Cryptography_Xml_UriRequired)するように変更しました。

修正前の動作:

var doc = new XmlDocument { XmlResolver = null };
doc.LoadXml("<root><EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'>" +
    "<KeyInfo xmlns='http://www.w3.org/2000/09/xmldsig#'><RetrievalMethod/></KeyInfo>" +
    "<CipherData><CipherValue>AA==</CipherValue></CipherData></EncryptedData></root>");
new EncryptedXml(doc).DecryptDocument(); // NullReferenceException が発生

#127089 Fix NativeAOT: pass package satellite assemblies to ILC and remove them from publish output

@Copilot・GitHub・area-NativeAOT-coreclr

NativeAOT publish時にNuGetパッケージのサテライトアセンブリ(リソースDLL)が公開ディレクトリに漏出し、ILCへの--satellite:引数渡しに失敗する問題を修正。SDKがAssetType='resources'条件でサテライトをResolvedFileToPublishに配置していたが、タスク側がPostprocessAssembly=trueメタデータを条件としていたため、サテライト分類ロジックが死コード化していたのが根本原因。

#127063 [ios-clr] Remove stale ActiveIssue attributes for tests passing on Apple mobile CoreCLR

@kotlarmilos・GitHub・area-Infrastructureos-ios

Apple mobile CoreCLR(iOS/tvOS/watchOS)上で正常に動作するテストから、ActiveIssue属性を削除するクリーンアップを実施。これらの属性は、プラットフォーム固有の既知の問題を記録していましたが、テストが実際には合格しているため、属性が不要になりました。同時にtests.proj内の関連する除外設定も削除されています。

#127036 Force MetaDataGetDispenser to be linked into singlefilehost

@elinor-fung・GitHub・area-Host

.NET 10で静的ライブラリのデッドコード削除により失われたMetaDataGetDispenserエクスポートをsinglefilehostで強制的に保持するための修正。Unix/macOSではリンカフラグを追加し、Windowsでは既存の.defファイル設定を活用。エクスポートが存在することを検証するリグレッションテストも追加します。

#127035 [cDAC] Implement IsDiagnosticsHiddenOrLCGMethod for cDAC

@barosiak・GitHub・area-Diagnostics-coreclr

cDAC(コンテナー化されたDAC)に IsDiagnosticsHiddenOrLCGMethod を実装しました。新しく IRuntimeTypeSystem.IsDiagnosticsHidden コントラクトAPIを追加し、IL-stub、wrapper-stub、非同期サンク(async-thunk)メソッドの検出をサポートします。これにより、ネイティブVMとの完全な機能パリティが達成されます。

#126996 Enable 12 browser/CoreCLR library test suites

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

browser-wasm + CoreCLR(インタプリタ)環境での12のライブラリテストスイートを有効化するPRです。スイート全体の除外ではなく、個別の失敗テストに[ActiveIssue]属性を付与することで、75,272個のテストの実行を実現します。これにより、テストカバレッジの拡大とプラットフォーム固有の問題の可視化が図られています。

#126992 ILTrim: Preserve property/event metadata when accessor methods are kept

@Copilot・GitHub・area-Tools-ILLink

ILTrim(IL トリミング ツール)のメタデータ保持ロジックを改善し、アクセサーメソッドが到達可能な場合、プロパティおよびイベントのメタデータ行を保持するようにしました。同時に、型が削除されたときの PropertyMap/EventMap テーブル関連付けの誤りを修正しています。これにより ILLink の既存動作との整合性が向上します。

#126949 Replace CoreCLR SList with NativeAOT-style design

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

CoreCLRの旧来のセンチネルベースのSList実装をNativeAOTスタイルの設計に統一するもの。センチネルノードを廃止し、空リストはNULLで表現し、traits-based next-pointerアクセスに変更。CoreCLRとNativeAOTで共有のsrc/coreclr/inc/slist.hを用いる統一実装となる。

// Mode制御による柔軟な操作許可
template <typename T> using SList = SList<T, SListTraits<T, SListMode::Thin>>;      // デフォルト: 頭操作のみ
template <typename T> using SListTail = SList<T, SListTraits<T, SListMode::Tail>>;  // tail追跡対応

#126880 JIT: Restore arm64, LA64 and RISCV64 OSR callee saves from tier0 frame

@jakobbotsch・GitHub・area-CodeGen-coreclr

ARM64、LoongArch64、RISCV64のOn-Stack Replacement (OSR)機能を改善し、Tier0関数で保存されたCallee-Saveレジスタの値をOSR関数のプロローグで復元する仕様に変更しました。これにより、Tier0からOSRへの遷移時にスタックアンワインドが不要になり、単純なジャンプで実行できるようになります。目標はASP.NETベンチマークで報告されている#120865の修正です。また、AltJitが生成したパッチポイント情報のVM保存サポートも追加しました。

#126878 Fix ConfigurationBinder suppressor to only suppress intercepted calls

@svick・GitHub・linkable-frameworkarea-Extensions-Configuration

ConfigurationBinder ソースジェネレータの診断サプレッサーを修正し、IL2026/IL3050 AOT警告を正確に処理します。2つの問題に対応しています:

  1. メソッド引数として渡される呼び出し(例:Some.Method(c.Get<MyOptions>()))で、FindNodeが正しいノードを特定するようgetInnermostNodeForTie: trueを追加
  2. サプレッサーが生成された[InterceptsLocation]属性をスキャンし、実際に インターセプトされた呼び出しサイトのみを抑制するよう変更(#96643への対応)

#126774 [cDAC] Implement simple DacDbi APIs with Loader contract

@rcj1・GitHub・area-Diagnostics-cdac

cDAC(Compact Data Access Contract)を通じて、DacDbi APIのGetModuleDataおよびIsModuleMappedを実装しました。ILoaderコントラクトを拡張して、DomainAssembly↔Moduleのナビゲーションと"is mapped"クエリをサポートします。これにより、デバッガがモジュールに関する詳細情報を取得できるようになります。

#126768 [naot] [Runtime async] Support for covariant override of Task -> Task<T>

@eduardo-vp・GitHub・area-NativeAOT-coreclrruntime-async

Native AOT環境で、基底メソッドがTaskを返し派生メソッドがTask<T>を返す共変戻り値型のオーバーライドをサポートするための実装です。CoreCLRランタイムの非同期処理修正(#125900)をNative AOTの型システムに統合し、戻り値を破棄する非同期サンク(ReturnDroppingAsyncThunk)を導入して仮想/インターフェースメソッド解決に組み込みます。

#126596 Add logic to muxer to invoke AOT-ed SDK

@elinor-fung・GitHub・area-Host

muxerにAOT(Ahead-of-Time)コンパイルされたSDKをネイティブで呼び出すロジックを追加しました。解決されたSDKディレクトリにdotnet-aot共有ライブラリが存在する場合、muxerはそれをロードしてdotnet_executeエントリポイントを呼び出します。AOTライブラリがない場合や期待されるエントリポイントがない場合は、既存のマネージドSDKパスにフォールバックします。

#126509 P/Invokes backed by transient IL

@jkoritzinsky・GitHub・area-VM-coreclr

非可変長引数(non-varargs)P/Invokeの実装方式を、IL stubから一時的IL(transient IL)に変更します。この変更により、P/Invoke毎のDynamicMethodDesc 1個を削除し、ポータブルエントリポイント向けのインタープリター回避策とSwift関連の対応を削除します。P/Invokeメソッドはティアード・コンパイルの対象外のままです。

#126407 [browser] Don't copy framework assets to output during build

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

WebAssemblyアプリケーション構築時にフレームワークアセット(.wasm、.jsファイル等)をbin/wwwroot/_framework/にコピーすることを廃止します。dotnet runは静的Webアセットミドルウェアを使用してobj/などのソースロケーションからファイルを直接提供するため、物理的なコピーは不要です。変更により、ビルド出力の_framework/ディレクトリが約178ファイルから2ファイルに削減されます。

#125917 Fix ObjectToIdCache.RemoveAt() backward-shift deletion bug (fixes intermittent DCS_MyPersonSurrogate_Stress failure)

@Copilot・GitHub・area-Serialization

ObjectToIdCache.RemoveAt()の後方シフト削除アルゴリズムに、線形探査時の要素移動判定バグを修正。ラップアラウンドした探査チェーン内で削除時に空きスロットを埋めるべき要素が移動されず、次のシリアル化で同じオブジェクトが新しいIDを取得し、IsReference=trueラウンドトリップが破綻するバグを解決します。

#123040 Fix trimming analyzer missing diagnostics for method calls in field access expressions

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

Trimming Analyzerがフィールドアクセス式内のメソッド呼び出しに対する診断を報告していない問題を修正しました。例えば、type.GetInterfaceMap(@interface).TargetMethodsはIL2072警告を出さないのに対し、type.GetInterfaceMap(@interface)は正しく警告を出していました。根本原因はTrimAnalysisVisitor.VisitFieldReferenceがフィールドの実例操作をフィールド処理前に訪問していなかったことです。修正により、プロパティ参照やイベント参照と同じ方式で実例を訪問するようになります。

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

#127156 Skip CallEntryPoint in debugger single-step to prevent false stop

@tommcdon・GitHub・area-Diagnostics-coreclr

デバッガーでMainの最後の行からステップ実行すると、マネージドコードのEnvironment.CallEntryPoint(ソース情報を持たないランタイムヘルパーフレーム)で停止してしまう問題を修正します。TriggerSingleStepの既存のIsInteropStubチェックを拡張してg_pEnvironmentCallEntryPointMethodDescも認識し、ここでシングルステップを無効化してプロセスを自然に終了させます。

#127139 Propagate sync-faulted FlushAsync exceptions through the WebSocket er…

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

ManagedWebSocket.SendFrameLockAcquiredNonCancelableAsyncで同期完了した書き込みと同期フォルトFlushAsyncの組み合わせの場合、例外処理の一貫性を修正しました。修正前は生のストリーム例外が呼び出し元に渡されていましたが、修正後は他のエラーパスと同様にWebSocketException(ConnectionClosedPrematurely)でラップされるようになります。

#127116 Fix StartAndForget_StartsProcessAndReturnsValidPid by mapping ProcessStartInfo.Arguments for the string+args overload

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

StartAndForget_StartsProcessAndReturnsValidPid テストが useProcessStartInfo: false の場合に間欠的に失敗していた問題を修正。RemoteExecutor が Arguments プロパティを設定するのに対し、テストが ArgumentList を使用していたため、dotnet が不正な引数で起動されていました。ProcessStartInfo.Arguments を文字列リストにマッピングして Process.StartAndForget(string, IList<string>?) オーバーロードに渡すようになりました。

#127105 fix: Ensure buffer space before reading in Decompress method

@pumpkin-bit・GitHub・area-System.IO.Compressioncommunity-contribution

Zstandard形式のデータ解凍時に、圧縮データが64KBバッファの境界で終了する場合、バッファが満杯になってAvailableSpanが空になり、ファイルからの読み込みが0バイトとなる例外が発生する問題を修正しました。ReadおよびReadAsyncループに_buffer.EnsureAvailableSpace(1)の呼び出しチェックを追加し、バッファ内のデータをシフトして新しいデータの読み込み領域を確保します。

#127103 JIT: Renable SSA-aware PHI jump threading

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITの冗長分岐削除(jump threading)機能を改善し、PHIベースのブロックを通じたジャンプスレッディングを有効にします。PHIの使用箇所がブロックとその直後の後継ブロック内で完全に解決可能な場合、スレッディングを実行します。また、後継ブロックのSSA/VN使用箇所を適切に書き換え、SSA状態の一貫性を保ちます。特に、ローカル変数のフィールド使用に対して正しいVN更新を確保する修正が含まれています。

#127084 [browser] Export useful browser tuntime TypeScript types

@elringus・GitHub・arch-wasmarea-System.Runtime.InteropServices.JavaScriptcommunity-contributionos-browser

ブラウザランタイムのTypeScript型定義において、アセット関連の型を公開APIエントリーポイントから適切に再エクスポートする変更です。これまで型定義は存在していましたが、パブリックAPIサーフェスから一貫して再エクスポートされていませんでした。MonoおよびCoreCLRの両ランタイムで、トップレベルの型エクスポートファイル経由でこれらの型が利用可能になります。

#127076 Run libtests in interpmode1 so it is faster

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

libtests(ライブラリテスト)のCI/CDパイプラインを最適化し、Windows実行を削除してinterpmode1での実行に統一することで、パイプライン全体の実行時間を短縮する変更です。STJ.Tests(System.Text.Json Tests)では、interpmode1が約15分で実行可能であるのに対し、interpmode3は1.5時間以上かかるため、より高速なモードでのテスト実行に変更されました。

#127072 Fix gc hole when resuming async continuation via interpreter

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

インタープリタモードでの非同期継続再開時に、GCに報告されていなかったインテリアポインタによるGCホールを修正しました。AsyncHelpers_ResumeInterpreterContinuationWorkerが受け取るインテリアポインタが正しくGC保護されていなかったため、InterpMode=1での予期しないクラッシュが発生していました。

#127054 [ios-clr] Disable Debug CoreCLR smoke jobs on Apple mobile and enable aggressive trimming in Release

@kotlarmilos・GitHub・area-Infrastructureos-ios

Apple モバイルプラットフォーム(tvOS、iOSSimulator、MacCatalyst)の Debug CoreCLR Smoke ジョブを無効化し、対応する Release ジョブで EnableAggressiveTrimming と EnableAdditionalTimezoneChecks を有効化します。これにより、CI が顧客に提供される Trimmed ライブラリビルドパスをテストできるようになります。

#126991 Add delegate BeginInvoke/EndInvoke pair tracking in ILTrim

@Copilot・GitHub・area-Tools-ILLink

ILTrimが委譲型(delegate)のBeginInvokeとEndInvokeメソッドペアの追跡に対応しました。.NETランタイムは両メソッドが共存することを要求しますが、ILTrimはこの依存関係を追跡していなかったため、一方のみが呼び出される場合に不正な形式のアセンブリが生成されていました。本修正により、委譲型でいずれかのメソッドが保持される場合、ペアとなるメソッドも自動的に保持されるようになります。

#126973 Wasm import thunk corrections

@davidwrighton・GitHub・area-crossgen2-coreclr

WebAssembly (WASM) ReadyToRun import thunkの生成ロジックをInterpreter呼び出し規約とTransitionBlockに準拠するよう改善しました。これにより、DelayLoad_MethodCallをWASM上で実装でき、スタブ実装から実装へ移行します。主な変更は、ArgumentIteratorとTransitionBlockを用いたオフセット計算、モジュール修復RVAの伝達、WASM32呼び出し規約モデルの更新です。

#126966 Fix Linux madvise() advice values incorrectly combined via bitwise OR in GCToOSInterface::VirtualReset

@Copilot・GitHub・area-VM-coreclr

Linux上のGCメモリリセット処理で、複数のmadvise()助言フラグをビット演算で結合して単一の呼び出しに渡していた問題を修正しました。madvise()はビットマスクではなく単一の定数を期待するため、カーネルバージョンに応じてEINVALエラーが発生するか、意図しない操作(カーネル≥5.18でMADV_DONTNEED_LOCKED)が実行されていました。修正により、MADV_DONTDUMPとMADV_FREE(またはPOSIXフォールバック)を別々のmadvise()呼び出しで実行するようにしました。

// 修正前: 無効な値(24)をmadvise()に渡す
madviseFlags = MADV_DONTDUMP | MADV_FREE;  // 16 | 8 = 24
madvise(address, size, madviseFlags);

// 修正後: 個別に呼び出す
madvise(address, size, MADV_DONTDUMP);
madvise(address, size, MADV_FREE);

#126952 Add mobile platform failure scanner agentic workflow

@kotlarmilos・GitHub・area-skills

モバイルプラットフォーム(iOS、tvOS、MacCatalyst、Android)のビルド失敗を自動検出・分類・修復するGitHub Agentic Workflowを追加します。毎日スケジュール実行され、Azure DevOpsのビルド失敗をトリアージして、インフラ関連はIssueに、コード関連はドラフトPRで報告します。安全性のため、すべての書き込み操作は権限スコープの制限されたsafe-outputsジョブを通じて実行され、PRは最大2個、Issueは最大2個、コメントは最大5個に制限されています。

#126738 Exclude cgroup implementation from non-Linux Unix builds

@Copilot・GitHub・area-PAL-coreclr

cgroup実装がmacOSおよびFreeBSDなどの非Linuxプラットフォームでコンパイル・リンクされていたため、これらをLinux/Android専用にゲーティングする変更です。cgroupはLinux固有のメカニズムであり、他のプラットフォームでは機能していないデッドコード(返り値が0/false)となっていました。

#126380 [ILLink/ILCompiler] Fix crash when array types are used as TypeMap trim targets

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

PublishTrimmed および PublishAot で、TypeMap 属性の trim ターゲットとして配列型(例:typeof(Foo[]))を指定した場合のクラッシュと無音削除を修正します。ILLink では TypeDefinition cannot be resolved from 'Mono.Cecil.ArrayType' という NotSupportedException でクラッシュ、ILCompiler では条件判定ミスにより TypeMap エントリが無音削除されていました。

// 修正前:クラッシュまたは無音削除
[assembly: TypeMap<TestTypeMap>("Key", typeof(SomeTarget), typeof(Foo[]))]

// 修正後:Foo[] → Foo に正規化して処理
// TypeMap エントリは要素型 Foo が到達可能なときに存在

2026年04月19日 (11 PRs) この日のページ →

#127118 Skip cross-bitness cDAC dump tests until ClrMD supports it

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

cDAC dump統合テストにおいて、ホストのポインタサイズとダンプアーキテクチャが異なる場合(クロスビットネス、例:32ビットホストが64ビットダンプを読み込む)のテストをスキップする機能を追加しました。ClrMDのClrDataAddressトランケーション問題(microsoft/clrmd#1423で修正中)がまだサポートしていないため、テスト失敗を回避するものです。

#127109 Cleanup the xarch perfscore handling

@tannergooding・GitHub・area-CodeGen-coreclr

x86/x64アーキテクチャのJITエミッタにおけるパフォーマンススコア(perfscore)モデリングをクリーンアップ・拡張するPRです。複数の命令でメモリレイテンシーの処理が不完全であった、EA_64BYTEなどの大きいオペランドサイズへの対応がなかった、SIMD操作の高コストが考慮されていなかった等の問題を修正します。

メモリとインストラクション特性を分離して計算し、一貫性のある方法で統合するようにリファクタリング済みです。

#126975 [cDAC] Implement thread-related DacDbi APIs

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

cDAC(Compact Data Access)ベースの DacDbiImpl に4つのスレッド関連APIを実装します。GetThreadObject、HasUnhandledException、GetCurrentCustomDebuggerNotification、および GetCurrentException を Thread コントラクトを使用して実装し、ダンプベースのテストにより新しいAPIがコントラクト提供のスレッド状態と一貫性のある値を返すことを保証します。

#126924 Clear blob returned by BlobBuilder.ReserveBytes.

@teo-tsirpanis・GitHub・area-System.Reflection.Metadatacommunity-contribution

BlobBuilder.ReserveBytesが返すバイト領域をゼロクリアする修正です。プール再利用されたバッファから古いデータが露出する非決定的な動作とデータリークの可能性を排除します。Array.Clearを追加して予約領域を初期化し、呼び出し元が再利用バッファの古いデータを観察しないようにします。

#126168 Reduce helix queue fan-out for library tests on PR builds

@davidwrighton・GitHub・area-Infrastructure

PR ビルドにおけるライブラリテストの Helix キュー ファンアウトを削減することで、CI 実行時間を短縮する変更です。複数の OS バージョン/ディストリビューション上でテストを実行していた構成を、PR ビルドでは最小限の OS セットに絞り、追加 OS での検証は定期ビルド(1 日 2 回)で実施するように変更します。

#125333 JIT: Avoid resolving def-use conflicts by changing use registers

@jakobbotsch・GitHub・area-CodeGen-coreclr

JITのLinear Scan Register Allocator (LSRA)で、def-use競合を解決する際にuse側のレジスタ割り当てを変更する慣行を廃止し、代わりに明示的なコピーを挿入する方式に変更します。これにより、LSRAとコード生成間の曖昧な暗黙的契約を排除し、より堅牢な実装にします。同時に、GT_CATCH_ARGのコード生成バグとマルチレジスタ定義の問題を修正します。

#124967 Fix IndexOf upper-bound guard in ImmutableArray/List

@prozolic・GitHub・area-System.Collectionscommunity-contribution

ImmutableArray<T>、ImmutableArray<T>.Builder、ImmutableList<T>.NodeのIndexOfメソッドにおける上限検証を修正しました。startIndexの上限チェックを< Countから<= Countに変更し、Array.IndexOfの動作(count == 0の場合にindex == Countを許可)に合わせました。これは#124560で修正されたLastIndexOfの同様の問題に続くフォローアップです。

2026年04月18日 (18 PRs) この日のページ →

#127101 Suppress debugger filter notification for UCO entrypoint during EH dispatch

@tommcdon・GitHub・area-Diagnostics-coreclr

PR #126222でアプリケーションエントリポイントをネイティブCallDescrWorkerInternalからマネージドEnvironment.CallEntryPoint(UnmanagedCallersOnly属性付き)に移動した際、例外ハンドリング中のデバッガー通知が不正なタイミングで発生し、ハンドルされない例外の伝播が破損していた問題を修正します。Environment.CallEntryPointのフィルター句についてのみデバッガー通知を抑止し、プロファイラーとETW通知は維持します。

#127094 Add support for utilizing F16C instructions on xarch

@tannergooding・GitHub・area-CodeGen-coreclr

xarch(x86/x64)プラットフォームでF16C命令を利用したSystem.Half ↔ floatの明示的変換の最適化を追加します。前回のABI関連問題を解決し、AVX2対応ハードウェアで動作する初期実装です。JITがHalf.op_Explicitをnamed intrinsicとして認識し、vcvtph2ps/vcvtps2ph命令に展開することで、関数呼び出しから直接的なHW命令に変換されます。

変更内容:

  • System.Halfと明示的な変換演算子に[Intrinsic]属性を追加
  • named intrinsic NI_System_Half_op_Explicitを追加
  • importerでAVX2変換HW intrinsicsへの展開ロジックを実装
  • xarch HW intrinsic一覧、containment/perf metadataを更新

#127071 [release/10.0] Enhance createdump to detect alt stack execution

@hoyosjs・GitHub・Servicing-approvedarea-Diagnostics-coreclr

createdumpがalternate signal stack(sigaltstack/SA_ONSTACK)上でのクラッシュ時に、ネイティブスタック展開が不完全になる問題を修正します。libunwindのunw_is_signal_frameを使用してシグナルトランポリンフレームを検出し、スタックポインタ(SP)の単調性チェックを緩和することで、展開がシグナルトランポリンを越えて元のスタックに戻れるようにします。これにより、ダンプに元のスレッドスタックメモリが完全に含まれるようになります。

#127068 Enhance createdump to detect alt stack execution

@hoyosjs・GitHub・area-PAL-coreclr

createdumpがalternate signal stack上でのクラッシュ時にネイティブスタックの元のスレッドスタックをキャプチャできない問題を修正しています。信号トランポリンフレームを検出するためにunw_is_signal_frameを使用し、スタックポインタ(SP)の単一の低下を許容することで、unwinder が元のスタックへ遷移してメモリをダンプに含めることができるようになります。

#127067 [release/9.0] Enhance createdump to detect alt stack execution

@hoyosjs・GitHub・Servicing-approvedarea-Diagnostics-coreclr

createdumpがシグナルハンドラ用の代替スタック(SA_ONSTACK)上で発生したクラッシュの場合、ネイティブスタックアンワインドに失敗する問題を修正します。libunwind の unw_is_signal_frame を使用してシグナルトランポリンフレームを検出し、スタックポインタの減少を許容することで、元のスタックへの復帰とメモリ取得を可能にします。

修正により、シグナルハンドラ経由のクラッシュダンプに元のスレッドスタックメモリが含まれるようになります。

#127066 [release/8.0] Enhance createdump to detect alt stack execution

@hoyosjs・GitHub・Servicing-approvedarea-Diagnostics-coreclr

createdumpがalternate signal stack上でのクラッシュ時に元のスレッドスタックをキャプチャできない問題を修正します。シグナルトランポリンフレーム検出時にスタックポインタ(SP)の単調性チェックを緩和し、元のスタックメモリをダンプに含めることで、minidumpの完全性を確保します。

#127048 Improve simd and floating-point costing for xarch

@tannergooding・GitHub・area-CodeGen-coreclr

xarch(x86/x64)アーキテクチャにおけるSIMDと浮動小数点演算のJIT命令コスティングを現代のコードジェネレーション特性に合わせて更新しました。従来のコスティングは32ビット時代のx87 FPUベースであり、ハードウェア組み込み命令はcostEx=1, costSz=1で統一されていたため、CSEなどの最適化が働きにくい状況を改善します。大多数の浮動小数点命令は最小4サイクル、多くのSIMD操作は汎用命令より著しく多くのコードジェネレーションバイト数を消費するため、より正確な最適化判定が可能になります。

#127037 [cDAC] Add simple Debugger DacDbi APIs

@Copilot・GitHub・area-Diagnostics-coreclr

cDAC(Component Data Access)経由でデバッガー関連の4つの新しいDacDbi APIを追加します:RequestSyncAtEvent、SetSendExceptionsOutsideOfJMC、GetDebuggerControlBlockAddress、EnableGCNotificationEvents。これらはデバッガー側の簡単な操作と状態照会をサポートし、対応するデータディスクリプタと単体テストも含まれます。

#127020 Change cDAC contract versioning from integer to string identifiers

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

cDAC(CoreCLR Data Access Contract)のコントラクト バージョン管理スキームを整数型(例:1、2)から文字列識別子(例:"c1"、"c2")に変更します。この変更により、複数のプラットフォームが異なるプレフィックス(例:NativeAOT用の"n1")を使用する際に、整数値の範囲衝突を回避できます。変更はネイティブ記述子生成、ビルドツール、マネージド読み取りパイプライン全体に及びます。

#126785 Haiku: Apply .NET-specific llvm-libunwind patches

@trungnt2910・GitHub・NO-SQUASHarea-PAL-coreclrcommunity-contribution

.NETランタイムがHaiku OSで使用するsetRegisterの呼び出し方式に合わせるため、llvm-libunwindのHaiku固有パッチを適用します。.NETではsetRegisterを3引数で呼び出し、最後の引数として"location"(レジスタの位置情報)を渡します。既知の位置情報がない場合は0を渡すため、UnwindCursor.hppの最近のHaiku固有呼び出し箇所を更新しました。

#126547 Reapply "Inline CORINFO_HELP_ARRADDR_ST helper call, remove WriteBarr… …ier FCall" (#126530)

@EgorBo・GitHub・area-VM-coreclr

CORINFO_HELP_ARRADDR_STヘルパー呼び出しのJITインライン化を再適用し、古いCastHelpers.WriteBarrier FCCall実装を、JITが展開可能な新しい管理型のRuntimeHelpers.WriteBarrier内在関数に置き換えます。これにより、配列要素の代入時のWrite Barrier操作がより効率的にインライン化されるようになります。

2026年04月17日 (33 PRs)うち Bot 3 件 この日のページ →

#127038 Backport System.Text.RegularExpressions XML docs from dotnet-api-docs to source

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

System.Text.RegularExpressionsの包括的なXMLドキュメンテーションをソースコードに逆ポート(backport)し、コンパイラ生成XMLドキュメントを公式ドキュメントの単一の情報源とします。新しいAPI(RegexOptions.AnyNewLine、NonBacktracking、GeneratedRegexAttributeメンバー)がLearn.microsoft.comで正しく表示されるようにし、dotnet-api-docsリポジトリでの個別パッチ適用を不要にします。

#127030 [browser][coreCLR] Fix loadBootResourceCallback receiving undefined integrity and refactor config merge

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

ブラウザ向けCoreCLR JavaScriptローダーの2つの問題を修正します:

  1. loadBootResourceCallbackに渡されるintegrityパラメータが常にundefinedになっていたバグを修正し、代わりにアセットマニフェストから取得したhashフィールドを使用
  2. ローダー設定マージロジックをリファクタリングして、直接ターゲットオブジェクトに書き込むことでマージ後のリソースが上書きされることを防止

#127019 [cDAC] Adding TryGetContract on ContractRegistry to allow more custom behavior if contract is not found

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

cDAC(Common Data Access Component)のContractRegistryにTryGetContractメソッドを追加し、コントラクトが見つからない場合の制御フローを例外に依存しない設計に改善するもの。従来のGetContractは見つからない場合にNotImplementedExceptionをスローしていたが、一部のAPIではS_OKを返すなど異なる動作が必要なため、呼び出し側が例外ベースではなく戻り値で処理できるようにした。

// 使用例
if (contractRegistry.TryGetContract<IReJIT>(out var contract, out string? reason))
{
    // コントラクトが利用可能
}
else
{
    // コントラクト未対応 - カスタム動作を実行
}

#127013 Fix browser-wasm CI coverage gap for npm config changes

@steveisok・GitHub・area-Infrastructure

browser-wasm CI の カバレッジギャップを修正するPRです。src/native/package.json や package-lock.json などの npm 設定変更が、実際に npm run rollup を実行する browser-wasm CoreCLR ビルドを トリガーしていませんでした。この問題により、Dependabot PR が serialize-javascript v7 への更新時に CI を通過してしまい、マージ後に crypto is not defined エラーで破損していました。

#127001 Add UnionAttribute and IUnion interface to System.Runtime.CompilerServices

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

System.Runtime.CompilerServicesに承認済みのUnion型サポートAPI(UnionAttributeとIUnionインターフェース)を実装します。コンパイラがUnion型を認識するための属性と、ランタイムでUnionの値にアクセスするためのインターフェースを提供します。

[Union]
public struct Pet : IUnion
{
    public Pet(Cat value) => Value = value;
    public Pet(Dog value) => Value = value;
    public object? Value { get; }
}

#126988 Fix trimmed library test assemblies missing from app bundles on tvOS

@kotlarmilos・GitHub・area-Infrastructure-libraries

PR #125673でLibrary出力プロジェクトのTrimmerRootAssemblyアイテム作成がスキップされたため、tvOSのRelease Library テスト時にILLinkによりテストアセンブリが完全にトリムされてしまう問題を修正します。RootEntireIntermediateAssemblyターゲットを変更し、メタデータ更新ではなくRemove+Includeを用いて、SDKが提供しないLibraryプロジェクトでも常にRootMode=allのTrimmerRootAssemblyアイテムが作成されるようにします。

#126946 [browser] CoreCLR in-tree relink

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

CoreCLR browser-wasm アプリケーション向けの完全なネイティブ再リンク・パイプラインを実装します。これにより、NativeFileReference を通じてカスタムネイティブコードを含めながら、CoreCLR 静的ライブラリから dotnet.native.wasm を再リンクできるようになります。Emscripten ベースの構築パイプラインで、スタブ的な WasmBuildApp / WasmTriggerPublishApp ターゲットに置き換わります。

#126928 [cDAC] Implement RequiresAlign8 for cDAC

@barosiak・GitHub・area-Diagnostics-coreclr

cDAC(Common Data Access Component)のRuntimeTypeSystemコントラクトにRequiresAlign8フラグの実装を追加しました。このフラグはメソッドテーブルが8バイト境界での配置を必要とするかどうかを示します。実装は既存のDacDbiImplを通じて公開され、DEBUG時には従来のDAC実装との相互検証を行っています。

#126906 Improve xplat dump test work item naming

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

クロスプラットフォーム cDAC ダンプテストの命名を改善し、テスト結果にホストプラットフォームとダンプソースプラットフォーム両方が表示されるようにしました。

Helix ワークアイテム名が CdacXPlatDumpTests_windows_x64 から CdacXPlatDumpTests_host_linux_arm_dumps_windows_x64 に変更され、個別の xUnit テスト表示名が GetModule_Succeeds(config: local/r2r) から GetModule_Succeeds(config: local/r2r, target: windows/x64) に変更されます。

#126893 Extend xcrun SDK resolution to all Apple platforms for NativeAOT linker

@Copilot・GitHub・area-Infrastructure-libraries

macOS 15以上でNativeAOT ビルドが間欠的に失敗する問題を修正しました。Swift自動リンク ライブラリ(swift_Builtin_floatなど)がXcode SDKパス配下に移動したため、xcrun --show-sdk-pathで SDK パスを解決し、-isysrootによるパス再マッピングを活用することで対応します。これまでmacOS デスクトップターゲットはSDK解決に参加していませんでしたが、iOS系プラットフォームと同じメカニズムを適用することで問題を解決します。

#126848 Save all volatile argument registers in GC probe hijack frames on AMD64 and ARM64

@Copilot・GitHub・area-NativeAOT-coreclr

NativeAOT ランタイムの GC probe hijack フレーム で volatile な引数レジスタを保存・復元するように改善し、GC スタックウォーク時にレジスタが生きた GC 参照を保有している場合の保存位置の喪失を防止します。これにより CrossGen2 の GC promotion 時に発生していた AV を修正します。また JIT の interface lookup ヘルパーのキルセット更新と PHI ベース jump threading の回帰修正も含まれます。

#126840 Add early long path validation to Windows build script

@pavelsavara・GitHub・area-Infrastructure

Windows上でロングパスサポートが有効になっていない場合、ビルド後半で診断困難なエラーが発生する問題に対して、ビルドスクリプト(eng/build.ps1)の早期段階でロングパスサポートを検証するチェック機能を追加するものです。HKLM:\SYSTEM\CurrentControlSet\Control\FileSystemレジストリキーを確認し、260文字を超えるパスを作成できるか事前検証を行い、ロングパスサポート未有効な場合は早期終了して対応方法を提示します。

#126830 [browser][event-pipe] EventPipe diagnostic server TypeScript for CoreCLR

@pavelsavara・GitHub・arch-wasmarea-Diagnostics-coreclros-browser

Mono から EventPipe 診断サーバーの TypeScript 実装を CoreCLR ブラウザランタイムパスにポートします。ネイティブ EventPipe がブラウザ上の JS/TS 診断サーバーを駆動できるよう、JS トランスポート(直接実行)と WebSocket トランスポート(dotnet-dsrouter 経由)の両方をサポートし、クロスモジュール交換を通じてネイティブコードと統合します。現在の段階ではエンドツーエンド動作は未実装です。

#126752 Add cDAC no-fallback test leg to runtime-diagnostics pipeline

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

cDAC(データアクセスレイヤー)の段階的な実装進捗を測定するため、レガシーDAC へのフォールバックを制御する新しいテスト基盤を導入します。LegacyFallbackHelperという粒度の細かい許可リストを実装し、CDAC_NO_FALLBACK=1設定下で特定のメソッドのみフォールバックを許可しながら、その他の未実装API はブロックします。runtime-diagnostics CI パイプラインに統合し、すべてのフォールバック試行(許可・ブロック両方)をメソッド名・ファイル・行番号付きで stderr に記録します。

#126566 [RISC-V] Use fine-grained fence variants for memory barriers

@JamieMagee・GitHub・area-CodeGen-coreclrcommunity-contributionarch-riscv

RISC-V JIT コード生成における instGen_MemoryBarrier メソッドが、barrierKind パラメータを無視して常に fence rw,rw (最も重い命令) を生成していた問題を修正しました。RISC-V の fence 命令は先行・後続命令の順序制御(読取、書込、またはその両方)をビット単位で制御可能なため、より細粒度の barrier variant を使用してパフォーマンスを改善します。

#126486 Add ReadyToRun test project and create CrossModuleInliningInfo section in R2R reflection library

@jtschuster・GitHub・area-ReadyToRun

ReadyToRun(R2R)出力の詳細な単体テストを可能にするため、新しいILCompiler.ReadyToRun.Testsプロジェクトを追加します。このプロジェクトはRoslyn経由でC#ソースをインメモリコンパイル、out-of-procでcrossgen2を実行し、ILCompiler.Reflection.ReadyToRunライブラリを使用してR2Rイメージのメタデータを検証します。また、R2RリフレクションライブラリにCrossModuleInliningInfoSectionを追加し、インライニング情報の解析とメソッド名解決機能を拡張します。

#126398 arm64: Refactor mov/movprfx for embedded masked operations

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

ARM64 SVE命令のmov/movprfx処理をコード生成ロジックからemit関数にリファクタリングするもの。埋め込みマスク操作に対して述部付きmovprfx(ゼロイング/マージ)を活用できるようにし、条件付き選択の偽引数情報を新しいmoptオプション(デフォルト: INS_SVE_MOV_OPTS_UNPRED)経由でemitInsSve_Movヘルパーに渡すようにしました。

#126371 JIT: Fix disasm of reg to reg SIMD narrowing/widening instructions

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

JITのx86-64アーキテクチャにおける、SIMD命令の逆アセンブル出力を修正するPRです。レジスタ間のSIMD拡張/縮小命令で、ソースとターゲットのレジスタサイズが誤って表示されていた問題を解決します。例えば、vpmovsxbw zmm1, zmm1と表示されていたものを正しくvpmovsxbw zmm1, ymm1と表示するようになります。また、埋め込みラウンディング制御({rd-sae}など)が逆アセンブル出力に含まれていなかった箇所も修正します。

#126263 superpmi: Refactor parallelsuperpmi.cpp to eliminate scattered #ifdef blocks and remove PAL usage

@Copilot・GitHub・area-CodeGen-coreclr

parallelsuperpmi.cppのプラットフォーム固有コードをリファクタリングし、分散していた#ifdef TARGET_UNIXガードを削除してコード可読性を向上させました。POSIX経路でのCtrl+C信号処理を実装し、Win32/PAL APIの使用を排除し、代わりにPOSIX標準API(fork/execv、waitpid、open/close)を使用するように整理しました。

#126142 Remove nullability annotation from MetadataLoadContext.CoreAssembly.

@teo-tsirpanis・GitHub・area-System.Reflectioncommunity-contribution

MetadataLoadContext.CoreAssemblyプロパティのnullability注釈を削除し、非null確定型に変更します。コア アセンブリの解決をMetadataLoadContext構築時の前処理として実行し、解決失敗時は例外をスローするように変更することで、このプロパティが常に非nullであることを保証します。

#126078 Add Process.StartAndForget APIs for fire-and-forget process launching

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

ProcessクラスにStartAndForget静的メソッドの2つのオーバーロードを追加します。プロセスを起動してPIDを取得し、終了を待たずに即座にすべてのリソースを解放する"fire-and-forget"シナリオに対応します。UseShellExecuteが有効な場合と標準ストリームのリダイレクトが指定された場合はInvalidOperationExceptionをスローします。

// 新しいAPI(リソースリークなし、自動クリーンアップ)
int pid = Process.StartAndForget("myapp", args);

2026年04月16日 (34 PRs)うち Bot 5 件 この日のページ →

#127009 Fix TimeZoneInfo.ConvertTime producing wrong results near DateTime.MinValue/MaxValue

@tarekgh・GitHub・area-System.DateTime

TimeZoneInfo.ConvertTimeがDateTime.MinValue/DateTime.MaxValue近傍の日時を正のオフセット/負のオフセットの時間帯間で変換する際に誤った結果を返していた問題を修正しました。

根本原因は、中間のUTC値が負のティック数(DateTimeの範囲外)になる場合、SafeCreateDateTimeFromTicksがそれをDateTime.MinValue(ティック数=0)にクランプしていたため、その後に宛先オフセットを加算すると精度が失われていたことです。修正により、TryLocalToUtcが生のティック数を返すように変更し、ConvertTimeが中間段階のクランプを避けて最終結果を計算するようにしました。

#126987 Add ProcessOutputLine struct and Process.ReadAllLinesAsync

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

System.Diagnostics.Processに行単位のストリーミング出力APIを追加します。新しいProcessOutputLine値型とProcess.ReadAllLinesAsyncメソッドにより、標準出力と標準エラーを非同期的にインターリーブして反復処理できるようになります。

using Process process = Process.Start(startInfo);
await foreach (ProcessOutputLine line in process.ReadAllLinesAsync())
{
    if (line.StandardError)
        Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine(line.Content);
    Console.ResetColor();
}

#126984 Fix AV in GetObjectFields when enumerating fields on dynamic Continuations

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

CoreCLR DAC デバッグインターフェイスの GetObjectFields メソッドで、実行時に動的に生成される Continuation サブタイプのフィールド列挙時にアクセス違反が発生していた問題を修正します。TypeHandle を UpCastTypeIfNeeded() でアップキャストしてから ApproxFieldDescIterator を構築することで、動的に生成されたタイプを基底クラスに正規化し、AV を回避します。

#126965 Raise minimum CircularBufferBuckets capacity from 1 to 2

@tarekgh・GitHub・area-System.Diagnostics.Metric

CircularBufferBucketsの最小容量制限を1から2に引き上げ、防御的なバグ修正を実施します。capacity == 1かつインデックス範囲が負から非負にまたがる場合(例:begin = -1, end = 0)にCalculateScaleReductionが無限ループする潜在的な脆弱性を事前に防ぎます。現在の使用箇所では既にminBuckets >= 2が強制されており、この変更により将来のコーラーが誤ってこの問題をトリガーできないようにします。

#126957 Apply mitigations to System.Security.Cryptography.Xml components

@eiriktsarpalis・GitHub・area-System.Security

System.Security.Cryptography.Xmlコンポーネントに対して、悪意のある深くネストされたXML構造やXML爆弾攻撃に対する防御を強化する変更です。複数の再帰的コード経路に設定可能な再帰深度制限(デフォルト64)を導入し、EncryptedXmlで危険な変換アルゴリズムをデフォルトで無効化します。

#126938 [LoongArch64] Initialize emitter::getInsExecutionCharacteristics() to support perfscore.

@LuckyXu-HF・GitHub・area-CodeGen-coreclrcommunity-contributionarch-loongarch64

LoongArch64アーキテクチャにおいて、JITコンパイラのemitter::getInsExecutionCharacteristics()メソッドを実装し、命令のレイテンシとスループット情報に基づくパフォーマンススコア(perfscore)の計算をサポートします。3A6000プロセッサの命令レイテンシおよびスループットベンチマークデータに基づいています。

#126929 fix for largepages with agressive decommit logic

@mangod9・GitHub・area-GC-coreclr

GCLargePages が有効な場合に、誘発された Aggressive GC でのデコミット処理がメモリを実際には解放しないながらも GC ブックキーピングを更新する問題を修正します。影響を受けたメモリを明示的にクリアして、古い参照が後で観察されないようにします。

#126881 Remove DomainAssembly and other multi-appdomain dead code

@rcj1・GitHub・area-VM-coreclr

AppDomain廃止に伴い、マルチAppDomain対応のレガシーコード(DomainAssembly型、関連するDAC/DBIインターフェース、デバッガー実装)を削除し、単一AppDomainモデルに統一するランタイムとデバッグAPI層の大規模リファクタリングです。DomainAssemblyを削除してAssembly/Moduleで直接管理するよう簡素化し、デバッガーとDAC/DBIレイヤーの契約を更新します。

#126817 [release/10.0] Fix Native AOT-incompatible reflection in CalendarTestBase

@Copilot・GitHub・Servicing-approvedarea-System.Globalization

PR #122373で導入されたNativeAOT非互換なリフレクションコードをテストから削除し、Native AOTテストの互換性を復旧するテスト専用の修正です。日本語カレンダーテストの基盤クラス(CalendarTestBase)でICU固有のJapaneseCalendar最小サポート日付(エラティック)を計算する際のリフレクション使用方法をNativeAOT対応にリファクタリングします。

#126772 [RyuJIT] Make the mis-sized struct return logic only apply to return values that are structs

@kg・GitHub・area-CodeGen-coreclr

RyuJITのWASM コードジェン中で、構造体戻り値のtype erasure時にアサーション失敗を引き起こしていた問題を修正しています。mis-sized struct return処理を、実際に戻り値ノードがTYP_STRUCT型の場合のみに限定することで、非構造体型の値を構造体型テンポラリに不正に変換する処理を防ぎます。修正前はGT_IND(ubyte型)をTYP_STRUCT型のローカル変数に格納しようとしていたため失敗していました。

#126595 [cDAC] Implement SetJITCompilerFlags for cDAC

@barosiak・GitHub・area-Diagnostics-cdac

cDAC(Common Data Access Component)で IXCLRDataModule2.SetJITCompilerFlags を実装し、Loaderコントラクトの「デバッガー情報ビット」経由でモジュールのトランジェントフラグを更新できるようにしました。これにより、デバッガはJITコンパイラフラグを動的に制御できます。

#126519 ILLink: Don't preserve forwarder assemblies referenced by link-action root assemblies

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

ILLinkの型フォワーダー処理を改善し、linkアクション(トリミング対象)でルート化されたアセンブリが、参照先のフォワーダーアセンブリを不必要に保持しないようにしました。SweepStep.AssemblyReferencesCorrectorが型参照を実装アセンブリに直接書き直すため、フォワーダーアセンブリの保持は不要です。この修正により、トリミングされた出力のサイズが削減されます。

#126091 Add low-cost instrumented version of RuntimeAsyncTask::DispatchContinuations reclaiming lost performance.

@lateralusX・GitHub・area-System.Runtimeruntime-async

PR #123727で導入されたRuntimeAsyncTask::DispatchContinuationsのデバッガ/TPLインストルメンテーション追加による約7%のパフォーマンス低下を回復するため、インストルメンテーション版と非インストルメンテーション版を分離しました。DispatchContinuationsを2つのメソッド(通常版と計測版)に分割し、メソッド開始時と継続完了後に静的フラグをチェックして必要に応じてインストルメンテーション版に切り替える仕組みを実装しています。

#125809 Add ci-pipeline-monitor Copilot CLI skill

@JulieLeeMSFT・GitHub・area-skills

Azure DevOps CI パイプラインの監視、テスト失敗の分類、週次レポート生成を自動化する ci-pipeline-monitor Copilot CLI スキルを追加しました。現在は20以上のJITパイプラインを監視していますが、今後他のパイプラインへの拡張を予定しています。

#123145 Add span-based Deflate, ZLib and GZip encoder/decoder APIs

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

Deflate、ZLib、GZipの圧縮・解凍について、Spanベースのストリームレスな新しいAPIを追加します。BrotliEncoder/BrotliDecoderのパターンに従い、DeflateEncoder/DeflateDecoder、ZLibEncoder/ZLibDecoder、GZipEncoder/GZipDecoderクラスを導入。インスタンスベースのAPI(Compress()、Decompress()、Flush())とスタティックのワンショットAPI(TryCompress()、TryDecompress())、およびGetMaxCompressedLength()を提供します。

#122391 [release/10.0] [browser] Generate boot config with hash field instead of integrity

@maraf・GitHub・Servicing-approvedarch-wasmarea-Build-monoos-browser

WebAssembly boot configurationの生成時に、キャッシュ検証メカニズムとして使用されるintegrity属性が不足していた問題を修正するバックポート。boot config内のアセット定義で、integrityフィールドを正しくhashフィールドにリネームします。この修正により、WebAssemblyリソースリクエストの整合性チェックが適切に機能するようになります。

2026年04月15日 (34 PRs)うち Bot 6 件 この日のページ →

#126927 Make UCO MethodDesc globals DAC-accessible

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

UCO(Unmanaged Code Origin)関連のMethodDesc グローバル変数をDAC(Data Access Component)からアクセス可能にするための変更です。デバッガーのスタックウォーク機能がこれらのグローバル変数に安全にアクセスできるようにするために、dacvars.h に変数の登録を追加し、複数のソースファイルで不要な重複定義を削除しています。

#126926 Add MetadataLoadContext.GetLoadContext\(Assembly\).

@teo-tsirpanis・GitHub・area-System.Reflection.Metadatacommunity-contribution

MetadataLoadContextから読み込まれたAssemblyオブジェクトに対して、その元のMetadataLoadContextを取得するための公開API MetadataLoadContext.GetLoadContext(Assembly) を追加します。MLC経由で読み込まれたアセンブリの場合は関連するコンテキストを返し、ランタイム読み込みアセンブリの場合はnullを返します。

#126920 JIT: Precompute func-app element stride in VN chunks

@EgorBo・GitHub・area-CodeGen-coreclr

JITコンパイラのValue Numbering (VN)処理における性能最適化。関数アプリケーション(func-app)VNチャンクのメモリレイアウトにおけるエレメント stride を一度だけコンストラクタで計算・キャッシュし、以降の呼び出しで再計算を避けることで、TP(スループット)を改善します。

#126919 Re-add area-Host and area-System.Runtime.InteropServices labels

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

area-Hostとarea-System.Runtime.InteropServicesラベルをdotnet/runtimeリポジトリのエリア所有者ドキュメントとポリシーボット自動化から復元する変更です。これらのラベルは誤って削除されていたため、再度追加することで、これらのラベルが付与されたIssueやPRで適切な通知がトリガーされるようにしています。

#126915 Fix x86 async frame generic type resolution in DBI

@tommcdon・GitHub・area-Diagnostics-coreclr

x86ターゲットにおける非同期フレームのジェネリック型引数トークン読み込みの問題を修正しました。CordbAsyncFrame::LoadGenericArgsがCORDB_ADDRESS(常に8バイト)を使用して読み込んでいたため、x86の4バイトポインタ読み込み時に隣接メモリのゴミデータを取得し、EnumerateTypeParametersがE_INVALIDARGエラーを返していました。SIZE_T(ターゲットのポインタサイズに合致:x86では4バイト、x64では8バイト)に変更することで解決します。

#126910 Ensure that AVX512_MoveMask and other key mask internal mask intrinsics are hoistable

@tannergooding・GitHub・area-CodeGen-coreclr

AVX512のマスク関連内部intrinsicsをHW_Category_SpecialからHW_Category_SimpleSIMDに再分類し、HW_Flag_SpecialCodeGenフラグを追加することで、CSE(Common Subexpression Elimination)とループホイスティングを可能にする変更です。これにより、ExtractMostSignificantBitsなどの操作で不要なEVEX命令の使用を避け、より小さく高速なVEX命令の生成が可能になります。

#126902 Remove TEB field from Thread, DAC, and cDAC

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

Thread Environment Block (TEB) ポインタをDAC/cDACのThreadデータコントラクトから削除します。消費者(SOS、ClrMDなど)はOS thread IDを介してデバッガのネイティブAPIからTEBを取得するよう変更されます。これはバイナリレイアウト互換性を維持しつつ、TEB参照を廃止化する内部実装の整理です。

#126899 Use Checked runtime for cDAC dump tests

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

cDAC(Compact Data Access Compact)ダンプテストのビルド構成をRelease から Checked ランタイムに変更します。これにより CLR ランタイムアサーションが有効になり、ダンプテスト実行時に cDAC データディスクリプタおよびコントラクト実装の問題をより早期に検出できます。ライブラリは Release のまま保持されます。

#126897 Merging internal commits for release/9.0

@vseanreesermsft・GitHub・Servicing-approvedarea-System.Security

このPRは、release/9.0向けのセキュリティ強化アップデートをマージするもので、以下の3つの主要な変更を含みます:

  1. System.Security.Cryptography.Xmlへの再帰深度制限機能の追加
  2. EncryptedXmlのCipherReference処理に対する安全なトランスフォーム実装のホワイトリスト化
  3. System.Net.Mailのアドレス解析におけるCR/LFインジェクション対策の強化

#126874 Skip flaky FileConfigurationProvider test on .NET Framework

@svick・GitHub・area-Extensions-FileSystem

.NET Framework上でのFileSystemWatcher信頼性の問題により、ResolveFileProvider_WithMissingParentDirectory_WatchTokenFiresWhenFileCreatedテストが不安定になっていた問題に対応しています。本PRでは、このテストを.NET Frameworkでスキップし、タイムアウト実装をモダン化してCI失敗を解決します。

根本原因は、I/O競合下で.NET FrameworkのFileSystemWatcherが親ディレクトリ作成イベントを取り落とすため、ChangeTokenが発火せずテストがハングするというものです。.NET上では504回の並列実行で0回の失敗となっており、.NET Framework特有の問題と確認されています。

#126833 Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst

@steveisok・GitHub・area-Infrastructure

iOS/tvOS/MacCatalystプラットフォームの共通する制約条件(静的リンク、fork()廃止、ビルドツール廃止、ハイブリッドグローバライゼーション、コンソール信号廃止など)を統一するため、新しい umbrella変数 CLR_CMAKE_TARGET_APPLE_MOBILE を導入しました。これにより、11個のCMakeファイルにおける約30個の重複したプラットフォーム条件判定を削減し、将来的な不整合を防ぎます。また、MacCatalystに対するsendfile除外設定の漏れも修正されています。

#126807 Implement Process.ReadAllText and ReadAllBytes with platform-specific multiplexing

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

新しい公開API Process.ReadAllText() と Process.ReadAllBytes() を実装しました。これらのメソッドはプロセスのstdoutとstderrの両方を同時に読み取り、デッドロックを回避するためにプラットフォーム固有の多重化処理(Windowsはオーバーラップド I/O、Unixはpoll(2))を使用します。タイムアウト制御をサポートしており、両方のストリームがリダイレクトされており、かつ非同期モードでアクセスされていないことが要件です。

using Process process = Process.Start(startInfo);
(string stdout, string stderr) = process.ReadAllText(timeout: TimeSpan.FromSeconds(30));
(byte[] stdoutBytes, byte[] stderrBytes) = process.ReadAllBytes();

#126721 Fix GC write barrier when writing async method return into continuation object

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

インタープリター実行時の非同期メソッド戻り値が継続オブジェクトに書き込まれる際、GC書き込みバリアが不正に省略される問題を修正しました。

修正前は、戻り値の型自体がGC参照を含むかのみをチェックしていたため、System.Objectやstringのようにインスタンス内にGCポインタがない参照型の場合に書き込みバリアが追加されていませんでした。修正後は、参照型の戻り値は常にSetObjectReferenceを通じて書き込むようになり、値型のうちGC参照を含む場合のみmemmoveGCRefsを使用します。

#126717 Fix x86 runtime async frame pointer mismatch in GetSpForDiagnosticReporting

@tommcdon・GitHub・area-Diagnostics-coreclr

x86でランタイム非同期フレーム(runtime async frames)に対して、デバッガに報告されるスタックポインタを調整するバグ修正。ICorDebugManagedCallback2::Exceptionコールバック(特にDEBUG_EXCEPTION_CATCH_HANDLER_FOUND通知)で、例外ハンドラ検出時にICorDebugFrameがnullになっていた問題を解決します。

#126645 JIT: Handle writes to promoted locals in AliasSet::AddNode

@jakobbotsch・GitHub・area-CodeGen-coreclr

JITコンパイラのエイリアス追跡機能を改善し、プロモーション済みローカル変数への書き込みを正しく処理するようにしました。これにより、ARM64での不正なコード生成(#126414で報告)を防ぎます。プロモーション済み構造体フィールドローカルへの書き込みは親のプロモーション済みローカルへの書き込みとして扱われ、親ローカルへの書き込みはすべてのプロモーション済みフィールドローカルへの書き込みとして扱われるようになります。

#126637 Add System.Net skill, folder-scoped instructions and pluggable subagent into existing review process

@T-Gro・GitHub・NO-MERGEarea-System.Net

dotnet/runtime リポジトリの GitHub Copilot による code review プロセスに System.Net に特化したレビュー機能を追加します。25,366件のエキスパートレビューコメント(5,579個の PR から抽出)に基づいており、System.Net の HTTP、Sockets、Security、QUIC、Common、Interop の 6 つのサブエリアに対応した構造化レビューチェックリストとガイダンスを実装しています。

#126575 Fix JsonException message property type info in class parameterized constructor

@XeronOwO・GitHub・area-System.Text.Jsoncommunity-contribution

パラメータ化されたコンストラクタを持つクラスのデシリアライゼーション失敗時に、JsonExceptionのメッセージに誤った型情報が表示される問題を修正します。修正前は親クラスの型が表示され、修正後は実際に変換に失敗したプロパティの型が正しく表示されるようになります。

// 修正前:ParameterizedNormalClass(string text)でText: {}が渡される場合
// "The JSON value could not be converted to ParameterizedNormalClass..."(誤り)

// 修正後:
// "The JSON value could not be converted to System.String..."(正しい)

#125673 Skip entry-point trim roots for library outputs

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

トリミングされた自己完結型ライブラリ形式のアプリ公開時に、SDKが中間アセンブリを常にRootMode="EntryPoint"でルート化することでIL1034エラーが発生する問題を修正します。ライブラリプロジェクト(OutputType=Library)ではエントリーポイントルートを指定しないようにターゲットを更新しました。

<ItemGroup>
  <TrimmerRootAssembly
      Include="@(IntermediateAssembly->'%(Filename)')"
      RootMode="EntryPoint"
      Condition="'$(OutputType)' != 'Library'" />
</ItemGroup>

#125516 [RISC-V] Support displaying GTF_ADDRMODE_NO_CSE flag on GT_CAST

@namu-lee・GitHub・area-CodeGen-coreclrcommunity-contribution

RISC-V環境でJITコンパイラのツリーダンプ表示を改善し、GT_CASTノードに対してGTF_ADDRMODE_NO_CSEフラグを表示できるようにする変更です。デバッグ時にアドレスモード最適化の詳細を確認しやすくなります。

変更前:CAST long <- uint と表示 変更後:CAST long <- uint に N フラグを追加して表示

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

#126883 Allow repo traversal from runtime skills

@JanKrivanek・GitHub・area-skills

リポジトリローカルスキル(repo-local skills)が自身のフォルダ外のファイルを参照できるようにするため、skill-validator の検証ワークフローを更新するPR。--allow-repo-traversal フラグを追加し、ドキュメントリンクをリポジトリルート相対パスまたは明示的な相対パスに更新しました。

プラグインスキルと異なり、リポジトリローカルスキルはすでにリポジトリの一部であるため、フォルダ外のドキュメントやスクリプトへのアクセスを許可することで、エージェントが追加のターンを重ねずに必要なパスを探索できます。

#126871 Remove quic.tech from HTTP/3 interop test URIs

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

HTTP/3相互運用性テストで使用されているquic.tech:8443エンドポイントを削除するPRです。このサーバーがCI環境から一貫してタイムアウトしており、複数のプラットフォーム(AzureLinux、Windows 11、Windows Server 2022/2025)で100%の失敗率を示していたため、テスト対象から除外するものです。

#126870 [wasm][CoreCLR] Enable passing System.Runtime.Tests on wasm

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

WebAssembly(wasm)CoreCLRインタプリタでSystem.Runtime.Testsの44個のテストを有効化するため、不要な[ActiveIssue]および[SkipOnPlatform]属性を削除しました。マルチスレッド機能を必要とするテストについては、イシュー判定から機能検出(PlatformDetection.IsMultithreadingSupported)へ変更しています。

#126868 Fix ILLink analyzer assertion for delegates with default parameters

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

ILLink Roslyn アナライザーのデータフロー分析が、デフォルトパラメータ値を持つデリゲート型を処理する際に Debug.Assert で失敗する問題を修正しました。

delegate ParallelQuery<int> Operation(int start, int count, Operation source = null);

Roslyn がデリゲートのデフォルトパラメータ初期化子の操作ブロックを生成する際、その OwningSymbol が予期される IMethodSymbol/IFieldSymbol/IPropertySymbol ではなく INamedTypeSymbol になるため、アナライザーがこれを処理できていませんでした。

#126864 Fix malformed MSBuild property function call in Microsoft.CSharp.Tests.csproj

@Copilot・GitHub・area-Microsoft.CSharp

Microsoft.CSharp.Tests.csprojのMSBuildプロパティ関数呼び出しが閉じ括弧を欠いていたため、修正しました。修正前は$(Features.Replace('strict', '')と記述されており、MSBuildがこれをプロパティ関数として解析できず空文字列に評価されていました。その結果、Directory.Build.propsから継承されたnullablePublicOnlyを含むすべてのコンパイラ機能が意図せず削除されていました。修正後は$(Features.Replace('strict', ''))となり、strictのみを削除しつつ他の機能を保持するようになります。

#126856 JIT: Elide BOUNDS_CHECK(0, length) when length != 0 is proven by assertion

@Copilot・GitHub・area-CodeGen-coreclr

JIT の BOUNDS_CHECK(0, length) 削除最適化を改善しました。BOUNDS_CHECK(0, length) は (uint)0 < (uint)length をチェックし、これは length != 0 と意味的に等価です。本修正により、支配的な length != 0 アサーションが live である場合に、この冗長なチェックを削除できるようになります。これは null/empty チェック後の span/array アクセスで一般的なパターンです。

static bool TryStripFirstChar(ref ReadOnlySpan<char> span, char value)
{
    if (!span.IsEmpty && span[0] == value)
    {
        return true;
    }
    return false;
}

上記のコードでは、IsEmpty チェック後の span[0] アクセスに対する bounds check が削除されます。

#126854 Fix TarReader_SparseFileTests reflection breaking under Native AOT by replacing with [UnsafeAccessor]

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

Native AOT環境でのテスト失敗を修正するため、TarReader_SparseFileTests.WriteSparseEntry内のリフレクションベースの内部メンバアクセスを[UnsafeAccessor]に置き換えました。トリマーがリフレクションメタデータを削除することで発生していたNullReferenceExceptionを解決します。

#126780 cDAC test cleanup - Allocator adds HeapFragments by default

@noahfalk・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Component)テストの簡潔化に関するクリーンアップです。BumpAllocatorが自動的にHeapFragmentsを保存するよう改善され、テスト内での二段階プロセス(アドレス計算と別途のAddHeapFragment()呼び出し)が不要になりました。これに伴い、AllocateAndAdd()ヘルパーの統合要求への対応として、テストコード全体から二重呼び出しのパターンを排除しています。

#126719 Strip partial and virtual modifiers from generated COM interface method stubs

@Copilot・GitHub・area-Infrastructure

ComInterfaceGeneratorとVtableIndexStubGeneratorで、ユーザーが宣言した[GeneratedComInterface]インターフェースのメソッドにpartialまたはvirtual修飾子を付与した場合、生成されるスタブコードに無効な修飾子がコピーされていた問題を修正します。生成されたコードからpartialとvirtualキーワードをフィルタリングして、有効なC#を生成するようにしました。

// 以前は無効なコードが生成されていた例
[GeneratedComInterface]
[Guid("...")]
internal partial interface ICalculator
{
    public virtual partial int Subtract(int a, int b);
}

#126693 Work around Schannel TLS resume disable race on older Windows

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

Windows Server 2022以前のバージョンにおいて、ApplyControlToken(SSL_SESSION_DISABLE_RECONNECTS)がSchannel内部のセッションキャッシュとの競合状態により、TLS再開が無効化されてもセッションIDがClientHelloに埋め込まれる問題を修正します。修正後は、セキュリティコンテキストを削除してInitializeSecurityContextを再実行し、新しいClientHelloを生成することで問題を回避します。この対応はWindows 11未満(ビルド22000未満)に限定されています。

#126525 Fix stackoverflowtester to skip ARM32 in TestStackOverflowLargeFrameMainThread

@Copilot・GitHub・area-Infrastructure-libraries

ARM32プラットフォームでTestStackOverflowLargeFrameMainThreadテストが確実に失敗するため、スキップ条件にArchitecture.Armを追加する修正。大フレームメソッド(65KB/フレーム)がARM32で実行される際、JITがスタックページを調査する方法の制限により、ガードページフォルトが実行時の検出ウィンドウ(signal.cppの2ページ)外で発生し、SIGABRT(終了コード134)ではなくSIGSEGV(終了コード139)が生成されることが原因。

// 変更前
if (((RuntimeInformation.ProcessArchitecture == Architecture.Arm64) || ... ||
    (RuntimeInformation.ProcessArchitecture == Architecture.LoongArch64)) && ...)

// 変更後
if (((RuntimeInformation.ProcessArchitecture == Architecture.Arm64) || ... ||
    (RuntimeInformation.ProcessArchitecture == Architecture.LoongArch64) ||
    (RuntimeInformation.ProcessArchitecture == Architecture.Arm)) && ...)

#126447 Fix ZipArchive Update removing data descriptors

@bwinsley・GitHub・area-System.IO.Compressioncommunity-contribution

ZipArchive.Update モードで既存のZIPを開く際、データディスクリプタ(general purpose bit flag bit 3)を持つエントリが上書きされてアーカイブが破損する問題を修正しました。非シーク可能なストリームで作成されたアーカイブやJavaのZipOutputStream、Azure SDKなどで作成されたアーカイブが影響を受けます。.NET 10で導入された PR #102704 の最適化による回帰です。

#126396 Add ConfigurationIgnoreAttribute

@rosebyte・GitHub・area-Extensions-Configuration

ConfigurationIgnoreAttributeを新たに追加し、設定バインディング時に特定のプロパティを明示的にスキップできるようにしました。リフレクションベースのバインダーとソースジェネレータの両方を更新して、無視されたプロパティをバインディング対象から除外します。

[ConfigurationIgnore]
public string IgnoredProperty { get; set; }

#126276 Add sources from iltrim hackathon

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

5年前のiltrim hackathonで開発されたIL-levelトリマーのプロトタイプをdotnet/runtimeに統合します。ILCompiler.TypeSystem、DependencyAnalysisFramework、System.Reflection.Metadataを活用し、Mono.Linker.Testsインフラストラクチャ上に構築されています。約14,000行から7,000行に削減され、テストの32%が現在パスしています。

#126199 [clr-ios] Fix SIGSEGV in open virtual delegate dispatch with interpreter

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

インタープリタが開放型仮想デリゲート(open virtual delegate)のコンパイル済みターゲットを呼び出す際のSIGSEGV(セグメンテーション違反)を修正しました。インタープリタの呼び出しハンドラが、解決されたターゲットがコンパイル済み(targetIp == NULL)である開放型仮想デリゲートを検出した場合、これまでは汎用パスでGetTarget()を呼び出していましたが、開放型デリゲートの場合null が返されて引数スロットが破損していました。修正により、コンパイル済みターゲットを持つ開放型仮想デリゲート用の専用パスが追加され、memmoveを使ってデリゲートオブジェクトを除去しながら引数をシフトします。V128引数の16バイトアラインメントも保持します。

#126173 Fix duplicate assembly name errors in crossgen outerloop merged runners

@Copilot・GitHub・area-Infrastructure

Crossgen outerloop ビルドにおいて、異なるディレクトリに存在する同名の .csproj ファイル(finally.csprojとTarget.csproj)がMergedTestRunner内で重複するアセンブリ名を生成し、MSBuildの競合解決によって参照が静かに削除される問題を修正しました。MergedTestRunner.targetsにおいて、extern alias とアセンブリ名の導出ロジックを%(Filename)から%(RelativeDir)%(Filename)(非英数字を_で置換)に変更し、ファイルシステム上の位置情報を含めることで一意性を保証します。

#126112 Refactor ObjectDataInterner to support pluggable deduplicators and enable for ReadyToRun

@jkoritzinsky・GitHub・area-ReadyToRun

ObjectDataInternerをリファクタリングし、プラグ可能なIObjectDataDeduplicatorインターフェースを導入することで、デデュプリケーション戦略を抽象化します。これにより、NativeAOT(メソッドボディの折畳み)とReadyToRun(コピーされたメソッドILの折畳み)の両方で統一されたデデュプリケーション基盤を共有できるようになります。

#119419 Remove base DAM mismatch warning on types

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

Dynamically Accessed Members (DAM) 注釈の基底型不一致警告を削除します。基底型での警告は不要です。なぜなら派生型の構築時に警告が生成されるため、穴は生じないからです。この変更により、そのような型の静的メソッド使用が可能になります。併せて、ILLink の分岐削除時の IL オフセット追跡バグを修正します。

2026年04月13日 (17 PRs) この日のページ →

#126826 Fix race condition in EvictionCount_NotOvercounted_WhenEntryAlreadyRemoved test

@cincuranet・GitHub・area-Extensions-Caching

EvictionCount_NotOvercounted_WhenEntryAlreadyRemovedテストにおける競合状態を修正するPR。バックグラウンドのScanForExpiredItemsタスクがテストの明示的なTryGetValueおよびCompact操作と競合し、エントリがConcurrentDictionaryから削除されても_accumulatedEvictionsがまだインクリメントされていない状態でGetCurrentStatisticsが呼ばれることで、エビクション数の過小計測が発生していた問題を解決。ExpirationScanFrequencyをTimeSpan.MaxValueに設定することで、バックグラウンドスキャンを事実上無効化する。

#126814 Add skill-validator structural checks for skills and agents

@danmoseley・GitHub・area-Infrastructurearea-skills

dotnet/runtime に GitHub Actions ワークフローを追加し、.github/skills/ および .github/agents/ 配下のファイル変更時に skill-validator check を実行してスキルとエージェント定義の構造的妥当性を検証します。AOT コンパイル済みバイナリを使用するため .NET ランタイムは不要です。現在 11 個のスキルと 2 個のエージェントが定義されており、マージ前に不正な frontmatter やフィールド欠落などの問題を検出できます。

#126812 JIT: support SSA-aware PHI jump threading

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITの冗長分岐排除(redundant branch elimination)機能を拡張し、PHI値を使用するブロックを通じたジャンプスレッド化をサポートしました。PHIの使用がスレッド化されるブロックとその直後の後続ブロック内で完全に追跡できる場合に、SSA/VN使用箇所を書き換えて安全にスレッド化を行う機能を実装しています。

#126763 Support hardware with more than 1024 CPUs

@janvorli・GitHub・area-GC-coreclr

1024個を超えるCPUを搭載したLinuxマシンでのランタイム初期化失敗に対応するPR。sched_getaffinityの固定サイズのcpu_set_tを動的に割り当てられたCPUセット構造に変更し、任意の数のCPUをサポート。GCのヒープ上限は1024個に保ったまま、CPU関連のデータ構造を動的化。MAX_SUPPORTED_CPUS定数をMAX_SUPPORTED_HEAPSに名称変更してコード意図を明確化。

#126478 Improve Process support on MacCatalyst: use posix_spawn

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

MacCatalystにおけるプロセス生成機能を改善し、macOSで利用可能なposix_spawnによる高速パスを有効化するもの。従来MacCatalystはプロセス生成の実装がなく、初期化されていないchildPidを返す回帰状態にあった。posix_spawnを活用することでパフォーマンス向上とMacCatalyst上での正しい動作を実現する。

#125211 [RyuJit] Remove gtCallAddr

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

Call ノードが持つ冗長なフィールド gtCallAddr を削除し、すべてのコール型で gtControlExpr に統一する変更です。これまで gtCallAddr と gtControlExpr はコール型ごとに使い分けられていましたが、目的は同じ(コール対象の保持)であったため、これを整理して実装の複雑性を低減します。間接呼び出しでは常に有効ですが、ヘルパー呼び出しとユーザー呼び出しでは nullptr となる場合があります。

2026年04月12日 (4 PRs) この日のページ →

#126810 Fix Avx10 detection: cache CPUID bit before later queries overwrite cpuidInfo

@Copilot・GitHub・area-Infrastructure

AVX10 CPUID bit検出のバグを修正しました。CPUID leaf 7 sub-leaf 1の結果を読み込んだ後、別のCPUID問い合わせでcpuidInfoが上書きされてしまい、AVX10ビット(EDX[19])がスタックデータを読んでいました。修正により、leaf 7 sub-leaf 1が有効な間にAVX10ビットをキャッシュし、後続のleaf 0x24検出でキャッシュされた値を使用するよう変更しました。

#126795 Fix NullReferenceException in DestroyStructure for blittable types

@Copilot・GitHub・area-Infrastructure-libraries

BoxedLayoutTypeMarshaler<T>経由でDestroyStructureが呼ばれるblittable型で、無条件にNativeMemory.Clearを実行していたため、無効なポインタ(例:(IntPtr)1)に対してNullReferenceExceptionが発生していた問題を修正しました。blittable型の場合はFreeCoreとNativeMemory.Clearをスキップ、非blittable型はネストされたクリーンアップ後の二重解放防止のためNativeMemory.Clearを実行するよう改善しています。

#126678 Optimize IndexOfAnyAsciiSearcher on Arm64

@tannergooding・GitHub・area-System.Buffers

Arm64プラットフォーム上の IndexOfAnyAsciiSearcher の性能を最適化するPRです。Count、IndexOf、LastIndexOf の専用APIのコード生成をArm64向けに改善し、ExtractMostSignificantBits の代わりにこれらを使用するように更新しました。IndexOfAny スタイルの検索を使用するワークロードで5~50%のパフォーマンス向上が期待できます。

2026年04月11日 (15 PRs)うち Bot 3 件 この日のページ →

#126783 Fix code review agent timeouts caused by gpt-5.4

@danmoseley・GitHub・area-Infrastructure

dotnet/runtimeのコードレビュー自動化ワークフローで約20%の実行がタイムアウトする問題を修正します。分析結果から、GPT-5.4サブエージェントの無限ハングが93%のタイムアウトの原因であることが判明。SKILL.mdを修正し、GPT-5.4をブロック、GPT-5.3-codexを推奨、サブエージェント数を4から3に削減、レビュー投稿後の即座の終了を実装します。

#126779 Reduce code-review skill token usage (~29% smaller)

@danmoseley・GitHub・area-skills

dotnet/runtimeのコードレビュー自動化スキル(SKILL.md)のトークン使用量を削減するため、低価値なコンテンツを除去し、API承認検証手順を独立ファイルに抽出しました。スキルサイズを約29%削減(68.9KB → 48.7KB)し、20分のタイムアウト問題を緩和します。すべてのレビュールールと手順は保持されます。

#126761 Remove unused AssemblySpecHash class

@Copilot・GitHub・area-AssemblyLoader-coreclr

AssemblySpecHashクラスがコードベース内で呼び出されていないため、削除しました。クラス定義をassemblyspec.hppから、メソッド実装(~AssemblySpecHash、CompareSpecs)をassemblyspec.cppから削除します。INITIAL_ASM_SPEC_HASH_SIZEマクロはAssemblySpecBindingCacheで使用されているため保持されます。

#126670 Update THIRD-PARTY-NOTICES.TXT with opentelemetry license

@MiYanni・GitHub・area-Setup

.NET SDK が OpenTelemetry に移行したことに伴い、dotnet インストーラーの第三者ライセンス通知(THIRD-PARTY-NOTICES.TXT)を更新し、OpenTelemetry .NET の Apache 2.0 ライセンス情報を追加しました。これにより、インストーラーの TPN ファイルが CLI の OpenTelemetry ベースのテレメトリ実装と整合性を持つようになります。

#126660 Fix deterministic MountVolume test failures on ARM64 Helix machines

@danmoseley・GitHub・area-System.IO

Windows 11 ARM64 Helix マシン上で Directory_Delete_MountVolume と Directory_ReparsePoints_MountVolume テストが確定的に失敗する問題を修正します。

根本原因: ARM64 Helix マシンの E:\ ドライブ(Azure リソース/一時ディスク)は DriveInfo の検査(固定、NTFS、Ready)には合格しますが、GetVolumeNameForVolumeMountPoint で ERROR_INVALID_PARAMETER (87) を返します。ボリューム GUID がないドライブはボリュームマウントポイント操作をサポートしていません。

修正内容: ドライブ選択時に GetVolumeNameForVolumeMountPoint での成功確認を追加し、マウントポイント操作に対応したドライブのみを使用するようにフィルタリングします。

#126621 Move the cache for the marshaler methods to be stored on the RuntimeType instead of in a ConditionalWeakTable

@jkoritzinsky・GitHub・area-System.Reflection

Marshal メソッドのマーシャラーキャッシュを ConditionalWeakTable から RuntimeType の汎用キャッシュインフラに移動し、相互運用パフォーマンスの回帰を改善します(#126608の修正)。検証処理をキャッシュ作成時に一度だけ実行し、レイアウト検証を毎回繰り返さないようにしています。

#126592 [cDAC] Fix bug in GetThreadData

@rcj1・GitHub・area-Diagnostics-cdac

cDACのスレッド"dead"セマンティクスを修正するPRです。ThreadState.ReportDeadを列挙とIsThreadMarkedDeadで"dead"として扱うように改善しながら、DeadとReportDeadを区別する必要な場合(例:GetThreadOwningMonitorLock)では区別できるようにしています。ランタイム状態ビットからコントラクトフラグへの変換が追加され、マネージドスレッドコントラクトも拡張されています。

2026年04月10日 (29 PRs) この日のページ →

#126736 Arm64 jitstress outerloop

@dhartglassMSFT・GitHub・area-CodeGen-coreclr

ARM64 JIT HWIntrinsic コード生成において、マルチ命令展開を含むRMWスタイルのSVE組み込み関数で、非定数即値ジャンプテーブル生成時の命令数計算を修正します。HWIntrinsicImmOpHelperのケースサイズ計算をエミッタの動作(targetReg != op1Reg時の追加移動命令)と一致させることで、jitstressテスト(特にarm64)での失敗を解決します。

#126732 Simple RuntimeTypeSystem DacDbi APIs

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Components)の RuntimeTypeSystem コントラクトを拡張し、3つの DacDbi API(HasTypeParams、GetTypeHandle、GetThreadStaticAddress)を実装しました。これらの API は診断ツール(デバッガ、SOS)がジェネリック型情報とスレッドスタティックフィールドのアドレスを取得するために使用されます。

#126731 Fix CLR->COM RCW ownership tracking on the slow path

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

PR #114609で導入されたリグレッションを修正します。ネイティブスレッド上で System.StubHelpers.GetCOMIPFromRCW() がスローパスにフォールバックする際、OLE TLSの初期化後のRCWキャッシュヒットに対して不正に Release が呼ばれていた問題を解決します。スローヘルパーに pfNeedsRelease フラグを返却させることで、RCWキャッシュヒット(借用ポインタ)と新規取得ポインタを区別し、所有権に基づいた適切なクリーンアップを行うようにします。

#126715 Re-enable FEATURE_CORPROFILER for tvOS to match iOS/MacCatalyst

@steveisok・GitHub・area-Diagnostics-coreclr

tvOS向けの FEATURE_CORPROFILER 機能フラグを再び有効化し、Apple モバイルプラットフォーム(iOS/MacCatalyst/Android)間で一貫性を保つ変更です。PR #126550 でtvOSのみプロファイラーが無効化されたことにより、Thread 構造体のオフセットが変わり、asmconstants.h の静的アサーションが失敗していました。tvOSをiOS/MacCatalystと同じ扱いにすることで、構造体レイアウトを正常に戻し、ビルドエラーを解決します。

#126713 [cDAC] Add typed field extension methods for Data classes

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

cDAC管理側リーダー向けの型付きフィールド拡張メソッドを追加し、すべてのIData<T>クラスを新メソッドで統一しました。ネイティブデータディスクリプタ型システムを利用した管理側の型検証を実装しています。

新しいTargetFieldExtensionsには以下のメソッドが含まれます:

  • ReadField<T> — プリミティブフィールド読み取り(型検証付き)
  • ReadPointerField / ReadPointerFieldOrNull — ポインタフィールド読み取り
  • ReadNUIntField — ネイティブ符号なし整数フィールド読み取り
  • ReadCodePointerField — コードポインタフィールド読み取り
  • ReadDataField<T> / ReadDataFieldPointer<T> — Dataストラクト読み取り(インライン/ポインタ)
  • ReadFieldOrDefault<T> — オプショナルフィールド読み取り(デフォルト値付き)

#126680 Enable runtime-async unconditionally in System.Private.CoreLib (CoreCLR and NativeAOT)

@Copilot・GitHub・area-System.Reflection

runtime-async=on コンパイラ機能をすべてのビルド構成(Debug、Checked、Release)で無条件に有効化します。従来は Release ビルドのみ、また NativeAOT では riscv64/loongarch64 を除外していた制限を廃止し、統一的に有効化することで、全ビルド構成での非同期機能の動作検証とサポートを強化します。

#126676 Add WASM_MEMORY_ADDR_REL_LEB Relocation Type

@adamperlin・GitHub・area-crossgen

WebAssemblyのR2R (Ready-to-Run) シナリオで使用する新しいリロケーションタイプ WASM_MEMORY_ADDR_REL_LEB を追加します。このリロケーションは、イメージベースからの相対オフセットをULEB128エンコードで表現し、メモリロード/ストア命令の offset イミディエートとして直接使用できます。

例:

global.get $__image_base
i32.load align=... offset=<reloc>

#126663 [Wasm RyuJit] fix funclet prolog and epilog codegen

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

WebAssembly RyuJIT のfunclet(例外処理の分離コード)のプロロローグ・エピローグコード生成を修正するものです。genEmitStartBlock の呼び出しを funclet prolog IG セットアップ後に遅延させ、エピローグ生成のための BasicBlock をエミッターからコード生成側に戻すようにしました。また、funclet を含むメソッドについて、R2R フェイルオーバーをデフォルト有効化しています(JitWasmFunclets=1 で無効化可能)。加えて、ノード参照の重複収集を防ぐ修正を含みます。

#126638 Agentics: Add Extensions & Compression review agent and instructions

@T-Gro・GitHub・area-Infrastructure

Microsoft.Extensions.*およびSystem.IO.Compressionライブラリ向けのCopilot agentic assetを追加するPRです。専用のレビューエージェント、書き込みスキル、および複数の拡張機能エリア向けのフォルダスコープ命令ファイルが含まれます。これらは実装ガイダンス、検証ポイント、パフォーマンス・セキュリティに関する推奨事項を提供します。

#126632 Add ProcessStartInfo.StartDetached to start processes detached from parent session/console

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

ProcessStartInfo.StartDetached プロパティを新規追加し、親プロセスのセッション/コンソールから独立したプロセスを開始できるようにします。このプロパティはWindows(DETACHED_PROCESSフラグ)、macOS(POSIX_SPAWN_SETSID)、その他Unix(setsid())で異なるメカニズムを使用して実装されています。

使用例:

var psi = new ProcessStartInfo("myserver")
{
    StartDetached = true
};
// stdin/stdout/stderr は自動的に NUL/dev/null にリダイレクトされます
Process.Start(psi);

#126631 [Apple mobile] Skip unsupported tests on Apple mobile platforms

@kotlarmilos・GitHub・area-Infrastructure-mono

Apple mobile platforms(iOS/tvOS/MacCatalyst)でのテスト失敗に対応するため、Mono AOT IL stripping によって method bodies が変更・削除される環境でのテストをスキップまたは条件付けする変更です。IsMethodBodySupported を拡張して aggressively-trimmed builds を検出し、影響を受けるテストを条件付きで実行します。

#126629 Add NonInheritedFileHandle_IsNotAvailableInChildProcess test to ProcessHandlesTests

@Copilot・GitHub・area-System.Diagnostics.Processtest-enhancement

ProcessHandlesTestsにファイルハンドル継承動作を検証するテストを追加。InheritedHandlesを使用して子プロセスを生成する際、ハンドルが継承されたかどうかを確認します。本PR内で検討された他の変更(ネイティブPALエクスポート、SafeFileHandleパス解決)は、OSレベルのパス解決がユーザーフレンドリーなパスではなくデバイスパスを返すため、レビュアーのフィードバックに基づいて元に戻されました。

#126582 Convert throw and thread helpers to UCO

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

Throw と Thread のヘルパーを Unmanaged Calling Origination(UCO)に変換するリファクタリング。マネージドコード側でスロー処理とスレッド操作を管理するための呼び出し規約を統一し、VM(仮想マシン)レイヤーでの実装を簡潔化するもの。優先度3の改善目標(#123864)に貢献します。

#126571 Fix COM reentrancy contract violations and re-enable the ExtensionPoints test

@Copilot・GitHub・area-Interop-coreclr

CoreCLR COM相互運用性のコントラクト違反を修正し、ExtensionPointsテストを再度有効化するPRです。ネイティブCOMのクリーンアップ・割り当てフック中にマネージドコード(管理されたIMallocSpy実装など)に合法的に再入可能なパスに対して、コントラクト違反の適切なアノテーションを追加しました。

#126512 Merge hotreload-utils source into runtime repo

@steveisok・GitHub・area-Infrastructure

dotnet/hotreload-utils リポジトリのホットリロード・デルタ生成ツールチェーンをランタイムリポジトリに統合し、外部NuGetパッケージ依存を排除しました。src/tools/hotreload-delta-gen/に5つのプロジェクト(Generator、Generator.Tasks、Generator.Frontend、Generator.Data、Generator.BuildTool)とその共有コードを追加し、eng/testing/hotreload-delta-gen.targetsで従来のNuGet .targetsファイルを置き換えました。ApplyUpdateテスト、WASMホットリロードテスト、Monoサンプルの3つのコンシューマーを更新しました。

#126511 Replace contract factories with registration-based ContractRegistry

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

cDAC(CoreCLR Diagnostic Access Component)のコントラクト初期化モデルを、26個の個別ファクトリクラスから登録ベースの ContractRegistry API に変更します。これにより、外部ランタイム(NativeAOT、Mono等)の契約サポートを追加する際に、コアリーダーの複数ファイルを修正する必要がなくなります。

新しい登録API(内部実装、将来の外部ランタイム向け):

public static void Register(ContractRegistry registry)
{
    registry.Register<IThread>(1, static t => new Thread_1(t));
    registry.Register<IRuntimeTypeSystem>(1, static t => new RuntimeTypeSystem_1(t));
}

#126158 fix ChainedRateLimiter treating IdleDuration and chained ReplenishmentRateLimiters incorrectly

@DeagleGross・GitHub・area-System.Threading

ChainedRateLimiterのIdleDurationプロパティとReplenishing RateLimiter統合の問題を修正します。

主な修正内容:

  • IdleDurationの意味論を修正:子要素のいずれかがIdleDuration == nullを報告する場合、nullを返すように変更
  • ChainedRateLimiter内の内部replenishing limiterに対してDefaultPartitionedRateLimiter.Heartbeat()からReplenishment呼び出しを確保
  • RateLimiter.CreateChained(...)への渡されるlimiterに応じて、2つの異なるChained limiter実装を提供

#125819 Guard stackwalking in IXClrDataStackWalk codepaths to account for underlying max size of context

@hoyosjs・GitHub・area-Diagnostics-coreclr

CoreCLR DAC(デバッグ支援コンポーネント)のスタックウォーキング機能(IXClrDataStackWalk)において、メモリ安全性の問題を修正します。Windows SDK の CONTEXT 構造体にインラインXSTATE(拡張状態)を含めた大きなバッファをcallerが渡した場合、バッファサイズの検証が正しく機能せず、メモリオーバーラン(読み書きの境界外アクセス)が発生する問題を解決します。

具体的には、GetContextとSetContext2メソッドにおいて、コピー処理のサイズをT_CONTEXTの実際のサイズ(AMD64では0x4D0バイト)に制限し、overflowを防ぎます。

#125613 [release/10.0] Fix missing call to write barrier in static constructors of ref structs

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

.NET 10で導入されたリグレッションを修正するPRです。JITコンパイラがref struct型の静的フィールドへの代入時に、write barrier呼び出しを誤って省略していたため、GCヒープ破損を引き起こしていました。静的フィールドは常にGCヒープ上に存在するため、write barierの追加が必要です。この修正により、DOTNET_HeapVerify=1で実行時の致命的エラーが検出されるようになります。

#124698 Fix SYSLIB1045 code fixer generating duplicate MyRegex names across partial class declarations

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

SYSLIB1045コード修復ツール(Regexコンストラクタ呼び出しをGeneratedRegexに変換)がバッチ処理で部分的なクラス宣言に対して複数の修正を同時適用する際、重複したMyRegexプロパティ名を生成していた問題を修正しました。根本原因は、複数のフィクサーが修正前の元のコンパイル状態を参照するため、同一の名前が利用可能と判断されていたためです。

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

#126709 [wasm][coreclr] Implement webcil V1 support in WebcilConverter and readers

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

Webcil形式のバージョン1(V1)対応を実装するPRです。先行するPR #126388でWebcil共有ライブラリがバージョン0からバージョン1に更新されたため、WebcilConverter、WebcilReader、およびMonoローダーをV0/V1の両方に対応させます。V0は28バイト、V1は32バイト(TableBaseフィールド追加)のヘッダサイズに対応し、後方互換性を維持しながらV1対応を実現します。

#126694 Fix RemoteExecutor-dependent tests failing on platforms where RemoteExecutor is unsupported

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

RemoteExecutorがサポートされていないプラットフォーム(NanoServer等のReadyToRun構成)において、RemoteExecutorに依存するテストがPlatformNotSupportedExceptionをスローして失敗する問題を修正しました。テストを適切にスキップするよう、条件付き実行属性で保護しました。

#126684 Move Thread::m_pInterpThreadContext near top of Thread class for stable asm offset

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

Thread::m_pInterpThreadContext フィールドを Thread クラスの末尾から先頭付近の安定した位置に移動させることで、ビルド構成によって変動していたアセンブリオフセットを固定化します。これにより、アーキテクチャ固有のアセンブリコード(asmconstants.h)におけるオフセット定義の変更を最小限に抑え、ビルド互換性を向上させます。

#126672 Avoid const_cast in methods on PEDecoder

@Copilot・GitHub・area-VM-coreclr

PEDecoder クラスの const メソッド内で使用されていた8か所の const_cast を削除し、キャッシュフィールドを mutable として宣言することで、const-correctness を改善します。動作やメモリレイアウトに変更はなく、コンパイル時の型安全性向上のみです。

#126666 Add watchdog instrumentation to OleTxTests.Recovery to capture hang diagnostics

@danmoseley・GitHub・area-CodeGen-coreclr

OleTxTests.RecoveryがMSDTC待機時にインターミッテントにハング(20分以上)する問題に対処するため、スキップ属性を削除し、5分のタイムアウト後にEnvironment.FailFastを実行するウォッチドッグスレッドを追加します。これにより、通常のCoreCLR実行時の失敗を検出しつつ、ハング診断用のクラッシュダンプを取得できます。

var testCompleted = new ManualResetEventSlim(false);
var watchdog = new Thread(() =>
{
    if (!testCompleted.Wait(TimeSpan.FromMinutes(5)))
        Environment.FailFast("OleTxTests.Recovery did not complete within 5 minutes");
});
watchdog.IsBackground = true;
watchdog.Start();

try { /* test code */ }
finally { testCompleted.Set(); }

#126655 Skip Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms

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

Apple モバイルプラットフォーム(iOS/tvOS/MacCatalyst)において、Process.Start() がプロセス起動前に PlatformNotSupportedException をスローするため、Start_Disposed_ThrowsObjectDisposedException テストをスキップするようにしました。このテストは処理済みオブジェクトの場合に ObjectDisposedException の発生を期待していますが、プラットフォーム非対応エラーが先に発生するため、runtime-extra-platforms ビルドで確定的な失敗が発生していました。

#126652 Add TARGET_APPLE to System.Private.CoreLib DefineConstants for Apple platforms

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

Apple プラットフォーム上で ILLink により Swift 相互運用型(SwiftSelf、SwiftError、SwiftIndirectResult)が System.Private.CoreLib から不正にトリミングされる問題を修正します。CreateRuntimeRootILLinkDescriptorFile タスクが corelib.h を処理する際に TARGET_APPLE が定義されていなかったため、Swift 型の保護ルートが生成されず、実行時に TypeLoadException が発生していました。System.Private.CoreLib の MSBuild DefineConstants に TARGET_APPLE を追加することで、Apple プラットフォーム向けビルド時に Swift 型定義が ILLink ディスクリプタに正しく含まれるようになります。

#126640 Clarify documentation of IChangeToken.ActiveChangeCallbacks

@svick・GitHub・area-Extensions-Primitives

IChangeToken.ActiveChangeCallbacksプロパティのドキュメンテーションを明確化するPRです。特にCompositeChangeTokenのような複合トークンにおいて、ActiveChangeCallbacks == trueがすべての基盤となる変更が確実にコールバックをトリガーすることを意味しないというケースを正確に説明するようにドキュメントを改善しています。

#126587 JIT: dominating redundant branch opt

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラに、支配的なブランチ(外側の条件分岐)が支配されるブランチ(内側の条件分岐)の述語に含意される場合に、支配的なブランチを最適化して削除する機能を追加しました。例えば、if (x > 0) if (x > 1) S(); では外側の if (x > 0) を削除できます。

// 最適化前
if (x > 0)
    if (x > 1)
        S();

// 最適化後(外側の条件は不要)
if (x > 1)
    S();

#126579 Fix initialization of t_MostRecentUMEntryThunkData in reverse pinvokes

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

リバースP/Invokeにおいて、インタープリタがUMEntryThunkDataをTLS(スレッドローカルストレージ)変数経由で受け取る際の初期化が失敗していた問題を修正しました。前回のコミット(60f1dc1b)でエントリーポイントの最適化により、プレスタブをスキップしてインタープリタプリコードを直接呼び出すようになったため、必要なTLS変数の設定が漏れていました。

#126534 Cache version-resilient hash code on MethodTableAuxiliaryData to fix superlinear behavior with polymorphic recursion

@Copilot・GitHub・area-VM-coreclr

GetVersionResilientTypeHashCodeがメモ化なしで再帰的にハッシュコードを再計算していたため、多態的再帰を含むシナリオで指数関数的なパフォーマンス低下が発生していました。本修正ではMethodTableAuxiliaryDataにキャッシュフィールドを追加し、ハッシュコードの計算結果を1度だけ保存することで、重複計算を排除します。

#126522 Use LifetimeHolder for COM interop holders

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

CoreCLR VM/COM相互運用のリソース管理を標準化するため、従来のWrapper<...>ベースのRAIIホルダーを新しいLifetimeHolder、ReleaseHolder、SpecializedWrapper抽象化に統一するリファクタリング。COM相互運用、GC/オブジェクトハンドル、CLRConfig文字列バッファ、ローダー/リソースヘルパーなどの複数の領域で、ボイラープレートコードを削減しながら動作を保持します。

#126521 Use CodeRangeMapRangeList for callcounting stubs and remove unneeded StubManagers

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

Call Counting Stubsの追跡メカニズムをCodeRangeMapRangeListに移行し、RangeSectionMapから直接Stub種別を識別できるようにしました。これにより、Call Counting Stub Allocatorの反復走査が不要になり、cDACでの効率的な検索が可能になります。同時に、Call Counting Stub Heapの明示的なEnumMemを削除し、他のCodeRangeMapRangeListユーザーと同じ列挙動作に統一しました。

#126493 Disable FEATURE_PGO on WebAssembly, iOS, TVOS, and MacCatalyst

@Copilot・GitHub・area-Infrastructure

PGO(Profile Guided Optimization)インフラストラクチャをWebAssembly、iOS、tvOS、MacCatalystプラットフォームで無効化し、FEATURE_DYNAMIC_CODE_COMPILEDフィーチャゲート下に移行する変更です。これらのプラットフォームではPGOが意味をなさないため、不必要なコード生成を削減し、ビルドサイズを最適化することを目的としています。

#126474 [NET] Add a new pipeline for PR trigger on top of the existing stress pipelines

@ManickaP・GitHub・area-Infrastructure-libraries

HTTP/SSL ストレステストパイプラインの PR トリガーをファイルパスフィルタとともに独立したパイプラインに分離する変更です。これにより、azp run ... コマンドでの手動実行が正常に機能するようになり、HTTP/SSL 製品コードの変更に対するストレステストの手動実行が可能になります。

#126471 Fix race condition in cached interface dispatch stubs

@MichalStrehovsky・GitHub・area-VM-coreclr

キャッシュされたインターフェイスディスパッチスタブにおけるレース条件を修正します。ディスパッチセルのm_pStubとm_pCacheが原子的に更新されていても、呼び出し元とスタブによる非原子的な読み取りにより、キャッシュ成長時にレース条件が発生し、スタブが陳旧したm_pCacheを読み取ってキャッシュサイズが一致せず、マッピングされていないメモリへのアクセスが発生する可能性がありました。

各RhpInterfaceDispatchNスタブに検証ロジックを追加し、m_pCacheロード後に下位2ビットがゼロであることとm_cEntriesが予想されるエントリ数と一致することを確認。不一致の場合は間接セルを通じて再ディスパッチして、現在のスタブとキャッシュペアで再試行します。

#126470 Fix ConfigurationBinder failing to bind empty array to constructor parameter

@svick・GitHub・area-Extensions-Configuration

ConfigurationBinderが空のJSON配列([])をコンストラクタパラメータ(string[]型など)にバインドする際にArgumentExceptionをスローしていた問題を修正しました。

根本原因: BindParameterでBindingPointを初期化する際に、設定セクションの文字列値("")を渡していたため、空コレクション生成の処理パスがスキップされていました。

修正内容: BindParameterでBindingPointコンストラクタのinitialValue引数を削除し、デフォルト値のnullを使用するようにしました。これにより、プロパティバインディングと同様に空コレクション処理パスが正常に動作します。

#126411 Handle non-existent root directory in PhysicalFilesWatcher

@svick・GitHub・area-Extensions-FileSystem

PhysicalFileProviderが存在しないルートディレクトリで構築された場合の問題を修正します。FileSystemWatcherが存在しないディレクトリを監視できないため、AddJsonFileで設定ファイルの親ディレクトリが起動時に未作成の場合にWatch()が失敗していました。

本修正では、PhysicalFilesWatcherがルートディレクトリの作成を遅延監視し、ルートが出現するまでFileSystemWatcherの有効化を延期します。PendingCreationWatcherが最も近い既存の親ディレクトリを非再帰的に監視し、中間ディレクトリレベルを通じてカスケード監視します。ルートディレクトリが存在するようになると、メインの再帰的FileSystemWatcherが有効になり、既に存在する監視対象エントリが報告されます。

#126065 Add Log10 to IBinaryInteger

@ViveliDuCh・GitHub・area-System.Numerics

IBinaryInteger<TSelf>インターフェースにLog10静的仮想メソッドを追加し、汎用数学API領域を拡張しています。すべてのプリミティブ整数型(byte、sbyte、short、ushort、int、uint、long、ulong、nint、nuint、char、Int128、UInt128)とBigIntegerに最適化された実装を提供します。

#126045 Move shared Linux build pool defaults from Ubuntu 22.04 to Azure Linux 3

@Copilot・GitHub・Servicing-approvedarea-Infrastructure

dotnet/runtimeの共有Linux ビルドプール設定をUbuntu 22.04からAzure Linux 3に統一するパイプライン構成の更新。#125996で個別のパイプラインファイルがAzure Linux 3に移行済みだったため、共有デフォルトテンプレートeng/pipelines/common/xplat-setup.ymlも同様に更新し、リポジトリ全体で一貫性を取るもの。

#125539 Adding EnumMethodDefinitionByName, StartEnumMethodDefinitionsByName, and EndEnumMethodDefinitionsByName cDAC APIs

@rcj1・GitHub・area-Diagnostics-coreclr

cDACレガシー層(IXCLRDataModule COM surface)に、メソッド定義を名前で列挙するための3つのAPI(StartEnumMethodDefinitionsByName、EnumMethodDefinitionByName、EndEnumMethodDefinitionsByName)を追加します。これにより、bpmdなどのデバッグツールがECMA-335メタデータを通じた名前ベースのメソッド検索が可能になります。

#125283 TarReader: implement GNU sparse format 1.0 (PAX)

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

TarReader が GNU sparse format 1.0(PAX)エントリに対応しました。これにより、bsdtar で作成されたアーカイブ(macOS/APFS の .NET SDK tarball など)から、内部プレースホルダーパス GNUSparseFile.0/real-file.dll の露出、不正なサイズ報告、破損したコンテンツ抽出が解決されます。PAX 拡張属性 GNU.sparse.major=1 と GNU.sparse.minor=0 が検出されると、実ファイル名を GNU.sparse.name から解決し、拡張サイズを GNU.sparse.realsize から取得し、生データストリームを GnuSparseStream でラップして仮想ファイルコンテンツ(ホールはゼロ、データは正しいオフセット)を提供します。

// Before: entry.Name == "GNUSparseFile.0/dotnet.dll", entry.Length == 512
// After:  entry.Name == "dotnet.dll", entry.Length == 1048576
using var reader = new TarReader(archiveStream);
TarEntry entry = reader.GetNextEntry();
entry.DataStream.ReadExactly(content); // correctly expanded virtual file

#124405 Backport XML docs for System.Diagnostics.FileVersionInfo from dotnet-api-docs

@Copilot・GitHub・area-System.Diagnostics

System.Diagnostics.FileVersionInfoの公開APIに対するXML ドキュメンテーションをdotnet-api-docsからソース実装にバックポートするコミットです。すべての公開メンバーに<summary>、<value>、<param>、<returns>タグを追加し、int型プロパティがバージョン情報欠落時にnullではなく0を返すことを正しく記載しています。

サンプル:

/// <summary>
/// Gets the build number of the file.
/// </summary>
/// <value>A value representing the build number of the file or 0 (zero) if the file did not contain version information.</value>
public int FileBuildPart { get; }

#117473 Box value types implementing IXmlSerializable in XmlSerializer generated IL

@daeghanelkin・GitHub・area-Serializationcommunity-contribution

IXmlSerializableインターフェースを実装するパラメータなしコンストラクタを持つ値型が、XmlSerializerの生成IL内で適切にボックス化されていなかった問題を修正します。この問題により、XmlSerializationReader.ReadSerializableメソッド呼び出し時にInvalidProgramException例外が発生していました。

修正内容:パラメータなしコンストラクタを持つ値型をインターフェース型として引き渡す際に、box命令をIL生成時に明示的に追加することで、値型の適切なボックス化を保証します。

2026年04月08日 (22 PRs) この日のページ →

#126618 Fix missing error handling in SafeFileHandle.Type on Windows

@Copilot・GitHub・area-System.IO

Windows上でのSafeFileHandle.Typeプロパティの不具合を修正。従来は無効なハンドルに対してFileHandleType.Unknownを無条件に返していましたが、本修正によりGetFileTypeがFILE_TYPE_UNKNOWNを返した際にGetLastErrorをチェックして、実際のエラーが発生している場合は例外をスローするようになります。

#126605 Disable HTTP/3 tests on AzureLinux 3 VMs due to QUIC OOM

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

AzureLinux 3 VMs上でMsQuicがメモリ不足エラー(QUIC_STATUS_OUT_OF_MEMORY)で失敗するため、HTTP/3機能テストを無効化します。既存のQUICテスト側での対策に合わせて、HTTP/3テスト用のサポートゲート条件にIsNotAzureLinux3VMチェックを追加することで、該当環境でのテストスキップを実現します。

#126602 Fix SmtpException.GetMessageForStatus: use distinct messages for unknown and defined-but-unmapped status codes

@Copilot・GitHub・area-System.Net

SmtpException.GetMessageForStatusが未定義のステータスコード(初期化されていない_statusCodeなど)に対して誤って"Syntax error, command unrecognized."というメッセージを返していた問題を修正しました。未定義のステータスコードと定義済みながらマッピングされていなかったステータスコードを区別し、それぞれ適切なメッセージを返すようになります。

#126597 [LoongArch64] Fix the floating-point register copy in SoftwareExceptionFrame::UpdateContextFromTransitionBlock().

@LuckyXu-HF・GitHub・area-VM-coreclrcommunity-contributionarch-loongarch64

LoongArch64アーキテクチャにおいて、SoftwareExceptionFrame::UpdateContextFromTransitionBlock()内の浮動小数点レジスタコピー処理を修正しました。このPRは例外処理時のレジスタコンテキスト更新で、浮動小数点レジスタが正しく保存・復元されることを確保します。

#126588 JIT: use funclet iterator in genCodeForBBlist

@AndyAyersMS・GitHub・area-CodeGen-coreclr

CoreCLR JITの線形コード生成ロジックをリファクタリングし、関数本体(funclet)の反復処理を既存の Compiler::Funcs() / FuncInfoDsc::Blocks() レンジベースの反復子を使用するように変更します。これにより、BBJ_CALLFINALLYブロック後のスキップ処理を廃止し、代わりにコード生成時にBBJ_CALLFINALLYRETブロックをスキップする仕様に統一します。

#126561 Fix regex compiler/source generator resumeAt handling of conditionals inside loops

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

正規表現コンパイラおよびソースジェネレータにおいて、ループ内の条件式でresumeAtがリセットされない問題を修正。この問題により、コンパイル/ソースコード生成された正規表現での複数マッチの結果が不正確になっていました。EmitExpressionConditionalをループ内で実行される各ブランチごとにresumeAtをリセットするよう更新。

#126517 Fix SkipOnCoreClr generating unreachable test code in standalone runner

@MichalStrehovsky・GitHub・area-Infrastructure

XUnitWrapperGeneratorにおけるSkipOnCoreClrAttributeの処理を修正しました。属性で1つのディメンション(例:RuntimeTestModes.InterpreterActive)のみを指定した場合、他のディメンションがAny値のままになり、結果としてfalseのプラットフォーム条件が生成され、スタンドアロンランナーでテスト本体が到達不可能なデッドコードになる問題を解決しています。

#126445 Wasm funclet RA

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

WebAssemblyターゲット向けのJITコンパイラに関数レット(funclet)のレジスタ割り当て機能を実装します。関数レットごとに独立したレジスタ割り当て状態(SP/FP/例外レジスタ)、ローカル変数宣言、およびプロログコード生成を追加し、例外処理リージョンが独自のWasmローカルレイアウトで生成できるようにします。

#126374 [Wasm RyuJit] transform multi-entry try regions

@AndyAyersMS・GitHub・area-CodeGen-coreclr

Wasm RyuJit のコントロールフロー最適化パイプラインを更新し、複数エントリポイントを持つ try/catch 領域をマルチエントリループとして一時的にモデル化して、既存の SCC-to-single-entry-loop 変換を活用し、Wasm try_table コード生成に適した単一エントリフォーム に変換します。

#126346 Fix ARM64 interface dispatch cache torn read

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

ARM64のインターフェース ディスパッチ キャッシュで、2つの独立したロード命令による制御依存関係の間でのロード再順序化により、破損した読み取り(torn read)が発生する競合状態を修正します。並行スレッドがキャッシュエントリを更新している最中に、古い m_pTargetCode(0)を読み取り、その値にブランチしてしまう問題を、単一の ldp 命令とガード条件を用いて解決します。

#126318 Add ProcessStartInfo.InheritedHandles to restrict child process handle inheritance

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

ProcessStartInfo.InheritedHandlesプロパティを追加し、子プロセスへのハンドル継承を制限できる新機能です。Windows/Unix両プラットフォームで、親プロセスから子プロセスに継承されるハンドルを選別して制御できるようになります。セキュリティと情報漏洩のリスク軽減を目的とした公開API追加です。

#125963 Fix intermittent OSX CI failures in StartsWithNoMatch_StringComparison and EndsWithNoMatch_StringComparison

@Copilot・GitHub・area-Infrastructure-librariesos-mac-os-x

Apple の NSString compare:options:range:locale: が特定の Unicode 入力(C1 制御文字 \u0080–\u009F)に対して非決定的な動作をするため、StartsWithNoMatch_StringComparison と EndsWithNoMatch_StringComparison テストが macOS で間欠的に失敗する問題を修正します。既存の [ActiveIssue] 属性が IsAppleMobile(iOS/tvOS)のみをカバーしていた gap を解決し、macOS にも対応させます。

#125900 [Runtime Async] Support for covariant override of Task- returning base with a Task\<T\>- returning derived method.

@VSadov・GitHub・area-VM-coreclrruntime-async

Taskを返すベースメソッドをTask<T>を返すオーバーライドメソッドで共変オーバーライドする場合のサポートを追加するもの。非同期コンテキストでvoidを返すベースとTを返す派生が衝突する問題に対して、Tの結果を無視する特別なvoid返却スロップシンク(return-dropping thunk)を導入し、仮想呼び出しのエラーを解決します。これはIssue #124238に貢献するものです。

#125647 [crossgen2] Add --strip-il-bodies option for composite R2R

@kotlarmilos・GitHub・area-crossgen2-coreclr

Composite ReadyToRun (R2R) 出力で、正常にコンパイルされたメソッドのILボディを最小限のスタブに置換する --strip-il-bodies オプションをcrossgen2に追加します。IL インタプリタフォールバックが不要なシナリオ(iOS/MacCatalyst等のAppleプラットフォーム)において、アセンブリサイズを削減します。

#124266 Re-enable symbol stripping for Apple platforms

@kotlarmilos・GitHub・area-crossgen2-coreclr

Apple プラットフォームのシンボルストリッピング(dsymutil処理)を再度有効化するPRです。Apple の事前構築 Swift ランタイムライブラリに含まれる DWARF デバッグ情報が、ビルドマシンにのみ存在する .pcm モジュールキャッシュファイルへの参照を持つことで dsymutil が標準エラー出力を発生させる問題に対応します。これまでの StripSymbols=false というワークアラウンドを削除し、代わりに dsymutil の Exec タスクで IgnoreStandardErrorWarningFormat="true" を設定して、エラーメッセージを無視しつつ非ゼロ終了コードで実際の失敗を検出するよう改善します。

#119891 Annotate System.Diagnostics.EventLog with Nullable Reference Types

@RenderMichael・GitHub・area-System.Diagnostics.EventLogcommunity-contribution

System.Diagnostics.EventLogライブラリにNullable Reference Types (NRT)のアノテーションを追加し、nullability意図を明確に表現することで型安全性を向上させるPRです。パラメータ、戻り値、フィールド、プロパティに対して?アノテーションを追加し、プロジェクトファイルの<Nullable>disable</Nullable>を削除してNRT検査を有効化しました。

2026年04月07日 (10 PRs) この日のページ →

#126601 [wasm][coreclr] Fix Regressions test crash by increasing Node.js stack size

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

WebAssembly(WASM)上でNode.jsを経由してCoreC LRテストを実行する際、多数のアセンブリロードと深い再帰的例外処理(フィルタ関数)により、V8 JavaScriptコールスタックがオーバーフローしてテストがクラッシュする問題を修正します。Node.jsスタックサイズをデフォルト(約1MB)から8MBに増やすことで解決します。

#126475 Reset frameNeedsTailcallUpdate when we don't call interp code

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

インタープリタの末尾呼び出し(tailcall)状態管理のバグ修正です。frameNeedsTailcallUpdateフラグがコンパイル済みコードやアンマネージドコード呼び出し後にリセットされずに残ったため、その後の末尾呼び出しでない操作コード(例:INTOP_NEWOBJ)が誤って末尾呼び出しのフレーム更新を実行してしまう問題を修正しました。

#126437 Make target OS/arch in Bundler and TargetInfo non-optional

@Copilot・GitHub・area-HostModel

ホストモデルのバンドリングAPI(BundlerとTargetInfo)をリファクタリングし、ターゲットOSとアーキテクチャを必須パラメータに変更しました。これまでのホスト環境からのフォールバック推論ロジックを削除し、より明示的で予測可能な動作を実現します。テストユーティリティも対応する変更が加えられています。

#126434 Fix for arm64 outerloop jitstress failures in FMA

@dhartglassMSFT・GitHub・area-CodeGen-coreclr

ARM64 JITコンプレッシュで、RMW(Read-Modify-Write)セマンティクスを持つHWIntrinsics(非定数イミディエート使用)のコード生成時に、ジャンプテーブルのエントリサイズ計算が実際に出力される命令数と一致していなかった問題を修正しました。RMW操作のmov命令が各ジャンプテーブルの分岐に重複出力されるようになったため、HWIntrinsicImmOpHelperに明示的な命令数を指定する必要がありました。

#126388 Add logic to load webcil as r2r

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

WebcilファイルをReadyToRun(R2R)として読み込むためのサポートを追加するPRです。Webcil v1ヘッダーにTableBaseフィールドを追加し、WASM実行環境のインポート方法を変更("env"から"webcil"へ)、cDACのWebcil解析をスペック定義の固定オフセットに基づく実装に更新しました。

#125943 Fix Mono-style whitespace in UnsafeMethodMissingRequiresUnsafeAnalyze…

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

UnsafeMethodMissingRequiresUnsafeAnalyzer.csのコード形式を ILLink.RoslynAnalyzer プロジェクトのコーディング規約に統一する変更です。メソッド呼び出し/宣言前の空白を削除し、K&R形式の波括弧をAllman形式に統一して、プロジェクト全体のコードスタイルの一貫性を改善します。

#121999 Add GroupJoin overload returning IGrouping

@Copilot・GitHub・area-System.Linq

LINQ の GroupJoin メソッドに新しいオーバーロードを追加します。従来のオーバーロードで必須だった結果セレクターを廃止し、IGrouping<TOuter, TInner> を直接返すシンプルな API を提供します。Enumerable、Queryable、AsyncEnumerable の3つのクラスに対応します。

// 新しいオーバーロード(結果セレクター不要)
var groupedResults = outer.GroupJoin(
    inner,
    o => o.Id,
    i => i.OuterId,
    comparer: null);  // optional

// 従来のオーバーロード(結果セレクターが必須)
var groupedResults = outer.GroupJoin(
    inner,
    o => o.Id,
    i => i.OuterId,
    (o, g) => new { o, Items = g }); // 結果セレクター指定が必要

2026年04月06日 (16 PRs) この日のページ →

#126581 Refresh remaining docs for #126122

@richlander・GitHub・area-Infrastructure

ドキュメント整理PRの後続対応として、WebAssemblyとFreeBSD クロスビルド関連のドキュメントを更新。Ubuntu 18.04時代の古いガイダンスをAzure Linuxベースの現在の前提条件イメージとdotnet/versions参照に置き換えました。テスト対象はドキュメントのみです。

#126526 [release/10.0] Update WebAssembly Helix image versions

@richlander・GitHub・Servicing-approvedarea-Infrastructure

release/10.0ブランチのWebAssembly(WASI・Browser)Helix テストキューのコンテナイメージバージョンをUbuntu 26.04に更新します。これにより古いUbuntu 22.04/24.04イメージの使用を回避し、公開パイプラインと内部パイプラインの正しいキュー識別子(.Openサフィックス)の使い分けを実現します。

#126515 crossgen2: Add --rtr-header-symbol-name opt-in option for custom ReadyToRun header symbol

@Copilot・GitHub・area-crossgen2-coreclr

crossgen2に新しいコマンドラインオプション --rtr-header-symbol-name を追加し、複合ReadyToRun(R2R)イメージの出力シンボル名をカスタマイズできるようにします。デフォルトは RTR_HEADER で、複数のR2Rイメージを直接リンクするカスタムホストでシンボル衝突を回避する必要がある場合に使用されます。

#126428 Add DirectoryPath property to DirectoryNotFoundException

@ViveliDuCh・GitHub・area-System.IO

DirectoryNotFoundExceptionにDirectoryPathプロパティを追加し、FileNotFoundException.FileNameと同じパターンで欠落ディレクトリパスへのアクセスを可能にします。新しいコンストラクタ、ToString()オーバーライド、シリアライゼーションサポートを実装し、ランタイム内の18箇所のスロー箇所でディレクトリパスを渡すよう更新しました。

#126382 Keep the trimming target type around if there's a template type layout for the trimming target

@jkoritzinsky・GitHub・area-NativeAOT-coreclr

NativeAOT の依存関係追跡を調整し、外部型マップエントリの trim 対象型が正規形を持つ場合に、その正規形に対応するテンプレート型レイアウトを到達可能な状態で保持するようにします。これにより、外部型マップエントリで保持される trim 対象型が正規形を持つ際に、対応するテンプレートレイアウトも確実に存在するようになります。

#125982 Add Renovate support

@mthalman・GitHub・area-Infrastructure

Renovateサポートを追加し、コンテナイメージの依存関係を自動的に最新の状態に保つパイプラインを実装します。初期設定ではコンテナイメージのダイジェストピニング(digest pinning)を使用し、pipeline-with-resources.ymlで参照されるイメージの更新を自動化します。Helixイメージも含めてダイジェストピニングに対応しています。

#125472 Remove async method inlining restrictions in crossgen2

@jtschuster・GitHub・area-crossgen2-coreclr

ReadyToRun (R2R) コンパイル時に非同期メソッドのインライン化を制限していた制約を削除します。これにより、await を含まない非同期メソッドはコンパイル時にインライン化されるようになります。69個すべての非同期テストが crossgen2 および composite R2R で合格しており、実装の妥当性が確認されています。

#123439 Avoid incorrectly resolving a MonoClass for MONO_TYPE_GENERICINST when loading custom attribute values.

@Venkad000・GitHub・area-VM-meta-monocommunity-contribution

Monoランタイムでカスタム属性値を読み込む際に、MONO_TYPE_GENERICINST型に対してm_type_data_get_klass()を無条件に呼び出すことによるクラッシュを修正しました。ジェネリック列挙型インスタンスを含むカスタム属性のデコード時にクラッシュが発生していましたが、この修正によりCoreClrと同じ動作になります。

using System;
using System.Reflection;
using System.Runtime.InteropServices;

var attr = typeof(C).CustomAttributes.Single(d => d.AttributeType == typeof(A));
var arg = attr.ConstructorArguments.Single();
Console.WriteLine(arg.GetType()); // System.Reflection.CustomAttributeTypedArgument

class A : Attribute
{
    public unsafe A(B<delegate*<void>[]>.E e) { }
} 

class B<T>
{
    public enum E { }
}

[A(default)]
unsafe class C { }

#121998 Add Join/LeftJoin/RightJoin tuple overloads to LINQ APIs

@Copilot・GitHub・area-System.Linq

LINQ の Join、LeftJoin、RightJoin に対して、resultSelector ラムダを省略できるタプル返却オーバーロードを追加します。これにより、結合結果をシンプルに取得できます。

使用例:

// Before
foreach (var (s, pair) in keys.Join(dict, k => k, p => p.Value, (outer, inner) => (outer, inner)))
    Console.WriteLine(s + " : " + pair.Key);

// After
foreach (var (s, pair) in keys.Join(dict, k => k, p => p.Value))
    Console.WriteLine(s + " : " + pair.Key);

2026年04月04日 (9 PRs)うち Bot 2 件 この日のページ →

#126533 Revert FEATURE_CORPROFILER into FEATURE_DYNAMIC_CODE_COMPILED block

@Copilot・GitHub

FEATURE_CORPROFILERのフィーチャーフラグ定義が誤ってFEATURE_DYNAMIC_CODE_COMPILEDブロック内に配置されていたのを修正します。プロファイラーサポートは動的コード生成と独立しており、iOS/Androidなどプラットフォーム間で一貫して扱う必要があるため、フラグを独立した箇所に復元します。

#126530 Revert "Inline CORINFO_HELP_ARRADDR_ST helper call, remove WriteBarrier FCall"

@jkotas・GitHub・area-CodeGen-coreclr

PR #117583で導入されたJIT側のインライン化・イントリンシック処理を取り除き、stelem.ref配列格納とWriteBarrier処理を従来のパターンに戻すRevartです。RuntimeHelpers.WriteBarrier イントリンシックを削除し、CastHelpers.WriteBarrier をFCALL経由のJIT_WriteBarrier_Callable ヘルパーに置き換えます。これにより#126516の問題を修正することが期待されています。

#126481 [minipal] Add getentropy() fallback for platforms without getrandom()

@lewing・GitHub・area-System.Security

WASI(WebAssembly System Interface)プラットフォーム向けに、getrandom() が利用できない場合の代替手段として getentropy() を minipal/random.c に追加します。wasi-libc は getentropy() を __wasi_random_get() で実装しており、既に C ランタイムで使用されているため、これを活用して RandomNumberGenerator.Fill() が WASI で動作するようにします。CMake のシンボル検出機能を使用することで、WASI に限らず getentropy() を持つ他のプラットフォームにも対応します。

#126338 Improve trimability of System.Diagnostics.Process by lazily initializing remote machine support

@Copilot・GitHub・area-System.Diagnostics.Processtenet-performancesize-reduction

System.Diagnostics.Process の NativeAOT トリミング性を向上させるため、リモートマシン対応をレイジー初期化し、ローカルプロセス列挙用の専用エントリポイントを追加しました。従来、Process.Start("notepad.exe").WaitForExit() のような単純な使用でもリーチング可能性の連鎖により PerformanceCounterLib やリモートレジストリ機能が含まれていたものを、遅延初期化デリゲート技法により分離します。Win-x64 NativeAOT アプリで約 22% (340kB) のコード削減を実現しました。

#126009 Convert breaking-change-doc workflow to GitHub agentic workflow

@ericstj・GitHub・area-skills

Breaking Change ドキュメンテーション自動化ワークフローをレガシーな PowerShell スクリプト + 従来の GitHub Actions ワークフローから GitHub Agentic Workflow(gh-aw)ベースの実装に移行します。新しいアプローチでは、専用の breaking-change-doc スキルとヘルパースクリプトを使用して、PR の破壊的変更に関するドキュメント生成を自動化します。

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

#126523 Clarify baseline build guidance for update-os-coverage skill

@richlander・GitHub・area-skills

update-os-coverageスキルのドキュメントにPrerequisitesセクションを追加し、YAML/ドキュメントのみの変更(Helixキュー・イメージ参照の更新)には repo-wide baseline buildが不要であることを明確化しました。製品コード変更が必要になる場合のみ copilot-instructions.md を参照するよう指示を改善しています。

#126507 Fix STJ source gen missing type parameter constraints on generic accessor wrappers

@eiriktsarpalis・GitHub・area-System.Text.Jsonsource-generator

System.Text.Json ソースジェネレータが汎用型の UnsafeAccessor ラッパークラスを生成する際、型パラメータの制約を伝播していなかった問題を修正します。制約(例:where TResponse : notnull, AuthenticatorResponse)が欠落していると、ダウンストリーム(AspNetCore)でCS0314コンパイルエラーが発生していました。

修正により、生成されるジェネリックアクセサクラスに型パラメータ制約が正しく付加されます:

// 修正後
private static class __GenericAccessors_MyType<TResponse> 
    where TResponse : notnull, global::AuthenticatorResponse
{
    [UnsafeAccessor(...)]
    public static extern ... __get_...(PublicKeyCredential<TResponse> obj);
}

#126491 JIT: Funclet iterators

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラにおいて、funclet(例外処理や遅延処理のコード領域)とそこに含まれるブロックに対してrange-based forループでの反復処理をサポートするようにしました。これにより、コード可読性と保守性が向上します。

#126488 Increase Playwright timeouts in Blazor counter test to reduce CI flakes

@lewing・GitHub・area-Build-mono

Blazor WASMテストにおいて、遅延したWindows Helix Docker環境でのPlaywrightタイムアウトを削減するため、要素操作前に明示的なWaitForAsync(Visible)呼び出しを追加し、ClickAsyncのタイムアウトをデフォルトの30秒から60秒に増加させました。遅いCI環境でのCSS遷移やレイアウトの再フローが原因で、要素が「安定した」と判定されないことによるタイムアウト例外を回避します。

#126487 Make ICorProfiler support optional via FEATURE_CORPROFILER

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

FEATURE_CORPROFILER ビルド時フラグを導入し、ICorProfiler サポート(PROFILING_SUPPORTED、PROFILING_SUPPORTED_DATA、FEATURE_PROFAPI_ATTACH_DETACH)をオプション化しました。WASM ターゲットでは無意味であるため FEATURE_CORPROFILER を 0 に設定し、プロファイリング機能を完全に無効化します。これにより、非プロファイリング対応ビルドのコードサイズと複雑さを削減できます。

#126449 Process.Linux/OSX: avoid loading full ProcessInfo for ProcessName and ToString.

@tmds・GitHub・area-System.Diagnostics.Processcommunity-contribution

System.Diagnostics.ProcessのProcessNameプロパティとToString()メソッドで、Linux/macOS上で完全なProcessInfoの構築を避けることで パフォーマンスを改善します。また、ProcessInfoを必要としないAPIのみを使用する場合、トリミング時にProcessInfo関連コードを削除できるようにします。

#126436 WIP Apply Base Relocs For Webcil in Wasm CoreCLR

@adamperlin・GitHub・area-VM-coreclr

WebCilランタイムの基本再配置スキーム実装です。WasmObjectWriterがPEスタイルの基本再配置をWebcilのrelocセクションに出力し、CoreCLRのWebcilローダーがこれらの再配置を適用するよう更新されました。標準的なイメージベース再配置に加えて、Wasm関数ポインタテーブルベース用の新しい再配置タイプ(wasm32/wasm64対応)が追加されています。

#126429 Fix composite crossgen2 crash: "Multiple nodes of this type are not supported" in TypeMap nodes

@Copilot・GitHub・area-crossgen2-coreclr

Composite R2R モード(複合ReadyToRun)でのcrossgen2クラッシュを修正します。複数のTypeMapノードが同一のClassCodeを持つ場合、CompareToImplが未実装であるため、依存関係グラフソーターが"Multiple nodes of this type are not supported"例外をスローしていました。本修正では、TypeMapノードにモジュール認識機能を追加し、モジュール単位で一意なノードを生成することで、決定的なソート順序を確立します。

#126387 Fix R2RDump ArgumentOutOfRangeException for composite LVB images

@Copilot・GitHub・area-R2RDump-coreclr

Large Version Bubble(LVB)複合R2Rイメージにおいて、ManifestReferenceAssembliesがReadyToRunAssemblyHeadersよりも多くのエントリを含む場合に、R2RDumpツールがArgumentOutOfRangeExceptionで異常終了する問題を修正します。マニフェストに含まれるバージョンバブルアセンブリ参照が実際のコンポーネントアセンブリ数を上回る場合、イテレーション時にインデックスが範囲外になることを防ぎます。

#126384 Add update-os-coverage skill for Helix queue OS version updates

@richlander・GitHub・area-Infrastructure

Helix キュー定義ファイルにおけるOS バージョン参照を自動更新するための新しい Copilot スキル(update-os-coverage)を追加します。このスキルは、コンテナイメージの可用性確認、EOL日付の確認、パイプラインファイル内の参照スキャン、バージョン更新の適用、陳旧化した参照の検証、リリースブランチの確認、および supported-os.json との照合を含む、OS バージョン更新の完全なプロセスを自動化します。

#126330 Migrate CLR to COM stubs to be IL stubs

@jkoritzinsky・GitHub・os-windowsarea-Interop-coreclr

CLR→COM イベント処理と遅延バインディング スタブを、レガシーな「汎用スタブ + CLRToCOMMethodFrame」モデルから IL スタブに移行します。これにより、CLR→COM 動作を既存の IL スタブ インフラストラクチャに統合し、デバッガ/スタックウォーク処理の特殊ケース対応を削減します。イベント処理スタブは基本的な IL スタブ インフラの上に実装され、遅延バインディング スタブは IL スタブ インフラストラクチャの拡張版として実装されます。

#126241 Use compiler-generated doc XML for PNSE builds

@ericstj・GitHub・area-Infrastructure-libraries

PNSE(Platform Not Supported Exception)アセンブリビルドにおいて、IntelliSenseパッケージに依存せず、互換性のある非PNSEシブリングターゲットフレームワークから生成されたコンパイラドキュメントXMLを再利用するようにビルドロジックを更新しました。これにより、PNSEビルドの外部依存性を削減します。

#126164 [cDAC] Implement GetTieredVersions for cDAC

@barosiak・GitHub・area-Diagnostics-coreclr

cDAC(コンポーネント化DAC)に ISOSDacInterface5.GetTieredVersions を実装し、ネイティブコードバージョンの最適化ティアを分類するAPIを提供します。R2Rイメージの境界チェックとティアード・コンパイル適格性を確認して、各ネイティブコードバージョンを正しいティアに分類します。ティアされていないメソッドやコード生成がないメソッドはUnknownを報告し、コントラクト表面を最小限に保ちます。

#126163 [cDAC] Add data descriptor field type annotations

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

cDAC(Compact Data Access Container)データディスクリプタ基盤に型システムを追加しました。従来はC言語のコメント(/*uint32*/)で指定されていたフィールド型を、プリプロセッサマクロ(T_UINT32、T_POINTER、TYPE(GCHandle)など)で明示的に表現するようにしました。これにより、型情報のコンパイル時検証が可能になります。

#126002 Rework built-in COM->CLR stubs to build on the UnmanagedCallersOnly model

@jkoritzinsky・GitHub・os-windowsarea-Interop-coreclr

COM→CLR スタブのアーキテクチャを Reverse P/Invoke(UnmanagedCallersOnly)モデルに統合し直すことで、レガシーな動的スタックレイアウト+直接 IL スタブ呼び出しのアプローチを廃止します。これにより、実行可能ヒープ上の ComMethodTable/ComCallMethodDesc の割り当てと手動アセンブリパッチングが不要になります。

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

#126482 Fix dotnet.thread_pool.queue.length to use ObservableUpDownCounter

@tarekgh・GitHub・area-System.Diagnostics.Metric

dotnet.thread_pool.queue.length メトリクスが不適切な ObservableCounter から ObservableUpDownCounter に変更されました。ThreadPool.PendingWorkItemCount は現在のスナップショットを報告するため、単調増加のカウンターではなく増減可能なカウンターが正しい実装です。これは同じ理由で既に ObservableUpDownCounter を使用している dotnet.thread_pool.thread.count との一貫性を確保します。

#126468 Fix stale version comments on pinned action SHAs in workflow files

@Copilot・GitHub・area-skills

GitHub Actionsワークフローファイルに記載されたピン留めされたSHA参照のインラインバージョンコメントが、実際のタグと不一致になっていた問題を修正します。Dependabotが参照を更新する際、コメントが同期されていなかったため、すべてのワークフローファイルを監査してバージョンコメントを正確に更新しました。

#126464 Skip unsupported tests and increase timeouts for Apple mobile CI legs

@kotlarmilos・GitHub・area-Infrastructureos-ios

Apple mobile(iOS、tvOS、MacCatalyst)およびAndroidデバイス上でPlatformNotSupportedExceptionをスローするテストやプラットフォーム固有の動作により失敗するテストをスキップし、CI レグテストのタイムアウトを増加させる変更です。モバイル環境での不安定なテスト実行を改善し、CI パイプラインの信頼性を向上させることが目的です。

#126450 Rename *.Win32.cs files to *.Windows.cs under src/libraries

@Copilot・GitHub・area-Meta

src/libraries 配下のWindows固有実装ファイルの命名規則を統一し、歴史的遺物である *.Win32.cs から *.Windows.cs への一括リネームを実施しました。Windows Store アプリが完全なWin32 API サーフェスを使用できるようになった現在、この区別は不要になったため、命名を現代的な慣例に統一します。

#126443 Fix MarshalArrayAsParam/AsLPArray/AsLPArrayTest test

@eduardo-vp・GitHub・area-Interop-coreclrarea-NativeAOT-coreclr

P/Invoke でマーシャリングされた [Out, MarshalAs(UnmanagedType.LPArray)] string[] パラメータにおいて、ネイティブ バッファが初期化されないまま確保され、ネイティブ呼び出し側が未初期化ポインタを解放しようとするとヒープ破損が発生する問題を修正しました。Out のみのパラメータについて TransformManagedToNative がスキップされていた根本原因に対処しています。

#126433 Escape LDAP filter values in System.DirectoryServices.AccountManagement

@tarekgh・GitHub・area-System.DirectoryServices

System.DirectoryServices.AccountManagementにおけるLDAPフィルタ構築時の脆弱性を修正。ADUtils.EscapeRFC2254SpecialCharsを使用して、LDAP フィルタ文字列に挿入される値をエスケープし、(、)、*、\などのRFC 2254特殊文字を含む値がフィルタを破損させるのを防止します。併せて、エスケープ機能の単体テストを追加。

#126413 Make sure m_synchronizedOrAsyncRetValVarIndex is always initialized

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

ランタイム非同期メソッドおよび同期メソッドにおいて、インタープリタが全IL命令を走査する前にエピローグを発行する場合、m_synchronizedOrAsyncRetValVarIndexが初期化されないという正確性の問題を修正します。この変数はCEE_RETによる戻り値の保存・復元に使用されるため、未初期化のままではCEE_RETが不正な値を参照する可能性がありました。

#126399 [HTTP/SSL] Revert docker-compose command changes from PR #125995

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

PR #125995で導入されたdocker-composeからdocker composeへのコマンド変更をリバートするPRです。一方で、Azure Linux 3イメージプール(build.azurelinux.3.amd64.open)への移行は維持されます。HTTP/SSLストレステストおよびエンタープライズネットワーキングパイプラインにおけるDockerコンテナオーケストレーション機能に影響します。

#126392 [Wasm RyuJIT] Fix for assert in obscure block store scenario

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

WebAssembly RyuJIT コンパイラにおいて、ブロックストア(GT_STORE_BLK)の低レベル化とコード生成時に、ネイティブなmemory.copy/memory.fill命令を使用する特殊なケースで不正なアサーションが発生する問題を修正します。非フォルティング(non-faulting)アドレスの場合に不要な一時レジスタの生成を避けることで、レジスタ割り当てエラーを解決します。

#126375 [Wasm RyuJIT] Set wasm's vector width to 128 bits

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

WebAssembly (Wasm32) ターゲットにおいて、Vector<T> の SIMD 幅を 128 ビットに明示的に設定することで、crossgen2 が Wasm シグネチャと依存関係分析を計算する際に LayoutInt.AsInt() の例外発生を修正します。また、Wasm クライアント側 JIT が存在しないため、命令セット最適化の楽観的な判定を無効化します。

#126372 Fix crash in debugger transport shutdown path during process exit

@Copilot・GitHub・area-Diagnostics-coreclr

デバッガ転送セッションのプロセス終了時のシャットダウンパス(非Windows系)におけるNULLポインタ逆参照クラッシュを修正しました。DbgTransportSession::AbortConnection()が保護なしにm_channelポインタにアクセスしていた問題を、転送ワーカースレッドがこのポインタをNULLに設定・置き換えるため発生していました。

#126370 Add support for dumping interpreter IR for debugging purposes

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

インタープリタIR(中間表現)のダンプ機能をInterpCompilerクラスの外部で利用可能にするリファクタリング。デバッガから直接呼び出し可能なInterpDumpIR()エントリーポイントを追加し、クラッシュ時のデバッグを容易にします。

// デバッガから使用例
(lldb) call InterpDumpIR(pFrame->startIp)
// インタープリタバイトコードのIR表現をダンプ

#126368 Cleanup holder types

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

CoreCLR デバッグコンポーネントのネイティブリソース管理をリファクタリングし、レガシーな ArrayHolder と NonVMComHolder スマートポインタクラスを holder.h で定義された新しい汎用ホルダーで置き換えました。arrayholder.h と releaseholder.h を削除し、トレイトベースの堅牢なホルダー実装(NewArrayHolder、AStringHolder、WStringHolder、ReleaseHolder など)を統一導入することで、コード安全性と保守性を向上させます。

#126366 Rewrite UTF8 string marshalling test suite with Theory methods and bool-returning native functions

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

UTF8文字列マーシャリング相互運用テスト スイートを最新化するもので、ループ駆動の単一[Fact]テストを粒度の細かい[Theory]ベースのテストに分割し、ネイティブ関数が例外発生ではなくBOOL戻り値で検証結果を報告するよう変更しています。複数のテストクラスをStringMarshaling.UTF8Testsに統合し、テストの可読性と保守性を向上させています。

#126320 Fix InMemoryDirectoryInfo path resolution for '..' and relative paths

@svick・GitHub・area-Extensions-FileSystem

InMemoryDirectoryInfoのパス解決バグ(..パターンおよび相対パスの処理)を修正し、相対パスが正しくFullNameに対して解決されるようにしました。GetDirectoryとGetFileは、入力パスとFullNameをPath.Combineで結合し、Path.GetFullPathで正規化することで、..セグメントを適切に解決します。また、パターンマッチャーの動作を保持するため、isParentPathフラグでNameを".."として保存します。

#126306 Add Process tests for MacCatalyst and fix MacCatalyst support

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

MacCatalystプラットフォームでのSystem.Diagnostics.Processのテスト整備と実装修正。RemoteExecutorが非サポートのモバイルプラットフォーム(Android・MacCatalyst)向けに、Unix標準ツール(ls、sleep)を使用した統一テストスイートを追加し、Console.OpenStandard*Handle()の不適切な利用を防ぐ修正を実施。

#126261 Fix FastReducer.SubMod infinite loop on 32-bit platforms

@stephentoub・GitHub・area-System.Numerics

PR #125799でBigInteger内部がnuint limbs対応に書き直された際、FastReducer.SubModの補償ループが32ビットプラットフォームで無限ループになる問題を修正しました。Barrett reduction後のk limb截断では、AddSelfループが最大2^64回反復する可能性があり、32ビット環境で実行不可能でした。修正では、unsigned underflowを許容するインライン減算に置き換え、Barrett reductionの数学的保証を活用します。

#126231 Add GetCodeHeapList cDAC API

@rcj1・GitHub・area-Diagnostics-coreclr

JIT コードヒープの列挙と詳細情報取得を行うための新しい cDAC API GetCodeHeapList と GetCodeHeapInfo を IExecutionManager コントラクトに追加します。CoreCLR VM の型記述子拡張、マネージドコントラクト実装、レガシ SOS DAC アダプタ、およびテストカバレッジを含みます。

#126211 Fix publish-time Framework materialization for multi-client WASM and add test

@lewing・GitHub・area-Build-mono

マルチクライアント・ホスト型Blazor WASMシナリオにおけるパブリッシュ時の静的ウェブアセット処理の不具合を修正。複数のクライアントプロジェクト(Client1、Client2)がパブリッシュされる際に、CopyToPublishDirectory=Neverでマークされたアイテムが不正に処理され、ビルド時にマテリアライズされたFrameworkアセットが同じSDKパスに置き換わることで、重複キーエラーが発生していました。GroupResolvedFilesToPublishからCopyToPublishDirectory=Neverアイテムをスキップすることで、プロジェクトごとのユニークなIdentityを保持するように修正。

#126181 Include file path in BadImageFormatException thrown from AddModule

@Copilot・GitHub・area-NativeAOT-coreclr

CompilerTypeSystemContext.AddModuleでBadImageFormatExceptionがスローされる際に、ファイルパスを含めることで診断情報を改善します。PEReaderの遅延初期化により、例外メッセージにどのファイルが失敗したかの情報がなかったため、例外をキャッチして新たにファイルパスを付加した例外を再スローするようにしました。

変更前:

System.BadImageFormatException: Unknown file format.

変更後:

System.BadImageFormatException: Bad IL format. The format of the file 'C:\foo\bar.dll' is invalid.

#125973 Improve InvalidCastException message for generic argument in different ALCs

@Copilot・GitHub・area-AssemblyLoader-coreclr

異なるAssembly Load Context(ALC)から読み込まれた型間のキャストでInvalidCastExceptionが発生した場合、特にジェネリック型の型引数が異なる場合の診断メッセージを改善します。ジェネリック型引数の違いと、それぞれが属するアセンブリ/ALC情報をエラーメッセージに含めることで、デバッグを容易にします。

#125931 [cDAC] Add API TranslateExceptionRecordToNotification

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Common Data Access Component)にTranslateExceptionRecordToNotification APIを追加し、デバッガ通知の例外レコードをマネージド側でデコードするための機能を実装しました。新しいINotifications契約APIとそれに関連する公開データ型(NotificationType、GcEventType、GcEventData)を追加し、レガシーIXCLRDataProcess COM相互運用性に統合しています。

#125915 Fix flaky FileSystemWatcher_Directory_Delete_MultipleFilters due to Windows NTFS pending-delete race

@Copilot・GitHub・area-System.IO

Windows NTFS の pending-delete レースコンディションと FileSystemWatcher テスト基盤のハンドルリークにより発生していた DirectoryNotFoundException フレーキーテストを修正するPRです。

主な修正内容:

  1. ExpectEvent の retry ループを簡潔化し、各試行後に FileSystemWatcher を確実に破棄
  2. ディレクトリ/ファイル削除テストのクリーンアップ処理で、再作成前にパスが完全に削除されるまで待機するロジックを追加

#125891 Port ComInterfaceGenerator to string writing

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

ComInterfaceGeneratorをRoslyn SyntaxNodeベースの出力からIndentedTextWriterを使用した文字列ベースの出力に移行するポート作業です。スタブノード生成の一時的な互換性維持のため、ヘルパーメソッドを追加し、複数に分割されていた部分宣言を統合することで生成コードの構造を簡素化しました。

#125710 Fix UF_HIDDEN causing st_flags to be dropped in ConvertFileStatus; add PAL_UF_HIDDEN static assert

@Copilot・GitHub・area-System.IO

macOS/BSDプラットフォームでConvertFileStatusがst_flagsの全ビットをUF_HIDDENのみに縮約していた不具合を修正します。この問題により、.NETが隠し属性を変更する際に他のBSDユーザーフラグ(例:UF_IMMUTABLE、UF_NODUMP)が意図せず消去される可能性がありました。合わせて、PAL_UF_HIDDENとUF_HIDDENが一致することを検証するstatic assertを追加しています。

#125625 Make MountHelper.Unmount resilient to expected cleanup errors in mount volume tests

@Copilot・GitHub・area-System.IO

Windows ボリュームマウントテストのfinallyブロック内でアンマウント時に発生する予期されたWin32エラーを無視し、テスト失敗を防ぐための改善。MountHelper.UnmountにdeleteDirectoryパラメータを追加し、エラーコード 4390(ERROR_NOT_A_REPARSE_POINT)と 3(ERROR_PATH_NOT_FOUND)をサイレントに処理することで、クリーンアップ処理をより堅牢にします。

#125457 Fix NonBacktracking correctness issues and exponential blowup on nested loops

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

NonBacktracking正規表現エンジンの入れ子ループパターン(例:((a)*)*)における指数的な時間計算量の問題を修正。深さ2000のネストでの単一文字マッチが10.7秒かかる問題を、ループフラット化、キャッシング、NFA推定値の改善により解決。匹敵の線形時間保証は維持される(パターン複雑度定数の指数的増加をパターン構築段階で制限)。

#125441 Reduce Apple mobile CI matrix

@kotlarmilos・GitHub・area-Infrastructureos-ios

Apple モバイルプラットフォーム(iOS/tvOS シミュレータ・デバイス、MacCatalyst)のCI テストマトリックスを削減し、macOS キューの混雑を緩和しながら、デフォルトシナリオに焦点を当てるようにパイプライン設定を最適化します。テストカバレッジは一般的な開発者・ユーザーシナリオに絞られています。

#124650 [STJ Source gen] Use UnsafeAccessor/reflection for inaccessible members

@Copilot・GitHub・area-System.Text.Jsonsource-generator

System.Text.Json ソースジェネレータが、[UnsafeAccessor] (NET8+ の非ジェネリック型) またはキャッシュされたリフレクションデリゲート (旧ターゲット/ジェネリック型) を使用して、アクセス不可能なメンバーへのアクセスを実現します。これにより、3つの以前未対応シナリオが可能になります:

  1. Init-only プロパティのデフォルト値保持: JSON に存在しない場合、コンストラクタの初期化式から除外し、構築後に UnsafeAccessor/リフレクションで設定することで、C# プロパティ初期化子のデフォルト値を保持
  2. [JsonInclude] によるアクセス不可能プロパティのサポート: getters/setters がアクセス不可能な場合でも完全に機能
  3. [JsonConstructor] のアクセス不可能コンストラクタのサポート: SYSLIB1222 警告なく呼び出し可能
// (1) Init-only プロパティのデフォルト値保持
public class Foo
{
    public int Value { get; init; } = 42;
}
// 修正前: "{}" デシリアライズ時に Value=0
// 修正後: Value=42 (デフォルト値保持)

// (2) [JsonInclude] によるアクセス不可能プロパティ
public class Bar
{
    [JsonInclude]
    private string Secret { get; set; } = "hidden";
}
// 修正前: InvalidOperationException
// 修正後: 完全にサポート

// (3) アクセス不可能な [JsonConstructor]
public class Baz
{
    [JsonConstructor]
    private Baz(string name) { Name = name; }
    public string Name { get; }
}
// 修正前: SYSLIB1222 警告で無視
// 修正後: UnsafeAccessor/リフレクションで呼び出し

#117583 Inline CORINFO_HELP_ARRADDR_ST helper call, remove WriteBarrier FCall

@EgorBo・GitHub・area-VM-coreclr

CORINFO_HELP_ARRADDR_ST ヘルパー呼び出しをインライン化し、WriteBarrier FCallを削除することで、配列要素の代入パフォーマンスを大幅に改善します。JITが共変性チェック付きの書き込みバリアをインライン化できるようになり、冗長な書き込みバリアと範囲チェック(以前はヘルパー内部に存在)の削除が可能になります。

2026年04月01日 (39 PRs)うち Bot 2 件 この日のページ →

#126415 Use CompressionLevel=Fastest for all test archive ZipDirectory calls

@steveisok・GitHub・area-Infrastructure

テストアーカイブの圧縮処理の高速化を目的とした変更です。ZipDirectory呼び出しの圧縮レベルをデフォルトのOptimalからFastestに変更することで、ビルドパイプラインの圧縮時間を削減します。Binlog分析により、osx-arm64 Libraries_CheckedCoreCLR legで255回のZipTestArchive呼び出しが8.2分のCPU時間を消費していたため、この改善により大幅な高速化が期待されます。Helixへのテスト転送ではAzureネットワークの速度が十分であるため、ファイルサイズのわずかな増加は許容範囲です。

#126406 Use simulator queue instead of device queue for Apple mobile in runtime.yml

@kotlarmilos・GitHub・area-Infrastructure-mono

Apple mobile デバイスキューの信頼性の問題を回避するため、ランタイムパイプラインで ios_arm64/tvos_arm64 デバイスキューの代わりに iossimulator_arm64 シミュレータキューを使用するよう変更しました。この変更は一時的なもので、デバイスキューの問題が解決されるまでの措置です。

#126389 Fix wrong gc join in BGC mark phase

@janvorli・GitHub・area-GC-coreclr

Background GC(BGC)のmark phase内で誤った join struct instanceが使用されていたバグを修正します。gc_t_join(通常のmark phase用)をbgc_t_join(BGC専用)に置き換え、Java GC bridge処理中のBGCスレッド同期を正する変更です。特定の負荷パターン(GCPerfSim)でGCハングが発生していました。

#126383 Add dependencies for type map group type for external/proxy type map nodes

@jkoritzinsky・GitHub・area-crossgen2-coreclr

ReadyToRun(R2R)コンパイル時のタイプマップ生成における失敗を修正するPR。外部タイプマップノードとプロキシタイプマップノードに対して、タイプマップグループ型を明示的なインポート依存関係として追加することで、生成されたタイプマップがグループ型を正しく参照できるようにします。

#126377 Fix libraries-interpreter Linux failures: Configuration case mismatch

@steveisok・GitHub・area-Infrastructure-libraries

runtime-libraries-interpreterパイプラインのLinux環境での100%の失敗を修正。原因はbuildConfig: release(小文字)がLinuxのケースセンシティブなファイルシステムで、ビルド成果物のRelease(PascalCase)と一致していなかったため。buildConfig: Releaseに変更することで、SendToHelixステップが正しいパスのtesthost実行ファイルを見つけられるようにします。

#126364 Add static nethost test scenario (nativehost_static)

@Copilot・GitHub・area-Host

libnethostをスタティックライブラリとして利用するシナリオを検証するため、nativehost_staticビルドターゲットとスモークテストを追加します。このPRではネイティブホスティング機能のスタティックライブラリ利用パターンに対応するテストインフラを整備しています。

#126362 AsyncEnumerable.ToAsyncEnumerable: return source directly if it implements IAsyncEnumerable

@Copilot・GitHub・area-System.Linq

AsyncEnumerable.ToAsyncEnumerable()メソッドを改善し、入力ソースが既にIAsyncEnumerable<T>を実装している場合(例:EF Core queryableなど)に、同期ラッパーで囲まずに元のインスタンスをそのまま返すようにしました。これにより、既存の非同期実装パスが保持され、不要な同期化を防ぎます。

return source switch
{
    IAsyncEnumerable<TSource> asyncEnumerable => asyncEnumerable, // 新規追加
    TSource[] array => ...,
    List<TSource> list => ...,
    // ...
};

#126354 Use C# 14 extensions for polyfills in MetadataLoadContext.

@teo-tsirpanis・GitHub・area-System.Reflectioncommunity-contribution

System.Reflection.MetadataLoadContextをC# 14の拡張メンバー機能を使用してリファクタリングしました。従来のヘルパーメソッド呼び出しから、プロパティスタイルのアクセスに移行することで、モダンなType APIの利用を簡潔にしています。NetStandard向けのポリフィルを拡張メンバーで実装し、NetCore向けのエミュレータレイヤーを削除しました。

#126316 Skip System.Formats.Tar hard-link tests on platforms that can't create hard links (Android)

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

AndroidのSELinuxアプリサンドボックスがlinkシステムコールを拒否することにより、File.CreateHardLinkを呼び出すテストでUnauthorizedAccessExceptionが発生していた問題を修正します。System.Formats.Tar.Testsのハードリンク関連テストをMountHelper.CanCreateHardLinksで条件付きスキップするようにしました。これにより、Android(x86/arm/arm64/x64)およびシンボリックリンク作成が不可能なプラットフォーム上での154件のCI失敗を解消します。

#126313 Implement SafeProcessHandle.Kill and Signal

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

SafeProcessHandleにKill()とSignal(PosixSignal)メソッドを追加し、Processを経由せずにハンドル経由でプロセスを終了またはシグナル送信できるようにしました。Kill()はプロセス終了をリクエストし、既に終了している場合は暗黙的に成功します。Signal(PosixSignal)は任意のシグナルを送信し、プロセスが存在しない場合はfalseを返します。両メソッドは無効なハンドルでInvalidOperationExceptionをスロー、iOS/tvOSでPlatformNotSupportedExceptionをスローします。

#126287 Move polyfills for !NET targets to src/libraries/Common/src/Polyfills/

@EgorBo・GitHub・area-Meta

ダウンレベルターゲット(.NET Standard 2.0、.NET Framework等)向けのポリフィルを共有される src/libraries/Common/src/Polyfills/ に集約し、複数のライブラリから #if NET 条件分岐を削除することで、コード維持性を向上させます。ポリフィルにより、非.NETCoreAppターゲットでも最新のAPI(Stopwatch.GetElapsedTime、double.IsFinite、Array.MaxLength等)を無条件で呼び出せるようになります。

#126252 Add [OverloadResolutionPriority(1)] to MemoryMarshal.AsBytes(Span) and Cast(Span)

@Copilot・GitHub・area-System.Memory

C# 14のオーバーロード解決ルール変更により、MemoryMarshal.AsBytes<T>(int[])とMemoryMarshal.Cast<TFrom, TTo>(int[])がReadOnlySpanオーバーロードに解決される問題を修正します。既存コードでSpan<byte>への割り当てが失敗する破壊的変更を回避するため、[OverloadResolutionPriority(1)]属性をSpanオーバーロードに追加し、優先度を上げます。

int[] bits = [];
// C# 14: 修正後はSpanオーバーロードに解決
Span<byte> asBytes = MemoryMarshal.AsBytes<int>(bits);
Span<ulong> cast = MemoryMarshal.Cast<int, ulong>(bits);

#126180 AOT publishing: Improve error message when the Windows SDK is missing

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

NativeAOT publishing時にWindows SDKが不足している場合のエラーメッセージを改善しました。vcvarsall.bat実行後にWindowsSdkDir環境変数が設定されていない場合に、より明確なエラーメッセージを表示するようになりました。これにより、従来のLINK : fatal error LNK1181: cannot open input file 'advapi32.lib'といった不明確なリンカエラーの代わりに、Windows SDKの不足を明示するメッセージが表示されます。

#126144 [android] Enable exceptions smoke test

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

Android プラットフォームにおける NativeAOT Exceptions smoke テストで、Server GC が有効であるという要件を常に強制するように修正しました。従来は Android 固有の例外処理があり、Server GC チェックがスキップされていましたが、この修正により すべてのプラットフォームで一貫した検証が行われるようになります。

#126121 Move helix-platforms.yml ARM host VMs from Ubuntu 22.04 to Azure Linux 3

@richlander・GitHub・area-Infrastructure

Helix キューの ARM ホスト VM を Ubuntu 22.04 から Azure Linux 3 に統一する変更です。helix-platforms.yml の ARM コンテナホスト VM 定義を更新し、他のパイプラインテンプレート(libraries/helix-queues-setup.yml、coreclr/templates/helix-queues-setup.yml)で既に使用されている AzureLinux.3.Arm64 と一致させます。

コンテナイメージ(テスト OS)は変更なし:

  • ARM32: Debian 13、Alpine 3.23
  • ARM64: Ubuntu 26.04、Ubuntu 22.04、Alpine 3.23

#126032 [cDAC] Implement simple DacDbi methods and IDebugger contract

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

cDAC(Compact Data Access Component)コンテキストにおいて、IDacDbiInterfaceの32メソッドをマネージC#で実装し、レガシーネイティブデリゲートスタブを置き換えるとともに、新しいIDebuggerコントラクトを導入します。これにより、デバッガー状態クエリの機能をコントラクトベースで提供できるようになります。

#126008 [release/8.0] Disable flaky ETW manifest generation tests in release/8.0

@Copilot・GitHub・Servicing-approvedarea-skills

release/8.0ブランチのETWマニフェスト生成テストの不安定な動作を修正するバックポート。主要な2つのテスト(Test_EventSource_EtwManifestGenerationとTest_EventSource_EtwManifestGenerationRollover)に[ActiveIssue]属性を追加し、既知の問題を追跡します。この変更はmain、release/9.0、release/10.0で既に実施されており、release/8.0への遅れたバックポートです。

[ConditionalFact(nameof(IsProcessElevatedAndNotWindowsNanoServerAndRemoteExecutorSupported))]
[ActiveIssue("https://github.com/dotnet/runtime/issues/88027")]
public void Test_EventSource_EtwManifestGeneration()

#125818 Fix FileSystemWatcher test flakiness on Windows and re-enable 86 disabled tests

@danmoseley・GitHub・area-System.IO

System.IO.FileSystem.WatcherのテストのWindowsにおけるフレーキーな失敗を修正し、86個の無効化されたテストを再度有効化するテスト品質改善PR。製品コードには変更なし。テスト実行時にコールバック遅延に対する許容度を段階的に引き上げることで、CI環境でのスレッドプール圧力下での遅延イベント配信に対応。

#125815 Check for stale coreroot files before running coreclr tests

@jtschuster・GitHub・area-Infrastructure-coreclr

CoreCLRテスト実行前にCore_Root内の古いバイナリを検出し、警告を発行するMSBuildターゲットを追加します。ローカルビルド出力よりも古いファイルがあれば警告し、テスト実行時に古いビット(stale bits)を使用することによる時間浪費を防ぎます。警告はSkipCoreRootFreshnessCheckで無効化できます。

#125779 Fix flaky File_Move_Multiple_From_Watched_To_Unwatched_Mac test caused by duplicate FSEvents

@Copilot・GitHub・area-System.IO

macOS FSEventsが監視対象から非監視対象へのファイル/ディレクトリ移動時に重複したDeletedイベントを配信する問題を修正します。既存のisFilteredOutフィルタは古いCreated/Changedイベントのみ除外していたため、重複したDeletedイベントが収集され、テストが失敗していました。新しいCreateDeduplicatingFilter()ヘルパーを導入し、特定のイベント型を除外しつつ、重複イベントをConcurrentDictionaryで一意に保つようにしました。

#125505 [cDAC] Implement stack reference walking and GC stress verification

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

このPRはcDAC(コンポーネント化DAC)にWalkStackReferences APIを実装し、スタック上のGC参照を報告する機能を追加します。また、cDACの正確性を検証するためのGC stress検証ツール(CdacStress)を追加します。cDACはランタイムの内部的なGCスタッククローリングと同等の管理実装を提供し、AMD64/ARM64(Windows/Linux)をサポートしています。

#125352 Move Struct marshaling to transient IL and adjust LayoutClass marshaling IL stub handling

@jkoritzinsky・GitHub・area-Interop-coreclr

構造体マーシャリングをTransient ILに移行し、レイアウトクラスマーシャリングの処理を簡潔化するリファクタリングです。構造体マーシャリングはSystem.StubHelpers.StructureMarshaler<T>の各インスタンスに対してTransient ILで生成され、レイアウトクラスマーシャリングはSystem.StubHelpers.LayoutClassMarshaler<T>の管理側スタティクスでキャッシュされるようになります。これにより、汎用IL スタブキャッシュへの依存を削減し、マーシャリング関連のランタイムロジックを簡素化します。

#124912 [cDAC] Dumptest Stackwalker Improvements

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

cDAC(Compact DAC)のダンプテスト スタックウォーキング機能を改善するPRです。新しいDumpTestStackWalkerヘルパークラスを導入し、スタックフレーム検証テストの記述を簡素化します。Fluent APIにより、隣接性チェック、述語マッチング、双方向トラバーサルをサポートしています。

目次