Pull Request on 2026年09月19日

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

注意点

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



#134259 Add Composite ML-KEM certificate key accessors

概要

Composite ML-KEM証明書キーアクセサーのスタブを追加します。既存のComposite ML-DSAパターンに倣い、X509Certificate2に対するML-KEM関連のアクセサーメソッドを実装します。PublicKeyの変更は省略されています。

変更内容

  • X509Certificate2.cs: Composite ML-KEM証明書キーアクセサーのスタブメソッドを追加(102行追加)
  • X509CertificateKeyAccessors.cs: Microsoft.Bcl.Cryptography互換性拡張としてComposite ML-KEM関連のアクセサーを追加(148行追加)
  • System.Security.Cryptography.cs: 参照APIを更新し、新しいアクセサーメソッドを公開API仕様に反映(6行追加)

これらは実験的なAPIとして提供されます。

パフォーマンスへの影響

影響なし

関連Issue

#129633

その他

Copilot Code Reviewから、Composite ML-KEM証明書アクセサーのテストを追加することが推奨されています(低優先度)。


#134226 Fix VSD cache publication and resolve stub size

  • 作成者: @Copilot
  • 作成日時: 2026年09月18日 21:34:28(UTC)
  • マージ日時: 2026年09月19日 21:47:31(UTC)
  • ラベル: area-VM-coreclr

概要

Virtual Stub Dispatch (VSD)キャッシュの公開セマンティクスとAMD64リゾルブスタブサイズの正確性を修正するPRです。キャッシュエントリをVolatileStoreで安全に公開し、既存のVolatileLoadリーダーとのメモリオーダリングペアリングを確保します。また、AMD64のResolveStub::size()が誤ってsizeof(LookupStub)を返していた問題を修正し、正しくsizeof(ResolveStub)を返すようにします。

変更内容

  • src/coreclr/vm/virtualcallstub.h: DispatchCacheエントリの公開にVolatileStore(&cache[idx], elem)を使用。既存のVolatileLoadリーダーと対となるメモリオーダリングセマンティクスを実装。
  • src/coreclr/vm/amd64/virtualcallstubcpu.hpp: ResolveStub::size()がAMD64でsizeof(LookupStub)を返していた誤りを修正し、sizeof(ResolveStub)を返すようにした。

パフォーマンスへの影響

  • VolatileStore使用による若干のメモリバリア追加オーバーヘッドが考えられるが、正確性の確保(データレース防止)が優先。
  • スタブサイズ修正により、命令キャッシュフラッシュおよびログ記録が正しいバイトサイズを使用するようになり、メタデータ管理の正確性が向上。

関連Issue

#134226

その他

低レベルVMの並行処理とスタブコード生成に関わる変更のため、メモリオーダリング動作やコード生成の相互作用について最終的なヒューマンレビューが推奨されています。


#134224 Remove open delegate Equals fastpath

概要

オープンデリゲートのEqualsメソッドの高速パス(fastpath)を削除します。仮想メソッドを含む場合に正しく動作していなかったため、この最適化ルートを取り除き、正確な動作を確保します。

変更内容

  • src/coreclr/System.Private.CoreLib/src/System/Delegate.CoreCLR.cs: オープンデリゲートのEquals高速パスを削除(8行削除)
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DelegateTests.cs: 仮想メソッドに関連するテストケースを追加(12行追加)

パフォーマンスへの影響

オープンデリゲートのEquals呼び出しにおいて高速パスが削除されるため、若干のパフォーマンス低下の可能性があります。ただし、正確性を優先した変更のため具体的な数値は提供されていません。

関連Issue

#134218

その他

この変更は内部実装(Delegate.CoreCLR.csの非公開メソッド)に対するものであり、公開APIの互換性には影響しません。仮想メソッドを含むデリゲートの比較結果の正確性が向上します。


#134205 JIT: Validate jump threading phi inputs

概要

