注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #126254 [Wasm RyuJIT] Fix build break
- #126243 Fix RedirectedOutputDoesNotUseAnsiSequences test failure
- #126242 Escape U+2028/U+2029 in regex source generator XML doc comments
- #126238 [Wasm RyuJit] Fix another TARGET_64BIT issue
- #126227 Bump github/gh-aw-actions from 0.63.1 to 0.64.2
- #126221 Revert "Simplify RegexInterpreter (#124628)"
- #126216 Disable FastReducer_AssertFailure_RegressionTest on 32-bit platforms
- #126209 [Wasm RyuJIT] Basic implementation of int to float casts without overflow checks
- #126201 Avoid intermediate managed string and array allocations for envp and argv in Unix process start
- #126141 Revert "Partially revert PR #125326: revert ComActivator/LicenseInter…
- #126063 Prefer posix_spawn on OSX
- #126061 Replace MethodDescCallSite with UnmanagedCallersOnly in clrex.cpp
- #126007 Fix regex test OOM on x86 checked coreclr
- #125914 Fix flaky MountVolume tests: replace fixed delays with polling loops
- #125865 Adding R2R cDAC dump tests
- #125770 [Wasm RyuJIT] Address block store issues from #125756
- #125406 Enable runtime-async for shared framework source projects in net11.0+ and remove RuntimeAsync config knob
- #124794 Rewrite ConvertToDecimal in XslNumber.cs to use safe code with string.Create and for loop
#126254 [Wasm RyuJIT] Fix build break
- 作成者: @kg
- 作成日時: 2026年03月28日 13:30:32(UTC)
- マージ日時: 2026年03月28日 13:43:08(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WASM JIT Loweringパスのデバッグビルド破損を修正するPRです。SetMultiplyUsed呼び出しで、デバッグ構成において必須の"reason"引数を渡すようにしました。マージ時の競合により、チェックを通り抜けてしまった変更を修正します。
変更内容
- src/coreclr/jit/lowerwasm.cpp:
Lowering::LowerIndexAddrメソッド内のSetMultiplyUsed呼び出し(Arr()とIndex())に対して、DEBUGARG(...)マクロで理由文字列を追加(+2/-2行)
パフォーマンスへの影響
影響なし(デバッグビルド専用のコンパイル時引数追加)
関連Issue
なし
その他
デバッグ構成でのみ影響する変更で、DEBUGARGマクロはリリースビルドでは展開されません。
#126243 Fix RedirectedOutputDoesNotUseAnsiSequences test failure
- 作成者: @Copilot
- 作成日時: 2026年03月28日 05:51:30(UTC)
- マージ日時: 2026年03月28日 15:29:33(UTC)
- ラベル: area-Infrastructure
概要
RedirectedOutputDoesNotUseAnsiSequences テストの失敗を修正しました。xunitのバックグラウンド診断レポーター スレッドが、テスト実行中にリダイレクトされた Console.Out に対してテスト名を書き込み、キャプチャされた出力を汚染していたことが原因です。テスト本体を RemoteExecutor.Invoke() でラップして、xunitレポーター スレッドが干渉しない独立した子プロセスで実行するように修正しました。
変更内容
- src/libraries/System.Console/tests/Color.cs
[Fact]を[ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))]に変更- テスト本体を
RemoteExecutor.Invoke(static () => { ... }).Dispose()でラップして、子プロセスでのテスト実行と確実なリソース解放を実現
パフォーマンスへの影響
影響なし(テストの信頼性向上が目的)
関連Issue
その他
- 同じファイル内の兄弟テスト
RedirectedOutput_ColorEnvVars_RespectColorPreferenceで既に使用されている同じパターンに従っています - System.Console の全 4294 テストがパス(失敗 0)し、特に
RedirectedOutputDoesNotUseAnsiSequencesテストが安定して成功することを確認済み
#126242 Escape U+2028/U+2029 in regex source generator XML doc comments
- 作成者: @stephentoub
- 作成日時: 2026年03月28日 03:56:08(UTC)
- マージ日時: 2026年03月28日 10:39:02(UTC)
- ラベル: area-System.Text.RegularExpressions
概要
正規表現ソースジェネレータがXML doc コメント内でU+2028(行区切り文字)とU+2029(段落区切り文字)をリテラルで出力する際に、C#のコンパイラがコメント内の行終了と解釈してXML解析エラー(CS1519/CS1056)を引き起こす問題を修正しました。これらの文字をエスケープシーケンス(\u2028/\u2029)として出力することで問題を解決します。
変更内容
RegexGenerator.Emitter.cs:EscapeXmlCommentメソッドの有効文字判定パターンにnot 0x2028 and not 0x2029条件を追加。これにより、U+2028とU+2029はエスケープ済みの状態で出力されます。Regex.Match.Tests.cs: U+2028、U+2029、U+FFFEを含む正規表現パターンのテストケースを追加。ソースジェネレータを含む全エンジンで検証します。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
修正はXML doc コメント生成時のエスケープ処理に限定される内部実装の変更です。公開APIや正規表現のマッチング動作には影響しません。CR、LF、NEL等の他のC#行終止文字は既に処理範囲外となっていました。
#126238 [Wasm RyuJit] Fix another TARGET_64BIT issue
- 作成者: @AndyAyersMS
- 作成日時: 2026年03月28日 01:05:50(UTC)
- マージ日時: 2026年03月28日 13:59:23(UTC)
- ラベル: area-CodeGen-coreclr
概要
WebAssembly RyuJit構成におけるTARGET_64BITマクロの誤った使用を修正しています。WASM環境ではTARGET_64BITがfalseですが、longが分解されない場合がある点に対応するため、#ifndef TARGET_64BITを#if LOWER_DECOMPOSE_LONGSに置き換え、実際にlong分解を行うターゲット(x86/arm32など)でのみアサーション検証を実施するようにしました。
変更内容
- src/coreclr/jit/lower.cpp:
TryLowerAndNegativeOne関数のop2型アサーション周辺で、#ifndef TARGET_64BITを#if LOWER_DECOMPOSE_LONGSに変更(+2/-2行)
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#126227 Bump github/gh-aw-actions from 0.63.1 to 0.64.2
- 作成者: @dependabot[bot]
- 作成日時: 2026年03月27日 21:23:44(UTC)
- マージ日時: 2026年03月28日 01:44:56(UTC)
- ラベル: area-codeflow
概要
GitHub Actions の依存関係 github/gh-aw-actions を v0.63.1 から v0.64.2 にアップデートします。このアップデートには、sync-actions ワークフローでタグをプッシュした後に GitHub リリースを作成する機能が含まれています。
変更内容
.github/workflows/code-review.lock.yml: github/gh-aw-actions の参照を v0.63.1 から v0.64.2 に更新.github/workflows/copilot-echo.lock.yml: github/gh-aw-actions の参照を v0.63.1 から v0.64.2 に更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- Dependabot による自動アップデート PR です
- マイナーバージョンアップデート(0.64.0 → 0.64.2)を含みます
- ロックファイルのみの変更であり、ソースコードへの直接的な影響はありません
#126221 Revert "Simplify RegexInterpreter (#124628)"
- 作成者: @danmoseley
- 作成日時: 2026年03月27日 19:22:48(UTC)
- マージ日時: 2026年03月28日 01:42:21(UTC)
- ラベル: area-System.Text.RegularExpressions
概要
#124628で導入されたRegexInterpreter.MatchStringの簡略化(char-by-charループをStartsWith/EndsWithに置換)をrevertします。この変更により、arm64環境で短い文字列を対象とした正規表現パターン(例:.{0,2}(Tom|Sawyer|Huckleberry|Finn))で7-11%のパフォーマンス低下が発生したため、元の実装に戻します。
変更内容
- src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexInterpreter.cs
MatchStringメソッドを元のchar-by-charループ実装に戻す(+24/-7)- 短い文字列マッチで繰り返し呼び出される場合、
Slice+StartsWith+SequenceEqualのディスパッチオーバーヘッドが元のタイトループコストを上回るため、元の実装を復元
パフォーマンスへの影響
改善(revert による回復)
- arm64 (AmpereUbuntu):
Perf_Regex_Industry_Leipzigパターンで7-11%の低下を解消.{0,2}(Tom|Sawyer|Huckleberry|Finn): 5.56s → 5.01s(1.11x 改善).{2,4}(Tom|Sawyer|Huckleberry|Finn): 5.51s → 5.16s(1.07x 改善)
- x64: 1.03-1.04x の低下も回復予定
- 短い文字列(3-11文字)に対して数百万回の呼び出しが行われるケースで、SIMD最適化の恩恵が薄い場合に顕著な効果
関連Issue
その他
元のPR #124628で導入された最適化はx64環境では1.03-1.04xの回帰を示していたが、レビュー時に見落とされていました。短い文字列の頻繁なマッチングが必要な場合、簡潔さよりもパフォーマンスが優先されています。
#126216 Disable FastReducer_AssertFailure_RegressionTest on 32-bit platforms
- 作成者: @Copilot
- 作成日時: 2026年03月27日 18:31:19(UTC)
- マージ日時: 2026年03月28日 01:54:33(UTC)
- ラベル: area-System.Numerics
概要
32ビットプラットフォームでのFastReducer_AssertFailure_RegressionTestのテスト失敗に対するワークアラウンドです。[ActiveIssue]属性を追加して、32ビットプロセスで実行する際にこのテストをスキップします。
[Theory]
[MemberData(nameof(AssertFailureRegressionTest_InputData))]
[ActiveIssue("https://github.com/dotnet/runtime/issues/126212", typeof(PlatformDetection), nameof(PlatformDetection.Is32BitProcess))]
public static void FastReducer_AssertFailure_RegressionTest(...)
変更内容
- src/libraries/System.Runtime.Numerics/tests/BigInteger/modpow.cs
FastReducer_AssertFailure_RegressionTestメソッドに[ActiveIssue]属性を追加PlatformDetection.Is32BitProcessが真の場合にテストをスキップ
パフォーマンスへの影響
影響なし(テストスキップの条件付け変更のため)
関連Issue
その他
- BigInteger模指数演算(modpow)に関する回帰テストが32ビットプラットフォームで失敗/ハングする既知の問題に対する一時的な対応です
- 32ビット以外のプラットフォームではテストカバレッジは維持されます
- 本PR説明と関連コード変更はGitHub Copilotにより自動生成されています
#126209 [Wasm RyuJIT] Basic implementation of int to float casts without overflow checks
- 作成者: @kg
- 作成日時: 2026年03月27日 16:19:58(UTC)
- マージ日時: 2026年03月28日 17:39:00(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssembly(Wasm)RyuJIT上でのint/longからfloat/doubleへのキャスト処理の基本的な実装を追加します。オーバーフロー確認が不要な場合に対応し、Wasm命令セット(f32/f64.convert_{s/u}_{i32/i64})を活用した効率的なコード生成を実現します。
変更内容
- src/coreclr/jit/codegenwasm.cpp:
CodeGen::genIntToFloatCastメソッドの実装を追加- 整数型から浮動小数点型への変換にWasm命令を利用
- 符号付き/符号なし整数、32/64ビット整数の各パターンに対応
- 型チェックとオーバーフロー確認の適切なアサーションを追加
- 変換結果を出力レジスタ(
WasmProduceReg)に格納する処理を実装
パフォーマンスへの影響
影響なし(初期実装であり、ベンチマーク結果の記載なし)
関連Issue
なし
その他
なし
#126201 Avoid intermediate managed string and array allocations for envp and argv in Unix process start
- 作成者: @Copilot
- 作成日時: 2026年03月27日 13:51:59(UTC)
- マージ日時: 2026年03月28日 12:40:12(UTC)
- ラベル: area-System.Diagnostics.Process
概要
Unix プロセス起動時の argv と envp の構築に関わる中間的なマネージド割り当てを削除し、単一の連続したネイティブメモリブロックに直接エンコードするように最適化したものです。ProcessStartInfo.Environment 辞書を直接渡し、文字列連結や中間配列の割り当てを排除することで、メモリ効率を向上させます。
変更内容
CreateEnvpメソッドの削除 —startInfo.Environment辞書を直接ForkAndExecProcessに渡すよう変更し、中間的なKeyValuePair配列割り当てを排除AllocEnvpArrayメソッド(新規) — 辞書を直接受け取り、2パス方式を採用。第1パスでバッファサイズと エントリ数を計算し、単一のNativeMemory.Allocでポインタ配列とすべてのkey=value\0文字列データを含む連続ブロックを作成AllocArgvArrayメソッド(リファクタリング) — 同じ単一ブロック割り当てパターンに統一- Span ベースの境界チェック — ポインタ部分に
Span<nint>、データ部分にSpan<byte>を作成し、スレッドセーフな境界チェックを実装 - チェック済み算術 — バッファサイズ計算全体で
checked()を使用し、整数オーバーフロー対策を実施 - デバッグアサーション — 人口ループ後の検証を追加
- メモリ解放の簡素化 — N+1 個の個別解放から単一の
NativeMemory.Freeに変更
パフォーマンスへの影響
メモリ割り当て回数の削減:
- 改善前 —
key=value文字列(中間マネージド文字列)、中間配列、各文字列のネイティブ割り当てで複数回の割り当て+解放が発生 - 改善後 —
argvとenvp各ブロックで単一の割り当て・解放に削減
ヒープフラグメンテーション削減とメモリ確保/解放のオーバーヘッド低減が期待されます。
関連Issue
その他
内部実装の最適化であり、パブリック API に破壊的変更はありません。シングルスレッド環境でのプロセス起動のパス最適化です。
#126141 Revert "Partially revert PR #125326: revert ComActivator/LicenseInter…
- 作成者: @AaronRobinsonMSFT
- 作成日時: 2026年03月26日 01:00:53(UTC)
- マージ日時: 2026年03月28日 02:08:27(UTC)
- ラベル: area-Interop-coreclr
概要
COM ライセンス認証の実装をリファクタリングするプルリクエストです。以前の部分的なリバートをリバートし、CoreCLR と管理側のライセンス相互運用グルーを [UnmanagedCallersOnly] 呼び出しパターンと BSTR マーシャリングを使用するように改善します。また、ネイティブテストの所有権バグを修正し、不要なシグネチャを削除します。
変更内容
- ComActivator.cs:
LicenseInteropProxyに[UnmanagedCallersOnly]属性を追加し、BStrStringMarshallerを使用した BSTR 変換に切り替え(+36/-25) - holder.h:
FEATURE_COMINTEROP下に新規BSTRHolderRAII クラスを追加(+52行) - runtimecallablewrapper.cpp: ライセンス認証の呼び出しを
MethodDescCallSiteからUnmanagedCallersOnlyCallerに変更し、BSTRHolderを使用(+10/-31) - metasig.h: COM 関連メタシグ定義と重複する
RetObjシグネチャを削除(-10行) - corelib.h:
LICENSE_INTEROP_PROXYバインダーメソッドシグネチャをNoSigに変更 - utilcode.h: 古い
util::BSTRHoldertypedef を削除(-6行) - LicenseTesting.h: BSTR 所有権バグを修正(デストラクタ実行前に受け取った BSTR をコピー)
- その他: comex.cpp、interoputil.cpp、Program.cs の関連更新
パフォーマンスへの影響
影響なし
関連Issue
その他
このプルリクエストは、以前のリバート(#125706)を取り消し、COM ライセンス機能をより堅牢な設計パターン(UnmanagedCallersOnly と BSTR マーシャリング)に移行させるものです。テストサーバーの BSTR 所有権に関する潜在的なバグが修正されています。
#126063 Prefer posix_spawn on OSX
- 作成者: @Copilot
- 作成日時: 2026年03月24日 23:42:33(UTC)
- マージ日時: 2026年03月28日 09:59:02(UTC)
- ラベル: area-System.Diagnostics.Process tenet-performance
概要
macOS上でプロセス生成時にfork/execの代わりにposix_spawnを使用するよう変更しました。これにより、認証情報の設定が不要な場合のパフォーマンスと安全性が向上します。posix_spawnは認証情報設定に未対応のため、setCredentialsがtrueの場合は既存のfork/execパスにフォールバックします。
変更内容
pal_process.c:
SystemNative_ForkAndExecProcess関数にmacOS専用のposix_spawn実装を追加TARGET_OSXガード下でposix_spawnコードを配置(macOSのみ、iOS/tvOS等は除外)- シグナルマスク・シグナルデフォルト値をfork/execパスと同等に設定
- 標準入出力とカレントワーキングディレクトリのリダイレクトに
posix_spawn_file_actionsを使用 - エラーハンドリング時に
childPid = -1を設定、成功時のみ実際のPIDで上書き - 認証情報設定が必要な場合(
setCredentials)は既存のfork/execパスへフォールバック
ProcessTests.Unix.cs: 新テスト
ChildProcess_InheritsParentSignalMask_CanReceiveSignalsを追加- 親プロセスでシグナルハンドラが登録されている場合、子プロセスがシグナルを正常に受け取ることを検証
RemoteExecutorとPosixSignalRegistrationを使用- Windows上ではスキップ(SIGCONT非対応)
パフォーマンスへの影響
posix_spawnはfork/execより軽量で安全(Copy-on-Write不要、シグナルハンドラのスレッドセーフティ向上)ですが、具体的なベンチマーク結果は提供されていません。改善効果は認証情報設定不要なユースケースに限定されます。
関連Issue
その他
posix_spawn_file_actions_addchdir_npは対応macOSバージョンで常に利用可能のため、HAVE_定数による条件分岐なしで直接使用POSIX_SPAWN_CLOEXEC_DEFAULTやcreate_suspended、create_new_process_groupオプションは将来のPRに予定
#126061 Replace MethodDescCallSite with UnmanagedCallersOnly in clrex.cpp
- 作成者: @AaronRobinsonMSFT
- 作成日時: 2026年03月24日 23:03:01(UTC)
- マージ日時: 2026年03月28日 23:46:37(UTC)
- ラベル: area-ExceptionHandling-coreclr
概要
clrex.cppにおける例外構築パスをMethodDescCallSite/CallDescrWorkerからUnmanagedCallersOnlyCallerパターンへ移行するもの。ArgumentException、TypeLoadException、FileLoadExceptionの3つの例外についてVM-to-managed間の呼び出しをReverse P/Invokeパターンに統一し、コール機構の現代化を図る。
変更内容
- CoreLib例外クラス(3ファイル) -
[UnmanagedCallersOnly]ファクトリメソッドを追加(Exception.CreateArgumentException、TypeLoadException.Create、FileLoadException.Create) - clrex.cpp - 3つの
CreateThrowableメソッド内でMethodDescCallSiteの使用をUnmanagedCallersOnlyCallerに置換(92行追加、134行削除) - corelib.h - 新しい管理メソッドをバインダーに登録(
METHOD__EXCEPTION__CREATE_ARGUMENT_EXCEPTION等3つ) - metasig.h - 不要になったメタシグエントリ3つを削除
- wasm/callhelpers-reverse.cpp - WebAssembly向けのReverse P/Invoke実装追加(42行)
パフォーマンスへの影響
影響なし(呼び出し方式の近代化のみ)
関連Issue
その他
- 内部実装変更。ランタイムの例外構築メカニズムをモダンなReverse P/Invokeパターンに統一する継続的な改善。
- WebAssembly対応も含める必要があり、
callhelpers-reverse.cppにサポート実装を追加。
#126007 Fix regex test OOM on x86 checked coreclr
- 作成者: @danmoseley
- 作成日時: 2026年03月24日 02:33:55(UTC)
- マージ日時: 2026年03月28日 05:16:24(UTC)
- ラベル: area-System.Text.RegularExpressions
概要
x86 checked coreclr上でSystem.Text.RegularExpressions.Testsの4つのテストがOutOfMemoryExceptionで失敗する問題を修正します。SourceGenerated正規表現エンジンはテスト時にRoslyn全体コンパイルを実行し、大量のパターン(最大~2,903パターン)が32ビットアドレス空間(~2GB)を枯渇させます。本変更により、32ビットプロセスではRoslyn呼び出しごとに最大200パターンに制限し、メモリ使用量を削減します。
変更内容
- RegexGeneratorHelper.netcoreapp.cs:
!Environment.Is64BitProcess判定時、Rosynコンパイルを1回最大200パターンの小分けバッチで実行。64ビットでは変更なし。 - Regex.Match.Tests.cs:
CharClassSubtraction_DeepNesting_DoesNotStackOverflowテストを32ビットプロセスでスキップ。深さ1000の入れ子文字クラスBDD構築(RegexNodeConverter.CreateBDD経由)がアドレス空間を枯渇させるため。
パフォーマンスへの影響
32ビットプロセスでのテスト実行時間が増加(複数のRoslyn呼び出しが必要)。ただし、OOMによるテスト失敗の回避が目的であり、メモリ使用のピークを削減することで32ビット環境の安定性が向上。
関連Issue
その他
本修正対象のテストはいずれもテスト専用ヘルパー(RegexGeneratorHelper)と汎用テストコード内での変更で、公開API変更なし。スキップされるテストはwasm環境での先例(#125021)があり、32ビット環境での同種問題対応として一貫性がある。
#125914 Fix flaky MountVolume tests: replace fixed delays with polling loops
- 作成者: @Copilot
- 作成日時: 2026年03月22日 04:32:15(UTC)
- マージ日時: 2026年03月28日 04:59:45(UTC)
- ラベル: area-System.IO
概要
NTFS マウントポイント操作の伝播に必要な時間を考慮していない固定遅延(300ms)が原因で、Directory_Delete_MountVolume および Directory_ReparsePoints_MountVolume テストが高負荷CI環境で不安定になっていた問題を修正。固定遅延をポーリングループに置き換え、マウントボリュームの削除完了を確実に待機するようにしました。
変更内容
Delete_MountVolume.cs:
WaitForDirectoryGone(string path)ポーリング補助メソッドを追加。Directory.Exists()を100ms間隔で最大60秒間ポーリング(Stopwatchで経過時間追跡)Directory.Delete()後の固定遅延Task.Delay(300).Wait()7箇所すべてをWaitForDirectoryGone()に置き換えDeleteDirリトライループのTask.Delay(300).Wait()をThread.Sleep(300)に変更し、未使用のSystem.Threading.Tasksインポートを削除
ReparsePoints_MountVolume.cs:
DeleteDirメソッドにリトライロジックを追加。IOExceptionを明示的にキャッチし、最大10回まで200msのバックオフで再試行- マウント解放時に生じる一時的な
IOException(ボリュームがまだアンマウント中でレパースポイントディレクトリがカーネルによって一時的にロックされる場合)に対応 catch (IOException)ブロックに観測された一時的な失敗モードの説明コメント追加using System.Threadingを追加
パフォーマンスへの影響
影響なし。テストコードのみの変更で、本体ランタイム・ライブラリのパフォーマンスに影響はありません。テスト実行時間は若干増加する可能性がありますが、タイムアウトを60秒に設定しており、通常環境では固定遅延時代より改善されます。
関連Issue
その他
- テストはWindows限定(
[PlatformSpecific(TestPlatforms.Windows)]、NTFS必須)で、管理者権限環境でのみ実行可能 - CI環境での フラキネス削減の確認が必要
#125865 Adding R2R cDAC dump tests
- 作成者: @rcj1
- 作成日時: 2026年03月20日 21:37:05(UTC)
- マージ日時: 2026年03月28日 01:48:22(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Common Data Access Component)ダンプテストに対してR2R(Ready-To-Run)コンパイル検証機能を追加するPRです。ダンプテストがR2Rコンパイル版とJIT版(DOTNET_ReadyToRun=0で強制)の両構成でテストされるようになります。テスト構成はExecutionManagerおよびStackWalkダンプについてR2R vs JITの検証をカバーしています。
変更内容
- DumpTests基盤の拡張:
DumpTestBase.csを修正し、ダンプパス解決にR2RModeを含める。CDAC_R2R_MODES環境変数からモード情報を読み込み - ビルド/テスト構成:
DumpTests.targetsを拡張してダンプ生成をダンプタイプ × R2Rモードのクロスプロダクトで実行。debuggeeビルドをdotnet publish(PublishReadyToRun=true)に切り替え - Helixパイプライン統合:
cdac-dump-helix.projとcdac-dump-xplat-test-helix.projを更新。メタデータ生成・伝播によるCDAC_R2R_MODES設定 - メタデータ伝播:
Microsoft.Diagnostics.DataContractReader.DumpTests.csprojでdebuggee-metadata.propsを生成し、R2Rモード情報をテスト実行に引き継ぎ - Debuggeeプロジェクト規定:
Debuggees/Directory.Build.propsでR2RModes=R2Rをデフォルト設定。各debuggeeプロジェクトでPublishReadyToRunプロパティ追加 - テスト構成クラス更新:
TestConfiguration.csにR2RModeフィールドを追加 - ExecutionManager契約更新: インターフェース(
IExecutionManager.cs)と実装を調整。ドキュメント(ExecutionManager.md)更新
パフォーマンスへの影響
影響なし(テストカバレッジ拡張のみで、ランタイムのパフォーマンス特性には変更なし)
関連Issue
なし
その他
- ダンプレイアウトが
{dumpType}/{r2rMode}/{debuggee}/...構造に変更 - パイプラインメタデータ伝播により、x-plat Helix テストレグもR2Rモード情報を取得可能
- ExecutionManagerおよびStackWalkダンプテストが両構成(R2R・JIT)でカバーされる
#125770 [Wasm RyuJIT] Address block store issues from #125756
- 作成者: @kg
- 作成日時: 2026年03月19日 11:58:10(UTC)
- マージ日時: 2026年03月28日 12:41:03(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssembly RyuJIT のブロックストア(GT_STORE_BLK)のローリング/コード生成に関する問題を修正します。Issue #125756 で報告されたクロスジェン/デバッグビルド時のアサート失敗に対応するため、memory.copy/memory.fill オペコードの operand 表現と containment 処理を改善します。
変更内容
- src/coreclr/jit/lowerwasm.cpp:
LowerBlockStoreを修正し、GT_INDソースを contained として扱い、ローカルソースをアドレス形式に変換することでmemory.copyオペコードパスに対応 - src/coreclr/jit/codegenwasm.cpp: ネイティブバルクメモリオペコード(
memory.copy/memory.fill)のコード生成時に、operand の containment 期待値を検証するデバッグアサーションを追加 - src/coreclr/jit/regallocwasm.cpp: register allocation に関連する変更を追加
パフォーマンスへの影響
影響なし
関連Issue
その他
本 PR は複数回のレビューと修正を経ており、ブロックストア操作の lowering および codegen パスの一貫性強化を段階的に実施しています。作成者も完全な理解過程にあることが記載されています。
#125406 Enable runtime-async for shared framework source projects in net11.0+ and remove RuntimeAsync config knob
- 作成者: @Copilot
- 作成日時: 2026年03月10日 20:57:47(UTC)
- マージ日時: 2026年03月28日 17:46:01(UTC)
- ラベル: area-Infrastructure-libraries linkable-framework
概要
runtime-asyncをnet11.0以上の共有フレームワークソースプロジェクトで自動有効化し、設定用のRuntimeAsyncconfig knobを削除する変更です。プラットフォーム除外(browser、wasi、android、Apple mobile、Mono)とOOBパッケージの除外条件を設定し、RISC-VとLoongArchのリロケーションハンドリングを修正します。
変更内容
- src/libraries/Directory.Build.targets —
RuntimeAsyncSupportedプロパティを定義し、IsNETCoreAppSrcプロジェクトでnet11.0+対応プラットフォーム上のruntime-asyncを自動有効化。OOBパッケージ(IsPackable=true)は除外 - eng/testing/tests.targets — マッチング
RuntimeAsyncSupportedプロパティを定義。ライブラリがruntime-asyncで配布されるため、TestReadyToRun特別条件を削除 - src/coreclr/inc/clrconfigvalues.h —
UNSUPPORTED_RuntimeAsync設定定義を削除 - src/coreclr/vm/eeconfig.h/cpp —
runtimeAsyncフィールドとアクセッサメソッドを削除 - src/coreclr/vm/method.cpp —
g_pConfig->RuntimeAsync()ガード条件を削除 - src/tests/Interop/COM/RuntimeAsync/RuntimeAsync.csproj — 環境変数参照を削除
- src/coreclr/tools/Common/Compiler/ObjectWriter/PEObjectWriter.cs — RISC-VとLoongArchでのリロケーション処理を修正。addend非ゼロ時のエラー処理を削除し、
targetAddress = symbolImageOffset + addendでaddendを正しく反映
パフォーマンスへの影響
影響なし。runtime-asyncは既に機能として存在し、本変更は有効化条件の自動化とコンフィグ削除のみです。
関連Issue
なし
その他
- 互換性への影響 —
DOTNET_RuntimeAsync環境変数が削除されるため、この変数でruntime-asyncを制御していた環境では動作変更あり(net11.0+では無条件有効) - プレビュー機能削除 —
EnablePreviewFeatures=trueを削除。runtime-asyncはプレビュー機能でなくなります - プラットフォーム除外 — browser、wasi、android、Apple mobile(iOS/tvOS/macOS variants)、Monoは
RuntimeAsyncSupported=falseのため自動有効化対象外
#124794 Rewrite ConvertToDecimal in XslNumber.cs to use safe code with string.Create and for loop
- 作成者: @Copilot
- 作成日時: 2026年02月24日 14:30:59(UTC)
- マージ日時: 2026年03月28日 14:13:48(UTC)
- ラベル: area-CodeGen-coreclr reduce-unsafe
概要
XslNumber.csのConvertToDecimalメソッドをアンセーフコードからセーフコードに書き直しました。stackallocとポインタ演算を使用したunsafeブロックを、string.Createと境界チェック対応のforループに置き換えています。これにより、中間バッファのコピーを削減し、コード安全性を向上させます。
変更内容
XslNumber.cs:ConvertToDecimalメソッドの完全な書き直しstring.Createを使用して結果文字列に直接書き込み、中間のstackallocバッファを排除while (true)ループ+ポインタ走査をfor (int newPos = result.Length - 1; newPos >= 0; newPos--)に置き換え- グループ化セパレータ挿入ロジックは元のアルゴリズムと同等
- グループ化なし(
groupSize == 0)と非ASCII数字システム(shift != 0)の両パスを正しく処理 - 高速パスの早期リターン(
return str、return str.PadLeft(...))は保持
XslCompilerTests.cs:XslNumberDecimalFormattingという12ケースの[Theory]テストを追加- ノーオプ高速パス、パディングのみ高速パス、グループ化セパレータ、パディング+グループ化、非ASCII数字システム(アラビア数字、
shift != 0)などすべてのコードパスをカバー
- ノーオプ高速パス、パディングのみ高速パス、グループ化セパレータ、パディング+グループ化、非ASCII数字システム(アラビア数字、
パフォーマンスへの影響
- 中間
stackallocバッファのコピー処理が削減されるため、メモリ効率が向上 string.Createによる直接書き込みにより、割り当て操作が最小化- 具体的なベンチマーク数値は提供されていませんが、アンセーフコードの排除により予測可能なGC挙動が期待できます
関連Issue
なし
その他
- これはセーフコード化による保守性・安全性の向上が主目的であり、機能変更はありません
- 既存のテストケースに加え、包括的なテストカバレッジが追加されています