Pull Request on 2026年04月06日

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

注意点

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



#126581 Refresh remaining docs for #126122

  • 作成者: @richlander
  • 作成日時: 2026年04月06日 17:13:34(UTC)
  • マージ日時: 2026年04月06日 17:21:35(UTC)
  • ラベル: area-Infrastructure

概要

ドキュメント整理PRの後続対応として、WebAssemblyとFreeBSD クロスビルド関連のドキュメントを更新。Ubuntu 18.04時代の古いガイダンスをAzure Linuxベースの現在の前提条件イメージとdotnet/versions参照に置き換えました。テスト対象はドキュメントのみです。

変更内容

  • docs/workflow/building/libraries/webassembly-instructions.md: Emscripten/WebAssemblyのDocker イメージ更新手順を、Azure Linux + dotnet/versionsガイダンスを使用するように書き換え(+12/-32)
  • docs/workflow/building/coreclr/cross-building.md: FreeBSDクロスビルドのDocker イメージタグを新しいバージョンに更新(+1/-1)

パフォーマンスへの影響

影響なし

関連Issue

#126122#126581

その他

AI/Copilot生成のPR。Tizenおよびストレステストのドキュメント参照は、フォローアップ作業のため意図的に変更せず据え置き。


#126573 [release/8.0] Update markdownlint workflow to Node LTS

  • 作成者: @richlander
  • 作成日時: 2026年04月06日 06:11:51(UTC)
  • マージ日時: 2026年04月06日 16:56:29(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

release/8.0ブランチのMarkdownlintワークフローをNode.js LTSで実行するように更新しました。従来のNode 16ランタイムで動作していたmarkdownlint-cliの失敗を解決するための変更です。

変更内容

  • .github/workflows/markdownlint.yml: GitHub Actionsのバージョン更新とNode.jsランタイム変更
    • actions/checkout@v6 に更新
    • actions/setup-node@v6 に更新
    • Node.jsバージョンを 16.x から lts/* に変更

パフォーマンスへの影響

影響なし

関連Issue

#126528

その他

  • 本PRはAI/Copilotによって生成されました
  • この変更により、既にマークダウンファイルが正規形式である場合でもMarkdownlintチェックが正常に機能するようになります

#126528 [release/8.0] Update WebAssembly Helix image versions

  • 作成者: @richlander
  • 作成日時: 2026年04月04日 00:20:36(UTC)
  • マージ日時: 2026年04月06日 05:58:18(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

release/8.0ブランチのWebAssembly(WASI + Browser)Helix キュー用コンテナイメージ参照をUbuntu 26.04 WebAssembly前提条件イメージに更新するバックポートです。WASI、Browser WASM、およびBrowser WASM Firefoxのテスト環境を新しいWebAssemblyコンテナベースラインに統一します。

変更内容

  • eng/pipelines/libraries/helix-queues-setup.yml: WASI、Browser WASM、Browser WASM Firefoxのキュー参照をubuntu-26.04-helix-webassembly-amd64イメージに更新
  • eng/pipelines/coreclr/templates/helix-queues-setup.yml: Browser WAsmのキュー参照を同じ26.04 amd64イメージに更新
  • docs/workflow/building/coreclr/ 関連ドキュメントを軽微更新
  • イメージタグはimage-info.dotnet-dotnet-buildtools-prereqs-docker-main.jsonで検証済み

パフォーマンスへの影響

影響なし

関連Issue

#126524(元のPR)、#125690#126122

その他

  • このPRはAI/Copilot生成です
  • release/8.0ブランチへのバックポート(元はmainブランチ向け)
  • Helix CI/CDパイプライン設定の変更であり、ランタイムコード自体への影響はありません

#126527 [release/9.0] Update WebAssembly Helix image versions

  • 作成者: @richlander
  • 作成日時: 2026年04月04日 00:19:48(UTC)
  • マージ日時: 2026年04月06日 05:57:06(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

release/9.0 ブランチの WebAssembly(WASI および Browser)テスト実行環境を、Ubuntu 26.04 ベースの公開 WebAssembly イメージに更新します。WASI、Browser WASM、Browser WASM Firefox のテスト環境が新しい Helix キューイメージを使用するようになります。

変更内容

  • eng/pipelines/libraries/helix-queues-setup.yml: WASI、Browser WASM、Browser WASM Firefox のコンテナイメージを ubuntu-26.04-helix-webassembly-amd64 に統一
  • eng/pipelines/coreclr/templates/helix-queues-setup.yml: CoreCLR の Browser WASM コンテナイメージを ubuntu-26.04-helix-webassembly-amd64 に更新(既存のホストキューパターンは保持)
  • docs/workflow/building/coreclr/cross-building.md: ドキュメント更新

イメージタグは image-info.dotnet-dotnet-buildtools-prereqs-docker-main.json で検証済みです。

パフォーマンスへの影響

影響なし

関連Issue

#126524(本 PR はそのバックポート) #125690 #126122

その他

  • 本 PR は AI/Copilot により生成されました
  • release/9.0 ブランチ向けの CI/CD パイプライン設定変更であり、ランタイムの動作やパブリック API には直接的な影響はありません

#126526 [release/10.0] Update WebAssembly Helix image versions

  • 作成者: @richlander
  • 作成日時: 2026年04月04日 00:18:55(UTC)
  • マージ日時: 2026年04月06日 16:57:48(UTC)
  • ラベル: Servicing-approved area-Infrastructure

概要

release/10.0ブランチのWebAssembly(WASI・Browser)Helix テストキューのコンテナイメージバージョンをUbuntu 26.04に更新します。これにより古いUbuntu 22.04/24.04イメージの使用を回避し、公開パイプラインと内部パイプラインの正しいキュー識別子(.Openサフィックス)の使い分けを実現します。

変更内容

  • eng/pipelines/libraries/helix-queues-setup.yml: WASI・Browser WASM・Browser WASM Firefoxをubuntu-26.04-helix-webassembly-amd64に更新し、公開(.Open)と内部(非.Open)バリアントに分割
  • eng/pipelines/coreclr/templates/helix-queues-setup.yml: Browser WAASMの公開/内部キューをUbuntu 24.04からUbuntu 26.04に更新、.Openサフィックスで公開キュー識別子を指定
  • ドキュメント(docs/project/linux-build-methodology.mddocs/workflow/building/coreclr/cross-building.md)の参照も一部更新

パフォーマンスへの影響

影響なし。(Helixキューイメージバージョン更新のみで、コード変更なし)

関連Issue

その他

  • パイプライン設定のみの変更であり、コード変更はなし
  • イメージタグはimage-info.dotnet-dotnet-buildtools-prereqs-docker-main.jsonで検証済み
  • リスク評価:低
  • Copilot AI生成PRで、複数のレビュアーにより検証されています

#126524 Update WebAssembly Helix image versions

  • 作成者: @richlander
  • 作成日時: 2026年04月03日 23:40:52(UTC)
  • マージ日時: 2026年04月06日 05:46:32(UTC)
  • ラベル: area-Infrastructure

概要

WebAssembly/WASI Helix テストインフラを Ubuntu 26.04 の最新プリレクイサイトイメージに更新し、公開 Helix キュー識別子を .Open サフィックス規約に統一するメンテナンスPRです。Ubuntu 22.04 の「oldest」カバレッジスロットは保持されます。

変更内容

  • eng/pipelines/helix-platforms.yml: Browser WASM の helix_browser_wasm_latest を Ubuntu 24.04 から Ubuntu 26.04 の webassembly イメージに切り替え
  • eng/pipelines/libraries/helix-queues-setup.yml: Libraries の WASI/browser/Firefox WASM Helix キューを Ubuntu 26.04 イメージに更新
  • eng/pipelines/coreclr/templates/helix-queues-setup.yml: CoreCLR browser WASM キュー(公開・内部)とコンテナイメージを Ubuntu 26.04 に更新、公開キューを (Ubuntu.2604.Amd64.Open) 形式に統一
  • 公開キュー規約の修正: helix_browser_wasm_oldest(Ubuntu.2204.Amd64.Open) に修正して .Open パターンを統一
  • ドキュメント修正: SKILL.md のマークダウンインデント修正、docs/project/linux-build-methodology.md および docs/workflow/building/coreclr/cross-building.md の軽微な更新

パフォーマンスへの影響

影響なし

関連Issue

#126122

その他

このPRはAI/Copilot生成です。


#126515 crossgen2: Add --rtr-header-symbol-name opt-in option for custom ReadyToRun header symbol

  • 作成者: @Copilot
  • 作成日時: 2026年04月03日 20:55:52(UTC)
  • マージ日時: 2026年04月06日 18:32:40(UTC)
  • ラベル: area-crossgen2-coreclr

概要

crossgen2に新しいコマンドラインオプション --rtr-header-symbol-name を追加し、複合ReadyToRun(R2R)イメージの出力シンボル名をカスタマイズできるようにします。デフォルトは RTR_HEADER で、複数のR2Rイメージを直接リンクするカスタムホストでシンボル衝突を回避する必要がある場合に使用されます。

変更内容

  • Program.cs / Crossgen2RootCommand.cs: --rtr-header-symbol-name <name> オプションを追加・検証(--composite 必須、空文字列・ホワイトスペースのみ不可)
  • CompositeImageSettings.cs: ReadyToRunHeaderSymbolName プロパティを追加してカスタムシンボル名を保持
  • ReadyToRunCodegenNodeFactory.cs: CompositeImageSettings.ReadyToRunHeaderSymbolName を使用してR2RヘッダーシンボルのAlternateNameを設定
  • ReadyToRunObjectWriter.cs: PE複合ビルドでカスタムシンボル名をエクスポート
  • Resources.resx: オプション説明とエラー文字列を追加
  • ドキュメント: readytorun-format.md、readytorun-platform-native-envelope.md、readytorun-composite-format-design.mdでカスタマイズ機能を説明

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この変更は内部実装(AOT環境下のコンパイラオプション)に限定され、公開APIへの影響はありません
  • PE形式とMach-O形式の両方に対応していますが、主なシナリオはMach-O形式です
  • CompositeImageSettings に新規フィールドを追加するため、既存の複合ビルドは従来通り RTR_HEADER をデフォルト使用します

#126513 Change Pkcs12SafeContentsBag decoding from recursive to iterative

  • 作成者: @bartonjs
  • 作成日時: 2026年04月03日 19:40:52(UTC)
  • マージ日時: 2026年04月06日 16:37:30(UTC)
  • ラベル: area-System.Security

概要

PKCS#12 SafeContentsBag のデコード処理を再帰的な実装から反復的(スタックベース)な実装に変更し、深くネストされた構造でのスタックオーバーフローを防ぎます。深さ3333のネストされたPFXをデコードするリグレッションテストも追加されます。

変更内容

  • Pkcs12SafeContents.cs: ネストされたSafeContentsの解析を明示的なスタックを用いた反復処理に変更。再帰的な構築から遅延解析へ移行。
  • Pkcs12SafeContentsBag.cs: 遅延コンテンツでSafeContentsBagを構築するためのファクトリメソッドを追加。既存のデコードヘルパーをprivateに変更。
  • Pkcs12InfoTests.cs: 深くネストされたPFX(深さ3333)をデコードする回帰テストを追加。

パフォーマンスへの影響

スタックオーバーフロー防止による信頼性向上。深くネストされたPFXの処理において、スタック消費が削減され、より深いネストレベルの対応が可能になります。

関連Issue

なし

その他

この変更は内部実装(Pkcs12SafeContentsPkcs12SafeContentsBag)の改善であり、公開API には影響ありません。既存の動作は変わらず、より堅牢な処理になります。


#126476 [tests] Add check for X86Base.IsSupported before calling X86Base.CpuId

  • 作成者: @BrzVlad
  • 作成日時: 2026年04月02日 16:49:15(UTC)
  • マージ日時: 2026年04月06日 05:38:08(UTC)
  • ラベル: area-CodeGen-Interpreter-coreclr

概要

X86Base のハードウェア組み込み関数テストにおいて、インタープリタ実行時の PlatformNotSupportedException を回避するため、X86Base.CpuId 呼び出し前に X86Base.IsSupported チェックを追加しました。

変更内容

  • src/tests/JIT/HardwareIntrinsics/X86_Avx512/Avx512Bmm/HandwrittenProgram.cs: CheckSupported() メソッドに X86Base.IsSupported の早期リターンガードを追加(+2行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このテストはインタープリタ環境での実行時に発生していた PlatformNotSupportedException を修正する
  • テスト専用の変更で、ランタイムやライブラリの公開APIには影響しない

#126428 Add DirectoryPath property to DirectoryNotFoundException

  • 作成者: @ViveliDuCh
  • 作成日時: 2026年04月01日 18:58:16(UTC)
  • マージ日時: 2026年04月06日 17:35:02(UTC)
  • ラベル: area-System.IO

概要

DirectoryNotFoundExceptionDirectoryPathプロパティを追加し、FileNotFoundException.FileNameと同じパターンで欠落ディレクトリパスへのアクセスを可能にします。新しいコンストラクタ、ToString()オーバーライド、シリアライゼーションサポートを実装し、ランタイム内の18箇所のスロー箇所でディレクトリパスを渡すよう更新しました。

変更内容

  • DirectoryNotFoundException.cs: DirectoryPathプロパティ(nullable)、2つの新規コンストラクタ(message + directoryPathmessage + directoryPath + innerException)、MessageToString()のオーバーライド、GetObjectDataによる シリアライゼーションサポート、バージョン許容逆シリアライゼーション
  • Strings.resx: IO_DirectoryNotFound_Pathなど新しいローカライズ文字列の追加、デフォルトメッセージを"Attempted to access a path that is not on the disk."から"Unable to find the specified directory."に更新
  • ref/System.Runtime.cs: パブリックAPI面の参照アセンブリ更新
  • スロー箇所の更新: Win32Marshal.csInterop.IOErrors.csFileInfo.csFileSystem.Unix.csTarFile.cs(×8)、IsolatedStorageFile.csFileSystemSecurity.csSocketAsyncEventArgs.Unix.csNativeObjectSecurity.csLdapSessionOptions.Linux.csPhysicalFileProvider.csで計18箇所更新。マルチTFMファイルは#if NET11_0_OR_GREATERガードで保護
  • テスト追加: 新しいコンストラクタ、プロパティ、メッセージ自動生成、ToString()出力、nullエッジケース、シリアライゼーション往復をカバー

パフォーマンスへの影響

影響なし

関連Issue

#103468

その他

  • DirectoryPathがnullableなのは、スロー箇所によってはパスが利用不可の場合があるため
  • メッセージ自動生成では、messageがnullの場合にdirectoryPathから記述的なメッセージをコンストラクタで自動生成(null合体演算子使用)
  • メッセージ生成は推奨に従い、ネイティブ相互運用ではなくマネージドなSR.Format(...)を使用
  • パス情報がない3箇所と、名前付きシンク排他オブジェクト関連の4箇所(EventWaitHandleなど)は意図的に未更新

#126382 Keep the trimming target type around if there's a template type layout for the trimming target

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年03月31日 22:49:29(UTC)
  • マージ日時: 2026年04月06日 21:40:54(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT の依存関係追跡を調整し、外部型マップエントリの trim 対象型が正規形を持つ場合に、その正規形に対応するテンプレート型レイアウトを到達可能な状態で保持するようにします。これにより、外部型マップエントリで保持される trim 対象型が正規形を持つ際に、対応するテンプレートレイアウトも確実に存在するようになります。

変更内容

  • ExternalTypeMapNode.cs: Trim 対象型から正規テンプレート型レイアウトへの条件付き依存関係を追加(+11行)
  • ProxyTypeMapNode.cs: 軽微な修正(+1/-1行)
  • DeadCodeElimination.cs: テストケースを拡張してこの動作を検証(+24/-6行)

パフォーマンスへの影響

影響なし

関連Issue

#126177

その他

NativeAOT コンパイラの内部実装(依存関係分析)の改善です。公開 API への影響はありません。


#125982 Add Renovate support

  • 作成者: @mthalman
  • 作成日時: 2026年03月23日 17:56:03(UTC)
  • マージ日時: 2026年04月06日 15:37:30(UTC)
  • ラベル: area-Infrastructure

概要

Renovateサポートを追加し、コンテナイメージの依存関係を自動的に最新の状態に保つパイプラインを実装します。初期設定ではコンテナイメージのダイジェストピニング(digest pinning)を使用し、pipeline-with-resources.ymlで参照されるイメージの更新を自動化します。Helixイメージも含めてダイジェストピニングに対応しています。

変更内容

  • eng/renovate.json (+42): Renovate設定ファイル。カスタム正規表現マネージャーを使用して、パイプラインコンテナイメージのダイジェストピニングルールを定義。
  • eng/pipelines/runtime-renovate.yml (+34): 新規スケジュール実行パイプライン。Arcadeが提供する共有Renovateテンプレートを拡張し、eng/renovate.jsonを参照。

パフォーマンスへの影響

影響なし(ビルドパイプライン構成の追加であり、ランタイムパフォーマンスへの直接的な影響はありません)

関連Issue

#113455

その他

  • 内部リンク(Azure DevOps dry run例)が含まれています。
  • この変更はdotnet/arcadeで提供されるRenovateドキュメントに基づいて実装されています。
  • 新たに手動で追加されたコンテナイメージは単にタグ名を参照するだけで、Renovateが次回実行時に自動的にダイジェストに更新します。

#125821 JIT: Remove dead Vector2/3 lowering code

  • 作成者: @saucecontrol
  • 作成日時: 2026年03月20日 08:42:49(UTC)
  • マージ日時: 2026年04月06日 16:32:36(UTC)
  • ラベル: area-CodeGen-coreclr community-contribution

概要

古いSIMD型(Vector2/Vector3)がHWIntrinsicsに移行したため、JITコンパイラに残存していた死活コード(未使用のlowering処理)を削除するクリーンアップです。

変更内容

  • src/coreclr/jit/gentree.cpp: 不要な条件判定を削除(+1/-1)
  • src/coreclr/jit/hwintrinsicarm64.cpp: 死活コード削除(+1/-1)
  • src/coreclr/jit/lowerarmarch.cpp: Vector2/3関連のlowering処理を削除(+4/-64、純減少60行)
  • src/coreclr/jit/lowerxarch.cpp: Vector2/3関連のlowering処理を削除(+9/-164、純減少155行)

パフォーマンスへの影響

影響なし。削除されるのは死活コードであり、実行時パスではありません。むしろコードサイズの削減によるメモリ効率向上が期待できます。

関連Issue

なし

その他

内部実装(JITコンパイラのlowering層)の整理であり、公開APIや互換性への影響はありません。Vector2/Vector3はHWIntrinsicsベースの実装に完全に移行済みであることが前提となっています。


#125472 Remove async method inlining restrictions in crossgen2

  • 作成者: @jtschuster
  • 作成日時: 2026年03月12日 01:43:47(UTC)
  • マージ日時: 2026年04月06日 18:56:38(UTC)
  • ラベル: area-crossgen2-coreclr

概要

ReadyToRun (R2R) コンパイル時に非同期メソッドのインライン化を制限していた制約を削除します。これにより、await を含まない非同期メソッドはコンパイル時にインライン化されるようになります。69個すべての非同期テストが crossgen2 および composite R2R で合格しており、実装の妥当性が確認されています。

変更内容

  • ReadyToRun IL Provider (ReadyToRunILProvider.cs): 非同期メソッドに対する IL 生成の制限を緩和
  • CorInfo 実装 (CorInfoImpl.ReadyToRun.cs): JIT インターフェースで非同期メソッドのインライン化許可ロジックを更新
  • InliningInfoNode.cs: インライニング情報ノードの処理を調整
  • ILBodyFixupSignature.cs: IL 本体の fixup シグネチャ生成を最適化
  • ReadyToRunCompilationModuleGroupBase.cs: 不要な非同期メソッド制限コードを削除
  • 新規テスト: async-inline-thunks/ ディレクトリにインライン化検証用の包括的なテストスイート追加

パフォーマンスへの影響

await を含まない非同期メソッドのインライン化により、メソッド呼び出しのオーバーヘッドが削減され、コード実行速度が向上します。具体的なベンチマーク結果は提供されていませんが、非同期メソッド呼び出しのコスト削減が期待できます。

関連Issue

#124665

その他

  • 変更は公開 API に影響しない(JIT コンパイラの内部実装に限定)
  • 既存の非同期テスト 69 個すべてが検証済み
  • 実装による影響を確認するため、src/tests/async/execution-context/execution-context.cs の出力が手動検証済み

#123439 Avoid incorrectly resolving a MonoClass for MONO_TYPE_GENERICINST when loading custom attribute values.

  • 作成者: @Venkad000
  • 作成日時: 2026年01月21日 16:51:14(UTC)
  • マージ日時: 2026年04月06日 16:53:44(UTC)
  • ラベル: area-VM-meta-mono community-contribution

概要

Monoランタイムでカスタム属性値を読み込む際に、MONO_TYPE_GENERICINST型に対してm_type_data_get_klass()を無条件に呼び出すことによるクラッシュを修正しました。ジェネリック列挙型インスタンスを含むカスタム属性のデコード時にクラッシュが発生していましたが、この修正によりCoreClrと同じ動作になります。

using System;
using System.Reflection;
using System.Runtime.InteropServices;

var attr = typeof(C).CustomAttributes.Single(d => d.AttributeType == typeof(A));
var arg = attr.ConstructorArguments.Single();
Console.WriteLine(arg.GetType()); // System.Reflection.CustomAttributeTypedArgument

class A : Attribute
{
    public unsafe A(B<delegate*<void>[]>.E e) { }
} 

class B<T>
{
    public enum E { }
}

[A(default)]
unsafe class C { }

変更内容

  • src/mono/mono/metadata/custom-attrs.c: load_cattr_value()関数を修正。MONO_TYPE_GENERICINST型の場合、クラス解決を遅延させ、ジェネリック列挙型インスタンスの基盤となる要素型を明示的に抽出するよう改善(+4/-2行)。

パフォーマンスへの影響

影響なし

関連Issue

#123439

その他

  • この問題はMonoランタイムに限定されており、CoreClrでは発生していません。
  • 修正により、Monoでの動作がCoreClrと一致するようになります。

#121998 Add Join/LeftJoin/RightJoin tuple overloads to LINQ APIs

  • 作成者: @Copilot
  • 作成日時: 2025年11月26日 19:38:44(UTC)
  • マージ日時: 2026年04月06日 13:20:10(UTC)
  • ラベル: area-System.Linq

概要

LINQ の JoinLeftJoinRightJoin に対して、resultSelector ラムダを省略できるタプル返却オーバーロードを追加します。これにより、結合結果をシンプルに取得できます。

使用例:

// Before
foreach (var (s, pair) in keys.Join(dict, k => k, p => p.Value, (outer, inner) => (outer, inner)))
    Console.WriteLine(s + " : " + pair.Key);

// After
foreach (var (s, pair) in keys.Join(dict, k => k, p => p.Value))
    Console.WriteLine(s + " : " + pair.Key);

変更内容

  • System.Linq.Enumerable: Join<TOuter, TInner, TKey>LeftJoin<TOuter, TInner, TKey>RightJoin<TOuter, TInner, TKey> のタプル返却オーバーロードを追加(外部結合は nullable要素を使用)
  • System.Linq.Queryable: Expression ベースの対応するオーバーロードを追加(計3メソッド)
  • System.Linq.AsyncEnumerable: 同期・非同期キーセレクタの両方に対応したオーバーロードを追加
  • すべてのメソッドは IEqualityComparer<TKey>? comparer = null パラメータをサポート
  • 各ライブラリの参照アセンブリとテストを更新

パフォーマンスへの影響

影響なし

関連Issue

#120596

その他

  • 新しいメソッドは公開 API の追加であり、既存コードとの互換性への影響はありません
  • 外部結合(LeftJoinRightJoin)では、マッチしない側の要素は nullable型として返されます
  • AsyncEnumerable では同期キーセレクタ(Func<T, TKey>)と非同期キーセレクタ(Func<T, CancellationToken, ValueTask<TKey>>)の両方に対応

目次