2026年02月のダイジェスト

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

← アーカイブ一覧へ戻る

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

592
PR 数(Total)
419
PR 数(Community)
120
PR 数(AI Agent)
53
PR 数(Bot)
95
ラベルタイプ数
28
更新日数

日別 Pull Request 数

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

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

ラベル別 Pull Request 数の上位10 上位10件の合計455件を100%とした内訳です。各スライスの番号は凡例の番号に対応します。ラベルごとの件数は凡例を参照してください。 1. area-CodeGen-coreclr — 98 PRs (21.5%) 2. community-contribution — 75 PRs (16.5%) 3. Servicing-approved — 66 PRs (14.5%) 4. arch-wasm — 42 PRs (9.2%) 5. area-codeflow — 37 PRs (8.1%) 6. area-Diagnostics-coreclr — 36 PRs (7.9%) 7. area-VM-coreclr — 31 PRs (6.8%) 8. area-Infrastructure — 26 PRs (5.7%) 9. needs-area-label — 24 PRs (5.3%) 10. os-browser — 20 PRs (4.4%)
  1. area-CodeGen-coreclr98 PRs21.5%
  2. community-contribution75 PRs16.5%
  3. Servicing-approved66 PRs14.5%
  4. arch-wasm42 PRs9.2%
  5. area-codeflow37 PRs8.1%
  6. area-Diagnostics-coreclr36 PRs7.9%
  7. area-VM-coreclr31 PRs6.8%
  8. area-Infrastructure26 PRs5.7%
  9. needs-area-label24 PRs5.3%
  10. os-browser20 PRs4.4%
上位10件で全856件中455件(53.2%)を占めます。ラベルは1つの Pull Request に複数付くため、比率は PR 数ではなくラベル付与の延べ数に対するものです。

各 Pull Request の概要

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

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

#125006 MachObjectWriter: Fix calculation of segment file offset and size

@filipnavara・GitHub・area-crossgen2-coreclrcommunity-contribution

Mach-O形式のセグメントヘッダー計算に関するバグを修正しました。セグメントのファイルオフセットが最初のセクションのアラインされたオフセットに設定されておらず、ファイルサイズがローダーコマンドを誤って含めていたため、filesize > vmsizeという不正な状態が発生していました。この修正により、llvm-objdumpやllvm-readobjなどのツールでの検証エラーが解消されます。

#124995 Fix StackOverflowException from deeply nested character class subtractions

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

深くネストされた正規表現の文字クラス減算([a-[b-[c-[...]]]])により、パーサーとRegexCharClassメソッドが再帰呼び出しされることで、キャッチ不可能なStackOverflowExceptionが発生し、プロセスが終了する問題を修正しました。再帰処理を反復処理に変換することで、すべての正規表現モード(None、Compiled、NonBacktracking)に対応しています。

// 修正前:深いネストで StackOverflowException
var pattern = "[a-[b-[c-[d-[e-[...深いネスト...]]]]]]";
var regex = new Regex(pattern); // クラッシュ

// 修正後:安全に動作
var pattern = "[a-[b-[c-[d-[e-[...10000階層まで...]]]]]]";
var regex = new Regex(pattern); // 成功

#124975 Introduce DOTNET_JitReportMetrics

@Copilot・GitHub・area-CodeGen-coreclr

JIT メトリクス報告機能を制御する新しい環境変数 DOTNET_JitReportMetrics を導入しました。従来は DEBUG ビルド時に無条件でメトリクスを報告していましたが、この変更により必要に応じてのみ報告するようになり、不要な JIT-EE 呼び出しのオーバーヘッドを削減できます。SuperPMI は特別扱いで常に報告機能を有効化します。

// 使用例: 環境変数で制御
// DOTNET_JitReportMetrics=1 で有効化
if (JitConfig.JitReportMetrics())
{
    Metrics.report(this);
}

#124944 Delete ArrayEEClass - compute multidim array rank from BaseSize

@Copilot・GitHub・area-VM-coreclr

ArrayEEClass (メタデータクラス) を削除し、多次元配列のランク情報を MethodTable::BaseSize から計算するように変更しました。ArrayClass は単にランクのみを保持していたため、既に BaseSize に エンコードされている情報は冗長でした。この変更により、CoreCLR が NativeAOT と同じアプローチに統一されます。

// ランク計算の例
DWORD boundsSize = GetBaseSize() - ARRAYBASE_BASESIZE;
DWORD rank = boundsSize / (sizeof(DWORD) * 2);

#124933 Add GetSyncBlockData cDAC API

@rcj1・GitHub・area-Diagnostics-coreclr

cDAC(Common Data Access Contract)に GetSyncBlockData API を追加し、SyncBlock情報の診断アクセスを可能にするPull Requestです。SyncBlockはオブジェクトの同期情報を管理する重要なランタイム構造体であり、このAPIを通じてデバッガやプロファイラが同期状態やロック情報を読み取れるようになります。

// ISyncBlock.cs - 新規インターフェース
public interface ISyncBlock : IContract
{
    TargetPointer GetSyncBlock(uint number);
    TargetPointer GetSyncBlockObject(uint number);
    // その他メソッド定義
}

#124878 Adjust how we access thread ID for header thin locks

@jkoritzinsky・GitHub・area-VM-coreclr

Thin Lock実装におけるスレッドID取得の最適化。従来のプリコンパイルされたスレッドID(DWORD tid)ではなく、Thread*ポインタを渡し、スレッドIDが必要なコードパスでのみGetThreadId()を呼び出すように変更。これによりCPUのパイプライン性能向上を目指し、.NET 11の生成アセンブリを.NET 10に近づけることで性能回復を実現。

// 変更前: スレッドIDを事前計算
AcquireHeaderThinLock(GetThread()->GetThreadId());

// 変更後: Thread*ポインタを渡す
AcquireHeaderThinLock(GetThread());
// GetThreadId()は必要なパスでのみ呼び出し

#124830 Fix Directory.Delete(path, recursive: true) failing on directories containing junctions

@Copilot・GitHub・area-ExceptionHandling-coreclr

Windows上でDirectory.Delete(path, recursive: true)を実行する際、NTFSジャンクション(ディレクトリジャンクション)を含むディレクトリ削除が失敗する問題を修正しました。ジャンクションとボリュームマウントポイントが同じリパースタグ(IO_REPARSE_TAG_MOUNT_POINT)を共有していることが原因で、DeleteVolumeMountPointの失敗がジャンクション削除時も発生していました。エラーハンドリングを改善し、RemoveDirectoryが成功する場合はエラーを無視するようにしました。

// 修正前:DeleteVolumeMountPoint失敗がexceptionを汚染してRemoveDirectoryの成功を妨ぐ
// 修正後:エラーを一時変数に段階化し、RemoveDirectoryも失敗した場合のみ昇格
Exception? mountPointException = null;
if (!Interop.Kernel32.DeleteVolumeMountPoint(mountPoint))
    mountPointException = ...; // 一時的に段階化

if (!Interop.Kernel32.RemoveDirectory(dirPath) && exception == null)
    exception = mountPointException ?? Win32Marshal.GetExceptionForWin32Error(errorCode, fileName);

#124798 JIT: Refactor async-to-sync call optimization

@jakobbotsch・GitHub・area-CodeGen-coreclr

JIT コンパイラの非同期呼び出し最適化をリファクタリングしました。新しい getAsyncOtherVariant JIT-EE API を導入して、async/task-returning メソッドの別の非同期バリアントを返せるようにしました。従来の AwaitVirtual トークンを削除し、JIT 側で直接呼び出しの場合に最適化を実装することで、VM とのインターフェースを簡潔化しています。

#124725 Fix operator precedence bug in SystemNative_FSync causing silent fsync errors on macOS SMB shares

@Copilot・GitHub・area-System.IO

macOSのSystemNative_FSync関数に存在するC演算子優先度バグを修正しました。バグによりfcntl(fd, F_FULLFSYNC)のエラーが暗黙に無視され、SMBネットワーク共有上でファイルが破損・切り詰められる問題を解決します。FileStream.Flush(flushToDisk: true)を使用するデータベースやトランザクションログなどに影響します。

// 修正前(バグ): result が boolean値(0または1)を取得
// while ((result = fcntl(fileDescriptor, F_FULLFSYNC) < 0) && errno == EINTR);

// 修正後(正常): result が実際の戻り値(エラー時は-1)を取得
// while ((result = fcntl(fileDescriptor, F_FULLFSYNC)) < 0 && errno == EINTR);

#124670 Move diagnostics out of DownlevelLibraryImportGenerator into a separate analyzer

@Copilot・GitHub・area-CodeGen-coreclr

このPRは、DownlevelLibraryImportGeneratorから診断ロジックを専用アナライザーDownlevelLibraryImportDiagnosticsAnalyzerへ分離する設計変更です。これはPR #123780でLibraryImportGeneratorに対して実施された変更を同じパターンで適用するもので、Roslynの推奨事項に従い、ジェネレータはコード生成に集中し、診断はアナライザが責務を持つアーキテクチャへの移行です。

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

#124962 Fix type formatting in logging source generator test

@svick・GitHub・area-Extensions-Logging

ロギングソースジェネレータのテスト基準値を更新するテスト修正です。先行するPR(#124638と#124589)の関連する変更がテスト実行時に相互に影響を与えたため、生成されたコードの型表示フォーマットを修正し、生成されたシグネチャでglobal::System.Int32の代わりにint C#キーワードを使用するように統一しました。これによりCI失敗を解決しています。

#124960 Enclose keywords in quotes in logging generator messages, to improve translation quality

@svick・GitHub・area-Extensions-Logging

ロギングジェネレータの診断メッセージにおいて、C#キーワード('out'、'partial'、'void'、'static'、'params'、'scoped'、'ref struct'など)をシングルクォートで囲むことで、翻訳品質の向上を目指すPRです。PR #124957のチェコ語翻訳の品質が低かったため、キーワードを明示的にマークすることで機械翻訳エンジンが翻訳対象外として認識しやすくなります。

#124936 Fix copy-paste error in is check for character base64 decoding

@BrennanConroy・GitHub・area-System.Buffers

DecodeWithWhiteSpaceBlockwise メソッド内の型チェック(is演算子)にコピーペーストエラーがありました。UTF-16文字(ushort)のBase64デコーディングパスで、Base64DecoderByteのチェックが残されていたため、常に偽となり、不要な追加処理が発生していました。Base64DecoderCharへの修正により、デコーダが正しく識別され、効率的な処理パスが使用されるようになります。

#124929 [cDAC] Strip collectible tag bit from RangeSectionFragment.Next pointer

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

cDAC(Compiled Data Access Component)の RangeSectionFragment.Next ポインタから collectible タグビット(ビット0)を取得する修正です。ネイティブランタイムはこのビットをフラグとして使用していますが、cDAC が未処理のポインタを読み込んでいたため、スタックウォーク中に misaligned メモリアクセスが発生し、VirtualReadException が起こっていました。修正は単純で、ポインタ読み込み時にビット0をマスクするだけです:

Next = target.ReadPointer(address + (ulong)type.Fields[nameof(Next)].Offset) & ~1ul;

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

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JITコンパイル中の過度なメモリ割り当ての問題を解決するため、Value Number (VN) キャッシング機構とグローバルアサーション伝播の最適化を含む前のコミットを元に戻すリバート変更です。IL サイズベースのシンプルなアサーション数ヒューリスティックに復元され、VN キャッシュの複雑な機構が削除されます。

#124922 [cDAC] Add managed definitions for IXCLRData COM interfaces

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

このPRは、xclrdata.idlとclrdata.idlで定義されているIXCLRDataおよびICLRData COM インターフェースの、マネージド[GeneratedComInterface]定義を追加します。デバッガやDiagnosticツール向けのCOM相互運用性を強化し、ネイティブCOMインターフェースへのマネージドアクセスを実現します。

// IXCLRDataAppDomain などのマネージド定義が追加
[GeneratedComInterface]
internal partial interface IXCLRDataAppDomain : IUnknown
{
    // インターフェース定義
}

#124905 [browser] Webcil alignment

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

Webcilfォーマットの標準化と堅牢性向上を目指すPRです。セクション配置の16バイト境界アライメント、デバッグディレクトリ修正ロジックの改善、ビッグエンディアン環境でのヘッダーパース버그修正、およびAPI命名規約をWebCil*からWebcil*に統一しています。

#124892 Convert verbatim string literals to raw string literals in System.Text.Json tests

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

System.Text.Json テストスイート全体で、@" 型の冗長な文字列リテラルを C# 12 の raw string literals (""") に変換しました。121個のテストファイル中、2,050個の変換を実施。テストコードのみの変更で、JSON等のテストデータの可読性が大幅に向上します。すべての 58,449 テストが合格済み。

Before/After 例:

// Before
string json = @"{""Name"": ""Angela"", ""Manager"": { ""$ref"": ""1"" }}";

// After
string json = """{"Name": "Angela", "Manager": { "$ref": "1" }}""";

#124882 Cleanup flowgraph files

@AndyAyersMS・GitHub・area-CodeGen-coreclr

dotnet/runtimeのJIT(Just-In-Time)コンパイラのフローグラフ関連ファイルに対するコード品質改善PRです。コメントのタイポ修正、型付けミスの修正、到達不可能なコードの削除、変数シャドーイングの解決など、複数の技術的負債を解消しています。機能的な変更ではなく、コード保守性の向上が主目的です。

#124861 Implement AsyncHelpers.TailAwait in the interpreter and use it for instantiating and unboxing stubs on CoreCLR

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

CoreCLRの interpreter において AsyncHelpers.TailAwait intrinsic を実装し、instantiating と unboxing stubs で使用するようにしました。これにより不要な continuation の生成が削減され、NativeAOT と同様の最適化が CoreCLR にも適用されます。

// TailAwait は非同期操作を tail call で実行し、
// 追加の continuation 構造なしで awaiter を処理可能にします

#124856 Fix x509-store for illumos

@gwr・GitHub・area-System.Securitycommunity-contribution

illumos プラットフォームにおいて、X.509 証明書ストアのディレクトリ読み込みでファイル名が 1 文字のみ読み込まれる問題を修正しました。sizeof(d->d_name) の使用を削除し、NAME_MAX または MAXNAMLEN を使用することで、完全なファイル名の読み込みを実現しています。

// illumos では dirent 構造体の d_name フィールドのサイズが固定されておらず、
// sizeof(d->d_name) では正確なバッファサイズが得られない問題がありました
// 修正により NAME_MAX/MAXNAMLEN で適切なバッファサイズを確保

#124780 [cDAC] Fix EEClass validation corner case

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

cDAC(Compact Diagnostics and Analysis Code)におけるEEClass検証の不具合を修正したPull Requestです。SOSデバッガが無効なメモリアドレスをGetMethodTableDataに渡す際、そのアドレスが偶然MethodTableへのポインタを持つため初期検証をパスしてしまう問題を解決しました。修正後は、EEClass全体が読み取り可能で有効であることを確認してから処理を進めるようになります。

#124760 Adding GetHandleEnum and GetHandleEnumForTypes cDAC APIs

@rcj1・GitHub・area-Diagnostics-coreclr

このPRは、cDAC(Common Data Access Component)APIにGetHandleEnumとGetHandleEnumForTypesという2つの新しいAPIを追加するものです。これらのAPIは、.NETランタイムのハンドルテーブルを列挙するための機能を提供し、診断ツールがGCハンドルやCOMラッパーオブジェクトの情報にアクセスできるようになります。

#124685 [Wasm RyuJit] Type Index Relocation Support in Wasm Object Writer

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

WebAssemblyのRyuJIT対応において、型インデックスのリロケーション機構を実装しました。WasmTypeNodeシンボルが型情報を管理し、オブジェクトライタがシグネチャに対してモジュール内でのインデックスを割り当て、WASM_TYPE_INDEX_LEBリロケーションを解決します。現在はテスト用にvoid(int, int)シグネチャ(マネージド静的メソッドの低レベル表現)がハードコードされています。

#124638 Logging source generator: support generic methods (lift SYSLIB1011)

@Copilot・GitHub・area-Extensions-Logging

