Pull Request on 2026年04月01日

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

注意点

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


目次

  1. #126416 Document gh aw CLI extension optional prerequisite in select-copilot-pat README
  2. #126415 Use CompressionLevel=Fastest for all test archive ZipDirectory calls
  3. #126406 Use simulator queue instead of device queue for Apple mobile in runtime.yml
  4. #126405 Restore src/tests packages in one-shot
  5. #126391 Consolidate downlevel polyfills under Common/src/Polyfills
  6. #126389 Fix wrong gc join in BGC mark phase
  7. #126383 Add dependencies for type map group type for external/proxy type map nodes
  8. #126377 Fix libraries-interpreter Linux failures: Configuration case mismatch
  9. #126373 Avoid reordering when reading continuation state in AsyncOperation.SignalCompletion
  10. #126364 Add static nethost test scenario (nativehost_static)
  11. #126362 AsyncEnumerable.ToAsyncEnumerable: return source directly if it implements IAsyncEnumerable
  12. #126358 Add path-based PR triggers for stress test pipelines
  13. #126357 [runtime tests] Make 5 tests conditional on multithreading support
  14. #126354 Use C# 14 extensions for polyfills in MetadataLoadContext.
  15. #126352 Fix bounds check bugs in TlsFrameHelper and harden SslStream server handshake
  16. #126343 Enable runtime-async for shared framework source projects in net11.0+…
  17. #126342 Update Native AOT documentation
  18. #126335 Fix MSBuild encoding and capture archive exit code in cDAC Helix commands
  19. #126316 Skip System.Formats.Tar hard-link tests on platforms that can't create hard links (Android)
  20. #126313 Implement SafeProcessHandle.Kill and Signal
  21. #126287 Move polyfills for !NET targets to src/libraries/Common/src/Polyfills/
  22. #126270 [wasm] Bump chrome for testing - linux: 146.0.7680.164, windows: 147.0.7727.24
  23. #126252 Add [OverloadResolutionPriority(1)] to MemoryMarshal.AsBytes(Span) and Cast(Span)
  24. #126180 AOT publishing: Improve error message when the Windows SDK is missing
  25. #126161 [main] Source code updates from dotnet/dotnet
  26. #126151 Fix potential null pCommonAssemImport handling in ImportTypeRef
  27. #126144 [android] Enable exceptions smoke test
  28. #126125 Move WASM/WASI helix host VMs from Ubuntu 22.04 to Azure Linux 3
  29. #126121 Move helix-platforms.yml ARM host VMs from Ubuntu 22.04 to Azure Linux 3
  30. #126032 [cDAC] Implement simple DacDbi methods and IDebugger contract
  31. #126008 [release/8.0] Disable flaky ETW manifest generation tests in release/8.0
  32. #125818 Fix FileSystemWatcher test flakiness on Windows and re-enable 86 disabled tests
  33. #125815 Check for stale coreroot files before running coreclr tests
  34. #125779 Fix flaky File_Move_Multiple_From_Watched_To_Unwatched_Mac test caused by duplicate FSEvents
  35. #125666 Use mul+add+permute sequence for DotProduct when AVX is available
  36. #125505 [cDAC] Implement stack reference walking and GC stress verification
  37. #125352 Move Struct marshaling to transient IL and adjust LayoutClass marshaling IL stub handling
  38. #124912 [cDAC] Dumptest Stackwalker Improvements
  39. #122828 Fix ReadOnlySequence.Slice validation for single-segment sequences

#126416 Document gh aw CLI extension optional prerequisite in select-copilot-pat README

  • 作成者: @artl93
  • 作成日時: 2026年04月01日 17:05:34(UTC)
  • マージ日時: 2026年04月01日 17:24:47(UTC)
  • ラベル: area-Meta

概要

select-copilot-pat アクションのREADMEを更新し、gh aw secrets setコマンドの実行に必須となるgh aw CLI拡張機能のインストール手順をオンボーディングステップとして文書化しました。

変更内容

  • .github/actions/select-copilot-pat/README.md: リポジトリオンボーディング手順にCLI拡張機能インストールをステップ1として追加(+7行)
  • Agentic Workflows CLI セットアップドキュメントへの参照リンクを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更はドキュメント更新のみで、コード実装やランタイム動作に直接的な影響はありません。Copilot CLIを使用して作成されたPull Requestです。


#126415 Use CompressionLevel=Fastest for all test archive ZipDirectory calls

  • 作成者: @steveisok
  • 作成日時: 2026年04月01日 16:57:55(UTC)
  • マージ日時: 2026年04月01日 21:51:11(UTC)
  • ラベル: area-Infrastructure

概要

テストアーカイブの圧縮処理の高速化を目的とした変更です。ZipDirectory呼び出しの圧縮レベルをデフォルトのOptimalからFastestに変更することで、ビルドパイプラインの圧縮時間を削減します。Binlog分析により、osx-arm64 Libraries_CheckedCoreCLR legで255回のZipTestArchive呼び出しが8.2分のCPU時間を消費していたため、この改善により大幅な高速化が期待されます。Helixへのテスト転送ではAzureネットワークの速度が十分であるため、ファイルサイズのわずかな増加は許容範囲です。

変更内容

  • eng/testing/tests.ioslike.targets: ZipDirectory呼び出しにCompressionLevel=Fastest属性を追加
  • eng/testing/tests.targets: ZipDirectory呼び出しにCompressionLevel=Fastest属性を追加
  • src/libraries/sendtohelix.proj: ZipDirectory呼び出し複数箇所にCompressionLevel=Fastest属性を追加
  • src/mono/browser/build/WasmApp.InTree.targets: ZipDirectory呼び出しにCompressionLevel=Fastest属性を追加
  • src/mono/wasi/build/WasiApp.InTree.targets: ZipDirectory呼び出しにCompressionLevel=Fastest属性を追加
  • src/tests/Common/helixpublishwitharcade.proj: ZipDirectory呼び出しにCompressionLevel=Fastest属性を追加

合計7箇所のZipDirectory呼び出しサイトを変更

パフォーマンスへの影響

改善: ZipTestArchive処理の圧縮時間が大幅に削減。osx-arm64 Libraries_CheckedCoreCLR legでは255回の圧縮呼び出しで8.2分のCPU時間削減が期待される(平均約1.9秒/呼び出し)。

トレードオフ: アーカイブファイルサイズがわずかに増加する可能性があるが、Helixへのテスト転送ではAzureネットワークの帯域幅が十分であるため実質的な影響はなし。

関連Issue

なし

その他

この変更はビルドパイプラインのパフォーマンス最適化であり、テスト実行時間やランタイム動作には影響しません。内部実装の変更です。


#126406 Use simulator queue instead of device queue for Apple mobile in runtime.yml

  • 作成者: @kotlarmilos
  • 作成日時: 2026年04月01日 13:43:49(UTC)
  • マージ日時: 2026年04月01日 19:44:24(UTC)
  • ラベル: area-Infrastructure-mono

概要

Apple mobile デバイスキューの信頼性の問題を回避するため、ランタイムパイプラインで ios_arm64/tvos_arm64 デバイスキューの代わりに iossimulator_arm64 シミュレータキューを使用するよう変更しました。この変更は一時的なもので、デバイスキューの問題が解決されるまでの措置です。

変更内容

  • eng/pipelines/runtime.yml: 3つのランタイムジョブマトリックスで ios_arm64/tvos_arm64 プラットフォームエントリを iossimulator_arm64 に置き換え。追跡issue用のコメントを追加。
  • src/libraries/tests.proj: テストプロジェクト設定でiOS/tvOS ARM64プラットフォームをシミュレータプラットフォームに変更。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更はCI/CDパイプラインの構成変更で、ランタイムやライブラリの公開API/実装には直接的な影響はありません。Apple mobile デバイスキューの問題が解決されたら、シミュレータキューから実デバイスキューへの切り戻しが必要になると予想されます。


#126405 Restore src/tests packages in one-shot

  • 作成者: @am11
  • 作成日時: 2026年04月01日 11:42:36(UTC)
  • マージ日時: 2026年04月01日 15:22:59(UTC)
  • ラベル: area-Infrastructure community-contribution

概要

src/testsのパッケージ復元プロセスを最適化し、複数回の復元呼び出しを一度の処理に統合しました。これにより、ビルド時間を大幅に短縮します(約3分20秒から約1秒に改善)。

変更内容

  • src/tests/build.proj: パッケージ復元ロジックを再構築し、複数の復元ターゲットの呼び出しを単一の復元操作に統合
  • src/tests/restore.proj: 新規作成。統合されたパッケージ復元ターゲットを定義
  • src/tests/restore.projects.props: 新規作成。復元対象プロジェクトの設定情報を一元管理

パフォーマンスへの影響

