注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #126134 update dependencies from emsdk 9.0.15
- #126115 [cDAC] Fix GetLocalVariableCount to return E_FAIL for missing local signatures
- #126084 [wasm][coreclr] Run only libs smoketest on Firefox and V8
- #126076 Allow null arguments in ProcessStartInfo constructor and Process.Start
- #126071 Fix reentrant Monitor wait
- #126069 Add dotnet/extensions to contributing guidelines
- #126066 Add code-review agentic workflow
- #126064 Fix OperIs(GT_CNS_INT, GT_CNS_LNG) assertion during import
- #126059 [Wasm RyuJit] codegen for loading a register-sized struct local
- #126057 Set up GitHub Agentic Workflows
- #126055 [release/10.0] Defer DOTNET_DbgEnableMiniDump error message until dump creation
- #126052 Add VectorXx.Asin and use it to vectorize TensorPrimitives.Asin
- #126017 [interpreter] Fix crash on empty switch instruction
- #126005 Defer GetServiceInfo initialization in ActivatorUtilities
- #125995 Move remaining Linux build pools from Ubuntu 22.04 to Azure Linux 3
- #125991 Update EOL OS versions in helix-platforms.yml
- #125987 Disable MonoAPI tests on Mono Windows (dotnet/runtime#67047)
- #125944 [main] Update dependencies from dotnet/xharness
- #125916 Fix EPERM when killing sudo-launched createdump process in CollectCrashDumpWithCreateDump
- #125903 Add adoption catalog requirement to api-proposal skill
- #125881 Include declaring type name in assembly loading handler tracing events
- #125876 Fix ErrorOnUnknownConfiguration to respect ConfigurationKeyNameAttribute
- #125845 Add r2 r composite
- #125798 Fix: wrap AssignCopy with IfFailThrow in GetMetaDataFileInfoFromPEFile
- #125793 Add linux_arm and windows_x86 to cDAC dump test platforms
- #125747 Fix for 125246
- #125542 Add Wasm import thunks
- #125500 Fix possible integer overflow
- #125463 [cDAC] Implement GetArgumentByIndex and GetLocalVariableByIndex on ClrDataFrame
- #125329 Use Framework SourceType for WASM pass-through assets in multi-client solutions
- #125175 [release/10.0] Fix bug in LowerCallMemmove
- #124877 Revert forwarding activation signal
- #123874 TarWriter: when writing entries for the same hard-linked file use HardLink entries.
- #123717 arm64: Refactor mov/movprfx for unmasked operations
- #119637 Make the PeriodicTimer.WaitForNextTickAsync description more descriptive
#126134 update dependencies from emsdk 9.0.15
- 作成者: @vseanreesermsft
- 作成日時: 2026年03月25日 23:20:24(UTC)
- マージ日時: 2026年03月25日 23:48:45(UTC)
- ラベル: Servicing-approved area-codeflow
概要
emsdk(Emscripten SDK)を9.0.15へ更新する依存関係の更新PRです。WebAssembly関連のビルドツールチェーンが対象となります。
変更内容
- NuGet.config: NuGetパッケージソース設定の更新(1行追加、1行削除)
- eng/Version.Details.xml: emsdk関連のバージョン詳細情報を6箇所更新
- eng/Versions.props: ビルド時のバージョンプロパティを2箇所更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
なし
#126115 [cDAC] Fix GetLocalVariableCount to return E_FAIL for missing local signatures
- 作成者: @max-charlamb
- 作成日時: 2026年03月25日 18:59:13(UTC)
- マージ日時: 2026年03月25日 21:20:57(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Contracts DAC)の GetLocalVariableCount メソッドをネイティブDAC仕様に合わせて修正しました。ローカル署名がないメソッド(動的メソッド、ILスタブ、ローカル変数なしのメソッド)に対して、S_OKで count 0 を返していた仕様を E_FAIL に変更します。これにより、ネイティブDACとの動作パリティが確保され、検証アサートの失火を防ぎます。
変更内容
- src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/ClrDataFrame.cs:
GetLocalVariableCountでGetLocalSignatureReaderが null を返す場合、Marshal.GetExceptionForHR(E_FAIL)をスロー。同時にGetNumArgumentsの DEBUG パリティ検証を緩和し、古いランタイムダンプ解析時の互換性を向上
パフォーマンスへの影響
影響なし
関連Issue
その他
- テスト結果:ローカルダンプテスト 117/117 パス
- 対象:cDAC の
ClrDataFrameが 10.0.5 など過去のランタイムダンプを解析する際のネイティブDAC仕様パリティ確保
#126084 [wasm][coreclr] Run only libs smoketest on Firefox and V8
- 作成者: @radekdoulik
- 作成日時: 2026年03月25日 11:34:40(UTC)
- マージ日時: 2026年03月25日 13:50:59(UTC)
- ラベル: arch-wasm area-Infrastructure-coreclr
概要
WASM CoreCLR ライブラリテストパイプラインテンプレートを更新し、Firefox と V8 ブラウザエンジンのシナリオでスモークテストのみを実行するように強制します。これにより Linux x64 キューの負荷を軽減します。
変更内容
- eng/pipelines/runtime.yml:
WasmTestOnFirefoxまたはWasmTestOnV8シナリオが含まれる場合にRunSmokeTestsOnly=trueを強制的に設定 - 既存のパスベースのスモークテスト選択ロジックは他のシナリオで継続
パフォーマンスへの影響
CI キューの負荷軽減(Linux x64 キューの圧力低減が期待されます)
関連Issue
なし
その他
- 変更は CI/CD パイプライン設定のみ(ランタイムコード自体への影響なし)
- 内部的なテスト実行フローの最適化で、公開 API への影響なし
#126076 Allow null arguments in ProcessStartInfo constructor and Process.Start
- 作成者: @Copilot
- 作成日時: 2026年03月25日 07:15:29(UTC)
- マージ日時: 2026年03月25日 13:23:11(UTC)
- ラベル: area-System.Diagnostics.Process
概要
ProcessStartInfo コンストラクタと Process.Start() メソッドの arguments パラメータを nullable (string?) に変更する nullability アノテーション更新。これまで null を受け取ると内部的に null のまま保存されていましたが、getter で string.Empty を返していた実際の動作に公開 API 契約を合わせるもの。
// 以前は nullable 警告が出ていたが、今後は正しく null を受け付ける
var psi = new ProcessStartInfo("dotnet", null);
var p = Process.Start("dotnet", null);
変更内容
- ProcessStartInfo.cs —
ProcessStartInfo(string fileName, string arguments)でstring arguments→string? argumentsに変更 - Process.cs —
Process.Start(string fileName, string arguments)でstring arguments→string? argumentsに変更 - ref/System.Diagnostics.Process.cs — 参照アセンブリを新しい nullability アノテーションに更新
- ProcessStartInfoTests.cs — コンストラクタ経由および property 割り当てで null を渡すケース
TestArgumentsNullPropertyを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
公開 API の変更(nullability のみ)で破壊的変更ではなく、既存コードの nullable 警告を解消するもの。実装は変わらず、null を受け取った場合の動作(null を格納し、getter は string.Empty を返す)は既存のまま。
#126071 Fix reentrant Monitor wait
- 作成者: @eduardo-vp
- 作成日時: 2026年03月25日 03:31:15(UTC)
- マージ日時: 2026年03月25日 23:47:57(UTC)
- ラベル: area-System.Threading
概要
Monitor.Waitの再入可能性に関する問題を修正します。メッセージポンピングを許可する同期コンテキスト(SynchronizationContext.Waitなど)を使用する場合、同じスレッド上での入れ子になったMonitor.Wait呼び出しが単一のスレッド静的Waiterを共有し、一方の待機がもう一方のPulseを横取りする問題が発生していました。
本修正では、待機中にスレッド静的Waiterをnullに設定することで、再入可能なMonitor.Waitは独立したAutoResetEventを持つ独自のWaiterを取得するようにします。待機完了後にWaiterは復元されます。
変更内容
- System.Private.CoreLib/System/Threading/Condition.cs: スレッド静的
Waiterのキャッシング処理を調整。待機中はWaiterをnullに設定し、再入可能な待機が同じスレッド静的インスタンスを共有しないようにします。待機完了後に復元。 - System.Threading/MonitorTests.cs: メッセージポンピング機能を持つカスタム
SynchronizationContextを使用した再入可能な待機シナリオを再現するリグレッションテスト(65行追加)を追加。
パフォーマンスへの影響
影響なし
関連Issue
その他
この修正は内部実装(System.Private.CoreLib内のConditionクラス)の変更であり、公開APIに対する破壊的変更はありません。マルチスレッド同期の信頼性を向上させます。
#126069 Add dotnet/extensions to contributing guidelines
- 作成者: @stephentoub
- 作成日時: 2026年03月25日 02:14:31(UTC)
- マージ日時: 2026年03月25日 03:04:38(UTC)
- ラベル: area-Meta
概要
CONTRIBUTING.mdにdotnet/extensionsリポジトリを追加し、問題報告者がより適切なリポジトリを特定できるよう貢献ガイドラインを更新しました。
変更内容
- CONTRIBUTING.md: 「Identify Where to Report」セクションの共通リポジトリリストに
dotnet/extensionsを追加(+1/-0)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
なし
#126066 Add code-review agentic workflow
- 作成者: @stephentoub
- 作成日時: 2026年03月25日 01:21:07(UTC)
- マージ日時: 2026年03月25日 01:40:14(UTC)
- ラベル: area-Infrastructure
概要
dotnet/runtimeリポジトリに自動コードレビュー機能を提供するGitHub Agentic Workflowを追加します。このワークフローはプルリクエストがオープンされた時、または新しくプッシュされた時に自動的にトリガーされ、リポジトリのcode-reviewスキルを使用して構造化されたレビューコメントをPR上にポストします。
変更内容
.github/workflows/code-review.md: Agentic Workflowの定義。pull_requestイベント(opened、synchronize)でトリガーし、.github/skills/code-review/SKILL.mdを実行時に読み込み、レビュープロセスと出力フォーマットを制御。新しいコミットプッシュ時に以前のレビューコメントを自動的に非表示化.github/workflows/code-review.lock.yml: コンパイルされた実行可能なワークフロー定義(GitHub Actionsが実際に実行).github/aw/actions-lock.json:github/gh-aw-actions/setup@v0.63.1のアクション依存関係を追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 読み取り専用エージェント権限を使用(
contents: read、issues: read、pull-requests: read) - すべての書き込みは安全な出力メカニズム(
safe-outputs)を通じて単一のadd-comment操作に制限 - GitHub MCP tools(
toolsets: [default])を使用してPR差分、ファイル、メタデータを読み取り - Copilot PAT pool統合を含む
- このPRはGitHub Copilotの支援で生成されました
#126064 Fix OperIs(GT_CNS_INT, GT_CNS_LNG) assertion during import
- 作成者: @dhartglassMSFT
- 作成日時: 2026年03月24日 23:45:34(UTC)
- マージ日時: 2026年03月25日 22:38:17(UTC)
- ラベル: area-CodeGen-coreclr
概要
JIT コンパイラの gtFoldExprHWIntrinsic 関数内で、Vector.WithElement メソッドのインデックス引数がバウンドチェック付きの値(COMMA式)である場合に発生していたアサーション エラーを修正します。従来は単純な整数定数のみを想定していましたが、実際にはバウンドチェック結果を含むCOMMA式が渡される可能性があったため、この条件の厳密性を緩和しました。
変更内容
src/coreclr/jit/gentree.cpp:
gtFoldExprHWIntrinsicのアサーション条件を修正(1行変更)- インデックス引数の型チェック条件を調整し、COMMA式を許容
src/tests/JIT/Regression/JitBlue/Runtime_126060/Runtime_126060.cs: リグレッション テスト追加
- バウンドチェック付きインデックスで
Vector.WithElementを呼び出すテストケースを追加
- バウンドチェック付きインデックスで
src/tests/JIT/Regression/Regression_ro_2.csproj: テスト プロジェクト構成の更新
- 新規テストケースをプロジェクトに登録
パフォーマンスへの影響
影響なし。アサーション エラーの修正のみで、実行時動作に変更なし。
関連Issue
その他
Windows x64 antigen テストで頻繁に発生していたアサーション エラーを解決することで、テスト実行時のノイズを削減します。
#126059 [Wasm RyuJit] codegen for loading a register-sized struct local
- 作成者: @AndyAyersMS
- 作成日時: 2026年03月24日 22:32:34(UTC)
- マージ日時: 2026年03月25日 14:33:24(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
Wasm RyuJit のローカル変数コード生成を修正し、レジスタサイズの構造体ローカルを正しく読み込むために、ロード命令発行時に適切なメモリ属性(emitAttr)を使用するようにしました。
変更内容
- src/coreclr/jit/codegenwasm.cpp: ノードが
TYP_STRUCTの場合、レジスタ型からのemitAttr派生処理を追加し、ロード発行時に正しい属性を適用するよう調整。またEA_UNKNOWN属性をキャッチするためのアサーション追加。
パフォーマンスへの影響
影響なし(バグ修正のため機能的な改善に該当)
関連Issue
なし
その他
この変更はWebAssembly(Wasm)ターゲット向けのコンパイラバックエンド修正であり、レジスタサイズの構造体をローカル変数として扱う際の正確性向上を目的としています。
#126057 Set up GitHub Agentic Workflows
- 作成者: @jeffhandley
- 作成日時: 2026年03月24日 20:46:37(UTC)
- マージ日時: 2026年03月25日 00:53:10(UTC)
- ラベル: area-Infrastructure
概要
このPRはGitHub Agentic Workflows (gh-aw) をGitHub Copilotで安全に実行するためのインフラストラクチャを導入します。主な機能として、複数のCopilot Personal Access Token (PAT) から無作為に選択するメカニズムを実装し、レート制限の問題を軽減します。
変更内容
- Copilot PAT プール選択アクション (
.github/actions/select-copilot-pat/action.yml): 最大10個のシークレット (COPILOT_PAT_0からCOPILOT_PAT_9) からランダムにPATを選択する再利用可能なGitHub Actionsコンポーネント。オプションでシード値による決定的な選択も可能 - PAT選択アクション用ドキュメント (
.github/actions/select-copilot-pat/README.md): セットアップ、PAT管理、ワークフロー統合に関する詳細な使用手順を提供 - サンプルAgentic Workflow (
.github/workflows/copilot-echo.md): PAT選択メカニズムを統合し、実装を検証するワークフロー - コンパイル済みワークフロー (
.github/workflows/copilot-echo.lock.yml):gh aw compileで生成されたGitHub Actions実行用のロックファイル - gh-awリポジトリスキャフォルディング: アクションロックメタデータ (
.github/aw/actions-lock.json)、エージェントディスクリプタ (.github/agents/agentic-workflows.agent.md)、生成ファイルのgit属性設定 (.gitattributes)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはランタイムやコンパイラの変更ではなく、dotnet/runtimeリポジトリのGitHub Actions ワークフロー構成に関する追加です。本番コードへの影響はなく、CI/CD プロセスの改善とAgentic Workflow サポートの導入に限定されています。
#126055 [release/10.0] Defer DOTNET_DbgEnableMiniDump error message until dump creation
- 作成者: @github-actions[bot]
- 作成日時: 2026年03月24日 20:03:53(UTC)
- マージ日時: 2026年03月25日 16:05:05(UTC)
- ラベル: Servicing-approved area-NativeAOT-coreclr
概要
nativeAOTでクラッシュダンプ収集用の環境変数(DOTNET_DbgEnableMiniDump等)が設定されている場合、起動時のエラーメッセージ出力を遅延させる変更です。これにより、ダンプ作成が実際に行われる時点までエラー検出を遅延し、不要な警告メッセージを削減します。特にcrossgenなどのツールがnativeAOTに移行した現在、ビルド時に子プロセスで余分なエラーメッセージが出力される問題を解決します。
変更内容
src/coreclr/nativeaot/Runtime/unix/PalCreateDump.cpp:DOTNET_DbgEnableMiniDump関連のエラーメッセージ出力タイミングを、起動時から実際のダンプ作成時(execv呼び出し時点)に変更
パフォーマンスへの影響
改善あり。初期化時の不要なファイルシステムチェックが削除され、エラー検出がダンプ実際に必要な時点まで遅延されることで、起動パフォーマンスが向上します。
関連Issue
#122986(メインブランチへの元のPR)
その他
- nativeAOT固有の変更で、ランタイム内部実装の一部
- 既存のダンプ作成ロジックと成功パスは変更されず、安全性が高い
- メインブランチで既に安定稼動している
- release/10.0ブランチへのバックポート
#126052 Add VectorXx.Asin and use it to vectorize TensorPrimitives.Asin
- 作成者: @stephentoub
- 作成日時: 2026年03月24日 19:29:05(UTC)
- マージ日時: 2026年03月25日 15:55:38(UTC)
- ラベル: area-System.Runtime.Intrinsics
概要
Vector64/128/256/512.Asin の新しい公開APIを追加し、TensorPrimitives.Asin のSIMD ベクトル化を有効にします。これにより、float および double テンソルワークロードのパフォーマンスが向上します。
変更内容
- 公開API追加:
System.Runtime.IntrinsicsにVector64/128/256/512.Asin(float/double)の新しいオーバーロードを追加(参照アセンブリも更新) - VectorMath実装:
VectorMath.csにAsinDoubleおよびAsinSingleの逆正弦アルゴリズムを実装(float は double に拡大して多項式評価) - 各Vector型の実装:
Vector64/128/256/512.csにAsinメソッドとスカラーフォールバックを実装 - TensorPrimitives統合:
.NET 11+でTensorPrimitives.Asinがベクトル化APIを使用するよう有効化 - テスト調整: FMA(融合乗算加算)サポートの有無に対応するため、テスト許容差を調整
パフォーマンスへの影響
SIMD ベクトル化により、float および double テンソルの Asin 演算が複数要素を並列処理できるようになるため、実行速度の向上が期待できます。ただし、具体的なベンチマーク数値は提供されていません。
関連Issue
#123611 から分離されたPR
その他
- 公開APIの追加であり、
System.Runtime.Intrinsics名前空間に新しい機能を公開します - 互換性に関する破壊的変更はなし
- テスト方法は汎用テスト作成フレームワークを使用して複数Vector型に対応
#126017 [interpreter] Fix crash on empty switch instruction
- 作成者: @radekdoulik
- 作成日時: 2026年03月24日 10:05:51(UTC)
- マージ日時: 2026年03月25日 19:49:51(UTC)
- ラベル: arch-wasm area-CodeGen-Interpreter-coreclr
概要
インタプリタのCEE_SWITCHハンドラーが、ターゲット数が0の空のswitch命令(例:IL内のswitch())をコンパイルする際にクラッシュする問題を修正しました。ハンドラーが無条件にallocate(n)を呼び出し、n=0の場合にアリーナアロケータのassert(size != 0)をトリガーしていました。
変更内容
- src/coreclr/interpreter/compiler.cpp:
CEE_SWITCHハンドラーに早期終了ロジックを追加。n == 0の場合は、空のswitchがスタック値を消費するだけのno-op操作として扱い、INTOP_SWITCH命令の生成をスキップ(+5/-0)
パフォーマンスへの影響
影響なし。空のswitch命令は稀なエッジケースであり、修正は単に不要な処理をスキップするものです。
関連Issue
その他
- 修正により、
JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44946/b44946.il内の0個のターゲットを持つswitch()命令でのクラッシュが解決 - Regression_6マージランナーで検証済み:290パス、0失敗
#126005 Defer GetServiceInfo initialization in ActivatorUtilities
- 作成者: @MichalStrehovsky
- 作成日時: 2026年03月24日 02:10:24(UTC)
- マージ日時: 2026年03月25日 00:16:38(UTC)
- ラベル: area-Extensions-DependencyInjection
概要
ActivatorUtilitiesのスタートアップ最適化を目的とした変更です。GetServiceInfo MethodInfoの初期化を遅延させることで、クラス読み込み時に発生していた負荷の高いDelegate.Methodリフレクション呼び出しを、実際に必要になるまで先延ばしにします。ネイティブAOTビルドでは不要ですが、自動的に除去するのが困難なため、遅延初期化パターンで対応します。
変更内容
Microsoft.Extensions.DependencyInjection.Abstractions/ActivatorUtilities.csGetServiceInfoMethodInfoを入れ子のMethodInfoHolderクラスに移動し、遅延初期化を実装- 式木ファクトリを更新して、新しいホルダー経由でMethodInfoを参照するよう変更
パフォーマンスへの影響
ActivatorUtilities型の初期化時間を削減します。Delegate.Methodリフレクション呼び出しがクラス読み込み時から初回使用時に遅延されるため、アプリケーションスタートアップの起動時間が改善されます。特にDIコンテナの初期化が頻繁に行われる環境で効果があります。
関連Issue
その他
- 変更範囲は小規模(+8行/-3行)で、既存APIに影響なし
- ネイティブAOT最適化への対応として今後の改善の基礎となる可能性あり
#125995 Move remaining Linux build pools from Ubuntu 22.04 to Azure Linux 3
- 作成者: @richlander
- 作成日時: 2026年03月23日 23:25:42(UTC)
- マージ日時: 2026年03月25日 20:19:54(UTC)
- ラベル: area-Infrastructure-libraries
概要
Linux ビルドプール設定を Ubuntu 22.04 から Azure Linux 3 に移行します。前回の #125535 での移行漏れをカバーし、エンタープライズテストおよびストレステストのビルドプール設定を統一します。
変更内容
- eng/pipelines/libraries/enterprise/linux.yml - ビルドプール参照を
Build.Ubuntu.2204.Amd64.Openからbuild.azurelinux.3.amd64.openに変更 - eng/pipelines/libraries/stress/http.yml - 同様にビルドプール参照を更新
- eng/pipelines/libraries/stress/ssl.yml - 同様にビルドプール参照を更新
- src/libraries/Common/tests/System/Net/StressTests/run-docker-compose.ps1 - Docker Compose スクリプトで Ubuntu 22.04 の参照を Azure Linux 3 に更新
- src/libraries/Common/tests/System/Net/StressTests/run-docker-compose.sh - 同様にスクリプトを更新
パフォーマンスへの影響
影響なし(ビルド基盤の更新であり、ランタイム/ライブラリの動作変更はなし)
関連Issue
その他
- 本 PR は AI/Copilot によって自動生成されています
- release/10.0 ブランチへの対応 PR が続く予定です
#125991 Update EOL OS versions in helix-platforms.yml
- 作成者: @richlander
- 作成日時: 2026年03月23日 22:15:07(UTC)
- マージ日時: 2026年03月25日 20:20:08(UTC)
- ラベル: area-Infrastructure
概要
.NET 11のサポートOS一覧に基づいて、Helix CI/CDパイプラインの古いOS版を最新のサポート版に更新するもの。EOL済みまたはEOL前の環境を除去し、CI実行環境をサポート対象OSに揃えます。
変更内容
- eng/pipelines/helix-platforms.yml: Helix佇列の"oldest"プラットフォーム定義を更新
- openSUSE: 15.5 → 16.0 (15.5既にEOL)
- Fedora: 42 → 43 (42は2026-05-13にEOL、.NET 11 GA前)
- Debian x64: 12 → 13 (12は2026-06-10にEOL、.NET 11 GA前)
- Debian ARM32: 12 → 13
- 合計9行追加/削除、18行変更
すべての置き換え版のコンテナイメージはdotnet-buildtools-prereqs-dockerで確認済み。
パフォーマンスへの影響
影響なし
関連Issue
#125690 (主ブランチ項目の一部対応)
その他
- GitHub Copilot CLI v1.0.11の
update-os-coverageスキルで自動生成 - .NET 11の公式サポートOS一覧に準拠
- コンテナイメージ利用可能性をレジストリで事前確認済み
#125987 Disable MonoAPI tests on Mono Windows (dotnet/runtime#67047)
- 作成者: @Copilot
- 作成日時: 2026年03月23日 18:53:37(UTC)
- マージ日時: 2026年03月25日 20:34:34(UTC)
- ラベル: area-Build-mono
概要
MonoAPI相互運用テスト(InstallEHCallback、PInvokeDetach、Thunks)がMono Windows x64でのテスト実行時に失敗するため、これらのテストに[ActiveIssue]属性を追加しました。xUnit変換時(#123248)に失敗スキップ属性が喪失した問題の復旧です。
[ActiveIssue("https://github.com/dotnet/runtime/issues/67047", TestPlatforms.Windows, runtimes: TestRuntimes.Mono)]
変更内容
- InstallEHCallback.cs:
[ActiveIssue]属性を追加(Windows上のMonoランタイムでのテスト失敗を回避) - PInvokeDetach.cs:
[ActiveIssue]属性を追加(同上) - Thunks.cs:
[ActiveIssue]属性を追加(同上)
いずれのテストも「mono embedding APIシンボルがWindows上のcoreclr.dllに存在しない」ことが原因で失敗するため、同一の属性で統一的に対応しています。
パフォーマンスへの影響
影響なし
関連Issue
その他
変更は既存パターン(src/tests/JIT/Directed/callconv/で使用)に準拠しており、同じプラットフォーム/ランタイム組み合わせでの既知の問題対応となります。
#125944 [main] Update dependencies from dotnet/xharness
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年03月23日 05:01:19(UTC)
- マージ日時: 2026年03月25日 12:34:43(UTC)
- ラベル: area-codeflow
概要
dotnet/xharness依存関係の自動更新です。Microsoft.DotNet.XHarness関連の3つのNuGetパッケージをバージョン11.0.0-prerelease.26168.1から11.0.0-prerelease.26174.1に更新しています。
変更内容
.config/dotnet-tools.json: ツール設定の更新(1行追加、1行削除)eng/Version.Details.props: バージョン詳細情報の更新(3行追加、3行削除)eng/Version.Details.xml: バージョン詳細情報の更新(6行追加、6行削除)
更新対象パッケージ:
- Microsoft.DotNet.XHarness.CLI
- Microsoft.DotNet.XHarness.TestRunners.Common
- Microsoft.DotNet.XHarness.TestRunners.Xunit
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このはMaestroによる自動依存関係更新PR(dotnet-maestro[bot]による作成)です。xharnessリポジトリのコミットe5857fbbc3f1d39d2776af5a5e3235c9ff485afaに対応しています。
#125916 Fix EPERM when killing sudo-launched createdump process in CollectCrashDumpWithCreateDump
- 作成者: @Copilot
- 作成日時: 2026年03月22日 04:59:38(UTC)
- マージ日時: 2026年03月25日 01:35:41(UTC)
- ラベル: area-Infrastructure-coreclr
概要
macOS/Linuxでsudo経由で起動されたcreatedumpプロセスのタイムアウト時にEPERMエラーが発生する問題を修正。root所有のプロセスに対して非rootプロセスからProcess.Kill()を実行できない制限に対し、sudo killを使用した専用の終了ヘルパーメソッドを実装。従来の失敗時リトライワークアラウンド(最大5回)を削除し、根本的な解決方法に置き換え。
変更内容
- src/tests/Common/CoreCLRTestLibrary/CoreclrTestWrapperLib.cs:
Process.Kill(entireProcessTree: true)の失敗時リトライワークアラウンド(5回まで)を削除KillWithSudo(Process process)ヘルパーメソッドを追加:- 既存の
GetChildren()拡張メソッドを利用して子プロセスを列挙 sudo -n kill -9 <child-pid>で各子プロセスを先に終了(root所有の実createdumpバイナリを確実に終了)- その後
sudo -n kill -9 <parent-pid>で親sudoプロセスを終了 Process.Start(fileName, arguments)便利オーバーロードを使用- stdout/stderr をリダイレクトせず(エラーパスのため詳細出力は許容可)
- タイムアウトなしで
WaitForExit()を呼び出し - 例外を伝播させる(失敗を明示的に可視化)
- 既存の
- 不要な
UseShellExecute = false代入をファイル全体から削除(.NET Coreではデフォルト)
パフォーマンスへの影響
影響なし
関連Issue
その他
- テストインフラストラクチャの改善であり、製品コードの変更ではない
- macOS/Linuxプラットフォームのテスト信頼性向上を目的とした修正
- すでにパスワードなしsudo設定が必須であるため、
sudo -nでの実行は既存前提条件に整合
#125903 Add adoption catalog requirement to api-proposal skill
- 作成者: @stephentoub
- 作成日時: 2026年03月22日 02:04:01(UTC)
- マージ日時: 2026年03月25日 21:02:02(UTC)
- ラベル: area-skills
概要
api-proposalスキルを強化し、新しいAPI提案時に dotnet/runtime リポジトリ全体での採用候補箇所を体系的にカタログ化することを要件化します。これにより、提案されたAPIが実際のランタイムコードベースで如何に活用できるかを明示的に検証できるようになります。
変更内容
SKILL.md: Phase 2(プロトタイプ段階)のステップ4を分割
- ステップ4:リポジトリ全体を体系的に検索し、採用箇所を「更新済み」「候補」「非適用」に分類
- ステップ5:代表的な採用箇所をプロトタイプコミットで反映
SKILL.md: Phase 4(ドラフト提案段階)に新セクション6「Usage in dotnet/runtime」を追加
- ファイルパス、説明、延期理由をテーブル形式で記載した採用カタログの必須化
api-proposal-checklist.md: 「Adoption Catalog」チェックリストセクションを追加
- 検索範囲、分類方法、提案への包含に関する8項目のDO/DONOTガイドライン
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPull Requestはスキルガイドラインの更新であり、ランタイムコードそのものへの変更はありません。GitHub Copilotの支援を受けて作成されています。API提案プロセスにおいて、新規API の実用性検証と既存コードへの統合効果を体系的に評価することが目的です。
#125881 Include declaring type name in assembly loading handler tracing events
- 作成者: @Copilot
- 作成日時: 2026年03月21日 01:14:16(UTC)
- マージ日時: 2026年03月25日 20:35:51(UTC)
- ラベル: area-AssemblyLoader-coreclr
概要
アセンブリロード時のETWトレーシングイベント(AssemblyLoadContextResolvingHandlerInvoked と AppDomainAssemblyResolveHandlerInvoked)における HandlerName フィールドに、メソッド名だけでなく宣言型の完全修飾名を含めるように改善しました。これにより dotnet-trace での診断時にハンドラーの登録元コンポーネントを特定しやすくなります。
変更例:
// Before: OnResolving
// After: MyNamespace.MyClass.OnResolving (DeclaringTypeがnullの場合は OnResolving)
変更内容
AssemblyLoadContext.cs— パターンマッチングを使用して、トレーシング呼び出し(TraceResolvingHandlerInvokedおよびTraceAssemblyResolveHandlerInvoked)にDeclaringType.FullNameを含める。DeclaringTypeが null の場合(DynamicMethodから作成されたデリゲートなど)はメソッド名のみにフォールバック。BinderTracingTest.EventHandlers.cs— テスト期待値を型修飾付きハンドラー名形式に更新。
パフォーマンスへの影響
影響なし(トレーシングイベント生成時の文字列操作のみ)
関連Issue
なし
その他
- ETWイベント定義のスキーマ変更なし。
HandlerNameフィールドは既にUnicodeString型なため、より詳細な情報を格納するだけです。 - 内部実装の変更(ランタイムトレーシング)であり、公開APIへの影響はありません。
#125876 Fix ErrorOnUnknownConfiguration to respect ConfigurationKeyNameAttribute
- 作成者: @haltandcatchwater
- 作成日時: 2026年03月20日 22:52:27(UTC)
- マージ日時: 2026年03月25日 13:53:39(UTC)
- ラベル: area-Extensions-Configuration community-contribution
概要
ErrorOnUnknownConfigurationが有効な場合、ConfigurationKeyNameAttributeで指定されたプロパティ名を認識しない不具合を修正しました。既知のプロパティ名セットを構築する際に、属性で指定された名前ではなくC#プロパティ名のみを使用していたため、属性で指定された名前に一致する設定キーが未知の設定キーとして誤って判定されていました。
変更内容
- ConfigurationBinder.cs:
ErrorOnUnknownConfiguration検証ブロック内でmp.NameをGetPropertyNameメソッドに置き換え(既存ヘルパーメソッドがConfigurationKeyNameAttributeを正しく解決する) - ConfigurationBinderTests.cs:
ErrorOnUnknownConfigurationがConfigurationKeyNameAttribute値に一致する設定キーで例外をスローしないことを検証するテストを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- ソースジェネレータはすでに
ConfigurationKeyName経由で正しく処理されているため、この修正により反射ベースのバインダーとジェネレータパスの動作が一致します - 既存の
CanBindConfigurationKeyNameAttributesテストも引き続きパスします
#125845 Add r2 r composite
- 作成者: @DrewScoggins
- 作成日時: 2026年03月20日 16:44:56(UTC)
- マージ日時: 2026年03月25日 20:57:31(UTC)
- ラベル: area-Infrastructure
概要
ランタイムパフォーマンスパイプラインテンプレートを更新し、インタープリタフォールバックを使用したR2Rコンポジットベンチマーク向けの新しいCoreClrビルドバリアント(coreclr_r2r_interpreter)を追加しました。動的コード生成を無効化(-dynamiccodecompiled false)したCoreClrビルドを実装しています。
変更内容
- eng/pipelines/performance/templates/perf-coreclr-build-jobs.yml: 新しいCoreClrビルドジョブバリアントを追加し、インタープリタ/R2Rコンポジットシナリオ向けの新しいアーティファクトサフィックスを生成
- eng/pipelines/performance/templates/perf-build-jobs.yml: パフォーマンスビルドステージを修正し、既存のCoreClr/Monoビルドを無効化して新しいインタープリタジョブを強制有効化。Monoビルドジョブが
- ${{ if false }}:でラップされ、コメントにより「一時的に無効化」状態に - eng/pipelines/performance/perf.yml: WASMパフォーマンスジョブテンプレート呼び出しをコメントアウト(WASMパフォーマンスカバレッジが事実上無効化)
パフォーマンスへの影響
影響なし(ビルドパイプライン設定の変更)
関連Issue
なし
その他
注意: Monoビルドジョブがハードコーディングされたif false条件で無効化されており、これはR2Rインタープリタジョバー追加と無関係な動作変更です。Monoパフォーマンステストのアーティファクト不足の原因となる可能性があるため、マージ前にパラメータの後ろに適切にゲートするか、この変更を元に戻すことが推奨されます。
#125798 Fix: wrap AssignCopy with IfFailThrow in GetMetaDataFileInfoFromPEFile
- 作成者: @Copilot
- 作成日時: 2026年03月19日 20:37:32(UTC)
- マージ日時: 2026年03月25日 15:19:58(UTC)
- ラベル: area-Diagnostics-coreclr
概要
CoreCLR DAC/DBI デバッグAPIの DacDbiInterfaceImpl::GetMetaDataFileInfoFromPEFile メソッドにおいて、pStrFilename->AssignCopy(wszFilePath) の戻り値(HRESULT)が無視されていたバグを修正します。AssignCopy が失敗(例:E_OUTOFMEMORY)した場合でも、メソッドが S_OK を返してしまう問題を、IfFailThrow() でラップして適切にエラーを伝播させます。
変更内容
- src/coreclr/debug/daccess/dacdbiimpl.cpp:
pStrFilename->AssignCopy(wszFilePath)をIfFailThrow()でラップ(+1行/-1行) - 既存の
EX_TRY/EX_CATCH_HRESULTパターンに一貫性を持たせるための変更 - 同ファイルの他の
AssignCopy呼び出しサイトと同じエラーハンドリング方式に統一
パフォーマンスへの影響
影響なし
関連Issue
その他
- 内部実装(デバッグサポート)の修正で、公開APIには影響なし
- エラーハンドリングの一貫性改善で、メモリ不足などのエラー状態をより確実に検出できるようになります
#125793 Add linux_arm and windows_x86 to cDAC dump test platforms
- 作成者: @max-charlamb
- 作成日時: 2026年03月19日 17:50:15(UTC)
- マージ日時: 2026年03月25日 16:10:46(UTC)
- ラベル: area-Infrastructure
概要
cDAC(コンテナ化されたデータアクセスコンポーネント)ダンプテストのHelix CI/CDインフラに、32ビットプラットフォーム対応を追加します。windows_x86(WoW64経由)とlinux_arm(コンテナ化ARM32キュー)を新たにテスト対象プラットフォームとして統合し、6プラットフォーム全体でのダンプ生成/テストカバレッジを拡大します。
変更内容
- eng/pipelines/runtime-diagnostics.yml:
cdacDumpPlatformsデフォルトにwindows_x86とlinux_armを追加、テスト失敗時にダンプアーティファクト公開を追加 - eng/pipelines/cdac/prepare-cdac-helix-steps.yml:
windows_x86とlinux_arm用のHelix キューマッピングロジックを追加 - eng/pipelines/helix-platforms.yml:
helix_windows_x86キューエイリアス(x64 Windows上のWoW64)を定義 - src/native/managed/cdac/tests/DumpTests/EnableUnsignedDac.props: WoW64対応のx86用符号なしDAC レジストリロジックを新規作成
- src/native/managed/cdac/tests/DumpTests/cdac-dump-helix.proj: tar圧縮によるテスト終了コード保持、shared DAC propsのインポート
パフォーマンスへの影響
影響なし
関連Issue
#125841(32ビットARM環境でのcDAC dump テスト修正への依存)
その他
- CI検証対象プラットフォーム: windows_x64、windows_x86、windows_arm64、linux_x64、linux_arm64、linux_arm(計6プラットフォーム)
- 内部インフラストラクチャの変更(テストパイプライン拡張)で、公開APIへの影響なし
- WoW64経由のwindows_x86実行は既存x64 Windows キューを利用
#125747 Fix for 125246
- 作成者: @dhartglassMSFT
- 作成日時: 2026年03月18日 21:22:17(UTC)
- マージ日時: 2026年03月25日 07:26:52(UTC)
- ラベル: area-CodeGen-coreclr
概要
Random-inline JIT stress テストで ARM64 上の多重レジスタ返却(multi-reg-ret)構造体の Copy Propagation 処理中に lvIsMultiRegRet フラグが正しく伝播されず、Lowering::ContainCheckRet でアサーション失敗が発生する問題を修正します。Assertion-driven Copy Propagation 実行時に、置換先のローカル変数へ lvIsMultiRegRet フラグを明示的に設定することで対応します。
変更内容
- assertionprop.cpp:
optCopyAssertionProp関数内で、オリジナルローカル変数から置換先ローカル変数へlvIsMultiRegRetフラグをコピーするロジックを追加(+9 行) - Assertion propagation デバッグ/詳細ログのヘッダーテキストを一意化してログ分析を簡易化(-3 行)
パフォーマンスへの影響
影響なし
関連Issue
その他
- JIT Lowering フェーズで多重レジスタ返却構造体が適切に処理されるようにする内部実装修正
- Forward Substitution に同様の処理がすでに存在していたため、Copy Propagation でも同等の対応が必要だった
#125542 Add Wasm import thunks
- 作成者: @davidwrighton
- 作成日時: 2026年03月13日 23:27:04(UTC)
- マージ日時: 2026年03月25日 05:58:54(UTC)
- ラベル: arch-wasm area-crossgen2-coreclr
概要
このPRはWebAssembly (Wasm32) import thunkサポートをReadyToRun (R2R) コンパイラに追加します。Wasm向けの新しいR2Rノード(WasmImportThunk、WasmImportThunkPortableEntrypoint)を導入し、Wasm命令エンコーディング、オブジェクトライター、JIT側のリロケーション処理を拡張して、R2Rで生成されたWasmコードがfixup/importヘルパー経由で外部コードを呼び出せるようにします。
変更内容
R2Rコンパイラ側(ILCompiler.ReadyToRun)
WasmImportThunk、WasmImportThunkPortableEntrypoint:Wasm用import thunkを生成する新規ノードTransitionBlock、ArgIterator:Wasm32向け引数レイアウト実装を追加ImportThunk:全アーキテクチャ(X86/X64/ARM/ARM64/RiscV64/LoongArch64)でImportThunkKind列挙型を統一導入DelayLoadHelperImport:Wasm32経由のdelay-loadをポータブルエントリポイントノード経由にルーティングReadyToRunCodegenNodeFactory:Wasm import thunkノードのキャッシュ/ファクトリー追加MethodGCInfoNode:Wasm32の個性ルーチン参照をスキップ
JIT側(codegenwasm/emitwasm)
- アドレス定数をリロケーション対応の
emitAddressConstant経由で出力(ポインタの切り詰めを回避) - flowgraph.cpp:Wasm向けのデリゲートコンストラクタ最適化を無効化
Wasm共通インフラ
WasmInstructions.cs:Wasm命令モデル/エンコーディングを大幅拡張(455行)WasmObjectWriter.cs:生成されたimport thunkをWasm関数として書き込みに対応WasmLowering.cs:Wasm型から管理署名を再構築するヘルパー追加、署名ローリングAPI再構成WasmNative.cs、WasmTypes.cs:リロケーション対応のインターフェース拡張、署名公開
リロケーション/データ構造
Relocation.cs:新規Wasm リロケーション列挙値追加(WASM_TABLE_INDEX_U32/U64)ObjectDataBuilder.cs:新規Wasm リロケーション向けのスペース予約readytorun.h:READYTORUN_IMPORT_THUNK_PORTABLE_ENTRYPOINT構造体定義追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
未解決の問題(Copilotコメント指摘)
ObjectDataBuilder.EmitRelocにおいて、WASM_TABLE_INDEX_U64用のスペース予約が実装されていません。ポインタサイズ8バイトのWasm環境ではWasmImportThunkPortableEntrypointがWASM_TABLE_INDEX_U64を選択するため、現在のコードはNotImplementedExceptionをスロー可能です。WASM_TABLE_INDEX_U64ケースの追加実装(8バイト予約)が必要
#125500 Fix possible integer overflow
- 作成者: @rustamque
- 作成日時: 2026年03月12日 16:14:45(UTC)
- マージ日時: 2026年03月25日 20:03:39(UTC)
- ラベル: area-System.Data community-contribution
概要
DataRecordInternal.csにおける整数オーバーフロー脆弱性を修正。dataIndexがint.MinValue未満の場合、キャスト時に値が切り詰められ、InvalidSourceBufferIndex例外がスローされない問題を解決しました。Linux Verification Center(SVACE)により検出されました。
変更内容
- src/libraries/System.Data.Common/src/System/Data/Common/DataRecordInternal.cs:
dataIndexのオーバーフロー検証ロジックを改善。longからintへのキャスト前に範囲チェックを実施し、範囲外の値に対して適切にInvalidSourceBufferIndex例外をスロー - src/libraries/System.Data.Common/tests/System/Data/Common/DataRecordInternalTest.cs: 新たなテストケースを追加し、
int.MinValue未満の値を含むエッジケースをカバー
パフォーマンスへの影響
影響なし
関連Issue
その他
- 修正内容は内部実装(
DataRecordInternalクラス)に限定されており、公開APIの変更はありません - セキュリティ脆弱性としての重要度は低〜中程度(整数オーバーフロー検証の欠落)
#125463 [cDAC] Implement GetArgumentByIndex and GetLocalVariableByIndex on ClrDataFrame
- 作成者: @max-charlamb
- 作成日時: 2026年03月11日 22:27:55(UTC)
- マージ日時: 2026年03月25日 14:59:49(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Compact Data Access Component)のデバッグ機能を拡張するPRで、ClrDataFrame.GetArgumentByIndex/GetLocalVariableByIndexを実装し、フレーム内の引数と局所変数の検査を可能にします。DebugInfo契約v2、SignatureDecoder契約、RuntimeTypeSystem契約の新規追加により、ネイティブ変数位置の解決、メソッドシグネチャのデコード、型情報の取得をサポートします。
変更内容
契約層(内部実装):
- DebugInfo v2:
GetMethodVarInfoを追加し、JITデバッグ情報からネイティブ変数位置を解決。NativeVarInfo型とDoVarsニブルデコーダーを実装。x64/x86/ARM64/ARMのレジスタマッピング対応(REGNUM_AMBIENT_SP含む) - SignatureDecoder:
DecodeMethodSignature(メソッドシグネチャ全体のデコード、ジェネリック型VAR/MVAR/GENERICINST対応)、DecodeLocalSignature(ILメソッドボディヘッダから局所変数型を解決)を追加 - RuntimeTypeSystem:
IsEnum(enum型検出)、GetPrimitiveType(CorElementTypeから対応するTypeHandleを取得)を追加 - StackWalk:
GetInstructionPointerでフレーム命令ポインタを取得可能に
公開API(IDebugInfo.cs/IRuntimeTypeSystem.cs):
DebugVarInfo、NativeVarLocation、DebugVarLocKindを新規追加(stable API)ClrDataValueクラスを新規実装、IXCLRDataValueインターフェースでGetFlags/GetSize/GetBytes/GetAddress/GetNumLocations/GetLocationByIndexを提供
ClrDataFrame実装:
- メタデータからのパラメータ名解決、インスタンスメソッドの
this処理 MapCorElementTypeToFlagsで型フラグ(IS_PRIMITIVE、IS_VALUE_TYPE、IS_REFERENCE、IS_STRING、IS_ARRAY、IS_ENUM、IS_POINTER)を決定- ByRef型のアンラップ、関数ポインタ型をIntPtrに対応(ネイティブDAC互換)
- プリミティブ型のサイズ調整(ネイティブVarLocationsはポインタサイズで報告される為、実サイズに縮小)
AllowCdacSuccess検証モードでレガシーDAC互換性を検証
ネイティブDAC修正:
- AMD64の
util.cppでREGNUM_AMBIENT_SPハンドリング追加
テスト:
- 新規debuggee
LocalVariables(13フレーム、13型カテゴリをカバー) IXCLRDataFrameDumpTests(GetArgumentByIndex/GetLocalVariableByIndex検証)IXCLRDataValueDumpTests(返却値の検証)- cdb比較でレガシーDACとのゼロアサーション
パフォーマンスへの影響
影響なし
関連Issue
#125064(GetContext/GetAppDomain)
#125791(GetContext がcontextFlagsを使用すべき)
[
#125329 Use Framework SourceType for WASM pass-through assets in multi-client solutions
- 作成者: @lewing
- 作成日時: 2026年03月09日 13:15:39(UTC)
- マージ日時: 2026年03月25日 01:01:03(UTC)
- ラベル: area-Build-mono
概要
PR #124125で導入されたバグを修正します。複数のBlazor WebAssemblyクライアントプロジェクトが同じランタイムパックを参照する場合、パススルーアセット(JS、maps、ICUデータ、native WASM)が同じNuGetキャッシュパスに解決され、静的Webアセットパイプラインで重複したIdentityキーが発生し、DiscoverPrecompressedAssetsでArgumentExceptionが発生していました。
修正では、SDK側のSourceType="Framework"慣例を使用して、パススルーファイルをプロジェクトごとのobj/fx/{PackageId}/ディレクトリに具体化し、各プロジェクトで一意なIdentityを生成します。
変更内容
- Microsoft.NET.Sdk.WebAssembly.Browser.targets:
_WasmFrameworkAssetPathプロパティを追加し、パススルーアセット(JS、maps、ICU、native WASM、WebCil無効時のDLL)をSourceType="Framework"として登録。WebCil変換ファイルとの分離処理を実装。カルチャ別衛星アセットのサブディレクトリ対応も含む。 - MiscTests.cs: マルチクライアント構成のビルド・パブリッシュ・インクリメンタルリビルドシナリオに対する検証テストを追加(77行)。
- ConvertDllsToWebCil.cs: フレームワークアセット向けのパススルーロジックを追加(42行)。
パフォーマンスへの影響
影響なし
関連Issue
- #124125 (本PRで修正されるバグの原因となったPR)
- dotnet/sdk#53135 (Framework SourceType対応、このPRが依存)
- #125309 (置き換えられた先行アプローチ)
その他
- SDK側のサポート(dotnet/sdk#53135)を要します。
- 検証済みシナリオ:AspNetCore Components.TestServer(3つのWASMクライアント)でのビルド成功、マルチクライアントでのフレームワークアセット具体化、パブリッシュ時の指紋付きファイル生成、インクリメンタルリビルド、
WasmEnableWebcil=false設定時での動作確認。
#125175 [release/10.0] Fix bug in LowerCallMemmove
- 作成者: @EgorBo
- 作成日時: 2026年03月04日 13:45:43(UTC)
- マージ日時: 2026年03月25日 15:24:54(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
C++/CLI関数がaggregate initializationで構造体を返す場合、LowerCallMemmoveでJITがアクセス違反(0xC0000005)でクラッシュする問題をバックポートで修正しました。問題はCORINFO_HELP_MEMCPYに対してBlkOpKindUnrollを使用していたため、contained address nodeがgenCodeForMemmoveに渡されてしまうことが原因です。修正により、CORINFO_HELP_MEMCPYとSpanHelpers.Memmoveの両方に対してBlkOpKindUnrollMemmoveを統一的に使用するようにしました。
変更内容
- src/coreclr/jit/lower.cpp:
CORINFO_HELP_MEMCPYおよびSpanHelpers.Memmoveの両方をGT_STORE_BLKでBlkOpKindUnrollMemmoveとして統一的に低レベル化。src/dst addressノードがcontainedでないことを確認するデバッグアサートを追加し、次のノード低レベル化フローの説明コメントを明確化。
パフォーマンスへの影響
LSRAの観点からCORINFO_HELP_MEMCPYは若干コストが増加する可能性がありますが(アドレッシングモード利用不可)、CORINFO_HELP_MEMCPYの使用頻度は極めて稀であるため、実質的な影響はなし。SPMI replay分析では差分なし。
関連Issue
#123748 #123907(メインブランチでの修正PR)
その他
- リグレッション:Yes(既知の不具合が原因)
- リスク評価:Low。memmoveと同じ実証済みのコードパスを使用するため安全性が高い。
- 変更は
BlkOpKindUnrollMemmoveで両方のメモリ操作を統一し、contained nodeがgenCodeForMemmoveに到達することを防ぎます。
#124877 Revert forwarding activation signal
- 作成者: @janvorli
- 作成日時: 2026年02月26日 00:38:52(UTC)
- マージ日時: 2026年03月25日 15:36:26(UTC)
- ラベル: area-PAL-coreclr
概要
macOS上でのスレッドアクティベーション用SIGUSRシグナルのハンドラー転送機能を部分的に復元します。以前の変更で追加された、登録済みハンドラーへのシグナル転送がvsdbgの動作を破壊していたため、その部分のみを復元して互換性を回復します。
変更内容
- src/coreclr/pal/src/exception/signal.cpp: アクティベーションシグナルハンドラーの転送ロジックを修正
- ランタイムがアクティベーションシグナルを正常に処理した場合、以前登録されたハンドラー(
g_previous_activation)へのシグナル転送を停止 - シグナルがこのプロセス用でない、またはランタイムで受け入れられなかった場合のみ、以前のハンドラーを呼び出す
- ランタイムがアクティベーションシグナルを正常に処理した場合、以前登録されたハンドラー(
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- この変更は以前のスレッド検索修正(#124877)に含まれていた、関連のない部分的な変更をリバートするもの
- macOSのvsdbgデバッガー互換性の問題を解決
- 内部実装の変更:ランタイム内部のPAL(Platform Abstraction Layer)のシグナルハンドラー処理のみが対象で、公開APIへの影響なし
#123874 TarWriter: when writing entries for the same hard-linked file use HardLink entries.
- 作成者: @tmds
- 作成日時: 2026年02月02日 07:58:03(UTC)
- マージ日時: 2026年03月25日 16:20:06(UTC)
- ラベル: breaking-change needs-breaking-change-doc-created community-contribution area-System.Formats.Tar
概要
System.Formats.Tar ライブラリに、ハードリンクされたファイルを書き込む際にHardLink形式のTarエントリを使用する機能を追加しました。これにより、同じファイルへの複数の参照をより効率的にTarアーカイブに格納できます。TarWriter、TarFile、TarExtractOptions、TarWriterOptions の各コンポーネントが拡張され、プラットフォーム固有(Unix/Windows)の実装も追加されています。
変更内容
- TarWriter.cs/Unix.cs/Windows.cs: ハードリンク検出・追跡ロジックの実装、HardLink形式エントリの書き込み機能を追加
- TarEntry.cs: ハードリンク関連メタデータのサポートを拡張
- TarHardLinkMode.cs: 新規ファイル(ハードリンク処理モード定義用)
- TarWriterOptions.cs: 新規ファイル(ハードリンク検出オプションを追加)
- TarExtractOptions.cs: 新規ファイル(抽出時のハードリンク処理オプションを追加)
- TarFile.cs: CreateFromDirectory/ExtractToDirectory メソッドでハードリンクオプション対応
- Interop層: Unix ネイティブコード(pal_io.c/h)でinode番号取得機能を追加
- テスト: TarWriter、TarFile、オプション処理の包括的なテストスイートを追加(Unix/Windows両対応)
パフォーマンスへの影響
ハードリンク検出により若干のオーバーヘッド(inode追跡)が発生する可能性がありますが、ハードリンク検出を有効化しない場合(デフォルト)は既存のパフォーマンスに影響なし。有効化時は、重複ファイルが多いアーカイブではアーカイブサイズの削減につながります。
関連Issue
その他
- API変更(公開): TarWriterOptions、TarExtractOptions、TarHardLinkMode が新規追加
- プラットフォーム対応: Unix(inode基準)と Windows(ファイルID基準)の両方でハードリンク検出実装
- 互換性: 既存コードへの影響なし(新オプションはオプト機能)
#123717 arm64: Refactor mov/movprfx for unmasked operations
- 作成者: @ylpoonlg
- 作成日時: 2026年01月28日 15:36:07(UTC)
- マージ日時: 2026年03月25日 20:04:21(UTC)
- ラベル: area-CodeGen-coreclr community-contribution arm-sve
概要
ARM64 SVE(Scalable Vector Extensions)向けのJITコンパイラにおいて、読み取り修正書き込み(RMW)命令のmov/movprfxプリフィックス生成ロジックをリファクタリングしました。従来はコード生成時に分散していたこのロジックを、emit段階で統一的に処理するように変更し、非マスク付きオペレーション対応を改善しました。
変更内容
- emitarm64sve.cpp: SVE mov/movprfx チェック用のヘルパーemit関数を追加(+333行)。非埋め込みマスク付きオペレーションの処理を統一
- hwintrinsiccodegenarm64.cpp: RMW命令のコード生成を簡素化(-84行削減)。
AddCarryWideningEven/Oddの特殊処理をemit関数に移動 - emitarm64.cpp: 統一されたmov/movprfx処理ロジックを実装(+190行)
- emitarm64.h: emit関数シグネチャと宣言を追加/変更(+28行)
- hwintrinsiclistarm64sve.h: リスト定義の軽微な調整
パフォーマンスへの影響
影響なし(リファクタリング)
関連Issue
その他
このPRは#115508解決に向けた複数のPRシリーズの最初のものです。ARM64チーム(@dotnet/arm64-contrib, @a74nh)との協力によるものです。
#119637 Make the PeriodicTimer.WaitForNextTickAsync description more descriptive
- 作成者: @Smaug123
- 作成日時: 2025年09月12日 12:59:42(UTC)
- マージ日時: 2026年03月25日 02:27:55(UTC)
- ラベル: documentation area-System.Threading community-contribution
概要
PeriodicTimer.WaitForNextTickAsyncメソッドのXML documentation を改善し、戻り値のブール値セマンティクスとValueTaskの完了状態を明確に記載しました。メソッドがtrueとfalseを返す条件、キャンセル動作について詳細な説明を追加しています。
変更内容
- src/libraries/System.Private.CoreLib/src/System/Threading/PeriodicTimer.cs
WaitForNextTickAsyncメソッドのXML documentation を拡張(+8行/-1行)- 戻り値が
true/falseとなる条件を明記 - キャンセル時の動作を説明
パフォーマンスへの影響
影響なし
関連Issue
その他
公開APIのドキュメンテーション改善のみの変更であり、実装ロジックの変更はありません。