Pull Request on 2026年09月23日

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

注意点

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


目次

  1. #134529 Prevent separator buffer overruns in string.Join
  2. #134521 Preserve element types when folding SIMD Dot broadcasts
  3. #134520 Preserve vector results when folding AVX-512 mask complements
  4. #134518 JIT: Include auxiliary types in hardware intrinsic value numbering
  5. #134471 Preserve default Ninja behavior when MSBuild property is unset
  6. #134461 [release/8.0-staging] Make TestKeyRing.CreateECDsa resilient to transient macOS OSStatus -50 failures
  7. #134458 [release/8.0-staging] Fix flaky TestWindowStyle: check only STARTF_USESHOWWINDOW bit, remove ShellExecute cases
  8. #134443 [release/11.0-rc2] Managed HPKE
  9. #134442 [release/11.0] Managed HPKE
  10. #134437 JIT: Fix profiled memcmp specialization for inline candidates
  11. #134422 Remove unused client certificate from TLS host resumption test
  12. #134419 Read GET request bodies in the HTTP/1.1 loopback helper
  13. #134405 [release/8.0-staging] Avoid publishing additional files from IntermediateArtifacts
  14. #134404 [release/9.0-staging] Avoid publishing additional files from IntermediateArtifacts
  15. #134396 [browser] Normalize dequeued jiterpreter method pointers
  16. #134365 [release/11.0] Fix Android NativeAOT template for updated memory safety rules
  17. #134335 [release/9.0-staging] Fix Linux FileSystemWatcher silent stop after unpaired IN_MOVED_FROM
  18. #134329 [release/10.0] Unify native API availability probes
  19. #134328 [release/11.0] Unify native API availability probes
  20. #134326 [release/11.0] [ci-fix] Mark Apple test runner LibraryImports safe (refs #134061)
  21. #134141 Use dnssd for DnsResolver on OSX
  22. #134137 Make sure the interpreter code is published before the native code for a method
  23. #134105 Enable r2r of non-deterministic intrinsics
  24. #134072 [cDAC] Expose interpreter JIT manager code heaps
  25. #134049 Update CI images to Azure Linux 4.0
  26. #134046 [release/8.0] Remove mobile queues from runtime-extra-platforms CI test runs
  27. #133839 [release/8.0-staging] Update dependencies from dotnet/runtime-assets
  28. #131361 [release/10.0][browser][mono] Make sure we treat the 4GB ptrs as unsigned

#134529 Prevent separator buffer overruns in string.Join

概要

String.Join の並行入力変更時のバッファオーバーランを修正します。従来は値のキャパシティのみをチェックしており、値が残りスペースを消費した後のセパレータ書き込みが結果バッファをオーバーランする可能性がありました。値とセパレータの両方の書き込みを割り当てられた文字列の長さで制限されたスパンを使用することで対策し、既存の防御的コピー再試行メカニズムを保持します。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/String.Manipulation.cs:結果バッファへの書き込みを境界付きの宛先スパンで制限。各コピー成功後にスパンを進める。単一文字セパレータの高速パスと既存の防御的コピー再試行を保持。

  • src/libraries/Common/tests/Tests/System/StringTests.cs:並行変更時の回帰テスト追加(セパレータ長 1、2、4000 で入力位置 2 つでの変更をカバー)。

パフォーマンスへの影響

局所的なRelease環境のBenchmarkDotNetでは割り当て数は変化なし。スループット測定はノイズが多く結論不可。パフォーマンス中立性は確立されていません。

関連Issue

#134515

その他

修正前のチェック対象外ランタイムでヒープ整合性アサーションが発動。修正後、6つの並行変更テストケースがすべてパスし、StringTests全体で 2,195 パス。最終的なrange構文編集後、チェック対象のCoreLibリビルドと73個のJoinテストすべてがパス。Copilotによるレビューでは「承認推奨(すべての変更が回帰テストでカバー)」との評価。


#134521 Preserve element types when folding SIMD Dot broadcasts

概要

SIMD Dot ブロードキャスト折り畳み最適化において、ベクトル要素型の互換性を検証していなかったバグを修正しました。従来は Vector.Create(ToScalar(Dot(...))) が要素型チェックを省略していたため、短レーン型の結果を整数ブロードキャストとして再利用する際に、入力値が8の場合に誤って 0x00080008 (524296) を返していました。

修正内容:

  • 折り畳み実行前に、ベクトルサイズに加えて互換性のあるSIMD基本型を検証
  • 符号付き/符号なし同一幅ブロードキャストは互換性を保持し、非互換型はスカラー抽出とブロードキャストを保持

変更内容

  • src/coreclr/jit/morph.cpp: Dot ブロードキャスト折り畳み処理に要素型互換性チェック(正規化も含む)を追加(+4/-2)
  • src/tests/JIT/Regression_ro_2/Runtime_134479.cs: 符号付き/符号なし拡張、切り詰めケースを含むデータ駆動型回帰テストを追加(+46/-0)

パフォーマンスへの影響

影響なし (このPRは不正な最適化を防ぐ修正のため、むしろ誤った動作を排除します)

関連Issue

#134479

その他

  • Windows x64での検証済み:Checked JIT・テストビルド、JIT形式化、8つの回帰テストケースすべてが成功
  • AVX2無効化、ハードウェアイントリンシック無効化、JITストレス2での動作確認済み
  • 修正前のJITでは3ケースが失敗
  • ARM64での検証は環境の都合上未実施
  • JITとアーキテクチャ依存の変更のため、最終的なヒューマンレビュー推奨

#134520 Preserve vector results when folding AVX-512 mask complements