JITのジャンプスレッディング最適化において、フロー編集後に不完全なフィノード(phi)を処理する際のバグを修正します。SSA置換ロジックが残されたフィ引数のみをチェックしていたため、すべての先行ブロックを考慮せずにフィを削除して使用を書き直していました。修正前は期待値200を返すべき処理が101を返していました。

変更内容

  • redundantbranchopts.cpp: ブロックと後続ブロック置換パスが期待されるすべての先行ブロックをカバーしているかを検証する条件を追加。検証に失敗した場合は保守的に置換をスキップ。
  • JumpThreadPhi.cs: 修正前に101を返していた回帰テストケース Phi_01 を追加。

パフォーマンスへの影響

Windows x64 Release SuperPMI検証:

  • 失敗: 0件
  • テキスト出力差分: 11件(4つの対象コレクション全体で安定的)
  • コード生成への影響: 約186万コンテキストで+82バイト

関連Issue

#133981

その他

この修正はJITコンパイラの内部実装変更であり、公開APIへの影響はありません。フィノード入力の検証を厳格化することで、ジャンプスレッディング最適化中の誤ったSSA置換を防いでいます。


#134198 JIT: Make LACKS_RETURN callsite-specific

概要

JIT インライナーの LACKS_RETURN 観測を呼び出しサイト固有(callsite-specific)に変更しました。これまではコンテキスト関数のインポート時にリターン式が見つからない場合、その観測をコンパイル対象(callee)に永続的に記録していたため、1回の失敗がコンパイル対象を永遠にインライン不可としていました。この変更により、呼び出しサイトの専門化に依存する失敗が他の呼び出しサイトでのインライン試行を妨げないようになります。

変更内容

  • src/coreclr/jit/inline.def: LACKS_RETURN の分類を CALLEE から CALLSITE に変更し、診断テキストを更新
  • src/coreclr/jit/fginline.cpp: インラインの失敗パスで CALLEE_LACKS_RETURN の代わりに CALLSITE_LACKS_RETURN を報告するよう更新

パフォーマンスへの影響

影響なし。本変更はインライニング判定ロジックの分類の見直しであり、実行時パフォーマンスには直接的な影響を与えません。ただし、より多くの呼び出しサイトでインライニングが試行される可能性があり、コンパイル時間わずかな増加の可能性があります。

関連Issue

なし

その他

  • リターンブロックを持たないコンパイル対象は既に CALLEE_DOES_NOT_RETURN で処理済み
  • 変更は限定的で、全ての CALLEE_LACKS_RETURN の参照が CALLSITE_LACKS_RETURN に一貫性を持って更新されている

#134163 [release/11.0] Add Composite ML-KEM base APIs

概要

.NET 11.0のリリースに向けて、Composite ML-KEM(ハイブリッド後量子暗号)の基礎API、アルゴリズム識別子、鍵のインポート/エクスポート機能を追加しています。これは実験的なAPIであり、メインPR #132440からのバックポートです。スタックレイヤー2/4を構成し、実装レイヤー(#134164、#134165)と組み合わせて機能します。

変更内容

  • CompositeMLKem.cs (+2259行): メインのComposite ML-KEM APIクラス実装
  • CompositeMLKemAlgorithm.cs (+604行): アルゴリズム定義とファクトリメソッド
  • CompositeMLKemImplementation.cs/NotSupported.cs: プラットフォーム別実装スタブ
  • Oids.cs (+13行): Composite ML-KEM関連のOID識別子を追加
  • テストファイル群 (+2701行): コントラクトテスト、ファクトリテスト、モック実装、テストデータ、ヘルパーメソッドを含む包括的なテストスイート
  • プロジェクトファイル: System.Security.Cryptography、Microsoft.Bcl.Cryptography、参照アセンブリを更新

パフォーマンスへの影響

影響なし(新規API追加のため、既存機能への性能的な変更はありません)

関連Issue

