Pull Request on 2026年02月09日

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

注意点

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


目次

  1. #124201 Add exception catching comment to code review skill
  2. #124199 Use Helix ListFiles endpoint to work around dnceng#6072
  3. #124193 ci-analysis: Add Azure CLI guidance for AzDO pipeline investigation
  4. #124182 Update code review skill
  5. #124179 [release/8.0] Use correct name for AZL3 build image
  6. #124178 [release/9.0] Use correct name for AZL3 build image
  7. #124171 [release/10.0] Use correct name for AZL3 build image
  8. #124170 Use correct name for AZL3 build image
  9. #124151 Rename azdo-helix-failures to ci-analysis and improve SKILL.md
  10. #124150 Improve vmr-codeflow-status SKILL.md structure
  11. #124147 Optimize redundant checked context in JIT
  12. #124111 Fix Hypot documentation typo: correct second parameter reference
  13. #124104 Skip PROCAbortInitialize on WASM
  14. #124096 Fix missing release semantics in VolatilePtr
  15. #124080 Update stack trace patterns to handle Android platform stack trace
  16. #124077 Improve LoggerMessageGenerator and JsonSourceGenerator incrementality
  17. #124042 Fix integer overflow in ImmutableArray range validation
  18. #124032 Revert "Temporarily disable ios_arm64 platform builds"
  19. #124001 JIT: Compute async liveness for address exposed locals
  20. #124000 Fix mobile build and test failures in extra-platforms pipeline
  21. #123977 [browser] fix WBT EventPipeDiagnosticsTests timing
  22. #123966 Revert #112403
  23. #123958 Add getWasmTypeSymbol API to JIT-EE interface
  24. #123949 [browser] acquire emsdk for coreCLR
  25. #123815 [clr-interp] Implement cached virtual/interface dispatch
  26. #123576 Fix some defines in libs cmake
  27. #123407 Implement CreateFromDirectory TarEntryFormat overloads
  28. #123379 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'

#124201 Add exception catching comment to code review skill

  • 作成者: @stephentoub
  • 作成日時: 2026年02月09日 21:28:22(UTC)
  • マージ日時: 2026年02月09日 22:04:21(UTC)
  • ラベル: area-skills

概要

コードレビュースキルのガイダンスを更新し、例外を無視する try/catch ブロックに対して懐疑的になるよう明示的に推奨しています。予期しないエラーを隠蔽するのではなく、失敗を表面化させることでレビュー品質を向上させます。

変更内容

  • .github/skills/code-review/SKILL.md
    • 新しいガイドラインを追加(+3行)
    • 例外の無視(exception swallowing)が予期しない根本原因の失敗を隠蔽する可能性について警告
    • "fail fast / 不正な入力を隠蔽しない"戦略をサポートする説明的な引用を追加

パフォーマンスへの影響

影響なし (このPRは開発プロセスドキュメントの更新であり、ランタイムやコンパイラの動作に影響しません)

関連Issue

なし

その他

このPRは.NETランタイムプロジェクトのコードレビュー文化を改善するものです。開発者に対して、例外を無視する実装パターンに慎重になるよう促し、以下の原則を強化します:

  • 例外を無視する場合は明確な理由が必要
  • エラー条件を隠蔽しないアーキテクチャ設計
  • fail-fast アプローチの重要性

これにより、PR レビュー時に予期しない失敗がより早期に検出される可能性が高まります。


#124199 Use Helix ListFiles endpoint to work around dnceng#6072

  • 作成者: @lewing
  • 作成日時: 2026年02月09日 21:25:17(UTC)
  • マージ日時: 2026年02月09日 23:35:42(UTC)
  • ラベル: area-skills

概要

Helix work item Details APIの2つのバグ(サブディレクトリ内のファイル名が平坦化される、Unicode文字が拒否される)に対処するため、CI分析スキルをListFilesエンドポイント経由で取得するように変更。これにより、完全なサブディレクトリパスを保持し、Unicode文字を含むファイル名に対応したブロブストレージURIが取得できます。

// ListFilesエンドポイント使用でUnicode対応パスとサブディレクトリ情報を保持
// 例: xharness-output/logs/test/build.binlog → 完全なパスで取得可能

変更内容

  • Get-CIStatus.ps1 (+38/-11): Get-HelixWorkItemFiles 関数追加。ListFiles エンドポイント経由でファイル情報取得し、Details APIから取得した Files リストを置き換え
  • helix-artifacts.md (+4/-3): Helix バグの説明とListFilesベースの回避策をドキュメント化

パフォーマンスへの影響

影響なし。追加のAPI呼び出しが発生しますが、CI分析の文脈では無視できるレベルです。むしろ、ブロブストレージへの直接リンク取得により、既存のリダイレクトレイヤーをスキップでき、多数のUnicodeファイル名を含むケースで信頼性が向上します。

関連Issue

  • dotnet/dnceng#6072(Helix Details APIのファイルURI生成バグ)
  • PR #124125(Unicode パス検証対象)

その他

潜在的な懸念点(Copilot指摘): Get-HelixWorkItemDetails でワークアイテム名がURL エンコードされていないため、スペースや #+、Unicode 文字を含む名前の場合に失敗リスク有。Get-HelixWorkItemFilesEscapeDataString と同じ方式でエンコード統一推奨。


#124193 ci-analysis: Add Azure CLI guidance for AzDO pipeline investigation

  • 作成者: @lewing
  • 作成日時: 2026年02月09日 18:28:00(UTC)
  • マージ日時: 2026年02月09日 20:33:20(UTC)
  • ラベル: area-skills

概要

このPRは、AzDO(Azure DevOps)パイプラインの調査に関するドキュメントに、Azure CLIの使用ガイダンスを追加するものです。手動でのREST API構築への依存を減らし、az CLIコマンドの活用を推奨しています。主な追加内容は、認証確認、パイプラインクエリ、アーティファクト一覧化、およびREST API フォールバック条件の説明です。