概要

AVX-512マスク補数の畳み込み処理において、ConvertMaskToVectorによるベクトル結果変換を保持するようJITコンパイラを修正しました。比較モード反転および二重NOT処理のパスが、親が期待するベクトル型ではなく内部的なTYP_MASKを返していたため、チェック済みビルドでのアサーション失敗と無効なリリース時コード生成が発生していました。

変更内容

  • src/coreclr/jit/morph.cpp: マスク畳み込み処理で既存のConvertMaskToVectorを再利用し、単純化されたマスク周辺で変換を適用。外側のNOTの結果型が保持されることをアサート。比較述語、マスク要素サイズ、オペランド評価は変更なし。
  • src/tests/JIT/Regression_ro_2/Runtime_134480.cs: 比較反転方向、等号/不等号/NaN入力、128/256/512ビットベクトル、バイト/短整数/整数/長整数要素を持つ二重NOTマスク等を含む、フォーカスしたリグレッションテストを追加。

パフォーマンスへの影響

影響なし

関連Issue

#134480

その他

本修正はAVX-512機能を使用する環境でのJITコンパイラの正確性向上を目的としており、Windows x64での検証済み(チェック済みJITビルド、AVX-512有効/無効時、AVX-512無効時、ハードウェアイントリンシック無効時など7つの焦点ケースで合格)。ただしリリースビルド、他アーキテクチャ、および完全なテストスイートでの検証は実施されていません。


#134518 JIT: Include auxiliary types in hardware intrinsic value numbering

概要

JITのハードウェア組み込み関数の値番号付けが、セマンティクスを変更する補助的な型情報を見落としていた問題を修正しました。例えば、AVX2ギャザー操作でintとlongインデックスを使用する場合、異なるセマンティクスであるにもかかわらず同じ値番号が割り当てられ、JITが異なる結果の比較を誤って最適化していました。補助型をSIMD基本型定数の上位バイトにパックし、値番号のデコードと診断出力を更新することで修正します。

変更内容

  • valuenum.h: SIMD型エンコード定数を導入し、VNForSimdType APIを補助型パラメータを受け取るように拡張
  • valuenum.cpp: 補助型のエンコード/デコード機能を実装、SIMD型ダンプの更新、ハードウェア組み込み関数のVN計算に補助型を統合
  • Runtime_134486.cs: AVX2ギャザーのインデックス幅とArm64飽和加算の符号特性を検証する回帰テストを追加

パフォーマンスへの影響

影響なし。この変更は値番号付けの正確性を向上させるもので、実行時パフォーマンスの低下はありません。むしろ不正な最適化による誤動作を防ぐため、正確な結果を保証します。

関連Issue

#134486

その他

  • SimdTypeは2つのオペランドを保持し、補助型のない組み込み関数は元の型定数を保持するため、追加のVN引数と定数検索が不要
  • コンパイル時アサーションでエンコーディングの境界をチェック
  • ネイティブおよびクロスターゲットのJITビルドで検証済み。368個の回帰テストが合格し、ギャザー再現テストはJitStress2でも機能確認
  • Copilotレビューで、FEATURE_HW_INTRINSICSとFEATURE_SIMD間の条件付きコンパイル定義に関する懸念が指摘されている

#134471 Preserve default Ninja behavior when MSBuild property is unset

  • 作成者: @Copilot
  • 作成日時: 2026年09月22日 22:23:33(UTC)
  • マージ日時: 2026年09月23日 17:53:38(UTC)
  • ラベル: area-Host

概要

Ninja MSBuildプロパティが未設定の場合、ネイティブビルドスクリプトのデフォルトジェネレータ選択を保持するように修正しました。従来は未設定値が明示的に無効化として扱われ、Makefilesにフォールバックしていましたが、これにより前回のビルドでNinja(CLRのデフォルト)を使用した場合にCMakeCacheの不一致でビルドエラーが発生していました。

変更内容

  • src/coreclr/runtime.proj: Ninja=falseの場合のみ-ninja falseを渡すように調整
  • src/native/corehost/corehost.proj: corehost構築時のデフォルトNinja選択を保持
  • src/native/libs/build-native.proj: ネイティブライブラリ構築時のデフォルト動作を保持

修正の要点:

  • Ninjaプロパティ未設定時はCMakeスクリプトのデフォルト(Ninja)に従う
  • 明示的なNinja=trueおよびNinja=falseの動作は変わらない
  • Windows固有のMSBuild選択ロジックは維持

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

trimmerテストなど、プロジェクトを直接ビルドする際に/p:Ninja=trueを明示的に指定しないケースでも、CLRのデフォルトビルド動作(Ninja使用)と一貫性が保たれるようになります。


#134461 [release/8.0-staging] Make TestKeyRing.CreateECDsa resilient to transient macOS OSStatus -50 failures

概要

macOS上でのシステムセキュリティフレームワークの断続的な失敗(OSStatus error -50)によるSystem.Security.Cryptography.Cose.Tests の不安定性を修正するバックポート。EC鍵インポート時の一時的な失敗に対してリトライロジックを追加します。テスト専用の信頼性向上であり、製品コードには影響しません。

変更内容

  • src/libraries/System.Security.Cryptography.Cose/tests/CoseTestHelpers.cs
    • CreateECDsa ヘルパーメソッドにリトライロジックを追加
    • macOS特定のOSStatus error -50("Unsupported key type: 73")に対し最大3回までリトライ
    • RuntimeInformationを使用したプラットフォーム判定により互換性確保

パフォーマンスへの影響

影響なし(テスト専用変更、リトライは失敗時のみ発動)

