Pull Request on 2026年02月14日

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

注意点

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



#124416 ci-analysis skill: restore domain examples from eval regression analysis

  • 作成者: @lewing
  • 作成日時: 2026年02月14日 01:48:04(UTC)
  • マージ日時: 2026年02月14日 16:37:34(UTC)
  • ラベル: area-skills

概要

ci-analysis skillの評価で、tool-agnostic refactor(#124398)により build progression タスクで68%のツール呼び出し回数増加(25→42)が発生。3つのドメイン固有の例を復元することで、ツール呼び出しを25呼び出しに削減し、実行時間も11m04sから8m46sに短縮。復元された例には、refs/pull/{PR}/merge ブランチパターン、マージコミット親抽出のGH API例、チェックアウトログID 5/line 500+のヒント、および停止シグナルが含まれます。

変更内容

ファイル 変更内容
.github/skills/ci-analysis/SKILL.md AzDO PRビルド照会のマージrefを明確化(+1/-1)
.github/skills/ci-analysis/references/build-progression-analysis.md PRビルドリスト、マージ親抽出、チェックアウトログ抽出、停止基準の例を復元(+15/-3)
.github/skills/ci-analysis/references/delegation-patterns.md サブエージェント委譲テンプレートのチェックアウトログヒントに全大文字強調を追加(+1/-1)

パフォーマンスへの影響

大幅な改善

  • ツール呼び出し削減:833041c版の77呼び出しから49呼び出しへ(36%削減)
  • 実行時間短縮:13m45sから8m46sへ(36%短縮)
  • Build Progressionタスク:25呼び出し、4m25s(プリリファクタと同等)
  • 不要な呼び出し削減:restore後、Retryタスクで不要な呼び出しが5→4に改善

懸念点:復元されたドメイン知識がなければ、エージェントは効率的にタスク完了できず、過剰なツール呼び出しに陥る設計となっています。

関連Issue

#124398(tool-agnostic refactor による回帰の原因)

その他

重要な洞察:シンプルなタスク(retry、CI status)は規範的ガイダンスが少ないほど効率的ですが、複数ステップの複雑なタスク(build progression)には、ブランチrefパターン、フィールド名、ログロケーションなどの具体例が必須です。削除例によってエージェントがタスク完了不可かつ情報がツール説明に含まれない場合は、ドメイン例として保持すべきという設計ルールが提示されています。


#124395 cDAC loader GetModuleData - remove unneeded transient flags

  • 作成者: @rcj1
  • 作成日時: 2026年02月13日 18:09:21(UTC)
  • マージ日時: 2026年02月14日 00:49:02(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact DAC)ローダーの GetModuleData メソッドから不要なトランジェント フラグを削除するリファクタリングです。DAC(Debug Access Component)のモジュールデータ取得処理を簡潔にし、フラグの管理を明確にしています。

変更内容

  • src/coreclr/inc/dacprivate.h: DAC プライベート ヘッダーでフラグ定義を追加/変更(+5/-1)
  • src/coreclr/debug/daccess/request.cpp: ネイティブ DAC リクエスト処理の軽微な更新(+1/-1)
  • ILoader.cs: インターフェース定義から不要なメソッドシグネチャ/フラグ定義を削除(削除: 17行)
  • Loader_1.cs: 実装から対応するトランジェントフラグ関連のコードを削除(削除: 43行)
  • ISOSDacInterface.cs/SOSDacImpl.cs: レガシ DAC インターフェースの互換性対応を追加(+5/-0、+1/-1)

パフォーマンスへの影響

影響なし。本変更は機能的な削減であり、パフォーマンスに直接的な影響をもたらすコード削除ではなく、不要なフラグ処理の簡潔化です。

関連Issue

PR #124309 の議論を背景としています。

その他

  • マネージド/ネイティブ境界の調整: ILoader インターフェース(マネージド側)から削除されたメソッドは、レガシ DAC インターフェース(ISOSDacInterface)で後方互換性が保証されています。
  • 破壊的変更への対応: マネージド API からの削除にもかかわらず、レガシ実装側で互換性が確保されているため、既存デバッグツールへの影響は最小限と考えられます。

#124362 [Wasm RyuJit] More codegen and fixes for crossgen replay

  • 作成者: @AndyAyersMS
  • 作成日時: 2026年02月13日 00:34:41(UTC)
  • マージ日時: 2026年02月14日 17:35:14(UTC)
  • ラベル: area-CodeGen-coreclr

概要

WebAssembly RyuJIT コンパイラのコード生成機能を拡張するPRです。GT_INDEX_ADDR、GT_LEA、GT_MEMORYBARRIER、GT_RETFILT などの命令ノードのコード生成実装を追加し、crossgen replay 機能を改善しています。また、WASM の非連続な例外領域レイアウトに対応するため、例外処理の検証チェックを緩和しています。

変更内容

  • codegenwasm.cpp: GT_INDEX_ADDR(境界チェックなし)、GT_LEA、GT_MEMORYBARRIER(no-op)、GT_RETFILT のコード生成実装を追加(+98行)
  • methodcontext.cpp: SPMI crossgen replay 時の WASM 型シンボル処理にフェイクハンドル返却ロジックを追加(+6行)
  • targetwasm.h: WASM_THREAD_SUPPORT 定数を定義し、マルチスレッド未対応を明文化(+2行)
  • jiteh.cpp: 例外ハンドラ検証の例外領域連続性チェックを緩和(+40/-24行)
  • fgdiagnostic.cpp: finally-return 先行ノード検査を非連続領域対応に変更(+9行)

パフォーマンスへの影響

影響なし。本PRは WASM ターゲットのコンパイル機能拡張であり、ランタイム実行パフォーマンスへの直接的な影響はありません。コンパイル時間についても、実装追加は限定的です。

関連Issue

なし

その他

このPRは WASM バックエンド開発の一環です。WASM での非連続な例外領域レイアウトは x86/ARM などのターゲットとは異なる設計であり、既存の検証ロジックを適応させる必要がありました。SPMI workaround は異なるプラットフォーム間での crossgen replay をサポートするための重要な変更です。


#124258 Add XML documentation to LoggerMessage generated methods

  • 作成者: @Copilot
  • 作成日時: 2026年02月11日 09:12:40(UTC)
  • マージ日時: 2026年02月14日 06:28:08(UTC)
  • ラベル: area-Extensions-Logging

概要

LoggerMessage ソースジェネレータが生成するメソッドに XML ドキュメンテーションを追加し、IDE の IntelliSense でログメッセージテンプレートとログレベルを表示できるようにします。開発者がホバーするだけで生成されたログメソッドの詳細を確認できるようになります。

// 生成されるメソッドに XML ドキュメンテーションが追加
/// <summary>
/// Hello {Name} (LogLevel: Information)
/// </summary>
public partial void LogHello(string name)
{
    if (logger.IsEnabled(LogLevel.Information))
    {
        __LogHelloCallback(logger, name, null);
    }
}

変更内容

  • LoggerMessageGenerator.Emitter.cs: GenMethodDocumentation メソッドを追加し、XML summary タグを生成。EscapeXml メソッドでメッセージテンプレートの XML 特殊文字をエスケープ。GetLogLevelFullName をクラスレベルの private static メソッドに統一し、GetLogLevelName メソッドを新規追加(ドキュメンテーション用)。コード重複を排除
  • 11 個のベースラインテストファイル: 生成コードに XML ドキュメンテーションが含まれることを反映して更新
  • LoggerMessageGeneratorParserTests.cs: テストの軽微な調整

パフォーマンスへの影響

影響なし。本変更はソースコード生成時のメタデータ追加のみで、実行時のパフォーマンスや メモリ使用量への影響はありません。生成されるメソッドの実装ロジックに変更はなく、XML ドキュメンテーションはコンパイル後のメタデータとして保持されます。

関連Issue

#118164(API Proposal: Better Source comments on generated code from LoggerMessageAttribute)

その他

  • ログレベルが動的に決定される場合(LogLevel.Dynamic)、ドキュメンテーションにはログレベル情報が含まれない仕様
  • 破壊的変更なし。既存のコード生成ロジックは変わらず、ドキュメンテーションの追加のみ
  • RegExAttribute のソースジェネレータと同様のパターンで実装

#124247 Fix type map assembly target traversal in ILC

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年02月10日 22:16:26(UTC)
  • マージ日時: 2026年02月14日 00:33:39(UTC)
  • ラベル: linkable-framework area-NativeAOT-coreclr

概要

ILC(Intermediate Language Compiler)のType Map assembly target traversalロジックを修正するPRです。Type Mapメタデータ生成時に、特定のType Groupに対してAssemblyTargetで明示的に参照されていないアセンブリ内のType Mapは保持しないようにしました。これにより、不要な型情報がAOTコンパイル出力に含まれるのを防ぎます。

変更内容

  • TypeMapMetadata.cs: Type Map assembly参照の走査ロジックを改善(+173/-30)。AssemblyTargetで指定されたアセンブリのみをフォローするように制限
  • TrimmingDriver.cs: テスト設定の微調整(+2/-2)
  • Program.cs: コンパイラ設定パラメータ更新(+3/-3)
  • テストケース追加: TypeMapReferencedAssembly.csTypeMap.csにテストシナリオを追加し、修正の正確性を検証

パフォーマンスへの影響

  • 出力サイズ削減: 不要なType Map情報を保持しなくなることで、生成されるAOTアセンブリサイズが削減される可能性あり
  • メモリ削減: コンパイル時のメタデータメモリ使用量が低減される見込み
  • 影響範囲: AOT(Ahead-of-Time)コンパイル時の最適化であり、ランタイム性能への直接的な悪影響はなし

関連Issue

なし(PRの説明に関連Issueの記載なし)

その他

  • 本修正はAOTコンパイラの内部動作改善であり、公開APIの変更なし
  • 追加テストケースにより、Type Group単位でのアセンブリ参照制御が正しく動作することを確認

#123515 [Wasm RyuJit] Wasm abi classifier

  • 作成者: @AndyAyersMS
  • 作成日時: 2026年01月22日 23:37:16(UTC)
  • マージ日時: 2026年02月14日 21:57:50(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr

概要

WebAssembly(Wasm)向けRyuJIT JITコンパイラーに対し、Wasm Basic C ABI仕様に従った構造体分類機能を実装しました。ホスト(VM、CrossGen)ロジックとJITロジックを追加し、Wasmプラットフォーム向けコンパイル時に構造体の引数受け渡し方式を適切に分類します。また、SPMI(SuperPMI)ツール内でも同機能を実装し、cross-jittingによるWasm関連テストを継続できるようにしました。

変更内容

コアインターフェース定義

  • corinfo.h: Wasm ABI分類に関する新規定義を追加(+4行)
  • jiteeversionguid.h: JIT EEバージョン識別子を更新(+5行)

JIT実装

  • compiler.cpp: JITコンパイラー内でWasm ABI分類ロジックを追加(+32行)
  • lclvars.cpp: ローカル変数処理時のABI分類統合(+14行)
  • targetwasm.cpp: Wasmターゲット固有のABI分類実装(+45行)
  • codegencommon.cpp: 既存コード削除(-17行)

ホスト実装

  • CorInfoImpl.cs: 管理コード側でのABI分類実装(+48行)
  • WasmLowering.cs: 新規ファイル、Wasm固有の最適化ロジック(+219行)
  • jitinterface.cpp: VM側のJITインターフェース実装(+8行)

テスト・ツール対応

  • methodcontext.cpp/h: SPMI用のメソッドコンテキスト拡張(+25行)
  • WasmObjectWriter.cs: 既存の重複ロジック削除(-99行)
  • SuperPMI各種shim/ツール: 新規インターフェース対応(合計+38行)

プロジェクト設定

  • AOTコンパイラープロジェクトにWasmLowering参照を追加

パフォーマンスへの影響

Wasm ABI分類機能の追加によるランタイムオーバーヘッドは最小限です。WasmObjectWriter.csから重複ロジックを削除(-99行)し、コード整理を実施しました。Wasm向けコンパイル時に適切な構造体引数受け渡し方式を採用することで、Wasm実行環境でのメモリアクセスパターンおよびスタックレイアウト効率が向上する可能性があります。

関連Issue

なし

その他

  • 互換性への影響: JIT EEバージョン識別子の更新により、旧バージョンのJITインターフェースとの互換性はありません。
  • テスト戦略: SPMI機能により、Wasm以外のプラットフォームでのcross-jitting環境でもWasm ABI分類ロジックの検証が可能になりました。
  • API変更: 新しいABI分類インターフェースはICorJitInfo インターフェースに追加されており、JIT実装側で呼び出す必要があります。

目次