Pull Request on 2026年09月21日

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

注意点

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


目次

  1. #134374 [release/11.0] Add incremental chunked reading to CborReader
  2. #134371 Forward missing Type members in System.Reflection.Context
  3. #134370 [release/11.0] Fix configuration reload test race
  4. #134357 Move full browser CoreCLR R2R library tests to outer loop
  5. #134353 Fix macOS single-file runtime info capture
  6. #134351 [release/11.0] JIT: Prevent loop hoisting across volatile reads
  7. #134350 [release/11.0] JIT: guard overflow in loop cloning offset limits
  8. #134349 [release/11.0] JIT: Fix promoted liveness in forward substitution
  9. #134348 [release/11.0] JIT: Validate jump threading phi inputs
  10. #134347 [release/11.0] JIT: validate RBO relop rewrite operands
  11. #134344 [release/11.0] Validate store-coalescing constants before modifying IR
  12. #134340 Fix typo from occured tooccurred
  13. #134338 Fix typo from senario to scenario
  14. #134336 Fix typo from Metdata to Metadata
  15. #134333 Fix typo from transaciton to transaction
  16. #134332 Fix typo from conatains to contains
  17. #134331 [release/11.0] Disable file locking by default on iOS and tvOS
  18. #134325 JIT: Set profile flag on async OSR jump blocks
  19. #134321 Improve ComparerHelper.CreateDefaultEqualityComparer
  20. #134310 [release/11.0] KEM support for EnvelopedCms
  21. #134289 [release/11.0] Add Composite ML-KEM certificate key accessors
  22. #134279 JIT: Preserve exceptions during jump threading
  23. #134267 [release/11.0] Remove open delegate Equals fastpath
  24. #134223 [release/10.0] Fix GC on Windows with multiple CPU groups
  25. #134216 [release/11.0] Fix GC on Windows with multiple CPU groups
  26. #134212 Fix Android NativeAOT template for updated memory safety rules
  27. #134204 [release/11.0] Defer WinHTTP HTTP/2 loopback connection closure until server disposal
  28. #134184 JIT: Avoid null predecessor dereference after tail duplication
  29. #134131 Fix use after free in ExecutableAllocator::AllocateThunksFromTemplate()
  30. #134076 [wasm][coreclr] Re-enable Regression3_Regressions for interpreter
  31. #134069 [browser] fix two ways a streaming HTTP request/response can hang or orphan its fetch promise
  32. #134060 Disable file locking by default on iOS and tvOS
  33. #133976 Validate store-coalescing constants before modifying IR
  34. #133972 [release/11.0] [mono][llvm] Fix malformed uaddlp/saddlp intrinsic declarations
  35. #133959 [release/10.0] Backport Helix job monitor
  36. #133938 [release/11.0] Fix internal Helix pipeline credentials and queue selection
  37. #133937 [release/11.0] Source code updates from dotnet/dotnet
  38. #133924 [wasm] Use instantiating stubs for default interface dispatch
  39. #133801 JIT: Fix zero-flag reuse for BSF/BSR
  40. #133690 JIT: Generalize entry-block parameter register rewriting to all blocks
  41. #133656 [browser][CoreCLR] Enable trimmed ReadyToRun library-test CI
  42. #133602 Add incremental chunked reading to CborReader
  43. #133567 [release/10.0] Guard against empty remote address on macOS accept
  44. #133566 [release/11.0] Guard against empty remote address on macOS accept
  45. #133389 [release/11.0] Update dependencies from dotnet/icu, dotnet/runtime-assets
  46. #133335 [release/11.0] Update dependencies from dotnet/xharness
  47. #133184 [release/10.0] Fix generic virtual dispatch hang after multiple AssemblyLoadContext unloads
  48. #129535 [release/9.0-staging] Fix assembly labels on MacOS X64 to be LOCAL_LABEL

#134374 [release/11.0] Add incremental chunked reading to CborReader

概要

.NET 11向けにCborReaderに段階的チャンク読込(incremental chunked reading)機能を追加します。CBOR ペイロード全体をメモリに読み込むことなく、ストリーミング方式で処理できるようになります。これは #133602 の release/11.0 へのバックポートです。

変更内容

  • 公開API追加: CborReader に新しいメソッドを6つ追加(ref/System.Formats.Cbor.cs)
  • PeekState機能: 新ファイル CborReader.PeekState.cs(96行)でデータの先読みメカニズムを実装し、次の値を検査可能に
  • SkipValue機能強化: CborReader.SkipValue.cs を拡張(72行に増加)、ストリーミング対応のスキップ処理を追加
  • 整数読込改善: CborReader.Integer.cs に21行追加、チャンク読込対応
  • 文字列読込改善: CborReader.String.cs に8行追加
  • タグ処理強化: CborReader.Tag.cs を22行追加で拡張
  • 状態管理: CborReaderState.cs に8行追加、新しい読込状態定義
  • テスト拡充: SkipValue および SlideData テストで965行の新規テストケース追加、既存動作との互換性確認
  • ローカライズ: Strings.resx に新しいエラーメッセージ9行追加

パフォーマンスへの影響

メモリ効率改善:CBOR ペイロード全体をメモリに読み込まず、チャンク単位で処理可能になるため、大規模ペイロード処理時のメモリ使用量を削減できます。既存の非ストリーミング API は変更されないため、既存コードへの性能影響はなし。

関連Issue

#133602

その他

  • 破壊的変更なし:既存APIは完全互換。新機能は新しいAPIを使用する呼び出し元のみに影響
  • リスク評価:Low。既存テストで非ストリーミング動作が従来通りに機能することを確認、新テストで新ストリーミング動作を検証
  • 顧客報告による機能要望対応

#134371 Forward missing Type members in System.Reflection.Context

概要

System.Reflection.ContextのCustomReflectionContextでマッピングされた型が、ラップしている型の代わりに基本クラスからの応答を返していた問題を修正しました。DelegatingTypeが複数のTypeメンバーをオーバーライドしていなかったため、NotSupportedExceptionやNotImplementedExceptionが発生したり、不正な値が返されていました。本PRでは、IsByRefLike、GetEnumValuesAsUnderlyingType()、GetNullableUnderlyingType()、MakeFunctionPointerType()、関数ポインタ関連メンバーなど、漏れていたメンバーをラップ型に転送するようにしました。

変更内容

  • DelegatingType.cs: IsByRefLike、IsSZArray、IsTypeDefinition、IsConstructedGenericType、IsVariableBoundArray、IsFunctionPointer、IsUnmanagedFunctionPointer、GetEnumValuesAsUnderlyingType()、GetNullableUnderlyingType()、MakeFunctionPointerType()、関数ポインタ関連メソッド(GetFunctionPointerReturnType()、GetFunctionPointerParameterTypes()、GetFunctionPointerCallingConventions())、MemberTypeプロパティをラップ型に転送
  • ProjectingType.cs: GetNullableUnderlyingType()、MakeFunctionPointerType()、関数ポインタ関連メソッドの戻り値の型をプロジェクト化し、MakeFunctionPointerType()に渡されるパラメータ型をアンプロジェクト化
  • ExtendedTypeTests.cs: 各転送メンバーの動作と型プロジェクション動作をカバーする164行の回帰テストケースを追加
  • System.Reflection.Context.Tests.csproj: 関数ポインタシグネチャ用にAllowUnsafeBlocksを有効化

パフォーマンスへの影響

影響なし

関連Issue

#133816

その他

  • 破壊的変更: 本PRはマッピング型の複数メンバーの動作を変更します。IsFunctionPointerがfalseからtrueを返すようになったり、例外が返されていた箇所が正常な値を返すようになるなど、破壊的な変更を含みます。破壊的変更に関する説明書が必要です。
  • 対象フレームワーク: net11.0、net10.0、netstandard2.1で動作確認済み。GetNullableUnderlyingType()とMakeFunctionPointerType()は#if NET11_0_OR_GREATER、他のメンバーは#if NETで条件付きコンパイル
  • テスト範囲: Windows x64でのローカル実行、NativeAOT、Mono(JITおよびインタープリタモード)で検証済み。.NET 10.0.12での互換性も確認済み
  • 既知制限: IsCollectibleの転送はTypeDescriptorのキャッシング動作の影響を考慮して見送り

#134370 [release/11.0] Fix configuration reload test race

概要

configuration reload testのレース条件を修正するバックポート。#133368の修正をrelease/11.0ブランチに適用するもの。

変更内容

  • src/libraries/Microsoft.Extensions.Configuration/tests/FunctionalTests/ConfigurationTests.cs: configuration reload testのレース条件を修正(5行追加、5行削除)

パフォーマンスへの影響

影響なし

関連Issue

#133368(元のPR)

その他

  • これはバックポートPRです(release/11.0ブランチ向け)
  • テストのみの変更であり、ランタイムやコアライブラリの動作には影響しません
  • レース条件の修正により、テストの安定性が向上します

#134357 Move full browser CoreCLR R2R library tests to outer loop

  • 作成者: @lewing
  • 作成日時: 2026年09月21日 17:46:14(UTC)
  • マージ日時: 2026年09月21日 19:29:21(UTC)
  • ラベル: area-Infrastructure