大幅な改善: パッケージ復元フェーズの実行時間が約200秒から約1秒に短縮されました。

  • 改善前: "Determining projects to restore..." の繰り返し呼び出しにより、同じプロジェクトグラフの検証が複数回実行
  • 改善後: 一度のプロジェクト復元で全プロジェクトを処理

関連Issue

#123633

その他

なし


#126391 Consolidate downlevel polyfills under Common/src/Polyfills

  • 作成者: @Copilot
  • 作成日時: 2026年04月01日 01:18:15(UTC)
  • マージ日時: 2026年04月01日 20:12:45(UTC)
  • ラベル: area-System.Reflection.Metadata

概要

複数のライブラリに散在していたダウンレベルポリフィル(BitOperations、Stream、StringBuilder、Stack)をCommon/src/Polyfills/に統合し、コードの重複を排除して保守性を向上させます。Memory依存のストリーム拡張メソッドはStreamMemoryPolyfills.csに分離し、不要な依存関係の追加を防いでいます。

変更内容

  • BitOperationsPolyfills.cs: Log2PopCountTrailingZeroCountRotateLeft/Rightメソッドを追加(deBruijn/Hamming weight実装)
  • StreamPolyfills.cs: ReadExactlyCopyToAsyncを統合(System.Memory/System.Buffers依存なし)
  • StreamMemoryPolyfills.cs (新規): Memory依存のReadAsync(Memory<byte>)Write(ReadOnlyMemory<byte>)WriteAsyncを分離
  • StringBuilderPolyfills.cs (新規): Append(ReadOnlySpan<char>)を移行・リフォーマット
  • StackPolyfills.cs (新規): TryPeek<T>TryPop<T>を移行
  • 削除: System.IO.Hashing、System.Text.Encodings.Web、Microsoft.Bcl.Memory、System.Text.Jsonの個別ポリフィル実装を削除
  • System.Reflection.Metadata: BitArithmetic.CountBitsラッパーを削除し、BitOperations.PopCountを直接呼び出しに変更

パフォーマンスへの影響

影響なし

関連Issue

#126287

その他

  • 複数のライブラリ(System.Net.ServerSentEvents、System.Text.Json、Microsoft.Extensions.Logging.Console等)が共通ポリフィルを参照するよう更新
  • System.IO.PipelinesはStreamPolyfills.csStreamMemoryPolyfills.csの両方を参照
  • System.Speech、System.ServiceModel.SyndicationはStreamPolyfills.csのみ参照し、追加の依存関係を回避

#126389 Fix wrong gc join in BGC mark phase

  • 作成者: @janvorli
  • 作成日時: 2026年04月01日 00:50:27(UTC)
  • マージ日時: 2026年04月01日 12:54:51(UTC)
  • ラベル: area-GC-coreclr

概要

Background GC(BGC)のmark phase内で誤った join struct instanceが使用されていたバグを修正します。gc_t_join(通常のmark phase用)をbgc_t_join(BGC専用)に置き換え、Java GC bridge処理中のBGCスレッド同期を正する変更です。特定の負荷パターン(GCPerfSim)でGCハングが発生していました。

変更内容

  • src/coreclr/gc/background.cpp: background_mark_phase()内のgc_join_bridge_processingbarrier処理で、gc_t_joinbgc_t_joinに置き換え(+3/-5行)

パフォーマンスへの影響

影響なし。これはバグ修正であり、ハング状態を解消することで安定性を向上させます。

関連Issue

#122996

その他

  • Java GC bridge機能の導入時に導入された回帰バグ
  • BGCスレッドのjoin/restart処理で背景GC固有の同期メカニズムを使用していなかったため、エッジケースでスレッド同期が不完全になっていた可能性があります

#126383 Add dependencies for type map group type for external/proxy type map nodes

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年03月31日 22:59:58(UTC)
  • マージ日時: 2026年04月01日 17:31:36(UTC)
  • ラベル: area-crossgen2-coreclr

概要

ReadyToRun(R2R)コンパイル時のタイプマップ生成における失敗を修正するPR。外部タイプマップノードとプロキシタイプマップノードに対して、タイプマップグループ型を明示的なインポート依存関係として追加することで、生成されたタイプマップがグループ型を正しく参照できるようにします。

変更内容

  • ReadyToRunProxyTypeMapNode.cs: ImportReferenceProvider.GetImportToType(TypeMapGroup)の依存関係を追加
  • ReadyToRunExternalTypeMapNode.cs: ImportReferenceProvider.GetImportToType(TypeMapGroup)の依存関係を追加

いずれも最小限の変更(各ファイル+2行)で、タイプマップノードが生成時にグループ型への参照を正しく解決できるようにするための依存関係宣言です。

パフォーマンスへの影響

影響なし

関連Issue

#125352(参照されたHelix実行ログから推測)

その他

  • この変更はコンパイル時の依存関係グラフを修正するもので、ランタイム動作には直接的な影響はありません
  • AOT(ReadyToRun)コンパイラの内部実装に関する変更です

#126377 Fix libraries-interpreter Linux failures: Configuration case mismatch

  • 作成者: @steveisok
  • 作成日時: 2026年03月31日 21:55:24(UTC)
  • マージ日時: 2026年04月01日 16:33:10(UTC)
  • ラベル: area-Infrastructure-libraries

概要

runtime-libraries-interpreterパイプラインのLinux環境での100%の失敗を修正。原因はbuildConfig: release(小文字)がLinuxのケースセンシティブなファイルシステムで、ビルド成果物のRelease(PascalCase)と一致していなかったため。buildConfig: Releaseに変更することで、SendToHelixステップが正しいパスのtesthost実行ファイルを見つけられるようにします。

変更内容

  • eng/pipelines/coreclr/libraries-interpreter.yml: buildConfig: releasebuildConfig: Releaseに変更

Linuxのケースセンシティブファイルシステムで、ビルドステップはtesthost/net11.0-linux-Release-x64/を生成するのに対し、SendToHelixは/p:Configuration=releasetesthost/net11.0-linux-release-x64/を探索していました。この不一致により、空のディレクトリがzipされ、Helixワークアイテムがdotnet実行ファイルを見つけられなくなっていました。

Windows/macOSはケースインセンシティブなため、問題が表面化していませんでしたが、Linuxでは致命的でした。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 他の稼働中のパイプライン(libraries-jitstresslibraries-gcstress-extraruntime-nativeaot-outerloop)はすでにbuildConfig: Releaseの規約に従っています。
  • gc-longrunningr2rsuperpmi-diffsなど他のパイプラインも小文字のbuildConfigを使用しており、Linux環境で同様のケース不一致の潜在的な問題を持つ可能性があります。
  • binlog分析により、ビルド1358001のBuild.binlogSendToHelix.binlogNetCoreAppCurrentTestHostPathプロパティのケーシングが異なることが確認されました。

#126373 Avoid reordering when reading continuation state in AsyncOperation.SignalCompletion

  • 作成者: @VSadov
  • 作成日時: 2026年03月31日 19:37:18(UTC)
  • マージ日時: 2026年04月01日 07:57:53(UTC)
  • ラベル: area-System.Threading

概要

AsyncOperation.SignalCompletionで継続状態を読み取る際に、メモリバリアの欠落による再順序化を防ぐ修正です。マルチスレッド環境での競合状態を解決し、継続状態の正確な読み取りを保証します。

変更内容

  • System.Threading.Channels/AsyncOperation.cs: SignalCompletionメソッドに読み取りバリアを追加(+7行)
  • Microsoft.Bcl.AsyncInterfaces/ManualResetValueTaskSourceCore.cs: 関連する読み取りバリアの追加(+2行)

パフォーマンスへの影響

メモリバリア操作による軽微なオーバーヘッドが発生する可能性がありますが、正確性の確保が優先され、同期プリミティブの通常の利用ではパフォーマンス劣化は無視可能と考えられます。

関連Issue

#125015

その他

このPRは#72657で適用された同様の修正パターンを参考にしています。非推奨(internal実装への修正)であり、破壊的変更ではありません。


#126364 Add static nethost test scenario (nativehost_static)

  • 作成者: @Copilot
  • 作成日時: 2026年03月31日 18:11:18(UTC)
  • マージ日時: 2026年04月01日 20:10:19(UTC)
  • ラベル: area-Host

概要

libnethostをスタティックライブラリとして利用するシナリオを検証するため、nativehost_staticビルドターゲットとスモークテストを追加します。このPRではネイティブホスティング機能のスタティックライブラリ利用パターンに対応するテストインフラを整備しています。

変更内容

  • CMakeLists.txt: nativehost_static実行ファイルを追加。libnethostのスタティック版をリンクし、全プラットフォームでNETHOST_USE_AS_STATICマクロを定義
  • Nethost.cs: GetHostFxrPath_StaticNativeHostテストメソッドを追加。スタティックリンクされたバイナリを明示的なdotnet rootパラメータで実行
  • Binaries.cs: NativeHostStaticバイナリパスをテストインフラに統合