#132440(メインPR)、#134162(依存関係)、#134164(実装レイヤー)、#134165(実装レイヤー)

その他

  • 実験的API: [Experimental]属性が適用されています
  • 破壊的変更: なし。新規APIのため既存APIへの互換性への影響はありません
  • テストカバレッジ: 充実しており、契約テスト、ファクトリメソッドテスト、データテストを含みます
  • リスク評価: 低リスク。既存のAPI動作を変更していません

#134162 [release/11.0] Expose Composite ML-DSA CNG identifiers

概要

.NET 11 RC2向けに、Composite ML-DSA(量子耐性デジタル署名アルゴリズム)のCNG識別子を公開APIとして公開します。main PR #132353のバックポート版であり、既存の暗号実装に変更なく、新規実験的APIとしてCngAlgorithm.CompositeMLDsaおよびCngAlgorithmGroup.CompositeMLDsaを指定します。

変更内容

  • CngAlgorithm.cs: CompositeMLDsaプロパティを公開実験的APIとして追加(Experimental("SYSLIB5006")属性付き)
  • CngAlgorithmGroup.cs: CompositeMLDsaプロパティを公開実験的APIとして追加(Experimental("SYSLIB5006")属性付き)
  • System.Security.Cryptography.cs(ref assembly): 新規公開APIメンバーをref契約に追加
  • CompositeMLDsaTestHelpers.Cng.cs: テスト専用の識別子shim(7行)を削除し、製品APIを使用するよう更新

パフォーマンスへの影響

影響なし。新規公開APIの追加のみで暗号実装の変更はなし。

関連Issue

#132353

その他

  • 互換性: 破壊的変更なし。新規実験的API(Experimental属性付き)の追加のみ
  • リスク評価: 低。既存の識別子を新規実験的APIとして公開するのみ
  • テスト結果: Windows Release ビルド成功。全暗号スイート17,454テスト中1失敗(X509キーファイルクリーンアップテスト、原因未特定、再実行時は全6ケース成功)、407スキップ
  • APIの性質: 開発者はCNG識別子をプロバイダー固有の文字列の代わりに、型安全な名前付き識別子として使用可能となります

#133763 Don't use IgnoreRootRevocationUnknown when processing intermediate CA re-key certificates

  • 作成者: @bartonjs
  • 作成日時: 2026年09月11日 23:02:44(UTC)
  • マージ日時: 2026年09月19日 02:46:31(UTC)
  • ラベル: area-System.Security

概要

Unix上の証明書チェーン検証で、自己発行かつ異なるキーで署名された再キー証明書を中間CA として扱い、失効確認時のIgnoreRootRevocationUnknownフラグの適用を制限する変更です。ルートステータスの判定をチェーン内の位置と部分チェーン状態に基づいて行うよう改善されました。

変更内容

  • UnixChainVerifier.cs: ルートのインデックス判定ロジックを変更。部分チェーン検出時にrootIndex = -1を設定し、自己発行の中間CAに対してIgnoreRootRevocationUnknownを適用しないようにしました(内部実装の変更)
  • DynamicRevocationTests.cs: 4証明書チェーン検証に対応したテストインフラを追加。再キー状態を検証する回帰テストケースを追加
  • CertificateAuthority.cs: distinguished-name(DN)オーバーロードを追加し、テストにおける証明書ヘルパーの機能を拡張

パフォーマンスへの影響

影響なし

関連Issue

#133763

その他

以下の課題がレビューで指摘されています:

  • 部分チェーン(rootIndex = -1)のコードパスがテストで十分に検証されていない。既存のAIA部分チェーンテストはRevocationMode.NoCheckのみを使用しているため、新しい部分チェーン分岐への回帰テストが不足している点
  • Androidプラットフォーム用の期待値がテスト対象外([PlatformSpecific(TestPlatforms.Linux)]で除外)のため、Androidでの回帰テストが実行されていない点

目次