概要

WebAssembly向けのブラウザ CoreCLR ReadyToRun (R2R) ライブラリテストをCI パイプラインの最適化のため再構成するもの。デフォルト CI では高速な煙テスト(約45分)を実行し、完全なテストスイート(従来3時間09分)をスケジュール済みの外部ループパイプライン(runtime-extra-platforms)と手動トリガーに移行します。

変更内容

  • eng/pipelines/runtime.yml: デフォルト Runtime パイプラインで R2R 煙テストのみを実行するよう変更(3行追加/削除)
  • eng/pipelines/runtime-wasm-libtests.yml: 手動実行による完全な R2R テスト用の新規パイプライン設定(5行追加)
  • eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml: スケジュール済みパイプラインで完全な R2R テスト実行を追加(36行追加/16行削除)

手動実行は /azp run runtime-wasm-libtests コマンドでトリガー可能。

パフォーマンスへの影響

  • デフォルト CI: 煙テスト実行により約45分に短縮(前回の完全テストから大幅削減)
  • スケジュール済みパイプライン: 完全テストは引き続き実行(従来3時間09分の並列化後の実行時間)
  • 全体効果: PR/デフォルト CI のビルド時間を実質削減しながら、外部ループで完全カバレッジを維持

関連Issue

#133656

その他

  • YAML ファイルの構文妥当性を PyYAML で検証済み
  • 煙テスト/完全テスト/手動実行のパラメータトポロジーを明示的に検証
  • Copilot による初回レビューで「extra-platform フラグの転送」に関する指摘があったが、その後の対応で解決済み
  • 最終的に Copilot から承認推奨(「ブロッキング問題なし」)

#134353 Fix macOS single-file runtime info capture

概要

macOS単一ファイル形式のダンプ作成時に、MachOModule::TryLookupSymbolが返す再配置済みシンボルアドレスを直接使用するよう修正しました。これまでモジュールベースアドレスが重複加算されていたため、DotNetRuntimeInfoの読み取りが無効なアドレスを指していました。この修正により、ダンプにランタイムバージョンとレガシーDAC情報が正しく含まれるようになります。

変更内容

  • machoreader.h/cpp: MachOModule::TryLookupSymbolの仕様を明確化し、戻り値が既に再配置済みの絶対アドレス(m_loadBias + n_value)であることをドキュメント化。関連する変数を「アドレス」を示す名称に変更(symbolOffset → symbolAddressなど)
  • crashinfomac.cpp: 単一ファイル形式でのDotNetRuntimeInfo読み取り時に、シンボルの再配置済みアドレスを直接使用し、モジュールベースアドレスの重複加算を排除

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 実装の意図: TryLookupSymbolの呼び出し元全てを監査し、同様のアドレス処理の誤りがないことを確認済み
  • 検証: .NET 11 osx-x64単一ファイル形式のMach-Oイメージを独立してパースし、修正後のアドレスがイメージ内に、修正前のアドレスがイメージ外にあることを確認
  • CI実行によるmacOS全体的なダンプ検証は進行中

#134351 [release/11.0] JIT: Prevent loop hoisting across volatile reads

概要

JITコンパイラのループ最適化がVolatile.Read(acquire操作)を越えて通常のフィールド読み込みをホイストするという、マネージドメモリモデルに違反する問題を修正しました。この問題により、別スレッドが公開した値を読み込めず、陳腐なデータが観測される可能性がありました。

変更内容

  • src/coreclr/jit/optimizer.cpp: volatile間接参照をループメモリハボック(memory havoc)として扱うことで、acquire操作を越えた不安全なロードホイストを防止(+11行)
  • src/tests/JIT/Regression_o_2/Runtime_133579.cs: クロスイテレーション順序付けの回帰テストを追加。修正なしでは失敗、修正ありでは成功(+60行)

パフォーマンスへの影響

影響なし。SuperPMI検証(Windows x64、9コレクション、987,559件のコンパイル)では、実質的なパフォーマンス低下なし(PerfScore影響は事実上ゼロ)。コード生成変更は2件のみで、合計+4バイト。ホイスト最適化が制限される可能性がありますが、測定可能な悪影響なし。

関連Issue

#133579、#133825

その他

  • .NET 8、9、10、11の全サポート対象バージョンに影響
  • 最近の導入変更は特定されず、すべてのサポート対象ランタイムバージョンで再現
  • 既存の回帰テストRuntime_40444(volatile順序付け)も成功を確認
  • Checked/Release CoreCLRビルドおよびJITフォーマット検証済み
  • リスク評価:低

#134350 [release/11.0] JIT: guard overflow in loop cloning offset limits

概要

Loop cloningにおいて、正の値のarr.Length + offsetがオーバーフローして負の値になる場合に、配列境界チェックが不正に削除される回帰バグを修正します。修正前は安全なC#コードでもIndexOutOfRangeExceptionの代わりにネイティブアクセス違反で終了する可能性がありました。.NET 11 RC1/RC2で発生し、.NET 10では正常に動作します。

変更内容

  • src/coreclr/jit/loopcloning.cpp: Loop cloning時のオフセット上限判定ロジックを修正。オーバーフローの可能性がある安全でないオフセットを検出し、チェック済みの従来ロジックへフォールバックするように条件判定を改善(+6/-4)
  • src/tests/JIT/opt/Cloning/OffsetLimit.cs: 正のオフセットでオーバーフローする減少ループの回帰テストを追加。修正前は失敗し、修正後は必要な境界例外が保持されることを検証(+76)
  • src/tests/JIT/opt/Cloning/OffsetLimit.csproj: テストプロジェクト設定ファイル追加(+1)

パフォーマンスへの影響

影響なし。修正は安全でないオフセットを検出して最適化されたループクローニングを回避し、既存の境界チェックを保持するフォールバックメカニズムを使用するため、パフォーマンス特性に変化はありません。

関連Issue

#133834(元のPR) #133823(報告された問題) #129309(回帰を導入したPR)

その他

  • 回帰の背景: .NET 11開発サイクルで#129309がspan/strideおよび定数オフセット上限への対応でloop cloningを拡張した際に導入
  • リスク評価: 低。変更はloop cloning条件導出に限定され、ロジックは安全でないオフセットを拒否して既存チェックを保持するフォールバック方式
  • テストの制限: Mono排除はこれがCoreCLR固有のloop cloning機能であるため

#134349 [release/11.0] JIT: Fix promoted liveness in forward substitution

概要

Forward substitutionにおいて、promoted struct親の古い最後の使用フラグがリセットされず、ライブなstruct copyが削除される問題を修正しました。この回帰により、正しい値8の代わりに6が返される不具合が発生していました。.NET 11 RC2で再現確認されており、.NET 8/9/10では正常に動作します。

変更内容

  • src/coreclr/jit/forwardsub.cpp: 最後の使用フラグのinvalidation処理をpromotion-awareに改善。単一・複数使用の置換ロジックを統一し、ライブ変数の保存を保守的に行うよう修正(+8行、-85行)
  • src/tests/JIT/Regression_ro_2/Runtime_133641.cs: promoted structの複数使用forward substitutionをテストし、定義元copyのライブ状態を検証する回帰テストを追加

パフォーマンスへの影響

影響なし。本修正は新しい最適化を有効化するものではなく、ライブ変数の保存をより保守的に行うもののため、パフォーマンス低下のリスクは低い。

関連Issue

#133641、#133703(オリジナル修正)、#129312(回帰導入)

その他

  • .NET 11サイクル中の#129312によって導入された回帰を修正するbackportです
  • JIT CIとSuperPMI分析により検証済み。コード生成の差異は限定的です
  • リスク評価: 低

#134348 [release/11.0] JIT: Validate jump threading phi inputs

概要

.NET 11 RC2で導入されたJump Threading最適化のバグを修正するバックポート。PHI命令の不完全な削除によって、到達しない前任者を持つSSA定義で置き換えられ、不正な結果を生成する問題を修正しました。例として、200を返すべきコードが101を返していました。

変更内容

  • src/coreclr/jit/redundantbranchopts.cpp: Jump Threading時のPHI入力検証ロジックを追加。置き換え対象のSSA定義がすべての予想される前任者に到達するかを確認し、不完全な場合はPHIを保持して最適化をスキップする(+36/-13)
  • src/tests/JIT/opt/RedundantBranch/JumpThreadPhi.cs: 回帰テストケースJumpThreadPhiを追加。修正前は失敗し、修正後は成功する(+37/-0)

パフォーマンスへの影響

影響なし。本修正は不正な最適化を防ぐもので、パフォーマンスに関連する変更ではありません。SuperPMI検証で約186万コンテキスト再生で失敗なし、テキスト差分+82バイトの増加のみ。

関連Issue

#133981(顧客報告のバグ)、#126907(回帰を導入したPR)

