Pull Request on 2026年08月27日

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

注意点

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


目次

  1. #132847 Temporarily disable Helix Job Monitor
  2. #132837 [release/11.0] Fix "Bad IL range" when applying a hot reload update without FEATURE_REJIT
  3. #132818 Fix "Bad IL range" when applying a hot reload update without FEATURE_REJIT
  4. #132795 JIT: Fix empty-block cycle hang
  5. #132794 Document async validation cancellation contract
  6. #132790 [release/10.0] Source code updates from dotnet/dotnet
  7. #132781 Remove redundant s_calls counter in async regression test
  8. #132770 Invalidate SmtpClient cached connection when connection-affecting properties change
  9. #132764 Add message template formatting to DataAnnotations validation attributes
  10. #132737 Fix ConcurrentQueue.TryDequeue spuriously reporting empty during a segment freeze
  11. #132701 Extend Zstandard SmallestSize test fallback to Apple mobile platforms
  12. #132684 [release/10.0] Update dependencies from dotnet/xharness
  13. #132683 [release/9.0-staging] Update dependencies from dotnet/xharness
  14. #132679 [release/9.0-staging] Update dependencies from dotnet/arcade
  15. #132658 Optimize AsyncLocal maps with many entries
  16. #132649 [release/9.0-staging] Update dependencies from dotnet/roslyn
  17. #132645 [release/11.0] Restore TPA duplicate precedence to keep managed DLLs over native EXEs
  18. #132487 JIT: relaxed early ir checks
  19. #132383 [release/8.0-staging] Update dependencies from dotnet/xharness
  20. #132271 Fix JSON schema nullability for readonly properties
  21. #131746 Arm64-SVE: Fixes for returning Vector<T> through the return buffer
  22. #131494 Migrate CLR->COM stubs to transient IL
  23. #130695 Remove dead net9 code

#132847 Temporarily disable Helix Job Monitor

  • 作成者: @garath
  • 作成日時: 2026年08月27日 18:39:23(UTC)
  • マージ日時: 2026年08月27日 18:49:18(UTC)
  • ラベル: area-Infrastructure

概要

Azure DevOps(ADO)の負荷軽減を目的として、複数のAzure PipelinesテンプレートでenableHelixJobMonitorフラグをtrueからfalseに変更し、Helix Job Monitorを一時的に無効化します。この変更はビルド・テスト実行時のモニタリング機能に影響を与えます。

変更内容

  • 影響範囲: eng/pipelines/配下の44個のYAMLファイルでenableHelixJobMonitorをfalseに設定
    • runtime系パイプライン(runtimelab、runtime-wasm、runtime-llvm、runtime-android等)
    • coreclr系パイプライン(ci、crossgen2、gcstress、r2r等)
    • libraries系パイプライン(outerloop、outerloop-mono)
  • 変更内容: 各パイプライン定義でenableHelixJobMonitor: falseに統一
  • 性質: 設定変更のみで、ランタイムコードやコンパイラ実装への影響なし

パフォーマンスへの影響

Azure DevOps側の負荷軽減が期待される。ただし、Helix Job Monitorの無効化により、ビルドおよびテスト実行時の監視・ロギング機能が低下する可能性あり。

関連Issue

dnceng/internal#12380

その他

本変更は「一時的」とされており、将来的な復旧が予定されている可能性があります。ADO負荷の状況改善後の復帰フローが別途追跡される見込み。


#132837 [release/11.0] Fix "Bad IL range" when applying a hot reload update without FEATURE_REJIT

概要

ホットリロード更新を適用する際に、FEATURE_REJITが有効でない環境で「Bad IL range」エラーが発生する問題を修正します。このPRは#132818のrelease/11.0へのバックポートです。

変更内容

  • src/coreclr/vm/codeversion.cpp: 5行削除
    • ホットリロード処理時のILレンジ検証ロジックの修正

パフォーマンスへの影響

影響なし

関連Issue

#132818

その他

  • 本PRはリリースブランチ(release/11.0)へのバックポート
  • テスト内容や詳細な修正内容は元のPR#132818を参照が必要
  • ホットリロード機能に関連する内部実装(CoreCLR VM)の修正

#132818 Fix "Bad IL range" when applying a hot reload update without FEATURE_REJIT

