注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #131539 Unblock stacked PR CI by broadening PR branch filters in AzDO pipelines
- #131536 [Tests] Disable inproc crash reporter for intentional crashing tests
- #131524 [browser][mono][MT] Uncaught TypeError: He._emscripten_force_exit is not a function
- #131521 Remove length check on debug log content
- #131520 Fix crash dump exit code comparison
- #131518 [cDAC] Always assign IStringHolder in DacDbi GetModulePath for pathless modules
- #131513 JIT: rewrite wasm local.set/local.get as local.tee
- #131505 Fix CLR_Tools_Tests build break in WasmArgumentLayoutTests
- #131501 Fix deadlock between EventListenersLock and ArrayPoolEventSource static ctor
- #131489 Remove dead C++ wrappers left over from corehost C conversion
- #131485 JIT: include element info when comparing array address trees
- #131482 Fix Avx.Compare miscompile with non-constant FloatComparisonMode
- #131481 [Diagnostics] Avoid resolving IL offsets for framed crash frames
- #131479 Use an explicit allow list for SIMD types in getTypeLayout
- #131470 Improve MemoryCache performance under high contention
- #131469 [ci-scan-feedback] Route platform-specific crypto-config failures to loop-in
- #131458 Add universal DBI with private PAL
- #131437 Fix foreground shutdown test
- #131433 [Wasm RyuJit] assert function regions are contiguous after control flow
- #131410 Enable in-proc crash reporting on MacOS + Linux
- #131383 [wasm] Fix JIT helper calls modeled with the wrong return arity
- #131363 Harden dbgutil Windows PE export walk against corrupted or incomplete module data
- #131351 Provision wasm build/test tools into a shared, version-keyed cache
- #131294 Remove stale ML-DSA draft-10 PKCS#8 test gating
- #131282 Enable R2R for unresolved static virtual interface calls
- #131181 Make XsdDataContractExporter export consistent for ctor-less collections
- #131170 Vectorize BMP string
- #131092 Fix config binding source generator duplicating collection items bound through a constructor parameter
- #131009 [cDAC] Validate contract presence in interface returning functions
- #130373 Reconcile ReleaseHolder, ComHolderPreemp, and ComHolderAnyMode
- #126014 Update CMakePresets.json to 3.26 version
#131539 Unblock stacked PR CI by broadening PR branch filters in AzDO pipelines
- 作成者: @Copilot
- 作成日時: 2026年07月29日 17:03:46(UTC)
- マージ日時: 2026年07月29日 20:44:57(UTC)
- ラベル: area-Infrastructure
概要
スタックされたPR(中間ブランチをターゲットとするPR)のCI自動キューイングをサポートするため、AzDO パイプラインのPRブランチフィルターを拡張しました。従来はmain/releaseパターンに限定されていたため、スタック内の下流PRが検証を自動実行できていませんでした。
変更内容
17個のパイプラインYAMLファイルを更新 (
eng/pipelines以下)- CoreCLR、ハードウェア・インストリンシック、Linker、Diagnostics、VMR、Stress、パフォーマンスラッパーパイプライン
ブランチフィルターの変換ルール適用:
mainのみ → すべての非releaseブランチ(include: '*'+ release除外)main+ release → すべてのブランチ(include: '*')- release のみ → 変更なし
例:
pr.branches.include: [main]→include: ['*']+exclude: ['release/*', 'internal/release/*']
パフォーマンスへの影響
影響なし
関連Issue
その他
- パスフィルターおよび他のトリガーロジックは変更されていません
- パイプラインYAMLの
pr.branchesブロックへの最小限の編集です
#131536 [Tests] Disable inproc crash reporter for intentional crashing tests
- 作成者: @mdh1418
- 作成日時: 2026年07月29日 15:59:04(UTC)
- マージ日時: 2026年07月29日 21:15:00(UTC)
- ラベル: area-CodeGen-coreclr
概要
macOS/Linux での in-proc crash reporter 対応に伴い、意図的にクラッシュを誘発するテストで余分なクラッシュレポート出力が生成されるようになった問題を修正します。テスト環境のDOTNET_EnableCrashReport環境変数を明示的に無効化し、テスト出力のノイズを削減します。
変更内容
- unhandledTester.cs:
DOTNET_DbgEnableMiniDumpに加えてDOTNET_EnableCrashReportを無効化、コメント更新 - ParallelCrashTester.cs: 同様に
DOTNET_EnableCrashReportを子プロセス環境から削除 - stackoverflowtester.cs:
DOTNET_EnableCrashReportを無効化 - OutOfMemoryException.cs:
DOTNET_EnableCrashReportを無効化
これらの変更は、クラッシュが予期されるテストシナリオにおいて、in-proc crash reporter による追加出力(スタックトレース、スレッド情報、モジュール情報等)をテスト検証対象から除外します。
パフォーマンスへの影響
影響なし(テスト出力の削減のみで、実行時動作に変更なし)
関連Issue
なし
その他
この修正は、既存のDOTNET_DbgEnableMiniDumpによる createdump 無効化に加えて、新しく対応された in-proc crash reporter も明示的に無効化する対応です。ランタイム内部のテスト基盤に関する変更で、公開APIへの影響はありません。
#131524 [browser][mono][MT] Uncaught TypeError: He._emscripten_force_exit is not a function
- 作成者: @pavelsavara
- 作成日時: 2026年07月29日 12:39:28(UTC)
- マージ日時: 2026年07月29日 19:15:45(UTC)
- ラベル: arch-wasm area-Build-mono
概要
WebAssembly マルチスレッド build (WasmEnableThreads=true) で、実行時に _emscripten_force_exit 関数が見つからないエラーが発生する問題を修正します。Mono ブラウザ build 設定で、Emscripten のエクスポート対象に emscripten_force_exit を追加します。
変更内容
src/mono/browser/browser.proj: スレッド有効時の Emscripten エクスポートシンボルリストにemscripten_force_exitを追加(+1/-0)
パフォーマンスへの影響
影響なし
関連Issue
その他
- 対象: WebAssembly(ブラウザ)の Mono ランタイム
- このシンボルのエクスポートは、スレッド機能有効時のみに適用されます
#131521 Remove length check on debug log content
- 作成者: @rcj1
- 作成日時: 2026年07月29日 07:00:07(UTC)
- マージ日時: 2026年07月29日 19:23:50(UTC)
- ラベル: area-Diagnostics-coreclr
概要
CoreCLRのデバッガー右側(DBI)におけるDB_IPCE_FIRST_LOG_MESSAGEイベント処理で、ログメッセージ内容の長さ検証を削除します。ログスイッチ/カテゴリ名の検証はMAX_LOG_SWITCH_NAME_LENを使用するよう変更されます。
変更内容
- src/coreclr/debug/di/process.cpp:
CordbProcess::RawDispatchEvent内のログメッセージ内容の0x10000バイト上限検証を削除し、ログスイッチ/カテゴリの長さ検証をMAX_LOG_SWITCH_NAME_LENに変更。
パフォーマンスへの影響
影響なし
関連Issue
その他
注意: Copilotの指摘により、上限チェック削除後、cbExpected = cchContent * sizeof(WCHAR)の計算でオーバーフロー可能性があります。また、ReadVirtualの結果(cbRead)が検証されないため、不完全な読み込みでもバッファが未初期化のまま残る可能性があります。既存のSafeReadBuffer()関数を使用するか、読み込みサイズの検証を追加することが推奨されます。
#131520 Fix crash dump exit code comparison
- 作成者: @mdh1418
- 作成日時: 2026年07月29日 06:24:10(UTC)
- マージ日時: 2026年07月29日 14:10:32(UTC)
- ラベル: area-VM-coreclr
概要
CoreCLR のクラッシュダンプ終了ロジックにおいて、スタックオーバーフロー終了コードの確認時に発生する符号付き/符号なし比較警告(-Werrorで エラーとして扱われる)を修正しました。exitCodeをCOR_E_STACKOVERFLOWと比較する際に明示的なstatic_cast<UINT>(...)を追加することで、型の不一致を解決しています。
変更内容
- src/coreclr/vm/excep.cpp:
CrashDumpAndTerminateProcess関数のスタックオーバーフロー終了コード比較にstatic_cast<UINT>を適用(2箇所) - Windows 上の
CreateCrashDumpIfEnabled(...)のスタックオーバーフロー述語にも同様のキャストを適用
パフォーマンスへの影響
影響なし
関連Issue
その他
内部実装(CoreCLR VM の例外処理)の変更であり、公開 API への影響はありません。コンパイラ警告の解決に関連した修正です。
#131518 [cDAC] Always assign IStringHolder in DacDbi GetModulePath for pathless modules
- 作成者: @tommcdon
- 作成日時: 2026年07月29日 02:55:30(UTC)
- マージ日時: 2026年07月29日 15:01:32(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Compact Debugging Access Component)のDacDbiImpl.GetModulePathメソッドが、ディスク上のパスを持たないモジュール(動的/メモリ内モジュール)に対してIStringHolderを未割り当てのまま返していた問題を修正します。修正により、パスレスモジュールの場合も空文字列を割り当てることで、デバッガーのモジュール読み込みコールバック時の"bad OnModuleLoad"エラーを防ぎます。
変更内容
- src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/Dbi/DacDbiImpl.cs
GetModulePathメソッドで、モジュールのオンディスクパスが存在しない場合、pResultをFALSEで返す際に、pStrFilenameに空文字列を割り当てるよう修正
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- この修正はデバッガーの機能性に関わるもので、ランタイム/ライブラリの内部実装(cDAC内のDBI互換性レイヤー)に限定されています
- LCG DynamicMethodやDLRなどの動的に生成されるモジュールのデバッグが正常に動作するようになります
- ネイティブDBI(
CordbModule::GetModulePath)のm_strModulePath.IsSet()アサーションに対応した修正です
#131513 JIT: rewrite wasm local.set/local.get as local.tee
- 作成者: @AndyAyersMS
- 作成日時: 2026年07月29日 00:27:53(UTC)
- マージ日時: 2026年07月29日 16:21:39(UTC)
- ラベル: area-CodeGen-coreclr
概要
WebAssembly(WASM)バックエンド用のJIT emitterに対して、ピープホール最適化を追加しました。local.set N直後にlocal.get Nが続く場合、これを単一のlocal.tee N命令に折り畳むことで、R2R corelib コード セクションサイズを2.56%削減します。
変更内容
- src/coreclr/jit/emitwasm.cpp:
emitter::emitIns_Iメソッドにlocal.teeへの最適化ロジックを追加(+11行)- 最適化が有効な場合にのみ、同じローカル変数への
local.setとlocal.getの連続をピープホール最適化 - 最後の命令をピープホールするのが安全な場合に限定
- 最適化が有効な場合にのみ、同じローカル変数への
パフォーマンスへの影響
- コードサイズ: R2R corelib コード セクション 2.56% 削減
- 命令数削減により、わずかな実行速度向上が期待されます
- メモリフットプリント改善
関連Issue
なし
その他
- WASM固有の最適化であり、x86/ARM等の他のアーキテクチャには影響なし
- 変更は内部的なJIT emitter最適化であり、公開APIへの影響なし
- ピープホール最適化のため、機能的な動作変更なし
#131505 Fix CLR_Tools_Tests build break in WasmArgumentLayoutTests
- 作成者: @lewing
- 作成日時: 2026年07月28日 22:55:15(UTC)
- マージ日時: 2026年07月29日 00:40:14(UTC)
- ラベル: area-crossgen2-coreclr
概要
ReadyToRunCompilerContextのコンストラクタシグネチャ変更に対応していないWasmArgumentLayoutTests.csのビルドエラーを修正します。CreateWasmContext()メソッドで新しく追加されたtargetAllowsRuntimeCodeGenerationパラメータを渡すことで、セマンティックマージコンフリクトを解決します。Wasmターゲットではランタイムコード生成がサポートされていないため、このパラメータはfalseに設定されます。
変更内容
- src/coreclr/tools/aot/ILCompiler.ReadyToRun.Tests/WasmArgumentLayoutTests.cs
CreateWasmContext()メソッドのReadyToRunCompilerContextコンストラクタ呼び出しにtargetAllowsRuntimeCodeGeneration: false引数を追加- Wasmターゲットでランタイムコード生成が利用不可である理由を説明するコメントを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- 本PR作成時点では両方のPR(#131429と#130622)がほぼ同時期にマージされたため、CIがお互いの変更を検出できず、セマンティックマージコンフリクトが発生していました
- 修正後、20個すべての
WasmArgumentLayoutTestsテストケースがパスすることを確認済み - 本変更はGitHub Copilotで開発され、作成者によってレビューされています
#131501 Fix deadlock between EventListenersLock and ArrayPoolEventSource static ctor
- 作成者: @mdh1418
- 作成日時: 2026年07月28日 22:39:36(UTC)
- マージ日時: 2026年07月29日 14:32:34(UTC)
- ラベル: area-System.Diagnostics.Tracing
概要
EventListenersLock と ArrayPoolEventSource の静的コンストラクタ間のデッドロックを修正します。dotnet-counters が .NET アプリの初期化中に起動されると、Thread A が EventListenersLock を保持しながら文字列補間経由で ArrayPool<char> を初めて使用し、Thread B が ArrayPoolEventSource の型初期化ロックを保持しながら EventListenersLock を待機するという循環依存でデッドロックが発生していました。修正は ArrayPoolEventSource を InitializeDefaultEventSources() で事前初期化することで、この循環依存を防止します。
変更内容
- src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs:
InitializeDefaultEventSources()メソッドにArrayPoolEventSource.Logの事前初期化コードを追加(+6行)。既に同じパターンで修正されたFrameworkEventSource(#126737)に倣った実装です。
パフォーマンスへの影響
影響なし
関連Issue
#119014(このPRで修正)
#126591(同様の FrameworkEventSource デッドロック問題)
その他
- この修正は公開APIではなく、内部実装(イベントソースの初期化)に関する変更です。
- デッドロック回避の仕組み:
ArrayPoolEventSource.Logが事前初期化されていれば、後のRent()呼び出し時に型初期化ロックが必要なくなり、ロック順序の循環が形成されません。
#131489 Remove dead C++ wrappers left over from corehost C conversion
- 作成者: @elinor-fung
- 作成日時: 2026年07月28日 19:59:56(UTC)
- マージ日時: 2026年07月29日 21:57:35(UTC)
- ラベル: area-Host
概要
corehost の C 言語への変換後、使用されなくなった hostmisc の C++ ラッパー関数を削除するクリーンアップです。DOTNET_ROOT 環境変数ヘルパー、pal::get_timestamp、pal::is_directory の未参照の C++ ラッパーを削除し、機能に影響はありません。
変更内容
- src/native/corehost/hostmisc/utils.h/cpp:
DOTNET_ROOT環境変数ラッパーとto_upper関数の未使用宣言・実装を削除 - src/native/corehost/hostmisc/pal.h:
get_timestampとis_directoryC++ ラッパー宣言を削除 - src/native/corehost/hostmisc/pal.windows.cpp: Windows 実装の
get_timestampとis_directoryを削除 - src/native/corehost/hostmisc/pal.unix.cpp: Unix 実装の
get_timestampとis_directoryを削除
パフォーマンスへの影響
影響なし(デッドコード削除のため)
関連Issue
なし
その他
注記: Copilot の低信頼度コメントから、to_lower 関数(pal.unix.cpp:423 行付近)に UTF-8 文字列破損の潜在的リスクが指摘されています。Unix 環境で pal::char_t が char 型かつ符号なしの場合、0x80-0xFF の範囲のバイトが Unicode として誤釈されて小文字化され、UTF-8 データが破損する可能性があります。Windows(UTF-16)と Unix(ASCII のみ)で異なる処理が必要との指摘があります。
#131485 JIT: include element info when comparing array address trees
- 作成者: @AndyAyersMS
- 作成日時: 2026年07月28日 19:29:59(UTC)
- マージ日時: 2026年07月29日 17:21:47(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラの正確性の問題を修正。GenTree::Compareがarray要素アドレス関連ノード(GT_ARR_ELEM、GT_ARR_ADDR、GT_INDEX_ADDR)の要素メタデータを無視していたため、要素型やスケールのみが異なる配列要素アドレスが同一として扱われ、不正にtail merge/CSEで畳み込まれていました。
変更内容
- src/coreclr/jit/gentree.cpp:
GenTree::Compareメソッドを拡張し、GT_ARR_ELEM、GT_ARR_ADDR、GT_INDEX_ADDRの比較時に要素サイズ、要素型、クラスハンドルなどのメタデータを含めるよう修正。またgtHashValueメソッドでも同じメタデータをハッシング対象に追加し、到達不可だったGT_INDEX_ADDRケースをbinop armに移動。 - src/tests/JIT/Regression/JitBlue/Runtime_131459/Runtime_131459.cs: 新規回帰テストを追加。
GT_ARR_ELEMの要素サイズ比較とGT_ARR_ADDRの要素型・クラスハンドルメタデータ比較をカバー。 - src/tests/JIT/Regression/Regression_ro_2.csproj: 新規テストを組み込み。
パフォーマンスへの影響
影響なし。本変更は正確性修正であり、パフォーマンス最適化ではありません。
関連Issue
その他
本修正により、異なる要素型やスケールを持つ配列要素アドレス計算が誤って同一と判定されることがなくなり、JITコンパイル時の不正な最適化(miscompile)が防止されます。
#131482 Fix Avx.Compare miscompile with non-constant FloatComparisonMode
- 作成者: @tannergooding
- 作成日時: 2026年07月28日 17:42:36(UTC)
- マージ日時: 2026年07月29日 21:27:37(UTC)
- ラベル: area-CodeGen-coreclr Priority:2
概要
Avx.Compare / Avx512F.Compare が非定数の FloatComparisonMode 引数(ループ帰納変数など)を受け取る場合、FullOpts最適化下で不正な結果またはアクセス違反を引き起こしていた問題を修正します。根本原因は、JITコンパイラがマネージドフォールバックへの呼び出しハンドルを ConvertMaskToVector ラッパーノードに誤って設定し、内部の比較演算に必要な引数がセットアップされていなかったことです。修正により、ハンドル設定を内部のマスク操作ノードに向け直します。
変更内容
- src/coreclr/jit/hwintrinsic.cpp:
setMethodHandleパスでConvertMaskToVectorラッパーが存在する場合、フォールバックハンドルをラッパーではなくその内部オペランド(マスク操作)にアタッチするロジックを追加。128/256ビットEVEX形式と必須マスク512ビット形式を統一的に対応。 - src/tests/JIT/Regression/JitBlue/GitHub_131472/GitHub_131472.cs:
Vector256<float>とVector512<float>を対象とした新しい回帰テストを追加。全32の比較モードについてFullOpts最適化版とMinOpts版の結果を比較検証。 - src/tests/JIT/Regression/Regression_ro_2.csproj: 回帰テストをプロジェクトビルドに組み込み。
パフォーマンスへの影響
影響なし。修正は非定数の FloatComparisonMode の稀なパス(setMethodHandle が設定される場合)のみで実行され、定数モードのコード生成には変更がありません。
関連Issue
その他
- 互換性: 内部実装(JITコンパイラ)の修正であり、公開APIへの影響なし。
- バグの性質: shipped版
11.0.0-preview.6で再現。ティアード コンパイレーション有効時は副最適化により問題が隠蔽されていた。 - テスト範囲: 定数モードのコード生成が変更されていないことを検証済み。JitFormat チェックおよび Checked/Release JIT ビルドで問題なし。
#131481 [Diagnostics] Avoid resolving IL offsets for framed crash frames
- 作成者: @mdh1418
- 作成日時: 2026年07月28日 17:20:11(UTC)
- マージ日時: 2026年07月29日 18:11:56(UTC)
- ラベル: area-VM-coreclr
概要
クラッシュレポート時のスタックウォーク処理で、フレーム化されたトランジションフレーム(マネージドP/Invoke遷移時のネイティブクラッシュなど)に対するILオフセット解決を回避する変更です。前回の修正(#131273)ではCrawlFrame::GetRelOffset()の呼び出しを避けていましたが、本修正ではGetILOffsetFromNative()の呼び出しも条件付きで制限し、Checked-buildのアサーション失敗を防ぎます。
変更内容
- src/coreclr/vm/crashreportstackwalker.cpp
hasManagedNativeCodeフラグを導入して、ネイティブコード情報を持つフレームレスフレームのみに対してGetRelOffset()とGetILOffsetFromNative()を実行- フレーム化されたトランジションフレームではネイティブオフセットとILオフセットを0として報告
- メソッド、モジュール、トークン情報は保持
パフォーマンスへの影響
影響なし(不正なアサーション回避による安定性向上が主目的)
関連Issue
その他
- macOS arm64での実機クラッシュレポートで検証済み(Checked/Release両ビルド)
- ネイティブSIGSEGVがP/Invoke経由で発生した場合を含むテスト完了
- 修正内容:
GetILOffsetFromNative()呼び出し時に発生していたg_pEEInterface->GetNativeCodeMethodDesc(startAddr) == fdアサーション失敗を解決
#131479 Use an explicit allow list for SIMD types in getTypeLayout
- 作成者: @tannergooding
- 作成日時: 2026年07月28日 16:51:44(UTC)
- マージ日時: 2026年07月29日 14:44:39(UTC)
- ラベル: area-VM-coreclr
概要
SIMD型の判定ロジックを、名前空間ベースの包括的チェックから明示的な許可リストへ変更します。これにより、System.NumericsとSystem.Runtime.Intrinsics内の非SIMD [Intrinsic]型(例:Matrix3x2/Matrix4x4)のフィールドが正しく列挙され、JITに報告されます。JIT-EE GUID変更なし。
変更内容
- src/coreclr/vm/jitinterface.cpp: VM側に
IsSimdIntrinsicType(MethodTable*)ヘルパーを追加し、CEEInfo::GetTypeLayoutHelperでのsimdTypeHndの設定を制御- 許可リスト:
Vector64<T>、Vector128<T>、Vector256<T>、Vector512<T>、Vector<T>、Vector2、Vector3、Vector4、Plane、Quaternion
- 許可リスト:
- src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs: マネージ側(crossgen2/ILCompiler)に同等の
IsSimdIntrinsicType(MetadataType)ヘルパーを追加- 既存の
VectorFieldLayoutAlgorithmの型チェックロジックを再利用
- 既存の
- 従来の名前空間ベースチェック及び
Decimal型のcarve-out処理を削除
パフォーマンスへの影響
影響なし。Matrix型の変更は不活性(inert)であることがJitDump検証で確認済み。83,382行中0行の差異が生じ、TryPromoteValueClassAsPrimitive、TryPromoteStructVar、ClassLayout::GetNonPadding、R2R処理いずれも従来と同一の結果を生成。
関連Issue
#131345(フォローアップ)
その他
- 検証済み:
build.cmd clr -rc checkedでコンパイル成功(警告0、エラー0)- 15種類の影響対象型についてJitDump検証実施
- JIT/SIMD: 116/116パス、JIT/Directed/StructPromote + physicalpromotion: 9/9パス
MethodTable::ClassifyEightBytes*とSystemVStructClassificatorの同等箇所は意図的に対象外(より制限的な型セットを使用)IsDecimalFloatingPointOrHasDecimalFloatingPointFieldsはdllimport.cppなどのマーシャル制限用途で継続使用
#131470 Improve MemoryCache performance under high contention
- 作成者: @EgorBo
- 作成日時: 2026年07月28日 14:48:40(UTC)
- マージ日時: 2026年07月29日 16:55:18(UTC)
- ラベル: area-System.Runtime.Caching Priority:0
概要
System.Runtime.Cachingの内部カウンター実装を最適化し、高い競合状況下でのMemoryCacheのパフォーマンスを大幅に改善しています。以下の2つの主要な変更を実施:
MemoryCacheStoreから冗長なヒット率ブックキーピングを削除し、ヒット率をHitsとMissesから動的に計算するように変更Countersのlong[]バッキングストレージをキャッシュラインで分離されたフィールドを持つ明示的にレイアウトされた構造体に置き換え、Interlocked操作をスイッチベースで実行
変更内容
- MemoryCacheStore.cs: Get()ホットパスから冗長なヒット率カウンター増加処理を削除(3行削除)
- Counters.cs: カウンター格納先をキャッシュラインパディングされた構造体に変更し、false sharingを削減。
Interlocked操作を利用した安全な更新を導入(76行追加、26行削除) - System.Runtime.Caching.csproj: キャッシュラインサイズ定数をサポートするため、
Internal/Padding.csをリンク
パフォーマンスへの影響
大幅な改善を確認
- win-arm64環境での1Pベンチマーク: 6.15倍の改善
- メイン: 60.030 ns
- PR適用後: 9.766 ns
- 多コアシステムでのさらに大きな改善が期待される
- キャッシュラインパディングによるfalse sharing削減が主な改善要因
- ホットパス(Get())のカウンター更新処理削減により、キャッシュ競合が大幅に低減
関連Issue
その他
- 互換性への影響: なし(内部実装の最適化のみで、公開APIに変更なし)
- 留意点: Copilotレビューにより、
IncrementingPollingCounterとHitRatio計算時にInterlocked.Readを使用すべきという指摘がされています(torn reads対策およびEventCountersパターンとの一貫性)
#131469 [ci-scan-feedback] Route platform-specific crypto-config failures to loop-in
- 作成者: @Copilot
- 作成日時: 2026年07月28日 14:25:06(UTC)
- マージ日時: 2026年07月29日 10:36:16(UTC)
- ラベル: area-System.Security
概要
CI自動修正ワークフロー(ci-failure-fix)に対して、プラットフォーム固有の暗号化設定に関連するSystem.Security.Cryptography.*テストの失敗を適切にルーティングするガイドラインを追加しました。ディストロ固有の暗号設定(AzureLinux/mariner、linux_musl、FIPS、OpenSSLプロバイダ変種など)でのみ失敗するテストに対して、推測的で自信のあるPRの自動作成を防ぎ、セキュリティ領域のオーナーへの判断を委譲する変更です。
変更内容
.github/workflows/ci-failure-fix.md— Step 5.2に「Platform crypto-config caution」セクションを追加。System.Security.Cryptography.*テストがプラットフォーム固有の暗号設定でのみ失敗し、修正案がプラットフォーム固有の暗号期待値(鍵サイズ下限、アルゴリズム可用性、暗号有効化/無効化、またはディストロ別テスト期待値変更)をハードコードする場合、Branch COMMENT(loop-in)へのルーティング、またはプラットフォーム暗号設定を明示的な未解決問題として名指した場合のみBranch HELPを許可し、Branch FIXでのPR自動作成を禁止する指針を明記。
パフォーマンスへの影響
影響なし
関連Issue
その他
- ワークフロー記述のみの変更であり、ランタイム製品コード、テスト、ビルド設定への影響なし
ci-failure-fix.lock.ymlへのロックファイル再生成は不要- 既に
AiaCompletionHasLimitsKBE(#130947)で観測されていた正しいloop-in動作を一般化し、ディストロ設定に関する判断をセキュリティ領域のオーナーに委譲する意図
#131458 Add universal DBI with private PAL
- 作成者: @hoyosjs
- 作成日時: 2026年07月28日 11:45:05(UTC)
- マージ日時: 2026年07月29日 08:45:47(UTC)
- ラベル: area-Infrastructure-coreclr
概要
新しいデバッグインターフェース実装 mscordbi_universal を追加します。従来の mscordbi とは異なり、DAC(Debugging Access Component)のPALを共有せず、独自のプライベートPALを所有しています。cDAC ICorDebugパスの実装に対応し、Microsoft.DotNet.Cdac.Transport パッケージに組み込まれます。従来の mscordbi は変更されていません。
変更内容
- mscordbi_universal の新規構築:
src/coreclr/dlls/mscordbi_universal/配下に新しいネイティブモジュールを追加。CMakeビルドシステムで、UnixプラットフォームではプライベートPALをリンク - エクスポート削減:
DllMainのエクスポートは廃止し、OpenVirtualProcessImpl2(パスベースのアクティベーション)とCoreCLRCreateCordbObject3(プロセス内生成)の2つのエントリポイントのみをエクスポート。各エントリポイントは初回使用時にプライベートPALを初期化 - ビルド定義: Windows(.src)とUnix(_unixexports.src)向けのエクスポート定義ファイルを追加
- パッケージング:
Microsoft.DotNet.Cdac.Transport.pkgprojにmscordbi_universalバイナリを追加 - 既存コード変更:
cordb.cppとprocess.cppに微小な追加(33行、11行)、mscordbi.cppの軽微な変更(8行)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- このPRは内部実装変更であり、公開APIへの影響はありません
- 従来の
mscordbiとの互換性は維持されます(DAC共有PALモデルは継続) - プライベートPALの採用により、DAC-PALの結合度が低くなり、今後の保守性が向上します
#131437 Fix foreground shutdown test
- 作成者: @eduardo-vp
- 作成日時: 2026年07月27日 19:57:08(UTC)
- マージ日時: 2026年07月29日 21:13:18(UTC)
- ラベル: area-System.Threading
概要
フォアグラウンドスレッドのシャットダウンテストでxunitラッパーとフォアグラウンドスレッド間のレース条件を修正します。Thread.Sleepの待機時間を1秒延長し、ラッパーを削除することで、JITストレス下でもテストが確実に成功するようにします。
変更内容
- foreground-shutdown.cs:
Thread.Sleepの待機時間を延長し、xunitラッパーを削除(2行追加、7行削除) - foreground-shutdown.csproj: プロジェクト構成を簡潔化(2行追加、3行削除)
パフォーマンスへの影響
テストの実行時間が1秒程度増加します。
関連Issue
その他
なし
#131433 [Wasm RyuJit] assert function regions are contiguous after control flow
- 作成者: @AndyAyersMS
- 作成日時: 2026年07月27日 18:23:12(UTC)
- マージ日時: 2026年07月29日 02:04:55(UTC)
- ラベル: area-CodeGen-coreclr
概要
WebAssembly RyuJIT コードジェネレータにおいて、制御フロー処理後に各リージョン(メインメソッドおよび各funclet)のブロックが連続しているかを検証するデバッグアサーションを追加します。これにより、wasm関数体生成時のブロック順序の整合性を確保します。
変更内容
- compiler.h: 新しい検証関数の宣言を追加(+1行)
- compiler.hpp: 関連する実装コードの調整(+28/-19行)
- fgwasm.cpp:
fgWasmControlFlow実行後に各リージョンのブロック連続性を確認するデバッグチェック処理を追加(+30行)
パフォーマンスへの影響
デバッグ時のアサーション処理のみで、リリースビルドへの影響なし
関連Issue
なし
その他
本変更はWasmターゲット固有のコードジェネレータの品質保証を目的とした内部実装の改善です。公開APIへの変更はありません。
#131410 Enable in-proc crash reporting on MacOS + Linux
- 作成者: @mdh1418
- 作成日時: 2026年07月27日 05:33:02(UTC)
- マージ日時: 2026年07月29日 02:14:40(UTC)
- ラベル: area-PAL-coreclr
概要
Linux と macOS で既存のクラッシュレポート設定を使用した in-proc クラッシュレポーターを有効化します。DOTNET_DbgEnableMiniDump=1 は引き続き createdump を選択し、DOTNET_EnableCrashReport=1 または DOTNET_EnableCrashReportOnly=1 で in-proc レポーターが有効になります。モバイルプラットフォームは既存の動作を保持します。
変更内容
- src/coreclr/clrfeatures.cmake: Linux/macOS で
FEATURE_INPROC_CRASHREPORTを有効化 - src/coreclr/pal/src/thread/process.cpp: PAL スタートアップ時のクラッシュレポーター選択ロジックを追加(
CrashReportMode状態管理) - src/coreclr/debug/crashreport/inproccrashreporter.cpp: Apple 固有の in-proc レポーター実装を iOS/tvOS/MacCatalyst から全ての Apple ターゲット(
TARGET_APPLE)に拡張 - src/coreclr/vm/ceemain.cpp: PAL で選択された in-proc モードの場合のみ自動クラッシュレポーター起動をゲート化
- ドキュメント更新: xplat-minidump-generation.md でスタートアップポリシー駆動のクラッシュレポーター設定に関するコメント更新
パフォーマンスへの影響
影響なし
関連Issue
その他
懸念事項: Copilot により、fatal-signal パスでコールバック未登録時に早期リターンされるため、クラッシュダンプが出力されない可能性が指摘されています。DOTNET_EnableCrashReport* の設定がない場合や in-proc 初期化失敗時に、以前の動作のように createdump パスへのフォールバックが必要な可能性があります。
#131383 [wasm] Fix JIT helper calls modeled with the wrong return arity
- 作成者: @lewing
- 作成日時: 2026年07月26日 01:25:29(UTC)
- マージ日時: 2026年07月29日 01:12:33(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssemblyのJITコンパイラで、複数のヘルパー呼び出しのモデル化された戻り値の型が、実際のヘルパー関数のシグネチャと不一致だった問題を修正します。Wasmではcall_indirectのシグネチャが戻り値型から導出されるため、型の不一致はエンジンによる「function signature mismatch」トラップを引き起こしていました。
3つの問題を修正:①インラインunboxの遅延パス、②CORINFO_HELP_UNBOX_TYPETESTへの呼び出し再ターゲット時の型更新漏れ、③CORINFO_HELP_CHECK_OBJの型モデリング。
変更内容
- compiler.h:
HelperUnboxDiscardedRetType定数(Wasmのみ適用)を追加し、unboxヘルパーの返却値破棄時の戻り値型を統一 - importer.cpp: インライン
unbox遅延パス呼び出しをHelperUnboxDiscardedRetTypeでモデル化し、gtUnusedValNodeで未使用結果を破棄 - objectalloc.cpp:
UNBOXからUNBOX_TYPETESTへの再ターゲット時に呼び出しノードをTYP_VOIDに明示的に型変更 - morph.cpp:
CORINFO_HELP_CHECK_OBJをTYP_REF(実際の戻り値型)でモデル化し、未使用結果を破棄 - CastHelpers.cs: ドキュメント更新
- Runtime_131377.cs: スタック割り当てボックスの非一致型unboxをテストする回帰テストを追加
パフォーマンスへの影響
Wasmのみに影響。 ブラウザR2Rで測定:
- インライン
unboxサイトで+279バイト(208コンテキスト、80ファイル) - 主なメソッド:
EventProvider.EncodeObject+19、RuntimeType.IsEnumDefined+13、Enum.ToObject+12 - これは以前エンジンが拒否していた不正な
call_indirectを、正しく型付けされたバージョンで置き換えた結果
ネイティブターゲットへの影響なし。 x64/arm64/osx arm64でSuperpMI実行結果「No diffs found」。元々arm64でも型モデリングは内部動作のみで、GC情報報告は不正だったが実運用影響なし。
関連Issue
その他
- 内部実装の修正: JITコンパイラの内部的なノード型モデリング修正で、公開APIに影響なし
- Wasm専用のロジック:
HelperUnboxDiscardedRetTypeはWasm用に条件付け。ネイティブでも型を統一できるが、コード生成コストのためWasm限定とした - 修正2点の相互依存性: 修正①と②は同時にリリース必須。修正①のみではオブジェクト割り当ての最適化で回帰
- 修正3の非テスト可能性: `CHECK
#131363 Harden dbgutil Windows PE export walk against corrupted or incomplete module data
- 作成者: @hoyosjs
- 作成日時: 2026年07月25日 01:53:11(UTC)
- マージ日時: 2026年07月29日 09:16:18(UTC)
- ラベル: area-Diagnostics-coreclr
概要
Windows PE エクスポートディレクトリの解析処理をdbgutil のTryGetSymbolで強化します。ICorDebugDataTargetから読み取ったPEデータを信頼できないものとして扱い、破損やメモリマッピング不足、不完全なモジュールデータに対する耐性を向上させます。
変更内容
- src/coreclr/debug/dbgutil/dbgutil.cpp: PE エクスポートディレクトリ解析処理を強化
- 出力アドレスの初期値をゼロで防御的に初期化
- エクスポートディレクトリRVAがゼロの場合はエクスポート走査をスキップ
- 名前付きエクスポートの序数がエクスポートアドレステーブル範囲内にあることを検証してから使用
- コメント内のスペリングエラーを修正
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRは、信頼できないプロセスメモリから読み取ったPEメタデータを解析する際のセキュリティと堅牢性を向上させるための防御的プログラミングの改善です。デバッガユーティリティの信頼性向上に寄与します。
#131351 Provision wasm build/test tools into a shared, version-keyed cache
- 作成者: @lewing
- 作成日時: 2026年07月24日 21:59:41(UTC)
- マージ日時: 2026年07月29日 19:15:09(UTC)
- ラベル: arch-wasm area-Build-mono
概要
WebAssemblyビルド/テストツール(emsdk、wasi-sdk、wasmtime、ブラウザ/V8など)の取得を統一し、バージョンとホストRIDをキーにした共有キャッシュに移行するリファクタリング。従来は3つの異なる場所・バージョンスキーム・陳腐化戦略で管理されていたツールを、<root>/<tool>/<version>-<host rid>/パターンで一元化し、キャッシュミスをバージョン番号で自動実現、クローン間での共有を実現します。
変更内容
新規ファイル(内部実装):
eng/wasm/WasmToolCache.props- キャッシュ根ディレクトリとツールパス定義eng/wasm/AcquireWasmTool.proj- 汎用ダウンロード/展開プロジェクトeng/wasm/PruneWasmToolCache.proj- キャッシュエントリ削除プロジェクトeng/wasm/wasm-tool-cache.sh/.cmd- POSIXおよびWindows用キャッシュ解決ヘルパーeng/wasm/wasi-sdk-version.txt- wasi-sdk版バージョンのシングルソース
既存ファイル修正:
eng/AcquireEmscriptenSdk.targets/eng/AcquireWasiSdk.targets- 共有キャッシュへの移行eng/native/gen-buildsys.sh/.cmd- キャッシュ解決ヘルパーの呼び出しsrc/mono/wasm/Makefile/src/mono/browser/build/WasmApp.InTree.props- キャッシュパス参照eng/testing/wasm-provisioning.targets/wasi-provisioning.targets- 汎用取得プロジェクト使用- ドキュメント更新(wasm.md、webassembly-instructions.md、wasm-debugging.md)
削除:
eng/download-wasi-sdk.ps1- 不要化
パフォーマンスへの影響
- メモリ/ディスク削減: ~2GBのワークツリー間重複ダウンロード排除、複数ワークツリーで単一ツールコピー共有
- 取得の安定性向上: 温度ファイル(
.completeセンチネル)による原子性保証で、中断/並行取得時の不完全なキャッシュ状態を排除 - arm64サポート: wasi-sdk・wasmtimeがネイティブarm64ビルドをダウンロード可能に(x86_64のみから拡大)
関連Issue
なし
その他
環境変数:
DOTNET_WASM_TOOL_CACHE_DIR- キャッシュ根をオーバーライド(CI/グローバルキャッシュ向け)EMSDK_PATH/WASI_SDK_PATH/WASMTIME_PATH- 従来通り優先(後方互換性)
キャッシュ位置: デフォルトはリポジトリメインチェックアウト直下(.dotnet/wasm-tools)。git worktreeの.gitファイルを読み込んで導出(プロセス生成なし)し、クローン内のすべてのworktreeで共有しつつ、リポ
#131294 Remove stale ML-DSA draft-10 PKCS#8 test gating
- 作成者: @Copilot
- 作成日時: 2026年07月23日 21:54:53(UTC)
- マージ日時: 2026年07月29日 01:04:20(UTC)
- ラベル: area-Infrastructure
概要
ML-DSA draft-10 PKCS#8テストの古い条件付きゲーティングを削除し、MLDsa.IsSupportedを直接参照するよう更新しました。Windows固有の回避策を廃止し、現在のプラットフォーム機能チェックに統一します。
[ConditionalTheory(typeof(MLDsa), nameof(MLDsa.IsSupported))]
public static void ComputeSignature_MLDsa_Roundtrip(string hashAlgorithm)
変更内容
- SignedCmsTests.cs:
SupportsDraft10Pkcs8ヘルパープロパティを削除し、ML-DSA関連の[ConditionalFact]/[ConditionalTheory]属性をMLDsa.IsSupportedに統一 - SignedCmsTests.netcoreapp.cs: ML-DSA固有の条件付き属性を
MLDsa.IsSupportedに更新 - SignerInfoTests.cs: 同ヘルパーを削除し、
MLDsaAndRsaSha1SignaturesSupportedをSignatureSupport.SupportsRsaSha1Signatures && MLDsa.IsSupportedに再定義
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
テストコード整理PRであり、公開APIへの変更はありません。System.Security.Cryptography.Pkcs ライブラリのテストロジック改善です。
#131282 Enable R2R for unresolved static virtual interface calls
- 作成者: @jkoritzinsky
- 作成日時: 2026年07月23日 18:21:47(UTC)
- マージ日時: 2026年07月29日 23:28:22(UTC)
- ラベル: area-ReadyToRun
概要
Crossgen2が未解決の制約付き静的仮想インターフェイスメソッド呼び出しをR2R(ReadyToRun)コードとしてコンパイルできるようにする変更です。従来はランタイムJIT後退を強制していましたが、本変更によりCORINFO_CALL_CODE_POINTERを使用したランタイム検索パスを導入し、ConstrainedMethodEntrySlotでランタイム決定された制約をエンコードします。これによりSystem.RuntimeType+IGenericCacheEntry<TCache>.CreateAndCacheがR2Rコードとして生成されるようになります。
変更内容
- src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs
- 未解決の制約付き静的仮想メソッド呼び出しで、
exactContextNeedsRuntimeLookupの場合のRequiresRuntimeJitExceptionを削除 CORINFO_CALL_CODE_POINTERとランタイム検索パスを実装DictionaryEntryKind.ConstrainedMethodEntrySlotを使用してランタイム検索をエンコード- 隠された汎用インスタンス化引数を抑制(インスタンス化スタブをリクエスト)
- 未解決の制約付き静的仮想メソッド呼び出しで、
パフォーマンスへの影響
改善: R2R化により、従来はランタイムJIT後退が発生していた制約付き静的仮想メソッド呼び出しがスタートアップ時に事前コンパイルされるため、JIT遅延が削減されます。
関連Issue
その他
- テスト実施済み: CoreCLR
StaticVirtualMethodsローダースイートで正常に動作確認 - R2RDumpで
CreateおよびGetStorageRefがSystem.__Canonではなくvar #0に対する制約付き検索と間接呼び出しを使用していることを確認
#131181 Make XsdDataContractExporter export consistent for ctor-less collections
- 作成者: @StephenMolloy
- 作成日時: 2026年07月22日 05:06:53(UTC)
- マージ日時: 2026年07月29日 00:39:26(UTC)
- ラベル: area-Serialization
概要
コンストラクタを持たないコレクション型に対する XsdDataContractExporter のスキーマエクスポート動作を一貫させます。プロセスグローバルキャッシュへの型キャッシング順序に依存して、同じ型でもエクスポート時に InvalidDataContractException が発生する場合と発生しない場合が混在していた問題を修正。verifyConstructor フラグをスレッドして、スキーマエクスポート時はコンストラクタ検証を無効化し、シリアル化・デシリアル化時は従来通り検証を実施します。
変更内容
- DataContract.cs:
GetDataContract*メソッドチェーン全体にverifyConstructorオプショナルフラグを追加し、内部的にコンストラクタ検証の有効/無効を制御 - DataContractSet.cs: エクスポートウォーク入口の3箇所(
Add(Type)、GetMemberTypeDataContract else分岐、GetItemTypeDataContract)でverifyConstructor: falseを指定してスキーマエクスポート時の検証をスキップ - XsdDataContractExporter.cs: エクスポート処理の呼び出し箇所を更新
- ExporterTypesTests.cs: キャッシュ順序の異なる2つのコレクションテストケースを使用して、両方のキャッシュ状態でスキーマが生成されることを検証する回帰テストに置き換え
パフォーマンスへの影響
影響なし
関連Issue
その他
互換性に関する注記: 本変更は例外を発生させていた非決定的な動作(キャッシュ順序依存)を削除するもので、一貫性のある正規動作に統一します。スキーマエクスポート自体はコンストラクタの実在可能性を確認する必要がないという設計原則に基づいています。シリアル化・デシリアル化時のコンストラクタ検証は変更されないため、実際の読み取り専用コレクションはデータ化時に正しく例外が発生します。15年以上にわたり同様の設計が存在しており、この変更は仕様外の副作用を正規化するものです。
#131170 Vectorize BMP string
- 作成者: @vcsjones
- 作成日時: 2026年07月21日 21:26:36(UTC)
- マージ日時: 2026年07月29日 18:48:55(UTC)
- ラベル: tenet-performance area-System.Formats.Asn1
概要
ASN.1 BMPString(ビッグエンディアンUCS-2エンコーディング)の符号化・復号化処理にSIMD(ベクトル化)最適化を導入しました。BMPEncodingは固定幅で、サロゲートペアを含まないプレーン0のみに対応しています。小さな入力では若干のレジスタ圧力増加による0.5nsの回帰が見られますが、一般的な名前などの中規模入力では顕著なパフォーマンス向上が実現されています。
変更内容
- AsnCharacterStringEncodings.cs: BMPEncoding実装をpartialに変更し、最大バイト/文字カウント計算ロジックを共有ファイルに集約
- AsnCharacterStringEncodings.net.cs:
Vector<ushort>を用いたベクトル化されたBMPString encode/decode実装を追加(エンディアン変換とサロゲート検出を含む) - AsnCharacterStringEncodings.downlevel.cs: ダウンレベルターゲット(net462など)向けのスカラー実装を復元
- ReadBMPString.cs / WriteBMPString.cs: ベクトル境界長、境界チェック(BoundedMemory)、サロゲート検出インデックス正確性の回帰テストを追加
パフォーマンスへの影響
向上度が入力サイズに依存:
- 小さな入力(CountryCode 2文字): 約4-5%の回帰(14.27ns → 14.97ns)
- 中規模入力(CommonName 6文字): Decode 47%高速化(56.85ns → 26.71ns)、TryDecode 59%高速化(52.77ns → 21.71ns)
- 大規模入力(Length1024): Decode 85%高速化(1,769.30ns → 270.31ns)、TryDecode 88%高速化(1,693.69ns → 195.24ns)
- 最大テスト(Length1024): Write処理で78%高速化(1,119.74ns → 250.16ns)
メモリ割り当てと生成GC数は変わらず。ベクトル化により、特に大規模データの処理効率が劇的に向上。
関連Issue
その他
- 互換性: 破壊的変更なし。ダウンレベルフレームワークではスカラー実装を継続使用
- JIT最適化: IA5EncodingとVisibleStringEncodingの既存実装についても、JIT親和性を高めるフィードバックが反映されている
- テスト範囲: ベクト処理境界(8/16/32/64/256/1024文字)での回帰テストとアラインメント(アライン/未アライン)の両方をカバー
#131092 Fix config binding source generator duplicating collection items bound through a constructor parameter
- 作成者: @svick
- 作成日時: 2026年07月20日 16:44:10(UTC)
- マージ日時: 2026年07月29日 14:30:05(UTC)
- ラベル: area-Extensions-Configuration
概要
Configuration Binding ソースジェネレータがパラメータ付きコンストラクタを持つ型でコレクションプロパティを重複バインドする問題を修正します。コンストラクタで初期化されたコレクションアイテムが再バインド時に追加され、結果として2倍に複製される問題を解決します。
修正例:ints: [1, 2, 3, 4, 5] がバインドされた場合、修正前は 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 と複製されていましたが、修正後は正しく 1, 2, 3, 4, 5 となります。
変更内容
CoreBindingHelpers.cs: 生成される
BindCoreメソッドにboundThroughConstructorオプションパラメータを追加。このフラグがtrueの場合、コンストラクタでバインドされたプロパティは再バインドをスキップ。フラグは以下の値が渡されます:- 無条件構築時は
true ??=パターンでは実行時のwasNullフラグ- 辞書要素など別途構築される場合は呼び出し元で追跡されるフラグ
- 無条件構築時は
Helpers.cs: エミッタが使用する識別子定数 (
boundThroughConstructor、wasNull) を追加テストクラス: コンストラクタマッチコレクションパラメータを持つ新規テストクラスを追加
テストケース: ソースジェネレータモード用の既存テストのゲート除去と、同一大文字コンストラクタパラメータコレクションバインディングの回帰テスト追加
パフォーマンスへの影響
影響なし
関連Issue
#83803(修正対象)、#106158、#129775(反射バインダー既修正)
その他
- 修正範囲:IList<T>、IEnumerable<T>、セット可能なコレクション。配列とスカラーは影響なし
required/initのみプロパティの場合、生成されたオブジェクト初期化子での自己代入(CS1717)も修正- 以下の関連課題は今後の改善として除外:
- #95006:パラメータレスコンストラクタ型の
requiredプロパティに対する CS9035 initコレクションのnon-nullプリセットデフォルト値の置換vs追記動作
- #95006:パラメータレスコンストラクタ型の
#131009 [cDAC] Validate contract presence in interface returning functions
- 作成者: @hoyosjs
- 作成日時: 2026年07月18日 03:42:48(UTC)
- マージ日時: 2026年07月29日 09:13:01(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Compact Data Access Contract)がIXCLRDataProcess、ISosDac*、CorDBオブジェクトを返す前に、対象ランタイムが必要なすべてのコントラクトを公開しているか事前に検証し、不足している場合は分類可能な特定のHRESULTで失敗するようにします。新しいValidateForDataAccess(Target)メソッドは、これらのインターフェースが依存するコントラクト(直接・推移的)全体をインスタンス化なしで検証し、プラットフォーム条件付きコントラクト(Windowsのみ要求など)にも対応します。
変更内容
- 新規公開API:
CdacHResultsクラスにコントラクト検証失敗向けHRESULT定数を追加(CDAC_E_CONTRACT_NOT_ADVERTISED、CDAC_E_CONTRACT_UNRECOGNIZED、CDAC_E_CONTRACT_UNSUPPORTED等) - 例外ハイアラーキー:
ContractNotAvailableExceptionとその派生クラスを導入してコントラクト可用性検証の失敗を分類 - ContractRegistry:
TryGetContract署名変更(失敗例外を出力パラメータで返す)、TryValidateとRegisterUnsupportedメソッドを追加 - ContractDescriptorTarget: 例外ベースの記述子読み込みへ移行し、不正形式/見つからない場合の区別を強化
- CoreCLRContracts:
ValidateForDataAccessメソッド実装、検証失敗を分類されたHRESULTにマッピング - Entrypoints: インターフェース作成時に
ValidateForDataAccessによる事前検証ゲートを追加 - テスト: 不正形式記述子、コントラクト欠落/未認識/廃止動作、事前検証パスをカバーする単体テストを拡充
パフォーマンスへの影響
影響なし(検証はインスタンス化を避ける設計)
関連Issue
なし
その他
破壊的変更: ContractRegistry.TryGetContract署名が変更され、新しい公開API(CdacHResults、ContractNotAvailableException派生クラス)が追加されているため、API審査リンケージが必要です。早期アタッチ安全性を考慮し、サブディスクリプタ(GCなど)由来のコントラクトは検証を遅延させ、メインディスクリプタ由来のコントラクトのみ無条件で要求します。プラットフォーム条件付きコントラクト(IBuiltInCOM、IWindowsErrorReporting等)はターゲットOSに基づいてゲートします。
#130373 Reconcile ReleaseHolder, ComHolderPreemp, and ComHolderAnyMode
- 作成者: @AaronRobinsonMSFT
- 作成日時: 2026年07月08日 19:25:13(UTC)
- マージ日時: 2026年07月29日 04:04:54(UTC)
- ラベル: area-VM-coreclr
概要
CoreCLRのCOMおよびリファレンスカウント型RAII"ホルダー"を統一し、LifetimeHolder<Traits>パターンに収束させるリファクタリングです。3つの異なるCOMインターフェースホルダー(ReleaseHolder、ComHolderPreemp、ComHolderAnyMode)を統合し、レガシーなSpecializedWrapperAPI(Extract、Clear、GetValueなど)を廃止します。
変更内容
ReleaseHolder:LifetimeHolder<ReleaseHolderTraits<T>>にリターゲットされ、ComHolderPreempのプリエンプティブモード解放セマンティクスを採用。Free()はENABLE_CONTRACTS_IMPLでゲートされたMODE_PREEMPTIVE契約を使用ComHolderPreemp: 削除され、すべての使用箇所がReleaseHolderに置き換えComHolderAnyMode:ReleaseHolderAnyModeに改名- ホルダーAPI移行:
Extract()→Detach()、IsNull()→== NULL、Clear()/GetValue()→Free()など従来のメソッドを現代的なLifetimeHolderパターンに統一 - ダックタイピング対応:
HolderDetail::HasReleaseMethodによりRelease()メソッド検出をジェネリック化 - VM以外の対応: utilcode、md、DAC、createdumpなどのVM外の消費者は
STATIC_CONTRACT_*アノテーションにフォールバック
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
互換性に関する注意:
- コンパイラレベルの変更(
MODE_PREEMPTIVE契約の強制)により、ReleaseHolderがVM内で使用される場合、型によっては契約違反の可能性(例:ProfilerFunctionControlのようにSTANDARD_VM_CONTRACT/MODE_ANYで動作する非COMリファレンスカウント型) ReleaseHolderAnyModeの実装がSafeRelease(IUnknown*)を呼び出すため、保持される型はIUnknown*に変換可能である必要があります- 大規模なリファクタリング(62ファイル以上が変更)で、所有権の移譲パターンが体系的に更新されました
#126014 Update CMakePresets.json to 3.26 version
- 作成者: @huoyaoyuan
- 作成日時: 2026年03月24日 04:48:42(UTC)
- マージ日時: 2026年07月29日 11:58:46(UTC)
- ラベル: area-Infrastructure-coreclr community-contribution
概要
CMakePresets.json スキーマを 3.26 バージョンに更新するものです。
変更内容
- src/coreclr/CMakePresets.json: CMakePresets.json のバージョンを 3.26 に更新(15行追加、33行削除、合計48行)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
この変更はビルドシステム設定の更新であり、CoreCLR の構築プロセスに関連する変更です。