2026年06月のダイジェスト

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

← アーカイブ一覧へ戻る

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

681
PR 数(Total)
511
PR 数(Community)
98
PR 数(AI Agent)
72
PR 数(Bot)
109
ラベルタイプ数
30
更新日数

日別 Pull Request 数

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

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

ラベル別 Pull Request 数の上位10 上位10件の合計566件を100%とした内訳です。各スライスの番号は凡例の番号に対応します。ラベルごとの件数は凡例を参照してください。 1. area-CodeGen-coreclr — 141 PRs (24.9%) 2. community-contribution — 77 PRs (13.6%) 3. Servicing-approved — 71 PRs (12.5%) 4. area-codeflow — 52 PRs (9.2%) 5. arch-wasm — 47 PRs (8.3%) 6. area-Diagnostics-cdac — 41 PRs (7.2%) 7. area-NativeAOT-coreclr — 38 PRs (6.7%) 8. area-VM-coreclr — 36 PRs (6.4%) 9. area-Infrastructure — 35 PRs (6.2%) 10. area-System.Security — 28 PRs (4.9%)
  1. area-CodeGen-coreclr141 PRs24.9%
  2. community-contribution77 PRs13.6%
  3. Servicing-approved71 PRs12.5%
  4. area-codeflow52 PRs9.2%
  5. arch-wasm47 PRs8.3%
  6. area-Diagnostics-cdac41 PRs7.2%
  7. area-NativeAOT-coreclr38 PRs6.7%
  8. area-VM-coreclr36 PRs6.4%
  9. area-Infrastructure35 PRs6.2%
  10. area-System.Security28 PRs4.9%
上位10件で全1016件中566件(55.7%)を占めます。ラベルは1つの Pull Request に複数付くため、比率は PR 数ではなくラベル付与の延べ数に対するものです。

各 Pull Request の概要

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

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

#130042 Fix Android NativeAOT JNI string access

@sbomer・GitHub・area-NativeAOT-coreclr

Android NativeAOT環境でJNI GetStringUTFChars の呼び出しが失敗する問題を修正しました。[DisableRuntimeMarshalling] が指定されたテストアセンブリで、out byte パラメータがランタイムマーシャリングを要求し、NativeAOTが marshalling thunk をエミットする際にクラッシュしていました。JNI ABI形式の byte* パラメータに変更し、ローカル isCopy バイト変数のアドレスを渡すことで解決します。

#130038 Add GetStressLogMemoryRanges to ISOSDacInterface17

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

ISOSDacInterface17にGetStressLogMemoryRangesメソッドを追加し、診断ツールがメモリ内ストレスログのバッキングチャンク(メモリ範囲)を列挙できるようにします。このインターフェースはまだシッピング製品で使用されていないため、破壊的変更として実装されています。メソッドはISOSMemoryEnumを返し、ストレスログのメモリ領域をディスカバリーおよび読み取り可能にします。

#130037 [browser][coreCLR] Re-enable passing libraries tests on browser+CoreCLR

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

browser + CoreCLR (WASM) 構成で一時的に無効化されていたライブラリテストの一部を、実装及び検証を通じて安定稼働することが確認されたため、再度有効化するPRです。EventSource ActivityTracking、DLR動的言語ランタイム適合性テスト、Environment.ProcessPath、COM Variant マーシャリングに関する計19個のテストが対象です。

#130033 Remove NoWarn for NU1511 false positives

@akoeplinger・GitHub・area-Infrastructure

NuGetの上流issue修正に伴い、NU1511警告の誤検知抑制を削除しました。また、正当なNU1511抑制のコメントを統一し、.NET 11でベース共有フレームワークに移行されたアセンブリについて、P2P参照を.NETFrameworkのみに変更することで、一部の抑制を削除しました。

#130032 Allow for Job escape when using KillOnParentExit

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

Windows プラットフォームで ProcessStartInfo.KillOnParentExit 使用時に、子プロセスが親プロセスから独立した子孫プロセス(breakaway descendants)を作成できるようにするため、Job Object の設定を更新しました。JOB_OBJECT_LIMIT_BREAKAWAY_OK フラグを有効化することで、子プロセスは CREATE_BREAKAWAY_FROM_JOB フラグで親のジョブ制御から逃れることが可能になります。

#129999 Fix async resumption stub with byref parameters

@jakobbotsch・GitHub・area-VM-coreclr

async resumption stubでbyrefパラメータを使用する場合、無効なIL(initobjでbyref localを初期化)が生成される問題を修正。byref引数に対して直接null管理ポインタを読み込む方式に変更し、回避パターンをテストケースに追加することで、resumption stub作成パスを確実に検証するようにしました。

関連Issue: #129990

#129994 Handle large DiagnosticsIPC ProcessInfo payloads gracefully

@tommcdon・GitHub・area-Diagnostics-coreclr

診断IPC(InterProcess Communication)メッセージ構築時に、大規模なPayloadによるサイレント切り詰めを防止するための変更です。Payloadサイズをより広い型(size_t)で計算し、ヘッダ+Payload合計がuint16_tメッセージサイズフィールドの範囲(最大65535バイト)を超える場合は失敗を返すようにしました。ProcessInfo/ProcessInfo2/ProcessInfo3、env-info、generate-core-dump応答Payloadのサイズ計算をbool戻り値+uint16_t出力パラメータのシグネチャに変更し、オーバーフロー時に明示的にエラーハンドリングしています。

#129991 Fix TestNativeDigits for ur-IN on all Apple platforms

@tarekgh・GitHub・area-System.Globalization

Apple プラットフォーム上で ur-IN カルチャーの TestNativeDigits テストが失敗する問題を修正します。Apple の ICU が CLDR 仕様の拡張アラビア数字(U+06F0-U+06F9)ではなくラテン数字(0-9)を返すため、テスト期待値をすべての Apple プラットフォーム(macOS、iOS、tvOS、MacCatalyst)で統一的に調整します。

#129985 Enable tiering for async versions

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

CoreCLRのティアード・コンパイル(Tiered Compilation)の対象条件を緩和し、ランタイム非同期メソッド(async version methods)がティアリングに参加可能にしました。これにより、ティアード PGO の候補となります。一方、サポートされていないラッパー・スンク非同期メソッドは除外されたままです。

#129948 SPMI: per-context tpdiff examples

@AndyAyersMS・GitHub・area-CodeGen-coreclr

SuperPMI tpdiff マークダウン要約に、メソッドごとの回帰/改善例を追加するコマンドラインツール変更です。既存の詳細CSV内のコンテキストごとのスループット差分データを集約し、PDIFF%でランク付けされたFullOpts/MinOpts別トップNテーブルを出力します。Release JITがMethodFullNameを報告しない場合は、SPMI コンテキスト番号をフォールバック参照用に表示し、mcs -dumpMapやsuperpmi -c Nで詳細を確認可能にします。

#129923 Fix race condition in SharedMemoryHelpers.CreateOrOpenFile for named mutexes on Unix

@Copilot・GitHub・area-System.Threading

Unix上の名前付きミューテックス作成時における競合状態を修正します。複数プロセスが同時に同じ名前のミューテックスを作成しようとした場合、O_RDWRでENOENTが返されてもO_CREAT|O_EXCLでEEXISTエラーになる TOCTOU(Time-of-check-time-of-use)ウィンドウが存在し、ハンドルされないIOExceptionが発生していました。EnsureDirectoryExistsで既に使用されている再試行パターンをミラーリングすることで対応します。

#129901 Handle Synchronized async versions

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

MethodImplOptions.Synchronizedで修飾された非asyncメソッドがTask/ValueTaskを返す場合のランタイム非同期バージョン処理に対応しました。JITとインタプリタの両方で、モニタロック解放のタイミングを正しく制御し、テールコール最適化を禁止することで、awaitの前にロックが確実に解放されるようにしています。

#129872 Fix Android NativeAOT test crypto JNI export

@sbomer・GitHub・area-NativeAOT-coreclr

Android NativeAOT テスト APK のパッケージング設定を修正し、暗号信頼マネージャーの JNI コールバック シンボル Java_net_dot_android_crypto_DotnetProxyTrustManager_verifyRemoteCertificate が最終的な共有ライブラリに確実に保持・エクスポートされるようにします。これにより、以前除外されていた System.Net.Requests.Tests と System.Net.WebSockets.Client.Tests のテストが再度有効化されます。

#129858 [cdac] x86 GCInfo decoder + PromoteCallerStack -> GCRefMap; enforce 0 known issues on windows-x86/x64

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

x86 GCInfo デコーダーの cDAC 実装と、GcScanner.PromoteCallerStack の ICallingConvention.TryComputeArgGCRefMapBlob への書き換えを実施し、Windows x86/x64 での既知の問題をゼロに厳格化するPRです。変更後、x86 cDAC スタックウォーキングはランタイムと同等の機能を実現し、cdacstress GCREFS スイートで 4798/4798 パス(既知の問題なし)を達成しています。

#129616 Update CI failure fixer AWF tooling

@vitek-karas・GitHub・area-Infrastructure

CI Outer-Loop Failure Fixer のワークフローで使用される gh-aw-firewall ツーリングを 0.25.40 から 0.27.7 に更新するもの。新しいバージョンでは Squid プロキシの起動パスに改善が含まれており、sandbox/proxy の起動時の安定性が向上する。ワークフロー定義本体は変更されず、生成されたロックファイルのツーリングバージョンとイメージダイジェストのみが更新される。

#129574 Disable AVX/AVX2 on interpreter-only x64 builds to fix Vector256 NRE

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

インタープリタ専用のx64ビルド(Apple mobileなど)において、Vector256<T>を使用するコードがVector256.get_IsHardwareAccelerated()でNullReferenceExceptionをスローする問題を修正します。インタープリタ専用モードでAVXを無効化することで、ReadyToRun(R2R)のx86-64-v2ベースラインと実行時に報告されるISA(命令セット)の一貫性を保ち、不正なコードパス選択を防ぎます。

#129570 Add macOS support for StartSuspended via POSIX_SPAWN_START_SUSPENDED

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

macOSでProcessStartInfo.StartSuspendedとSafeProcessHandle.Resume()のサポートを追加しました。macOS 10.5以降で利用可能なPOSIX_SPAWN_START_SUSPENDEDフラグを使用してプロセスを中断状態で起動し、SIGCONTシグナルで再開できるようになりました。

var process = new Process
{
    StartInfo = new ProcessStartInfo("/usr/bin/app") { StartSuspended = true }
};
using var handle = SafeProcessHandle.Start(process.StartInfo);
// プロセスは中断状態...
handle.Resume(); // macOSではSIGCONTを送信

#129490 Fix reflection-based XmlSerializer to support XmlSchemaObject-derived types

@StephenMolloy・GitHub・area-Serialization

XmlSchemaObjectから派生した型の逆シリアル化に対応するため、リフレクションベースのXmlSerializerの2つの関連バグを修正。

  1. WriteLiteralStructMethodがXmlSchemaObject派生型でNotImplementedExceptionをスローしていた問題を、DecodeName = falseの設定で解決(スキーマ名のコロン含有問題を防止)
  2. メンバーフラッシュループが読み取り専用コレクションプロパティ(XmlSchemaElement.Constraintsなど)に対してSetValueを呼び出し、ArgumentExceptionをスローしていた問題を、セッターなしプロパティを検出して既存コレクションインスタンスに直接アイテムを追加する処理で解決

#129485 Allow creating H2C connections over HTTP CONNECT proxy tunnels

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

HTTP CONNECTプロキシトンネル経由でH2C(クリアテキストHTTP/2)接続を作成できるようにする変更です。これにより、HTTPプロキシ経由のHTTP/2通信でHTTP/1.1へのフォールバックを回避し、HTTP/2のパフォーマンス利点を活かせるようになります。WebSocketのプロキシトンネル対応と同様のメカニズムを適用しています。

#129436 [browser][coreclr] Add wasm/CoreCLR libraries tests to outerloop CI

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

Browser + CoreCLRの単一スレッドwasm環境におけるouterloop CI実行を整備するため、遅いライブラリテストスイートをCI実行可能にするパイプライン構成・タイムアウト管理・テストゲーティングを追加します。従来はouterloopパイプラインでwasm/CoreCLRの実行カバレッジがなく、今回新規に「slow tests([OuterLoop])を含む約200スイート、657k以上のテスト」を実行可能にしました。innerloop動作は変更されません。

#129259 Avoid socket telemetry errors for pending nonblocking connects

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

非ブロッキングSocket.Connectで保留状態を示すWouldBlock(Windows)またはInProgress(Unix)が返される場合、テレメトリがこれをエラーとして扱っていた問題を修正します。本PR後は、保留状態ではActivityのステータスを未設定のままとし、error.typeを省略し、対応するConnectFailedイベントを抑制します。他のSocketError値は既存のエラー処理パスを維持します。

#128979 Escape quotes and backslashes in MailAddress display name when encoding SMTP headers

@Copilot・GitHub・area-System.Net