LoggerMessage ソースジェネレータが汎用ログメソッドをサポートするようになりました。従来は SYSLIB1011 エラーで拒否されていた汎用メソッドが生成可能に。allows ref struct 制約(C# 13)を持つメソッドのみ SYSLIB1011 が発生します。ボックス化を避けた高性能なログ出力が実現可能です。

// 従来: SYSLIB1011エラー。現在: 動作可能(TCodeはボックス化されない)
[LoggerMessage(0, LogLevel.Trace, "Received {Code} ({Length} bytes)")]
public static partial void PacketReceived<TCode>(ILogger logger, TCode code, int length)
    where TCode : struct, Enum;

#124603 [API] RuntimeFeature.IsMultithreadingSupported

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

新しいパブリックAPI RuntimeFeature.IsMultithreadingSupported を追加し、ランタイムがマルチスレッド機能をサポートしているかを実行時に判定できるようにしました。これにより、シングルスレッド環境(WebAssemblyなど)での条件分岐が容易になります。

if (RuntimeFeature.IsMultithreadingSupported)
{
    // マルチスレッド処理
}
else
{
    // シングルスレッド処理
}

#124409 Vectorize Adler32

@stephentoub・GitHub・area-System.IO.Hashing

Adler32ハッシュアルゴリズムの実装をSIMD命令を使用してベクトル化し、パフォーマンスを大幅に向上させました。大量のデータに対するハッシュ計算が高速化されます。

// 従来: スカラー計算による逐次処理
// 新版: SIMD命令による並列化

#124396 Backport XML documentation for WebProxy and IWebProxyScript

@Copilot・GitHub・area-System.Net

System.Net.WebProxyとIWebProxyScriptに対する包括的なXML documentation(IntelliSense対応のドキュメント)をbackportしました。dotnet-api-docsから移植され、11個のコンストラクタ、6つのプロパティ、3つのメソッドをカバーしています。.NET Framework固有の内容や実装詳細を除外した実用的なドキュメント整備です。

#123952 Enable runtime-async feature switch for NativeAOT System.Private.CoreLib

@Copilot・GitHub・area-NativeAOT-coreclrruntime-async

NativeAOT対応のSystem.Private.CoreLibでruntime-asyncコンパイラ機能を有効化しました。この機能により、async メソッドがコンパイラ生成のステートマシンではなくランタイムのネイティブ非同期サポートを使用するよう変換され、パフォーマンスが向上します。Preview機能の使用警告(CA2252)はプロジェクトレベルで抑制しています。

// runtime-asyncが有効になると、async メソッドは以下のように変換される
public async Task MyAsyncMethod()
{
    await SomeOperation();
}
// → コンパイラがAsyncHelpers.Awaitを注入してランタイムネイティブ非同期に変換

#123830 Change Interpreter to share code with the JIT and use its CompAllocator

@davidwrighton・GitHub・area-CodeGen-coreclr

InterpreterがJITと共有コードを使用するため、JITのCompAllocatorを採用しました。これにより、メモリ割り当てを効率的に管理し、割り当てコストをカテゴリ化・計測できるようになります。新しいjitsharedディレクトリを作成し、InterpreterとJIT間のコード重複を削減します。環境変数DOTNET_JitMemStats=1で統計情報サマリーを、=2でメソッド別データを取得できます。

#123026 Improve System.Reflection.Context.Tests code coverage from ~35% to 87%

@Copilot・GitHub・area-System.Reflection

System.Reflection.Context.Tests のコードカバレッジを約35%から87%に大幅に向上させるPRです。新たに21個のテストファイルを追加し、649個のテストすべてが合格しています。テスト内容は、カスタムタイプ、メソッド、コンストラクタ、イベント、プロパティ、フィールド、パラメータ、モジュール、アセンブリなど、反射コンテキスト機能の各要素を網羅的にテストしています。

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

#124884 Delete unnecessary test

@MichalStrehovsky・GitHub・area-TypeSystem-coreclr

重複するTypeDefを持つモジュール読み込みをテストするために設計されたテストケース(test5.il/test5.ilproj)を削除するPRです。このテストは、PEファイルの二進後処理(.cptファイルを使用した修正)を必要としていますが、そのセットアップがリポジトリに含まれていないため、実際にはテストシナリオが機能していませんでした。削除対象のテストは本質的に不完全で、その目的を達成していません。

#124881 Handle single-node branches in ExtractCommonPrefixNode

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

正規表現の最適化において、先行する大文字小文字を区別しないプリフィックス抽出後に分岐が単一ノードに縮小される場合、ExtractCommonPrefixNodeが処理を停止していた問題を修正しました。例えば(http|https)というパターンでhttpではなくhttのみが抽出されていた不具合を解決しています。修正により、Concatenationと単一ノード両方の分岐を適切に処理し、共通プリフィックスを完全に抽出できるようになりました。

// 修正前: (http|https) IgnoreCase => "htt"を抽出
// 修正後: (http|https) IgnoreCase => "http"を抽出

#124875 Fix GC handle dac bug

@rcj1・GitHub・area-GC-coreclr

複数のヒープが存在する場合のGCハンドル列挙の完全性を確保するバグ修正です。DAC(Debugging Access Component)がマルチヒープ環境でGCハンドルを正しく列挙できていなかった問題を解決します。これにより、デバッガやダンプ解析ツールが複数ヒープを持つシステムで正確なGCハンドル情報を取得できるようになります。

#124867 [release/9.0] Disable ResolveLinkTarget_Succeeds returnFinalTarget=true for UNC paths

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

Windows で UNC アクセスが無効化されている環境で ResolveLinkTarget_Succeeds テストが失敗する問題を修正します。returnFinalTarget=true の場合に UNC パスの実際の解決を試みることが原因で、テストが IOException: The specified network name is no longer available で失敗していました。本変更はテストデータ生成ロジックを修正し、UNC パスに対しては returnFinalTarget=false のみを適用することで問題を回避します。

#124865 Sve2 Scatters need a temp register for indices

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

SVE2のscatter命令(非時間順序版)において、インデックスベースの形式でシフト済みオフセット値を保持するための一時レジスタが不足していた問題を修正しました。SVE1では3つのscatter形式(アドレスベクトル、単一アドレス+インデックスベクトル、単一アドレス+バイトオフセットベクトル)がサポートされていますが、SVE2のインデックス版はオフセットをシフトしてから命令を呼び出す必要があるため、このシフト値を保持する一時レジスタを確保するようにしました。

#124853 [browser][CoreCLR] lazy and satelite assemblies

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

WebAssembly(WASM)ブラウザ環境におけるアセンブリのレイジーロード機能とサテライトアセンブリ対応を追加するPull Requestです。アセンブリの遅延読み込みにより、初期ロード時間の短縮とメモリ使用量の最適化を実現します。Issue #120226に関連した実装で、TypeScript/JavaScriptの相互運用層を中心に変更されています。

#124849 Disable FileSystemWatcher_SymbolicLink_TargetsDirectory_Create_IncludeSubdirectories

@Copilot・GitHub・area-System.IO

macOS環境でReadyToRun(crossgen2)コンパイル時に継続的に失敗していたFileSystemWatcher_SymbolicLink_TargetsDirectory_Create_IncludeSubdirectoriesテストを無効化しました。このテストはシンボリックリンク経由のディレクトリ監視でファイルシステム変更イベントの監視に関するもので、ReadyToRunコンパイル時にのみ問題が発生するため、該当条件下でのみスキップするように修正されています。

#124817 Implement ISOSDacInterface::GetThreadAllocData in cDAC SOSDacImpl

@Copilot・GitHub・area-System.Threading

cDAC(Compact Data Access Components)ベースの SOSDacImpl に ISOSDacInterface::GetThreadAllocData を実装しました。スレッド単位の GC アロケーションバイト数カウンター(AllocBytes と AllocBytesLoh)を gc_alloc_context から公開し、診断ツールがメモリ割り当て情報を取得できるようにします。

// ThreadAllocData レコード(新規)
public record ThreadAllocData
{
    public ulong AllocBytes { get; set; }
    public ulong AllocBytesLoh { get; set; }
}

#124816 Implement ISOSDacInterface::GetObjectClassName in cDAC SOSDacImpl

@Copilot・GitHub・area-Infrastructure

このPRはcDAC (Compact DAC)でISOSDacInterface::GetObjectClassNameの実装を追加し、レガシーのスタブを置き換えるものです。オブジェクトのMethodTableから型名を取得する機能をcDAC側で実装し、アンロード済みモジュールへの対応や複数のテストケースを含めています。

// 基本的な実装パターン
var methodTableAddress = obj.GetMethodTableAddress();
var typeHandle = runtimeTypeSystem.GetTypeHandle(methodTableAddress);
var typeName = TypeNameBuilder.AppendType(typeHandle, FormatNamespace | FormatFullInst);

#124753 Tar: Only treat reparse points marked as junctions or symlinks as actual tar symlinks

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

Windows上でTar作成時に、シンボリックリンク/ジャンクション以外の再解析ポイント(reparse point)を処理する際の動作を改善。従来は暗号的なエラーメッセージ(LinkTargetがnullのためLinkNameが空文字列エラー)が発生していましたが、本変更により以下の動作に統一:

  • シンボリックリンク/ジャンクション:従来通りtar内で再解析ポイントとして処理
  • AppExecLinkなど特定の再解析ポイント:ファイルオープン失敗時に適切なIOExceptionを発生
  • ファイル重複排除などの他の再解析ポイント:通常ファイルとして含める

#124715 Fix assert in JIT:new() during early initialization

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

JITの独立ビルドにおいて、throwing版のoperator new/deleteは上書きされていますが、nothrow版は上書きされていないため、libstdcのnothrow実装が内部的にthrowing版を呼び出す際、標準ライブラリではなくJITのアサート付きオーバーライド版を呼び出してしまう問題を修正しました。src/coreclr/jit/alloc.cppにnothrow版のoperator new/deleteオーバーライドを追加することで、libstdcがアサート付きの関数を呼び出さないようにしました。

#124664 Eliminate forwarder stubs by reusing method precodes for call counting indirection

@davidwrighton・GitHub・area-VM-coreclr

versioningされた仮想/インターフェースメソッドのコール計数インフラストラクチャから専用のフォワーダースタブを廃止し、メソッド自体の一時エントリポイント(precode)を再利用することで、メモリオーバーヘッドと複雑性を削減しました。vtableスロットはprecodeをリセットして指し、precodeターゲットは呼び出し計数スタブにリダイレクトされます。これにより、vtableスロットが削除可能な呼び出し計数スタブを直接指すことがなくなりながら、フォワーダースタブの割り当てが完全に排除されます。

#124586 Fix memory leak in Assembler::EmitGenericParamConstraints

@tpa95・GitHub・area-ILTools-coreclrcommunity-contribution

Assembler::EmitGenericParamConstraintsメソッドにおいて、ジェネリック型パラメータの制約情報を格納するバッファ(pConstraintsArrとpGPConstraintsArr)のメモリリークを修正しました。外側の配列ポインタのみが削除され、各型パラメータごとの内側のメモリ割り当てがリークしていた問題を解決します。SVACE静的解析ツールにより発見されました。

#124493 Annotate ServiceDescriptor.IsKeyedService for nullability flow and sync ref assembly

@Copilot・GitHub・area-Extensions-DependencyInjection

ServiceDescriptor.IsKeyedServiceプロパティに[MemberNotNullWhen]属性を追加し、静的null可能性分析の精度を向上させました。これにより、IsKeyedServiceがtrueの場合にServiceKeyが非nullであることをコンパイラが認識でき、null許容演算子(!)の使用を不要にします。

if (descriptor.IsKeyedService)
{
    object serviceKey = descriptor.ServiceKey; // null許容警告が発生しなくなる
}

#124441 cDAC - fix ReJIT IsEnabled

@noahfalk・GitHub・area-Diagnostics-coreclr

このPRは、DAC/cDAC環境下でのReJIT有効性検出の問題を修正します。ProfAPI_RejitOnAttach設定をターゲットランタイムにキャッシュし、cDACがデバッガプロセスの環境変数を誤って使用する代わりに、このキャッシュ値を読み込むようにしました。これにより、ReJITManager::IsReJITEnabled()がDAC環境で正確に動作するようになります。

#124296 Cleanup EH / stackwalk interpreter frame handling

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

インタープリター フレーム(InterpreterFrame)から管理コード/ネイティブコードへの遷移処理を、スタックフレームイテレータ内に完全に隠蔽し、例外処理(EH)コードの特殊ハンドリングを削除するリファクタリング。また、インタープリター起動時の遷移フレームを常に使用し、callee saved floating point レジスタを拡張することで、libunwindの使用を削減し、デバッガのシングルステップ実装を簡素化しています。

#124250 [Wasm RyuJit] localloc

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

WebAssembly RyuJIT コンパイラに localloc 命令のサポートを実装しました。スタック上に動的サイズのメモリを確保する機能を追加し、フレームポインタの管理、スタックアライメント(16バイト)、オーバーフロー検出対応を含みます。

#123810 Fix reachable Debug.Assert in StreamPipeReader.AdvanceTo

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

StreamPipeReader.AdvanceTo() メソッドで、異なる PipeReader の SequencePosition を渡した場合に到達可能な Debug.Assert を修正しました。Debug AssertをValidation例外に置き換え、無効な consumedBytes 値をチェックして InvalidOperationException をスローするようにしました。これにより、デバッグビルドでのアサート失敗だけでなく、リリースビルドでの状態破損も防止されます。

// 修正前:デバッグビルドで失敗、リリースビルドで状態破損
PipeReader reader1 = PipeReader.Create(new MemoryStream(new byte[10]));
PipeReader reader2 = PipeReader.Create(new MemoryStream(new byte[1000]));
var result2 = await reader2.ReadAsync();
reader1.AdvanceTo(result2.Buffer.End); // Debug.Assertで失敗または状態破損

// 修正後:すべてのビルドで例外をスロー
reader1.AdvanceTo(result2.Buffer.End); // InvalidOperationException

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

#124862 Fix inverted IsNull check in RangeSectionMap::EnumMemoryRangeSectionMapLevel

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

RangeSectionMap::EnumMemoryRangeSectionMapLevelのテンプレートオーバーロードに存在する論理バグを修正するワンラインの変更です。IsNull()の条件が反転していたため、64ビット環境でレベルL2~L5のメモリ列挙時にNULLエントリを再帰処理し、有効なエントリをスキップしていました。この修正により、DAC(Debug Assist Component)によるメモリダンプ生成時に、正しくすべてのメモリ領域が列挙されるようになります。

#124848 Fix three cDAC managed AMD64/X86 unwinder bugs found by native audit

@Copilot・GitHub・area-Diagnostics-coreclr

cDAC(Compact Diagnostics Access Control)マネージドスタックアンワインダーの3つの正確性バグを修正します。AMD64アンワインダーでは、UWOP_PUSH_MACHFRAMEが誤ってマシンフレームフラグをfalseに設定してRIP/RSPを二重読込みする問題、UWOP_SAVE_NONVOL_FARオペコードの未実装により非volatile レジスタ復元が失敗する問題を修正。X86アンワインダーではデバッグ用のConsole.WriteLineを削除します。

// Bug 1: UWOP_PUSH_MACHFRAME - machineFrame = false → true に修正
case UnwindCode.OpCodes.UWOP_PUSH_MACHFRAME:
{
    machineFrame = true;  // 修正前: false
    // ...
}

// Bug 2: 不足していた UWOP_SAVE_NONVOL_FAR ケースを追加
case UnwindCode.OpCodes.UWOP_SAVE_NONVOL_FAR:
{
    uint frameOffset = GetUnwindCode(unwindInfo, index + 1).FrameOffset;
    frameOffset += (uint)(GetUnwindCode(unwindInfo, index + 2).FrameOffset << 16);
    SetRegister(ref context, unwindOp.OpInfo, _target.ReadPointer(frameBase + frameOffset));
    index += 2;
    break;
}

#124845 [cDAC] Fix AMD64 epilogue unwinder reading register number from wrong byte offset

@Copilot・GitHub・area-Diagnostics-coreclr

AMD64 cDAC アンウインダーの epilogue emulation において、単一バイト pop r64 命令(レジスタ 0–7)のレジスタ番号を誤ったバイトオフセットから読み込んでいたバグを修正しました。pop r64 は単一バイトのオプコード(0x58 + r)であり、レジスタは opcode バイト自体の下位 3 ビットにエンコードされているため、nextByte + 2 から読むと任意の命令列のバイトを読み込み、unwound レジスタコンテキストが破損していました。

// 修正前(誤り — opcode の 2 バイト先を読む)
byte registerNumber = (byte)(ReadByteAt(nextByte + 2) & 0x7);

// 修正後(正 — nextByte から直接読む)
byte registerNumber = (byte)(ReadByteAt(nextByte) & 0x7);

#124831 Fix hijacking on arm32

@MichalStrehovsky・GitHub・area-NativeAOT-coreclrruntime-async

ARM32 のNativeAOT GC hijack パスにおいて、非同期継続を保持するr2レジスタが上書きされるバグを修正しました。RhpWaitForGcを通じてThread*をr3で保持することで、r2の値が保護される前に破壊されるのを防ぎます。

// ARM32 アセンブリレベルの修正
// 修正前: mov r2, r3 が r2 を上書きしていた
// 修正後: RhpWaitForGC が r3 から直接 Thread* を取得

#124820 Delete CORINFO_HELP_ENDCATCH

@jkotas・GitHub・area-CodeGen-coreclr

x86時代の例外処理(EH)レガシー機能であるCORINFO_HELP_ENDCATCH JITヘルパーを削除するクリーンアップPRです。JIT/EEインターフェース、ReadyToRunヘルパーマッピング、およびNativeAOT反射マップから該当機能を完全に削除し、JIT/EEインターフェースバージョンGUIDを更新します。

#124814 Fix premature returns for argument/pointer checks in SOSDacImpl.cs

@Copilot・GitHub・area-VM-coreclr

SOSDacImpl.csの約30個のメソッドで、引数・ポインタ検証チェックをtryブロック前から内部に移動し、早期リターンを例外スローに変更。これにより、catch ブロックのHResult変換と#if DEBUGブロックが確実に実行されるように修正。

// Before —検証がtry/catchをバイパス
if (data == null)
    return HResults.E_INVALIDARG;

// After — 検証がエラーハンドリング の一部に
try
{
    if (data == null)
        throw new ArgumentException();
    // ...
}
catch (Exception ex) { hr = ex.HResult; }

#124813 Fix reachable Debug.Assert in SubReadStream.Read when seeked past end

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

SubReadStream(ZIP非圧縮エントリで使用)では、Seek(offset, SeekOrigin.End)またはPosition = value > Lengthでストリーム終端を超えてシークが可能でしたが、Readメソッドの3つのオーバーロードすべてが_positionInSuperStream <= _endInSuperStreamを前提としており、負の値を計算してDebug.Assert(count >= 0)に到達していました。本修正では、終端を超える位置での読み取り時に0バイトを返すよう改善しています。

ms.Position = 0;
using var readArchive = new ZipArchive(ms, ZipArchiveMode.Read);
using var readStream = readArchive.Entries[0].Open(); // 非圧縮エントリ
readStream.Seek(1, SeekOrigin.End);                   // 終端を超えてシーク
readStream.Read(buffer, 0, buffer.Length);            // ← Debug.Assertが発火していた

#124805 Implement ISOSDacInterface12::GetGlobalAllocationContext in cDAC SOSDacImpl

@Copilot・GitHub・area-Diagnostics-coreclr

このPRは、cDAC(Compact Diagnostics And Contracts)のSOSDacImplにISOSDacInterface12::GetGlobalAllocationContextを実装し、グローバルな割り当てコンテキストへのアクセスを提供します。ネイティブのClrDataAccess::GetGlobalAllocationContextをミラーリングし、GCコントラクト層を通じてg_global_alloc_contextを公開します。

// SOSDacImpl.cs での実装例
public int GetGlobalAllocationContext(out TargetPointer allocPtr, out TargetPointer allocLimit)
{
    try
    {
        _target.Contracts.GC.GetGlobalAllocationContext(out allocPtr, out allocLimit);
        return S_OK;
    }
    catch
    {
        allocPtr = default;
        allocLimit = default;
        return E_FAIL;
    }
}

#124803 Implement ISOSDacInterface::GetRegisterName in cDAC SOSDacImpl

@Copilot・GitHub・area-Diagnostics-coreclr

cDAC(Compact Data Access Contract)のSOSDacImplクラスにGetRegisterNameメソッドを実装しました。レガシーDAC委譲からRuntimeInfoコントラクトベースの実装に移行し、実行時にGetTargetArchitecture()でターゲットアーキテクチャを動的に判定します。X64、X86、ARM、ARM64、LoongArch64、RiscV64の6つのアーキテクチャに対応し、コンパイル時の#ifdefガードが不要になります。

#124796 Add missing GC.KeepAlives to WMIInterop

@EgorBo・GitHub・area-System.Management

System.Management WMIインターオップレイヤーにおけるGCセーフティの問題を修正するPRです。ネイティブコールバックに渡されるIntPtrフィールドを含むオブジェクトが、ガベージコレクションされる可能性があったため、GC.KeepAlive呼び出しを追加してオブジェクトをルート化しました。

#124792 Remove calls to ToArray because string.Join already has overload for ROS<string>.

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

string.Join()メソッドがReadOnlySpan<string>型のオーバーロードに対応していることを活用し、不要な.ToArray()呼び出しを削除してメモリアロケーションを削減する最適化です。Http2Connectionのロギングコード内の2箇所で改善されています。

// 修正前
string.Join(", ", headers.Select(h => h.Key).ToArray())

// 修正後
string.Join(", ", headers.Select(h => h.Key))

#124786 Add CoreCLR runtime build for browser-wasm performance benchmarks

@ilonatommy・GitHub・area-VM-coreclrperf-pipeline

このPRは、browser-wasmのパフォーマンスベンチマークパイプラインにおいて、既存のMono実装に加えてCoresCLRランタイムのビルドとテストサポートを追加するものです。新しいビルドジョブを追加し、パラメータ化することでCoresCLRとMono両方のランタイムでwasmベンチマークを実行できるようになります。

#124783 [cDAC] Fix DebugInfo error codes for methods without debug metadata and add P/Invoke dump tests

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

cDAC(Compact Data Access Component)の GetILAddressMap と GetILOffsetsByAddress メソッドが、デバッグメタデータを持たないメソッド(ILStubs など)に対して正しくないエラーコード(0x80131c49)を返していた問題を修正しました。レガシーDAC と同じ E_FAIL (0x80004005) を返すようにします。また、P/Invoke シナリオ向けの包括的なダンプベースの統合テストとOS対応テストスキップ機能を追加します。

// 修正前:デバッグ情報なしの場合、例外経由の予期しないHResultが返されていた
// 修正後:HasDebugInfo() で明示的にチェック
var hasDebugInfo = debugInfo.HasDebugInfo(pCode);
if (!hasDebugInfo)
{
    throw (int)HResults.E_FAIL;
}
var offsetMappings = debugInfo.GetMethodNativeMap(pCode); // 非null返却

#124765 Fix Arm64: for 124357

@dhartglassMSFT・GitHub・area-CodeGen-coreclr

ARM64 JIT レジスタストレス時に、VectorTableLookup (TBL) 命令で4つの連続レジスタ割り当てに失敗する問題を修正しました。LSRA(Linear Scan Register Allocator)が d31→d0 のラップアラウンド時に、レジスタ使用状況マスク(consecutiveRegsInUseThisLocation)を誤った計算で扱っていたことが原因です。

#124736 Enable case-sensitive LeadingStrings with frequency-based heuristic

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

正規表現エンジンで複数の選択肢プレフィックス(a|b|c|...)を持つパターンに対し、文字頻度ベースのヒューリスティックを導入。高頻度の開始文字にはSearchValues<string>(Teddy/Aho-Corasick)を使用し、低頻度の文字には既存のFixedDistanceSets(IndexOfAny)にフォールバック。regex-reduxで1.81倍高速化、Leipzigテストで3.28倍高速化を実現。ASCII以外のパターンはヒューリスティックを無視し、既存動作を保持。

// 例:パターン "a|b|c" の場合、a, b, c は英語テキストで高頻度なため
// SearchValues (Aho-Corasick) を使用して複数文字列を同時検索
// パターン "T|A|B" の場合、大文字は低頻度なため IndexOfAny を優先

#124684 Fix LoadExactInterfaceMap for sub-interfaces with complex type arguments under special marker parents

@davidwrighton・GitHub・area-TypeSystem-coreclr

特殊なマーカー型(special marker type)を親に持つサブインターフェースで、複雑な型引数(例:IList<T>)を含む正確なインスタンス化がある場合、LoadExactInterfaceMapが誤った処理を行っていた問題を修正しました。pNewIntfMTに対する適格性チェックを正しく実行するようにロジックを分割し、特殊マーカー型の最適化を正確に適用できるようにしました。

#124590 Fix ALPN protocol list size field type and add boundary tests

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

ALPN(Application-Layer Protocol Negotiation)プロトコルリストのサイズフィールド型を short から ushort に修正し、Windows ネイティブ API および RFC 7301 に準拠させました。最大サイズを 32,767 バイトから 65,535 バイトに拡大し、境界値テストを追加して検証ロジックを強化しています。

// 修正前
private short ProtocolListSize; // 最大32,767バイト

// 修正後
private ushort ProtocolListSize; // 最大65,535バイト

#124589 LoggerMessage source generator: preserve ref readonly; forbid params, scoped, and ref struct parameters

@Copilot・GitHub・area-Extensions-Logging

LoggerMessage ソースジェネレータの修正により、ref readonly パラメータ修飾子が生成されたメソッド実装で保持されるようになりました。同時に、params、scoped、およびref struct パラメータについてコンパイル時エラー(SYSLIB1028、SYSLIB1029)を発行し、署名の不一致を防止します。

// ref readonly が保持される
[LoggerMessage(Message = "{p}", Level = LogLevel.Info)]
static partial void Log(ILogger l, ref readonly int p);
// ✓ 生成コード: ref readonly global::System.Int32 p

// params と scoped はコンパイルエラー(SYSLIB1028)
[LoggerMessage(Message = "{args}", Level = LogLevel.Info)]
static partial void Log(ILogger l, params object?[] args);  // ✗ SYSLIB1028

#124588 Mono: increase default stack size on s390x/ppc64le; support DOTNET_Thread_DefaultStackSize for setting stack size.

@tmds・GitHub・area-VM-meta-monocommunity-contribution

Mono ランタイムの s390x および ppc64le アーキテクチャにおいて、デフォルトスタックサイズを 8MB に増加させました。また、DOTNET_Thread_DefaultStackSize 環境変数を新たにサポートし、ユーザーがスタックサイズを動的に制御できるようにしました。これにより、テールコール最適化の未実装による fsharp リポジトリのビルド失敗を解決します。

#124519 Allow box_this pattern on composite r2r

@BrzVlad・GitHub・area-ReadyToRun-coreclr

Composite ReadyToRun (R2R) コンパイルで box_this パターンの最適化を有効にする変更です。値型のメソッドが ref パラメータで渡される場合、制約付き呼び出しが行われます。従来のR2Rではこのパターンはスキップされていましたが、値型とメソッドが同じバージョンバブル内にある場合、安全に最適化できるようになりました。

struct MyStruct { public int Value; }

static string CallToString<T>(ref T val) where T : struct
{
    return val.ToString(); // constrained. T callvirt ToString()
}

var s = new MyStruct { Value = 42 };
Console.WriteLine(CallToString(ref s));

#121906 fix: CreateSubdirectory failing for root directories

@Neo-vortex・GitHub・area-System.IOcommunity-contribution

DirectoryInfo.CreateSubdirectory(path) がルートディレクトリ(例:C:\)に対して呼び出された際に ArgumentException をスローする問題を修正しました。Path.TrimEndingDirectorySeparator がルートパスの末尾セパレーターを保持することが原因で、バウンダリ検証ロジックが誤ったインデックスを参照していました。修正後は、トリム後のパスが依然としてセパレーターで終わる場合(ルートディレクトリケース)に、検証前に明示的にセパレーターを除去するようになります。

#120275 [cDAC] GetCodeHeaderData fork

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

このPRは、cDAC(Common Data Architecture)の診断機能を拡張し、GetCodeHeaderData APIを追加する変更です。GCInfo(ガベージコレクション情報)デコーダーを実装し、x64、ARM64、ARMプラットフォーム上でコードヘッダーデータを取得できるようになります。ランタイム診断とプロファイリングの機能向上が主な目的です。

#117956 Fuzz Json Deserializing

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

JSON逆シリアル化の堅牢性を検証するための新しいファザー Utf8JsonReaderFuzzer を追加しました。このファザーはSpanベースとSequenceベースの Utf8JsonReader インスタンスの動作を比較することで、様々なデータ型とシナリオにおけるJSON読み込み機能を包括的にテストします。OneFuzzインフラストラクチャへのデプロイ設定も含まれています。

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

#124773 Fix native aot outerloop

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

NativeAOT outerloop テストの回帰を修正します。#111514 での変更により System.Diagnostics.Process テストの LongPath ヘルパーアセンブリの処理が破損していました。LongPath プロジェクト参照を ReferenceOutputAssembly=false に設定し、参照ではなくコンテンツとして扱うことで、テスト出力ディレクトリへの適切なコピーを復旧しています。

#124772 [cDAC] Compute MethodDesc size directly to support more heap dump scenarios

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

このPRは、cDAC RuntimeTypeSystemコントラクトにおけるMethodDescのサイズ計算方式を変更しています。従来はランタイムのs_ClassificationSizeTableグローバルテーブルを参照していましたが、ヒープダンプには存在しないため、データディスクリプタから直接サイズを計算するように改修されました。これにより、ヒープダンプシナリオでのデバッグ分析が可能になります。

// 変更前:グローバルテーブル参照
// size = s_ClassificationSizeTable[methodDescType]

// 変更後:データディスクリプタから動的計算
// MethodDescの基本サイズ + AsyncMethodDataスロットサイズ = 合計サイズ

#124767 Fail inner build when running coreclr tests

@jtschuster・GitHub・area-Infrastructure-coreclr

CoreCLR テスト実行時にテストがクラッシュしても MSBuild ビルドが成功してしまい、run.py が前回実行の古い testRun.xml ファイルを読み込んでしまう問題を修正しました。MSBuild の Exec タスクの属性を IgnoreExitCode="true" から ContinueOnError="ErrorAndContinue" に変更することで、すべてのテスト実行を継続させつつビルドは失敗するようにしました。

#124763 [Wasm RyuJit] Crossgen fixes

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly RyuJIT のクロスジェン処理における複数のバグ修正です。ローカル変数の格納時のレイアウト取得の改善、BBJ_COND フロー制御の処理、P/Invoke プロローグの最適化、値番号付けのアサーション修正など、System.Private.Corelib のクロスジェン時に発見された問題を解決しています。

#124709 Strip ARM64 TBI tag byte from addresses before pread on /proc/<pid>/mem

@steveisok・GitHub・area-Diagnostics-coreclr

Android の scudo ヒープアロケータが ARM64 Top-Byte Ignore (TBI) を使用してヒープポインタにタグを付与する際、/proc/<pid>/mem での pread 呼び出しが失敗する問題を修正します。TBI タグ付きアドレスは CPU では無視されますが、カーネルのファイルオフセット処理では適用されないため、pread 実行前にトップバイトをストリップします。

// 修正例:pread 実行前にアドレスの上位バイトをマスク
ulong addressWithoutTbi = address & 0x00FFFFFFFFFFFFFFUL; // ARM64 TBI対応
pread(fd, buffer, size, addressWithoutTbi);

#124682 Add GetStackLimits cDAC API

@barosiak・GitHub・area-Diagnostics-coreclr

cDAC (Common Data Access Contract) API に GetStackLimits メソッドを追加しました。このAPIは、スレッドのスタック上限と下限を取得するための新しいコントラクトです。診断ツールがスレッドのスタック情報にアクセスする際に使用されます。

#124660 Fix debug assert in Uri.CreateThisFromUri when combining UNC base with "file:" relative URI

@Copilot・GitHub・area-System.Net

Uri(Uri, Uri) コンストラクタで UNC ファイル URI ベースと "file:" 相対 URI を組み合わせるとデバッグアサーション失敗が発生していました。根本原因は CreateThisFromUri が Debug_LeftConstructor フラグを含むすべてのフラグをコピーしていたことです。修正として、フラグコピー時に Debug_LeftConstructor フラグを除外します。

// 修正前後の比較
var baseUri = new Uri(@"\\aa", UriKind.Absolute);  // file://aa/
var relUri = new Uri("file:", UriKind.Relative);
_ = new Uri(baseUri, relUri);  // 修正前: Debug.Assert failure → 修正後: 正常動作

#124655 Fix Uri.TryUnescapeDataString throwing instead of returning false with small destination buffers

@Copilot・GitHub・area-System.Net

Uri.TryUnescapeDataStringメソッドが、デスティネーションSpanが入力内の最初の%のインデックスより小さい場合に、ArgumentOutOfRangeExceptionをスロー していた問題を修正しました。修正により、小さいバッファに対して適切にfalseを返すようになります。

// 修正前:ArgumentOutOfRangeExceptionがスロー
Uri.TryUnescapeDataString("aa%", [], out _);

// 修正後:falseを返す
Uri.TryUnescapeDataString("aa%", [], out _); // false

#124649 [r2r] Add helpers for class init

@BrzVlad・GitHub・area-ReadyToRun-coreclr

R2R(Ready-to-Run)コンパイル時にクラス初期化チェックをスキップしていた問題を修正するもの。iOS環境では、チェックをスキップされたメソッド全体がインタプリタ実行され、パフォーマンスが大幅に低下していました。本修正により、R2Rヘルパーを通じてクラス初期化チェック(InitClass/InitInstantiatedClass)を呼び出すようになり、インタプリタ実行回避が可能になります。

public class G<T>
{
    static Type theType;
    static G()
    {
        theType = typeof(T);
    }

    [MethodImpl(MethodImplOptions.NoInlining)]
    public static Type Touch()
    {
        return theType;  // この呼び出しがR2Rで最適化されるようになる
    }
}

#124634 Move Zstandard APIs from System.IO.Compression.Zstandard to System.IO.Compression

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

Zstandard圧縮API(ZstandardStream、ZstandardEncoder、ZstandardDecoderなど)を独立したアセンブリ System.IO.Compression.Zstandard から System.IO.Compression に統合する変更です。マネージコードサイズが小さく、System.IO.Compression.Native への P/Invoke依存が共通のため、分離メリットがなく、将来の循環依存問題を防ぐためです。

#124567 JIT: Convert multi-target switches to branchless checks

@JulieLeeMSFT・GitHub・area-CodeGen-coreclr

このPRはJITコンパイラの最適化で、複数のターゲットを持つswitch文を分岐のない比較チェックに変換します。C#のパターンマッチング(x is A or B or C)の意図に合わせた最適なコード生成を実現します。例えば、Unicode カテゴリの判定で、複数の条件判定をブランチレス命令(setbe)に変換することで、より効率的なアセンブリコードを生成します。

#124564 [cDAC] Add infrastructure to run cDAC tests using CLRMD and dumps

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

cDAC(契約ベースのデータアクセスコンポーネント)の統合テスト基盤を追加しました。DebugeeアプリがFailFastでクラッシュし、生成されたダンプをClrMDで読み込むことで、cDACが実際のランタイムデータ構造を正しく読み取れることを検証します。Thread、RuntimeInfo、GCHeap、StackWalk、RuntimeTypeSystem、Loader、EcmaMetadataなど複数のcDACコントラクトをテストします。

#124537 [release/10.0] PersistedAssemblyBuilder: Fix encoding of custom modifiers. (#123925)

@jkotas・GitHub・Servicing-approvedarea-System.Reflection.Emit

PersistedAssemblyBuilderでカスタム修飾子(modopt/modreq)のエンコーディングに関するバグを修正しました。C#のreadonly refやinキーワードを含むメソッド/フィールドシグネチャの参照を出力する際に失敗していた問題を解決します。.NET 9で導入されたバグで、回避策がない採用ブロッカーです。

#124486 Process Iri_UnicodePlane3_13 test in 0x10000-character chunks

@Copilot・GitHub・area-System.Net

32ビットプラットフォームでのOutOfMemoryException対策として、Iri_UnicodePlane3_13テストをリファクタリング。Unicode平面3~13(0x30000-0xDFFFF、約720K文字)をメモリ効率的に処理するため、0x10000文字(65Kチャンク)ずつ11回に分割して実行。テストカバレッジは変わらず、メモリ使用量を大幅に削減。

#124402 Don't crash when walking callstack roots in the debugger

@leculver・GitHub・area-VM-coreclr

デバッガがコールスタックのルートをウォークする際にクラッシュする回帰を修正するプルリクエストです。前回のchangeset(#1fa1745)で導入されたスタックウォーキング処理の問題を、コンテキストをローカルコピーに指すように修正することで解決します。複数のアーキテクチャ(AMD64、ARM、ARM64、i386、LoongArch64、RISC-V64)で統一的に対応しています。

#124301 Improve exception message for empty assembly loading

@Copilot・GitHub・area-AssemblyLoader-coreclr

空のアセンブリ(0バイト配列またはストリーム)の読み込み時の例外メッセージを改善しました。従来の汎用メッセージ「Bad IL format.」から、より診断的で実用的なメッセージに変更されます。

// 変更前
Assembly.Load(new byte[0]);
// BadImageFormatException: Bad IL format.

// 変更後
Assembly.Load(new byte[0]);
// BadImageFormatException: Assembly image is empty. The stream or byte array must contain a valid PE file.

#124300 Fix NRange.GetOffsetAndLength truncation: cast to nuint instead of uint

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

NRange.GetOffsetAndLengthメソッドの範囲検証バグを修正しました。64ビットプラットフォームでnintパラメータをuintにキャストすると、uint.MaxValueを超える値が切り詰められ、無効な範囲が検証をすり抜けていました。nuintキャストに変更することで、すべてのnint値に対して正しく比較されるようになります。

// 修正前: 64ビットプラットフォームで上位32ビットが切り詰められる
if ((uint)end > (uint)length || (uint)start > (uint)end)

// 修正後: すべてのnint値に対して正しく比較
if ((nuint)end > (nuint)length || (nuint)start > (nuint)end)

#124273 Publish Uri and UriBuilder threat models

@MihaZupan・GitHub・area-System.Net

dotnet/runtimeのSystem.UriとSystem.UriBuilderクラスに対する脅威モデル(Threat Model)とセキュリティ設計ドキュメントを新規追加するPull Requestです。セキュリティレビューと実装設計に関する包括的なドキュメント化で、開発者がURI処理時の潜在的なセキュリティリスクを理解できるようになります。

Bot PRs (1 PRs)

2026年02月23日 (20 PRs) この日のページ →

#124759 JIT: minor cleanups in RBO

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT コンパイラの Redundant Branch Optimization (RBO) フェーズにおける軽微なコード品質改善が行われました。コメントの誤字修正、ドキュメント更新、ブール式の簡略化、重複するビジターコードの統合が含まれています。機能的な変更はありません。

#124758 [browser][CoreCLR] Loading Webcil - JS part

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

ブラウザ/WASM環境でWebcil 1.0フォーマットのアセンブリをロードするためのJavaScript実装を追加します。.wasmラッパーモジュールをインスタンス化し、Webcilペイロードを抽出して16バイト境界にアラインされたメモリに登録します。これにより、CoreCLRはブラウザ上でWebcilフォーマットのアセンブリを直接読み込めるようになります。

// 使用側のイメージ(JavaScript/TypeScript)
const module = await instantiateWebcilModule(wasmPath);
// 内部で以下が実行される:
// 1. getWebcilSize/getWebcilPayload エクスポートで生のWebcilを抽出
// 2. 16バイト境界にアラインされたメモリにコピー
// 3. .dll仮想パスで登録

#124752 Disable localhost subdomain AddressFamily tests on Android

@rzikm・GitHub・area-System.Net

Android プラットフォーム上で localhost サブドメイン解決テスト 2 件が一貫して失敗するため、[ActiveIssue] 属性を使用して Android でのテスト実行を無効化します。RFC 6761 の localhost サブドメイン処理実装により、AddressFamily.InterNetwork や AddressFamily.InterNetworkV6 を指定して "test.localhost" を解決する際、Android の getaddrinfo() が特定のアドレスファミリーでは EAI_NONAME エラーを返すことが原因です。

#124743 [HTTP] Re-disable quic.nginx.org interop test

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

QUIC/HTTP3相互運用性テストにおいて、外部サーバ quic.nginx.org が Helix CI 環境から到達不可能になったため、テスト対象から完全に削除する変更です。2月21日以降、このサーバへの接続がタイムアウト(10秒)し、当該テスト Public_Interop_ExactVersion_BufferContent_Success で100%の失敗率(26失敗、0成功)が継続していました。

#124734 Improve jit-regression-test skill with structured description and stop signals

@lewing・GitHub・area-skills

このPRはCopilot AIスキル「jit-regression-test」の説明文を改善するドキュメント更新です。構造化された記述、明示的なストップシグナル、および統合されたヒントを追加することで、スキルの適切な起動と誤用防止を実現します。評価結果では、Claude Haikuのストップシグナル準拠が2/5から5/5に向上しました。

#124711 More AP-related optimizations

@EgorBo・GitHub・area-CodeGen-coreclr

このPRはJITコンパイラのAssertion Propagation(AP)最適化を強化し、より多くのアサーションを生成可能にします。共変配列ストア後の範囲チェック削除、ゼロ除算チェックの最適化、到達不可能なコード削除など、複数の最適化シナリオに対応し、生成コードサイズを大幅に削減しています。

#124705 Allow range check cloning for BBJ_RETURN blocks

@Copilot・GitHub・area-CodeGen-coreclr

BBJ_RETURN ブロック内の境界チェック(range check)をクローニング対象として許可し、連続した配列/スパンアクセスの冗長な境界チェックを削除する最適化を実装しました。戻り値の式内の複数アクセスで、最後のインデックスのチェックのみが必要になります。

static int ArrayAccess(int[] abcd)
{
    // 最適化前:4つの冗長なチェック
    // 最適化後:abcd[3]のチェックのみ必要
    return abcd[0] + abcd[1] + abcd[2] + abcd[3];
}

#124652 Fix Uri.GetHashCode hash/equality contract violation for file: URIs

@Copilot・GitHub・area-System.Net

Uri.GetHashCode()とEquals()のハッシュ/等価性契約違反を修正しました。UNC派生のファイルURI(IsUncOrDosPath=true)と明示的なfile:/// URI(IsUncOrDosPath=false)が等値として比較される場合でも、異なるハッシュコードが生成されていた問題に対応しています。

var uri1 = new Uri("\\\\\u202a");  // UNC path → file:/// に正規化
var uri2 = new Uri("file:///");    // 明示的なfile URI

Console.WriteLine(uri1 == uri2);        // True(修正前)
Console.WriteLine(uri1.GetHashCode());  // 異なるハッシュ(修正前)
Console.WriteLine(uri2.GetHashCode());  // 異なるハッシュ(修正前)

#124639 Propagate _abortException in Http2Connection.SetupAsync (#119022)

@yykkibbb・GitHub・area-System.Net.Httpcommunity-contribution

HTTP/2接続のセットアップ中にサーバーが切断された際、ObjectDisposedExceptionではなく実際の原因例外(_abortException)を伝播させるように改善しました。これにより、ネットワーク障害やサーバー側の問題など、実際の失敗理由がより適切に報告されるようになります。

// 修正前: 非情報的なObjectDisposedExceptionが発生
// 修正後: catch block で _abortException ?? e を使用
throw new HttpRequestException("...", _abortException ?? e);

#124597 [HTTP] Re-enable PostAsync_Cancel_CancellationTokenPassedToContent test

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

HTTP/2キャンセレーション処理の改善に伴い、PostAsync_Cancel_CancellationTokenPassedToContentテストの無効化属性を削除するPRです。本テストは2021年1月に60秒タイムアウトの間欠的な失敗のため無効化されていましたが、HTTP/2実装の大幅な改書とキャンセレーション処理の改善により、根本的な競合状態は解決されたと考えられます。ローカルで20回の反復実行で問題なく動作することを確認済みです。

#124596 [HTTP] Re-enable GetAsync_UnicodeHostName_SuccessStatusCodeInResponse test

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

.NET runtimeの HTTP クライアント テスト GetAsync_UnicodeHostName_SuccessStatusCodeInResponse が削除されました。このテストは2019年に外部の韓国語ウェブサイト(스타벅스코리아.com)の到達不可により無効化されていましたが、最終的にテスト対象が不安定であるため削除されることになりました。

#124595 [HTTP] Re-enable AuthProxy__ValidCreds_ProxySendsRequestToServer test

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

HTTP/2コネクションプール完全書き直し以降に発生していたAuthProxy__ValidCreds_ProxySendsRequestToServerテストの無効化を解除しました。このテストは2018年10月からHttp2Connection.InvalidateHttp2Connectionのアサーション失敗とコネクションリセットエラーにより無効化されていましたが、HTTP/2実装の刷新により問題が解決されたため復活させます。ローカルで20回の反復テストを実施して安定性を確認済みです。

#124594 [HTTP] Re-enable GetAsync_CancelDuringResponseBodyReceived_Buffered test

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

HTTP クライアントの応答本体受信中のキャンセルテストを再有効化します。このテストは以前、CI 環境での遅延によるタイミング断言の失敗で無効化されていましたが、ValidateClientCancellationAsync でタイムアウト閾値が 30 秒から 60 秒に引き上げられたため、再有効化が可能になりました。

#124592 Add remarks/seealso docs to DI Add*/TryAdd* methods in DependencyInjection.Abstractions

@Copilot・GitHub・documentationarea-Extensions-DependencyInjection

Dependency Injection AbstractionsライブラリのAddSingleton/AddScoped/AddTransientおよびTryAdd*メソッドに対し、複数登録時のセマンティクスとAdd*とTryAdd*のオーバーロード間の関連性を説明するドキュメント(<remarks>と<seealso>タグ)を追加しました。各呼び出しで無条件に登録が追加され、GetServiceは最後に登録されたインスタンスを返し、GetServices<T>はすべての登録を取得することを明確に記載しています。

#123738 [Wasm RyuJIT] Block stores

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

WebAssembly (Wasm) RyuJIT コンパイラに対して、ブロック単位のメモリ操作(メモリ初期化とコピー)を最適化するための機能を追加しました。構造体のゼロ初期化やコピー操作を、ネイティブな memory.fill および memory.copy Wasm命令に対応させることで、より効率的なコード生成を実現します。

// memory.fill を使用したゼロ初期化の例
unsafe void zeroStruct(S *result) {
    *result = default;  // memory.fill 命令に変換される
}

// memory.copy を使用した構造体のコピー
unsafe void copyStruct(S *a, S *b) {
    *a = *b;  // memory.copy 命令に変換される
}

#123727 Managed fixes for async task tracking

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

このPRはruntime-asyncの非同期タスク追跡機能を強化し、Visual Studioなどのデバッガーによる検査を容易にします。主な追加機能は:1) Continuationのタイムスタンプ追跡(await チェーン内の論理的タスクの開始時刻と実行時間を可視化)、2) TPLイベントの発行(タスクステータス変更の通知と実行スレッド情報の提供)です。

