Pull Request on 2026年08月26日

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

注意点

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



#132806 Temporarily disable the Helix Job Monitor

概要

runtimeパイプラインの Helix Job Monitor を一時的に無効化する変更です。Azure DevOps の結果アップロード動作の調査と検証中の間、スタンドアロン Helix Job Monitor を無効にします。検証完了後に復元される予定です。

変更内容

  • eng/pipelines/runtime.yml: enableHelixJobMonitor パイプライン変数を true から false に変更
    • これにより、Build ステージの helix-job-monitor.yml の条件付きインクルードがスキップされます
    • Helix ジョブ送信テンプレートが受け取る useHelixMonitor 変数は false になります

パフォーマンスへの影響

影響なし(Helix Job Monitor の無効化に伴う機能的な変更で、パフォーマンス改善ではなく、テスト/監視インフラの一時的な無効化)

関連Issue

なし

その他

  • この変更は runtime パイプラインのみに限定された一時的なものです
  • 他のパイプラインには影響しません
  • Azure DevOps の結果アップロード動作の検証完了後に復元される予定です

#132793 JIT: don't truncate 64-bit constants in IsConstantInt32Assertion

  • 作成者: @EgorBo
  • 作成日時: 2026年08月26日 18:02:17(UTC)
  • マージ日時: 2026年08月26日 23:07:38(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITコンパイラのIsConstantInt32Assertion()メソッドが64ビット定数を誤ってint32と判定していた問題を修正しました。O2K_CONST_INTはssize_tを格納するため、TYP_LONG定数もマッチしていました。これにより範囲推論時に64ビット定数がint32にキャストされ、誤った最適化が行われていました。修正によりFitsIn<int>チェックを追加し、メソッド名が実装と一致するようにしました。

変更内容

  • compiler.h: IsConstantInt32Assertion()内にFitsIn<int>チェックを追加(+4/-1)
  • Runtime_132784.cs: 64ビット定数を含む回帰テスト追加(+51)
  • Regression_ro_2.csproj: テスト定義に新テスト追加(+1)

パフォーマンスへの影響

影響なし(正確な範囲推論により誤った最適化が排除される改善)

関連Issue

#132784

その他

本修正は範囲推論フェーズ(MergeEdgeAssertionsWorker)での誤った定数キャストによる不正な最適化を防ぎます。64ビット定数アサーションが誤ってint32範囲に縮小されることで、0 - p1が常に0になると"証明"される誤りが生じていました。


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

概要

このPRはVMR(仮想モノリシックリポジトリ)から.NET 11.0.1xxリリースブランチのソースコード変更と依存関係アップデートをruntime リポジトリに反映するコードフロー更新です。Roslyn、Arcade、NuGet、System.Text.Json など複数の主要コンポーネントの最新ビルドが統合されています。

変更内容

  • eng/Version.Details.xml / .props: Microsoft.CodeAnalysis (5.11.0→5.12.0)、Microsoft.DotNet.Arcade.Sdk、Microsoft.NETCore.App.Ref、System.Text.Json、System.Reflection.Metadata、System.CommandLine などの依存関係が新バージョンに更新
  • global.json: .NET SDKバージョンが更新
  • .config/dotnet-tools.json: ツール依存関係の更新
  • eng/common/core-templates: ビルドテンプレート(onelocbuild.yml、publish-logs.yml)の軽微な修正

すべて内部ビルド・インフラの変更で、公開APIへの直接的な影響はありません。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • ビルド情報: Build [20260825.21] (2026年8月26日UTC)、Commit e20a5af9c83aaf22b041bc9911de0cbfff9c7317
  • 対象ブランチ: dotnet/dotnet release/11.0.1xx
  • 複数リポジトリの更新: Arcade、ASP.NET Core、Cecil、Command-Line API、F#、MSBuild、Roslyn、NuGet、EFCore など15以上のリポジトリから変更が統合されています
  • ランタイムツール更新: LLVM、JIT Tools、Wasm.Node.Transport などのプラットフォーム別ランタイムツールも更新

#132755 Improve ILLink test parallelism

概要

ILLink (Mono.Linker) のテストスイートを複数の独立したxUnit test classsに分割し、大規模なtheoriesをシャーディングすることで、並列実行を改善しました。作成者の環境では実行時間が約10.5分から約6.5分に短縮されています。

変更内容

  • TestSuites.cs: 従来は連続実行されていたテストスイートを複数のxUnit test classに分割。各classは共有のLinkerTestSuite基底classから派生し、並列実行を有効化。特に大規模スイート(Attributes、DataFlow、InheritanceInterfaces)はシャード化。
  • TestDatabase.cs: 大規模スイートを複数のtest classに分散するためのMemberDataプロバイダーを追加(AttributeTestsShard、DataFlowTestsShard、InheritanceInterfaceTestsShardなど)。

パフォーマンスへの影響

改善: 約4分の実行時間短縮(約38%削減)。テストの並列化により、シングルスレッド実行時の総実行時間が大幅に改善。

懸念点: Copilotレビューで指摘されているとおり、シャードMemberDataメソッドは入力値の妥当性検証がなく、shardCount == 0で除算エラーが発生する可能性あり。

関連Issue

なし

その他

  • #132755で当該PRが参照されています
  • GitHub Copilotの支援を受けて作成されたPR
  • Copilotレビューからは、以下の改善案が提示されています:
    • シャード化されたtest classの命名に"Shard"接尾辞を追加して、テスト出力の可読性を向上させることが推奨
    • AttributeTestsShard、DataFlowTestsShard、InheritanceInterfaceTestsShardメソッドに入力値検証(shardCount > 0の確認など)を追加することが推奨

#132741 Fix RISC-V JIT opcode format mismatch

概要

RISC-V JIT のコンパイル時に Clang が printf の書式指定エラー(-Wformat)を検出していた問題を修正します。%d フォーマット指定子に対して強い型付けの enum class である MajorOpcode を渡していたため、明示的に int にキャストして型チェックを満たします。

printf("MajorOpcode: %d\n", static_cast<int>(GetMajorOpcode(code)));

変更内容

  • src/coreclr/jit/emitriscv64.cpp (変更: +1行/-1行)
    • GetMajorOpcode(code) の戻り値を int に明示的キャスト
    • 診断出力の機能を保ちながら Clang の書式検証を解決

パフォーマンスへの影響

影響なし

関連Issue

#132730

その他

  • この修正により nightly Compiler Explorer ビルドの Clang コンパイルが正常に完了するようになります
  • RISC-V JIT の診断出力機能そのものは変更されません(出力内容は同じ)

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

概要

OpenSSLバックエンドにおいて、LocalCertificateSelectionCallbackで選択されたTLSクライアント証明書の参照カウントが不均衡になり、メモリリークが発生する問題を修正します。証明書がアップリファレンスされてからダウンリファレンスされずに解放されない状態が発生していました。

変更内容

  • src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.Ssl.cs
    • X509証明書の参照カウント管理ロジックを修正(+12行/-1行)
    • SslStreamのエクストラチェーン証明書処理でダウンリファレンスを適切に実施

パフォーマンスへの影響

メモリ使用量の改善: TLSクライアント証明書に関連するメモリリークが修正されるため、長時間実行されるアプリケーションにおいてメモリ解放が正常に動作するようになります。具体的なベンチマーク数値は提供されていません。

関連Issue

#132351(本体修正)

その他

  • 影響範囲: Unixプラットフォーム上のOpenSSLバックエンドのみ
  • 回帰: .NET 7以降の既知の問題
  • リスク: 中程度〜低程度。既存テストでの失敗がないため信頼性は一定程度ありますが、参照カウント不均衡を直接検証する専用テストはまだ未実装です
  • 検証方法: 状態遷移図に基づいた手動検証済み。今後、より詳細なテストの追加が検討されています

#132715 [browser][coreclr] Flow property values from runtime build to relink

概要

CoreCLR browser-Wasm アプリケーションがネイティブ再リンク時に必要な場合、ランタイムパック構築時の設定値をWebAssembly SDK のMSBuild ターゲットを通じて伝播させる機構を実装しました。JSON トランスポート機構をパッケージ化された .props/.targets ロジックに置き換え、アプリケーション構築時に設定値の不一致を検出します。

変更内容

  • eng/native.wasm.targets: ブラウザホストのデフォルト値と CMake 引数を定義し、RuntimePackValue メタデータを使用して設定不一致を検出(WasmBuildNative を設定/検証)
  • src/mono/browser/build/BrowserWasmApp.CoreCLR.targets: CoreCLR 再リンク動作とネイティブ設定の実装(メモリ設定の伝播を含む)
  • src/native/corehost/browserhost/CMakeLists.txt: 設定可能なブラウザホストメモリ設定の使用
  • src/mono/nuget/Microsoft.NET.Runtime.WebAssembly.Sdk/Microsoft.NET.Runtime.WebAssembly.Sdk.pkgproj: 共有ネイティブターゲットメタデータのパッケージ化
  • src/mono/wasm/Wasm.Build.Tests/CoreCLRWasmNativeDefaultsTests.cs: CoreCLR 再リンク決定の検証テスト追加(159 行)
  • eng/testing/scenarios/BuildWasmAppsJobsListCoreCLR.txt: CoreCLR テストスイート登録
  • Directory.Build.props、Invariant.Tests.csproj: 軽微な調整

パフォーマンスへの影響

懸念事項として、設定不一致の検出ロジックが不要な再リンクをトリガーする可能性があります:

  • EnableDiagnostics=true の場合、ネイティブリンクに変化がなくても emcc 再リンクが発生
  • WasmPerformanceInstrumentation は起動時設定のみであり、ネイティブビルド結果には影響しないが再リンクがトリガーされる

関連Issue

#126100

その他

検証: 新規構築ワークロード SDK パックに対して 18 個の CoreCLRWasmNativeDefaultsTests すべてが合格

レビュー指摘(重大問題):

  1. eng/native.wasm.targets の設定値がランタイムパック構築時のパラメータ値を反映していない(例:BrowserHostStackSize のハードコード化)
  2. BrowserWasmApp.CoreCLR.targets が EmccInitialHeapSize を正規化していない

#132710 [release/10.0] Fix sporadic AccessViolation in compressed single-file apps on Apple Silicon

概要

macOS Apple Silicon上で圧縮単一ファイルアプリケーションの実行時に発生していた散発的なAccessViolationを修正するバックポート。メモリ保護の遷移処理を変更し、PAGE_READWRITE → PAGE_EXECUTE_READWRITEの遷移時にページが非実行のままになる問題に対応しました。

変更内容

  • src/coreclr/vm/peimagelayout.cpp: Apple Silicon (macOS arm64)での圧縮イメージの割り当てと保護戦略を変更。従来の2段階のmprotect方式から、イメージ領域全体をPAGE_NOACCESSで予約してから各セクションを最終的な実行時保護で直接コミットする方式へ変更
  • src/installer/tests/AppHost.Bundle.Tests/AppLaunch.cs: 圧縮単一ファイルアプリケーションの起動テストカバレッジを追加
  • src/installer/tests/Assets/Projects/HelloWorld/Program.cs: 並行するチャイルドプロセス起動テストを追加

パフォーマンスへの影響

影響なし

関連Issue

#112167、#123324、#132627

その他

  • 本修正は既にmainで3ヶ月間運用されており、リスクは低
  • Apple Silicon以外のパスは変更されていない
  • 顧客報告による問題への対応(Customer Impact: ☑ Customer reported)
  • Copilotによるレビューでは、テストのプラットフォーム条件をARM64に限定する必要があるとの指摘あり

#132693 Add WASM PerfMap support: OS/arch constants and correct R2R offsets

概要

WebAssembly(Browser/WASI)ターゲット向けのReadyToRun PerfMap(.ni.r2rmap)生成を有効化するPRです。2つの主要な問題を解決しています:

  1. PerfMapOSTokenにBrowser/Wasiメンバーが、PerfMapArchitectureTokenにWasmメンバーが不足していた
  2. Wasm向けのR2Rメソッドオフセット計算が不正確だった(LEB128圧縮後のセクションオフセットにミスマッチ)

変更内容

  • ReadyToRunDiagnosticsConstants.cs: PerfMapOSTokenにBrowser = 8とWasi = 9を、PerfMapArchitectureTokenにWasm = 7を追加
  • PerfMapWriter.cs: TargetOS.Browser/TargetOS.WasiとTargetArchitecture.Wasm32をPerfMap定数に対応付け
  • WebCilObjectWriter.cs: _outputSectionLayoutをWasm向けに初期化し、Code セクションのモジュールファイルオフセットを記録
  • OutputInfoBuilder.cs: LEB128圧縮前後のオフセットマッピングを構築し、各メソッドノードのオフセット・長さを圧縮後の位置に正確に調整
  • r2r-perfmap-format.md: 既存のOpenBSD/RiscV64/LoongArch64行も含め、トークンテーブルを更新
  • webcil.md: Wasm PerfMapオフセットスキーム(.wasmモジュール開始からの相対バイトオフセット)を記載

パフォーマンスへの影響

影響なし。オフセット計算の正確性改善であり、実行時パフォーマンスへの直接的な影響はありません。

関連Issue

なし

その他

  • 検証済み: 再構築されたwasm crossgen2でSystem.Private.CoreLib.dllを処理した結果、47,731メソッドが生成され、ヘッダートークンはOS=8(Browser)/arch=7(Wasm)/version 1として正しく記録されました。メソッドのRVAは連続・非重複で、圧縮後のオフセット・長さが正確であることを確認しています。
  • 対象読者: ネイティブWasmプロファイラーなど、Wasmモジュール内のコードオフセットでフレームをマッピングするツール。EventPipeおよびdotnet-traceベースのシンボル化は、メソッド読み込みイベントを通じたMVID+メタデータトークンに依存しており、このPerfMapオフセットには依存しません。

#132664 [wasm] Bump chrome for testing - linux: 151.0.7922.173, windows: 152.0.7977.42, mac: 152.0.7977.42

概要

WebAssembly (wasm) テスト環境で使用する Chrome のバージョンを更新するプロパティファイルの更新です。Linux は 151.0.7922.173、Windows と macOS は 152.0.7977.42 にそれぞれ更新されています。

変更内容

  • eng/testing/BrowserVersions.props: Chrome のバージョン定義を更新(+1/-1)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

なし


#132653 [release/10.0] Source code updates from dotnet/dotnet

概要

VMR(Versioned Mono Runtime)からのコードフロー更新PRで、複数のdotnet関連リポジトリからのソースコード変更と依存関係の更新を取り込みます。特に、Microsoft.CodeAnalysisツールチェーン、ビルドタスク、NuGet関連パッケージが更新されており、WebSocket圧縮機能とHttpListener機能の改善が含まれています。

変更内容

  • 依存関係の更新: Microsoft.CodeAnalysis系(5.0.0-2.26411.108→5.0.0-2.26418.103)、Microsoft.DotNet.Arcade.Sdk、ビルドタスク系、NuGet.Frameworks/Packaging/ProjectModel/Versioning(7.0.3-rc.41208→7.0.3-rc.41903)、WebAssemblyランタイムコンポーネントなど複数パッケージを更新
  • System.Net.WebSockets: WebSocketInflaterにメモリ効率を改善する変更を実装(+17行)、リソース文字列を追加、デフレート圧縮テスト(59行)を新規追加
  • System.Net.HttpListener: マネージド実装の改善(+3/-9行)、無効なクライアントリクエストテストを追加
  • EventPipe: EventPipeソケット実装を更新(ds-rt-coreclr.h、ds-ipc-pal-socket.c)
  • ツールチェーン: global.json、Version.Details.props/xml、Versions.propsを更新

パフォーマンスへの影響

影響なし(具体的なベンチマーク数値の記載がないため)

関連Issue

なし

その他

このPRは自動生成されたコードフロー更新(dotnet-maestro[bot]による)で、12リポジトリ(arcade、aspnetcore、efcore、roslyn、runtimeなど)からの変更を集約しています。release/10.0ブランチへの取り込みです。


#132641 [automated] Merge branch 'release/11.0-rc1' => 'release/11.0'

概要

release/11.0-rc1ブランチからrelease/11.0ブランチへの自動マージPRです。github-actionsボットにより生成され、RC1で行われた変更をリリースブランチに同期します。マージコミット形式での統合が必須です。

変更内容

  • ビルド・バージョン管理: global.json、.config/dotnet-tools.json、eng/Version.Details.props/xmlの更新によるSDKバージョン及び依存関係の同期
  • ランタイム:
    • ARM/ARM64/LoongArch64/RISC-V64向けの仮想呼び出しスタブCPU実装の修正(virtualcallstubcpu.hpp、stubs.cpp)
    • minipal threadライブラリの修正
  • ビルドインフラ: eng/common配下の共通テンプレート・スクリプト更新(Get-GitHubAppToken.ps1、helix-job-monitor.yml、post-build.yml、publish-logs.yml)
  • ライブラリ: System.Threading.Channels、System.Data.Common、System.Private.Xmlなど複数ライブラリのテスト修正及び機能更新
  • ツール: illink テストケースの調整

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは自動マージされません。チェック成功後、スクイッシュやリベースではなくマージコミットで統合してください
  • マージ競合が発生した場合は手動で解決が必要です
  • 詳細なマージ手順(UIまたはコマンドライン)はPRの説明に記載されています

#132604 forbid cache entry size changes after it's disposed

概要

MemoryCacheのキャッシュエントリサイズ不正による会計ドリフトの問題を修正します。エントリが破棄された後にICacheEntry.Sizeプロパティが書き込まれると、キャッシュが追跡する合計サイズとの不一致が永続化していた問題を解決するため、破棄後のサイズ変更時にInvalidOperationExceptionをスローするようにしました。

変更内容

  • CacheEntry.cs: ICacheEntry.Size setterに破棄状態チェックを追加し、破棄後のサイズ変更時に例外をスロー
  • MemoryCache.cs: SetEntryメソッドにエントリ破棄前のコミット不変条件を検証するDebug.Assertを追加
  • ICacheEntry.cs: インターフェース仕様ドキュメントを更新し、実装が破棄後のサイズ変更を拒否する可能性があることを明記
  • CacheEntryExtensions.cs: SetSize/SetOptionsの拡張メソッドドキュメントに例外動作を追加
  • Strings.resx: 新しいローカライズ文字列リソースを追加
  • CapacityTests.cs: 破棄後のサイズ変更が例外をスロー・キャッシュサイズを歪めないことを検証するテストを追加

パフォーマンスへの影響

影響なし。本修正は破棄後のサイズ変更を防止することで、キャッシュ会計の正確性を保証し、長期的なメモリリークを防ぎます。

関連Issue

#88733

その他

破壊的変更: 公開APIICacheEntry.Size setterの動作変更です。以前は破棄後のサイズ書き込みを暗黙的に許可していましたが、今後はInvalidOperationExceptionをスローします。既存コードの対応策として、エントリ作成前にサイズを計算するか、GetOrCreateAsyncを使用してファクトリの完了を待ってからエントリをコミットすることが推奨されています。


#132566 [release/11.0] Implement SocketsHttpHandler.InitialHttp2MaxConcurrentStreams

概要

SocketsHttpHandlerにInitialHttp2MaxConcurrentStreamsプロパティを実装し、HTTP/2接続の初期段階での最大同時ストリーム数を制御できるようにしました。これは#132521の.NET 11 RC2へのバックポートです。

変更内容

  • SocketsHttpHandler.cs: InitialHttp2MaxConcurrentStreamsプロパティを追加(公開API)
  • HttpHandlerDefaults.cs: HTTP/2の初期同時ストリーム数のデフォルト値定義を追加
  • HttpConnectionSettings.cs: 設定情報に初期同時ストリーム数フィールドを追加
  • Http2Connection.cs: 接続初期化時に指定された同時ストリーム数を適用するロジックを実装
  • HttpConnectionPool.cs: 接続設定の伝播処理を更新
  • ref/System.Net.Http.cs: 公開API定義を追加
  • SocketsHttpHandlerTest.cs: 新機能の機能テスト164行分を追加

パフォーマンスへの影響

影響なし。この変更は初期段階での制御オプションを提供するもので、デフォルト動作は既存と同じです。

関連Issue

#132457、#132521

その他

  • .NET 11 RC2向けのサービシング承認済み(2026-08-19)
  • release/11.0ブランチへのバックポート
  • 公開APIの追加に伴い、ref/System.Net.Http.csが更新されています

#132453 Mark long-running TrueZip64 tests as outer loop

概要

TrueZip64暗号化テストが4GB以上のエントリを作成・読取するため、ローカルテスト実行時のパフォーマンスが大幅に低下する問題を解決します。該当するテストをOuterLoop属性でマークして、デフォルトのテスト実行対象から除外します。

[OuterLoop("Takes a long time to run locally")]

変更内容

  • src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Encryption.cs
    • 2つの大容量エントリを扱うTrueZip64暗号化テストにOuterLoop属性を追加
    • 既存のSkipOnCI属性は保持(CI環境での動作は変更なし)

パフォーマンスへの影響

デフォルトのローカルテスト実行時間が改善されます。OuterLoopテストは明示的に指定された場合のみ実行されるため、通常のテスト実行時の時間短縮が期待できます。

関連Issue

#132446

その他

なし


#132236 [Wasm RyuJIT] Mark SP/FP delta computation helpers as unused

概要

WebAssembly RyuJITバックエンド向けにスタックポインタ/フレームポインタのデルタ計算ヘルパーメソッドを実装しました。これまでのNYI(Not Yet Implemented)スタブを置き換え、フレーム相対オフセット計算(アンワインド/スタックレイアウトロジック用)が正常に機能するようになります。

具体的な変更内容:

  • genCallerSPtoInitialSPdelta() を実装(固定線形メモリフレームサイズに基づく)
  • genCallerSPtoFPdelta() を実装(既存のデルタ関係を利用)
  • genSPtoFPdelta() は0を返すように実装(Wasmフレームモデルに準拠)

変更内容

src/coreclr/jit/codegenwasm.cpp

  • NYI_WASM()スタブを削除し、SP/FPデルタ計算ヘルパーメソッドを実装
  • genCallerSPtoInitialSPdelta():-genTotalFrameSize()に基づいた戻り値を返却
  • genCallerSPtoFPdelta():既存のデルタ関係を使用して計算
  • 各実装に対して値が負数の範囲内であることを確認するassertを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

命名規則の統一:callerSPToInitialSPDeltaからcallerSPtoInitialSPdeltaへの変更により、他のバックエンド実装との一貫性が向上し、コード検索や比較が容易になります。これはコード内部実装の改善であり、公開APIには影響しません。


目次