Pull Request on 2026年09月24日

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

注意点

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


目次

  1. #134588 Allow variable page sizes in codesign output in Microsoft.NET.HostModel.Tests
  2. #134568 ParameterInfo identity across hot reload
  3. #134566 Add method-list MIBC writer to dotnet-pgo
  4. #134554 Use streaming serialization for JSONL entries
  5. #134553 Forward custom modifiers in TypeDelegator
  6. #134547 [release/8.0-staging] Disable mobile tests while preserving builds
  7. #134541 Match old layouts and feature selection for named mutexes for cross-TFM compatibility
  8. #134535 X25519: Handle zero peer keys on downlevel Windows platforms
  9. #134522 Preserve scalar negation types when folding FMA operands
  10. #134511 JIT: Do not reuse local addresses across suspension points in async methods
  11. #134506 Honor stack_limit in NativeAOT PromoteCarefully
  12. #134498 [browser] Add withDownloadResourceProgress to DotnetHostBuilder
  13. #134460 Fix TypeLoadException in .NET 11 Preview 7 with DotNext threading
  14. #134447 Provide System.Security.Cryptography.Cose package readme
  15. #134414 Make Basic auth credential-refresh test orchestration deterministic
  16. #134394 [main] Source code updates from dotnet/dotnet
  17. #134386 JIT: don't speculate ordering-side-effect upper bounds in FoldNeverNegativeRangeTest
  18. #134375 JIT: handle relational operators in range overflow analysis
  19. #134173 Fix bugs in preinitialization
  20. #134111 Fix concurrent Unix named mutex creation
  21. #134075 JIT: Use integral ranges to narrow comparisons with memory operands
  22. #134057 [NativeAOT] Fast interface dispatch helper for riscv64
  23. #134042 Support asynchronous runtime test entry points
  24. #133892 JIT: handle local field stores in object stack allocation
  25. #133867 JIT: reject variable-count XOR rotation recognition
  26. #133826 Fix Enum.Equals folding for nullable boxed arguments
  27. #133776 JIT: Preserve SIMD operand evaluation and ordering
  28. #133642 JIT: Preserve exception order in loop hoisting
  29. #133600 JIT: keep the null check when a method table load folds to a constant
  30. #132534 Use explicit secret arguments in IL stubs
  31. #132260 [LoongArch64] Fix some new failures in Release libs.tests after PR#128604.

#134588 Allow variable page sizes in codesign output in Microsoft.NET.HostModel.Tests

  • 作成者: @akoeplinger
  • 作成日時: 2026年09月24日 13:15:21(UTC)
  • マージ日時: 2026年09月24日 16:47:11(UTC)
  • ラベル: area-Host

概要

macOS 26.7 arm64環境でcodesignが16 KiBのページサイズを報告する場合に対応するため、コード署名出力パーサーを改善しました。従来は4 KiBのページサイズのみを受け入れていましたが、変数的なページサイズを許容するように変更されています。ページサイズ値はCodesignOutputInfoに保持されず、その後の比較処理でも使用されないため、パーサーは当該フィールドの存在確認のみを行うようにリファクタされました。

変更内容

  • CodesignOutputInfo.cs: Page size=フィールドの解析ロジックを緩和し、4096と16384の両方のページサイズに対応
  • MachObjectTests.cs: 4 KiBと16 KiBのコード署名ページサイズを両方カバーするテストケースを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この変更はテスト専用であり、公開APIや本体ランタイムには影響しません
  • macOS 15ビルドエージェントで生成された4 KiB署名を持つバイナリをHelixマシン(macOS 26.4.1以降)で検証する際の互換性問題を解決しています
  • 全host testアセンブリがパスすることを確認済み

#134568 ParameterInfo identity across hot reload

概要

Hot Reload中のParameterInfo同一性を確保するため、RuntimeParameterInfoにEqualsおよびGetHashCodeのオーバーライドを実装しています。リフレクションキャッシュ無効化後も、同じパラメータインスタンスが正しく比較・ハッシュキーとして機能することを保証するものです。

変更内容

  • src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs: EqualsおよびGetHashCodeメソッドのオーバーライドを追加(8行)
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/Reflection/ReflectionCacheTests.cs: リフレクションキャッシュ無効化後のParameterInfo同一性と辞書キー動作の検証テストを追加(36行)

パフォーマンスへの影響

影響なし

関連Issue

#134568

その他

  • 内部実装変更: CoreCLRランタイム内部のRuntimeParameterInfo型に対する変更で、公開APIへの直接的な破壊的変更はありません
  • レビュー指摘: Copilot Code Reviewから、位置ベースの不等性検証とMono実装の動作検証についてさらに詳細なテストカバレッジが必要との指摘があります

#134566 Add method-list MIBC writer to dotnet-pgo

  • 作成者: @lewing
  • 作成日時: 2026年09月24日 03:08:00(UTC)
  • マージ日時: 2026年09月24日 20:45:03(UTC)
  • ラベル: area-ReadyToRun

概要

dotnet-pgo create-mibc-from-method-list コマンドを追加し、JSONから決定論的なプロファイルルートセットを構成できるようにしました。Ecma規格に基づく型システムコンテキストを使用して、アセンブリ修飾型名の解決と妥当性検証を行います。ReadyToRun最適化の調査やMIBC手動作成の手間を削減するための探索的ツールです。

変更内容

  • MethodListMibcWriter.cs (+335行): JSON形式のメソッドリストを解析し、アセンブリ修飾型名で宣言型・パラメータ・ジェネリック引数を解決して、MIBCルートを発行する中核ロジック。無効なJSON、未解決メソッド、ジェネリック引数の制約違反、重複エントリ、オープンジェネリック型を検出して拒否
  • MethodListTypeSystemContext.cs (+108行): 参照アセンブリをロードし型解決に必要な型システムコンテキストを提供
  • CustomAttributeTypeNameParser.cs (パース機能強化): 配列型・ポインタ型・byref型の修飾子処理を改善
  • Program.cs、PgoRootCommand.cs: 新コマンドの統合と出力オプション処理
  • MethodListMibcTests.cs (+330行): MIBC往復変換テストと入力順決定性テストを含む包括的な検証
  • README.md: JSON形式とコマンド用法のドキュメント化
  • dotnet-pgo.csproj、Subsets.props: ビルド統合