パフォーマンスへの影響

影響なし

関連Issue

#1154

その他

なし


#126362 AsyncEnumerable.ToAsyncEnumerable: return source directly if it implements IAsyncEnumerable

  • 作成者: @Copilot
  • 作成日時: 2026年03月31日 17:02:12(UTC)
  • マージ日時: 2026年04月01日 03:52:12(UTC)
  • ラベル: area-System.Linq

概要

AsyncEnumerable.ToAsyncEnumerable()メソッドを改善し、入力ソースが既にIAsyncEnumerable<T>を実装している場合(例:EF Core queryableなど)に、同期ラッパーで囲まずに元のインスタンスをそのまま返すようにしました。これにより、既存の非同期実装パスが保持され、不要な同期化を防ぎます。

return source switch
{
    IAsyncEnumerable<TSource> asyncEnumerable => asyncEnumerable, // 新規追加
    TSource[] array => ...,
    List<TSource> list => ...,
    // ...
};

変更内容

  • ToAsyncEnumerable.cs — switch式の最初のケースにIAsyncEnumerable<TSource>チェックを追加。他の型チェックより前に評価されることで、非同期実装を直接返します。XMLドキュメントも更新され、既にIAsyncEnumerable<T>を実装している場合は直接返されることが明記されました。
  • ToAsyncEnumerableTests.csDualEnumerable<T>ヘルパークラス(両インターフェースを実装)を使用した新規テストSourceImplementsIAsyncEnumerable_ReturnsSameInstanceを追加。参照の同一性を検証します。

パフォーマンスへの影響

改善あり。既にIAsyncEnumerable<T>を実装するソース(EF Core queryableなど)に対して、不要な同期ラッパーを作成しなくなるため、非同期実行オーバーヘッドを削減できます。特にループ処理が多い場合、パフォーマンス向上が期待できます。

関連Issue

なし

その他

この変更は公開API(AsyncEnumerable.ToAsyncEnumerable)の動作改善であり、既存コードとの互換性を保ちながら非同期パフォーマンスを向上させます。


#126358 Add path-based PR triggers for stress test pipelines

  • 作成者: @ManickaP
  • 作成日時: 2026年03月31日 15:11:08(UTC)
  • マージ日時: 2026年04月01日 07:57:35(UTC)
  • ラベル: area-System.Net.Http

概要

ストレステストパイプライン(http.ymlssl.yml)にパスベースのPR トリガーフィルターを追加しました。これにより、関連ファイルが修正されたPRのみでストレステストが実行され、すべてのPRでの不要な実行を削減します。

