Pull Request on 2026年09月07日

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

注意点

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



#133340 Update container image digests

概要

dotnet-buildtools/prereqs コンテナイメージの digest を自動更新するPRです。ビルドとテスト用の依存コンテナイメージが25個更新されています。このPRは .NET Renovate Bot により自動生成されました。

変更内容

  • eng/pipelines/common/templates/pipeline-with-resources.yml: 1つのコンテナイメージ digest を更新
  • eng/pipelines/coreclr/templates/helix-queues-setup.yml: 10個のコンテナイメージ digest を更新
  • eng/pipelines/installer/helix-queues-setup.yml: 4個のコンテナイメージ digest を更新
  • eng/pipelines/libraries/helix-queues-setup.yml: 22個のコンテナイメージ digest を更新

すべての変更は mcr.microsoft.com/dotnet-buildtools/prereqs イメージのダイジェスト値の更新です。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 自動更新PR(dotnet/arcade の Renovate ボット)
  • 内容確認後のマージが必要です

#133333 Share ListBuilder between CoreCLR and native AOT

  • 作成者: @Copilot
  • 作成日時: 2026年09月07日 03:30:09(UTC)
  • マージ日時: 2026年09月07日 12:37:40(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

ListBuilder<T>実装をCoreClrとNativeAOT間で共有し、コードの重複を排除するリファクタリングです。メモリ効率を考慮したListBuilder<T>をsharedなCoreLibソースに移動し、両ランタイムで統一の実装を使用するようにしました。Monoはこれまで通り独立した実装を保持します。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/ListBuilder.cs: 共有されるListBuilder<T>実装を新規追加(88行)
  • src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems: 非Monoランタイム向けに共有実装をインクルード
  • src/coreclr/System.Private.CoreLib/src/System/RuntimeType.CoreCLR.cs: ネストされた実装を削除(81行削除)
  • src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Runtime/General/ListBuilder.cs: NativeAOTの重複実装を削除(97行削除)
  • src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs: 共有型への参照を更新
  • その他のファイル: NativeAOT内の不要な古いインポートを削除

パフォーマンスへの影響

影響なし。既存の動作を保持しながら実装の統一を図るリファクタリングのため、パフォーマンス特性に変化はありません。

関連Issue

なし

その他

  • 内部実装(ListBuilder<T>)の共有化であり、公開APIへの変更はありません
  • 互換性への影響はありません
  • Monoランタイムは独立した実装を保持しており、このPRの影響外です

#133306 Fix RuntimeAsyncApis in non-JIT modes

概要

非JITモード(Interpreter実行時)でのRuntimeAsyncApisプロファイラテストの動作を修正するPRです。ReadyToRunキャッシュ検索時にJITコンパイルを要求し、ネイティブコードマッピングを提供できないInterpreter実行をスキップします。

変更内容

  • runtimeasyncapis.csproj: マネージドテストプロジェクトにInterpreterIncompatibleマークを追加し、ネイティブ/ILマッピングデータが利用できないInterpreter実行を回避
  • runtimeasyncapisprofiler.h: キャッシュ検索コールバック(JITCachedFunctionSearchStarted/Finished)と追跡カウンターの宣言を追加
  • runtimeasyncapisprofiler.cpp: COR_PRF_MONITOR_CACHE_SEARCHESを有効化し、キャッシュされたネイティブコードの使用をveto、JIT生成コードのマッピング検証を実装。ネイティブコード検証をValidateTargetCodeにリファクタリング

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

⚠️ 注意: Copilotレビューで、JITCachedFunctionSearchStartedコールバックが全実行パスで[out]パラメータ(pbUseCachedFunction)を設定していないという問題が指摘されています。これはコールバック契約違反となるため、マージ前に修正が必要です。


#133285 Fix ILVerify validation of static virtual method delegates

概要

ILVerifyツールにおいて、静的仮想メソッドデリゲート検証時の不正な検証エラーを修正します。デリゲート作成時の非最終仮想メソッドチェックから静的メソッドを除外し、抽象メソッドに対する制約なしldftnを拒否するようにします。

変更内容

  • ILImporter.Verify.cs: 非最終仮想メソッド検証ロジックを修正。静的メソッドをチェック対象から除外し、抽象メソッドへのldftn操作を適切に拒否。
  • PrefixTests.il: 回帰テストを追加(+41行)。静的仮想メソッドデリゲートおよび抽象メソッドに関連するテストケースを実装。

パフォーマンスへの影響

影響なし

関連Issue

#133238

その他

なし


#133268 JIT: fix range assertions for bypassed phi blocks

  • 作成者: @EgorBo
  • 作成日時: 2026年09月04日 22:10:03(UTC)
  • マージ日時: 2026年09月07日 18:40:31(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITのレンジチェック解析において、ジャンプスレッディングによってPhi関連ブロックが迂回された後に発生する古いアサーション情報に依存する問題を修正します。アサーションのマージをComputeRangeForLocalDef内部から使用サイト(MergeAssertion)に移動することで、ローカル変数の範囲計算の正確性を改善します。

変更内容

  • rangecheck.h: ComputeRangeForLocalDef関数シグネチャからBasicBlock*パラメータを削除
  • rangecheck.cpp: アサーションマージの責務をComputeRangeForLocalDef内部から呼び出し側のMergeAssertionに移動(ローカル変数パス)
  • Runtime_133267.cs: 最適化下で誤ってArgumentExceptionをスローするJITの誤りを検出する回帰テストを追加
  • Regression_ro_2.csproj: 新しい回帰テストをro_2テストスイートに登録

パフォーマンスへの影響

ローカル変数についてMergeAssertionの呼び出しが既存の呼び出しサイトで冗長になる可能性があり、JITコンパイル時間に対する軽微な影響が懸念されています。

関連Issue

#133267

その他

本PRはJITの範囲/アサーション統合動作に関わるコンパイラ正確性の領域を変更するため、Copilotレビュアーはローカルビルド/テストによる検証が必要と指摘しています。修正前の不具合は、古いPhi関連ブロックのアサーション情報がジャンプスレッディング後も残存し、不正な最適化につながること(#133267で報告されたミスコンパイル)です。


#133250 [release/10.0] Improve PemEncoding.TryFind perf with degenerate inputs

概要

PemEncoding.TryFindメソッドのパフォーマンスを改善するバックポート。不正な形式のPEMデータ(例:"-----")を入力した場合、Base64デコード処理で不必要なCPU時間を費やしていた問題を解決しました。

変更内容

  • PemEncoding.cs(Microsoft.Bcl.CryptographyおよびSystem.Security.Cryptography両ライブラリ)

    • TryFindメソッドのアルゴリズムを改善
    • 不正なBase64データの検出処理を高速化(+52行/-19行)
  • PemEncodingFindTests.cs(両ライブラリのテスト)

    • デジェネレート入力(不正形式のPEMデータ)に対するパフォーマンステストを追加
    • 既存機能の回帰がないことを確認

パフォーマンスへの影響

  • 改善率: デジェネレート入力に対して10倍以上の高速化を実現
  • 既存の正常なPEMデータ処理については回帰なし
  • 特に不正形式のデータが頻繁に渡される環境での効果が大きい

関連Issue

#133137(元のPR)

その他

  • 顧客報告に基づいた改善
  • 既存テストで機能回帰がないことを確認済み
  • リスクレベル:低(テストカバレッジが充実)
  • release/10.0ブランチへのバックポート

#133248 Implement wasm JumpStubNode with signature-matched argument forwarding

概要

WebAssembly AOT コンパイルで、アドレス取得対象メソッドのジャンプスタブ実装を追加しました。これにより、NotImplementedException が発生していた Wasm スタブ生成が機能するようになり、ターゲットメソッドのシグネチャを保持したまま引数をすべて転送して制御を移譲できるようになります。

for (int i = 0; i < signature.Params.Types.Length; i++)
{
    expressions.Add(Local.Get(i));
}
expressions.Add(ControlFlow.Call(_target));
encoder.FunctionBody = new WasmFunctionBody(signature, expressions.ToArray());

変更内容

  • WasmInstructions.cs: return_call オペコードとヘルパーメソッド追加(内部実装)
  • WasmJumpStubNode.cs: JumpStubNode.EmitCode の Wasm 実装を追加。lowered WasmFuncType を計算し、各パラメータに対して local.get を発行してターゲットを呼び出す
  • AddressTakenMethodNode.cs: IMethodCodeNodeWithTypeSignature インターフェース実装を追加し、Wasm スタブ生成時にメソッドシグネチャ情報を伝搬
  • WasmLowering.cs: Wasm 用の lowering フラグ処理ロジック追加(49行追加)
  • JumpStubNode.cs: Wasm 向けの改善(内部実装)
  • WasmObjectWriter.cs / CorInfoImpl.ReadyToRun.cs: 重複コード削減

パフォーマンスへの影響

影響なし。シグネチャ伝搬の最適化は AOT コンパイル段階のみで、実行時のオーバーヘッドはありません。

関連Issue

#133247

その他

互換性に関する注記:

  • Copilot レビューにより、return_call(テールコール提案の opcode)を使用しており、テールコール機能を有効にしていない WebAssembly ランタイムでの互換性問題の可能性が指摘されています
  • WasmLowering.GetLoweringFlags() が非ゼロの callConv フラグビット(例:HASTHIS)をすべてアンマネージドとして扱う可能性があり、マネージド呼び出しで不正確な lowered シグネチャが生成される懸念が報告されています

#133233 [release/10.0] [Android] Disable X509 name-constraint violation tests on Android

概要

Android環境でX509名前制約違反テストが失敗するため、該当テストをAndroidで無効化する変更です。これはrelease/10.0ブランチへのバックポート(#128892)です。

変更内容

  • src/libraries/System.Security.Cryptography/tests/X509Certificates/DynamicChainTests.cs
    • X509名前制約違反に関するテストにAndroid環境を除外する条件を追加(+4行)
    • CI環境でのテスト失敗を回避する目的の変更

パフォーマンスへの影響

影響なし

関連Issue

#128892

その他

  • テスト無効化のみの変更(製品コードへの影響なし)
  • Android環境のプラットフォーム固有の問題に対する対応

#133228 JIT: Sharpen condition to avoid preserving call definition targets in continuations

概要

JITコンパイラの非同期呼び出し時の継続状態キャプチャを最適化するPRです。EH(例外処理)領域内で完全に定義されたローカル変数について、その前の値を保存する条件をシャープにしました。EH後続ブロックまで生存しているローカル変数のみを保存することで、通常フローでのみ使用される結果一時変数の冗長な継続状態キャプチャを回避します。ASP.NETのSocketConnection.DoSendなど、ホットパスでの不要なローカル変数キャプチャを削減できます。

変更内容

  • AsyncTransformation::IsCallDefLiveInEHSuccヘルパーメソッドを追加し、呼び出し定義されたローカル変数のEH後続ブロック内での生存性をクエリできるようにしました(async.h、async.cpp)
  • CreateLiveSetForSuspensionを更新し、完全定義されたローカル変数をEH後続ブロックへの生存性がある場合のみ継続状態に含めるようにしました
  • 関連するJITDUMP診断出力を調整しました

パフォーマンスへの影響

改善(継続状態削減):ホットパスでの不要なローカル変数のキャプチャを回避することで、継続状態サイズを削減し、メモリフットプリントとコンテキストスイッチコストを改善します。

関連Issue

なし

その他

Copilotレビュアーから、IsCallDefLiveInEHSuccヘルパー関数のコメント精度向上の指摘があります。未追跡/アドレス公開ローカル変数に対しては保守的にtrueを返すことが明記されていないため、この動作をコメントで明確化することが推奨されています。マージ前にドキュメント修正が必要です。


#133226 Remove custom-attribute fallback for property default values

  • 作成者: @Copilot
  • 作成日時: 2026年09月04日 07:29:30(UTC)
  • マージ日時: 2026年09月07日 01:47:58(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOTのプロパティデフォルト値処理をCoreClRと統一するため、カスタム属性フォールバックを削除し、プロパティデフォルト値をメタデータ定数のみに限定します。パラメータ属性フォールバックロジックはローカルに移動され、共有ヘルパーは削除されます。

変更内容

  • NativeFormatRuntimePropertyInfo.cs: プロパティのデフォルト値取得時のカスタム属性フォールバック機能を削除
  • NativeFormatMethodParameterInfo.cs: パラメータ属性フォールバックロジック(86行追加)をローカルに実装
  • DefaultValueParser.cs: 共有ヘルパーの一部を削除(11行削除)
  • Helpers.cs: 不要な共有ヘルパー関数を削除(108行削除)

パフォーマンスへの影響

影響なし

関連Issue

#133226

その他

破壊的変更: カスタム定数属性のみがデフォルト値源のプロパティについて、GetConstantValue()/GetRawConstantValue()は例外をスロー(従来は属性値を返却)するため、動作が変更されます。リポジトリプロセスに従い、破壊的変更ドキュメントの追加が必要とCopilotから指摘されています。


#133198 [release/11.0] Source code updates from dotnet/dotnet

概要

.NET 11.0リリースブランチへのコードフロー更新です。VMR(Visual Studio Manifest Repository)から dotnet/dotnet リポジトリの変更を同期しています。主に依存パッケージのバージョン更新とビルド関連の設定変更が含まれています。

変更内容

  • バージョン管理ファイル: eng/Version.Details.props、eng/Version.Details.xml、global.json を更新(ビルド2026年9月3日版)
  • 依存パッケージ更新:
    • Microsoft.CodeAnalysis 関連: 5.12.0-1.26426.102 → 5.12.0-1.26453.107
    • Microsoft.DotNet.Arcade.Sdk 他ビルドタスク: 11.0.0-beta.26426.102 → 11.0.0-beta.26453.107
    • NuGet.* パッケージ: 7.11.0-rc.42702 → 7.12.0-rc.45407
    • System.Text.Json、System.Reflection.Metadata 他ランタイムパッケージ: 11.0.0-rc.2.26426.102 → 11.0.0-rc.2.26453.107
    • LLVM ツール(複数プラットフォーム対応): 23.1.0-alpha.1.26420.1 → 23.1.0-alpha.1.26451.1
  • ツールチェーン更新: .config/dotnet-tools.json のドット ツール バージョン更新
  • ビルド設定: eng/common/Get-GitHubAppToken.ps1 の軽微な修正、Helix Job Monitor テンプレートの追加
  • プロパティファイル: CrossGen2 関連プロパティと dotnet-host プロジェクト設定の更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは自動化されたコードフロー更新(dotnet-maestro[bot])です
  • 11.0.1xxリリースブランチからの同期です
  • 複数の関連リポジトリ(arcade、aspnetcore、efcore、roslyn、msbuild、sdk など)からの変更を含みます
  • 内部実装のビルド・ツール周りの更新が主体で、パブリックAPI変更はありません

#133196 [main] Update dependencies from dnceng/internal/dotnet-optimization

概要

dotnet-optimization内部リポジトリから最適化関連の依存関係を更新するAutomated Dependency Updateです。MIBC(Mitigating Indirect Branch Cache)ランタイム最適化データと PGO(Profile-Guided Optimization)CoreCLR最適化プロファイルを複数のプラットフォーム向けに更新します。

変更内容

  • eng/Version.Details.props: 依存関係バージョン定義を更新(+6/-6行)
  • eng/Version.Details.xml: 依存関係メタデータを更新(+12/-12行)

更新される依存関係(1.0.0-prerelease.26407.1 → 1.0.0-prerelease.26451.1):

  • optimization.linux-arm64.MIBC.Runtime
  • optimization.linux-x64.MIBC.Runtime
  • optimization.windows_nt-arm64.MIBC.Runtime
  • optimization.windows_nt-x64.MIBC.Runtime
  • optimization.windows_nt-x86.MIBC.Runtime
  • optimization.PGO.CoreCLR

影響範囲: ランタイム最適化データ(内部実装)。これらは公開APIではなく、ビルド時の実行時ランタイム最適化に使用される最適化プロファイルです。

パフォーマンスへの影響

ランタイム実行時のパフォーマンス最適化(MIBC/PGO最適化データの更新による)が見込まれます。具体的な改善数値は提供されていません。

関連Issue

なし

その他

  • 自動依存関係更新(dotnet-maestro[bot]作成)
  • Build日時: 2026年9月1日 20:16:43 UTC
  • マルチプラットフォーム対応(Linux ARM64/x64、Windows NT ARM64/x64/x86)

#133114 [automated] Merge branch 'release/8.0' => 'release/8.0-staging'

概要

release/8.0ブランチの変更をrelease/8.0-stagingブランチへマージする自動化PR。vseanreesermsftによるコミットをstaging環境に取り込みます。

変更内容

  • NuGet.config: NuGet設定ファイルの更新(1行追加、1行削除)
  • eng/Version.Details.xml: バージョン詳細情報の更新(4行追加、4行削除)
  • eng/Versions.props: バージョンプロパティファイルの更新(3行追加、3行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは自動マージされず、チェック完了後に手動でマージコミット(squashやrebaseではなく)で統合する必要があります
  • マージ時に競合が発生した場合は、手動での解決が必要となります
  • GitHub UIまたはコマンドラインのいずれでもマージ可能です

#133102 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'

概要

release/9.0ブランチからrelease/9.0-stagingブランチへの自動マージPRです。vseanreesermsftによるコミットをステージングブランチに統合します。

変更内容

  • NuGet.config: NuGet設定ファイルの更新(+1/-3行)
  • eng/Version.Details.xml: 依存関係のバージョン情報を更新(+50/-50行)
  • eng/Versions.props: プロジェクトのバージョンプロパティを更新(+26/-26行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは自動生成されたマージコミットPRです。マージコミット形式(squashやrebaseではなく)での統合が必須です。マージ前に全ての checks が通過する必要があります。マージコンフリクトが発生した場合は手動で解決してください。


#132937 [wasm] Bump chrome for testing - linux: 152.0.7977.64, windows: 153.0.8010.12, mac: 153.0.8010.12

概要

WebAssembly (wasm) テスト用のChromium Webブラウザのバージョンをアップデートしました。Linux環境では152.0.7977.64に、Windows/Mac環境では153.0.8010.12にそれぞれ更新します。

変更内容

  • eng/testing/BrowserVersions.props: Chromiumのテスト用バージョン定義を更新
    • Linux: 152.0.7977.64
    • Windows: 153.0.8010.12
    • macOS: 153.0.8010.12

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 自動更新PR(github-actions[bot]による)
  • テスト環境のブラウザバージョン管理用の定義ファイルの更新のため、実行時やコンパイラの動作には影響しません

#132829 [browser] Fix WebAssembly publish output path message

概要

WebAssemblyブラウザ(wasmbrowser)発行時のコンソール出力メッセージを改善し、汎用的なpublish/ディレクトリではなく、実際に提供可能なアプリケーションが配置されるpublish/wwwroot/ディレクトリを明示するようにしました。ネストされた発行による重複メッセージは抑制されます。

出力例:

Before:
app -> bin/Release/net8.0/publish/

After:
app -> bin/Release/net8.0/publish/
app (wwwroot) -> bin/Release/net8.0/publish/wwwroot/

変更内容

  • Microsoft.NET.Sdk.WebAssembly.Browser.targets: ビルドおよび発行フェーズでwwwroot出力ディレクトリを示す高優先度MSBuildメッセージを追加。ネストされた発行時には抑制される仕様。
  • WasmTemplateTests.cs: 新しい(wwwroot)出力ディレクトリメッセージがビルドおよび発行出力に各フェーズで正確に1回出現することを検証するテストを追加。

パフォーマンスへの影響

影響なし

関連Issue

#99292

その他

  • dotnet/sdk (#55963) との関連変更あり。SDK側では従来のBlazer 6.0の_BlazorCopyFilesToOutputDirectory出力メッセージを削除予定。
  • 注記(Copilot指摘): テストおよびビルドメッセージで相対パスと絶対パスの混在が指摘されており、パス形式の一貫性に問題がある可能性があります。ビルドメッセージは$(TargetDir)(フルパス)を使用していますが、発行メッセージは$(OutputPath)(相対パス)から正規化されているため、コンソール出力が相対と絶対で混在する懸念が報告されています。

#132760 [release/10.0] Fix X509 reference leak in SslStream extra chain certificates on Unix

概要

OpenSSLバックエンドを使用するUnix環境で、LocalCertificateSelectionCallbackで選択されたTLSクライアント証明書(X509)がアップリファレンスとダウンリファレンスのバランスが取れていない問題を修正します。この不均衡により証明書がメモリから解放されず、リークが発生していました。.NET 7の2022年版から発生している回帰です。

変更内容

  • src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.Ssl.cs: SslStreamの追加チェーン証明書処理におけるX509参照カウント管理を修正。アップリファレンスのバランスを取るためのダウンリファレンス処理を追加(+12行)

パフォーマンスへの影響

メモリリーク修正により、TLSハンドシェイク時の不要な証明書保持による間接的なメモリ効率化。直接的なパフォーマンス改善数値なし。

関連Issue

#132351

その他

  • 顧客報告: 確認済み
  • リスク評価: 中程度(既存テストでは失敗していないが、参照カウント完全性の専用テストが現在ないため、リスクが完全に排除されていない)
  • 修正の正確性は状態遷移図のウォークスルーで検証済み
  • 将来的に専用テストの追加に関する検討あり

#130588 JIT: Elide transitive array bounds checks

  • 作成者: @EgorBo
  • 作成日時: 2026年07月12日 21:47:30(UTC)
  • マージ日時: 2026年09月07日 18:42:01(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITコンパイラの配列境界チェック最適化を拡張し、推移的な符号なし関係を通じて冗長な境界チェックを削除できるようにしました。例えば、index < size <= items.Lengthというパターンで、最初の条件が満たされれば2番目の境界チェックは不要となり、生成コードサイズを48バイトから23バイトに削減します。

static int Test(int[] items, int size, int index)
{
    // size-VN <= checked-bound-length-VN
    // size-VN u> checked-bound-index-VN
    // の2つのアサーションが作成される
    if ((uint)size <= (uint)items.Length && (uint)index < (uint)size)
    {
        return items[index];
    }
    return 0;
}

変更内容

  • assertionprop.cpp: 符号なしVN間チェック境界アサーション(LE_UN)の作成を有効化し、推移的チェーンに参加可能なアサーションを生成
  • rangecheck.cpp: MergeEdgeAssertionsWorkerを拡張して符号なしVN間関係の推移的推論をサポート。チェック境界制限を保持しながらVNチェーンを追跡
  • compiler.h、valuenum.cpp、valuenum.h: アサーション伝播とVN管理のための関連インフラを更新
  • テスト: ElidedBoundsChecks.csに新規テストメソッドを追加して推移的境界チェック削除を検証

パフォーマンスへの影響

  • 生成コードサイズ削減: 48バイト → 23バイト(示例で約52%削減)
  • 懸念点: MergeEdgeAssertionsWorker内の再帰パスが再帰予算(budget)をデクリメントしていないため、多くのアサーションを含むブロックでコンパイル時間が増加する可能性あり

関連Issue

#121795

その他

  • 非自明なJIT最適化であり、アサーション伝播と範囲解析に広範な影響を持つため、マージ前に保守者による詳細なレビューとパフォーマンス検証が推奨されます
  • Copilotレビュアーは予算管理の潜在的な問題を指摘しており、再帰予算の処理を検討する必要があります

目次