パフォーマンスへの影響

影響なし。決定論的MIBC生成のため、複数回実行時に同一SHA-256ハッシュ値を確認(圧縮後)。

関連Issue

#132825、#134564、#134030

その他

  • 既知の懸念事項: Copilotレビューで、ジェネリック制約検証の欠落、配列型処理の不完全さが指摘されています。MakeInstantiatedMethodで制約チェック(CheckConstraints())を実施する必要があります
  • 用途例: MemoryExtensions.Contains<int>を特定メソッドとしてルート化し、プロファイルが受け入れられたことを検証済み。ReadyToRun差分調査に有効
  • テスト状況: Debug/Release両ビルドで7テスト合格

#134554 Use streaming serialization for JSONL entries

概要

JSONL(JSON Lines)シリーズ化APIが個別要素をシリアライズする際にストリーミングシリアライゼーションを使用していなかった問題を修正します。本変更により、Utf8JsonWriterを再利用し、バックプレッシャーを適切に処理しながらストリーミングシリアライゼーションを実装します。.NET 11へのバックポートが予定されています。

変更内容

  • JsonTypeInfoOfT.WriteHelpers.cs: ストリーミングシリアライゼーション用のヘルパーメソッドを追加(+51行)。呼び出し元提供のUtf8JsonWriterを再利用し、FlushResultを返すように実装
  • JsonSerializer.Write.Stream.cs: ストリーム用の書き込みロジックを簡略化(-40行)
  • JsonSerializer.Write.Pipe.cs: PipeWriter用の書き込みロジックを簡略化(-14行)
  • JsonTypeInfo.cs: メタデータ定義の軽微な更新
  • AsyncEnumerableTests.cs: ストリーミング、キャンセレーション、ポリモーフィズムをカバーする包括的なテストを追加(+744行)

パフォーマンスへの影響

ストリーミングシリアライゼーションの導入により、メモリ効率が向上します。特に大量のJSONL要素を処理する場合、バッファサイズの管理とバックプレッシャー処理が最適化されるため、メモリ使用量とスループットの改善が期待できます。

関連Issue

#134554

その他

Copilotレビューで3つの懸念事項が指摘されています:

  1. 高優先度: シリアライゼーション専用メタデータがJSONLシリアライゼーションをリグレッションさせる可能性
  2. 高優先度: カスタムPipeWriterがCanGetUnflushedBytesをサポートしていない場合に失敗する可能性
  3. 中優先度: ネストされた非同期列挙子が早期完了時にリークする可能性

これらの問題が解決される必要があります。


#134553 Forward custom modifiers in TypeDelegator

概要

TypeDelegatorがカスタム修飾子(custom modifiers)を転送していない問題を修正します。GetRequiredCustomModifiersとGetOptionalCustomModifiersメソッドをオーバーライドして、ラップされた型の修飾子情報を正しく転送するようにしました。これにより、volatileなどの型修飾子がデリゲータを通じて失われることがなくなります。

変更内容

  • TypeDelegator.cs: GetRequiredCustomModifiersとGetOptionalCustomModifiersをオーバーライドし、ラップされた型に対してこれらのメソッドを転送(3行追加)
  • System.Runtime.cs: 参照アセンブリに対応するエントリを追加(2行追加)
  • TypeDelegatorTests.cs: 新しいテストTypeDelegatorTests.CustomModifiersを追加。volatile intフィールドの修飾型に対するデリゲータが[IsVolatile]を返すこと、およびサブクラスの固定修飾子が転送されることを確認(32行追加)

パフォーマンスへの影響

影響なし

関連Issue

#134552

その他

  • 本変更はRuntimeTypeには影響しません(RuntimeTypeはこれらのメソッドをオーバーライドしていないため、[]を返し続けます)
  • テストはCoreCLR(Checked/Debug)、Mono(Debug)、NativeAOT(Checked)、browser-wasm(V8)で検証済み
  • 参照アセンブリへのオーバーライド追加は互換性に関するルールで認可されています

#134547 [release/8.0-staging] Disable mobile tests while preserving builds

概要

.NET 8のモバイルサポート終了に伴い、Android、iOS/tvOS(MonoおよびNativeAOT)、MacCatalystジョブのHelixテスト投稿を無効化するCI設定変更です。ビルドステップは保持され、製品コードへの変更はありません。

変更内容

  • eng/pipelines/runtime.yml: モバイルOS(Android、iOS/tvOS、MacCatalyst)のHelixテスト投稿を除外(+4/-23行)
  • モバイルプラットフォーム向けのビルドは継続するが、Helixテスト実行は無効化
  • 共有ランナーおよび他のパイプラインは変更なし

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • CI設定変更のみで、製品コード変更なし
  • .NET 8ではモバイルサポートが廃止されているため、テスト実行の無効化は既知の方針に基づくもの
  • PR生成:GitHub Copilot(自動生成)

#134541 Match old layouts and feature selection for named mutexes for cross-TFM compatibility

概要

異なるTFM(Target Framework Moniker)間での名前付きミューテックスの互換性を確保するため、共有メモリレイアウトとバックエンド選択を修正します。スレッドIDを64ビットに拡張し、Linux ARM/ARM64でのファイルロックベースのミューテックス使用、および従来のPALフォーマットとのレイアウト整合性確保が主な変更です。

変更内容

  • pal_crossprocessmutex.h/c: スレッドID型をuint64に変更し、Linux ARM/ARM64でのファイルロックミューテックス実装対応
  • pal_crossprocessmutex_unsupported.c: スレッドID型の同期
  • NamedMutex.Unix.cs: 管理側ミューテックスレイアウトの更新、従来のPAL形式との互換性確保ロジック追加
  • Interop.LowLevelCrossProcessMutex.cs: ネイティブ相互運用署名の調整

パフォーマンスへの影響

影響なし

関連Issue

#134491

その他

Copilotレビューで以下の指摘あり:

  • レガシーミューテックスレイアウトとARM環境でのファイルロック選択についての回帰テストカバレッジ追加が推奨される
  • ARM ロックファイル移行時に互換性のないミューテックスレイアウトを拒否する処理の確認が必要

