Pull Request on 2026年09月10日

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

注意点

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


目次

  1. #133633 [PERF] Fix Helix monitor credentials in the runtime performance pipeline
  2. #133610 [wasm] Fix duplicate R2R stack trace frames
  3. #133598 Fix obsolete IGCHeap hosting comment
  4. #133574 Update DictionaryExpansion test to use ConditionalFact(EmitSupported)
  5. #133568 [main] Source code updates from dotnet/dotnet
  6. #133545 Make browser WASM R2R runtime tests blocking
  7. #133542 Fix SIMD complement and scalar FMA folding
  8. #133541 Fix optimizations of explicitly rounded hardware intrinsics
  9. #133530 Add test quarantine skill
  10. #133528 JIT: fix wasm conditional fallthrough
  11. #133527 Avoid reducing unused Vector2 and Vector3 elements
  12. #133516 Fix missing transition adapters for shared Wasm R2R unboxing stubs
  13. #133513 Merging internal commits for release/9.0
  14. #133512 Merging internal commits for release/8.0
  15. #133511 JIT: Normalize small unmanaged args on wasm
  16. #133509 Add auxiliary symbol enumeration to cDAC
  17. #133508 Update Microsoft.DiaSymReader.Native to 18.9.0-beta1.26405.2
  18. #133485 Guard stale VN store in unused GetType extraction
  19. #133475 [release/11.0] Suppress SYSLIB1227 for unions with custom converters
  20. #133471 Fix cgroup v2 memory limit traversal at hierarchy root
  21. #133426 Adjust contracts for frame chain to handle HandleManagedFault's calling state
  22. #133424 Quote script paths in eng/build.sh
  23. #133386 [release/8.0-staging] Update dependencies from dotnet/runtime-assets
  24. #133379 Fix GC lifetime in ComWrappers cache cleanup test
  25. #133257 [release/10.0] Fix SIMD MinMax constant special cases
  26. #133212 Expand cryptography instruction scope
  27. #133161 [release/10.0] JIT: Add visit budget checks to IsMonotonicallyIncreasing and ComputeDoesOverflow
  28. #133159 Add more test coverage for TlsSession APIs
  29. #133148 [ci-scan-feedback] Reject shared-console-log KBE catch-alls
  30. #133128 Fold RuntimeInformation.IsOSPlatform / OperatingSystem.IsOSPlatform in ILLink
  31. #133099 Revert "[System.Text.Json] Fix ARM64 Utf8JsonReader regression"
  32. #133075 [release/11.0] [System.Text.Json] Use root-level patterns for generated unions
  33. #132687 Add Composite ML-KEM Windows implementation
  34. #132646 [cDAC] Implement GetFieldAlignment via EEClass layout alignment
  35. #132636 Remove CoreCLR PAL semaphore support
  36. #132456 Add check for maximum possible size for [Content_Types].xml in Packaging
  37. #132423 JIT: Improve modelling of AsyncResumedDef store in value numbering
  38. #132109 [release/9.0] Update dependencies from dotnet/arcade
  39. #131793 Fix double slash when rejoining USTAR prefix and name

#133633 [PERF] Fix Helix monitor credentials in the runtime performance pipeline

概要

dotnet/runtime#132807で導入されたヘリックスジョブモニター機能の回帰を修正するPRです。パフォーマンステストパイプラインにおいて、スタンドアロンモニタージョブがDotNet-HelixApi-Access認証情報にアクセスできず、プライベートHelixジョブの検出と完了追跡が機能していませんでした。パイプラインYAML内の変数グループインポートスコープをBuildステージレベルに昇格させることで、内部非PRビルド時にモニターが認証トークンを解決できるようにします。

変更内容

  • eng/pipelines/performance/perf.yml: Buildステージレベルにvariablesセクションを追加し、System.TeamProject == internalかつBuild.Reason != PullRequestの条件下でDotNet-HelixApi-Access変数グループをインポート

パフォーマンスへの影響

影響なし。この修正は認証情報の可用性を改善し、既存のモニタリング機能を復旧させるもので、パフォーマンス特性の変化はありません。

関連Issue

#132807

その他

  • 回帰の詳細: 元々のPRではHelix送信後に「Send job to Helix」ジョブが終了し、「Monitor Helix Jobs」に処理を委譲していました。しかし認証情報グループは個別ビルド/送信ジョブ内でのみインポートされており、スタンドアロンモニターが継承できず、$(HelixApiAccessToken)が未解決のままでした。結果、Helixは正当な認証なしで空の成功レスポンスを返し、allowNoHelixJobs: trueと組み合わさって、パイプラインは成功表示されつつ投入されたパフォーマンステストは未実行のまま残されていました。
  • 検証: 修正前のモニターログは提出ジョブ数が0で完全に機能していませんでしたが、修正後のサニティチェック実行では実際のHelixワークアイテム(ARM64/x86のマイクロベンチマーク等)とその結果が正常に報告されるようになり、プライベートジョブ検出と成果物報告の復旧が確認されました。
  • 検証範囲: YAML構造の解析確認、git diff --check実行、内部定義702でのサニティチェック実行による動作検証済み。

#133610 [wasm] Fix duplicate R2R stack trace frames

概要

WebAssembly (Wasm) 環境での ReadyToRun (R2R) メソッド実行時に、スタックトレースに重複したフレームが報告される問題を修正しました。ポータブルエントリーポイントのスローパスで R2R ボディを実行する際、PrestubMethodFrame がフレームチェーン上に残存していたため、同じ MethodDesc が2回報告されていました。修正では Wasm の GetStackFramesCallback で、直前に収集されたフレームと一致する PrestubMethodFrame のみを除外し、正当な prestub フレームは保持します。

変更内容

  • src/coreclr/vm/debugdebugger.cpp: GetStackFramesCallback に Wasm 固有のフィルタロジック(+14 行)を追加。直前のフレームと同じメソッドに対応する prestub フレームを除外します(内部実装の変更)
  • src/tests/Loader/classloader/DefaultInterfaceMethods/regressions/github60486.cs: Wasm R2R スキップ(ActiveIssue)を削除し、例外スタックトレースが重複フレームを含まないことを検証するロジック(+29 行)を追加

パフォーマンスへの影響

影響なし

関連Issue

#133505

その他

  • ポータブルエントリーポイント実装の内部動作の修正であり、公開 API に変更はありません
  • 修正は Wasm に限定され、他のプラットフォームへの影響はありません
  • Browser-wasm CoreCLR Release/Checked ビルド、macOS arm64 での検証済み
  • 修正前は重複フレームが報告されることが確認されています

#133598 Fix obsolete IGCHeap hosting comment

  • 作成者: @matyaskollert
  • 作成日時: 2026年09月10日 14:15:02(UTC)
  • マージ日時: 2026年09月10日 22:48:44(UTC)
  • ラベル: area-GC-coreclr

概要

IGCHeapインターフェースのヘッダコメントを更新し、廃止された「Hosting APIs」の説明と存在しないsrc/vm/corehost.cppへの参照を削除しました。新しいコメントではヒープサイジングと仮想メモリ制限APIの現在の役割を正確に説明しています。コメント変更のみで、インターフェースメソッドの実装や順序に変更はありません。