関連Issue

#125909(main での修正) #121902(元の報告Issue) #132252(release/10.0 へのバックポート)

その他

  • リリース/8.0-staging への バックポート PR
  • 自動バックポートbot が失敗したため手動対応(release/8.0-staging ではTestKeyRing.csが存在せず、修正対象がCoseTestHelpers.csに存在)
  • main および release/10.0 で既にマージされた同一の修正をリリース/8.0-staging に適用
  • 回帰リスク:なし(テストのみの変更)

#134458 [release/8.0-staging] Fix flaky TestWindowStyle: check only STARTF_USESHOWWINDOW bit, remove ShellExecute cases

概要

Windows プロセス起動時のテスト TestWindowStyle の不安定性を修正するバックポート。STARTF_USESHOWWINDOW ビットのみをチェックするように変更し、ShellExecute関連のテストケースを削除することで、テストの信頼性を向上させました。

変更内容

  • src/libraries/System.Diagnostics.Process/tests/ProcessStartInfoTests.Windows.cs
    • TestWindowStyle テストの検証ロジックを修正
    • STARTF_USESHOWWINDOW ビットフラグのみをチェック対象に限定
    • ShellExecute関連のテストケースを削除(テスト仕様の簡素化)
    • 差分: +13行/-27行

パフォーマンスへの影響

影響なし

関連Issue

#125847

その他

  • これはバックポートPR(release/8.0-stagingブランチへのバックポート)
  • テストの安定性向上に関する変更で、ランタイム機能への直接的な変更なし
  • .NET 8のサービシングリリース向けの対応であり、release/X.0-stagingブランチが適切に指定されている

#134443 [release/11.0-rc2] Managed HPKE

概要

.NET 11向けのPost-Quantum Cryptography(PQC)移行計画の一部として、実験的なマネージHPKE(Hybrid Public Key Encryption)APIを追加します。完全なAPI表面を提供しますが、機能面では段階的な実装となり、Windows上でのWin32相互運用などは今後のサービシングで追加予定です。すべてのAPI型は[Experimental]属性でマークされています。

変更内容

  • HPKE公開API: HpkeSuite、HpkeSender、HpkeRecipientなど暗号化/復号化操作の中核インターフェース
  • マネージ実装: DHKEM(X25519、NIST曲線対応)、KDF(HKDF、SHAKE対応)、AEAD(AES-GCM、ChaCha20-Poly1305対応)の各アルゴリズム
  • メタデータ層: HpkeKemMetadata、HpkeKdfMetadata、HpkeAeadMetadataによるアルゴリズムサポート検出
  • 互換性フォワーディング: Microsoft.Bcl.Cryptographyへの型フォワード追加
  • テスト: RFC9180標準ベクタ、PQドラフトベクタを含む包括的なテストスイート(約6,000行)
  • リソース: 実験的な診断メッセージを追加

パフォーマンスへの影響

影響なし

関連Issue

#133804

その他

レビュー指摘事項: Copilotによる自動レビューで以下の懸念が報告されています:

  • 高重大度: コンテキスト破棄時のベースnonceクリア処理の未解決(セキュリティ関連)
  • 低重大度: リソースエントリのアルファベット順序、診断メッセージの書式(ドル記号の重複)

ビルド・テスト: PR提出時点では検証実行されていません。API承認フローのFollow-upが残存しています。


#134442 [release/11.0] Managed HPKE

概要

.NET 11向けの新しい実験的なHPKE(Hybrid Public Key Encryption)APIを追加するPull Requestです。PQC(Post-Quantum Cryptography)への移行に対応するため、マネージド実装によるHPKE機能全体を提供します。既知のCopilotレビューの指摘(派生ノンス バッファのクリア、APIプロポーザルへのリンク、診断メッセージの修正)があります。

変更内容

  • 新しい公開API(すべて[Experimental]属性):HpkeSuite、HpkeSender、HpkeRecipient、HpkeKem、HpkeKdf、HpkeAead、メタデータ型
  • マネージド実装:DHKEM(楕円曲線/X25519)、HKDF/SHAKE、AES-GCM、ChaCha20-Poly1305の実装
  • 内部実装:HpkeImplementation.Managed.cs、各種アダプタクラス(HpkeManagedKemAdapterなど)
  • テスト:RFC 9180およびPQ Draftに基づく豊富なテストベクトル、契約テスト、非対応プラットフォーム向けテスト
  • 互換性パッケージ:Microsoft.Bcl.Cryptographyでのフォワーディング対応
  • ドキュメント:診断コード一覧への追加

パフォーマンスへの影響

影響なし

関連Issue

#133804

その他

  • リスク評価:低。新しい[Experimental]型のみが影響対象で、機能は完全に独立
  • API完全性:APIセット全体を含むが、Windows上のWin32相互運用など完全な機能実装はサービス更新で追加予定
  • Copilotレビューの指摘:
    • 高深刻度:派生ノンスバッファの使用後クリア処理
    • 低深刻度2件:APIプロポーザルへのリンク追加、不明なKEM診断メッセージの修正

#134437 JIT: Fix profiled memcmp specialization for inline candidates

  • 作成者: @EgorBo
  • 作成日時: 2026年09月22日 16:55:55(UTC)
  • マージ日時: 2026年09月23日 11:12:14(UTC)
  • ラベル: area-CodeGen-coreclr

概要

Profile-Guided Optimization (PGO)を使用したSequenceEqual/memcmp呼び出しのJIT特殊化を修正しました。前回のPR #134160で69個のベンチマーク改善が達成されたため、memcmpイディオムに対しても同様の最適化を適用しています。バイト配列の比較パフォーマンスを向上させます。