2026年02月22日 (5 PRs) この日のページ →

#124710 [RyuJit/WASM] Rewrite SP references into PHYSREGs

@SingleAccretion・GitHub・arch-wasmarea-CodeGen-coreclrcommunity-contribution

WASM向けJITコンパイラでスタックポインタ(SP)の参照をPHYSREG参照に書き直すことで、レジスタアロケーション(RA)の処理を簡素化する改善です。SPローカル変数をニュートラル化し、すべての明示的参照をPHYSREGノードに変換することで、SPの管理をローカル変数からコードジェン時の既知の場所に移譲しています。

#124683 Add CORINFO_RUNTIME_LOOKUP::helperEntryPoint

@jakobbotsch・GitHub・area-CodeGen-coreclr

CORINFO_RUNTIME_LOOKUP構造体にhelperEntryPointフィールドを追加し、R2R(Ready2Run)とNAOT(NativeAOT)においてREADYTORUN_GENERIC_HANDLEヘルパーのエントリポイント取得時の往復通信を排除しました。これにより、ランタイムへのコールバックを削除し、エントリポイント情報を直接構造体で表現することで効率化しています。

#124679 [Wasm RyuJit] fix some issues with calls

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly RyuJIT コンパイラの関数呼び出し処理の2つの問題を修正します。マネージド呼び出し規約を持つ呼び出しに対して、期待されたシグネチャに一致させるため、最後の引数として偽のPEポインタを渡すようにしました。また、メインメソッドまたはfuncletの最後の命令がリターンしない呼び出しである場合、unreachableの後にend命令が確実に発行されるようにしました。

#124626 Refine PersistedAssemblyBuilder test coverage per review feedback, helper deduplication, and AssemblyNameInfo-based identity validation

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

PersistedAssemblyBuilder のテストカバレッジをレビューフィードバックに基づいて整理しました。アセンブリ識別情報の検証、Save/GenerateMetadata ライフサイクルの相互作用、クロスアセンブリのジェネリック参照、カスタム属性エッジケースに焦点を絞ったテストに統合。AssemblyNameInfo ベースの同一性検証で簡潔化し、重複するヘルパーロジックを既存の共有ヘルパーに統合しました。

2026年02月21日 (6 PRs) この日のページ →

#124675 Remove unused src/native/managed/cdacreader directory

@Copilot・GitHub・area-Diagnostics-coreclr

src/native/managed/cdacreader ディレクトリは未使用で空の成果物であったため削除されました。このディレクトリは親ディレクトリのビルドターゲットに転送するだけの Directory.Build.targets ファイルのみを含んでおり、実際のプロジェクト、ソースコード、ビルドスクリプトからの参照はありませんでした。

#124534 [Wasm RyuJit] Null checks for calls, overflow checks for int to int casts, resolve stack ordering, more

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

WebAssembly向けRyuJITコンパイラの複数のバグ修正を含むPRです。crossgen実行時に発見された問題に対応し、null checks、overflow checks、スタック順序、戻り値型の分類などを修正しています。主な変更はcodegenwasm.cpp、regallocwasm.cpp、lowerwasm.cppに集中しており、WebAssembly JIT生成コードの正確性を向上させています。

2026年02月20日 (17 PRs) この日のページ →

#124653 renames to IsMultithreadingSupported

@pavelsavara・GitHub・area-System.Threading