本変更は破壊的変更ではなく、既存バージョンとの下位互換性を維持するための修正です。


#134535 X25519: Handle zero peer keys on downlevel Windows platforms

  • 作成者: @vcsjones
  • 作成日時: 2026年09月23日 18:28:01(UTC)
  • マージ日時: 2026年09月24日 18:01:38(UTC)
  • ラベル: area-System.Security

概要

X25519 Diffie-Hellman鍵合意において、ゼロ値のピア公開鍵に対する処理をダウンレベルWindowsプラットフォームで改善しました。ゼロ公開鍵はゼロの共有シークレットを生成するため暗号学的に無効です。Windows側で鍵インポート時の検証を有効化せず、代わりに導出時に例外をスローすることで、他プラットフォームとの一貫性を保証しています。

変更内容

  • X25519DiffieHellmanImplementation.Windows.cs: ゼロ鍵または約分されてゼロになった公開鍵の検出ロジックを追加。鍵合意導出時にゼロ鍵の使用を拒否し、例外をスロー。
  • X25519DiffieHellmanCng.Windows.cs: NCryptベースの実装でもゼロ鍵チェックを追加。
  • X25519DiffieHellmanBaseTests.cs: ゼロ鍵を含むテストケースを追加し、カバレッジを向上。各オーバーロードでゼロ鍵の検証を実施。

パフォーマンスへの影響

影響なし(セキュリティチェックのみで、パフォーマンス上の変化はなし)

関連Issue

#134528

その他

  • 内部実装の変更(暗号化ライブラリの内部)
  • セキュリティ修正:無効な鍵からの共有シークレット生成を防止
  • HPKE(Hybrid Public Key Encryption)テストによる検出

#134522 Preserve scalar negation types when folding FMA operands

概要

ARM64とxarchでFMA(Fused Multiply-Add)命令へのスカラー負値演算の折り畳み時に、型の不一致による誤った最適化を修正します。ベクトル型の再解釈により、整数負値演算や異なる浮動小数点幅が露出する場合、これらを正しく保持する必要があります。スカラーとFMA要素の型が一致する場合のみ負値の折り畳みを実行するようにします。

変更内容

  • lowerarmarch.cpp: ARM64でのスカラーGT_NEGの型チェックを追加し、FMA要素型と一致する場合のみ負値演算を折り畳み
  • lowerxarch.cpp: x86/x64でも同様の型チェック機構を実装
  • Runtime_134053.cs: 型不一致ケース、同一型ケース、符号付きゼロの制御を含むリグレッションテストを追加

パフォーマンスへの影響

影響なし。本修正は不正な最適化を防ぐもので、正当な同一型のFMA負値折り畳みは変わらずに実行されます。

関連Issue

#134053

その他

  • 整数負値演算は浮動小数点の符号変更ではなく、倍精度の負値も単精度の下位32ビットの符号を変えません
  • ARM64クロスコンパイル検証で、修正により整数negまたは倍精度fnegがfmaddの前に正しく保持されることを確認
  • x64ネイティブ実行ではJitStress=2下で全適用ケースが成功
  • PR説明はGitHub Copilotで生成された旨を明記

#134511 JIT: Do not reuse local addresses across suspension points in async methods

概要

非同期メソッドでローカル変数がサスペンションポイント後に新しいフレームに移動する際、JITが古いローカルアドレスを誤って再利用する問題を修正します。値ナンバリング(VN)に「フレームバージョン」引数を導入し、各GT_LCL_ADDRに一意な識別子を付与。同時にVNF_ByrefExposedLocalLoadを追加してフレームバージョンを無視した番号付けを行い、リグレッション回避を実現しています。

変更内容

  • valuenum.cpp: フレーム対応のアドレス番号付けとローカル負荷処理を実装。VNF_PtrToLocにフレームバージョン引数を追加
  • valuenumfuncs.h: VNF_ByrefExposedLocalLoadを新規定義し、VNF_PtrToLocの関数定義を更新
  • compiler.h: 新しいヘルパー関数を宣言
  • 133588.cs/csproj: 非同期メソッドにおけるローカルアドレス再利用のリグレッション再現テストを追加

パフォーマンスへの影響

影響なし(機能性修正であり、最適化パスの改善ではなく、不正な最適化の排除)

関連Issue

#133588

その他

Copilot reviewより「フレームバージョン保持時の間接ローカルアドレス負荷折り畳み」および「VN-アドレス伝播の非同期フレームバージョン保持」に関する高度な推奨事項が指摘されています。これはJITコンパイラの内部実装(値ナンバリングエンジン)の修正であり、公開APIへの影響はありません。


#134506 Honor stack_limit in NativeAOT PromoteCarefully

概要

NativeAOTがスタック限界(stack_limit)を尊重するよう修正しました。これまでスレッドのスタック境界内のすべてのインテリアポインタをスキップしていましたが、QEMUやmuslでスタックサイズが過度に報告される環境下では、ヒープ参照がGCに報告されず、オブジェクト移動時にダングリングポインタが発生していました。CoreCLRと同様に、アドレスがstack_limit以上であることを要求するよう修正します。

変更内容

  • src/coreclr/nativeaot/Runtime/GcEnum.cpp: PromoteCarefully内のスタック境界チェックロジックを修正(+8/-3、計11行)。インテリアポインタがスタック限界内にあるかどうかの検証を強化。

パフォーマンスへの影響

影響なし

関連Issue

#130999

その他

QEMUやmusl環境でのGC動作の正確性向上に関する修正です。CoreCLRの実装に合わせることで、異なるプラットフォーム/ランタイム間の一貫性を改善しています。


#134498 [browser] Add withDownloadResourceProgress to DotnetHostBuilder

概要

WebAssembly版ランタイムのDotnetHostBuilder公開APIにwithDownloadResourceProgressメソッドを追加します。これにより、アプリケーションがリソース読み込み進捗を監視できるようになります。既存の内部メカニズム(withModuleConfig経由)を公開APIとして公式に公開するもので、動作は変わりません。CoreCLRとMono両ローダーに追加されます。