変更内容

  • compiler.h: memcmp特殊化関連の定義を追加・変更(+33/-6)
  • importercalls.cpp: プロファイル済みSequenceEqualクローニングとインライン候補処理を修正(+21/-23)
    • プロファイル済み呼び出しの特殊化をインライン候補ラッピング前に実行
    • 使用可能なプロファイルが見つかった場合のみ候補メタデータをクリア
    • 他の長さに対してはフォールバック動作を保持
  • lower.cpp: memcmp展開処理の調整(+1/-19)

パフォーマンスへの影響

改善あり。提供されたベンチマーク(SequenceEqualで長さ1~128バイト)で複数の最適化が期待されます。ARM64は現在32バイトまで対応しており、さらなる最適化の余地があります。具体的な数値はベンチマーク結果を参照してください。

関連Issue

#134160

その他

Copilotレビューでは、TieredPGOのリグレッションテスト追加とAMD64/ARM64以外のプラットフォームで非SIMD memcmp展開閾値を保持することが推奨されています。


#134422 Remove unused client certificate from TLS host resumption test

  • 作成者: @rzikm
  • 作成日時: 2026年09月22日 14:14:01(UTC)
  • マージ日時: 2026年09月23日 08:28:50(UTC)
  • ラベル: area-System.Net.Security

概要

TLSホスト再開テスト(DifferentHost_NoResume)から未使用のクライアント証明書を削除するテストのみの変更です。Windows上で冷たい証明書-認証情報キャッシュの場合、未使用の証明書によって匿名認証情報が新たに生成され、ホスト変更アサーションに到達できない問題を解決します。製品の動作に変更はありません。

変更内容

  • src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamAllowTlsResumeTests.cs: 未使用のClientCertificateContextを削除(1行削除)
    • DifferentHost_NoResumeテストメソッドからクライアント証明書設定を削除
    • 初期ハンドシェイク、再開前提条件、ホスト名変更後のネガティブアサーションは変更なし

パフォーマンスへの影響

影響なし(テスト変更のみ)

関連Issue

#132851

その他

  • 検証済み環境: Windows x64のDebugライブラリ/テストで検証。3つのプロトコル変種すべてが変更前は単独実行で失敗、変更後は成功。10回の追加新規プロセス実行を含めて30回成功、スキップなし
  • テスト結果: 機能innerloop 5,275パス(36既存スキップ)、ユニットテスト117パス(4既存スキップ)、変更後の失敗なし
  • 未検証: Linux およびWindows x86環境
  • 注: PR作成はGitHub Copilotの支援で実施。暗号化ポリシーとLinuxクライアント証明書の問題は別途対応が必要

#134419 Read GET request bodies in the HTTP/1.1 loopback helper

  • 作成者: @rzikm
  • 作成日時: 2026年09月22日 13:37:22(UTC)
  • マージ日時: 2026年09月23日 08:53:28(UTC)
  • ラベル: area-System.Net.Http

概要

HTTP/1.1 LoopbackサーバーがGETリクエストのボディを読み込まずにレスポンス送信・接続を閉じていた問題を修正。クライアント側がリクエストボディの送信中にサーバーが接続を閉じることで、Windows 10053エラーが発生していました。LoopbackServer.Connection.ReadRequestDataAsyncを修正し、GETリクエストに対してもContent-LengthおよびChunked Encodingのフレーミングを尊重するようにしました。

変更内容

  • LoopbackServer.cs: GET/POST等のリクエストメソッドに関わらず、Content-Lengthまたはchunked encodingで指定されたボディを読み込むようにReadRequestDataAsyncを修正
  • HttpClientHandlerTest.Http1.cs: Content-Length/chunked framing、即座/遅延ボディ読み込みをカバーする4行のHTTP/1.1リグレッションテストを追加。既存のSendAsync_RequestWithLatin1HeaderValue_Succeedsテストにより、GETリクエストのボディが正しく読み込まれることを検証

パフォーマンスへの影響

影響なし。内部テストインフラの修正であり、商用コードの変更はありません。

関連Issue

#132004

その他

  • 破壊的変更なし。readBody: falseパラメータを使用することで、既存の呼び出し側はボディを別途読み込むことができます
  • 検証済み: System.Net.Http機能テスト5432パス、ユニットテスト2677パス、WinHTTPテスト(.NET Framework 4.8.1含む)で全パス、新規リグレッションテスト4行全てパス
  • 本PR以前に発生していた一時的な失敗(DEL/Contentクラスで2/72失敗)はこの修正により解決

#134405 [release/8.0-staging] Avoid publishing additional files from IntermediateArtifacts

概要

IntermediateArtifactsから公開対象外の追加ファイルが発行されていた問題を修正しました。署名済みアーティファクト準備パイプラインを更新し、ダウンロード対象をShipping、NonShipping、Insertionの3つのディレクトリに限定します。

