Pull Request on 2026年09月03日

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

注意点

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


目次

  1. #133172 [main] Update dependencies from dotnet/runtime-assets
  2. #133162 [release/10.0] Don't pass empty string as SNI to QUIC
  3. #133160 [release/8.0] Don't pass empty string as SNI to QUIC
  4. #133158 [release/9.0] Don't pass empty string as SNI to QUIC
  5. #133157 [release/11.0] Fix MemoryCache OTEL size units and improve tag name
  6. #133155 [release/11.0] Don't pass empty string as SNI to QUIC
  7. #133154 [release/11.0] Wire the job monitor flag through YAML correctly
  8. #133151 Fix MemoryCache OTEL size units and improve tag name
  9. #133143 Cross-build browser WASM performance host tools
  10. #133134 Run browser wasm runtime tests with ReadyToRun
  11. #133132 Fix Wasm SCC profile weights for #133120
  12. #133118 [release/10.0] Fix Crossgen2 variance validation for type constraints
  13. #133109 Fix NativeAOT thread-static debug info
  14. #133107 Fix finalizer fail-fast when unadvising reused COM event sinks
  15. #133105 Avoid xcodebuild probe error without Xcode during NativeAOT
  16. #133103 [WIP] Fix assertion failed during remove empty try-catch-fault
  17. #133100 Fix SIMD primitive zero initialization
  18. #133097 Don't pass empty string as SNI to QUIC
  19. #133095 JIT: Include method name in Release disassembly footer
  20. #133091 [release/10.0] Implement SocketsHttpHandler.InitialHttp2MaxConcurrentStreams
  21. #133084 [release/10.0] Use lock-free reads for ETW rundown versions
  22. #133078 [release/9.0] Detect ephemeral client cert key via SEC_E_UNKNOWN_CREDENTIALS in QUIC
  23. #133074 [release/10.0] Source code updates from dotnet/dotnet
  24. #133068 Remove redundant rolling build pipeline parameter
  25. #133062 [release/9.0-staging] [S.T.J] Fix PropertyRef.Equals
  26. #133061 [release/10.0] [S.T.J] Fix PropertyRef.Equals
  27. #133055 [release/8.0] Update dependencies from dotnet/emsdk
  28. #133053 [release/10.0] Use acquire reads for cast cache entries
  29. #133049 Release ThreadStore lock before blocking for shutdown
  30. #133042 Fix TextInfo.ToTitleCase Dutch IJ digraph and U+2019 apostrophe handling
  31. #133013 Document that PhysicalFilesWatcher can watch paths that don't exist
  32. #132997 [release/11.0] Run full Mono mobile library tests
  33. #132995 [release/8.0-staging] Update dependencies from dotnet/arcade
  34. #132974 [release/10.0] Detect ephemeral client cert key via SEC_E_UNKNOWN_CREDENTIALS in QUIC
  35. #132900 Check for SIG_IGN and SIG_DFL before calling previous signal handler
  36. #132897 [release/10.0] Fix ConcurrentQueue.TryDequeue spuriously reporting empty during a segment freeze- #132737
  37. #132859 Fix generic virtual dispatch hang after multiple AssemblyLoadContext unloads
  38. #132850 JIT: stop EnableExtraSuperPmiQueries from changing what gets compiled
  39. #132814 Implement TentativeMethodNode for WASM
  40. #132783 [release/11.0] Don't report unsupported types for never bound properties
  41. #132782 [release/10.0] Fix hang in InvalidClientRequestTests by guarding oversized Content-Length cases to managed implementation
  42. #132740 Reactivate closed-issue Extensions tests
  43. #132732 [mono][interp] Preserve nullable boxing for GetType
  44. #132706 Publish the cDAC usage graph package
  45. #132689 Update container image digests
  46. #132673 [release/10.0] Fix concurrent Reflection.Emit TypeLoadException (#129230)
  47. #132650 Make wasm composite ReadyToRun images inspectable with R2RDump
  48. #132522 [release/11.0] [mono][wasm][AOT] Pin OP_MOVE destinations in the GC pin area
  49. #132420 Route QCall exceptions through marshalling
  50. #132407  Fix DeflateStream retaining stale buffer reference after write failure mid-operation
  51. #132159 [release/9.0] Update dependencies from dotnet/emsdk
  52. #131928 [release/10.0] Fix profiler spurious/corrupt transition callbacks for reverse P/Invoke marshaling stubs.
  53. #131927 [release/10.0] [mono][interp] Fix miscompile of self-assignment via newobj with alised byref args. (#131586)
  54. #131509 Improve managed ilasm test coverage
  55. #131398 Add regression test for expired self-signed trusted chain (#48794)
  56. #130842 Generate less metadata for generic compositions

#133172 [main] Update dependencies from dotnet/runtime-assets

概要

dotnet/runtime-assetsからの依存パッケージを自動更新するPull Requestです。テストデータやランタイム関連アセットを含む16個のパッケージが、バージョン11.0.0-beta.26403.1から11.0.0-beta.26426.1へ更新されました。

変更内容

  • eng/Version.Details.props: 依存パッケージのバージョン情報を更新
  • eng/Version.Details.xml: 依存パッケージの詳細情報を更新

更新対象パッケージ(すべて11.0.0-beta.26403.1 → 11.0.0-beta.26426.1):

  • Microsoft.DotNet.CilStrip.Sources
  • Microsoft.DotnetFuzzing.TestData
  • Microsoft.NET.HostModel.TestData
  • System.ComponentModel.TypeConverter.TestData
  • System.Data.Common.TestData
  • System.Drawing.Common.TestData
  • System.Formats.Tar.TestData
  • System.IO.Compression.TestData
  • System.IO.Packaging.TestData
  • System.Net.TestData
  • System.Private.Runtime.UnicodeData
  • System.Runtime.Numerics.TestData
  • System.Runtime.TimeZoneData
  • System.Security.Cryptography.X509Certificates.TestData
  • System.Text.RegularExpressions.TestData
  • System.Windows.Extensions.TestData

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本PR は dotnet-maestro[bot] による自動依存関係更新です(Subscription ID: 0c5a34f5-504e-413b-9376-08d8d8ff2d75)。更新は2026年8月26日時点のruntime-assetsコミット13b701d371に基づいています。


#133162 [release/10.0] Don't pass empty string as SNI to QUIC

概要

MsQuic への QUIC クライアント接続時に空文字列の SNI (Server Name Indication) を渡さないようにする修正。Linux 上で QUIC/HTTP/3 接続を確立する際、TargetHost が指定されていない場合に空文字列を SNI として渡すことで MsQuic が TLS エラーを発生させていた問題に対応します。RFC 6066 に準拠し、IP リテラルなど SNI が不適切な場合も null ポインタを渡すように改善されました。

変更内容

  • src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs
    • クライアント接続開始時の SNI ハンドリングを更新
    • TargetHost/host が未指定の場合に string.Empty を SNI として合成しないように変更
    • SNI が null または空でない場合のみ、非管理 UTF-8 にマーシャリングして MsQuic に渡す
    • SNI が不要な場合は null ポインタを MsQuic に渡す
    • CoTaskMem の割り当てが行われなかった場合の解放処理を回避

パフォーマンスへの影響

影響なし

関連Issue

#133096、#133097 のバックポート

その他

  • MsQuic の更新に伴う回帰修正(MsQuic は QUIC サポートの軽量な依存関係)
  • 内部で発見された問題で、TargetHost が未指定の場合に Linux 上で QUIC/HTTP/3 接続が確立できない状況に対応
  • 変更は小規模で理解しやすく、リスク評価は低い
  • CI における関連テストの成功を確認済み

#133160 [release/8.0] Don't pass empty string as SNI to QUIC

概要