変更内容

  • CoreCLR実装:src/native/libs/Common/JavaScript/loader/host-builder.tsにwithDownloadResourceProgressメソッドを追加
  • CoreCLR型定義:public-api.tsとdotnet.d.tsに型宣言を追加
  • Mono実装:src/mono/browser/runtime/loader/run.tsにwithDownloadResourceProgressメソッドを追加、deep_merge_module経由でルーティング
  • Mono型定義:types/index.tsとdotnet.d.tsに型宣言を追加
  • テストアセット更新:WasmBasicTestAppが内部APIではなく新しい公開メソッドを使用するよう変更

パフォーマンスへの影響

影響なし

関連Issue

#93941

その他

  • コールバックはDotnetModuleConfigに配置されており、LoaderConfigには追加されていません(JSONシリアライズ時に関数が失われるため)
  • Monoはコンフィグをワーカースレッドにシリアライズするため、既存のコールバック実装と同じmono_exitエラーハンドリングを使用
  • 将来の改善案として、CoreCLRがwithResourceLoaderと同様にモジュールレベルのコールバック機構をassets.tsで実装することが提案されていますが、このPRでは見送られています

#134460 Fix TypeLoadException in .NET 11 Preview 7 with DotNext threading

概要

.NET 11 Preview 7でDotNext.Threadingの読み込み時に発生していたTypeLoadExceptionを修正します。抽象的な共変Task → Task<T>オーバーライドの型ロード失敗が原因でした。

ランタイムが合成する返却値削除thunk(return-dropping thunk)が誤ってmdAbstract属性を報告していたため、派生クラスがこれを実装するMethodImplを生成せず、型検証時に失敗していました。修正により、MethodDesc::GetAttrs()がreturn-dropping thunkのmdAbstract属性をマスクするようになります。

変更内容

  • src/coreclr/vm/method.cpp: MethodDesc::GetAttrs()でreturn-dropping thunkのmdAbstractフラグをマスクオフする処理を追加
  • src/coreclr/vm/methodtablebuilder.h: 関連するヘッダー修正
  • src/tests/async/covariant-return/covariant-returns.cs: 抽象共変メソッド/プロパティオーバーライド(get_Task形式)の回帰テストを追加

パフォーマンスへの影響

影響なし

関連Issue

#132971

その他

修正範囲と制限事項:

  • 修正は単一の焦点(MethodDesc::GetAttrs())に限定されているため、VM、JIT、MayHaveNativeCode()/MayHavePrecode()、デフォルトインターフェースメソッド解決との一貫性を保証します
  • Async variantsはリフレクションからフィルタリングされているため、調整された属性はマネージコードから観測不可能です
  • NativeAOT/crossgen2パスは異なるモデル(CompilerTypeSystemContext.Async.cs)を使用するため影響を受けないと考えられます
  • インターフェース/DIM(デフォルトインターフェースメソッド)ケースのカバレッジについては、レビュー時点で検証が不十分のままです
  • linux-x64 Checkedビルドでのテストのみ実施済み

#134447 Provide System.Security.Cryptography.Cose package readme

概要

System.Security.Cryptography.Coseパッケージ用のREADMEファイルを追加し、パッケージにREADMEが含まれるようにプロジェクト設定を更新しました。COSE(CBOR Object Signing and Encryption)実装の利用方法やドキュメントをNuGetパッケージ内で提供できるようになります。

変更内容

  • PACKAGE.md追加: System.Security.Cryptography.Coseパッケージ用のREADMEドキュメント(103行)を新規作成
  • csprojファイル修正: デフォルトパッケージREADME機能を有効化する設定を変更(2行削除)

パフォーマンスへの影響

影響なし

関連Issue

#99358

その他

  • ValidatePackageReadmeExistsバリデーションおよびgit diff --checkに合格済み
  • パッケージメタデータの充実化により、開発者がNuGet.orgからパッケージの詳細情報を確認しやすくなります

#134414 Make Basic auth credential-refresh test orchestration deterministic

  • 作成者: @rzikm
  • 作成日時: 2026年09月22日 12:54:48(UTC)
  • マージ日時: 2026年09月24日 12:45:58(UTC)
  • ラベル: area-System.Net.Http

概要

Basic認証のクレデンシャルリフレッシュテスト RefreshesPreAuthCredentialsOnChange の実装を確定的にする変更です。従来の実装ではサーバー応答を待つ前にクライアントリクエストを観察していたため、クライアント障害がコネクション操作のタイムアウトに隠れる可能性がありました。本変更により、各クライアントリクエストをサーバーの認証ラウンドと同時に観察し、各応答の前にGOAWAYを送信してコネクション再利用を防ぎ、テストの信頼性を向上させます。

変更内容

  • src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.BasicAuth.cs
    • クライアントリクエストとサーバー認証ラウンドの観察を同時化
    • 各応答前にGOAWAYを受信したストリームIDで送信し、コネクション再利用を強制的に防止
    • アクセプトされたコネクションのサーバー所有権を保持してエラー時のクリーンアップを改善
    • レスポンスの確実な破棄とコネクション/ストリーム進捗の診断情報を追加
    • クレデンシャル変更のバリア処理と認証アサーションを維持

パフォーマンスへの影響

なし(テスト専用変更。クレデンシャルキャッシュの実装動作は変更なし)

関連Issue

#133098

その他

  • 本変更はテスト専用であり、プロダクションコードへの影響なし
  • Windows x64での検証で108テスト合格、既知のスキップ4件、失敗0件を確認
  • 一時的なfault injectionによりクライアントプロトコルエラーとサーバーアサーションが正しく検出可能であることを確認
  • GitHub Copilot支援で実装されたPR

#134394 [main] Source code updates from dotnet/dotnet

概要

dotnet/dotnetからのコードフロー更新です。VMRからのソースコード変更と依存関係の更新が含まれています。主にビルドツールチェーン、CodeAnalysis、NuGet、LLVM、WebAssemblyNode Transportなどの複数の依存パッケージが更新されています。