変更内容

  • ファイル: .github/skills/ci-analysis/SKILL.md (+99行)
  • 新セクション "Deep Investigation with Azure CLI" を追加
    • 認証チェック: az のインストール確認、認証状態確認、azure-devops 拡張機能の確認
    • パイプラインクエリ: az pipelines list/show/runs list/show コマンドの使用方法
    • アーティファクト一覧化: az pipelines runs artifact list
    • REST API フォールバック: ビルドタイムラインとアーティファクトダウンロードのみ記載
    • パイプラインYAML: dotnet repos は eng/pipelines/ ディレクトリ構造を使用
  • 設計原則: az CLI を優先(認証、ページング、フォーマット処理が自動化)
  • 並行実行の安全性: az devops configure --defaults の使用禁止(複数エージェント実行時に競合)
  • 用語修正: AADアクセストークンの明確化
  • 新しいTip #8: REST呼び出し前に az account show で検証

パフォーマンスへの影響

影響なし。本変更はドキュメント追加であり、ランタイムやコンパイルに影響しません。

関連Issue

なし

その他

  • 本変更は開発者向けのドキュメント拡充であり、CI/CD パイプライン調査の効率化を目的としています
  • --query (JMESPath) と -o table オプションの活用により、スクリプト作成のオーバーヘッドを削減できます
  • グローバル設定による競合を避けるため、--org-p フラグの明示的指定が推奨されています

#124182 Update code review skill

  • 作成者: @stephentoub
  • 作成日時: 2026年02月09日 16:45:40(UTC)
  • マージ日時: 2026年02月09日 17:53:48(UTC)
  • ラベル: needs-area-label

概要

dotnet/runtimeのコードレビュースキルドキュメントを更新し、レビュー出力の標準化、レビュー前のコンテキスト収集の推奨、複数モデル選択のガイダンスを改善しました。これにより、差分のみのレビューによるエラーを削減し、より効果的なコードレビュープロセスを実現します。

変更内容

  • .github/skills/code-review/SKILL.md
    • 「Step 0: Gather Context」チェックリストを追加し、レビュー前のコンテキスト収集を標準化
    • 複数モデル/サブエージェント選択ルールを改良し、タイムアウトポリシーを追加
    • 標準化されたレビュー出力フォーマットテンプレートとガイドラインを導入

パフォーマンスへの影響

影響なし(ドキュメント更新のため、実行時パフォーマンスへの影響はありません)

関連Issue

なし

その他

このドキュメント更新は、自動コードレビューツールやAIアシスタント(Copilotなど)が、より正確で一貫性のあるレビューを提供できるようにするためのプロセス改善です。特に大規模リポジトリでの効率的なレビューに貢献する設計となっています。