MsQuic相互運用層で空文字列のSNI値をQUIC接続開始時に送信しないようにする修正。Linux環境でターゲットホスト名を指定しないとQUIC/HTTP/3接続が確立できない問題(#133096)をfix。MsQuicアップデートによる回帰を解決する。

変更内容

  • src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs
    • ConnectionStart呼び出し時にSNI値を計算する際、IP-literalやアドレス文字列へのフォールバックを廃止
    • SNIが不要な場合は空文字列の代わりにnull(IntPtr.Zero経由)を渡すよう修正
    • バッファの割り当てがある場合のみ解放するよう修正

パフォーマンスへの影響

影響なし

関連Issue

#133096、#133097(本PR は#133097の.NET 8へのバックポート)

その他

  • 回帰は「はい」であり、MsQuicのアップデートによって発生した問題
  • 変更は小規模で理解しやすく、リスクは低い
  • 影響を受けるテストはCI上で成功確認済み
  • 内部発見の問題(カスタマー報告ではない)
  • 公開API:System.Net.Quicの接続確立処理(内部実装の修正)

#133158 [release/9.0] Don't pass empty string as SNI to QUIC

概要

MsQuicの更新によるリグレッション修正。QUIC接続時にホスト名が不明またはIPリテラルの場合、空文字列ではなくnullポインタをSNI(Server Name Indication)として渡すようにしました。これにより、Linuxでホスト名を指定せずにQUIC/HTTP/3接続を確立できないという問題を解決します。

変更内容

  • src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs
    • SNIが空文字列の場合、string.Emptyをデフォルト値として使用しない
    • SNIがnon-emptyの場合のみUTF-8にマーシャル、空の場合はIntPtr.ZeroをMsQuicに渡す
    • メモリ解放時に空SNIの場合は解放スキップ

パフォーマンスへの影響

影響なし

関連Issue

#133096

その他

  • これは#133097のrelease/9.0-stagingへのバックポート
  • MsQuic更新による内部リグレッション(顧客報告ではなく内部発見)
  • 変更規模が小さく理解しやすいため、リスク評価は低
  • 影響を受けるテストはCI上で成功確認済み

#133157 [release/11.0] Fix MemoryCache OTEL size units and improve tag name

概要

MemoryCacheのOpenTelemetry(OTEL)計測における単位の修正とタグ名の改善。OTEL標準に準拠するため、メモリサイズの単位を修正し、タグ名の命名規則を改善しています。

変更内容

  • MemoryCache.cs: OTEL計測でのメモリサイズ単位の修正とタグ名の改善(4行追加、4行削除)
  • MemoryCacheMetricsTests.cs: OTEL単位とタグ名の変更に対応するテストの更新(2行追加、2行削除)

パフォーマンスへの影響

影響なし。計測の仕様変更のみで、ランタイムパフォーマンスに直接的な影響はありません。

関連Issue

#133151

その他

  • 本PRは.NET 11.0リリースブランチへのバックポート版です
  • 内部で検出されたもので、顧客報告ではありません
  • リスク評価:低(OTEL名称・識別子の変更のみ、新機能)
  • Microsoft.Extensions.Caching.Memoryライブラリの公開APIの変更ではなく、計測メタデータの修正です

#133155 [release/11.0] Don't pass empty string as SNI to QUIC

概要

QUIC接続でSNI(Server Name Indication)として空文字列が渡されるのを防ぐ修正。Linux環境でのQUICおよびHTTP/3接続確立時に、ホスト名検証がスキップされる問題を解決します。これはMsQuicライブラリの更新に伴う回帰です。

変更内容

  • System/Net/Quic/QuicConnection.cs:SNI値のバリデーション追加。空文字列をSNIとして渡さないようにチェックロジックを追加(+6/-3)

パフォーマンスへの影響

影響なし

関連Issue

#133097(元のPull Request)

その他

  • 本変更はrelease/11.0ブランチへのバックポート
  • MsQuic更新に伴う回帰対応のため、リスク評価:低
  • 影響を受けるテストはCI上で成功確認済み
  • 内部検出の修正(カスタマーレポート前の対応)

#133154 [release/11.0] Wire the job monitor flag through YAML correctly

概要

Helix job-monitor フラグ(enableHelixJobMonitor)の伝播をYAMLパイプラインで修正するバックポートです。release/11.0ブランチにおいて、テンプレート内部の変数アクセスに依存するのではなく、useHelixMonitorパラメータを明示的にテンプレート間で伝播させることで、フラグの一貫性を確保します。

変更内容

  • ラッパーパイプライン(11ファイル): runtime-wasm*.yml、runtime-android*.yml、runtime-ioslike*.yml、runtime-maccatalyst.ymlなど各プラットフォーム別パイプラインで、useHelixMonitor: ${{ variables.enableHelixJobMonitor }}を extra-platforms テンプレートに明示的に渡すように変更
  • runtime-extra-platforms.yml: 受け取ったuseHelixMonitorパラメータを各プラットフォーム別の extra-platforms テンプレートに伝播
  • extra-platforms テンプレート(7ファイル): useHelixMonitorをパラメータとして定義し、下流の Helix-send テンプレートに明示的にワイヤリング
  • PAL Tests テンプレート: run-paltests-step.ymlにuseHelixMonitorパラメータを追加し、send-to-helix-step.ymlに転送;coreclr/ci.ymlから供給

パフォーマンスへの影響

影響なし(構成変更のみ)

関連Issue

#133002(本修正のオリジナルPR)

その他

  • 本PRはrelease/11.0へのバックポートです
  • 変更はビルドパイプライン/CI設定に限定され、ランタイムコード変更なし
  • テンプレートパラメータの明示的なワイヤリングにより、変数スコープの問題を回避し、パイプラインの可保守性を向上

#133151 Fix MemoryCache OTEL size units and improve tag name

概要

Microsoft.Extensions.Caching.Memory の OpenTelemetry メトリクスメタデータを semantic conventions に準拠するよう更新しました。キャッシュリクエスト結果を示すタグ名を変更し、推定サイズメトリクスの単位をバイト("By")からアプリケーション定義単位("1")に修正しています。

変更内容

  • MemoryCache.cs: dotnet.cache.requests メトリクスのタグキーを dotnet.cache.request.type から dotnet.cache.request.result に変更。dotnet.cache.estimated_size メトリクスの単位を "By" から "1" に、説明を application-defined units として明確化。
  • MemoryCacheMetricsTests.cs: 新しいリクエスト結果タグキーに対応するようテストアサーションを更新。

パフォーマンスへの影響

影響なし

関連Issue

#126451

その他

  • OpenTelemetry semantic conventions PR(open-telemetry/semantic-conventions#4068)のフォローアップです。
  • Copilot の指摘により、推定サイズメトリクスのメタデータ更新がテストカバレッジ不足の状態です。本番環境でのリグレッション検出を確実にするため、テスト拡張が推奨されています。

#133143 Cross-build browser WASM performance host tools

  • 作成者: @lewing
  • 作成日時: 2026年09月03日 01:37:00(UTC)
  • マージ日時: 2026年09月03日 16:12:40(UTC)
  • ラベル: area-Build-mono

概要

Browser WASM パフォーマンスビルドでのホストツールのクロスビルドを制御するために、新しいMSBuildプロパティ CrossBuildHostTools を導入しました。このプロパティは既存のBionic sysrootを使用してユニバーサルWASM JITをビルドするために、パフォーマンスビルドでのみ有効にされます。通常のブラウザビルド、Mono、およびモバイルプラットフォームは変更されていません。

変更内容

  • eng/Subsets.props: CrossBuildHostTools プロパティ(デフォルト false)を追加し、CoreCLRホストクロスコンポーネント子ビルドの CrossBuild パラメータを制御するよう変更
  • eng/pipelines/performance/templates/perf-wasm-build-jobs.yml: browser WASM CoreCLRパフォーマンスビルドで /p:CrossBuildHostTools=true を有効化

パフォーマンスへの影響

影響なし(ビルド構成の最適化で、実行時パフォーマンスへの直接的な影響はなし)

関連Issue

なし

その他

  • 変更はオプトインであり、デフォルトの動作は維持されます
  • macOS開発環境の制限により、ネイティブGLIBC依存関係の検査はローカルで実施されていません
  • Ubuntu 22.04環境での完全な検証にはCI上での runtime-wasm-perf 実行が必要とされています
  • Copilotレビューではクロスビルド動作の変更がビルドグラフとパフォーマンスパイプラインに影響するため、エンドツーエンドのCI検証が必要と指摘されています

#133134 Run browser wasm runtime tests with ReadyToRun

概要

Browser-Wasm ランタイムテストの ReadyToRun (R2R) 対応を実現するPRです。従来はインタプリタのみをテストしていたブラウザ WASM ランタイムテストに、Crossgen2 でコンパイルされたマージドランナーと参照テストアセンブリを WASM R2R イメージとして実行するための並列 CI ジョブを追加します。これにより、WASM JIT リグレッションの実際の動作が検証され、個別テストの AlwaysUseCrossGen2 / RequiresProcessIsolation 回避策が不要になります。

変更内容

  • eng/pipelines/runtime.yml: Browser-Wasm R2R_CG2 インナーループ CI ジョブを追加し、インタプリタジョブを保持
  • src/tests/Common/CLRTest.CrossGen.targets: WASM フレームワークと テスト R2R コンパイル用に WASM 固有パスを使用するよう調整
  • src/tests/JIT/Regression/JitBlue/: Runtime_131285、Runtime_131373、Runtime_131635、Runtime_131640 から冗長な per-test Crossgen2/プロセス隔離設定を削除
  • src/tests/JIT/Regression/JitBlue/Runtime_70259/: WASM R2R 専用の ActiveIssue 属性を追加(ToPortableEntryPoint でのアサーション回避)
  • src/tests/Common/CoreCLRTestLibrary/PlatformDetection.cs および src/tests/build.proj: TEST_READY_TO_RUN_MODE 環境変数サポート設定を追加

パフォーマンスへの影響

影響なし。テスト実行範囲を拡大する変更であり、パフォーマンス数値の改善/低下はありません。

関連Issue

#131285、#131373、#131635、#131640、#70259

その他

  • 検証済み: JIT/Regression/Regression_2.csproj を Browser-Wasm Checked ビルドし、マージドランナーを Crossgen2 で実行、4つのターゲットリグレッションが WASM R2R イメージとして生成・実行されたことを確認
  • Runtime_70259 は R2R コンパイルされますが、ToPortableEntryPoint でのアサーション回避のため、TEST_READY_TO_RUN_MODE 環境マーカー存在時のみ実行がスキップされます
  • CI/テスト実行インフラ(パイプライン + Crossgen/R2R テスト構成)の変更であり、影響範囲が大きいため、本リリースの検証が必要です

#133132 Fix Wasm SCC profile weights for #133120

概要

WebAssembly (Wasm) SCC(強連結成分)スイッチディスパッチ変換におけるプロファイルウェイト不整合の修正。フロー制御フローが try ヘッダーを経由するよう再配線された後、try ヘッダーのプロファイルウェイトが更新されていなかったため、CrossGen2/ReadyToRun/PGO コンパイル時にアサーション失敗が発生していた問題を解決します。

変更内容

  • src/coreclr/jit/fgwasm.cpp: Scc::TransformViaSwitchDispatch() メソッドで、SCC エントリーフロー再配線後に try ヘッダーのプロファイルウェイトを SCC の集約エントリーウェイトに更新
  • src/tests/JIT/Regression/JitBlue/Runtime_133120/Runtime_133120.cs: async try/catch パターンを使用した回帰テストケースを追加
  • src/tests/JIT/Regression/JitBlue/Runtime_133120/Runtime_133120.csproj: browser-wasm CrossGen2 設定と --codegenopt:JitSynthesizeCounts=1 オプションを含む JitBlue 回帰テストプロジェクトを追加

パフォーマンスへの影響

影響なし。この変更はプロファイルメタデータの正確性を修正するもので、実行時パフォーマンスへの直接的な影響はありません。

関連Issue

#133120

その他

  • JIT の制御フ`グラフ(CFG)とプロファイル重み付けの不変条件に関連する変更であるため、特に browser-wasm R2R/PGO シナリオでの検証が重要
  • 検証済み: browser-wasm CoreCLR/JIT リビルド、Microsoft.Extensions.Options CrossGen2 再現例、単一メソッドおよび合成プロファイル再現例
  • Node.js 実行環境が利用不可であったため、エンドツーエンド検証は実施されていない

#133118 [release/10.0] Fix Crossgen2 variance validation for type constraints

概要

Crossgen2の型制約検証ロジックを修正し、ECMA-335 II.9.7仕様に準拠させるバックポート。 ジェネリック型の独自の制約に対して誤って分散(variance)ルールが適用されていたため、有効な変位インターフェイスが検証に失敗し、パフォーマンス最適化フラグ READYTORUN_FLAG_SkipTypeValidation が省略されていた問題を解決。

変更内容

src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/TypeValidationChecker.cs

  • ジェネリック型の独自制約に対する不正な分散検証を削除
  • インターフェイスメソッド署名検証を拡張し、すべてのインスタンスメソッドおよび仮想メソッド(静的仮想メンバーと静的抽象メンバーを含む)をカバー
  • VM側の検証ロジックと一致させる

パフォーマンスへの影響

改善あり

正規の変位インターフェイスが検証を通過できるようになることで、READYTORUN_FLAG_SkipTypeValidation フラグが適切に設定され、ReadyToRunの型検証スキップ最適化が有効に機能。

関連Issue

#132724

その他

  • このバックポートは #132809 (mainブランチ) をrelease/10.0にバックポートしたもの
  • 回帰は #120459 で導入された
  • 変更は main と release/11.0-rc1 で検証済み
  • リスク評価:低。変更はECMA仕様とVM検証ロジックに準拠させるもので、新たな失敗パスは導入されない

#133109 Fix NativeAOT thread-static debug info

概要

NativeAOT デバッグ型生成時に、thread-static フィールドと GC-static フィールドの判定を相互排他的にすることで、thread-static フィールドが誤って除外される問題を修正しました。FieldDesc.HasGCStaticBase が thread-static フィールドに対して true を返すことにより、type に GC-static base がない場合、thread-static フィールドの型情報が PDB から欠落していました。

変更内容

  • src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/UserDefinedTypeDescriptor.cs
    • GC-static フィールドの条件判定を if から else if に変更し、thread-static、GC-static、non-GC-static の3つの static フィールド分類を相互排他的に処理
    • thread-static index はあるが、別途生成された GC-static base がない type(例:AsyncDispatcherInfo ref struct)の thread-static フィールド情報を PDB に正しく保持

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

修正前後の PDB 検証結果(Windows CDB にて確認):

  • 修正前:thread-static index は型情報なしのシンボルのみ存在し、storage UDT や helper UDT が欠落
  • 修正後:親 UDT に型付きの __THREADSTATICINDEX、storage UDT に t_current フィールド情報、helper UDT が正常に出現

テスト結果:ILCompiler.Compiler.Tests: Passed 22, Failed 0, Skipped 0


#133107 Fix finalizer fail-fast when unadvising reused COM event sinks

概要

COM イベント シンク再利用時のファイナライザー fail-fast を修正するPRです。ComEventsSink.Unadvise() の不正なデバッグアサーションを削除し、既にアンアドバイス済みのシンクの再利用に対応します。また、テストを改善して RCW の確定的な回収とファイナライザー実行を保証しています。

変更内容

  • src/libraries/Common/src/System/Runtime/InteropServices/ComEventsSink.cs: Unadvise() メソッドから Debug.Assert(_connectionPoint != null) を削除。既存の if (_connectionPoint == null) return; により既にアンアドバイス済みのシンクは正しく処理されるため、アサーションは不要。
  • src/tests/Interop/COM/Dynamic/EventTest.cs: EventTest を [MethodImpl(MethodImplOptions.NoInlining)] ヘルパーメソッドに移行。WeakReference で RCW の回収を検証し、明示的に GC.Collect() と GC.WaitForPendingFinalizers() を呼び出して確定的なファイナライザー実行を強制。
  • src/tests/Interop/COM/Dynamic/Program.cs: [ActiveIssue] スキップを削除し、新しい静的 EventTest.Run() エントリポイントを呼び出すよう更新。

パフォーマンスへの影響

影響なし。変更はデバッグビルドのみに適用される条件付きアサーション ([Conditional("DEBUG")]) の削除であり、リリース動作への変更はありません。

関連Issue

#132947

その他

  • この修正は Microsoft.CSharp と CoreCLR の System.Private.CoreLib の両方にコンパイルされる共有ファイルに影響します。シンク再利用は Microsoft.CSharp パスのみで発生するため、ComEventsHelper パスは影響を受けません。
  • 検証環境: Windows x64、checked CoreCLR + Debug ライブラリで Interop/COM テストツリーが 24/30 パス(6 つの NativeClients テストはローカル実行時に out-of-process ハーネスがないため参照外)。
  • レビュアーへの注記: FromRuntimeCallableWrapper に関する別の不具合(複数の空シンク再利用時にbreak文がない)を発見しましたが、このPRでは対応していません。

#133105 Avoid xcodebuild probe error without Xcode during NativeAOT

概要

macOS上でCommand Line Toolsのみがインストールされている場合、xcodebuild -versionプローブが標準エラーに出力するメッセージをMSBuildが処理しにくくなり、NativeAOT公開プロジェクトのビルドが失敗する問題を修正します。NativeAOTプローブにIgnoreStandardErrorWarningFormatを設定し、既存の同等プローブ(crossgen-corelib.projやMicrosoft.NET.CrossGen.targets)と統一します。

変更内容

  • src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets: xcodebuild -versionプローブにIgnoreStandardErrorWarningFormat="true"を追加し、標準エラー出力の診断情報がMSBuildエラー/警告フォーマットとして解釈されるのを防止

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この修正は.NET 10からのリグレッション対応です。PR #123386でclang --versionからxcodebuildへ変更されましたが、Command Line Toolsのみの環境でビルド失敗が発生するようになりました
  • テスト済み: Command Line ToolsがインストールされたmacOSで./build.sh clr実行確認済み
  • リポジトリ内の既存パターンに沿った最小限の変更で、ビルド動作は変わりません

#133103 [WIP] Fix assertion failed during remove empty try-catch-fault

  • 作成者: @Copilot
  • 作成日時: 2026年09月02日 16:32:20(UTC)
  • マージ日時: 2026年09月03日 14:24:32(UTC)
  • ラベル: area-Infrastructure

概要

JIT の例外処理(EH)最適化フェーズにおける空の try/catch/fault ブロック削除時の ref カウント不変性の問題を修正します。ハンドラー/フィルター エントリ ブロックへの内部バックエッジからの追加参照に対応するため、fgRemoveEmptyTryCatchOrTryFault を修正し、回帰テストを追加しています。

変更内容

  • src/coreclr/jit/fgehopt.cpp: ハンドラー/フィルター エントリ ブロックの bbRefs カウントのデクリメント処理を修正。従来はアサートで検証し 0 に設定していたのに対し、内部バックエッジが存在する場合にもカウントを正しくデクリメントするように変更(4 行変更)
  • src/tests/JIT/Regression/JitBlue/Runtime_133101/Runtime_133101.cs: finally エントリ内のループ構造を再現する回帰テストを新規追加(42 行追加)
  • src/tests/JIT/Regression/Regression_ro_2.csproj: 新しい回帰テストを統合テストランナー プロジェクトに組み込み(1 行追加)

パフォーマンスへの影響

影響なし

関連Issue

#133101

その他

  • この変更は JIT フローグラフの ref カウント不変性に関わる微細な領域に関わるため、複数の構成・アーキテクチャでのメンテナーによる最終的な正確性レビューが必要とされています。
  • WIP(Work In Progress)マークが付いており、最終確認待機中の状態です。

#133100 Fix SIMD primitive zero initialization

概要

TryPrimitiveInitがゼロブロック初期化をSIMDプリミティブストアに変換する際に、新しいSIMDゼロノードを作成していたが、有理化されたストアが元の整数ゼロデータノードを保持していました。その結果、整数ソースを持つ無効なSIMDストアが生成され、Tier0コンパイル失敗の原因となっていました。本修正により、ストアのData()オペランドを新規作成のSIMDゼロノードで置き換え、Vector128/Vector256に対するTier0/FullOptsの両モードで回帰カバレッジを追加しました。

変更内容

  • src/coreclr/jit/morphblock.cpp: MorphInitBlockHelper::TryPrimitiveInitでSIMDゼロソース作成時にストアのData()オペランドを置き換え。新規作成のSIMDゼロノードをmorph済みとしてマーク。
  • src/tests/JIT/Regression/JitBlue/Runtime_133085/Runtime_133085.cs: Vector128/Vector256のゼロ初期化を検証する回帰テストを追加(tiered compilationおよびFullOpts両対応)。
  • src/tests/JIT/Regression/JitBlue/Runtime_133085/Runtime_133085.csproj: 新規JIT回帰テストプロジェクトを追加。

パフォーマンスへの影響

影響なし。本修正はコード生成の正確性を修正するものであり、パフォーマンス特性に変更はありません。修正前はvmovq VEX.L=1(不正な命令)が生成されていたのに対し、修正後は正しいvxorps(SIMD ゼロ化)が生成されます。

関連Issue

#133085 修正に関連する設計変更: #85585

その他

  • 修正は最小限で局所的な正確性修正であり、公開APIへの影響なし(内部JIT実装の修正)
  • 破壊的変更なし
  • Copilotによるレビューで"Approval recommended"と評価

#133097 Don't pass empty string as SNI to QUIC

  • 作成者: @rzikm
  • 作成日時: 2026年09月02日 15:47:28(UTC)
  • マージ日時: 2026年09月03日 10:17:23(UTC)
  • ラベル: area-System.Net.Quic

概要

QUIC クライアント接続時に、空の文字列をSNI(Server Name Indication)として MsQuic に渡さないようにする変更です。ホスト名が利用できない場合、空文字列ではなく null を渡すよう修正されます。

変更内容

  • src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs
    • SNI を nullable 文字列として計算し、ホスト名が利用できない場合に string.Empty をデフォルト値とすることをやめました
    • MsQuicApi.Api.ConnectionStart へ serverName として null を渡すようにし、メモリ割り当てが発生しなかった場合のアンマネージメモリ解放をスキップするようにしました

パフォーマンスへの影響

影響なし

関連Issue

#133096

その他

  • Copilot による指摘:ClientAuthenticationOptions.TargetHost が明示的に空文字列に設定された場合でも、依然として空文字列がSNIとして渡される可能性があります。
  • テストカバレッジの懸念:SNIが欠落するシナリオ(例:IPEndPoint + TargetHost が null/empty)についての専用回帰テストが不足している可能性があります。
  • コード品質:ポインタの null チェックで is not null パターンマッチング使用が推奨されています(リポジトリの C# コード規約に準拠するため)。

#133095 JIT: Include method name in Release disassembly footer

  • 作成者: @EgorBo
  • 作成日時: 2026年09月02日 15:17:56(UTC)
  • マージ日時: 2026年09月03日 14:40:45(UTC)
  • ラベル: area-CodeGen-coreclr

概要

Release ビルドの JIT ディスアセンブリ フッターにメソッド名を含める変更です。これにより、jit-analyze や MihuBot などのダウンストリーム ツールが Release ビットのみを使用してコード サイズを属性付けできるようになります。

変更内容

  • src/coreclr/jit/codegencommon.cpp: CodeGen::genEmitMachineCode() の Release opts.disAsm フッター行を拡張し、メソッドのフルネームとティアリング名をコード サイズ情報と共に出力するよう変更

パフォーマンスへの影響

影響なし。診断出力のみの変更です。

関連Issue

dotnet/jitutils#440

その他

  • この変更は診断出力フォーマットのみに関するもので、opts.disAsm フラグでゲートされています
  • 既存のリリース ディスアセンブリ ヘッダーで使用されているメソッド名フォーマットを再利用しており、低リスクです
  • Release disasm フッターの出力が Release disasm ヘッダーと一貫性を持つようになります

#133091 [release/10.0] Implement SocketsHttpHandler.InitialHttp2MaxConcurrentStreams

概要

HTTP/2通信時に、サーバーのSETTINGSフレーム受信前に使用される初期の最大並行ストリーム数を上書き可能にする機能をバックポートしました。これまでハードコーディングされていた値(100)をSocketsHttpHandlerの設定として抽出し、Http2Connectionで利用するようにしました。

サービシングパッチのため、新しいInitialHttp2MaxConcurrentStreamsプロパティはinternalとして実装されており、UnsafeAccessorを使用してアクセスできます:

[UnsafeAccessor(UnsafeAccessorKind.Method, Name = "set_InitialHttp2MaxConcurrentStreams")]
private static extern void SetInitialHttp2MaxConcurrentStreamsCore(SocketsHttpHandler handler, int value);

変更内容

  • SocketsHttpHandler.cs: InitialHttp2MaxConcurrentStreamsプロパティをinternalとして追加
  • HttpHandlerDefaults.cs: デフォルト定数DefaultInitialHttp2MaxConcurrentStreams = 100を定義(RFC準拠)
  • HttpConnectionSettings.cs: 初期最大並行ストリーム数の値を保持・クローン
  • Http2Connection.cs: ハードコーディングされた定数値をリムーバルし、HttpConnectionPool.Settingsから初期値を読み込むように変更
  • SocketsHttpHandlerTest.cs: UnsafeAccessorを使用した機能テストを追加(サーバーSETTINGS受信前の動作検証)
  • ILLink.Descriptors.LibraryBuild.xml: トリミング時にアクセッサメソッドを保持するよう記述

パフォーマンスへの影響

影響なし

関連Issue

#132521(バックポート元PR)

その他

  • このバックポートはメモリキャッシュ機能(.NET 11で追加)は含めず、初期値上書き機能のみの最小限の実装です
  • パブリックAPIではなくinternalとして実装されているため、リリース後のバージョン互換性への影響はありません
  • サービシングの承認は2026年9月3日にメール経由で取得済みです

#133084 [release/10.0] Use lock-free reads for ETW rundown versions

概要

ETW(Event Tracing for Windows)ランダウン中の過度なロック競合を緩和するため、CodeVersionManagerグローバルロックを保持せずにロックフリーな読取を使用する最適化をrelease/10.0にバックポートしました。JIT コンパイルされたメソッドが多いアプリケーションでランダウン中の遅延が数秒に達する問題を解決します。

変更内容

  • method.hpp/method.cpp: MethodDesc::GetNativeCodeVolatile()メソッドを追加。VolatileLoadを使用してネイティブコードポインタをロックフリーで読取
  • codeversion.cpp: ネイティブコードポインタとバージョンリストの先頭ポインタに対してボラタイル読取を使用し、ロックフリーな列挙を実現
  • eventtrace.cpp: ランダウン処理中のCodeVersionManagerロック保持を削除。ボラタイル読取時のバージョン状態検証を追加し、不安定な/進行中の更新をスキップ

パフォーマンスへの影響

JIT コンパイルメソッドが多いアプリケーションでの ETW ランダウン実行時間が数秒削減されます。ロック競合解消により、JIT パスがコード バージョニングロックの待機で阻止されるケースが減少します。改善点:ロックフリー読取によるランダウンスループット向上。懸念点なし(ランダウムは原子的スナップショットを保証しないため、進行中の JIT メソッド報告漏れは許容)。

関連Issue

#132757(元の変更)

その他

  • 内部パートナーチームから報告された問題への修正
  • リグレッションなし。診断機能のみの変更
  • 以下で検証済み:ReJIT/リバート、タイアード コンパイル、OSR、反復的な CLR ETW ランダウン サイクルの並行実行。Release/Debug ストレステストで3回の ReJIT コンパイルと1回のリバート要求が発生しても正常完了。TraceEvent で ETL トレース処理時、形式不正なペイロードまたはデコード エラーなし

#133078 [release/9.0] Detect ephemeral client cert key via SEC_E_UNKNOWN_CREDENTIALS in QUIC

概要

MsQuicの最新版アップデートで変更されたエラーコード(SEC_E_UNKNOWN_CREDENTIALS)に対応し、エフェメラルクライアント証明書キーの検出ロジックを修正します。Windows固有のエフェメラルキー(Schannelの鍵ストアに永続化されないキー)を使用する場合、より分かりやすい診断例外をアプリケーションに返すようにします。

変更内容

  • src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/MsQuicConfiguration.cs: エラーコード検出ロジックを更新し、SEC_E_UNKNOWN_CREDENTIALSをエフェメラルキーエラーとして認識するよう修正(+5/-1)

パフォーマンスへの影響

影響なし

関連Issue

#132832(元のPull Request)

その他

  • このPRはrelease/9.0ブランチへのバックポート
  • MsQuicの最新版更新により引き起こされたリグレッションの修正
  • 低リスク:修正は限定的で十分に理解されている
  • CI検証済み
  • テスト失敗の修正を含む

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

概要

このコードフロー更新PRは、dotnet/dotnetリポジトリから提供された依存関係の更新とソースコード変更をruntime リポジトリのrelease/10.0ブランチに統合するものです。主にMicrosoft.CodeAnalysis、Microsoft.DotNet.Arcade.Sdk、NuGetツール、およびビルドシステムの依存関係が更新されています。

変更内容

  • eng/Version.Details.xml/props: 複数の依存関係を更新

    • Microsoft.CodeAnalysis系: 5.0.0-2.26431.103 → 5.0.0-2.26451.111
    • Microsoft.DotNet.Arcade.Sdk等のビルドツール: 10.0.0-beta.26431.103 → 10.0.0-beta.26451.111
    • NuGet.Frameworks/Packaging等: 7.0.3-rc.43203 → 7.0.3-rc.45211
    • その他: Microsoft.DotNet.Cecil、System.Text.json、System.Reflection.Metadataなど
  • global.json: .NET SDKバージョンの同期更新

  • NuGet.config: NuGetソース設定の微調整

  • eng/common/: Helixテスト監視スクリプトの追加(helix-job-monitor.yml)とGitHub認証スクリプトの更新

  • 関連リポジトリの同期: arcade、deployment-tools、efcore、msbuild、sdk、windowsdesktopなど複数のリポジトリの変更が含まれています

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • これはCodeflow PRで、dotnet/dotnet VMRからの自動同期です
  • Build ID: 20260901.11、Commit: 79b5a5ed23976dc183df144fbaa6ff39ca5b9826
  • release/10.0.1xxブランチを対象とした更新
  • ビルド・テスト基盤の改善が含まれており、Helixテスト監視機能が強化されています

#133068 Remove redundant rolling build pipeline parameter

概要

ビルドパイプラインの冗長なパラメータプラッシングを削除する整理作業です。isRollingBuildパラメータをextra-platformテンプレートの呼び出しから削除し、代わりに共通のvariables.isRollingBuildを直接使用するように統一しました。これにより、パイプライン設定がシンプルになり、保守性が向上します。

変更内容

ラッパーパイプラインからのパラメータ削除:

  • runtime-wasm.yml, runtime-wasm-optional.yml, runtime-wasm-non-libtests.yml, runtime-wasm-libtests.yml, runtime-wasm-dbgtests.yml
  • runtime-maccatalyst.yml, runtime-linuxbionic.yml, runtime-ioslikesimulator.yml, runtime-ioslike.yml, runtime-android.yml, runtime-androidemulator.yml
  • runtime-extra-platforms.yml これらのパイプラインからisRollingBuildパラメータの受け渡しを削除

extra-platformテンプレートの更新:

  • runtime-extra-platforms-wasm.yml: isRollingBuildパラメータを削除し、条件分岐ロジックをvariables.isRollingBuildに変更(+4行/-5行)
  • runtime-extra-platforms-android.yml, runtime-extra-platforms-androidemulator.yml, runtime-extra-platforms-ioslike.yml, runtime-extra-platforms-ioslikesimulator.yml, runtime-extra-platforms-linuxbionic.yml, runtime-extra-platforms-maccatalyst.yml: 未使用のisRollingBuildパラメータを削除

パフォーマンスへの影響

影響なし(ビルド定義の整理のみで、実行時の動作に変更はありません)

関連Issue

#133002で指摘された内容に基づいています

その他

  • この変更は破壊的変更ではなく、内部実装(ビルドパイプライン定義)の整理です
  • すべての呼び出し元が既にeng/pipelines/common/variables.ymlをインポートしているため、共通変数への依存は安全です
  • Copilotによる自動レビューで承認推奨されています

#133062 [release/9.0-staging] [S.T.J] Fix PropertyRef.Equals

概要

System.Text.Json(S.T.J)のPropertyRef.Equalsメソッドにおけるバグ修正。キャッシュされた名前がキープレフィックス内に収まらないケースで、受け取った名前がキープレフィックス内に収まる場合のバイト比較ロジックを拡張しました。.NET 9以降に影響する回帰バグの修正です。

変更内容

  • PropertyRef.cs: Equalsメソッドのロジック修正(+4/-2)

    • 既存のバイト単位比較ロジックを、キャッシュ名がキープレフィックスを超える場合にも対応するよう拡張
  • CacheTests.cs: 回帰テストを追加(+50行)

    • 修正対象のバグケースをカバーするテスト実装

パフォーマンスへの影響

影響なし。修正はキャッシュ比較ロジックの正確性向上であり、パフォーマンスへの負の影響はありません。

関連Issue

#133027(オリジナルのバグ修正PR)

その他

  • リスク評価:Low。既存の比較ロジックの拡張であり、新機能ではなく正確性の改善
  • .NET 9+の回帰バグ対応です
  • .NET 8以降のサービシング対象リリースのため、ターゲットブランチはrelease/9.0-stagingで正しいことが確認されています
  • 内部発見の不具合(顧客報告なし)

#133061 [release/10.0] [S.T.J] Fix PropertyRef.Equals

概要

System.Text.Json(S.T.J)のPropertyRef.Equalsメソッドのバグ修正を.NET 10.0にバックポートしたPRです。プロパティ名のキャッシュ比較ロジックを修正し、着信名がキープレフィックスに収まるが、キャッシュされた名前が収まらないケースでのバイト単位比較を適切に処理します。

変更内容

  • PropertyRef.cs: Equalsメソッドのロジックを拡張し、名前比較の際にプレフィックス長の不一致を正しく処理
  • CacheTests.cs: 新しい回帰テストを50行追加し、修正前の問題を検証

パフォーマンスへの影響

影響なし。既存のバイト単位比較ロジックの境界ケース処理の修正であり、パフォーマンス特性への変更はありません。

関連Issue

#133027

その他

  • .NET 9以降に影響する回帰バグの修正
  • リスクレベルは低い(既存比較ロジックの拡張)
  • ランタイムCIテストはパス済み
  • 内部で発見された問題の修正

#133055 [release/8.0] Update dependencies from dotnet/emsdk

概要

dotnet/emsdkリポジトリからの依存関係を更新するPull Requestです。Emscripten関連の2つのNuGetパッケージをバージョンアップします。

変更内容

  • Microsoft.SourceBuild.Intermediate.emsdk: 8.0.31-servicing.26418.4 → 8.0.32-servicing.26451.2
  • Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100: 8.0.31 → 8.0.32
  • 変更ファイル:
    • eng/Version.Details.xml: dotnet/emsdkの参照コミットをb7df0ba51c8edab427b1fc1af412d656a41bc71cに更新
    • eng/Versions.props: パッケージバージョンを8.0.32に更新
    • NuGet.config: NuGetフィードソースの設定を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRはrelease/8.0ブランチを対象としたサービシング更新です
  • dotnet-maestro[bot]による自動依存関係更新です
  • emsdkビルド20260901.2(2026年9月2日生産)に対応

#133053 [release/10.0] Use acquire reads for cast cache entries

概要

ARM64環境での高並行サーバーアプリケーションにおけるキャストキャッシュのパフォーマンス低下を改善するために、キャストキャッシュエントリへのアクセスに対してアクイジション読み込み(acquire reads)を使用するよう変更しました。顧客環境でのパフォーマンス向上が確認されています。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/CastCache.cs
    • キャストキャッシュエントリの読み込み時にアクイジション読み込みセマンティクスを適用
    • コード行数: +4/-12

パフォーマンスへの影響

改善あり

  • ARM64ハードウェア上での高並行シナリオでおよそ10%のパフォーマンス改善を実現
  • x86/x64アーキテクチャではメモリモデルがより強いため影響なし(no-op)

関連Issue

#132630

その他

  • 本変更はmain ブランチ(#132630)から release/10.0 ブランチへのバックポート
  • 顧客環境で既に検証済み(main ブランチに約2週間導入済み)
  • リスク評価: 低 - x86/x64では新しいセマンティクスが不要で、ARM64でのメモリ順序付けの改善のみ

#133049 Release ThreadStore lock before blocking for shutdown

概要

デバッガーシャットダウン時のハングを防ぐため、非特殊スレッドがシャットダウン時に永続的にパークされる前に ThreadStore ロックを解放するように修正されました。ThreadStore ロックを保持したまま WaitForEndOfShutdown() に入ると、他のスレッドが ThreadStore へのアクセスが永続的にブロックされ、デバッガー操作(例:ICorDebugProcess::Stop の SyncComplete)が完了しないという問題を解決します。

変更内容

  • src/coreclr/debug/ee/debugger.cpp (Debugger::DoNotCallDirectlyPrivateLock): シャットダウンモード時に非特殊スレッドが永続的にパークされる前に、現在のスレッドが ThreadStore ロックを保持しているかを検出し、ThreadSuspend::UnlockThreadStore() を使用してロックを解放
  • src/coreclr/debug/ee/debugger.h: デバッガーロック関連の機能追加
  • src/coreclr/vm/crst.cpp/crst.h: 関連する古い実装の削除(計54行削除)

ThreadStore 所有権とシャットダウン不可フラグは保持され、ファイナライザー、デバッガーヘルパー、シャットダウン、GC スレッドは引き続き ThreadStore を保持します(シャットダウン中も続行を許可)。

パフォーマンスへの影響

影響なし

関連Issue

#126096

その他

  • 変更はコアCLRのシャットダウン/ロック動作に関わる並行性に敏感な領域であり、ロック不変性と相互動作の安全性の検証が重要です
  • foreground-shutdown テストで5回の実行確認済み

#133042 Fix TextInfo.ToTitleCase Dutch IJ digraph and U+2019 apostrophe handling

概要

TextInfo.ToTitleCaseの2つのバグを修正します。

  1. Dutch IJ digraph(中立的なnlカルチャ対応):中立的なオランダ語カルチャ("nl")でもijをIJに大文字化するよう修正
  2. U+2019アポストロフィ処理:タイポグラフィアポストロフィ(')をASCIIアポストロフィ(')と同様に単語内文字として処理
// Fix 1: Before→After
CultureInfo.GetCultureInfo("nl").TextInfo.ToTitleCase("de ijsvogel");
// Before: "De Ijsvogel" (wrong)  After: "De IJsvogel" (correct)

// Fix 2: Before→After
CultureInfo.GetCultureInfo("en").TextInfo.ToTitleCase("Grandma's pictures");
// Before: "Grandma'S Pictures"  After: "Grandma's Pictures"

変更内容

  • TextInfo.cs:Dutch文化判定ロジック修正。CultureName.StartsWith("nl-")の代わりに、"nl"で始まり長さが2か3文字目が'-'であるかチェック。また、IsApostropheヘルパーメソッド追加(U+0027、U+2019、U+2018、U+FF07に対応)
  • TextInfoTests.cs:中立的なnlカルチャのテストケース追加。Dutch digraph処理とアポストロフィ処理の各テスト理論追加

パフォーマンスへの影響

影響なし。Dutch文化判定は2文字リテラルに対する単一のStartsWith呼び出しと長さ/インデックスチェックで、呼び出しごとに1回のみ評価。IsApostropheは既存のループ内での単一文字等価比較を置き換える小さな定時間比較。

関連Issue

#133032(Dutch IJ digraph)、#133034(U+2019アポストロフィ)

その他

IsApostropheは以下の文字に対応:

  • U+0027:ASCIIアポストロフィ
  • U+2019:右シングル引用符(curlyアポストロフィ)
  • U+2018:左シングル引用符
  • U+FF07:全幅アポストロフィ

ドット/コロンスタイル結合記号(.、:など)は意図的に除外(ドット付きトークンの大文字化変更を回避)。U+02BCなどの修飾文字アポストロフィは既に動作(非単語区切り分類のため)。


#133013 Document that PhysicalFilesWatcher can watch paths that don't exist

概要

Microsoft.Extensions.FileProviders.PhysicalのXML ドキュメント更新。PhysicalFilesWatcherとPhysicalFileProviderが存在しないパスやディレクトリをウォッチできることを明確に記述し、Watch(string filter)パラメータのドキュメント書式を改善しました。

変更内容

  • PhysicalFilesWatcher.cs: ルートディレクトリとウォッチ対象エントリが存在しない場合でもトークン作成時にサポートされることをXML ドキュメントで明示
  • PhysicalFileProvider.cs: コンストラクタとWatchメソッドのパラメータドキュメントを更新し、存在しないルート/エントリをサポートしていることを記述、サンプルコード表示の書式を改善

パフォーマンスへの影響

影響なし(ドキュメント更新のみ)

関連Issue

なし

その他

  • レビュー時にXML ドキュメントのコメント内で短縮形(isn't)を避け、より正式な表現(is not)を使用するよう提案されました
  • ドキュメント品質の一貫性向上を目的とした変更で、ユーザーの理解を深めるための説明的な改善です

#132997 [release/11.0] Run full Mono mobile library tests

概要

release/11.0ブランチのCI/CDパイプラインを更新し、モバイルプラットフォーム(iOS SimulatorおよびAndroid)におけるMonoライブラリテストを、スモークテスト限定から完全なライブラリテストスイートへ移行します。これはmainlineの対応する変更(#132887)をrelease/11.0にバックポートするものです。

変更内容

  • runtime-extra-platforms-ioslikesimulator.yml: iOS Simulator arm64 Mono interpreterレグについて、ハードコードされたスモークテストフラグ(/p:RunSmokeTestsOnly=true)を削除し、標準的な$(_runSmokeTestsOnlyArg)を使用するよう変更。これによりisRunSmokeTestsOnlyがfalseの場合に完全なライブラリテストスイートが実行されるようになります。
  • runtime-extra-platforms-android.yml: Android arm64 Mono Releaseレグに対して、完全なライブラリテストジョブ(Helixライブラリテンプレート + Helixモニター)を復元します。
  • パイプラインのコメント텍스트를 「libraries smoke tests」から「libraries tests」に更新し、スモーク限定が適用されなくなったことを反映します。

パフォーマンスへの影響

影響なし(CI/CDパイプラインの変更であり、ランタイムパフォーマンスへの直接的な影響なし)

関連Issue

#132887

その他

このPRはmainlineでの対応する変更をrelease/11.0ブランチにバックポートするもので、モバイルプラットフォーム間でのテストカバレッジ統一を目的としています。


#132995 [release/8.0-staging] Update dependencies from dotnet/arcade

概要

dotnet/arcadeの依存ライブラリをベータ版8.0.0-beta.26371.5から8.0.0-beta.26431.7に更新するautomatedな依存関係更新PRです。Microsoft.DotNet.Arcade.Sdkおよび関連する17個のビルドツール・テストツールパッケージを更新します。同時にビルドスクリプトおよびCI/CDテンプレートの構成変更も含みます。

変更内容

  • バージョン管理ファイル: eng/Version.Details.xmlおよびeng/Versions.propsを更新
  • GitHub App認証: GitHub App Token取得用のPowerShellスクリプト(Get-GitHubAppToken.ps1)とYAMLテンプレートを新規追加
  • ビルドテンプレート: onelocbuild.yml、publish-build-assets.yml、codeql-build.yml、source-build.ymlなど複数のCI/CDテンプレートを更新
  • SDL関連: extract-artifact-packages.psの削除およびSDL実行テンプレートの簡素化
  • その他: global.jsonの更新、common-variables.ymlの設定削除

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 本PRはdotnet-maestro[bot]による自動化された依存関係更新(Maestro/Darc)です
  • release/8.0-stagingブランチへの更新であり、.NET 8.0の本リリース準備段階のバージョンアップです
  • GitHub App認証周りのインフラストラクチャ変更が含まれており、セキュリティトークンハンドリングの改善が推測されます(詳細はcommit 25da4e8f08を参照)

#132974 [release/10.0] Detect ephemeral client cert key via SEC_E_UNKNOWN_CREDENTIALS in QUIC

概要

MsQuicの最新版更新により、Windows上でEphemeral Key(キーストアに永続化されないキー)を持つ証明書を使用しようとした際のエラーコード検出ロジックを修正します。SEC_E_UNKNOWN_CREDENTIALSエラーをより適切に検出し、診断的に有用な例外をアプリケーションに返すようにします。

変更内容

  • System.Net.Quic/Internal/MsQuicConfiguration.cs: Ephemeral Client Cert Keyの検出ロジックを更新し、MsQuicの最新版で返却されるSEC_E_UNKNOWN_CREDENTIALSエラーコードに対応(+5/-1行の変更)

パフォーマンスへの影響

影響なし

関連Issue

#132832(本PRはrelease/10.0へのバックポート)

その他

  • リグレッション: MsQuic最新版更新により導入されたリグレッション
  • リスク評価: 低リスク(修正範囲が限定的で理解が十分)
  • テスト: CI上で検証済み
  • 内部発見: 顧客報告ではなく、内部で発見されたもの

#132900 Check for SIG_IGN and SIG_DFL before calling previous signal handler

概要

macOSにおいて、execve実行後に親プロセスのシグナルハンドラフラグが残存する問題を修正しました。ランタイムが外部ソースからシグナルを受け取った際に、SA_SIGINFOフラグは残っているが前のハンドラポインタがSIG_IGNまたはSIG_DFLに設定されている状態を検出し、クラッシュを防ぐようになりました。

変更内容

  • src/coreclr/nativeaot/Runtime/unix/PalUnix.cpp: ネイティブAOTランタイムのシグナルハンドラ実装で、前のシグナルハンドラを呼び出す前にSIG_IGNとSIG_DFLをチェック
  • src/coreclr/pal/src/exception/signal.cpp: PAL層のシグナル例外処理で同様のチェック機構を追加
  • 回帰テスト: src/tests/Regressions/coreclr/GitHub_132581/に、macOS上でシグナルハンドラが設定されたプロセスから起動された場合の動作を検証するC#/C++テストを追加

パフォーマンスへの影響

影響なし

関連Issue

#132581

その他

  • プラットフォーム: macOS特有の問題であり、execve実行時にsa_flagsがクリアされないmacOSの動作に対する対処
  • 互換性: 修正はシグナルハンドラの安全性向上であり、破壊的変更なし
  • テストカバレッジ: 新規回帰テストにより同様の問題の再発を防止

#132897 [release/10.0] Fix ConcurrentQueue.TryDequeue spuriously reporting empty during a segment freeze- #132737

概要

ConcurrentQueue<T>のTryDequeue/TryPeekが、セグメントの凍結時に競合状態によって誤ってキューが空であると報告する問題を修正します。この競合は、循環セグメントが満杯になり、キューがより大きなセグメントを割り当てるときに発生します。_frozenForEnqueuesフラグを公開する順序をTail位置の更新と相対的に変更し、コンシューマ側がセグメントの不整合な状態を見ないようにします。

変更内容

  • ConcurrentQueueSegment.cs: セグメント凍結の公開順序を変更し、Tailを凍結フラグより先にバンプするよう調整。TryDequeue/TryPeekの空チェックロジックを修正
  • ConcurrentQueueTests.cs: 並行スナップショット操作中に誤った空判定が発生しないことを検証する並行ストレステスト(+45行)を追加

パフォーマンスへの影響

影響なし

関連Issue

#132736

その他

  • このバックポートは#132737をrelease/10.0ブランチに適用したもの
  • 重要な懸念: Copilot reviewerが指摘している通り、TryDequeue/TryPeekで_headAndTail.Tailの読み取りが非volatile読み取りに変更されています。TailはInterlocked/CompareExchangeで並行更新される一方、他の場所ではVolatile.Readで読み取られているため、stale Tailを観察する可能性があり、正確性への懸念が残っています
  • リスク評価: 低(変更は凍結状態の公開順序のみ)
  • 新しいテストが含まれており、修正の検証が可能

#132859 Fix generic virtual dispatch hang after multiple AssemblyLoadContext unloads

概要

collectible AssemblyLoadContext アンロード後の汎用仮想ディスパッチハングを修正するPRです。GenericCache.TrySetがフラッシュセンチネルを正しく検出できず、アンロード後も古いエントリが残存していた問題を解決します。sentinel テーブルサイズ定数の追加と検出ロジックの統一により、複数回のアンロードサイクルでも安全にキャッシュがクリアされるようになります。

変更内容

  • GenericCache.cs: SENTINEL_TABLE_SIZE定数を追加し、IsSentinel(table)ヘルパーメソッドでセンチネル検出を信頼性向上。sentinel検出ロジックをTrySet内で2箇所統一
  • CastCache.cs: GenericCacheと同じセンチネルサイズ・検出パターンを適用し一貫性を確保、コンストラクタアサーションを強化
  • 新規テスト(GenericVirtualMethod): collectible アセンブリの load/invoke/unload を10回繰り返し、各アンロード後の仮想関数ポインタキャッシュが正常にクリアされることを検証

パフォーマンスへの影響

影響なし(正確なセンチネル検出による副作用排除のため、パフォーマンス低下なし)

関連Issue

#132562

その他

本修正は内部実装(CoreLib のキャッシュ機構)の正確性向上であり、公開APIへの影響はありません。レビュー時点では、回帰テストの null チェック強化とnullable アノテーション修正が推奨されています。


#132850 JIT: stop EnableExtraSuperPmiQueries from changing what gets compiled

概要

EnableExtraSuperPmiQueries(DEBUG-only JIT設定)が、SuperPMI収集中にEE例外をスローして予期しない方法でコンパイル対象を変更する問題を修正します。追加のJIT-EEクエリが例外を発生させ、インライン化が中止され、収集中のILインポートが再生時と異なってしまい、SuperPMI コンテキストが約3%失われていました。修正により、コンテキスト損失が3.05%から0.062%に削減されます。

変更内容

  • compiler.h/cpp: eeRunFunctorWithErrorTrapとeeRunExtraSuperPmiQueriesヘルパーを追加し、EE例外をネストされたエラートラップ内でキャッチ
  • importer.cpp: newarr後の追加クエリをトラップで分離し、compFloatingPointUsedフラグを保存/復元して、レジスタ割り当てやフレームレイアウトの相違を防止
  • importercalls.cpp: 非同期変種と固定エントリポイント「ダンプ専用」クエリをトラップで保護し、AOT/EE障害でコンパイルが中止されるのを防止
  • lclvars.cpp: wasm/型レイアウトクエリをトラップで保護し、JIT作業周辺でcompFloatingPointUsedを保存/復元

パフォーマンスへの影響

改善実績(Core_Root 15フレームワークアセンブリ、Windows x64 checked、非composite crossgen2):

  • コンテキスト損失: 3.05% → 0.062%(実数値: 919 → 20)
  • 収集コンテキスト数: 30,170 → 32,213(6.8%増)
  • MCHサイズ: クエリ有効時で約6MB増加
  • 収集コストの増加: 約2.7%以下(System.Private.Xml: 21.8s → 22.4s)

JIT固有の作業(assert、NOMEM例外など)はトラップの外にあるため、メソッド失敗は検出される設計

関連Issue

#47546、#47554、#118217

その他

  • 内部実装(DEBUG-only機能)の修正であり、公開APIへの影響なし
  • 残存する20件の失敗(ConstructStringLiteral×15、EmbedClassHandle×4、IsMoreSpecificType×1)は本変更では対象外で、#47546下の別問題
  • typGetObjLayoutのメモ化により、キャッシュエントリが残る可能性があるが、実装上は後続の処理が独立してフラグ設定するため、実際の影響は観測されていない

#132814 Implement TentativeMethodNode for WASM

  • 作成者: @Copilot
  • 作成日時: 2026年08月27日 01:54:29(UTC)
  • マージ日時: 2026年09月03日 00:17:32(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT の WASM バックエンドで tentative method スタブの生成に対応しました。マネージド ABI パラメータを転送するスタブ生成、throw helper 呼び出し時の call + unreachable 発行、実本体への転送時の return_call 使用を実装しています。

変更内容

  • WasmInstructions.cs: unreachable、call、return_call WASM 命令と関数インデックスリロケーション対応のヘルパーを追加
  • WasmEmitter.cs: #if READYTORUN ガードを削除し、WASM 関数本体とリロケーション生成を有効化
  • TentativeMethodNode.cs: IMethodCodeNodeWithTypeSignature 実装によって WASM シグネチャ登録用の型シグネチャを提供
  • WasmTentativeMethodNode.cs: WASM スタブ生成を実装(実本体への return_call 転送、または throw helper 呼び出し後 unreachable)
  • NodeFactory.cs: WasmTypeNode(MethodDesc) を WasmLowering.GetSignature().FuncType で実装
  • DependencyGraphTests.cs: WASM エンコード + リロケーション動作を検証するユニットテストを追加

パフォーマンスへの影響

影響なし

関連Issue

#132813

その他

レビュー指摘事項:

  • WasmTentativeMethodNode.cs における引数転送ロジックに問題が指摘されています。現在の実装では、ほとんどのマネージド WASM シグネチャで複数パラメータ(シャドウスタックポインタ、隠し引数など)が必要であるにもかかわらず、local.get 0 のみを転送しており、WASM 検証エラーまたはランタイム実行の破損につながる可能性があります。実本体への転送時には全パラメータを転送し、ThrowBodyRemoved ケースではヘルパーの lowered シグネチャが期待するパラメータのみ転送する修正が推奨されています。
  • WasmEmitter.cs での FunctionBody フィールドのヌル初期化(null!)により、初期化漏れ時の診断性が低下する可能性があります。nullable フィールド化と明確な例外処理が推奨されています。

#132783 [release/11.0] Don't report unsupported types for never bound properties

概要

Configuration Binder ソースジェネレーターが、バインディングに参加できないプロパティ([ConfigurationIgnore] 属性付きまたはパブリックアクセサなし)に対して、不正な SYSLIB1100/SYSLIB1101 診断を報告する問題を修正しました。バインディング可能なプロパティを通じて到達可能なサポートされていない型の場合は、引き続き診断が生成されます。

変更内容

  • TypeIndex.cs: プロパティがバインディングに参加できるかどうかを判定してから、型のサポート確認を行うように順序を変更(フィルタリング処理の追加)
  • ConfigurationBindingGenerator.Parser.cs: 型のインデックス化時に、バインディング不可能なプロパティを除外してから診断を評価する処理を実装
  • GeneratorTests.cs: プライベート、インターナル、プロテクテッドプロパティおよび [ConfigurationIgnore] プロパティのテストを追加。実際にバインディング可能な経路でアクセス可能な場合の診断生成も確認

パフォーマンスへの影響

影響なし

関連Issue

#132455、#132377、#126396

その他

  • .NET 11 の新機能である [ConfigurationIgnore] 属性が導入されて以来存在していた問題の修正
  • リスク評価:低。ソースジェネレーターの型インデックスと診断判定に限定された変更で、実行時バインディング動作とパブリックAPIは変更なし
  • 本来は release/11.0 への backport ですが、元の変更 #132455 は main にマージ済み

#132782 [release/10.0] Fix hang in InvalidClientRequestTests by guarding oversized Content-Length cases to managed implementation

概要

InvalidClientRequestTests におけるハング問題の修正。オーバーサイズの Content-Length ケースをマネージド実装にガード(保護)することで、テスト実行時のハングを解決します。これは #132321 の release/10.0 ブランチへのバックポートです。

変更内容

  • src/libraries/System.Net.HttpListener/tests/InvalidClientRequestTests.cs
    • テストロジックを修正し、オーバーサイズの Content-Length 値を処理する際のガード条件を追加
    • 変更: 7行(追加 5行、削除 2行)

パフォーマンスへの影響

影響なし

関連Issue

#132321 - オリジナルの修正PR

その他

  • 本PRはバックポートであり、元の修正は既に別PRで実装されている
  • System.Net.HttpListener テストスイートのハング問題に対するテスト側の修正
  • テスト実行時の信頼性向上に寄与

#132740 Reactivate closed-issue Extensions tests

概要

Microsoft.Extensions関連のテストケースで[ActiveIssue]属性を削除し、既に解決済みとなった課題に基づいて無効化されていたテストを再度有効化します。複数のプラットフォーム(Android、Mono、Browser)向けの計18個のテストファイル変更で、信頼性が確認された約20のテストケースが再度実行対象となります。

変更内容

  • Microsoft.Extensions.Options: OptionsFactoryTestsのAndroid専用[ActiveIssue]属性2個を削除
  • Microsoft.Extensions.Logging: スコープ関連テスト(Mono)、LoggerMessage例外テスト(Android)、フィルタ検証テスト(Android)、ファクトリ拡張テスト(Mono)から合計15個の[ActiveIssue]属性を削除
  • Microsoft.Extensions.Logging.Abstractions: LoggerMessageGeneratorのパーサー/エミッターテスト(Browser)の2個のクラスレベル[ActiveIssue]属性を削除
  • Microsoft.Extensions.Http: パイプライン検証テスト(Android)3個、DI動作テスト(Android)1個、DefaultHttpMessageHandlerBuilderテスト(Android)3個の[ActiveIssue]属性を削除
  • Microsoft.Extensions.Hosting: CreateDefaultBuilder再読み込み動作テスト1個を再有効化
  • Microsoft.Extensions.DependencyModel/DependencyInjection/Configuration: JSON読み込みテスト、コンパイル/スタックテスト、設定ファイル関連テスト計7個を再有効化
  • Microsoft.Extensions.Configuration.Binder: ジェネレータテスト(Browser)1個を再有効化

パフォーマンスへの影響

影響なし。テストの有効化・無効化のみであり、ライブラリの実行時動作やコンパイル処理に変更はありません。

関連Issue

#131327、#42036、#35970、#43411、#37669、#73432、#52527

その他

  • 5回のCI検証(Runtime build 1566711、1567223、1570824、1572330、1572593)で再有効化されたテストケースに関連した失敗は報告されていません
  • 一部テストは再有効化実験後も無効のまま維持:LoggerMessageGeneratedCodeTests.MessageTests_SuppressWarning_WarnAsError_NoError(dotnet/roslyn#52527:ビルド時のSYSLIB1015エラー)、Microsoft.Extensions.Caching.Memory.Tests(Browser互換性問題19〜25件/実行)、Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests(Browser 63個のテスト失敗)、XmlConfigurationTest.LoadKeyValuePairsFromValidEncryptedXml(Browser:AES非サポート)
  • 属性の再順序付け(XmlConfigurationTest)を含む変更あり

#132732 [mono][interp] Preserve nullable boxing for GetType

概要

Mono インタプリタが box Nullable<T> の直後に Object.GetType() を呼び出すパターンを最適化する際に、nullable ボックス化セマンティクスを無視していた問題を修正します。修正後は、populated nullable は基になる型を返し、null nullable は NullReferenceException をスローするようになります。

変更内容

  • src/mono/mono/mini/interp/transform.c: Nullable<T> を定数 GetType() 最適化から除外する条件を追加。mono_class_is_nullable() チェックを導入して、nullable 型の box パターンは通常のボックス化パスを通るようにしました。
  • src/tests/JIT/Directed/nullabletypes/gettype.cs: Mono インタプリタの box Nullable<T>; call Object.GetType() IL パターンに対する回帰テストを追加。populated と null 状態の両ケースをカバーしています。

パフォーマンスへの影響

変換時にすべての box 命令で mono_class_is_nullable() を呼び出すとメタデータ走査のオーバーヘッドが生じる可能性があるため、opcode/メソッド形状チェック(安価な処理)の後に nullable チェックを実施する順序最適化が推奨されています。

関連Issue

#132461

その他

Copilot レビューにおいて、現在の実装が CEE_CALL のみをチェックしているが、C# の実際の lowering では box Nullable<T> 後の Object.GetType() で CEE_CALLVIRT が使用される可能性があるという指摘があります。この場合、修正が意図した形で機能しない可能性があるため、CEE_CALLVIRT も含めるべき点が懸念事項として示唆されています。


#132706 Publish the cDAC usage graph package

概要

cDAC(Common Data Access Component)の使用グラフパッケージをオフィシャルビルドの公開マニフェストに含めるための変更です。CdacUsageGraphプロジェクトをtools.cdacサブセットの直接パッキング対象リストに追加することで、Microsoft.Diagnostics.DataContractReader.UsageGraph(非出荷パッケージ)がオフィシャルビルド時に確実に生成されるようになります。

変更内容

  • eng/Subsets.props: src/native/managed/cdac/tools/CdacUsageGraph/src/CdacUsageGraph/CdacUsageGraph.csprojをtools.cdacサブセットの直接参照cDACプロジェクトパッキングリストに追加(+1行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 変更はビルド定義(非コード)の修正で、ランタイムやライブラリの機能に直接的な影響はありません
  • 内部的な診断ツール関連の変更です

#132689 Update container image digests

概要

dotnet/runtimeの複数のパイプライン設定で使用されているmcr.microsoft.com/dotnet-buildtools/prereqsコンテナイメージのダイジェストを更新するために、自動化されたRenovateボットによる依存性更新PR。ビルドに使用されるコンテナイメージを最新のバージョンに更新するもので、実装上の変更は伴わない。

変更内容

  • eng/pipelines/common/templates/pipeline-with-resources.yml: 23行のコンテナイメージダイジェストを更新
  • eng/pipelines/coreclr/templates/helix-queues-setup.yml: 4行のコンテナイメージダイジェストを更新
  • eng/pipelines/installer/helix-queues-setup.yml: 2行のコンテナイメージダイジェストを更新
  • eng/pipelines/libraries/helix-queues-setup.yml: 13行のコンテナイメージダイジェストを更新

全31個のコンテナイメージダイジェストが更新され、ビルド環境の依存関係が最新化される。

パフォーマンスへの影響

影響なし(コンテナイメージの更新であり、ランタイムやコンパイラ実装の変更ではない)

関連Issue

なし

その他

  • 変更はビルドパイプライン設定のみで、公開APIや内部実装に直接の影響なし
  • .NET Renovate Botによる自動化依存性更新(v43.288.0)
  • ビルド環境の最新化による潜在的なセキュリティパッチ適用を含む可能性がある

#132673 [release/10.0] Fix concurrent Reflection.Emit TypeLoadException (#129230)

概要

10.0.6で導入された回帰を修正するパッチ。複数スレッドから同じModuleBuilderを使用して並行して別々のTypeBuilderインスタンスを生成する場合(EF Core のプロキシ/マテリアライザー生成など)に、TypeLoadExceptionがスローされる問題を解決します。修正内容は、プロパティ/イベント処理時に検索テーブルへの重複した追加を削除することです。

変更内容

  • src/coreclr/md/compiler/emit.cpp: AddPropertyToLookUpTableの冗長な呼び出し削除(4行削除)
  • src/coreclr/md/compiler/regmeta_emit.cpp: AddEventToLookUpTableの冗長な呼び出し削除(4行削除)

根本原因は、#125536でCMiniMdRW::AddPropertyToPropertyMap/AddEventToEventMap内に検索テーブル更新を追加した際、emit側の既存の追加呼び出しとの重複が発生したこと。修正により、検索テーブルの保守が単一の箇所で行われるようになり、emit側とENC/ホットリロード側の両方で正しく動作するようになります。

パフォーマンスへの影響

影響なし

関連Issue

#129230(顧客報告)、#125534(修正対象の回帰元)、#125536(回帰を引き起こしたコミット)

その他

  • リグレッション:Yes(10.0.6で導入)
  • テスト検証:System.Reflection.Emit全テストスイート合格(2640テスト、エラー0件)
  • リスク評価:Low。変更は冗長コードの削除のみで、ENC/ホットリロード側の実装には変更なし
  • mainブランチ(#130696)およびrelease/11.0(#132672)にも同じ修正が適用済み
  • 単一スレッド環境では既存テストで検出されなかった理由:検索テーブルマップがNULLのため両方の追加がno-opになるため

#132650 Make wasm composite ReadyToRun images inspectable with R2RDump

概要

WebAssembly複合型ReadyToRunイメージがR2RDumpで検査できるようにしました。WebCIL複合型の検出方法を改善し、ペイロードのファイルアライメントを修正することで、R2RDumpでの検査とマップ生成をサポートします。

変更内容

  • WebcilImageReader.cs: CLI headerのManagedNativeHeaderディレクトリを通じて、単一アセンブリおよび複合型WebCIL ReadyToRunヘッダーを検出するロジックを追加。CorFlags.ILLibraryの非存在からisCompositeを導出(PE複合型の既存ポーラリティに合致)
  • WebCilObjectWriter.cs: WebCILペイロードセグメントを外側のwasmファイル内で16バイトにアライメント。NativeCuckooFilterのファイルオフセット検証要件を保持
  • NativeHashtable.cs: Cuckooフィルタのアライメント検証を更新
  • R2RTestSuites.cs: 複合型検出とラップされたペイロードのファイルアライメントに関するテストカバレッジを追加

パフォーマンスへの影響

影響なし

関連Issue

#132650 #132693(関連するcrossgen2 --map対応)

その他

  • クロスコンパイル向けSharedパディングヘルパーが内部バッファより大きなアライメントパディングを発行可能に改善
  • PE複合型と同じポーラリティを使用することで、互換性を保持
  • 既存の厳密なcuckooフィルタアライメントチェックを復元した状態でwasmR2Rテストがパス

#132522 [release/11.0] [mono][wasm][AOT] Pin OP_MOVE destinations in the GC pin area

概要

Mono AOT on WASM環境において、OP_MOVE命令の目的地をGCピンエリアにピンすることで、GC関連の回帰を修正するバックポート。#132306の release/11.0 ブランチへのバックポートです。

変更内容

  • src/mono/mono/mini/mini-llvm.c: OP_MOVE命令の目的地をGCピンエリアにピンする処理を追加(62行追加)
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/GCTests.cs: 回帰テストを追加(87行追加)

パフォーマンスへの影響

最適化の削除による小規模な性能影響の可能性がありますが、影響を受けるケースは限定的です。

関連Issue

#132306
#70465(推定される回帰元)

その他

  • 対象: Mono AOT on WASM(顧客への影響範囲は比較的小さい)
  • リスク: 低(小規模な最適化削除のみ)
  • テスト: 自動テストがPRに含まれる
  • 顧客報告: あり(内部検出も含む)
  • 回帰判定: はい(#70465が原因の可能性)

#132420 Route QCall exceptions through marshalling

  • 作成者: @davidwrighton
  • 作成日時: 2026年08月17日 17:30:31(UTC)
  • マージ日時: 2026年09月03日 20:29:15(UTC)
  • ラベル: area-VM-coreclr

概要

QCall(CoreCLRと管理コード間の相互運用)の例外処理を改善するもので、BEGIN_QCALL/END_QCALLマクロで囲まれたネイティブ関数内で発生した例外をマーシャリング経由で安全に戻すようにします。この変更により、例外インスタンスとスタックトレースを保持しながら、プリアロケートされたOutOfMemoryExceptionとStackOverflowExceptionの専用ステータスコードをサポートします。

変更内容

主な変更

  • 新しいQCallException型とQCallExceptionMarshallerを導入し、BEGIN_QCALLベースのQCallにout QCallExceptionパラメータを追加
  • ネイティブQCallエントリポイントを更新して、例外をスレッドローカルストレージにキャプチャし、ステータス値経由で戻す
  • ネイティブマーシャラー側でQCallException構造体を定義し、例外をスレッドに格納
  • 管理側マーシャラー側で、ステータス値から例外を復元し、rethrownしてハンドルを解放

影響範囲

  • System.Private.CoreLibの170以上のQCall宣言を更新(out QCallExceptionパラメータを追加)
  • src/coreclr/vm/配下のネイティブQCall実装ファイル群を一括更新
  • exceptmacros.hとqcall.hのQCall例外処理マクロを変更
  • Threadオブジェクトにm_QCallExceptionフィールドを追加

互換性

  • BEGIN_QCALL/END_QCALLを使用しないQCallは既存ABIを保持
  • 既存のマネージ署名は隠れたリターン/パラメータ形式でラッパー経由で保持

パフォーマンスへの影響

影響なし。例外キャプチャと復元のオーバーヘッドは例外が発生した場合のパス上にのみ存在するため、正常系のパフォーマンスに影響しません。

関連Issue

#123482

その他

重要な注意事項

  • 新しいスタックトレースアサーションにより、JitStress下でCOM Primitives テストスイート全体がスキップされており、テストカバレッジの大幅な低下が報告されています
  • ドキュメント(docs/design/coreclr/botr/corelib.md)のQCall関連セクションが更新されました
  • Copilotのレビューでは3件のコメント(スタックトレースアサーション関連とマーシャラーの保守性に関する懸念)が提示されています

#132407  Fix DeflateStream retaining stale buffer reference after write failure mid-operation

概要

DeflateStreamがwrite失敗や操作中止時に、zlibの deflater/inflaterが呼び出し元から提供されたバッファへの古い参照を保持してしまう問題を修正します。例外発生後のDisposeやflushパスでも、この古い参照が読み込まれないようにします。

変更内容

  • Deflater.cs: UnsetInput()メソッドを追加し、消費されなかった入力とピン留めされた参照を破棄
  • Inflater.cs: UnsetInput()メソッドを追加し、展開パスでピン留めされた入力を削除
  • DeflateStream.cs: deflate出力write ループとCopyToデコンプレッション転送の例外発生時にエンジン入力をクリア
  • CompressionStreamUnitTestBase.cs: 失敗パス後に古い入力が保持されていないことを検証する回帰テストを追加

パフォーマンスへの影響

影響なし(例外パスのみの対応)

関連Issue

#132393

その他

レビュー指摘事項:

  • ドキュメントコメントに文法エラー("may since have" → "may have since")
  • Deflater.DeallocateInputBufferHandle()の早期リターン条件が既存の契約を破壊する可能性(ピン留めハンドルのリーク、NextInの不適切な参照残存)
  • テストコード内のArrayPoolリソースリーク対策不足(try/finallyの追加が必要)
  • ThrowsAfterNWritesStreamがWrite(ReadOnlySpan<byte>)オーバーロードに対応していない
  • リフレクション使用時のBindingFlags指定不足(非公開メンバー対応が必要)

#132159 [release/9.0] Update dependencies from dotnet/emsdk

概要

dotnet/emsdk リポジトリからの依存関係を更新するPull Requestです。Emscripten ワークロード関連のNuGetパッケージと、JIT ツール及び Mono LLVM ツールの複数プラットフォーム版を、バージョン 19.1.0-alpha.1.26329.2 から 19.1.0-alpha.1.26407.4 に更新しています。また、Microsoft.NET.Workload.Emscripten 関連パッケージを 9.0.20 から 9.0.21 にも更新しています。

変更内容

  • eng/Version.Details.xml: Emscripten ワークロード関連の依存関係バージョンを更新(Microsoft.SourceBuild.Intermediate.emsdk、Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport など)
  • eng/Versions.props: 対応するプロパティファイルのバージョンを更新
  • NuGet.config: NuGet設定の軽微な調整

更新対象は以下のプラットフォーム向けランタイムツール:

  • JIT Tools: linux-arm64、linux-x64、linux-musl-arm64、linux-musl-x64、win-arm64、win-x64、osx-arm64、osx-x64
  • Mono LLVM SDK/Tools: 上記と同様のプラットフォーム

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは自動化された依存関係更新ツール(dotnet-maestro)によって作成されています。release/9.0 ブランチ向けの更新で、2026年9月1日に dotnet/emsdk リポジトリのコミット bd30e104eaf27c7f46fee5edba0ba416e00c8f5e から生成されました。


#131928 [release/10.0] Fix profiler spurious/corrupt transition callbacks for reverse P/Invoke marshaling stubs.

概要

Reverse P/Invoke(アンマネージド→マネージド)マーシャリングスタブが、プロファイラー向けのマネージド↔アンマネージド遷移コールバックを誤って生成していた問題を修正します。これらのスタブは転送スタブではないため、生成されたコールバックが破損したFunctionIDを出力し、プロファイラーがこれを逆参照してアプリケーションクラッシュやデータ破損につながる可能性がありました。修正により、転送スタブのみが遷移コールバックを生成するようになります。

変更内容

  • src/coreclr/vm/dllimport.cpp: ILStubState::FinishEmitで遷移コールバック生成をSF_IsForwardStubフラグでガード。1行の条件追加により、Reverse P/Invoke、Reverse COM、Reverse delegateスタブは遷移コールバックを生成しなくなります。
  • プロファイラー回帰テスト追加: IJW(C++/CLI)シナリオ向けの新しいネイティブプロファイラーと、マネージド→ネイティブ→マネージド(ポインタ経由)パスを検証するテストスイートを追加。Windows専用のテストです。
    • src/tests/profiler/native/ijw/ijwprofiler.h/cpp: 遷移コールバックを検査し、FunctionIDが解決可能か検証するプロファイラー実装
    • src/tests/profiler/ijw/IjwProfileeDll.cpp/ijw.cs/ijw.csproj/CMakeLists.txt: 混合モード(C++/CLI)プロフィーと管理側テストランナー

パフォーマンスへの影響

影響なし

関連Issue

#131578(メインブランチへの元のPR)

その他

  • 互換性: 破壊的変更なし。転送スタブ(一般的なP/Invoke呼び出しパス)の動作は変わりません。
  • リスク評価: Low。コールバック生成を転送スタブのみに限定することは、EmitProfilerEndTransitionCallbackに既に存在するアサートの契約と一致します。
  • 客影響: IJW(C++/CLI)やその他のReverse P/Invokeシナリオでプロファイラーが実行されている場合、破損したFunctionIDによるプロファイリングデータの不正確性またはアプリケーションクラッシュが修正されます。

#131927 [release/10.0] [mono][interp] Fix miscompile of self-assignment via newobj with alised byref args. (#131586)

概要

Mono インタプリタの最適化層(INTERP_OPT_SUPER_INSTRUCTIONS)における correctness バグを修正するバックポート。newobj による自己再代入時に、in(byref)パラメータがエイリアスする場合、構築値の格納先を直接再ターゲットすることで ECMA-335 の newobj セマンティクス(一時領域への構築→その後コピー)が違反され、コンストラクタが既に書き込まれている記憶域を読み取り、フィールドが0クリアされる問題を修正。

// 問題となる例
a = new GEJ(a.x, a.y, a.z, a.infinity);  // aの古い値がinパラメータで読まれるべき

変更内容

  • src/mono/mono/mini/interp/transform-opt.c: interp_super_instructions の "forward dreg" 最適化に address-taken ガード(var_has_indirects)を追加。ソースまたは宛先のローカル変数がアドレス取得されている場合は最適化をスキップ。
  • src/tests/JIT/Regression/JitBlue/Runtime_122237/Runtime_122237.cs: 自己再代入シナリオを複数回反復で検証する回帰テストを新規追加。
  • src/tests/JIT/Regression/JitBlue/Runtime_122237/Runtime_122237.csproj: release/10.0 のテストレイアウト(テストごと個別 .csproj)に対応した新規プロジェクトファイル。

パフォーマンスへの影響

address-taken ローカルに対して copy-elimination 最適化をスキップするため、該当ケースでは若干のコード生成効率低下の可能性あり。ただし、correctness 関連の修正であり、パフォーマンス改善を目的としない。

関連Issue

#131586

その他

  • 回帰のタイミング: INTERP_OPT_SUPER_INSTRUCTIONS 最適化層導入時からの回帰。release/10.0 の事前のサービスフィックスではない。
  • 検証: デフォルト(自動)および強制インタプリタ tiering 両モードで確認済み。Android 環境では約 1000 回イテレーション後に tiering が発生して現象を観測。
  • リスク評価: Low。既に同じ最適化パス(interp_cprop)で使用されているガード パターンに沿った変更。
  • Copilot 指摘: ソースとデストのいずれかに対してもチェックを拡張すると、既存の interp_cprop パターンおよび PR の説明との整合性がより明確になる可能性あり。

#131509 Improve managed ilasm test coverage

概要

マネージド ilasm の単体テストスイートを大幅に拡張し、メタデータ/PE構造(エクスポート、リソース、PDB、署名、マーシャリング等)を検証するテストを追加。併せて、新たに追加されたテストシナリオに対応するために ilasm エミッタ/パーサの実装を修正・拡張。これにより ilasm のラウンドトリップテストの信頼性が向上し、将来的には検証パイプラインの改善が可能になる。

変更内容

テスト追加(内部実装):

  • TypeSignatureTests, TypeReferenceTests, TypedefTests, TypeDefinitionTests など16個の既存テストファイルを拡張
  • PropertyEventTests, PreprocessorIntegrationTests, NativeExportTests, ManifestResourceTests, DocumentCompilerTests, CompilerOptionsTests の6つの新規テストファイルを追加
  • 新しいテストでメタデータ/PE/PDB デコード検証、カスタム属性シリアライゼーション、PermissionSet、マーシャリング、ジェネリック、例外処理、エクスポート等をカバー

実装修正(内部実装):

  • GrammarVisitor.cs: カスタム属性シリアライゼーション、.module 処理、シーケンスポイント、呼び出し規約(explicit/instance)等の複数の修正
  • VTableExportPEBuilder.cs: COR ヘッダー vtable fixup ディレクトリオフセットの修正、vtable スロットシリアライゼーション、エクスポートテーブルレイアウトの改善
  • EntityRegistry.cs: メソッドボディ属性処理の調整
  • Options.cs: 公開 API 名を IsDll から Dll に変更(破壊的変更)
  • テスト基盤ヘルパーの強化(IL テキストコンパイル、IL トークンオペランド/署名デコード機能)

パフォーマンスへの影響

影響なし

関連Issue

#132346(ildasm/ilasm ラウンドトリップテスト失敗の一部対応)

その他

破壊的変更: Options クラスの公開 API で IsDll プロパティが Dll に名称変更されたため、外部利用者への互換性影響がある。

確認すべき点: Copilot レビューで複数の高優先度指摘あり(未使用 using ディレクティブ、vtable オフセット計算の正確性、InitLocals フラグの強制設定ロジック等)。これらは Copilot からの事前指摘であり、マージ前に対応が必要な可能性がある。


#131398 Add regression test for expired self-signed trusted chain (#48794)

概要

#48794で報告された、Linux上で有効期限切れの自己署名信頼証明書のチェーン構築に関する回帰テストを追加するPRです。有効期限を無視する設定でオンライン失効確認を実行した際に、WindowsとLinuxで異なる結果が返されていた問題が既に修正されていることを検証するテストです。

変更内容

  • src/libraries/System.Security.Cryptography/tests/X509Certificates/DynamicChainTests.cs
    • 新規テスト BuildChainForExpiredSelfSignedCertificate を追加
    • 失効確認モード(NoCheckとOnline with ExcludeRoot)を複数パターンでテスト
    • 有効期限切れの信頼済み自己署名証明書がチェーン構築に成功し、NotTimeValidのみを報告することを検証
    • UntrustedRootやPartialChainステータスが報告されないことを確認

パフォーマンスへの影響

影響なし

関連Issue

#48794、#66968

その他

  • テストのみの変更で、製品コードの変更はありません
  • この問題は#66968(「Fix revocation processing on expired chains」)を含む過去の修正により、既に.NET mainブランチでは解決されています
  • WindowsおよびmacOSの動作とのクロスプラットフォーム一貫性を検証するためのリグレッションテストです

#130842 Generate less metadata for generic compositions

概要

NativeAOT (ILCompiler) のメタデータ生成を最適化するPRです。ジェネリック合成情報を出力する際に、完全に構築された EEType / MethodTable ノードを強制せず、メタデータ用の軽量なパスを導入することで、メタデータサイズを削減します。

変更内容

  • NodeFactory.cs: 新たに MaximallyMetadataEnabledType メソッドを追加し、ジェネリック合成引数用のメタデータ対応 EEType シンボルを選択。既存の "constructed" ジェネリック合成キャッシュ/API を "metadata-enabled" にリネーム。
  • GenericCompositionNode.cs: metadataEnabled フラグにリネーム。ジェネリック合成の型引数選択時に MaximallyMetadataEnabledType を使用。
  • GvmDispatchCellInfoSectionNode.cs: GVM(Generic Virtual Method)の出力情報生成と依存関係を metadata-enabled ジェネリック合成に切り替え。
  • EETypeNode.cs: リフレクション可視のインスタンス化詳細情報出力時に metadata-enabled ジェネリック合成・型を使用。

パフォーマンスへの影響

メタデータサイズの削減が期待されます。完全に構築された MethodTable の生成を回避することで、NativeAOT コンパイル時の中間データ量が減少し、コンパイル効率が向上する可能性があります。(具体的なベンチマーク数値は記載なし)

関連Issue

#129609

その他

注意点: Copilot レビューでは、新しい MaximallyMetadataEnabledType メソッドが AsyncContinuationType を適切に処理していない可能性が指摘されています。デバッグビルドで assert エラーが発生する可能性があり、既存の MaximallyConstructableType のような特殊ケース処理のミラーリングが必要である可能性があります。


目次