変更内容

  • src/coreclr/gc/gcinterface.h: IGCHeapのヘッダコメントを更新
    • 廃止された「Hosting APIs」セクションコメントを「Heap sizing and virtual memory limit APIs」に置き換え
    • 古いsrc/vm/corehost.cppへの参照を削除(dotnet/coreclr#23091でCCLRGCManager実装が削除済み)
    • ヒープサイジング検証とVM予約メモリ制限APIの説明に更新

パフォーマンスへの影響

影響なし(コメント変更のみ)

関連Issue

なし

その他

Copilotのレビューで、コメント内の「.NET Core 2.1+で使用されなくなった」というバージョン固有の記述は時間経過で陳腐化する可能性があるため、タイムレスな説明に改めるか削除することが推奨されています。


#133574 Update DictionaryExpansion test to use ConditionalFact(EmitSupported)

概要

DictionaryExpansionテストをReflection.Emit利用可能性に基づいてゲートするよう更新しました。NativeAOT固有のスキップ条件をConditionalFact(Utilities.IsReflectionEmitSupported)に置き換え、動的コードをサポートしていない任意のランタイム/構成でテストをスキップするようにします。

変更内容

  • src/tests/Loader/classloader/DictionaryExpansion/DictionaryExpansion.cs
    • [Fact]を[ConditionalFact(typeof(Utilities), nameof(Utilities.IsReflectionEmitSupported))]に置き換え
    • NativeAOT固有のActiveIssueゲートを削除
    • Mono Mini/FullAOT向けActiveIssueは継続

パフォーマンスへの影響

影響なし

関連Issue

#154(dotnet/runtimelab)

その他

留意事項(Copilotレビューより): Reflection.Emitが利用不可の場合にテスト全体をスキップすることで、Emitを使用しない部分のカバレッジが失われる可能性があります。非Emitカバレッジを保持するため、テストを分割することが理想的です。


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

概要

dotnet/dotnetリポジトリからの定期的なコードフロー更新です。このPRはソースコード変更と複数の依存関係の更新をもたらします。

変更内容

  • eng/Version.Details.props: 複数の依存パッケージのバージョン情報を更新(41行追加/削除)
  • eng/Version.Details.xml: 依存関係の詳細な構成情報を更新(83行追加/削除)
  • global.json: .NET SDK/ランタイムバージョン指定を更新
  • .config/dotnet-tools.json: ローカルツール構成を更新

更新された依存関係(主なもの):

  • Microsoft.CodeAnalysis関連: 5.12.0-1.26458.102 → 5.12.0-1.26458.117
  • Microsoft.DotNet.Arcade.Sdk等Arcade関連: 11.0.0-beta.26458.102 → 11.0.0-beta.26458.117
  • NuGet関連パッケージ: 7.12.0-rc.45902 → 7.12.0-rc.45917
  • System.Reflection.Metadata, System.Text.Json等ランタイムライブラリ: 12.0.0-alpha.1.26458.102 → 12.0.0-alpha.1.26458.117
  • Microsoft.NETCore.App.Ref: 12.0.0-alpha.1.26458.102 → 12.0.0-alpha.1.26458.117

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRはdotnet-maestro[bot]による自動コードフロー更新です
  • ソース: dotnet/dotnetリポジトリのコミット 228813c91085ec1f2fb8a4c0277e31a8eb9a7c33
  • 生成日時: 2026年9月9日 3:43:54 UTC
  • 関連するアーケード側の変更: dotnet/arcade リポジトリで66b75e61d8...880553bde4 の範囲の更新に対応

#133545 Make browser WASM R2R runtime tests blocking

  • 作成者: @lewing
  • 作成日時: 2026年09月09日 22:41:26(UTC)
  • マージ日時: 2026年09月10日 01:36:26(UTC)
  • ラベル: area-Infrastructure

概要

browser WASM CoreCLR R2R_CG2 ランタイムテストレーンを非ブロッキングからブロッキング動作に変更するパイプライン構成の更新です。既知の失敗が解決されたため、通常のbrowser-wasm規約に準拠させます。

変更内容

  • eng/pipelines/runtime.yml:
    • browser_wasm R2R_CG2 レーンから shouldContinueOnError を削除
    • useHelixMonitor: ${{ variables.enableHelixJobMonitor }} を追加して共有Helixジョブモニターを有効化
    • 変更内容: +1/-5行

パフォーマンスへの影響

影響なし

関連Issue

#133305、#133463

その他

  • パイプライン設定の妥当性をRuby Psychで検証済み
  • git diff --check による形式チェック完了
  • 他のbrowser_wasm Helixバックアップレーンと一貫した設定パターンに統一

#133542 Fix SIMD complement and scalar FMA folding

概要

SIMD補完とスカラFMA折りたたみの最適化におけるセマンティクス回帰を修正します。スカラ比較の反転による補完置換がベクタの上位レーンを破損することを防ぎ、パック化されたAVX比較の補完折りたたみ時に述語を正しく反転するように改善しました。

変更内容

  • morph.cpp: SIMD比較のNOT折りたたみ処理を修正。スカラ比較の反転による最適化をブロックし、AVX/AVX512比較の述語即値を正しく反転するように対応
  • lowerxarch.cpp: スカラFMAの第1オペランドから負数折りたたみを避け、上位レーンの負数処理が失われることを防止
  • Runtime_133518.cs: パック化されたAVX/AVX512比較補完折りたたみと反転述語のリグレッション試験を追加
  • Runtime_133521.cs: スカラ比較補完の上位レーン保持とスカラFMAオペランド1の負数セマンティクスのリグレッション試験を追加
  • Regression_ro_2.csproj: 新規リグレッション試験ソースをマージされたプロジェクトに統合

パフォーマンスへの影響

影響なし(セマンティクス修正のため、パフォーマンス変化ではなく正確性の修正)

関連Issue

#133521
#133518
#133553

その他

  • CoreCLR JIT最適化層の変更であり、SIMDイントリンシクのコード生成に直接影響します
  • スカラSIMD操作(比較、FMA)の上位レーン保持がSIMDのセマンティクスと関わるため、xarch全体での検証が必要です
  • 本PRはGitHub Copilotで準備されました

#133541 Fix optimizations of explicitly rounded hardware intrinsics

概要

AVX-512の明示的な丸めモード(embedded rounding)を持つハードウェア内部関数の最適化を修正します。従来の変形最適化(negation移動、乗算-加算変換など)が丸めモード情報を誤って削除する問題を防ぎ、丸めノードが通常の低級化・containment処理をスキップするようにします。

変更内容

  • morph.cpp: 定数乗算の書き換えとnegation移動の最適化に対して、内部関数が通常のオペランド数を持つ場合にのみ適用するガード条件を追加
  • lowerxarch.cpp: 明示的な丸めモード付き内部関数を、丸めオペランドを考慮しない通常の低級化/containment処理からスキップするように修正
  • 回帰テスト: AVX-512Fの埋め込み丸めに関するテストケースを追加
    • EmbeddedRounding.Single.cs: negation + 明示的丸め、乗算定数書き換え、ToEven/FMA オペランドカウント経路のカバレッジ
    • EmbeddedRounding.Double.cs: negation + 明示的丸めの倍精度テスト

パフォーマンスへの影響

影響なし。本修正は正確性を確保するためのもので、AVX-512埋め込み丸めを持つ内部関数については最適化を制限していますが、これらは特殊な用途向けの機能です。

関連Issue

#133519

その他

  • 本PRはGitHub Copilotとの協力で準備されました
  • Copilotレビューでは、CoreCLR JITの変形・低級化セマンティクスの変更であるため、ハードウェア内部関数セット全体にわたるコード生成/パフォーマンスへの影響の検証が必要とされています
  • 回帰テストにおいて、JIT最適化が確実に適用されるようにAggressiveOptimization属性の追加を検討する提案が出ています(レビュー指摘)

#133530 Add test quarantine skill

  • 作成者: @lewing
  • 作成日時: 2026年09月09日 20:13:15(UTC)
  • マージ日時: 2026年09月10日 16:51:00(UTC)
  • ラベル: area-skills

概要

テスト無効化作業における一般的な落とし穴(過度なカバレッジ抑制、実行前失敗への不適切な属性選択、マージランナー動作の見落とし)に対処するため、テスト隔離(quarantine)の再利用可能なワークフローを提供するリポジトリスキルを追加します。このスキルはエージェントに対して、失敗フェーズの分類、最小限の失敗単位の解決、パッシング理論行の保持、適切なxUnitまたはランタイムテストメカニズムの選択、プロセス分離とマージランナーの制限への対応などを指示します。

変更内容

  • .github/skills/test-quarantine/SKILL.md (+379行)

    • 「狭い隔離」ワークフローの定義
    • 失敗フェーズ優先の意思決定プロセス
    • カバレッジ保持ガイダンス
    • xUnit/ランタイムテストプロジェクトメカニズムの選択基準
    • プロセス分離とマージランナー制限への対応方法
    • ActiveIssueコメント使用法とdisabled-testラベル追加の指示
  • .github/skills/test-quarantine/evals/evals.json (+308行)

    • 設定述語、部分的理論、実行前失敗、カスタムエントリポイント、マージランナー隠し失敗、ストレスモードフィルタリング、アンブレラサブテスト、Issue管理、停止条件を含む11個の評価シナリオ

パフォーマンスへの影響

影響なし(ドキュメントと評価定義の追加のみ)

関連Issue

なし

その他

  • ドキュメント専用スキルとそれを検証するエバリュエータシナリオの追加
  • リポジトリの公式スキル検証ツール(skill validator)により、すべてのスキルの検証に成功
  • エージェント向けのパターンファーストなテスト隔離ワークフローを提供

#133528 JIT: fix wasm conditional fallthrough

概要

WebAssemblyのコード生成において、条件分岐の落下(fallthrough)処理を修正しました。隣接するブロックが常に有効なfallthrough対象とは限らない問題を解決しています。TryまたはExnRefWrapper区間を閉じるとターゲット前に命令が挿入される可能性があるため、既存のwasm fallthrough安全性チェックを条件分岐に再利用しました。

変更内容

  • src/coreclr/jit/codegenwasm.cpp: genCodeForJTrueを修正し、単純な隣接性チェック(falseTarget != block->Next())の代わりにBasicBlock::CanRemoveJumpToTargetを使用するよう変更
  • src/coreclr/jit/block.cpp: CanRemoveJumpToTargetを汎化し、BBJ_ALWAYSとBBJ_CONDの両方に対応させ、wasm区間終了チェック(Try/ExnRefWrapperの終了)を組み込んで安全でないfallthrough防止機能を追加
  • テストプロジェクト設定ファイル(.csproj)の削除(6行)

パフォーマンスへの影響

影響なし

関連Issue

#133465 #133469

その他

本変更はWebAssemblyのコード生成を対象とした修正であり、JITのコントロールフロー放出セマンティクスに関わる高い正確性インパクトを持つ変更です。既存の例外処理(Try/ExnRefWrapper)区間の終了時に挿入される命令によるfallthrough動作の不正を防ぐための対応となります。


#133527 Avoid reducing unused Vector2 and Vector3 elements

概要

Vector2/Vector3の削減演算(Sum、Dot、Length、Distance、Normalize、Reflect)を最適化し、不要な4要素削減を避ける変更です。これまでは暗黙的にゼロ要素を含める4要素削減が行われていましたが、意味のあるX/Y(またはX/Y/Z)要素のみを削減するように改良しました。負のゼロの保持や非有限入力、未使用の上位要素に関するテストカバレッジも追加されています。

変更内容

  • Vector2.cs/Vector3.cs: 削減ベースのAPI(Sum、Dot、Length、Distance、Normalize、Reflect)を改実装し、意味のある要素のみを削減。Vector128<float>形式で中間結果を保持し、スカラー削減とベクトル結果を適切に使い分け
  • テスト追加: Vector2Tests.cs/Vector3Tests.csに符号付きゼロ、非有限入力、反射・正規化に関するテストケースを追加

パフォーマンスへの影響

x64コード生成サイズの改善:

  • LengthSquared2:66→63バイト(-3バイト)
  • LengthSquared3:73→67バイト(-6バイト)
  • LengthSquared2ループ本体:46→30バイト(-16バイト)
  • Normalize3:95→94バイト(-1バイト)
  • Reflect3:117→116バイト(-1バイト)

Ryzen 9 7950Xでのマイクロベンチマーク(1000ベクトル):Normalize3は約1%高速化、Reflect3は調査中のSSE最適化と比較して11-12%低速化。ただし、可搬性を優先して従来型削減を採用。ARM/WASMパフォーマンスは未測定。

関連Issue

#133297

その他

  • 実装は可搬型Vector128操作を使用し、アーキテクチャ固有パスなし
  • Vector4、JIT最適化、ループ配置はこのPRの対象外
  • 負のゼロの処理を改善:合計要素がすべて負のゼロの場合、無関係な正のゼロを加えず保持
  • 提供されたコード生成サイズはメソッド全体(アライメント含)で、実際のループ本体ではより顕著な改善

#133516 Fix missing transition adapters for shared Wasm R2R unboxing stubs

  • 作成者: @lewing
  • 作成日時: 2026年09月09日 18:22:05(UTC)
  • マージ日時: 2026年09月10日 00:32:54(UTC)
  • ラベル: area-ReadyToRun

概要

browser-Wasm CoreCLR ReadyToRun(R2R)での共有Unboxing Stubsの失敗を修正します。Interpreter↔R2R間の遷移アダプタ(例:MS56Tp、IS56Tip)が不足している場合の回避メカニズムを追加し、共有Stub構造と二項サイズの削減効果(約99.6%)を維持します。根本原因は、構造化共有により同じWasm形状でも異なる管理レイアウトを持つシグネチャが、異なるInterpreterアダプタを必要とする点にありました。

変更内容

  • helpers.cpp(ランタイム): GetUnboxingStub()にゲーティングロジックを追加。共有Stubを使用する前に、Unboxingシグネチャ用のMアダプタとターゲット用のIアダプタが存在し、ターゲットの移植可能なエントリポイントが呼び出し可能であることを確認
  • ReadyToRunCodegenNodeFactory.cs(Crossgen2): Wasm Unboxing Stubの依存性ルーティングを、構造化ノード単位からターゲット毎の依存性ノード(WasmUnboxingStubTargetNode)に変更。これにより異なるシグネチャが個別のアダプタを保持
  • WasmUnboxingStubNode.cs(新規): WasmUnboxingStubTargetNodeを導入。共有Stub、コンパイル済みターゲット、双方向の遷移アダプタ依存性をターゲット毎に保持
  • テスト拡張: 16バイト構造体に加えて56バイト構造体のリターンケースを追加し、異なるアダプタが正しく生成されることを検証

パフォーマンスへの影響

メモリ:

  • 最適化済みブラウザ用System.Private.CoreLib比較:
    • 完全共有プロトタイプ: 26,991,640 bytes
    • 修正版(遷移依存性付き): 26,993,234 bytes(+1,594 bytes、+0.006%)
    • 従来のU/UGフォールバック: 27,387,567 bytes(削減率99.6%維持、394,333 bytes節約)

実行:落下バック時の若干のオーバーヘッドの可能性がありますが、共有Stub利用時の性能は変わりません。

関連Issue

#133491、#133218

その他

  • 検証: Node.js 26.4.0下でのbrowser-Wasm Release CoreCLR実行で確認。LoaderClassloaderGenerics、Regressions、Regression_NoOptimize_r_1テストいずれもExit 100で成功
  • 負依存性テスト: I(target)のみ削除でIS16Tip不足エラー、M(unboxing)のみ削除でMS56Tp不足エラーとなり、両方復元で合格
  • 重要な設計変更: Interpreter→Unboxing Stub用と Unboxing Stub→Target用で異なるアダプタが必要(例:MS56TpvsIS56Tip)。構造化共有時に

#133513 Merging internal commits for release/9.0

概要

リリース/9.0 ブランチの内部コミットをマージするバージョン管理に関する更新です。

変更内容

  • eng/Versions.props: バージョン情報の更新(1行追加、1行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本PRは dotnet-bot による自動マージ用の内部コミット統合です。詳細な変更内容はファイル差分の確認が必要です。


#133512 Merging internal commits for release/8.0

概要

release/8.0ブランチ向けの内部コミットをマージするリリース管理用のPull Requestです。

変更内容

  • eng/Versions.props: バージョン情報の更新(1行追加、1行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

なし


#133511 JIT: Normalize small unmanaged args on wasm

概要

WebAssembly(WASM)プラットフォーム向けに、JITの非管理呼び出し時に小さい整数引数の正規化(32ビットへの符号拡張/ゼロ拡張)を適用するようになりました。これにより、WASMはARM32およびApple ARM64と同じ引数正規化ロジックに統一されます。Basic C ABIの要件に対応し、Issue #133506を修正します。

変更内容

  • src/coreclr/jit/importercalls.cpp: 非管理呼び出しの小整数正規化条件にTargetArchitecture::IsWasmを追加。符号拡張(i32.load16_s)がWASM呼び出しに適切に適用されるようになりました。
  • src/coreclr/inc/targetosarch.h: TargetArchitecture::IsWasmコンパイル時フラグを新規追加。
  • src/tests/JIT/Regression/JitBlue/Runtime_101046/Runtime_101046.ilproj: テスト設定を更新。

パフォーマンスへの影響

直接的なパフォーマンス改善/低下の数値報告なし。WASMの非管理呼び出しで適切な符号拡張が行われることで、ABI準拠性が向上し、バグ修正による間接的な改善が期待されます。

関連Issue

#133506

その他

  • このPRはWASM非管理呼び出しのABI関連正規化を変更するため、WASMプラットフォーム固有のテスト検証が重要です。
  • 既存のRuntime_101046テストは、従来のi32.load16_uの直接渡しからi32.load16_sでの符号拡張へ挙動が変更されています。

#133509 Add auxiliary symbol enumeration to cDAC

概要

cDAC(Common Data Access Component)のAuxiliarySymbols契約にEnumerateAuxiliarySymbols()APIを追加し、全ての補助シンボルと対応するコードアドレスを列挙できるようにしました。これにより、ダンプ収集時にシンボルテーブルを事前に走査してヒープダンプにテーブルエントリとUTF-8名前をキャプチャできるようになります。

変更内容

  • IAuxiliarySymbols.cs: EnumerateAuxiliarySymbols()メソッドを契約インターフェースに追加。(TargetCodePointer Address, string Name)のタプルペアを返します。
  • AuxiliarySymbols_1.cs: c1実装でEnumerateAuxiliarySymbols()を実装し、既存のTryGetAuxiliarySymbolNameと列挙ロジックを共有するようにリファクタリング。
  • AuxiliarySymbolsTests.cs: サポート対象アーキテクチャ全体で列挙が全補助シンボルを返すことをアサートするユニットテストを追加(16テスト合格)。
  • AuxiliarySymbols.md: 新APIをドキュメント化し、Version 1アルゴリズムの説明とスニペットを更新。

パフォーマンスへの影響

Copilotレビューで「TryGetAuxiliarySymbolName がシンボル名を列挙経由で事前にデコードするため、パフォーマンス/堅牢性の回帰の可能性」が指摘されています。最適化として、マッチしたシンボルの名前だけをデコードするよう実装を調整することが推奨されています。

関連Issue

#132584で報告されたRachelのレビューコメントへの対応が本目的です。ダンプ収集の実装は#132584に留保されています。

その他

  • ドキュメント記載の署名が実装と一致していない点(TryGetAuxiliarySymbolNameのnullable out パラメータ表記)がCopilotにより指摘されているため、ドキュメント修正が必要です。
  • 本PRはダンプ列挙機能の前提条件として位置付けられています。

#133508 Update Microsoft.DiaSymReader.Native to 18.9.0-beta1.26405.2

概要

Microsoft.DiaSymReader.Nativeパッケージのバージョンをビルド・ツールチェーン全体で使用するために、17.10.0-beta1.24272.1から18.9.0-beta1.26405.2へアップデートするプロパティ更新です。コード動作への変更はなく、バージョンピン指定のみの変更です。

変更内容

  • eng/Versions.props: MicrosoftDiaSymReaderNativeVersionプロパティを18.9.0-beta1.26405.2に更新(ビルド・パッケージング全体で使用される中央バージョンピン)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

なし


#133485 Guard stale VN store in unused GetType extraction

  • 作成者: @Copilot
  • 作成日時: 2026年09月09日 11:30:32(UTC)
  • マージ日時: 2026年09月10日 09:07:25(UTC)
  • ラベル: area-CodeGen-coreclr

概要

unused Object.GetType node から side effects を抽出する際、value numbering が破棄されている場合に vnStore の逆参照を回避する修正。NULLCHECK への変換時に stale/null vnStore の参照を防ぎ、value numbering が利用可能な場合は元のノードの例外 VN 情報を保持します。

変更内容

  • src/coreclr/jit/gentree.cpp: unused GetType → NULLCHECK 変換処理に vnStore != nullptr ガードを追加。これにより VNPWithExc 経由で replacement node の gtVNPair を再構築する前に null チェックを実施。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この変更は JIT コンパイラの内部実装(gentree.cpp)に対するもので、公開 API には影響なし
  • 修正前:value numbering 破棄時に null vnStore を逆参照する可能性があるポテンシャルなヌルポインタデリファレンス
  • 修正後:vnStore の有効性を確認してから VN 情報を再構築し、無効な場合はスキップ
  • Copilot による分析では、既存のパターンに準拠しており、VN データ利用時の動作は変わらない最小限の修正と評価

#133475 [release/11.0] Suppress SYSLIB1227 for unions with custom converters

概要

Union型にJsonConverterAttributeで指定されたカスタムコンバーターがある場合、ソースジェネレーターが不要な診断警告(SYSLIB1227:型分類子が必要)を報告していた問題を修正します。カスタムコンバーターは他のすべてのシリアライゼーション機構をオーバーライドするため、この警告は抑止される必要があります。

変更内容

  • JsonSourceGenerator.Parser.cs: Union型に対する診断チェックで、JsonConverterAttributeの有無を確認する条件を追加(+2/-3)
  • JsonSourceGeneratorDiagnosticsTests.cs: カスタムコンバーター付きUnion型に対してSYSLIB1227が報告されないことを検証するユニットテストを追加(+37)

パフォーマンスへの影響

影響なし

関連Issue

#133244(オリジナルの修正内容のバックポート)

その他

  • 本PRはrelease/11.0ブランチへのバックポートです
  • リスク評価:低(ターゲット化された製品コード修正で、不足していたチェックを追加)
  • 顧客報告の問題に対応しており、ユニットテストで検証されています

#133471 Fix cgroup v2 memory limit traversal at hierarchy root

概要

cgroup v2のメモリ制限走査ロジックを修正し、階層マウントルートを越えてメモリアクセスする問題を解決しました。以前のdo/whileループはマウントルート到達確認の前に親ディレクトリへ移動してしまい、null参照を引き起こす可能性がありました。修正後は序数比較を使用してパスを比較し、マウントルートの読み取り・走査前に停止するようにしました。

変更内容

  • Interop.cgroups.cs: TryGetMemoryLimitV2メソッドの走査ロジックをリファクタリング。マウントルート等値性チェック(序数比較)を導入し、テスト可能にするためのオーバーロードを追加(+27行)
  • cgroupsTests.cs: 「現在のcgroupが階層マウントルートと一致」するシナリオのFindCGroupPathテストケースと、階層マウントルート付近での走査動作をカバーする新規テストを追加(+30行)

パフォーマンスへの影響

影響なし

関連Issue

その他

Copilot reviewerの指摘によると、修正後の実装はマウントルートでのmemory.max読み取りをスキップしており、有効な制限値を見落とす可能性があります。ネイティブ実装との動作調整が必要とされています。


#133426 Adjust contracts for frame chain to handle HandleManagedFault's calling state

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年09月08日 17:13:22(UTC)
  • マージ日時: 2026年09月10日 01:48:36(UTC)
  • ラベル: area-VM-coreclr

概要

HandleManagedFaultの呼び出し時における実行モード(協調的/先制的GC)の状態を処理するため、フレームチェーンの契約を調整するもの。Issue #133332の修正に対応する。

変更内容

  • src/coreclr/vm/excep.cpp: ShouldHandleManagedFault関数の例外処理ロジックを変更。プリエンプティブモード中のInlinedCallFrameを持つスレッドについて、管理対象コードの判定をスキップするガード条件を追加(17行追加、12行削除)。
  • src/coreclr/vm/excep.h: 関数シグネチャの契約制約を調整(1行追加、3行削除)。

パフォーマンスへの影響

影響なし。例外処理パスにおける早期リターン条件の追加であり、実行時の性能への影響は最小限。

関連Issue

#133332

その他

重要な注意事項: 本変更は低レベルの例外処理ロジックを修正するもので、デバッグビルドの契約違反を解決する一方、リリースビルドの動作にも影響を及ぼします。Copilotのレビューでは、この変更が非デバッグビルドでの例外処理分類を変更する可能性があり、回帰リスクについてメンテナーの検証が必要とされています。作成者はこのアプローチを「既に不正な状態にあるためのデバッグのみの変更」と説明しており、HandleManagedFaultを協調的モードに移行させる「より危険」な選択肢の代替案と位置づけています。


#133424 Quote script paths in eng/build.sh

概要

eng/build.shとeng/common/build.sh内の$scriptroot変数を含むパス展開をクォートすることで、リポジトリパスにスペースが含まれる場合のビルド失敗を修正します。修正前はパス内のスペースでワード分割が発生し、ファイルが見つからないエラーやMSBuildの引数解析エラーが発生していました。

変更内容

  • eng/build.sh (2行変更)

    • Line 169: init-os-and-arch.shのsourceパスをクォート
    • Line 647: MSBuildのTrackPrebuiltUsageReportFileと-blパラメータをクォート
  • eng/common/build.sh (5行変更)

    • 同様に$scriptrootを含むパス展開をクォート

パフォーマンスへの影響

影響なし。スペースのないパス上でのclr.native+libs.nativeクリーンビルドは修正前後で同一です。

関連Issue

#73327(関連するArcade側の変更:dotnet/arcade#17509)

その他

  • 動作確認: Linux-x64およびmacOS-arm64上でスペースを含むパスでテスト済み
  • 重要な注記: 本PRの変更はeng/common(Arcade管理領域)にも及ぶため、将来のArcadeアップデート時に上書きされないよう、Arcade側の変更(dotnet/arcade#17509)が本体に取り込まれる必要があります
  • 既知の制限事項: CMakeレイヤーではまだビルド失敗が生じており、別途対応予定

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

概要

dotnet/runtime-assetsからの依存関係を更新するAutomated Pull Requestです。テストデータとランタイムアセットに関連する14個のパッケージをバージョン8.0.0-beta.26404.3から8.0.0-beta.26457.3に更新します。release/8.0-stagingブランチ向けの定期的な依存関係更新です。

変更内容

  • eng/Version.Details.xml: パッケージバージョン情報を28行更新
  • eng/Versions.props: バージョンプロパティ定義を14行更新

更新対象パッケージ(8.0.0-beta.26404.3 → 8.0.0-beta.26457.3):

  • 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]による自動化された依存関係更新です。release/8.0ブランチの成果物から生成されました。


#133379 Fix GC lifetime in ComWrappers cache cleanup test

概要

ComWrappers キャッシュクリーンアップテスト ValidateExternalWrapperCacheCleanUpWithoutFinalizer における GC ライフタイム問題を修正します。テスト内でラッパーの唯一の強参照を破棄してから弱参照経由での回復を試みていたため、その間の GC 実行がターゲットを正当に削除し、GC ストレス下でテスト失敗を招いていました。TryGetComInstance アサーション検証を CreateAndAbandonWrapper ヘルパー内に移動させ、ラッパーが強く参照されている状態で実行するようにしました。ランタイム実装は変更なく、テストのみの修正です。

変更内容

  • src/tests/Interop/COM/ComWrappers/API/Program.cs:TryGetComInstance による使用可能性検証をラッパー作成ヘルパー内に移動。ラッパーが強参照状態にある間に実行することで、GC タイミング窓を排除。既存の GC/クリーンアップアサーション(GC.Collect() 後の無効エントリ、ForceGC() 後のクリーンアップ)は保持し、ヘルパー内に GC.KeepAlive(wrapper) を追加。

パフォーマンスへの影響

影響なし(テスト専用の修正)

関連Issue

#133331、#133164

その他

本修正は GC ストレス環境下でのテスト信頼性を向上させるもので、ランタイムの動作には影響しません。


#133257 [release/10.0] Fix SIMD MinMax constant special cases

概要

SIMD Min、Max、MinNumber、MaxNumber における xarch での正確性バグを修正するバックポート。定数ベクトルが通常値と NaN またはゼロ符号が混在するレーンを含む場合に不正な結果が返される問題(特に AVX-512 パスで不透明なオペランド全体が誤って返される)を解決します。

変更内容

  • src/coreclr/jit/simd.h: SIMD 定数評価ヘルパーに simdSize を追加し、NaN/負数/ゼロ/符号付きゼロを検出する再利用可能な述語マスク関数を実装
  • src/coreclr/jit/gentree.h: GenTreeVecCon にベクトル定数内の NaN / 符号付きゼロの検出ヘルパーを追加
  • src/coreclr/jit/gentree.cpp: ベクトル定数の特殊ケース判定を新しいレーン単位のヘルパーに切り替え、AVX-512 fixup テーブル生成時に符号付きゼロが混在する場合の処理を改善
  • src/tests/JIT/Regression/JitBlue/Runtime_133022/Runtime_133022.cs: Vector128/Vector256 と float/double 対応の、混在 NaN・符号付きゼロレーンをカバーする回帰テスト
  • src/libraries/Common/tests/System/GenericMathTestMemberData.cs: NaN ペイロード + 符号付きゼロのテストケースを追加

パフォーマンスへの影響

影響なし。JIT インポート時の定数分類と fixup テーブル生成のローカライズされた変更であり、ランタイムパフォーマンスへの影響はありません。

関連Issue

#133173(オリジナルの修正)、#133022(回帰テストプロジェクト)、#116804(回帰を引き起こした変更)

その他

  • 回帰: .NET 10 開発期間中に #116804 により導入された
  • リスク: 中程度。変更は JIT import 時の SIMD 定数分類と fixup テーブル生成に限定されていますが、Min/Max コード生成全体に影響します
  • テスト: 13,082 個の System.Runtime.Intrinsics テストが AVX-512 有効・無効両設定で合格、x64・x86 ともに確認済み

#133212 Expand cryptography instruction scope

概要

暗号関連の機械学習支援ツール(Copilot)用フォルダ固有の指示スコープを拡張し、System.Security.Cryptography*ライブラリ、Microsoft.Bcl.Cryptography、および共有暗号化ソース・テストのすべてに適用するようにしました。これにより、関連する暗号化ディレクトリ全体にわたってガイダンスが一貫して適用されるようになります。

変更内容

  • .github/instructions/system-security-cryptography.instructions.md の applyTo グロブパターンを単一ディレクトリから複数の暗号関連パスに拡張(+2/-2行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この変更は指示スコープの更新であり、既存の他の指示ファイルで使用されているカンマ区切り applyTo パターンと一貫性があります
  • 実装変更ではなく、メタデータ(Copilot用のフォルダ指示)のみの変更です

#133161 [release/10.0] JIT: Add visit budget checks to IsMonotonicallyIncreasing and ComputeDoesOverflow

概要

JIT範囲チェック分析の病的な処理時間とメモリ消費を防ぐため、RangeCheck::IsMonotonicallyIncreasingとRangeCheck::ComputeDoesOverflowにvisit budgetチェックを追加するバックポート。制御フロー難読化を施されたメソッドのコンパイル時にJIT arenaメモリが7.9GBを消費する問題を解決し、テスト環境でのコンパイル時間を10064msから5msに短縮します。

変更内容

  • src/coreclr/jit/rangecheck.cpp: m_nVisitBudgetガードをIsMonotonicallyIncreasingとComputeDoesOverflowの2つの再帰的ヘルパー関数に追加。既存のComputeRangeで使用されているvisit budgetメカニズムと同じパターンで実装され、予算枯渇時は保守的な結果(false/true)を返して早期終了します。

パフォーマンスへの影響

大幅な改善:

  • コンパイル時間:10064ms → 5ms(99.95%削減)
  • ピークワーキングセット:7850MB → 26MB(99.67%削減)
  • JIT arena割り当て:8.2GB → 測定不可レベルに削減

ベンチマーク条件:2415バイトIL非同期ステートマシン(194基本ブロック)、win-x64、DOTNET_TieredCompilation=0

範囲チェック最適化フェーズで99.94%の処理時間が消費されていた問題が解決されます。

関連Issue

#133147、#125156

その他

  • リスク評価:低。既存のvisit budget枯渇時のみ動作し、通常コードでは影響なし
  • 互換性:破壊的変更なし。保守的な早期終了により範囲チェック最適化が制限される可能性はありますが、プログラムの正確性には影響なし
  • mainブランチでは2026年3月以来この修正を含んでおり、後続の問題報告なし
  • containerized ASP.NET CoreサービスがOOM-killされていた本番環境問題を解決(obfuscator出力の制御フロー難読化が原因)

#133159 Add more test coverage for TlsSession APIs

  • 作成者: @rzikm
  • 作成日時: 2026年09月03日 11:30:52(UTC)
  • マージ日時: 2026年09月10日 15:33:21(UTC)
  • ラベル: area-System.Net.Security

概要

TlsSession API ファミリーのポスト・ハンドシェイク・クライアント認証機能を完成させ、テストカバレッジを拡張するPRです。RequestClientCertificate を呼び出すと、再度ハンドシェイクが再開され、Handshake() を通じて完了まで駆動されます。OpenSSL fd-mode(ソケットバウンド)セッションのサポートを追加し、バッファリング・ソケットバウンド・チャネルバインディング・暗号スイート関連の機能テストカバレッジを大幅に拡充します。

変更内容

  • TlsSession.cs: ポスト・ハンドシェイク・クライアント認証時にハンドシェイク状態を再開し、外部証明書検証のゲート処理を統一(内部実装の変更)
  • TlsSession.OpenSsl.cs: OpenSSL fd-mode のポスト・ハンドシェイク・クライアント認証処理を実装し、fd-mode の高速パスに外部検証ガードを適用(内部実装の変更)
  • pal_ssl.c: fd-mode ハンドシェイクのエントリーポイントに SSL_peek を追加して、再交渉/ポスト・ハンドシェイク認証処理をトリガー(ネイティブコード変更)
  • TlsSessionTests.cs: ポスト・ハンドシェイク完了(バッファリング/ソケットバウンド両方)、検証動作、API プロパティの広範な機能テストを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

Copilot レビューで複数の問題が指摘されています:

  1. fd-mode バックプレッシャー時のハング懸念: ソケット可読性のみにゲート制御するため、WANT_WRITE による書き込み進捗ブロックが発生する可能性あり
  2. 外部検証ゲート不足: RequestClientCertificate のバッファリング/ソケットバウンド両パスで ThrowIfPendingExternalValidation チェックが欠落しており、API コントラクト違反のリスク
  3. テストコメント精度: 返された証明書の所有権/破棄セマンティクスについて、TlsSession.Dispose が _remoteCertificate フィールドを破棄しないため、コメントが誤解を招く恐れあり
  4. XML ドキュメント問題: <see cref> 署名で ReadOnlySpan{byte} などのキーワードエイリアスを使用しており、解決失敗の可能性
  5. 暗号スイート アサーション: Windows での実装では暗号スイート情報照会が利用不可の場合デフォルト値のままになるため、テストが過度に厳しい
  6. ヘルパーコメント: 複数のテストヘルパーのドキュメンテーションが文の途中から始まっており、意図が不明確

これらの指摘はマージ前に対処が推奨されます。


#133148 [ci-scan-feedback] Reject shared-console-log KBE catch-alls

概要

CI失敗スキャナーで使用されるKBE(Known Build Exception)の作成ガイダンスを強化し、Helixの共有マルチテスト・コンソールログで無関係なサイバテスト失敗まで含む過度に広いシグネチャが生成されるのを防ぎます。共有コンソールログからの汎用スイート・ハーネス・エラーとテスト単位の通知のペアを拒否し、失敗テスト独自の出力を識別するかExcludeConsoleLog: trueを使用する必要があります。

変更内容

  • .github/workflows/shared/create-kbe.instructions.md: シグネチャ特異性の拒否ガイダンスを更新し、共有マルチテスト・コンソールログからの「通知+スイート・ハーネス・エラー」ペアリングを明確に禁止。共有コンソールログ処理ルール(失敗テスト独自のエラー出力を優先;利用不可の場合はExcludeConsoleLog: trueを使用またはスキップ)と具体例を追加
  • .github/workflows/ci-failure-fix.lock.yml: gh-awコンパイラ版でリジェネレート

パフォーマンスへの影響

影響なし

関連Issue

#132657、#133010、#133080、#128742、#131449

その他

  • Copilotレビューで軽微な指摘あり:ガイダンス文言の曖昧性と例の一貫性に関する改善提案(複数回のレビューサイクルを経て最終承認)
  • github-agentic-workflows-compileによる検証パスを確認
  • 本PullRequestはGitHub Copilotが生成したものです

#133128 Fold RuntimeInformation.IsOSPlatform / OperatingSystem.IsOSPlatform in ILLink

概要

ILLink の UnreachableBlocksOptimizer が RuntimeInformation.IsOSPlatform() と OperatingSystem.IsOSPlatform() による OS プラットフォームガード(OSPlatform トークンまたは文字列リテラル経由)を定数畳み込みできるように拡張しました。これにより、特定ターゲット(例:browser/wasi)向けにトリミングされた共有フレームワークにおいて、到達不可能な OS ガード分岐と内部の P/Invoke が削除されるようになります。未知のカスタムプラットフォームトークンは手を加えず、分岐は保持されます。

変更内容

  • UnreachableBlocksOptimizer.cs: OSPlatform トークン(get_Windows/Linux/OSX/FreeBSD)、OSPlatform.Create("リテラル")、または文字列リテラルをマッピングし、対応する OperatingSystem.IsX() 述語に変換して既存の畳み込み機構で処理するロジックを追加
  • OSPlatformGuard.cs (新規テストケース): RuntimeInformation.IsOSPlatform(OSPlatform.Windows)、OSPlatform.Create("FREEBSD")、OperatingSystem.IsOSPlatform("Linux") をカバーするテスト
  • ILTrimExpectedFailures.txt: 新規テストケースを期待される ILTrim 制限として登録
  • RoslynAnalyzer テスト生成: アナライザーの OSPlatformGuard テストを追加

パフォーマンスへの影響

トリミング時に OS ガード分岐が削除されることで、共有フレームワークの最終サイズが削減されます。特に WebAssembly ターゲット(browser/wasi)など単一プラットフォーム向けビルドで効果が大きくなります。ビルド時の定数畳み込み処理が加わりますが、既存の UnreachableBlocksOptimizer 機構の拡張のため追加オーバーヘッドは最小限です。

関連Issue

なし

その他

  • OSPlatformGuard テストは ILTrim 期待失敗として登録され、アナライザーのテストジェネレータのスナップショットに追加されています
  • OSX/MacCatalyst プラットフォーム名の扱い(エイリアシング動作)が既存の OperatingSystem.IsX() 述語に組み込まれているため、手動での複製は不要です
  • Copilot による推奨事項で watchOS への対応や未知 OS トークン周辺の動作の一貫性について指摘されています

#133099 Revert "[System.Text.Json] Fix ARM64 Utf8JsonReader regression"

  • 作成者: @jozkee
  • 作成日時: 2026年09月02日 16:02:01(UTC)
  • マージ日時: 2026年09月10日 06:46:20(UTC)
  • ラベル: area-System.Text.Json

概要

PR #132452で導入された明示的な比較演算子をC#パターンマッチング形式に戻すリバート。Roslyn修正の取り込みにより、Linux ARM64のパフォーマンス低下問題が解決されたと判断された。Utf8JsonReaderとJSONバリデーション処理の高速パス内のバイト比較ロジックが対象。

変更内容

  • Utf8JsonReader.cs(シングルスパンリーダー): 終端文字(., E, e)と符号(+, -)のチェックを明示的な比較からパターンマッチング形式(is not ((byte)...))に戻した
  • Utf8JsonReader.MultiSegment.cs(マルチセグメントリーダー): シングルスパンリーダーと同様に複数の終端文字チェック、符号チェック、コメントマーカー検証(is not (Slash or Asterisk))をパターンマッチング形式に戻した
  • JsonWriterHelper.cs: ValidateNumberのべき乗記号・符号チェックをパターンマッチング形式に復元

パフォーマンスへの影響

懸念あり。PR #132452では明示的比較に変更することで、Linux ARM64での大規模なパフォーマンス低下が修正された。本リバートにより同様の低下が再発する可能性がある。ただし作成者はRoslyn修正による基本的なJIT/コード生成問題の解決を根拠としている。新たなベンチマーク結果の提供は記載されていない。

関連Issue

#132452

その他

  • 互換性: 公開APIではなく内部実装の変更のため、直接的な互換性への影響なし
  • レビュアーの懸念: Copilotレビューで7箇所のパターンマッチング復元個所が指摘され、各々で「新たなパフォーマンス根拠がない限り明示的比較を保持すべき」とコメントされている
  • コード品質: パターンマッチング形式の方が可読性が高いが、ARM64でのコード生成品質に依存

#133075 [release/11.0] [System.Text.Json] Use root-level patterns for generated unions

概要

System.Text.Json のソースジェネレータの union デコンストラクタコード生成を、C# 13 の更新された union パターンマッチングセマンティクスに対応させます。プロパティパターン({ Value: ... })から root-level 型パターンへの切り替えが行われます。

変更内容

  • JsonSourceGenerator.Emitter.cs: union デコンストラクタの arm 生成を root-level 型パターンに切り替え(プロパティパターンから簡潔な型パターンへ)
  • UnionTests.cs: コメント更新によるドキュメント整備(union パターンの説明を payload ターゲティング方式に更新)
  • Baseline ファイル: netcoreapp および net462 ターゲット向けに複数の union 型(SubclassCase、Recursive、RecursiveNullable)のジェネレータ出力ベースラインを更新
  • JsonSourceGeneratorOutputTests.cs: VerifyAgainstBaseline 結果をキャプチャし、古い Roslyn バージョンからの診断をアサートするヘルパーを追加

パフォーマンスへの影響

影響なし。これは非機能的な変更(コード生成パターンの構文レベルでの更新)であり、実行時の動作や性能特性は変わりません。

関連Issue

#133017

その他

  • 内部発見: お客様報告ではなく内部で発見された変更です
  • リスク評価: 低。C# の言語仕様の定義された変更への対応であり、影響は限定的です
  • 互換性: この変更は release/11.0 ブランチへのバックポートであり、生成されたコードは新しい C# union パターンセマンティクスに準拠します
  • テスト: 機能的な変更がないため、テストは基本的にジェネレータ出力ベースラインテストのみ更新されています
  • 注記: Copilot の指摘により、net462 ターゲットで診断ピニング補助が有効化されていない点が指摘されていますが、提供された情報では解決状況の詳細は不明です

#132687 Add Composite ML-KEM Windows implementation

概要

Windows環境でComposite ML-KEM(ポスト量子暗号)をCNG/BCrypt/NCryptで実装するサポートを追加します。新しい公開API CompositeMLKemCng を導入し、ネイティブキーブロブの符号化/復号化、Windows固有の暗号化操作、および包括的なテストカバレッジを提供します。

変更内容

  • Windows実装: BCrypt/NCryptを使用したComposite ML-KEM操作の実装(CompositeMLKemImplementation.Windows.cs、CompositeMLKemCng.Windows.cs)
  • 公開API: 新しい型 CompositeMLKemCng をSystem.Security.Cryptographyに追加(ref contractにて定義)
  • CNG識別子: Composite ML-KEM用のアルゴリズム名、アルゴリズムグループ、キーブロブフォーマットをCNG層に追加
  • ブロブ処理: ネイティブキーブロブの符号化/復号化ヘルパー(PqcBlobHelpers.CompositeMLKem.cs)
  • テスト基盤: Windowsプラットフォーム検出ロジック、CNG固有のテスト、クロスプラットフォーム互換性調整
  • 非Windowsスタブ: Cng.NotSupported.csでCNG非対応環境向けのPlatformNotSupportedException実装
  • BCL統合: Microsoft.Bcl.CryptographyにてCompositeMLKemCngの型フォワード・テスト追加

パフォーマンスへの影響

影響なし

関連Issue

#129633 #132680

その他

⚠️ API契約のズレ: Copilotのレビューにて、公開API CompositeMLKemCng の [SupportedOSPlatform("windows")] 属性の配置が承認された仕様と異なる点が指摘されています。承認では型レベルに適用すべきですが、現在はコンストラクタレベルのみとなっており、修正が必要です。

その他の指摘:

  • PqcBlobHelpers.CompositeMLKem.cs にUTF-8 BOMMが含まれており削除が必要
  • CompositeMLKemImplementation.Windows.cs の OpenAlgorithmHandle() が非Windows環境での防御的チェックを欠いており、他のBCrypt実装と一貫性を欠く

このPRはマージ前にこれらの修正が必要です。


#132646 [cDAC] Implement GetFieldAlignment via EEClass layout alignment

  • 作成者: @lewing
  • 作成日時: 2026年08月21日 23:58:22(UTC)
  • マージ日時: 2026年09月10日 04:57:05(UTC)
  • ラベル: area-Diagnostics-cdac

概要

WASM ArgIteratorで値型引数のフィールド配置を取得するため、cDAC RuntimeTypeSystem契約を拡張してランタイム計算によるEEClassLayoutInfoの配置情報を公開します。CdacTypeHandle.GetFieldAlignment()が例外をスローする問題を修正し、CEEInfo::getClassAlignmentRequirementStaticをミラーリングした実装を提供します。

// 実装例:GetClassAlignmentRequirementメソッド
// IRuntimeTypeSystem.GetClassAlignmentRequirement(ITypeHandle)で
// LayoutEEClass経由の配置情報をRuntimeTypeSystemから読み取る

変更内容

  • IRuntimeTypeSystem契約: 新しいGetClassAlignmentRequirement(ITypeHandle)メソッドを追加(公開API)
  • RuntimeTypeSystem_1実装: レイアウト情報が存在する場合に読み取り、RequiresAlign8フラグを適用
  • CdacTypeHandle: GetFieldAlignment()をランタイム型システム配置APIで実装、未解決時はポインタサイズにフォールバック
  • EEClass/LayoutEEClass記述子: VMFlags、LayoutInfoフィールドを追加
  • 新型定義: EEClassLayoutInfo、LayoutEEClass用DataType追加(既存列挙値は変更なし)
  • 単体テスト: レイアウト/非レイアウト、sequential/blittable対auto-layout、RequiresAlign8、記述子欠落フォールバック、CdacTypeHandle統合パスをカバー

パフォーマンスへの影響

影響なし

関連Issue

#131343、#131328、#124448

その他

  • 設計フィードバック検討: GetClassAlignmentRequirement(ITypeHandle)をIRuntimeTypeSystem契約レベルで公開するか、狭い内部実装にとどめるかについて設計確認中
  • 加法的契約: 記述子非存在時はターゲットポインタサイズをデフォルトとして返し、安全な拡張性を確保
  • Copilotレビュー指摘: EEClassLayoutInfo.LayoutTypeはネイティブ側でenumサイズ(通常4バイト)だが、データ記述子ではT_UINT8として公開されている点が記述子正確性の問題として指摘されているため、マージ前に32ビット値に修正が必要
  • テスト実績: cDAC単体テスト3,118件成功、cDAC使用/ドキュメントテスト4件成功、clr.nativeデバッグビルド確認

#132636 Remove CoreCLR PAL semaphore support

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年08月21日 18:02:02(UTC)
  • マージ日時: 2026年09月10日 20:51:36(UTC)
  • ラベル: area-VM-coreclr

概要

CoreCLRのPALセマフォオブジェクトサポートを削除し、メタデータのUTSemReadWriteを新しいminipal_rwlock抽象化に置き換えました。minipal_rwlockはWindows上ではSRWLOCK、その他のプラットフォームではpthread_rwlock_tで実装され、サポートされている場合はライター優先度を指定します。この変更によりPALの同期化サーフェスを縮小しながら、メタデータロック契約とデバッガ管理を保持します。

変更内容

  • minipal読み書きロック追加: minipal_rwlockヘッダー(src/native/minipal/rwlock.h)と実装(src/native/minipal/rwlock.c)を新規追加、設定時機能検出とビルド接続を追加
  • メタデータロック移行: UTSemReadWriteからminipal_rwlockへの置き換え(ロックホルダークラス、ヘルパーマクロ、デバッグ書き込みロック追跡を更新)
  • PALセマフォ実装削除: セマフォオブジェクト実装(src/coreclr/pal/src/synchobj/semaphore.cpp)、公開API、互換性定数、専用テスト、エラー定数を削除
  • レガシーコード削除: utsem.hヘッダー(53行)、utsem.cpp実装、関連する#include文を削除
  • PALテスト削除: CreateSemaphore、ReleaseSemaphore、WFSOセマフォテストなど複数のセマフォ関連テストを削除

パフォーマンスへの影響

改善あり

シナリオ ベースライン 変更後 改善率
メタデータ読み取り 1.974 us 1.965 us -0.5%
メタデータ書き込み 267.846 us 259.448 us -3.1%

特にメタデータ書き込み性能が3.1%改善。ベンチマークは2回起動、5ウォームアップ反復、15測定反復(250ms)で実施。

関連Issue

なし

その他

互換性への影響: 破壊的変更

  • PAL公開APICreateSemaphoreW、ReleaseSemaphore、DuplicateHandle(セマフォ)が削除(内部実装のみ、`.NET公開APIではなくPAL内部)
  • PosixセマフォはProcess.cppのデバッガ起動調整に引き続き使用(独立した実装のまま)

レビュー懸念事項(Copilot指摘):

  • minipal_rwlock_initがwriter-preferenceのpthread_rwlockattr_setkind_np失敗時に初期化を失敗させる設計。ライター優先度は最適化のため、失敗時にデフォルトpthread_rwlock_initへのフォールバックが望ましい
  • メタデータロック解放時にデバッガCantStopCountの更新が削除された。これはインタロップデバッギング構成でのデバッガサスペンション動作を変更する可能性あり
  • CMakeの構成プローブでCMAKE_REQUIRED_LIBRARIESにpthreadが含まれてい

#132456 Add check for maximum possible size for [Content_Types].xml in Packaging

概要

悪意あるZIPパッケージによるメモリ枯渇攻撃を防ぐため、ZipArchiveEntryの更新モードでバッファ割り当て前に圧縮/非圧縮サイズの妥当性検証を追加しました。攻撃者が制御可能な破損したZIPヘッダサイズにより過度なMemoryStream事前割り当てが行われるのを防ぎます。

変更内容

  • System.IO.Compression/ZipArchiveEntry.cs: 更新モードのバッファリング時に、非圧縮サイズが圧縮サイズより異常に大きくないか検証するロジックを追加(同期処理)
  • System.IO.Compression/ZipArchiveEntry.Async.cs: 非同期バッファリングパスに同じ検証を適用
  • System.IO.Compression/tests/zip_InvalidParametersAndStrangeFiles.cs: 不正なサイズ宣言の拒否と妥当な圧縮率での受け入れをテスト
  • System.IO.Packaging/ZipPackage.cs: [Content_Types].xmlに対する最大サイズ制限チェックを追加
  • System.IO.Packaging/tests/Tests.cs: 不正なヘッダを持つ[Content_Types].xml読み込み時の回帰テストを追加
  • System.IO.Packaging/Strings.resx: 新しい例外メッセージリソースを追加

パフォーマンスへの影響

影響なし。本変更は防御的なバリデーション追加であり、正常なZIPファイル処理時のパフォーマンスに悪影響を与えません。むしろ悪意あるパッケージによる過度なメモリ割り当てを防止します。

関連Issue

#132394

その他

Copilotレビューで複数の指摘が提出されています:

  • Zip64シナリオでのオーバーフロー検出: サイズ累積時のチェックされないlong加算がオーバーフローの可能性
  • テストコード: Package.Open(ms)がデフォルトFileAccess.Readのため、Update-modeシナリオの検証が不完全
  • テストコード: テストパスワード内に"S3cur3P@ssw0rd"を使用しており、認証情報スキャン対策のため"PLACEHOLDER"への変更推奨

#132423 JIT: Improve modelling of AsyncResumedDef store in value numbering

概要

JITのValue Numbering分析でасync呼び出し後の「resumed」インジケータ定義をより正確にモデル化します。以下の2つのケースで、resumed値が必ず1であることを検出できるようになりました:

  1. 呼び出しが常にサスペンドする場合
  2. インジケータが既に1であり、再開時にのみ1が格納される場合

この改善により、以降のasync呼び出しでresumed値がカスタム定数にコンスタントフォールディングでき、同時にresumed=true時にはno-op関数の呼び出しを省略する最適化も追加されます。

変更内容

  • src/coreclr/jit/valuenum.cpp: fgValueNumberCallにasync resumed インジケータの値が必ず1となる条件を検出するロジックを追加。未知のVNではなく定数VNをresumed定義に割り当てるように改善
  • src/coreclr/jit/async.cpp: asyncウェイト変換時、resumed インジケータが1であることが判明している場合、no-op関数の呼び出し省略処理を追加(continueからbreakへの変更を含む)
  • src/tests/async/resumed-known-true/: resumedが既知定数となるケースをテストするための新規テストケース追加

パフォーマンスへの影響

resumed値のコンスタントフォールディングにより、以降のasync呼び出しでの冗長な値チェックが削減される可能性があります。no-op関数呼び出しの省略により、asyncメソッドの実行オーバーヘッドが軽減されます。具体的なベンチマーク数値は提供されていません。

関連Issue

#131576

その他

本変更はJITのコア部分(Value Numbering・async変換)に影響する高リスク変更であり、コード生成の正確性と下流の最適化への思わぬ影響について慎重な検証が必要とされています。


#132109 [release/9.0] Update dependencies from dotnet/arcade

概要

dotnet/arcadeの依存パッケージを9.0.0-beta.26406.11から9.0.0-beta.26458.10へ、2.9.0-beta.26406.11から2.9.0-beta.26458.10へ更新します。 これはrelease/9.0ブランチの定期的な依存関係更新です。

変更内容

  • eng/Version.Details.xml: arcade関連の20個のパッケージのバージョン情報を更新
  • eng/Versions.props: グローバルバージョンプロパティを更新
  • eng/common/Get-GitHubAppToken.ps1: GitHubトークン取得スクリプトを更新
  • eng/common/core-templates/job/onelocbuild.yml: ローカライゼーションビルドテンプレートを更新
  • eng/common/sdl/packages.config: SDLパッケージ設定を更新
  • global.json: グローバルJSON設定を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 更新対象パッケージ: Microsoft.DotNet.Arcade.Sdk、Microsoft.DotNet.Build.Tasks.Feed、Microsoft.DotNet.GenAPI、Microsoft.DotNet.Helix.Sdk、Microsoft.DotNet.XliffTasksなど計21個
  • この変更はMaestroボットによる自動更新

#131793 Fix double slash when rejoining USTAR prefix and name

概要

USTAR形式のTarアーカイブ読み込み時に、prefixフィールドが末尾に/を含む場合、prefixとnameを結合する際に不正な//が生成される問題を修正しました。prefixが既に/で終わっているかチェックしてから区切り文字を挿入するよう改善します。

_name = _prefix.EndsWith('/') ? $"{_prefix}{_name}" : $"{_prefix}/{_name}";

変更内容

  • TarHeader.Read.cs: ReadUstarAttributesメソッドで、_prefixが/で終わっているかを確認してから、区切り文字/を挿入する条件処理を追加。これにより、不正な二重スラッシュの生成を防止します。
  • TarReader.GetNextEntry.Tests.cs: 末尾に/を持つprefixを含むアーカイブのテストケース(38行)を新規追加し、修正の動作を検証。

パフォーマンスへの影響

影響なし(条件チェック追加による軽微なオーバーヘッドはほぼ無視できる水準)

関連Issue

#131793

その他

この修正はSystem.Formats.Tarライブラリの内部実装(非公開API)に対するバグ修正です。互換性への影響はありません。USTAR仕様に厳密に準拠していないアーカイブ(prefixに末尾スラッシュを含む)を正しく処理できるようになります。


目次