変更内容

  • ビルド構成ファイル: global.json、eng/Version.Details.props/xmlなどのバージョン管理ファイルを更新
  • ビルドスクリプト: eng/common配下のPowerShell/Shellスクリプト(build.ps1、msbuild.ps1、tools.psなど)を修正
  • 互換性ファイル: 複数のライブラリのCompatibilitySuppresionsXmlファイルを更新(Microsoft.Bcl.Cryptography、System.Numerics.Tensors、System.Security.Cryptography.Cose/Pkcsなど)
  • API互換性ベースライン: ApiCompatBaseline.NetCoreAppLatestStable.xmlを更新
  • テストコード: System.Text.Json関連のUnionTests.csにテストケースを追加
  • 依存パッケージ更新:
    • Microsoft.CodeAnalysis系: 5.12.0-1.26463.105 → 5.12.0-1.26471.108
    • Microsoft.DotNet.Arcade.Sdk等の構築ツール: 12.0.0-beta.26463.105 → 12.0.0-beta.26471.108
    • NuGet系: 7.12.0-rc.46405 → 7.12.0-rc.47208
    • System.Text.Json等: 12.0.0-alpha.1.26463.105 → 12.0.0-alpha.1.26471.108
    • LLVM/Monoツールチェーン: 23.1.0-alpha.1.26420.1 → 23.1.0-alpha.1.26457.1
    • WebAssembly Node Transport: 11.0.0-alpha.1.26418.1 → 11.0.0-alpha.1.26459.1

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このはcodeflow PR(VMRからの自動更新)です。複数のリポジトリ(arcade、aspnetcore、cecil、diagnostics、efcore、emsdk、fsharp、msbuild、nuget、roslyn、sdk、vstest、winformsなど)の変更が含まれています。


