注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #131335 Implement CLR data Request methods in cDAC
- #131332 Shrink large multidimensional array tests to avoid OOM killer
- #131328 [wasm][R2R] Fix Vector128 argument alignment in crossgen ArgIterator
- #131322 Seed doc comments for WASM PackedSimd intrinsics
- #131314 Correct comment formatting in Runtime_131285.csproj
- #131305 Switch runtime iOS jobs to simulator temporarily
- #131301 Add managed cDAC type wrapper scaffolding
- #131300 Remove dead NAOT import
- #131297 Optimize Half comparison operators and CompareTo
- #131295 Require ML-DSA keys match the signature algorithm OID in SignedCms
- #131292 Remove unused GC signature type provider
- #131290 Re-enable Half modulus negative-zero tests
- #131289 Add ML-KEM and ML-DSA to well-known OID lookups
- #131286 Fix incorrect result for pow(x, 1) on ARM/ARM64
- #131283 Update ad-hoc signing in HostModel for changed
codesignbehaviour (code directory page size) in macOS 26+ - #131281 Add cDAC usage graph analyzer and documentation gates
- #131280 Remove large-memory CopyTo and parser overflow tests
- #131274 [cDAC] Implement IsThreadSuspendedOrHijacked for cDAC
- #131273 Fix in-proc crash reporter frame assert.
- #131260 SPMI: Allow superpmi.py -details to point to a directory
- #131250 Disable newly added tests on interpreter
- #131220 Add on-demand in-proc crash report generation.
- #131195 Fall back to NTLM in managed SPNEGO when Kerberos credentials are missing on Unix
- #131165 Add Signal, WaitForExitStatus, TryWaitForExitStatus, WaitForExitStatusAsync to Process
- #131124 JIT: Delete unused functions
- #131002 Add unsafe modifier migration code fixer
- #130954 Implement IXCLRDataProcess with existing cDAC contracts
- #130834 JIT: handle adjacent no-GC regions (#115719)
- #130525 Fix EventSource WriteEvent varargs overloads dropped from EventPipe
- #130493 JIT: Optimize always suspending helpers
- #130119 Fix config binder source generator emitting invalid tuple instantiation code
- #130118 Configuration Binder SG: ignore unresolvable metadata types to prevent ambiguous/missing-type emissions
- #130088 Fix Linux crash loading recursive Nullable static-abstract value types
- #129307 Add sshd and Copilot CLI to Android Dev Container
- #126625 Remove contract system support for RETURN/RETVAL/POSTCONDITION
- #126367 Convert apphost to C
- #123234 Fix FTP/SSL data stream closure causing protocol violation in .NET 10
#131335 Implement CLR data Request methods in cDAC
- 作成者: @Copilot
- 作成日時: 2026年07月24日 17:38:20(UTC)
- マージ日時: 2026年07月24日 21:03:35(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Component Data Access Contract)の複数のクラスに対して CLRDATA_REQUEST_REVISION メソッドを実装し、ネイティブDAC互換の動作を実現するPRです。引数検証、エラーハンドリング、ユニットテストを追加し、レガシーDAC との相互検証をデバッグビルドで実施しています。
変更内容
- ClrDataTask.cs:
CLRDATA_REQUEST_REVISION実装、引数検証、無効な引数や null 出力バッファを対応する HRESULT に変換 - ClrDataMethodDefinition.cs: 同上の実装
- ClrDataMethodInstance.cs: 同上の実装
- ClrDataValue.cs: 同上の実装
- ClrDataRequestTests.cs: 正常なリクエストと無効なバッファシナリオをカバーするユニットテスト(107行追加)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 本PRはGitHub Copilotで生成されています
- デバッグビルドでレガシーDAC のリビジョン値と HRESULT を相互検証する仕組みが含まれています
- CLRデータアクセスコントラクトの互換性維持を目的とした内部実装の変更です
#131332 Shrink large multidimensional array tests to avoid OOM killer
- 作成者: @tannergooding
- 作成日時: 2026年07月24日 16:52:08(UTC)
- マージ日時: 2026年07月24日 21:04:19(UTC)
- ラベル: area-System.Runtime
概要
大規模多次元配列テスト(Copy_LargeMultiDimensionalArrayとClear_LargeMultiDimensionalArray)のメモリ割り当てを縮小し、Helix環境でのOOM killer起動を防止します。short[2, 2_000_000_000](8GB)からbyte[2, 1_073_741_825](2GB)に変更しても、テストの本来の目的であるint.MaxValueを超える平坦化要素数でのネイティブサイズインデックスパス(Array.Copy/Array.Clear)の検証は変わらないため、テストの実行範囲を狭めずに問題を解決できます。
変更内容
- src/libraries/System.Runtime/tests/System.Runtime.Tests/System/ArrayTests.cs
Copy_LargeMultiDimensionalArrayテスト:配列タイプをshort[2, 2_000_000_000]からbyte[2, 1_073_741_825]に変更(メモリ割り当て:8GB → 2GB)Clear_LargeMultiDimensionalArrayテスト:同様に配列タイプとサイズを変更- 配列境界値を検証するインデックスリテラルを再計算
- メモリガード値は4GB固定のまま(2GB割り当てで十分な余裕を確保)
- スキップメッセージの書式修正と不要なコメント削除
パフォーマンスへの影響
影響なし。テスト自体の実行速度・メモリ効率は改善されますが、テスト対象となるArray.Copy/Array.Clearのコード経路(ネイティブサイズインデックス処理)は変わりません。
関連Issue
その他
- Windows x64での検証済み:テストはコンパイル・実行成功(
outerloop=true時) - Debian 10/11などメモリ限定環境でのOOM killer起動(exit code 137)を防止
#131328 [wasm][R2R] Fix Vector128 argument alignment in crossgen ArgIterator
- 作成者: @lewing
- 作成日時: 2026年07月24日 16:29:30(UTC)
- マージ日時: 2026年07月24日 23:34:57(UTC)
- ラベル: area-CodeGen-coreclr
概要
WebAssembly上のクロスジェン(R2R)で、Vector128<T>およびSystem.Numerics.Vector<T>の引数スタック配置の8バイト/16バイトの不一致を修正しました。この不一致により、後続の引数(汎用コンテキスト参照など)が破損し、Base64Url.DecodeFromUtf8で偽のNullReferenceExceptionが発生していました。
変更内容
- runtime:
MethodTableBuilder::CheckForSystemTypesでSystem.Numerics.Vector<T>にWebAssembly上での16バイト配置要件を追加(Vector128<T>およびInt128と同様) - crossgen2:
CacheV128Typeにアサーション追加で、すべてのv128型が16バイト配置であることを検証し、配置要件の不一致を検出 - cDAC/ArgIterator:
RequiresAlign16OnWasm()メソッドの実装により、Wasm32パスでv128型の引数を16バイト配置に強制 - ドキュメント: cDAC RuntimeTypeSystemコントラクトに
GetVectorElementSize(...)を追加
パフォーマンスへの影響
影響なし(配置要件の修正のため、パフォーマンスには直接的な影響なし)
関連Issue
その他
- 検証: Browser R2R環境で
Microsoft.Bcl.Memory.TestsSIMD完全R2R実行時に、修正前の12件のBase64Url失敗(すべてNullReferenceException)が解決 - 制限: WebAssembly R2RはまだCI実行不可のため、自動回帰テストは延期。既存テストプロジェクトではcrossgen
ArgIterator<TypeHandle>に到達する機能テストがない - 注記: 修正内容には関連PR #130991(
PackedSimd.Shuffleローリング)の依存性あり。cDAC側の追加対応(全バリュー型の配置修正)は別途追跡中
#131322 Seed doc comments for WASM PackedSimd intrinsics
- 作成者: @tannergooding
- 作成日時: 2026年07月24日 14:19:01(UTC)
- マージ日時: 2026年07月24日 22:33:10(UTC)
- ラベル: area-System.Runtime
概要
WASM PackedSimd intrinsicsクラスの全メンバーにドキュメントコメントを追加し、#88574で追跡されていた最後の未文書化intrinsicsクラスをカバーします。各メンバーはC intrinsicプロトタイプとWebAssembly SIMD命令仕様を含む統一された形式で文書化されます。
/// <summary>
/// <para>v128_t wasm_i8x16_splat (int8_t a)</para>
/// <para>i8x16.splat : [i32] -> [v128]</para>
/// </summary>
変更内容
- src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs: 1888行追加、472行削除。
System.Runtime.Intrinsics.Wasm.PackedSimdクラスの全メンバーにドキュメントコメントを追加。各メンバーはwasm_simd128.h由来のCプロトタイプと、WebAssembly SIMD仕様に準拠した命令行(ニーモニック、即値オペランド、スタック遷移を含む)を含む。unsignedi64x2比較(lt_u/le_u/gt_u)のように対応するWasm intrinsicがない場合は命令行のみを記載。
パフォーマンスへの影響
影響なし
関連Issue
その他
- このドキュメントコメントは、mddocsフローを通じてdotnet-api-docs XMLを生成するために使用されます。
- PR説明とドキュメントコメントはGitHub Copilotで起草されました。
#131314 Correct comment formatting in Runtime_131285.csproj
- 作成者: @am11
- 作成日時: 2026年07月24日 12:43:05(UTC)
- マージ日時: 2026年07月24日 13:16:30(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
Runtime_131285.csproj ファイル内のコメントフォーマッティングの問題を修正するPull Requestです。プロジェクトファイルのコメント形式を正しい形式に修正しました。
変更内容
- src/tests/JIT/Regression/JitBlue/Runtime_131285/Runtime_131285.csproj: コメントフォーマッティングを修正(+1/-1行)
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#131305 Switch runtime iOS jobs to simulator temporarily
- 作成者: @matouskozak
- 作成日時: 2026年07月24日 08:25:23(UTC)
- マージ日時: 2026年07月24日 12:08:17(UTC)
- ラベル: area-Infrastructure-mono os-ios
概要
ランタイムパイプラインのiOS関連ジョブを一時的にデバイス実行からシミュレータ実行に切り替える変更です。NativeAOTおよびCoreClrライブラリテストジョブの実行対象をios_arm64からiossimulator_arm64に変更し、#123796の解決まで暫定運用する予定です。
変更内容
- eng/pipelines/runtime.yml: NativeAOT libraries-testジョブのプラットフォームを
ios_arm64→iossimulator_arm64に変更 - eng/pipelines/runtime.yml: CoreCLR libraries-testジョブのプラットフォームを
ios_arm64→iossimulator_arm64に変更 - セクション見出しを"iOS devices"から"iOS Simulator"に変更し、関連するIssueを参照するコメントを追加
パフォーマンスへの影響
なし
関連Issue
その他
本変更は暫定的なもので、#123796が解決されるまでの間の運用です。CI/CDパイプラインの設定変更であり、開発環境に直接の影響はありません。
#131301 Add managed cDAC type wrapper scaffolding
- 作成者: @Copilot
- 作成日時: 2026年07月24日 04:50:25(UTC)
- マージ日時: 2026年07月24日 12:41:07(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Compact Diagnostic Access Component)のマネージド型ラッパー用スキャフォルディングを追加するPRです。CLRDataTypeDefinitionとCLRDataTypeInstanceのCOMラッパーを実装し、フォールバック有効時はレガシー実装へ委譲し、フォールバック不可時はE_NOTIMPLを返します。現時点ではコントラクト支援の実装は含まれていません。
変更内容
ClrDataTypeDefinition.cs:
IXCLRDataTypeDefinitionCOM インターフェースのラッパー実装(116行追加)- レガシー実装への委譲メカニズム
- フォールバック未対応時の
E_NOTIMPL戻り値処理
ClrDataTypeInstance.cs:
IXCLRDataTypeInstanceCOM インターフェースのラッパー実装(113行追加)- レガシー実装への委譲メカニズム
- フォールバック未対応時の
E_NOTIMPL戻り値処理
パフォーマンスへの影響
影響なし(スキャフォルディング段階のため、実質的な処理は含まれていません)
関連Issue
なし
その他
- このPRはスキャフォルディングのみであり、本来の機能実装はまだ行われていません
- Copilotによる自動レビューは実行されていません(ボット作成のため直接課金対象外)
- レガシー実装への委譲パターンは、段階的な移行戦略の一環と考えられます
#131300 Remove dead NAOT import
- 作成者: @MichalPetryka
- 作成日時: 2026年07月24日 04:47:34(UTC)
- マージ日時: 2026年07月24日 18:10:00(UTC)
- ラベル: community-contribution area-NativeAOT-coreclr
概要
NAOT環境で使用されていないRhIsGCBridgeActiveインポートを削除するクリーンアップです。このメソッドはエクスポートもされておらず、コード内で呼び出されていない不要な実装でした。
変更内容
- System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs:
RhIsGCBridgeActiveインポート定義を削除(4行削除)
パフォーマンスへの影響
影響なし(デッドコード削除による最小限の改善のみ)
関連Issue
なし
その他
NAOT(Native AOT)コンパイラの不要なメタデータ削減に関連する変更です。
#131297 Optimize Half comparison operators and CompareTo
- 作成者: @tannergooding
- 作成日時: 2026年07月23日 22:35:13(UTC)
- マージ日時: 2026年07月24日 21:35:26(UTC)
- ラベル: area-System.Numerics
概要
System.Half の比較演算子とCompareTo メソッドを最適化しました。主な改善は:
CompareToを書き直し、演算子チェーンと冗長なNaN/符号/ゼロチェックを排除- AVX2対応環境で
<、<=、CompareToに(float)Half変換を経由した高速パスを追加
AVX2環境では CompareTo が約3.8倍高速化(13.06 us → 3.47 us)、operator < は約2倍高速化(4.76 us → 2.41 us)しました。AVX2非対応環境でも従来の実装より高速です。
変更内容
src/libraries/System.Private.CoreLib/src/System/Half.cs
CompareTo(Half)をNaN処理と単調な符号・大きさ順序キーを用いたビット比較に書き直し(+0と-0を同一のキーに統一)- AVX2対応環境で
operator <、operator <=、CompareToに(float)Half変換経由の高速パスを追加 - 等値演算子(
==、!=、Equals)はビット論理のままとした(float変換は測定上遅くなるため)
src/libraries/System.Runtime/tests/System.Runtime.Tests/System/HalfTests.cs
CompareTo_TestDataに符号付きゼロ、非正規化数の符号順序、NaN/無限大順序に関するテストケースを追加
パフォーマンスへの影響
CompareTo(混合データ、AVX2対応機で4096比較/操作)
- 従来実装:13.06 µs(約3.19 ns/比較)
- ビットキーのみ:7.10 µs(約1.73 ns/比較)
- ビットキー + AVX2 float パス:3.47 µs(約0.85 ns/比較)→ 約3.8倍高速化
operator <:約2倍高速化(4.76 µs → 2.41 µs)
AVX2非対応環境でもビットキー実装により従来の実装より高速(CompareTo 13.06 us → 7.06 us)。
等値演算子は float 変換が測定上遅くなるため(2.16 us → 3.20 us)ビット論理のままとしました。
関連Issue
その他
Half→float変換は無損失かつ順序保存的(NaN と符号付きゼロのセマンティクスは保持)であるため、すべての高速パスは既存のビット・セマンティクスと完全に一致しますAvx2.IsSupportedは JIT時定数であり、実行されないブランチは消去されるため、非対応環境ではオーバーヘッドなし- HalfTests の全1629ケースが AVX2有効時と
DOTNET_EnableAVX2=0による高速パス無効時の両方で合格
#131295 Require ML-DSA keys match the signature algorithm OID in SignedCms
- 作成者: @bartonjs
- 作成日時: 2026年07月23日 22:03:04(UTC)
- マージ日時: 2026年07月24日 05:15:35(UTC)
- ラベル: area-System.Security
概要
SignedCmsのML-DSA署名検証を強化し、証明書のML-DSAパラメータセットがCMS SignerInfoに格納されている署名アルゴリズムOIDと一致することを確認するようにしました。OIDとキーの不一致がある場合、署名検証が失敗するようになります。
変更内容
- CmsSignature.MLDsa.cs: ML-DSA署名検証時にパラメータセット照合ロジックを追加し、アルゴリズムOIDとML-DSA公開鍵のパラメータセットの一致性をチェック
- CmsSignature.SlhDsa.cs: 関連する変更(26行追加、21行削除)
- Oids.cs: テスト用のML-DSA OID定数(ML-DSA-65、ML-DSA-87など)を新規追加
- SignedCmsTests.cs: 回帰テストを追加。エンコードされたML-DSA署名アルゴリズムOIDを改ざんして、CheckSignatureが失敗することを検証
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
Copilotのレビューで、テストコードの潜在的な問題が指摘されています。LastIndexOfがOIDシーケンスを見つけられない場合は-1を返すため、その後のインデックス計算が無関係なバイトを改変する可能性があります。テストの堅牢性向上のため、パッチ前にインデックスが非負であることをアサーションする必要があります。
#131292 Remove unused GC signature type provider
- 作成者: @max-charlamb
- 作成日時: 2026年07月23日 20:51:41(UTC)
- マージ日時: 2026年07月24日 02:03:06(UTC)
- ラベル: area-Diagnostics-cdac
概要
未使用のGC署名型プロバイダー(GcSignatureTypeProvider)とその関連型を削除するPull Requestです。同時に古い設計ドキュメントとストレステストデバッギーのコメント参照も削除されています。
変更内容
GcSignatureTypeProvider.cs: GC署名型プロバイダーの実装全体(219行)を削除Signature.md: 設計ドキュメントの参照を更新(1行削除、1行追加)Program.cs: ストレステスト用デバッギーの古いコメント参照を更新(2行削除、2行追加)
パフォーマンスへの影響
影響なし(未使用コンポーネントの削除であるため)
関連Issue
なし
その他
この変更はデッドコードの除去であり、公開APIへの変更はありません。cdac(Common Data Access Component)の診断インフラストラクチャの内部実装整理です。
#131290 Re-enable Half modulus negative-zero tests
- 作成者: @tannergooding
- 作成日時: 2026年07月23日 20:20:50(UTC)
- マージ日時: 2026年07月24日 21:37:40(UTC)
- ラベル: area-System.Numerics
概要
Half型のmodulus演算でnegative zero(負のゼロ)を保持するテストケースを再度有効化するPR。2022年にWindows x64 Debug環境での非決定的な符号損失を回避するためにコメントアウトされていた2つのテストが、現在の環境では問題が解決されたため、安全に復活させることができるようになった。float、double、NFloatの同等のテストは既に有効かつグリーン状態にある。
変更内容
- src/libraries/System.Runtime/tests/System.Runtime.Tests/System/HalfTests.GenericMath.cs
HalfTests.op_ModulusTest内で無効化されていた2つのテストケースを再度有効化Half.MinValue % 2がnegative zeroになることを検証NegativeZero % 2がnegative zeroになることを検証
- 古い
PositiveTwoヘルパーへの参照をコメントアウトから削除し、既存のTwoヘルパーを使用に統一
パフォーマンスへの影響
影響なし(テストコードのみの変更)
関連Issue
その他
- 根本原因は2022年のMSVCツールセット/CRT環境の不具合で、現在の環境では再現しない
- JITコンパイル時パスは正確:
gtFoldExprBinaryConstDblはGT_MODをfoldしない、VNFpRemは正しく-0を計算 - ランタイムヘルパー(
CORINFO_HELP_FLTREM→fmodf)は現在のMSVC CRTでfmod(-0, 2)に対して-0を返す - .NET 10での検証済み:Debug/Release両モードで
0x8000(negative zeroのビット表現)が返される - ローカルリポジトリテストスイートは未実行(ベースラインビルド環境なし)。CI側で
System.Runtime.Testsがカバー
#131289 Add ML-KEM and ML-DSA to well-known OID lookups
- 作成者: @vcsjones
- 作成日時: 2026年07月23日 20:11:42(UTC)
- マージ日時: 2026年07月24日 03:20:15(UTC)
- ラベル: area-System.Formats.Asn1
概要
ML-KEM(ML-KEM-512/768/1024)とML-DSA(ML-DSA-44/65/87)のOID(Object Identifier)をSystem.Formats.Asn1の既知OID検索テーブルに追加します。これにより、AsnWriter/AsnDecoderがこれらのポスト量子暗号アルゴリズムに対して高速パスマッピングを使用できるようになります。
CAB Forum(認証局・ブラウザフォーラム)の S/MIME CA/B WG が SMC013投票でML-DSAとML-KEMを承認しており、サーバー証明書やコード署名ワーキンググループでも検討が進められているため、仕様実装の準備として追加されます。
変更内容
- WellKnownOids.cs: パックされたデータテーブルにML-DSA(44/65/87)とML-KEM(512/768/1024)のOIDを追加し、スライスオフセットを更新
- WriteObjectIdentifier.cs: 新規OID文字列と期待される符号化値でライタテストを拡張
- ReadObjectIdentifier.cs: 新規OIDの符号化に対するデコーダテストケースを追加
パフォーマンスへの影響
影響なし。既知OIDテーブルへの追加により、これらのOIDに対する検索が高速パスで処理されるため、相対的に性能が向上します。
関連Issue
その他
- SLH-DSAとHashML-DSAは、現在採用への関心が薄いため、仕様策定がさらに進むまで含められていません
- CompositeML-DSAも同様の理由で、今後の追加候補として留保されています
- 破壊的変更なし。内部APIの拡張のみで、公開APIへの影響はありません
#131286 Fix incorrect result for pow(x, 1) on ARM/ARM64
- 作成者: @tannergooding
- 作成日時: 2026年07月23日 19:16:36(UTC)
- マージ日時: 2026年07月24日 00:29:25(UTC)
- ラベル: area-System.Numerics
概要
ARM/ARM64プラットフォームにおいて、Math.Pow(x, 1)およびMathF.Pow(x, 1)がサブノーマル数(double.Epsilonなど)を入力とした場合に誤って0を返していた問題を修正します。ARM/ARM64 CRTはpowをexp(y * log(x))で計算するため、y=1の場合にサブノーマル値がアンダーフローしていました。数学的にはpow(x, 1) = x(NaN、±inf、±0を含む全てのx)が成立するため、y == 1での早期リターンを追加します。
変更内容
- floatsingle.cpp / floatdouble.cpp: ARM/ARM64でのみ有効な
y == 1の早期リターン処理を追加。引数xをそのまま返すことでCRTpow/powfのアンダーフロー問題を回避 - valuenum.cpp: JIT値番号ベースの定数折畳(
EvalMathFuncBinary)にARM/ARM64向けの同様の修正を追加。JITがARM上でネイティブ実行される場合、定数折畳時にも同じCRTpowを呼ぶため、ランタイムヘルパーの修正を無効にしないようにする - Math.cs / MathF.cs:
double.Epsilon/float.Epsilonを入力としたy == 1のリグレッションテストケースを既存理論データに追加
パフォーマンスへの影響
影響なし。早期リターンはパフォーマンスに有益(不要なCRT呼び出しを回避)。
関連Issue
その他
- 修正はARM/ARM64プラットフォーム固有(
#ifガード)のため、x64環境では検証不可。テストケースで期待値はx64で検証済み(Math.Pow(double.Epsilon, 1) == double.Epsilonが成立することを確認) - CI ARM レグでの実装検証が必要
- PR説明とコード変更はGitHub Copilotとの協働で作成
#131283 Update ad-hoc signing in HostModel for changed codesign behaviour (code directory page size) in macOS 26+
- 作成者: @elinor-fung
- 作成日時: 2026年07月23日 18:57:26(UTC)
- マージ日時: 2026年07月24日 15:56:44(UTC)
- ラベル: area-Host
概要
macOS 26でcodesignコマンドがarm64/arm64_32アーキテクチャのMach-Oオブジェクトをハッシュする際、コードディレクトリページサイズを4 KiBから16 KiBに変更したことに対応する変更です。HostModelの管理されたad-hocシッパーをMach-O CPUタイプに基づいてページサイズを決定するように更新し、macOS 26+でのcodesign出力とのマッチングを実現します。16 KiBページサイズは古いarm64 macOSバージョンでも動作します。
変更内容
- MachCpuType.cs: arm64/arm64_32検出に必要なCPUタイプ列挙値を追加
- MachObjectFile.cs: Mach-O CPUタイプからコードディレクトリページサイズを決定し、署名ビルド時に使用
- CodeDirectoryBlob.cs: 明示的なページサイズを受け入れ、正確な
Log2PageSize値をエンコード、ページサイズに基づいてコードスロットハッシング/カウントを実行 - EmbeddedSignatureBlob.cs: 署名サイジングにページサイズを渡し、最悪ケース推定に4 KiBを使用
- SigningTests.cs:
MatchesCodesignOutputテストを再有効化、pre-macOS 26 arm64シナリオ向けのスキップロジックを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- HostModel署名コンポーネント内部実装の変更で、公開APIへの影響なし
- arm64マシンでのmacOS 26+互換性修正であり、破壊的変更ではない
- osx.15.arm64キューでのホストテスト実行により検証済み
#131281 Add cDAC usage graph analyzer and documentation gates
- 作成者: @max-charlamb
- 作成日時: 2026年07月23日 18:14:25(UTC)
- マージ日時: 2026年07月24日 02:06:52(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(CoreCLR Data Access Contract)の使用グラフを分析するRoslyn ベースのアナライザーと、その分析結果から自動生成される契約使用ドキュメント、およびドキュメントの同期を強制するリポジトリゲートを追加します。
IDataソースジェネレータを拡張して、生成されたメンバーに依存性メタデータ([DataDescriptorDependency]、[UsesDataDescriptorTypeSize]属性)を付与し、アナライザーが実装の詳細に依存せずにディスクリプタ読み取りを特定できるようにします。契約ドキュメント内に自動生成される使用セクションを挿入し、ドキュメントの陳腐化検出とバージョンごとのドキュメント確認を自動化します。
変更内容
- CdacUsageGraphツール (
src/native/managed/cdac/tools/CdacUsageGraph/): Roslyn/MSBuild基盤のアナライザーツール、テストプロジェクト、generate-docs.ps1ラッパースクリプト。Semantic解析(シンボルマッチング、Operationツリー検査)、契約登録解析、ディスクリプタ型発見、Markdown/JSONレポート生成を実装。 - ジェネレータ拡張 (
src/native/managed/cdac/gen/):GetSize(Target)ヘルパー、Get<X>Offset(Target)アクセサーを生成し、[DataDescriptorDependency]と[UsesDataDescriptorTypeSize]属性でマーク。 - 新規属性 (
CdacAttributes.cs):DataDescriptorDependencyAttribute、UsesDataDescriptorTypeSizeAttribute(公開API) - 契約・データ型更新 (50+ ファイル): 生成ヘルパーの使用、明示的な依存性アノテーション、ディスクリプタ型シェル追加。
- ドキュメント生成 (30+
.mdファイル): 契約ごとの使用セクション自動挿入、data-descriptor-overrides.jsonで版別抑止をサポート。 - CI ゲート (
ContractDocumentationTests.cs,ContractUsageGraphTests.cs): ドキュメント陳腐化検出、未ドキュメント版検出、プレースホルダー意味テスト。
パフォーマンスへの影響
影響なし(分析・ドキュメント生成は開発時・CI時のみ実行)
関連Issue
なし
その他
- 公開API懸念: Copilotが指摘の通り、新規公開属性(
DataDescriptorDependencyAttribute、UsesDataDescriptorTypeSizeAttribute)は出荷アセンブリで追加される。リポジトリポリシーに従い、API提案/承認(api-approved) が必要か、内部APIとすべき可能性あり。 - ドキュメント同期の強制: ドキュメントが陳腐化した場合、テストが該当ドキュメント名と修復コマンド(
generate-docs.ps1実行)を報告。 - 版差分サポート:
DebugInfo.md等で版間の差分を追跡・記載可能。 - 推奨テストコマンド:
dotnet test .\src\native\managed\
#131280 Remove large-memory CopyTo and parser overflow tests
- 作成者: @tannergooding
- 作成日時: 2026年07月23日 18:08:30(UTC)
- マージ日時: 2026年07月24日 23:27:37(UTC)
- ラベル: area-System.Memory
概要
System.Memory.Tests の3つの大規模メモリ [OuterLoop] テスト(CopyToLargeSizeTest x2 と TestParser2GiBOverflow)を削除します。これらのテストは4~16GBのメモリを消費し、14GBの外部ループマシンで不安定でした。大規模コードパスの検証は不要と判断されたため、テストスイートの信頼性向上のために削除されます。
変更内容
- src/libraries/System.Memory/tests/Span/CopyTo.cs / src/libraries/System.Memory/tests/ReadOnlySpan/CopyTo.cs:
>2GB/>4GBのCopyToテストを削除。Span<T>.CopyToには特別な大規模メモリ用コードパスがなく、ネイティブMemmoveに委譲されるため、既存の境界値・オーバーフロー テストで十分と判定。 - src/libraries/System.Memory/tests/ParsersAndFormatters/Parser/ParserTests.2gbOverflow.cs:2GBバッファオーバーフロー テストを削除。パーサーが2GBバッファ全体を処理し成功/失敗することを検証するのみで、特別なエッジケースなし。
- src/libraries/System.Memory/tests/AllocationHelper.cs:変更なし(他の大規模割り当てテスト(
Overflow、Clear、BinarySearch、Base64)で継続利用)。
パフォーマンスへの影響
テストメモリ消費量が大幅削減。削除されたテストは一度に4~16GBの割り当てまたは2GBバッファの繰り返し書き込みが必要でしたが、これらが排除されます。外部ループテスト実行時の安定性と実行時間の短縮が見込まれます。
関連Issue
#24139(14GBマシンでのテスト不安定性)、#118400(同様の2GBテスト削除の先例)
その他
Span<T>の長さは内部的に制限されており、既存の境界値・オーバーフロー テストで十分にカバーされている。- 将来ロジック変更時は手動検証で対応可能(#118400 での同様テスト削除の結論を踏襲)。
#131274 [cDAC] Implement IsThreadSuspendedOrHijacked for cDAC
- 作成者: @barosiak
- 作成日時: 2026年07月23日 15:45:49(UTC)
- マージ日時: 2026年07月24日 23:49:29(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Compact Diagnostics and Analysis Component)の従来型DBIシムに IsThreadSuspendedOrHijacked メソッドを実装します。このメソッドは Thread コントラクトの ThreadData.State から結果を導出し、スレッドがサスペンドされているか、ハイジャック状態にあるかを判定します。
変更内容
- DacDbiImpl.cs:
IsThreadSuspendedOrHijackedをコントラクトベースで実装。IThread.GetThreadData(...).StateのDebugSyncSuspended | Hijackedフラグから結果を導出。DEBUG構成時は従来型DACとの相互検証も行う。 - DacDbiThreadDumpTests.cs: ダンプベースの統合テストを追加。
ThreadStoreData.FirstThreadからスレッドを反復処理し、DBI結果とコントラクト状態が一致することを検証。 - DacDbiImplTests.cs: ユニットテストを追加(詳細は不明)。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 内部実装の変更(cDAC診断基盤の強化)
- 既存のDACとの互換性検証機構が組み込まれている
#131273 Fix in-proc crash reporter frame assert.
- 作成者: @lateralusX
- 作成日時: 2026年07月23日 15:32:25(UTC)
- マージ日時: 2026年07月24日 10:58:40(UTC)
- ラベル: area-VM-coreclr
概要
インプロセスクラッシュレポーターのスタックウォークコールバックが、CrawlFrameがFrameLessであるかチェックせずにGetRelOffsetを呼び出していた問題を修正しました。GetRelOffsetメソッドはこの条件をアサートしているため、デバッグビルドではアボートが発生していました。
変更内容
src/coreclr/vm/crashreportstackwalker.cpp: スタックウォークコールバック内で、GetRelOffsetを呼び出す前にCrawlFrameのFrameLess状態をチェックする条件を追加(1行追加、1行削除)
パフォーマンスへの影響
影響なし
関連Issue
その他
デバッグビルドにおけるクラッシュレポーター機能の安定性向上。ランタイムのクラッシュダンプ生成時に予期しないアボートが発生することを防止します。
#131260 SPMI: Allow superpmi.py -details to point to a directory
- 作成者: @jakobbotsch
- 作成日時: 2026年07月23日 13:03:04(UTC)
- マージ日時: 2026年07月24日 18:27:27(UTC)
- ラベル: area-CodeGen-coreclr
概要
superpmi.py -detailsオプションがディレクトリパスを指定できるように拡張されました。複数のコレクション(MCHファイル)をリプレイする際に、各コレクションごとに個別のdetails CSVファイルを出力できるようになります。
変更内容
- superpmi.py:
-details引数がファイルパスに加えてディレクトリパスに対応。get_details_file_path()ヘルパー関数を追加し、MCHファイルごとのdetails CSV出力パスを計算。このヘルパーをreplay、asm-diffs、throughput-diff、metric-diffの各フローで使用して、動作の一元化を実現。
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#131250 Disable newly added tests on interpreter
- 作成者: @BrzVlad
- 作成日時: 2026年07月23日 07:13:15(UTC)
- マージ日時: 2026年07月24日 10:16:05(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
CoreCLR インタープリタの実行速度が JIT より大幅に遅いため、インタープリタ環境でのテストタイムアウトを回避する変更です。#130968で追加されたパフォーマンステストをインタープリタ環境では無効化し、JIT環境での実行時のみカバレッジを保ちます。
変更内容
- src/libraries/System.Private.Xml/tests/Misc/AttributeReadingPerformanceTests.cs
[Fact]属性のテストを[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotCoreClrInterpreter))]に変換- Release限定(
#if !DEBUG)テストにも同じ条件を適用
パフォーマンスへの影響
影響なし。テストスキップによるタイムアウト防止が目的です。
関連Issue
その他
なし
#131220 Add on-demand in-proc crash report generation.
- 作成者: @lateralusX
- 作成日時: 2026年07月22日 14:38:11(UTC)
- マージ日時: 2026年07月24日 11:22:47(UTC)
- ラベル: area-Diagnostics-coreclr
概要
CoreCLRの内部プロセス crash reporterに、ランタイム実行中にプログラムからオンデマンドでクラッシュレポートを生成する機能を追加します。致命的エラーハンドラー(#129543で提案)から呼び出し可能な新しいエントリーポイント InProcCrashReportCreateReport を提供し、JSON またはログ形式でレポートをコールバックに出力できます。
変更内容
- オンデマンドレポートAPI追加 —
InProcCrashReportCreateReport(outputFormat, signal, context, outputCallback, callbackContext)を新規実装。信号ハンドラーパスと同じ形式のレポート生成をサポート。 - 初期化の分離 — reporter の初期化を
CrashReportInitialize(VM コールバックのみ)とInProcCrashReportInitializeServices(ウォッチドッグ・ライフサイクル・PAL登録)に分割。 - 相互排他制御 — 信号パスとオンデマンドパスで
m_reportInFlightガードを共有し、シグナルセーフライター・モジュールテーブル・スレッド一時停止を排他制御。 - 出力シンク抽象化 —
SignalSafeConsoleWriterとSignalSafeJsonWriterに小型の copyable なシンク抽象化を追加(プラットフォームコンソール/破棄/呼び出し側コールバック対応)。 - スタックオーバーフロー分類の修正 — SO スタックトレースキャプチャを実際の SO パスのみに限定。従来は
FailFastでも SO トレースラッチが設定され、オンデマンドレポートがFailFastをStackOverflowに誤分類していました。
パフォーマンスへの影響
影響なし。crash reporting が無効の場合は起動時にメモリ割り当てなし。有効の場合も既存の signal ベース crash reporter 機構を再利用するため、既存動作に変化なし。
関連Issue
#129543(ユーザー登録ネイティブ致命的エラーハンドラー提案)
その他
- 内部 API の変更であり、公開 API への互換性への影響なし。
- crash reporter は自動テストが不足しており、#129543 統合時の統合テストで検証予定。
- Android arm64 エミュレータで手動検証済み(FailFast、StackOverflow パス)。
#131195 Fall back to NTLM in managed SPNEGO when Kerberos credentials are missing on Unix
- 作成者: @rzikm
- 作成日時: 2026年07月22日 08:46:02(UTC)
- マージ日時: 2026年07月24日 12:53:27(UTC)
- ラベル: area-System.Net.Security
概要
マネージドSPNEGO実装でKerberos認証失敗時にNTLMへの自動フォールバックを実装。Linux(MIT krb5)でKDC/TGTが利用できない場合、GSS_S_NO_CREDエラーが発生してNTLMへのフォールバックが実行されず401エラーが返される問題を修正。OpenBSD(Heimdal)では既に機能していた回復可能なエラーとして処理する動作を全Unixプラットフォームに統一。
変更内容
- System.Net.Security/src/System/Net/NegotiateAuthenticationPal.ManagedSpnego.cs
- Kerberos以外の最適化メカニズム(非NTLM)で
UnknownCredentialsステータスを回復可能な最適化フォールバックとして処理 - Unix全プラットフォームでKerberos→NTLM フォールバックパスを有効化
- フォールバック動作の根拠を説明するコメント更新
- Kerberos以外の最適化メカニズム(非NTLM)で
パフォーマンスへの影響
影響なし
関連Issue
その他
- 検証方法: 完全なテストホスト構築不可のため、実際の
System.Net.Security.dllバイナリを構築し、プライベートな参照サーバーに対してNTLM/Negotiate HTTPハンドシェイク検証を実施 - 互換性: マネージドユニットテスト
DefaultNetworkCredentials_NTLM_DoesNotThrowは未影響(SPNEGO最適化メカニズムパスのみ動作変更) - 推奨:
release/10.0へのバックポートを#123003と同時実施を検討 - 本PR作成: GitHub Copilot(CLI)
#131165 Add Signal, WaitForExitStatus, TryWaitForExitStatus, WaitForExitStatusAsync to Process
- 作成者: @Copilot
- 作成日時: 2026年07月21日 18:42:37(UTC)
- マージ日時: 2026年07月24日 19:23:02(UTC)
- ラベル: area-System.Diagnostics.Process
概要
Processクラスに4つの新しいメソッドを追加するAPI実装です。SafeProcessHandleで提供されていた機能を直接Processインスタンスから利用できるようになります。
public bool Signal(PosixSignal signal);
public ProcessExitStatus WaitForExitStatus();
public bool TryWaitForExitStatus(TimeSpan timeout, out ProcessExitStatus? exitStatus);
public Task<ProcessExitStatus> WaitForExitStatusAsync(CancellationToken cancellationToken = default);
変更内容
- ref/System.Diagnostics.Process.cs — 新しいメソッドのシグネチャを追加。
SignalメソッドにはiOS/tvOS非対応の属性を付与 - src/System/Diagnostics/Process.cs — 4つのメソッドを実装(
SafeProcessHandleへの委譲) - src/System/Diagnostics/Process.Unix.cs / Process.Windows.cs — プラットフォーム固有の実装を追加
- tests/SafeProcessHandleTests.cs — 既存の10個のテストを
[ConditionalFact]から[ConditionalTheory(bool testHandle)]に昇格。testHandle=falseパスで新しいProcessAPIをテスト - tests/WaitForExitStatusTests.cs — 新規ファイル。
Signal、WaitForExitStatusなどの包括的なテストを追加(603行) - System.Diagnostics.Process.Tests.csproj — テスト設定の更新
パフォーマンスへの影響
影響なし
関連Issue
その他
- 新しいメソッドはいずれも公開API(公開ライブラリの一部)
SignalメソッドはPosix信号送信機能で、iOS/tvOSでは非対応- テストコードではnull許容性に関する警告が複数指摘されており、本番環境での修正が必要な可能性があります
#131124 JIT: Delete unused functions
- 作成者: @EgorBo
- 作成日時: 2026年07月21日 01:21:23(UTC)
- マージ日時: 2026年07月24日 02:19:51(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラで使用されていない関数を削除する内部実装の整理を行いました。合計192行のコードが削除されています。
変更内容
- compiler.cpp: 115行削除 - 未使用の関数定義を削除
- compiler.h: 34行削除 - 未使用の関数宣言を削除
- emitriscv64.cpp: 9行削除 - RISC-V 64ビット向けコンパイラの未使用関数を削除
- lower.h: 11行削除 - 未使用の関数を削除
- lsra.h: 31行削除 - レジスタ割り当て(LSRA)関連の未使用関数を削除
- priorityqueue.h: 31行削除 - プライオリティキュー実装の未使用関数を削除
パフォーマンスへの影響
影響なし(不要なコードの削除のため、パフォーマンスに変化なし)
関連Issue
なし
その他
内部実装(JITコンパイラの非公開関数)の削除であり、公開APIへの影響はありません。コード保守性向上を目的とした変更です。
#131002 Add unsafe modifier migration code fixer
- 作成者: @EgorBo
- 作成日時: 2026年07月17日 21:59:58(UTC)
- マージ日時: 2026年07月24日 00:06:52(UTC)
- ラベル: linkable-framework area-Tools-ILLink
概要
unsafe-v2ルールへの移行を支援する新しいアナライザーとコード修正機能を追加します。Roslynアナライザーに基づき、extern メンバーへの unsafe/safe修飾子追加、無効な unsafe修飾子の削除、ポインタシグネチャに対する unsafe要件チェック、XMLドキュメントによる安全性記述の検証などを実装します。これらの機能はILLinkの一部として提供されます。
変更内容
新規アナライザー(ILLink RoslynAnalyzer):
UnsafeMemberMissingSafetyDocumentationAnalyzer:unsafe メンバーに<safety>XML コメントがない場合に IL5005を報告PointerSignatureRequiresUnsafeAnalyzer:ポインタ/関数ポインタシグネチャを持つメンバーに unsafe修飾子がない場合に IL5006を報告
新規コード修正プロバイダー(ILLink CodeFix):
AddUnsafeToExternCodeFixProvider:CS9389を修正、extern メンバーに unsafe追加RemoveInvalidUnsafeCodeFixProvider:CS9377とCS0106を修正、無効な unsafe修飾子削除RemoveUndocumentedUnsafeCodeFixProvider:IL5005を修正、未ドキュメントの unsafe削除(ポインタシグネチャと明示的レイアウト型フィールドは除外)AddUnsafeToPointerSignatureCodeFixProvider:IL5006を修正、ポインタシグネチャに unsafe追加AddUnsafeToFieldCodeFixProvider:CS9392を修正、明示的/拡張レイアウト型のインスタンスフィールドに unsafe追加
支援クラス:
UnsafeMigrationAnalyzerHelpers:修飾子決定の共通ロジックUnsafeMigrationSyntaxHelpers:構文操作の支援関数UnsafeModifierCodeFixHelpers:コード修正ユーティリティ
リソースと設定:
- DiagnosticId、DiagnosticCategory に新規IDと「Unsafe」カテゴリを追加
- SharedStrings.resx に新規診断メッセージを追加
- 包括的なテストスイートを追加(7つのテストクラス、合計1,176行)
パフォーマンスへの影響
影響なし
関連Issue
その他
- 本機能はまだ配送されていません
- 修正は冪等(incremental migration に対応)に設計されています
<safety>XML コメントまたは明示的なsafe修飾子で IL5006 診断を抑制可能- ポインタシグネチャとフィールド型メンバーはバージョン互換性のため特別扱い
- 将来の追加タスク:unsafe コンテキスト診断(CS9360、CS9361等)の修正プロバイダー実装、オーバーライド・インターフェース実装・部分宣言間での caller-unsafe コントラクト同期
#130954 Implement IXCLRDataProcess with existing cDAC contracts
- 作成者: @Copilot
- 作成日時: 2026年07月17日 05:37:26(UTC)
- マージ日時: 2026年07月24日 12:39:58(UTC)
- ラベル: area-Diagnostics-cdac
概要
IXCLRDataProcessインターフェイスをレガシーDAC fallbackからcDAC(Contracts-based Data Access Component)に移行する実装です。既存のcDACコントラクトを活用して、アプリケーションドメイン・モジュール列挙/検索、タスク検索、アドレス分類、GetDataByAddressなどの機能をcDACで提供します。ネイティブHRESULT、列挙動作、チャイルドラッパーの互換性を保持しています。
変更内容
IXCLRDataProcess実装の拡張:
SOSDacImpl.IXCLRDataProcess.csで以下の機能を追加- App-domainおよびmodule列挙・検索(
StartEnumAppDomains,EnumAppDomain,GetAppDomainByUniqueID,StartEnumModules,EnumModule,GetModuleByAddressなど) - タスク検索(
GetTaskByUniqueID) - アドレス分類と
GetDataByAddress GetAddressTypeシグネチャの更新(新しいCLRDataAddressType列挙型を導入)
- App-domainおよびmodule列挙・検索(
cDACコントラクトの拡張:
ExecutionManagerコントラクトに新しいデータディスクリプタを追加- ExecutionManager.mdの更新
ExecutionManagerCore.csで新しいメソッド実装
テスト追加:
IXCLRDataProcessTests.csで225行の新規ユニットテスト、ExecutionManagerTests.csで23行の追加テスト
パフォーマンスへの影響
影響なし
関連Issue
その他
注意点:
- LegacyFallbackHelper.CanFallback()チェックの欠落: 複数の新規実装箇所で
_legacyProcessへのデリゲーション時にCDAC_NO_FALLBACKフラグをチェックしていない点が指摘されています(Copilotレビューで低信頼度コメント) - 後回しの実装:
FollowStub/FollowStub2: 新しいスタブ追跡コントラクトが必要EndEnumMethodDefinitionsByAddress: レガシー保有の列挙ハンドルに依存
- 公開API変更:
IXCLRDataProcess.GetAddressTypeのシグネチャ変更(uint*からCLRDataAddressType*)は公開APIの承認ワークフローが必要な可能性があります
#130834 JIT: handle adjacent no-GC regions (#115719)
- 作成者: @AndyAyersMS
- 作成日時: 2026年07月16日 02:08:30(UTC)
- マージ日時: 2026年07月24日 21:39:14(UTC)
- ラベル: area-CodeGen-coreclr Priority:1
概要
JIT コンパイラの GC 情報エンコーディングを更新し、隣接する no-GC リージョンが存在する場合でも、各 IGF_NOGCINTERRUPT(非割り込み可能)リージョンの最初の命令が一貫してインタラプティブル(割り込み可能)として扱われるようにしました。これにより、ランタイム/デバッガーが使用するインタラプティブル範囲の報告精度が向上します。
変更内容
- src/coreclr/jit/emit.cpp:
InterruptibleRangeReporterを調整し、非プロローグリージョンの場合はigOffs + firstInstrSizeを考慮して、インタラプティブル範囲を出力するかどうかを判定するようにしました。igOffs == m_uninterruptibleEndの場合でもインタラプティブル「ギャップ」を出力し、隣接する no-GC リージョンを分割します。 - src/coreclr/jit/emit.h:
InterruptibleRangeReporterクラスのメンバー変数またはメソッドシグネチャを更新
パフォーマンスへの影響
影響なし。本変更は GC 情報メタデータの精度向上であり、実行時パフォーマンスには直接的な影響がありません。
関連Issue
その他
なし
#130525 Fix EventSource WriteEvent varargs overloads dropped from EventPipe
- 作成者: @steveisok
- 作成日時: 2026年07月10日 19:36:05(UTC)
- マージ日時: 2026年07月24日 15:27:10(UTC)
- ラベル: area-Tracing-coreclr
概要
EventSourceの可変長引数(varargs)WriteEventオーバーロードがEventPipeで不正にフィルタリングされていた問題を修正しました。キーワード0(すべてマッチ)で有効化されたプロバイダーにおいて、varargs経由のイベントが誤ってドロップされていた根本原因は、EventProviderImpl.IsEnabledがキーワードマスク0を「すべてのキーワードにマッチ」として扱わなかったためです。修正によりETW/EventPipeの型付きイベント経路と同じフィルタリングロジックが適用されるようになりました。
変更内容
- EventProvider.cs:
EventProviderImpl.IsEnabled(byte level, long keywords)のキーワードマッチングロジックを修正。_anyKeywordMask == 0の場合は「すべてのキーワードにマッチ」として扱うように変更。またEventSource.WriteEventVarargsからの呼び出し時に、ETW/EventPipeの有効性チェックを適切に実施するよう調整。 - EventSource.cs: varargs経路のゲーティングロジックを
WriteEventVarargsメソッドに統合し、型付きイベント経路と同じパターンに統一。 - writeeventvarargs.cs/csproj: キーワード
0で有効化されたプロバイダーにおいて、型付きイベントとvarargs形式の両方が正しくEventPipeトレースに記録されることを検証するリグレッションテストを追加。
パフォーマンスへの影響
影響なし
関連Issue
その他
- 修正により、
EventProvider内の不要なIsEnabled(byte level, long keywords)ヘルパーメソッドが削除されました。 - テストケースは、キーワード
0での有効化、マッチするキーワードでの有効化、キーワード指定ありとなしの混在シナリオをカバーしています。
#130493 JIT: Optimize always suspending helpers
- 作成者: @jakobbotsch
- 作成日時: 2026年07月10日 15:01:27(UTC)
- マージ日時: 2026年07月24日 15:49:18(UTC)
- ラベル: area-CodeGen-coreclr
概要
非同期ヘルパーメソッドの中で常にサスペンドするものについて、JITの最適化を行います。これらのメソッドに対して「継続を返したか?」のnullチェックを生成せず、無条件にサスペンションパスへ分岐することで、不要なコード生成を削減します。
変更内容
- AsyncHelpers.cs / AsyncHelpers.CoreCLR.cs:
AwaitAwaiter、UnsafeAwaitAwaiter、Suspend*、TransparentSuspend*ヘルパーに[Intrinsic]属性を追加し、JITが確実に認識できるようにしました(ライブラリ層・ランタイム層の両方) - namedintrinsiclist.h: 常にサスペンドするヘルパー向けの新しい
NamedIntrinsicIDを追加 - importercalls.cpp: 新しいヘルパー固有の
NamedIntrinsicを認識し、impSetupAsyncCallにNamedIntrinsicパラメータを追加してAsyncCallInfo.AlwaysSuspendsフラグを設定 - gentree.h:
AsyncCallInfo構造体にAlwaysSuspendsビットフィールドを追加(JIT内部実装) - compiler.h:
impSetupAsyncCallシグネチャを更新して呼び出し先のNamedIntrinsicを受け取るように変更 - async.cpp:
AlwaysSuspendsフラグが設定されている場合、nullチェックをスキップし、制御フロー(CFG)を直接サスペンションパスへ変更
パフォーマンスへの影響
常にサスペンドするヘルパー呼び出し時に生成されるnullチェック関連のコードが削減され、コードサイズの縮小とサスペンド前の分岐命令削減により、わずかなパフォーマンス向上が期待されます。メモリ消費量やGC負荷への直接的な影響はありません。
関連Issue
その他
本変更はJIT内部の非同期変換ロジックの最適化であり、公開APIへの影響はありません。[Intrinsic]属性の追加は内部実装の詳細であり、互換性への影響もありません。
#130119 Fix config binder source generator emitting invalid tuple instantiation code
- 作成者: @Copilot
- 作成日時: 2026年07月02日 10:50:58(UTC)
- マージ日時: 2026年07月24日 13:40:31(UTC)
- ラベル: area-Extensions-Configuration source-generator
概要
Configuration Binder ソースジェネレータが、バインド不可能なプロパティ(内部・プライベート・ゲッターのみの collection、[ConfigurationKeyName] 無視など)を通じてのみ到達可能な型に対して不要な BindCore ヘルパーを生成していた問題を修正します。コンストラクタパラメータに対応するプロパティの場合は、プロパティがバインド不可能でも型登録をスキップしません。
変更内容
gen/Specs/BindingHelperInfo.cs—TryRegisterTransitiveTypesForMethodGenメソッドで、バインド不可能なプロパティ(!ShouldBindTo)かつコンストラクタパラメータと対応していない場合のみ、推移的な型登録をスキップする条件を追加record型の読み取り専用 collection パラメータ(IReadOnlyList<T>,IReadOnlyCollection<T>,IReadOnlySet<T>,IEnumerable<T>)は{ get; init; }プロパティとして露出されるため、コンストラクタパラメータ対応のプロパティは必ず登録する必要がある
tests/SourceGenerationTests/GeneratorTests.cs— 回帰テストを追加ReadOnlyCollectionConstructorParameterIsBindable—IReadOnlyListなど読み取り専用 collection パラメータが正しくバインド可能であることを検証ComplexReadOnlyListConstructorParameterIsBindable— 複雑な要素型を含む同様のシナリオListOfTupleWithComplexElementInInternalPropertyTest— Issue #111517 の再現テスト
パフォーマンスへの影響
ポジティブ — 不要な BindCore ヘルパーが生成されなくなり、生成コードサイズが削減。Trim/AOT への影響も中立から正とのこと。
関連Issue
その他
バインド動作に変更なし。実際にバインドされるメンバーセットは変わらず、呼び出されないヘルパーのみが削除される(ランタイムリフレクションバインダーの動作に近づく)。増分生成パイプラインは決定性を保持。
#130118 Configuration Binder SG: ignore unresolvable metadata types to prevent ambiguous/missing-type emissions
- 作成者: @Copilot
- 作成日時: 2026年07月02日 10:50:49(UTC)
- マージ日時: 2026年07月24日 17:22:57(UTC)
- ラベル: area-Extensions-Configuration source-generator
概要
Configuration Binder ソースジェネレータが、推移的依存関係から解決不可能なメタデータ型を参照するメンバーを処理する際に生成する非コンパイル可能なコードの問題を修正します。エラーシンボル(型の欠落・曖昧性)を含むメンバーをスキップし、スキップされたメンバーに対してSYSLIB1101警告を発行することで、リフレクション実装との差分を可視化します。
変更内容
ConfigurationBindingGenerator.Parser.cs:
IsUnsupportedTypeメソッドを拡張し、新規ContainsErrorTypeヘルパーで再帰的に型チェーン(配列要素、ジェネリック型引数)内のRosynエラーシンボルを検出- エラー型を含むメンバー(未解決参照型、
Nullable<T>の値型、Wrapper<Missing>のようなジェネリック内ネスト型など)をスキップ - メタデータ解決不可によるスキップ時に
SYSLIB1101警告を発行
テスト基盤:
- テストドライバに
MetadataReferenceを受け入れるサポートを追加(GeneratorTests.Helpers.cs、ConfigBindingGenTestDriver.cs) IgnorePropertiesWithUnresolvableMetadataTypesテストを追加:推移的依存関係を欠落させてエラーシンボルを生成し、無効メンバーがスキップされ有効メンバーがバインド、SYSLIB1101警告が発行されることを検証
- テストドライバに
パフォーマンスへの影響
影響なし
関連Issue
その他
- 互換性: 非推奨化なし、破壊的変更なし。メンバースキップの警告化により、ユーザーは失敗したバインディングを認識し、欠落参照を追加可能
- テスト改善: 従来のディスクI/O(Windowsでのファイルロック、一時ディレクトリリーク)を排除し、インメモリ
MetadataReferenceベースのテスト手法に移行 - 内部実装: ジェネレータのメタデータ解析ロジックの改善。公開APIに変更なし
#130088 Fix Linux crash loading recursive Nullable static-abstract value types
- 作成者: @Copilot
- 作成日時: 2026年07月01日 16:10:08(UTC)
- マージ日時: 2026年07月24日 03:18:54(UTC)
- ラベル: area-VM-coreclr
概要
Linux CoreCLR環境で、静的抽象インターフェースメンバーを使用した再帰的に制約されたvalue typeのNullable<T>をロードする際のクラッシュを修正しました。System V struct分類時に、一時的に未解決のネストされたvalue type フィールドメタデータを保守的にフォールバックさせることで、アサーション失敗を防いでいます。
修正例:
public readonly record struct UserId(EntityIdValue<UserId> Value) : IEntityId<UserId>;
class MyNullableUser
{
public UserId? UserId { get; set; }
}
変更内容
- src/coreclr/vm/methodtable.cpp: System V struct分類時に、value typeフィールドの型ハンドルが一時的に未解決の場合、近似(正規化)形式のMethodTable*を事前解決することでnull TypeHandleを回避。フィールドサイズ計算と固定バッファ検出の両方で対応(+44/-16)
- src/tests/Loader/classloader/regressions/GitHub_127696/GitHub_127696.cs:
Nullable<T>と再帰的に制約されたreadonly record structおよび静的抽象インターフェースメンバーを含むローダー回帰テストを追加(+81) - src/tests/Loader/classloader/regressions/LoaderClassloaderRegressions.csproj: 回帰テストプロジェクトファイルを追加(+5)
パフォーマンスへの影響
影響なし
関連Issue
その他
- 変更はランタイムVM内部実装(MethodTableの分類ロジック)であり、公開APIへの影響なし
- Copilotレビューで、コメント「GetApproxFieldTypeHandleThrowing is always succeeds」の表現がコード実装と矛盾する可能性が指摘されている(型ロード失敗やOOMで例外をスロー可能)
- 回帰テストは
Regression_o_2に追加されると記載されているが、実際にはLoaderClassloaderRegressions.csprojに統合されている
#129307 Add sshd and Copilot CLI to Android Dev Container
概要
Android開発コンテナ設定を更新し、標準開発コンテナと同じ開発便宜機能(sshdとcopilot-cli)を追加するもの。PR #124855と同等のAndroid版アップデート。
変更内容
.devcontainer/android/devcontainer.json:sshdとcopilot-cliのdevcontainer機能を追加ghcr.io/devcontainers/features/sshd:1を機能リストに追加ghcr.io/devcontainers/features/copilot-cli:1を機能リストに追加- 既存の
github-cli機能と併せて構成
パフォーマンスへの影響
影響なし(開発環境設定の変更のため)
関連Issue
なし
その他
このPRは開発者体験の向上を目的とした設定変更であり、ランタイムやコンパイラの機能変更ではありません。Android開発環境の構築時にSSHデーモンとCopilot CLIが自動的に含まれるようになります。
#126625 Remove contract system support for RETURN/RETVAL/POSTCONDITION
- 作成者: @jkoritzinsky
- 作成日時: 2026年04月08日 03:57:45(UTC)
- マージ日時: 2026年07月24日 21:31:16(UTC)
- ラベル: area-VM-coreclr
概要
CoreCLR内のコントラクトシステムからPOSTCONDITION/RETURN/RETVALマクロインフラストラクチャを削除します。これらのマクロは複雑なテンプレート機構(PseudoTemplate/Returner等)が必要でしたが、実際のポストコンディションはトートロジーか前提条件の繰り返しであることが多く、価値が限定的でした。CONTRACT/CONTRACT_VOIDブロックをCONTRACTLに変換し、RETURN exprをreturn exprに置き換えています。
変更内容
- contract.h/eecontract.h:
POSTCONDITION/RETURN/RETVALマクロおよび関連テンプレート機構を削除(contract.hで354行削減) - VM/debug/utilcode ファイル群: 約100ファイルで
CONTRACT/CONTRACT_VOIDをCONTRACTLに変換し、RETURN exprをreturn exprに変換 - ポストコンディション保留: 非自明なポストコンディションは
_ASSERTE(...)として対応するreturnの前に保持 - ビルド構成依存アサート削除:
_DEBUG && !DISABLE_CONTRACTSが必要なCheckInvariant、DACCESS_COMPILEでは利用不可なCheckPointer関連のアサートを削除 - 重要な修正:
StorePEAssemblyでの正確性バグを修正(ブレース不足により無条件returnが発生し、アセンブリバインディングキャッシュが破損してテスト失敗) - マージ競合解決:
ceeload.cpp等でHolder::Extract()+SuppressRelease()をLifetimeHolder::Detach()に統一
パフォーマンスへの影響
影響なし。テンプレートメタプログラミング複雑性の削減により、コンパイル時間が短縮される可能性があります。
関連Issue
その他
- 大規模変更(20,000行超)のため自動AIレビューが実行できませんでした
- スタイルクリーンアップ: 不要な
return (expr)括弧、void関数の末尾return;、自明なnullアサート、重複したアサートペアを削除 - 内部実装の変更であり、公開API変更なし
#126367 Convert apphost to C
概要
apphostおよび関連ホストコンポーネントをC++からCに段階的に移行するリファクタリング。apphostとsinglefilehostの共通エントリーポイントapphost.cを導入し、dotnetは別途dotnet.cppに分離。内部実装をC化することで、特にWindows x64でバイナリサイズが大幅に削減されました。これは公開APIの変更ではなく、内部実装の最適化です。
変更内容
エントリーポイント再編成
apphost用Cエントリーポイントapphost.cを追加(スタンドアロンとsinglefilehostで共有)dotnet用エントリーポイントdotnet.cppをsrc/native/corehost/dotnet/に移動corehost.cppの統合エントリーポイントを削除
hostfxrリゾルバーの分離
apphostリゾルバーをC実装apphost_hostfxr_resolver.cに変更singlefilehostは静的リンク対応のためC++リゾルバを維持dotnet用リゾルバを別途dotnet/hostfxr_resolver.cppに配置
ホストミスク(hostmisc)のC API化
utils.c,trace.c,fx_ver.c,fxr_resolver.c,bundle_marker.cなどC実装を新規追加- C++実装は新しいC APIを呼び出すようにリファクタリング
pal.windows.cとpal.unix.cを強化しC互換のPALレイヤーを提供
ビルドシステム更新
- CMakeで新しいC実装をビルド対象に追加
- 各ホストタイプ(standalone/static/dotnet)に対応するリゾルバビルドを分離
パフォーマンスへの影響
バイナリサイズの大幅削減(内部実装最適化による効果):
| プラットフォーム | バイナリ | 削減量 | 削減率 |
|---|---|---|---|
| Windows x64 | apphost.exe | −53,760 B | −43.2% |
| dotnet.exe | −5,120 B | −4.2% | |
| Linux x64 | apphost | −7,072 B | −18.1% |
| dotnet | −1,824 B | −5.5% | |
| macOS arm64 | apphost | −4,944 B | −5.1% |
singlefilehostはサイズ変動最小限(−0.0001%~−0.2%)。C化により余分なC++ランタイムオーバーヘッドが削減されました。
関連Issue
なし
その他
- 互換性: 公開APIに変更なし。内部実装のみの再構成です
- レビュー: 複数のレビューサイクル後、Copilotが34ファイル全件レビュー。1件の低信頼度コメント(
bundle_marker.cの型ポンティング警告)が存在しますが、マージ時点で対応不明 - プラットフォーム対応: Windows PALはC++ラッパー(
pal.windows.c_impl.cpp)で実装され、UnixはCで直接実装(pal.unix.c)
#123234 Fix FTP/SSL data stream closure causing protocol violation in .NET 10
- 作成者: @Copilot
- 作成日時: 2026年01月15日 23:33:17(UTC)
- マージ日時: 2026年07月24日 08:01:46(UTC)
- ラベル: area-System.Net
概要
.NET 10で導入された回帰により、FTPSデータストリームのSslStreamがクローズされずプロトコル違反が発生していた問題を修正しました。PR #106451でリファクタリングされたFtpDataStreamが、SSL/非SSL両対応となった際に、CloseExメソッドでSslStreamのクローズ処理を落としていたのが原因です。修正により、SslStreamの適切なTLSシャットダウンと、その後のNetworkStreamのタイムアウト付きクローズを実現しました。
// FtpControlStream: SslStream生成時にleaveInnerStreamOpen=true
SslStream sslStream = new SslStream(_dataStream, true,
ServicePointManager.ServerCertificateValidationCallback);
// FtpDataStream.CloseEx: SSL/非SSLで異なるストリームの場合
if (_stream != _originalStream)
{
if ((closeState & CloseExState.Abort) == 0)
_stream.Close(); // グレースフルなSSLシャットダウン
else
_stream.Dispose(); // 中止時はスキップ
}
// NetworkStreamは常にタイムアウト付きでクローズ
変更内容
FtpControlStream.cs: データストリームのSslStream生成時のleaveInnerStreamOpenパラメータをfalseからtrueに変更。これによりSslStreamが自動的に内側のNetworkStreamをクローズするのを防ぎ、明示的な制御が可能になります。FtpDataStream.cs:CloseExメソッドを修正し、_streamと_originalStreamが異なる場合(SSL時)、_stream(SslStream)を先にクローズ/破棄してからオリジナルストリームをタイムアウト付きでクローズ。通常クローズと中止時で処理を分離。System.Net.Requests.Enterprise.Tests: FTPS対応の新規テストプロジェクトを追加。SSL/非SSL両シナリオのFTPアップロード/ダウンロード、およびストリーム破棄動作を検証。- CI パイプライン:
enterprise/linux.ymlにSystem.Net.Requestsを追加し、エンタープライズテストを自動実行。
パフォーマンスへの影響
影響なし
関連Issue
その他
本修正は.NET 10への回帰対応であり、PR #106451の不完全な実装が原因です。FtpWebRequestは新規開発では非推奨ですが、レガシーアプリケーション対応として修正されました。