概要

JIT非搭載プラットフォーム(iOS、tvOS、Mac Catalyst、WASM)でFEATURE_REJITが無効な場合、ホットリロード(Edit and Continue)時にILコード版の解決が失敗し、"Bad IL range"例外が発生する問題を修正します。CodeVersionManager::GetILCodeVersion()が常にデフォルトILバージョンを返していたため、EnC で作成された非デフォルトバージョンを正しく検出できていませんでした。

変更内容

  • src/coreclr/vm/codeversion.cpp
    • CodeVersionManager::GetILCodeVersion(PTR_MethodDesc, ReJITID)のFEATURE_REJIT条件付きコードブロックを削除
    • rejitId == 0(デフォルト版)の場合は早期リターンで既存動作を保持
    • FEATURE_REJITが無効でも、ILCodeVersionCollection経由で非デフォルトバージョンのルックアップが可能になるよう修正

パフォーマンスへの影響

影響なし

関連Issue

#132804 dotnet/macios#26470

その他

  • この変更はホットリロード機能を完全に失灰させるリグレッションを修正するもので、iOS/tvOS/Mac Catalystのテストが無効化されていた状況を解消します
  • FEATURE_METADATA_UPDATER(ホットリロード)は有効でもFEATURE_REJITが無効な構成に対応し、非デフォルトILコード版は ReJIT 固有ではないという実装原則を正す修正です

#132795 JIT: Fix empty-block cycle hang

概要

JIT最適化処理で無限ループが発生する問題を修正しました。fgOptimizeBranchToEmptyUnconditionalが2ブロックの空サイクルのみを検出していた制限を解除し、エッジリダイレクト前に任意のサイズの空の無条件サイクルを検出するように改善しました。これにより、フロー最適化が正常に終了するようになります。

変更内容

  • src/coreclr/jit/fgopt.cpp: 空の無条件サイクル検出ロジックを拡張(25行追加、6行削除)
  • src/tests/JIT/Regression/JitBlue/Runtime_132785/Runtime_132785.cs: 回帰テストケース追加(55行追加)
    • AggressiveOptimization属性を使用してFullOpts実行時の動作確認
  • src/tests/JIT/Regression/Regression_ro_2.csproj: 共有JIT回帰テストランナーへのテスト登録(1行追加)

パフォーマンスへの影響

影響なし。この変更は無限ループ問題の修正であり、コンパイル時の無限ハング状態を解消するものです。

関連Issue

#132785

その他

  • CoreCLR および libraries ビルド確認済み
  • 回帰テストは修正前のJITでハング、修正後のJITでパス確認
  • Regression_ro_2ビルドおよびjit-formatチェック完了
  • 内部実装(JITコンパイラの最適化パス)の変更のため、公開APIへの影響なし

#132794 Document async validation cancellation contract

概要

AsyncValidationAttributeの非同期検証におけるキャンセレーション契約をドキュメント化する変更です。実装者に対して、キャンセレーション要求時にすぐに処理を停止する必要があることを、呼び出し元に対しては検証期間を制限する方法を説明するコメントを追加しています。

変更内容

  • src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/AsyncValidationAttribute.cs
    • IsValidAsyncメソッドに<remarks>セクションを追加:実装がキャンセレーション要求時にすぐに処理を停止する必要があることを説明
    • GetValidationResultAsyncメソッドに<remarks>セクションを追加:同様の動作仕様と、タイムアウト設定されたキャンセレーショントークンの使用を推奨

パフォーマンスへの影響

影響なし

関連Issue

#132705(このドキュメント変更はそのフォローアップ)

その他

  • ドキュメントのみの変更であり、実装ロジックの変更はなし
  • 既存テストスイートは全て合格(System.ComponentModel.Annotations.Tests: 984 passed、Options関連テスト合計656 passed)
  • 公開APIの契約仕様を明確化する変更

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

概要

このPull Requestは、dotnet/dotnetリポジトリからのコードフロー更新です。release/10.0ブランチに対する依存関係の更新とソースコードの同期を行っています。主にMicrosoft.CodeAnalysis、Microsoft.DotNet系のビルドツール、NuGet関連パッケージなどの複数の依存関係がアップデートされています。