#134386 JIT: don't speculate ordering-side-effect upper bounds in FoldNeverNegativeRangeTest

  • 作成者: @EgorBo
  • 作成日時: 2026年09月22日 00:30:46(UTC)
  • マージ日時: 2026年09月24日 10:53:19(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT コンパイラの FoldNeverNegativeRangeTest 最適化において、順序付き副作用(ordering side effect)を持つ上限値の投機的な最適化を禁止する修正です。これにより、配列インデックスのような安全性が必要な文脈で、副作用のある式の評価順序が不正に変更されるバグを防ぎます。

変更内容

  • src/coreclr/jit/optimizebools.cpp: FoldNeverNegativeRangeTest 関数内で GTF_ORDER_SIDEEFF フラグをチェックする処理を追加。上限値が順序付き副作用を持つ場合、範囲テストの折り畳み最適化をスキップします。
  • src/tests/JIT/Regression_ro_2/Runtime_134202.cs: 負のインデックスを持つ配列アクセスが関連する回帰テストを新規追加。

パフォーマンスへの影響

影響なし。本修正は一部のケースで最適化を保守的に回避するもので、パフォーマンスの低下ではなく、不正な最適化による実行時エラー(例:不正なメモリアクセス)を防ぐための正確性修正です。

関連Issue

#134202

その他

なし


#134375 JIT: handle relational operators in range overflow analysis

  • 作成者: @Copilot
  • 作成日時: 2026年09月21日 20:45:04(UTC)
  • マージ日時: 2026年09月24日 10:52:22(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT コンパイラの範囲オーバーフロー解析を拡張し、関係演算子(比較演算子)を正しく処理することで、冗長な境界チェックを削除します。GetClosestCosineIndex 関数で2つの冗長な境界チェックが残されていた問題を修正し、比較式の両オペランドに対して再帰的なオーバーフロー検査を行いながら、比較式自体はオーバーフローしないものとして扱うようになります。

変更内容

  • src/coreclr/jit/rangecheck.cpp: 関係演算子(比較演算子)をオーバーフロー解析で認識するよう拡張

パフォーマンスへの影響

改善あり:

  • Linux x64 環境で冗長な境界チェック2つが削除される
  • コードサイズ: 247 → 225 バイト(約 8.9% 削減)
  • 命令数: 77 → 71 命令(6命令削減)

関連Issue

#134368

その他

レビュー指摘: Copilot レビューより、関係演算子の最適化パスに対する焦点を絞った回帰テストの追加が推奨されています(低優先度)。


#134173 Fix bugs in preinitialization

概要

NativeAOT preinitialization機能のバグ修正とテスト拡張です。IL走査/モデリングロジックを改善し、ボックス化された値型、型付きストア、スパンの割り当て、byref含有型などの追加的なILパターンに対応しました。テストケースを大幅に追加し、既存のバグが浮き彫りになった回帰テストをカバーしています。

変更内容

  • TypePreinit.cs:

    • dup命令のクローン処理を追加
    • stobjによる参照含有型へのストアを拒否するロジック改善
    • IsReferenceOrContainsReferences<T>()の処理でbyref含有型を対象に含める
    • スパン値間の割り当て処理をサポート
  • Preinitialization.cs:

    • ボックス化された値型、型付きストア、IsReferenceOrContainsReferences<T>()、重複呼び出し引数、スパン割り当てエイリアシング、RVAスパン恒等性をカバーする複数の新規smoke testを追加(340行追加)

パフォーマンスへの影響

影響なし(バグ修正とテスト追加のため)

関連Issue

#125947、#128973

その他

  • NativeAOT Compiler(ILCompiler)の内部実装の改善であり、公開APIレベルの破壊的変更なし
  • Copilotは完全なレビュー実行に失敗しているため、ボットによる詳細な分析結果は限定的

#134111 Fix concurrent Unix named mutex creation

概要

Linuxの共有コンパイル時に、新規作成されたnamed mutexが初期所有状態にあると、並行処理で間欠的に失敗する問題を修正します。修正内容は、プロセスロック保有中に非ブロッキング初期mutex取得と所有権記録を実行し、その後ロックを解放してからブロッキング待機を行うようにします。

変更内容

  • NamedMutex.Unix.cs: プロセスロック保有期間を拡張し、nonblocking初期mutex取得と所有権記録を保護。ブロッキング待機前にロックを解放する既存動作は保持。
  • MutexTests.cs: 初期所有状態での並行同名コンストラクタをカバーするリグレッションテスト追加(714テスト全て成功)。
  • SharedMemoryManager.Unix.cs: 補助的な変更。

パフォーマンスへの影響

影響なし

関連Issue

#134043

その他

  • 修正前: mutexの発行と所有権記録の間にロックが解放され、別スレッドが所有権を奪取して、後続のReleaseMutexが失敗("Cannot release a lock that is not owned by the current thread"エラー)
  • 修正後: プロセスロックで臨界区間を保護し、競合状態を排除

#134075 JIT: Use integral ranges to narrow comparisons with memory operands

概要

x86/x64 JIT コンパイラの比較操作(comparison)の最適化を改善する変更です。オペランドの整数範囲(IntegralRange)を利用して、メモリオペランドとの比較をより狭いサイズで実行できるようにしながら、型変換や明示的なキャストを避けています。比較サイズ計算ロジック(GetCompareSize())をローリング、コード生成、x86レジスタ割り当て全体で共有し、フラグ再利用チェックに直接比較サイズを渡すようにしました。

変更内容

  • gentree.cpp/h: 比較サイズ計算の共有ロジック(GetCompareSize())を新規実装
  • lowerxarch.cpp: 範囲認識による比較のコンテインメント(containment)ロジックを追加し、符号なし条件ハンドリングを調整
  • codegenxarch.cpp: 共有された比較幅をコード生成とフラグ再利用に適用
  • lower.cpp: 従来の比較狭窄ロジックを削除
  • lsrabuild.cpp: x86レジスタ制約に比較幅を適用
  • codegen.h: フラグ再利用ヘルパー関数のシグネチャを更新

パフォーマンスへの影響

メモリとの比較でより狭いオペランド幅(byte/word)を活用することで、コード生成効率が向上し、メモリオペランド操作の最適化が期待されます。ただし、コード生成結果とコンパイル時間への影響について、具体的なベンチマーク結果は提供されていません。

関連Issue

なし

その他

Copilot Code Reviewから以下の懸念が提起されています:

  • 符号なし条件の書き直しがバックエンド比較ノードでDEBUGアサーション(debug assertion)を発生させる可能性
  • byte/ushort メモリ比較のテストカバレッジが不十分
  • コード生成と実行時への影響についての詳細なテスト結果が未提供

内部実装の変更であり、公開API への破壊的変更はありません。


#134057 [NativeAOT] Fast interface dispatch helper for riscv64

概要

NativeAOT での RISC-V 64 向けインターフェース呼び出しの高速化を実装しています。これまで RISC-V 64 は汎用の遅いパスを使用していましたが、ARM64 と同様に単形セル(monomorphic cell)の インライン チェックとグローバル ディスパッチ キャッシュのプローブを組み合わせた最適化ヘルパーをポートしました。

変更内容

  • src/coreclr/nativeaot/Runtime/riscv64/DispatchResolve.S
    • 単形セルのインライン チェック機能を追加
    • GenericCache<Key, nint> を使用したキャッシュプローブロジック を実装(同じハッシュ、二次プローブ、seqlock バージョンチェック機構を採用)
    • RISC-V ISA の制約に対応した独自実装
      • RVWMO メモリ順序付けに対応(ld の後に fence r,r を挿入)
      • インデックスレジスタの上位ビットでプローブカウントを管理(利用可能な一時レジスタが限定)
      • RhpUniversalTransitionTailCall への手書きテイルコール実装

パフォーマンスへの影響

キャッシュヒット時のインターフェース呼び出し経路の削減により性能改善を期待できます。これまでの遅いパス(RhpUniversalTransition → 管理リゾルバー)がスキップされるようになります。具体的なベンチマーク数値は提供されていません。

関連Issue

#123252

その他

Copilot による指摘として、手書きのアセンブリコードについて RISC-V ハードウェアでの ABI とメモリ順序付け動作の検証が必要とされています。ARM64 実装との互換性を保ちながら、RISC-V ISA の仕様(RVWMO による load-load 順序付けの不保証)に基づいた実装となっています。


#134042 Support asynchronous runtime test entry points

概要

このPRは、CoreCLRの非同期テストインフラを一新し、ランタイムテストのエントリポイントがTask/ValueTaskを非同期で正しく処理できるようにします。従来のブロッキング方式(.Wait()、.Result、.GetAwaiter().GetResult())を廃止し、エンドツーエンドでasync/awaitパターンに統一します。XUnitラッパー生成器とXHarnessランナーを更新して、非同期テストをファーストクラスとして扱い、適切にawaitできるようにしました。

変更内容

  • テストコード(約70ファイル): 非同期テストをブロッキングなしでasync/awaitに変換。[Fact]属性付きの非同期メソッドやTask/ValueTaskを返すテストメソッドに統一
  • XUnitWrapperGenerator (XUnitWrapperGenerator.cs, ITestInfo.cs): 生成されたテストランナーで非同期テストをawaitできるようにロジック追加。IsAsyncプロパティを追加し、戻り値型がawaitableの場合はawaitを発行
  • XHarnessRunnerLibrary (RunnerEntryPoint.cs, GeneratedTestRunner.cs): テストコールバックをTask<TestSummary>に変更し、実行時にawaitするプロセスに改善
  • ビルド設定: WASM特有のruntime-asyncオプトイン設定を削除。Directory.Build.targetsで簡潔な条件分岐に統一
  • ドキュメント (testing.md): 非同期テストの作成方針(ブロッキング回避)を文書化

パフォーマンスへの影響

影響なし。この変更は実行機構の整理であり、テストの実行速度やスループットに直接的な最適化や悪化をもたらしません。

関連Issue

なし

その他

⚠️ レビュアーによる懸念事項: 複数のテスト(synchronization-context.cs、valuetask-source.cs、asyncversion-inline.csなど)で、カスタムSynchronizationContextを設定後に復元していないため、同一プロセス内で連続実行されるテスト間で環境が汚染される可能性があります。特にマージ/スタンドアロンランナーでは複数テストが同一プロセスで実行されるため、try/finallyで元のコンテキストを復元することが推奨されています。

また、回帰テスト(Runtime_126750など)では、スタック状態に依存するテストの場合、非同期呼び出しへの変更がスタックフレームのライフタイムに影響し、テストの検証内容を無効化する可能性に注意が必要です。


#133892 JIT: handle local field stores in object stack allocation

概要

Object Stack Allocation機能においてローカルフィールドストア(GT_STORE_LCL_FLD)の処理時にアンセスタノードの再型付けが行われておらず、CheckedビルドでのJITアサート失敗とReleaseビルドでのMinOptsフェイルオーバーを引き起こしていた問題を修正します。スカラーストアと構造体レイアウトの再型付けを実装し、Nullable構造体のカバレッジを追加します。

変更内容

  • src/coreclr/jit/objectalloc.cpp: スカラーストアと構造体レイアウトの再型付けロジックを実装。GT_STORE_LCL_FLD処理時に祖先ノードを正しく再型付けしてGCストアのルーティング問題を解決。(+73/-60)
  • src/coreclr/jit/objectalloc.h: 再型付けヘルパー関数を宣言。(+2)
  • src/tests/JIT/opt/ObjectStackAllocation/ObjectStackAllocationTests.cs: Nullable構造体に関するリグレッションテストケースを追加。(+21)

パフォーマンスへの影響

影響なし。本修正はJIT最適化の正確性を向上させるものであり、パフォーマンス数値への直接的な影響は報告されていません。

関連Issue

#133786

その他

本変更はJITランタイムのObject Stack Allocation最適化機能に関する内部実装の修正であり、公開APIへの影響はありません。Nullable構造体を含むローカルフィールドストアシナリオの信頼性向上に寄与します。


#133867 JIT: reject variable-count XOR rotation recognition

  • 作成者: @Copilot
  • 作成日時: 2026年09月14日 13:07:14(UTC)
  • マージ日時: 2026年09月24日 10:51:39(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT コンパイラが変数カウントの XOR パターンを不正に回転操作として認識する誤コンパイルを修正します。シフトカウントがオペランド幅の倍数の場合、両方のシフト結果が x となり、XOR は 0 を返すべきですが、回転は x を返すため、この矛盾を解決します。

// countが0または32のとき0を返す必要があります
static int ShiftXor(int x, int count) =>
    (x << (count & 31)) ^ (x >>> ((32 - count) & 31));

変更内容

  • src/coreclr/jit/morph.cpp: 変数カウント XOR パターンの回転認識を拒否。定数カウント XOR 回転と OR パターンは引き続き認識します。
  • src/tests/JIT/CodeGenBringUpTests/Rotate.cs: 両方向、複数の幅、ゼロ値、幅の倍数、負数、境界値カウント、定数 XOR 回転を含む回帰テストを追加。

パフォーマンスへの影響

影響なし

関連Issue

#133864

その他

本修正は RyuJIT の誤コンパイルバグに対する回帰テストカバレッジを含みます。変数カウント XOR パターンの認識を厳密に制限することで、定数カウントの正当な XOR 回転最適化を保持しながら不正な変換を防止します。


#133826 Fix Enum.Equals folding for nullable boxed arguments

  • 作成者: @Copilot
  • 作成日時: 2026年09月13日 16:24:58(UTC)
  • マージ日時: 2026年09月24日 10:50:48(UTC)
  • ラベル: area-CodeGen-coreclr

概要

nullable列挙型がボックス化される際にnullが返される場合、Enum.Equalsの最適化(folding)が不正に参照解除を行いException投げるバグを修正。JITコンパイラが引数の非null性を確認してからペイロード比較を行うよう修正し、null-receiver例外の動作は保持します。

変更内容

  • src/coreclr/jit/gentree.cpp: Enum.Equalsのfolding処理にガード条件を追加。引数が確実に非nullであることが知られている場合のみペイロード比較を実行し、それ以外の場合は呼び出しを保持。
  • src/tests/JIT/Intrinsics/EnumIntrinsics.cs: nullable-boxing回帰テスト追加(null、等値、不等値のケース)。

パフォーマンスへの影響

影響なし。本修正は不正な最適化による例外発生を防ぐもので、正当な最適化機会は引き続き活用されます。

関連Issue

#133817

その他

修正対象はJITの内部実装(最適化パス)であり、公開APIの変更はなし。破壊的変更なし。


#133776 JIT: Preserve SIMD operand evaluation and ordering

概要

JITコンパイラにおけるSIMD操作の折畳み最適化時に、オペランドの評価順序と可観測効果(observable effects)を保持するようにします。特にMin/Max操作での定数NaN処理、シフト演算のエミュレーション、GetElement/WithElement、スカラー乗算、値優先ストア操作などを対象としています。GTF_OBS_EFFECTフラグを導入してオペランドの通常読み取りと区別し、バイナリ評価順序をビルダーに保持させることで、インポーター spill に依存しない設計に改善しています。

変更内容

  • gentree.cpp/gentree.h: 可観測効果追跡フラグ(GTF_OBS_EFFECT)の定義と、評価順序を考慮したSIMD折畳みビルダーの実装(142行追加)
  • hwintrinsic.cpp: SIMD シーケンス、除算、ストア操作のインポーティングを調整(ストア操作14行変更)
  • hwintrinsicxarch.cpp: xarch固有の組み込み関数効果処理の更新
  • importercalls.cpp: RISC-V Min/Max オペランド順序の保持と、イインライン引数効果追跡の更新
  • morph.cpp/optimizer.cpp/optimizebools.cpp/ifconversion.cpp/importer.cpp: 可観測効果を考慮した最適化パスの更新
  • lclmorph.cpp: ローカルストア形態化における反転評価順序の処理(提供情報に記載)
  • compiler.h: SIMD ストア-ビルダー宣言の拡張(9行変更)
  • Runtime_133718.cs: 評価順序に関する23個の焦点的な回帰テストケースを追加(345行)

パフォーマンスへの影響

コード生成サイズの微細な改善が確認されています:

  • Vector128<int>.CreateSequenceのデフォルト配列ロードプローブ:63バイト→57バイト、16命令→14命令に削減
  • 直接整数除算と通常ストア操作:サイズ/命令数の増加なし
  • 7個のMin/Max/Number/finite操作:機械語は変更なし

検証結果: Windows x64/ARM64チェック済みJITビルドで23個の回帰テストが通過、2,551個の最適化汎用組み込み関数テストがデフォルトISAおよびAVX-512無効時に通過。ARM64はコンパイルのみ、WASM/RISC-Vは未構築/未実行。

関連Issue

その他

  • 公開API変更なし(内部JIT実装のみ)
  • NaN ペイロード選択ポリシーは変更されず、XCHG/ローカル値干渉問題は対象外
  • 複数回のCopilot レビューで指摘されていた店舗順序の問題は最終版で解決済み
  • ARM64/WASM/RISC-V プラットフォームの完全検証が残されている

#133642 JIT: Preserve exception order in loop hoisting

概要

JITコンパイラのループホイスティング最適化で例外順序が保持されない問題を修正します。非ホイスト可能な例外スロー式が存在する場合、例外順序バリアを閉じることで、後続のスロー式が不正にホイストされるのを防ぎます。

変更内容

  • src/coreclr/jit/optimizer.cpp: ループホイスティング時の例外順序バリアの処理を修正。非ホイスト可能なスロー式に対してバリアを確実に閉じるロジックを追加(+4/-10行)
  • src/tests/JIT/Regression_ro_2/Runtime_133585.cs: 例外順序の回帰テスト新規追加。配列アクセス例外と除算例外の順序を検証するテストケースを実装(+31行)

パフォーマンスへの影響

影響なし。Windows x64 Checked SuperPMI検証で987,559コンパイル、0失敗、4コレクション間で42のコンテキスト差分が発生しましたが、集計PerfScore幾何平均は事実上中立的(-0.0000% ~ +0.0004%)

関連Issue

#133585

その他

  • 変更はJITランタイムの内部実装(最適化パス)に限定される
  • 公開APIへの影響なし、破壊的変更なし
  • 検証: build.cmd clr.jit -c checkedで新規テストケースが修正前JITで失敗、修正後JITで成功を確認
  • レビュー指摘: 回帰テストの登録スイート(Regression_o_1 vs Regression_ro_2)の対応関係に軽微な不一致あり

#133600 JIT: keep the null check when a method table load folds to a constant

  • 作成者: @EgorBo
  • 作成日時: 2026年09月10日 14:46:32(UTC)
  • マージ日時: 2026年09月24日 10:49:24(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT値番号付けにおいて、オブジェクトのメソッドテーブル読み込みが定数に折り畳まれる際に、暗黙的なnullチェック処理が誤って抑制される問題を修正しました。修正により、GetType()ベースの比較でnull入力に対してNullReferenceExceptionが正しくスロウされるようになります。

変更内容

  • src/coreclr/jit/valuenum.cpp: 定数に折り畳まれたメソッドテーブル読み込み(GT_IND)に対して、nullチェック例外セットを明示的に記録し、null参照例外処理を保持するよう修正
  • src/tests/JIT/Regression_ro_2/Runtime_133559.cs: 型比較(==、!=)でnull入力時に例外がスロウされることを検証する回帰テストを追加

パフォーマンスへの影響

影響なし

関連Issue

#133559

その他

この修正はJIT値番号付けの一般的な例外セットモデリングパターンに従う限定的な範囲の修正です。


#132534 Use explicit secret arguments in IL stubs

概要

IL stubにおいて、「秘密」なstub contextを従来のStubHelpers.GetStubContext()メソッド呼び出しではなく、SecretStubArgument required modifierで注釈された明示的なnative intパラメータで表現するように変更します。これにより、VM、JIT、インタプリタ、SuperPMI、ABI仕様全体で秘密stub引数を統一的に識別・バインドする仕組みに刷新されます。

変更内容

  • VM stub生成: SecretStubArgument修飾子付きの明示的パラメータをIL stubに追加し、リンク時にプレースホルダーを実パラメータインデックスに解決(stubgen.h/cpp)
  • JIT/EEインターフェース: 新フラグCORINFO_FLG_HAS_MD_CONTEXT_ARGを追加し、旧フラグCORJIT_FLAG_PUBLISH_SECRET_PARAMを削除(jitinterface.cpp、corjitflags.h)
  • スタブシグネチャ: P/Invoke/COM stub生成時にSecretStubArgumentパラメータをシグネチャに追加(dllimport.cpp)
  • JIT最適化: 秘密パラメータを通常の明示的パラメータとして扱い、従来の特殊な処理ロジック(publish-secret-param用のホーミング/スピル)を削除(lower.cpp、lsrabuild.cpp、codegencommon.cpp)
  • インタプリタ: SecretStubArgument修飾子を検出して処理し、旧intrinsic展開パスを削除(compiler.cpp、intrinsics.cpp)
  • ABI仕様: CLR ABI仕様書を明示的パラメータモデルに更新(clr-abi.md)
  • 内部API削除: StubHelpers.GetStubContext() intrinsic(namedintrinsiclist.h、StubHelpers.cs、corelib.h)
  • マルチアーキテクチャ対応: x86、amd64、arm、arm64、loongarch64、riscv64、wasmのターゲット定義をコメント更新

パフォーマンスへの影響

影響なし。本変更は秘密引数の表現方法を刷新するもので、実行時挙動やパフォーマンス特性に変化を与えません。むしろ汎用パラメータ処理経路の使用により、特殊ケースの処理が減少します。

関連Issue

なし

その他

  • JIT/EEインターフェースGUIDが更新されているため、新旧の互換性がありません
  • 変更は広範な検証を実施済み(CoreCLRビルド、reverse P/Invoke構造体marshalling、COM拡張ポイント、呼び出し規約テスト、JITフォーマット)
  • Copilotレビューで指摘された高重大度の問題(varargシグネチャ不一致)は解決済みです

#132260 [LoongArch64] Fix some new failures in Release libs.tests after PR#128604.

概要

LoongArch64アーキテクチャにおいて、PR#128604適用後に発生した新しいテスト失敗を修正します。浮動小数点数から小さな整数型への非チェック変換時のレジスタ競合問題と、リリースモードでの関数名の逆アセンブリ出力の問題を修正しています。

変更内容

  • codegenloongarch64.cpp: 浮動小数点数から小さな整数型への非チェック変換処理で、宛先レジスタ(dstReg)と一時レジスタ(tempReg)の競合を修正
  • emitloongarch64.cpp: リリースモードでの関数名逆アセンブリ出力の問題を修正(6行追加、2行削除)
  • lsraloongarch64.cpp: レジスタ割り当てロジックの最適化(1行追加)

パフォーマンスへの影響

影響なし

関連Issue

#128604

その他

LoongArch64向けコード生成の回帰修正パッチです。変更範囲は限定的で、既存のテストスイート(libs.tests)の失敗を解決することを目的としています。


目次