注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #125133 [release/8.0] Update branding to 8.0.26
- #125131 [release/9.0] Update branding to 9.0.15
- #125130 Code review skill: support verifying approved APIs when new APIs are added.
- #125120 Revert "[HTTP] Small comment"
- #125112 Fix Copilot not working in forks
- #125109 Remove stale information in ArrayPool.Shared remarks
- #125106 [HTTP] Small comment
- #125104 Prefer partial declarations with commented-out existing APIs in api-proposal skill
- #125101 Wasm loop aware rpo compute last block in loop quickly
- #125082 Fix incorrect
excludeAgentidentifier in copilot-instructions.md - #125081 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2917025
- #125078 [Wasm RyuJIT] Block Stores follow-ups
- #125073 [RyuJit] Add
VisitOperandUses - #125068 Fix variable shadowing bug in DacFreeRegionEnumerator::AddServerRegions
- #125067 Fix max_slots in DacHandleTableMemoryEnumerator::Init() to use g_totalCpuCount
- #125062 [wasm][coreclr] Disable tests which need native relinking in Pri1
- #125055 Use SetValueTruncating instead of SetIconValue
- #125046 fix SupportsWasmIntrinsics
- #125045 JIT: Fix late devirtualization debug info for inlining
- #125032 Fix DuplicateRootAssembly assert failure
- #125009 cDAC: implement GetSyncBlockCleanupData
- #124971 Pass
MessageOriginto theDoAdditional*Processingmethods. - #124943 Add metric usage diff to SPMI reports
- #124938 Implement TraverseRCWCleanupList cDAC API
- #124927 [clr-interp] Add reverse P/Invoke support for the Swift calling convention to the CoreCLR interpreter on arm64
- #124921 Convert PREPARE_SIMPLE_VIRTUAL_CALLSITE usages to use the UCO pattern
- #124919 [Tests][UserEvents] Improve test timing and re-enable tests
- #124906 [release/8.0] Disable ResolveLinkTarget_Succeeds returnFinalTarget=true for UNC paths
- #124880 [Wasm RyuJit] annotate (some) local accesses with var nums
- #124868 [wasm][coreclr] Improve method portable entrypoints lifecycle
- #124815 Implement ISOSDacInterface::GetJitManagerList in cDAC SOSDacImpl
- #124671 Move diagnostics out of JSImportGenerator and JSExportGenerator into a separate analyzer
- #124669 Move diagnostics from ComInterfaceGenerator and VtableIndexStubGenerator into separate analyzers
- #124631 Remove Debug.Assert in SetSslCertificate that aborts process during dispose-during-handshake race
- #124601 arm64: Fixed using ands/bics to compare against static unsigned constant 0
- #124114 JIT: Accelerate uint->floating casts on pre-AVX-512 x86
- #123939 Fixed some potential null derefs in coreclr
- #123146 JIT: Normalize optimizations for ConditionalSelect and BlendVariable
#125133 [release/8.0] Update branding to 8.0.26
- 作成者: @vseanreesermsft
- 作成日時: 2026年03月03日 17:24:13(UTC)
- マージ日時: 2026年03月03日 22:33:50(UTC)
- ラベル: Servicing-approved area-codeflow
概要
.NET Runtime 8.0の patch版をバージョン8.0.25から8.0.26にアップデートするブランディング変更です。eng/Versions.propsファイルでProductVersionとPatchVersionを更新し、release/8.0ブランチの公式バージョン情報を反映させます。
変更内容
- eng/Versions.props (+2/-2)
ProductVersion:8.0.25→8.0.26PatchVersion:25→26
パフォーマンスへの影響
影響なし。これはバージョン情報の更新のみであり、ランタイムの実行性能には直接的な影響を与えません。
関連Issue
なし
その他
- このPRはrelease/8.0ブランチ専用の変更であり、開発ブランチには影響しません
- バージョン番号の変更は、NuGetパッケージ、アセンブリメタデータ、リリースノートなど、公開されるすべての成果物に反映される定型的な更新です
#125131 [release/9.0] Update branding to 9.0.15
- 作成者: @vseanreesermsft
- 作成日時: 2026年03月03日 17:18:47(UTC)
- マージ日時: 2026年03月03日 22:34:36(UTC)
- ラベル: Servicing-approved area-codeflow
概要
.NET Runtime 9.0系のパッチバージョンを9.0.14から9.0.15に更新するブランディング変更です。release/9.0ブランチのバージョン管理ファイルが更新され、次回のサービスリリースに向けた準備が行われています。
変更内容
- eng/Versions.props
ProductVersion:9.0.14→9.0.15PatchVersion:14→15- 変更行数: +2 -2
パフォーマンスへの影響
影響なし
(ブランディング更新のみで、ランタイムのコード変更を含まない)
関連Issue
なし
その他
- 本変更はルーチンなサービスリリース向けのブランディング更新
release/9.0ブランチ専用の変更- 実装の機能追加やバグ修正を含まず、バージョン情報の管理のみ
- 次のサービスリリース(9.0.15)向けの準備作業
#125130 Code review skill: support verifying approved APIs when new APIs are added.
- 作成者: @eiriktsarpalis
- 作成日時: 2026年03月03日 17:16:15(UTC)
- マージ日時: 2026年03月03日 17:45:05(UTC)
- ラベル: area-skills
概要
Code Reviewスキルを更新し、公開APIを追加するPRがapi-approvedIssueに記載されたAPIと相互参照されるようになりました。これにより、新規公開APIの追加時に承認済みAPIリストとの整合性が自動的に検証されます。
変更内容
.github/skills/code-review/SKILL.md: Code Reviewスキルの設定を更新- 新規公開API追加時の検証ロジックを追加
api-approvedIssueとの相互参照メカニズムを実装- 変更量: +45行/-1行(合計46行)
パフォーマンスへの影響
影響なし
関連Issue
なし(ただしPR番号は#125130)
その他
このスキルの更新により、dotnet/runtimeリポジトリにおけるAPI承認プロセスが強化されます。新規公開APIを追加するPRは、事前にapi-approvedIssueで承認されたAPIリストと照合されることで、APIレビュープロセスの一貫性と透明性が向上します。
#125120 Revert "[HTTP] Small comment"
- 作成者: @ManickaP
- 作成日時: 2026年03月03日 14:31:29(UTC)
- マージ日時: 2026年03月03日 17:13:46(UTC)
- ラベル: area-System.Net.Http
概要
PR #125106で追加されたHTTP関連のコメント変更をRevertするPRです。HttpMessageInvokerクラスの_handlerフィールド上の内部コメント(2行)を削除し、ファイルを以前の状態に戻します。ドキュメンテーションのみの変更の取り消しです。
変更内容
- src/libraries/System.Net.Http/src/System/Net/Http/HttpMessageInvoker.cs
_handlerフィールド上の内部コメント(2行)を削除- 変更: -2行(削除のみ)
パフォーマンスへの影響
影響なし
関連Issue
- #125106(このRevert対象のPR)
その他
このRevertは作成者自身によるもので、先行PRでのコメント追加が不要と判断されたことを示しています。コード機能への影響はなく、純粋にコメント行の削除です。
#125112 Fix Copilot not working in forks
- 作成者: @martincostello
- 作成日時: 2026年03月03日 12:01:47(UTC)
- マージ日時: 2026年03月03日 12:15:37(UTC)
- ラベル: area-Infrastructure community-contribution
概要
Copilotのセットアップワークフローがリポジトリフォークで動作しない問題を修正しています。プライベートランナーラベル 8-core-ubuntu-latest は dotnet 組織内でのみ利用可能なため、フォークではこれを使用できません。フォークに対しては公開ランナー ubuntu-latest にフォールバックする条件付きランナー選択を実装することで対応します。
変更内容
- .github/workflows/copilot-setup-steps.yml
- ランナー定義を条件付き式に変更
- dotnet 組織:
8-core-ubuntu-latestを使用(既存の高性能ランナー) - フォーク:
ubuntu-latestを使用(公開ランナー)
# 変更パターン例
runs-on: ${{ github.repository_owner == 'dotnet' && '8-core-ubuntu-latest' || 'ubuntu-latest' }}
パフォーマンスへの影響
フォーク環境では ubuntu-latest 使用により若干のパフォーマンス低下の可能性がありますが、Copilotセットアップステップが実行可能になることが優先されます。dotnet 組織内での実行は既存の高性能ランナーを継続使用するため、本体への影響はありません。
関連Issue
- 参考: dotnet/aspnetcore#65492(同じパターンの修正を先行実装)
その他
- このパターンは既にリポジトリ内の他のワークフロー(
labeler-cache-retention.yml、labeler-predict-issues.yml)で使用されている実績のあるアプローチです。 - CI/CD ワークフローの修正であり、実行時ライブラリには影響しません。
#125109 Remove stale information in ArrayPool.Shared remarks
- 作成者: @lolleko
- 作成日時: 2026年03月03日 11:43:45(UTC)
- マージ日時: 2026年03月03日 17:59:55(UTC)
- ラベル: area-System.Buffers community-contribution
概要
ArrayPool<T>.SharedのXML ドキュメントコメントから、古い情報を削除しました。かつてbyte[]とchar[]に対して特別なプーリング処理が実装されていたという記述が残っていましたが、現在の実装には存在しないため、ドキュメントと実装を一致させています。
変更内容
- src/libraries/System.Private.CoreLib/src/System/Buffers/ArrayPool.cs
ArrayPool<T>.Sharedのリマークス(remarks)セクションから、byte[]/char[]に対する特別な最適化プーリング動作についての記述を削除- 削除行数:2行
パフォーマンスへの影響
影響なし
(ドキュメント変更のみで、実装コードには変更がありません)
関連Issue
なし
その他
この削除対象となったドキュメント記述は、コミット55117cd2b39で特別なハンドリング機能が削除された際に、更新されずに残っていたものです。
本PRは、APIドキュメントの正確性を保つための保守性向上のための変更であり、開発者が参照実装(SharedArrayPool
#125106 [HTTP] Small comment
- 作成者: @ManickaP
- 作成日時: 2026年03月03日 09:07:01(UTC)
- マージ日時: 2026年03月03日 12:09:57(UTC)
- ラベル: area-System.Net.Http
概要
HttpMessageInvoker.csの_handlerフィールドに説明用のコメントを追加しました。プライベートフィールドとして保持する理由を文書化するための小規模な変更です。
変更内容
- src/libraries/System.Net.Http/src/System/Net/Http/HttpMessageInvoker.cs
_handlerフィールドの上に2行のコメントを追加- フィールドをプライベートに保つ理由を説明
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
コメントのみの追加であるため、実装ロジックや動作に変更はありません。ランタイムやAPI仕様への影響はありません。
#125104 Prefer partial declarations with commented-out existing APIs in api-proposal skill
- 作成者: @eiriktsarpalis
- 作成日時: 2026年03月03日 08:42:28(UTC)
- マージ日時: 2026年03月03日 17:44:20(UTC)
- ラベル: area-skills
概要
API提案プロセスのドキュメント更新PR。API提案時にクラスの追加メンバーを示す場合、diffブロックではなくpartialクラス宣言で既存メンバーをコメント化する方式に変更。これにより承認記録の作成時に既存API情報の削除が容易になります。
変更内容
- .github/skills/api-proposal/SKILL.md:
diffブロックの例を削除し、// EXISTING/// NEWマーカーの例を更新。既存メンバーをコメント化し// NEWマーカーを廃止 - .github/skills/api-proposal/references/api-proposal-checklist.md:
diffブロック推奨事項をpartial宣言+コメント化された// EXISTINGメンバーに変更
パフォーマンスへの影響
影響なし(ドキュメント更新のみ)
関連Issue
#124808(バートン・ジェームズによる遅延レビュー指摘)
その他
このPRはdotnet/runtimeリポジトリのAPI提案プロセスに関するガイドライン更新です。ガイドラインの変更は開発者体験を向上させ、API承認プロセスの効率化を目指しています。
#125101 Wasm loop aware rpo compute last block in loop quickly
- 作成者: @AndyAyersMS
- 作成日時: 2026年03月03日 04:39:06(UTC)
- マージ日時: 2026年03月03日 20:34:09(UTC)
- ラベル: area-CodeGen-coreclr
概要
WebAssembly向けのJITコンパイラにおいて、Loop-Aware RPO(Reverse Post-Order)がループ本体を連続した状態で保持する特性を活用し、ループの終了位置計算をO(n)からO(1)に最適化しました。ループ区間の終端位置をheaderIndex + NumLoopBlocks()で直接計算することで、スキャン処理を排除しています。
変更内容
- src/coreclr/jit/fgwasm.cpp
- ループ区間終端位置の計算アルゴリズムを変更(スキャンベースから直接計算へ)
- ヘッダーインデックスにループブロック数を加算する方式に統一
- DEBUG時のみループ区間計算結果の検証ロジックを追加
- 不要なTODOコメントを削除
パフォーマンスへの影響
改善点:WebAssemblyコンパイル時のコントロールフロー区間構築処理がO(n)からO(1)に改善。ループサイズが大きいほど効果が顕著。メモリアクセスパターンの改善によるキャッシュ効率向上も期待できます。
検証:DEBUG構成で従来のスキャン処理との結果比較を実施し、正確性を保証。
関連Issue
なし
その他
Loop-Aware RPOの設計上の性質(ループブロックの連続性)を活用した最適化。.NET Wasm JITの制御フロー分析高速化に貢献します。
#125082 Fix incorrect excludeAgent identifier in copilot-instructions.md
- 作成者: @Copilot
- 作成日時: 2026年03月02日 23:14:48(UTC)
- マージ日時: 2026年03月03日 10:17:35(UTC)
- ラベル: area-Infrastructure
概要
.github/copilot-instructions.mdのfrontmatterにあるexcludeAgent識別子を修正するPull Requestです。誤ったcode-review-agentを正しいcode-reviewに変更することで、Copilot code-reviewスキルに対する指示の除外が正しく機能するようになります。
// 変更前
// excludeAgent: code-review-agent
// 変更後
// excludeAgent: code-review
変更内容
| ファイル | 変更内容 |
|---|---|
.github/copilot-instructions.md |
excludeAgentフロントマターの値をcode-review-agentからcode-reviewに修正(+1/-1) |
パフォーマンスへの影響
影響なし
関連Issue
- dotnet/runtime#124742(Incorrect code-review agent identifier)
その他
- この修正により、
.github/skills/code-review/SKILL.mdの宣言およびGitHubの公式ドキュメント(Copilot Code Review and Coding Agent now support agent-specific instructions)と一致するようになります - 構成ファイルの修正であり、ランタイムやコンパイル時の動作には影響しません
#125081 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2917025
- 作成者: @dotnet-bot
- 作成日時: 2026年03月02日 23:01:58(UTC)
- マージ日時: 2026年03月03日 10:06:28(UTC)
- ラベル: area-Extensions-Logging
概要
OneLocBuild自動化タスクによるローカライズファイルの定期チェックイン。Microsoft.Extensions.Logging.Abstractionsライブラリのリソース文字列(.xlf形式)を複数言語(独仏西伊日韓ポーランド語など)で更新。翻訳パイプラインから生成されたファイルの自動マージです。
変更内容
- 変更ファイル:
src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/配下のローカライズリソースファイル- 13言語対応: Strings.cs.xlf(ニュートラル)、独語・仏語・西語・伊語・日語・韓語・ポーランド語・ポルトガル語・露語・土耳其語・簡体字中国語・繁体字中国語
- 各ファイルで10~11行の増減(翻訳文字列の更新)
- 変更タイプ: 翻訳コンテンツの更新のみ。コード実装やロジックへの変更なし
パフォーマンスへの影響
影響なし。ローカライズリソースファイルのみの変更であり、ランタイム動作やパフォーマンス特性に影響しません。
関連Issue
なし
その他
- 自動化処理: Build definition ID 679、Build ID 2917025の一部として自動生成
- ローカライズプロセス: 翻訳の問題報告は https://aka.ms/icxLocBug へ
- 参考ドキュメント: OneLocBuild wiki(https://aka.ms/onelocbuild)、ローカライズプロセス全般(https://aka.ms/AllAboutLoc)
#125078 [Wasm RyuJIT] Block Stores follow-ups
- 作成者: @kg
- 作成日時: 2026年03月02日 21:00:32(UTC)
- マージ日時: 2026年03月03日 15:34:44(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
このPRは、先行するPR #124846(Wasm RyuJIT Block Stores機能)に対するフォローアップであり、未解決のコメント対応を行っています。主にJIT コンパイラのコード生成ロジック、レジスタアロケーション、および型定義の調整が含まれており、WebAssembly プラットフォーム向けの最適化を継続して改善しています。
変更内容
- codegenwasm.cpp: コード生成ロジックの微調整(+1/-1)
- gentree.h: 不要な型定義5行を削除
- lir.h: 関連する型定義8行を削除
- lower.h: Block Store処理用に6行の新規定義追加
- lowerwasm.cpp: Block Store の低レベル最適化ロジック調整(+13/-9)
- regallocwasm.cpp: WebAssemblyレジスタアロケーター更新(+2)
パフォーマンスへの影響
影響なし。本変更は、PR #124846の実装の整理・改善が目的であり、パフォーマンス特性に直接的な変更は含まれていません。
関連Issue
なし
その他
- Copilot AI レビュアーが6/6ファイルのレビューを完了し、新たな指摘なし
- PR #124846の実装に対する code review コメント対応のため、公開APIへの破壊的変更は想定されません
- WebAssemblyターゲットのJITコンパイラ最適化の継続的改善の一環
#125073 [RyuJit] Add VisitOperandUses
- 作成者: @SingleAccretion
- 作成日時: 2026年03月02日 20:27:41(UTC)
- マージ日時: 2026年03月03日 22:41:58(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
RyuJit コンパイラにおいて、オペランドの使用を適切な順序で列挙するための新しい機能 VisitOperandUses を追加しました。このメソッドにより、オペランドの使用順序を正確に把握でき、今後のWASM stackifier の変更に必要な基盤を提供します。
変更内容
- src/coreclr/jit/compiler.hpp: 48行追加、28行削除(計76行)-
VisitOperandUses関連の関数定義またはメソッド実装を追加 - src/coreclr/jit/gentree.h: 3行追加 - オペランド使用列挙に関連する型定義またはインターフェース定義を追加
パフォーマンスへの影響
影響なし
本変更は、既存の処理フローに新しい列挙機能を追加するもので、パフォーマンスクリティカルなパスには直接的な影響を与えません。ただし、今後のWASM stackifier 最適化により、潜在的なパフォーマンス向上が期待できます。
関連Issue
なし
その他
- 本変更は、今後のWASM stackifierの最適化を実現するためのプリペアリング的なコミットです
- オペランド使用の順序管理は、コード生成の正確性に関わる重要な機能であり、適切なテストカバレッジが必要です
#125068 Fix variable shadowing bug in DacFreeRegionEnumerator::AddServerRegions
- 作成者: @Copilot
- 作成日時: 2026年03月02日 18:52:50(UTC)
- マージ日時: 2026年03月03日 15:19:23(UTC)
- ラベル: area-Diagnostics-coreclr
概要
DacFreeRegionEnumerator::AddServerRegionsで発生していた変数シャドウイングバグを修正しました。内側のループで外側のヒープインデックス変数iが再利用されており、その後のAddSegmentList呼び出しで誤ったパラメータが渡されていました。内側のループ変数をkindに変更することで、すべてのAddSegmentList呼び出しが正しいヒープインデックスを参照するようになります。
// 修正内容: 内側のループ変数を i -> kind に変更
// 修正前: AddSegmentList(..., i) // i は count_free_region_kinds の値
// 修正後: AddSegmentList(..., i) // i は正しいヒープインデックス
変更内容
- src/coreclr/debug/daccess/request_svr.cpp (+2/-2)
- 内側のループ変数を
iからkindに変更 freeable_soh_segmentとfreeable_uoh_segmentのAddSegmentList呼び出しで、正しいヒープインデックスiが渡されるように修正
- 内側のループ変数を
パフォーマンスへの影響
影響なし(バグ修正による機能的な改善のため)
関連Issue
なし
その他
このバグはデバッグ機能(DAC層のGCヒープ検査)に限定された問題です。修正により、WinDbgやlldbなどのデバッガから!addressコマンドで取得されるメモリ領域情報で、SOH/UOHの解放可能セグメントが正しいGCヒープに関連付けられるようになります。ランタイムの実行時動作には直接的な影響はありません。
#125067 Fix max_slots in DacHandleTableMemoryEnumerator::Init() to use g_totalCpuCount
- 作成者: @Copilot
- 作成日時: 2026年03月02日 18:47:48(UTC)
- マージ日時: 2026年03月03日 15:12:54(UTC)
- ラベル: area-Diagnostics-coreclr
概要
PR #124875でDacHandleWalker::WalkHandles()に適用された修正が、DacHandleTableMemoryEnumerator::Init()に漏れていたため、本PRで同一の修正を適用。CPU数 ≠ ヒープ数の環境(DATAS)でハンドルテーブルメモリ列挙が不完全になる問題を解決します。GC DACマイナーバージョン8以上ではg_totalCpuCountを、それ以下ではGCHeapCount()をフォールバックとして使用。
変更内容
- src/coreclr/debug/daccess/daccess.cpp
max_slotsの型をintからuint32_tに変更max_slots計算ロジック:GC DAC minor_version_number ≥ 8の場合は*g_gcDacGlobals->g_totalCpuCountを使用、それ以下はGCHeapCount()にフォールバック- ループ変数
jをuint32_tに変更し、明示的な(int)キャストを追加(WalkHandles()パターンに統一) max_slotsロジックとDATASフォールバック動作を説明するドキュメントコメントを追加
パフォーマンスへの影響
影響なし。本変更はメモリ列挙の完全性を確保するための修正であり、パフォーマンス特性は変わりません。ただしDATAS環境(CPU数 ≠ ヒープ数)での列挙漏れが解消されるため、診断精度が向上します。
関連Issue
PR #124875(同一パターンの修正の先行PR)
その他
本修正は一貫性目的の変更。既にWalkHandles()で検証されたパターンをInit()にも適用することで、GC DAC インターフェース更新時の保守性向上と動作統一を実現。
#125062 [wasm][coreclr] Disable tests which need native relinking in Pri1
- 作成者: @radekdoulik
- 作成日時: 2026年03月02日 17:18:34(UTC)
- マージ日時: 2026年03月03日 08:24:47(UTC)
- ラベル: arch-wasm area-Infrastructure-coreclr
概要
WASM ターゲット上で native relinking が必要な Priority-1 JIT HFA(Homogeneous Float Aggregate)テストを無効化するもの。40個のテスト .csproj ファイルに CLRTestTargetUnsupported 条件を追加し、WASM ビルドでのテスト実行をスキップする。これにより、relinking 処理の遅延を回避し、テスト実行時間を短縮する。
変更内容
- 影響範囲:
src/tests/JIT/jit64/hfa/main/配下の testA, testB, testC, testE, testG ディレクトリ内の40個のテストプロジェクトファイル - 主な変更: 各
.csprojファイルに以下のプロパティを追加<CLRTestTargetUnsupported Condition="$(TargetsWasm)">true</CLRTestTargetUnsupported> - 関連参照: Issue #123946 へのコメント追加(native relinking の問題追跡)
- テストコード: 一部テスト実装ファイルも軽微な更新
パフォーマンスへの影響
改善: WASM ターゲットでの Pri1 テスト実行時に、これら40個のテストを実行スキップすることで、native relinking 処理が不要となり、テスト実行時間が短縮される。具体的な改善率は提供されていないが、relinking は時間集約的なプロセスのため、40個のテスト分の削減効果が期待できる。
関連Issue
Issue #123946(native relinking が必要な WASM テストの問題)
その他
- 内部テスト実装の変更であり、公開 API への影響なし
- WASM 以外のターゲット(x86, x64 等)での HFA テスト実行には影響なし
- テストの完全削除ではなく条件付きスキップであるため、将来的に WASM での relinking 対応時に復活可能な設計
#125055 Use SetValueTruncating instead of SetIconValue
- 作成者: @EgorBo
- 作成日時: 2026年03月02日 14:20:36(UTC)
- マージ日時: 2026年03月03日 15:04:12(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラの定数折り畳み処理におけるバグを修正しました。符号拡張された定数(例:-0xFFFFFFFF80000000)を否定する際に不正な定数が生成される問題を、SetIconValueをSetValueTruncatingに変更することで解決しています。また、MinOptsモード時の最適化実行を制限しています。
// 修正内容の例
// 変更前: SetIconValue(negatedValue)
// 変更後: SetValueTruncating(negatedValue)
// これにより、TYP_LONG以外のノードで正確な切り詰め動作が保証される
変更内容
src/coreclr/jit/morph.cpp (+4/-4)
- 定数否定時の
SetIconValue→SetValueTruncatingへの変更(複数箇所) opts.Tier0OptimizationEnabled()によるTier0最適化のゲーティング追加
- 定数否定時の
src/tests/JIT/Regression/JitBlue/Runtime_125041/Runtime_125041.cs (+22/-0)
- Issue #125041の回帰テストケース追加
src/tests/JIT/Regression/Regression_ro_2.csproj (+1/-0)
- 回帰テストソースファイルの登録
パフォーマンスへの影響
影響なし
本修正は定数折り畳みロジックの正確性を確保するためのバグ修正です。パフォーマンスは低下しません。MinOptsモード時の最適化制限は、コンパイル時間の短縮を目的とした既存設計に準拠したものです。
関連Issue
#125041 - 符号拡張定数の否定による不正な定数生成
その他
- JITコンパイラの内部実装(morph.cpp)への変更であり、公開APIへの影響なし
- MinOptsモードはティアード分層コンパイル(Tier0)における高速コンパイル用の処理モード
- 回帰テスト追加により、同種のバグ再発を防止
#125046 fix SupportsWasmIntrinsics
- 作成者: @pavelsavara
- 作成日時: 2026年03月02日 13:03:59(UTC)
- マージ日時: 2026年03月03日 00:29:40(UTC)
- ラベル: arch-wasm os-browser area-CodeGen-Interpreter-coreclr
概要
WebAssembly (WASM) ビルドにおいて、Mono ランタイムフレーバーのみが WASM 固有の組み込み関数(intrinsics)を有効にするように、ビルド時の機能検出を修正しました。非 Mono の WASM ビルドでは不要な intrinsics 実装がインクルードされなくなります。
変更内容
- System.Private.CoreLib.Shared.projitems
SupportsWasmIntrinsicsプロパティを$(Platform) == wasmAND$(RuntimeFlavor) == Monoの両条件でゲーティングSupportsWasmIntrinsicsが未設定時の明示的なデフォルト値(false)を追加
パフォーマンスへの影響
改善点: 非 Mono WASM ビルドにおいて、不要な intrinsics 実装コードがバイナリに含まれなくなるため、バイナリサイズが削減されます。特に WebAssembly ビルドではサイズが重要なため、ダウンロード時間とメモリ効率が向上します。
懸念点: 特に報告されていません。
関連Issue
Issue #125046
その他
- 変更は CoreLib のビルド設定(.projitems)のみで、ランタイム機能そのものへの変更はありません
- Mono フレーバーの WASM ビルドでは intrinsics 機能は引き続き利用可能です
#125045 JIT: Fix late devirtualization debug info for inlining
- 作成者: @jakobbotsch
- 作成日時: 2026年03月02日 12:45:47(UTC)
- マージ日時: 2026年03月03日 00:26:05(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラのレイト デバーチャライゼーション処理において、インライン化時のデバッグ情報が正しく伝播されていない問題を修正しました。LateDevirtualizationInfoにILLocationフィールドを追加し、impCurStmtDIから設定することで、レイト デバーチャライゼーション中に生成される新しいステートメントが適切なデバッグ情報を保持するようになります。
変更内容
src/coreclr/jit/inline.h:
LateDevirtualizationInfo構造体を修正(+1/-1)ILLocationフィールドを追加inlinersContextフィールドを削除
src/coreclr/jit/importercalls.cpp: レイト デバーチャライゼーション呼び出し処理を更新(+4/-5)
ILLocationをimpCurStmtDIから設定GenTreeCall::gtInlineContextの使用に統一
src/coreclr/jit/fginline.cpp: インライン化処理を調整(+3/-2)
GenTreeCall::gtInlineContextがデバッグ情報の保有先になることを確認するアサート追加
パフォーマンスへの影響
影響なし。この変更は構造体フィールドの最適化(重複するコンテキスト情報の削除)であり、デバッグ情報の正確性向上が目的です。
関連Issue
#124870(作成者がこの修正を検出した作業)
その他
変更は最小限に抑えられており(合計16行の変更)、既存のメカニズム(GenTreeCall::gtInlineContext)を活用することで、コード管理性を向上させています。
#125032 Fix DuplicateRootAssembly assert failure
- 作成者: @sbomer
- 作成日時: 2026年03月02日 05:10:58(UTC)
- マージ日時: 2026年03月03日 07:20:17(UTC)
- ラベル: linkable-framework area-Tools-ILLink
概要
IL リンカー(illink)の Debug.Assert エラーを修正するPRです。同じアセンブリが異なるパスで複数回指定された場合(例:test.exe と ../input/test.exe)のアサーション失敗を解決し、同時に異なる複数のアセンブリが entrypoint ルートモードで指定された場合に新しい診断エラー IL1048 を発行するようにしました。
// 修正前:同じアセンブリの重複指定でアサーション失敗
Debug.Assert(entry_assembly is null);
// 修正後:同じ AssemblyDefinition オブジェクトなら許容
// 異なるアセンブリの場合は IL1048 エラーを発行
変更内容
- Annotations.cs:
SetEntryPointAssemblyメソッドの Debug.Assert を緩和し、同じAssemblyDefinitionオブジェクトの再設定を許容 - RootAssemblyInputStep.cs: 複数の異なる
entrypointルートアセンブリ検出時に IL1048 診断を発行し処理を停止 - DiagnosticId.cs: 新しい診断ID
MultipleEntryPointRoots = 1048を追加 - SharedStrings.resx: IL1048 のリソース文字列(タイトル・メッセージ)を追加
- テストケース: 複数エントリポイントルートのエラーハンドリングを検証するテストを新規追加(CommandLine テストと依存アセンブリ)
- 生成テスト: RoslynAnalyzer の自動生成テストランナーに新しいテストケースエントリを追加
パフォーマンスへの影響
影響なし
関連Issue
#125032(DuplicateRootAssembly アサーション失敗) #116555(参照PR:アサーション導入の過去PR)
その他
Copilot レビューで指摘されている通り、新しい診断コード IL1048 のドキュメント(docs/tools/illink/error-codes.md)への記載が未実施です。また IL1047 の追加記載も検討が必要とされています。
#125009 cDAC: implement GetSyncBlockCleanupData
- 作成者: @Copilot
- 作成日時: 2026年02月28日 14:55:25(UTC)
- マージ日時: 2026年03月03日 18:32:53(UTC)
- ラベル: area-Diagnostics-coreclr
概要
このPRは、cDAC(Contracts Data for Diagnostics)におけるGetSyncBlockCleanupDataとGetSyncBlockDataAPIの実装を行います。クリーンアップリスト上のオブジェクトは有効な管理オブジェクトではない可能性があるため、COMデータはオブジェクトヘッダーを経由せず、同期ブロックポインタから直接読み込まれます。また、従来のC++実装におけるaddr=0時の仕様違反も修正されています。
変更内容
- ISyncBlock.cs — 3つの新規クリーンアップリスト・COMデータ操作メソッドを追加
- SyncBlock_1.cs —
GetSyncBlockFromCleanupList()、GetNextSyncBlock(TargetPointer)、GetBuiltInComData(TargetPointer, ...)を実装 - SOSDacImpl.cs —
GetSyncBlockCleanupDataを実装(addr==0時はクリーンアップリストから走査、addr!=0時はポインタから読み込み)、GetSyncBlockDataをSyncBlockコントラクト経由に変更 - Object_1.cs —
GetBuiltInComDataをSyncBlockコントラクトに委譲し、同期ブロック判定用ビット定数をランタイムグローバルから読み込むように変更 - SLink.cs — マネージド型システムから削除(
LinkNextフィールドオフセットをSyncBlockFactoryで直接エンコード) - SyncBlockTests.cs — クリーンアップリスト走査とCOMデータ読み込みの単体テストを追加
パフォーマンスへの影響
影響なし。本変更はAPI仕様の修正と診断機能の実装であり、ランタイムパフォーマンスへの直接的な影響はありません。
関連Issue
なし
その他
- 互換性: 従来のC++実装における
addr=0のE_INVALIDARGエラーは仕様違反として修正されています - 安全性: クリーンアップリスト走査時、管理オブジェクトが無効であっても、同期ブロック直接アクセスにより安全にCOMデータを読み込むことができるようになります
- TODO:
GetAdditionalThreadCountの条件付き弱テーブル走査は今後の実装予定です
#124971 Pass MessageOrigin to the DoAdditional*Processing methods.
- 作成者: @mrvoorhe
- 作成日時: 2026年02月27日 14:41:31(UTC)
- マージ日時: 2026年03月03日 19:19:39(UTC)
- ラベル: linkable-framework community-contribution area-Tools-ILLink
概要
ILLink の MarkStep クラスで、DoAdditional*Processing メソッドに MessageOrigin パラメータを追加するための変更です。これにより、サブクラスが追加マーク処理を実行する際に、診断情報の出所(origin)を追跡できるようになり、より詳細なエラー報告が可能になります。
// 変更前
protected virtual void DoAdditionalProcessing() { }
// 変更後
protected virtual void DoAdditionalProcessing(MessageOrigin origin) { }
変更内容
- ファイル:
src/tools/illink/src/linker/Linker.Steps/MarkStep.csDoAdditional*Processingメソッドシグネチャの更新:MessageOriginパラメータを追加- 全呼び出し元で
MessageOrigin引数を渡すように修正 - 合計 24 行の変更(追加 12 行、削除 12 行)
パフォーマンスへの影響
影響なし。単なるメソッドシグネチャの拡張で、ランタイムのパフォーマンスに直接的な影響はありません。
関連Issue
#124971
その他
この変更は 破壊的変更 です。MarkStep を継承してカスタム実装を行っている場合、DoAdditional*Processing メソッドのシグネチャに MessageOrigin パラメータを追加する必要があります。ILLink の extensibility hooks に対する変更のため、カスタムリンカー拡張機能を利用している開発者は対応が必要になります。
#124943 Add metric usage diff to SPMI reports
- 作成者: @EgorBo
- 作成日時: 2026年02月27日 05:34:51(UTC)
- マージ日時: 2026年03月03日 22:26:17(UTC)
- ラベル: area-CodeGen-coreclr
概要
SPMI(SuperPMI)レポートにメトリック使用量の差分表示機能を追加しました。コンパイラのメトリクス出力を拡張し、ビルド前後の差分をレポートに統合することで、JITコンパイラの最適化による影響をより詳細に追跡できるようになります。
変更内容
- src/coreclr/jit/compiler.cpp: メトリクス出力機能を拡張(6行追加)
- src/coreclr/scripts/superpmi.py: メトリック差分計算ロジックを大幅追加(433行追加)
- src/coreclr/scripts/superpmi_diffs.py: 差分サマリー機能を強化(50行追加)
- src/coreclr/scripts/superpmi_diffs_summarize.py: レポート生成ロジックを更新(29行追加)
- src/coreclr/scripts/superpmi-diffs.proj: プロジェクト設定調整(2行追加)
- eng/pipelines/coreclr/: CI/CDパイプライン設定更新(複数ファイルで計25行追加)
パフォーマンスへの影響
影響なし。本変更はSPMIレポート生成ツール側の機能追加であり、コンパイラ自体のランタイムパフォーマンスや生成コードの効率性には影響しません。レポート処理が増加する可能性がありますが、オフライン分析用のため実運用への負荷は軽微です。
関連Issue
なし
その他
- 作成者EgoroBoによる継続的な改善で、SuperPMIツールチェーンの詳細な分析能力を強化しています
- jakobbotschによる複数回のレビューを経て改善されています
- レポート表示例が添付されており、メトリクス差分が視覚的に表現される仕様が確認できます
#124938 Implement TraverseRCWCleanupList cDAC API
- 作成者: @Copilot
- 作成日時: 2026年02月27日 02:47:41(UTC)
- マージ日時: 2026年03月03日 02:45:42(UTC)
- ラベル: area-Diagnostics-coreclr
概要
このPRは、debuggerが契約ベースのDAC(Data Access Component)パスを通じてRCW(Runtime Callable Wrapper)クリーンアップリストエントリを列挙できるようにするTraverseRCWCleanupList cDAC APIを実装しています。C++側でデータディスクリプタを公開し、C#側でBuiltInCOM契約レイヤーを追加して、RCWのマーシャリング型デコーディングと同期ビットのマスキングを実現しています。
変更内容
C++ VM側(データディスクリプタ公開):
runtimecallablewrapper.h:RCWCleanupList、RCW、CtxEntryのcdac_data特殊化を追加comcache.h:CtxEntryのcdac_data特殊化とSTAThreadオフセット公開datadescriptor.inc/h: 型ディスクリプタとg_pRCWCleanupListグローバルポインタを追加(FEATURE_COMINTEROP配下)
C# cDAC層(契約とデータレイヤー):
BuiltInCOM_1.cs:GetRCWCleanupList実装を追加。バケットチェーンを走査し、m_pCtxEntryのビット0(同期ビット)をマスキング、マーシャリング型を(Flags & MarshalingTypeMask) == MarshalingTypeFreeThreaded << MarshalingTypeShiftで判定- 新規ファイル:
RCW.cs、RCWCleanupList.cs、CtxEntry.csデータクラス ISOSDacInterface.cs:TraverseRCWCleanupListコールバック引数をvoid*から型付きdelegate* unmanaged[Stdcall]<ulong, ulong, ulong, Interop.BOOL, void*, Interop.BOOL>に更新SOSDacImpl.cs: cDAC契約ベースの実装に切り替え、デバッグモードでは従来DAC実装とのクロスチェック機構を追加
テスト:
BuiltInCOMDumpTests.cs(Windows専用): STA スレッド上で3つのCOM オブジェクトを生成・破棄後、GC+finalizer サイクルを強制し、g_pRCWCleanupListを検証
パフォーマンスへの影響
影響なし。契約ベースのDAC読み込みは既存のターゲットメモリ抽象化層を通じてポインタサイズ値のみを読み込むため、追加的なパフォーマンスオーバーヘッドはありません。ビットマスキング操作は既存DACパターンと同等です。
関連Issue
なし(PR説明に記載なし)
その他
セキュリティ: セキュリティ脆弱性は導入されていません。既存のバウンズチェック機構を持つターゲットメモリ抽象化層を使用しており、m_pCtxEntryのビット0マスキングは既存DACパターンに準拠しています。
設計上の注記: COM関連cDAC APIはComWrappersではなくBuiltInCOMに配置されており、規約に準拠しています。また、BuiltInCOM_1.csへの名前変更は`ComW
#124927 [clr-interp] Add reverse P/Invoke support for the Swift calling convention to the CoreCLR interpreter on arm64
- 作成者: @kotlarmilos
- 作成日時: 2026年02月26日 22:30:34(UTC)
- マージ日時: 2026年03月03日 09:06:40(UTC)
- ラベル: os-ios area-CodeGen-Interpreter-coreclr
概要
CoreCLR インタープリタに arm64 Apple プラットフォーム向けの Swift 呼び出し規約の逆 P/Invoke サポートを追加します。SwiftSelf、SwiftError、SwiftIndirectResult などの特殊レジスタ処理、引数の書き換え、戻り値処理に対応し、Swift マネージドコールバックをインタープリタ下で正しく動作させます。
変更内容
コアコンポーネント:
asmconstants.h: 新しい定数定義 (+3)asmhelpers.S:Store_SwiftSelf、Store_SwiftError、Store_SwiftIndirectResultルーチン実装、インタープリタスタブのエピローグ更新 (+170/-37)callstubgenerator.cpp: Swift 低レベル化された構造体引数対応、スタブジェネレータ拡張 (+217/-47)callstubgenerator.h:CallStubHeaderにHasSwiftReturnLoweringフラグ追加 (+11/-6)
テスト:
- Swift ABI ストレステストの .csproj 更新 (複数)
- 不要なテストコード削除(SwiftCallbackAbiStress、SwiftErrorHandling、SwiftIndirectResult)
- SwiftInvalidCallConv テスト調整
パフォーマンスへの影響
影響なし このメンテナンス変更はレジスタ保存と引数転送のセマンティクスを正確に実装するもので、実行速度やメモリフットプリントに悪影響を与えません。
関連Issue
その他
重要な実装詳細:
- SwiftSelf: 逆 P/Invoke では
PlatformNotSupportedExceptionをスロー - SwiftError: 通常の引数レジスタ割り当てに参加しないため特別処理。スタック上のエラースロットアドレスをインタープリタ引数領域に保存
- SwiftIndirectResult:
x8値をインタープリタバッファに書き込み - 低レベル化構造体: GP/FP レジスタまたはネイティブスタックスロットから読み取り、明示的なオフセットでインタープリタバッファに格納。整列されていないフィールドに対応
- HasSwiftReturnLowering フラグ: 設定時、インタープリタスタブエピローグは継続コンテキスト読み込みをスキップし、低レベル化戻り値パス (x2) から戻り値データを取得
#124921 Convert PREPARE_SIMPLE_VIRTUAL_CALLSITE usages to use the UCO pattern
- 作成者: @jkoritzinsky
- 作成日時: 2026年02月26日 19:37:25(UTC)
- マージ日時: 2026年03月03日 04:46:23(UTC)
- ラベル: area-VM-coreclr
概要
このPRは、仮想呼び出しサイト準備マクロ PREPARE_SIMPLE_VIRTUAL_CALLSITE の使用法を UCO(Unmanaged Code Object)パターンに統一するリファクタリングです。マクロ自体は使用されなくなったため削除されています。これは .NET ランタイムの内部実装をより一貫性のある設計パターンへ移行させるための変更です。
変更内容
- src/coreclr/vm/callhelpers.h:
PREPARE_SIMPLE_VIRTUAL_CALLSITEマクロを削除(-33行) - src/coreclr/vm/corelib.h: マクロ定義を削除・統一(-1行)
- src/coreclr/vm/dynamicmethod.cpp: 動的メソッド呼び出しロジックを UCO パターンへ転換(+90/-83行)
- src/coreclr/vm/wasm/callhelpers-reverse.cpp: WebAssembly 対応の呼び出しヘルパーを UCO パターンへ転換(+88/-46行)
- src/coreclr/System.Private.CoreLib/src/System/RuntimeHandles.cs: マネージド側の RuntimeHandle 実装を追加(+48行)
- src/coreclr/vm/metasig.h: メタデータシグネチャ定義を統一(-1行)
パフォーマンスへの影響
影響なし。本変更は設計パターンの統一化であり、実行時の性能特性には変更がありません。
関連Issue
関連Issue: #123864(仮想呼び出しサイト準備処理の標準化に関する親課題)
その他
- マルチプラットフォーム対応:WebAssembly プラットフォーム固有の実装も同時に更新されています
- この変更は段階的なリファクタリング計画の一部であり、ランタイム内部の呼び出し規約処理の一貫性向上に貢献します
#124919 [Tests][UserEvents] Improve test timing and re-enable tests
- 作成者: @mdh1418
- 作成日時: 2026年02月26日 18:53:37(UTC)
- マージ日時: 2026年03月03日 01:56:01(UTC)
- ラベル: area-Tracing-coreclr
概要
ユーザーイベントトレーシングテストの不安定性を修正し、テストを再有効化するPRです。3つの独立した根本原因を特定し解決しています:(1) イベント生成とトレース設定の競合状態を回避するため、遅延を200msから700msに増加、(2) クロスプロセスのイベント混在を防ぐためProcessIDフィルタリングを追加、(3) 診断ポート削除時の権限エラーをハンドルするよう例外処理を追加。2コアシステムで500回連続実行テストで100%成功率を達成しました。
変更内容
| ファイル | 主な変更内容 |
|---|---|
eng/Versions.props |
record-traceバージョンを0.1.33304から0.1.33421へ更新(EventPipe IPC処理の修正を取得) |
Directory.Build.props |
テスト無効化フラグ(CLRTestTargetUnsupported)を削除しテストを再有効化 |
UserEventsTestRunner.cs |
イベント生成遅延を700msに増加、ProcessIDフィルタリング対応、stderr出力タグ改善、診断ポート削除時の例外処理追加 |
basic.cs, activity.cs, custommetadata.cs, managedevent.cs, multithread.cs |
トレーシングバリデータのシグネチャにPIDパラメータを追加し、ProcessIDでのイベントフィルタリング実装 |
パフォーマンスへの影響
影響なし(テストの安定性向上のための調整)
- イベント生成遅延の増加(200ms→700ms)はテスト起動時間に影響するが、ランタイムの本体パフォーマンスには影響なし
- ProcessIDフィルタリングはトレース検証時のみ適用される付加的な処理で、実行時パフォーマンスへの実質的な影響なし
- 改善点:CI環境での信頼性が大幅向上(従来の~65%から100%へ)
関連Issue
#123442 - ユーザーイベントトレーシングテストの不安定性
その他
根本原因の詳細:
- 競合状態:record-traceがプロセス発見、EventPipe IPCコマンド送信、PerfSession有効化を完了する前にトレーシー側がイベント書き込みを実行すると、イベントが失われる。実測値(p99)が229msだったため、~3倍の安全マージンで700msに設定
- クロスプロセス汚染:CI環境の複数.NETプロセスからのイベントが混在。ProcessIDフィルタリングで解決
- 権限エラー:共有CI環境で他ユーザー所有のソケット削除時にUnauthorizedAccessException/IOExceptionが発生。例外キャッチにより対応
テスト診断の改善:subprocessのstderrをstdoutにルーティングし
[stdout]/[stderr]タグを付与することで、タイミング関連の失敗をより診断しやすく
#124906 [release/8.0] Disable ResolveLinkTarget_Succeeds returnFinalTarget=true for UNC paths
- 作成者: @github-actions[bot]
- 作成日時: 2026年02月26日 16:59:18(UTC)
- マージ日時: 2026年03月03日 17:40:25(UTC)
- ラベル: Servicing-approved area-System.IO
概要
UNC パス(\\LOCALHOST\share\path など)に対して returnFinalTarget=true を指定した場合、Windows の UNC アクセス制限が有効な環境で ResolveLinkTarget_Succeeds テストが IOException で失敗する問題を修正しています。シンボリックリンク解決時に Windows が実際に UNC パスへのアクセスを試みることが原因です。.NET 8.0 はテストのみの修正で対応しています。
変更内容
- src/libraries/System.IO.FileSystem/tests/Base/SymbolicLinks/BaseSymbolicLinks.cs
SymbolicLink_ResolveLinkTarget_PathToTarget_Dataテストケースで UNC パスに対するreturnFinalTarget=trueのテスト実行を無効化- テスト条件を追加(8 行追加、1 行削除)
パフォーマンスへの影響
影響なし
テスト実行の条件判定ロジック追加のみで、ランタイム動作への影響はありません。
関連Issue
#124867(本体修正)、#124869(.NET 10.0 向けランタイム修正)
その他
- これは release/8.0 ブランチへのバックポート
- .NET 9.0 でも同様のテストのみの修正で対応
- .NET 10.0 では
ResolveLinkTargetランタイム実装自体を修正済み(#124869) - 環境によって UNC アクセス制限が有効な場合、テスト実行時の環境判定が必要
#124880 [Wasm RyuJit] annotate (some) local accesses with var nums
- 作成者: @AndyAyersMS
- 作成日時: 2026年02月26日 01:59:25(UTC)
- マージ日時: 2026年03月03日 04:41:32(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssembly RyuJit コンパイラでローカル変数へのアクセスに変数番号(var nums)のアノテーションを追加する変更です。シャドウスタックにスピルされたローカル変数に対して、ネイティブダンプで見られるような追加のアノテーション情報を付与し、デバッグ情報の充実を図ります。
変更内容
- emit.cpp: 既存のアノテーション処理コードを削減(+3/-11)
- emit.h: ローカル変数アノテーション機能の定義を追加(+13/-11)
- emitwasm.cpp: WebAssembly 固有のローカル変数アノテーション実装を追加(+32/-1)
パフォーマンスへの影響
影響なし。本変更はデバッグ情報の生成に関連するもので、ランタイムパフォーマンスには直接的な影響を与えません。
関連Issue
なし
その他
- 本変更は WebAssembly ターゲット向けの RyuJit JIT コンパイラの改善です
- ローカル変数のスピル情報に対するアノテーション精度向上により、デバッグ時のダンプ情報がより詳細になります
- コード変更量は小規模で、既存の汎用アノテーション機能との重複を削減しながら Wasm 固有の実装を追加しています
#124868 [wasm][coreclr] Improve method portable entrypoints lifecycle
- 作成者: @radekdoulik
- 作成日時: 2026年02月25日 19:05:39(UTC)
- マージ日時: 2026年03月03日 10:52:27(UTC)
- ラベル: arch-wasm area-VM-coreclr
概要
WebAssembly(WASM)環境で動的メソッドがファイナライズされ再利用される際に、ポータブルエントリポイント(Portable Entrypoint)に古いインタプリタコードへのダングリングポインタが残される問題を修正します。インタプリタコードポインタをクリアする箇所でポータブルエントリポイントもリセットし、メモリ安全性を確保します。
変更内容
- method.cpp (+30/-3): インタプリタコードポインタクリア時にポータブルエントリポイントをリセットするロジックを複数箇所に追加
- method.hpp (+4/-0): ポータブルエントリポイントリセット用の新規メソッド定義を追加
- finalizerthread.cpp (+1/-2): ファイナライザスレッド処理の調整
- codeversion.cpp (+3/-0): コードバージョン管理時のエントリポイント処理を改善
パフォーマンスへの影響
影響なし。本修正はメモリ安全性の確保が目的であり、パフォーマンス低下は想定されません。
関連Issue
その他
- WASM環境での動的メソッド再利用時のメモリ安全性に関わる修正です
- ファイナライザが正常に動作するように再度有効化されました
- 複数箇所でのポインタクリア時に一貫してエントリポイントリセットを行うようにしため、将来的な同様の問題を予防します
#124815 Implement ISOSDacInterface::GetJitManagerList in cDAC SOSDacImpl
- 作成者: @Copilot
- 作成日時: 2026年02月24日 20:22:07(UTC)
- マージ日時: 2026年03月03日 15:25:43(UTC)
- ラベル: area-Diagnostics-coreclr
概要
このPRは、cDAC SOSDacImpl に ISOSDacInterface::GetJitManagerList インターフェースの実装を追加するものです。JIT マネージャーの一覧取得機能をデータコントラクトアーキテクチャ(cDAC)経由で診断ツールが利用できるようになります。ExecutionManager契約に新しいメソッドを追加し、16個の新規ユニットテストを含めて173個の ExecutionManager テストが合格しています。
変更内容
- ISOSDacInterface.cs:
GetJitManagerListメソッドシグネチャを追加 - SOSDacImpl.cs:
GetJitManagerListの完全な実装を追加(54行追加) - ExecutionManagerCore.cs:
GetEEJitManagerInfoを実装 - ExecutionManager_1/2.cs: ExecutionManager契約に新メソッドをフォワード
- EEJitManager.cs: EEJitManager のデータ記述子を追加
- codeman.h: EEJitManagerAddress グローバル用の C++ データ記述子を追加
- ExecutionManager.md: ドキュメント更新
- ExecutionManagerTests.cs: 16個の新規テストケース追加
- MockDescriptors.ExecutionManager.cs: モック実装を更新
パフォーマンスへの影響
影響なし。本変更は診断インターフェースの追加であり、ランタイムのパフォーマンスクリティカルなパスに変更はありません。
関連Issue
なし
その他
- MSVC constexpr ビルド失敗を修正
- main ブランチからのマージコンフリクト(SyncBlock PR の DacpSyncBlockData)を解決済み
- データコントラクトアーキテクチャ(cDAC)の一部として、デバッガーやプロファイラーなどの診断ツールが JIT マネージャー情報にアクセスできるようになります
#124671 Move diagnostics out of JSImportGenerator and JSExportGenerator into a separate analyzer
- 作成者: @Copilot
- 作成日時: 2026年02月20日 19:56:31(UTC)
- マージ日時: 2026年03月03日 01:08:36(UTC)
- ラベル: area-System.Runtime.InteropServices.JavaScript
概要
JSImportGeneratorとJSExportGeneratorから診断ロジックを独立したDiagnosticAnalyzerクラスに抽出し、ソースコード生成パスを実行しなくてもIDEで診断結果が表示されるようにしました。PR #123780のLibraryImportGeneratorと同じパターンに従っています。
変更内容
- JSImportExportDiagnosticsAnalyzer.cs (新規): 抽象基底クラス
JSInteropDiagnosticsAnalyzerを実装。共有される9つの診断記述子と共通の検証ロジック、AllowUnsafeBlocksチェック(コンパイル終了時のアクションは不要な場合は登録しない)を含む - JSImportDiagnosticsAnalyzer.cs (新規):
JSImportDiagnosticsAnalyzerを実装。ManagedToNativeStubGeneratorを使用してマーシャリング診断を報告 - JSExportDiagnosticsAnalyzer.cs (新規):
JSExportDiagnosticsAnalyzerを実装。UnmanagedToManagedStubGeneratorを使用してマーシャリング診断を報告 - JSImportGenerator.cs: 診断レポート機能を削除。
IncrementalStubGenerationContextからDiagnosticsフィールドを削除。GenerateSourceが4要素タプルではなくMemberDeclarationSyntaxを直接返すよう変更。ProcessJSImportAttributeをprivate staticからinternal staticに昇格 - JSExportGenerator.cs: JSImportGeneratorと同様の変更。
GenerateSourceが4要素から3要素タプルに変更 - Comparers.cs: 診断関連の比較クラス(
ImmutableArraySequenceEqualComparer<T>など)を削除。GeneratedSyntax3(構文のみの3要素タプル)のみ保持 - Fails.cs (テスト):
Compilation.WithAnalyzersでアナライザーを実行し、生成器診断ではなくアナライザー診断をアサート
パフォーマンスへの影響
改善点:
- IDE診断レスポンスの向上:フルなソースコード生成を待たずにアナライザーが診断を提供。特に
AllowUnsafeBlocksが有効でない場合、コンパイル終了時アクションの登録を条件付きで行うことで不要なオーバーヘッドを削減 - メモリ削減:
Diagnosticsフィールド削除によりIncrementalStubGenerationContextのメモリフットプリントが削減 - 比較ロジック簡素化:診断関連の複雑な比較クラスが削除されコード量が削減
関連Issue
#123780
その他
- 破壊的変更なし:APIは非公開の内部実装のため影響範囲は限定的
ProcessJSImportAttributeがpublicになることで、アナライザーとジェネレーター間でロジック共有が可能に- テスト検証の変更により、IDE統合での診断動作をより正確に検証可能
#124669 Move diagnostics from ComInterfaceGenerator and VtableIndexStubGenerator into separate analyzers
- 作成者: @Copilot
- 作成日時: 2026年02月20日 19:56:04(UTC)
- マージ日時: 2026年03月03日 01:25:11(UTC)
- ラベル: area-System.Runtime.InteropServices
概要
このPRは、ComInterfaceGeneratorとVtableIndexStubGeneratorの診断ロジックを専用のDiagnosticAnalyzerクラスに分離しています。これにより、IDEが診断の表示タイミングと方法をより細かく制御できるようになり、#123780で確立されたパターンに従っています。
変更内容
新規ファイル:
ComInterfaceGeneratorDiagnosticsAnalyzer.cs(+314行) —[GeneratedComInterface]属性付きインターフェースの検証を実施。ConcurrentDictionaryでキャッシュされたインターフェース情報と祖先チェーンを構築し、インターフェース間の診断(BaseInterfaceIsNotGeneratedなど)をサポートVtableIndexStubDiagnosticsAnalyzer.cs(+143行) —[VirtualMethodIndex]属性メソッドの検証を実施。メソッド単位でのシンボルアクション登録で対応
修正ファイル:
ComInterfaceGenerator.cs—RegisterDiagnostics呼び出しを削除;CalculateStubInformationをinternal staticに昇格VtableIndexStubGenerator.cs— 診断生成コード、無効メソッドフィルタリング、RegisterDiagnostics呼び出しを削除;CalculateStubInformationをinternal staticに昇格;スタブ生成メソッドをMemberDeclarationSyntax直接返却に簡素化- テストファイル4件 —
EmptyDiagnosticAnalyzerからComInterfaceGeneratorDiagnosticsAnalyzerへのverifierエイリアス更新
パフォーマンスへの影響
影響なし。アーキテクチャ的な再構成であり、診断ロジックの実行方式は変わらず、スレッドセーフなConcurrentDictionaryキャッシングで効率性を維持。
関連Issue
#123780(LibraryImportGeneratorでの同様パターンの確立)
その他
- 839個のユニットテストすべてがパス
- 診断の動作は既存と同一で、後方互換性を維持
- スレッドセーフ設計で、コンパイル時の並列処理に対応
#124631 Remove Debug.Assert in SetSslCertificate that aborts process during dispose-during-handshake race
- 作成者: @Copilot
- 作成日時: 2026年02月20日 08:42:08(UTC)
- マージ日時: 2026年03月03日 13:55:53(UTC)
- ラベル: area-System.Net.Security
概要
AuthenticateAsServerAsyncとDispose()の競合状態中に、証明書/キーのSafeHandleが無効化される前にSetSslCertificateに到達する場合がある問題を修正します。Debug.AssertがプロセスをSIGABRTで強制終了させるのではなく、p/invokeマーシャラーがObjectDisposedExceptionを投げることを意図しています。
変更内容
Interop.OpenSsl.cs
SetSslCertificateメソッドの2つのDebug.Assert文を削除Debug.Assert(certPtr != null && !certPtr.IsInvalid);Debug.Assert(keyPtr != null && !keyPtr.IsInvalid);
p/invokeマーシャラーが既に閉じられたSafeHandleをネイティブ境界を越えて渡された場合にObjectDisposedExceptionを投げるため、これらのアサーションは冗長で有害です。
パフォーマンスへの影響
影響なし
関連Issue
- dotnet/runtime#124602(このPRが修正する根本的な問題)
その他
セキュリティ・安定性改善
- この修正により、
SslStreamの破棄中のハンドシェイク競合状態がプロセスクラッシュ(SIGABRT)ではなく、予期されたObjectDisposedExceptionで適切に処理されるようになります - テスト
System.Net.Security.Tests.SslStreamDisposeTest.Dispose_ParallelWithHandshake_ThrowsODEが10,000並列イテレーションで安定します
#124601 arm64: Fixed using ands/bics to compare against static unsigned constant 0
- 作成者: @jonathandavies-arm
- 作成日時: 2026年02月19日 15:46:09(UTC)
- マージ日時: 2026年03月03日 15:19:38(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
ARM64アーキテクチャにおいて、静的な符号なし定数0との比較時にands/bics命令を使用する最適化を修正しました。この修正により、符号なし定数0との比較が正確に処理され、JITコンパイラによる命令結合の最適化が適切に機能するようになります。
変更内容
- src/coreclr/jit/lower.cpp: ARM64向けの命令生成ロジックを修正。
ands/bics命令を使用した比較の最適化パスに条件を追加(+24行) - src/tests/JIT/Regression/JitBlue/Runtime_124510/Runtime_124510.cs: Issue #124510の回帰テストを新規追加(+58行)
- src/tests/JIT/opt/InstructionCombining/And.cs: AND命令の結合テストケースを拡張(+47行)
- src/tests/JIT/opt/InstructionCombining/Bic.cs: BIC(Bit Clear)命令の結合テストケースを新規追加(+43行)
- src/tests/JIT/Regression/Regression_ro_1.csproj: テストプロジェクトに新規テストを登録(+1行)
パフォーマンスへの影響
コード生成の最適化に関する修正のため、符号なし定数0との比較を含むARM64コードのパフォーマンスが向上する可能性があります。ただし、具体的なベンチマーク数値は提供されていません。
関連Issue
#124510(ARM64のands/bics命令による比較最適化の不具合)
その他
- この修正はARM64アーキテクチャ固有の最適化に関するもので、他のアーキテクチャへの影響はありません
- 複数のテストケースが追加されており、命令結合の最適化機能の信頼性向上に寄与しています
#124114 JIT: Accelerate uint->floating casts on pre-AVX-512 x86
- 作成者: @saucecontrol
- 作成日時: 2026年02月07日 00:18:40(UTC)
- マージ日時: 2026年03月03日 22:27:18(UTC)
- ラベル: area-CodeGen-coreclr community-contribution avx512
概要
uint から浮動小数点への型変換(uint→float/double)をx86プラットフォーム上でヘルパー関数呼び出しなしで高速化するPull Requestです。AVX-512以前のx86では、32ビット変換用のネイティブ命令がないため、SSE命令を組み合わせた変換シーケンスを使用して、ヘルパー呼び出しのオーバーヘッドを排除します。典型的には、関数呼び出しの代わりにSSE命令(vcvtsi2sd、vaddsd、vcvtpd2psなど)で処理し、コード生成の簡潔化と若干の性能改善を実現します。
変更内容
- compiler.h: 新しいキャストシーケンスに必要なマスク定義を追加(+1行)
- decomposelongs.cpp: 64ビット変換のロジック調整(+10/-9行)
- flowgraph.cpp: uint→浮動小数点変換の新しいパス処理を追加(+38行)
- importer.cpp: ヘルパー呼び出しの処理削減(+2/-22行)
- lowerxarch.cpp: SSE命令による変換シーケンスの実装(+89行)
- morph.cpp:
fgMorphExpandCastの簡潔化(+57/-106行)
パフォーマンスへの影響
改善: ヘルパー関数呼び出し(CORINFO_HELP_LNG2FLT)を排除することで、スタック操作や関数呼び出しのオーバーヘッドを削減。生成コードサイズは若干増加(27バイト→31バイト)しますが、呼び出しオーバーヘッド削減により全体的な性能向上を期待できます。特にループ内での型変換が多い場合に効果的です。
関連Issue
#116805(より大きな型変換最適化の一部)
その他
- 本変更は
fgMorphExpandCastの簡潔化パッチシリーズの一環(このPR後、さらに1つのパッチが予定されている) - Baseline x86プラットフォーム特有の最適化であり、他のプラットフォーム(AVX-512対応など)には影響なし
- レビュー時にCopilotからは追加コメントなし、技術的に承認済み
#123939 Fixed some potential null derefs in coreclr
- 作成者: @tpa95
- 作成日時: 2026年02月03日 13:31:43(UTC)
- マージ日時: 2026年03月03日 10:06:55(UTC)
- ラベル: area-PAL-coreclr community-contribution
概要
CoreCLRのinspect.cppとvirtual.cppで、静的解析ツール(SVACE)により検出された潜在的なnullポインタ逆参照の問題を修正しました。実環境では未観測ですが、予防的な修正となります。
変更内容
- src/coreclr/debug/daccess/daccess.cpp: nullチェック処理を追加(+6行)
- src/coreclr/pal/src/map/virtual.cpp: 既存のnullチェック条件を改善(+2/-2行)
nullポインタ参照の事前チェックにより、ランタイムクラッシュの潜在的なリスクを低減する内部実装の修正です。
パフォーマンスへの影響
影響なし (nullチェック追加による実行時オーバーヘッドは無視可能レベル)
関連Issue
#123939
その他
- Linux Verification Center(linuxtesting.org)のSVACE静的解析ツールにより発見
- 報告者: Pavel Tikhomirov(Gazinformservice所属)
- 実装上のバグ(クラッシュ)として実際に観測されていない予防的修正のため、既存動作への影響はありません
#123146 JIT: Normalize optimizations for ConditionalSelect and BlendVariable
- 作成者: @saucecontrol
- 作成日時: 2026年01月13日 18:51:58(UTC)
- マージ日時: 2026年03月03日 00:41:49(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
JIT コンパイラの x86/x64 アーキテクチャにおいて、ConditionalSelect と BlendVariable SIMD 操作の最適化を統一化しました。定数マスク時のフォーディング、ベクトル定数をマスク定数に変換する最適化、EVEX 組み込みゼロの活用、およびゼロとのブレンドを AND/ANDN 命令に最適化することで、生成コードサイズと実行効率が向上します。
変更内容
- lowerxarch.cpp (+213/-197): x86/x64 固有の最適化ロジックを追加・修正
BlendVariableの定数マスク時のフォーディング実装ConvertVectorToMaskによる CNS_VEC から CNS_MASK への最適化- EVEX 組み込みゼロ(
{z}フラグ)の活用範囲拡大 - ゼロとのブレンドを AND/ANDN 命令に変換する最適化
- gentree.cpp (+61/-1): IR ノード構造の最適化処理
- valuenum.cpp (+35/-0): 値番号付けロジックの拡張
- lower.h (+1/-0): ヘッダー定義の追加
- rationalize.cpp (-4): 不要な処理削除
パフォーマンスへの影響
改善点:
- コード生成サイズの削減(提供例で 34 バイト→19 バイト、41 バイト→34 バイト、38 バイト→28 バイト、34 バイト→24 バイト)
- 不要な仲介レジスタの削減(メモリ帯域幅改善)
- EVEX 組み込みゼロ活用によるマイクロ命令削減
- AND/ANDN への変換で、より効率的な実行ユニット利用
例:Vector512<int>.Zero とのブレンド時、ゼロレジスタ初期化命令が不要に
// 最適化前: vxorps + vpblendmd
// 最適化後: vpblendmd {z} (EVEX 組み込みゼロ)
関連Issue
なし
その他
- 複数のコードジェネレーション改善が含まれており、特に AVX-512 と AVX2 命令セットの両方で効果を発揮
- 提供されたアセンブリ差分はすべて x86/x64 向け最適化(ARMv8 などには影響なし)
- 破壊的変更なし(内部 JIT 最適化のため外部 API への影響なし)