このPRは、後続のAPI変更(#124603)に向けた準備作業として、内部およびテスト関連のプロパティ/メソッドの大規模な名前変更を実施しています。「Threading」を「Multithreading」に、「SingleThreaded」を「MultithreadingSupported」に変更し、論理を反転させています。

// 変更例
// Before
if (Thread.IsSingleThreaded) { ... }
Thread.ThrowIfSingleThreaded();

// After
if (!Thread.IsMultithreadingSupported) { ... }
Thread.ThrowIfMultithreadingIsNotSupported();

#124627 Remove unused PInvokeTransitionFrame_MAX_SIZE and PInvokeTransitionFrame_SaveRegs_count macros

@Copilot・GitHub・area-NativeAOT-coreclr

NativeAOT ランタイムのバインダーヘッダ (rhbinder.h) から未使用のマクロを削除するクリーンアップです。PInvokeTransitionFrame_MAX_SIZE マクロとそれに依存する PInvokeTransitionFrame_SaveRegs_count マクロ(AMD64/x86/ARM用の条件付き定義)がリポジトリ内で参照されていないため、12行のデッドコードを削除します。

#124622 [r2r] Fix verbose logging

@BrzVlad・GitHub・area-ReadyToRun-coreclr

ReadyToRun (R2R) コンパイルで --verbose オプション使用時の進捗ログ機能に存在した不具合を修正しました。ProgressReporter のインクリメント計算によって、処理対象が小さい場合にゼロ除算クラッシュが発生したり、100%を超える進捗率が出力される問題を解決しています。

#124606 [browser] move loader JS code

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

ブラウザホスト用のローダー JavaScript/TypeScript コードを src/native/libs/Common/JavaScript 配下に統合し、複数のランタイムフレーバー(CoreCLR、Mono など)での再利用を可能にする準備を実施。MSBuild → CMake → Rollup パイプラインに RuntimeFlavor 情報を伝播させ、フレーバー別のバンドル処理に対応。

#124605 Fix abandoned jit regression tests

@EgorBo・GitHub・area-CodeGen-coreclr

JIT回帰テストの登録モデルの変更に伴い、テストファイルをプロジェクトファイル(csproj)に明示的に登録する必要が生じました。グローブパターンでの自動包含ではなく、明示的な登録が必要な新しいモデルに対応しています。

#124582 Write ExpectedExitCode marker in GenerateMarkerFiles

@Copilot・GitHub・area-CodeGen-coreclr

GenerateMarkerFilesタスクがExpectedExitCode.txtマーカーを出力していなかった問題を修正します。マージされたテストまたはスタンドアロンテストペイロードで、期待される終了コードが確実に含まれるようになります。既存のマーカーパイプラインに3行のエントリを追加するシンプルな修正です。

#124549 [r2r] Don't skip methods with AggressiveOptimization attribute on ios

@BrzVlad・GitHub・area-ReadyToRun-coreclr

iOS環境でのパフォーマンス問題を修正するPRです。AggressiveOptimization属性を持つメソッドは、JIT(実行時コンパイル)が利用可能なプラットフォームではR2R(ReadyToRun)コンパイルをスキップして、実行時にJITでより最適化されたコードを生成させるべきです。しかしiOSではJITが無効化されているため、スキップすることで解釈実行となり、むしろパフォーマンスが悪化していました。本PRでは、JITが利用可能なプラットフォームでのみスキップするよう条件を修正します。

#124480 Fix FromBase64Transform.TransformFinalBlock to consistently reset state

@Copilot・GitHub・area-System.Security

FromBase64Transform.TransformFinalBlockが空の入力(inputCount == 0)で呼ばれた場合、内部バッファ状態をリセットせず、_inputIndexに古いデータが残る問題を修正。部分ブロック処理時は正しくリセットされていたが、空入力時の早期リターンではリセット処理が欠けていたため、後続の変換操作が失敗する原因となっていました。

修正内容:

  • Line 192の早期リターン前にReset()呼び出しを追加
  • 空(0バイト)と部分(1バイト)ファイナルブロック両シナリオをカバーする回帰テストを追加
using FromBase64Transform transform = new();
byte[] partialBlock = [(byte)'A'];

transform.TransformBlock(partialBlock, 0, 1, destination, 0);
transform.TransformFinalBlock(Array.Empty<byte>(), 0, 0);  // 修正前は状態がリセットされない

// 後続の操作が失敗していた
transform.TransformFinalBlock(completeBlock, 0, completeBlock.Length);

#124307 Replace HashMap COOP transitions with Epoch-Based Reclamation (EBR)

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

このPRは、CoreCLRランタイムのHashMapにEpoch-Based Reclamation (EBR)メカニズムを導入します。EBRにより、GC一時停止やCOOP遷移を不要とした低オーバーヘッドの安全な遅延削除が可能になり、非同期シナリオでのパフォーマンスと安全性が向上します。

// EBR有効化により、COOP遷移が不要に
// 従来: GC安全性のため COOP遷移が必要
// 新規: EBRがメモリ管理を保証

#123780 Move diagnostic generation from LibraryImportGenerator to LibraryImportDiagnosticsAnalyzer

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

このPRは、.NETのLibraryImportGenerator(P/Invoke相互運用性用のソースジェネレータ)における診断生成の責務を分離しています。従来はLibraryImportGeneratorが診断を直接発行していましたが、新たにLibraryImportDiagnosticsAnalyzerを作成し、診断報告を専用アナライザーに移譲することで、Rosynチームの推奨に従った設計改善を実現しています。これにより診断のみをテストする場合の実行速度向上と、コード生成とは独立した診断検証が可能になります。

#123033 [clr-ios] Run full test suite on Apple mobile platforms

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

Apple モバイルプラットフォーム(iOS、iPadOS、macOS Catalyst)での .NET ランタイムおよびライブラリテストの完全実行を有効化します。193個のライブラリプロジェクトと74個のランタイムテストプロジェクトを対象に、テストスイートを拡充しました。互換性の問題がある34個の個別テストと22個のライブラリテストプロジェクトは一時的に無効化され、追跡用 Issue #124344 で管理されます。

#111514 Run ILC after ComputeResolvedFilesToPublishList

@sbomer・GitHub・area-NativeAOT-coreclr

NativeAOT公開ビルドパイプラインの実行順序を修正し、ILC(IL Compiler)をComputeResolvedFilesToPublishListの後に実行するように変更しました。これにより、Issue #108909と#118298で報告されたビルド時のファイル処理に関する問題が解決されます。CopyNativeBinaryロジックも削除され、ビルドプロセスが簡素化されました。

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

#124619 Skip unloadable-type tests under ReadyToRun; update ActiveIssue to #124031

@Copilot・GitHub・area-TypeSystem-coreclr

ReadyToRun(R2R)コンパイル下でのテスト失敗を修正するPRです。R2Rプリコンパイル済みネイティブコードがメソッドテーブルやfixupを通じてcollectible AssemblyLoadContextから読み込まれた型への強い参照を作成し、テストの10回のGC反復内でALCがGC回収できず、型アンロード関連テストが失敗していました。2つのテストに[ActiveIssue]属性を追加/更新して、R2R実行時に一貫してスキップするようにします。

#124617 Fix nondeterministic test failure for X509CertificateLoader

@vcsjones・GitHub・area-System.Securitytest-bug

OpenSSLの仕様を正しく反映するように、X509CertificateLoaderのテストを修正しました。OpenSSLは証明書の後ろの有効なASN.1データを許可するため、プロセスIDをトレーリングデータとして使用したテストが非決定的に失敗していた問題を解決します。特定のPID値(例:32816 = 0x30 0x80 0x00 0x00)が有効なASN.1 BER SEQUENCEに見えるため、テストが例外を期待していても解析が成功してしまうケースが発生していました。

#124591 [HTTP] Re-enable Http3 nginx interop test

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

HTTP/3 nginx相互運用性テストを再有効化するPRです。quic.nginx.orgのテストURIは以前TLS alert 112エラーにより無効化されていましたが、外部サーバーの問題が解決されたため再度有効化します。InteropUrisWithContent()メソッド内のテストURIを復元します。

#124580 Fix memory leak in ICorDebugEnum::Clone on CordbEnumerator

@noahfalk・GitHub・area-Diagnostics-coreclr

CoreCLR デバッガーの ICorDebugEnum::Clone 実装における CordbEnumerator のメモリリークを修正しました。クローンされた列挙子が内部の m_items 配列を解放せず、プロセスのクリーンアップ時に IsNeutered() アサーション失敗を引き起こしていた問題を解決します。クローンされた列挙子をプロセスの continue neuter リストに追加することで、適切なクリーンアップを保証します。

#124574 Improve performance-benchmark/SKILL.md

@EgorBo・GitHub・area-skills

dotnet/runtimeのパフォーマンスベンチマーク用Copilot Skillの設定を改善したPRです。Copilotが生成するコマンドを簡潔化し、PR内での使用に最適化しました。主な変更は、不要なコードブロックラッピングの防止、-commitモードの削除、OSX ARM64ターゲットの推奨です。

#124572 [RyuJit] Remove the gtCallCookie operand from calls

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

RyuJIT コンパイラの呼び出し(call)ノードから gtCallCookie オペランドを削除するリファクタリングです。このオペランドはインポーター(IL解析)からモルフ(中間表現最適化)フェーズへの単純なデータ伝達にのみ使用されていたため、IR(中間表現)として保持する必要がなくなり、直接的なパラメータ渡しに変更することで、コンパイラのコード複雑性を低減しています。

#124571 Eliminate redundant bounds checks for arr[^N-1] after arr[^N]

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

インデックス-from-end パターン(arr[^4]、arr[^3]など)でJITが生成する冗長な境界チェックを排除するための最適化です。arr[^4]の境界チェックで配列長が4以上と判定された場合、後続のarr[^3]、arr[^2]、arr[^1]の境界チェックは数学的に冗長であり、これらを削除します。

public int DecodeRemaining(ReadOnlySpan<int> source)
    => source[^4] | source[^3] | source[^2] | source[^1];

#124540 #124513 - Guard Base64Url.DecodeFromChars against non-ASCII input

@Tomius・GitHub・area-System.Bufferscommunity-contribution

Base64Url.DecodeFromChars において、非ASCII文字入力時にアウト・オブ・バウンド読み取りバグが発生していました。非ASCII文字(値 > 2048)がデコードマップ(256要素配列)へのインデックスとして直接使用されることで AccessViolationException が発生していた問題を修正します。

修正方法として、デコード前に System.Text.Ascii.IsValid チェックを追加し、非ASCII入力を早期に拒否するようにしました。Base64/Base64Urlは ASCII文字のみを使用するため、非ASCII入力は本質的に無効です。

#124539 Add ActiveIssue to GetTotalAllocatedBytes test

@MichalStrehovsky・GitHub・area-GC-coreclr

GetTotalAllocatedBytesテストにActiveIssue属性を追加し、outerloopテストの実行から除外します。このテストは頻繁にOut-Of-Memory(OOM)エラーが発生するため、除外することでouterloopテストスイート全体の安定性を向上させます。

[ActiveIssue("issue-number", TestRuntimes.CoreCLR)]
public void GetTotalAllocatedBytes_Test()
{
    // テスト実装
}

#124533 Fix RangeOps::Multiply to handle dependent ranges

@Copilot・GitHub・area-CodeGen-coreclr

RangeOps::Multiplyがdependent bounds(依存バウンド)を持つ範囲でkeUnknownを返していた問題を修正しました。これにより、ループの帰納変数に対する範囲伝播が可能になり、ARM64のCSieveBenchmarkで約12%のパフォーマンス低下が改善されます。

修正により、以下のようなパターンで範囲最適化が有効になります:

for (int k = i + i; k <= Size; k += i)
{
    array[k] = value;  // 境界チェックが最適化可能に
}

#124483 [browser][coreCLR] native stack trace symbols

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

WebAssemblyにおけるネイティブスタックトレースのシンボル解析機能を実装しました。EnableDiagnosticsとWasmEmitSymbolMapが有効な場合、wasm-function[1018]形式のWebAssemblyスタックトレースを実際のシンボル名(例:PROCAbort、TerminateProcess)に自動変換し、デバッグの可読性を大幅に向上させます。また、終了コード伝播、シャットダウン処理、例外ロギングの改善も含まれています。

#124383 SPMI: Fix relocs into new RO data section

@jakobbotsch・GitHub・area-CodeGen-coreclr

ARM64アーキテクチャにおける読み取り専用(RO)データセクションへの相対リロケーション処理を修正しました。ARM64では複数のROデータブロック(コード末尾のブロックと非同期関数用の別個ブロック)が存在するため、リロケーション処理を拡張して後者のブロックを正しく認識するようにしました。

#124265 [ios] HelloiOS - Set RunAOTCompilation only on Mono

@davidnguyen-tech・GitHub・documentationos-iosneeds-area-label

iOS の HelloiOS サンプル において、RunAOTCompilation プロパティが Mono ランタイム専用の設定であることを明確にするため、条件付きで設定するように修正しました。従来は UseMonoRuntime=false(CoreCLR使用)時に RunAOTCompilation=true を指定すると、Mono の AOT 関連ターゲットを経由して ILStrip がエラーになる問題がありました。

<!-- 修正後: Mono ランタイムのみで AOT コンパイルを有効化 -->
<RunAOTCompilation Condition="'$(UseMonoRuntime)' == 'true'">true</RunAOTCompilation>

#124220 [maccatalyst][coreclr] Fix native build failure on Xcode 26.2

@davidnguyen-tech・GitHub・area-Infrastructure-coreclros-maccatalyst

Xcode 26.2でのmacCatalyst ネイティブビルド失敗を修正するPRです。eng/native/build-commons.shからCMAKE_OSX_DEPLOYMENT_TARGETを削除し、clangの厳密なバージョン検証エラー(invalid version number in '-mmacosx-version-min=17.0')を解決します。macCatalystのバージョン番号(17.0)がmacOSのバージョン番号として誤釈釈されていた問題を修正し、実際のCatalystターゲット指定はconfigurecompiler.cmakeの-target arm64-apple-ios17.0-macabiトリプルで別途適用されます。

#123989 Improve test coverage for System.Formats.Tar APIs

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

System.Formats.Tar APIのテストカバレッジを拡充するPRです。3つの主要なテストを追加しています:

  1. 実行可能権限の保持: 全tar形式(V7、Ustar、Pax、Gnu)でアーカイブ化・抽出時に実行可能ビットが保持されることを検証
  2. 非サポートエントリタイプの読み込み: MultiVolume、SparseFile、TapeVolumeなどの非サポート型を含むアーカイブをTarReaderが例外なく読み込めることを確認
  3. 隠しファイル対応: ドット(.)で始まるファイルをアーカイブに追加・抽出できることをテスト

#123642 [browser] Marshalling support float[], Span<float> and ArraySegment<float>

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

WebAssembly(WASM)のJavaScript相互運用性を強化するため、float[]、Span<float>、ArraySegment<float>のマーシャリングサポートを追加しました。CoreCLRおよびMonoランタイムで機能し、インポート/エクスポートテストで動作を実証しています。

// 使用例
[JSImport("jsFunction", "module")]
public static partial float[] GetFloatArray();

[JSExport]
public static void ProcessFloatSpan(Span<float> data) { }

#123377 [wasm][coreclr] runtime tests on CI

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

WebAssembly上のCoreClrランタイムテストをCI上で実行可能にするパッチです。Node.jsをテスト実行ホストとして使用し、デスクトップ環境に近いテスト実行フローを実現しています。CI パイプラインにbrowser_wasmビルド・テストジョブが追加され、WASM ランタイムの固有の問題に対応するためのテスト調整が含まれています。

#123076 Handle RFC 6761 special-use domain names in Dns resolution

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

RFC 6761に準拠した特殊用途ドメイン名のDNS解決処理を実装しました。invalidや*.invalidドメインは即座にHostNotFoundを返し、*.localhostサブドメインはOSリゾルバーを試行した後、失敗時はlocalhostへフォールバックしてループバックアドレスを返すようになります。

// 変更前:DNS照会を試行して失敗
await Dns.GetHostAddressesAsync("test.invalid");  // SocketException

// 変更後:即座にHostNotFoundを返す
await Dns.GetHostAddressesAsync("test.invalid");  // SocketError.HostNotFound

// *.localhostサブドメイン:OSリゾルバー→フォールバック
await Dns.GetHostAddressesAsync("foo.localhost");  // ループバックアドレス

#120114 Simple ComWrappers APIs

@rcj1・GitHub・area-Diagnostics-coreclr

ComWrappersに関連する3つの新しいcDAC(Common Data Access Component)APIを追加します:

  • GetComWrappersCCWData: CCW(COM Callable Wrapper)データの取得
  • IsComWrappersCCW: オブジェクトがComWrappers CCWかどうかの判定
  • IsComWrappersRCW: オブジェクトがComWrappers RCW(Runtime Callable Wrapper)かどうかの判定

これらのAPIにより、デバッガやプロファイラなどの診断ツールがComWrappersの状態をより効率的に検査できるようになります。

2026年02月18日 (22 PRs)うち Bot 4 件 この日のページ →

#124573 Add SHA-384 and SHA-512 hash algorithms to metadata spec

@tmat・GitHub・area-Meta

Portable PDB メタデータ仕様にSHA-384およびSHA-512ハッシュアルゴリズムのサポートを追加しました。Portable PDBは.NETアプリケーションのデバッグ情報保存に使用され、Document テーブル内でハッシュアルゴリズムを用いてソースファイルの検証を行います。

#124543 Fix comment in eng/Versions.props

@akoeplinger・GitHub・area-codeflow

eng/Versions.props内の古くなったコメントを更新するためのマイナー修正です。最近の.NET 11 SDKバージョンバンプ中に廃止されたコメントをバージョンに依存しない汎用的な説明に変更し、将来のメンテナンス負荷を軽減します。

#124538 [mono][interp] Add missing intrinsic for Volatile.ReadBarrier/WriteBarrier

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

Mono インタプリタで System.Threading.Volatile.ReadBarrier() と System.Threading.Volatile.WriteBarrier() の intrinsic サポートを追加したバグ修正です。従来はこれらのメソッドが intrinsic スタブとしてインタプリタで実行されると、再帰的に自身を呼び出してスタックオーバーフローを引き起こしていました。本修正により、既存のメモリバリア opcode を emitすることで問題を解決します。

// 修正前: スタックオーバーフローが発生
Volatile.ReadBarrier();  // インタプリタ上で無限再帰

// 修正後: 適切にメモリバリアが実装される
Volatile.ReadBarrier();  // メモリバリア opcode として実行

#124536 Avoid resolving direct awaits to thunks (IL scanner part)

@MichalStrehovsky・GitHub・area-NativeAOT-coreclr

NativeAOT環境でランタイム非同期処理を有効にした場合の不要な非同期サンク生成を回避する最適化です。IL scannerは直接呼び出しされるTask戻り値メソッドに対して非同期バリアント サンクの生成をスキップし、JIT オーバーヘッドを削減します。

// 直接呼び出しの検出により、不要なthunk生成を回避
if (IsCallEffectivelyDirect(method))
{
    // async variant resolution をスキップ
}

#124503 JIT: Disqualify inlinees using AsyncSuspend intrinsic

@jakobbotsch・GitHub・area-CodeGen-coreclr

JITコンパイラがAsyncSuspendイントリンシックを使用するメソッド(例:AsyncHelpers.Await)をインライン化しないようにする変更です。最近のインライン化改善により、これらのメソッドがインライン候補になってしまいましたが、インライン化するとAsyncメカニズムが破壊されるため、早期に除外する必要があります。

#124501 Support Profile Optimization for single file deployment

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

単一ファイル展開(Single File Deployment)時のProfile Optimization機能において、ファイルパスがnullになることですべてのモジュールがスキップされていた問題を修正しました。この修正により、単一ファイル形式で配布されたアプリケーションでもプロファイル最適化の恩恵を受けられるようになります。

#124485 Fix thread safety in SafeEvpPKeyHandle.DuplicateHandle

@Copilot・GitHub・area-System.Security

SafeEvpPKeyHandle.DuplicateHandle()のスレッド安全性問題を修正しました。複数スレッドが同時にDuplicateHandle()を呼び出している間に別スレッドがDispose()を実行すると、ハンドルフィールドがゼロにされ、結果として無効な値を持つ未解放のハンドルが返される競合状態が発生していました。

// 修正前: 競合状態が発生する可能性
IntPtr handle = this.handle;  // Dispose()で0にされる可能性

// 修正後: DangerousAddRef/DangerousReleaseで保護
bool addedRef = false;
try
{
    DangerousAddRef(ref addedRef);
    IntPtr handle = this.handle;  // 安全に読み取り
}
finally
{
    if (addedRef)
    {
        DangerousRelease();
    }
}

#124472 JIT: Handle LCL_ADDR in TreeLifeUpdater

@jakobbotsch・GitHub・area-CodeGen-coreclr

JIT コンパイラの TreeLifeUpdater で LCL_ADDR(ローカル変数のアドレス)ノードの生存期間追跡を改善しました。これまで GTF_VAR_DEATH フラグが LCL_ADDR ノードで処理されていなかったため、非同期変換時にこれらの変数が不必要に生きているものと判定されていました。この修正により、より正確な変数生存期間分析が可能になります。

#124451 Add more null checks to request.cpp

@leculver・GitHub・area-Diagnostics-coreclr

Linux上の診断ツール(clrmd、sos、dotnet-dump analyze)におけるクラッシュを修正するため、request.cppにnullチェック処理を追加しました。DAC(Data Access Component)への呼び出しでnull値が渡された場合、SIGSEGVで強制終了するのではなく適切に処理するようになります。

#124411 Fix the type of exception thrown when decoding bad headers

@bartonjs・GitHub・area-System.Security

CoseMessage.DecodeSign1とCoseMessage.DecodeMultiSignメソッドで、内部検証時にArgumentExceptionが漏洩していた問題を修正。ドキュメントに定義された「デコード失敗時はCryptographicExceptionを投げる」という契約を守るようにしました。また、クリティカルヘッダ検証で不定長CBORアレイのサポートも追加されています。

#124347 [browser] no sockets

@pavelsavara・GitHub・arch-wasmarea-System.Net.Socketsos-browser

ブラウザプラットフォーム向けにSystem.Net.Socketsの機能をサポート対象外化するPRです。ブラウザ環境ではソケット機能が利用できないため、すべてのメンバーでPlatformNotSupportedExceptionをスロー するよう実装しています。また、SocketAddressPal.Browser.csを新規追加し、Windows実装に類似した浅い実装を提供しています。

// ブラウザ環境での動作例
try 
{
    var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
catch (PlatformNotSupportedException)
{
    // ブラウザ環境では PNSE がスロー
}

#124271 Add ProcessStartOptions class with platform-aware path resolution

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

ProcessStartOptions クラスを新たに追加し、プロセス起動時の実行ファイルパス解決をプラットフォーム対応で明示的に行えるようにしました。Windows では .exe 拡張子の自動追加、System32 ディレクトリの検索、PATH 環境変数の参照を実装し、Unix では PATH のみを検索します。遅延初期化されたコレクション(Arguments、Environment、InheritedHandles)を提供し、ProcessStartInfo より安全で制御性の高い代替手段となります。

#124202 Remove INodeWithSize interface, use IMAGE_REL_SYMBOL_SIZE relocation, and restructure ModuleInfoRow

@Copilot・GitHub・area-NativeAOT-coreclr

このPRはNativeAOTの依存性分析フレームワークを簡素化するもので、INodeWithSizeインターフェース廃止し、IMAGE_REL_SYMBOL_SIZEリロケーションによるモジュールセクションサイズ報告に統一します。同時にModuleInfoRow ABI構造を{ SectionId, Length, Start }に再構成し、ランタイムがLengthフィールドを直接参照できるようにしました。

#124117 Add parameterized CRC-32 and CRC-64

@bartonjs・GitHub・area-System.IO.Hashing

CRC-32とCRC-64の汎用パラメータ化実装が追加されました。既存の最適化済み実装(Crc32、Crc64)とCRC-32/C(x86/ARM intrinsics対応)はそのまま利用し、その他のパラメータセットはバイト単位のテーブルルックアップで実装されています。汎用ベクトル化は今後の改善予定とされています。

// パラメータセット指定によるCRC計算の使用例
var parameterSet = Crc32ParameterSet.Crc32; // 標準CRC-32
var crc = new Crc32(parameterSet);
crc.Append(data);
var hash = crc.GetCurrentHashAsUInt32();

#123824 [Android CoreCLR] Log managed callstacks on native crash

@mdh1418・GitHub・area-VM-coreclros-android

Android CoreCLR でネイティブクラッシュ時にマネージドコールスタックをログに出力する機能を追加しました。Android では CreateDump が利用できないため、クラッシュレポートとしてマネージドフレームを含むスタックトレースを ADB ログに記録します。これにより、ダンプなしでもクラッシュの原因究明が容易になります。

// 例:マネージド例外時のログ出力
// "02-10 13:09:24.654 22261 22275 E DOTNET  : Unhandled exception. System.InvalidOperationException..."
// "02-10 13:09:24.654 22261 22275 E DOTNET  :    at Program.Level3()"
// のようにスタックトレースが記録される

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

#124517 Fix flaky MaxResponseHeadersLength tests by handling additional SocketError codes

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

HTTP クライアントの MaxResponseHeadersLength テストにおける競合状態によるフレーキーな失敗を修正しました。クライアントが接続を強制切断した際に、サーバー側が複数の SocketError コード(Shutdown、ConnectionReset、ConnectionAborted)に対応することで、プラットフォーム間での非決定的な動作を安定化させています。

// 修正例
catch (IOException ex) when (ex.InnerException is SocketException se && 
    (se.SocketErrorCode == SocketError.Shutdown || 
     se.SocketErrorCode == SocketError.ConnectionReset || 
     se.SocketErrorCode == SocketError.ConnectionAborted)) { }

#124502 JIT: Check for inline candidates in gtTreeContainsAsyncCall

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

JIT コンパイラの gtTreeContainsAsyncCall 関数を改善し、インライン候補内の非同期呼び出しを正しく検出するようにしました。インライン候補は後で元の呼び出しに置き換わる可能性があり、その呼び出しが非同期呼び出しを含む場合、適切なスピリング処理が必要です。Native AOT シナリオでのランタイム非同期有効時における null 参照クラッシュを修正します。

#124491 [Runtime Async] do not hold to continuation state when completing reusable valuetask sources

@VSadov・GitHub・area-System.Threadingruntime-async

ValueTaskSourceの完了時に、継続状態(_continuationState)を保持し続けることで、オブジェクトのファイナライゼーションが遅延する問題を修正します。完了後は不要な状態をnullに設定することで、ガベージコレクションを促進し、特にHttp3ストリームのような短命なリソースの適切なクリーンアップを実現します。

#124488 [RuntimeAsync] Remove [RequiresPreviewFeatures] on runtime async API

@VSadov・GitHub・area-VM-coreclrlinkable-frameworkruntime-async

ランタイムの非同期API(RuntimeAsync)から [RequiresPreviewFeatures] 属性を削除し、正式なAPI として確定させるPull Requestです。同時に不要になった SYSLIB5007 の抑制コメントも削除しました。このAPIはプレビュー段階を既に卒業していたため、属性の削除により開発者はこのAPIを警告なく使用できるようになります。

#124481 [RyuJit/WASM] Register allocation for multiply used operands

@SingleAccretion・GitHub・arch-wasmarea-CodeGen-coreclrcommunity-contribution

WASM向けのレジスタ割り当て機構を改善するPRです。複数回使用されるオペランド(multiply-used operands)に対して、新しいLIRフラグを導入し、レジスタアロケータが前方走査で効率的にライフタイムを追跡できるようにしました。また、SDSUノードが有効なレジスタを持つ場合、local.tee命令を通じてそれらを割り当てる契約を追加しています。これにより、任意のオペランドをマルチユース化できます。

// 新しいLIRフラグでマルチユースオペランドをマーク
node->SetFlag(LIR::Flags::MultiUseOperand);
// レジスタアロケータでlocal.teeを使用した割り当て処理
genProduceReg(node); // WASM固有のカスタマイズ

#124476 Add default value when FeatureDynamicCodeCompiled is undefined

@BrzVlad・GitHub・area-Infrastructure-coreclr

Visual Studio で CoreCLR を開く際の ./build.cmd -vs coreclr.slnx コマンド実行時に、FeatureDynamicCodeCompiled MSBuild プロパティが未定義のため CMake 構成に失敗する問題を修正しました。runtime.proj で条件チェックを修正し、プロパティが未定義の場合はデフォルト値として true を使用するようにしました。

#124463 Re-enable SslStreamTlsResumeTests.ClientDisableTlsResume_Succeeds

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

TLS セッション再開の無効化をテストする ClientDisableTlsResume_Succeeds テストを再有効化するPRです。このテストはWindows上でSChannel関連のバグによってフレーキーな動作を示していましたが、PR #113604で根本的なバグが修正されたため、[ActiveIssue] 属性を削除して再有効化します。

// テストの概要:AllowTlsResume = false が TLS セッション再開を正しく防止することを検証
[Theory]
[InlineData(true)]
[InlineData(false)]
public async Task ClientDisableTlsResume_Succeeds(bool testClient)
{
    // TLS セッション再開が発生しないことをアサート
}

#124457 Add null check in LCGMethodResolver::GetManagedResolver

@leculver・GitHub・area-Diagnostics-coreclr

SOS診断ツールのdumplogコマンド実行時にGetManagedResolverでnullポインタ参照によるクラッシュが発生する問題を修正しました。診断コード内でnull状態のm_managedResolverハンドルが検出される場合の処理を追加し、ストレスログ出力時のクラッシュを回避します。

// 修正内容のイメージ
if (m_managedResolver == nullptr)
{
    return nullptr;  // null check追加
}
return ObjectFromHandle(m_managedResolver);

#124399 Fix aspnet2 spmi collection script

@EgorBo・GitHub・area-CodeGen-coreclr

AspNet2のSuperPMI収集スクリプトの堅牢性を向上させる修正です。Helixマシンの制限に対応するため、NuGetキャッシュの設定を改善、ビルドタイムアウトを延長、.NET 11.0プレビューへの切り替え、接続数削減、TieredPGO設定の削除を実施しました。結果として、mchファイルサイズは892 MBとなっています。

#124323 Extract ManifestBuilder and EventListener

@agocke・GitHub・needs-area-label

System.Diagnostics.Tracing 名前空間の実装をリファクタリングし、EventSource.cs から ManifestBuilder と EventListener を専用ファイルに抽出しました。これにより EventSource.cs のサイズが 1,969行から 411行に削減され、コードの可読性と保守性が向上します。動作は変わらず、純粋なコード整理です。

#124161 Fix missing upper-bound guard in LastIndexOf and FindLastIndex

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

ImmutableList<T> の LastIndexOf と FindLastIndex メソッドで上限値チェックが欠落していた問題を修正しました。従来は index == Count を指定しても例外をスローせず、不正な結果を返していました。この修正により ImmutableArray<T> の動作と一致するようになります。

// 修正前:index == Count で不正な結果を返していた
var list = ImmutableList.Create(1, 2, 3);
int result = list.LastIndexOf(2, 3); // 本来は ArgumentOutOfRangeException をスロー

// 修正後:ArgumentOutOfRangeException をスロー
// int result = list.LastIndexOf(2, 3); // throws ArgumentOutOfRangeException

#123925 PersistedAssemblyBuilder: Fix encoding of custom modifiers.

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

PersistedAssemblyBuilderにおけるカスタム修飾子(custom modifiers)のエンコーディングのバグを修正しました。SignatureHelperの実装を簡潔化し、Mono環境での修飾子エンコーディング処理を改善しています。Issue #123857に対応し、テストケースを追加してローカルで検証済みです。

#123909 Remove support for issues.targets

@jkoritzinsky・GitHub・area-Infrastructure

レガシーランナーの廃止に伴い、issues.targetsファイルと関連する除外リスト管理インフラストラクチャを削除するPRです。空になったissues.targetsとそれをサポートするテスト除外機能(TestExclusion.cs、APKパッチング機能など)が完全に削除されました。これにより、テスト実行パイプラインの複雑さが低減され、メンテナンス負荷が軽減されます。

#123694 [Android][NativeAOT] Fix SIGSEGV in RandomNumberGenerator by providing weak JNI_OnLoad symbol

@Copilot・GitHub・area-Infrastructure

Android上のNativeAOT環境でRandomNumberGenerator.GetBytes()を呼び出すとSIGSEGVクラッシュが発生する問題を修正しました。原因はJNI環境(gJvm)が初期化されていなかったこと。JNI_OnLoadを弱シンボルで実装することで、静的リンク時も自動初期化が可能になります。

// 修正前:SIGSEGVで必ずクラッシュ
RandomNumberGenerator.GetBytes(1);

// 修正後:正常に動作
RandomNumberGenerator.GetBytes(1);

#122283 Rename SVE2 AddSaturate signed/unsigned addend API

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

ARM64 SVE2のADD SATURATE命令のパブリックAPI設計を改善するPRです。従来のAddSaturateWithSignedAddend/AddSaturateWithUnsignedAddendの2つの分割されたメソッドを、単一のSve2.AddSaturateメソッドに統合しました。JIT側でオペランドの符号付き/符号なし型に基づいて、実際の命令(SQADD/UQADD vs USQADD/SUQADD)を自動選択するSpecialImportフラグを使用しています。

// 変更前
public static Vector<long> AddSaturateWithSignedAddend(...);
public static Vector<long> AddSaturateWithUnsignedAddend(...);

// 変更後
public static Vector<long> AddSaturate(...); // 複数のオーバーロード

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

#124470 ArrayBufferWriter double grow boundary fix

@sstronin・GitHub・area-System.Bufferscommunity-contribution

ArrayBufferWriter<T>で現在の容量がint.MaxValue / 2の時に予期しなく再割り当てに失敗するバグを修正しました。バッファが満杯の状態で追加メモリをリクエストすると、オーバーフロー判定が誤った結果になり例外が発生していました。

// 修正前:int.MaxValue / 2 の容量で失敗
var abw = new ArrayBufferWriter<byte>(int.MaxValue / 2);
abw.Advance(abw.Capacity);
abw.GetMemory(1); // throws ArgumentException

#124446 Replace MethodDescCallSite with UnmanagedCallersOnly for ObjC interop

@AaronRobinsonMSFT・GitHub・area-Interop-coreclr

Objective-C相互運用性の実装において、MethodDescCallSite/CallDescrWorkerを使用した呼び出し機構を、より現代的なUnmanagedCallersOnlyリバースP/Invokeパターンに置き換えました。具体的には、AvailableUnhandledExceptionPropagationとInvokeUnhandledExceptionPropagationの2つの関数がこの変更の対象です。

#124442 Make report-green.yml run on agentless server job

@akoeplinger・GitHub・area-Infrastructure

Azure Pipeline の report-green.yml を、エージェントベースのジョブからエージェントレスサーバージョブに移行しました。ドキュメントのみのPRで成功を報告し、Build Analysis へのハング防止が目的です。従来の PowerShell スクリプトを Delay@1 タスク(遅延0分)に置き換え、CI マシン割り当てを回避して no-op 動作を実現します。

// 変更前: エージェントベースのジョブ
jobs:
  - job: ReportGreen
    pool:
      vmImage: 'windows-latest'
    steps:
      - powershell: # スクリプト処理
      
// 変更後: エージェントレスサーバージョブ
jobs:
  - job: ReportGreen
    pool: server
    steps:
      - task: Delay@1
        inputs:
          delayForMinutes: '0'

#124437 Support ISO 8601 24:00:00 (endOfDayFrag) in XSD DateTime validation

@Copilot・GitHub・area-System.Xml

ISO 8601の24:00:00(endOfDayFrag)表記をXSD DateTime検証で正式にサポートしました。W3C XML Schema 1.1で定義されている24:00:00をXmlConvertとXML Schema検証層で受け入れるようになり、2007-04-05T24:00:00は2007-04-06T00:00:00と解析されます。以前はFormatExceptionが発生していた入力が正常に処理されるようになります。

// 以前: FormatException発生
// 現在: 正常にパース
var dt = XmlConvert.ToDateTime("2007-04-05T24:00:00", XmlDateTimeSerializationMode.RoundtripKind);
// dt == 2007-04-06T00:00:00

#124435 [issue-labeler] Use env var for prediction threshold; default to 0.05

@jeffhandley・GitHub・area-Meta

issue-labeler の予測閾値を環境変数で設定可能にし、デフォルト値を 0.40 から 0.05 に変更するPR。複数の訓練実行結果から、0.05 の閾値が最も高い正確性(91.91% の一致率)を示し、needs-area-label ラベルが必要なケースを最小化できることが確認されました。ISSUE_LABELER_PREDICTION_THRESHOLD 環境変数で閾値を動的に調整できます。

#124403 Always enable static linking when dynamic code compiled feature is false

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

動的コード実行機能が無効な場合、インタープリタライブラリをランタイムに静的リンクする変更です。これにより、FEATURE_DYNAMIC_CODE_COMPILED が false の場合、プラットフォームマニフェストエントリを作成する代わりに、インタープリタライブラリが直接ランタイムに組み込まれます。

// FEATURE_STATICALLY_LINKED の条件を拡張
// Before: モバイルプラットフォーム(WASM, iOS, tvOS, macCatalyst)のみ
// After: FEATURE_DYNAMIC_CODE_COMPILED が false の場合も静的リンク対象に

#124393 Remove assert from AddNecessaryAsyncReferences

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

ReadyToRun コンパイラの async メソッド処理において、AsyncHelpers への参照が存在しないケースでアサーション失敗が発生していた問題を修正しました。不正確なアサーションを削除し、async メソッドが存在する場合は必ず System.Runtime.CompilerServices.AsyncHelpers を必須メタデータ参照として明示的に追加するように改善しました。

// 修正前:AsyncHelpersが既に参照されていることを前提としていた
Debug.Assert(asyncHelpers != null);

// 修正後:AsyncHelpersが参照されていなくても必須型リストに追加
requiredTypes.Add(asyncHelpers);

#124388 [HTTP] Fix test race with semaphore.

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

HTTPクライアントテストのSend_TimeoutRequestContent_Throwsテストにおけるレース条件を修正しました。サーバー接続がクライアントのタイムアウト前にクローズされることで、テストが不安定になっていた問題を、セマフォベースの同期メカニズムで解決します。

#124387 Track span.Length's negativity + remove unsound assumption from MergeEdgeAssertions

@EgorBo・GitHub・area-CodeGen-coreclr

このPRは、JIT コンパイラの範囲チェック最適化における不正な仮定を修正します。IsVnCheckedBound の不正な使用(すべての値番号が非負と仮定)を削除し、代わりに span.Length の非負性をアサーション経由で追跡するようにしています。これにより、範囲チェックの削除における誤った最適化を防ぎます。

#124384 [HTTP] Remove stale ActiveIssue overrides for #72586

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

Issue #72586(2022年10月に解決)に関連する古いActiveIssue属性をテストメソッドから削除しました。これにより、HTTP/1レスポンスストリームの応答キャンセル適合性テストが再度実行されるようになります。以前はTask.CompletedTaskを返していた3つのテストメソッドオーバーライドが不要になったため、ベースクラスのCancelPendingテストが実行可能になります。

#124308 [release/10.0] Fix lookup for current Thread in async signal handler

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

async signal handlerからThread Local Storage (TLS)にアクセスする際のクラッシュを修正するバックポート。最新のglibc版でのメモリ割り当て中の割り込み時にクラッシュする問題を解決するため、lock-freeでasync-safeなスレッドマップを実装し、signal handlerからの安全なスレッド検索を可能にしました。

// 従来: TLSアクセスでクラッシュの可能性
Thread* pThread = GetThread(); // signal handlerから呼び出すと危険

// 修正後: async-safe検索
Thread* pThread = GetThreadAsyncSafe(); // signal handlerでも安全

#124298 [RyuJit/WASM] Implement internal registers

@SingleAccretion・GitHub・arch-wasmarea-CodeGen-coreclrcommunity-contribution

WebAssembly(WASM)バックエンド向けRyuJitに内部レジスタ機構を実装しました。これにより、DIV/MOD命令のゼロ除算チェックなど、一時的な値の保持が必要な操作をより効率的に処理できるようになります。内部レジスタは呼び出し元に見えないレジスタとして機能し、コード生成時に中間値を保存するために使用されます。

#121698 Fix FileSystemWatcher macOS start performance

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

macOS上のFileSystemWatcher起動時のパフォーマンス問題(Issue #77793)を修正しました。不要なInterop.Sys.Sync()呼び出しを削除することで、ウォッチャーインスタンスあたり約45msの遅延を解消しています。FSEventStream APIは既にkFSEventStreamEventIdSinceNowで設定されており、新規イベントのみを受信するため、バッファフラッシュは不要でした。

#120899 [System.DirectoryServices] Fixed possible resource leak

@sancheolz・GitHub・area-System.DirectoryServicescommunity-contribution

System.DirectoryServices ライブラリにおいて、SafeLsaPolicyHandle オブジェクトの適切なリソース解放を実装しました。SafeLsaPolicyHandle は LSA ポリシーハンドルをラップする SafeHandle 型であり、ネイティブリソースを確実に解放するために明示的な破棄が必要です。静的分析ツール SVACE により検出されました。

#119644 Fixed excessive capacity allocation in ValueListBuilder<T>

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

ValueListBuilder<T>.Growメソッドの過度なキャパシティ割り当てバグを修正しました。Growメソッドに渡す引数が誤っていたため、必要以上のメモリが確保されていました。この修正により、ValueStringBuilderと同じ割り当てロジックに統一されます。

// 修正前: AppendSpan(100)時にキャパシティが256になる
var vlb = new ValueListBuilder<char>();
vlb.AppendSpan(17);  // キャパシティ: 32
vlb.AppendSpan(100); // キャパシティ: 256(過度な割り当て)

// 修正後: 正しく128になる
vlb.AppendSpan(17);  // キャパシティ: 32
vlb.AppendSpan(100); // キャパシティ: 128(期待値)

#118932 Improve ImmutableArrayExtensions.SequenceEqual

@prozolic・GitHub・area-System.Collectionstenet-performancecommunity-contribution

ImmutableArrayExtensions.SequenceEqualメソッドのパフォーマンスを大幅に改善するPRです。ICollection<T>を実装するコレクション向けに高速パスを追加し、Enumerable.SequenceEqualに委譲することで、配列・リストで約90%の高速化を実現しています。純粋なIEnumerable<T>型に対しては既存実装を保持し、互換性を維持しています。

2026年02月15日 (7 PRs) この日のページ →

#124436 Remove ForceENC

@noahfalk・GitHub・area-VM-coreclr

レガシーで未ドキュメント化された UNSUPPORTED_ForceEnc 環境変数をCoreClrから削除し、サポート対象の DOTNET_MODIFIABLE_ASSEMBLIES 設定に統一します。Edit and Continue (EnC) 機能の有効化判定とApply Update機能の確認ロジックから ForceEnc の参照を削除しており、設定オプションの簡素化と一貫性向上が目的です。

#124431 Fix empty host parsing regression

@MihaZupan・GitHub・area-System.Net

System.Private.Uri の空のホスト解析に関する回帰バグを修正しました。#121671 で導入された条件チェック end < length が、実際の範囲チェックではなく単に end が更新されたかどうかの確認になっていた問題を修正しています。

#124303 Replace MethodDescCallSite with UnmanagedCallersOnly for Priority 1 c…

@AaronRobinsonMSFT・GitHub・area-VM-coreclr

このPull Requestは、.NET runtimeの複数の重要な相互運用呼び出しサイトを、従来のMethodDescCallSite/CallDescrWorkerからUnmanagedCallersOnly属性を使用した新しいマネージドラッパーに置き換えています。EventSource初期化、スタートアップフック、ローダー割り当て、カルチャ情報管理、JITメタデータ取得など、優先度の高い7つの重要な相互運用地点を対象としています。

#124142 Support ISO 8601 24:00 (end-of-day) in DateTime/DateTimeOffset/TimeOnly parsing

@Copilot・GitHub・area-System.DateTime

ISO 8601の24:00:00(日の終わり)をサポートするため、DateTime、DateTimeOffset、TimeOnly、Utf8Parser、System.Text.Jsonのパース機能を拡張しました。24:00:00は翌日の00:00:00と同じ時点として正規化されます。この機能は分秒がいずれも0の場合のみ有効です。

// 2007-04-05T24:00 は 2007-04-06T00:00:00 と解析される
var dt = DateTimeOffset.Parse("2007-04-05T24:00");
// dt == new DateTimeOffset(2007, 4, 6, 0, 0, 0, TimeSpan.Zero)

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

@VSadov・GitHub・area-System.Threading

ThreadPool のセマフォ実装に関する複数の修正と改善が行われました。主な変更は以下の通りです:

  1. Backoff.Exponential(0) のバグ修正 - シフト演算のマスキングによる問題を解決
  2. Windows/Unix の LIFO ポリシー実装の統一 - プラットフォーム固有の実装を統一された軽量な実装に置き換え
  3. 適応的なスピニング - CPU コアの利用可能性に基づく動的スピニング調整
// Backoff.Exponential(0) の修正例
// 修正前:attempt==0 時にシフト量が 0 になり、大きなランダム値が使用される
// 修正後:正しく 1 ビット右シフトされる

#123588 Add RequiresUnsafe trimming analyzer capabilities

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

RequiresUnsafe属性に対応したトリミング解析機能を追加するデバッグ専用の実装です。フレームワークに注釈を付けるための補助機能であり、本番環境での提供を想定していません。Roslyn解析器とコードフィックスプロバイダーを通じて、unsafeコンテキスト外での安全でないコード使用を検出し、自動修正を提供します。

// 新規追加: RequiresUnsafeAttribute
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public sealed class RequiresUnsafeAttribute : Attribute
{
}

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

#124416 ci-analysis skill: restore domain examples from eval regression analysis

@lewing・GitHub・area-skills

ci-analysis skillの評価で、tool-agnostic refactor(#124398)により build progression タスクで68%のツール呼び出し回数増加(25→42)が発生。3つのドメイン固有の例を復元することで、ツール呼び出しを25呼び出しに削減し、実行時間も11m04sから8m46sに短縮。復元された例には、refs/pull/{PR}/merge ブランチパターン、マージコミット親抽出のGH API例、チェックアウトログID 5/line 500+のヒント、および停止シグナルが含まれます。

#124362 [Wasm RyuJit] More codegen and fixes for crossgen replay

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly RyuJIT コンパイラのコード生成機能を拡張するPRです。GT_INDEX_ADDR、GT_LEA、GT_MEMORYBARRIER、GT_RETFILT などの命令ノードのコード生成実装を追加し、crossgen replay 機能を改善しています。また、WASM の非連続な例外領域レイアウトに対応するため、例外処理の検証チェックを緩和しています。

#124258 Add XML documentation to LoggerMessage generated methods

@Copilot・GitHub・area-Extensions-Logging

LoggerMessage ソースジェネレータが生成するメソッドに XML ドキュメンテーションを追加し、IDE の IntelliSense でログメッセージテンプレートとログレベルを表示できるようにします。開発者がホバーするだけで生成されたログメソッドの詳細を確認できるようになります。

// 生成されるメソッドに XML ドキュメンテーションが追加
/// <summary>
/// Hello {Name} (LogLevel: Information)
/// </summary>
public partial void LogHello(string name)
{
    if (logger.IsEnabled(LogLevel.Information))
    {
        __LogHelloCallback(logger, name, null);
    }
}

#124247 Fix type map assembly target traversal in ILC

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

ILC(Intermediate Language Compiler)のType Map assembly target traversalロジックを修正するPRです。Type Mapメタデータ生成時に、特定のType Groupに対してAssemblyTargetで明示的に参照されていないアセンブリ内のType Mapは保持しないようにしました。これにより、不要な型情報がAOTコンパイル出力に含まれるのを防ぎます。

#123515 [Wasm RyuJit] Wasm abi classifier

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

WebAssembly(Wasm)向けRyuJIT JITコンパイラーに対し、Wasm Basic C ABI仕様に従った構造体分類機能を実装しました。ホスト(VM、CrossGen)ロジックとJITロジックを追加し、Wasmプラットフォーム向けコンパイル時に構造体の引数受け渡し方式を適切に分類します。また、SPMI(SuperPMI)ツール内でも同機能を実装し、cross-jittingによるWasm関連テストを継続できるようにしました。

2026年02月13日 (21 PRs) この日のページ →

#124398 ci-analysis skill: let the agent reason about its own tools

@lewing・GitHub・needs-area-label

ci-analysis skillをリファクタリングし、AIエージェントのプロンプトから明示的なMCPツール名参照を削除しました。エージェントは既に実行時にツールの説明とパラメータを保有しているため、skillはドメイン知識(落とし穴、優先順位、データ位置、アンチパターン)に集中すべきという設計思想の実装です。ツール呼び出しの連鎖をアクション説明に置き換え、パラメータレベルの詳細をワークフローガイダンスに変更しました。

#124381 Fix ConnectAsync sending stale ReceiveAsync buffer via ConnectEx

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

Socket.ConnectAsync(EndPoint) が再利用するキャッシュされた _singleBufferReceiveEventArgs に、prior の ReceiveAsync 呼び出しから残された buffer/count が残っていたため、ConnectEx にそのバッファが send-on-connect データとして誤って渡されていました。特に DisconnectAsync(reuseSocket: true) 後の再接続時に、前の接続で受信したデータが新しい接続で送信されてしまう重大なバグです。修正では接続前に SetBuffer(default) を呼び出してバッファ状態をクリアします。

// 修正内容:ConnectAsync前にバッファをクリア
_singleBufferReceiveEventArgs.SetBuffer(default);
await ConnectAsync(endPoint);

#124376 Disable TestStackOverflowLargeFrameMainThread for x64 on Unix

@Copilot・GitHub・needs-area-label

TestStackOverflowLargeFrameMainThreadテストをx64アーキテクチャ上のUnix/MacOSXプラットフォームで無効化するパッチです。スタックプローブが十分にスタックポインタから離れた位置でプローブを行う際に、ランタイムが基盤となるsigsegvをスタックオーバーフローとして認識できない問題(Issue #13519)に対応しています。テストはWindowsおよび他のアーキテクチャ(x86、ARM)では引き続き有効です。

#124372 [native] Fix build of strrchr

@ManickaP・GitHub・area-PAL-coreclr

glibc 2.43のC23関連の変更により、strrchrがconst char*の引数に対してconst char*を返すようになったため、vendored libunwindのelfxx.cでのビルド失敗を修正しました。ローカル変数の型をchar*からconst char*に変更することで対応しています。

// 修正前
char *p = strrchr(file, '/');

// 修正後
const char *p = strrchr(file, '/');

#124360 JIT: don't set liveness on unreachable blocks

@AndyAyersMS・GitHub・area-CodeGen-coreclr

JIT のライブネス分析で、到達不可能なスロー ヘルパー ブロックに対するレガシーコードを削除しています。スロー ヘルパー ブロックが lower/liveness フェーズの後に作成されるようになったため、ライブネス分析時には到達不可能なスロー ヘルパー ブロックは存在しないという新しい不変式を強制します。

#124359 ci-analysis skill: MSBuild guidance, merge commit shortcut, MCP alternatives

@lewing・GitHub・area-skills

dotnet/runtimeのCI分析スキルの改善PR。MSBuildのクロスプラットフォーム警告、マージコミットからのターゲットブランチHEAD抽出ショートカット、およびMCP(Model Context Protocol)ツール代替案の追加により、CI障害調査ワークフローのドキュメントを強化します。構造的な変更はなく、インラインでの最小限の追加です。

#124309 [cDAC] Magic enums - add comments to native code where they are defined so that we know to version the cDAC when they change. Also prune unused or suboptimal enums from cDAC.

@rcj1・GitHub・area-VM-coreclr

このPRはcDAC(Common Data Access Contract)関連の列挙型(enum)に対してバージョン管理を強化するものです。ネイティブコード内で定義されているマジックナンバーに対して、変更時にcDACをバージョニングする必要があることを示すコメントを追加します。また、cDACから未使用または最適でない列挙型を削除し、メンテナンス性を向上させます。

#124264 Add ProcessExitStatus class to System.Diagnostics.Process

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

System.Diagnostics.Process に新しい ProcessExitStatus クラスを追加します。このクラスは、プロセスの終了状態(終了コード、オプションの POSIX シグナル、キャンセル/タイムアウト情報)を表現します。sealed クラスとして実装され、XML ドキュメントと包括的なユニットテストが含まれています。

// 使用例
var exitStatus = new ProcessExitStatus(exitCode: 0, signal: null, canceled: false);
int code = exitStatus.ExitCode;
bool wasCanceled = exitStatus.Canceled;

#124248 Update IServiceScopeFactory.CreateScope docs to clarify transient service disposal

@Copilot・GitHub・area-Extensions-DependencyInjection

このPRは、依存性注入(DI)コンテナのスコープ破棄時の動作に関するAPI ドキュメントを更新するものです。従来のドキュメントでは「スコープ化されたサービス」のみが破棄されると記載されていましたが、実際の動作では一時的なサービス(transient services)もスコープによって追跡・破棄されます。このドキュメント更新により、実装の動作とドキュメントの整合性が取れます。

#124205 [Wasm RyuJIT] Start generating relocations for call_indirect

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

WebAssemblyの間接呼び出し(call_indirect)に対するリロケーション生成サポートを追加するPull Requestです。Wasm RyuJIT コンパイラが、リンク仕様に基づいたリロケーション型を使用して、呼び出し対象アドレスを動的に解決できるようになります。これにより、Wasmバイナリのリンク時最適化とランタイム動的リンクが改善されます。

#124152 Increase timeout on OneFuzz deployment pipeline

@MihaZupan・GitHub・area-Meta

Azure Pipelines のライブラリ Fuzzing "deploy to OneFuzz" パイプラインのジョブタイムアウト値を増加させました。夜間デプロイメント実行が現在のタイムアウト値 (240分) に頻繁に近づいており、または超過している問題を解決するため、windows ジョブのタイムアウトを 240 分から 600 分に延長します。これにより、CI における信頼性の低いタイムアウトエラーを削減します。

#123962 [browser] native - no process, no signals, no threads, no blocking

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

WebAssembly (WASM) ブラウザ環境での.NET ランタイム実行を実現するため、プロセス、シグナル、スレッド、ブロッキング操作に対応しないネイティブレイヤーの実装を追加しています。PAL(Platform Abstraction Layer)層でWASM固有のスタブ実装を提供し、ブラウザ環境の制約に適応させる変更です。

#123932 Fix parsing inconsistencies between Uri ctors and TryCreate factories

@MihaZupan・GitHub・area-System.Netbreaking-changeneeds-breaking-change-doc-created

UriコンストラクタとTryCreateファクトリメソッド間の解析矛盾を修正します。相対URIへのフォールバック時にIRI正規化がスキップされるなど、2つのコードパス間で動作が異なっていました。修正により両者の動作が統一されます。

// 修正前: 異なる動作
var uri1 = new Uri("p%41th", UriKind.Relative);
Uri.TryCreate("p%41th", UriKind.Relative, out Uri uri2);
Console.WriteLine(uri1); // pAth (IRI正規化適用)
Console.WriteLine(uri2); // p%41th (IRI正規化なし)

// 修正後: 同じ動作
Console.WriteLine(uri1); // pAth
Console.WriteLine(uri2); // pAth

#123735 [CoreCLR][Signal] Bump shutdown notif and crashdump before prev handler

@mdh1418・GitHub・area-ExceptionHandling-coreclr

CoreCLR のシグナルハンドラ処理の順序を変更し、以前登録されたシグナルハンドラを呼び出す前に PROCNotifyProcessShutdown と PROCCreateCrashDumpIfEnabled を実行するようにしました。これにより、Android などのプラットフォームで同期フォルト(SIGSEGV など)発生時に、以前のハンドラが戻らない場合でも、マネージドコンテキストのダンプ生成とシャットダウン通知が確実に実行されます。

// シグナル処理の実行順序が変わります
// 変更前: invoke_previous_action() → PROCNotifyProcessShutdown() → PROCCreateCrashDumpIfEnabled()
// 変更後: PROCNotifyProcessShutdown() → PROCCreateCrashDumpIfEnabled() → invoke_previous_action()

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

#124341 copy_version_files.ps1 improve comparison

@pavelsavara・GitHub・area-Infrastructure-coreclr

Windows環境でのインクリメンタルビルドの安定性を向上させるPull Requestです。copy_version_files.ps1スクリプトで_version.cファイルの比較ロジックを改善し、空白文字の取り扱いに対するセンシティビティを低減しています。これにより、不要なファイル再生成によるビルド破損を防止します。

#124324 Make System.Net.Mail test more trim friendly

@MichalStrehovsky・GitHub・area-System.Net

System.Net.Mail のテストを Native AOT(Ahead-of-Time)コンパイルに対応させるための修正です。Runtime async による最適化により、リフレクション経由の汎用メソッド呼び出しが失敗するようになったため、テストコードを trim friendly(トリミング対応)に改善しました。

#124314 Merge branch 'release/8.0' => 'release/8.0-staging'

@jozkee・GitHub・NO-SQUASHServicing-approvedlinkable-frameworkarea-codeflow

このPRはrelease/8.0ブランチからrelease/8.0-stagingへの定期的なマージであり、複数の分野にわたるサービシング更新を含みます。主な変更は以下の通りです:

  • COSE(暗号化オブジェクト署名と暗号化)メッセージのデコード改善:不定長マップ/配列とクリティカルヘッダー検証の処理を強化
  • ILLink Trim分析の改善:拡張メソッドのデータフロー分析用テストケースを追加
  • ストレステスト基盤の再構成:HttpStress/SslStressの共有スクリプト化とツール更新
  • パイプライン・ビルド設定の更新:Helix キューの更新、タグフェッチの無効化、依存関係のバージョン更新

#124311 Fix SYSLIB1045 quick fix for C# 14 extension members

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

SYSLIB1045コード修正が C# 14 の拡張メンバー(extension members)内で無効な partial extension(...) 構文を生成する問題を修正しました。拡張ブロック(ExtensionBlockDeclarationSyntax)は TypeDeclarationSyntax を継承していますが、partial 修飾子をサポートしないため、生成されたRegexプロパティは親クラスに配置されるよう修正されました。

// 修正前(無効)
partial extension(string value)
{
    public bool Test() => MyRegex.IsMatch(value);
    [GeneratedRegex(@"\d+")]
    private static partial Regex MyRegex { get; }
}

// 修正後(有効)
extension(string value)
{
    public bool Test() => MyRegex.IsMatch(value);
}
[GeneratedRegex(@"\d+")]
private static partial Regex MyRegex { get; }

#124306 Fix failed ElidedBoundsChecks test

@EgorBo・GitHub・area-CodeGen-coreclr

JIT(Just-In-Time)コンパイラの値番号(VN)キャッシュに関する回帰バグの修正です。VNF_ADD(baseVN, const)パターンで分解されたVNがアサーションキャッシュに登録されていなかったため、範囲チェック(bounds-check)削除ロジックが関連するアサーションを見落とし、コード生成段階での境界チェックが削除されずテストが失敗していました。

#124294 Fix NIndex/NRange ToString truncation on 64-bit: cast to nuint instead of uint

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

NIndex と NRange の ToString() メソッドが 64 ビットプラットフォームで uint.MaxValue を超える値を切り詰める問題を修正しました。キャスト時に uint ではなく nuint を使用することで、大きな値の正確な文字列表現を実現します。

// 修正前:^0 と表示される(切り詰め)
var ni = NIndex.FromEnd(unchecked((nint)(1L + uint.MaxValue)));
Console.WriteLine(ni.ToString()); // "^0"

// 修正後:^4294967296 と正確に表示される
Console.WriteLine(ni.ToString()); // "^4294967296"

#124293 Fix NullReferenceException in RuntimeParameterInfo.GetCustomAttributesData()

@Copilot・GitHub・area-System.Reflection

RuntimeParameterInfo.GetCustomAttributesData() がメタデータを持たないパラメータ(DynamicMethodのデリゲート、ランタイム生成メソッドなど)で呼び出された際に発生する NullReferenceException を修正します。同じ ICustomAttributeProvider リージョン内の他の3つのメソッドと同様に、メタデータ不在時にnullトークンガードを追加し、空のリストを返すように統一します。

// 修正前(例外を発生)
var attrs = delegateParameter.GetCustomAttributesData(); // NullReferenceException

// 修正後(空のリストを返す)
var attrs = delegateParameter.GetCustomAttributesData(); // IList<CustomAttributeData>(空)

#124291 Remove nullcheck effect from array len (global AP)

@EgorBo・GitHub・area-CodeGen-coreclr

配列長(array len)操作に関連するnull check効果をグローバルアサーション伝播(Global AP)から削除する最適化を実装しました。これは#93531と同様の変更ですが、CSE(Common Subexpression Elimination)の問題によりグローバルAPのみに限定されています。JITコンパイラの最適化パスにおいて、不要なnull checkを削除することでコード生成を改善します。

#124290 JIT: clear must keep flag for blocks created in GDV expansions

@AndyAyersMS・GitHub・area-CodeGen-coreclr

GDV(Guarded Devirtualization)拡張時に、JITがBBF_DONT_REMOVEフラグを過度に伝播していた問題を修正します。try ブロックの最初のブロックなど、"must keep"ブロック内のGDVが展開される場合、新しく作成されたブロックがこのフラグを不正に継承してしまっていました。本修正により、スプリット後の残余ブロックおよび展開パスで新規挿入されたすべてのブロックでBBF_DONT_REMOVEフラグをクリアします。

#124284 Remove redundant range checks in Uri scheme parsing

@MihaZupan・GitHub・area-System.Net

URI スキーム解析の冗長な範囲チェックを削除し、パフォーマンスオーバーヘッドを軽減する変更です。#121262 で JIT がスキップ可能な範囲チェックを正しく最適化できるようになったため、ParseSchemeCheckImplicitFile メソッドの早期検証条件を簡略化しました。

// 削除された冗長な範囲チェック
// if ((uint)i < scheme.Length && (uint)(i + 1) < scheme.Length)
// を削除し、最適化後は JIT が自動的に不要なチェックを除去

#124270 [browser] rename test-main.mjs

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

ブラウザベースのWebAssembly(WASM)テストの実行時に、V8テスティングが--moduleフラグなしで動作するよう、テストエントリーポイントファイルをtest-main.jsからtest-main.mjsにリネームしました。これにより、ESモジュール形式として明示的に認識されるようになり、V8のモジュール処理が改善されます。

#124240 ci-analysis: structured output, MCP integration, and deep investigation guides

@lewing・GitHub・area-skills

dotnet/runtimeのCI分析スキル向けの大規模なアップデート。PowerShellスクリプトGet-CIStatus.ps1に構造化JSON出力とMCP(Model Context Protocol)統合を追加し、推奨事項をデータ駆動型に変更。複数の深掘り調査ガイドを新規追加し、トークン効率を維持しながら詳細な調査ワークフローをサポート。

// JSON出力例(CI_ANALYSIS_SUMMARY)
{
  "recommendationHint": "KNOWN_ISSUES_DETECTED",
  "failedJobDetails": [
    {
      "jobName": "Build-x64",
      "errorCategory": "test-failure",
      "errorSnippet": "..."
    }
  ],
  "knownIssues": [...]
}

#124176 Add support for binding FormatterOptions from config file

@mrek-msft・GitHub・area-Extensions-Logging

EventLogLogger がアプリケーション設定ファイルから FormatterOptions をバインドできるようになりました。WebApplication.CreateBuilder で Logging:EventLog セクションの設定を自動的に認識・適用します。Console ロガーと同様の構成メカニズムを実装し、設定駆動型のロギング動作が可能になります。

// appsettings.json
{
  "Logging": {
    "EventLog": {
      "SourceName": "MyApplication",
      "IncludeScopes": true,
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}

#124168 Make CoreCLR + crossgen2 ioslike via --dynamiccodecompiled false

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

このPRは、デスクトップ環境でiOSと同様の動的コード生成が禁止される環境をシミュレートするための --dynamiccodecompiled false ビルドオプションを追加しています。このオプションにより、JITを無効化し、インタプリタを有効化し、キャッシュされたインターフェースディスパッチを有効化するなど、iOS同等の制約をデスクトップで検証できます。

// ビルドコマンド例
// ./build.sh -subset clr -c Release -dynamiccodecompiled false

#123783 Fix BigInteger char parsing with Ukrainian culture NBSP handling (bidirectional)

@Copilot・GitHub・area-System.Numerics

BigInteger のパース時にウクライナ文化(uk-UA)で使用される NBSP(U+00A0)と通常のスペース(U+0020)の間の互換性を修正しました。ウクライナ文化はNumberGroupSeparatorとして NBSP を使用しますが、ユーザーが通常のスペースを入力した場合のパース失敗を解決するため、MatchChars関数の空白文字の正規化ロジックを双方向に改良しました。

// 修正前のロジック
// 複雑な条件式で NBSP/space の変換を処理

// 修正後のロジック
NormalizeSpaceReplacingChar(cp) != NormalizeSpaceReplacingChar(val)
// 双方向の空白文字の等価性を簡潔に実現

#123752 Fix Task<TResult> debug proxy Result behavior and rename from Future

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

Task<TResult>のデバッグプロキシが、失敗またはキャンセルされたタスクのResultプロパティに対してdefault(TResult)を表示していた問題を修正しました。修正後は、実際の動作に合わせて例外をスローするようになります。また、古い命名「Future」を「TaskOfTResult」に統一しました。

// 修正前
public TResult? Result => m_task.Status == TaskStatus.RanToCompletion ? m_task.Result : default;

// 修正後
public TResult Result => m_task.IsCompleted ? m_task.Result : default!;

#123686 Add AttributeTargets.Interface to ExcludeFromCodeCoverageAttribute and StackTraceHiddenAttribute

@Copilot・GitHub・area-System.Diagnostics

C# 8+で導入されたインターフェースのデフォルト実装メンバーに対応するため、ExcludeFromCodeCoverageAttributeとStackTraceHiddenAttributeにAttributeTargets.Interfaceを追加しました。これにより、デフォルト実装を含むインターフェースに対して両属性を適用できるようになります。

[ExcludeFromCodeCoverage]
public interface ILogger
{
    void Log(string message);
    
    // デフォルト実装メソッドがコードカバレッジから除外される
    void LogWarning(string message) => Log($"[WARN] {message}");
}

#123555 Fix race condition in channel completion

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

UnboundedChannel<T>のChannelReader.Completionでレース条件が発生し、すべてのアイテムが読み込まれてTryComplete()が呼び出されてもチャネルが完了しない問題を修正しました。TryReadがロック解放後に最後のアイテムをデキューする際の競合タイミングで、チャネル完了がトリガーされないケースに対応しています。

#123435 Fix WriteOnceBlock race condition where ReceiveAsync returns null

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

WriteOnceBlock<T>.ReceiveAsync が Post との並行実行時に null を返す競合状態を修正しました。原因は _header を _value より先に設定していたため、読み込み側が HasValue == true を観察しながら _value がまだ未初期化の状態を見ていました。修正では _value を先に設定し、Interlocked.MemoryBarrier() を追加してメモリ順序を強制しています。

// 修正前(危険な順序)
_header = Common.SingleMessageHeader;  // HasValue becomes true
_value = messageValue;                  // Value set AFTER

// 修正後(安全な順序)
_value = messageValue;                  // Value set first
Interlocked.MemoryBarrier();           // Memory barrier for ordering
_header = Common.SingleMessageHeader;  // HasValue becomes true

#123411 Fix mixed mode debugging for PInvoke by adding PInvokeStubManager

@Copilot・GitHub・area-Diagnostics-coreclr

PR #117901の変更によりPInvoke ILStubがDynamicMethodDescからPInvokeMethodDescを直接返すようになったため、混合モードデバッガーのステップイン機能が破損していました。本PRは専用のPInvokeStubManagerを実装して、デバッガーがPInvokeスタブを正しく認識・トレースできるようにします。

// 新しいIsInteropStub()ヘルパーメソッド
bool IsInteropStub = pMD->IsInteropStub(); // IL stubs と PInvoke methods の両方に対応

#123133 Fix NullReferenceException in ConfigurationElement indexer when property is undefined

@Copilot・GitHub・area-System.Configuration

ConfigurationElement.this[string] インデクサーで存在しないプロパティにアクセスする際に NullReferenceException がスローされていた問題を修正しました。プロパティが見つからない場合に適切に null を返すよう、null チェックを追加しています。

// 修正前:null参照で例外発生
if (prop.ProvidedName != propertyName) return null;

// 修正後:null チェック追加
if (prop is null || prop.ProvidedName != propertyName) return null;

#122638 Introduce local variables with unknown size

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

このPRは、コンパイル時にサイズが不明なローカル変数を扱うための ValueSize クラスを導入しています。値の番号付け(Value Numbering)やSSA構築などの最適化フェーズで、正確な数値サイズが不要な場合に、サイズの等価性などのプロパティのみを考慮する仕組みを追加しています。

// ValueSize を使用して、コンパイル時にサイズが未定の変数を扱う
var valueSize = lclVar.ValueSize; // 等価性チェックなど

#122126 Async instantiating and unboxing thunks

@MichalStrehovsky・GitHub・area-NativeAOT-coreclrruntime-async

NativeAOTでの非同期インスタンス化・アンボックスシャンク対応を実現するPRです。新しいAsyncHelpers.TailAwaitイントリンシックを導入し、JITが非同期呼び出しを"tail await"として処理できるようにしました。これにより、シャンクメソッド自体の新しい中断点を作らず、呼び出し先の継続状態をそのまま返すことができます。

// TailAwait イントリンシック使用例
// async メソッドを呼び出す前に TailAwait() を呼び出し、
// JIT はその次の await を tail await として扱う
AsyncHelpers.TailAwait();
return asyncTarget();

2026年02月11日 (31 PRs)うち Bot 4 件 この日のページ →

#124288 Fix browser-wasm test restore NU1102 failures

@lewing・GitHub・NO-MERGEarea-skills

browser-wasm テストの復元時に NU1102 エラー(パッケージが見つからない)が発生していた問題を修正しました。UseMonoRuntime が削除されたことで、SDK が存在しないランタイムパックをNuGetから取得しようとしていました。修正では、テスト依存プロジェクトの復元時に EnableRuntimePackDownload=false と EnableTargetingPackDownload=false を無条件に渡し、ローカルビルドから提供されるパックを使用するようにしました。

#124280 Fix missing early returns in TensorPrimitives.Round.cs

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

TensorPrimitives.Round<T>(ReadOnlySpan<T>, int, MidpointRounding, Span<T>) メソッドで digits == 0 の早期終了後に return ステートメントが欠落していたため、丸め処理が2回実行される制御フロー上のバグを修正しました。また、AwayFromZero switch ケースの break を return に変更し、他のケースとの一貫性を確保しました。

if (digits == 0)
{
    Round(x, mode, destination);
    return;  // 修正:returnを追加
}

#124275 Configure markdownlint to allow 2-space hard line breaks

@Copilot・GitHub・needs-area-label

Markdownのlintルール設定を改善し、System.Private.Uri/docs内のThreat modelファイルで使用されている標準的なMarkdown構文(2つのトレーリングスペースでのハードラインブレイク)を正式に認識するようにしました。ファイル全体を抑制するのではなく、ルール設定で適切に対応することで、lintの精度を向上させています。

#124269 Fix ProcessRunner StringBuilder race condition causing assertion failure

@Copilot・GitHub・needs-area-label

ProcessRunnerの標準出力・標準エラー出力ハンドラが共有のStringBuilderに対して非同期に追記する際の同期化漏れにより、内部状態が破損しStringBuilder.ExpandByABlockのアサーション失敗minBlockCharCount > 0が発生していた問題を修正します。両イベントハンドラのAppendLine呼び出しを_outputCaptureオブジェクトでロックすることで競合を排除します。

#124254 Fix incorrect atomic loop optimization when body contains backtracking

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

正規表現エンジンの最適化バグを修正しました。MakeLoopAtomicがループをAtomic groupで囲む際、ループ本体内のバックトラッキングを誤って抑制してしまい、不正なマッチ結果を生成していました。修正では、ループ本体にバックトラッキング構文がないことを事前確認してからAtomic化を実行するようにしました。

// 修正前:バックトラッキングを含む本体でも Atomic化されてしまう
// 修正後:MayContainBacktracking() で検査し、不正な最適化を防止
if (!CanBeMadeAtomic(loop) || MayContainBacktracking(loop.Child))
{
    // Atomic化しない
}

#124253 JIT: fix liveness in throw helper blocks

@AndyAyersMS・GitHub・area-CodeGen-coreclr

PR #123781によるthrow helper blocks生成位置の変更に伴い、liveness情報の更新漏れが発生していました。本PR では、throw helper block生成時に明示的にliveness状態(bbLiveIn/bbLiveOut)を正しく設定するようにしました。これにより、遅延生成されたblockでもGC/livenessの正確性が保証されます。

#124251 Fix MetadataLoadContext: Multiple Type[] methods return internal implementation types

@Copilot・GitHub・area-System.Reflection

MetadataLoadContextの複数のType[]返却メソッドが、内部実装型のRoType[]やRoModifiedType[]を返していた問題を修正しました。これによりAsSpan<Type>()などのモダンSpan APIを使用する際に発生していたArrayTypeMismatchExceptionが解決されます。

// 修正前:ArrayTypeMismatchException が発生
var type = mlc.LoadFromAssemblyPath(...).GetType("C`2");
var args = type.GetGenericArguments();
args.AsSpan();  // RoType[] cannot be used as Type[]

// 修正後:正常に動作
args.AsSpan();  // OK

#124249 JIT: refactor GS enabling

@AndyAyersMS・GitHub・area-CodeGen-coreclr

GS(Guard Stack)機能のJIT実装をリファクタリングしました。EnC(Edit and Continue)とWasm環境ではGSが未サポートのため、GSの有効化メカニズムを柔軟にして、オプトアウト理由を記録できるようにしました。また、importer内でlocalloc後のGS要求時にスタック再配置を要求していなかった問題も修正しています。

#124242 Remove bounds checks for 'i + cns < len' pattern

@EgorBo・GitHub・area-CodeGen-coreclr

JIT コンパイラの範囲チェック最適化を改善し、i + cns < len パターンの冗長な境界チェックを削除します。条件式で事前に上限チェックが行われている場合、その後のアクセスに対する重複チェックを除去することでコード生成を効率化します。

// 例: i + 2 < span.Length の条件下では
// span[i + 1] と span[i + 2] のアクセスは追加チェック不要
if ((uint)(i + 2) < (uint)span.Length)
{
    _ = span[i + 1];  // チェック削除対象
    _ = span[i + 2];  // チェック削除対象
}

#124239 Add references for getAsyncInfo

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

この変更は、Ready-to-Run (R2R) コンパイラにおいて CorInfoImpl.getAsyncInfo メソッドで必要とされる参照をモジュールに追加するための機能拡張です。Continuation フィールドアクセス用の GetHandleForField メソッドを追加し、非同期情報取得に必要なすべての参照を管理するための AddNecessaryAsyncReferences メソッドを実装しています。

#124231 Improve vmr-codeflow-status skill: current-state-first analysis, force push & empty diff detection

@lewing・GitHub・area-skills

このPRは、VMR(Virtual Mono Repository)コードフロー状態分析ツール(Copilot CLI skill)を改善するもので、**「現在の状態優先、コメントは履歴」**という設計パターンを採用しています。Maestroコメントを読む前に、PR状態、diff サイズ、force push、タイムラインなどの一次信号から独立した判定を形成し、その後コメントを履歴として参照することで、陳腐化したコメントに基づく誤った判断を防ぎます。

// 従来の方法:Maestroコメント → 結論
// 新しい方法:PR状態・force push・diff → 独立判定 → コメント(履歴参照)

#124208 [release/10.0] Fix PerfMap crash when Enable IPC command is sent early in startup

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

DiagnosticServerが起動初期段階でPerfMap有効化コマンドを受け取った際のクラッシュを修正するバックポート。PerfMap初期化を早期に移動し、依存関係の準備完了までPerfMap機能の実行を遅延させることで、record-traceなどのツールが即座にPerfMapを有効化する場合でも安全に動作するようにします。

#124197 Fix misleading obsolete messages for Uri constructors with dontEscape parameter

@Copilot・GitHub・area-System.Net

Uriクラスの2つの廃止予定コンストラクタにおいて、誤解を招く廃止メッセージを修正するPRです。メッセージが「dontEscapeパラメータは常にfalse」と述べていましたが、実際にはこのパラメータは使用され、内部のUserEscapedフラグを設定します。誤った説明を削除し、より正確なメッセージに変更されました。

// 修正前
[Obsolete("This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(string) instead.")]

// 修正後
[Obsolete("This constructor has been deprecated. Use Uri(string) instead.")]

#124186 Revert System.Text.Json source generator changes from PR #124077

@Copilot・GitHub・area-System.Text.Jsonsource-generator

PR #124077で導入されたSystem.Text.Json ソースジェネレータの変更を部分的に巻き戻すPRです。変更によりKnownTypeSymbolsがCompilationごとにキャッシュされず、JsonSerializerContext処理時に毎回新規インスタンスが作成されてしまい、パフォーマンスが低下していました。このPRでは、インクリメンタルパイプラインパターンを復元し、KnownTypeSymbolsをCompilation単位でキャッシュすることでパフォーマンス回帰を解決します。

#124184 Remove redundant checked contexts around casts + more bounds checks

@EgorBo・GitHub・area-CodeGen-coreclr

JIT(Just-In-Time)コンパイラの最適化により、冗長なchecked文脈をキャスト操作から削除し、より多くの境界チェック最適化を実施するようになりました。事前の境界チェック(例:if (a > 100) の後の checked((byte)a))によって安全性が保証される場合、冗長なchecked修飾子を自動的に削除して、不要なチェック処理をスキップします。

#124132 Increase number of assertions (GlobalAP) + VN cache

@EgorBo・GitHub・area-CodeGen-coreclr

このPRは.NET JITコンパイラのアサーション伝播(Assertion Propagation)の最適化に関する2つの改善を実装しています。

  1. VN(Value Number)キャッシュの追加:アサーション存在チェックをO(1)で実行可能にし、コンパイル時間(TP)の回帰を約50%削減
  2. GlobalAPの最大アサーション数を増加:1M個のメソッドを分析した結果に基づき、基本ブロック数とトラッキング対象のローカル変数数をパラメータとする新しいヒューリスティックを導入

結果として、コード生成品質を改善しながらTP回帰を最小限に抑えています。

#124121 [release/10.0] Add missing HAVE_CLOCK_MONOTONIC to config.h.in

@Copilot・GitHub・Servicing-approvedarea-System.Threadinglinkable-framework

.NET 10 Linux環境において、システムクロックが後方に調整されたとき、Task.Delayなどのタイミング操作が無限にハングする回帰バグを修正します。CMakeが単調時計(monotonic clock)のサポートを検出しても、その設定値がPAL config.hヘッダーに伝播されていなかったため、ランタイムが誤って壁時計(CLOCK_REALTIME)にフォールバックしていました。設定ファイルに1行追加することで対応します。

#124075 Document EventSourceLoggerProvider non-caching behavior

@Copilot・GitHub・area-Extensions-Logging

EventSourceLoggerProvider.CreateLogger() がインスタンスをキャッシュせず、呼び出しのたびに新しい EventSourceLogger を生成する非キャッシング動作を明確に文書化するPRです。この動作は意図的(動的なEventSource/ETW設定変更のため連結リストを維持するため)ですが、Serilogのようにログイベントごとに CreateLogger() を呼び出すライブラリを混乱させていました。このPRは動作を変更せず、ドキュメントのみを追加更新します。

#123991 Fix ZipArchiveEntry.ExtractToFile corruption when extraction fails with overwrite=true

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

ZipArchiveEntry.ExtractToFileでoverwrite: true指定時に抽出失敗(パスワード保護やデータ破損など)すると、宛先ファイルが0バイトに破損する問題を修正しました。修正内容は、既存ファイル上書き時に一時ファイルへ抽出してから、抽出成功後のみ宛先へ移動させる戦略です。

// 修正前:ファイルを開いた後に抽出を試みるため、失敗時に既存ファイルが破損
using (var destination = new FileStream(destinationFileName, FileMode.Create))
{
    using (var source = zipArchiveEntry.Open())
    {
        source.CopyTo(destination); // ここで例外発生 → ファイルは既に空に
    }
}

// 修正後:一時ファイルに抽出して、成功時のみ移動
string tempPath = Path.GetTempFileName();
using (var destination = new FileStream(tempPath, FileMode.Create))
{
    using (var source = zipArchiveEntry.Open())
    {
        source.CopyTo(destination); // 例外発生 → 元のファイルは無傷
    }
}
File.Move(tempPath, destinationFileName, overwrite: true);

#123907 Fix bug in LowerCallMemmove

@EgorBo・GitHub・area-CodeGen-coreclr

LowerCallMemmove関数のバグ修正です。CORINFO_HELP_MEMCPY呼び出しで、memmove セマンティクスを使用すべき場合に正しく処理されていませんでした。修正により、Unsafe.CopyBlockUnalignedなどのコピー操作で、すべてのデータをレジスタに読み込んでから一度に書き込む、より効率的なコード生成が実現されます。

static void Test(ref byte a, ref byte b, uint len)
{
    if (len == 200)
    {
        Unsafe.CopyBlockUnaligned(ref a, ref b, len);
    }
}

#123562 Add an in-memory cache for CRLs on Linux

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

LinuxにおけるCRL(Certificate Revocation List)検証の性能向上を目的とした、メモリ内キャッシュレイヤーを追加します。固定サイズ30要素のLRU(Least Recently Used)キャッシュを実装し、GCのファイナライズタイミングで段階的にエントリを削除します。呼び出し元はAddReferenceで参照カウントを管理し、キャッシュ削除時はDisposeを呼び出すことでSafeHandleのファイナライズを回避します。

// キャッシュからCRLを取得(呼び出し元で参照カウント管理)
var crl = cache.GetOrAdd(crlPath);
try
{
    // CRL使用
}
finally
{
    crl.Release(); // 参照カウント減少
}

#123296 Fix BitArray to clear dangling high bits in LeftShift and deserialization

@Copilot・GitHub・area-System.Collections

BitArray.LeftShiftでシフト後に未使用の上位ビットがクリアされず、PopCount()が不正な値を返していた問題を修正しました。デシリアライゼーションコンストラクタでも同様の問題を修正し、ClearHighExtraBits()の呼び出しを追加しました。

// 修正前:LeftShift後にダングリングビットが残る
BitArray ba = new(33);
ba[^1] = true;
ba.LeftShift(1);
// ba.PopCount()が1を返す(不正)

// 修正後:ClearHighExtraBits()で未使用ビットをクリア
// ba.PopCount()が0を返す(正常)

2026年02月10日 (25 PRs)うち Bot 4 件 この日のページ →

#124237 Merging internal commits for release/8.0

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

このPRは、.NET 8.0リリースに向けたCOSE(Cryptographic Object Signing and Encryption)実装の改善をマージしています。主な改善点は、不定長CBORマップのデコード対応と、クリティカルヘッダー検証の強化です。特に、不定長配列の処理改善と空のクリティカル配列の拒否処理が追加されています。

#124236 Merging internal commits for release/9.0

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

COSE(CBOR Object Signing and Encryption)メッセージのデコーディングおよび署名動作を更新し、不定長CBOR コンテナをサポート、およびcrit(Critical Headers)ヘッダーの検証エラーをCryptographicExceptionで明確に表面化しました。定長・不定長両方のエンコーディング方式に対応したテストも追加されています。

// 不定長マップのデコードと crit ヘッダー検証の改善を実施
// Sign1・MultiSign の両メッセージ形式に対応

#124229 Further improvements to code-review skill

@stephentoub・GitHub・area-skills

dotnet/runtimeのコードレビュープロセスを改善するPRです。AIレビュアーが、PR/Issueのコメントに左右されないよう、コード自体から独立した意見を先に形成してから判断するプロンプトに変更しました。また、レビュー結果に「Needs Human Review」オプションを明示的に追加し、より懐疑的で厳密なレビューを促進します。

#124189 [Wasm RyuJit] avoid reverse ops

@AndyAyersMS・GitHub・area-CodeGen-coreclr

WebAssembly (Wasm) ターゲット向けの JIT コンパイラにおいて、オペランド評価順序のヒューリスティクスを調整しました。通常の評価順序を優先し、GT_REVERSE_OPS フラグの使用を抑制します。リロップ(演算子の変更で実現)と可換操作(オペランドの交換で実現)の場合のみ、反転が可能です。

Wasm では評価順序の反転がコード生成に悪影響を及ぼす可能性があるため、明示的に反転を抑制することでコード品質を向上させます。

#124183 JIT: Enable inlining of runtime async methods without awaits

@jakobbotsch・GitHub・area-CodeGen-coreclr

JITコンパイラがawaitを含まない非同期メソッドのインライン化を可能にするPRです。awaitが存在しない非同期メソッドはアロケーション不要で比較的シンプルなため、これらのメソッドのインライン化により呼び出しオーバーヘッドを削減できます。

// インライン化の対象例:awaitなしの非同期メソッド
public async Task<int> GetValueAsync()
{
    return await Task.FromResult(42); // FromResultはawaitなしで最適化可能
}

#124180 Fix Tensor.Reverse for tensors with length-1 dimensions

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

Tensor.Reverse<T>がlength-1次元(stride 0)を持つテンソルに対して不正な結果を返す問題を修正します。例えば、形状[1, 3]のテンソル[1, 2, 3]を反転すると、期待値は[3, 2, 1]ですが、修正前は[0, 2, 1]となっていました。

int[] data = [1, 2, 3];
var tensor = Tensor.Create<int>(data, [1, 3]);
var reversed = Tensor.Reverse<int>(tensor);
// 期待値: [3, 2, 1]
// 修正前: [0, 2, 1]  (最初の要素が未初期化)

#124177 Lower GT_RETURN_SUSPEND blocks to BBJ_RETURN

@jakobbotsch・GitHub・area-CodeGen-coreclr

AsyncSuspend組み込み関数の使用時に、GT_RETURN_SUSPENDノードがBBJ_RETURNブロック以外に存在する可能性がある問題に対応しました。ELTプロファイラーフックによるリターンマージにより発生するこの状況に対し、lowering処理を拡張してGT_RETURN_SUSPENDを含むブロックをBBJ_RETURNブロックに変換します。

#124110 [release/10.0] Fix token memory ordering issue reading from the MethodDef and FieldDef token tables (#123557)

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

メモリ順序付けに関する問題を修正したバックポート。TypeDefテーブルとMethodDef/FieldDefトークンマップテーブル間の読み込み順序が保証されておらず、特にArm64などの弱メモリ順序付けCPUで、実行時に予期しない読み込み順序が発生し、クラッシュを引き起こしていました。VolatileLoadを使用することで適切なメモリバリアを確保します。

// 修正前: メモリバリアなし(読み込み順序の保証がない)
VolatileLoadWithoutBarrier();

// 修正後: メモリバリアを明示的に挿入
VolatileLoad();

#124083 Fix MachO adrp/add and branch relocations with embedded addend

@jakobbotsch・GitHub・area-NativeAOT-coreclr

MachO形式のバイナリにおいて、adrp/addおよびbranch命令の再配置(relocation)処理を修正しました。これらの命令は埋め込み加数(embedded addend)を持つことができないため、代わりに追加の再配置エントリを使用する必要があります。オブジェクトライターはすでにこうしたエントリの作成方法を知っていましたが、一部のケースで命令に埋め込み加数が残されていた問題を解決します。

#124070 [release/10.0] Fix missing release semantics in VolatilePtr

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

VolatilePtr テンプレートクラスのメモリバリア欠落バグを修正。基底クラス Volatile<P> の operator= が release semantics を提供していたが、コンパイラ生成の代入演算子がこれを隠蔽し、メモリバリアなしの通常のストアを実行していました。Roslyn言語サーバーで非決定的なロックフリーレースによるクラッシュが発生していたため、using 宣言と明示的なコピー代入演算子を追加して修正します。

// 修正前: コンパイラ生成の代入演算子がrelease semanticsを失う
VolatilePtr<T, P> ptr;
ptr = other; // メモリバリアなしの通常ストア

// 修正後: 明示的な代入演算子がrelease semanticsを提供
class VolatilePtr : public Volatile<P>
{
    using Volatile<P>::operator=;  // 基底クラスのoperator=をスコープに導入
    VolatilePtr& operator=(const VolatilePtr<T,P>& other); // 明示的なコピー代入
};

#124055 Fix PerfMap crash when Enable IPC command is sent early in startup

@Copilot・GitHub・area-VM-coreclr

CoreCLR起動初期にPerfMapEnable IPC コマンドが到達した際のクラッシュを修正します。起動中の早い段階でGetAppDomain()やExecutionManager::GetEEJitManager()がNULLである場合、PerfMap::Enable(sendExisting=true)がクラッシュしていました。初期化完了を示すフラグを追加し、sendExisting処理の依存関係が準備できるまで当該処理をスキップする対応です。

#123987 Fix handling of errSSLClosedGraceful from SSLWrite on macOS

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

macOSのSecure Transportで、リモート側がclose_notifyを送信した後にSslStreamへの書き込みがDebug.Fail(デバッグビルド)または誤解を招く「Bad address」エラー(リリースビルド)を発生させる問題を修正します。原因はEncryptMessageがSSLWriteからのPAL_TlsIo.ClosedGracefullyステータスを処理していなかったためです。

#123933 Fix custom Uri parser edge-case when UriKind.Relative is used

@MihaZupan・GitHub・area-System.Net

カスタム UriParser を使用する場合、UriKind.Relative が要求されても絶対 Uri が返される可能性があるエッジケースを修正しました。この問題はカスタム パーサーが base.InitializeAndValidate() の検証エラーをクリアした際に発生していました。修正は else if (uriKind == UriKind.Relative) を if に変更するだけの単純な制御フロー調整です。

#123806 Fix integer overflow in ArrayList.IListWrapper.BinarySearch and improve test coverage

@Copilot・GitHub・area-System.Collections

ArrayList.IListWrapper.BinarySearchの整数オーバーフロー脆弱性を修正しました。midpoint計算をmid = (lo + hi) / 2からmid = lo + ((hi - lo) >> 1)に変更し、大規模配列検索時のオーバーフロー問題を解決します。併せてテストカバレッジを大幅に拡張しました。

// Before (overflows with large arrays)
int mid = (lo + hi) / 2;

// After (overflow-safe)
int mid = lo + ((hi - lo) >> 1);

#123702 update EnterpriseTests containers

@wfurt・GitHub・area-System.Nettest-enhancement

EnterpriseTests用のコンテナイメージをUbuntu 18.04から24.04へアップデートします。Ubuntu 24.04ではlibapache2-mod-auth-kerbとlibapache2-mod-auth-ntlm-winbindが廃止されたため、Kerberosモジュールをlibapache2-mod-auth-gssapiに置き換え、NTLM Winbindモジュールはソースからビルドして対応します。また、FTP TLS対応をProftpdの設定で追加します。

#123328 Fix authenticated proxy for dotnet restore

@ptarjan・GitHub・area-System.Net.Httpcommunity-contribution

プロキシ認証が必要な場合、407レスポンスを待たずに初回リクエストでProxy-Authorizationヘッダを先制的に送信するように修正しました。特に認証なしの接続を拒否するプロキシやHTTPS CONNECTトンネル、環境変数で指定された認証情報付きプロキシに対応します。

// SendWithProxyAuthAsync が ICredentials から認証情報を取得して
// 先制的に Basic 認証を送信するようになりました
var handler = new SocketsHttpHandler 
{ 
    Proxy = new WebProxy("http://proxy:port"),
    Credentials = new NetworkCredential("user", "password")
};

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

#124199 Use Helix ListFiles endpoint to work around dnceng#6072

@lewing・GitHub・area-skills

Helix work item Details APIの2つのバグ(サブディレクトリ内のファイル名が平坦化される、Unicode文字が拒否される)に対処するため、CI分析スキルをListFilesエンドポイント経由で取得するように変更。これにより、完全なサブディレクトリパスを保持し、Unicode文字を含むファイル名に対応したブロブストレージURIが取得できます。

// ListFilesエンドポイント使用でUnicode対応パスとサブディレクトリ情報を保持
// 例: xharness-output/logs/test/build.binlog → 完全なパスで取得可能

#124193 ci-analysis: Add Azure CLI guidance for AzDO pipeline investigation

@lewing・GitHub・area-skills

このPRは、AzDO(Azure DevOps)パイプラインの調査に関するドキュメントに、Azure CLIの使用ガイダンスを追加するものです。手動でのREST API構築への依存を減らし、az CLIコマンドの活用を推奨しています。主な追加内容は、認証確認、パイプラインクエリ、アーティファクト一覧化、およびREST API フォールバック条件の説明です。

#124182 Update code review skill

@stephentoub・GitHub・needs-area-label

dotnet/runtimeのコードレビュースキルドキュメントを更新し、レビュー出力の標準化、レビュー前のコンテキスト収集の推奨、複数モデル選択のガイダンスを改善しました。これにより、差分のみのレビューによるエラーを削減し、より効果的なコードレビュープロセスを実現します。

#124170 Use correct name for AZL3 build image

@akoeplinger・GitHub・needs-area-label

Azure DevOps のビルドパイプラインで使用されている Azure Linux 3(AZL3)ビルドイメージの識別子を、一時的な識別子から正式な識別子に更新するパッチです。パブリックパイプラインと内部パイプラインの両方で、ジョブが意図された AZL3 エージェントに正しくスケジュールされるようになります。

#124151 Rename azdo-helix-failures to ci-analysis and improve SKILL.md

@lewing・GitHub・area-skills

CI分析スキルの機能拡張と整理が行われました。ディレクトリ・スクリプト名がazdo-helix-failuresからci-analysisへリネームされ、より広範なCI分析に対応できるようになりました。SKILL.mdが大幅に改善され、使用パターン、制限事項、決定テーブル、アンチパターンが明確に文書化されました。PowerShell 5.1互換性の改善も実施されています。

#124147 Optimize redundant checked context in JIT

@EgorBo・GitHub・area-CodeGen-coreclr

JIT コンパイラの checked context における冗長なオーバーフロー チェック フラグを最適化する変更です。GetRangeFromAssertions を活用して、範囲解析により実行時にオーバーフローが発生しないと判定できる場合、不要なオーバーフロー チェック命令(jo とそれに続く CORINFO_HELP_OVERFLOW 呼び出し)を削除します。

int Case1(int[] arr)
{
    // JIT が配列サイズを [0..0x7FFFFFC7] と認識しているため
    // +10 はオーバーフローしない
    return checked(arr.Length + 10);
}

#124104 Skip PROCAbortInitialize on WASM

@steveisok・GitHub・area-PAL-coreclr

WASM環境でのランタイム初期化失敗を修正するPRです。WASM環境ではミニダンプがサポートされていないため、DOTNET_DbgEnableMiniDump=1の設定時にPROCAbortInitializeがg_szCoreCLRPathの未設定によって失敗していました。この変更により、WASM上での初期化処理をスキップします。

#124077 Improve LoggerMessageGenerator and JsonSourceGenerator incrementality

@Copilot・GitHub・area-Extensions-Loggingsource-generator

LoggerMessageGeneratorとJsonSourceGeneratorの増分生成を改善するPRです。両ジェネレータがパイプラインにCompilationを渡していたため、任意のコンパイル変更で全体が再実行されていました。本PRでは、属性付き構文ノードの変更時のみ再処理するよう、パイプラインをリファクタリングしています。Roslyn 3.11、4.0、4.4、4.8に対応しています。

#124042 Fix integer overflow in ImmutableArray range validation

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

ImmutableArrayの範囲検証でInteger Overflowが発生していた問題を修正。start + lengthの加算時にオーバーフローが発生すると、負の値になり検証をすり抜けて、配列割り当て時にOutOfMemoryExceptionが発生していました。例えば、start=1, length=int.MaxValueの場合にオーバーフローが発生します。

#124032 Revert "Temporarily disable ios_arm64 platform builds"

@kotlarmilos・GitHub・area-Infrastructure

iOS ARM64 プラットフォームビルドの一時的な無効化を取り消すリバートPRです。PR #123985で無効化されたiOS ARM64ビルドを再度有効化し、Mono、CoreCLR、Native AOTランタイムフレーバー全体でのiOS ARM64ビルドを復活させます。これにより、メインランタイムパイプラインと追加プラットフォームパイプラインの両方でiOS ARM64ビルドが実行されるようになります。

#124000 Fix mobile build and test failures in extra-platforms pipeline

@kotlarmilos・GitHub・os-androidarea-Infrastructureos-ios

extra-platformsパイプラインでのモバイルビルドおよびテスト失敗を修正するPRです。ZipMergedPayloadDirectoryターゲットが削除されたターゲットを参照していた問題を解決し、Native AOT モバイルテスト用のマーカーを追加、Androidの共有ライブラリテストを除外、Apple モバイルの不安定なソケットテストを無効化しました。

#123977 [browser] fix WBT EventPipeDiagnosticsTests timing

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

WebAssembly(WASM)環境でのEventPipeDiagnosticsテストのタイミングに関する問題を修正。主な修正は、Playwrightが非同期操作を待つことでEventPipeをブロックしていた問題を解決し、テストの安定性を向上させています。また、テストコードの可読性向上とサンプリング期間の延長(2秒→5秒)が含まれています。

#123966 Revert #112403

@agocke・GitHub・area-GC-coreclr

PR #112403で導入されたGC(ガベージコレクション)のピン昇格/降格処理の最適化が一部シナリオでハング(無応答)を引き起こすため、その変更を完全に戻すリバートPRです。ピン昇格決定ロジックをシンプルなインライン実装に戻し、抽出されたヘルパー関数を削除することで安定性を優先します。高ピン処理シナリオではパフォーマンス低下の可能性があります。

#123958 Add getWasmTypeSymbol API to JIT-EE interface

@Copilot・GitHub・area-crossgen2-coreclr

WebAssembly JIT コンパイラが WASM ネイティブ型のタイプシンボルハンドルを取得するための新しい JIT-EE インターフェース API getWasmTypeSymbol を追加します。この PR は完全なクロスレイヤプランビングを提供するインフラストラクチャ変更で、実装は UNREACHABLE() や NotImplementedException などのプレースホルダスタブで遅延されています。

// CEEInfo インターフェースに追加
CORINFO_WASM_TYPE_SYMBOL_HANDLE getWasmTypeSymbol(CorInfoType* types)

#123815 [clr-interp] Implement cached virtual/interface dispatch

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

CLRインタープリターにおける仮想/インターフェースメソッドディスパッチのキャッシング機構を実装しました。InterpDispatchCacheという簡易ハッシュテーブルを導入し、DispatchToken + target MTからターゲットメソッドへのマッピングをキャッシュします。VSDのDispatchCacheと同様の設計で、衝突時は新しいエントリで置き換えられ、置き換えられたエントリはGC時に解放されます。この実装により、マイクロベンチマークで4倍の高速化を実現しています。

#123407 Implement CreateFromDirectory TarEntryFormat overloads

@kasperk81・GitHub・community-contributionarea-System.Formats.Tar

TarFile.CreateFromDirectory メソッドに TarEntryFormat パラメータを指定できる4つの新しいオーバーロードを追加しました。これまではPAX形式のみでしたが、V7、Ustar、Pax、Gnuの4つの形式に対応します。既存メソッドは新しいオーバーロードにデリゲートし、デフォルト形式としてPAXを使用します。

// 新しいオーバーロード例
public static void CreateFromDirectory(
    string sourceDirectoryName, 
    Stream destination, 
    TarEntryFormat format)

public static Task CreateFromDirectoryAsync(
    string sourceDirectoryName, 
    Stream destination, 
    TarEntryFormat format, 
    CancellationToken cancellationToken = default)

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

#124146 Add official build freshness check to vmr-codeflow-status skill

@lewing・GitHub・area-skills

VMR(Visual Studio Runtime)公式ビルドの鮮度確認機能を追加し、Codeflow状態スキルの診断精度を向上させました。aka.ms経由で最後に成功したビルドのタイムスタンプを取得し、バックフロー停止の真の原因を特定できるようになります。従来の誤解を招く「Maestroが停止している可能性」という警告から、より正確な「アップストリームのビルドが古い」という診断に改善されました。

#124135 Document canceled job recovery in helix Copilot skill

@lewing・GitHub・area-skills

Azure DevOpsのタイムアウトなどによってキャンセルされたジョブから、Helixのテスト結果を回復する方法をドキュメント化しました。キャンセルされたジョブでもパイプラインアーティファクトに含まれるSendToHelix.binlogからHelixジョブIDを抽出し、Helix APIで直接クエリして結果を回復できることを解説しています。

#124129 [skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow

@lewing・GitHub・area-skills

dotnet/runtimeのVMRコードフロー状態スクリプトを改善し、Version.Details.xmlをVMRスナップショットの主要ソースとして使用するようになりました。手動バックフロー(darc vmr backflow)時にPRボディメタデータが古くなる問題を解決し、フォワードフロー(product repo → dotnet/dotnet)のスキャン機能も追加されました。

// Version.Details.xmlから<Source Sha=...>を解析する優先度
// 1. ng/Version.Details.xml内のSHA(正規表現フォールバック付き)
// 2. コミットメッセージ(セカンダリ確認)
// 3. PRボディ(最後の手段)

#124128 Fix JIT range analysis Multiply for ranges spanning negative values

@Copilot・GitHub・needs-area-label

JIT の範囲分析において、乗算演算が負の値を含む範囲に対して不正な結果を返していた問題を修正しました。例えば [-100..100] * [0..10] が [0..1000] ではなく正しく [-1000..1000] を返すようになります。標準的な区間演算のアプローチを採用し、4つのエンドポイント積すべての最小値・最大値を計算することで解決しています。

// 修正前の問題例
// (ushort)1 * (sbyte)(-1) で不正な結果が生成されていた
byte[] vr9 = s_12[0];
long vr10 = (ushort)s_4 * (sbyte)(-s_4);  // キャスト関連の最適化で誤った範囲に基づく生成コード

#124120 Remove HAVE_CLOCK_MONOTONIC and dead fallback code

@Copilot・GitHub・area-PAL-coreclr

HAVE_CLOCK_MONOTONIC マクロをすべてのUnix系プラットフォームから削除するリファクタリングです。このマクロはすべてのサポート対象プラットフォームで常に1に定義されているため、マクロ定義とその関連フォールバックコードを完全に削除し、clock_gettime(CLOCK_MONOTONIC, ...) の使用を標準化します。

#124041 Default to ninja for faster builds (mac & linux)

@steveisok・GitHub・area-Infrastructure

dotnet/runtime のビルドシステムで、macOS と Linux のデフォルトビルドツールを Ninja に変更するPRです。ベンチマーク結果によると、macOS では平均 654 秒から 718 秒への改善により、約 8.8% の高速化が期待されます。ユーザーは --ninja false オプションで従来のビルドシステムに戻すことができます。

#123956 Fix Crossgen2 failure on trimmed intrinsic types

@Copilot・GitHub・area-crossgen2-coreclr

Crossgen2がトリミングされたハードウェア拡張機能型を含むプロジェクトをコンパイルする際のTypeLoadException失敗を修正しました。InstructionSetGeneratorを改修し、型のロック時にGetType(..., false)を使用してnullを返すようにし、nullチェックを追加することで、トリミングされた型を適切にスキップできるようになります。

// 変更前: 型が見つからない場合に例外を発生
var type = Type.GetType("System.Runtime.Intrinsics.Arm.Crc32", true);

// 変更後: 型が見つからない場合にnullを返す
var type = Type.GetType("System.Runtime.Intrinsics.Arm.Crc32", false);
if (type != null)
{
    // 型を処理
}

2026年02月07日 (14 PRs)うち Bot 3 件 この日のページ →

#124126 Fix Helix file URIs for subdirectory artifacts (xharness-output)

@lewing・GitHub・area-skills

Helix CI分析スキルの2つの改善を実施しています。1つ目は、サブディレクトリ内のアーティファクト(例:xharness-output/wasm-console.log)に対するHelix APIの不正なURI返却に対応する修正です。2つ目は、スキルの適用範囲をCI失敗分析から一般的なCI状態分析へ拡大し、ビルド完全成功時や未実行時の情報も正確に表示するようになりました。

#124109 Add vmr-codeflow-status Copilot skill

@lewing・GitHub・area-skills

dotnet/runtime リポジトリに VMR(Vendor Managed Repository)コードフローの健全性を自動分析する新しい Copilot Agent Skill を追加します。このスキルは、バックフロー(VMR → 製品リポ)とフォワードフロー(製品リポ → VMR)の両方に対応し、PR メタデータの解析、スナップショットの検証、鮮度チェック、競合検出、修正トレースなどを実行して、推奨アクション(force trigger、close/reopen など)と実行可能な darc コマンドを提供します。

#124102 Fix ilink XML docs

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

ILLink trim analysis ソースコード内の XML ドキュメンテーション コメントの不正な形式を修正し、XML ドキュメント出力を有効にしたビルドが失敗しないようにしました。主な修正は、Nullable<T> テキストを Nullable{T} にエスケープし、<item> エントリを <list> ブロックで適切にラップすることです。

#124086 Fix #123950: Add missing HAVE_CLOCK_MONOTONIC to config.h.in

@Copilot・GitHub・area-PAL-coreclr

.NET 10 LinuxでTask.Delayがシステム時刻が逆方向にジャンプした時にフリーズする回帰バグを修正するPRです。CMakeはモノトニッククロック(CLOCK_MONOTONIC)サポートを検出していましたが、その結果がconfig.hに反映されず、ランタイムが壁時計時刻(CLOCK_REALTIME)にフォールバックしていたのが原因です。

// config.h.in に以下を追加
#cmakedefine01 HAVE_CLOCK_MONOTONIC

#124065 Remove O1K_BOUND_OPER_BND and O1K_BOUND_LOOP_BND

@EgorBo・GitHub・area-CodeGen-coreclr

JIT コンパイラの境界チェック最適化において、O1K_BOUND_OPER_BND と O1K_BOUND_LOOP_BND を削除し、統一された境界アサーション形式を導入しました。すべての境界関連アサーションが O1K_VN -- OAK_<relop> -- O2K_CHECKED_BOUND_ADD_CNS という単一形式に統一され、x < len と x < (len - 10) のような異なるパターンを均一に扱えるようになりました。

#124062 Fix TypeLoadException when async Task<T> overrides Task

@Copilot・GitHub・area-TypeSystem-coreclrruntime-async

async Task<T> がTask をオーバーライドする際に発生するTypeLoadExceptionを修正します。ランタイムが生成する非同期バリアント メソッド(アンラップされた戻り値型)が共変戻り値型の検証に不正に含まれていたことが原因です。

public abstract class Base {
    public abstract Task HandleAsync();
}

public class Derived : Base {
    // C#として有効だが、修正前はランタイムで拒否されていた
    public override async Task<string> HandleAsync() {
        await Task.Yield();
        return string.Empty;
    }
}

#124028 Wasm call fixes and more

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

WebAssembly(Wasm)のコール処理に関連した複数のコンパイラバグ修正を行うPull Requestです。境界チェック(GT_BOUNDS_CHECK)と生存期間管理(GT_KEEPALIVE)のコード生成修正、ヘルパー呼び出しの実装、デリゲート呼び出しのローリング処理の修正、配列アドレス最適化のarity検証修正、および値の番号付け(VN)でのヘルパー呼び出しarity問題の修正が含まれています。

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

#124084 [release/10.0] Fix SampleType field in ThreadSample event from Sample Profiler

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

.NET 9で導入されたリグレッションを修正するバックポート。SampleProfilerのThreadSampleイベントにおいて、SampleTypeフィールドがマネージドコード実行中でも常にEP_SAMPLE_PROFILER_SAMPLE_TYPE_EXTERNALを報告していた問題を解決します。新しいスレッド状態フラグTS_SuspensionTrappedを導入し、スレッドが協調的(cooperative)モード中に自発的に一時停止したかどうかを追跡することで、正確なプロファイリングデータを提供するようになります。

#124057 Update dogfooding.md to target .NET 11

@Copilot・GitHub

dogfooding.md ドキュメントを .NET 9 から .NET 11 に統一する更新です。main ブランチが現在 .NET 11 をターゲットしているため、ドキュメント全体を .NET 11 の pre-GA バージョンに一貫性を持たせています。

#124049 Remove dead thread suspension code from PAL

@Copilot・GitHub・area-PAL-coreclr

PAL(Platform Abstraction Layer)から約1,200行の不要なスレッド制御コードを削除し、単一統一されたpthread mutex基盤の実装に統一しました。複数の古い同期メカニズム(POSIX semaphore、SysV semaphore、pthread condition variable、spinlock)と関連インフラをクリーンアップし、コードベースを大幅に簡素化しています。

#124023 Run the issue-labeler over pull requests using polling

@jeffhandley・GitHub・area-Infrastructure

Copilot作成のPull Requestでissue-labelerワークフローが実行されない問題を解決するため、ポーリング機構を導入しました。5分ごとのcronスケジュールで未ラベル化されたPRを検出し、issue-labelerを実行します。これにより、Copilot PRやGitHubサービス中断時にラベル付けが漏れたPRも対象となります。

#124019 Fix SampleType field in ThreadSample event from SampleProfiler

@steveisok・GitHub・area-Diagnostics-coreclr

ThreadSample イベントの SampleType フィールドが常に EP_SAMPLE_PROFILER_SAMPLE_TYPE_EXTERNAL を報告していた問題を修正。.NET 9 で SuspendAllThreads を NativeAOT から CoreCLR に移植した際のリグレッション。修正により、マネージドコード実行中のスレッドは RareDisablePreemptiveGC で自身の GC モード(マネージド/外部)を保存するようになり、サンプラーがより正確なサンプルタイプを報告可能に。

#124018 [RyuJit/WASM] Simple RA

@SingleAccretion・GitHub・arch-wasmarea-CodeGen-coreclrcommunity-contribution

WebAssembly(WASM)ターゲット向けのレジスタ割り当て(RA)アルゴリズムを簡素化・改善するPRです。追跡対象の各ローカル変数に仮想レジスタを割り当て、その仮想レジスタを物理的なWASM局所変数にマッピングするシンプルで正確性の高い設計を導入しました。将来的には、境界チェック用の内部レジスタなどの追加機能の基盤となります。

#124012 Add [IgnoreILFailure] support to ILLink test framework.

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

ILLink テストフレームワークに [IgnoreILFailure] 属性を追加し、特定の IL 検証エラーを選択的に無視できるようにしました。これにより、System.Private.CoreLib の IL 修正時にオフセット変更によって引き起こされる検証エラーを個別にフィルタリングできるため、アセンブリ全体の IL 検証を無効化する必要がなくなります。

また、デバッグ効率化のため ILVerifierResult に [DebuggerDisplay] 属性も追加しました。

#124010 Display method variants in R2RDump

@jtschuster・GitHub・area-R2RDump-coreclr

R2RDump(Ready2Run ダンプツール)で、メソッドシグネチャにプレフィックスを追加し、メソッドエントリーポイントテーブルのダンプ出力において、タスク返却メソッド、async メソッド、async resumption stub などの異なるメソッドバリアントを識別可能にしました。

#124006 [wasm][coreclr] Add scripts to generate the helpers

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

WebAssemblyにおけるCoresCLRの開発効率を向上させるために、C++ヘルパーファイルを自動生成するためのシェルスクリプトを追加しました。Unix/macOS用のBashスクリプト(generate-coreclr-helpers.sh)とWindows用のバッチスクリプト(generate-coreclr-helpers.cmd)により、ManagedToNativeGeneratorタスクの実行を自動化します。

#123913 Add an azdo failure skill

@lewing・GitHub・area-Infrastructure

Azure DevOps と Helix テスト失敗を分析するための AI エージェントスキルを追加します。Copilot に CI 失敗の調査方法を教え、PR番号またはビルドIDからAPIクエリを実行し、失敗詳細を抽出して改善提案を提供します。dotnet/runtime、sdk、aspnetcore、roslyn など複数リポジトリに対応し、既知問題との照合や PR の変更との相関分析も実施します。

#123719 Fix ZipArchive Update mode rewriting unchanged archives on Dispose

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

ZipArchive の Update モードで、エントリストリームを開く際に実際のデータ書き込みがなくても、アーカイブが変更済みと誤認識され、Dispose 時に不要な再書き込みが発生していた問題を修正しました。これにより、MemoryStream などの拡張不可能なストリームで NotSupportedException がスローされていた問題が解決されます。

// 修正前:ストリームを開いただけで変更済みとマーク
using (var archive = new ZipArchive(stream, ZipArchiveMode.Update))
{
    var entry = archive.CreateEntry("test.txt");
    var entryStream = entry.Open(); // この時点で変更済みとマーク
    // 実際に書き込まない場合、Dispose時に不要な再書き込み
}

// 修正後:実際の書き込み時にのみ変更済みとマーク
using (var archive = new ZipArchive(stream, ZipArchiveMode.Update))
{
    var entry = archive.CreateEntry("test.txt");
    var entryStream = entry.Open();
    // 書き込みがなければ、Dispose時に再書き込みされない
}

#123644 [AsyncV2] Runtime support for breakpoints and stepping

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

Runtime Async v2メソッドのデバッガサポートを実装しました。Async メソッドは同じメタデータトークンを持つ2つの MethodDesc バリアント(Task返却アダプタの"thunk"と実装)を生成しますが、デバッガはthunkと実装を区別できず、ステップイン失敗やブレークポイント バインディング問題が発生していました。本PR は新しい AsyncThunkStubManager を追加し、ステップイン時のthunk認識、ブレークポイント バインディングの制御、スタックウォークでの非表示化を実現します。

#123643 Add support for encoding Continuation types with specific layouts in ReadyToRun

@jtschuster・GitHub・area-crossgen2-coreclr

ReadyToRun (R2R) イメージにおけるContinuation型のエンコード機能を追加しました。新しいフィックスアップタイプ(READYTORUN_FIXUP_Continuation_Layout = 0x37)を導入し、GC参照マップをビットベクトルからバイト配列に展開してエンコードします。ランタイム側ではGetContinuationTypeFromLayoutによる復号化とLoadDynamicInfoEntryによる処理に対応しました。

// Continuation型フィックスアップのエンコード例
// GC refmap → byte array 展開
// R2Rイメージから動的に型情報を復号化

#123500 JIT: Run full liveness in MinOpts for async

@jakobbotsch・GitHub・area-CodeGen-coreclr

MinOpts(最小化最適化)コード生成時に、async中断を跨いでのローカル変数の生存性判定を改善しました。従来はすべてのローカル変数をliveと見なしていましたが、本PRで完全な生存性分析(full liveness)を実行することで、余分なlifted state生成を削減し、全体的なパフォーマンスを向上させています。

2026年02月05日 (23 PRs)うち Bot 5 件 この日のページ →

#124054 Add tests for NumberStyles.AllowTrailingInvalidCharacters

@Copilot・GitHub

NumberStyles.AllowTrailingInvalidCharacters モードの包括的なテストカバレッジを追加するPRです。このスタイルは Parse/TryParse API が最初の無効な文字までを解析し、消費した文字数を返すことを可能にします(Utf8Parser の動作に類似)。すべての整数型、浮動小数点型、BigInteger を対象とした計1,152行のテストが追加されました。

// 例: "123abc" を解析する場合
// 値: 123, 消費文字数: 3
if (int.TryParse("123abc", 
    NumberStyles.AllowTrailingInvalidCharacters, 
    CultureInfo.InvariantCulture, 
    out var result))
{
    // result = 123
}

#124030 Introduce OAK_

@EgorBo・GitHub・area-CodeGen-coreclr

このPRは、JITコンパイラの値番号付け(VN)ベースのアサーション表現を簡潔にするものです。従来の relopVN OAK_[NOT]_EQUAL 0 という表現から、op1VN OAK_<relop> op2VN という直接的な表現に統一することで、アサーション処理を効率化し、将来の最適化を可能にしています。

// Before: assertion consumers had to call GetVNFunc to extract operands
relopVN OAK_NOT_EQUAL 0

// After: direct relational assertion
op1VN OAK_LE op2VN

#123999 JIT: Further liveness cleanups

@jakobbotsch・GitHub・area-CodeGen-coreclr

JITコンパイラのライブネス解析フェーズをリファクタリングする変更です。各ライブネスフェーズを独立した関数に分離し、LiveVarAnalysisクラスをLivenessクラスに統合しました。機能的な動作変更はありませんが、MSSQLコンパイラでのインライン決定に関連したテンポラルパフォーマンス回帰が存在します。

#123970 Remove unused library_hash and library_hash_path from deps_entry_t

@Copilot・GitHub

.NET ランタイムのホストポリシーコンポーネントから、deps_entry_t 構造体の未使用フィールド library_hash と library_hash_path を削除するクリーンアップです。これらのフィールドは deps.json ファイルから解析されていましたが、実際には読み込まれていないデッドコードでした。

#123964 [mono] read $DOTNET_STARTUP_HOOKS

@jonathanpeppers・GitHub・area-EnC-mononeeds-area-label

Monoランタイムが $DOTNET_STARTUP_HOOKS 環境変数を読み込まない問題を修正します。現在、System.StartupHookProvider.ProcessStartupHooks() 呼び出し時に空文字列のみが渡されており、他のランタイム(CoreCLRなど)と異なる動作をしていました。この修正により、Monoでも環境変数から起動フックを正しく読み込めるようになり、ランタイム間の一貫性が向上します。

// 修正前の問題
// Mono側では DOTNET_STARTUP_HOOKS 環境変数を無視し、
// 手動でホスト設定を追加する必要があった
<RuntimeHostConfigurationOption Include="STARTUP_HOOKS" 
    Value="MyStartupHook" 
    Condition=" '$(UseMonoRuntime)' == 'true' " />

// 修正後
// CoreCLRと同じように DOTNET_STARTUP_HOOKS 環境変数が読み込まれる

#123919 Reduce the amount of string copying and comparing when resolving assets on startup

@elinor-fung・GitHub・area-Host

アプリケーション起動時のアセット解決処理を最適化し、文字列の比較とコピーを削減しました。サービス提供ディレクトリ名との不要な文字列比較を回避し、TPA リスト構築時のdeps_asset_tアセットのコピーを削減することで、空のコンソールアプリケーション起動時に約1000個のメモリ割り当てを削減しました。ベンチマーク結果では平均起動時間が55.77msから55.48msに短縮(-0.5%)されており、標準偏差も0.50msから0.35msに改善されています。

#123888 Sve2: Add ShiftRightLogicalNarrowingSaturate(Even|Odd)

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

ARM SVE2命令セットに対する2つの新しいシフト命令 ShiftRightLogicalNarrowingSaturate(Even|Odd) を追加します。これらの命令は、ベクトル要素を論理的に右にシフトしながら、結果を狭い型に飽和させます。

// 使用例
Vector<ulong> input = ...;
Vector<uint> result = Sve2.ShiftRightLogicalNarrowingSaturateEven(input, shiftAmount);

#123779 [EventPipe] Add dotnet_ipc_created mapping

@mdh1418・GitHub・area-Tracing-coreclr

EventPipeに新しいマッピング dotnet_ipc_created を追加し、.NETプロセスの診断ポート(listen port)が正常に作成されたことを低オーバーヘッドで外部ツールに通知できるようにしました。従来は複数の一時ファイルディレクトリをスキャンする必要がありましたが、この変更によりプロセスの準備完了を効率的に検出できます。

#123721 Add AppContext switch for SignedInfo maximum number of references.

@vcsjones・GitHub・area-System.Security

SignedInfo クラスの <Reference> 要素の最大数を AppContext スイッチで設定可能にしました。従来は 100 に硬直していましたが、.NET Framework の互換性を復元し、多数の参照を含む SOAP メッセージなどのワークロードに対応します。

// 使用例:AppContext で最大参照数を設定
AppContext.SetSwitch("System.Security.Cryptography.MaxReferencesPerSignedInfo", 200);

#123651 Fix debugger hangs due to runtime deadlock by using patch DJI

@Copilot・GitHub

DebuggerController::BindPatchメソッド内でGetJitInfo呼び出しがハッシュマップ検索時にロック順序違反を起こし、デバッガハングが発生する問題を修正。パッチにDebuggerJitInfo(DJI)が既に存在する場合、それを直接使用してGetJitInfo呼び出しを回避することで、ロック競合を排除します。

// 修正例(C++の実装)
DebuggerJitInfo *info = patch->HasDJI() ? patch->GetDJI() : g_pDebugger->GetJitInfo(pMD, (const BYTE *)startAddr);

#122722 Runtime-async Exception.ToString()

@rcj1・GitHub・area-ExceptionHandling-coreclrarea-NativeAOT-coreclrruntime-async

このPRは、CoreCLRとNativeAOT両方の実行時における非同期スタック(runtime-async stacks)でのスタックトレース収集を実装します。Exception.ToString()で非同期待機チェーン(async-await chain)のフレームを例外スタックトレースに含めることで、より完全なスタックトレース情報を提供します。主な実装は、AsyncHelpers内でContinuationのDiagnosticIPを使用してフレームを追加し、ThrowExactヘルパーで既存のスタックトレースを保持しながら例外を再スロー(ExKind.RethrowFlagを利用)することです。

#120535 Fix indentation and formatting inconsistencies in .json files (#119468)

@amritanand-py・GitHub・area-Metalinkable-frameworkcommunity-contribution

このPRは、dotnet/runtimeリポジトリ全体の.jsonファイルにおけるインデンテーションとフォーマットの不一致を修正するものです。セマンティックな変更は一切なく、スタイル・フォーマットのみを統一しています。約40個のJSONファイルを2スペースインデント(またはプロジェクト定義のインデント)に統一し、余分な空白を削除して構造を整理しました。

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

#124002 Clarify AddFilter parameter documentation

@Copilot・GitHub・documentationarea-Extensions-Logging

Microsoft.Extensions.LoggingのAddFilterメソッドのXML文書化を改善し、フィルター関数のパラメータ(string?型)の意味を明確化しました。プロバイダータイプ名、カテゴリ名、ログレベルなどのパラメータの役割と、戻り値(trueでログを許可、falseでフィルタリング)の意味を詳細に記載しました。

#123993 SPMI: Fix TOC logic broken after PAL cleanup

@jakobbotsch・GitHub・area-CodeGen-coreclr

PR #116096のPALクリーンアップ後、SPMI(SuperPMI)のTOC(Table of Contents)ファイル検出ロジックが反転していたバグを修正しました。この不具合により、TOCファイルが使用されず、superpmi-diffsのパフォーマンスが大幅に低下していました。修正により、asmdiff生成処理が約55倍高速化されました。

// 修正内容のイメージ
// Before: if (fileExists) { skip TOC file }
// After:  if (!fileExists) { skip TOC file }

#123980 Fix timeout/duration calculations using monotonic time and precise tick accumulation

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

TimeSpan.Milliseconds(0-999の成分値)とTimeSpan.TotalMilliseconds(総ミリ秒数)の誤用を修正するPRです。System.Net.Socketsではタイムアウト計算が非単調時間源を使用していた問題も解決します。例えば2.5秒経過時、.Millisecondsは500を返しますが.TotalMillisecondsは2500.0を返します。

// 修正前(間違い)
timeout -= (DateTime.UtcNow - waitStart).Milliseconds;  // 1秒以上経過時に大幅に短縮

// 修正後(正しい)
long waitStart = Stopwatch.GetTimestamp();
timeout -= (int)Stopwatch.GetElapsedTime(waitStart).TotalMilliseconds;

#123974 [release/11.0-preview1] Revert [browser] Use Runtime=NET for build tasks

@lewing・GitHub・Servicing-approvedarea-Build-mono

PR #123304で導入されたRuntime="NET"属性を使用したWebAssembly SDK pack タスクの最適化を取り消すバックポート。この機能がSDK形式のプロジェクトでのみサポートされており、Blazorテストが失敗するため、マルチターゲティング(net11.0 + net472)とMSBuildRuntimeType ベースのTFM選択に戻します。

// 復元されるマルチターゲティング
<PropertyGroup>
  <TargetFrameworks>$(NetCoreAppToolCurrent);$(NetFrameworkToolCurrent)</TargetFrameworks>
</PropertyGroup>

// Runtime="NET"からTaskHostFactoryに戻す
<UsingTask TaskName="..." TaskFactory="TaskHostFactory" ... />

#123973 Revert "[browser] Use Runtime=NET for build tasks in WebAssembly SDK"

@lewing・GitHub・area-Build-mono

PR #123304で導入されたRuntime="NET"アプローチをリバートする変更です。WebAssembly SDKのビルドタスクをマルチターゲット(net11.0 + net472)に戻し、TaskFactory="TaskHostFactory"と TFM ベースの選択を復活させます。理由はRuntime="NET"がSDKスタイルプロジェクトのみでサポートされており、非SDKスタイルプロジェクトから呼び出すと失敗するため、および.NET Runtime Task Host インフラがまだ成熟していないためです。

#123965 Add PrivateAssets to PackageReference in Microsoft.NET.Sdk.IL

@ViktorHofer・GitHub・needs-area-label

Microsoft.NET.Sdk.IL プロジェクトファイルの PackageReference に PrivateAssets="all" 属性を追加し、ビルド時の依存パッケージ(Microsoft.DotNet.Build.Tasks.Templating)が NuGet パッケージの推移的依存関係として公開されることを防ぐ変更です。これにより、P1 への影響回避とパッケージ解決の問題を修正します。

#123955 Make all fields in AssertionDscOp1 and AssertionDscOp2 private

@EgorBo・GitHub・area-CodeGen-coreclr

このPRは、JITコンパイラのAssertionDsc、AssertionDscOp1、AssertionDscOp2構造体の全フィールドをprivateに変更し、公開getterで検証ロジック付きで公開する変更です。アサーション値が不正なコンテキストで変更されることを防ぎ、メモリレイアウトの最適化(64ビットで40バイト)を実現しています。フィールド名をm_プレフィックスに統一し、JitDumpの出力も改善されています。

#123938 [release/9.0-staging] Update MsQuic version to 2.4.16

@ManickaP・GitHub・Servicing-approvedarea-System.Net.Quic

MsQuic(マイクロソフトのQUICプロトコル実装)をバージョン2.4.16に更新するリリースブランチのバックポートです。このパッチバージョン更新により、Windows環境でのQUIC通信のサポートが改善されます。既にメインブランチと.NET 10で数ヶ月間安定稼働しているため、低リスクの変更です。

#123926 JIT: Standardize Compiler* field naming to m_compiler

@AndyAyersMS・GitHub・area-CodeGen-coreclr

このPRはJITコンパイラの約40のクラス・構造体におけるCompiler*フィールドの命名を統一し、すべてm_compilerという一貫した名前に標準化しています。これまでm_comp、m_pComp、m_pCompiler、comp、compilerなど多様な命名パターンが混在していた部分を整理し、コード可読性と保守性を向上させています。

#123914 Port backreference SequenceEquals optimization to RegexCompiler

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

RegexCompilerの正規表現バックリファレンスマッチング処理にパフォーマンス最適化を追加しました。大文字小文字を区別する場合にSequenceEqualを使用することで、文字ごとの比較から効率的なスパン比較に変更。これにより、RegexSourceGeneratorと同じ最適化アプローチが実装されました。

// 最適化前:文字ごとの比較
// 最適化後:SequenceEqualによるスパン比較
if (spanA.SequenceEqual(spanB))
{
    // マッチ処理
}

#123865 Avoid throwing exceptions in Process.KillTree during process enumeration

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

Process.KillTreeがプロセス列挙中に大量の例外をスロー・キャッチしていた問題を修正しました。デバッガ接続時に23秒かかっていた処理が0.17秒に改善されます。非スロー型のヘルパーメソッド(TryGetStartTime、TryGetParentProcessId)を追加し、例外を最小限に削減しながらプロセスツリーの終了機能を維持します。

// 修正前:例外が大量に発生
process.StartTime;  // アクセス不可なプロセスでException

// 修正後:例外なし
TryGetStartTime(out DateTime startTime);  // bool戻り値で安全

#123825 [release/10.0] Fix internal validation pipeline

@jkoritzinsky・GitHub・Servicing-approvedarea-Infrastructure

.NET 10.0向けのリリースブランチにおいて、内部ビルドの検証パイプラインを修正するインフラストラクチャのみの変更です。VMR(Unified Repository)からのバックフロー検証を有効化するために、NuGetソース認証の設定を一元化し、内部ビルド用のHelixキューを適切に選択するように修正されています。

#123759 [wasm][coreclr] Fix reflection with large valuetypes

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

WebAssembly上のCoreClRで、大きなバリュー型(large valuetypes)に対するリフレクション呼び出しのサポートを実装しました。thisポインタと戻り値バッファ(retbuf)の引数順序を変更し、新しい呼び出し規約に対応しています。この修正により、Pri0テストで6個、Pri1テストで約2000個のテストが修正されます。

// 大きなバリュー型をリフレクションで呼び出す場合の改善
public struct LargeValueType
{
    public long Field1;
    public long Field2;
    // ... large data
}

// リフレクションを使用した呼び出しが正常に動作するようになりました
object result = method.Invoke(target, parameters);

#123478 Add OpenStandardInputHandle, OpenStandardOutputHandle, and OpenStandardErrorHandle APIs

@Copilot・GitHub・area-System.IO

OpenStandardInputHandle、OpenStandardOutputHandle、OpenStandardErrorHandle の3つの新しい公開API を System.Console に追加するPRです。これらのAPIは、標準入力・出力・エラーストリームの基盤となるOSハンドル(SafeFileHandle)を取得するための機能を提供します。

// 使用例
SafeFileHandle inputHandle = Console.OpenStandardInputHandle();
SafeFileHandle outputHandle = Console.OpenStandardOutputHandle();
SafeFileHandle errorHandle = Console.OpenStandardErrorHandle();

#123273 [clr-interp] Convert call stub logging to LOG2 facility

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

インタープリタコールスタブのログ出力を、コンパイル時の#if LOG_COMPUTE_CALL_STUBディレクティブからランタイム制御可能なLOG2ファシリティに変換しました。これにより、再コンパイルなしにデバッグ時のログを有効化できるようになります。環境変数DOTNET_LogFacility2=0x2 DOTNET_LogLevel=10000で制御可能です。

2026年02月03日 (30 PRs) この日のページ →

#123945 Don't ping codegen team for codegen label

@EgorBo・GitHub・area-CodeGen-coreclr

area-CodeGen-coreclr ラベルの自動割り当て機能を削除するための変更です。このラベルは dotnet/runtime で最も使用頻度の高いラベルであり、CodeGen チームへの自動通知が大量のメール混乱を引き起こしていたため、PR #122357 での変更を取り消します。チームは既存の方式で全ての関連 Issue を確認しているため、この自動割り当てが不要と判断されました。

#123934 Add an ASCII check for edge-case non-ASCII hosts that can't be Punycode encoded

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

DNS制限を超過するホスト名(長いラベルを含む場合など)でPunycodeエンコーディングに失敗し、IdnHostが非ASCII値を返すエッジケースに対応しました。このケースでHTTP処理のデバッグアサーション失敗が発生していたため、ASCII検証ロジックを追加して堅牢性を向上させています。

#123916 Convert add-new-jit-ee-api prompt file to skills format

@Copilot・GitHub

Copilotが使用するプロンプトファイルを、オープンスタンダードの Agent Skills 形式に移行しました。VS Code 専用のプロンプトファイル (.github/prompts/add-new-jit-ee-api.prompt.md) を、Copilot Coding Agent や GitHub Copilot CLI でも利用可能な Skills 形式 (.github/skills/add-new-jit-ee-api/SKILL.md) に変換しています。コンテンツは保持され、フロントマターのみ形式を適応させています。

#123915 Update area-owners for libraries

@jeffhandley・GitHub・documentationarea-Meta

dotnet/runtime リポジトリのエリアオーナーシップ割り当てを更新するPRです。Extensions関連のエリア(Caching、Configuration、DependencyInjection、FileSystemなど)の所有者を @jeffhandley から @karelz に変更し、System.Reflection関連のエリア(Reflection、Reflection.Emit、Reflection.Metadataなど)を @agocke に、System.Diagnostics.Process を @SamMonoRT に割り当て直しています。

#123911 Fix off-by-one error in TypePreinit switch instruction handling

@sbomer・GitHub・area-NativeAOT-coreclr

TypePreinitのswitch IL命令ハンドラーにおけるオフバイワンエラーを修正します。ECMA-335仕様に従い、switch値がケース数以上の場合(value >= count)に次の命令にフォールスルーする必要がありますが、修正前はvalue > countのみをチェックしていました。値がケース数と正確に一致する場合、存在しないジャンプテーブルエントリーを読み込もうとしてILリーダーのオフセットが破損し、NativeAOT コンパイル中にIndexOutOfRangeExceptionが発生していました。

#123906 Use SequenceEqual instead of SequenceCompareTo in SslStreamPal.SelectApplicationProtocol

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

SSL/TLS ALPN(Application-Layer Protocol Negotiation)プロトコル選択処理において、バイトシーケンス比較の実装をより適切で読みやすいパターンに改善しました。SequenceCompareTo<byte>(...) == 0 の比較パターンを SequenceEqual(...) メソッドに置き換えることで、コード意図の明確化とイディオマティックな実装を実現しています。

// 変更前
if (supportedProtocols[i].SequenceCompareTo(protocol) == 0)

// 変更後
if (supportedProtocols[i].SequenceEqual(protocol))

#123900 Use Contains in FileSystemName.MatchPattern

@stephentoub・GitHub・area-System.IO

FileSystemName.MatchPatternメソッドにおいて、DOS_STAR ワイルドカード処理中のピリオド検出ロジックを手動ループから組み込みのContainsメソッドに置き換えました。コード可読性と保守性の向上を実現しています。

// 変更前: 手動ループ
for (int i = 0; i < length; i++)
{
    if (span[i] == '.') { /* ... */ }
}

// 変更後: Contains を使用
if (span.Contains('.')) { /* ... */ }

#123875 Fix certificate disposal in RemoteCertificateValidationCallback causing NRE on reuse

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

RemoteCertificateValidationCallbackで追加された証明書がSslStreamにより不正に破棄されることで発生するNREバグを修正。ユーザーがX509Chain.ChainPolicy.ExtraStoreに追加した共有証明書が複数のハンドシェイク間で再利用される際、ExtraStoreの破棄ロジックを改善して証明書の所有権を正しく判断するようにしました。

// 修正前:コールバック経由で追加された証明書も常に破棄される
chain.ChainPolicy.ExtraStore.Add(sharedCert);
chain.Reset();
chain.Build(cert); // 次の呼び出しで NRE 発生

// 修正後:RemoteCertificateValidationCallback が存在しない場合のみ破棄

#123856 Remove a few TP-heavy GlobalAP optimizations

@EgorBo・GitHub・area-CodeGen-coreclr

JIT コンパイラのグローバル最適化パス(GlobalAP)から、低効率な複数の最適化ロジックを削除しました。optAssertionVnInvolvesNan、optImpliedByConstAssertion、optImpliedByTypeOfAssertions、およびVnAssertionMappingを廃止することで、最大-0.4%のタイム・フェーズ(TP)改善を実現しながら、削除されたコードを他の有価値な最適化(例:アサーション有効化)に充てることができます。

https://github.com/dotnet/runtime/pull/123333 [NativeAOT] fix NAOT mappings (follow-up to )

@rcj1・GitHub・area-NativeAOT-coreclr

NativeAOT(Native Ahead-of-Time)のIL(Intermediate Language)オフセットからネイティブコードの行番号へのマッピング処理における2つのバグを修正しました。前回のPR #123333で発生した問題を解決し、IL オフセットがシーケンスポイントの最高値を超えるケースや、中間値のケースで適切にドキュメント情報を保持し、ネイティブ←→行番号マッピングを生成できるようにしました。

#123805 Fix DateOnly/TimeOnly TryParse to throw on invalid DateTimeStyles and format specifiers

@Copilot・GitHub・breaking-changearea-System.DateTime

DateOnly.TryParse/TryParseExact と TimeOnly.TryParse/TryParseExact メソッドが無効な DateTimeStyles パラメータに対して false を返す代わりに ArgumentException をスローするよう修正しました。これにより、DateTime や DateTimeOffset などの他の .NET API との一貫性が確保されます。

// 修正前:false を返す
DateOnly.TryParseExact("2064-07-01", "yyyy-MM-dd", null, DateTimeStyles.AssumeUniversal, out var result);

// 修正後:ArgumentException をスロー
DateOnly.TryParseExact("2064-07-01", "yyyy-MM-dd", null, DateTimeStyles.AssumeUniversal, out var result);
// → ParamName = "style" の ArgumentException

#123739 [RyuJIT Wasm] Add Object Writer Imports Section + Constant Exprs to Encode R2R Payload Placement

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

このPRは、WebAssembly(Wasm)のオブジェクトライターにインポートセクションの生成機能を追加します。ランタイムから提供されるenv.memory、__stack_pointer、__r2r_startをインポートし、定数式拡張を使用してR2Rペイロード配置のアドレス計算を行います。モジュールメモリのエクスポート削除により、ランタイムとのメモリ共有に対応します。

#123695 Prep filter for NtQueryDirectoryFile

@JeremyKuhne・GitHub・area-System.IO

NtQueryDirectoryFileでフィルタリング機能を実装するための準備作業です。適切にエスケープされたフィルタであれば使用できるようにしており、.と..などの特殊ディレクトリのみブロックされます。Windows ファイルシステム列挙の効率化と柔軟性向上が目的です。

#123433 Place async resumption info in read-write section outside Windows for AOT

@jakobbotsch・GitHub・area-CodeGen-coreclr

ELF/MachO形式では読み取り専用セクション(.rodata)から.textセクションへのリロケーションがサポートされていません。このPRは、async resumption infoを生成する際に、必要に応じてこのデータを読み取り/書き込み可能なセクションに配置するよう、ilc/crossgen2を改善します。これにより、AOT(Ahead-of-Time)コンパイル時のリロケーション問題を解決します。

// MethodReadWriteDataNode.cs に新しく追加されたノード
// async resumption infoを読み取り/書き込み可能セクションに配置

#123183 Support devirtualizing non-shared GVMs in R2R

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

このPRは、Ready2Run (R2R) コンパイル時に非共有汎用仮想メソッド (GVM) の仮想化解除(devirtualization)をサポートするためのもので、マネージ型システムに実装されています。共有GVMの仮想化解除はまだ汎用コンテキストの不足により実装されていません。NativeAOTでは、JITが太いポインタのヘルパーコール処理を改善する必要があるため、今回は非共有ケースが優先されています。

#122501 [RISC-V] Fix 64-bit offset handling in emitLoadImmediate

@credo-quia-absurdum・GitHub・area-CodeGen-coreclrcommunity-contributionarch-riscv

RISC-V JIT コンパイラの emitLoadImmediate 関数における64ビットオフセット処理の修正です。32ビット表現でのオフセット計算が32ビットを超える場合に未定義動作を引き起こし、冗長な命令生成につながる問題を解決しました。現在の実装は正確性を損なっていませんが、将来の拡張時にも堅牢であることを確保します。

2026年02月02日 (31 PRs)うち Bot 5 件 この日のページ →

#123908 [Wasm Ryujit] Flow cannot fall through into a throw helper

@AndyAyersMS・GitHub・area-CodeGen-coreclr

Wasm RyuJIT におけるコントロールフロー制御の不正な落下(fall-through)を修正するPR です。throw helper ブロックに対して新しい BBF_THROW_HELPER フラグを導入し、複雑なヒューリスティック検出ロジック(約60行)をシンプルなフラグチェックに置き換えました。これにより、ブロック途中からの分岐時に throw helper への不正な落下を防止します。

#123902 Revert TargetFramework to net10.0 in BlazorWebWasm test assets for backport branch

@Copilot・GitHub

BlazorWebWasm テスト アセットのターゲットフレームワークを net11.0 から net10.0 に修正するバックポートブランチ向けの変更です。release/10.0 ブランチに対応させるため、テストプロジェクトの設定を正しいフレームワークバージョンに戻しています。顧客コードには影響なく、テスト インフラストラクチャのみの修正です。

#123899 Fix ListDictionaryInternal.Count to not be O(n)

@stephentoub・GitHub・area-System.Collections

ListDictionaryInternal内のNodeKeyValueCollectionクラスのCountプロパティをO(n)からO(1)に最適化しました。従来の実装では全ノードをトラバースして件数をカウントしていましたが、親リストが既に管理しているcountフィールドを直接参照するよう改善されています。

// 改善前: O(n)トラバース
public int Count
{
    get
    {
        int count = 0;
        for (DictionaryNode node = list.head; node != null; node = node.next)
            count++;
        return count;
    }
}

// 改善後: O(1)直接参照
public int Count => list.Count;

#123886 Lazy-initialize DateTimeFormatInfoScanner.m_dateWords

@stephentoub・GitHub・area-System.Globalization

DateTimeFormatInfoScannerの内部フィールドm_dateWordsをレイジー初期化に変更するPRです。日付単語を持たないカルチャが多くある中で、不要なメモリ割り当てを避けることができます。既に初期化チェックは実装されていたため、変更は限定的です。

// 変更前:常に初期化
private List<string> m_dateWords = new();

// 変更後:遅延初期化
private List<string>? m_dateWords;

// 使用箇所で初期化
m_dateWords ??= [];

#123881 Fix ElidedBoundsChecks test failure under jitstress_isas_nohwintrinsic

@Copilot・GitHub

ElidedBoundsChecksテストの失敗を修正するPRです。CountDigitsメソッドがulong.Log2()を使用しており、このメソッドがハードウェア命令(x64のLzcnt、ARM64のArmBase)に依存しているため、jitstress_isas_nohwintrinsic実行時に境界チェック除外が機能せず、テストアサーションが失敗していました。対象のメソッド呼び出しをハードウェア命令の利用可能性で条件付けることで解決しています。

#123862 Replace outdated Array.Empty comments with correct reason

@Copilot・GitHub

このPRは、CA1825ルール抑制コメントの誤った説明を修正するものです。3つのライブラリファイルで「Array.Empty<T>() doesn't exist in all configurations」という古い理由から、正確な理由である「avoid the extra generic instantiation for Array.Empty<T>()」に更新しました。これは、汎用インスタンス化のオーバーヘッドを回避する実装上の最適化が理由であることを明確にしています。

#123845 Introduce factory methods to create assertions

@EgorBo・GitHub・area-CodeGen-coreclr

JIT コンパイラのアサーション処理をリファクタリングするゼロ差分のクリーンアップ変更です。AssertionDsc オブジェクトの生成に専用のファクトリメソッド(AssertionDsc::Create*)を導入し、AssertionDsc* ポインタを const AssertionDsc& 参照に置き換えることで、メモリセーフ性を向上させ、TP(スループット)パフォーマンスも向上させます。

// ファクトリメソッドの導入例
// 従来: 直接構築 -> optCreateAssertion() で処理
// 新規: AssertionDsc::CreateBinaryOp(...) で生成
// const参照化: AssertionDsc* param -> const AssertionDsc& param

#123832 Replace some uses of MethodDescCallSite with UnmanagedCallersOnly methods

@AaronRobinsonMSFT・GitHub・NO-MERGEarea-VM-coreclr

このPRは、MethodDescCallSite機構を使用した呼び出しを、UnmanagedCallersOnly属性が指定されたメソッドへの直接ポインタ呼び出しに置き換えるリファクタリングです。逆P/Invoke呼び出しを簡潔に実装し、ランタイムのアンマネージド間境界処理を最適化します。

// UnmanagedCallersOnly を使用した呼び出しの例
[UnmanagedCallersOnly]
public static void MyNativeCallback() { }
// 従来の MethodDescCallSite 経由ではなく、
// 関数ポインタで直接呼び出し可能に

#123826 Add null check for ThreadLocalStoragePointer in COMUnhandledExceptionFilter to prevent crash on Windows

@Copilot・GitHub・area-ExceptionHandling-coreclr

Windows環境において、スレッド初期化の非常に早い段階で未処理例外が発生した場合にCOMUnhandledExceptionFilter内でTLS(スレッドローカルストレージ)ポインタがまだ初期化されていないことに起因するクラッシュを防ぐため、Null チェックを追加しました。他のグローバル例外ハンドラーに同様のチェックが既に存在します。

#123818 Fix HFA tests with interpreter

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

ARM64プラットフォームでHFA(Homogeneous Floating-Point Aggregate)引数がスタック上で渡される場合、インタープリタのスタックスロットサイズに整列していないときにテストが失敗していた問題を修正しました。コールスタブジェネレーターが隣接する2つのスタック範囲をマージする際に、前の引数がインタープリタスタックスロットの途中で終了することを考慮していなかったのが原因です。

// スタック範囲をマージする前にインタープリタスロットサイズでの整列チェックを追加
// 例: HFA引数がスタックスロット境界を跨ぐ場合の不正なマージを防止

#123817 Fix reachable Debug.Assert in InterleavedZipPackagePartStream.Length

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

System.IO.PackagingのInterleavedZipPackagePartStream.Lengthプロパティに不正なDebug.Assert(CanSeek)が存在し、デバッグビルドでCanSeekがfalseの場合に失敗していた問題を修正。基盤となるZipArchiveEntry.Lengthはシークを必要としないため、このアサーションは不要でした。

// 修正内容: Debug.Assert(CanSeek) を削除
// 修正前は、CanSeekがfalseの場合にDebug.Assertが失敗していた
// 修正後は、シーク不可のストリームでもLengthプロパティが正しく動作
using (Stream stream = partEntry.GetStream(FileMode.Open))
{
    long length = stream.Length; // CanSeekがfalseでも動作
}

#123795 Add JIT regression test extraction skill

@Copilot・GitHub

dotnet/runtimeリポジトリにJIT回帰テスト抽出用のCopilotスキルを追加するPRです。このスキルは、GitHubのIssueから単独のJIT回帰テストケースを抽出して、src/tests/JIT/Regression/JitBlue/Runtime_<issue_number>/ディレクトリに保存するプロセスを自動化します。ステップバイステップのガイダンスと実際のテスト例(Runtime_99391、Runtime_97625、Runtime_95315など)に基づいたコード規約を提供します。

#123787 Fixed LoggerMessageGenerator message escaping.

@John-Leitch・GitHub・area-Extensions-Loggingcommunity-contribution

LoggerMessageGeneratorが生成するC#ソースコード内のメッセージ文字列をエスケープする処理を修正しました。バックスラッシュと0x20未満の全制御文字をエスケープして、生成される文字列リテラルが正当なC#コードになるようになりました。\rと\nは名前付きエスケープシーケンスとして、その他の制御文字は\xNN形式の16進エスケープシーケンスとして出力されます。

#123656 Polyfill span.Contains(T)

@MihaZupan・GitHub・area-Meta

このPull Requestは、Span<T>.Contains(T) メソッドをポリフィル実装として追加するもので、古い.NETバージョンでの互換性を提供します。変更ファイルは75個にわたり、主にポリフィル実装の追加とプロジェクトファイルの構成管理が行われています。

// 新しいポリフィル実装の例
public static bool Contains<T>(this Span<T> span, T value) 
    where T : IEquatable<T>
{
    for (int i = 0; i < span.Length; i++)
    {
        if (span[i].Equals(value))
            return true;
    }
    return false;
}

#123629 [browser][coreCLR] finalizer on a browser event loop

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

Webアセンブリ(WebAssembly)ブラウザ環境でのファイナライザー実行を改善するPRです。ブラウザのイベントループ上で安全にファイナライザーを実行できるようにスケジューリング機構を再構築しました。ファイナライザースレッドの動作をブラウザのシングルスレッド環境に適応させています。

#123531 Add DecompressionMethods.Zstandard for HTTP automatic decompression

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

HTTP自動レスポンス展開機能に Zstandard(zstd)圧縮サポートを追加します。DecompressionMethods 列挙型に Zstandard = 0x8 を追加し、HttpClientHandler および SocketsHttpHandler が zstd エンコードされたレスポンスを自動的に展開できるようになります。既存の Brotli サポートと同じパターンに従っています。

var handler = new HttpClientHandler
{
    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Zstandard
};
using var client = new HttpClient(handler);
var response = await client.GetAsync("https://example.com");

#123342 ServiceProviderEngineScope should aggregate exceptions in Dispose rather than throwing on the first

@rosebyte・GitHub・area-Extensions-DependencyInjection

DI(依存性注入)スコープ破棄時の例外処理を改善するPRです。従来は最初の例外で即座に破棄が中断されていましたが、本変更によりスコープ内のすべての一次消費可能オブジェクトを破棄した後に、複数の例外がある場合は集約例外として伝播させるようになります。これは.NET設計ガイドラインに準拠し、リソースリークを防ぎます。

// 変更前:最初の例外で破棄が停止
try { disposable1.Dispose(); } catch { throw; } // 後続の破棄が実行されない
// disposable2, disposable3...は破棄されない

// 変更後:すべて破棄してから例外を集約
try { disposable1.Dispose(); } catch(e) { exceptions.Add(e); }
try { disposable2.Dispose(); } catch(e) { exceptions.Add(e); }
// 最終的にexceptionsが複数あればAggregateExceptionを伝播

#123115 Fix vectorization of Ascii.Equals for lengths 8..15

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

Ascii.Equalsのベクトル化において、WideningLoaderを使用する場合の最小長チェックが誤っていた問題を修正しました。従来はVector128<TLeft>.Count(16)を使用していましたが、実際の最小値はVector128<TRight>.Count(8)であるため、長さ8~15のバイト列比較がベクトル化されず、スカラー処理へ不必要にフォールバックしていました。

// 修正前: byte(Count=16)を基準に、8-15の範囲で効率化できていない
if (length < Vector128<TLeft>.Count) { /* scalar path */ }

// 修正後: ushort(Count=8)を基準に、8-15の範囲も効率的にベクトル化
if (length < Vector128<TRight>.Count) { /* vectorized path */ }

#123022 Arm64: Fix for 96441

@dhartglassMSFT・GitHub・area-CodeGen-coreclr

ARM64アーキテクチャにおいて、条件付きインクリメント命令(cinc/csinc)への変換が最適化されました。特に、ローカル変数と定数を比較するSELECTCCパターン(例:if (lzcnt==0) lzcnt=1;)が正しく条件付きインクリメント命令に変換されるようになりました。

public static int RuneLength(in byte value)
{
    var lzcnt = (uint)BitOperations.LeadingZeroCount(~((uint)value << 24));
    if (lzcnt is 0) lzcnt++;  // この条件付きインクリメントがcinc命令に最適化される
    return (int)lzcnt;
}

#117571 JIT: Move remaining xarch floating->integral cast implementation to lowering

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

このPRはxarch上での浮動小数点→整数キャスト処理をJITの低位化フェーズに完全に移行する変更です。従来はコード生成フェーズでgenFloatToIntCastにより処理されていた一部のキャストを、すべてHWIntrinsicノードに置き換えることで、コードサイズとスループットの改善を実現しています。

// 浮動小数点→整数キャスト処理が低位化フェーズで HWIntrinsics に置き換わります
// 例: (int)(float)value -> 対応するAVX10v2/AVX512命令に置き換え

2026年02月01日 (9 PRs) この日のページ →

#123854 Use [] instead of Array.Empty in corelib

@stephentoub・GitHub・area-Meta

このPRは、System.Private.CoreLibコードベース内の150以上のArray.Empty<T>()呼び出しを、モダンなC# collection expression構文[]に置き換えるコード改善です。ランタイムの動作は完全に同一で、両方式とも共有されたキャッシュ済みの空配列シングルトンを返すため、実質的な機能変更はありません。

#123852 Remove unused ToUpperInvariantMode methods

@Copilot・GitHub

OrdinalCasing.Icu.cs内の未使用メソッドToUpperInvariantModeを削除するクリーンアップPRです。charオーバーロードとReadOnlySpan<char>拡張メソッドの2つのオーバーロードが削除されます。コードベース全体で呼び出し元が存在しないことを確認済みで、同様の機能はToUpperOrdinalメソッドで提供されています。

#123850 Fix incorrect Vector256->Vector512 in SpanHelpers

@stephentoub・GitHub・area-System.Memory

SpanHelpers.T.csのNonPackedIndexOfAnyInRangeUnsignedNumberメソッドにおいて、Vector512高速パスでのポインタインクリメントが誤ってVector256のカウント値を使用していた問題を修正しました。これにより、Vector512使用時の不要な重複処理が排除され、パフォーマンスが改善されます。

// 修正前:Vector512ループでVector256のカウント分だけ進む(重複処理が発生)
offset += Vector256<T>.Count;

// 修正後:Vector512ループでVector512のカウント分だけ進む(正しい処理)
offset += Vector512<T>.Count;

#123842 Remove no-op string.Format calls with single message argument

@Copilot・GitHub

このPRは、フォーマット引数を持たない string.Format("message") の呼び出し239件を削除し、文字列リテラルに直します。テストコードとGCLogParserツール内の不要なメソッド呼び出しを除去する、コード品質改善PRです。

// 変更前
Assert.Fail(string.Format("Expected exception was not thrown"));

// 変更後
Assert.Fail("Expected exception was not thrown");

#123835 Remove extra array allocations from TarHeader.GetLongMetadataStream

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

TAR ライブラリの GetLongMetadataStream メソッドを最適化し、GNU フォーマットの TAR エントリ向けの長いメタデータストリーム生成時の不要な配列割り当てを削減しました。中間的なバッファ割り当てを排除し、単一のバイト配列に直接 UTF-8 バイトを書き込むように改善されています。

#123834 Remove no-op SR.Format calls with single message argument

@Copilot・GitHub・area-Meta

このPRは、フォーマット引数のないSR.Format(SR.SomeMessage)の呼び出しを削除し、直接SR.SomeMessageに置き換える機械的なリファクタリングです。67個の無操作(no-op)なSR.Format呼び出しを6つのライブラリにまたがって削除し、コードの明確性を向上させます。また、ComplexTypeRestrictionNotSupportedで検出された未使用の{0}プレースホルダーのバグを修正しました。

// 変更前
throw new InvalidOperationException(SR.Format(SR.SomeErrorMessage));

// 変更後
throw new InvalidOperationException(SR.SomeErrorMessage);
目次