変更内容

  • eng/pipelines/libraries/stress/http.yml: pr: トリガーにpaths: include: フィルターを追加

    • src/libraries/System.Net.Http/tests/StressTests/HttpStress/**
    • src/libraries/Common/tests/System/Net/StressTests/**
    • eng/pipelines/libraries/stress/**
  • eng/pipelines/libraries/stress/ssl.yml: pr: トリガーにpaths: include: フィルターを追加

    • src/libraries/System.Net.Security/tests/StressTests/SslStress/**
    • src/libraries/Common/tests/System/Net/StressTests/**
    • eng/pipelines/libraries/stress/**

パフォーマンスへの影響

影響なし(パイプラインの実行条件を変更するもので、ランタイム性能には影響しません)

関連Issue

なし

その他

  • Nightly scheduleは変更なし
  • このPRはAI/Copilotにより生成されています

#126357 [runtime tests] Make 5 tests conditional on multithreading support

  • 作成者: @radekdoulik
  • 作成日時: 2026年03月31日 14:59:01(UTC)
  • マージ日時: 2026年04月01日 15:09:56(UTC)
  • ラベル: arch-wasm area-Infrastructure-coreclr

概要

シングルスレッド環境(ブラウザWASMなど)での Thread.Start() の非サポートに対応するため、5つのランタイムテストを ConditionalFact 属性で条件付け化します。マルチスレッド対応プラットフォームでのみテストが実行されるようになります。

変更内容

  • テスト属性の変更: 5つのテストで [Fact][ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsMultithreadingSupported))] に置き換え

    • finally_SEH (baseservices/exceptions) — finally ブロック内でスレッド生成
    • rethrow (baseservices/exceptions) — 例外再スロー用スレッド生成
    • Polyrec (Loader/regressions) — ポリモーフィック再帰用に4スレッド生成
    • test1 (Loader/TypeInitialization/backpatching) — 静的コンストラクタ競合用スレッド生成
    • InterlockExchange (Regressions) — インターロック操作用に99スレッド生成
  • プロジェクト参照の追加: テストに必要な TestLibrary 参照を csproj に追加(既に存在する場合は不要)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはテストの条件付け化のみで、ランタイムやコンパイラのコア機能変更はありません。WASM等のシングルスレッド環境では該当テストがスキップされ、失敗せずに処理されます。


#126354 Use C# 14 extensions for polyfills in MetadataLoadContext.

  • 作成者: @teo-tsirpanis
  • 作成日時: 2026年03月31日 13:52:42(UTC)
  • マージ日時: 2026年04月01日 04:06:14(UTC)
  • ラベル: area-System.Reflection community-contribution

概要

System.Reflection.MetadataLoadContextをC# 14の拡張メンバー機能を使用してリファクタリングしました。従来のヘルパーメソッド呼び出しから、プロパティスタイルのアクセスに移行することで、モダンなType APIの利用を簡潔にしています。NetStandard向けのポリフィルを拡張メンバーで実装し、NetCore向けのエミュレータレイヤーを削除しました。

変更内容

  • TypeExtensions.netstandard.cs: C# 14の拡張メンバーを使用して、IsSZArrayIsVariableBoundArrayIsGenericMethodParameterIsSignatureTypeMakeGenericSignatureTypeのポリフィルを追加
  • TypeExtensions.net.cs: NetCore向けのNetCoreApiEmulatorsエミュレータレイヤーを削除(基本型のレイヤリング機能は保持)
  • 各型チェック箇所の更新: メソッド呼び出し形式(IsSZArray()など)からプロパティアクセス形式(IsSZArrayなど)に統一
    • RoModifiedType.cs、RoDefinitionType.cs、Assignability.cs、SignatureTypeExtensions.cs、MemberPolicies.cs、DefaultBinder.csで適用

パフォーマンスへの影響

影響なし

関連Issue

#126354#126280

その他

C# 14の拡張メンバー機能を活用することで、ポリフィルの実装をより簡潔かつ保守性の高い形で提供できるようになります。これは内部実装の改善であり、公開APIには影響しません。


#126352 Fix bounds check bugs in TlsFrameHelper and harden SslStream server handshake

  • 作成者: @rzikm
  • 作成日時: 2026年03月31日 13:08:35(UTC)
  • マージ日時: 2026年04月01日 08:37:35(UTC)
  • ラベル: area-System.Net.Security

概要

TlsFrameHelper内の複数の境界チェック不具合を修正し、SslStreamサーバーハンドシェイク時に非ClientHelloフレームを早期に検証・拒否します。SslStreamClientHelloFuzzerによって発見されたアウトオブバウンズアクセスバグを解決し、堅牢性を向上させます。

変更内容

  • TlsFrameHelper.cs: 4つのメソッドに境界チェックを追加

    • TryParseHelloFrame: helloLength < ProtocolVersionSize チェックを追加(helloLength=0時のIndexOutOfRangeException対策)
    • TryParseClientHello/TryParseServerHello: 拡張リスト長読み込み前に p.Length < sizeof(ushort) チェック(truncated ClientHello対策)
    • GetSniFromHostNameStruct: ホスト名構造体のサイズチェック(ReadUInt16BigEndian前)
    • TryGetSupportedVersionsFromExtension: 拡張データが空でないことを確認
  • SslStream.IO.cs: ReceiveHandshakeFrameAsyncに早期バリデーション追加

    • サーバー受信時の最初のフレームがClientHelloであることを検証
    • 非ClientHelloデータはAuthenticationExceptionをスロー(従来は不適切なNotSupportedExceptionが発生)
  • SslStreamClientHelloFuzzer.cs: 新規追加

    • 破損したClientHello入力を使用してSslStream.AuthenticateAsServerを検証

パフォーマンスへの影響

影響なし。追加されたチェックは早期に無効なデータを検出し、後続の処理を防止するため、むしろパフォーマンス低下を回避します。

関連Issue

なし

その他

  • 既知の13個のファザークラッシュケースがすべて適切に処理されるようになった(AuthenticationExceptionまたはIOException)
  • 500個のランダム入力テスト(最大200バイト)が全て成功
  • 既存4,059個のTlsFrameHelperテスト、790個のSslStreamテストが全てパス
  • 内部実装の堅牢化であり、公開APIの変更はなし

#126343 Enable runtime-async for shared framework source projects in net11.0+…

  • 作成者: @agocke
  • 作成日時: 2026年03月31日 03:07:16(UTC)
  • マージ日時: 2026年04月01日 22:36:55(UTC)
  • ラベル: Servicing-approved area-VM-coreclr

概要

runtime-asyncをnet11.0以上の共有フレームワークソースプロジェクトで自動有効化し、ランタイム構成ノブを完全に削除する変更です。また、RISC-VとLoongArchのPEリロケーション処理を修正して、非ゼロアディーブの適切なサポートを実現します。

変更内容

ビルド設定変更:

  • src/libraries/Directory.Build.targetsRuntimeAsyncSupportedプロパティを定義し、プラットフォーム除外(browser、wasi、android、Apple mobile、Mono)を一元管理。IsNETCoreAppSrcで且つnet11.0+ターゲット、OOBパッケージ(IsPackable=true)除外のプロジェクトでruntime-asyncを自動有効化
  • eng/testing/tests.targets — テストビルドで同じRuntimeAsyncSupportedプレディケートを適用。TestReadyToRunの特殊ケースを削除し、プレビュー機能フラグを廃止

ランタイム設定の削除:

  • src/coreclr/inc/clrconfigvalues.hUNSUPPORTED_RuntimeAsync構成定義を削除
  • src/coreclr/vm/eeconfig.h/cppruntimeAsyncフィールド、アクセッサメソッド、初期化コードを完全削除
  • src/coreclr/vm/method.cppClassifyMethodReturnKind内のRuntimeAsync()ガード条件を削除

リロケーション処理修正:

  • src/coreclr/tools/Common/Compiler/ObjectWriter/PEObjectWriter.cs — RISC-VおよびLoongArchのリロケーション解決でアディーブを適切に処理。従来のaddend != 0チェックの例外スローを廃止し、targetAddress = symbolImageOffset + addendで計算
  • src/coreclr/tools/Common/Compiler/DependencyAnalysis/Relocation.cs — RISC-Vリロケーション処理のアサーション調整

テスト構成:

  • src/tests/Interop/COM/RuntimeAsync/RuntimeAsync.csprojDOTNET_RuntimeAsync環境変数とプロセス分離設定を削除

パフォーマンスへの影響

影響なし(設定ノブの削除はコード経路の簡素化のみ、機能は既に有効)

関連Issue

なし

その他

  • runtime-asyncは現在無条件で有効化されるため、プレビュー機能フラグ(EnablePreviewFeatures)を廃止
  • プロジェクト単位のオプトアウト機能(UseRuntimeAsync=false)は維持されます

#126342 Update Native AOT documentation

  • 作成者: @eduardo-vp
  • 作成日時: 2026年03月31日 02:44:27(UTC)
  • マージ日時: 2026年04月01日 17:48:38(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

Native AOT個別テストのビルド手順に関するドキュメント更新。src/tests/build.*スクリプトで個別テストをビルドする際に、MSBuildプロパティに加えてnativeaot引数を渡す必要があることを明記しました。

変更内容

  • docs/workflow/building/coreclr/nativeaot.md: "build an individual test"セクションを拡張し、build.cmd/build.shnativeaot引数を追加することを明記(5行変更)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更は、ドキュメント更新のみで、実装コードへの変更はありません。背景として、Native AOTテストのビルド時に__TestBuildMode環境変数を設定するためにnativeaot引数が必須であり、/p:TestBuildMode=nativeaotMSBuildプロパティだけでは不十分だという実装上の制限を反映しています。


#126335 Fix MSBuild encoding and capture archive exit code in cDAC Helix commands

  • 作成者: @max-charlamb
  • 作成日時: 2026年03月30日 22:32:31(UTC)
  • マージ日時: 2026年04月01日 02:01:51(UTC)
  • ラベル: area-Diagnostics-coreclr area-Diagnostics-cdac

概要

cDAC Helix コマンドの MSBuild エンコーディングとアーカイブ終了コードの取得を修正するもの。$?%24%3F にエスケープして MSBuild のワイルドカード展開を防ぎ、tar コマンドの失敗をキャプチャしてテスト終了コードと統合する。

変更内容

src/native/managed/cdac/tests/DumpTests/cdac-dump-helix.proj (+23/-4 行)

  • MSBuild の Include 属性内での $? のエスケープ処理:? がワイルドカード扱いされるのを防ぐため %24%3F に変更
  • アーカイブ終了コードのキャプチャ機能追加:tar 実行後に archive_exit_code を取得
  • テスト終了コードとアーカイブ終了コードの統合:result_exit_code パターンを使用し、テスト失敗を優先、その次にアーカイブ失敗を報告するロジック実装
  • Windows/Unix 両バリアントで統一されたエンコーディング規約(%25 = %%24 = $%3B = ;%3F = ?)を適用

パフォーマンスへの影響

影響なし

関連Issue

#126207

その他

本PR は #126207 に対する事後対応で、レビューコメント 2 件に対処。既存の helixpublishwitharcade.proj の確立されたパターン(385 行目と 399-408 行目)に準拠した実装。


#126316 Skip System.Formats.Tar hard-link tests on platforms that can't create hard links (Android)

  • 作成者: @Copilot
  • 作成日時: 2026年03月30日 13:55:08(UTC)
  • マージ日時: 2026年04月01日 09:55:00(UTC)
  • ラベル: area-System.Formats.Tar

概要

AndroidのSELinuxアプリサンドボックスがlinkシステムコールを拒否することにより、File.CreateHardLinkを呼び出すテストでUnauthorizedAccessExceptionが発生していた問題を修正します。System.Formats.Tar.Testsのハードリンク関連テストをMountHelper.CanCreateHardLinksで条件付きスキップするようにしました。これにより、Android(x86/arm/arm64/x64)およびシンボリックリンク作成が不可能なプラットフォーム上での154件のCI失敗を解消します。

変更内容

  • TarWriter.WriteEntry.File.Tests.cs: WriteEntry_HardLinksテストに[ConditionalFact]ガード追加
  • TarFile.ExtractToDirectory.File.Tests.cs: HardLinkExtractionRoundtripおよびHardLinkExtraction_CopyContentsテストにガード追加
  • TarFile.ExtractToDirectoryAsync.File.Tests.cs: HardLinkExtraction_CopyContentsAsyncテストにガード追加
  • TarFile.CreateFromDirectory.{File,Stream}.Tests.cs: CreateFromDirectory_UsesWriterOptionsテストにガード追加
  • TarFile.CreateFromDirectoryAsync.{File,Stream}.Tests.cs: CreateFromDirectoryAsync_UsesWriterOptionsテストにガード追加

すべてのテストは[ConditionalFact/ConditionalTheory(typeof(MountHelper), nameof(MountHelper.CanCreateHardLinks))]で保護され、ハードリンク作成が不可能なプラットフォームで自動的にスキップされます。セットアップ段階でもFile.CreateHardLinkが呼ばれるため、TarHardLinkMode.CopyContentsテスト(内容コピーモード)でもガードが必要です。

パフォーマンスへの影響

影響なし

関連Issue

#126316

その他

MountHelper.CanCreateHardLinksは遅延初期化(Lazy<bool>)で実装され、ランタイムに能力を検証するため、Androidだけでなくハードリンク作成が不可能な任意のプラットフォームで正しくテストがスキップされます。テストの既存パターン(シンボリックリンクテストと同じ条件付きガード方式)に合わせた変更です。


#126313 Implement SafeProcessHandle.Kill and Signal

  • 作成者: @Copilot
  • 作成日時: 2026年03月30日 12:55:26(UTC)
  • マージ日時: 2026年04月01日 01:43:11(UTC)
  • ラベル: area-System.Diagnostics.Process

概要

SafeProcessHandleKill()Signal(PosixSignal)メソッドを追加し、Processを経由せずにハンドル経由でプロセスを終了またはシグナル送信できるようにしました。Kill()はプロセス終了をリクエストし、既に終了している場合は暗黙的に成功します。Signal(PosixSignal)は任意のシグナルを送信し、プロセスが存在しない場合はfalseを返します。両メソッドは無効なハンドルでInvalidOperationExceptionをスロー、iOS/tvOSでPlatformNotSupportedExceptionをスローします。

変更内容

  • 公開API(SafeProcessHandle.cs: Kill()Signal(PosixSignal)メソッドを追加。ハンドル検証とプラットフォーム互換性チェックを含む
  • Windows実装(SafeProcessHandle.Windows.cs: SignalCoreSIGKILLのみをサポート(TerminateProcessにマップ)。Marshal.GetLastWin32Error()でエラーコード取得、ERROR_ACCESS_DENIEDGetExitCodeProcessで既終了プロセスを検出
  • Unix実装(SafeProcessHandle.Unix.cs: SignalCoreGetPlatformSignalNumberを使用してマネージドPosixSignalをプラットフォーム固有の番号に変換、kill(2)で送信。ESRCHfalse返却
  • Process.Killリファクタリング(Windows): 重複したTerminateProcessロジックを削除し、SafeProcessHandle.Kill()へ委譲
  • Interop整理: Signalsマネージド列挙型を削除。Interop.Sys.Killはプラットフォーム固有のintシグナル番号を取得。GetPlatformSIGSTOP()Interop.PosixSignal.csに移動
  • ネイティブ実装: SystemNative_Killをシンプル化(直接kill(pid, signal)呼び出し)、PAL_NONE/PAL_SIGKILL/PAL_SIGSTOPの旧PAL列挙型を削除。SystemNative_GetPlatformSIGSTOP()pal_signal.cへ移動、WASM向けダミー実装追加
  • テスト: 無効ハンドル、実行中/終了プロセス、プラットフォーム固有動作をカバーする単体テスト追加(SafeProcessHandleTests.cs)。Unix既存テストをSafeProcessHandle.Signalを使用するよう更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

互換性への影響はありません。既存のProcess.Killと同じセマンティクスを保持し、新しいAPIは追加のみです。ハンドル経由でのプロセス管理が可能になり、より低レベルなプロセス制御が実現できます。


#126287 Move polyfills for !NET targets to src/libraries/Common/src/Polyfills/

  • 作成者: @EgorBo
  • 作成日時: 2026年03月30日 01:54:46(UTC)
  • マージ日時: 2026年04月01日 00:54:28(UTC)
  • ラベル: area-Meta

概要

ダウンレベルターゲット(.NET Standard 2.0、.NET Framework等)向けのポリフィルを共有される src/libraries/Common/src/Polyfills/ に集約し、複数のライブラリから #if NET 条件分岐を削除することで、コード維持性を向上させます。ポリフィルにより、非.NETCoreAppターゲットでも最新のAPI(Stopwatch.GetElapsedTimedouble.IsFiniteArray.MaxLength等)を無条件で呼び出せるようになります。

変更内容

  • ポリフィル共有化:17個の新規ポリフィルファイルをsrc/libraries/Common/src/Polyfills/に作成(DoublePolyfills.csStopwatchPolyfills.csStreamPolyfills.csEnvironmentPolyfills.cs等)
  • 条件分岐削除:複数ライブラリ内の#if NET/ #elseパスを統一API呼び出しに置き換え(System.Text.Json、System.Threading.RateLimiting、System.Formats.Cbor等)
  • ライブラリローカルポリフィル削除:System.Collections.Immutable、System.Text.Jsonの重複したポリフィル実装を共有版に統一
  • プロジェクトファイル更新:非.NETCoreAppターゲットフレームワーク向けにポリフィルソースをリンク
  • ディレクトリ整理EncodingPolyfills.cssrc/libraries/Common/src/System/Text/からsrc/libraries/Common/src/Polyfills/に移動
  • パフォーマンス最適化EnvironmentPolyfillsEnvironment.ProcessIdをスタティックフィールドでキャッシュ(ダウンレベルTFMでのプロセスオブジェクト生成削減)

パフォーマンスへの影響

Environment.ProcessIdアクセスについて、ダウンレベルTFMでプロセスオブジェクトの繰り返し生成・廃棄を削減することにより改善。その他のポリフィルは本質的にランタイム動作に影響なし(内部実装は既に最適化済みのAPIを使用)。

関連Issue

なし

その他

  • このPRはコード品質向上を目的とした内部リファクタリングで、公開API仕様に変更なし
  • .NETCoreAppターゲットでは引き続きポリフィル経由で最新APIが利用可能
  • 削除されたライブラリローカルポリフィル実装の機能は共有版で継続

#126270 [wasm] Bump chrome for testing - linux: 146.0.7680.164, windows: 147.0.7727.24

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年03月29日 00:13:46(UTC)
  • マージ日時: 2026年04月01日 10:44:41(UTC)
  • ラベル: arch-wasm area-Infrastructure-mono

概要

WebAssembly (WASM) テスト環境で使用するChrome for Testingのバージョンを更新します。Linux版を146.0.7680.164に、Windows版を147.0.7727.24にアップグレードしています。

変更内容

  • eng/testing/BrowserVersions.props: Chrome for Testingのバージョン定義を更新
    • Linux版: 新バージョンに更新
    • Windows版: 新バージョンに更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはgithub-actions[bot]による自動更新です。


#126252 Add [OverloadResolutionPriority(1)] to MemoryMarshal.AsBytes(Span) and Cast(Span)

  • 作成者: @Copilot
  • 作成日時: 2026年03月28日 11:58:49(UTC)
  • マージ日時: 2026年04月01日 05:08:42(UTC)
  • ラベル: area-System.Memory

概要

C# 14のオーバーロード解決ルール変更により、MemoryMarshal.AsBytes<T>(int[])MemoryMarshal.Cast<TFrom, TTo>(int[])ReadOnlySpanオーバーロードに解決される問題を修正します。既存コードでSpan<byte>への割り当てが失敗する破壊的変更を回避するため、[OverloadResolutionPriority(1)]属性をSpanオーバーロードに追加し、優先度を上げます。

int[] bits = [];
// C# 14: 修正後はSpanオーバーロードに解決
Span<byte> asBytes = MemoryMarshal.AsBytes<int>(bits);
Span<ulong> cast = MemoryMarshal.Cast<int, ulong>(bits);

変更内容

  • MemoryMarshal.cs: AsBytes<T>(Span<T>)Cast<TFrom, TTo>(Span<TFrom>)[OverloadResolutionPriority(1)]属性を追加
  • System.Runtime.cs(ref assembly): ref assemblyに属性宣言を追加
  • テスト: Span_AsBytes_ImplicitSpanConversion_ReturnsMutableSpanCastSpan_ImplicitSpanConversion_ReturnsMutableSpanテストを追加(AsRefパターンに準拠)

パフォーマンスへの影響

影響なし

関連Issue

#122217#122330AsRef<T>で同様の対応済み)

その他

  • 破壊的変更への対応:C# 14でのオーバーロード解決ルール変更に対する互換性維持の修正
  • 既存パターン(AsRef<T>)に倣った統一的なアプローチ

#126180 AOT publishing: Improve error message when the Windows SDK is missing

  • 作成者: @eduardo-vp
  • 作成日時: 2026年03月27日 02:39:55(UTC)
  • マージ日時: 2026年04月01日 08:02:39(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT publishing時にWindows SDKが不足している場合のエラーメッセージを改善しました。vcvarsall.bat実行後にWindowsSdkDir環境変数が設定されていない場合に、より明確なエラーメッセージを表示するようになりました。これにより、従来のLINK : fatal error LNK1181: cannot open input file 'advapi32.lib'といった不明確なリンカエラーの代わりに、Windows SDKの不足を明示するメッセージが表示されます。

変更内容

  • src/coreclr/nativeaot/BuildIntegration/findvcvarsall.bat: vcvarsall.bat実行後にWindowsSdkDirが未定義の場合、センチネル値(WINSDK_NOT_FOUND)をスクリプト出力に追加
  • src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets: ネイティブリンク処理時のリンカの終了コードをキャプチャし、センチネル値が存在する場合にWindows SDK不足に関する警告を発行

パフォーマンスへの影響

影響なし

関連Issue

#120294

その他

Copilotレビューコメントで、vswhereのワイルドカードパターンマッチング(Microsoft.VisualStudio.Component.Windows*SDK*)が正確に機能しない可能性が指摘されています。この実装が完全に意図通りに動作するかは、実装の詳細確認が必要です。


#126161 [main] Source code updates from dotnet/dotnet

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年03月26日 18:49:13(UTC)
  • マージ日時: 2026年04月01日 14:50:06(UTC)
  • ラベル: area-codeflow

概要

dotnet/dotnetリポジトリからのコードフロー更新です。ビルド20260326.6(コミット7af6021)時点でのソースコード変更と依存パッケージの更新が含まれます。Roslyn、NuGet、Arcade、ASP.NET Core、EF Core、F#、MSBuild、Monoランタイムなど複数の関連リポジトリからの変更が統合されています。

変更内容

依存パッケージ更新:

  • Microsoft.CodeAnalysis関連(5.6.0-2.26172.108 → 2.26176.106)
  • Microsoft.DotNet.Arcade.Sdk、ビルドタスク関連(11.0.0-beta.26172.108 → 26176.106)
  • NuGet関連パッケージ(7.6.0-rc.17308 → rc.17706)
  • System.Reflection.Metadata、System.Text.Json等システムライブラリ(11.0.0-preview.3.26172.108 → 26176.106)
  • ランタイム依存パッケージ(JIT Tools、Mono LLVM、WebAssembly Node Transport)

プロジェクトファイル更新:

  • 複数の.csprojファイルに2行ずつの追加(CoreLib、System.Memory、System.Runtime等19ファイル)
  • eng/Version.Details.props、.xmlの依存バージョン情報更新
  • global.json、source-index設定の更新

関連ソースリポジトリの変更統合:

  • dotnet/arcade、aspnetcore、efcore、fsharp、msbuild、nuget.client、razor、roslyn、sdk、templating、winformsなど複数リポジトリの更新が含まれます

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはコードフロー自動化ツール(Maestro)により生成された自動統合更新です。dotnet/dotnetのVMRから複数のリポジトリの変更が定期的に統合される仕組みです。


#126151 Fix potential null pCommonAssemImport handling in ImportTypeRef

  • 作成者: @tpa95
  • 作成日時: 2026年03月26日 12:55:25(UTC)
  • マージ日時: 2026年04月01日 04:12:00(UTC)
  • ラベル: area-AssemblyLoader-coreclr community-contribution

概要

メタデータコンパイラのインポートヘルパーで、pCommonAssemImportがnullのパスがCreateAssemblyRefFromAssemblyに到達する可能性を修正しました。null参照を回避するため、使用前にnullチェックを追加しています。静的解析ツール(SVACE)により検出されました。

変更内容

  • src/coreclr/md/compiler/importhelper.cpp: pCommonAssemImportのnull参照を防ぐためのnullチェックロジックを追加(+26/-24行)

パフォーマンスへの影響

影響なし

関連Issue

#126151

その他

  • 検出者: Linux Verification Center (linuxtesting.org)の静的解析ツール(SVACE)
  • 報告者: Pavel Tikhomirov、Gazinformservice組織

#126144 [android] Enable exceptions smoke test

  • 作成者: @eduardo-vp
  • 作成日時: 2026年03月26日 03:22:23(UTC)
  • マージ日時: 2026年04月01日 17:10:38(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

Android プラットフォームにおける NativeAOT Exceptions smoke テストで、Server GC が有効であるという要件を常に強制するように修正しました。従来は Android 固有の例外処理があり、Server GC チェックがスキップされていましたが、この修正により すべてのプラットフォームで一貫した検証が行われるようになります。

変更内容

  • src/tests/nativeaot/SmokeTests/Exceptions/Exceptions.cs: Android 固有の Server GC チェック除外ロジックを削除し、プロセッサ数をチェックして Server GC が有効でない場合は早期に終了するようにコード整理(変更行数: +3/-7)

パフォーマンスへの影響

影響なし

関連Issue

#121353

その他

本修正は #73487 と同様のアプローチに基づいています。テスト実行時にプロセッサ数が 1 の場合、Server GC は有効化されないため、その点を考慮した検証ロジックになっています。


#126125 Move WASM/WASI helix host VMs from Ubuntu 22.04 to Azure Linux 3

  • 作成者: @richlander
  • 作成日時: 2026年03月25日 21:02:26(UTC)
  • マージ日時: 2026年04月01日 14:23:59(UTC)
  • ラベル: area-Infrastructure

概要

WASM/WASI関連のHelixテスト実行環境のホストVMをUbuntu 22.04からAzure Linux 3に変更するもの。コンテナイメージ(ubuntu-22.04-helix-webassembly)は変更されません。既存のhelix-platforms.yml:271で使用されている設定との一貫性を整える変更です。

変更内容

  • eng/pipelines/libraries/helix-queues-setup.yml: WASI WASM、Browser WASM、Browser WASM Firefoxの3つのキューのホストVMをUbuntu.2204.Amd64.OpenからAzureLinux.3.Amd64.Openに変更(計6行の変更)

パフォーマンスへの影響

影響なし

関連Issue

#126122

その他

  • Copilot CLIで自動生成されたPull Request
  • コンテナイメージ自体はUbuntu 22.04のままで、後続のPRで26.04に更新予定(dotnet/dotnet-buildtools-prereqs-dockerで追跡中)
  • これはビルド・テスト基盤の設定変更であり、ランタイムやコンパイラの動作には直接影響しない

#126121 Move helix-platforms.yml ARM host VMs from Ubuntu 22.04 to Azure Linux 3

  • 作成者: @richlander
  • 作成日時: 2026年03月25日 20:48:26(UTC)
  • マージ日時: 2026年04月01日 02:58:51(UTC)
  • ラベル: area-Infrastructure

概要

Helix キューの ARM ホスト VM を Ubuntu 22.04 から Azure Linux 3 に統一する変更です。helix-platforms.yml の ARM コンテナホスト VM 定義を更新し、他のパイプラインテンプレート(libraries/helix-queues-setup.ymlcoreclr/templates/helix-queues-setup.yml)で既に使用されている AzureLinux.3.Arm64 と一致させます。

コンテナイメージ(テスト OS)は変更なし:

  • ARM32: Debian 13、Alpine 3.23
  • ARM64: Ubuntu 26.04、Ubuntu 22.04、Alpine 3.23

変更内容

  • eng/pipelines/helix-platforms.yml: ARM ホスト VM を更新
    • Ubuntu.2204.ArmArch.OpenAzureLinux.3.Arm64.Open(パブリックキュー)
    • Ubuntu.2204.ArmArchAzureLinux.3.Arm64(内部キュー)
    • ARM32(glibc + musl)および ARM64(musl)セクション全体で計 13 箇所を置き換え

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

Copilot CLI v1.0.11 により自動生成されたプル リクエストです。


#126032 [cDAC] Implement simple DacDbi methods and IDebugger contract

  • 作成者: @max-charlamb
  • 作成日時: 2026年03月24日 14:50:43(UTC)
  • マージ日時: 2026年04月01日 14:17:11(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact Data Access Component)コンテキストにおいて、IDacDbiInterfaceの32メソッドをマネージC#で実装し、レガシーネイティブデリゲートスタブを置き換えるとともに、新しいIDebuggerコントラクトを導入します。これにより、デバッガー状態クエリの機能をコントラクトベースで提供できるようになります。

変更内容

新規コントラクト(IDebugger)

  • IsLeftSideInitializedGetDefinesBitFieldGetMDStructuresVersionGetAttachStateFlagsMetadataUpdatesAppliedの5つのAPIを実装
  • データ記述子およびグローバル変数(CLRJitAttachStateMetadataUpdatesApplied)から状態を読み取り

IDacDbiInterfaceの実装(32メソッド)

  • Debugger: 5メソッド
  • Thread: 7メソッド(スレッド列挙、状態確認、例外情報など)
  • Loader: 4メソッド(モジュールパス、AppDomain情報など)
  • Type/Object/Code/GC: 各グループ別に複数メソッド実装

内部実装の改善

  • CDAC::CreateICorDebugDataTarget*を受け入れるように変更(従来のICorDebugMutableDataTarget*から拡張)。DBI経路のデータターゲットがICorDebugMutableDataTargetを実装していない場合の初期化失敗を解決
  • IStringHolderをマネージコードから呼び出すため、delegate* unmanaged[Thiscall]関数ポインタを使用してVテーブルを直接呼び出し

テストの充実

  • IDebuggerコントラクト向けの48個のユニットテスト
  • DacDbiメソッドの実装検証用に複数のダンプベース統合テスト
  • DEBUG構成ではレガシーDACとの一貫性を検証

パフォーマンスへの影響

影響なし

関連Issue

#125074(IDacDbiInterfaceのCOM変換)

その他

  • マネージドコンポーネント(DacDbiImpl)はCOM対応で、アンマネージエントリポイント経由で作成可能
  • すべてのメソッドは#if DEBUG検証を含み、レガシーDACとの互換性確認を実施
  • コントラクトレジストリへの登録により、Target.Contracts.Debuggerでアクセス可能
  • cDAC構築:0エラー、0警告

#126008 [release/8.0] Disable flaky ETW manifest generation tests in release/8.0

  • 作成者: @Copilot
  • 作成日時: 2026年03月24日 02:47:58(UTC)
  • マージ日時: 2026年04月01日 21:14:21(UTC)
  • ラベル: Servicing-approved area-skills

概要

release/8.0ブランチのETWマニフェスト生成テストの不安定な動作を修正するバックポート。主要な2つのテスト(Test_EventSource_EtwManifestGenerationTest_EventSource_EtwManifestGenerationRollover)に[ActiveIssue]属性を追加し、既知の問題を追跡します。この変更はmainrelease/9.0release/10.0で既に実施されており、release/8.0への遅れたバックポートです。

[ConditionalFact(nameof(IsProcessElevatedAndNotWindowsNanoServerAndRemoteExecutorSupported))]
[ActiveIssue("https://github.com/dotnet/runtime/issues/88027")]
public void Test_EventSource_EtwManifestGeneration()

変更内容

  • src/libraries/System.Diagnostics.Tracing/tests/BasicEventSourceTest/TestsManifestGeneration.Etw.cs
    • Test_EventSource_EtwManifestGeneration[ActiveIssue]属性を追加
    • Test_EventSource_EtwManifestGenerationRollover[ActiveIssue]属性を追加

パフォーマンスへの影響

影響なし(テストスキップにより、CI環境でのノイズと実行時間削減によるポジティブな影響)

関連Issue

#88027#117520

その他

  • テストのみの変更で、プロダクションコードは変更されません
  • release/8.0でのみ適用されるブランチ固有のバックポートです
  • CI静音化を目的とし、顧客向けの動作変更はありません
  • リスク最小限:プリエクシスティングの不安定なテストのスキップであり、他の3つのブランチで既に実証済みです

#125818 Fix FileSystemWatcher test flakiness on Windows and re-enable 86 disabled tests

  • 作成者: @danmoseley
  • 作成日時: 2026年03月20日 05:06:29(UTC)
  • マージ日時: 2026年04月01日 07:24:28(UTC)
  • ラベル: area-System.IO

概要

System.IO.FileSystem.WatcherのテストのWindowsにおけるフレーキーな失敗を修正し、86個の無効化されたテストを再度有効化するテスト品質改善PR。製品コードには変更なし。テスト実行時にコールバック遅延に対する許容度を段階的に引き上げることで、CI環境でのスレッドプール圧力下での遅延イベント配信に対応。

変更内容

テスト基盤(FileSystemWatcherTest.cs):

  • ExpectEventにプログレッシブリトライタイムアウト機能を追加:リトライア試行ごとにタイムアウトを乗数化(1倍→2倍→3倍)してコールバック遅延に対応
  • SubsequentExpectedWaitを10msから500msに増加:複数イベント検証時の次のイベント待機時間を拡大
  • EnableRaisingEvents = true設定後に50ms のThread.Sleepを追加:タイミングの安定性向上
  • ExpectNoEventのタイムアウト値をWaitForUnexpectedEventTimeout(500ms)に修正(従来は誤って1000msを使用)

テストファイル群(15ファイル):

  • 11個の[ActiveIssue]クラスレベル注釈と14個のメソッドレベル注釈を削除
  • File.Create.csDirectory.Create.csfinallyブロックにクリーンアップロジックを追加してリトライ時のスレート状態を解消
  • FileSystemWatcher.SymbolicLink.cs:シンボリックリンクテストの[ActiveIssue]マッピングを再調整
  • 2つのテスト(File_Move_With_Set_Environment_VariableFile_Move_With_Unset_Environment_Variable)は製品レベルの別問題として新規Issueで無効化継続

パフォーマンスへの影響

影響なし。テスト実行時間は若干増加(リトライのタイムアウト延長、50ms settling delay追加)する可能性があるが、フレーキーな失敗の削減により全体的な安定性が向上。

検証結果:

  • コールバック遅延を900msで注入時、修正なし:114回の失敗(100%失敗率)→修正有り:20回の実行で0回の失敗
  • ストレステスト(32個のCPU飽和ワーカー+8個のIOワーカー+スレッドプール洪水)下でも、修正により0回のフレーキー失敗

関連Issue

#103584#103630#103940#104269#104564#104930#105431

その他

  • Linux/macOS:別途Issue(#125737#125018)として未対応
  • **Symbolic

#125815 Check for stale coreroot files before running coreclr tests

  • 作成者: @jtschuster
  • 作成日時: 2026年03月20日 00:45:21(UTC)
  • マージ日時: 2026年04月01日 01:49:53(UTC)
  • ラベル: area-Infrastructure-coreclr

概要

CoreCLRテスト実行前にCore_Root内の古いバイナリを検出し、警告を発行するMSBuildターゲットを追加します。ローカルビルド出力よりも古いファイルがあれば警告し、テスト実行時に古いビット(stale bits)を使用することによる時間浪費を防ぎます。警告はSkipCoreRootFreshnessCheckで無効化できます。

変更内容

  • CoreRootArtifacts.targets(新規追加): CoreCLRアーティファクトのCore_Rootへのマッピングロジックを共有ターゲットファイルとして定義。両方のCore_Root生成と鮮度チェックで同じマッピングを使用
  • tests.targets: 新しいCheckCoreRootFreshnessターゲットと_ComputeCoreRootFileMappingsターゲットを追加。RunTestsがこれらのターゲットに依存するよう設定。Core_RootファイルとIL-CG2 R2Rキャッシュの"done"マーカーの古さを個別にチェック
  • Directory.Build.targets: Core_Rootコピーロジックをリファクタリング。共有CoreRootArtifactsマッピングを使用し、マッピング計算が実行されることを保証

パフォーマンスへの影響

影響なし。このPRは鮮度チェック機能を追加するもので、既存テストのパフォーマンスに直接的な影響を与えません。むしろ、古いビットでのテスト実行を早期に検出することで、デバッグに費やされる無駄な時間を削減します。

関連Issue

なし

その他

警告はSkipCoreRootFreshnessCheckプロパティで無効化できます。Copilotがテスト実行前にビルドを忘れることが多いという開発体験の問題に対する対策です。


#125779 Fix flaky File_Move_Multiple_From_Watched_To_Unwatched_Mac test caused by duplicate FSEvents

  • 作成者: @Copilot
  • 作成日時: 2026年03月19日 16:40:33(UTC)
  • マージ日時: 2026年04月01日 05:27:49(UTC)
  • ラベル: area-System.IO

概要

macOS FSEventsが監視対象から非監視対象へのファイル/ディレクトリ移動時に重複したDeletedイベントを配信する問題を修正します。既存のisFilteredOutフィルタは古いCreated/Changedイベントのみ除外していたため、重複したDeletedイベントが収集され、テストが失敗していました。新しいCreateDeduplicatingFilter()ヘルパーを導入し、特定のイベント型を除外しつつ、重複イベントをConcurrentDictionaryで一意に保つようにしました。

変更内容

  • FileSystemWatcher.File.Move.cs / FileSystemWatcher.Directory.Move.cs: skipOldEvents=true時、isFilteredOutCreateDeduplicatingFilter(WatcherChangeTypes.Deleted)から直接割り当てるように変更
  • Utility/FileSystemWatcherTest.cs: CreateDeduplicatingFilter(WatcherChangeTypes filteredTypes = 0)静的ヘルパーメソッドを追加。filteredTypesに一致するイベント型は常にフィルタ除外し、残りのイベントはConcurrentDictionary<FiredEvent, bool>.TryAddによる重複排除で最初の発生のみ通過させます

パフォーマンスへの影響

影響なし

関連Issue

#125018

その他

テスト専用の変更です。本体ランタイムコードへの影響はありません。既存テストが修正内容をカバーしており、macOS上での重複Deletedイベント問題を直接解決します。


#125666 Use mul+add+permute sequence for DotProduct when AVX is available

  • 作成者: @alexcovington
  • 作成日時: 2026年03月17日 17:35:17(UTC)
  • マージ日時: 2026年04月01日 16:52:56(UTC)
  • ラベル: area-System.Memory community-contribution

概要

x86/x64プラットフォームにおいて、AVX利用可能な環境でのSIMD DotProduct計算を最適化するもの。従来のvdpps/vdppd命令の代わりに、乗算(mul)+ 並べ替え(permute)+ 加算(add)のシーケンスを使用することで、パフォーマンスを向上させます。

変更内容

  • src/coreclr/jit/lowerxarch.cpp: LowerHWIntrinsicDot関数のJITローイングロジックを修正。AVX利用時に乗算 + 並べ替え + 加算リダクションシーケンスを生成するように変更。
  • src/coreclr/jit/lower.h: 関連する1行の追加

変更の主な意図は、Vector128/Vector128を含むVector型のDotProduct操作で、より効率的な命令シーケンスを生成することです。これはコンパイラ内部の最適化であり、公開APIには変更ありません。

パフォーマンスへの影響

大幅な改善を達成

ベンチマーク結果から以下の改善率が確認されました:

  • Vector2.Dot: 1.664ns → 1.295ns(約22%高速化、比率0.78)
  • Vector3.Dot: 1.704ns → 1.331ns(約22%高速化、比率0.78)
  • Vector4.Dot: 1.675ns → 1.293ns(約23%高速化、比率0.77)
  • Vector128.Dot: 1.652ns → 1.301ns(約21%高速化、比率0.79)
  • Vector128.Dot: 1.476ns → 1.131ns(約23%高速化、比率0.77)
  • Vector.Dot: 1.887ns → 1.295ns(約31%高速化、比率0.69)

メモリ割り当てへの影響はなし。命令コード長は増加(例:15バイト→33バイト)しますが、実行時間の短縮がそれを補うため、全体としてパフォーマンス向上です。

関連Issue

なし

その他

アセンブリレベルの変更により、従来の単一の高速演算命令(vdpps/vdppd)から複数命令のシーケンス(vmulps/vmulpdvpermilps/vpermilpdvaddps/vaddpd)へと置き換わります。モダンCPUのパイプライン効率がこのシーケンスに最適化されていることが改善の要因と考えられます。


#125505 [cDAC] Implement stack reference walking and GC stress verification

  • 作成者: @max-charlamb
  • 作成日時: 2026年03月12日 17:11:08(UTC)
  • マージ日時: 2026年04月01日 03:20:34(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

このPRはcDAC(コンポーネント化DAC)にWalkStackReferences APIを実装し、スタック上のGC参照を報告する機能を追加します。また、cDACの正確性を検証するためのGC stress検証ツール(CdacStress)を追加します。cDACはランタイムの内部的なGCスタッククローリングと同等の管理実装を提供し、AMD64/ARM64(Windows/Linux)をサポートしています。

変更内容

cDAC スタック参照ウォーキング実装:

  • GCInfoDecoder.cs: EnumerateLiveSlotsメソッドでGCスロットテーブル(レジスタ・スタックスロット)をデコードし、指定の命令オフセットで有効なGC参照を報告
  • GcScanner.cs: フレーム単位のGC参照スキャンを実装し、スロット位置をターゲットアドレスに解決
  • ExceptionHandling.cs: ExInfo チェーンを走査してアクティブな例外によってアンワインドされたフレームを判定(HasFrameBeenUnwoundByAnyActiveException
  • StackWalk_1.cs: マネージドフレーム反復、GCスキャン適用、呼び出し元SP追跡、funclet フレームフィルタリングを実装
  • プラットフォームコンテキスト拡張:AMD64/ARM64/ARMにGetRegisterByNumber/SetRegisterByNumberを追加
  • ExecutionManager: IsFilterFuncletGetExceptionClauses APIを追加
  • データディスクリプタ追加:ExInfo.ExceptionFlagsExInfo.ScannedStackRangePatchpointInfo.NumberOfLocalsなど

GC Stress検証ツール (CdacStress):

  • cdacstress.cpp/.h: ランタイムのストレスポイントでcDACをロードし、スタック参照出力をランタイムの実際のGC報告と比較
  • DOTNET_CdacStress環境変数(ビットフラグで制御)で有効化:CDACSTRESS_ALLOC (0x1)、CDACSTRESS_REFS (0x10)、CDACSTRESS_WALK (0x20)など
  • CrstStaticロックで共有cDACインスタンスへのアクセスを直列化、リエントランシーガード搭載
  • DOTNET_CdacStressLogFileに結果をログ出力

ダンプテスト追加:

  • StackReferenceDumpTests: WalkStackReferencesが正常に実行され有効なソース情報を返すことを検証
  • P/Invoke遷移の検証テスト
  • x86では実装未サポートのため[SkipOnArch]属性で除外(#126359トラッキング)

パフォーマンスへの影響

影響なし(検証ツールはストレステスト時のみ動作し、本番環境では使用されない)

関連Issue

#126359(x86 GCInfo デコーダ実装待ち)

その他

既知の制限:

  • ScanFrameRoots: Frame stubs(HelperMethodFrameなど)からのGC rootsは未実装。JIT コンパイル済みマネージドフレームのみ対応
  • **x86

#125352 Move Struct marshaling to transient IL and adjust LayoutClass marshaling IL stub handling

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年03月09日 22:13:08(UTC)
  • マージ日時: 2026年04月01日 17:31:13(UTC)
  • ラベル: area-Interop-coreclr

概要

構造体マーシャリングをTransient ILに移行し、レイアウトクラスマーシャリングの処理を簡潔化するリファクタリングです。構造体マーシャリングはSystem.StubHelpers.StructureMarshaler<T>の各インスタンスに対してTransient ILで生成され、レイアウトクラスマーシャリングはSystem.StubHelpers.LayoutClassMarshaler<T>の管理側スタティクスでキャッシュされるようになります。これにより、汎用IL スタブキャッシュへの依存を削減し、マーシャリング関連のランタイムロジックを簡素化します。

変更内容

  • ランタイム側(C++)

    • Transient IL生成パスに構造体マーシャリング対応を追加(dllimport.cpp
    • レイアウトクラスマーシャリング用QCall実装追加(stubhelpers.cpp
    • IL スタブキャッシュ特有の構造体マーシャリング処理を削除(ilstubcache.cpp, ilstubresolver.cpp
    • フィールドマーシャリング用フラグ再割り当てと処理更新(mlinfo.h/cpp
    • SAFEARRAY/レコード マーシャリング呼び出しサイト更新(olevariant.cpp
  • マネージド側(C#)

    • StructureMarshaler<T>LayoutClassMarshaler<T>ジェネリックヘルパー追加(StubHelpers.cs
    • Marshal.StructureToPtr等がレイアウト検査と型別キャッシュメソッドを使用するように更新(Marshal.CoreCLR.cs

パフォーマンスへの影響

改善

  • 構造体マーシャリングのキャッシュ高速化:Marshal.StructureToPtr等の一般的なAPI呼び出しが、従来の汎用IL スタブキャッシュではなく、より高速なTransient ILパスを使用
  • ランタイム側マーシャリングロジックの削減:構造体マーシャリング用の複雑なキャッシュ機構と編集時状態管理が不要に

その他

  • レイアウトクラスマーシャリングはロック機構導入により、スレッド安全性を維持しながらマネージド側でスタブキャッシュ

関連Issue

なし

その他

この変更は内部実装の見直しであり、公開API層には破壊的変更なし。将来的にP/Invoke IL本体を非共有ケースでTransient ILに移行するための基盤となります。


#124912 [cDAC] Dumptest Stackwalker Improvements

  • 作成者: @max-charlamb
  • 作成日時: 2026年02月26日 18:03:33(UTC)
  • マージ日時: 2026年04月01日 07:37:27(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact DAC)のダンプテスト スタックウォーキング機能を改善するPRです。新しいDumpTestStackWalkerヘルパークラスを導入し、スタックフレーム検証テストの記述を簡素化します。Fluent APIにより、隣接性チェック、述語マッチング、双方向トラバーサルをサポートしています。

変更内容

  • DumpTestStackWalker.cs(新規, +302行): スタックフレームシーケンスのアサーション用Fluent APIを提供するヘルパークラス。隣接フレームチェック、述語マッチング、内側→外側/外側→内側のトラバーサル対応
  • StackWalkDumpTests.cs(+238行): 新しいヘルパーを使用してフレームシーケンス(MethodC → MethodB → MethodA → Main)検証テストを追加
  • PInvokeStubDumpTests.cs: テスト実装の整理(-37行)
  • VarargPInvokeDumpTests.cs: Vararg P/Invokeスタックフレーム検証テストを追加(フレームシーケンス含む)
  • RunDumpTests.ps1(+10行): スキップバージョンをMSBuildプロパティとして計算・パスし、バージョン部分実行時のテストフィルタリングを改善

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは内部テスト基盤(cDAC dumptestスイート)の改善であり、公開APIの変更はありません。ヘルパークラスはsrc/native/managed/cdac/tests/DumpTests/配下のテスト専用です。


#122828 Fix ReadOnlySequence.Slice validation for single-segment sequences

  • 作成者: @Copilot
  • 作成日時: 2026年01月03日 02:33:08(UTC)
  • マージ日時: 2026年04月01日 05:35:27(UTC)
  • ラベル: area-System.Memory

概要

ReadOnlySequence<T>.Sliceメソッドの検証バグを修正しました。単一セグメント序列において、別の序列から取得したSequencePositionを渡すと、ArgumentOutOfRangeExceptionをスローせずに負の長さの無効なスライスが生成される問題を解決しています。

変更内容

  • src/libraries/System.Memory/src/System/Buffers/ReadOnlySequence.cs

    • Slice(long start, SequencePosition end)メソッド: セグメントオブジェクトの等値性チェック(startObject != sliceEndObject)を追加
    • Slice(SequencePosition start, long length)メソッド: セグメントオブジェクトの等値性チェック(startObject != sliceStartObject)を追加
    • 既にSlice(SequencePosition, SequencePosition)BoundsCheck()で実装されていた検証と同様の処理を単一セグメント分岐に追加
  • src/libraries/System.Memory/tests/ReadOnlyBuffer/ReadOnlySequenceTests.Common.cs

    • Slice_Int_SequencePosition_ValidatesEndPositionFromDifferentSequenceテストケース追加
    • Slice_SequencePosition_Long_ValidatesStartPositionFromDifferentSequenceテストケース追加

パフォーマンスへの影響

影響なし

関連Issue

#27834

その他

  • System.Memoryテスト全52,155件に合格(1件スキップ・無関連)
  • CodeQL セキュリティチェック完了
  • コードレビューフィードバック対応: 可読性向上のため比較演算子のオペランド順序を調整

目次