変更内容

  • eng/pipelines/official/jobs/prepare-signed-artifacts.yml: 中間成果物のダウンロードをフィルタリングし、公開可能なディレクトリのみを対象にするよう制限(+4行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • release/8.0-staging ブランチへの変更
  • ビルドパイプライン設定の修正であり、ランタイム機能やAPIに影響しません

#134404 [release/9.0-staging] Avoid publishing additional files from IntermediateArtifacts

概要

IntermediateArtifactsから意図しない追加ファイルが公開されるのを防ぐための変更です。ビルドパイプラインの設定を修正し、中間成果物のダウンロードを必要なディレクトリ(Shipping、NonShipping、Insertion)のみに制限します。

変更内容

  • eng/pipelines/official/jobs/prepare-signed-artifacts.yml: 中間成果物(IntermediateArtifacts)のダウンロード対象を制限。Shipping、NonShipping、Insertionディレクトリのみをダウンロード対象とするよう設定を追加。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはrelease/9.0-stagingブランチへの変更です。AI生成による概要が示されており、変更内容は簡潔で承認推奨との判定がされています。


#134396 [browser] Normalize dequeued jiterpreter method pointers

概要

Jiterpreterが2GB以上のメモリに割り当てられたメタデータポインタを正しく処理できない問題を修正します。WebAssembyのi32値が符号付きJavaScript数値として返されるため、キューからデキューされたポインタを正規化してから、interp-entryおよびJIT-callマップでルックアップを実行するようにしました。これにより、高メモリアドレス領域のトランポリン生成がスキップされる問題が解決されます。

変更内容

  • src/mono/browser/runtime/jiterpreter-interp-entry.ts: Interp-entry キューからデキューされたメソッドポインタを正規化処理を追加
  • src/mono/browser/runtime/jiterpreter-jit-call.ts: JIT-call キューからデキューされたメソッドポインタを正規化処理を追加

パフォーマンスへの影響

影響なし(ポインタ正規化は軽量な操作)

関連Issue

#121221(ポインタ符号性の変更) #131361(release/10.0バックポートでの課題)

その他

  • WebAssembly(Wasm)ランタイム環境でのブラウザ実行時のポインタ処理の改善
  • 高メモリアドレス領域(2GB以上)でのJIT/Interp トランポリンコンパイル問題の修正
  • テスト検証: MemoryTests.AllocateLargeHeapThenRepeatedlyInterop で大規模ヒープ割り当て時の相互運用確認済み

#134365 [release/11.0] Fix Android NativeAOT template for updated memory safety rules

概要

Android NativeAOT テンプレートを最新のメモリ安全性ルールに対応させるための修正。release/11.0へのバックポート(#134212から)です。安全性ルールの変更により発生したテストインフラの ビルドエラーを解決するテンプレートの更新です。

変更内容

  • src/tasks/AndroidAppBuilder/Templates/monodroid-nativeaot.cs: Android NativeAOT テンプレートの unsafe/safe コンテキスト関連の修正(+91行/-65行)

パフォーマンスへの影響

影響なし

関連Issue

#134212

その他

  • リスク評価: 低(テストのみの変更)
  • 内部検出: テスト インフラの問題として内部で検出された
  • リグレッション: はい(最新のsafe/unsafe関連の変更により発生)
  • 検証方法: CI でビルドエラーが解決されることで検証される
  • .NET 11.0 リリースブランチへのバックポートであり、ステージングブランチは不要

#134335 [release/9.0-staging] Fix Linux FileSystemWatcher silent stop after unpaired IN_MOVED_FROM

概要

Linux上のFileSystemWatcherがディレクトリの移動イベント(IN_MOVED_FROM)の処理で意図せず停止する不具合を修正しました。マージ操作等により対応するwatch情報がない状態で移動イベントが発生した場合、イベント処理がサイレントに停止していた問題を、制御フロー修正(return false → break)で解決します。

変更内容

  • FileSystemWatcher.Linux.cs: inotifyイベント処理ステートマシン内のIN_MOVED_FROMイベントハンドリングで、メソッドの不意の終了をループブレークに修正。古いwatch情報の削除と後続イベント処理が正常に続行されるように改善。

パフォーマンスへの影響

影響なし

関連Issue

#133420、#9130

その他

  • 重要度: 中程度の顧客報告案件。バージョン管理システムを構築した顧客がLinux環境でのディレクトリ移動によるサイレント停止により、全ワークスペースの変更検知が失われる問題が発生していました。
  • 回帰: .NET 9で#9130により導入。.NET 11ではコンポーネント全体が書き直されているため、サービシングブランチで同一の問題が再発する可能性は低い。
  • リスク評価: 低い。1行の最小限の修正で、特定の例外パス(未マッチのIN_MOVED_FROMイベント)のみに影響。
  • テスト: 顧客提供の再現アプリで検証済み。自動化回帰テストは非追加(フレーキーになる可能性、.NET 11での書き直しにより必要性が低い)。

#134329 [release/10.0] Unify native API availability probes

概要

Xcode 27との互換性のため、ネイティブAPI可用性プローブの統一を行うバックポート。デプロイメント対象に関わらず、CMake設定順序に依存せずにAPI可用性が正しく検出されるよう、-Werror=unguarded-availabilityの適用を共有ネイティブコンパイラ設定に統一し、pipe2プローブを標準化しました。

変更内容

  • eng/native/configurecompiler.cmake: デプロイメント対象の可用性警告を集約し、全ネイティブコンポーネントで一貫性のある適用
  • src/coreclr/pal/src/configure.cmake: PALのpipe2プローブを_GNU_SOURCEスコープで標準化
  • src/native/external/libunwind_extras/configure.cmake: libunwindのpipe2プローブを同様に更新
  • src/native/libs/configure.cmake: ネイティブライブラリプローブを統一

パフォーマンスへの影響

影響なし(ネイティブCMakeフィーチャー検出領域の変更のみで、ランタイム実装の変更なし)

関連Issue

#134073

その他

  • リスク評価: 低(ランタイム実装変更なし、可用性適用はコンパイラサポート限定、_GNU_SOURCEは個別チェック範囲に限定)
  • 課題背景: 新しいApple SDK宣言により、より古いmacOSデプロイメント対象に対してpipe2が誤って利用可能と判定される可能性があり、ビルド失敗またはターゲットOSで利用不可なAPIが選択される問題に対応
  • テスト: CIテスト済み

#134328 [release/11.0] Unify native API availability probes

概要

Xcode 27との互換性を確保するため、ネイティブAPI可用性プローブを統一し、デプロイメントターゲットに対応したコンパイラ設定を実装しました。特にpipe2の検出がmacOSデプロイメントターゲットを正確に尊重するよう修正され、CMake設定順序に依存しない共有プローブ結果を実現しています。

変更内容

  • eng/native/configurecompiler.cmake: Apple可用性警告の共有的な強制実装を追加(-Werror=unguarded-availability)
  • src/coreclr/pal/src/configure.cmake: pipe2プローブの標準化、_GNU_SOURCEスコープ化
  • src/native/external/libunwind_extras/configure.cmake: libunwind用プローブの標準化、_GNU_SOURCEスコープ化
  • src/native/libs/configure.cmake: ネイティブライブラリプローブの更新

これらの変更により、ヘッダー認識のC言語pipe2プローブをPAL、libunwind extras、ネイティブライブラリ全体で統一しました。CMakeのチェック状態push/popを使用して_GNU_SOURCEをスコープ化し、既存のプローブ状態を保持しています。

パフォーマンスへの影響

影響なし。本変更はCMakeのネイティブ機能検出に限定された変更で、ランタイム実装の変更を含みません。

関連Issue

なし

その他

  • 互換性への影響: 破壊的変更なし。可用性強制はコンパイラサポートゲート処理され、既存の機能検出動作を保持
  • 修正の背景: 新しいApple SDK宣言によって露呈した問題で、Xcode 27でのビルド失敗またはターゲットOSで利用不可なAPIの選択を防止
  • リスク評価: 低リスク。ネイティブCMake機能検出に限定され、ランタイム実装変更がないため
  • テスト: CI testing

#134326 [release/11.0] [ci-fix] Mark Apple test runner LibraryImports safe (refs #134061)

概要

Apple test runner の LibraryImports 属性に対して unsafe/safe ルール適用に伴う対応を行うテストのみの修正です。内部で発見された build break を解決するための backport です。

変更内容

  • src/libraries/Common/tests/AppleTestRunner/AppleTestRunner.cs: LibraryImports 属性の安全性マーキングを更新(2行追加、2行削除)

パフォーマンスへの影響

影響なし

関連Issue

#134061

その他

  • これは release/11.0 への backport であり、#134134 の対応版です
  • テストのみの変更であるため、リスクレベルは低い
  • extra-platforms CI の build break 解決を目的としており、CI での検証が予定されています

#134141 Use dnssd for DnsResolver on OSX

  • 作成者: @rzikm
  • 作成日時: 2026年09月17日 15:05:24(UTC)
  • マージ日時: 2026年09月23日 12:53:19(UTC)
  • ラベル: area-System.Net

概要

macOS上のDNS解決をDNS-SD(Bonjour/mDNSResponder)経由で実装し、明示的サーバー指定の場合はマネージドリゾルバーを継続使用します。DNS-SDレコード解析機能、ソケットハンドリング、PALロジックを追加し、macOS向けの機能テストと単体テストカバレッジを拡充します。

変更内容

  • Interop.Dnssd.cs: DNS-SDネイティブバインディング(DNSServiceQueryRecord等)を追加
  • DnsResolverPal.OSX.cs: macOS向けDNS-SD解決実装(新規追加、310行)
  • DnsSdRecordParsing.cs: DNS-SDレコード解析機能を実装(新規追加、153行)
  • DnsSocket.cs: ソケットアクセスと準備状態ハンドリングをリファクタリング(96行追加/99行削除)
  • DnsResolver.cs: 埋め込みNUL文字の検証ロジックを追加
  • DnsRecordParsing.cs: TXTレコード解析の有効性検証を公開
  • テスト: DNS-SDレコード解析単体テスト(139行)、機能テストをmacOS対応に更新
  • .csproj: macOS向けソースおよびinteropの接続

パフォーマンスへの影響

影響なし

関連Issue

#131188(Windows Server 2025上でのNxDomainテスト失敗)

その他

未解決の審査指摘:

  1. DNS-SDコールバック処理でkDNSServiceFlagsMoreComingフラグ判定が不適切。CNAMEレコードのみで終了する場合、IsCompleteが偽のままDNSServiceProcessResultが再呼び出しされ、タイムアウトまでブロックされる可能性あり。
  2. DnsSdRecordParsingで、AレコードはRDATA長4バイト、AAAAレコードは16バイトの厳密な検証が不足。マネージドパーサーと同等の型チェックが必要。
  3. 埋め込みNUL検証のコメントが不正確。マネージドリゾルバーではDnsEncodedName.TryEncodeがDNSワイアデータを構築してNULを無効なラベルとして拒否するが、Linux/明示的サーバーパスではこの動作がないため、コメントを分離する必要あり。
  4. 複数のテスト削除によりカバレッジに懸念あり:非標準ポート/混合IPv4/IPv6リスト検証、静的API(Dns.ResolveAddresses)のUnix/macOS対応確認が不足。

#134137 Make sure the interpreter code is published before the native code for a method

概要

インタプリタコード公開の順序を修正し、prestub設定中のレース条件を防ぎます。prestubのprecodeがパッチされる前にインタプリタコードをMethodDescに公開することで、競合状態でインタプリタコードが毒化される問題を解決します。JITが無効な新しいインタプリタライブラリパイプラインで発生していた問題に対応しています。

変更内容

  • src/coreclr/vm/prestub.cpp: インタプリタコード公開の順序を修正。precodeをリダイレクトする前にインタプリタコードを公開し、生成されたスタブからインタプリタデータを直接読み込むよう変更。必要な順序をコメントで記載。

パフォーマンスへの影響

影響なし

関連Issue

#133771

その他

この修正は、他の箇所で既に実装されていた順序付けの強制化(#130026)が、当該パスで漏れていたことへの対応です。JITが無効になる構成下でインタプリタがスタブを処理する際のアサーション失敗を回避します。


#134105 Enable r2r of non-deterministic intrinsics

  • 作成者: @BrzVlad
  • 作成日時: 2026年09月16日 20:50:27(UTC)
  • マージ日時: 2026年09月23日 18:20:51(UTC)
  • ラベル: area-ReadyToRun

概要

非決定的な組み込み関数(MultiplyAddEstimate、MinNative/MaxNativeなど)のReadyToRun(R2R)コンパイルを有効化します。これらの関数は利用可能なISA(命令セット)によって異なる計算結果を返す可能性があるため、R2Rで実行時のISA依存関係を追跡し、コンパイル時のISAと一致しない場合は実行時に再JITコンパイルされます。これにより、プラットフォームごとの最適化を活用しながら同一プロセス内での結果一貫性を保証します。

変更内容

  • ISA依存関係の追跡: compExactlyDependsOn(isa, true)の新規APIで、R2Rコンパイル時に正と負のISA依存関係を記録。実行時にISAが一致しない場合は、メソッドが再JITされます。
  • MinNative/MaxNativeの再帰化: スカラー版(Single.MinNative、Double.MinNativeなど)と対応するベクトル版を再帰的に実装し、直接呼び出しと間接呼び出し(デリゲート、リフレクション等)で同じ結果を返すようにします。
  • インタープリタサポート: intops.defにINTOP_MINMAX_NATIVE_*オペコード追加、interpexec.cppに実装追加により、JIT非対応環境でのフォールバック機能を保証。
  • x86スカラー変換の修正: ConvertToIntegerNativeがAVX512対応時は飽和パスではなくAVX512命令を使用するよう修正。
  • JIT/EE/R2R/SuperPMI全体の整合性: ICoreJitInfo インターフェース、ThunkGenerator、MethodContextなど複数レイヤーでISA依存関係フラグを伝播。

パフォーマンスへの影響

影響なし(または予測不可)。このPRは正確性を優先しており、パフォーマンス測定やベンチマーク結果は提供されていません。R2Rコンパイルが可能になることで、インタープリタオンリーモードでの大幅な回帰を防止します。

関連Issue

なし

その他

  • 重要な未解決項目: Copilot reviewerが指摘した以下の課題が残存:
    • WASM(PackedSimd)環境での非対応命令セットが含まれるR2Rボディの生成防止が未実装
    • Double.MaxNativeのPackedSimd展開がWASMで適切にガード化されていない
    • MinNative/MaxNativeの再帰実装に対するリグレッションテスト(スカラー・ベクトル両方、NaN/符号付きゼロケース含む)が不足
    • ShuffleNativeのAVX512 64ビット順列高速パスでのcompOpportunisticallyDependsOnの使用が、同一プロセス内の結果一貫性要件に違反する可能性
    • ドキュメント(vectors-and-intrinsics.md)が新しい3引数形式を完全に説明していない
  • 破壊的変更: なし(パブリックAPIの変更はなし、ランタイム内部のみ)
  • 4つの独立したコミットに分割された実装で、段階的

#134072 [cDAC] Expose interpreter JIT manager code heaps

概要

CoreCLR Data Accessor Contract (cDAC) を通じて Interpreter JIT Manager のコードヒープを公開するための変更です。インタプリタで生成されたコードは従来 ExecutionManager 経由で発見できず、ダンプコレクターがメタデータを省略する問題を解決します。オプショナルな InterpreterJitManagerAddress グローバルを追加し、JitManagerKind ベースの API で EE マネージャーとインタプリタマネージャーの独立した列挙が可能になります。cDAC reader のアドバイザリーバージョンを 2 に引き上げ、後方互換性を維持しています。

変更内容

  • ネイティブ記述子: datadescriptor.inc と codeman.h でインタプリタマネージャーのアドレスを公開
  • cDAC コントラクト: IExecutionManager に JitManagerKind ベースの新 API を追加(GetJitManager()、EnumerateJitManagers())
  • ExecutionManagerCore: マネージャー種別の発見と個別のコードヒープ列挙ロジックを実装
  • レガシー互換性: SOSDacImpl は既存の EE のみの動作を保持
  • Reader バージョン: RuntimeInfo を v2 に更新し、新機能をアドバタイズ
  • テスト拡充: ユニットテスト(ExecutionManagerTests)とダンプテスト(InterpreterStackDumpTests)を追加
  • ドキュメント: ExecutionManager.md、RuntimeInfo.md、reader-version-history.md を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

留意事項:

  • Copilot によるレビューで 2 つの指摘が報告されています:

    1. 重大(クリティカル): IExecutionManager の既存 EE のみメンバーを EE フォワーディングラッパーとして保持し、API 互換性を確保する必要がある可能性
    2. 中程度: RuntimeInfo_1.cs の GetCurrentReaderVersion() が 2 を返すことについてのユニットアサーション追加を推奨
  • 検証済み: 3,154 個の cDAC ユニットテストすべてがパス、InterpreterStack デバッギー(JIT 有効時)でのダンプテストが成功


#134049 Update CI images to Azure Linux 4.0

概要

CI環境で使用するDockerイメージをAzure Linux 3.0からAzure Linux 4.0にアップグレードします。このアップデートは、dotnet-buildtools-prereqs-dockerリポジトリの関連Issue(#1646)に対応するものです。

変更内容

  • .github/workflows/jit-format.yml: CI ワークフロー設定の更新
  • docs/workflow/building/coreclr/cross-building.md: クロスビルド手順ドキュメントの更新
  • docs/workflow/using-docker.md: Docker使用方法ドキュメントの更新(Azure Linux バージョン参照の更新)
  • eng/pipelines/common/templates/pipeline-with-resources.yml: パイプラインテンプレートの更新(イメージバージョン参照の更新)

パフォーマンスへの影響

影響なし

関連Issue

dotnet/dotnet-buildtools-prereqs-docker#1646

その他

なし


#134046 [release/8.0] Remove mobile queues from runtime-extra-platforms CI test runs

概要

.NET 8のrelease/8.0ブランチにおいて、runtime-extra-platforms CI パイプラインからサポートされていないモバイルプラットフォーム(Android、iOS/tvOS、シミュレータ、Mac Catalyst)のキューを削除し、CI ノイズを軽減します。WASM、Linux Bionic などのモバイル以外のジョブは保持されます。

変更内容

  • eng/pipelines/runtime-extra-platforms.yml: モバイルテンプレート(Android、iOS/tvOS、シミュレータ、Mac Catalyst)を削除(-42行)

パフォーマンスへの影響

影響なし。CI パイプラインの構成変更であり、ランタイムのパフォーマンスに直接的な影響はありません。

関連Issue

#133998

その他

  • 前のPR(#134037)に置き換わるもの
  • Copilotのレビューでは、Linux Bionicテンプレートの復元を推奨する指摘あり

#133839 [release/8.0-staging] Update dependencies from dotnet/runtime-assets

概要

dotnet/runtime-assets からの依存関係を更新するPull Request。テストデータおよびランタイムアセット関連の複数のNuGetパッケージをバージョン8.0.0-beta.26457.3から8.0.0-beta.26462.3に更新します。release/8.0ブランチの自動更新です。

変更内容

  • eng/Version.Details.xml: 14個の依存パッケージバージョン情報を更新(+28/-28行)
  • eng/Versions.props: プロパティファイル内の対応するバージョン番号を更新(+14/-14行)

更新対象パッケージ:

  • Microsoft.DotNet.CilStrip.Sources
  • System.ComponentModel.TypeConverter.TestData
  • System.Data.Common.TestData
  • System.Drawing.Common.TestData
  • System.Formats.Tar.TestData
  • System.IO.Compression.TestData
  • System.IO.Packaging.TestData
  • System.Net.TestData
  • System.Private.Runtime.UnicodeData
  • System.Runtime.Numerics.TestData
  • System.Runtime.TimeZoneData
  • System.Security.Cryptography.X509Certificates.TestData
  • System.Text.RegularExpressions.TestData
  • System.Windows.Extensions.TestData

パフォーマンスへの影響

影響なし(依存関係の更新のみ)

関連Issue

なし

その他

  • 自動更新PR(dotnet-maestro[bot]による作成)
  • ビルド日時: 2026年9月13日 2:37:29 UTC
  • runtime-assets リポジトリの release/8.0 ブランチからの更新

#131361 [release/10.0][browser][mono] Make sure we treat the 4GB ptrs as unsigned

概要

WebAssembly の JS/wasm 境界でポインタの符号が保持されず、2GB を超えるアドレスが負の数として表示される問題を修正します。このバックポートは main ブランチの PR #121221 をベースとしており、暗号、デバッガ、WebSocket、イベントパイプ、jiterpreter などの複数の領域でポインタを符号なし整数として扱うように修正します。

mono ブラウザランタイムの JavaScript 側で >>> 0 や fixupPointer を使用してポインタ値を符号なし化し、wasm のメモリ操作時の無言の破損(例:RandomNumberGenerator.Fill がゼロバッファを返す、jiterpreter の無効なモジュール生成)を防ぎます。

変更内容

  • crypto.ts: エントロピーバッファポインタを符号なしに強制
  • debug.ts / diagnostics/*.ts: デバッガおよび診断メッセージバッファビューで符号なしオフセットを使用
  • jiterpreter.ts*: ポインタ値を符号なしに強制し、wasm コード生成時の無効なエンコーディング防止。constantSlots 機能を削除
  • marshal.ts / memory.ts / strings.ts / web-socket.ts / roots.ts / startup.ts: ヒープアクセスおよびメモリビュー作成時にすべてのポインタ・オフセットを符号なし化
  • MemoryTests.cs / MemoryTest.cs / main.js: 2GB を超える領域でのデータ整合性を検証するテストシナリオを拡張

パフォーマンスへの影響

2GB 以下のヒープでは >>> 0 強制はノー・オプです。4GB ヒープの最大化は <EmccMaximumHeapSize> と wasm-tools ワークロード経由のネイティブリンク時のみ有効化されるため、影響のあるシナリオはオプトインです。

関連Issue

#58382、#121221、#131360、#104662、#109079、#124633

その他

  • 破壊的変更: なし。既存の 2GB 以下構成では動作が変わりません
  • セキュリティへの影響: 顧客が 2GB を超えるヒープを使用する場合、RandomNumberGenerator.Fill がセキュリティ関連の破損(ゼロバッファ返却)を起こすため、本修正は重要です
  • Copilot レビュー: jiterpreter メソッドマップのキー正規化漏れに関する指摘あり(中度)

目次