MailAddress.Encode で生成される SMTP ヘッダーの表示名(DisplayName)に含まれるダブルクォート(")とバックスラッシュ(\)を RFC 5322 準拠のように正しくエスケープする修正です。Henry "The Fonz" Winkler や C:\path\to\file のような特殊文字を含む表示名を使用した際に、不正な quoted-string が生成される問題を解決します。

#128862 Add Process.Start callback overload with WindowsProcessStartArguments and UnixProcessStartArguments

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

Process.Start() にコールバックベースのオーバーロードを追加し、開発者がカスタムプラットフォームAPI(Windows の CreateProcess や Unix の posix_spawn など)でプロセスを作成しながら、.NET の Process インフラストラクチャ(ストリーム処理、WaitForExit など)を活用できるようにしました。新しい ref struct 型 WindowsProcessStartArguments と UnixProcessStartArguments は、プリペアされたスタート情報(標準ハンドル、コマンドラインやargv、環境ブロック、Unix では UTF-8 ポインタとしての実行可能ファイルパス)をコールバックに渡します。

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

#129984 wasm: fix R2R generic dictionary size-check off-by-one

@AndyAyersMS・GitHub・area-VM-coreclr

WebAssembly向けのRead-Ahead-of-Time (R2R) コンパイルにおいて、ジェネリック辞書のサイズチェックにオフバイワンエラーが存在していました。サイズチェック条件を size < slotOffset から size <= slotOffset に修正することで、辞書が要求されたスロットに対して十分な大きさでない場合に、ヘルパーパスへの適切なフォールバックを保証します。

#129974 Chrome upgrade PR should bump mac versions as well.

@ilonatommy・GitHub・arch-wasmarea-Infrastructure-mono

WebAssembly用Chrome/V8自動バージョンアップデート機構をmacOSに対応させるPRです。従来はLinux/Windowsのみの対応でしたが、本変更でmacOS版Chromeのバージョン管理を自動化します。また、バージョンダウングレードを防止する仕組みを追加し、手動アップグレード後の自動ダウングレードを防ぎます。

#129965 Disable System.Text.Json polymorphic source-gen tests on NativeAOT

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

System.Text.Json の多態的シリアライゼーション テスト 12 メソッドを NativeAOT で条件付きスキップするよう修正しました。これらのテストは CustomPolymorphismResolver を使用しており、ランタイム リフレクションに依存するため NativeAOT 環境では実行できません。共有基底クラスの変更により、4つの SourceGeneration テストクラスすべての亜種をカバーしています。

#129963 Implement Assembly.GetCallingAssembly for native AOT

@MichalStrehovsky・GitHub・breaking-changeneeds-breaking-change-doc-createdarea-NativeAOT-coreclr

Native AOT環境で Assembly.GetCallingAssembly() を実装します。スタックトレースメタデータを使用して呼び出し元のアセンブリを特定する方式で、スタックトレース情報が利用可能な場合にのみサポートされます。CoreCLRではF5デバッグ下では動作しないため、これは破壊的変更となります。

#129909 [release/10.0] Surface scheduled outerloop Helix work item failures (backport of #129049, #129629)

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

スケジュール実行されるOuterloopビルドにおいて、Helixテスト失敗時の失敗処理を改善するバックポート。Scheduled outerloop実行時(always:false)にHelix work item/テスト失敗がビルド全体を失敗させないようにし、同時に失敗を警告として可視化する変更を release/10.0 ブランチに適用します。これにより、フレキなテストによるAzDOの不要な再キューイングを防止します。

#129892 Support multi-connect on non-dual-mode IPv6

@am11・GitHub・area-System.Net.Socketscommunity-contributionos-openbsd

IPv6デュアルモードをサポートしないOpenBSDやWASIなどのOS上で、複数のアドレスファミリーへの接続を可能にする改善です。これらのプラットフォームでは単一のソケットで両方のアドレスファミリーに到達できないため、接続時に必要に応じてソケットハンドルを再作成します。この修正により、OpenBSDでのTLSエンドポイントへの接続失敗(dotnet restoreでHttpRequestException hr=0x80004005が発生していた)が解決されます。

#129797 Ensure we do not try to inline async versions of pinvokes

@jakobbotsch・GitHub・area-VM-coreclr

P/Invokeの非同期バリアント(async variant)がインライン化されるべきではないことを保証するための修正です。通常、P/Invokeはインライン化に失敗しますが、非同期バリアントの場合はその呼び出しが成功してしまい、EH情報取得時にアサーション失敗が発生していました。この修正により、IL/EHメタデータ取得時に常に通常バリアント(ordinary variant)のMethodDescを使用するようにしています。

#129791 Make crossbuilds faster

@MichalStrehovsky・GitHub・area-Infrastructure

クロスビルド(異なるアーキテクチャ間のビルド)を高速化するため、ホストアーキテクチャ用のcrossgen2/ILCツールが、すべてのJITフレーバーではなく、ターゲットアーキテクチャ専用の単一JITのみをビルド・パッケージするよう変更します。CI時間を約5分削減する予定です。

#129703 [Wasm RyuJIT] Codegen for Const Vector Create and Basic Packed SIMD operations

@adamperlin・GitHub・area-CodeGen-coreclr

WebAssembly向けRyuJITで、定数引数を用いたVector128.Createと大量のPackedSIMD操作のコード生成をサポート。定数ベクトル作成はv128.constに最適化され、表駆動方式により複数のSIMD演算(v128、(v128, v128)、(v128, v128, v128)型)に対応。

非定数Vector128.CreateとSIMD比較演算はスコープ外(比較は符号付き比較の実装に課題)。

#129611 [ci-scan-feedback] Add pipeline-category gate to fixer prompt

@Copilot・GitHub・area-Infrastructure

CI失敗自動修正ワークフローにパイプラインカテゴリーゲートを追加し、JIT/GC/PGO関連のコードジェン圧力テストの失敗を既存の修正ポリシーテーブルから実装レベルで強制するものです。これにより、これらのパイプラインの失敗に対して製品コードの修正やワークアラウンドPRを開かせず、ループイン機構にルーティングするようになります。

#129528 JIT: Reset compGenTreeID on failed Materialize to avoid leaking gen tree IDs

@Copilot・GitHub・area-CodeGen-coreclr

JITのスカラー進化(SCEV)IR実装化処理で、失敗時にcompGenTreeID(デバッグ専用フィールド)がリセットされず、フェーズがMODIFIED_NOTHINGを報告すべき場合に矛盾が生じていた問題を修正。Materialize(Scev* scev)で実装化を試みる前にcompGenTreeIDのスナップショットを取得し、失敗時に復元することで、孤立したノードのID増加を防止。

INDEBUG(unsigned prevGenTreeID = m_compiler->compGenTreeID);
if (Materialize(scev, true, &result, &vnp))
{
    return result;
}
INDEBUG(m_compiler->compGenTreeID = prevGenTreeID);
return nullptr;

#129282 Refactor sync/async implementations by using Adapter pattern

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

System.Formats.Tarライブラリの同期・非同期実装の重複を排除するため、Adapterパターンを導入してリファクタリングしました。静的抽象インターフェースIReadWriteAdapterとSyncReadWriteAdapter/AsyncReadWriteAdapter実装を使用して、同期・非同期APIを共有の汎用*CoreAsync<TAdapter>メソッドに統一します。

#129141 JIT: Tail-merge robust crossJumpVictim selection

@BoyBaykiller・GitHub・area-CodeGen-coreclr

JIT の tail-merge 処理における crossJumpVictim 選択ロジックを改善しました。従来は候補の処理順序に依存していたため、ランダムな差分が発生していました。早期終了を削除し、ブロック番号に基づく tie-break ロジックを追加することで、選択を順序に依存しない堅牢な実装に変更しました。

#129119 Redesign CallSiteFactory constructor selection with stable arity ordering and parameter-aware ambiguity

@Copilot・GitHub・area-Extensions-DependencyInjection

CallSiteFactory.CreateConstructorCallSite の構築者選択ロジックを再設計し、複数のコンストラクタが存在する場合の動作を決定論的にしました。従来の不安定な Array.Sort に依存する実装を、安定なアリティ降順(arity-desc)での選択に置き換え、キーサービスと既定値パラメータを考慮したパラメータ認識の曖昧性検出を実装しています。

#128983 Detect CR/LF and URL-encoded CR/LF in FtpWebRequest URI and command parameters

@Copilot・GitHub・area-System.Net

FtpWebRequestとFtpControlStreamの入力検証を強化し、CR/LFとそのURL符号化形式(%0D/%0A)をより早期かつ一貫して検出・拒否します。従来は\r\nの組み合わせのみを検出していましたが、単独の\rや\n、またはURL符号化された形式が検出漏れしていました。

// URIの検証(リテラルとURL符号化の両方をチェック)
if (uri.OriginalString.AsSpan().ContainsAny('\r', '\n') ||
    uri.OriginalString.Contains("%0A", StringComparison.OrdinalIgnoreCase) ||
    uri.OriginalString.Contains("%0D", StringComparison.OrdinalIgnoreCase))
    throw new FormatException(SR.net_ftp_no_newlines);

// FormatFtpCommandの検証(リテラルCR/LFのみチェック)
if (parameter is not null && parameter.AsSpan().ContainsAny('\r', '\n'))
    throw new FormatException(SR.net_ftp_no_newlines);

#128702 Support devirtualization for virtual methods that require an instantiating stub

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

仮想メソッドのデバイルチュアライゼーション機能を拡張し、インスタンス化スタブを必要とするジェネリック仮想メソッド(GVM)とジェネリックインターフェースのデフォルト実装メソッド(DIM)をサポートしました。JITの事前リファクタリングにより、ランタイムで必要な実装パラメータを自動的に計算・渡すことで、これまで失敗していたデバイルチュアライゼーションが可能になります。

#128285 Allow empty string identifiers on non-flags enums in JsonStringEnumConverter

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

JsonStringEnumConverterの検証ロジックを緩和し、非Flags enumでは[JsonStringEnumMemberName("")]による空文字列識別子の使用を許可します。Flags enumでは引き続き空文字列を拒否します(カンマ区切り解析の曖昧性を回避)。これにより、XSD派生enumで空文字列をJSON表現とする要件に対応できます。

public enum YesOrNoOrEmpty
{
    [JsonStringEnumMemberName("y")] Yes,
    [JsonStringEnumMemberName("n")] No,
    [JsonStringEnumMemberName("")] Empty  // 以前はInvalidOperationException
}

#126941 Add SHA3 and SVE SHA3 APIs

@a74nh・GitHub・area-System.Runtime.Intrinsicslinkable-frameworkcommunity-contribution

ARM64プロセッサのSHA3およびSVE SHA3命令セット用のハードウェアイントリンシックスAPIを追加します。JIT認識・コード生成パスおよび関連テストを実装し、#98692と#94425を解決します。

新しいAPI使用例:

// SHA3命令の直接使用(ARM64でサポート)
if (Sha3.IsSupported)
{
    // BCAX, EOR3, RAX1, XARなどの命令を利用可能
}

// SVE SHA3命令の直接使用
if (SveSha3.IsSupported)
{
    // RAX1などのベクトル化SHA3命令を利用可能
}

#126124 [wasm] Fix interpreter crash with MethodImpl .override on PortableEntryPoints

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

WebAssemblyインタープリタで、MethodImpl .overrideディレクティブによる仮想メソッドのvtableスロット再マップ時に発生するクラッシュを修正します。オーバーライドメソッドのPortableEntryPointが元のメソッドのvtableスロットに配置される場合、インタープリタコードの設定とメソッド準備が失敗していました。修正では、メソッドが実際に所有するスロットのコードを参照するよう、.overrideリダイレクトを解決します。

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

#129950 Emit correct ELF symbol types for data in NativeAOT objects

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

NativeAOT の ELF オブジェクトライター内で、シンボルテーブル生成時のシンボル型分類ロジックを修正しました。従来はシンボルサイズのみで型を決定していたため、非実行可能セクション内のデータシンボルが誤った型(STT_NOTYPE または STT_FUNC)として出力されていました。本変更はセクションフラグに基づいて正しい型を割り当て、デバッガ(lldb/gdb/nm など)での正確なシンボル認識を実現します。

#129947 wasm: fix R2R generic dictionary lookup debug assert

@AndyAyersMS・GitHub・area-VM-coreclr

WebAssemblyでのReadyToRun(R2R)コード実行時に、ジェネリック辞書ルックアップのデバッグアサーション(_DEBUGオンリー)が誤発火する問題を修正しました。WebAssemblyではR2Rコードが関数テーブル、データがリニアメモリに配置されるため、コード範囲ルックアップが正しいモジュールを解決できず、複数のR2Rイメージロード時にIsNativeImageSharedByアサーションが不適切に発火していました。修正後は、WebAssemblyで署名アドレスが現在のモジュールのR2Rイメージ境界内に存在することを検証するようになります。

#129944 Skip build-time RID fallback for portable builds

@am11・GitHub・area-Infrastructure-librariescommunity-contribution

portable builds(ポータブルビルド)において、runtime.jsonレガシーグラフに存在しないRID(例:openbsd-x64)に対する build-time RID フォールバックをスキップするための修正です。これにより、self-referencing RID による不正な動作を防止しています。portable buildではTargetRID == PortableTargetRIDであり、distro固有の情報を含まないため、フォールバック処理は不要となります。

#129931 [cDAC] Enumerate R2R hashmap pages into triage dumps for odd entry points

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

macOS トライアージ ミニダンプでの cDAC の R2R スタックウォークが SoftwareExceptionFrame の一フレーム先で中止する問題を修正します。根本原因は、レガシー DAC のハッシュマップ プローブをスキップする奇数エントリポイント最適化にあり、プローブが参照するバケットページがトライアージダンプに列挙されず、cDAC コンシューマーがダンプに存在しないページを読み取ろうとして失敗します。

#129890 Save async contexts for ValueTask methods

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

ValueTask返却型の非同期メソッドに対して、ExecutionContextの保存/復元が正しく行われていない問題を修正しました。VM内の非同期フラグチェック処理に誤りがあり、ValueTask変数がこのチェックで適切に扱われていませんでした。合わせてJIT内で最適化されたawaitをデバッグ時に選択的に制御する仕組みも追加されています。

#129856 JIT: ensure magic divisors are always marked DONT_CSE for all targets

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITのモーフィング段階で、符号付き整数除算(GT_DIV)のConstant-CSE最適化を制御する処理を追加しました。magic-divide展開が後の段階で定数除数を認識できるよう、eligible な定数除数に DONT_CSE フラグを確実に設定します。符号なし除算(GT_UDIV/GT_UMOD)は既に対応済みでしたが、符号付き除算が漏れていました。

#129502 Move thin lock acquire/release in CoreCLR to managed code

@VSadov・GitHub・area-System.Threading

シンロック(オブジェクトヘッダ)の取得/解放処理をCoreClrでネイティブコードからマネージドコードに移行し、CoreClrとNativeAOT間の実装の共有を拡大させました。また、シンロックが他のスレッドに所有されている場合にTryAcquireが過度にスピンする問題を修正しました。パフォーマンスはプラットフォームとロック方式に応じて最大+30%の改善を実現しており、一部で軽微な-3%程度の回帰が見られますが、これはハードウェア差による「アーキテクチャノイズ」と評価されています。

2026年06月27日 (14 PRs) この日のページ →

#129916 [cDAC] fix some stack walking bugs.

@rcj1・GitHub・area-Diagnostics-cdac

cDAC(Compact Data Access Contract)のStackWalk実装に関する2つのバグを修正しました。

  1. FuncEvalFrameのリターンアドレス取得バグ: FuncEvalFrame::m_ReturnAddressフィールドを直接読み取るよう修正
  2. フレーム状態遷移バグ: Frame状態でアンマネージドコンテキストの場合の状態遷移ロジックを修正し、不正なFrame → NativeMarker遷移を防止

内部診断テストで検出されました。

#129914 JIT: fix stale VN in redundant branch opts dominating-branch simplification

@EgorBo・GitHub・area-CodeGen-coreclr

JITの冗長分岐最適化(Redundant Branch Opts)における値番号の陳腐化バグを修正。optRedundantDominatingBranchがドミネータツリーを走査する際に、中間の関係演算子を書き直した後も古い値番号でキャッシュされた値を使用していたため、不正な分岐の除去が発生していました。StreamReader.ValidateArgsAndOpenPathの条件ロジックが誤って最適化される具体例が報告されています。

#129911 AES-KWP Performance Improvements for Apple

@vcsjones・GitHub・area-System.Securitytenet-performance

Apple プラットフォーム上での AES-KWP (AES Key Wrap with Padding) パフォーマンスを大幅に改善します。従来は ECB 暗号化/復号化の呼び出し毎にハンドル設定・破棄を繰り返していたのに対し、単一の lite cipher インスタンスを再利用することで 5〜10 倍のパフォーマンス向上と大幅なメモリ割り当ての削減を実現します。

#129903 JIT/wasm: pass type-context arg for LDVIRTFTN calls

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssemblyにおいて、仮想関数呼び出しがLDVIRTFTN経由でルーティングされる際に、ジェネリック型コンテキスト引数(CORINFO_CALLCONV_PARAMTYPE)が欠落していた問題を修正します。特に多次元配列のAddressアクセッサなど、型情報を必要とするメソッドへの呼び出しでシグネチャ不一致によるランタイムトラップが発生していました。修正では、隠し引数の計算を共有ヘルパーimpGetInstParamArに抽出し、Wasm LDVIRTFTN経路でも使用するようにしました。

#129899 [release/10.0] Fix TypeLoadException in GetMarshalAs when SafeArray has zero-length user-defined type name

@AaronRobinsonMSFT・GitHub・Servicing-approvedarea-Interop-coreclr

.NET 9での回帰により、MetadataImport.GetMarshalAsがメタデータブロブの長さ付きの文字列をヌル終端として誤読し、ガベージメモリを読み込んでいた問題を修正します。tlbimp生成のCOM相互運用アセンブリ(例:Interop.MFilesAPI)で、ParameterInfoのCustomAttributes取得時にTypeLoadExceptionが発生していました。

修正内容:

  • GetMarshalAsをFCALLからQCallに変換し、返されたポインタに明示的なUTF-8バイト長を追加
  • マネージド側で有界スパンデコーディングを使用し、ヌル終端読み込みを回避
  • メタデータブロブの後続バイトを不正に拒否していたネイティブアサートを緩和

#129884 Avoid stripping IL of non-async Task-returning methods

@jakobbotsch・GitHub・area-ReadyToRunruntime-async

ReadyToRun IL body stripping処理を改善し、--strip-il-bodiesが有効な場合でも、ランタイムでのコンパイルに必要となる可能性があるメソッドの実IL を保持するようにしました。特に非async Task/ValueTask返却メソッドは、async版がランタイムで生成される際にそのILが必要になるため、最小限のthrowingスタブへの置き換えを回避します。

#129827 [cdac] Add default (empty-version) contract registration logic

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

cdac(Contracts as Data Contract)フレームワークにデフォルト(空文字列バージョン)のコントラクト登録ロジックを導入します。対象がコントラクトのバージョンを広告しない場合のフォールバック機構を確立します。

  • Register("", creator) で空文字列バージョンの実装を登録
  • 対象がバージョンを広告しない場合、空文字列登録にフォールバック
  • 対象がバージョンを広告する場合は完全一致が必須(フォールバックなし)→ バージョンスキュー検出を保持

#128365 Add AvxVnni.V512 hardware intrinsics

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

AVX-512 VNNI (AVX512-VNNI) ハードウェア intrinsics のサポートを追加します。新しい AvxVnni.V512 nested クラスを導入し、512ビット ベクトルに対する VPDPBUSD/VPDPWSSD/VPDPBUSDS 命令を公開します。CPUID AVX512-VNNI 検出をランタイム/JIT の AVXVNNI_V512 命令セット フラグに統合し、コード生成と LSRA 処理を拡張します。

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

#129886 Add ActiveIssue for SendAsync_Success_ConnectionSetupActivityGraphRecorded

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

System.Net.Httpの診断テストにおいて、SendAsync_Success_ConnectionSetupActivityGraphRecordedテストが間欠的に失敗する問題に対応しました。ループバックサーバーの競合状態によりUnexpected EOF trying to read request headerエラーが発生するため(HTTP/2バリアント、Windows x86 Release環境で観測)、ActiveIssue属性でテストをスキップします。

#129869 Handle ILLink origins before first sequence point

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

ILLink の MessageOrigin.ToString() が、最初のPDBシーケンスポイントより前のILオフセットに対応できていない問題を修正します。書き直された/生成されたILでは、警告の生成元が最初のシーケンスポイントより前に配置されることがあり、キャッシュされた警告をフラッシュする際に Last() が例外をスローしていました。本修正により、利用可能な最初のシーケンスポイントにフォールバックすることで、この形状に対応します。

#129868 JIT: only skip loop inversion when the IV test is the bottom test

@AndyAyersMS・GitHub・area-CodeGen-coreclr

Loop Inversion 最適化における「既に bottom-tested ループ」の判定を改善します。#128459 で導入された bail-out が、ループの実際の継続判定でない無関係な早期終了条件に誤反応していました。AnalyzeIteration で認識された IV テスト (Induction Variable Test) とラッチのテストブロックが一致する場合のみ bail-out を実行するように制限し、Dictionary<TKey,TValue>.Enumerator.MoveNext などで誤った loop inversion スキップを回避します。

#129859 Add DacMode-based SOS test legs to runtime-diagnostics pipeline

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

runtime-diagnosticsパイプラインのSOS テストレグを、useCdac/noFallbackブール値から単一のdacModeパラメータに統一し、4つ目のテストレグを追加します。ビルドされたcDAC(mscordaccore_universal)を別のアーティファクトとして公開し、cdacレグで利用可能にします。

新しいSOS テストレグ構成(windows_x64 Release, testInterpreter):

  • cDAC (dacMode cdac) -- スタンドアロンcDAC経由でSOS実行
  • cDAC_fallback (dacMode cdacfallback) -- インボックスDAC がcDAC をホスト、フォールバック有効
  • cDAC_verify (dacMode cdacverify) -- インボックスDAC がcDAC をホスト、フォールバック無効
  • DAC (dacMode dac) -- レガシーDAC のみ

#129851 [browser] WASM exception handling to use the standardized exnref

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

WebAssemblyブラウザランタイムの例外処理を、レガシーエンコーディングから標準化されたexnrefベースの例外処理提案(try_table / throw_ref)へ移行します。Emscripten/emsdk、jiterpreterコード生成、機能検出、CI/テストランナーのフラグを統一的に更新し、WebAssemblyの標準EH提案に準拠させます。V8エンジンが--experimental-wasm-exnrefに未対応のため、V8テスト実行は一時的に無効化されます(#129849で追跡)。

#129825 Fix generic lookups and thunks

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

WebAssembly ReadyToRun (R2R) パイプラインにジェネリック辞書ルックアップのサポートを追加し、他のプラットフォームで使用されている DynamicHelper パターンを Wasm に適用します。Wasm .S アセンブリファイルのサポートを追加し、Crossgen2 がジェネリックルックアップの遅延ロードヘルパーロジックを生成するよう調整します。また、複数のランタイムヘルパーに対する事前計算されたサンクと、欠落ケースを検出するアサーションが追加されています。

#129819 [arm64] Emit cmlt/cmle/fcmlt/fcmle for compares against zero

@AndyAyersMS・GitHub・area-CodeGen-coreclr

ARM64のベクトル比較命令の最適化。CompareLessThan/CompareLessThanOrEqualでゼロベクトルとの比較時に、ゼロベクトルの物理化とオペランド交換を避け、直接「ゼロとの比較」命令形式(cmlt、cmle、fcmlt、fcmle)を発行するようにしました。これにより、命令数削減と性能向上を実現します。

// Before
movi v16.4s, #0
cmgt v0.4s, v16.4s, v0.4s

// After
cmlt v0.4s, v0.4s, #0

#129810 JIT: Intrinsify Task/ValueTask factory methods

@jakobbotsch・GitHub・area-CodeGen-coreclr

Task/ValueTask ファクトリメソッドをJITで認識する組み込み関数化により、async呼び出し規約での最適化を強化します。Task.FromResult、Task.CompletedTask、ValueTask.FromResult、ValueTask.CompletedTask、およびValueTask<T>コンストラクタを[Intrinsic]でマークし、JITがこれらのメソッドを直接展開することで、不要なAsyncHelpers.TransparentAwaitWithResult呼び出しを削除します。

// 最適化前:複数の呼び出しと割り当てが発生
private static Task<string> TaskCallee1() => Task.FromResult("abc");

// 最適化後:直接値を返すように展開される
private static Task<string> TaskCallee1() 
{
    // JITが"abc"を直接ロードして返すように変換
}

#129807 JIT/wasm: Pri-1 R2R codegen fixes (BBJ_CALLFINALLY back-edge, null-check loads)

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

WebAssembly JIT コードジェネレーションの2つの正確性バグを修正します。

  1. BBJ_CALLFINALLY非フォールスルー後退枝の問題: finally ブロックが back-edge 経由で到達する場合(例:try/finally外のループヘッダーへの catch leave)、分岐が発行されず制御がループを抜けて finally が2度実行される問題を修正。

  2. Null チェックフォーリングロードの問題: WebAssembly ではヌルアドレスからのロードがフォルトしないため、配列要素アクセスがヌルポインタを正しく検出できず、NullReferenceException の代わりに IndexOutOfRangeException が発生する問題を修正。

#129795 Avoid publishing interpreter frame with invalid IP

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

インタープリタフレーム(InterpMethodContextFrame)の初期化時に、コンパイラの最適化による命令の並び替えで無効なIP(Instruction Pointer)がスタックオーバーフロー時にスタックウォーカーに観測される問題を修正しました。コンパイラバリアを使用してIP初期化の順序を明確に保証し、フレームをリストに公開する前に確実にIPをゼロ化しています。

#129793 Remove undefined-behavior UnsafeTests.DangerousAs to stabilize jitstress leg

@Copilot・GitHub・area-CodeGen-coreclr

Unsafe.As<string>(object) の不正なキャスト経路をテストする UnsafeTests.DangerousAs テストメソッドを削除しました。このテストは未定義動作に依存していたため、jitstress ARM実行環境で不安定な失敗を引き起こしていました。正当な使用シナリオ(オブジェクトに格納されたstringをstringにキャストする)をカバーする既存の As() テストは保持されます。

#129775 Fix duplicated collection items when a constructor parameter name differs only by case from the property

@tarekgh・GitHub・area-Extensions-Configuration

Configuration Binderにおいて、コンストラクタパラメータ名とプロパティ名がケースのみで異なる場合(例:パラメータ instances とプロパティ Instances)、コレクションアイテムが重複される不具合を修正しました。根本原因は、フェーズ2でプロパティがコンストラクタパラメータでカバーされているかの判定時に大文字小文字を区別していたためです。修正により、バインダーの他の部分と同様に大文字小文字を区別しない比較(StringComparison.OrdinalIgnoreCase)に統一しました。

#129702 [mono][amd64] Fix calling-convention mismatch for small straddling vtypes in shared generics

@pavelsavara・GitHub・arch-x64area-Codegen-LLVM-mono

Mono LLVM full-AOT on x64において、ネストされたフィールドが8バイト境界をまたぐ小さい値型(≤16バイト)の呼び出し規約が不一致だった問題を修正。部分共有ジェネリック(gshared)コードが具体的メソッドを呼び出す際、opaque型として見える値型がスタックで渡されるのに対し、具体化されたメソッドではレジスタで受け取る、という不一致が発生していた。最新LLVMがbyval構造体をスタックに配置するため、値が破損していた。修正により、≤16バイト値型は常にレジスタで渡され、JITとLLVMバックエンド間の呼び出し規約が一致するようになった。

// 修正前:Nullable<GenQ<int>>のboxing/unboxing時に値が破損
using System;
public struct GenQ<T> where T : struct { public T? Field; }
public static class Repro {
    static bool Gen<T>(T? o) where T : struct {
        var v = (GenQ<int>)(ValueType)(object)o;  // box T?, then unbox
        return !v.Field.HasValue;  // Mono LLVM full-AOT x64では不正な値を返す
    }
    static int Main() => Gen<GenQ<int>>(default(GenQ<int>)) ? 100 : 666;
}

#129693 [mono] Fix re-entrant AssemblyLoadContext resolution stack overflow under full-AOT

@pavelsavara・GitHub・area-Codegen-AOT-mono

Mono full-AOT環境下で、マネージドAssemblyLoadContextのresolve hookが呼び出された際に発生する無限再入による無制限再帰(スタックオーバーフロー)を修正します。

根本原因は、resolve hook内でAssemblyNameパースが行われ、その際に汎用メソッド(MemoryExtensions.Split<T>)をJIT-コンパイルする必要が生じ、これが同じアセンブリの解決をトリガーして同じhookが再度呼び出されるという無限ループです。JIT/インタプリタでは汎用メソッドが既にキャッシュされているため、この問題は発生しません。

#129626 Remove unsafe code from System.Reflection.Metadata PE/blob writers

@EgorBo・GitHub・area-System.Reflection.Metadatareduce-unsafe

System.Reflection.Metadata内のPEおよびBlobライターからunsafeコードを削除し、安全性と保守性を向上させます。具体的には、BinaryPrimitivesを使用したリトルエンディアン読み書きとイテレータ割り当て削減により、ポインタベースのコードを置き換えています。機能的な動作変更はありません。

#129612 BCrypt Composite ML-DSA

@PranavSenthilnathan・GitHub・area-System.Security

Windows Insider Buildsで利用可能なBCrypt経由のComposite ML-DSA対応を実装しました。Windows上のデフォルト実装をマネージドからBCryptに変更し、PQDSA BlobメカニズムによるComposite ML-DSAのキー生成・インポート・エクスポート・署名・検証機能を追加しています。Composite ML-DSA非対応のWindowsバージョンでもマネージド実装でサポートされなくなります。

#129589 Arm64 R2R: fold adrp+add+ldr into adrp+ldr[#:lo12:]

@EgorBo・GitHub・tenet-performancearea-CodeGen-coreclr

Arm64 R2R(Read-to-Run)コード生成において、再配置可能間接アクセスのための adrp + add + ldr 命令シーケンスを adrp + ldr[#:lo12:] に最適化します。新しい ARM64_PAGEOFFSET_12L 再配置タイプを導入し、ページオフセットを ldr 命令に直接折り込むことで、1アクセスあたり1命令削減を実現。libraries.crossgen SPMI測定で -2.1 MB、System.Private.CoreLib.dll (R2R) では -192 KB の削減を達成しました。

#129588 Make Windows system-DLL P/Invokes use only DllImportSearchPath.System32

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

Windows システム DLL の P/Invoke に対して [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] 属性を追加し、DLL 検索パスを System32 に制限します。これにより、advapi32、kernel32、ntdll、ole32、user32 など OS ライブラリの P/Invoke の安全性と正確性を向上させます。セキュリティ向上と意図しないアセンブリ検索の防止を目的としています。

#129342 Fix apphost/bundle creation failure on chmod-hostile filesystems

@elinor-fung・GitHub・area-HostModel

rootless podmanなどのchmod非対応ファイルシステムでdotnet buildと単一ファイル発行が失敗する問題を修正します。ファイル作成時に実行可能権限を設定し、事後的なchmodを回避することで、EPERM エラーを防ぎます。HostWriter(apphost)とBundler(単一ファイルバンドル)の両方が同じ問題の影響を受けており、共通ヘルパーで統一的に対応します。

#128741 Sanitize control/format characters in console logger output across all formatters

@Copilot・GitHub・area-Extensions-Logging

コンソールロギングで信頼できないコントロール文字が出力されるセキュリティ脆弱性を修正するPRです。SimpleConsoleFormatterとSystemdConsoleFormatterで Unicode Cc(制御文字)/Cf(形式文字)を \uXXXX 形式にエスケープして出力することで、ターミナルエスケープシーケンスの実行やあいまいな出力を防止します。

2026年06月25日 (31 PRs) この日のページ →

#129843 [mono] Fix lock-free mempool chunk under-allocation by 8 bytes

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

Monoランタイムのlock_free_mempool_chunk_new関数におけるメモリアロケーション不足バグを修正しました。チャンク内のメモリポインタを16バイト境界にアライン調整する際、サイジングループが実際の利用可能サイズより8バイト少なく計算していたため、特定のページ境界サイズ(例:4KBページで4072バイト)でアサーションエラーが発生し、ランタイムがSIGABRTで中止していました。

修正内容:

// 変更前
while (size - sizeof (LockFreeMempoolChunk) < GINT_TO_UINT(len))

// 変更後
while (size - ALIGN_TO (sizeof (LockFreeMempoolChunk), 16) < GINT_TO_UINT(len))

#129839 Fix blob type in CopyWithPrivateKey for ML-DSA

@PranavSenthilnathan・GitHub・area-System.Security

ML-DSAキーのシード値を持つ場合、BCryptからシードblobとしてエクスポートされるが、NCryptへのインポート時に誤ってプライベートキーblobフォーマットで指定していた問題を修正。最近のWindowsインサイダービルドでテストが失敗していたため、エクスポートとインポートのblobタイプを一致させるように修正。

#129838 [wasm] Enable Vector128 fast paths on Wasm via PackedSimd: hex/Guid, UTF-8, SearchValues, Teddy, Adler32/XXH3

@lewing・GitHub・area-System.Numerics

WebAssembly(Wasm)上でPackedSimdをサポートすることにより、既存のVector128ベースの高速パスをブラウザ環境で有効化します。16進数/Guid形式化、UTF-8検証・変換、Teddy文字列検索、Adler32/XXH3ハッシング計算などの複数のSIMD最適化パスをWasm環境で利用可能にしました。PackedSimd.IsSupportedチェックを既存のSse2/AdvSimdチェックと並列して追加し、Mono AOT互換性の問題(コンパイル時定数が必要なPackedSimd.Shuffle)を回避するためPackedSimd.SwizzleとORの組み合わせで実装しています。

#129831 Pass correct search path to DllImportResolver for default flags on Mono

@elinor-fung・GitHub・area-Interop-mono

MonoのDllImportResolverが正しいsearchPath値を受け取るよう修正します。ユーザーがDefaultDllImportSearchPaths属性を指定していない場合、Monoの内部デフォルト(AssemblyDirectory)ではなくnullが渡されるようになります。これにより、Monoの動作がCoreCLR/NativeAOTおよびDllImportResolverの公開契約に準拠します。

#129830 Use indirect field access for types spanning multiple inexact compilation units

@jtschuster・GitHub・area-ReadyToRun

crossgen2 R2R コンパイルで、複数の inexact compilation units(バージョン番号は固定されるが composite image への組み込み方が実行時に決まるアセンブリ)にまたがる参照型のフィールドレイアウトがコンパイル時と実行時で異なることによる Verify_FieldOffset failfast を修正します。EncodeFieldBaseOffset でこのケースを検出し、baked offset の代わりに間接的な実行時解決フィールドオフセット (ENCODE_FIELD_OFFSET) にルーティングします。

#129829 Fix R2R GC ref map mismatch for unboxing stubs

@jtschuster・GitHub・area-ReadyToRun

ReadyToRun(R2R)イメージにおいて、アンボックス化スタブのメソッド参照が不正なコンパクトトークン形式にエンコードされ、GCリファレンスマップの不整合を引き起こしていた問題を修正しました。特にLarge Version Bubbleでコンパイルされたイメージにおいて、box int; tail.callvirt System.Object::ToString()のようなコードがチェックビルドでアサート失敗していました。

#129824 Update Alpine infra images to 3.24

@richlander・GitHub・area-Infrastructure

AlpineベースのインフラストラクチャイメージをAlpine 3.23からAlpine 3.24へアップグレードするビルド・テストパイプラインの更新です。ビルドコンテナ、Helix(テスト基盤)のx64/arm32/arm64アーキテクチャ向けイメージ参照が一括更新されます。

#129818 Root DotNetRuntimeContractDescriptor export against linker GC in NativeAOT

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

NativeAOT の Linux/ELF バイナリで、DotNetRuntimeContractDescriptor シンボルが linker の --gc-sections により削除されていた問題を修正します。このシンボルは cDAC(Compact Debugger Access Component)のコントラクトディスクリプタ検出に必要です。Windows では .def EXPORTS により適切にルート化されていましたが、Linux/ELF では version script のみでは不十分でした。

修正により、ELF プラットフォームで -Wl,-u,DotNetRuntimeContractDescriptor を linker オプションに追加し、シンボルを GC ルートとして強制的に保持します。

#129816 JIT/wasm: bail R2R for calls passing 16-byte SIMD by value

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

WebAssembly上で、16バイトのSIMD型(Vector128/Vector<T>)を値で渡す呼び出しにおいて、署名ではv128が要求されるのに対し、コード生成はi32(参照へのポインタ)を生成するため、WebAssemblyモジュール検証が失敗する問題を修正しました。該当メソッドをR2R非対応としてマークすることで、インタプリタにフォールバックさせ、モジュール検証の失敗を防ぎます。これによりSystem.Private.CoreLib.wasmの無効関数が59個から0個に削減されます。

#129815 [wasm R2R] Align 8-byte stack locals and keep frames 16-aligned

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

WebAssembly R2R (ReadyToRun) 構成において、64ビットJSInterop値(long/BigInt、double、DateTime、Int52)がマネージド↔JS境界で破損する問題を修正します。根本原因は8バイトスタック局所変数が4バイトアライメントのままで、フレームサイズのアライメント漂流により、JSのHEAP64/HEAPF64型付き配列ビューが要求する8バイトアライメント要件を満たしていなかったことです。

#129814 Fix windows-arm64 timeout floor to use numeric comparison

@Copilot・GitHub・area-Infrastructure-coreclr

Azure DevOps パイプラインテンプレート global-build-job.yml の windows-arm64 タイムアウト判定ロジックを修正しました。timeoutInMinutes パラメータが文字列型として宣言されているため、gt(parameters.timeoutInMinutes, 75) は字句順比較(lexicographic compare)を行い、'360' < '75' という結果になってしまっていました。これにより、75分以上の明示的なタイムアウト値が正しく反映されず、ビルドが予期せずタイムアウトしていました。比較演算子の被演算数を入れ替えることで、数値比較に修正しました。

#129799 Streamline --arch arg with --os

@am11・GitHub・area-Infrastructurecommunity-contribution

ビルドスクリプトの --arch 引数の指定方法を統一・簡素化する変更です。従来の --$arch フォーマットに加えて、より直感的な --arch $arch フォーマットをサポートすることで、開発ワークフローの柔軟性を向上させます。既存のワークフローを破壊しないよう、両方のフォーマットをサポートしています。

#129781 Use SearchValues to scan for characters to escape with default Json options

@MihaZupan・GitHub・area-System.Text.Jsontenet-performance

System.Text.Jsonのデフォルトエンコーディング時における文字エスケープ処理の最適化。カスタムJavaScriptEncoderが指定されていない場合、SearchValues<T>とIndexOfAnyExceptを使用して、エスケープが必要な文字の検索において間接参照を削減し、パフォーマンスを向上させます。

#129768 Add ZstandardDecompressionOptions for symmetric decoder configuration

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

System.IO.Compression.Zstandard に新しい ZstandardDecompressionOptions クラスと対応するコンストラクタを追加し、デコーダーとストリームの設定をオプションオブジェクト経由で実施できるようにしました。これにより、ASP.NET Core ミドルウェアなどの呼び出し元がデコーダーのライフタイムをストリームに紐付けて管理できます。

// 新しいオプションベースのストリーム作成方法
var decompressStream = new ZstandardStream(stream, new ZstandardDecompressionOptions
{
    Dictionary = dictionary,
    MaxWindowLog = 24,
}, leaveOpen: true);

#129767 Add "load instructions" step to code-review skill

@rcj1・GitHub・area-skills

コードレビュースキルのワークフロードキュメントを更新し、分析開始前に.github/instructionsからリポジトリ固有の指示を明示的に読み込むステップを追加しました。これにより、Copilotのコードレビューボットがカスタム指示を確実に取得できるようになります。

#129747 Check for ComInterop case for async variants in crossgen2

@jakobbotsch・GitHub・area-ReadyToRunruntime-async

crossgen2のJITインターフェースにおいて、COM interop関連のメソッドに対して非同期変種(async variant)の呼び出しが生成されるのを防ぐためのチェックを追加しました。VM側で実装されていたチェックをcrossgen2側にも適用し、呼び出し可能なランタイム非同期エントリポイントが存在しない場合に非同期変種の解決を避けるようにします。

#129671 Delete debugger regdisplay

@rcj1・GitHub・area-Diagnostics-coreclr

DebuggerREGDISPLAY構造体とそれに関連する内部APIをDacDbi API表面から削除し、デバッガーの右側(debugger right-side)のレジスタ/スタックウォーク処理をDT_CONTEXTで直接操作するよう移行するリファクタリングです。これはより大規模なプラットフォーム固有レジスタリーダーの削除に向けた最初の段階です。

#129578 Added EmptyServiceProvider

@svick・GitHub・area-Extensions-DependencyInjection

EmptyServiceProviderという新しい公開API(シングルトン)をMicrosoft.Extensions.DependencyInjection.Abstractionsに追加しました。これは何もアプリケーションサービスを含まないIServiceProvider実装で、開発者が独自の空プロバイダー実装を定義する必要がなくなります。new ServiceCollection().BuildServiceProvider()の動作をできるだけ正確に模倣しており、ドロップイン代替として利用可能です。

namespace Microsoft.Extensions.DependencyInjection;

public sealed class EmptyServiceProvider : IKeyedServiceProvider, IServiceProviderIsKeyedService
{
    public static EmptyServiceProvider Instance { get; }
    // IServiceProvider、IKeyedServiceProvider、IServiceProviderIsKeyedService を実装
}

#129565 Remove SafeEcKeyHandle

@PranavSenthilnathan・GitHub・area-System.Security

SafeEcKeyHandleを削除し、EC_KEY操作をネイティブレイヤーで一元管理するリファクタリング。EC_KEY-backedのEVP_PKeyのパラメータエクスポートとECDsaOpenSsl/ECDiffieHellmanOpenSslのIntPtrコンストラクタで使用されていた最後の処理をネイティブコードに移行し、マネージド側のハンドル管理を簡素化します。

#129552 Consolidate EC tests into S.S.C.

@PranavSenthilnathan・GitHub・area-System.Security

楕円曲線(ECDSA/ECDH)の暗号テストをSystem.Security.Cryptography.OpenSsl.TestsおよびSystem.Security.Cryptography.Cng.TestsからSystem.Security.Cryptography.Testsに統合し、プロバイダー抽象化を導入してテストの重複を排除します。xUnitの静的メンバー制約を回避するため、条件付き属性の代わりにSkipTestExceptionを使用したランタイムスキップに切り替えます。

#129533 JIT: fix opt-repeat divide-by-zero miscompile (#129386)

@JulieLeeMSFT・GitHub・area-CodeGen-coreclr

JIT最適化リピート(JitOptRepeat/STRESS_OPT_REPEAT)時に、整数除算のGTF_DIV_MOD_NO_BY_ZEROフラグが流制御に依存した注釈として動作し、値番号処理やCSE/ループホイスティングが除算を支配的なチェック上に移動させて、誤ったDivideByZeroExceptionを発生させるミスコンパイルの修正。この除算をホイスティング不可にするためGTF_ORDER_SIDEEFFを追加し、流制御に依存した証明の場合のみピン留めする。

#129299 Upgrade Emscripten to 5.0.6 & LLVM to 23

@akoeplinger・GitHub・arch-wasmarea-codeflowos-browser

Emscripten SDK を 3.1.56 から 5.0.6 へ、バンドル LLVM を 19 から 23 へアップグレードします。これに伴い、LLVM 23 への互換性対応、ネイティブビルドフラグの更新、WebAssembly スレッド処理の簡略化(独立した worker JS ファイルの廃止)、ファイルシステムのタイムスタンプ精度向上(ブラウザでのナノ秒対応)を実施します。

#128652 [R2R] Expand discovery of non-generic virtual methods on generic types

@BrzVlad・GitHub・area-crossgen2-coreclr

ReadyToRun (R2R) コンパイラにおいて、ジェネリック型上の非ジェネリック仮想メソッドの依存性検出を拡張しました。従来のGVM(Generic Virtual Method)メカニズムではジェネリックメソッドのみを処理していましたが、本PR により、ジェネリック型インスタンス上の非ジェネリック仮想メソッドスロットも適切にコンパイル対象として検出・解決されるようになります。

#128412 Fix PGO instrumentation for libcoreclr.so static libraries

@EgorBo・GitHub・tenet-performancearea-Infrastructure-coreclr

非Windows環境でのLibcoreClr.soに対するPGO(Profile Guided Optimization)インストルメンテーションを修正しました。従来は直接コンパイルされた2つのソースファイル(mscoree.cpp、exports.cpp)にのみPGOフラグが適用されていましたが、実際のランタイムコードが存在する静的ライブラリ(cee_wks、utilcode、coreclrpalなど)にはインストルメンテーションが不足していました。本修正により、ディレクトリスコープでPGOコンパイルフラグを適用し、coreclrツリー内のすべてのC/C++ソースに対してインストルメンテーションが行われるようになります。

2026年06月24日 (42 PRs)うち Bot 8 件 この日のページ →

#129788 Fix IsKnownNonNull assert for SIMD base addresses

@EgorBo・GitHub・area-CodeGen-coreclr

JITのバリューナンバリングにおいて、ValueNumStore::IsKnownNonNullがSIMD基底アドレス(SVE gather/scatterなどの暗黙的な間接参照で生成される)を処理する際のアサーション失敗を修正します。ポインタ型以外のバリューナンバー(VN)に対してはアサーションの代わりに保守的にfalseを返すように変更し、チェックビルドでのアサーション例外を回避しながら既存の動作を保持します。

#129783 Ship stripped cdac AOT binary and its symbols in the transport package

@hoyosjs・GitHub・area-Diagnostics-coreclr

Microsoft.DotNet.Cdac.Transport パッケージに含まれる mscordaccore_universal(cdac AOT)バイナリについて、Linux/macOS で未ストリップ状態で配布され、デバッグシンボルがシンボルパッケージに含まれていなかった問題を修正します。NativeAOT publish ディレクトリではなく CoreCLR artifacts ディレクトリ(ストリップ済みバイナリとシンボルファイルが配置されている)を参照し、既存のパッケージングインフラストラクチャによるシンボルファイルの自動検出と配布を可能にします。

#129763 Use volatile access for CoreCLR dictionary layout publication

@Copilot・GitHub・area-VM-coreclr

CoreCLRのジェネリック辞書/メソッド解決における稀なクラッシュを修正するため、辞書レイアウトポインタの公開と読み取りに対してVolatile意味論を適用しました。競合する複数スレッドによるレイアウトポインタのアクセスレースを排除し、Release/Acquire セマンティクスで一貫性を確保します。

// 公開時:VolatileStore を使用
VolatileStore(&pIMD->m_pDictLayout, pNewLayout);

// 読み取り時:VolatileLoad を使用
return HasOptionalFields() ? VolatileLoad(&GetOptionalFields()->m_pDictLayout) : NULL;

#129755 Consolidate STJ polymorphism tests into a shared abstract suite

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

System.Text.Json のポリモーフィズムテストをテスト共有スイートに統合するテストのみのリファクタリングです。反射ベース(11ラッパー)とソースジェネレーション(4ラッパー)の両方で同じテストシナリオを実行できるよう、テストを tests/Common/ に移動し、SerializerWrapper パターン経由で実行されます。

#129749 Fix alignment of 8-byte thread statics on direct TLS path

@EgorBo・GitHub・area-System.Threading

CoreCLRのスレッドスタティクス TLSインデックス割り当てロジックにおける、8バイトのスレッドスタティク(long/double)がミスアライン(4バイト境界に配置)され、arm64プラットフォームでInterlocked.Increment実行時にSystem.DataMisalignedExceptionをスローする不具合を修正します。

根本原因はGetTLSIndexForThreadStatic内のアライメント選択ロジックで、bytesNeeded >= 8の判定後にelseキーワードが欠けており、その直後のbytesNeeded >= 4判定により8バイトアライメントが4バイトに上書きされていました。

#129748 Narrow Mono AOT typeload error cleanup

@vitek-karas・GitHub・area-Codegen-AOT-mono

Mono AOT コンパイラにおいて、フィールド解決失敗時に発生する型ロードエラーを適切に処理するよう修正しました。メタデータエラー(MissingField/BadImage)を正しく消費し、ランタイム例外スロー IR へ適切に変換することで、インライン展開処理での予期しないアサーション失敗を防ぎます。

#129742 Fix comparison-with-wider-type CodeQL issue

@janvorli・GitHub・area-GC-coreclr

CodeQLが指摘した異なる幅の型同士の比較に関する警告を修正するため、GCのheap_select::initメソッドのヒープ列挙ループを更新しました。heap_numループ変数の型をuint16_tからintに変更し、GCToOSInterface::GetProcessorForHeap(...)呼び出し時に明示的なキャストを追加することで、混合幅の比較を回避します。

#129729 Fix building unboxing and real generic method targets at the same time

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

NativeAOT実行時型ローダーにおいて、単一の型ロード時にunboxingとnon-unboxingのエントリポイントが同時に必要とされる場合に、同じジェネリック辞書が二重に構築されて登録に失敗する問題を修正します。修正では、型ローダーが作業を二重に実行することを許可しつつ、辞書割り当てのポイントで停止することで、重複登録を回避します。

#129715 [mono] Defer NEWOBJ type-load failures to runtime in AOT mode

@pavelsavara・GitHub・area-Codegen-AOT-mono

Mono AOTコンパイラでnewobj命令の型ロード失敗時の動作を改善しました。従来は型ロード例外が発生するコンストラクタを呼び出すメソッドをコンパイル対象から除外していましたが、フルAOT環境ではExecutionEngineExceptionが発生していました。本修正により、JITと同様に実行時にTypeLoadExceptionをスロー する動作に統一しました。

#129713 [mono] Keep in-flight exception alive across LLVM resume unwind

@pavelsavara・GitHub・area-Codegen-AOT-mono

Mono LLVM full-AOT環境で、例外がLLVM生成のfinally/faultハンドラを通じてアンワインドされる際、メモリ移動を伴うGC実行によって例外オブジェクトがダングリングポインタになる問題を修正します。例外を生ポインタではなくピン留めGCハンドル経由で保持することで、GCが発生しても例外オブジェクトへの参照が有効に保たれます。

修正前はMonitor.Exitなど管理コード内のGCセーフポイントで例外オブジェクトがリロケートされ、アンワインド再開時に無効なポインタをデリファレンスしてSIGSEGVが発生。修正後は0/300テスト実行で再現なし(修正前は17%の確率で発生)。

#129710 [mono] AOT-compile marshalling wrappers for layout classes with class-typed fields

@pavelsavara・GitHub・area-Codegen-AOT-mono

Mono AOTコンパイラが、クラス型フィールドを持つレイアウト付きクラスのマーシャリングラッパー(StructureToPtr/PtrToStructure)をAOTイメージに含めるよう修正しました。これまでは、ネストされたレイアウト付きクラスを含むクラスがJIT時のみ動作し、全AOTモード実行時にはExecutionEngineExceptionで失敗していました。

[StructLayout(LayoutKind.Sequential)]
class POINT { public int x, y; }

[StructLayout(LayoutKind.Sequential)]
class MINMAXINFO { public POINT ptMinTrackSize, ptMaxTrackSize; }
// 全AOTモード下では修正前はランタイムエラー、修正後は正常動作

#129708 [mono] AOT-compile methods that use the IL jmp opcode

@pavelsavara・GitHub・area-Codegen-AOT-mono

Monoの IL CEE_JMP オペコード処理を改善し、AOT コンパイル時に jmp を使用するメソッドが AOT イメージから除外されないようにしました。full-AOT 実行時に jmp メソッドが欠落してクラッシュする問題を解決します。

修正前は CEE_JMP が DISABLE_AOT() を呼び出して実メソッドを AOT イメージから除外していたため、実行時に ExecutionEngineException が発生していました。修正後は jmp を「call + return」として扱い、AOT コンパイル可能な形に変換します。

#129701 Use SearchValues in Utf8JsonReader.SkipWhiteSpace

@eiriktsarpalis・GitHub・area-System.Text.Jsontenet-performance

Utf8JsonReader.SkipWhiteSpaceをSearchValuesを用いたベクトル化処理で最適化し、長いホワイトスペース実行時のスキャン性能を向上させます。simdjsonの「次の興味深いバイトまでのベクトル化スキャン」という概念を、ストリーミング・単一パス・ゼロアロケーションという既存の制約を保ったまま適用します。すべての変更は内部実装(#if NETでゲート)であり、破壊的変更なし。

#129498 Fix browser wasm merged test reference discovery

@AndyAyersMS・GitHub・arch-wasmtest-enhancementarea-Infrastructure

Browser WASM統合テストランナーの参照解決を修正しました。マージされたランナープロジェクトの参照をビルド時に正規化し、異なるベースディレクトリからスキャンが実行される場合でも正しく参照を解決できるようにします。これにより、src\tests\build.cmd browserコマンドが正常に動作するようになります。

#129484 [cDAC] Implement DacDbi API GetMetaDataFileInfoFromPEFile

@rcj1・GitHub・area-Diagnostics-cdac

cDAC Loader契約に GetFileHeadersInfo(ModuleHandle handle, out uint timeStamp, out uint imageSize) APIを追加し、DacDbi API GetMetaDataFileInfoFromPEFile の実装をサポートします。GetPath(ModuleHandle) を GetPath(TargetPointer peAssemblyPtr, bool fallbackToHint = false) に変更し、モジュールパス情報をPEImageに移動させるリファクタリングも含まれます。

#129470 Port System.Diagnostics.Process to OpenBSD

@sethjackson・GitHub・area-System.Diagnostics.Processcommunity-contributionos-openbsd

System.Diagnostics.Process をOpenBSDプラットフォームに対応させるポーティング実装です。プロセス情報の取得、プロセス管理、およびプロセススレッド情報の取得機能をOpenBSD固有のインターオプ層を通じて実装し、既存の他のUnixプラットフォーム対応と同様の構造で統合しています。

#129334 [wasm][coreclr] Re-enable System.Formats.Nrbf tests

@radekdoulik・GitHub・arch-wasmarea-Build-mono

browser-wasm + CoreCLR環境でSystem.Formats.Nrbf.Testsテストスイートを再有効化します。

根本原因は、WebAssembly SDK のバンドルタスク ComputeWasmBuildAssets が相対パスのみで重複排除を行い、バージョンを無視していた点です。これにより、ランタイムパックのSystem.Runtime.Serialization.Formatters 8.1.0.0スタブがアプリローカル11.0.0.0版をシャドウイングし、テスト検出時に FileNotFoundException が発生していました。

修正では、MSBuild ターゲット _CoreCLRResolveRuntimePackVsAppLocalConflicts を追加し、SDK の ResolvePackageFileConflicts タスクを使用してバージョンベースでアセンブリバージョンの競合を解決してから webcil バンドルを構築します。

#129043 Async profiler: V1 (TaskAsync) instrumentation + tests.

@lateralusX・GitHub・area-System.Threading.Tasksarea-Diagnostics-coreclr

V1(コンパイラ生成のステートマシン型)async 実装に対するAsync Profilerインストルメンテーション機能を追加します。V1とV2の両async パスから統一的で明確に定義されたイベントストリームを出力し、ダウンストリームツールが両者を区別せずに消費できるようにします。V1専用のAppendAsyncCallstackイベントにより、レジューム時に完全な継続チェーンを再構築できます。

#128921 [cDAC] Add GetApproxTypeHandle DacDbi API

@Copilot・GitHub・area-Diagnostics-coreclr

cDAC(Compact DAC)の GetApproxTypeHandle DacDbi APIを追加するPRです。ネイティブの型ウォーク ロジックをマネージドにポートし、デバッガがダンプベースで近似型ハンドルを取得できるようにします。RuntimeTypeSystem APIの参照型判定ロジックを改善し、IsObjRef(TypeHandle)からIsCorElementTypeObjRef(CorElementType)へリファクタリングしています。

#128768 DI: avoid duplicate disposal for shared singleton instances

@Copilot・GitHub・area-Extensions-DependencyInjection

DI コンテナで複数のサービス登録がファクトリ経由で同じシングルトンインスタンスに解決される場合、スコープ破棄時に重複したインスタンスが捕捉されて複数回破棄される問題を修正しました。スコープ破棄開始時に遅延的に重複排除を行い、シングルトンは1回のみ破棄しつつ、依存オブジェクトの破棄順序を保持します。

代表的なシナリオ:

services.AddSingleton<TImpl>();
services.AddSingleton<IService1>(sp => sp.GetRequiredService<TImpl>());
services.AddSingleton<IService2>(sp => sp.GetRequiredService<TImpl>());

#128306 Add MemoryExtensions.Min/Max

@manandre・GitHub・area-System.Memorycommunity-contribution

ReadOnlySpan<T>に対してMinとMaxの拡張メソッドをMemoryExtensionsに追加します。デフォルトの比較器またはカスタムIComparer<T>をサポートし、空のスパンや参照型/null許容型を適切に処理します。LINQのEnumerable.Min/Maxのセマンティクスをスパン向けに実装します。

// 使用例
ReadOnlySpan<int> numbers = new[] { 3, 1, 4, 1, 5 };
int min = numbers.Min(); // 1
int max = numbers.Max(); // 5

// カスタム比較器の使用
var result = numbers.Max(comparer);

#128252 Re-enable Microsoft.Extensions.Hosting shutdown functional coverage in CI and harden shutdown startup/Helix/NET481 compatibility

@Copilot・GitHub・area-Extensions-Hosting

Microsoft.Extensions.Hosting の機能的シャットダウンテスト(ShutdownTests)を CI で再有効化し、制限されたHelix/最小限のイメージ環境での互換性を確保するための硬化(ハードニング)を実施しました。テスト展開をソースツリーの検出ではなく、展開済み出力から実行し、外部プロセスツール(pgrep、kill)への依存を排除し、Unix シグナルハンドリングをランタイムの platform-specific signal mapping に合わせました。

#126669 Add Stream wrappers for memory and text-based types

@ViveliDuCh・GitHub・area-System.IOarea-System.Memory

メモリおよびテキストベースの型に対する標準化されたストリームラッパーを新しい公開シール型として追加します。StringStream、ReadOnlyMemoryStream、WritableMemoryStream(CoreLib)、およびReadOnlySequenceStream(System.Memory)が導入され、テキスト・メモリデータをStream APIで統一的に扱えるようになります。

サンプルコード:

// StringStream: 文字列をストリーム化してエンコード
var stream = new StringStream("Hello, World!", Encoding.UTF8);
byte[] buffer = new byte[100];
int bytesRead = stream.Read(buffer, 0, buffer.Length);

// ReadOnlyMemoryStream: バイト配列の読み取り専用ストリーム
ReadOnlyMemory<byte> data = new byte[] { 1, 2, 3 };
var romStream = new ReadOnlyMemoryStream(data);

// WritableMemoryStream: 固定容量の読み書き可能ストリーム
Memory<byte> buffer = new byte[256];
var wmStream = new WritableMemoryStream(buffer);
wmStream.Write(new byte[] { 1, 2, 3 }, 0, 3);

// ReadOnlySequenceStream: ReadOnlySequence<byte>のストリーム化
ReadOnlySequence<byte> sequence = ...;
var rosStream = new ReadOnlySequenceStream(sequence);

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

#129730 Better generic cycle detection in MethodEntryGenericLookupResult

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

NativeAOT の ジェネリック型ルックアップ処理において、メソッドエントリ(関数ポインタ)のジェネリック循環検出が一貫性を持つように改善されました。従来は canonical/non-concrete パス上でのみ循環検出が実施されていたのに対し、この変更により全パスで統一的に検出されるようになります。

#129727 [mono][wasm] Add Truncate/CopySign/ScaleB intrinsics + narrow #103347 test exemption

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

Mono の WASM インタープリター・ジタープリターに Math.Truncate、Math.CopySign、Math.ScaleB 各メソッドのネイティブ WASM 命令対応を追加し、Half/BFloat16 の explicit conversion テストで WASM 特有の NaN 処理の問題に対する exemption スコープを最適化します。WASM ハードウェア命令(f64.trunc、f32.trunc、f64.copysign、f32.copysign)および既存の libm インポート(scalbn、scalbnf)を有効活用し、従来の BCL C# 実装での低速な解釈実行を排除します。

#129722 JIT: invert oversize loops with their own bounds checks

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITのループ反転ヒューリスティック(optTryInvertWhileLoop)を改善し、独自の境界チェックを持つループに対して、ループクローニングが有益である場合により積極的に反転を行うようにしました。同時に、過度に大きなループの反転を制限する従来の「too big to clone」「1.25x liberal」制限を撤廃し、より大きなループでのクローニング判断を後段のメカニズムに委譲します。

#129721 [cDAC] Fix IsSharedByGenericInstantiations for non-shared canonical MTs

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

cDAC(Compact Data Access Contract)の IsSharedByGenericInstantiations の実装を修正するPRです。従来は IsCanonMT && HasInstantiation という条件で判定していましたが、これは過度に広すぎました。値型のジェネリック型(例:ArraySortHelper<int>)は独自のcanonical MTであり、実際にはinst argを必要としないメソッドに対して誤って InstArgMethodTable を報告していました。

本修正は、ランタイムの MethodTable::IsSharedByGenericInstantiations と同じロジック(GenericsMask ビットが SharedInst(0x20))を使用するよう改善します。これにより、ArraySortHelper<int>.cctor() や ReadOnlySpan<char>.ToString() など複数のメソッドが正しく分類されるようになります。

#129714 Fix GC hole when method return is hijacked for GC suspension

@BrzVlad・GitHub・area-VM-coreclr

GC中断時のメソッド戻り値ハイジャック処理における、インタプリタへの戻り時のGCホール問題を修正しています。ハイジャック対象の戻りアドレスがJITコードでない場合(インタプリタなど)、ハイジャックを無効化することで、戻り値レジスタがスキャン対象から漏れる問題を解決します。

#129706 Revert dotnet-optimization dependency update from #129405

@Copilot・GitHub・area-Infrastructure-coreclr

windows-x86 release CoreCLR_LibrariesビルドがMergeMibcFilesターゲットで失敗する問題を解決するため、#129405で行われたdotnet-optimizationパッケージの依存関係更新をリバートしました。問題の根本原因は、dotnet-pgo mergeが非致命的な警告メッセージを出力し、MSBuildのExecタスクがそれをエラーと判定してビルドを失敗させたものです。

#129669 Fix ReferenceTrackerHost fixed-address storage

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

ReferenceTrackerHostのs_globalHostServicesがIntPtr型に[FixedAddressValueType]属性を適用していましたが、この属性はプリミティブ型には対応していません。小さなラッパー値型を導入することで、COM ホストオブジェクトのレイアウトを変更せず、より適切に固定アドレスストレージを実装します。

[FixedAddressValueType]
private static readonly unsafe ReferenceTrackerHostObject s_globalHostServices =
    new((IReferenceTrackerHostVftbl*)Unsafe.AsPointer(in HostServices.Vftbl));

private readonly unsafe struct ReferenceTrackerHostObject
{
    public readonly IReferenceTrackerHostVftbl* Vftbl;
}

#129640 Optimize HashBytes for 64-bit and remove dead code

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

HashBytes関数を最適化し、xxHash32プリミティブ(XXHash32_QueueRound/XXHash32_MixFinal)を使用して4バイト単位で処理することで、従来のバイト単位DJB2ハッシュを置き換えます。HashBytesは文字列リテラルのインターニングパス(JIT コンパイル中のldstrトークン解決)で使用されており、すべてのマネージドアプリケーションの定常状態コストの一部です。

xxHash32プリミティブをtypehashingalgorithms.hから新しい共有ヘッダsrc/coreclr/inc/dn_xxhash.hに抽出し、型ハッシング経路とHashBytes経路の両方で再利用できるようにします。

#129628 Fix compiled/source-generated lazy loop stack unwinding when giving up at max iteration

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

Compiled および Source-Generated Regex エンジンで、最大イテレーション数に達した遅延ループからのバックトラック時に IndexOutOfRangeException が発生する問題を修正しました。遅延ループが複数回イテレーションした後、ループが終了時に正しくスタック状態をアンワインドしていなかったことが原因です。

// 修正例:遅延ループの最大イテレーション達成時のスタック巻き戻し
// 修正前: stackpos -= entriesPerIteration;  // 1イテレーション分のみ
// 修正後: stackpos -= lazyloop_iteration * entriesPerIteration;  // 全イテレーション分

#129563 Ensure other types of SIMD related loads, stores, and indirections are marked as used with SIMD intrinsics

@tannergooding・GitHub・area-CodeGen-coreclr

SIMD関連の負荷、格納、間接参照を適切にマーク付けすることで、構造体の昇格(struct promotion)を防止し、SIMDビットキャストが行われるパフォーマンスクリティカルなコードの最適化を改善します。従来は直接的なローカル読み書きのみが認識されていましたが、本変更によりIND(LCL_ADDR ...)などのIR形状も含めて対応します。

#129426 Take in account mandatory Zip64 Ext Info Extra Fields presence when required by spec

@mrek-msft・GitHub・area-System.IO.Compression

ZIP形式のZip64拡張情報フィールド解析を修正し、ZIP仕様書セクション4.5.3に準拠するようにしました。ローカルファイルヘッダー内では非圧縮サイズと圧縮サイズフィールドが必須であることを仕様で定義されているため、ローカルヘッダーからの出典かセントラルディレクトリからの出典かに応じて、これらフィールドを適切に処理するようにしました。

#129380 add tracing configuration

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

トレース設定のサポートを追加するPRです。ビルダースタイルAPIを用いた設定可能なトレース機能を実装し、Issue #100317の承認済み設計に準拠しています。

主な機能:

  • AddTracingとトレースビルダーAPI(Microsoft.Extensions.Diagnostics)
  • ソース・操作・リスナー・スコープマッチングによるトレース有効化/無効化ルール
  • 設定ベースのトレース制御
  • ActivitySourceFactoryと関連するActivitySource/ActivityListenerの拡張

#129232 [wasm] Delete obsolete wasm console templates and related WASI build tests

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

廃止予定のWebAssembly (WASM) コンソールテンプレート (wasmconsole、wasiconsole) と、これらのテンプレートをテストするための WASI ビルドテストプロジェクト (Wasi.Build.Tests) を削除します。WASM/WASI ビルドインフラストラクチャを簡潔化し、ブラウザテンプレートと手動作成のサンプルに統一します。

#129216 Implement computed goto dispatch for the CoreCLR interpreter

@BrzVlad・GitHub・tenet-performancearea-CodeGen-Interpreter-coreclr

CoreCLR インタープリタのオペコード ディスパッチ機構を computed goto を使用した実装に変更し、パフォーマンスを大幅に向上させました。従来のスイッチ文ベースのディスパッチから、コンパイラが静的に生成したジャンプテーブルを使用した直接アドレス分岐に切り替えることで、インタープリタの実行速度を約 25% 向上させます。また、毎オペコード実行時の pFrame->ip 保存を削除し、GC トリガーまたは例外発生の可能性がある場合のみ明示的に保存することで、さらに約 3% の実行速度改善が期待されます。

2026年06月22日 (33 PRs)うち Bot 5 件 この日のページ →

#129672 [cDAC] Enable arm32 GC stress + fix code/data pointer type confusion on ARM32

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

cDAC(Compact Data Access Components)GC ストレステストを ARM32(linux_arm)で有効化し、それに伴い明らかになった命令ポインタ(IP)型の混乱を修正。ARM32 の Thumb ビット(LSB)が IP に含まれているが、cDAC がこれを適切に処理していなかったため、フレーム検証時にランタイムと cDAC の値が不一致になっていた。型システムで TargetPointer → TargetCodePointer に昇格させることで、コンパイル時に型の混乱を防止。

#129668 Fix COM wrapper weak-handle defensive copy in ReferenceTrackerNativeObjectWrapper

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

ReferenceTrackerNativeObjectWrapper内のGCHandleフィールドからreadonly修飾子を削除するバグ修正です。GCHandleは可変構造体であり、readonlyフィールドに対して変更メソッドを呼び出すと防御的コピーが作成され、GCHandle.Free()が実際のフィールドを更新できないことが原因で、ファイナライザー/リリース競合時に重複解放が発生していました。

// 変更前
internal readonly GCHandle _nativeObjectWrapperWeakHandle;

// 変更後
internal GCHandle _nativeObjectWrapperWeakHandle;

#129666 [browser][coreCLR] idempotent lazy download of dll/pdb

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

Blazor WebAssemblyで同じ遅延読み込みアセンブリを複数回ロードした場合に誤ったエラーが発生していた問題を修正しました。fetchAssemblyでvirtualPathがnormalizeVirtualPathによって破壊的に変更されることが原因でした。修正後は、loadLazyAssemblyの重複呼び出しは冪等なno-opとなり、2回目以降はfalseを返します。

#129655 JIT: add fgRemoveUnreachableTry phase

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラに新しいEH(例外処理)クリーンアップフェーズ fgRemoveUnreachableTry を追加します。このフェーズはメソッドエントリから到達不可能になったtryブロックを持つEH領域を検出・削除し、特にWebAssemblyなどの到達不可能なEHに対して非寛容なコントロールフローを持つプラットフォームでのコンパイルエラーを防ぎます。最適化時のみ実行され、funclet生成直前のEHクリーンアップフェーズセットで一度だけ実行されます。

#129646 JIT: fix edge likelihoods for loop cloning

@AndyAyersMS・GitHub・area-CodeGen-coreclr

ループクローニング時のエッジ尤度(edge likelihood)計算が不正確だった問題を修正しました。以前のコードは高速クローン(fast clone)に到達するために通過する必要のある条件分岐の総数を考慮していなかったため、各エッジの尤度が過度に高く推定されていました。特に入れ子ループのクローニング時にプロファイル情報が不正に膨張する問題が発生していました。修正内容は、高速クローンに到達するまでに通過する必要のある条件分岐数をカウントし、それに基づいて正しい尤度を計算するようにしたものです。

#129637 [cDAC] Add FeatureFlags contract, reduce direct global reads in legacy impl, expand NativeAOT descriptor parity

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

cDAC(CoreDump Diagnostic Access Component)に新しい FeatureFlags コントラクトを追加し、フィーチャーフラグ判定の一元化を実現します。同時に、GCヒープ分析に関するグローバルオプションの柔軟性を向上させ、CoreCLRとNativeAOTのデータディスクリプタ間の互換性を拡大します。

// 新しいFeatureFlagsコントラクトの使用例
bool isEnabled = target.Contracts.FeatureFlags.IsEnabled(RuntimeFeature.PortableEntrypoints);

#129591 [browser] Wasm boot JSON: touch a stamp, not the boot JSON itself (fix #129280)

@lewing・GitHub・area-Build-mono

WebAssembly Browser MSBuildターゲットにおいて、ブートJSON生成時のタイムスタンプ処理を改善し、マルチビルドにおける不要な再圧縮を防止します。従来はブートJSON自体をタッチしていたため、下流の静的Webアセット圧縮パイプラインで誤ったキャッシュ判定が生じていました。新しく「完了」スタンプファイルを導入し、MSBuildの増分ビルドチェックを正確に保ちながら、ブートJSONのタイムスタンプを内容に基づく値のままで保持します。

#129548 Locate crossgen2 by $(CoreCLRConfiguration) in ILCompiler.ReadyToRun.Tests

@jtschuster・GitHub・area-ReadyToRun

ILCompiler.ReadyToRun.Tests プロジェクトで、crossgen2 と wasm JIT の位置解決が test project の Configuration に依存していた問題を修正。CoreCLR artifacts と同じ $(CoreCLRConfiguration) / $(CoreCLRArtifactsPath) キーを使用するように統一することで、開発環境でテストプロジェクトと CoreCLR を異なる Configuration でビルドする際の問題を解決します(CI では影響なし)。

#129530 Fix JsonSchemaExporter dropping nullability for nullable floating-point composition schemas

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

JsonSchemaExporterがIEEE浮動小数点型(double?、float?、Half?)でJsonNumberHandling.AllowNamedFloatingPointLiteralsを使用する場合、anyOfスキーマとしてエクスポートされる際にnull値の受け入れをドロップするバグを修正しました。修正後は、{"anyOf":[{"type":["number","null"]},{"enum":["NaN","Infinity","-Infinity"]}]}のように正しくnullabilityを保持します。

#129480 Convert fxr_resolver and its hostmisc dependencies to C

@elinor-fung・GitHub・area-Host

corehost スタックの C++ から C への段階的な変換の一環として、fxr_resolver と依存する hostmisc の PAL/utils ヘルパーを C に変換します。既存の C++ エントリーポイントは薄いラッパーとして維持され、実装は C レイヤーに委譲されます。これにより、複数プラットフォーム(Windows/Unix)でバイナリサイズが大幅に削減されます。

#129460 Add support for new R2RIncompatible flag for runtime tests

@BrzVlad・GitHub・area-ReadyToRunarea-crossgen2-coreclr

ReadyToRun (R2R) / CrossGen2 パイプラインでのテスト実行をスキップするための新しい R2RIncompatible フラグをランタイムテストに追加します。既存の CrossGenTest プロパティは R2R コンパイルを無効化するだけでしたが、このフラグは RunCrossGen2 が設定されている場合にテスト実行そのものをスキップしてテストの干渉を防ぎます。

#129447 Improve nullability analysis in ValueNumStore::IsKnownNonNull

@EgorBo・GitHub・area-CodeGen-coreclr

JITのValueNumStore::IsKnownNonNull メソッドを改善し、nullability分析を強化しました。VN(値番号)の正規化とパターン認識を拡張することで、より積極的なnull-check除去が可能になります。

SPMI測定で80kbのコード削減を達成しており、以下のようなケースで冗長なnullcheckが削除されます:

string Foo(Dictionary<string, string> map) => map["some string key"];

static void Test(MyStruct[] arr, int i)
{
    ref MyStruct x = ref arr[i];
    if (i > 10)
    {
        _ = x.Y; // 冗長なnullcheckが除去される
    }
}

#129394 Fix OpenSSL X509Chain time validity depending on process time zone

@koen-lee・GitHub・area-System.Securitycommunity-contribution

OpenSSL X509Chain検証時、プロセス実行中のタイムゾーン変更により証明書の時間有効性判定が不安定になるバグを修正しました。従来は検証時刻をローカル時間の分解要素として渡していたため、.NETのキャッシュされたタイムゾーンとlibc のタイムゾーンが異なる場合に判定が反転していました。修正後はUTC UnixタイムスタンプをX509_VERIFY_PARAM_set_time に直接渡すことで、タイムゾーン変更の影響を排除しています。

#129285 JIT: remove getUnboxedEntry and getInstantiatedEntry

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

JIT/EE インターフェースから getUnboxedEntry と getInstantiatedEntry API を削除し、アンボックス化エントリ情報を resolveVirtualMethod を通じてプロット直します。これにより、将来的に共有ジェネリック型の仮想化解除時にランタイムルックアップとアンボックススタブの組み合わせを統一的に処理できるようにします。

#129164 [Eventpipe][S390X] Fix Session_Id for s390x

@saitama951・GitHub・area-Tracing-coreclr

S390X(IBM System z大型コンピュータアーキテクチャ)でのEventPipeセッション終了時に、StopTracingCommandのペイロードに含まれるsession_idがエンディアン順序を正しく変換されないため、トレーシングが無限に継続する問題を修正しました。dotnet-gcdumpから送信されるIPC通信時に、session_idが正しい形式で渡されていなかった点を改善しています。

#129147 [cDAC] Implement DacDbi APIs ParseContinuation and GetAsyncLocals

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(DataContractReader)スタックを拡張して、継続オブジェクト(ContinuationObject)と非同期デバッグ情報を読み取るAPIを追加し、DacDbiインターフェース経由でParseContinuationとEnumerateAsyncLocalsを実装しました。これにより、非同期メソッドのデバッグ時に継続情報と非同期ローカル変数を効率的に取得できるようになります。

#128982 Validate Dns hostname for embedded null characters

@Copilot・GitHub・area-System.Net

Dns.GetHostEntryおよび関連メソッドで、ホスト名に埋め込まれたヌル文字(\0)を事前に検証し、ArgumentExceptionをスローするように改善しました。ネイティブリゾルバー(getaddrinfo/gethostbyname)へ渡される前に無効なホスト名を拒否することで、ネイティブレイヤーでの暗黙的な文字列切り詰めと混乱したエラーを防ぎます。

// 修正前: 暗黙的に"foo"に切り詰められ、OSリゾルバーから SocketException が発生
Dns.GetHostEntry("foo\0bar");

// 修正後: ArgumentException をスロー
// System.ArgumentException: The host name contains an invalid character. (Parameter 'hostName')

#128700 Fix Arm64 conditional select lowering

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

ARM64における条件選択命令(Conditional Select)の低減処理に関する2つのバグを修正しました。

1つ目は、異なる幅のローカル変数を使用した際に型不一致が発生し、-1 + 1が0x1_0000_0000に化ける問題です。2つ目は、チェック付き加算/否定演算が条件選択に置き換わる際にオーバーフロー検出が無視される問題です。

#128668 Have IDIV/DIV REX2 and EVEX compatible

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

AMD64プラットフォームでAPX(拡張汎用レジスタと新しいプレフィックスエンコーディング)対応の例外・コンテキスト処理を追加します。REX2およびEVEXプレフィックス付きIDIV/DIV命令での除数ゼロ例外とオーバーフロー例外の処理に対応し、AVX-512の有無に関わらずAPXレジスタ(R16–R31)の状態をサポートします。

#128524 JIT: Switch to rangecheck when profitable

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

JITのswitch正規化ロジックを改善し、連続範囲を形成する数値に対して常にrangecheck最適化を適用するようにしました。従来はSWITCH_MAX_DISTANCEより大きい数値を持つswitch文のみが正規化されていましたが、本変更により小さい値でも連続範囲であれば最適化対象となります。

// 例: 以下のような小さい連続値でもrangecheck最適化が適用される
static bool Test(int a)
{
    return a == 3 || a == 4 || a == 5;
}

#128384 Compile runtime async versions of synchronous task-returning methods

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

JITがタスク返却型の同期メソッドの専用「ランタイム非同期版」をコンパイルできるようにするための拡張です。新しいJIT↔EEインターフェースAPI(getAwaitReturnCall)を追加し、同期メソッドのILを受け取ったJITが、テール位置の呼び出しをランタイム非同期呼び出しに変換し、その他の戻り値をAsyncHelpers.TransparentAwaitでラップして非同期化します。これにより、非同期タスク返却メソッドへの委譲オーバーヘッドを削減します。

#128319 Validate uncompressed size up front in ZipArchiveEntry update mode

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

ZipArchiveEntry の Update モードで、宣言されている非圧縮サイズが Array.MaxLength (約2GB) を超える場合の検証を改善します。これまでは MemoryStream コンストラクタで ArgumentOutOfRangeException が発生していましたが、今後は Open()/OpenAsync() 呼び出し時に即座に InvalidDataException を発生させるようにします。

// GetUncompressedData / GetUncompressedDataAsync の先頭で検証
if ((ulong)_uncompressedSize > (ulong)Array.MaxLength)
    throw new InvalidDataException(SR.EntryUncompressedSizeTooLargeForUpdateMode);

_storedUncompressedData = new MemoryStream((int)_uncompressedSize);

#128233 [SVE2] CreateWhileWriteAfterRead* and SaturatingExtract*

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

SVE2(Scalable Vector Extensions 2)の欠落していたマスク命令を実装しました。CreateWhileWriteAfterRead*とSaturatingExtract*の4つの新しいメソッドファミリーを追加します。

CreateWhileWriteAfterRead*はCreateWhileReadAfterWrite*と異なり、ポインタ差分を直接計算するため、op2ptr = op1ptr - 1の場合の動作が異なります。SaturatingExtract*ファミリーは飽和演算で値をナロウイング(型を小さくして)抽出し、Upper変種は暗黙的なアウトパラメータを使用するため特別なRMW処理を必要とします。

2026年06月21日 (2 PRs) この日のページ →

#129636 Disable scope info for wasm targets

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly(WASM)ターゲットではネイティブデバッガが存在せず、仮想レジスタがICorDebugInfoで表現できないため、WASMビルドでスコープ情報(compScopeInfo)の生成を無効化する変更です。あわせてリターン値の収集もこのフラグで制御するようにします。

#129614 [mono] LLVM backend correctness, NaN-safe FP narrow, and test annotations

@pavelsavara・GitHub・area-Build-mono

Emscripten 5.0.6 / LLVM 23へのアップグレードに向けたMono LLVM バックエンドの事前準備PR。LLVM 23の厳格な定数エンコーディングとより積極的な浮動小数点変換の認識に対応させる。すべてのLLVM 23対応コードはLLVM_API_VERSIONガードされており、現在のLLVM 19では動作的に同等であり、アップグレード前に安全にマージ可能。

2026年06月20日 (4 PRs) この日のページ →

#129658 Properly annotate CreateGeometricSequence

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

JIT コンパイラにおいて、CreateGeometricSequence ノードを非無効ノード(non-invalid node)として適切にアノテーションする修正です。このノードは定数伝播(constant propagation)の最適化の恩恵を受けるため、GenTree ノードとして残される可能性があります。Pull Request #127690 からの積み残し作業です。

#129644 Fix x64 ToScalar XMM→GPR codegen for contained CreateScalar operand

@Copilot・GitHub・area-CodeGen-coreclr

x64において Vector128<T>.ToScalar() による XMM→GPR レジスタ間転送の codegen バグを修正しました。contained operand として CreateScalar/CreateScalarUnsafe が最適化される場合、SIMD レジスタを参照する必要があるのに、整数 mov 命令が発行されていたため、誤った結果やアサーション失敗が発生していました。

修正により、operandDesc の kind (register/memory) に基づいて命令を正確に選択し、movq/movd を適切に発行するようになります。

// 修正前:誤った mov gpr, xmm
// 修正後:正しく movq xmm → gpr
ulong n = Vector128.CreateScalarUnsafe(x).AsUInt64().ToScalar();
return Table[n % 64] + n; // 正確な計算結果

#129598 Fix NativeAOT GC hole issue

@janvorli・GitHub・area-NativeAOT-coreclr

NativeAOT環境でのGCホール(ガベージコレクション追跡漏洩)を修正します。例外が funclet から再スローされ、その finally が実行中にGCが動作した場合、非揮発性レジスタに保持されているGC参照が正しく更新されないという問題を解決します。修正内容は、finally funclet から戻った後に非揮発性レジスタを ExInfo の REGDISPLAY で参照される位置に保存することです。

#129593 [mono][llvm] Use llvm.minimum/maximum for scalar Math.Min/Max float ops

@lewing・GitHub・area-Codegen-LLVM-mono

Mono LLVM バックエンドの浮動小数点スカラー Math.Min/Max 実装を修正するPRです。従来の fcmp + select 方式から LLVM 12以降で利用可能な llvm.minimum/llvm.maximum 組み込み関数に変更し、NaN処理の仕様違反と AArch64 での誤コンパイルの両問題を解決します。

修正前の問題:

  • Math.Min(x, NaN) が x を返す(仕様では NaN を返すべき)
  • LLVM 23 の AArch64 バックエンドが fminnm/fmaxnm(NaN抑制型)にマッチして誤った結果を生成

修正後:

  • IEEE 754-2019 準拠の NaN 伝播型 minimum/maximum を使用
  • AArch64 では fmin/fmax(NaN伝播型)に正しくコンパイル

2026年06月19日 (22 PRs)うち Bot 5 件 この日のページ →

#129627 Reapply "Add lane construction and composition APIs"

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

SIMD Vector型に対するレーン構築・合成API(lane construction and composition APIs)を追加します。これにより、個別のスカラー値からベクトルを構築したり、ベクトルから特定のレーン(要素)を抽出・操作する機能が提供されます。WebAssembly SIMD パスには「Not Yet Implemented(NYI)」マーカーが付与されています。

#129590 [wasm] WBT: flush async output handlers in ToolCommand.ExecuteWithCapturedOutput

@lewing・GitHub・area-Build-mono

Wasm.Build.Tests の ToolCommand.ExecuteWithCapturedOutput でプロセスの Exited イベントと非同期出力ハンドラ間の競合状態を修正します。高速に終了するサブプロセス(例:Hello-World の dotnet run)で、出力ハンドラがすべてのデータを処理する前にプロセスが終了すると、キャプチャされた出力が空になる間欠的な失敗が発生していました。修正では await completionTask 後に Process.WaitForExit() を追加し、最終的な出力ドレイン(stdout/stderr の完全なフラッシュ)を強制します。

#129586 Remove OSX from linker tests and runtime trimming tests

@sbomer・GitHub・area-NativeAOT-coreclr

Microsoft ホステッド公開 Mac プールへの負荷軽減を目的として、ILLink テストとランタイムトリミングテストから OSX(osx_x64)を削除するものです。作成者は、ILLink テストの OSX は プラットフォーム固有のロジックを実行しないため削除しても安全であり、トリミング済みライブラリテストについても既存の NativeAOT スモークテスト、ライブラリテスト、ILLink/AOT 固有テストによる十分なカバレッジがあると判断しています。

#129553 Enforce 75-minute timeout floor for windows_arm64 global build jobs

@Copilot・GitHub・area-CodeGen-coreclrblocking-clean-ci-optionalPriority:1

Windows ARM64プラットフォームのビルドパイプラインジョブがデフォルトの60分タイムアウトに達して失敗する問題を解決するため、タイムアウト処理をグローバルビルドジョブ設定層で実装しました。windows_arm64プラットフォーム専用に75分の最小タイムアウトを設定します。

#129549 [wasm] Split CoreCLR thunks by target OS (browser vs wasi)

@lewing・GitHub・area-VM-coreclr

WebAssembly(WASM)ランタイムで、ブラウザとWASI環境向けの異なるP/Invoke表面に対応するため、CoreCLRのcallhelpersシンク(thunk)をターゲットOS別に分割しました。生成されたthunkファイルはsrc/coreclr/vm/wasm/{browser,wasi}/に分け、CMakeビルドでCLR_CMAKE_TARGET_WASIに基づいて適切なサブディレクトリを選択します。WasmAppBuilderのジェネレータにTargetOSプロパティを追加し、[SupportedOSPlatform]/[UnsupportedOSPlatform]属性でP/Invokeをフィルタリングするようにしました。

#129503 [browser][mono][MT] Prep for emscripten upgrade

@pavelsavara・GitHub・arch-wasmarea-VM-threading-monoos-browser

Emscripten アップグレードに向けて、Mono WebAssembly スレッド(MT)ランタイムを準備するPRです。pthread_self への切り替え、WebAssembly.Module のワーカーへの伝播、JS相互運用の修正を実施します。また、マルチスレッド環境での RuntimeFeature.IsMultithreadingSupported の設定と、ワーカーキューの初期化タイミングの改善が含まれます。

#129403 Remove Wrapper delegate kind, switch ARM32 VSD hidden arg to R12

@Copilot・GitHub・arch-arm32area-VM-coreclr

CoreCLRの「Wrapper」デリゲート種別を削除し、ARM32仮想スタブディスパッチ(VSD)の隠し引数パラメータ渡しをR4からR12レジスタに変更します。この変更により、ARM32 VSD ABI互換性のためだけに存在していたWrapper デリゲートインフラストラクチャ全体を廃止し、コンパイラおよびランタイムの実装を簡潔化します。

#129398 [ARM32] Eliminate red zone usage in runtime stubs

@cshung・GitHub・arch-arm32community-contributionarea-NativeAOT-coreclr

ARM32 Linuxでは SP下のメモリ領域がシグナル配送時に保証されないため、red zone(SP調整せずに下位メモリへの読み書き)の使用がサイレント破損やクラッシュを引き起こす可能性があります。本PR では、ARM32ランタイムスタブにおけるすべてのred zone使用法を排除し、明示的なスタック調整(push/pop)に置き換えています。これにより信頼性が向上し、NativeAOT interop thuks ではスタブサイズが20バイトから12バイトに縮小されます。

#129272 Add ISOSDacInterface17 for StressLog enumeration via cDAC

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

新しいISOSDacInterface17 COM インターフェースを追加し、cDAC の IStressLog コントラクトを SOS および clrmd に公開します。これにより、CoreCLR と NativeAOT の両方のプロセスから、ハードコードされた構造体オフセットを使用せずにストレスログを読み取ることができるようになります。

背景: SOS(!DumpLog)と clrmd は現在、CoreCLR レイアウトに一致するハードコードされたオフセットで raw メモリ読み取りを使用しており、NativeAOT のストレスログ読み取りには対応していません。cDAC はすでに両方のランタイムに対応した IStressLog コントラクトを実装しており、これを COM インターフェース層を介して公開します。

#129058 JIT: Fix for IV opt to preserve updates to a counter that is live into an EH handler

@JulieLeeMSFT・GitHub・area-CodeGen-coreclr

JITのInduction Variable(IV)最適化において、例外ハンドラ(EH handler)内で使用されるカウンタ変数への更新が誤って削除される問題を修正します。PR #127932でDo Not Enregister(DNER)とliveness検出が分離されたため、optLocalHasNonLoopUsesがcatch handlerに流入するIVを検出できなくなり、full-opt codegen(crossgen2、jitstress、AggressiveOptimization)で不正な結果が発生していました。

#127690 Add lane construction and composition APIs

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

Vector型に対するレーン構築・合成APIとシーケンス生成APIを追加するPRです。幾何級数、交互シーケンス、調和級数の生成、およびConcat/Zip/Unzip/Reverseなどのレーン操作機能が新たに公開APIとなります。JITはこれらをネイティブSIMD命令に展開し、ハードウェア非対応時は狭いベクトル幅での分解をサポートします。

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

#129569 [ci-scan] Use blocking-clean-ci-optional for JIT/GC/PGO stress pipeline KBEs

@kotlarmilos・GitHub・area-Infrastructure

CI失敗スキャンワークフロー(ci-failure-scan)を更新し、JIT/GC/PGOストレステスト用パイプラインの18個がKBE(Known Build Error)ラベルとしてblocking-clean-ci-optionalを使用するように変更。これらのパイプラインはrequiredゲートの外で実行される任意のローリングジョブであるため、失敗時にBuild Analysisで表示されてもクリーンCIをブロックすべきではありません。

#129539 Fix objRef not being stored in GetPointerData after DebuggerIPCE_ObjectData refactor

@tommcdon・GitHub・area-Diagnostics-coreclr

デバッガーのCordbReferenceValue::GetPointerDataメソッドにおいて、ローカルキャッシュ(localValue)からオブジェクト参照を読み込んだ後、それをm_info.objRefに書き戻していなかった問題を修正しました。この不具合により、Span<T>などの値型のデバッガー可視化が失敗していました。

#129531 Fix assembly labels on MacOS X64 to be LOCAL_LABEL

@davidwrighton・GitHub・area-VM-coreclr

macOS X64環境において、アセンブリのラベルをLOCAL_LABELに修正することで、リンカーによる関数の不正な分割を防止し、正しい動作を確保する変更です。ラベルを適切に指定しないとリンカーが関数を不正に細分化してしまい、予期しない動作につながるため、この修正が必要です。

#129529 Add DerivedTypes property to IsClosedTypeAttribute

@Copilot・GitHub・area-System.Reflection

IsClosedTypeAttribute に DerivedTypes プロパティを追加し、リフレクションベースのコンポーネントが TypeDef テーブルをスキャンせずに閉じられた型の派生型を検出できるようにします(API レビュー #129009 で承認済み)。

var attr = new IsClosedTypeAttribute();
attr.DerivedTypes;          // Type.EmptyTypes (デフォルト)

attr.DerivedTypes = [typeof(Dog), typeof(Cat)];
attr.DerivedTypes = null;   // Type.EmptyTypes に正規化される

#129514 [clr-ios] Disable Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests on Apple mobile

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

Apple モバイル/AOT な Helix テスト実行環境において、Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests が aggressive trimming により反射機能が削除されるため、テストケースが発見されず(Tests run: 0)実行がクラッシュとして報告されるのを防ぐため、このテストプロジェクトをテスト対象から除外します。

#129512 Implement StartSuspended for Windows and Resume on SafeProcessHandle

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

ProcessStartInfo.StartSuspended プロパティと SafeProcessHandle.Resume() メソッドを Windows に実装しました。プロセスを中断状態で起動し、後で再開できます。

ProcessStartInfo startInfo = new("myapp.exe") { StartSuspended = true };
using SafeProcessHandle handle = SafeProcessHandle.Start(startInfo);
// プロセスは作成されるがメインスレッドは中断状態
handle.Resume(); // ResumeThread経由でメインスレッドを再開
ProcessExitStatus status = handle.WaitForExit();

#129494 [Wasm RyuJit] Add Wasm SIMD NYIs, fix PushArgs assert, fix Async/Try/SCC issue.

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

Wasm RyuJITバックエンド向けの複数の修正を含むPRです。SIMD16ローカル変数/フィールド読み込みをWasm SIMD NYI(Not Yet Implemented)として報告し、R2Rコンパイル時に対応メソッドをスキップできるようにします。また、固定レジスタセットを持たないターゲット(Wasm)でのretbufコール引数の仮定を緩和し、非同期try領域のSCC書き換え処理を改善します。

#129473 [release/10.0] Fix ComInterfaceGenerator collision on same-named methods in disjoint cross-assembly bases

@Copilot・GitHub・Servicing-approvedarea-System.Runtime.InteropServices

クロスアセンブリの[GeneratedComInterface]継承で、異なる外部基底インターフェースが同じ名前のメソッドを持つ場合、ComMethodInfo辞書キーの衝突によりCS8785エラーが発生する問題を修正します。生成時に外部定義メソッドの識別子にExternalSymbolIdを組み込むことで、キー衝突を回避します。

#129466 [browser][coreCLR] fix resource merging

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

WebAssemblyローダーの設定マージロジックにおけるバグを修正。mergeResourcesで明示的に列挙されていないリソースフィールド(例:libraryInitializers)がマージ時に失われていた問題を解決。新しい実装では、明示的な処理が不要なフィールドも含めてすべてのリソースプロパティが保持されるようになります。

#129428 Improve WebSocket exceptions to include informative messages

@Copilot・GitHub・area-System.Net

WebSocket例外の診断品質を向上させるPRです。無効なUTF-8テキストメッセージ受信、不正なクローズステータスコード/説明などのエラーケースで、単なる「Aborted state」というジェネリックなメッセージではなく、シナリオ固有の情報的なエラーメッセージを含むWebSocketExceptionをスローするようになりました。

従来の動作:

System.Net.WebSockets.WebSocketException (0x80004005): An exception caused the WebSocket to enter the Aborted state. Please see the InnerException, if present, for more details.

(InnerExceptionなし)

#129411 [cDAC]: Implement GetEnCHangingFieldInfo

@rcj1・GitHub・area-Diagnostics-coreclr

cDACのEdit-and-Continue(EnC)サポートを拡張し、GetEnCHangingFieldInfo機能を完全に実装するPRです。新しいIRuntimeMutableTypeSystem APIを通じて、EnC追加フィールドのストレージロケーション(静的フィールド・インスタンスフィールド)の特定と、フィールド修正の必要性判定をサポートします。

新しいAPI:

bool DoesEnCFieldDescNeedFixup(TargetPointer encFieldDescPointer);
TargetPointer GetEnCStaticFieldDataAddress(TargetPointer encFieldDescPointer);
TargetPointer GetEnCInstanceFieldAddress(TargetPointer objectAddress, TargetPointer encFieldDescPointer);

#129321 JIT: Fix managed return value debug info for floating-point returns

@tommcdon・GitHub・area-Diagnostics-coreclr

PR #128479で導入された管理対象戻り値のネイティブ変数エミッションにおいて、浮動小数点戻り値の場合にstoreVariableInRegisters(REG_FLOATRET, REG_NA)を使用していたが、これは整数レジスタを示すVLT_REGを設定してしまい、デバッガが整数レジスタでの読み込みに失敗する問題を修正します。

修正内容として、VLT_REG_FPを使用し0ベースのFPレジスタインデックス(REG_FLOATRET - REG_FP_FIRST)をエンコードすることで、デバッガのVLT_REG_FPハンドラが正しくREGISTER_AMD64_XMM0を加算してCorDebugRegisterに変換できるようにしました。

#129293 [mobile] .NET 11 mobile runtime configuration updates

@kotlarmilos・GitHub・area-Infrastructure-mono

.NET 11移行に伴う、モバイルランタイムのCI設定更新です。MonoのAndroid/iOS/tvOSモバイルテストレグをランタイムCI パイプラインから削除し、WebAssembly MonoおよびCoreClR/NativeAOTのモバイルレグは維持されます。また、SDK検証用に一時的にglobal.jsonをプレビューSDKにピンし、NuGet.configにgeneral-testingフィードを追加しています。

#129278 Handle canonical types in constraints checks

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

正規型(canonical types)である__Canonと__UniversalCanonをジェネリック制約チェック時に正しく処理するため、キャスティングロジックと制約検証ロジックを更新しました。本変更により、NativeAOT/CoreCLRの共有TypeSystemが制約チェック時に__Canonを適切に扱え、リフレクションによるジェネリック型のインスタンス化がAOT/トリミング下で正しく保持されるようになります。

#129203 Fix LoaderHeap's free list growing more than expected

@eduardo-vp・GitHub・tenet-performancearea-VM-coreclr

LoaderHeapの空きリスト(free list)が予期以上に増大し、スレッド競合により複数の冗長なメモリブロックがリストに追加されることで、線形スキャンが非常に遅くなる問題を修正します。サイズ別にバケット化された空きリスト構造を導入し、小さなブロックはO(1)で再利用、大きなブロックのみ線形スキャンするよう改善しました。

パフォーマンス改善実績:

  • 実行時間:91.2秒 → 3.9秒(約95%削減)
  • メモリ使用量はほぼ同等(114.1MB → 117.5MB)

#129189 Pre-initialize InvariantCulture such that it can be safely used when creating stack traces

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

スタックトレース生成時にメモリ不足下でCultureInfo.InvariantCultureが未初期化のまま使用されることによるアサーション失敗を修正します。AppDomain起動時にCultureInfoクラス初期化子を事前実行し、スタックトレース生成パスが安全にInvariantCultureにアクセスできるようにします。

#129091 [cDAC] Stackwalk DacDbi APIs

@rcj1・GitHub・area-Diagnostics-cdac

cDAC(Compact Data Access)のスタックウォーク機能とデバッガー契約を拡張し、ランタイムのhijack-stub検出と recovery機能を追加します。CreateStackWalkの新しいオーバーロード、HRESULT ベースのエラー報告を備えた呼び出し側提供バッファでのコンテキスト取得、および対応する DacDbi スタックウォーク API(作成・削除・設定・取得・アンワインド・チェック)を実装します。

#127760 [clr-interp] Implement Managed Return Value support for the interpreter

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

インタープリタで解釈されるメソッドのManaged Return Value (MRV)サポートを実装し、デバッガがメソッド実行からのステップ処理時に戻り値を表示できるようにします。インタープリタが戻り値を変数ホームスロットに保存することで、デバッガが他の変数ホームと同様にジェネリックに読み出せる仕組みです。

#127582 Fix NoopLimiter disposal in DefaultPartitionedRateLimiter Heartbeat

@Copilot・GitHub・area-System.Threading

DefaultPartitionedRateLimiterのNoopLimiterパーティション(IdleDurationが常にnullを返す)がHeartbeatタイマーで適切に破棄されていなかった問題を修正します。LimiterEntryラッパーを導入して最後のアクセス時刻を追跡し、IdleDurationがnullでも経過時間に基づいて未使用パーティションを削除できるようにしました。

#126720 Separate GC WKS and SVR compilation units

@janvorli・GitHub・area-GC-coreclr

GCのビルドシステムをリファクタリングし、従来のwrapperファイルモデル(gcwks.cpp/gcsvr.cppおよびgceewks.cpp/gceesvr.cpp)から脱却しました。代わりに共有GC実装ソースを直接WKS/SVRの個別コンパイル単位として構築するよう変更します。新しい共有コンパイルコンテキストヘッダgcinternal.hを導入し、GC、VM、NativeAOT、GCサンプルのビルド構成を更新しました。

#78746 Aging dependent handles

@VSadov・GitHub・area-GC-coreclr

Dependent Handlesのエージング機能を実装し、ガベージコレクション(GC)のパフォーマンスを改善します。従来、Dependent Handlesは世代管理(aging)されず常にGen 0に留まるため、毎回のGCで不要に訪問されていました。本変更により、Dependent Handlesが世代の昇格(aging)とリジュベネーション(若返り)に対応します。これにより、特に古い世代(tenured)のオブジェクトを参照するDependentHandlesの場合、GCのオーバーヘッドが削減されます。

2026年06月17日 (26 PRs)うち Bot 1 件 この日のページ →

#129509 Add bool silent parameter to Process.Run and Process.RunAsync fileName overloads

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

Process.Run() と Process.RunAsync() の fileName オーバーロードに bool silent = false パラメータを追加し、プロセスの標準入出力をnullデバイスにリダイレクトできるようにしました。これにより、ストリーム処理に伴うデッドロックのリスクなしに、コンソール出力を簡潔に抑制できます。

// 使用例
Process.Run("dotnet", ["restore"], silent: true);

#129477 Implement support for loading multiple providers into a single context

@vcsjones・GitHub・area-System.Security

OpenSSL 3プロバイダーの複数ロード機能に対応する変更です。単一のOSSL_LIB_CTXに複数のOpenSSLプロバイダーをロード可能にし、新しいマネージド公開APIを追加します。SafeEvpPKeyHandle.OpenKeyFromProviderにIEnumerable<string>型のプロバイダー名リストと、オプションのOpenSSL property queryパラメーターを受け付けるオーバーロードが導入されます。

SafeEvpPKeyHandle.OpenKeyFromProvider(
    IEnumerable<string> providerNames, 
    string keyUri, 
    string? propertyQuery = null)

#129472 JIT: boost loop inversion cost limit for some loops

@AndyAyersMS・GitHub・area-CodeGen-coreclr

CoreCLR JITのループ反転(loop inversion)コスト制限を調整し、ループクローニングから利益を得られるループでのループ反転を促進します。特に、IV(帰納変数)のインクリメントが条件ブロックではなくバックエッジソースブロックにある場合を認識し、コスト制限を引き上げることで、反転を可能にし、その後のループクローニングなどの最適化を有効にします。

#129456 [cdac] Implement IGCInfo for x86; consolidate decoder under GCInfo contract

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

Windows x86でSOS(デバッガ拡張)が!clruやILスタブMethodDescに対してGetCodeHeaderDataを実行した際にUnable to get codeHeader informationエラーが発生する問題を修正しました。x86のGC情報デコーダを既存のStackWalkコンテキストからGCInfoコントラクト下に移動・統合し、x86向けのIGCInfo実装(GCInfoX86_1)を新規実装・登録することで、複数のSOS機能(!clru、GetCodeHeaderData、GetMethodRegionInfo)が正常に機能するようになります。

#129446 Fix OSSL_STORE_INFO leak

@vcsjones・GitHub・area-System.Security

OpenSSL 3のプロバイダーベースの鍵読み込みパスにおいて、OSSL_STORE_INFO_PKEY型の秘密鍵エントリ処理時にOSSL_STORE_INFOメモリが解放されていなかったメモリリークを修正しました。CryptoNative_LoadKeyFromProvider関数でOSSL_STORE_INFO_get1_PKEY()で秘密鍵を抽出した後、OSSL_STORE_INFOを明示的に解放することで対応しています。

#129397 JIT: unpin locals whose value is provably non-movable

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラで、値がGC移動不可であることが証明できるピン留めされたローカル変数を自動的にピン留め解除するデータフロー解析パスを追加しました。特にstackallocで確保されたメモリへのポインタをピン留めするケース(例:fixed (T* p = stackalloc T[N]))に対応し、冗長なピン/アンピン操作をDead Code Eliminationで削除できるようにしています。

#129389 [interp] Send CreateThread debugger event from the interpreter

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

インタープリタ下で実行されるマネージコード(デバッグ中)がCreateThreadデバッガイベントを送信していなかった問題を修正します。インタープリタが実行するスレッドの初回マネージコード実行時にCreateThreadイベントを直接通知することで、デバッガがICorDebugThreadを確立でき、ローカル変数の表示が可能になります。新しいTSNC_DebuggerThreadStartSentフラグにより、スレッドごとに最大1回のイベント送信に限定します。

#129382 Add UsePureLLVMToolchain for compiler-rt+lld combo

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

Alpine Linuxなどの環境で、GNU toolchainの依存性を排除した純粋なLLVM toolchain(clang + lld + compiler-rt)を使用してNativeAOT バイナリをビルドするための新しいプロパティ UsePureLLVMToolchain を追加しました。この変更により、webapiaot テンプレートで22,592バイトのバイナリサイズ削減が実現します。

使用例:

dotnet publish -p UsePureLLVMToolchain=true

#129374 Add missing fast path for DateTime format "G"

@danmoseley・GitHub・area-System.DateTime

DateTime.ToString("G", CultureInfo.InvariantCulture)に対するfast pathを追加しました。既存の"o"、"r"、"s"、"u"形式のfast pathと同様に、TryFormatInvariantGを直接利用することで、null/empty形式と同一の高速化パスを提供します。fast pathはoffset.Ticks == NullOffset && ReferenceEquals(dtfi, DateTimeFormatInfo.InvariantInfo)で保護されており、DateTimeOffsetや独自のDateTimeFormatInfoは既存の処理を利用します。

#129361 JIT: extend OptimizeConstCompare to remove TYP_BYTE casts

@AndyAyersMS・GitHub・area-CodeGen-coreclr

xarch JIT の OptimizeConstCompare を拡張し、TYP_BYTE キャストを除去する最適化を実装しました。符号付きバイト比較で不要な符号拡張を回避し、(sbyte)x < -64 などが movsx 命令を使わずにバイトサイズ比較で実行されるようになります。x < 0 / x >= 0 の特殊なコード生成ケースの正確性を保つため、const == 0 かつ GT_LT/GT_GE の場合は最適化をスキップします。

#129354 Use SSA-based TryGetRange to fold conditions

@EgorBo・GitHub・area-CodeGen-coreclr

JIT コンパイラの範囲チェック最適化を改善するPRです。SSA ベースの TryGetRange メソッドをグローバルアサーション伝播時の条件折り畳みに活用し、Span.Slice チェックなどのより多くのケースを最適化できるようにしました。バイナリサイズは約 1.2MB 削減されています。

#129320 Move DSA tests into System.Security.Cryptography

@PranavSenthilnathan・GitHub・area-System.Security

DSAテストスイートを統合し、すべてのDSAテストロジックをSystem.Security.Cryptography.Testsに集約するリファクタリング。従来のSystem.Security.Cryptography.OpenSsl.Tests、System.Security.Cryptography.Csp.Tests、System.Security.Cryptography.Cng.Testsで重複していたテストを排除し、プロバイダー別の派生テストクラスで異なるDSAファクトリ(Default/CNG/CSP/OpenSSL)をテストする構造に変更。

#129256 Fix OOM message in Native AOT

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

Native AOT環境でOutOfMemoryException発生時に、Exception.ToString()が失敗してもメモリ割り当てなしで確実なOOMメッセージをstderrに出力できるようにしました。OOM時にメモリ割り当てができない状況下で、信頼性の高い診断情報を提供します。

#129127 Clarify JIT-EE method placement in add-new-jit-ee-api skill

@Copilot・GitHub・area-CodeGen-coreclr

JIT-EE (JIT-VM) インターフェースメソッドの追加に関するスキルドキュメントを更新し、新しいメソッド追加時の位置やソート順序に関する制限がないことを明確化しました。ドキュメントの各ステップで繰り返される「特定位置への追加」という指示を削除し、実装ステップセクションの最上部に単一のNOTEを追加することで、位置やソート順は任意であることを明記しています。

#129049 Make scheduled outerloop builds succeed when only Helix tests fail

@mmitche・GitHub・area-Infrastructure-libraries

スケジュール実行時のouterloopパイプラインが、Helixテスト失敗により不必要に再キューされる問題を修正します。always: falseトリガーはAzDoが最後の成功実行以降の変更がある場合のみ新規実行をキューするため、Helixテスト失敗で毎回ビルド失敗状態となり、同一コミットが日々再キューされていました。本修正により、スケジュール実行時のHelixステップでFailOnWorkItemFailureとFailOnTestFailureを無効化し、テスト失敗時も完全成功状態(exit 0)でビルドを終了させます。テスト結果は引き続き可視であり、無駄なHelix作業の再キューを回避できます。

#128962 Fix for 127747

@dhartglassMSFT・GitHub・area-CodeGen-coreclr

JIT最適化関数 fgOptimizeHWIntrinsic において、SIMD HWIntrinsic の ADD(NEG(a), b) => SUB(b, a) 変換時にオペランドの評価順序を安全に入れ替えられるかを確認する gtCanSwapOrder チェックが欠落していた問題を修正します。この欠落により、副作用を持つ式で不正な最適化が発生し、コンパイラアサーション失敗を引き起こしていました。

#128869 Add support for properties in COM source generator

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

COM Interface Generator に プロパティとインデクサーのサポート を追加します。[GeneratedComInterface] インターフェイスで C# プロパティを宣言でき、各アクセサーが vtable スロットにマッピングされます。これにより、生成される ABI が組み込み COM interop と一致し、より自然な C# インターフェイス設計が可能になります。プロパティ、インデクサー、デフォルト実装メンバー(DIM)のサポートも含まれます。

[GeneratedComInterface]
public partial interface IProperties
{
    int IntProperty { get; set; }  // getter: slot 3, setter: slot 4
    string StringProperty { get; set; }
}

[GeneratedComInterface]
public partial interface IIndexers
{
    int this[int i] { get; set; }  // indexer also mapped to vtable slots
}

#127763 Fix segfault in GC standalone large pages emulation mode (segments path)

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

GC standalone large pages emulation mode(セグメントパス)でのセグメンテーション違反(segfault)を修正しました。GCLargePages=2(エミュレーションモード)の際、メモリが予約されたままコミットされていなかったため、アクセス時にクラッシュが発生していました。virtual_alloc関数にint large_page_configパラメータを追加し、エミュレーションモードで正しくVirtualReserve + VirtualCommitを実行するように対応しました。

2026年06月16日 (24 PRs)うち Bot 1 件 この日のページ →

#129462 [cDac] Fix failing cDac test on OSX

@leculver・GitHub・area-Diagnostics-cdac

cDACにおけるポインタ型フィールドの処理を改善し、OSX上でのテスト失敗を修正しました。IntPtr/UIntPtr型のフィールドが"nint"/"nuint"として報告される場合、これらをポインタとして扱えるよう対応しました。これにより、マネージドコード内のポインタサイズフィールドの読み取りが適切に機能するようになります。

#129461 [ci-scan-feedback] Strengthen dedup queries and block JIT/GC workarounds

@Copilot・GitHub・area-Infrastructure

CI Outer-Loop Failure Scanner の重複排除(dedup)精度を向上させ、JIT/GC/PGO コードジェン関連の失敗に対する修正ポリシーを強化するもの。最近クローズされた KBE(Known Build Error)の検索を 2 クエリから 4 クエリ変形に拡張し、タイトル言い換えや整合性フィルタリングを経た前例を捕捉。また、無関係なコード変更によるコードジェン バグ回避を禁止し、所有者への引き継ぎコメントを要求するよう方針を明確化。

#129449 Wasm R2R: emit trailing end after retless BBJ_CALLFINALLY

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

Wasm R2R コード生成で、retless BBJ_CALLFINALLY がwasm関数/funcletを終了する際に、必要な末尾の end opcode が欠落してモジュール検証エラー(function body must end with end opcode)が発生していた問題を修正します。ブロックが最後のブロックまたはfunclet開始の直前にある場合、unreachable の後に end opcodeを発行するようになります。

#129448 [cDAC] Implement GetILCodeVersionNodeData in DacDbi

@rcj1・GitHub・area-Diagnostics-cdac

コンパイル時データアクセス層(cDAC)において、計測済みILオフセットマッピングのサポートを追加し、これをレガシーDacDbiのGetILCodeVersionNodeDataフローに統合する変更です。InstrumentedILOffsetMappingの格納タイプをUINTに統一し、cDACデータディスクリプタとコントラクトAPIを拡張して、デバッガが実行時のILコードバージョン情報にアクセスできるようにします。

#129443 [cDAC] Add IsManagedCode DacDbi API

@rcj1・GitHub・area-Diagnostics-cdac

DAC/DBI API の「アドレス分類」機能を簡略化し、未使用だった GetAddressType/AddressType enum を単一の IsManagedCode ブール値クエリに置き換えました。ネイティブ CoreCLR 側と管理された cDAC レガシー実装、デバッガー DI(Debugging Interface)の両方を新しい API に対応させています。

#129435 Keep OSSL_LIB_CTX handles alive forever

@vcsjones・GitHub・area-System.Security

OpenSSL 3.0のOSSL_LIB_CTXコンテキストをプロセス期間中有効に保つように変更しました。従来はスレッド終了時に無効メモリアクセスが発生していましたが、コンテキストとプロバイダーをキャッシュして再利用することで問題を解決しています。これにより、名前付きキー(TPM等)のテストカバレッジも復活させています。

#129433 Redo resume after catch for interpreter via native EH

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

CoreCLRインタープリタの「catch後の再開(resume after catch)」機能を修正するPRです。ネイティブ例外処理を通じてマネージド例外を正しく処理し、GCがスタック走査を開始する際の参照フレームを確保することで、ControlledExecutionTestsで発生していたAccessViolationエラーを解決します。主な修正は、明示的フレーム削除時にもResumableFrameを追加してGCの起点を提供することです。

#129392 JIT: recognize CORINFO_HELP_BOX in impThrowIfNull

@AndyAyersMS・GitHub・area-CodeGen-coreclr

Tier0 JITコンパイラで、ArgumentNullException.ThrowIfNull()が値型のボックス化に対して呼び出される場合の最適化を拡張しました。GT_BOXノードだけでなく、CORINFO_HELP_BOXヘルパー呼び出しとして表現されるボックス化パターンも認識し、不要なnull例外スロー処理を削除します。これにより、Tier0でのThrowIfNull(struct)が余分なアロケーションを行わなくなります。

#129391 Wasm R2R: implement support for resume after catch

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

WebAssembly R2R(Ready-to-Run)実行時における例外処理後の実行再開(resume after catch)機能を実装しました。try_tableブロックごとに exnref型のラッパーブロックを配置し、キャッチされた例外をfunclet単位の exnrefローカル変数で管理します。また、RtlRestoreContextタグを簡略化(()->())し、try-fault funcletの多重エントリポイント標識を廃止しています。

#129390 Improve RangeOps::Merge

@EgorBo・GitHub・area-CodeGen-coreclr

JITの範囲解析における RangeOps::Merge を改善し、PHI引数から範囲をマージする際の境界チェック最適化をより積極的に適用します。例えば [0..1] U [10..10] が [0..10] にマージされるような処理で、コードサイズを最大110k削減します。

#129371 Don't give up on folding obj.GetType if obj can be null

@EgorBo・GitHub・area-CodeGen-coreclr

JIT のコンパイラ最適化において、obj.GetType() の定数畳み込みを改善するPRです。オブジェクトが null である可能性がある場合でも、型が確定していれば定数畳み込みを行い、暗黙的な null チェック例外を VN 例外セットに保持することで NullReferenceException を抑制しません。これにより、不要な呼び出しが削除され、より効率的なコードが生成されます。

string _fld;
Type Foo() => _fld.GetType();
// 修正前:GetType()の呼び出しが残る
// 修正後:型が System.String と確定し、null チェック付きで定数に畳み込まれる

#129349 JIT: clone array loops with stride > 57

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT ループクローニングの制限を緩和し、ストライド ≥ 58 の配列ループをサポートします。従来は stride < 58 で一律に拒否していましたが、大きなストライドに対しては実行時チェック arr.Length <= INT_MAX - s + 1 を追加することで対応。小さいストライドは暗黙的な Array.MaxLength バウンドで十分なため追加チェックなし。Span の同様の改善(#129309)に基づいています。

#129291 cDAC: dereference OBJECTHANDLE in collectible thread-statics

@leculver・GitHub・area-Diagnostics-cdac

cDAC(Common Data Access Component)におけるCollectible Thread-Static変数の処理を修正するPRです。従来、Collectible分岐ではスロットポインタそのものを返していましたが、NonCollectible分岐と同様にOBJECTHANDLEを逆参照して実際のオブジェクトを返すように変更します。これにより、request.cpp内のObjectFromHandleUncheckedの動作と一致させ、clrmdの期待値と揃えます。

#129260 Reduce raw global / typeinfo usage in cDAC Legacy interfaces

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

cDAC(Common Data Access Component)のLegacy実装をリファクタリングし、ランタイムグローバルおよびtypeinfoの直接読み取りを削除。代わりに型付きコントラクトアクセサを経由してルーティングしています。動作は保持されており、各リファクタリングは既存の読み取りを上位層(Legacy)から対応するContracts/*_1実装に移動するのみです。

#129201 [Wasm RyuJit] Enable Hardware Intrinsics

@adamperlin・GitHub・area-CodeGen-coreclr

WebAssembly(Wasm32)向けのハードウェア・イントリンシクス(SIMD)サポートをJIT層で有効化する基盤整備PR。FEATURE_SIMDおよびFEATURE_HW_INTRINSICSをWasm向けに有効化し、NYI_WASM_SIMDマクロと新たなJitWasmSimdNyiToR2RUnsupported設定オプションを導入。これにより、実装が進められるまでの間、R2R/crossgenの失敗を防止しながらインフラストラクチャの整備が進行される。

#129145 GCRoot: Report GCFrame and in-flight exception objects

@leculver・GitHub・area-Diagnostics-cdac

このPRはcDAC(Compact Data Access Contract)のスタック参照列挙機能を拡張し、従来報告されていなかった2つのGCルートソースを追加します:

  1. スレッドのGCFrame(GCPROTECT)チェーンで保護されたオブジェクト
  2. スレッドのExInfoチェーンに保持されたインフライト例外オブジェクト

これにより、IStackWalk.WalkStackReferencesがより完全なGCルート情報を報告できるようになります。

#129069 ManagedWebSocket: report actual messageType in invalid-type ArgumentException

@Copilot・GitHub・area-System.Net

ManagedWebSocket.ThrowIfInvalidMessageTypeで、無効なWebSocketMessageType値に対するArgumentExceptionメッセージが常に"Close"をハードコードしていた問題を修正しました。実際に渡されたmessageType値(未定義の列挙値を含む)がエラーメッセージに正確に反映されるようになります。

// 修正前: 常に "Close" を報告
// 修正後: 実際の messageType 値を報告
throw new ArgumentException(SR.Format(
    SR.net_WebSockets_Argument_InvalidMessageType,
    messageType, nameof(SendAsync), nameof(WebSocketMessageType.Binary),
    nameof(WebSocketMessageType.Text), nameof(CloseOutputAsync)),
    paramName);

#129059 [Wasm RyuJIT] Spill live ref/byref values to pinned stack slots at calls

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

WebAssembly (Wasm) RyuJIT コンパイラにおいて、GC参照/byref値がWasmシャドウスタック上に一時的に置かれ、GCに見えない状態でGCホール(GC holes)が発生する問題を修正します。新しいIRノード GT_WASM_SPILL_REF と専用パス WasmSpillRefs を導入し、ライブなref/byref値を専用のピンド(pinned)ローカル変数にスピルすることで、GCが参照を追跡できるようにします。

2026年06月15日 (19 PRs)うち Bot 4 件 この日のページ →

#129429 JIT: mark R2R direct-call target loads as non-faulting

@AndyAyersMS・GitHub・area-CodeGen-coreclr

R2R直接呼び出しターゲットの読み込みを非フォルティングとしてマークするJIT最適化。LowerDirectCallで導入される2つのインダイレクション(IAT_PVALUEおよびWASM PEPローカル)によるメモリ読み込みは、nullでないことが保証されているため、GTF_IND_NONFAULTINGフラグを付与することで、後続のJITフェーズがこれらをフォルティング操作として扱わないようにします。

#129343 [RyuJIT Wasm]: Fix incorrect assert for shift amount type in codegenwasm.cpp

@adamperlin・GitHub・area-CodeGen-coreclr

WebAssembly RyuJIT コードジェネレータにおいて、シフト演算の左オペランド(シフト量)の型チェック時に、より小さい整数型(TYP_USHORTなど)が TYP_INT に変換される場合を正しく処理するようデバッグアサーションを修正します。従来は厳密に TYP_INT 型を要求していましたが、genActualType() を使用して実際の型をチェックするように改善しました。

#129322 Fix illumox-x64 build with gcc and clang

@am11・GitHub・area-PAL-coreclros-SunOScommunity-contribution

illumos-x64プラットフォームでのGCC 13およびClang/LLVMツールチェーンでのビルド失敗を修正します。Solaris GCC 13での既定ビルド失敗に対応し、LLVM assembler(llvm-mc)とLLVMリンカー(lld)の上流で報告されたイシューに対するワークアラウンドを実装します。修正後、Azure Linux cross環境でのClangビルドがFreeBSD、OpenBSD、Haikuなど他のプラットフォームと同様に成功するようになります。

#129233 [ci-scan] Enable Build Analysis for outer-loop pipelines

@kotlarmilos・GitHub・area-Infrastructure

Build Analysis の対象に外部ループ (outer-loop) AzDO パイプライン定義を追加し、JIT/GC ストレステスト、PGO、SuperPMI、インタープリタ、診断など複数のパイプラインの失敗を Known Build Errors (KBE) で分類・除外できるようにします。これにより、PR CI における外部ループパイプラインの失敗を適切に処理できるようになります。

#129185 Enable LibraryImportGenerator.Tests on BSD/SunOS

@am11・GitHub・arch-arm32area-Infrastructure-librariesos-freebsdarch-x64os-SunOScommunity-contributionos-openbsd

LibraryImportGenerator.Tests をBSD/SunOS プラットフォーム上で有効にするための変更です。ブートストラップテストビルドで動作するよう、toolchain.cmake のツールチェーン設定を修正し、DNNE プロジェクトが規約に従ってターゲット三連符(target-triplet)を設定できるようにしています。

#129142 [release/10.0] : Change the PerfMap crst into an UNSAFE_ANYMODE crst

@davidwrighton・GitHub・Servicing-approvedarea-VM-coreclr

PerfMap生成時のデッドロック問題を修正するバックポート(#129021からrelease/10.0へ)。PerfMapのロック(PerfMap::s_csPerfMap)をCRST_UNSAFE_ANYMODEに変更し、GCモード切り替え時のロック順序によるデッドロックを防止します。また、スタブロギングを無効化する環境変数(DOTNET_PerfMapGranularity=4)を追加し、問題を回避できるようにしています。

#129134 [Wasm RyuJit] Enable native wasm fast tail calls

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

WebAssembly上のRyuJIT JITコンパイラでネイティブなwasm高速末尾呼び出し(fast tail calls)を有効化するPRです。明示的な末尾呼び出しがreturn_call/return_call_indirectに低レベル化されるようになり、SP引数にタグを付けてコード生成で影プロローグ調整を取り消し、呼び出し先が正しい影スタックポインタを受け取るようにします。暗黙的な末尾呼び出しは現在のところ通常の呼び出しのままです。

#129034 Remove NativeAOT debug handle tagging

@MichalStrehovsky・GitHub・area-CodeGen-coreclr

NativeAOT JIT インターフェースハンドルから、デバッグ専用の高ビットタグを削除し、タグビットが保持されないターゲット上での有効なハンドル拒否を防ぎます。また、既存テストから NativeAOT 回避措置を削除して、影響を受けた回帰テストカバレッジを再有効化します。

クロスターゲットシナリオ(例:64ビットホストが32ビットターゲットをコンパイル)において、ハンドル値がホストポインタサイズとして処理されるよう RyuJIT の定数/ハンドルパイピングを調整し、定数インポート/伝播時の上位ビット切り詰めを回避して不正な定数畳み込みを防止します。

#128279 Fix incorrect operand size for long-form IL local/argument instructions in InstructionEncoder

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

InstructionEncoderの長形式ローカル/引数命令(ldloc、stloc、ldloca、ldarg、ldarga、starg)がECMA-335に違反して4バイトのint32オペランドを出力していた問題を修正。これらの命令は2バイトのushortオペランドを使用すべきです。例えば、StoreLocal(256)はFE 0E 00 01 00 00(6バイト)ではなくFE 0E 00 01(4バイト)を出力すべきものでした。

#126110 Update code-review workflow and standardize AI disclosure

@stephentoub・GitHub・area-skills

dotnet/runtimeリポジトリのAIエージェント向けコードレビューワークフローの更新と、AI生成コンテンツの開示テキストの標準化。ワークフロートリガーをslash_command(/code-reviewコメント)に変更し、手動トリガー、タイムアウト延長、同時実行制御、空PRガード機能を追加。複数のスキルおよびcopilot-instructions.md全体でAI開示表記を統一。

2026年06月14日 (6 PRs) この日のページ →

#129356 Wasm R2R: push this before retbuf in InterpToR2R thunk args

@AndyAyersMS・GitHub・area-crossgen2-coreclr

Wasm インタプリタから R2R へのthunk引数順序を修正するパッチです。従来はretbufがthisの前に配置されていましたが、JIT(lvaInitArgs)と逆方向thunk(WasmR2RToInterpreterThunk)の期待値に合わせて、thisをretbufの前に配置するよう変更します。これにより、構造体戻り値を持つSynchronized メソッドでのNRE/pMT->Validateアサート失敗を解決します。

#129348 JIT: don't claim rotates set ZF on xarch

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラのxarchプラットフォーム向けフラグ設定分類を修正しました。ROL/ROR(ローテート)命令はZeroFlag(ZF)を更新しないにもかかわらず、シフト命令グループに分類されていたため、ゼロ比較の最適化時に古いZFをブランチが消費する問題を修正しています。

#129336 [browser][coreCLR] link out icu/globalization module on InvariantGlobalization flag

@pavelsavara・GitHub・arch-wasmarea-System.Globalizationos-browser

WebAssembly上のCoreCLR環境において、InvariantGlobalizationフラグが有効な場合にICU/グローバリゼーションモジュールをリンク対象から除外する機能を追加します。この変更により、不要なモジュールを含めないことでバイナリサイズを削減し、WebAssembly アプリケーションの最適化を実現します。

#129244 [cdac] Pipeline refactor + StackWalk doc cleanup + DataGenerator build fix

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

cDAC(compact Data Access Component)診断パイプラインのリファクタリングとビルド修正を行うPRです。主な変更は:

  1. runtime-diagnostics.ymlパイプラインを再構成し、プラットフォーム間で共有ビルドを活用して重複を削減
  2. DataGeneratorTests のコンパイル失敗を修正(ReadNInt抽象メソッドの実装不足)
  3. StackWalk データコントラクトドキュメントのクリーンアップ

#129221 [browser][coreCLR] set "LANG" env variable

@pavelsavara・GitHub・arch-wasmarea-System.Globalizationos-browser

CoreCLR WebAssembly ブラウザローダーが applicationCulture を ICU シャードの選択にのみ使用していた問題を修正しました。LANG 環境変数を "<applicationCulture>.UTF-8" に設定することで、ランタイムのデフォルトロケールが applicationCulture と一致するようになり、Mono の実装に合わせます。これにより、非デフォルトカルチャで起動した Blazor WebAssembly アプリケーションで発生していた InvalidOperationException ("culture change is not supported") が解決されます。

if (culture && loaderConfig.environmentVariables!["LANG"] === undefined) {
    loaderConfig.environmentVariables!["LANG"] = `${culture}.UTF-8`;
}

2026年06月13日 (9 PRs) この日のページ →

#129370 Delete PlatformDetection.IsMariner

@Copilot・GitHub・area-System.Security

Marinerはサポート終了したAzure Linuxの初期コード名であり、このPRではテストインフラストラクチャからすべてのPlatformDetection.IsMariner参照を削除します。レガシープラットフォーム検出ロジックを廃止し、テストスイートを現在サポートされているAzure Linuxの命名規則に整列させます。

#129367 Add ActiveIssue for all named key tests to mitigate invalid memory access

@vcsjones・GitHub・area-System.Security

System.Security.Cryptography と System.Net.Security の名前付きキーテストに ActiveIssue 属性を追加し、メモリ破損の原因と疑われる複数のテストを一時的に無効化してCI安定性を確保するものです。#129339で報告されたセグメンテーション違反/メモリ破損の調査中、これらのテストを無効化することで CI の安定性を維持します。

#129333 [browser][coreCLR] Make DOTNET_INTEROP dependency optional

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

Browser環境でJS相互運用を使用しないアプリケーション/テストにおいて、DOTNET_INTEROPを硬直的なリンク時依存関係から解放し、IL trimming時にSystemInteropJS_*マネージドエクスポートを削除できるようにします。これにより、JS interopを使用しないアプリケーションのバンドルサイズを削減できます。

#129312 JIT: forward-sub cheap address temps with multiple uses

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITのforward-substitution最適化を拡張して、複数の使用サイトで「安価なアドレス一時変数」を置き換えられるようにしました。これにより、フィールド更新用のdup-spill一時変数がLowering段階でのアドレスモード格納をブロックしなくなります。また、FIELD_ADDRチェーンをはぎ取る処理をgtPeelFieldAddrsヘルパー関数として共通化し、複数の呼び出し元で再利用しています。

#129304 Optimize NativeAOT delegate field layout

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

NativeAOT環境におけるデリゲート呼び出しのパフォーマンス最適化です。デリゲート呼び出しに使用される2つのフィールドをメモリレイアウト上で隣接配置することで、キャッシュラインの分割を減らし、ARM64でのコード生成効率を向上させます。特にARM64ではldp(ペアロード)命令の利用が可能になり、命令数削減につながります。

#129197 Add Wasm EH R2R infrastructure

@davidwrighton・GitHub・area-VM-coreclr

WebAssembly ReadyToRun(R2R)シナリオにおける例外処理(EH)のランタイムおよびJIT対応を実装するインフラストラクチャを追加するPRです。新しいWasm例外タグ__coreclr_wasm_rtlrestorecontext_tagを導入し、ランタイム・JIT・ホスト全体でリロケーション処理とコンテキスト復元メカニズムをサポートします。現在、finallyブロックとcatchブロック本体は動作確認済みですが、catch後のresumeは追加のJIT変更が必要です。

2026年06月12日 (33 PRs)うち Bot 6 件 この日のページ →

#129338 Some X25519 fixes for OpenSSL key handling

@vcsjones・GitHub・area-System.Security

X25519のOpenSSL実装における2つの重要な修正。

  1. OpenSSL 1.1.1での秘密鍵検出ロジックを修正。従来のNULLバッファを使用した検出方法がOpenSSL 1.1.1で誤った結果を返すため、実サイズのバッファで検出し、その後メモリをクリア(cleanse)する実装に変更。

  2. X25519DiffieHellmanOpenSsl.DeriveRawSecretAgreementCoreで_hasPrivateチェックを廃止。外部ハンドルから得られたキーの場合、秘密鍵のエクスポート可否は不明なため、OpenSSLプロバイダーに検証を委ねる設計に変更。PKCS#8および秘密鍵エクスポート時のチェックは継続。

#129309 JIT: extend loop cloning for span+stride>1 and ±const limits

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT ループクローニングを拡張し、ストライド > 1 の Span<T> ループの最適化を可能にします。また、ループリミットから定数オフセットを分離する機能を追加し、for (int i = 0; i < span.Length - K; i += K) のようなパターンのクローニング対象化を実現します。ストライド > 1 の増加ループには limit <= INT_MAX - s + 1 の実行時オーバーフロー保護ガードを追加します。

// クローニング可能になったループパターン例
for (int i = 0; i < span.Length - K; i += K) { ... }
for (int i = 0; i < span.Length; i += 2) { ... }
for (int i = 0; i < span.Length; i += 3) { ... }

#129306 JIT/wasm: fix quadratic cost in fgWasmEhFlow

@AndyAyersMS・GitHub・area-CodeGen-coreclr

Wasm EH(例外処理)フローの変換処理における2つのO(N²)パターンを排除し、スケーラビリティを改善しました。数千の相互保護キャッチを共有する単一のdispatching tryを持つメソッド(例:b28158.il、約16,700キャッチ)で顕著なパフォーマンス低下が発生していた問題に対応します。

#129303 JIT: tighten IV range from "i != bound" assertions in rangecheck

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITのループ境界チェック削除(BCE)を拡張し、i != bound形式のループ条件から生成されるアサーション(equality/inequality assertions)を活用して、ループクローニングの対象外となるループでも範囲チェックを削除できるようにします。optCreateJTrueBoundsAssertionを拡張してチェック済み境界に対するEQ/NE比較のアサーションを生成し、RangeCheck::MergeAssertionでそれらを使用して変数の範囲を厳密化します。

#129271 Fix Array::GetDirectPointerToNonObjectElements DAC regression

@tommcdon・GitHub・area-Diagnostics-coreclr

DAC(デバッガ向けデータアクセス)モードで Array::GetDirectPointerToNonObjectElements() が誤ったアドレスを返していた回帰を修正します。DAC モードでは m_Array がホストアドレスを返しますが、PTR_KIND はターゲットアドレスを必要とします。PR #128961 による変更でこの問題が発生し、デバッガによる例外スタックトレース・ConditionalWeakTable・スタックフレームヘルパー配列の検査が破損していました。

#129258 Add dnx shim to dotnet-host package

@mthalman・GitHub・area-Setup

.NET分布パッケージングガイドラインに従い、dnxディスパッチャースクリプトをdotnet-hostパッケージに移行します。従来はdotnet/sdkのLinux SDKパッケージから配布されていたため、Canonicalのdotnet-hostパッケージがインストールされた環境でdpkgファイル競合が発生していました。このPRは対応するdotnet/sdkの変更と共に配布される必要があります。

#129253 JIT: Clean up range check overflow caching and bounds check special cases

@EgorBo・GitHub・area-CodeGen-coreclr

JITコンパイラの範囲チェック最適化を整理するリファクタリングです。ノード単位のOverflowMapキャッシュを削除し、Winden()呼び出しをTryGetRangeに統合することで処理を簡潔化します。また、a[a.Length - cns]とa[X u% a.Length]のバウンズチェック高速パスをRangeCheck::OptimizeRangeCheckからoptAssertionProp_BndsChkに移動し、GetRangeWorkerの不正な使用に関する正確性の問題を解決します。

#129249 Add handling of RethrowAfterCatch exception in a few places

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

#128728後の回帰修正。インタープリタモード1でRethrowAfterCatchExceptionがJITフレームを通過する際に処理されず、terminate called after throwing an instance of 'ResumeAfterCatchException'エラーで失敗していた問題に対応。インタープリタ実行ループに例外を適切に伝播させるため、マネージド・ネイティブ境界でRethrowAfterCatchExceptionをキャッチして再スローする処理を追加。

#129248 JIT: encapsulate all fields in GenTreeIntCon

@Copilot・GitHub・area-CodeGen-coreclr

JIT コンパイラの GenTreeIntCon ノード(整数定数を表す AST ノード)の全フィールドを private に変更し、アクセサメソッドを介してすべての読み取り/書き込みをルーティングします。これにより、定数ノードの変更を一元的に追跡/デバッグできるようになります。動作上の変更はなし。

#129243 [browser][coreCLR] workaround Wasm.Build.Tests.IcuTests.FullIcuFromRuntimePackWithInvariant

@pavelsavara・GitHub・arch-wasmarea-System.Globalizationos-browser

WebAssembly(WASM)ビルドにおいて、InvariantGlobalization=trueが設定されている場合でも、CoreCLRのランタイムパックから国際化(ICU)関連の静的アーカイブを常にリンクするようにしました。これにより、生成されるGlobalizationNative_* P/Invoke参照のリンク時の未定義シンボルエラーを回避します。

#129218 Add async DataAnnotations bridge for Microsoft.Extensions.Options

@ViveliDuCh・GitHub・area-Extensions-Options

Microsoft.Extensions.Options.DataAnnotations ブリッジに非同期検証サポートを追加し、DataAnnotationValidateOptions<TOptions> が .NET 11+ で async オプション検証パイプラインに参加できるようにします。ValidateAsync メソッドは同期の Validate() と同じ再帰的な処理を行いつつ、Validator.TryValidateObjectAsync を使用して同期属性と AsyncValidationAttribute の両方を評価します。

#129200 [cDAC]: Implement GetTypedByRefInfo, GetStringData, GetArrayData, GetBasicObjectInfo

@rcj1・GitHub・area-Diagnostics-cdac

cDACコントラクトと従来のDAC/DBIブリッジを拡張し、オブジェクトとTypedByRefの検査APIをサポートしました。新しいAPI GetStringData()、GetSize()、GetTypedByRefInfo() を追加し、デバッガ側のオブジェクトデータ構造を DebuggerIPCE_ObjectData から DacDbiObjectData にリファクタリングしました。

void GetStringData(TargetPointer address, out uint length, out uint offsetToFirstChar);
ulong GetSize(TargetPointer address);
TypedByRefInfo GetTypedByRefInfo(TargetPointer typedByRef);

#129166 FileStream.Unix: prevent open to cause setting the controlling terminal.

@tmds・GitHub・area-System.IO

Unix環境のFileStreamにおいて、ターミナルデバイス(シリアルポートなど)をオープンする際にO_NOCTTYフラグを追加し、デバイスがプロセスの制御ターミナルになることを防ぎます。このフラグがない場合、制御ターミナルを持たないプロセスでターミナルデバイスをオープンするとそれが制御ターミナルになり、デバイスが切断されたときに予期しないSIGHUPシグナルが送信されてプロセスが異常終了する問題が発生していました。

#129140 Add Wasm32 ISA and PackedSimd ISA

@adamperlin・GitHub・area-crossgen2-coreclr

WebAssembly 32ビット(Wasm32)アーキテクチャに対するISA定義を追加し、WasmBase、PackedSimd、Vector128の3つのISAを導入します。現段階ではSIMDサポート機能の実装はまだ行われず、将来のSIMD対応作業への基盤整備です。JIT/EEインターフェースの仕様変更に伴いGUIDが更新されています。

#129083 Make Condition to not use ConditionalWeakTable

@VSadov・GitHub・area-System.Threadingtenet-performance

Monitor.Wait/Pulse/PulseAllの実装をConditionalWeakTableから削除し、LockにConditionを直接関連付けることで最適化するもの。ManualResetEventSlimがMonitor.Waitを使用して実装されており、Task待機シナリオで頻繁に使用される際の問題を解決します。主な課題は、ConditionalWeakTableの使用により:

  • 従属ハンドルがGC回の全体に影響を与える
  • テーブル全体のロック取得がコア数が多い環境で競合する

可能な限りConditionalWeakTableを避け、Lock内にConditionを直接格納する設計に変更。

#129016 Compute all checksums before emitting into image stream

@jtschuster・GitHub・area-ReadyToRun

CoreCLR AOT ツール(crossgen2/ilc)のイメージ生成時に、メモリ上の完全なイメージコピーを作成する代わりに、既存のストリームを使用してチェックサムを計算してから最終イメージにチェックサム reloc を出力するように改善しました。これにより大規模なメモリ割り当てを回避し、32ビット CI で発生していた OOM(メモリ不足)を防ぎます。

#128927 Privatize NativeAOT libunwind symbols

@sbomer・GitHub・area-NativeAOT-coreclr

NativeAOT ランタイムにおいて、libunwind シンボルの衝突を防ぐため、in-tree llvm-libunwind ソースを単一の再配置可能オブジェクトにビルドし、その定義されたグローバルシンボルをローカライズ(非公開化)する変更です。これにより、外部 libunwind とのリンク時の競合を回避します。

#128420 Convert corehost hostmisc trace and fx_ver to C

@Copilot・GitHub・area-Host

corehost の C++ から C への移行の一環として、hostmisc の trace と fx_ver モジュールを C に変換し、PAL/utils を C から呼び出し可能な形に再編成しました。trace.cpp を trace.c に置き換え、SemVer パーサーを C 実装に移行しながら、既存の C++ 呼び出し元向けのインライン互換層を提供します。CMake の更新で minipal を host バイナリにリンクしています。

#127493 Fix race condition in System.Threading.Overlapped tests causing IOException on Windows ARM64

@Copilot・GitHub・area-System.Threading

Windows ARM64でのPGOストレステスト中にPackPosTestとPackPosTest1でレース条件が発生し、IO完了コールバック内のEventWaitHandle.Set()でIOException: The handle is invalidが間欠的に発生していた問題を修正します。

GCがアンマネージドポインタを追跡できないため、helper.Wait()から戻った後にJITがhelperをデッドと判定し、ファイナライザが2番目のコールバック実行前にManualResetEventハンドルをクローズしていました。修正ではhelper.Wait()後にGC.KeepAlive(helper)を追加し、マネージドライフタイムをコールバックチェーン全体に延長します。

Assert.True(ThreadPool.UnsafeQueueNativeOverlapped(nativeOverlapped));
Assert.True(helper.Wait());
GC.KeepAlive(helper);  // prevent finalization before second IOCP callback fires

#126845 Don't use callbacks when performing sync IO with async handles

@Copilot・GitHub・area-System.IOtenet-performance

非同期ファイルハンドル(FILE_FLAG_OVERLAPPED)での同期I/O実行時、RandomAccess.Windows.csのIOCP(I/O Completion Port)コールバック経由のアプローチを廃止。OVERLAPPED構造体のhEvent低位ビットを設定してIOCP完了キューイングを抑制し、シンプルなManualResetEventベースのアプローチに変更。これにより複雑性と割り当てが削減され、エラーハンドリングと例外待機パスの正確性が向上し、同期オーバー非同期パスのハンドル生存期間安全性が強化される。

#126751 Add missing meta-packages and binary-free packages to PackageOverrides.txt

@Copilot・GitHub・area-Setup

PackageOverrides.txtに欠落していたメタパッケージ、RIDセレクタパッケージ、ネイティブのみのパッケージを追加します。このファイルは共有フレームワークのNuGet枝刈りデータを定義します。旧TFM(netcoreapp1.0/1.1、netstandard1.6/2.0)の依存関係グラフに含まれるが、マネージドバイナリを持たないパッケージ27個を新たに登録します。

#126324 [browser][coreCLR] event pipe and browser profiler

@pavelsavara・GitHub・arch-wasmarea-System.Diagnosticsos-browser

このPRは、単一スレッドのブラウザ/WASI環境でのCoreeCLRインタープリタに対して、2つのWASMプロファイリング機能を追加します:

  1. EventPipe CPU サンプリングプロファイラー — dotnet-traceや JS collectCpuSamples APIで利用可能な.nettrace形式のCPUサンプルを生成する協調型シングルスレッドサンプリングプロファイラー
  2. ブラウザDevTools プロファイラー — performance.measure()呼び出しを発行し、ブラウザのパフォーマンスタブでマネージドメソッド実行がネストされたフレームチャートとして表示される

両機能はDOTNET_WasmPerformanceInstrumentationメソッドセットフィルタで選択可能で、既存のWasmPerformanceInstrumentation MSBuildプロパティ(CoreCLR互換構文)を通じて有効化されます。

#123138 arm64: Add support for BFI and BFX instruction

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

ARM64アーキテクチャにおいて、ビット領域の挿入・抽出を効率化するBFI(Bit Field Insert)およびBFX(Bit Field Extract)命令のサポートを追加しました。JITコンパイラの最適化レイヤーで、ビットパッキング・アンパッキングパターンを認識して、これらの専用命令に変換します。

BFI使用例:

return (a & 0xf) | ((b & 0x3) << 4);  // 複数値を整数に詰め込む

BFX使用例:

return (x >> 5) & 0x1F;  // 連続ビット範囲を抽出

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

#129297 cDAC stress build break: match GetObjectStringData's quirky dac behavior

@leculver・GitHub・area-Diagnostics-cdac

cDAC(Compact Data Access Component)の GetObjectStringData 実装をレガシーDAC(ClrDataAccess)の動作と一致させるもの。レガシーDAC では、有効な文字列に対して出力バッファなし(stringData == null または count == 0)で呼び出された場合、必要なバッファサイズを *pNeeded に格納しつつ E_INVALIDARG を返すが、cDAC は S_OK を返していた。cDAC の戻り値を E_INVALIDARG に修正し、HResult パリティアサーションの失敗を防ぐ。

#129287 Fix W3CPropagator baggage parsing after malformed entries

@Kielek・GitHub・area-System.Diagnostics.Tracingcommunity-contribution

W3C Baggage ヘッダーのパース処理を改善し、不正な形式のエントリを検出した場合に解析全体を中止するのではなく、そのエントリをスキップして後続の有効なエントリの処理を続行するようにしました。これにより、部分的に不正な Baggage ヘッダーでも有効なデータを抽出できるようになります。

#129273 Add MaxDepth to CborReader and CborWriter

@bartonjs・GitHub・breaking-changeneeds-breaking-change-doc-createdarea-System.Formats.Cbor

System.Formats.Cborに最大ネスト深度制限機能を追加。新しいCborReaderOptionsとCborWriterOptions型を導入し、CborReader/CborWriterにMaxDepthプロパティと対応するコンストラクタを追加。リーダーのデフォルトは64、ライターのデフォルトは1000(STJと共通)。MaxDepth==0は「深度なし」を意味する(Utf8JsonReader/Utf8JsonWriterと異なり)。

#129269 JIT: stop walking parent try regions across funclet boundaries

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイラのFlowGraphTryRegions::Buildメソッドにおいて、ブロックを親try領域の祖先に追加する際に、funclet境界を超えないようにする修正です。ハンドラー領域に存在するブロックが外側のtryに誤って含まれるのを防ぎ、Wasm制御フロー最適化でのRPOレイアウト生成時のアサーション失敗を解決します。

#129268 JIT: clone "i != arr.Length" loops to eliminate bounds checks

@AndyAyersMS・GitHub・area-CodeGen-coreclr

i != end ループ形式での境界チェック除外を実現するJIT最適化の拡張です。従来、i < end / i > end 形式ではループクローニングにより境界チェックが除外されていましたが、i != end 形式ではこの最適化が機能していませんでした。GT_NE演算子をサポートするよう NaturalLoopIterInfo を拡張し、ループクローニング条件生成ロジックを改善することで、!= ループに対しても効果的な境界チェック除外を実現します。

#129222 Set ARMEL for TIZEN

@clamp03・GitHub・area-Infrastructure

Tizen ARM ターゲットの ARMEL アーキテクチャ識別を修正するPRです。#127578 の変更後、Tizen ARM ホストを正しく識別し CLR_CMAKE_HOST_ARCH を "armel" に設定することで、必要な SOFTFP ビルドオプションが適切に適用され、ランタイム障害が解決されます。

#129205 [Wasm RyuJit]: don't skip top-level catchrets when marking try resumption

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

WebAssembly上のRyuJitにおいて、FlowGraphTryRegions::Buildで最上位のcatchretブロック処理を正しく行うように修正しました。これまでcatchretブロックがtryIndexを持たない場合(外側のcatchなど)、そのcatchretが関連するtry領域をランタイム再開必須としてマークしていませんでした。また、try領域を部分的に含むループのwasm-interval長を拡張し、throw helperを含めるようにし、overflow helper関数の呼び出しで渡される余分な引数の問題も修正しています。

#129092 JIT: Tail-merge don't produce empty blocks

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

JITのtail-merge最適化フェーズで空のブロック(empty blocks)が生成されないようにします。これにより、ダウンストリームフェーズが空のブロックの位置に依存して予期しない性能低下(regressions)が発生する問題を回避します。「optimize control flow」フェーズが先行して空のブロックを削除しているため、tail-mergeでも同様に空のブロックを生成しないことで一貫性を保ちます。

#129017 Align manifest assembly MVID table to 4 bytes in composite R2R images

@jtschuster・GitHub・area-ReadyToRun

Composite Ready-to-Run イメージにおいて、マニフェストアセンブリ MVID テーブルのアラインメントを 1 バイトから 4 バイトに変更し、32-bit ARM での SIGBUS(アラインメント障害)を修正します。CoreCLR ランタイムが MVID テーブルの各エントリを GUID 値として読み込む際に 4 バイトアラインメントが必要ですが、前の ReadOnlyData ノードのサイズによってはテーブルが非 4 バイト境界に配置される可能性がありました。

#128316 Generate TLS alerts on certificate validation failure on macOS

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

macOSのSecureTransportにおいて、証明書検証失敗時にTLS alertフレームを明示的にワイヤー上に送信するよう修正しました。これまではWindows/Linux/Androidと異なり、TCPの接続リセットのみでalertを送信していませんでした。RFC 5246 §7.2 / RFC 8446 §6.2に従い、他のプラットフォームとの動作統一を実現します。

#127844 fix: use Stopwatch for ReflectionEmitCachingMemberAccessor TTL

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

ReflectionEmitCachingMemberAccessor.CacheのTTL(Time To Live)計測ロジックを、DateTime.UtcNow.Ticksから単調増加するStopwatch.GetTimestamp()に変更します。これによりNTPステップなどの壁時計調整による影響を排除し、キャッシュ削除間隔とスライディング有効期限の計算をより堅牢にします。

#127087 [browser][wasm] Fix buffered symbol asset loading

@elringus・GitHub・arch-wasmarea-Build-monocommunity-contributionos-browser

WebAssemblyランタイムのブラウザローダーにおいて、buffer経由で提供されるsymbolsアセットの処理を修正しました。従来はpendingDownloadが事実上必須でしたが、この修正によりbufferでの供給が正常に機能するようになります。同時に、バッファアセットを使用するシナリオの回帰テストを追加しました。

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

#129188 JIT: Fix arm64 shifted-register containment for long compares

@AndyAyersMS・GitHub・area-CodeGen-coreclr

ARM64プラットフォームにおいて、シフト演算を含む比較操作(CMP)の遅延レジスタ含有(containment)ロジックを修正しました。従来は比較命令の親ノードの型(常にTYP_INT)からシフト量の最大値を計算していたため、64ビット比較に含まれる32〜63ビットのシフトが含有できず、シフト命令と比較命令が分離されていました。本修正により、シフトノード自身の型を使用して最大シフト量を決定することで、cmp x0, x1, LSL #55 のような最適化された単一命令への含有が可能になります。

#129178 Disable SystemCoreLibDirectory on ReadyToRun

@BrzVlad・GitHub・area-VM-coreclr

ReadyToRun (R2R) コンポジット モード環境下で SystemCoreLibDirectory テストが失敗する問題を解決するため、このテストを CrossGen2/R2R コンパイルから除外します。テストが System.Private.CoreLib.dll をカスタムパスにコピーして検証する際に、R2R コンポジットイメージを参照するようになり、別の場所へのコピー時にR2Rイメージの読み込みが失敗するためです。

#129163 Disable failing tests on mono

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

System.Text.Jsonのテストスイートにおいて、Monoランタイムで失敗しているテストを[ActiveIssue]属性でスキップするようにしました。このアプローチにより、既知の問題を追跡用のGitHub Issueと紐付けながら、テストの失敗を一時的に無視できます。

#129161 Address runtime async TaskScheduler TODO

@jakobbotsch・GitHub・area-System.Reflectionruntime-async

非デフォルトTaskSchedulerを使用したawait継続パスで不要なメモリアロケーションを削減するリファクタリングです。CoreCLRの非同期継続コードがTaskSchedulerAwaitTaskContinuationインスタンスを割り当てずに直接継続をスケジュール/実行できるようにしながら、既存のインライン実行とキューイングの動作を保持します。

#129157 JIT: Clear out return value references from continuations

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

非同期2(async2)のランタイム非同期変換において、continuation再利用時に戻り値参照をプロアクティブにクリアする変更です。これにより、continuationが再利用される際に結果オブジェクトが意図せず生存し続けることを防ぎます。Async1と同様に、resumption後に待機した呼び出しの戻り値をコピーした後、GC参照をクリアします。

#129144 Clean up in rangecheck

@EgorBo・GitHub・area-CodeGen-coreclr

rangecheck.cppにおける JIT コンパイラのクリーンアップ。Range Check が assertionprop と重複していた定数インデックス処理を削除し、Array の長さ取得ロジックを修正。従来の SSA ベース GetRangeWorker の不正な利用(DoesOverflow 呼び出し欠落)を VN ベース GetRangeFromAssertions に置き換え、正確性を向上させた。

#129098 [WASI][Mono] Enable Mono AOT on WASI in runtime-wasm CI leg

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

Mono AOT on WASIの有効化と、AOT-トリム済みWASIビルドに必要なテストインフラストラクチャの修正。

WASI起動時にAOTイメージから参照されるアセンブリの遅延読み込みを有効化し、コアlib初期化中の再入可能性による起動時中止を回避します。ビルドパイプライン、テストゲーティング、プラットフォーム検出を適応させ、トリム済みWASIテストレグが正常に動作するようにします。

#129054 [cDAC] Remove EnumerateMonitorEventWaitList implementation from DAC and cDAC

@barosiak・GitHub・area-Diagnostics-cdac

EnumerateMonitorEventWaitList APIの実装を、DAC(デバッグアクセスコンポーネント)と cDAC(マネージドDAC)の両方から削除します。基盤となるwaiter-to-thread マッピング(Condition.t_waiterForCurrentThread)がCondition.Wait時にクリアされることで破損していること、および現在このAPIを呼び出すコンシューマーがないことから、E_NOTIMPLを返すように変更します。

#129022 JIT: weight loop body cost by block frequency in cloning heuristic

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT のループクローニング発見的手法を改善し、ループ本体のブロックを実行頻度で重み付けして費用計算を行うように変更しました。これにより、冷たいブロック(実行頻度の低いブロック)がクローニングの判定に過度に影響するのを防ぎ、ホット化可能な小さな GDV チェックを含むループに対してクローニングがより積極的に適用されるようになります。System.Collections.ContainsTrue<Int32>.ImmutableList で約 7% のパフォーマンス回復が見込まれます。

#128943 Opt pooled async methods out of runtime async

@jakobbotsch・GitHub・area-Metaruntime-async

Runtime async生成機能が利用可能になったが、現在のところASP.NETでパフォーマンス低下が報告されているため、プールされた非同期メソッド(PoolingAsyncValueTaskMethodBuilder*)に対してruntime async生成をオプトアウトするメカニズムを導入します。内部属性RuntimeAsyncMethodGenerationを新規定義し、該当するメソッドに[RuntimeAsyncMethodGeneration(false)]を適用して、runtime asyncへの変換を回避します。

#128811 JIT: Fix debug igDataSize assignment to use code size (so exclude gc vars)

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

JITコンパイラのデバッグビルドにおいて、igDataSizeの割り当てを修正するパッチです。igDataSizeは命令記述子(instruction descriptors)の開始アドレスからのサイズを表すべきですが、GC変数を含むIG全体のサイズ(gs)で割り当てられていました。これを正しくコードサイズ(sz)に変更し、デバッグアサーションエラーを解決します。

#128479 Represent managed-return-values as native vars

@jakobbotsch・GitHub・area-CodeGen-coreclr

CoreCLR JIT/VMのデバッグ情報表現を更新し、マネージド呼び出しの戻り値をCALL_INSTRUCTION IPマッピングエントリに依存する従来の方式から、新しいCALL_RETURN_ILNUMセンチネルとcallReturnValueILOffsetフィールドを持つ明示的なICorDebugInfo::NativeVarInfoエントリとして表現するように変更しました。この変更により、デバッグ情報のエンコード/デコード経路も対応が必要となります。

2026年06月09日 (32 PRs)うち Bot 5 件 この日のページ →

#129187 JIT: fix loop cloning condition for decreasing loops with array-length limit

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITのループクローニング条件導出ロジックにおいて、配列長を上限とする減少ループで、ループ初期値(init)ではなく誤ってループ上限(limit)に基づいて境界チェック条件が生成される不具合を修正しました。optDeriveLoopCloningConditionsのHasArrayLengthLimitブランチで、identの上書きを増加ループのみに制限することで、減少ループが正しく初期値ベースの条件を保持するようにしています。

#129151 Redo 128735 with NAOT exclusion

@rcj1・GitHub・area-System.Diagnostics

スタックトレースのフォーマット処理を改善し、MethodImplAttributes.Asyncフラグに基づいてランタイム非同期メソッドを正しく"async"として扱うようにしました。これにより、EDI(Exception Dispatcher Interop)境界マーカーが不適切に付与されるのを防ぎます。NativeAOT上では回帰がないため、そのプラットフォーム上でのテストアサーションをスキップしています。

#129143 Fix return type misclasiffication in TransitionBlock.cs

@janvorli・GitHub・area-crossgen2-coreclr

System V AMD64(x64 Unix)における構造体の戻り値分類ロジックの修正。ComputeReturnValueTreatmentメソッドで、2つのeightbyteがある場合に2番目のeightbyteの分類が誤って1番目の分類を再チェックしていたため、第1eightbyteがSSE分類で第2eightbyteが異なる分類の場合に誤分類が発生していました。この誤分類はGC holeにつながる可能性があります。

#129132 [ci-scan-feedback] Fix push to existing feedback PR on scheduled runs

@kotlarmilos・GitHub・area-Infrastructure

CI Outer-Loop Failure Scanner — Feedbackワークフローはスケジュール実行時にトリガーとなるPull Requestが存在しないため、既存の[ci-scan-feedback]フィードバックPRへのプッシュと更新に失敗していました。本PRは、safe-outputsの設定をtarget: "*"に変更し、スケジュール実行時でも発見された既存PRを対象に操作できるように修正しています。

#129129 Implement X25519 for Android

@vcsjones・GitHub・area-System.Securityos-androidcryptographic-docs-impact

AndroidプラットフォームでX25519楕円曲線暗号によるDiffie-Hellman鍵交換をサポートするための実装を追加します。Androidのネイティブ実装の特殊性に対応するため、SubjectPublicKeyInfo/PKCS#8形式への鍵のトランスコーディングと、秘密鍵から公開鍵を復元する機能を実装しています。秘密鍵から公開鍵を復元する際は、X25519(9, privateKey)を計算することで実現しています(9はベースポイントのu座標)。

#129125 Pool the dictionary buffer when training a Zstandard dictionary

@alinpahontu2912・GitHub・area-System.Collections

ZstandardDictionary.Trainメソッドが、訓練済み辞書を保持するバッファを毎回新規割り当てしていたのを、ArrayPool<byte>.Sharedからレンタルするように変更しました。これにより、推奨される~100KB(zstd CLI デフォルトは112,640バイト)のサイズでLarge Object Heap(LOH)に着地していた割り当てを削減します。

#129102 [Wasm R2R] Retype integer constant struct returns to the native return type

@lewing・GitHub・area-CodeGen-coreclr

WebAssembly JITにおいて、構造体の戻り値がプリミティブ型にリタイプされる際、整数定数の戻り値の型がネイティブ戻り値型と一致していない問題を修正します。WebAssemblyは型付きのバリュースタックを持つため、型の不一致によりコード生成が失敗していました(例:i64戻り値に対してi32.const 0を生成)。本修正により、System.Runtime.Intrinsics.Vector64<byte>.get_Zeroなどの小さな構造体定数戻りがWebAssembly R2Rコンパイルで正しく動作するようになります。

#129062 [Wasm RyuJit] Match how other targets consume initblk fill values

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly RyuJIT コードジェネレータで GT_STORE_BLK 処理時に、initblk の塗りつぶし値が contained GT_INIT_VAL でラップされている場合の処理を修正しました。genConsumeRegs を経由せず、他のターゲットと同様に明示的にラップ解除した値を消費するようにすることで、非リーフ含有ノードに対する OperIsLeaf アサーション失敗を解決します。

#128991 [ci-scan] Add ci-failure-fix workflow

@kotlarmilos・GitHub・area-skills

CI外側ループの障害対応を自動化する新しいエージェントワークフロー ci-failure-fix を導入し、既存の「テストをミュート/無効化」アプローチを「実際の修正またはオーナーへの引き継ぎ」に置き換えます。スキャナをKBE(Known Build Errors)検出専用に縮小し、新ワークフローで確実な修正PR・ヘルプ要求PR・最終手段としてのコメント送信を3段階で実施します。

#128977 [ci-scan-feedback] Add full-leg failure detection to prevent per-test KBE flood

@Copilot・GitHub・area-Infrastructure

CI外側ループ失敗スキャナーが、レグ全体が落ちている場合(例:arm32 NativeAOTテストすべてがSIGBUSでクラッシュ)にN個の重複したKBE(Known Build Error)を生成する問題に対応しています。レグ単位の障害検出ルールを追加し、80%以上のワークアイテムが失敗した場合は複数の個別テストKBEではなく、1つのレグスコープKBEのみを作成するように改善しました。これにより、KBE生成の氾濫と既存Issueの重複クローズを防ぎます。

#128961 Share ObjectiveCMarshal reference-tracking logic between CoreCLR and NativeAOT

@Copilot・GitHub・area-Diagnostics-coreclr

Objective-C相互運用機能において、CoreCLRとNativeAOTで異なっていた参照追跡メモリの実装を統一するリファクタリング。CoreCLRをConditionalWeakTable<object, ObjcTrackingInformation>モデルに移行し、syncblkのタグ付きメモリストレージを廃止。これにより、両ランタイムで同じ管理CWT(ConditionalWeakTable)ベースの参照追跡実装を共有。

#128913 Fix COM interface method calling wrong method for base/derived classes

@elinor-fung・GitHub・area-Interop-coreclr

COM interop における基底クラスと派生クラスの間での ComMethodTable 共有時に、インターフェース メソッドが異なるターゲット メソッドに解決される場合の不正な動作を修正します。#126002 の変更により、ComMethodTable レイアウト時に派生クラスのオーバーライドが先に確定されると、基底クラスが間違ったメソッドを呼び出す問題が発生していました。

[ComVisible(true)]
public interface IFoo { void DoWork(); }

[ComVisible(true), ComDefaultInterface(typeof(IFoo))]
public class Base : IFoo { public virtual void DoWork() { } }

[ComVisible(true), ComDefaultInterface(typeof(IFoo))]
public class Derived : Base { public override void DoWork() { } }

#128872 [cDAC] GC stress verification framework + pipeline integration

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

cDAC(CoreClr Data Access Component)のGCストレス検証フレームワークを追加します。このフレームワークは、cDACのスタック参照列挙をランタイムのGCルート報告と比較し、すべてのストレスポイントで検証します。ネイティブ比較器がメモリアロケーション時点でmscordaccore_universalをインプロセスロードし、cDACと実行時の両方に対してスタック参照を列挙させて正規化・照合します。

#128728 Resume after catch for interpreter via native EH

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

インタープリタコードの例外処理後の再開(resume-after-catch)メカニズムを、libunwindに依存した従来の実装からネイティブC++例外処理を使用する方式に変更しました。管理フレーム境界での明示的なフレームスキップ処理を追加し、インタープリタスタックポインタの保存状態を削除することで、WASM実装と同様の統一された例外アンワインド方式を実現します。

#128448 Bump iOS simulator arm64 Helix queue to OSX.26 and centralize iOS-family queues

@matouskozak・GitHub・area-Infrastructureos-iosos-tvosos-maccatalyst

iOS/tvOS シミュレータ、Mac Catalyst、および iOS/tvOS デバイスの Helix キュー参照を eng/pipelines/helix-platforms.yml に集約し、arm64 シミュレータキューを OSX.15.Arm64 から OSX.26.Arm64(Tahoe)にバンプします。iOS ファミリーキューの一元化により、今後のバンプは helix-platforms.yml のみの変更で対応可能になります。

#127743 Allow HostFactoryResolver to listen on arbitrary events

@Youssef1313・GitHub・area-Extensions-Hosting

HostFactoryResolver.ResolveHostFactoryを拡張し、Microsoft.Extensions.Hostingが発行する任意のDiagnosticSourceイベントをリッスンできるようにしました。オプショナルなarbitraryActionsマップを追加することで、既存のHostBuilding/HostBuiltフローに加えて、ツール・テスト用途で追加のイベント監視が可能になります。本変更はランタイム動作への影響はなく、内部クラスの機能拡張です。

#126712 Dispose IAsyncEnumerable enumerators inline during property-based JSON serialization

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

非同期JSON シリアル化中にプロパティベースの IAsyncEnumerable<T> エンumeratorが適切に破棄されていなかった問題を修正します。従来は全オブジェクトのシリアル化完了後に破棄していたため、同じレベルの複数の IAsyncEnumerable<T> プロパティがあると、先行するエumeratorが破棄される前に後続プロパティの列挙が開始され、リソースリーク(EF Coreでの接続漏洩など)が発生していました。本修正により、エumerator完了時にインラインで DisposeAsync() を呼び出し、非同期破棄の場合は待機可能にしています。

// 修正前: BがAのDisposeAsync完了を待たずに列挙開始
// 修正後: AのDisposeAsync完了後、Bが開始
await JsonSerializer.SerializeAsync(stream, new {
    A = dbContext.Products.AsAsyncEnumerable(),
    B = dbContext.Products.AsAsyncEnumerable()
});

#126705 Implement SafeProcessHandle.Open/TryOpen and Process.TryGetProcessById

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

SafeProcessHandle.Open(int processId)およびSafeProcessHandle.TryOpen(int processId, out SafeProcessHandle? handle)、ならびにProcess.TryGetProcessByIdの新しいPublic APIを実装しました。既存プロセスをPIDで開くための方法を提供し、Windows/Unix間のエラーハンドリング一貫性を確保しています。

// SafeProcessHandle による直接的なハンドル取得
SafeProcessHandle handle = SafeProcessHandle.Open(processId);

// TryOpen パターン
if (SafeProcessHandle.TryOpen(processId, out var handle))
{
    // ハンドル使用
}

// Process.TryGetProcessById による Process インスタンス取得
if (Process.TryGetProcessById(processId, out var process))
{
    // プロセス使用
}

#126623 Fix NegotiateAuthentication to surface TargetUnknown status for unknown SPNs

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

NegotiateAuthenticationが未登録のSPN(Service Principal Name)に対して、WindowsおよびUnixの両プラットフォームでGenericFailureではなくTargetUnknownステータスを返すように修正しました。KDC内に存在しないターゲットSPNに対する認証エラーが正しく分類されるようになります。

// 修正後:未登録のSPNに対して正しくTargetUnknownを返す
var client = new NegotiateAuthentication(new NegotiateAuthenticationClientOptions
{
    TargetName = "HTTP/nonexistent-server.example.com"
});
client.GetOutgoingBlob(null, out var statusCode);
// statusCode == NegotiateAuthenticationStatusCode.TargetUnknown

2026年06月08日 (28 PRs)うち Bot 2 件 この日のページ →

#129130 Arm64:[PAC-RET] Use hint-space instruction for stripping return address

@SwapnilGaikwad・GitHub・arch-arm64area-VM-coreclrcommunity-contribution

ARM64プロセッサのPAC-RET(Pointer Authentication Code - Return)機能において、リターンアドレスをストリップする際にヒント空間命令を使用するように変更しました。フレームポインタ(FP)とリンクレジスタ(LR)をアンワインド情報とともに保存することで、LRが上書きされた状態でアンワインドが発生するシナリオに対応しています。

#129124 Add OpenBSD support for ICU library loading

@am11・GitHub・area-System.Globalizationcommunity-contributionos-openbsd

OpenBSDにおけるICUライブラリの読み込みに対応しました。OpenBSDはICUバージョン番号ではなくABIバージョニングをSONAMEで使用するため、バージョン付きライブラリ名の読み込みではなく、バージョンなしのdlopen呼び出しとシンボルバージョニングプローブを使用するよう変更しました。

#129114 [cDAC] Ensure mt created

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Compact Diagnostic Access Component)のRuntimeTypeSystem_1コントラクト実装において、MethodDescから開始するコードパスで_methodTables辞書にアクセスする前に、MethodTableが確実に作成・キャッシュされるように修正しました。これにより、MethodDesc経由で汎用コンテキストやメタデータ関連プロパティをクエリする際のKeyNotFoundExceptionなどのランタイム失敗を防ぎます。

#129109 [cDAC] Fix stale Continuation MT bug

@rcj1・GitHub・area-Diagnostics-cdac

cDAC(Compact Data Access Contract)の RuntimeTypeSystem コントラクトで、Continuation 関連のグローバルポインタ(_continuationMethodTablePointer と _continuationSingletonEEClassPointer)が遅延初期化される問題を修正します。これらのポインタはスタートアップ時には初期化されず、最初の Continuation 作成時に初期化されるため、ライブターゲットの診断時に null 値を読む可能性がありました。本修正により、キャッシュされた値が null の場合、必要に応じて再度ポインタを読み込むようになります。

#129106 [Wasm R2R] Fix unsigned add/sub overflow codegen

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WASM R2R JITコンパイラのgenCodeForBinaryOverflow関数において、符号なし加算・減算(GT_ADD/GT_SUB)のオーバーフロー検出ロジックが誤って符号付きXORベースのアルゴリズムを使用していた問題を修正しました。treeNode->IsUnsigned()フラグを正しく参照し、符号なしオーバーフロー検出を実装します。

#129101 Misc improvements for rangecheck

@EgorBo・GitHub・area-CodeGen-coreclr

Range Check最適化における複数の健全性バグを修正し、より正確な値域推論を実装します。主な改善は、RangeOps::Orの不正な範囲計算の修正、UDIV命令の定数範囲サポート追加、チェック付きバウンドとVN-relop assertionsからのm_isVNNeverNegativeの自動計算、およびO2K_VN_ADD_CNSの範囲推論を安全なrelop(LT/LE)に限定することです。

例:[3..5] | [4..7]は従来[7..7](不正)と計算されていましたが、修正により正しい範囲が計算されます。

#129097 JIT: remove unsound NOT(relop) VN simplification

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT値番号付け(VN)の不正な簡約を修正しました。NOT(relop(x,y))をReverse(relop)(x,y)に書き換える最適化が削除されます。GT_NOTはビット反転演算子であり論理否定ではないため、0/1の結果に対して~vは-1か-2を生成する一方、Reverse(relop)は0か1を生成します。これにより、補数値の下流で使用される算術演算(例:~v3 >= -1)が誤った方向に畳み込まれていました。NOT(NOT(x)) => xの簡約は正しいため保持されます。

#129084 Remove PHASE_MERGE_THROWS

@EgorBo・GitHub・area-CodeGen-coreclr

JIT コンパイラの tail-merge 最適化フェーズを統合しました。スタンドアロンの PHASE_MERGE_THROWS フェーズを削除し、その機能を PHASE_HEAD_TAIL_MERGE に統合することで、コード複雑性を低減しつつ、terminal block(return/throw)の tail-merge 動作を拡張しました。結果として win-x64 でバイナリサイズが 13KB 削減されました。

#129070 Validate HttpVersionPolicy enum values on setters

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

HttpRequestMessage.VersionPolicy と HttpClient.DefaultVersionPolicy のセッターに入力値検証を追加しました。無効な HttpVersionPolicy enum値を早期に検出し、ArgumentException を発生させることで、リクエストパイプライン内部での失敗やsilent mis-behaviorを防止します。

public HttpVersionPolicy VersionPolicy
{
    get => _versionPolicy;
    set
    {
        if ((uint)value > (uint)HttpVersionPolicy.RequestVersionExact)
        {
            throw new ArgumentException(SR.Format(SR.net_invalid_enum, nameof(HttpVersionPolicy)), nameof(value));
        }
        CheckDisposed();
        _versionPolicy = value;
    }
}

#129012 [clr-ios] Fix Vector<T> width and R2R AVX baseline mismatch on x64 iOS/tvOS simulators

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

インタープリタのみの実行モード(フル インタープリタまたはno-JITビルド)において、x64 iOS/tvOSシミュレータ上でVector<T>が256ビットに拡張されてしまう問題を修正しました。インタープリタは128ビットVector<T>のみをサポートしているため、AVX2が利用可能でも128ビットに制限する必要があります。また、Crossgen2が生成するReadyToRun(R2R)コードのベースラインをx86-64-v3からx86-64-v2に変更し、インタープリタとの一致を確保しました。

#128971 Preserve Win32 resources in aggregate executable shims

@Copilot・GitHub・area-NativeAOT-coreclr

NativeAOT集約実行形式(aggregate executable)シム バイナリにおいて、マネージドアセンブリのWin32リソースを保持するサポートを追加します。DumpNativeResourcesMSBuildタスクでPEのWin32リソースを.resファイルに変換し、Windowsシム生成時にこれをリンクして、実行時にリソースの存在を検証するテストを追加しました。

#128957 [r2r] Enable generic cycles detection by default

@BrzVlad・GitHub・area-ReadyToRun

ReadyToRun (R2R) コンパイラにおいて、ジェネリック循環検出をデフォルトで有効化し、GVM(Generic Virtual Method)スキャンの過度な展開を防ぐ変更です。System.Linq.Parallel.Tests のコンパイルオーバーフロー問題を解決するため、ジェネリック循環の可能性があるメソッド/型に対して GVM 依存関係の生成をスキップしてコンパイルの過度な増大を抑制します。

#128848 Track bool-returning and scalar-T-returning HW intrinsics via flags

@Copilot・GitHub・area-CodeGen-coreclr

ハードウェア割り込み(HW intrinsic)の戻り値の型情報を追跡する仕組みを改善しました。従来は複数のコンシューマー(assertionprop、rangecheck、valuenum)が長いID用スイッチでboolまたはscalar Tを返すintrinsicを個別に列挙していましたが、これをintrinsicテーブルのフラグ(HW_Flag_ReturnsBoolean、HW_Flag_ReturnsScalarT)に統一し、HWIntrinsicInfo経由でクエリ可能にしました。

#128832 [ci-scan] Allow feedback workflow to edit shared KBE instructions

@vitek-karas・GitHub・area-Infrastructure

CI失敗スキャンフィードバックワークフロー(ci-failure-scan-feedback)の編集権限を拡張し、メインスキャナープロンプト(ci-failure-scan.md)に加えて、共有KBE作成手順ファイル(.github/workflows/shared/create-kbe.instructions.md)の更新を許可するようにしました。コンパイルされたロックワークフローを再生成し、Safe Outputs設定を同期化しています。

#126348 JIT: Improve codegen for xarch vector byte multiply

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

xarch(x86-64)ベクトル化バイト乗算のJIT コード生成を改善しました。次のベクトルサイズへの拡張が不可能な場合、従来の実装では不効率な分割・拡張・乗算・縮小を2回繰り返していましたが、奇数/偶数バイトアプローチを採用することで約2倍のパフォーマンス向上を実現しています。

#125311 [NativeAOT] Print OOM message before Abort() on Linux

@Copilot・GitHub・area-NativeAOT-coreclr

NativeAOT で Out of Memory 例外により終了する際、Linux 上で診断情報なしに Aborted とのみ出力される問題を修正しました。RuntimeExceptionHelpers.FailFast の最小限フェイルファスト処理で、OOM メッセージを stderr に出力してから Abort() を呼び出すように改善しました。プロセス出力は try/catch {} で保護されているため、二次的なメモリ割り当て失敗時も既存の abort パスに進みます。

修正前: Aborted
修正後: Out of memory.

2026年06月07日 (9 PRs) この日のページ →

#129100 [Wasm R2R] Report tracked GC vars as untracked in GC info

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly JITにおいて、追跡されたGC変数(tracked GC vars)をGC情報では未追跡(untracked)として報告し、適切にゼロ初期化するようにしました。Wasm JITは追跡されたGCスロットのライフタイム情報を出力しないため(noTrackedGCSlotsがtrueの場合)、この修正により、(liveness)追跡されたGC変数の正確な処理を実現しています。

#129081 Remove dead prioritized-wait path from Unix WaitSubsystem

@Copilot・GitHub・area-System.Threading

Unix WaitSubsystem から未使用の優先待機(prioritized wait)パスを削除するコード削減変更です。内部APIから prioritize パラメータを完全に除去し、FIFO(先入れ先出し)の公平な待機方式のみをサポートするように統一しました。公開APIには影響なし。

// Before
public void RegisterWait(int waitedCount, bool prioritize, bool isWaitForAll)
{
    if (prioritize)
        waitedListNodes[i].RegisterPrioritizedWait(waitedObjects[i]!);
    else
        waitedListNodes[i].RegisterWait(waitedObjects[i]!);
}

// After
public void RegisterWait(int waitedCount, bool isWaitForAll)
{
    waitedListNodes[i].RegisterWait(waitedObjects[i]!);
}

#129075 [Wasm R2R] Bypass dynamic LDVIRTFTN helper

@AndyAyersMS・GitHub・area-CodeGen-coreclr

Wasm R2R コンパイルで仮想関数ポインタ検索(ldvirtftn)の処理を修正しました。Wasm は CORINFO_HELP_READYTORUN_VIRTUAL_FUNC_PTR ヘルパーに対応していないため、ReadyToRun 固有の最適化パスをバイパスし、代わりに標準的なランタイム CORINFO_HELP_VIRTUAL_FUNC_PTR ヘルパーを使用するようにルーティングします。

#128997 [WASI][Mono] Upgrade WASI SDK / wasmtime / WASIp2 to 0.2.8 and fix sockets for new wasi-libc

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

Mono WASI ツールチェーンを WASI SDK 33.0、wasmtime 45.0.0、WASIp2 0.2.8 にアップグレードし、wasi-libc の新しいディスクリプタテーブル設計(タグ付き合併からファットポインタ+vtable 設計、遅延 pollable 生成)に対応する変更です。System.Net.Sockets のソケットイベントループを更新し、廃止された Node.js ラン スクリプトを削除し、WASI ハンドラが非対応のテストシナリオをスキップします。

#128788 Add async startup validation for Microsoft.Extensions.Options

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

Microsoft.Extensions.Optionsに非同期スタートアップ検証機能を追加します。新しいIAsyncValidateOptions<T>インターフェースとIAsyncStartupValidatorにより、Host.StartAsync()実行時に非同期検証パイプラインが動作します。既存の同期パス(IOptions<T>.Value、OptionsFactory.Create())は完全に同期のままであり、既存の動作に影響を与えません。

// 非同期検証の例
services.Configure<MyOptions>(configuration)
    .Validate(async (options, ct) => 
    {
        var isValid = await ValidateAsync(options);
        return isValid;
    });

#128735 Skipping EDI in the runtime-async case as well

@rcj1・GitHub・area-System.Diagnostics

スタックトレースの整形処理において、runtime-async メソッドに対して EDI(Exception Dispatcher Indicator)境界を非表示にする変更です。コンパイラ生成の非同期ステートマシンと同様に、runtime-async メソッドでも --- End of stack trace from previous location --- という境界表示をスキップし、スタックトレースの可読性を向上させます。

2026年06月06日 (9 PRs) この日のページ →

#129053 Fix composite R2R token corruption for devirtualized async-variant callees

@jtschuster・GitHub・area-ReadyToRun

Composite ReadyToRunにおいて、ランタイム非同期な仮想メソッドへのdevirtualized呼び出しをawaitするランタイム非同期呼び出し元が、コンパイラ生成の非同期thunkへのトークン解決時にIndexOutOfRangeExceptionまたはトークン破損を引き起こす問題を修正します。devirtualized対象のケースでGetPrimaryMethodDefinition()をGetTypicalMethodDefinition()の前に呼び出すことで、基本となるEcmaMethodとそのModuleを取得し、正しいトークンパスを使用します。

#129007 Enable must-throw for unsupported intrinsics under optimizations

@tannergooding・GitHub・area-CodeGen-coreclr

最適化下での非サポート組み込み関数(intrinsics)に対して must-throw 最適化を有効にします。これにより、例外スロー処理のコールドブロックが統合され、コードサイズの回帰を削減します。最適化されたコードではスタックトレース情報の喪失が既に可能であるため、各スロー処理が一意のカレー関数を持つ必要がなくなります。

#127318 Support open generics in polymorphic serialization in System.Text.Json

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

System.Text.Json の多相シリアライゼーションにおいて、開いた(未検証の)ジェネリック型を [JsonDerivedType] 属性で指定し、実行時に閉じた型に解決する機能を追加しました。リフレクションベースのリゾルバーとソースジェネレーターの両方で、開いたジェネリック派生型を閉じた派生型に統合して登録します。これにより、ジェネリック階層での多相シリアライゼーション対応が改善されます。

サンプルコード:

[JsonDerivedType(typeof(Derived<>), "d")]
public class Base<T> { ... }
public class Derived<T> : Base<T> { ... }

// Base<int>     → Derived<int>
// Base<string>  → Derived<string>

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

#129033 Never attempt to process an RSA 16K key on Android

@vcsjones・GitHub・area-System.Security

AndroidのConscrypt/BoringSSLがRSA 16K (16384ビット)キーを適切に処理できず、BoringSSLのエラーキューをクリアしないため、RSA 16Kキーのインポート時に発生したエラーが他の暗号操作に漏れて不正な例外が発生する問題を修正します。本PRではユニットテストでRSA 16Kキーの処理を回避することで、テスト結果の不安定化を防ぎます。

#129026 SuperPMI: re-apply JitWasmNyiToR2RUnsupported when ignoring stored config

@AndyAyersMS・GitHub・area-CodeGen-coreclr

SuperPMI の asmdiffs-checked-release ビルドで -ignoreStoredConfig を使用する際、WebAssembly JIT 向けの JitWasmNyiToR2RUnsupported=1 設定が失われることで、未実装のオペコード(例:GT_ASYNC_CONTINUATION)に対してアサーション失敗が発生していた問題を修正します。wasm ターゲットの場合に外部から明示的にこのオプションを再適用することで、R2R-unsupported として適切にスキップされるように動作を復元します。

#129005 Simplify TryParseFormatO fractional-seconds handling

@danmoseley・GitHub・area-System.DateTime

DateTimeの"O"形式(ISO 8601ラウンドトリップ)パーサーのテンス秒処理を簡略化しました。7桁の小数秒は常にTimeSpan.TicksPerSecond(10,000,000)と一致するため、浮動小数点の除算・乗算・丸め処理を経由せず、直接tickカウントとしてTryAddTicksに渡すことで、処理を簡素化しかつ精度を保証します。この変更は完全に下位互換性があり(10M個の7桁値すべてで同一の結果を確認)、同時に若干のパフォーマンス向上が得られます。

#128999 [HTTP] httpbin sometimes returns 503

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

httpbin.orgエンドポイントからの一時的な503 ServiceUnavailable応答がテスト失敗を引き起こす問題を修正します。既存の502/504エラーと同様に、503応答をテストで無視する対象として追加することで、リモートサーバーの不安定性に起因するテストの不安定性を低減します。

#128988 Reduce redundant lookup in OrderedDictionary<TKey, TValue>.Remove

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

OrderedDictionary<TKey, TValue>.Remove(KeyValuePair<TKey, TValue>) メソッドにおいて、冗長なルックアップを削除する最適化を実施しました。TryGetValue から取得したインデックスを使用して RemoveAt を呼び出すことで、2回目のルックアップを回避します。また、IDictionary.Add の重複した null チェックも削除しました。

#128967 JIT: Superpmi wasm32 neardiff

@AndyAyersMS・GitHub・area-CodeGen-coreclr

SuperPMI の asm near-diffing パイプラインに WebAssembly (Wasm32) サポートを追加します。CoreDisTools を v1.7.0 に更新して Wasm 逆アセンブリ機能を有効化し、SuperPMI の NearDiffer と CompileResult に Wasm 固有のオフセット・リロケーション処理を実装します。

#128709 [clr-interp] Fix GC liveness reporting stale data for a var, before it is actually set

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

CLRインタプリタのGC生存性レポート(liveness reporting)を修正し、ローカル変数が実際に設定を完了するまで生存状態にならないようにしました。これにより、未初期化のスタック領域が誤ってGCルートとして報告されるのを防ぎます。

修正前:変数の生存性は値を設定する命令の開始位置から開始され、命令実行中でも変数が活きているものとして見なされていました。
修正後:変数の生存性は値を設定する命令の終了位置から開始され、命令完全実行後のみ活きているものとして報告されます。

#128619 Reduce contention in UnwindInfoTable seen during high volume LCG method creation

@eduardo-vp・GitHub・os-windowstenet-performancearea-VM-coreclr

大量のLCG(Lightweight Code Generation)メソッド作成時におけるUnwindInfoTableでのロック競合を削減する最適化です。.NET 10で確認された性能低下(.NET 9比で169%遅化)に対応し、グローバルロックをテーブル単位のロックに変更、ロック取得の条件付き化、バイナリサーチの導入などにより、LCGストレスベンチマーク(300K メソッド)では.NET 10比で44%改善を実現しています。

#127439 JIT: coalesce constant-indexed bounds checks within a block

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT コンパイラに新しい最適化フェーズ optBoundsCheckCoalesce を追加します。このフェーズはアサーション伝播の前に実行され、同じブロック内で同じ長さVNを持つ定数インデックスの境界チェックをマージしています。

例:a[0] + a[1] + a[2] + a[3] では、最初のチェックのインデックスを3に書き換え、残りの3つのチェックを「範囲内」としてマークすることで、アサーション伝播時に削除されるようにします。

#118257 Fix DataContractJsonSerializer not passing ISerializationSurrogateProvider to internal serializer

@Copilot・GitHub・area-Serialization

DataContractJsonSerializerがSetSerializationSurrogateProvider()で設定されたISerializationSurrogateProviderを内部シリアライザーコンテキストに正しく渡していない問題を修正しました。修正により、DataContractJsonSerializerの動作がDataContractSerializerと一貫するようになります。

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

#128963 JIT: fix slow preheader EH bookkeeping in loop cloning

@AndyAyersMS・GitHub・area-CodeGen-coreclr

ループクローニング時に遅延パス(slow-path)プリヘッダーを挿入する際のEH(例外処理)領域ブックキーピングのバグを修正します。ループの字句的末尾と実際の挿入ポイントが異なる場合に、EH領域が不正に縮小されるのを防ぎます。現在のクローニングコードパスでは到達不可能ですが、より一般的なループアンスイッチングのプロトタイプ実装で発生していました。

#128959 JIT: Fix assertion failed 'genActualType(cmp->gtGetOp1()) == genActualType(cmp->gtGetOp2())'

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

JITコンパイラの型チェックアサーション失敗を修正します。異なる型のoperandを比較する場合(例:byref と long)でアサーションが発火していた問題を解決。アサーション条件をimporter.cppの既存検証ロジックに合わせて変更し、より広い範囲の有効なIR構造に対応します。

#128954 Remember the last received HTTP/2 SETTINGS_MAX_CONCURRENT_STREAMS for a given host

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

HTTP/2接続で、サーバーから受信したSETTINGS_MAX_CONCURRENT_STREAMSを同じホストの接続プール単位で記憶し、新規接続時にその値を初期値として使用するようにしました。これにより、サーバーが低いストリーム同時実行数制限を課す場合に、過度なストリーム数を送信して後続の再試行が必要になるシナリオを回避できます。

#128951 JIT: fix profile likelihood and overflow UB in optimizebools

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITのブール値最適化コードにおいて、プロファイル尤度計算とUB(未定義動作)の2つの問題を修正しました。

  • optOptimizeBoolsUpdateTreesでの分岐尤度計算式を修正(正確には(1-p1) * p2_true)
  • GetIntersectionでの符号付きオーバーフロー時のUBを防止
  • 存在しないフラグ参照コメントを更新

#128863 [cDAC] Refactor cDAC test structure: extract reusable harness, organize under tests/

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

cDACのテスト構造を再編成し、ユニットテストと再利用可能なテスト基盤を明確に分離する変更です。テスト基盤(MockMemorySpace、ContractDescriptorBuilder、DumpTestBase、属性フィルタリングなど)を独立したライブラリプロジェクト TestInfrastructure として抽出し、NuGetパッケージとして配布可能にしました。これにより、ダウンストリームプロジェクトがInternalsVisibleToなしで公開APIベースのテストハーネスを活用できます。

#128843 [release/10.0] Configurable EventPipe CPU sampling rate

@steveisok・GitHub・Servicing-approvedarea-Tracing-coreclr

EventPipeの CPU サンプリングレートを設定可能にするバックポート。DOTNET_EventPipeThreadSamplingRate 環境変数で、デフォルトの 1ms から任意のサンプリング間隔(ms単位)にオーバーライドできます。Cosmicが報告した高いオーバーヘッドに対応するため、main からの変更をrelease/10.0にバックポートしました。

#128738 [Diagnostics] In-Proc CrashReport lifecycle

@mdh1418・GitHub・area-Diagnostics-coreclr

AndroidおよびApple mobileプラットフォーム上で、createdumpがヘルパープロセスをフォークできない場合のクラッシュレポート出力を管理する生涯管理機能を追加します。このPRは、クラッシュレポートを境界のある回転ディレクトリに保存し、保持ポリシーを適用することで、アプリのプライベートストレージに無限に蓄積されるのを防ぎます。

#128729 JIT: fix loop cloning type assumptions

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT ループクローニング最適化において、配列参照の型を正確に追跡するように修正しました。従来はすべての配列参照を TYP_REF と仮定していましたが、スタック割り当てされた配列など TYP_I_IMPL や TYP_BYREF として参照される場合に対応します。抽出時に観察された実際の参照型とローカル型を保持し、ループクローニング条件の新しいIRノード生成時に使用することで、型安全性を確保します。

#128579 [release/8.0-staging] [TestOnly] Fix NumberFormatInfoGroupSize test

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

System.GlobalizationのNumberFormatInfoグループサイズテストを修正し、プラットフォーム固有のグローバライゼーションデータの違いに対応するようにしました。本修正は9.0-stagingで発生したテスト失敗の修正をrelease/8.0-stagingにバックポートしたものです(#120546からのバックポート)。

#128533 JIT: Canonicalize '(A & pow2) == pow2' -> '(A & pow2) != 0'

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

JIT最適化として、ビットマスク比較を正規化する変換を追加しました。(A & pow2) == pow2 を (A & pow2) != 0 に、(A & pow2) != pow2 を (A & pow2) == 0 に統一します。右辺が常に0になるこの正規形により、後続の最適化(optimizeBools、分配変換など)がより効果的に機能するようになります。

// 正規化前後の例
static bool Example(int foo)
{
    return ((foo & 4) == 4) || ((foo & 8) == 8);
}
// 正規化後: (foo & 12) != 0 相当に最適化される可能性

#128272 Mark descriptor-preserved members as reflection-visible

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

ILLinkマーキングパイプラインを更新して、XML記述子によって保持されたメンバーをリフレクション可視として扱うようにします。さらに、それらの宣言型もリフレクション可視としてマークし、バリアント型キャストや明示的レイアウトフィールドなど、リフレクション依存のセマンティクスを保持します。

#118616 Explicitly asserting CodeExporter beliefs about specific types of DataContracts

@StephenMolloy・GitHub・area-Serialization

CodeExporter.csにDebug.Assert文を追加し、DataContractの特定のサブタイプについてコードが暗黙的に仮定していた内容を明示的に検証するようにしました。NetFx時代の内部可視コードから外部アセンブリへの移行に伴い、DataContractの内部構造へのアクセスが制限されたため、事前条件の検証を強化するものです。

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

#128948 Skip 32-bit time_t openssl detection on linux-bionic arm

@akoeplinger・GitHub・area-System.Security

Linux bionic arm環境での64ビットtime_t要件チェックを条件付きコンパイルから除外する変更です。#128826の変更によりTARGET_ANDROIDが定義されるようになったため、Android NDK API 24(32ビットtime_tのみ対応)でのビルドエラーが発生していました。linux-bionicはOpenSSL暗号ライブラリを自身でビルドしないため、当該チェックと32ビットtime_tプローブはこのプラットフォームで不要です。TARGET_ANDROIDをガード条件から除外することで、このビルドエラーを解決します。

#128926 [Wasm RyuJit] Enable codegen for wasm funclets by default

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssemblyにおけるJIT コンパイルの機能を有効化するための設定変更です。JitWasmFuncletsのデフォルト値を0から1に変更することで、funclets(例外処理関連のセカンダリエントリポイント)を含むメソッドが、遅延bailoutを経由せずにコード生成されるようになります。先行PR #128736のマージに依存します。

#128924 JIT: remove optCanProp* short-circuit flags

@EgorBo・GitHub・area-CodeGen-coreclr

JIT アサーション伝播における optCanProp* 短絡フラグを削除し、状態追跡を簡略化するとともに、アサーション伝播チェックを常に有効化する変更。これによりコード複雑性を削減し、JitOptRepeat 後の陳腐なアサーションに関連する潜在的な正確性問題を修正します。

#128917 Remove Swift ObjC classes from Apple crypto native shim

@vcsjones・GitHub・area-System.Security

Apple暗号ネイティブシムのSwiftクラスベースの不透明ハンドルをポインタベースのSwift値型に置き換え、複数のコピー読み込み時のObjCクラス重複登録を防止します。また、将来のSwiftバインディングでローカル定義のSwift ObjCクラスメタデータを導入しないよう検証するビルド後スクリプト(verify-no-swift-objc-classes.sh)を追加します。

#128916 Initialize *ppv in comhost DllGetClassObject

@Copilot・GitHub・area-Host

DllGetClassObjectのCOM契約違反を修正するPRです。失敗パス(CLSID未検索、get_com_delegate失敗)でHRESULTを返す際に*ppv出力パラメータが初期化されていない問題を解決します。関数エントリで*ppv = nullptrを初期化し、ppv == nullptrの場合はE_POINTERを返すガード処理を追加しています。

#128903 [cDAC] Pack DataGenerator as analyzer asset in Abstractions nupkg

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

cDAC データ生成器(Microsoft.Diagnostics.DataContractReader.DataGenerator)を Abstractions NuGetパッケージのアナライザーアセットとしてパックし、ダウンストリームコンシューマーが PackageReference 経由で自動的に生成器を取得できるようにします。これまでのリポジトリ内 ProjectReference は不要になります。

#128900 Fix two union serialization defects: nullable case overload merging (#128688) and default(struct union) crash (#128834)

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

System.Text.Jsonのunion型シリアライゼーションの2つの欠陥を修正します:

  1. 値型のFoo(T)とFoo(T?)コンストラクタオーバーロードが混在する場合、メタデータ層がそれらを単一のnullableケースに統合していた問題を、両方のオーバーロードを別々のUnionCaseSpecとして保持するように修正。これによりnew Foo((int)42)が正しくtypeof(int)と判定され、nullableオーバーロードへの正しなディスパッチが実現します。

  2. default(struct union)の状態でのシリアライゼーションが例外をスローしていた問題を修正。JSONnullとして正しくシリアライズされ、ラウンドトリップが成功するようにしました。

#128893 Fix iossimulator build with XCode 26.4

@BrzVlad・GitHub・area-System.Globalizationos-ios

XCode 26.4でClang 21がバンドルされるようになり、新しい警告フラグ(-Wimplicit-int-enum-castと-Wimplicit-void-ptr-cast)が追加されました。これらの警告がビルドエラーとして検出されるため、iOS Simulator向けのネイティブコード(Objective-C/C)に明示的なキャスト処理を追加してビルドエラーを解決しています。

#128884 Ensure fields cannot mangle into same things as methods

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

NativeAOTの名前マングラー(難読化されたアセンブリ向け)において、フィールドとメソッドが同じマングル名に衝突する問題を修正しました。サニタイズされた難読化名(例:"\u0003\u000e" → "__")がフィールドとメソッド間で重複するのを防ぐため、フィールド名の区切り文字を"__"から"__field__"に変更しました。

#128874 Change ValidateDer to iterative evaluation

@bartonjs・GitHub・area-System.Security

DER検証ロジックを再帰的な実装から反復的な実装に変更し、深くネストされたASN.1値によるStackOverflowExceptionを防止します。明示的なスタック/キューを使用した反復走査により、構造化値の検証時に予期しないスタックオーバーフローが発生しなくなります。

#128873 Remove IsCallerSPValid, standardize caller-frame validity on IsCallerContextValid, and finalize ARM AsmOffsets updates

@Copilot・GitHub・area-VM-coreclr

レガシーな例外処理(EH)時代の遺物である IsCallerSPValid フラグを削除し、呼び出し元フレームの妥当性チェックを IsCallerContextValid に統一します。これにより、セマンティクスの乖離を排除し、コード全体で一貫した文脈ベースの妥当性判定を実現します。

#128865 [cDAC] Implement GetManagedStoppedContext for cDAC

@barosiak・GitHub・area-Diagnostics-cdac

cDAC (Common Data Access Component) の DBI レイヤーに GetManagedStoppedContext を実装し、ネイティブ DAC のロジックをマネージド実装に移植しました。また、Thread データディスクリプタに InteropDebuggingHijacked フィールドを追加し、テストとモックインフラストラクチャを拡張しています。

#128864 Move PlatformDocAnalyzer to Analyzers.targets and gate behind EnablePlatformDocAnalyzer

@ericstj・GitHub・area-Infrastructure-libraries

PlatformDocAnalyzerをコンパイルビルド設定の構成スコープの適用範囲を変更するPRです。eng/generators.targetsからeng/Analyzers.targetsへ移動し、EnablePlatformDocAnalyzerプロパティで制御可能にしました。デフォルトではsrc/librariesソースプロジェクトで有効になります。これにより、アナライザーは明示的にオプトインしない限りライブラリプロジェクトに限定されます。

#128829 [cDAC] Implement DacDbi APIs EnumerateClassFields and EnumerateInstantiationFields

@Copilot・GitHub・area-Diagnostics-coreclr

DacDbi APIをEnumerateClassFieldsとEnumerateInstantiationFieldsのコールバックベース実装に置き換え、Edit and Continue (EnC)対応のcDAC IEditAndContinue コントラクトを追加する変更です。フィールド列挙APIをコールバック駆動に変更し、EnC機能向けの新しいランタイムタイプシステムAPIを公開しています。

#128796 [release/10.0] Fix crash on calling COM interface method on a class where a derived class overriding it was created first

@elinor-fung・GitHub・Servicing-approvedarea-Interop-coreclr

.NET 9で導入された遅延的なエントリポイント割り当て(#101580)による回帰を修正します。COM インターフェースを実装する基底クラスと、そのメソッドをオーバーライドする派生クラスが共有の ComMethodTable を持つ場合、派生クラスが先に作成されると、共有の ComMethodTable がレイアウトされる際に基底クラスの仮想テーブル スロットが復元されず、NULL スロット経由のディスパッチでクラッシュしていました。修正により、ComMethodTable のレイアウト時に親の MethodTable チェーンを走査し、基底クラスのスロットを確実に復元します。

#128745 [Browser][coreCLR] Enable EventPipe for CoreCLR

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

このPRはBrowser WASM上のシングルスレッド環境でCoreClrのEventPipeジニスティクスインフラストラクチャを有効にします。EventPipeを使用して、パフォーマンストレーシングとイベントログ機能をBrowser環境で利用できるようにするための実装です。.wasmファイルサイズの増加が予想されます。

#128734 Add SYSTEM_CORELIB_DIRECTORY host property for explicit CoreLib location

@elinor-fung・GitHub・area-Host

SYSTEM_CORELIB_DIRECTORYという新しいホスト向けランタイムプロパティを追加しました。このプロパティにより、ホストはSystem.Private.CoreLib.dllの明示的な配置ディレクトリをランタイムに指定できます。PR #128278でTPA走査フォールバックが削除されたことで、iOSなどのモバイルプラットフォームでcoreclrとSystem.Private.CoreLib.dllが同じ場所に配置されていないシナリオが破損したため、この明示的で オプトインの契約を提供することで解決します。

#128706 Fix async continuation hijacking for x86 NativeAOT

@jakobbotsch・GitHub・area-NativeAOT-coreclr

x86 NativeAOT環境におけるasync継続のhijacking時のGC参照報告の問題を修正。async関数をhijackする際、ECXレジスタの保存・復元は実装されていましたが、そのレジスタがGC参照を含むかどうかを判定するGC情報報告が欠落していました。x86では他プラットフォームと異なり、GC情報をコールサイトで報告する必要があるため、この修正により適切なGC root報告が可能になります。

#128651 [Android] Handle X509ChainContext creation failures

@simonrozsival・GitHub・area-System.Securityos-android

AndroidでX.509チェーン構築時にX509ChainContextの初期化失敗が起因するネイティブアボート問題を修正します。実装エラーにより、管理コードが無効なX509ChainContext*をネイティブメソッドに渡しプロセス終了していましたが、本修正により初期化失敗時に管理側でCryptographicExceptionをスローしフェイルセーフになります。

#128481 Disable Validate.csproj build under Mono FullAOT to fix CS0246

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

AllSubsets_Mono_MiniFullAot_RuntimeTestsビルドレグの破損を修正するPRです。InvalidCSharp.ilprojがMonoAOT非互換でビルドから除外される一方、依存するValidate.csprojが同様にゲートされていなかったため、CS0246エラーが発生していました。Validate.csprojに<MonoAotIncompatible>true</MonoAotIncompatible>を追加し、ビルド時のゲートと既存のランタイム時[ActiveIssue]ゲートを整合させます。

#128423 Use Virtual IPs in R2R format

@davidwrighton・GitHub・area-crossgen2-coreclr

WASMのReadyToRun形式をメモリアドレスベースからバーチャルIP(仮想命令ポインタ)ベースのアドレッシングに変更し、それに対応するR2RDumpの更新を行います。RUNTIME_FUNCTION テーブルのBeginAddressフィールドがバーチャルIPとIsFuncletフラグをエンコードし、テーブル末尾に最小関数テーブルインデックスを追加する形式変更が含まれます。

#128354 Implement GetIlCodeAndSig DacDbi API in cDAC

@Copilot・GitHub・area-Diagnostics-cdac

ネイティブDAC から管理型cDAC へ GetILCodeAndSig DacDbi エントリーポイントを移植します。このAPIは、メソッドのILコード(アドレス/サイズ)とそのローカル変数シグネチャトークンを返します。これまでのE_NOTIMPLフォールバックを、メタデータ/ローダーベースのIL検索とシグネチャトークン抽出で置き換えます。

#128180 Add AssociatedSourceType for conditional unmanaged exports

@Copilot・GitHub・area-NativeAOT-coreclr

UnmanagedCallersOnlyAttributeに新しい公開プロパティAssociatedSourceTypeを追加し、NativeAOTにおいてアンマネージドエクスポートを条件付きで生成できるようにします。これにより、関連ソース型がトリミング時に存続する場合のみネイティブエントリーポイントが保持・エクスポートされます。

[UnmanagedCallersOnly(
    EntryPoint = "MyObjectProxy_MyMethod",
    AssociatedSourceType = typeof(MyObject))]
static void MyMethod(IntPtr handle) { }

2026年06月02日 (42 PRs)うち Bot 7 件 この日のページ →

#128920 Restore E_NOTIMPL fallback in DacDbiInterfaceImpl::GetContext (#128499)

@tommcdon・GitHub・area-Diagnostics-coreclr

マネージドデバッグのスタックウォークをサポートするため、DacDbiInterfaceImpl::GetContextにE_NOTIMPLフォールバックを復元しました。プラットフォームでICorDebugDataTarget::GetThreadContextがE_NOTIMPLを返す場合、スレッドのFrameチェーンを走査してREGDISPLAYからレジスタコンテキストを再構築することで、非Windows環境での管理されたデバッグを有効にします。

#128870 JIT: add profitability heuristic for loop cloning

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT ループクローニングに収益性判定ロジックを追加しました。サイクル削減効果とコード重複コストの比率に基づいて、ループクローニング候補を受け入れるかどうかを決定します。新しい設定値 JitCloneLoopsMinPerCallRatio(デフォルト値:4)でこのヒューリスティックの厳密さを制御できます。

#128868 Serialize VSD DispatchCache unlinking with cache write lock

@Copilot・GitHub・area-VM-coreclr

Collectible Assembly Load Context (ALC)のティアダウン中に、VSD(Virtual Stub Dispatch)のDispatchCacheバケットエントリがInsert/PromoteChainEntryと同時にアンリンクされ、キャッシュの単一ライター仮定に違反することで、自己参照チェーンサイクルが発生してVSD解決がハングするバグを修正します。本変更はアンリンクパスのライター側シリアライゼーションを復元します。

#128855 JIT/x64: Route FMA embedded-rounding fallback through genFmaIntrinsic

@Copilot・GitHub・area-CodeGen-coreclr

AVX-512 FMA intrinsics with embedded-rounding において、non-immediate operand時のジャンプテーブルフォールバック処理がレジスタエイリアシングによるアサーション失敗を引き起こしていた問題を修正。手動で命令を生成していたパスを既存のgenFmaIntrinsicヘルパー関数経由に統一し、適切なオペランドスワッピングと形式選択(132/213/231)を確保することで、ライブソースレジスタの破壊を防止します。

#128846 [cdac] Introduce FlushScope and add TargetState scope

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

cDAC(Compact Diagnostic Access Component)のキャッシュ管理を改善するため、Flush() メソッドを Flush(FlushScope) オーバーロードに置き換え、FlushScope 列挙型を導入しました。FlushScope.All は全キャッシュをクリア(従来動作)、FlushScope.TargetState はターゲット状態キャッシュのみをクリアします。これにより、不変メタデータ(CoreLib の型情報など)をストレステスト中に保持でき、基本割り当てストレステストで 2 倍のパフォーマンス向上を実現しています。

#128845 cDac fixes: StressLog address and exceptions flowing out of NativeAOT

@leculver・GitHub・area-Diagnostics-cdac

cDac(CoreCLR Data Access Component)の2つのバグを修正します:

  1. StressLog アドレス修正: StressLog グローバルポインタが誤ったアドレスをエクスポートしていた問題を、&StressLog::theLog の正しいアドレスに修正
  2. NativeAOT 境界の例外対策: cDac のアンマネージド エントリポイントで例外がキャッチされておらず、NativeAOT コンパイル時にプロセスがハードクラッシュする問題を、try/catch で囲んで HRESULT で返却するように修正

#128840 [ci-scan-feedback] Strengthen do-not-disable detection and cross-pipeline dedup

@Copilot・GitHub・area-Infrastructure

CI Outer-Loop Failure ScannerのプロンプトLet me update to reduce unwanted test-disable PRsと重複するKnown Build Error (KBE)の自動ファイリングを削減します。以下の2つの改善を実施:

  1. メンテナーが問題調査や修正予定を示している場合、test-disable PRの自動作成を抑止
  2. 同一スキャン実行内で異なるパイプライン定義にまたがる同じシグネチャのKBEの重複ファイリングを防止

#128826 Define TARGET_LINUX for Android native builds and preserve Android-specific exclusions

@Copilot・GitHub・area-PAL-coreclr

AndroidのネイティブビルドにおけるLinux定義の一貫性を改善するPRです。マネージド層では既にTargetsLinuxがAndroidに適用されていましたが、ネイティブC/C++コンパイル定義では一貫性がありませんでした。このPRでは、AndroidビルドにおいてTARGET_LINUXを定義し、TARGET_LINUX || TARGET_ANDROIDの重複チェックを簡潔化する一方、Linux固有の機能(NUMA syscalls等)はAndroidから明示的に除外し、既存の動作を保持します。

// 変更前
#if defined(TARGET_LINUX) || defined(TARGET_ANDROID)

// 変更後
#if defined(TARGET_LINUX)
// Android固有の除外は保持
#if defined(TARGET_LINUX) && !defined(TARGET_ANDROID)

#128778 JIT: don't kill FP/SIMD/mask regs across x64 write barriers

@EgorBo・GitHub・area-CodeGen-coreclr

x64 JITのwrite barrier(書き込みバリア)ヘルパー関数において、浮動小数点レジスタ、SIMDレジスタ、マスクレジスタをキルセットから除外し、これらのレジスタがCORINFO_HELP_ASSIGN_REFおよびCORINFO_HELP_CHECKED_ASSIGN_REF呼び出しをまたいで生存可能にするパフォーマンス最適化です。ドキュメント化されたヘルパーABIに一致させ、不要なレジスタスピルを削減します。

#128770 Fix incorrect CoercedConstantValue usage in IsVNIntegralConstant

@Copilot・GitHub・area-CodeGen-coreclr

32ビットターゲットでCoercedConstantValue<ssize_t>がTYP_LONG値を切り詰める問題を修正します。IsVNIntegralConstant関数が定数をint64_tとして読み込むことで、FitsIn<T>チェック前に完全な64ビット値を保持し、任意のTYP_LONG定数が誤ってより小さい整数型に適合すると報告されるのを防ぎます。

// 修正前
ssize_t val = CoercedConstantValue<ssize_t>(vn);

// 修正後
int64_t val = CoercedConstantValue<int64_t>(vn);

#128736 crossgen2: Extract funclets in WasmObjectWriter

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

WasmObjectWriterにfunclet抽出機能を追加し、コンパイル済みメソッドに付属するfuncletを個別のWasm関数として処理できるようにしました。新しいINodeWithFuncletsインターフェースを導入し、ReadyToRunおよびNativeAOTの双方でEHInfoとFrameInfoフィールドに汎用的にアクセス可能にしています。funcletはオブジェクトファイル内に連続的にレイアウトされ、Wasmテーブルに連続して追加されるため、funclet iのインデックスはメソッドMのテーブルインデックス + iで算出できます。

#128731 Fix for 127141 - Remove unneeded spilling around profiler hooks

@dhartglassMSFT・GitHub・area-CodeGen-coreclr

ARM64でのプロファイラーフック(PROF_HOOK)周辺での不要なスピリング(レジスタ退避)を削除する修正です。

ARM64ではq8-q15の下位64ビット(d8-d15)のみがカリー保存レジスタですが、LSRA(Linear Scan Register Allocator)は現在、プロファイラーフック周辺のすべての上位半分保存参照について、上位半分をd8-d15にスピリングしています。

本修正では、PROF_HOOKはq0-q7を破壊しないため、これらのレジスタの上位半分はスピリングが不要であることを明記し、不要なスピリングを排除します。

#128678 Ensure Log2 can actually be imported as intrinsic

@tannergooding・GitHub・area-CodeGen-coreclr

NI_PRIMITIVE_Log2 プリミティブ・インストリンシックの JIT インポーターを修正し、符号付き/符号なし入力の判定を正確に行うようにしました。これまでは非正確な型チェックにより符号なし入力に対してコードが実行されていませんでしたが、正確な型 (JitType2PreciseVarType) を使用することで、符号なし引数の展開を有効化し、符号付き引数に対しても条件付き例外スロー パスを追加します。

Log2 の展開は LeadingZeroCount(value | 1) を用いて 0 -> 0 の契約を満たします。

#128656 Add async validation support for System.ComponentModel.DataAnnotations

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

System.ComponentModel.DataAnnotationsに非同期検証機能を追加するPR。新しいAsyncValidationAttribute抽象基底クラス、IAsyncValidatableObjectインターフェース、および8つの非同期Validatorメソッド(TryValidateObjectAsync、ValidatePropertyAsyncなど)を実装し、データベースアクセスやAPI呼び出しを伴う検証シナリオに対応します。

#128606 Reapply "A few fixes in the threadpool semaphore. Unify Windows/Unix implementation of LIFO policy." (#125193)

@VSadov・GitHub・area-System.Threading

スレッドプール管理のセマフォ実装を統一し、Windows/Unix間の動作差異を解消するパッチの再適用です。前回(#125193)の変更は NuGet restore ベンチマーク回帰により revert されましたが、本PRではその根本原因(WaitOnAddress のスピン時間と優先度ブーストによる Cold スレッドの早期起動、さらには不要な作業キュースキャン)に対する緩和策を導入しています。

#128599 Add IsClosedTypeAttribute

@Copilot・GitHub・area-System.Runtime

C#コンパイラがclosed型宣言に付与するIsClosedTypeAttribute属性を公開する変更です。ユーザーが直接記述することを意図していないため、[EditorBrowsable(Never)]でマークされています。

namespace System.Runtime.CompilerServices
{
    [EditorBrowsable(EditorBrowsableState.Never)]
    [AttributeUsage(AttributeTargets.Class, Inherited = false)]
    public sealed class IsClosedTypeAttribute : Attribute
    {
        public IsClosedTypeAttribute() { }
    }
}

#128513 JIT: add post-inline cleanup for no-return calls

@AndyAyersMS・GitHub・area-CodeGen-coreclr

インライン化後に実行される新しいJITフェーズを追加します。各基本ブロック内の最初のno-return呼び出し(戻らない呼び出し)の後にある不到達ステートメントと制御フローエッジを削除し、ブロックをBBJ_THROWに変換します。これにより、resolve-GDVsフェーズおよび後続のフェーズで、より効果的なクリーンアップが可能になります。

#128408 [clr-ios] Clear stale Apple mobile CoreCLR test exclusions

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

Apple モバイル CoreCLR テスト機能の改善を目的とした、stale なテスト除外・スキップ設定の削除。runtime-extra-platforms ビルド 1429699 の結果に基づき、iOS/tvOS/macCatalyst シミュレーターで実行可能になったテストプロジェクト・テストケースの除外条件を削除し、テストカバレッジを拡大する。また、深い再帰呼び出しを行う DataContractSerializer テストを、明示的に 16MB の大きなスタックを持つワーカースレッド上で実行するよう調整。

#128366 Revert MemoryStream breaking change

@alinpahontu2912・GitHub・area-System.IO

.NET 11で導入されたMemoryStreamの破壊的変更を戻すPRです。最大容量を超えた場合にArgumentOutOfRangeExceptionではなくOutOfMemoryExceptionを発生させるようにします。これにより、容量超過時の例外型が配列割り当て失敗時の標準的な例外と統一されます。

#128147 Arm64: [PAC-RET] VM and coreclr support

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

ARM64プロセッサ上のPointer Authentication Code (PAC-RET) セキュリティ機能に対するVM・CoreCLRのサポート実装。PACはリターンアドレスの改ざん検出によるセキュリティ強化メカニズムで、スタックウォーク、例外処理、スレッド一時停止などの実行時の重要な領域でPACシグネチャ検証と処理に対応する。デフォルトは無効化されており、別のPR #125436で完全な実装が進行中。

#127079 JIT: Fix CEA cloning when enumerator local is reassigned from an untracked source

@EgorBo・GitHub・area-CodeGen-coreclr

JIT条件付き脱出分析(CEA)におけるGDV保護下のenumerator割り当てクローン化時の誤컴파일を修正します。CheckForGuardedAllocationOrCopyが仮想呼び出しなど認識されないソースからのストアを記録していなかったため、複数のdef を持つenumerator localでも不正なクローン化が行われていました。修正により、未追跡ソースからのストアをappearanceとして記録し、複数のdefが存在する場合はクローン化を回避します。

#126769 Fix XmlSerializer consuming sibling elements when deserializing empty XmlElement member

@Copilot・GitHub・area-Serialization

XmlSerializerが空のXmlElementメンバーを逆シリアル化する際に、後続の兄弟要素を誤って消費してしまうバグを修正しました。<Description/>のような自己閉じタグの後の要素が、次のメンバーではなくXmlElementのコンテンツとして読み込まれていました。

public class Root {
    public XmlElement Description { get; set; }
    public string Name { get; set; }
}

// 修正前: Description = <Name>Test</Name>, Name = null
// 修正後: Description = null, Name = "Test"
var obj = serializer.Deserialize(new StringReader(
    @"<Root><Description/><Name>Test</Name></Root>"));

#126630 Enhance type and nullability handling for collection items in schema import

@StephenMolloy・GitHub・area-Serialization

XSD スキーマからコード生成する際に、コレクション項目のNullability情報をスキーマ定義から正確に抽出・キャッシュし、コード生成時に活用することで、より正確なNullability処理を実現するもの。スキーマインポート時に ContractCodeDomInfo.CollectionItemIsNullable にNullability情報を格納し、コード生成パイプラインで従来のヒューリスティクスの代わりにこれを参照する。

2026年06月01日 (35 PRs)うち Bot 3 件 この日のページ →

#128858 [release/8.0-staging] Disable WASI CI

@Copilot・GitHub・Servicing-approvedarch-wasmarea-Infrastructure-monoos-wasi

WASI CI環境におけるライブラリの互換性問題に対応するため、8.0-stagingブランチで WASI関連のCI テストをコメントアウトするバックポート。Ubuntu 26.04のイメージ更新により、wasi-sdk のwasm-ldが動的にリンクするlibxml2.so.2がlibxml2.so.16に名前変更されたことで、既にWASI CI ジョブが破損しているため、これらのテストを一時的に無効化します。

#128856 Stabilize finalization-sensitive tests by preventing helper inlining

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

複数のファイナライゼーション関連テストがJITストレス環境下でCreateAndRelease()ヘルパーがインライン化されることで失敗する問題を解決します。[MethodImpl(MethodImplOptions.NoInlining)]属性を追加してインライン化を明示的に防止し、オブジェクトのライフタイム管理と最終化タイミングを安定させます。

#128854 Fix incorrect result type in PalInterlockedExchange64

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

Unix NativeAOT環境におけるPalInterlockedExchange64マクロの戻り値の型を修正しました。ローカル変数resultをint32_tからint64_tに変更することで、64ビット値が32ビットに切り詰められる問題を解決します。このマクロはイベントトレーシングとYieldProcessorNormalizationで使用されています。

#128842 [ci-scan] Enforce KBE match-count gate; document native-assert array form

@kotlarmilos・GitHub・area-Infrastructure

CI失敗スキャンワークフローに対して、KBE(Known Build Error)を発行する前に<!-- ci-scan-match-count: <N> hits in failure.log -->マーカーの存在と正の値を検証する事前チェックゲートを追加します。これにより、マーカーが欠落している(またはN==0の)不完全なKBEが誤ってファイルされるのを防ぎます。

#128841 [ci-scan] Simplify KPI tracker: counts + CI-outage signals

@kotlarmilos・GitHub・area-Infrastructure

CI失敗スキャンのKPIトラッカー生成ロジック(Step 7)を簡略化し、過度に複雑な統計計算(Wilson信頼区間など)を削除して、運用者が必要とする基本的なカウント指標とCI障害シグナルに特化させました。スキャナー運用開始から30日未満という初期段階の実運用フィードバックに基づいた改善です。

#128837 [ci-scan] Treat maintainer-closed test-disable PRs as do-not-disable signal

@kotlarmilos・GitHub・area-Infrastructure

CI失敗スキャナーの判定ロジック(Step 4.7)を拡張し、メンテナーが最近クローズした未マージの[ci-scan]テスト無効化PRを「無効化禁止」シグナルとして扱うようにしました。同じテストまたはKBEに対して30日以内にメンテナーがクローズしたPRがある場合、新しい証拠(メンテナーコメント等)がない限り、再ファイリングを防止します。

#128836 JIT: Remove a TODO comment

@jakobbotsch・GitHub・area-CodeGen-coreclr

JITのasync変換処理における尾部マージ/再利用チェック(AsyncTransformation::IsReusableSuspension)のTODOコメントを削除し、継続レイアウト等価チェックが必要な具体的な理由を説明するコメントに置き換えました。async/awaitのコード生成時に、異なる制御フローパスでローカル変数の生存期間が異なる場合でも、一部のパスのみでsave操作を実行する必要があるケースを記述しています。

#128820 Guard crypto XML XSLT tests on dynamic code support

@Copilot・GitHub・area-System.Security

tvOS arm64などの動的コード生成非対応プラットフォームでのXSLT関連テスト失敗を解決するPR。XslCompiledTransformが動的コード支援を必要とするため、暗号化検証テストに到達する前にNotSupportedExceptionが発生していた問題を、テストを条件付きで実行することで解決。

[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsReflectionEmitSupported))]

#128819 Wasm spmi collection2

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly向けCoreLibのSuperPMI収集機能を有効化するため、インフラストラクチャを更新したPR。wasm対応のcrossgen2コレクション環境を整備し、正しいホストJITビットとCoreLibディレクトリ構成をセットアップします。

#128814 Avoid redundant boxing in ValueTuple<T1,...,T7,TRest>

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

ValueTuple<T1,...,T7,TRest> のメソッドでパターン変数キャプチャを使用し、冗長なボックス化を排除する変更です。is IValueTupleInternal rest パターンマッチングにより、参照型フィールドを含む ValueTuple<TRest> がキャストされる際のボックス化を回避し、GetHashCode、ToString、ITuple.Length、ITuple インデクサーのヒープアロケーションを削減します。

#128805 JIT: fix x86 GC hole in stack-to-stack struct copies

@EgorBo・GitHub・area-CodeGen-coreclr

x86 JIT(JIT32_GCENCODER)のスタック間struct copyにおけるGC安全性の脆弱性を修正します。スタックターゲットのstruct copyでLowerCopyBlockStoreが無条件にdoCpObj = falseを設定していたため、GC対応でない単純な展開コピー(genCodeForCpBlkUnroll)を使用され、スクラッチレジスタの参照報告がないまま実行されていました。GC発生時にスクラッチレジスタが陳腐化し、それがローカル変数に格納されることで、GCが既に解放済みオブジェクトを指すbyrefと誤認識する問題が発生していました。

修正により、x86はGC対応のCpObjパス(小さいstructはスロット単位の分解、大きいstructはバルク書き込みバリア)に留まります。

#128804 [cDAC] Return false when system assembly is null in ManagedTypeSource_1.TryResolveType

@Copilot・GitHub・area-Diagnostics-cdac

cDAC(Compact Diagnostics and Analytics Contracts)の管理型リソース解決機能を強化し、ManagedTypeSource_1.TryResolveTypeがシステムアセンブリ未初期化時(スタートアップ初期段階や部分的に初期化されたターゲットなど)に例外をスローするのを防ぎます。nullシステムアセンブリを「型解決不可」として扱い、ArgumentNullExceptionの発生を回避します。

TargetPointer systemAssembly = loader.GetSystemAssembly();
if (systemAssembly == TargetPointer.Null)
{
    mdReader = null;
    return false;
}
ModuleHandle moduleHandle = loader.GetModuleHandleFromAssemblyPtr(systemAssembly);

#128784 [cDAC] Implement delegate inspection DacDbi APIs

@Copilot・GitHub・area-Diagnostics-cdac

デリゲート検査用のDacDbi API(GetDelegateFunctionDataとGetDelegateTargetObject)をマネージド cDAC層に実装します。ネイティブ層でGetDelegateTypeを削除し、両APIのシグネチャを簡略化した上での実装です。新しいIObject.GetDelegateInfoコントラクトメンバーとDelegateデータ記述子を追加し、デリゲートの種類(クローズド/オープン/マルチキャスト/ラッパー)に応じた分岐ロジックを実装します。

#128760 [ci-scan] Improve test-disable prompt: ActiveIssue overload and referenced-issue checks

@kotlarmilos・GitHub・area-Infrastructure

CI障害スキャナーワークフローのプロンプトを改善し、以下の3点を強化しました:

  1. Step 4.7で参照されたIssueのbodyと最新5コメントを読み込み、ルートコーズIssue上の「disable不可」シグナルを検出
  2. ActiveIssueの完全な4パラメータオーバーロード (string, TestPlatforms, TargetFrameworkMonikers, TestRuntimes) を文書化し、パラメータの順序入れ替え防止を明示
  3. テスト無効化PR用のプリコンパイル検証チェックリストを追加

#128752 Fix race between zlib Inflate/Deflate and Dispose

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

Inflater/Deflaterの並行処理時のレース条件を修正するPR。Disposeがネイティブzlibの呼び出しと同期されていないため、あるスレッドでInflate/Deflate実行中に別スレッドでDisposeが呼ばれると、z_streamがメモリ解放されてuse-after-freeクラッシュが発生する問題を修正。DangerousAddRef/DangerousReleaseを用いてネイティブ呼び出しをブラケット化し、全てのインフライト呼び出しが完了するまでReleaseHandleの実行を遅延させる。

#128748 Skip preallocation and use sparse-aware extraction for GNU sparse tar entries

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

GNU sparse tar エントリの抽出時に、ディスク領域の無駄な事前割り当てを回避し、スパースファイル対応の抽出を実装しました。GNU sparse エントリは実サイズを報告しますが、アーカイブには圧縮されたペイロードのみを格納しているため、従来の実装では数KBのアーカイブから数GBのディスク領域を無駄に予約していました。本変更により、実装された領域のみを書き込み、ファイルシステムがサポートしている場合はホール(穴)を保持します。

#128740 Enable -fstack-protector-strong unconditionally

@Copilot・GitHub・area-Infrastructure

macOS/MacCatalystで長年使用されていたclang 7.0.2のバグ対応として書かれた-fstack-protectorのハードコード部分を削除し、-fstack-protector-strongを無条件に有効化します。現代的なclangおよびgccコンパイラは全て-fstack-protector-strongをサポートしているため、AppleターゲットをUnixホストの他のターゲットと揃えます。

#128683 JIT: Unify LowerBlockStore for init across targets

@EgorBo・GitHub・area-CodeGen-coreclr

JIT コンパイラの LowerBlockStore の init-block(メモリゼロ初期化)処理を統一し、ターゲット固有の重複コードを削除しました。共有実装 LowerInitBlockStore を導入し、x86 の BlkOpKindRepInstr(rep stos/movs命令)を廃止して、他のターゲットと同じく展開またはメモリセット呼び出しに統一しています。WebAssembly は独立した実装のため除外されています。

#128664 JIT: Preserve async continuation arg across EnC remap

@tommcdon・GitHub・area-Diagnostics-coreclr

Edit-and-Continue (EnC) リマップ時に、非同期メソッドの継続引数がローカルフレーム領域で破棄される問題を修正します。専用のIL番号(ASYNC_CONTINUATION_ILNUM = -4)を割り当てることで、継続引数がNativeVarInfoに出現し、全プラットフォームで保持されるようにしました。この変更に伴い、MAX_ILNUMが-4から-5に変更され、NativeVarInfo エンコーディングのバイアスが調整されました。R2R メジャーバージョンはアップグレードされています。

#128463 [cDAC] Implement DacDbi heap walking

@Copilot・GitHub・area-Diagnostics-cdac

cDACベースのDacDbi実装にGCヒープウォーキング機能を追加するプルリクエストです。ネイティブDACの実装をリファクタリングし、ヒープ破損時にセグメント内を単純にストライドするのではなく、次の有効なセグメントに進むように改善しています。cDAC側には線形キャッシュを備えたヒープウォーキングアルゴリズムを実装し、ネイティブ実装とのパリティを実現しています。

#128281 [Diagnostics] Add in-proc crash report watchdog

@mdh1418・GitHub・area-Diagnostics-coreclr

クラッシュレポート生成が無限に hang するのを防ぐため、in-proc crash reporter にウォッチドッグ機構を追加しました。ウォッチドッグは設定可能なタイムアウト(デフォルト 30 秒)でレポート生成を監視し、タイムアウト時には SIGABRT で プロセスを強制終了します。パイプベースの通知チャネルとデタッチされたウォッチドッグスレッドを使用し、POSIX 互換性と async-signal-safe な実装を確保しています。

#128245 Linux SslStream: custom BIO_METHOD over managed buffer windows

@rzikm・GitHub・area-System.Net.Securitytenet-performance

Linux上のOpenSSL SslStreamメモリBIO実装を、呼び出し元が供給したマネージバッファウィンドウで動作するカスタムBIO_METHODに置き換えることで、TLSレコードのメモリコピーを削減します。すべてのSSL操作(ハンドシェイク、暗号化、復号化)を単一のP/Invokeにラップし、ウィンドウのセットアップ、SSL呼び出し実行、テアダウンを1つのネイティブフレーム内で行います。これにより、BIOステージングのmemcpy削減と、SSL_readがユーザーのMemory<byte>に直接平文を書き込めるようになります。

#128204 [ci-scan] Add missing crossgen2 pipelines to triage workflow

@Copilot・GitHub・area-Infrastructure

CI triage agentic workflowとCI pipeline monitor skillに、日次/週次で実行される3つのcrossgen2パイプライン(definition ID: 134, 136, 141)を追加するもの。これらのパイプラインは最近の失敗ビルドがあるにもかかわらず、ci-failure-scan workflowでトリアージされていませんでした。既存の定義IDリソース(109–160)の範囲内にあるため、JIT/GC/PGO stressスキルによるトリアージが自動的に適用されます。

#128091 JIT: Enable fgOptimizeRelationalComparisonWithCasts for EQ/NE

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

JITコンパイラのfgOptimizeRelationalComparison最適化を拡張し、EQ/NE(等値比較)演算子に対しても型キャスト除去最適化を適用するようにしました。これまでは順序比較演算子(LT, LE, GE, GT)のみが対象でした。

例:(ulong)(a) == uint.MaxValueは、冗長なキャスト変換と64ビット比較ではなく、32ビット比較に最適化されるようになります。

#127461 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2987866

@dotnet-bot・GitHub・area-System.Text.Json

OneLocBuild自動化タスクによるローカライズファイルのチェックインです。System.Runtime.InteropServicesとSystem.Text.Jsonライブラリの生成コード用リソース(.xlfファイル)が、ダウンストリームのローカライズパイプラインから返却された翻訳ソースに基づいて更新されています。

目次