Pull Request on 2026年03月21日

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

注意点

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



#125886 Cleaning up codepaths for DAC_HASHTABLE

  • 作成者: @Copilot
  • 作成日時: 2026年03月21日 12:05:56(UTC)
  • マージ日時: 2026年03月21日 16:06:37(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

DAC(Debugging Access Component)のレガシーなハンドロール型ハッシュテーブル実装を廃止し、SHashベースの実装に統一するクリーンアップです。DAC_HASHTABLEマクロと関連する古いコードパスをすべて削除し、DacInstanceManagerは常にSHashを使用するようになります。

変更内容

  • daccess.cpp: HashInstanceKeyBlockDAC_INSTANCE_HASH関連の構造体、割り当てロジック、ルックアップロジック(289行削除)を削除
  • dacimpl.h: DAC_HASHTABLEマクロとそれに関連するデータ構造定義(44行削除)を削除
  • DAC_HASHTABLEマクロで条件分岐されていた古いコードパスをすべて削除し、SHash実装のみを残す

パフォーマンスへの影響

影響なし。SHashベースの実装は既に導入されており、古いハンドロール型実装の削除による機能的な改善または低下はありません。

関連Issue

なし

その他

  • 内部実装の整理であり、公開APIへの影響はありません
  • 破壊的変更ではなく、既に使用されているSHash実装への統一となります
  • DebuggerおよびDAC内部のコードのみに影響する変更です

#125877 Properly escape Helix queue parameters in runtime-diagnostics

  • 作成者: @hoyosjs
  • 作成日時: 2026年03月20日 23:51:33(UTC)
  • マージ日時: 2026年03月21日 06:39:46(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

Azure Pipelines runtime-diagnostics 定義において、Helix キュー パラメータをPowerShell/Bash実行時に適切にエスケープする修正。セミコロン(;)を含むキュー値がシェルに誤解釈されることを防ぐため、/p:HelixTargetQueues パラメータを引用符で囲みます。

変更内容

  • eng/pipelines/runtime-diagnostics.yml: 以下の3つのHelix送信ステップにおいて、/p:HelixTargetQueues パラメータを引用符で囲む処理を追加
    • "Send cDAC Dump Tests to Helix" ステップ
    • "Send cDAC Dump Gen to Helix" ステップ
    • "Send cDAC X-Plat Dump Tests to Helix" ステップ

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更はビルド/CI/CDパイプライン定義の修正であり、ランタイムコードへの変更ではありません。シェル特殊文字(特にセミコロン)を含むHelix キュー設定が正しく処理されるようになります。


#125870 Fix handling invalid type map states

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年03月20日 21:53:49(UTC)
  • マージ日時: 2026年03月21日 02:31:14(UTC)
  • ラベル: area-crossgen2-coreclr

概要

ReadyToRun AOT コンパイラにおいて、無効な型マップ状態の処理を修正します。 この変更は Issue #125718 の問題を解決するものです。

変更内容

  • ReadyToRunExternalTypeMapNode.cs: 型マップ状態の処理ロジックを修正(2行追加、2行削除)
  • ReadyToRunProxyTypeMapNode.cs: 型マップ状態の処理ロジックを修正(2行追加、2行削除)

パフォーマンスへの影響

影響なし

関連Issue

#125718

その他

なし


#125863 Disable attribute trimming android 124958

  • 作成者: @vitek-karas
  • 作成日時: 2026年03月20日 20:44:32(UTC)
  • マージ日時: 2026年03月21日 13:55:34(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT の AttributeTrimming スモークテストを Android プラットフォームでスキップするように変更しました。Android 環境ではホスティング/相互運用コードが追加されることで、リンカー(トリマー)の動作が予測不可能になり、テストの信頼性が低下するため対応されました。

変更内容

  • src/tests/nativeaot/SmokeTests/AttributeTrimming/AttributeTrimming.csproj
    • CLRTestTargetUnsupported プロパティを使用して、Android プラットフォームでのテスト実行を無効化
    • Android が除外される理由を説明するコメントを追加

パフォーマンスへの影響

影響なし(テスト実行フローへの変更のみ)

関連Issue

#124958

その他

このテストは属性トリミングの特定の動作に非常に敏感であるため、Android 固有のホスティング/相互運用コードがリンカーに影響を与えることで、テスト結果が不安定になることが問題となっていました。


#125861 Don't build native host tests when building clr subset

  • 作成者: @elinor-fung
  • 作成日時: 2026年03月20日 20:21:35(UTC)
  • マージ日時: 2026年03月21日 01:11:43(UTC)
  • ラベル: area-Host

概要

clrサブセットのビルド時に、不要なネイティブホストテストアセット(mockcoreclr、mockhostfxr、mockhostpolicyなど)がビルドされていた問題を解決します。CMakeの条件付きビルド変数を導入し、clrサブセット時はテストアセットをスキップし、host.testsサブセット時は製品バイナリをスキップするようになりました。これにより開発ビルド時のビルド時間を削減します。

変更内容

  • src/native/corehost/corehost.proj: BuildNativeHostProductBuildNativeHostTestsMSBuildプロパティを追加(デフォルト値は前者true、後者false)し、CMakeに引き継ぎます。
  • src/native/corehost/CMakeLists.txt: 製品ターゲット(fxr、hostpolicy、apphost、dotnetなど)とテストサブディレクトリをCMake変数CLR_CMAKE_BUILD_HOST_PRODUCTCLR_CMAKE_BUILD_HOST_TESTSで条件付きゲート。
  • eng/Subsets.props: host.testsサブセットがBuildNativeHostTests=trueBuildNativeHostProduct=falseでcorehost.projを実行するよう更新。

パフォーマンスへの影響

ビルド時間の削減。./build.sh libs+clr -rc Releaseなどの開発ビルド時に、不要なテストアセットのコンパイルをスキップできるため、ビルドエージェントの処理時間を削減します。

関連Issue

#73711

その他

内部ビルドシステムの変更であり、公開APIへの影響はありません。サブセット別のビルド動作が明確に定義されました。


#125852 [Wasm RyuJit] Debug SPC Wasm Validation Fixes

  • 作成者: @AndyAyersMS
  • 作成日時: 2026年03月20日 18:56:42(UTC)
  • マージ日時: 2026年03月21日 14:40:53(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr

概要

WebAssembly RyuJit の Debug SPC (Structural Property Checking) 検証エラーを修正するPRです。Wasm メソッドシグネチャの調整、コード生成時の型付けの修正、および検証失敗を選択的に抑制するための新しい JIT 設定オプションを追加します。

変更内容

  • WasmLowering.cs: Wasm メソッドシグネチャ構築時にジェネリックコンテキストと非同期継続の隠し引数を追加
  • morph.cpp: Wasm での 8 バイト構造体レジスタ引き渡し時に使用される型を修正
  • codegenwasm.cpp: Wasm 命令の型付けに関する複数の問題を修正(relop 結果の i32 型化、シフト量の i64 拡張、混合型幅の組み込み関数対応、CopyBlk NYI ガード追加)
  • codegencommon.cpp: 指定されたメソッドハッシュの R2R コンパイルを失敗させるデバッグ用 Wasm フック追加
  • jitconfigvalues.h: JitR2RUnsupportedRange 設定オプションを追加(TARGET_WASM のみ)
  • abi.cpp: 軽微な修正(+2/-1)

パフォーマンスへの影響

影響なし。本修正は検証エラーの修正とデバッグ用設定の追加であり、パフォーマンスに直接的な影響はありません。

関連Issue

#125756

その他

本修正は以下の検証課題に対応しています:

  • Issue 2: シフト量を必要に応じて i64 に拡張
  • Issue 3: 8 バイト構造体をレジスタで渡す際の型修正
  • Issue 4: Wasm relops が常に i32 を生成
  • Issue 5: Wasm メソッドシグネチャにジェネリックコンテキストと非同期継続引数を追加

JitR2RUnsupportedRange オプションは、指定された JIT ハッシュを持つメソッドの R2R コンパイルを強制的に失敗させることで、修正なしに全検証エラーセットを検出できるようにする設定です(検証器は最初のエラーで停止するため)。


#125847 Fix flaky TestWindowStyle: check only STARTF_USESHOWWINDOW bit, remove ShellExecute cases

  • 作成者: @Copilot
  • 作成日時: 2026年03月20日 17:09:26(UTC)
  • マージ日時: 2026年03月21日 08:04:36(UTC)
  • ラベル: area-System.Diagnostics.Process

概要

ProcessStartInfoTests.TestWindowStyle テストの不安定性を解決するPRです。OSがSTARTF_USESHOWWINDOWビット以外のフラグを設定することによる偽陽性と、ShellExecute経由のテストケースがCIでタイムアウトする問題に対応しています。

変更内容

src/libraries/System.Diagnostics.Process/tests/ProcessStartInfoTests.Windows.cs

  • dwFlagsの完全一致比較からSTARTF_USESHOWWINDOWビット(0x1)のみチェックに変更(si.dwFlags & 0x1で判定)
  • useShellExecuteパラメータを削除し、InlineDataの8ケースを4ケースに削減
  • Mono向けのShellExecuteスキップロジック(SkipTestException)と未使用のusing Microsoft.DotNet.XUnitExtensionsを削除

パフォーマンスへの影響

影響なし(テスト自体の安定化に関する変更)

関連Issue

#119533

その他

この変更はテスト実装の改善であり、ランタイムの公開API/動作に影響しません。テストが検証対象とすべきのは.NET側のProcessStartInfoの動作であり、OS側のShellExecute実装については責任範囲外という判断に基づいています。


#125846 Adding GetObjectComWrappers cDAC API

  • 作成者: @rcj1
  • 作成日時: 2026年03月20日 17:02:52(UTC)
  • マージ日時: 2026年03月21日 17:49:27(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Common Data Access Component)APIにGetObjectComWrappers機能を追加するPRです。COM相互運用オブジェクトのメタデータにアクセスするための新しいデータコントラクト定義と実装が含まれます。また、ConditionalWeakTableおよびGC関連のデータコントラクトも拡張されています。

変更内容

  • cDAC API追加: ComWrappers、ConditionalWeakTable関連のデータコントラクト定義を新規作成
    • IComWrappers.csIConditionalWeakTable.csインターフェース追加
    • ComWrappers_1.csConditionalWeakTable_1.cs実装クラス追加
  • データコントラクト仕様書追加:
    • docs/design/datacontracts/ComWrappers.md(75行)
    • docs/design/datacontracts/ConditionalWeakTable.md(124行)
    • docs/design/datacontracts/GC.mdObject.mdRuntimeTypeSystem.mdLoader.mdの拡張
  • ランタイム実装:
    • src/coreclr/vm/datadescriptor/datadescriptor.incに新規グローバル定義追加
    • Handle関連の新規グローバル定義(HandleSegmentSize、HandleBlocksPerSegmentなど)
  • 相互運用ライブラリ: interoplib.hinteroplibabi.hの軽微な更新
  • ライブラリ修正: System.Private.CoreLibの複数ファイルで型アノテーション修正

パフォーマンスへの影響

影響なし

関連Issue

#125846

その他

Copilotレビューにおいて、GCコントラクトのバージョニングに関する潜在的な問題が指摘されています:HandleSegmentSizeなどの新規グローバル定義がGCコントラクトに追加されていますが、コントラクトバージョンは1のまま保持されています。古い記述子が新しい読み取りツールとの互換性を保つ場合、バージョン番号の更新またはオプション処理の実装が必要となる可能性があります。


#125807 fix SafeFileHandle.CanSeek performance regression

  • 作成者: @adamsitnik
  • 作成日時: 2026年03月19日 22:14:46(UTC)
  • マージ日時: 2026年03月21日 02:31:36(UTC)
  • ラベル: area-System.IO tenet-performance

概要

Windows環境におけるSafeFileHandle.CanSeekSafeFileHandle.Typeのパフォーマンス低下を修正します。Pathが利用可能な場合、ディスクファイルハンドル(FILE_TYPE_DISK)に対して余分なハンドルタイプ判定を回避し、直接RegularFileを返すようにしました。

変更内容

  • SafeFileHandle.Windows.cs: GetFileTypeCoreメソッドにFILE_TYPE_DISKハンドルの高速パスを追加。Pathが存在する場合、GetDiskBasedType()呼び出しをスキップしてRegularFileを直接返却
  • RandomAccess.Windows.cs: 軽微な調整(1行変更)
  • FileStreamHelpers.cs: ファイルタイプ判定のロジック調整(4行追加、1行削除)
  • GetFileType.Windows.cs: テストケースの拡充(19行追加、10行削除)

パフォーマンスへの影響

パフォーマンス低下を修正するもので、ディスクベースファイルハンドルのCanSeekTypeプロパティへのアクセス時に、不要なI/O操作を削減します。特にPathが既に設定されているケースで改善効果があります。

関連Issue

#125660

その他

Windows環境でのWindowsネイティブAPI呼び出しの最適化です。内部実装の改善であり、公開APIの変動はありません。


#125754 Clear RCW cache entries when releasing wrapper objects

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年03月18日 22:52:47(UTC)
  • マージ日時: 2026年03月21日 03:23:57(UTC)
  • ラベル: area-System.Runtime.InteropServices partner-impact

概要

Jupiter ランタイムの外部オブジェクト解放時に RCW(Runtime Callable Wrapper)キャッシュエントリを明示的にクリアする修正です。ComWrappers.ReleaseObjects による強制的な切断後も、古い RCW がキャッシュに残る問題を解決します。同じネイティブ COM アドレスが再割り当てされた場合、切断された古いラッパーが誤って返されることを防ぎます。これにより NativeAOT マイグレーションをアンロックします。

変更内容

  • TrackerObjectManager.cs: ReleaseExternalObjectsFromCurrentThread 時にスレッド終了時の ReferenceTrackerNativeObjectWrapper インスタンスを追跡し、オブジェクト解放前に RCW キャッシュから削除
  • ComWrappers.cs: 内部 API RemoveWrappersFromCache(...) を追加し、一度の書き込みロックで複数ラッパーをキャッシュから削除可能に。RCW キャッシュ削除ロジックを共有の RemoveLocked(...) ヘルパーにリファクタリング
  • GlobalInstance.cs: スレッド終了通知後に新しい RCW が作成されることを検証する回帰テストを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 内部実装の変更(ComWrappers の内部 API 追加)
  • 公開 API への互換性影響なし
  • COM Interop のコレクテッドネス向上により、Jupiter/NativeAOT シナリオの信頼性向上

#125535 Upgrade Ubuntu helix queues from 22.04 VMs to containers

  • 作成者: @richlander
  • 作成日時: 2026年03月13日 20:40:13(UTC)
  • マージ日時: 2026年03月21日 12:04:20(UTC)
  • ラベル: area-Infrastructure

概要

Ubuntu 22.04 ベアメタルVM上のHelixキューをコンテナベースの同等物に置き換えることで、Ubuntu 26.04ローンチに向けた準備を行うインフラストラクチャの変更です。開発者向けテストビルドはUbuntu 22.04からUbuntu 26.04コンテナに移行します。

変更内容

eng/pipelines/libraries/helix-queues-setup.yml

  • Mono・CoreCLR用Linux x64デフォルトキュー:Ubuntu.2204.Amd64.Open VM → ubuntu-26.04-helix-amd64 コンテナに変更
  • extra-platformsから冗長なUbuntu 26.04エントリを削除(一般セットに昇格)

eng/pipelines/helix-platforms.yml

  • helix_linux_x64_oldest / _internal:Ubuntu 22.04 VM → AzureLinux 3上のubuntu-22.04-helix-amd64 コンテナに変更
  • helix_linux_x64_ubuntu_oldest:Ubuntu 22.04 VM → AzureLinux 3上のubuntu-22.04-helix-amd64 コンテナに変更
  • helix_linux_arm64_oldest:Ubuntu 22.04 ARM VM → AzureLinux 3上のubuntu-22.04-helix-arm64v8 コンテナに変更

変更対象外(意図的):Android、WASM/WASI、ARM VM ホスト、ビルドプール要件

パフォーマンスへの影響

影響なし(インフラストラクチャ構成の変更で、テスト実行環境の置き換えに留まる)

関連Issue

なし

その他

このPRはUbuntu 26.04ローンチに向けた段階的な移行の一部です。ベアメタルVMからコンテナへの移行により、インフラストラクチャの管理が簡素化され、環境の一貫性が向上します。


#125010 Fix pal_memory.c on OpenBSD

  • 作成者: @sethjackson
  • 作成日時: 2026年02月28日 15:17:42(UTC)
  • マージ日時: 2026年03月21日 16:31:12(UTC)
  • ラベル: area-PAL-coreclr community-contribution os-openbsd

概要

OpenBSDにおいてMALLOC_SIZEの実装が存在しないため、SystemNative_AlignedReallocをジェネリックな実装に変更しました。MALLOC_SIZE相当の機能を持たないプラットフォーム向けの汎用実装を提供します。

変更内容

  • src/native/libs/System.Native/pal_memory.c: SystemNative_AlignedReallocの実装を修正。OpenBSDおよびMALLOC_SIZE相当機能を持たない他のプラットフォーム向けのジェネリック実装に変更(+14/-5行)

パフォーマンスへの影響

影響なし

関連Issue

#125010

その他

この変更はOpenBSD上でのメモリ管理機能の互換性を改善するための内部実装の修正です。公開APIには影響ありません。


目次