その他

  • このPRは#134205の release/11.0ブランチへのバックポートです
  • 回帰判定:Yes(.NET 11サイクル中に#126907で導入)
  • リスク評価:Low。修正は前任者カバレッジが不完全な場合に保守的にPHIを保持するもので、該当する危険な最適化ケースに限定されます
  • 検証内容:Windows x64 Checked JIT、Core_Root、スタンドアロン再現テスト、JITフォーマット、Windows x64 Release SuperPMIで実施済み

#134347 [release/11.0] JIT: validate RBO relop rewrite operands

概要

.NET 11 RC2で導入されたリグレッション(redundant-branch relop simplification)を修正するバックポート。JITが値番号付きのオペランドを使用して論理値述語を書き換える際に、実際のツリーオペランドと対応しない値を使用してしまい、不正なコード生成が発生していました。修正により、値番号付きオペランドが実際のツリーオペランドと一致しない場合は最適化をスキップします。

変更内容

  • src/coreclr/jit/redundantbranchopts.cpp: 値番号付きオペランドの妥当性を検証する条件を追加(+13行)。RBO relop書き換え前に、値番号オペランドが実際のツリーオペランドと対応することを確認してから最適化を実行するよう変更
  • src/tests/JIT/opt/RedundantBranch/RedundantBranchSimplify.cs: 両方向の関係演算子に対するマテリアライズされた述語のリグレッションテストを追加(+50行)

パフォーマンスへの影響

影響なし。この変更は最適化を保守的にスキップする検証チェックの追加であり、既存の最適化の適用を制限するものです。SuperPMI検証では987,559の成功したコンパイルで新しいリグレッションケース以外にコード生成の変更は検出されていません。

関連Issue

  • #133621 (オリジナルPR)
  • #133558 (報告されたリグレッション)
  • #127181 (redundant-branch relop simplificationの導入)

その他

  • このリグレッションは.NET 11 RC2で発生;.NET 8, 9, 10は正常に動作
  • リスク評価: 低 。最適化の前に値番号検証を追加するのみで、保守的な実装
  • 全35個のJIT.opt RedundantBranchSimplifyテストがパス
  • Windows x64 Checked SuperPMIで908件の同一ミスを含む検証完了

#134344 [release/11.0] Validate store-coalescing constants before modifying IR

概要

JIT コンパイラのストア合体最適化において、定数検証を IR 変更前に実行するように修正しました。これにより、サポートされていない定数の組み合わせで IR が部分的に変更されたままになる問題を防ぎます。具体的には、Vector64.CreateScalar((sbyte)-1) が <-1, -1, ...> ではなく <-1, 0, ...> を生成する問題や、Vector2 定数上での狭い書き込みで不正なコード生成が発生する回帰を修正しました。

変更内容

  • src/coreclr/jit/lower.cpp: ストア合体の定数検証ロジックを再構成。定数抽出と SIMD 検証を IR の破壊的な変更(前の store 削除や現在の store 拡張)より前に実行するよう変更。サポートされていない組み合わせは元の store を保持するように修正(+22/-13)
  • 回帰テスト追加: Vector64.CreateScalar と Vector2 定数に関連する負の値や境界値のテストケースを追加(Runtime_133746.cs、Runtime_133746.csproj、Runtime_133746_nohw.csproj)

パフォーマンスへの影響

影響なし。既存のスカラー定数抽出とSIMD検証を前倒しするだけで、新しい最適化を追加したり、既存のパッキングとアトミック性のロジックを変更したりしていません。サポートされている 4 つのケースでは合体前後で同一のニーモニックコード(27、55、19、21 バイト)を確認済み。

関連Issue

#133746

その他

  • 回帰の性質: .NET 11 開発中に PR #126562(2026年4月27日マージ)で導入された回帰。.NET 10 ではこのローカルフィールドストア合体パスが存在しないため、.NET 10 向けの回帰ではありません
  • 検証状況: Windows x64 CoreCLR で検証済み。ARM64 実行未実施。リリースブランチの CI 実行待機中
  • リスク評価: 低。既存の最適化ロジックの順序を変更するのみで、破壊的な変更ではありません

#134340 Fix typo from occured tooccurred

概要

コメント内のタイポ「occured」を正しい英語「occurred」に修正するPull Requestです。複数のセキュリティおよびテキスト処理関連のファイルにおけるスペル修正です。

変更内容

  • src/libraries/Common/src/System/Security/Cryptography/MLDsa.cs: コメント内のタイポ修正(1行)
  • src/libraries/System.Private.CoreLib/src/System/Text/CompositeFormat.cs: コメント内のタイポ修正(1行)
  • src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCng.Windows.cs: コメント内のタイポ修正(1行)
  • src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2Collection.cs: コメント内のタイポ修正(3行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更はコメント内のスペル修正のみであり、機能コード、公開API、ランタイム動作への影響はありません。


#134338 Fix typo from senario to scenario

概要

コード内のコメント部分に存在するタイポ「senario」を正しい綴り「scenario」に修正しました。

変更内容

以下の3ファイルのコメント内でタイポを修正:

  • src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementCollection.cs - 1箇所修正
  • src/libraries/System.Data.Common/src/System/Xml/XPathNodePointer.cs - 2箇所修正
  • src/libraries/System.Private.Xml/src/System/Xml/Dom/XmlNodeReader.cs - 2箇所修正

パフォーマンスへの影響

影響なし

関連Issue

#134338

その他

なし


#134336 Fix typo from Metdata to Metadata

概要

System.ComponentModel.TypeDescriptor.cs内のコメントに存在するMetdataというタイポをMetadataに修正しました。

変更内容

  • src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs
    • コメント内のタイポ修正:Metdata → Metadata(4箇所)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

なし


#134333 Fix typo from transaciton to transaction

概要

コメント内のタイポ「transaciton」を「transaction」に修正するPull Requestです。System.Transactions.Localライブラリの複数のファイルで発生していたスペリングエラーを統一的に修正しています。

変更内容

  • InternalTransaction.cs: コメント内のタイポを1箇所修正
  • OletxTransaction.cs: コメント内のタイポを3箇所修正
  • OletxVolatileEnlistment.cs: コメント内のタイポを1箇所修正

パフォーマンスへの影響

影響なし

関連Issue

#134333

その他

なし


#134332 Fix typo from conatains to contains

概要

System.ComponentModel.Composition ライブラリのコメント内における綴り間違い(conatains → contains)を修正しています。

変更内容

  • src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.Traversal.cs
    • コメント内のタイポを修正(4行削除、4行追加)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

コメントのみの変更であり、機能的な動作変更は含まれません。


#134331 [release/11.0] Disable file locking by default on iOS and tvOS

概要

iOS および tvOS プラットフォームでファイルロックをデフォルトで無効化する変更のバックポート。iOS上で実行中のアプリケーションがファイルロックを保持したままバックグラウンドに移行するとOSによって強制終了される問題(#133697)に対応します。この動作はMonoの実装に合わせるもので、Monoではファイルシステム上のファイルロックを実装していませんでした。

変更内容

  • SafeFileHandle.Unix.cs: Unix/iOS/tvOS向けのセーフハンドル実装でファイルロック無効化ロジックを追加
  • FileLockingDefaults.cs: iOS/tvOS上でのファイルロックのデフォルト動作を制御するテスト用設定ファイルを新規追加
  • テスト修正: 複数のテストプロジェクト(IsolatedStorage、MemoryMappedFiles、Composition、Reflection)でiOS/tvOS環境でのファイルロック動作を考慮した調整
  • テストプロジェクト設定: DisabledFileLockingTests関連のプロジェクト設定を更新

パフォーマンスへの影響

影響なし

関連Issue

#133697(顧客報告)、#134060(オリジナルPR)

その他

  • 破壊的変更: .NET 11で記録される予定。Monoと異なり、CoreCLRは同一プロセス内のファイルロック機能を実装しなくなります。ただしこの動作に依存するアプリケーションは極めて稀と考えられています。
  • リスク評価: 低リスク。Monoの動作に合わせるため、既存の互換性リスクは限定的です。
  • テスト: 顧客シナリオでの手動検証および全CI実行で確認済み

#134325 JIT: Set profile flag on async OSR jump blocks

概要

JITコンパイラのAsync変換処理におけるプロファイル重み付けの不整合を修正します。OSRジャンプブロック(非同期再開用)を作成する際に、プロファイル重み付けフラグ(BBF_PROF_WEIGHT)を適切に設定することで、stress条件下でのテール・アウェイト・オンリーメソッドのプロファイルブックキーピング保持を実現します。

変更内容

  • src/coreclr/jit/async.cpp: CreateOSRJumpBB関数内で、プロファイル重み付けが有効な場合(fgIsUsingProfileWeights()がtrue)にBBF_PROF_WEIGHTフラグを新規作成ブロックに設定。呼び出し側のCreateResumptionSwitchにおける冗長なinheritWeightPercentage(..., 0)割り当てを削除。

パフォーマンスへの影響

影響なし。この変更はプロファイル重み付けの正確性を保証するもので、実行時パフォーマンスの改善・低下を伴わない修正です。

関連Issue

#133841

その他

この修正により、プロファイル重み付けを使用したコンパイル中にasync変換が行われるときのJIT debug invariant違反を回避できます。冷ブロック化(bbSetRunRarely())と組み合わせて、ブロック重み付け検証アサーションの失敗を防止します。


#134321 Improve ComparerHelper.CreateDefaultEqualityComparer

概要

ComparerHelpers.CreateDefaultEqualityComparerにおいて、Nullable<T>の基盤型を取得する際にGetGenericArguments()からGetNullableUnderlyingType()へ変更しました。これにより、閉じたNullable<T>型のイコールコンパレーター作成時のジェネリック引数配列の割り当てを回避し、#126905で導入されたAPIを活用しています。

変更内容

  • src/coreclr/System.Private.CoreLib/src/System/Collections/Generic/ComparerHelpers.cs: Nullable<T>の基盤型取得ロジックをGetGenericArguments()[0]からGetNullableUnderlyingType()へ変更(1行追加、2行削除)

パフォーマンスへの影響

大幅な改善を実現:

  • Nullable型での改善: Nullable<int>, Nullable<long>, Nullable<DateTime>, Nullable<DayOfWeek>いずれも16~17%の実行時間短縮(約161ns → 130ns)
  • メモリ割り当て削減: Nullable型での割り当てが120Bから88Bへ27%削減(配列割り当て回避による効果)
  • 非Nullable型への影響: int, long, stringでは変化なし(約1%以内の誤差範囲)

ベンチマーク結果より、このPRはNullable型に対して実行時間・メモリの両面で顕著な改善をもたらします。

関連Issue

#126905

その他

変更は内部実装(ComparerHelpers)に限定され、公開APIには影響がありません。互換性への懸念はありません。


#134310 [release/11.0] KEM support for EnvelopedCms

概要

.NET 11向けにEnvelopedCmsに量子耐性アルゴリズム(ML-KEM)のKEM(鍵カプセル化メカニズム)サポートを追加するバックポートです。既存機能への影響は最小限で、新たにKEM方式による暗号化・復号化機能をサポートします。

変更内容

  • 公開API追加: EnvelopedCmsにKemEncrypt()メソッドとKemDecrypt()メソッドを追加、新クラスKemRecipientInfoと更新されたCmsRecipientを導入
  • ASN.1スキーマ追加: KemRecipientInfoAsn、CmsOriForKemOtherInfoAsn、OtherRecipientInfoAsnのASN.1定義と自動生成コードを新規追加
  • 内部実装: ManagedPal.Kem.cs(368行)で新しいKEM処理ロジック、DecryptorPal.csとManagedPal.Decrypt.csで既存復号化処理の拡張
  • OID管理: ML-KEM関連のOIDをOids.csに追加
  • プロジェクト設定: PKCS関連プロジェクトファイルの依存関係調整
  • 属性定義: UnionAttributeおよびIUnionインターフェースのバージョン更新

パフォーマンスへの影響

影響なし

関連Issue

#133046

その他

  • リスク評価: Low - 新機能追加であり既存機能への変更は最小限
  • 互換性: 破壊的変更なし。既存テストの継続実行と新しいKEM機能に関するテストが追加済み
  • 内部テスト報告のバグ修正・機能追加で、ユーザーからの報告ではありません
  • Windowsプラットフォーム対応も含まれています

#134289 [release/11.0] Add Composite ML-KEM certificate key accessors

概要

Composite ML-KEM証明書キーアクセサーを追加するPull Requestです。これはrelease/11.0ブランチへのバックポートであり、新しいPost-Quantum Cryptography (PQC) APIを導入します。

変更内容

  • X509CertificateKeyAccessors.cs: Composite ML-KEM証明書キーアクセサーの実装を追加(+148行)
  • System.Security.Cryptography.cs: 新しいアクセサーのパブリックAPI定義を追加(+6行)
  • X509Certificate2.cs: X509Certificate2クラスへのComposite ML-KEM関連メソッドを追加(+102行)

パフォーマンスへの影響

影響なし

関連Issue

#134259

その他

  • 新規API追加のため、後方互換性への影響なし
  • リスク評価:Low(新APIのため既存機能への影響なし)
  • リグレッション:なし

#134279 JIT: Preserve exceptions during jump threading

概要

JIT の Jump Threading 最適化でコード削除時に例外が失われる問題を修正します。支配的な比較が削除される例外セットをカバーすることを要求し、冗長なブランチをスレッド化する際に例外を保持します。DivideByZeroException が誤って削除されるリグレッション問題に対応しています。

変更内容

  • redundantbranchopts.cpp: Jump threading 時に例外セットの妥当性をチェック。支配的な比較が削除されるブランチの例外セット全体をカバーしていない場合、最適化を適用しないガード条件を追加
  • compiler.h: Jump threading の例外検証ロジックをサポートするヘルパー関数シグネチャを更新
  • RedundantBranchDominating.cs: DivideByZeroException が失われる問題の回帰テストを追加

パフォーマンスへの影響

SuperPMI 測定によると、42 の 2,801,860 個のコンテキストで変更が発生し、合計 +308 バイトのコード増加。ガード条件の追加により若干のコード増加がありますが、正確性の確保を優先した適切なトレードオフです。

関連Issue

#133982

その他

Windows x64 Checked JIT ビルドで検証済み。RedundantBranch 関連の 7 つのテストが合格しており、スタンドアロン再現テストで DivideByZeroException が正しくスローされることが確認されています。


#134267 [release/11.0] Remove open delegate Equals fastpath

概要

デリゲートのパフォーマンス最適化により導入された回帰を修正します。異なる仮想メソッドをターゲットとするデリゲートが同じスロットを指していた場合、Delegate.Equalsが誤ってtrueを返していた問題を解決します。

変更内容

  • src/coreclr/System.Private.CoreLib/src/System/Delegate.CoreCLR.cs: オープンデリゲートのEqualsFastpathを削除(8行削除)
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DelegateTests.cs: 回帰テストを追加(12行追加)

パフォーマンスへの影響

Fastpathの削除により、Delegate.Equalsの処理が若干遅くなる可能性があります。ただし、このFastpathが不正な結果を返していたため、正確性を優先した修正です。

関連Issue

#134224(オリジナルの修正PR)

その他

  • 内部で検出された問題で、顧客報告ではありません
  • release/11.0へのバックポートです
  • 修正リスクは低く評価されています
  • デリゲートパフォーマンス改善に伴う回帰修正のため、以前のパフォーマンス最適化の副作用を除去する形での対応です

#134223 [release/10.0] Fix GC on Windows with multiple CPU groups

概要

Windows上の複数CPUグループに対応したGC処理の不具合を修正するバックポート。非ゼロプロセッサグループで実行されているプロセスが、動的に割り当てられたGCプロセッサ-ヒープマッピング外のパックされたプロセッサインデックスを使用し、ヒープ破損を引き起こす問題を解決します。GC初期化時にプロセッサグループ数をキャッシュおよび検証し、最大プロセッサグループインデックス空間に対応したマッピングとアフィニティセットのサイジングを行います。

変更内容

  • src/coreclr/gc/windows/gcenv.windows.cpp: GCランタイムのWindowsプロセッサ容量初期化処理とアフィニティメモリ割り当てロジックを更新
    • Windowsプロセッサグループ数の動的キャッシング・検証機構を追加
    • GCマッピング・アフィニティストレージサイズを最大プロセッサ空間に対応させる

パフォーマンスへの影響

影響なし(メモリ割り当て領域の拡大はシステム安定性のための必要な変更)

関連Issue

#134127(main ブランチへの修正)、#131740(回帰の原因)

その他

  • 対象バージョン: release/10.0(バックポート版)
  • リスク評価: Low(main ブランチですでにマージされた直接的なバックポート)
  • 複数の1st partyカスタマーから独立して報告されたGCヒープ破損の問題に対する修正
  • 検証環境: checked x64 CoreCLR ランタイムでビルド確認済み
  • 内部実装の修正で、公開API への影響なし

#134216 [release/11.0] Fix GC on Windows with multiple CPU groups

概要

Windows上で複数のCPUグループを持つシステムにおいて、非ゼロのプロセッサグループで実行されるプロセスがGCプロセッサ・ツー・ヒープマッピングを超える範囲にアクセスする問題を修正します。この問題は、GC CPU-groupサポートが無効な場合にヒープ破損を引き起こす可能性がありました。修正は、関連するマッピングとアフィニティセットを最大の可能なプロセッサグループインデックス空間に合わせてサイズ変更し、GC OS初期化中にWindowsプロセッサグループ数を検証・キャッシュします。

変更内容

  • src/coreclr/gc/windows/gcenv.windows.cpp: Windowsプロセッサグループ対応の修正(+13/-2行)
    • GCプロセッサ・ツー・ヒープマッピングの割り当てサイズを最大プロセッサグループインデックス空間に対応させた
    • Windows プロセッサグループ数の検証とキャッシュを追加

パフォーマンスへの影響

影響なし。本修正は割り当てサイズの調整による安全性向上のみで、実行速度やメモリオーバーヘッドの増加は最小限です。

関連Issue

#134127、#131740

その他

  • 本PR はメインブランチへのマージ済み修正(#134127)のrelease/11.0への逆移植版です
  • 複数の1st party顧客から独立して報告されたリグレッション(#131740により発生)の修正です
  • リスク評価:低。変更は割り当て容量の増加とトポロジAPI検証のみで、既存の初期化ロジックを安定させています

#134212 Fix Android NativeAOT template for updated memory safety rules

  • 作成者: @agocke
  • 作成日時: 2026年09月18日 19:00:56(UTC)
  • マージ日時: 2026年09月21日 18:53:15(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

Android NativeAOT テンプレートを更新メモリ安全性ルール(updated-memory-safety-rules)に対応させるための修正です。System.Text.Json のソース生成テストがこのルールを有効にした後、Android NativeAOT ビルドが失敗していました。型レベルの unsafe コンテキストを、ポインタ操作を直接行うブロックに移動し、ネイティブインポートに明示的な unsafe 契約を追加することで対応しました。レガシー規則との互換性は維持されます。

変更内容

  • src/tasks/AndroidAppBuilder/Templates/monodroid-nativeaot.cs
    • 型レベルの unsafe コンテキストをポインタ操作のブロックスコープに局所化
    • LibraryImport/DllImport などのネイティブインポート宣言に unsafe 修飾子を追加
    • JNI ヘルパー型の調整

パフォーマンスへの影響

影響なし

関連Issue

#134212

その他

検証済み項目:

  • ./build.sh tasks の実行
  • レガシーメモリ安全性ルールでのテンプレートコンパイル
  • 更新メモリ安全性ルールでのテンプレートコンパイル
  • 更新メモリ安全性ルールでの SINGLE_FILE_TEST_RUNNER パスのコンパイル

注記: Copilot レビューでは、ポインタ型をポインタ操作専用の型に適切に配置することについて指摘がありますが、提供されたPR説明では既に対応済みとされています。


#134204 [release/11.0] Defer WinHTTP HTTP/2 loopback connection closure until server disposal

概要

WinHTTP HTTP/2 loopback接続のクローズをサーバー破棄時まで遅延させるための変更です。これはテストのみの変更で、CI実行時のノイズを削減することを目的としています。

変更内容

  • Http2LoopbackConnection.cs: 接続クローズロジックを遅延させるための実装追加(+67行)
  • Http2LoopbackServer.cs: サーバー破棄時のクリーンアップ処理を強化(+46行)
  • PlatformHandlerTest.cs: 不要なテストを削除(-1行)
  • WinHttpHandlerTest.cs: 新しいテストケースを追加(+100行)

パフォーマンスへの影響

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

関連Issue

#134181

その他

  • dotnet/runtime release/11.0ブランチへのバックポート
  • テスト実行時のノイズ削減により、CI品質の向上が期待されます

#134184 JIT: Avoid null predecessor dereference after tail duplication

  • 作成者: @Copilot
  • 作成日時: 2026年09月18日 12:30:23(UTC)
  • マージ日時: 2026年09月21日 14:30:25(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITコンパイラのテール複製後に、条件分岐の折り畳み処理でbbPredsの無効参照が発生するバグを修正しました。ハンドラエントリーの最後の実際の前任者がテール複製により削除された場合、人工的なEH参照のみが残り、GetUniquePred(this)で安全に前任者の有無を確認した上でコンパクション処理を実行するよう改善しました。

変更内容

  • src/coreclr/jit/fgopt.cpp:fgUpdateFlowGraph内のコンパクション処理を、GetUniquePred(this)を使用して前任者が存在する場合のみ実行するように修正(2行変更)
  • src/tests/JIT/Regression_ro_2/Runtime_134006.cs:finallyブロック内のループを含む例外伝播シナリオの回帰テストを追加。ループの両分岐を実行し、例外が正しく伝播し、finallyが正確に1回実行されることを検証

パフォーマンスへの影響

影響なし

関連Issue

#134006

その他

JIT内部実装の修正であり、公開APIへの影響はありません。テール複製最適化後の制御フロー更新処理における安全性向上です。


#134131 Fix use after free in ExecutableAllocator::AllocateThunksFromTemplate()

概要

ExecutableAllocator::AllocateThunksFromTemplate()内でメモリ予約失敗時の使用後解放(use-after-free)脆弱性を修正しました。BackoutBlock()呼び出し直後にNULLを返すことで、解放されたブロックへのアクセスを防ぎます。

変更内容

  • src/coreclr/utilcode/executableallocator.cpp: BackoutBlock()呼び出し後に即座に戻り値を返すように修正(+1行追加)。これにより、実行可能メモリの予約失敗時に解放済みブロックへのアクセスを防止。変更パターンは、同ファイル内の他の3つのBackoutBlock()呼び出し元と統一。

パフォーマンスへの影響

影響なし

関連Issue

#134128

その他

この修正は、実行可能メモリアロケータ(JITコンパイラがサンク生成時に使用)における重大なメモリ安全性の問題を解決します。内部実装(coreclr)の修正で、公開APIに影響はありません。


#134076 [wasm][coreclr] Re-enable Regression3_Regressions for interpreter

概要

browser-Wasm CoreCLR インタープリター環境で Regression3_Regressions テストを再度有効化します。元の広範なWasm除外条件を、ファイルバックされた実行アセンブリの有無を判定する条件に置き換えることで、インタープリターでテスト実行が可能になりました。Assembly.GetExecutingAssembly().Location が空の場合(現在のbrowser-Wasm ReadyToRun環境)は早期リターンし、それ以外の場合は collectible assembly load context でフル回帰テストを実行します。

変更内容

  • src/tests/JIT/opt/Regressions/Regression3_Regressions.cs: Wasm向けのテストスキップ条件を、ファイルバックされた実行アセンブリの有無を確認する条件に変更(+7/-2)

パフォーマンスへの影響

影響なし

関連Issue

#124219、#134001

その他

  • インタープリターモードおよびティアード コンパイル無効状態でのテスト実行を検証済み
  • browser-Wasm ReadyToRun環境で実行アセンブリロケーションが空であることを確認
  • Copilotレビューでは、空パスリターンの処理(成功報告 vs スキップ)に関する懸念が指摘されています

#134069 [browser] fix two ways a streaming HTTP request/response can hang or orphan its fetch promise

概要

Browser-WASM環境でのHTTPストリーミングリクエスト/レスポンスの2つのハング問題を修正します。

  1. フェッチ失敗時のリクエスト本体書き込みハング: TransformStreamを使用したストリーミング要求本体で、フェッチが拒否されても書き込み側が適切にエラー処理されず、タイムアウト(100秒)まで待機する問題を修正。
  2. レスポンス読み取りキャンセル時の孤立したPromise: キャンセルトークン確認前にPromiseを生成してしまい、孤立したPromiseがUnobservedTaskExceptionを発生させる問題を修正。

修正によりSocketsHttpHandler_ResponseStreamTestでのテスト成功率が67→68に改善(失敗2→1に低減)。

変更内容

  • CoreCLR/Mono HTTP実装 (src/native/libs/.../interop/http.ts, src/mono/browser/runtime/http.ts):

    • フェッチPromiseに対するストリーミング書き込み/クローズ操作をPromise.race()で競争させ、フェッチ失敗時に即座にエラーが伝播するよう修正
    • 書き込み完了前のフェッチ拒否による即座なエラー伝播を実現
  • BrowserHttpInterop/BrowserHttpHandler (C#):

    • CancellationHelperでキャンセル確認時にPromiseが飛行中でも常に待機するよう修正
    • キャンセル確認をPromise生成前に実施し、孤立したPromise発生を防止
  • テスト追加 (HttpCancellationLeakTest.cs):

    • Promise孤立によるキャンセル時のUnobservedTaskExceptionの回帰テストを新規追加
    • HTTP/1.1ストリーミング失敗テスト(BrowserHttpHandler_StreamingRequest_Http1Fails)のActiveIssueを削除

パフォーマンスへの影響

影響なし。本修正はハング解消とタイムアウト削減が目的であり、正常系パフォーマンスに変化なし。

ただしレビューコメントで、大容量ストリーミングアップロード時にPromise状態の無限蓄積可能性が指摘されており、将来的な最適化が推奨されています。

関連Issue

その他

  • 実行環境制限: CoreCLR-wasm + Chrome環境でのみ検証済み。Mono変更は型チェックのみで実行検証未実施。
  • 既知課題: 1.5GB大容量アップロード失敗ケース(#123572)は依然タイムアウト(別署名)のため未対応。
  • レビュー指摘: バッファド応答キャンセルパスのテストカバレッジ不足、大容量ストリーミング時のPromise蓄積リスク、クローズパスの回帰テスト不足を指摘されており、将来改善が推奨されています。

#134060 Disable file locking by default on iOS and tvOS

概要

iOS および tvOS でアドバイザリーファイルロックをデフォルトで無効化する変更です。RunningBoard がファイルロック保持中のサスペンド済みアプリを強制終了する問題(例外コード 0xdead10cc)を回避するため、これらのプラットフォームでは FileStream が暗黙的に取得する flock を無効にします。Mac Catalyst と他のすべてのプラットフォームの動作は変わりません。System.IO.DisableFileLocking=false(または DOTNET_SYSTEM_IO_DISABLEFILELOCKING=0)を設定することで、ユーザーはロック動作を復元できます。

変更内容

コアロジック変更:

  • SafeFileHandle.Unix.cs の DisableFileLocking デフォルト値判定を修正。iOS/tvOS(シミュレータ含む)でロックを無効化:
    defaultValue: (OperatingSystem.IsIOS() && !OperatingSystem.IsMacCatalyst()) || OperatingSystem.IsTvOS()
    
    Mac Catalyst は OperatingSystem.IsIOS() の結果から明示的に除外

テスト変更:

  • iOS/tvOS での既定動作を検証する新規テスト FileLockingDefaults.cs を追加
  • System.Reflection、System.IO.IsolatedStorage、System.IO.MemoryMappedFiles、System.ComponentModel.Composition のファイルロック依存テストを PlatformDetection.IsFileLockingEnabled で条件付け化
  • Browser/WASI スキップ属性を削除し、より一般的な条件チェックに統一

動作変更: iOS/tvOS では FileShare 強制が無効化:FileShare.None で開いたファイルへの二度目のオープンが失敗しなくなり、IOException が発生しません。

パフォーマンスへの影響

影響なし(ロック取得・開放のオーバーヘッド削減による若干の改善の可能性はありますが、具体的な数値なし)

関連Issue

#133697

その他

互換性への影響: iOS/tvOS でのプロセス間・ハンドル間の FileShare 語義が変更される破壊的変更です。既存の FileShare 強制に依存するコードは System.IO.DisableFileLocking=false 環境変数で動作を復元できます。

レビュー指摘: Copilot レビューにて、Mac Catalyst での明示的なロック有効確認テストの欠落と、FileShare.None を使用した実装動作検証テストの不足が指摘されています。


#133976 Validate store-coalescing constants before modifying IR

概要

JIT コンパイラの LowerStoreCoalescing 機能における重大なバグを修正しました。定数の検証をIR変更前に実施することで、定数結合に失敗した場合にバイト幅の格納が不正な幅にまで拡大される問題を解決しています。

変更内容

  • src/coreclr/jit/lower.cpp: スカラー定数抽出とSIMD定数の検証ロジックを、ストア命令の削除および拡大処理よりも前に移動。未サポートの定数組み合わせは元のストア命令を保持し、サポートされる組み合わせは既存のパッキングとアトミック性の扱いを維持。
  • src/tests/JIT/Regression_2/Runtime_133746/: リグレッション テストを追加(Vector2 定数上への狭い書き込みと符号付き Vector64.CreateScalar 値を対象)。標準構成とハードウェア内部関数を無効化した構成の両方をカバー。

パフォーマンスへの影響

影響なし。既存の4つのコアレッシング関連メソッドのディスアセンブリはすべて修正前後で変わらず(27、55、19、21バイト)。パフォーマンス最適化ではなく、正確性の修正です。

関連Issue

#133746

その他

  • 修正の検証はWindows x64 CoreCLRで実施(標準JITおよびクロスターゲットJITビルド、両方のリグレッション構成、AVX2無効実行、16個の既存構造体昇格テスト)。JITフォーマッティングはパス。
  • ARM64実行は実施されていません。
  • 本修正は CreateScalar をスペシャルケースするのではなく、リジェクトパスを正しく修正するアプローチを採用しています。

#133972 [release/11.0] [mono][llvm] Fix malformed uaddlp/saddlp intrinsic declarations

概要

Mono/LLVM向けのuaddlp/saddlp組み込み関数の宣言が不正な形式であった問題を修正します。iOS/tvOS プロジェクトでLLVMが有効化されている場合にビルド失敗が発生していました。LLVM v23で追加された検証により、2021年から存在していたバグが顕在化したもので、System.Private.CoreLib.dllの特定APIがLLVM コンパイルされる場合に影響します。

変更内容

  • src/mono/mono/mini/llvm-intrinsics.h: uaddlp/saddlp組み込み関数の宣言を修正(5行追加、2行削除)

パフォーマンスへの影響

影響なし

関連Issue

#132744 のバックポート
#129299(LLVM v23への更新)

その他

  • リグレッション: 既知のリグレッション。バグ自体は2021年に導入されていましたが、LLVM v23の検証機能により初めて検出されました
  • テスト: dotnet/macos の既存テストで検出・確認済み
  • リスク: 低リスク。Mono/LLVM コードパスのみに影響する小規模で限定的な修正
  • .NET 11での位置づけ: .NET 11ではMonoは公式サポート対象外ですが、バックアップオプションとしての viability維持のためのバックポート

#133959 [release/10.0] Backport Helix job monitor

概要

release/10.0ブランチへのHelix Job Monitor統合のバックポート。main/release/11.0から既存のモニタリング機能と関連する修正(空ステージ対応、条件付き有効化、パラメータ転送、パフォーマンスモニタリング、認証情報処理など)をバックポート。CI インフラストラクチャのみの変更で、製品ランタイムへの影響はなし。Microsoft.DotNet.Helix.JobMonitor 10.0.0-beta.26461.103を採用し、既存のSDK・Arcadeテンプレート・キュー・ジョブレイアウトは保持。

変更内容

  • 依存関係ピンニング: eng/Version.Details.xml/.propsでHelix Job Monitorを登録し、.config/dotnet-tools.jsonでツールを定義
  • MSBuild設定: src/libraries/sendtohelix.projでモニター設定を子プロジェクトに転送、send-to-helix-step.ymlでMSBuildプロパティを追加
  • パイプライン有効化: runtime、CoreCLR、libraries、WASM、installer、performance、extra-platformsなど複数のパイプラインYAMLで監視を有効化(計68ファイル)
  • グローバル設定: common/variables.ymlにモニター切り替えトグルを追加
  • スケジュール済みlibrariesアウターループ: release/10.0の既存ポリシー(警告のみ)を維持

パフォーマンスへの影響

影響なし。CI基盤の変更のため、製品の実行時パフォーマンスには影響なし。

関連Issue

#129690、#132150、#131969、#132019、#132882、#132884、#133002、#132807、#133480、#133633、#133688、#133885

その他

Copilot指摘の重要な懸念事項:

  • 公開パイプラインでのトークン解決問題:HelixApiAccessTokenがundefinedの場合、未解決トークンが渡されモニターが失敗する可能性。内部プロジェクトでのみトークンを使用し、公開実行では空文字列をわたす必要がある
  • ステージング PR対応:サステージング PRではHeli個削除送信ジョブがshouldContinueOnErrorに設定されるため、独立したモニターのcontinueOnError: false設定と競合し、意図しない失敗を引き起こす可能性
  • WASI AOTブロック:モニター有効化されているが、サブミッター自体はshouldContinueOnError: trueのため、ポリシー不一致

#133938 [release/11.0] Fix internal Helix pipeline credentials and queue selection

概要

このPRは、release/11.0ブランチへの3つのHelixパイプライン修正のバックポートです。内部PR実行時のモニター認証情報の利用可能化、macOS/Appleキューの明示的な選択、およびWASIランタイムテストへのCoreCLRキューセレクタの適用が含まれます。パイプラインYAMLのみの変更であり、製品ビルドは含まれません。

変更内容

  • runtime.yml / performance/perf.yml: 内部PR実行時にHelixモニター認証情報を利用可能にするための認証情報ガード条件を追加
  • libraries/helix-queues-setup.yml: ライブラリジョブのmacOS/Appleキューエイリアスを明示的に選択
  • installer/helix-queues-setup.yml: インストーラージョブのmacOS/Appleキューエイリアスを明示的に選択
  • coreclr/templates/helix-queues-setup.yml: WASIランタイムテストへのパブリック/内部キューセレクタの適用
  • wasi-wasm-coreclr-runtime-tests.yml / wasi-wasm-coreclr-build-only.yml: CoreCLRキューマッピングの参照を更新

パフォーマンスへの影響

影響なし

関連Issue

  • #133885: Helixモニター認証情報の内部PR実行への対応
  • #133704: macOS/Appleキューエイリアスの明示的な選択
  • #133878: WASIランタイムテストのキューセレクタ

その他

  • バックポート時にrelease/11.0の特性を保持:Windowsキューリテラルおよびすべてのコンテナイメージダイジェストを維持、Windowsエイリアス変更と新しいテストレーン、キューバージョンアップグレードは除外
  • YAML解析および公開/内部キューマッピングの確認は完了
  • パイプラインの実行による検証は未実施(Copilotから「Needs a closer look」との指摘)
  • Azure DevOpsテンプレート展開・実行の検証はCIで実施予定

#133937 [release/11.0] Source code updates from dotnet/dotnet

概要

dotnet/dotnetリポジトリからのコードフロー更新PRです。release/11.0ブランチに対して、2026年9月16日時点のビルド(20260915.8)からソースコードと依存関係の更新が自動的に取り込まれています。主にコンパイラ、ビルドツール、ランタイムコンポーネント、LLVM、Node.jsランタイムなどの複数の依存パッケージが更新されています。

変更内容

  • バージョン管理ファイル: eng/Version.Details.props、eng/Version.Details.xml、eng/Versions.props、global.jsonが更新され、複数の依存パッケージバージョンが変更
  • ビルド構成: eng/common/core-templates/job/配下のヘリックスジョブ監視、ワンロックビルド、ヘリックス送信設定を更新
  • ツール構成: .config/dotnet-tools.jsonを更新
  • ネイティブAOT: src/coreclr/nativeaot/BuildIntegration/Microsoft.DotNet.ILCompiler.SingleEntry.targetsの12行が更新

更新された主要依存パッケージ:

  • Microsoft.CodeAnalysis関連(5.12.0-1.26457.102 → 5.12.0-1.26465.108)
  • Microsoft.DotNet.Arcade.Sdk関連(11.0.0-beta系)
  • System.Reflection.Metadata、System.Text.Json(11.0.0-rc.2系)
  • NuGet.*.パッケージ(7.12.0-rc系)
  • LLVM関連パッケージ(23.1.0-alpha系)
  • Node.jsランタイム関連(11.0.0-alpha系)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本PRはMaestro自動化システムによるコードフロー更新です。複数のリポジトリ(arcade、aspnetcore、diagnostics、efcore、fsharp、msbuild、nuget.client、roslyn、runtime、sdk、winforms、wpf等)の変更が含まれています。


#133924 [wasm] Use instantiating stubs for default interface dispatch

概要

WebAssembly(Wasm)ReadyToRun環境でのデフォルトインターフェース メソッド ディスパッチを修正するPRです。インスタンス化スタブ(instantiating stub)を使用して、共有デフォルト実装へのディスパッチ時にジェネリック インターフェース コンテキストを正しく供給しながら、呼び出し元の通常のABIを保持します。

変更内容

  • CorInfoImpl.ReadyToRun.cs: Wasm環境のCORINFO_VIRTUALCALL_LDVIRTFTNパスにおいて、ジェネリック以外のデフォルトインターフェース メソッドに対してインスタンス化スタブの選択ロジックを追加(内部実装変更)
  • ComplexHierarchyPositive.cs: ブラウザ環境の ReadyToRun テストに対する除外スキップを削除し、テストカバレッジを再有効化

パフォーマンスへの影響

影響なし

関連Issue

#133466

その他

  • テスト実行結果: browser-wasm Checked ReadyToRun ComplexHierarchyPositive でexit code 100で成功
  • 変更はWasm ReadyToRun環境でのインターフェース ディスパッチの修正であり、通常の.NET実行環境への影響なし
  • CopilotレビューにおいてApproval recommended評価を取得

#133801 JIT: Fix zero-flag reuse for BSF/BSR

  • 作成者: @EgorBo
  • 作成日時: 2026年09月12日 21:23:05(UTC)
  • マージ日時: 2026年09月21日 19:40:09(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITコンパイラにおいて、BSF(ビット走査前方)およびBSR(ビット走査後方)命令の実行結果に基づくゼロフラグの再利用が誤って発生していた問題を修正します。これらの命令のゼロフラグは結果比較に使用してはいけないため、フラグ再利用ロジックから除外する変更です。

変更内容

  • src/coreclr/jit/emitxarch.cpp: BSF/BSR命令をゼロフラグ再利用の対象から除外(+12/-6)
  • src/coreclr/jit/emitxarch.h: ゼロフラグ検出ヘルパー関数の宣言を更新(+1/-1)
  • src/coreclr/jit/gentree.cpp: 結果ベースのゼロフラグ検出ロジックを更新(+2/-1)
  • src/tests/JIT/Regression_ro_2/Runtime_133783.cs: 32ビット・64ビット操作をカバーする回帰テストを新規追加(+46)

パフォーマンスへの影響

影響なし。本変更は正確性の修正であり、パフォーマンス特性に変更はありません。

関連Issue

#133783

その他

  • 変更は内部実装(JITコンパイラのフラグ分析)に限定され、公開APIには影響なし
  • 破壊的変更ではなく、既存の誤った最適化を正しく修正するもの
  • レビュワーから、テストがBSF/BSR命令を確実に実行するための明示的な設定が必要との指摘がありますが、当のプルリクエストは承認推奨段階に到達しています

#133690 JIT: Generalize entry-block parameter register rewriting to all blocks

概要

JITのFindInducedParameterRegisterLocals変換をエントリブロック限定から一般化し、全ブロック対応の制御フロー認識型リライティングに拡張しました。パラメータフィールド読み込み、書き込み、アドレス使用をrationalization フェーズ中に記録し、キル伝播を通常後続、EH後続、ループバックエッジ全体で追跡。正規化後、到達パスがすべてパラメータの入力値を保持する場合のみフィールド読み込みを書き直し、ブロック内の読み込み前キル順序を尊重します。

変更内容

  • rationalize.h/cpp (新規実装): パラメータ使用追跡状態と支援機能を追加。CFG認識型記録、キル伝播、フィールド書き直しロジックを実装
  • lower.cpp/h (削減): エントリブロック検出および不要な再利用ヘルパーを削除(プロモーション映像は保持)
  • asyncanalysis.cpp (更新): パラメータレジスタ対象を初期化済みパラメータとして扱う
  • promotion.cpp (参照更新): 抽出ロジック参照を更新

パフォーマンスへの影響

懸念点あり: 新しいループは読み込みとキルを持つパラメータごとにCFG到達可能性の完全走査を実行するため、O(パラメータ数 × CFG規模)のコスト増加が発生する可能性があります。大規模メソッドでのJITコンパイル時間/スループット測定が必要です。

パラメータ追跡配列の割り当てと局所利用ブックキープがすべての最適化メソッドで有効化される過度な負担の懸念もあります。

関連Issue

なし

その他

レビュー指摘事項(未解決):

  1. 回帰テスト不足: 後続ブロック/ハンドラ読み込み、ループ/バックエッジキル、読み込み前キル順序を網羅する回帰テストの追加が必須
  2. CFG キル伝播: 経路依存の書き直し変換の正確性がEH後続、ループバックエッジ、非順序な先行ブロックに依存するが、テストカバレッジが不足
  3. 追跡オーバーヘッド: 候補適格性の事前スキャンがないため、引数を持つすべての最適化メソッドでトラッキングが有効化される
  4. 暗黙参照パラメータ: 処理除外の必要性が指摘されている

物理プロモーションの早期リードバックは変更なし。コール跨域のパック値保持可能性は後続作業。


#133656 [browser][CoreCLR] Enable trimmed ReadyToRun library-test CI

概要

WebAssembly上のブラウザ向けCoreClRライブラリテストにReadyToRun(R2R)対応を追加し、積極的なトリミングを有効にするCI環境を構築するPR。既存のブラウザトリミング設定と記述子を活用し、インタプリタレーンと別のLibraryTestsCoreCLR_R2R専用CIレーンを追加。テスト用スコープのTestWasmReadyToRunプロパティを導入し、グローバルなPublishReadyToRun=trueがホスト側ビルドツールに波及するのを回避します。

変更内容

  • R2R/トリミング設定の導入:テストスコープのTestWasmReadyToRunを追加し、R2R公開とトリミングプロパティをHelix投入時に同じく渡す
  • CI設定更新:runtime.ymlとruntime-extra-platforms-wasm.ymlに新規R2Rレーン追加(タイムアウト480分)
  • 関数テーブル順序の修正:WasmVirtualDispatchThunkNodeをコンパイル済みメソッドと遷移thunk後に移動させ、WebAssemblyの非同期resume fixupsが正しく生成されたR2R resumeスタブを参照できるように修正
  • WebCIL/R2R検証:ConvertDllsToWebCil.csでR2Rメタデータの妥当性検査、WebcilReader.csのメタデータリーダー廃棄修正
  • テスト検疫と対応:PlatformDetection.IsWasmReadyToRunを使用したブラウザ/WASI対象の検疫、TestUtilities.dllのみ解釈保持、他はR2R化
  • ドキュメント追加:ローカルワークフロー手順をtesting-wasm.mdに記載

パフォーマンスへの影響

関数テーブル順序の修正は決定論的なテーブル配置のみ変更し、定常状態のディスパッチコストへの影響なし。R2R化による実行速度向上については数値的な主張なし。

関連Issue

#133193、#133378、#133639、#133707、#133649、#133768、#133547、#133146、#133614、#133618、#134145、#133627

その他

  • 検疫の状態:4件の既知制限が残存。TestUtilities.dll解釈維持、静的デリゲート構造体戻り値テスト除外、StateMachineAsync V1呼び出しスタック特定メソッド除外、`RuntimeAsync

#133602 Add incremental chunked reading to CborReader

概要

CborReaderに段階的チャンク読込モードを追加し、呼び出し側がI/O制御を担当してデータを複数バッファで供給可能にします。API #129718で承認された機能の実装です。新しいCborReaderState.NeedsMoreData状態が導入され、非最終ブロックモードでは不完全なトークンに対して例外の代わりにこの状態を返すようになります。

public partial class CborReader
{
    public CborReader(ReadOnlyMemory<byte> data, CborReaderOptions? options, bool isFinalBlock);
    public void SlideData(ReadOnlyMemory<byte> data, bool isFinalBlock);
    public void Reset(ReadOnlyMemory<byte> data, bool isFinalBlock);
    public bool TrySkipValue(bool disableConformanceModeChecks = false);
    public bool TrySkipToParent(bool disableConformanceModeChecks = false);
}

変更内容

  • 公開API追加:isFinalBlockパラメータ付きコンストラクタ/Reset、SlideDataメソッド、TrySkipValue/TrySkipToParentメソッド、CborReaderState.NeedsMoreData列挙値を追加
  • PeekState動作更新:非最終モードで不完全なトークンに対してNeedsMoreDataを返却(従来の例外スロー廃止)
  • SlideData実装:バッファを置き換え、ネストング状態を保持。呼び出し側は未読バイト数を新バッファの先頭に保つ必要があります
  • チャンク間スキップ対応:TrySkipValue/TrySkipToParentは非最終モードでfalseを返して再試可能に
  • conformanceモード制限:非最終モードはLax-onlyとしています(他のモードはバッファオフセットで追跡するため、スライド後に無効化)
  • セマンティックタグ処理:タグリーダーはNeedsMoreDataを切り詰めとみなして例外スロー・状態ロールバック
  • マルチトークン読込動作:不定長文字列やReadEncodedValueなどは切り詰めで例外スロー(状態は復元され、呼び出し側がデータを追加して再試可能)

パフォーマンスへの影響

影響なし

関連Issue

#129718

その他

  • 既存コンストラクタとReset(data)(最終ブロックリーダー)の動作は変わりません(後方互換性維持)
  • 非最終モードでルート値の境界で読込時は、従来のInvalidOperationExceptionの代わりにCborContentExceptionがスロー(最終ブロック到着まで列の終了を判定不可)
  • メモリビュー無効化のリスク:SlideDataでバッファを再利用する場合、返却されたメモリビューが無効になる可能性あり(ドキュメント追加)
  • 既知問題(修正対象外):終尾にダングリングタグを持つルート列はFinishedを報告しますが、これは整形式ではありません。既存実装と一貫性のため、インクリメンタルリーダーも同様

#133567 [release/10.0] Guard against empty remote address on macOS accept

概要

macOS上でソケット受け入れ時に空のリモートアドレスが返される場合に対する防御処理を追加するバグ修正。.NET 10で導入された回帰に対処し、エラーが発生した際にリスニングソケットが永続的に破損状態になるのを防ぎます。7人のユーザーから報告されています。

変更内容

  • System.Net.Sockets/Socket.cs: Accept処理時の空のリモートアドレスチェック(+4/-2)
  • System.Net.Sockets/SocketAsyncEventArgs.cs: 非同期受け入れ操作における防御処理の追加(+6/-2)
  • System.Net.Sockets/tests/Accept.cs: このシナリオをカバーする新規テストの追加(+57)

パフォーマンスへの影響

影響なし

関連Issue

#131869(メインブランチのオリジナルPR)

その他

  • .NET 10の回帰修正: .NET 10で導入された問題に対するバックポート
  • リリースブランチ: release/10.0ブランチへのバックポート
  • リスク評価: 低 — エラー条件をチェックして例外を処理するのみ
  • 検証済み: 顧客によってメインブランチのビルドで検証済み

#133566 [release/11.0] Guard against empty remote address on macOS accept

概要

macOS上でリモートアドレスが空の場合にソケット受け入れ時の予期しないエラーを防ぐ修正。.NET 10で導入されたリグレッションを修正し、リスニングソケットが永続的に破損する状態を回避します。7ユーザーから報告されていた問題です。

変更内容

  • System.Net.Sockets/Socket.cs: ソケット受け入れ時に空のリモートアドレス条件をガードするロジックを追加(+4/-2)
  • System.Net.Sockets/SocketAsyncEventArgs.cs: 非同期ソケット操作でのエラーハンドリング強化(+6/-2)
  • System.Net.Sockets/tests/FunctionalTests/Accept.cs: 空のリモートアドレスシナリオをカバーする新規テスト追加(+57)

パフォーマンスへの影響

影響なし

関連Issue

#131869

その他

  • .NET 10で導入されたリグレッションの修正(release/11.0へのバックポート)
  • リスク評価:低い(エラー条件をチェックして例外をハンドルするのみ)
  • macOS(Apple platforms)固有の問題に対応
  • 顧客により検証済み

#133389 [release/11.0] Update dependencies from dotnet/icu, dotnet/runtime-assets

概要

dotnet/icu および dotnet/runtime-assets への依存関係を更新するPull Requestです。

  • Microsoft.NETCore.Runtime.ICU.Transport を 11.0.0-alpha.1.26418.1 から 11.0.0-alpha.1.26469.1 へ更新
  • 16個のテストデータおよびランタイム資産パッケージを 11.0.0-beta.26426.1 から 11.0.0-beta.26462.1 へ更新

変更内容

  • eng/Version.Details.props: 依存関係バージョン情報を更新(+17/-17)
  • eng/Version.Details.xml: 依存関係バージョン詳細を更新(+34/-34)

更新対象:

  • dotnet/icu: Microsoft.NETCore.Runtime.ICU.Transport(ICU国際化ライブラリ)
  • dotnet/runtime-assets: CILStrip、ファジング、テストデータ、ランタイム資産(UnicodeData、TimeZoneData 等)16パッケージ

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは release/11.0 ブランチ向けの依存関係自動更新です
  • dotnet-maestro[bot] による自動生成PRのため、機械的な更新です

#133335 [release/11.0] Update dependencies from dotnet/xharness

概要

dotnet/xharnessへの依存関係を更新するPull Request。Microsoft.DotNet.XHarness.CLI、Microsoft.DotNet.XHarness.TestRunners.Common、Microsoft.DotNet.XHarness.TestRunnersのバージョンを11.0.0-prerelease.26428.1から11.0.0-prerelease.26466.1にアップデートします。

変更内容

  • .config/dotnet-tools.json: dotnet toolsバージョン情報の更新(+1/-1)
  • eng/Version.Details.props: バージョン詳細情報の更新(+3/-3)
  • eng/Version.Details.xml: バージョン詳細情報の更新(+6/-6)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPUは自動化された依存関係更新(dotnet-maestro[bot]による)です。対象はrelease/11.0ブランチで、xharnessビルド332288(2026年9月16日製)に基づいています。


#133184 [release/10.0] Fix generic virtual dispatch hang after multiple AssemblyLoadContext unloads

概要

AssemblyLoadContext(ALC)複数回アンロード後のジェネリック仮想ディスパッチハングを修正するバックポート。 CastCacheとGenericCacheのセンチネルキャッシュ判定ロジックのオフバイワンエラーにより、アンロード可能な型がセンチネルキャッシュに挿入されると、その型が永遠にアンロードできなくなり、ハングを引き起こしていました。

変更内容

  • CastCache.cs: センチネルキャッシュの満杯判定ロジックを修正(+15/-5)
  • GenericCache.cs: セン チネルキャッシュの満杯判定ロジックを修正(+16/-5)
  • テストケース追加: GenericVirtualMethodテストスイート(新規4ファイル)で、複数ALC アンロード後の仮想メソッドディスパッチが正常に動作することを検証

パフォーマンスへの影響

影響なし(バグ修正)。むしろ不正なハング状態を解消することで、パフォーマンスが向上します。

関連Issue

#132562 (Customer reported)

その他

  • ランタイムのキャッシング機構(内部実装)の修正
  • 根本原因:#89331(.NET 8.0)で導入、#106843(.NET 10.0)で露顕
  • リスク評価:Low。セン チネルキャッシュは常に満杯として扱われるべき設計であり、修正により正しく判定されるようになります
  • オリジナル修正は#132859(本家ブランチ)

#129535 [release/9.0-staging] Fix assembly labels on MacOS X64 to be LOCAL_LABEL

概要

macOS x64 上でアセンブリラベルが通常のシンボルとして出力される問題を修正しました。この修正により、リンカーが関数を不正に分割して実行時の不正な動作を引き起こすことを防ぎます。内部アセンブリラベルを LOCAL_LABEL(...) に変換する修正を release/9.0-staging ブランチへバックポートしたものです。

変更内容

  • src/coreclr/vm/amd64/Context.S: アセンブリラベルを LOCAL_LABEL に変換(8行変更)
  • src/coreclr/vm/amd64/virtualcallstubamd64.S: アセンブリラベルを LOCAL_LABEL に変換(9行変更)

CoreCLR の macOS x64 アセンブリコード内の内部ラベルとブランチを LOCAL_LABEL(...) に変換し、制御フローを保持しながら外部に見えるラベルを回避しています。

パフォーマンスへの影響

影響なし

関連Issue

なし(#129531 のバックポート)

その他

  • 内部実装の修正: ランタイムのアセンブリレベルの実装変更で、公開 API への影響なし
  • 互換性: 破壊的変更なし
  • テスト: 新規テストは追加されていません。アセンブリラベル/リンカー動作の修正のため、既存の CI カバレッジに依存
  • リスク評価: 低リスク。変更は macOS x64 CoreCLR アセンブリコードの内部ラベルに限定され、既存の問題を修正するものです

目次