#124179 [release/8.0] Use correct name for AZL3 build image

  • 作成者: @akoeplinger
  • 作成日時: 2026年02月09日 15:07:48(UTC)
  • マージ日時: 2026年02月09日 15:13:39(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

Azure DevOps パイプライン設定で AZL3(Azure Linux 3)ビルドイメージの識別子を正しい名前に更新しました。公開ビルドプール用と内部ビルドプール用で適切なイメージ名を指定しています。

変更内容

ファイル: eng/pipelines/common/evaluate-paths-job.yml

  • 公開ビルドプールの ImageOverride デマンドを build.azurelinux.3.amd64.open に更新
  • 内部ビルドプールの ImageOverride デマンドを build.azurelinux.3.amd64 に更新

パフォーマンスへの影響

影響なし

関連Issue

#124170(メインブランチへの同一変更)

その他

  • release/8.0 ブランチへのバックポート
  • ビルドインフラストラクチャの構成更新であり、ランタイムコードの変更はありません

#124178 [release/9.0] Use correct name for AZL3 build image

  • 作成者: @akoeplinger
  • 作成日時: 2026年02月09日 15:06:43(UTC)
  • マージ日時: 2026年02月09日 15:12:52(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

Azure Pipelines設定ファイルにおいて、Azure Linux 3(AZL3)ビルドイメージの正しい識別子を使用するよう修正しました。公開ビルドプール用と内部ビルドプール用の両方のImageOverride設定が更新され、CI/CDパイプラインが正しいビルド環境を参照するようになります。

変更内容

  • eng/pipelines/common/evaluate-paths-job.yml (+2/-2)
    • 公開ビルドプール AZL3のImageOverridebuild.azurelinux.3.amd64.openに更新
    • 内部ビルドプール AZL3のImageOverridebuild.azurelinux.3.amd64に更新

パフォーマンスへの影響

影響なし。本変更はビルド環境設定のみを修正するもので、ランタイムコードやコンパイラロジックへの変更ではありません。

関連Issue

#124170のバックポート(release/9.0ブランチへの適用)

その他

  • 本PRはリリースブランチ(release/9.0)への定時バックポートです
  • ビルドイメージ識別子の誤りにより、CI/CDパイプラインが意図した環境でビルドされていなかった可能性があります
  • AZL3(Azure Linux 3)は.NETランタイムの公式サポートプラットフォームとして使用されています

#124171 [release/10.0] Use correct name for AZL3 build image

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年02月09日 12:35:11(UTC)
  • マージ日時: 2026年02月09日 15:12:29(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

.NET 10.0のリリースブランチにおいて、AZL3(Azure Linux 3)ビルドイメージの名前を正しく修正するCI設定の変更です。本PR #124170をrelease/10.0ブランチへバックポートしたもので、CI/CDパイプラインのみに影響します。

変更内容

  • eng/pipelines/common/evaluate-paths-job.yml: AZL3ビルドイメージ参照名を修正(+2/-2行)

パフォーマンスへの影響

影響なし。この変更はビルドインフラストラクチャの設定変更であり、ランタイムパフォーマンスには直接的な影響はありません。

関連Issue

  • #124170(本PRのバックポート元)

その他

  • 内部で検出されたCI専用の変更
  • 回帰リスクなし
  • 実装上の破壊的変更なし
  • .NET 10.0はrelease/X.0ブランチへの直接マージが正しいバージョニング方針に従っている

#124170 Use correct name for AZL3 build image

  • 作成者: @akoeplinger
  • 作成日時: 2026年02月09日 12:25:57(UTC)
  • マージ日時: 2026年02月09日 12:32:34(UTC)
  • ラベル: needs-area-label

概要

Azure DevOps のビルドパイプラインで使用されている Azure Linux 3(AZL3)ビルドイメージの識別子を、一時的な識別子から正式な識別子に更新するパッチです。パブリックパイプラインと内部パイプラインの両方で、ジョブが意図された AZL3 エージェントに正しくスケジュールされるようになります。

変更内容

  • eng/pipelines/common/evaluate-paths-job.yml (+2/-2)
    • パブリックビルドプール: ImageOverrideAzure-Linux-3-Amd64-Public から build.azurelinux.3.amd64.open に変更
    • 内部ビルドプール: ImageOverrideAzure-Linux-3-Amd64 から build.azurelinux.3.amd64 に変更

パフォーマンスへの影響

影響なし。

この変更はビルドインフラストラクチャの設定更新であり、実行時のパフォーマンスに直接的な影響はありません。ただし、正しいエージェントへのジョブスケジューリングが確保されることで、ビルド実行の安定性が向上する可能性があります。

関連Issue

なし。

その他

この変更は命名の正確性を確保するもので、一時的な識別子から正式な命名規則への移行です。Azure DevOps のエージェント管理において、正確なイメージ識別子の使用は重要なため、このような修正は早期に適用されるべき内容です。


#124151 Rename azdo-helix-failures to ci-analysis and improve SKILL.md

  • 作成者: @lewing
  • 作成日時: 2026年02月08日 20:46:03(UTC)
  • マージ日時: 2026年02月09日 00:25:12(UTC)
  • ラベル: area-skills

概要

CI分析スキルの機能拡張と整理が行われました。ディレクトリ・スクリプト名がazdo-helix-failuresからci-analysisへリネームされ、より広範なCI分析に対応できるようになりました。SKILL.mdが大幅に改善され、使用パターン、制限事項、決定テーブル、アンチパターンが明確に文書化されました。PowerShell 5.1互換性の改善も実施されています。

変更内容

  • ディレクトリ/スクリプトのリネーム: azdo-helix-failuresci-analysisGet-HelixFailures.ps1Get-CIStatus.ps1
  • SKILL.md大幅改訂 (+183行): スキルビルダーパターンの詳細化
    • 重要ルール記載(PR承認/ブロック、ブランチ切り替え禁止)
    • トリガーキーワード拡張("why is CI red"、"test failures"、"retry CI"等)
    • 3つの動作モード決定テーブル追加(PR分析 vs Build ID vs Helix Job)
    • アンチパターン警告の追加(推測による判定、Canceled/Failed混同など)
  • PowerShell互換性修正: em-dashをASCIIダッシュに変更、UTF-8 BOM追加
  • キャッシュディレクトリリネーム: helix-failures-cacheci-analysis-cache
  • 参照ドキュメント更新: ファイルパス参照の修正

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更は主にドキュメント整理とスキルメタデータの改善です。実装ロジックの変更は最小限(スクリプト修正12行)であり、既存の機能動作には大きな変更はありません。ただしスクリプト名およびディレクトリ構造が変更されるため、既存の自動化やリファレンスがある場合は更新が必要です。Copilotレビューで新規指摘がないことから、コード品質上の懸念は検出されていません。


#124150 Improve vmr-codeflow-status SKILL.md structure

  • 作成者: @lewing
  • 作成日時: 2026年02月08日 20:22:48(UTC)
  • マージ日時: 2026年02月09日 01:18:36(UTC)
  • ラベル: area-skills

概要

vmr-codeflow-status スキルのSKILL.md ドキュメントを改善し、スキル・ビルダーの方法論に基づいてドキュメント構造を最適化しました。スクリプト自体の変更はなく、ドキュメンテーション改善のみです。

変更内容

ファイル: .github/skills/vmr-codeflow-status/SKILL.md (+26行/-6行)

主な改善点:

  • Critical rules セクション追加 — PR承認/変更リクエスト(--approve/--request-changes)やブランチ切り替え(git checkout/gh pr checkout)の禁止ルールを明記
  • トリガー説明の拡張flow statusmissing backflowblocked などの一般的なユーザクエリに対応するキーワードを追加
  • Two Modes セクション — PR分析モードと流れの健全性チェック(-CheckMissing)の違いを決定テーブルで明確化
  • インライン警告-PRNumber-CheckMissing の併用注意事項を追加
  • "What the Script Does"の分割 — 11項目の混合リストから、PR分析モード(8ステップ)と流れの健全性モード(4ステップ)に分離
  • インライン注釈Unknown ステータスは健全性を示さないこと、および aka.ms リダイレクト挙動(301 vs 302)について説明

パフォーマンスへの影響

影響なし(ドキュメンテーション変更のみ)

関連Issue

なし

その他

スクリプト機能の変更を伴わないドキュメント専用更新です。Runtime Infrastructure チームへの通知が含まれています。


#124147 Optimize redundant checked context in JIT

  • 作成者: @EgorBo
  • 作成日時: 2026年02月08日 18:30:31(UTC)
  • マージ日時: 2026年02月09日 15:33:24(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT コンパイラの checked context における冗長なオーバーフロー チェック フラグを最適化する変更です。GetRangeFromAssertions を活用して、範囲解析により実行時にオーバーフローが発生しないと判定できる場合、不要なオーバーフロー チェック命令(jo とそれに続く CORINFO_HELP_OVERFLOW 呼び出し)を削除します。

int Case1(int[] arr)
{
    // JIT が配列サイズを [0..0x7FFFFFC7] と認識しているため
    // +10 はオーバーフローしない
    return checked(arr.Length + 10);
}

変更内容

  • assertionprop.cpp (+54): 新しい最適化ロジックの追加
  • rangecheck.cpp/h (+38/+27): 範囲チェック処理と GetRangeFromAssertions の拡張
  • compiler.h (+1): 関連ヘッダの追加
  • CheckedContext.cs/csproj (+819/+9): 最適化検証用の包括的なテストケース追加

パフォーマンスへの影響

改善:大幅なコード生成効率の向上

  • Case1: 生成コード削減(23→7バイト、約70%削減)。不要な jo チェックと例外処理フロー削除
  • Case2: コード削減(35→17バイト、約51%削減)。範囲チェック後の乗算オーバーフロー検証を削除
  • Case3: コード削減(52→32バイト、約38%削減)。事前条件から導出される引き算結果の検証を削除

破壊的変更なし。既存の checked 機能の動作は変わらず、最適化による安全性への影響なし。

関連Issue

不明(PR本文に関連Issue記載なし)

その他

  • 広範なテストケース(819行)でこれまで見落とされていた最適化ケースもカバー
  • アセンブリ出力例により、機械語レベルでの改善を具体的に検証可能

#124111 Fix Hypot documentation typo: correct second parameter reference

  • 作成者: @Copilot
  • 作成日時: 2026年02月06日 22:49:39(UTC)
  • マージ日時: 2026年02月09日 20:41:54(UTC)
  • ラベル: area-System.Numerics

概要

TensorPrimitives.HypotのXML ドキュメント内にある誤りを修正したPRです。メソッドのリマーク部分で、T.Hypot(x[i], x[i])と誤記されていた箇所を、正しいT.Hypot(x[i], y[i])に訂正しました。メソッドシグネチャの(x, y)という2つのパラメータに対応した正確なドキュメント記述になります。

変更内容

  • ファイル: src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.Hypot.cs
  • 変更内容: XMLドキュメント内の<remarks>セクション(21行目)において、<paramref>タグの第2パラメータ参照をxからyに修正(+1行/-1行)

パフォーマンスへの影響

影響なし

このPRはドキュメント修正のみで、実装コードに変更はありません。

関連Issue

なし

その他

  • 変更の性質: ドキュメント修正のみ(非機能変更)
  • 影響範囲: IntelliSenseやドキュメント生成ツルに表示されるメタデータのため、開発者体験の向上に寄与

#124104 Skip PROCAbortInitialize on WASM

  • 作成者: @steveisok
  • 作成日時: 2026年02月06日 20:08:18(UTC)
  • マージ日時: 2026年02月09日 09:39:35(UTC)
  • ラベル: area-PAL-coreclr

概要

WASM環境でのランタイム初期化失敗を修正するPRです。WASM環境ではミニダンプがサポートされていないため、DOTNET_DbgEnableMiniDump=1の設定時にPROCAbortInitializeg_szCoreCLRPathの未設定によって失敗していました。この変更により、WASM上での初期化処理をスキップします。

変更内容

  • src/coreclr/pal/src/init/pal.cpp (+2/-3)
    • PROCAbortInitialize処理をWASM環境でスキップするロジックを追加
    • 既にスキップされているLOADInitializeCoreCLRModuleと同様の条件分岐を実装

パフォーマンスへの影響

影響なし (初期化処理の条件判定追加のみで、実行時パフォーマンスに変化なし)

関連Issue

#124088

その他

  • ミニダンプはWASM環境では利用不可(createdumpバイナリが存在しない、ブラウザ環境がクラッシュダンプをサポートしない)
  • 変更はシンプルで最小限の修正となっており、既存のWASM対応パターンに従っている

#124096 Fix missing release semantics in VolatilePtr

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年02月06日 18:12:27(UTC)
  • マージ日時: 2026年02月09日 04:45:39(UTC)
  • ラベル: area-VM-coreclr

概要

VolatilePtrが基底クラスVolatile<P>operator=をオーバーライドしていないため、コンパイラが生成する代入演算子がrelease semanticsを伴うメモリバリア(stlr)をバイパスして単純なストア(str)を実行していた問題を修正します。using宣言で基底クラスのoperator=をスコープに導入し、明示的なコピー代入演算子を追加することで、メモリバリアが確実に実行されるようになります。

// 修正前: メモリバリアがバイパスされる
VolatilePtr ptr1 = ..., ptr2 = ...;
ptr1 = ptr2; // 単純なストア実行(メモリバリアなし)

// 修正後: release semanticsで正しく実行される
ptr1 = ptr2; // stlr (ARM64) またはVolatileStore()呼び出し

変更内容

  • src/coreclr/gc/env/volatile.h (+10行)

    • VolatilePtrクラスにusing Volatile<P>::operator=宣言を追加
    • 明示的なコピー代入演算子を追加
  • src/coreclr/inc/volatile.h (+13行)

    • VolatilePtrクラスに同様の修正を実装

パフォーマンスへの影響

改善: メモリバリアが確実に実行されることで、ARM64プロセッサ上での正しいメモリ順序保証が復元されます。これまで実行されていなかったstlr命令がrelease semanticsとして実行され、GCやマルチスレッド環境でのメモリ一貫性が保証されます。

関連Issue

関連IssueはPull Request本文では明記されていません。

その他

このは破壊的なバグ修正です。VolatilePtrを使用しているコードがメモリバリアの欠如に依存していた場合、動作が変わる可能性があります。ただし、正しいメモリセマンティクスの実装であるため、既存コードはこの修正から恩恵を受けるはずです。


#124080 Update stack trace patterns to handle Android platform stack trace

  • 作成者: @kotlarmilos
  • 作成日時: 2026年02月06日 09:53:53(UTC)
  • マージ日時: 2026年02月09日 08:31:40(UTC)
  • ラベル: area-Diagnostics-coreclr runtime-async

概要

Android プラットフォームでのスタックトレース出力形式の違いに対応するため、Ctor_Async_TestData テストを更新しました。Android では、スタックトレースにファイル名と行番号が含まれないため、テスト検証ロジックをプラットフォーム別に分岐させています。

変更内容

  • src/libraries/System.Diagnostics.StackTrace/tests/StackTraceTests.cs
    • Ctor_Async_TestData テストのスタックトレースパターン検証ロジックを更新
    • Android プラットフォーム固有の動作(ファイル名・行番号の欠落)に対応したパターンマッチングを追加
    • 行数変更: +16/-11

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更はテストロジックの修正であり、ランタイムやライブラリの実装には影響しません。Android プラットフォームでの環境差異に起因するテスト失敗を解決するための対応です。スタックトレース取得の実装自体は変更されていない点に留意してください。


#124077 Improve LoggerMessageGenerator and JsonSourceGenerator incrementality

  • 作成者: @Copilot
  • 作成日時: 2026年02月06日 09:06:33(UTC)
  • マージ日時: 2026年02月09日 14:59:52(UTC)
  • ラベル: area-Extensions-Logging source-generator

概要

LoggerMessageGeneratorJsonSourceGeneratorの増分生成を改善するPRです。両ジェネレータがパイプラインにCompilationを渡していたため、任意のコンパイル変更で全体が再実行されていました。本PRでは、属性付き構文ノードの変更時のみ再処理するよう、パイプラインをリファクタリングしています。Roslyn 3.11、4.0、4.4、4.8に対応しています。

変更内容

LoggerMessageGenerator関連:

  • パース処理をForAttributeWithMetadataNameトランスフォーム内に移動し、構造的等価性を持つ不変のspecを返却
  • WithTrackingName(StepNames.LoggerMessageTransform)を追加(Roslyn 4.4以上)
  • Execute段階でHashSetを使用して重複排除(O(1))
  • System.Exceptionが利用不可の場合にMissingRequiredType診断を報告
  • 複数のバグを修正(N×N重複、ネストクラス衝突、null処理、部分クラスマージング)
  • netstandard2.0向けのポリフィルとヘルパーを追加

JsonSourceGenerator関連:

  • CompilationProvider依存を削除
  • KnownTypeSymbolsをトランスフォーム内に移動

テスト:

  • 増分生成テストを追加(Roslyn 4.8以上)
  • 正規のツリートラッキングと一貫したパースオプションを使用

パフォーマンスへの影響

改善: ジェネレータがパイプライン値をキャッシュし、属性付きメソッド変更時のみ再処理します。これにより全体再実行が回避され、ビルド時間が短縮されます。

懸念事項: テストプロジェクトおよびRoslyn 4.0生成パスで、DiagnosticInfo.GetTrimmedLocationがメソッドのシンタックスツリー参照を削除するため、#pragma warning disable指令による診断抑制が機能しなくなります。これはSystem.Text.Jsonジェネレータにも既に存在する制限ですが、エンドユーザーに対する動作上の退行です。

関連Issue

dotnet/runtime#76119、dotnet/runtime#93309

その他

  • すべてのジェネレータバリアント(Roslyn 3.11、4.0、4.4、4.8)でビルド成功確認済み
  • CI失敗を修正
  • 部分クラスマージングの最適化を実施

#124042 Fix integer overflow in ImmutableArray range validation

  • 作成者: @prozolic
  • 作成日時: 2026年02月05日 13:47:49(UTC)
  • マージ日時: 2026年02月09日 15:47:55(UTC)
  • ラベル: area-System.Collections community-contribution

概要

ImmutableArrayの範囲検証でInteger Overflowが発生していた問題を修正。start + lengthの加算時にオーバーフローが発生すると、負の値になり検証をすり抜けて、配列割り当て時にOutOfMemoryExceptionが発生していました。例えば、start=1, length=int.MaxValueの場合にオーバーフローが発生します。

変更内容

  • ImmutableArray.cs: 範囲検証ロジックを修正し、start + lengthのInteger Overflowを検出するように変更(4行削除、4行追加)
  • ImmutableArrayTest.cs: Integer Overflow時の境界値テストケースを追加(13行追加)

パフォーマンスへの影響

影響なし。検証ロジックの追加であり、パフォーマンスに対する悪影響はありません。むしろ不正な値がメモリ割り当てまで進むのを早期に防ぎます。

関連Issue

#124043

その他

本修正はセキュリティ関連の脆弱性修正です。Integer Overflowによる検証回避をブロックすることで、不正なメモリ割り当て要求を事前に防止。特にユーザー入力からstartlengthパラメータを受け取る場合に重要です。


#124032 Revert "Temporarily disable ios_arm64 platform builds"

  • 作成者: @kotlarmilos
  • 作成日時: 2026年02月05日 08:56:48(UTC)
  • マージ日時: 2026年02月09日 10:55:34(UTC)
  • ラベル: area-Infrastructure

概要

iOS ARM64 プラットフォームビルドの一時的な無効化を取り消すリバートPRです。PR #123985で無効化されたiOS ARM64ビルドを再度有効化し、Mono、CoreCLR、Native AOTランタイムフレーバー全体でのiOS ARM64ビルドを復活させます。これにより、メインランタイムパイプラインと追加プラットフォームパイプラインの両方でiOS ARM64ビルドが実行されるようになります。

変更内容

  • eng/pipelines/runtime.yml (+3/-6)

    • Mono smoke tests、CoreCLR smoke tests、Native AOT testsで計3箇所のiOS ARM64ビルドを再度有効化
    • GitHub issue #123796の追跡コメントを削除
  • eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml (+6/-12)

    • Mono、CoreCLR、Native AOT構成全体で計6箇所のiOS ARM64ビルドを再度有効化
    • 異なるテストシナリオ間での追跡コメントを削除

パフォーマンスへの影響

影響なし。ビルドパイプライン設定の復元のため、パフォーマンスの改善・低下による直接的な影響はありません。ただし、iOS ARM64ビルドが再実行されることで、CI/CDパイプライン全体の実行時間が増加する可能性があります。

関連Issue

  • #123985(このPRでリバートされた元のPR)
  • #123796(一時的な無効化の理由となった追跡Issue)

その他

このリバートは、iOS ARM64ビルドで発生していた問題が解決されたことを示唆しています。Copilot reviewerによる検査結果は問題なしとされました。


#124001 JIT: Compute async liveness for address exposed locals

  • 作成者: @jakobbotsch
  • 作成日時: 2026年02月04日 12:39:15(UTC)
  • マージ日時: 2026年02月09日 11:32:00(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITのliveness計算ロジックを改善し、アドレス公開ローカル変数のliveness情報をasync中断ポイント(suspension points)で正確に計算するよう修正しました。ローカル変数のアドレスはasync中断ポイントを跨いで取得されないため、より正確なliveness情報が得られます。

変更内容

  • src/coreclr/jit/liveness.cpp
    • アドレス公開ローカル変数のliveness計算ロジックを更新
    • async中断ポイント時点でのliveness追跡の改善
    • 変更行数: +33/-27(総60行)

パフォーマンスへの影響

影響なし

本変更はliveness情報の計算精度向上に関するもので、生成コードのパフォーマンスやメモリ使用量への直接的な影響はありません。ただしJIT最適化がより正確なliveness情報に基づくため、最適化機会の改善につながる可能性があります。

関連Issue

#123500 に基づく変更

その他

  • Copilotレビューで2つのコメント生成
  • async/awaitを使用したメソッドにおいて、アドレス公開ローカル変数(refoutで渡された変数など)の生存期間追跡が改善されます

#124000 Fix mobile build and test failures in extra-platforms pipeline

  • 作成者: @kotlarmilos
  • 作成日時: 2026年02月04日 11:53:25(UTC)
  • マージ日時: 2026年02月09日 13:27:57(UTC)
  • ラベル: os-android area-Infrastructure os-ios

概要

extra-platformsパイプラインでのモバイルビルドおよびテスト失敗を修正するPRです。ZipMergedPayloadDirectoryターゲットが削除されたターゲットを参照していた問題を解決し、Native AOT モバイルテスト用のマーカーを追加、Androidの共有ライブラリテストを除外、Apple モバイルの不安定なソケットテストを無効化しました。

変更内容

  • helixpublishwitharcade.proj (+11/-7)

    • ZipMergedPayloadDirectoryターゲットをPrepareMergedTestPayloadDirectoriesからPreparePayloadDirectoriesに更新(PR #123110でインライン化)
    • StandaloneTestRunner マーカーをNative AOT モバイルテストに追加
    • Androidの共有ライブラリに対するテストマーカーを除外
    • Apple モバイルの不安定なソケットテストを無効化
  • GetHostEntryTest.cs (+1/-0)

    • テストマーカー追加
  • SendReceive.cs (+2/-1)

    • テストマーカー更新
  • SocketAsyncEventArgsTest.cs (+3/-0)

    • テストマーカー追加

パフォーマンスへの影響

影響なし。本変更は厳密にはテストインフラストラクチャの修正であり、ランタイムまたはライブラリのパフォーマンスに直接的な影響はありません。

関連Issue

その他

  • Copilot review により1件のコメント生成
  • Apple iOS/tvOS/watchOS および Android プラットフォームのテスト信頼性向上に寄与

#123977 [browser] fix WBT EventPipeDiagnosticsTests timing

  • 作成者: @pavelsavara
  • 作成日時: 2026年02月04日 00:53:34(UTC)
  • マージ日時: 2026年02月09日 10:59:12(UTC)
  • ラベル: arch-wasm area-Diagnostics-mono os-browser

概要

WebAssembly(WASM)環境でのEventPipeDiagnosticsテストのタイミングに関する問題を修正。主な修正は、Playwrightが非同期操作を待つことでEventPipeをブロックしていた問題を解決し、テストの安定性を向上させています。また、テストコードの可読性向上とサンプリング期間の延長(2秒→5秒)が含まれています。

変更内容

  • EventPipeDiagnosticsTests.cs: Playwrightのpromise待機処理を修正し、テストメソッド名を汎用的なCpuProfileTestから機能をより反映した名前に変更。SetupCounterPageをリファクタリングして引数複雑性を削減。サンプリング期間を2秒から5秒に延長
  • Counter.razor: 非同期処理に関連する小規模な修正(3行追加、1行削除)
  • sendtohelix-wasm.targets: テスト実行時のモノラン環境識別用プレフィックス(mono/clr)を追加(7行追加、5行削除)

パフォーマンスへの影響

  • 改善点: サンプリング期間を5秒に延長することで、より安定したCPUプロファイリングデータ取得が可能に。Playwrightのpromise待機がEventPipeをブロックしていた問題を解決することで、診断パイプラインの処理効率向上
  • その他: テスト実行時間は若干増加(サンプリング期間延長により)

関連Issue

Issue #123977

その他

  • テスト結果の可視性向上:mono/clrプレフィックスが追加され、テスト実行ジョブがどの環境(mono/clr)で動作したかを容易に識別可能に
  • WASMプラットフォーム向けのEventPipe診断テストの信頼性向上

#123966 Revert #112403

  • 作成者: @agocke
  • 作成日時: 2026年02月03日 21:34:10(UTC)
  • マージ日時: 2026年02月09日 18:29:12(UTC)
  • ラベル: area-GC-coreclr

概要

PR #112403で導入されたGC(ガベージコレクション)のピン昇格/降格処理の最適化が一部シナリオでハング(無応答)を引き起こすため、その変更を完全に戻すリバートPRです。ピン昇格決定ロジックをシンプルなインライン実装に戻し、抽出されたヘルパー関数を削除することで安定性を優先します。高ピン処理シナリオではパフォーマンス低下の可能性があります。

変更内容

  • src/coreclr/gc/gcpriv.h

    • decide_promote_gen1_pins_p 関数シグネチャの削除
    • demote_gen1_p フラグをnon-regions ビルド用に復元
    • ヘルパー関数宣言の削除
  • src/coreclr/gc/gc.cpp

    • 抽出されたヘルパー関数の削除
    • attribute_pin_higher_gen_alloc ロジックを呼び出し箇所にインライン化
    • オリジナルの降格決定ロジックを復元
    • regions ビルド用の decide_on_demotion_pin_surv 関数シグネチャを簡略化

パフォーマンスへの影響

懸念点あり: 高ピン処理シナリオ(多数のオブジェクトがGCハンドルでピンされている環境)ではパフォーマンス低下の可能性があります。PR #112403で実装された最適化はピン昇格の判定処理を効率化していたため、その恩恵を失います。ただし、安定性(ハング回避)を優先した変更です。

関連Issue

  • #112403(原因となった最適化PR)
  • #123966(おそらく関連する別の問題)

その他

このリバートは破壊的でない変更です。内部GC実装の最適化撤回であり、公開APIに影響はありません。ハングの具体的な再現条件や詳細な根本原因は記載されていないため、今後の改善には詳細なテストケース・ベンチマーク分析が必要と推測されます。


#123958 Add getWasmTypeSymbol API to JIT-EE interface

  • 作成者: @Copilot
  • 作成日時: 2026年02月03日 19:11:07(UTC)
  • マージ日時: 2026年02月09日 17:29:43(UTC)
  • ラベル: area-crossgen2-coreclr

概要

WebAssembly JIT コンパイラが WASM ネイティブ型のタイプシンボルハンドルを取得するための新しい JIT-EE インターフェース API getWasmTypeSymbol を追加します。この PR は完全なクロスレイヤプランビングを提供するインフラストラクチャ変更で、実装は UNREACHABLE()NotImplementedException などのプレースホルダスタブで遅延されています。

// CEEInfo インターフェースに追加
CORINFO_WASM_TYPE_SYMBOL_HANDLE getWasmTypeSymbol(CorInfoType* types)

変更内容

ファイル 内容
コアインターフェース corinfo.h, ICorStaticInfo CORINFO_WASM_TYPE_SYMBOL_HANDLE ハンドル型と CorInfoWasmType 列挙型を定義、仮想メソッド追加
実装スタブ jitinterface.cpp, CorInfoImpl.cs CEEInfo と AOT コンパイラに UNREACHABLE()/NotImplementedException スタブを追加
自動生成 jiteeversionguid.h, *_generated.h/.cs JIT-EE バージョン GUID 更新、ラッパー、名前テーブル、スタブ自動生成
SuperPMI methodcontext.h/cpp, lwmlist.h, agnostic.h LightWeightMap エントリ(パケット 235)、rec/dmp/rep ロジック、インターセプタ追加
AOT コンパイラ WasmTypeNode.cs, ObjectNodeSection.cs WasmTypeNode クラス新規作成(ObjectNode 継承)、WasmTypeSection 定数追加
emitwasm.cpp 間接呼び出し発行時に新 API を一時的に呼び出し

計 26 ファイル、141 行追加。

パフォーマンスへの影響

影響なし - 本変更はインフラ構築のみで、実装はスタブのため機能動作しません。実装時のパフォーマンス特性は後続の機能実装 PR で評価されます。

関連Issue

なし

その他

  • 互換性: JIT-EE インターフェースバージョン GUID 更新(互換性破壊)- JIT と実行エンジンの再コンパイル必須
  • テスト基盤: SuperPMI による完全なテスト・リプレイ機構が整備されており、将来の機能実装を効率的にサポート
  • プレースホルダ実装: ReadyToRun コンパイラは WasmTypeNode を返す機能実装がありますが、RyuJit は例外スロー、CEEInfo は UNREACHABLE() で機能実装は遅延中

#123949 [browser] acquire emsdk for coreCLR

  • 作成者: @pavelsavara
  • 作成日時: 2026年02月03日 16:31:38(UTC)
  • マージ日時: 2026年02月09日 10:52:34(UTC)
  • ラベル: arch-wasm area-Infrastructure os-browser

概要

Emscripten SDK (emsdk) の取得機能を coreCLR の WebAssembly ビルド環境に統合するための変更です。新しく AcquireEmscriptenSdk.projAcquireEmscriptenSdk.targets を追加し、ビルドプロセス内での emsdk 自動取得を実現します。これにより、WebAssembly コンパイル時の依存関係管理が改善されます。

変更内容

  • 新規追加: eng/AcquireEmscriptenSdk.projeng/AcquireEmscriptenSdk.targets - emsdk 取得用のビルドターゲット実装
  • 修正: eng/Subsets.props - ビルドサブセット定義の調整
  • 修正: src/coreclr/runtime.proj - coreCLR ランタイムプロジェクトに emsdk 取得統合
  • 修正: src/mono/mono.proj - Mono プロジェクトから重複する emsdk 関連コードを削除(15行削除、166行削除)
  • 修正: その他、native.wasm.targetsbrowser.projcorehost.projbuild-native.proj で emsdk 依存関係を調整

パフォーマンスへの影響

影響なし

関連Issue

Issue #123682 に対応

その他

本変更は WebAssembly ビルド環境の整理統合であり、重複していた Mono プロジェクト内の emsdk 取得ロジックを、共通のビルドターゲットに一元化しています。coreCLR での WebAssembly サポート構築における基盤整備となります。


#123815 [clr-interp] Implement cached virtual/interface dispatch

  • 作成者: @BrzVlad
  • 作成日時: 2026年01月30日 20:52:52(UTC)
  • マージ日時: 2026年02月09日 12:38:53(UTC)
  • ラベル: area-CodeGen-Interpreter-coreclr

概要

CLRインタープリターにおける仮想/インターフェースメソッドディスパッチのキャッシング機構を実装しました。InterpDispatchCacheという簡易ハッシュテーブルを導入し、DispatchToken + target MTからターゲットメソッドへのマッピングをキャッシュします。VSDのDispatchCacheと同様の設計で、衝突時は新しいエントリで置き換えられ、置き換えられたエントリはGC時に解放されます。この実装により、マイクロベンチマークで4倍の高速化を実現しています。

変更内容

  • interpexec.cpp/h: InterpDispatchCacheの実装追加、ディスパッチキャッシュロジックの統合(+209行)
  • compiler.cpp/h: キャッシュ対応のコンパイラ側の変更(+13行)
  • intops.def: 操作定義の調整(+2/-2)
  • contractimpl.h: コントラクト実装の拡張(+4行)
  • loaderallocator.cpp: ローダーアロケーター側のキャッシュ初期化処理(+8行)
  • syncclean.cpp: GC時のキャッシュエントリ清理処理(+9行)
  • virtualcallstub.cpp: 既存のVSD DispatchCacheとの統合(+9/-2行)

パフォーマンスへの影響

改善: マイクロベンチマークで4倍の高速化を実現

インタープリター環境でのメソッドディスパッチのキャッシュにより、DispatchToken検索のオーバーヘッドが軽減されます。キャッシュは1エントリ/インデックスの単純設計のため、インタープリターで実行される限定的なメソッドセットでは衝突が少なく、メモリ使用量も最小限に抑えられます。GC時の段階的な解放により、メモリ管理のオーバーヘッドは最小化されています。

関連Issue

なし

その他

  • キャッシュ設計はVSD(Virtual Stub Dispatch)の既存機構と同じパターンに従っており、CLRランタイム全体での一貫性を維持
  • インタープリター環境に特化した最適化で、JIT生成コードへの影響はなし
  • GC連携により、キャッシュエントリのライフサイクル管理が適切に行われる

#123576 Fix some defines in libs cmake

  • 作成者: @am11
  • 作成日時: 2026年01月24日 15:05:25(UTC)
  • マージ日時: 2026年02月09日 18:33:12(UTC)
  • ラベル: area-System.Runtime community-contribution

概要

libsネイティブレイヤーのCMakeビルド設定とPAL(Platform Abstraction Layer)定義を修正するPull Requestです。pal_config.h.inから不要な定義を削除し、configure.cmakeに新しい定義を追加、pal_time.cのコンパイルエラーを修正しています。

変更内容

  • src/native/libs/Common/pal_config.h.in: 不要な定義4行を削除
  • src/native/libs/System.Native/pal_time.c: 定義参照を1行修正
  • src/native/libs/configure.cmake: CMakeLists.txt内の定義設定を5行追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本修正はC/C++ネイティブライブラリのビルド設定に関する変更です。PALヘッダファイル再構成の一環と考えられ、クロスプラットフォーム互換性の改善を目的としている可能性があります。マニュアルで示された概要情報がないため、詳細な背景や関連Issueの情報は記載されていません。


#123407 Implement CreateFromDirectory TarEntryFormat overloads

  • 作成者: @kasperk81
  • 作成日時: 2026年01月20日 21:50:29(UTC)
  • マージ日時: 2026年02月09日 17:23:38(UTC)
  • ラベル: community-contribution area-System.Formats.Tar

概要

TarFile.CreateFromDirectory メソッドに TarEntryFormat パラメータを指定できる4つの新しいオーバーロードを追加しました。これまではPAX形式のみでしたが、V7、Ustar、Pax、Gnuの4つの形式に対応します。既存メソッドは新しいオーバーロードにデリゲートし、デフォルト形式としてPAXを使用します。

// 新しいオーバーロード例
public static void CreateFromDirectory(
    string sourceDirectoryName, 
    Stream destination, 
    TarEntryFormat format)

public static Task CreateFromDirectoryAsync(
    string sourceDirectoryName, 
    Stream destination, 
    TarEntryFormat format, 
    CancellationToken cancellationToken = default)

変更内容

  • System.Formats.Tar.cs: 4つの新しいパブリックAPIシグネチャを追加
  • TarFile.cs: 新しいオーバーロード実装と既存メソッドのリファクタリング(50行追加、14行削除)
  • テストファイル(4ファイル):
    • ファイルベースのCreateFromDirectory(同期・非同期)
    • ストリームベースのCreateFromDirectory(同期・非同期)
    • 各テストで4つの形式とエラーケースをカバー
  • TarTestsBase.cs: 有効・無効なTarEntryFormat値のテストヘルパーメソッドを追加

パフォーマンスへの影響

影響なし。既存メソッドは新しいオーバーロードへのシンプルなデリゲートであり、パフォーマンス特性に変化はありません。

関連Issue

#121819

その他

  • 互換性: 既存コードに破壊的変更なし。新しいオーバーロドの追加のみで、既存のメソッドシグネチャは変更されません。
  • テストカバレッジ: 4つの形式すべてと無効な形式値に対する包括的なテストが追加されています。

#123379 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年01月20日 13:50:41(UTC)
  • マージ日時: 2026年02月09日 18:50:00(UTC)
  • ラベル: Servicing-approved linkable-framework area-codeflow

概要

release/9.0ブランチからrelease/9.0-stagingブランチへの自動マージPRです。dotnet-maestro[bot]、jeffhandley、vseanreesermstftによるコミットが含まれています。ビルド依存関係のバージョン更新とNuGetの設定変更が含まれています。

変更内容

  • NuGet.config: NuGet設定に1行追加
  • eng/Version.Details.xml: 外部依存関係のバージョン情報を136行更新(詳細な依存関係の版更新)
  • eng/Versions.props: ビルドプロパティおよびSDKバージョンを75行追加、67行削除(合計142行変更)
  • eng/pipelines/common/evaluate-paths-job.yml: パイプラインジョブ定義を7行追加、1行削除
  • global.json: SDK/ツールチェーンバージョン参照を5行更新

パフォーマンスへの影響

影響なし。本PRは依存関係と設定の更新のみであり、ランタイムコードの変更を含みません。

関連Issue

なし。自動マージPRです。

その他

  • マージ方法はmerge commitの使用が必須(squashやrebaseは不可)
  • マージコンフリクトが発生した場合は、手動で解決してからgit merge --continueで完了
  • 編集権限のあるコントリビューターはコンフリクト解決やその他の変更を加えることができます
  • .NET Coreエンジニアリングチーム(dotnet/dnceng)へのお問い合わせが必要な場合は連絡先参照

目次