変更内容

  • eng/Version.Details.xml・eng/Version.Details.props: 複数の依存関係バージョンの更新
    • Microsoft.CodeAnalysis系: 5.0.0-2.26418.103 → 5.0.0-2.26424.122
    • Microsoft.DotNet.* 関連ビルドツール: 10.0.0-beta.26418.103 → 10.0.0-beta.26424.122
    • NuGet.Frameworks/Packaging/ProjectModel/Versioning: 7.0.3-rc.41903 → 7.0.3-rc.42522
    • その他System.Text.Json、System.Reflection.Metadata等の維持
  • NuGet.config: NuGetフィード設定の更新
  • global.json: SDK/ツールバージョン情報の更新
  • eng/common/core-templates/job/onelocbuild.yml: ローカライゼーションビルドテンプレートの調整

パフォーマンスへの影響

影響なし(依存関係の更新と設定ファイルの同期のみ)

関連Issue

なし

その他

  • このPRはコードフロー自動更新です(dotnet-maestroボット実行)
  • 複数のリポジトリ(arcade、aspnetcore、cecil、efcore、emsdk、razor、roslyn、runtime、sdk等)から同期されたコミット群を含みます
  • release/10.0.1xxブランチからの同期で、2026年8月25日時点のビルド(#328477)に対応しています

#132781 Remove redundant s_calls counter in async regression test

  • 作成者: @jakobbotsch
  • 作成日時: 2026年08月26日 13:41:35(UTC)
  • マージ日時: 2026年08月27日 08:45:32(UTC)
  • ラベル: area-VM-coreclr

概要

非同期リグレッションテスト Runtime_132017 で使用されていた冗長な s_calls カウンターを削除します。このカウンターは await の後でインクリメントされるため、fire-and-forget の Print と await された Print が非アトミックなインクリメントで競合し、間欠的なテスト失敗を引き起こしていました。テストの意図する動作は既に存在する s_log の順序付けられたアサーションで十分に検証されています。

変更内容

  • s_calls 静的フィールドの削除
  • s_calls のリセット/インクリメント処理の削除
  • Assert.Equal(2, s_calls) アサーションの削除
  • s_log の既存の順序付けアサーションで意図した動作の検証を継続

パフォーマンスへの影響

影響なし(テストコードの簡潔化のため)

関連Issue

#132731

その他

この変更はテストの信頼性を向上させます。複数のタスクが同期されるテストシナリオにおいて、非アトミックなカウンター操作による競合状態を排除することで、テスト実行の安定性が改善されます。


#132770 Invalidate SmtpClient cached connection when connection-affecting properties change

  • 作成者: @rzikm
  • 作成日時: 2026年08月26日 09:05:10(UTC)
  • マージ日時: 2026年08月27日 09:11:27(UTC)
  • ラベル: area-System.Net

概要

SmtpClientがキャッシュしたSmtpConnectionを再利用する際、接続に関連するプロパティの変更後も古い接続が使用され続ける問題を修正しました。プロパティ変更時にキャッシュを無効化し、次の送信時に新しい設定で接続を再確立するようになりました。

変更内容

  • SmtpClient.cs: Host、Port、Credentials、UseDefaultCredentials、EnableSsl、TargetNameプロパティのセッターにキャッシュ無効化ロジックを追加。プロパティ変更時にSmtpTransportをstale状態にマーク(非ブロッキング)
  • SmtpTransport.cs: _staleフラグをvolatileとして追加。GetConnectionAsync内で遅延的にstale接続を中止して置換。Host変更時にデフォルトTargetName(SMTPSVC/<host>)も更新
  • SmtpClientConnectionTest.cs: 接続プロパティ変更が新規接続を確立することを検証するテストを追加(Host、Credentials、TargetNameの変更テスト、複数サーバーへのルーティング確認など)
  • SmtpClientTlsTest.cs: EnableSsl変更後の暗号化接続再確立テストを追加

パフォーマンスへの影響

プロパティセッターはstale フラグの設定のみ(非ブロッキング)で処理。接続の実際の中止・再確立は次の送信時にGetConnectionAsync内で遅延実行されるため、セッター実行時のブロッキング回避。プロパティ値が変更されない場合は通常の接続再利用が維持される。

関連Issue

#132770

その他

  • 送信中のプロパティ変更はInvalidOperationException (SmtpInvalidOperationDuringSend)をスロー。無効化と送信のレース状態を回避
  • Send、SendAsync、SendMailAsyncの3つの送信パスで検証
  • volatileキーワードにより、複数スレッド環境でのstale フラグの可視性を保証(マルチスレッドでの接続再利用防止)
  • PR作成者はGitHub Copilot

#132764 Add message template formatting to DataAnnotations validation attributes

概要

DataAnnotations検証属性に新しい公開API ValidationAttribute.FormatMessage を追加し、呼び出し元が外部でローカライズされた複合形式文字列を供給できるようにしました。各検証属性は自身のプレースホルダー引数の提供を担当し、既存の FormatErrorMessage の動作は変わりません。

public virtual string FormatMessage(
    [StringSyntax("CompositeFormat")] string format, 
    string name)

変更内容

  • ValidationAttribute.cs: 新しい仮想メソッド FormatMessage を追加し、基本 FormatErrorMessage 実装をこのメソッドを通じてルーティング
  • 各検証属性のオーバーライド: CompareAttribute、FileExtensionsAttribute、LengthAttribute、MaxLengthAttribute、MinLengthAttribute、RangeAttribute、RegularExpressionAttribute、StringLengthAttribute で FormatMessage をオーバーライド
  • 既存プレースホルダー順序の保持: 複数のプレースホルダー(例:{1}、{2})を必要とする属性は、既存の引数順序と CurrentCulture フォーマット動作を維持
  • 参照定義の更新: System.ComponentModel.Annotations.cs の公開APIサーフェスを更新
  • テストカバレッジ拡充: 仮想ディスパッチ、カルチャ対応フォーマッティング、無効な形式、null引数を含む包括的なテストを追加

パフォーマンスへの影響

影響なし

関連Issue

#132605

その他

  • すべてのテスト(1,008件)が成功:コンパイル警告0、エラー0
  • Microsoft.Extensions.Options生成コードのベースラインも更新されており、新しいAPI利用による生成コードの変更に対応
  • 新しい FormatMessage メソッドは [StringSyntax("CompositeFormat")] で注釈されており、IDEでの複合形式文字列の検証をサポート

#132737 Fix ConcurrentQueue.TryDequeue spuriously reporting empty during a segment freeze

概要

ConcurrentQueue.TryDequeueが、セグメントフリーズ時にストアの順序による競合状態により、実際には要素を含むセグメントを誤って空と報告する問題を修正しました。修正により、Tailの更新をフラグの公開前に実行することで、デキュー時の三つの可能なペアリングすべてにおいて正確な判定を保証します。

変更内容

  • ConcurrentQueueSegment.cs: EnsureFrozenForEnqueues内で_frozenForEnqueuesフラグの公開順序を変更。Tail をFreezeOffsetだけ先に更新してから、_frozenForEnqueues = trueを公開するように修正(7行追加、5行削除)。
  • ConcurrentQueueTests.cs: セグメントフリーズ時の偽の空報告を検証するテストケースを追加(45行追加)。

パフォーマンスへの影響

直接的なパフォーマンス低下はありません。修正前は128M操作あたり約100回の偽の空報告が発生していた問題が解決され、TryDequeueの信頼性が向上します。フリーズ後のデキュー操作は確定的な結果を返すようになり、スピンリトライの対象シナリオは正当な競合状態(Tail更新中の読み取り)に限定されます。

関連Issue

#132736

その他

修正の核心は、メモリ順序の問題です:Interlocked.Addは全フェンスを保証しますが、スレッドが二つのストア操作の間で停止可能であり、その停止窓でデキュースレッドが古いTail値と新しいフラグ値を観測する可能性がありました。Tailを先に更新することで、フラグが見える時点では常にTail値も更新済みとなり、デキューのロジックが正確に機能します。


#132701 Extend Zstandard SmallestSize test fallback to Apple mobile platforms

概要

tvOSなどのメモリ制約のあるAppleモバイルプラットフォームで、CompressionLevel.SmallestSizeがZstdの最高品質モード(800MB以上のワーキングメモリ必要)を使用することによりOutOfMemoryExceptionが発生する問題を修正します。テストのみの変更で、製品コードには影響ありません。

変更内容

  • CompressionStreamUnitTests.Zstandard.cs: ZstdテストストリームファクトリのSmallestSizeからOptimalへの落ち戻し条件を拡張
    • 既存の32ビットプロセスの条件に加えて、PlatformDetection.IsAppleMobileがtrueの場合も落ち戻しを適用
    • 両方のCreateStream(Stream, CompressionLevel)オーバーロードに一貫して適用
    • 条件: if ((PlatformDetection.Is32BitProcess || PlatformDetection.IsAppleMobile) && level == CompressionLevel.SmallestSize)

パフォーマンスへの影響

影響なし(テストのみの変更)

関連Issue

#132459

その他

このPRはテストの安定性向上を目的とした変更で、AppleモバイルプラットフォームにおけるZstandardの圧縮テストでOutOfMemoryExceptionの間欠的な発生を防ぎます。


#132684 [release/10.0] Update dependencies from dotnet/xharness

概要

dotnet/xharness の依存関係を更新するMaestroによる自動PR。Microsoft.DotNet.XHarness関連パッケージを11.0.0-prerelease.26413.1から11.0.0-prerelease.26419.1へアップグレード。

変更内容

  • eng/Version.Details.xml: xharnessビルド情報とコミットハッシュの更新(26413.1→26419.1)
  • eng/Version.Details.props: Microsoft.DotNet.XHarness.CLI、TestRunners.Common、TestRunners.Xuinitパッケージのバージョン更新
  • .config/dotnet-tools.json: dotnet-toolsの設定ファイル更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • これはMaestroの自動依存関係更新PR(dotnet-maestro[bot]による自動作成)
  • release/10.0ブランチへの更新
  • 変更日時: 2026年8月19日 UTC(テスト日時の記録)

#132683 [release/9.0-staging] Update dependencies from dotnet/xharness

概要

dotnet/xharnessの依存関係を更新するPull Requestです。Microsoft.DotNet.XHarness関連のパッケージを11.0.0-prerelease.26413.1から11.0.0-prerelease.26419.1にアップデートしました。

変更内容

  • .config/dotnet-tools.json: dotnet-toolsの構成ファイルを更新(1行追加、1行削除)
  • eng/Version.Details.xml: バージョン詳細情報を更新(6行追加、6行削除)
    • Microsoft.DotNet.XHarness.CLI
    • Microsoft.DotNet.XHarness.TestRunners.Common
    • Microsoft.DotNet.XHarness.TestRunners.Xunit
  • eng/Versions.props: バージョンプロパティを更新(3行追加、3行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 本更新は自動化されたdotnet-maestro[bot]による依存関係更新です
  • xharnessコミット: 8dd9b8e6004e22c7b120af0631f0809865ff2088
  • 構成変更のみで、ランタイムコード自体への直接的な変更はありません

#132679 [release/9.0-staging] Update dependencies from dotnet/arcade

概要

dotnet/arcadeの依存関係を更新するPull Requestです。arcadeパッケージが9.0.0-beta.26420.3から9.0.0-beta.26423.5へ、XUnitパッケージが2.9.0-beta.26420.3から2.9.0-beta.26423.5へそれぞれアップグレードされています。

変更内容

  • eng/Version.Details.xml: arcadeおよびXUnitの依存バージョンを更新(Microsoft.SourceBuild.Intermediate.arcade、Microsoft.DotNet.Arcade.Sdk、Microsoft.DotNet.Build.Tasks.*シリーズ、Microsoft.DotNet.CodeAnalysis、Microsoft.DotNet.GenAPI/GenFacades、Microsoft.DotNet.Helix.Sdk、Microsoft.DotNet.PackageTesting、Microsoft.DotNet.RemoteExecutor、Microsoft.DotNet.SharedFramework.Sdk、Microsoft.DotNet.VersionTools.Tasks、Microsoft.DotNet.XliffTasks、Microsoft.DotNet.XUnitExtensions、Microsoft.DotNet.XUnitAssert、Microsoft.DotNet.XUnitConsoleRunnerの計21パッケージ)
  • eng/Versions.props: バージョン定義を更新
  • eng/common/core-templates/job/onelocbuild.yml: ビルド設定テンプレートを微調整
  • global.json: グローバル設定を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

自動化されたMaestro依存関係更新PRです。release/9.0-stagingブランチ向けの定期的な依存関係アップデートです。


#132658 Optimize AsyncLocal maps with many entries

概要

ManyElementAsyncLocalValueMapの内部実装を最適化し、Dictionary<IAsyncLocal, object?>を不変なキー/値配列、バケット配列、衝突チェーン配列に置き換えました。既存値の更新ではキー/値配列のみをクローンし、ルックアップ配列は共有します。16要素以下のマップは既存実装を維持します。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Threading/AsyncLocal.cs: ManyElementAsyncLocalValueMapのデータ構造をDictionary から不変配列ベースのハッシュテーブルに変更。キーの追加・削除時は新しいルックアップ配列を構築し、既存値の更新時はキー/値配列のクローンと既存ルックアップ配列の共有により効率化。

パフォーマンスへの影響

17要素以上のマップにおいて大幅な改善:

既存値の書き込み(17要素以上):

  • 17要素: 3.9倍高速化(164.11ns → 41.95ns)
  • 64要素: 5.9倍高速化(460.82ns → 78.27ns)
  • 256要素: 8.6倍高速化(1,793.85ns → 208.47ns)
  • メモリ割り当て削減: 42~50%

読み取り性能(17要素以上):

  • 17要素: 21%向上(6.256ns → 4.951ns)
  • 64要素: 23%向上(6.276ns → 4.853ns)
  • 256要素: 22%向上(6.246ns → 4.858ns)

16要素以下の実装は変更なし、パフォーマンスへの影響なし。

関連Issue

なし

その他

内部実装の変更のみで公開APIへの影響はありません。ランタイムのコアライブラリ(System.Private.CoreLib)の内部最適化です。16~17要素の境界での表現形式の切り替えは既存テスト(AsyncLocalTests)で検証済みです。ルックアップ配列は不変で参照を共有する設計のため、マルチスレッド環境での安全性が担保されています。


#132649 [release/9.0-staging] Update dependencies from dotnet/roslyn

概要

dotnet/roslynの依存関係を更新するPull Requestです。Roslyn 4.12.0-3.26417.1から4.12.0-3.26423.8へのバージョン更新が含まれています。

変更内容

  • eng/Version.Details.xml: Roslyn関連の依存関係バージョン情報を更新(+8/-8行)
  • eng/Versions.props: バージョン定義を更新(+3/-3行)

更新対象の依存関係:

  • Microsoft.SourceBuild.Intermediate.roslyn
  • Microsoft.CodeAnalysis
  • Microsoft.CodeAnalysis.CSharp
  • Microsoft.Net.Compilers.Toolset

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 更新元:dotnet/roslyn release/dev17.12ブランチ
  • ビルド日時:2026年8月23日 10:46:19 UTC
  • Maestroの自動依存関係更新PR(dotnet-maestro[bot]による作成)
  • このPRは .NET 9.0のリリース準備ブランチ(release/9.0-staging)への更新です

#132645 [release/11.0] Restore TPA duplicate precedence to keep managed DLLs over native EXEs

概要

.NET 11でランタイムを直接ホストするシナリオにおいて、マネージドDLLがネイティブEXEより優先されるべきというTPA(Trusted Platform Assemblies)の重複優先順位を復元する変更。VS debugger xplatビルドの起動失敗(エラーコード 0x80070002)を修正します。

変更内容

  • src/coreclr/binder/applicationcontext.cpp: TPA重複チェックロジックを修正し、マネージドアセンブリが優先される順序を復元(+4行、-1行)

パフォーマンスへの影響

影響なし

関連Issue

#132589(オリジナルPR) #122643(回帰の原因PR)

その他

  • 本PRはrelease/11.0へのバックポート
  • 対象ブランチがrelease/11.0で正しい(.NET 10以上は-staging不要)
  • リスク度:低(以前の動作の復元)
  • 影響範囲:coreclrを直接ホストするシナリオのみ(nethost経由のホスティングシナリオは影響なし)
  • 手動検証済み:修正を含むランタイムでVS debuggerの動作を確認

#132487 JIT: relaxed early ir checks

概要

JITコンパイラの初期段階(最初の5フェーズ)でIRフラグ検証を有効化し、「緩和」セマンティクスを導入しています。余分なフラグは許容しつつ不足しているフラグではアサーション発生させます。また、フラグが適切に伝播していなかった箇所を修正し、NewObjArrayArgsローカル変数のリサイズ時にGTF_USE_ASGフラグが必要になる問題に対応しています。

変更内容

  • compiler.cpp/compiler.h: CHECK_IR_RELAXEDフェーズチェック種別を追加し、初期フェーズで緩和IR検証を有効化
  • fgdiagnostic.cpp: 余分なIRフラグを許容する緩和チェックロジックを実装し、IRExtraFlagsメトリクスで余分フラグ数をカウント
  • phase.cpp: 各フェーズでの余分フラグ増分をレポート
  • jitmetadatalist.h: IRExtraFlagsメトリクスをJITメトリクスリストに追加
  • importercalls.cpp: 呼び出しノードのサイドエフェクトフラグ伝播を改善(GTF_ALL_EFFECTに拡張)
  • importer.cpp: NewObjArrayArgsのリサイズ回避のため必要に応じて新しいテンプを割り当て、一部のミューテーション後にサイドエフェクトを更新
  • hwintrinsic.cpp/gentree.cpp/fgprofile.cpp: 内在関数やSIMD操作、プロファイリング計測後にサイドエフェクトフラグを更新

パフォーマンスへの影響

影響なし(検証・メトリクス収集のみで、最適化挙動に変更なし)

関連Issue

なし

その他

このPRはIRフラグの一貫性向上を目指すもので、余分フラグをメトリクスとして追跡することで、将来的にこれらをゼロに削減する基礎を構築しています。内部実装変更であり、公開APIへの影響はありません。


#132383 [release/8.0-staging] Update dependencies from dotnet/xharness

概要

dotnet/xharnessからの依存関係を自動更新するPull Requestです。Microsoft.DotNet.XHarness.CLI、Microsoft.DotNet.XHarness.TestRunners.Common、Microsoft.DotNet.XHarness.TestRunners.Xunitが11.0.0-prerelease.26370.1から11.0.0-prerelease.26419.1にアップデートされます。

変更内容

  • .config/dotnet-tools.json: XHarnessツールバージョンの更新(1行変更)
  • eng/Version.Details.xml: 依存関係の詳細バージョン情報の更新(6行変更)
  • eng/Versions.props: プロパティファイルのバージョン定義の更新(3行変更)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 自動依存関係更新(dotnet-maestroによる)
  • 2026年8月19日のビルド(Build ID: 20260819.1)に基づく更新
  • release/8.0-stagingブランチへの更新

#132271 Fix JSON schema nullability for readonly properties

概要

System.Text.JsonのJsonSchemaExporterにおけるnullability推論を修正しました。読み取り専用プロパティやreadonly フィールドのスキーマnullability判定が、存在しないアクセッサ(getterやsetter)を不正にnullableとして扱っていた問題に対応しています。スキーマnullabilityは利用可能なアクセッサ(getter/setter)のみを考慮するように調整されました。

変更内容

  • JsonSchemaExporter.cs: nullability判定ロジックを改善。getterが存在する場合のみIsGetNullableを、setterが存在する場合のみIsSetNullableを参照するように修正
  • JsonSchemaExporterTests.TestTypes.cs: 読み取り専用プロパティとreadonlyフィールドのスキーマ生成に関する回帰テストと新しいテスト用POCOを追加
  • JsonSchemaExporterTests.cs: テスト追加(詳細は変更内容に含まれていないため不明)

パフォーマンスへの影響

影響なし

関連Issue

#131602

その他

本修正は将来的な根本的な修正(IsGetNullableとIsSetNullableの基礎値の修正)までの暫定的な対応と位置づけられており、関連Issueは開いたまま保持されています。RC1向けの簡便な解決策です。


#131746 Arm64-SVE: Fixes for returning Vector<T> through the return buffer

概要

ARM64-SVE環境におけるVector<T>の戻り値処理を修正するもので、以下の2つの改善を行います:

  1. 戻り値バッファがTYP_SIMDの場合、デバッグ情報を無効化(AOT環境でのスタックオフセット計算が不正確になるため)
  2. ローカル変数がTYP_SIMDの場合、隠れた戻り値バッファ最適化を無効化(フルベクトル呼び出し規約サポート時に不要になるため先制的に対応)

変更内容

  • src/coreclr/jit/codegencommon.cpp (+8):TYP_SIMDを含む戻り値バッファのデバッグ情報を無効化する処理を追加
  • src/coreclr/jit/lclmorph.cpp (-1):隠れた戻り値バッファ最適化の適用条件にTYP_SIMDチェックを追加

パフォーマンスへの影響

影響なし(デバッグ情報の無効化と最適化の制限により、正確性向上が優先されている)

関連Issue

なし

その他

  • 変更の性質:内部実装(JITコンパイラの最適化パス)
  • 影響範囲:ARM64-SVE環境での戻り値処理、AOT/JIT両方に関連
  • 破壊的変更:なし

#131494 Migrate CLR->COM stubs to transient IL

概要

CLR→COMスタブをTransient IL技術に移行し、メモリとパフォーマンスを改善。従来はCOM importメソッドごとに独立したILStubResolverとDynamicMethodDescを割り当てていたのに対し、本変更ではマーシャリングILをCLRToCOMCallMethodDescに直接生成してJIT後に破棄。これにより秘密引数の必要性が消滅し、スタックフレームが削減される。

変更内容

  • Transient IL生成 (dllimport.cpp, clrtocomcall.cpp): CLRToCOMCall::CreateCLRToCOMCallMethodILで各メソッドのILを生成し、MethodDesc::TryGenerateTransientILImplementationを経由。DoPrestubが通常のPrepareInitialCode経由でルーティング
  • 秘密引数廃止 (dllimport.h, stubhelpers.cpp): インターフェース型やCOMスロット情報をJIT時に固定値として埋め込み。PInvokeStubLinker::m_pStubContextMDとStubHelpers.GetComInterfaceFromMethodDesc FCall削除
  • デバッガ対応 (stubmgr.cpp, stubmgr.h): 新規CLRToCOMStubManagerを実装し、Early-bound/Late-bound/イベント呼び出しのステップ実行をサポート
  • クリーンアップ (method.hpp, comdelegate.cpp): 使用不可能なDynamicMethodDesc::StubCLRToCOMInterop等の削除、デリゲートパスの未到達コード削除
  • バグ修正 (corelib.h): VALIDATE_OBJECTとVALIDATE_BYREFのバインダシグネチャ不一致を修正(P/Invoke pinned local時のアサート修正)
  • テスト追加 (ComImportUnimplementedMethod): マネージドクラスが[ComImport]インターフェースを実装していない場合のTypeLoadException検証

パフォーマンスへの影響

  • メモリ削減: IL用の別途DynamicMethodDescとILStubResolverの割り当てが廃止
  • フレーム削減: 秘密引数コンテキスト経由の間接呼び出しが廃止され、スタックフレームが削減
  • 最適化機会向上: 固定値埋め込みにより、JITが指数情報を利用した最適化が可能

関連Issue

#126330、#126509、#127400、#123411

その他

  • 互換性: ILStubTypeの廃止値は予約済み。cDACが旧ランタイム解析に対応するため、RuntimeTypeSystem_1.csは意図的に未変更
  • DAC対応: CLRToCOMStubManagerをPInvokeスタブマネージャをモデルに実装
  • 検証: x64/x86チェックビルド、Interopテスト73/73パス、DOTNET_InteropValidatePinnedObjects=1下で全パス確認

#130695 Remove dead net9 code

概要

.NET 9用のデッドコードを削除するPRです。PR #121853によりNetCoreAppMinimumがnet10に変更されたため、net9固有の条件付きコンパイルコードが不要になりました。System.Text.Jsonライブラリから該当コードを削除します。

変更内容

  • System.Text.Json.csproj: net9関連の条件定義を削除(+1/-1)
  • JsonObject.IDictionary.cs: net9向けのデッドコード削除(0/-5)
  • JsonObject.cs: net9向けのデッドコード削除、関連ロジック簡潔化(+1/-22)

パフォーマンスへの影響

影響なし(デッドコード削除のため、機能的な変更はありません)

関連Issue

なし

その他

この変更は内部実装レベルの整理で、公開APIや動作に対する影響はありません。ネットワーク標準以上のフレームワークをターゲットとしている環境では、コード複雑度の軽減により保守性が向上します。


目次