注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #133903 [release/9.0] Update dependencies from dotnet/emsdk
- #133902 Fix trim analyzer assertion for event initializers
- #133900 ILTrim: Remove unused beforefieldinit constructors
- #133899 [release/8.0] Update dependencies from dotnet/emsdk
- #133878 Use CoreCLR queue selection for WASI runtime tests
- #133856 [wasm] Extract crossgen2 resolution test targets
- #133855 JIT: Fix GC reporting for xarch interlocked reference results
- #133851 [release/10.0] Source code updates from dotnet/dotnet
- #133850 Update container image digests
- #133846 Move RuntimeCustomAttributeData to shared CoreLib
- #133840 [release/10.0] Update dependencies from dotnet/runtime-assets
- #133806 JIT: Preserve receiver side effects in constrained GetType calls
- #133805 JIT: Preserve evaluation order in GC bulk copies
- #133775 Fix github60486 AOT caller identity and frame enumeration
- #133768 Populate runtime-async DiagnosticIP for Wasm R2R
- #133767 Report failed interface devirtualization lookup
- #133765 JIT: normalize loop-cloning offset ADD types
- #133749 Preserve profiling for managed intrinsic implementations
- #133742 [CreateDump] Use _exit after createdump launch failures
- #133740 JIT: Fix MD array store evaluation order
- #133735 JIT: Preserve constrained boxing order
- #133734 Fix runtime diagnostics SOS test configuration
- #133725 JIT: preserve importer stack for negative constant Log2
- #133686 JIT: Fix hang when a switch targets an empty-block cycle
- #133685 JIT: Respect offsets in non-null assertion propagation
- #133682 [release/10.0] Source code updates from dotnet/dotnet
- #133666 Undo float->small integer saturation workaround
- #133649 JIT: Initialize Wasm resume IP to a rethrowing value
- #133640 [release/10.0] Fix cgroup v2 memory limit traversal at hierarchy root
- #133607 [release/11.0] Avoid reducing unused Vector2 and Vector3 elements
- #133599 Fix System.Text.Json source-generated unsafe accessors
- #133597 JIT: fix BITCAST removal widening a small-typed load
- #133544 Enable I2C linking via PR description
- #133413 [wasm] Resolve crossgen2 through the SDK
- #133372 [release/11.0] Source code updates from dotnet/dotnet
- #133342 Use CoreCLRs GetCustomAttributes implementation in native AOT
- #133336 [release/10.0] Update dependencies from dotnet/xharness
- #133199 Fix ManagedWebSocket send cancellation leaving state Open
- #133150 [ci-scan-feedback] Allow fixer to read scanner-authored KBE bodies
- #132996 [release/8.0] Update dependencies from dotnet/arcade
- #132763 Add fast path for Overlaps when other is HashSet with same equality comparer and has more items
- #132282 Handle exceptions from parallel ReadyToRun compilation
- #132221 JIT: contain shifts into byref ADD on arm64
- #131701 Support unsafe evolution in ComInterface, ComClass, JSImport, JSExport and VtableIndexStub generators
#133903 [release/9.0] Update dependencies from dotnet/emsdk
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月14日 17:59:55(UTC)
- マージ日時: 2026年09月14日 23:38:46(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/emsdkリポジトリからの依存関係を更新するコミットです。Emscripten関連のNuGetパッケージを最新のServicing版に更新しました。
変更内容
- NuGet.config: ソースフィード設定の更新(1行追加、1行削除)
- eng/Version.Details.xml: 以下の依存関係バージョンを更新
Microsoft.SourceBuild.Intermediate.emsdk: 9.0.21-servicing.26460.2 → 9.0.21-servicing.26464.5Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport: 9.0.21-servicing.26460.2 → 9.0.21-servicing.26464.5Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100: 9.0.21 → 9.0.21(バージョン据え置き)
- eng/Versions.props: バージョンプロパティの同期更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
これは自動更新PRで、dotnet-maestroボットが生成しました。release/9.0ブランチ向けのServicing更新(26460.2から26464.5)です。
#133902 Fix trim analyzer assertion for event initializers
- 作成者: @jtschuster
- 作成日時: 2026年09月14日 17:49:40(UTC)
- マージ日時: 2026年09月14日 20:21:20(UTC)
- ラベル: linkable-framework area-Tools-ILLink
概要
Trim Analyzer がフィールドライク・イベント初期化子(例:event EventHandler EventNotNull = null!;)を処理する際にアサーション失敗が発生していた問題を修正します。Roslyn が IEventSymbol をイベント初期化子の操作ブロック所有者として使用する場合、Analyzer がメソッド・フィールド・プロパティのみを想定していたため、NativeAOT チェックビルドで MethodBodyValue のアサーションがトリガーされていました。本修正により、IEventSymbol をサポートし、イベント初期化子に関するリグレッション テストケースを追加しました。
変更内容
- MethodBodyValue.cs: 操作ブロック所有者チェックで
IEventSymbolを受け入れるよう修正 - LocalDataFlowVisitor.cs: イベント所有者の検証を更新(ただし lambda 初期化子パスは未対応)
- EventDataFlow.cs: イベント初期化子のリグレッション テストケースを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
未解決の問題: Copilot レビューで指摘されている通り、LocalDataFlowVisitor.cs の VisitFlowAnonymousFunction メソッドでも IEventSymbol サポートが必要です。フィールドライク・イベント初期化子がラムダを含む場合(例:event EventHandler E = (s, e) => { };)、この lambda パスでもアサーションがトリガーされる可能性があります。本修正では対応されていません。
#133900 ILTrim: Remove unused beforefieldinit constructors
- 作成者: @jtschuster
- 作成日時: 2026年09月14日 17:49:09(UTC)
- マージ日時: 2026年09月14日 23:39:48(UTC)
- ラベル: area-ReadyToRun
概要
ILTrimの静的コンストラクタ依存性追跡ロジックを修正し、未使用のbeforefieldinit静的コンストラクタとそれに関連する未使用の静的フィールドを安全に削除できるようにしました。明示的な静的コンストラクタや保持される静的フィールドに必要なコンストラクタは保持されます。この修正によりGenerics.GenericConstraintsテストが改善され、3つの古い予想失敗エントリが解消されます。
変更内容
- TypeDefinitionNode.cs:
BeforeFieldInit最適化を適用し、保持される静的コンストラクタの依存性追跡ルールを調整 - FieldDefinitionNode.cs: 保持される静的フィールドから型初期化子への依存性リンクを追加(+11行)
- ILTrimExpectedFailures.txt: 解決済みの予想失敗エントリを3件削除(-5行)
パフォーマンスへの影響
正確な測定値は提供されていませんが、本修正により不必要な静的コンストラクタと静的フィールドの削除が可能になるため、トリミング後のアセンブリサイズとメモリ使用量が削減される見込みです。
関連Issue
なし
その他
本PRは内部的なILTrimツール(.NETランタイムのIL トリミングツール)の改善であり、公開APIへの影響はありません。beforefieldinitフラグは、CLRが明示的な静的コンストラクタなしに型初期化を実行できることを示すメタデータフラグであり、この最適化はそのセマンティクスを正しく活用しています。
#133899 [release/8.0] Update dependencies from dotnet/emsdk
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月14日 17:37:25(UTC)
- マージ日時: 2026年09月14日 23:38:41(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/emsdk リポジトリの依存関係を更新するPull Requestです。WebAssembly開発環境(Emscripten)関連のパッケージが更新されます。
変更内容
- NuGet.config: NuGet設定ファイルの更新(+1行/-2行)
- eng/Version.Details.xml: 依存関係バージョン情報の更新(+3行/-3行)
Microsoft.SourceBuild.Intermediate.emsdk: 8.0.32-servicing.26459.4 → 8.0.32-servicing.26464.4Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100: 8.0.32 → 8.0.32
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- このPRは自動依存関係更新ツール(dotnet-maestro)による定期更新です
- release/8.0ブランチへのサービシング更新です
- emsdk側の変更に基づいた更新で、WebAssembly関連のワークロードマニフェストが対象です
#133878 Use CoreCLR queue selection for WASI runtime tests
- 作成者: @akoeplinger
- 作成日時: 2026年09月14日 13:36:47(UTC)
- マージ日時: 2026年09月14日 15:00:19(UTC)
- ラベル: area-Infrastructure
概要
WASI CoreCLR ランタイムテストで、libraries submission normalizationに依存する代わりに、CoreCLR キューセレクタを使用して public/internal WASI キューを選択するよう変更します。これにより Helix キュー管理が統一され、テスト実行の信頼性が向上します。
変更内容
- helix-queues-setup.yml: CoreCLR キューマッピングに
wasi_wasmの public/internal キュー定義を追加 - wasi-wasm-coreclr-runtime-tests.yml: WASI ランタイムテストを CoreCLR キューセレクション方式に切り替え
- wasi-wasm-coreclr-build-only.yml: キューテンプレートドキュメント参照を更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
変更は Helix パイプライン構成のみで、ビルドやランタイム動作への影響はありません。3つのファイルすべてレビュー済みで、未解決の問題は報告されていません。
#133856 [wasm] Extract crossgen2 resolution test targets
- 作成者: @radekdoulik
- 作成日時: 2026年09月14日 12:44:55(UTC)
- マージ日時: 2026年09月14日 14:54:24(UTC)
- ラベル: arch-wasm area-Infrastructure
概要
WebAssemblyネイティブビルドテストのNativeRelinkResolvesCrossgen2WithoutReadyToRunテストにおいて、インラインMSBuildアサーションをターゲットファイル(NativeRelinkResolvesCrossgen2WithoutReadyToRun.Build.targets)に抽出する変更です。テストロジックはMSBuildターゲット資産として再利用可能にしながら、既存の検証(build/publish変種、欠落パック診断)を維持します。
変更内容
- CoreCLRWasmNativeDefaultsTests.cs: テストメソッド内のインラインアサーション15行を削除し、外部ターゲットファイルの参照に置き換え
- NativeRelinkResolvesCrossgen2WithoutReadyToRun.Build.targets: 新規ファイル。pack要求の検証、SDK crossgen2解決、ヘルパーテーブル、ネストされたpublish期待値の検証ターゲットを追加。生成されたテストプロジェクトにコピー・インポートされます
パフォーマンスへの影響
影響なし
関連Issue
#133413のフォローアップ対応
その他
- テスト検証: build/publish変種両方で4件合格、失敗・スキップなし
- 期待値ガード機構により、欠落または無効な値の場合も最終マーカーの前で失敗
- 本番の crossgen2取得およびpack バージョンオーバーライドは変更なし
- 検証環境: macOS arm64のReleasビルド、SDK 12.0.100-alpha.1.26458.102、既存リポジトリ生成WebAssembly/nativeスdkパックオーバーレイ使用
- ブラウザ実行やLinux/Windows環境での追加検証は未実施
#133855 JIT: Fix GC reporting for xarch interlocked reference results
- 作成者: @EgorBo
- 作成日時: 2026年09月14日 11:05:02(UTC)
- マージ日時: 2026年09月14日 23:34:59(UTC)
- ラベル: area-CodeGen-coreclr
概要
x86/x64アーキテクチャにおいて、インターロック操作(Interlocked.Exchange、Interlocked.CompareExchange)の戻り値がオブジェクト参照の場合、JITがGC報告情報を正しく生成していなかった問題を修正しました。修正前は戻り値レジスタがGC参照として追跡されず、GCがヒープポインタを誤って見落とす可能性がありました。
変更内容
- src/coreclr/jit/emitxarch.cpp:
xchgおよびcmpxchg命令の実行後、戻り値レジスタをライブなGC参照として正しく追跡するようGC報告情報を修正しました。具体的には、命令後のGCレジスタ生存情報(gcrRegs)を適切に更新します。
パフォーマンスへの影響
影響なし。本修正はGC報告情報の正確性向上のみで、生成コードやランタイムパフォーマンスに変化はありません。
関連Issue
その他
- 内部実装変更: JITコンパイラの内部的なGC情報生成ロジックの修正であり、公開APIへの影響なし
- 互換性: 既存コード動作への影響なし(むしろ潜在的なGCバグを修正)
- Copilotコメント: 回帰テスト対象となる参照生存性の監視やGC情報検証テストの追加が推奨されています
#133851 [release/10.0] Source code updates from dotnet/dotnet
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月14日 09:30:53(UTC)
- マージ日時: 2026年09月14日 16:00:27(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/dotnetリポジトリ(release/10.0.1xxブランチ)からのコードフローアップデートです。このPRはVMR(Virtual Monolithic Repository)を通じた複数のコンポーネント間の依存関係更新を含みます。Roslyn、Arcade、SDK、Runtimeなど主要なリポジトリの最新の変更が統合されています。
変更内容
- NuGet.config: NuGetソース設定の更新(1行追加、1行削除)
- eng/Version.Details.props / .xml: コンポーネント依存関係の詳細バージョン更新(29行の変更)
- eng/Versions.props: バージョン情報の更新
- global.json: グローバルバージョン設定の更新(3行の変更)
- eng/common/core-templates/job/onelocbuild.yml: ローカライゼーションビルドテンプレート設定の調整(17行追加、29行削除)
主要な依存関係更新(ビルド日: 2026年9月12日):
- Microsoft.CodeAnalysis関連: 5.0.0-2.26458.105 → 5.0.0-2.26461.103
- Microsoft.DotNet.Arcade.Sdk他のビルドツール: 10.0.0-beta.26458.105 → 10.0.0-beta.26461.103
- NuGet.Frameworks等: 7.0.3-rc.45905 → 7.0.3-rc.46203
- その他各種SDKおよびランタイムコンポーネント
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRは自動化されたコードフローアップデート(maestro)による更新です。関連する元リポジトリの変更は以下の通りです:
- dotnet/arcade
- dotnet/roslyn
- dotnet/runtime
- dotnet/sdk
- dotnet/source-build-assets
- dotnet/templating
- dotnet/windowsdesktop
- dotnet/wpf
#133850 Update container image digests
- 作成者: @dotnet-renovate-bot
- 作成日時: 2026年09月14日 08:12:03(UTC)
- マージ日時: 2026年09月14日 15:36:12(UTC)
- ラベル: area-Infrastructure community-contribution
概要
ビルドパイプラインで使用されるコンテナイメージ mcr.microsoft.com/dotnet-buildtools/prereqs のダイジェスト値を更新する自動依存性更新PR。複数のPipeline設定ファイル内の42個のコンテナイメージダイジェストを新しいバージョンに置き換えています。
変更内容
- eng/pipelines/common/templates/pipeline-with-resources.yml: 25行分のコンテナイメージダイジェスト更新
- eng/pipelines/coreclr/templates/helix-queues-setup.yml: 10行分のダイジェスト更新
- eng/pipelines/installer/helix-queues-setup.yml: 4行分のダイジェスト更新
- eng/pipelines/libraries/helix-queues-setup.yml: 22行分のダイジェスト更新
すべて mcr.microsoft.com/dotnet-buildtools/prereqs のダイジェスト値の置き換え(内部実装の変更)
パフォーマンスへの影響
不明(提供情報に記載なし)
関連Issue
なし
その他
このPRは .NET Renovate Bot により自動生成された依存性更新です。コンテナイメージの定期的な更新であり、ビルドツールチェーンの最新化を目的としています。
#133846 Move RuntimeCustomAttributeData to shared CoreLib
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月14日 07:05:27(UTC)
- マージ日時: 2026年09月14日 21:11:54(UTC)
- ラベル: area-System.Reflection
概要
RuntimeCustomAttributeDataをコアライブラリ間で共有化するためのリファクタリングです。CoreCLR固有の実装を部分的なファイルに抽出し、Mono向けには除外した共有ソースを条件付きで組み込みます。これにより、複数のランタイム実装間でのコード重複を削減しながら、ランタイム固有のロジックを分離します。
変更内容
- RuntimeCustomAttributeData.CoreCLR.cs (新規追加): CoreCLR固有の実装ロジック(866行)を専用ファイルに抽出
- RuntimeCustomAttributeData.cs: 共有実装のみを保持(854行削除、共有ロジック残存)
- System.Private.CoreLib.Shared.projitems: 非Mono向けに共有ソースの条件付きインクルードを追加
- CoreCLR/System.Private.CoreLib.csproj: CoreCLR部分ファイルのインクルード
- NativeAOT/System.Private.CoreLib.csproj: 冗長な直接インクルードを削除
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
これは複数ランタイム(CoreCLR、NativeAOT、Mono)向けのコアライブラリ構造の整理です。部分クラス(partial)を活用してランタイム固有コードと共有コードを分離し、メンテナンス性を向上させます。既存の動作は保持され、各ランタイムへの正しい配線が確認されています。
#133840 [release/10.0] Update dependencies from dotnet/runtime-assets
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月14日 02:02:17(UTC)
- マージ日時: 2026年09月14日 05:47:40(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/runtime-assetsリポジトリから依存関係を更新するPull Request。複数のテストデータおよびランタイムアセットパッケージを10.0.0-beta.26457.2から10.0.0-beta.26462.2にアップグレード。
変更内容
- eng/Version.Details.props: バージョン情報を更新(+15/-15行)
- eng/Version.Details.xml: 依存関係メタデータを更新(+30/-30行)
更新パッケージ一覧(計15パッケージ):
- Microsoft.DotNet.CilStrip.Sources
- 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
なし
その他
- このPull Requestはdotnet-maestro[bot]により自動生成されたもので、定期的な依存関係更新が目的
- release/10.0ブランチ向けの更新
- ビルド日時: 2026年9月13日 2:43:09 UTC
#133806 JIT: Preserve receiver side effects in constrained GetType calls
- 作成者: @EgorBo
- 作成日時: 2026年09月12日 21:52:13(UTC)
- マージ日時: 2026年09月14日 13:21:00(UTC)
- ラベル: area-CodeGen-coreclr
概要
constrained Object.GetType() 最適化でレシーバーの副作用(境界チェック、null チェック等)が破棄される JIT バグを修正します。ボックス化を直接型構築に置き換える際にレシーバーの評価を保持し、ボックス化最適化の利点を維持しながら必要なチェック処理を復元します。
変更内容
- src/coreclr/jit/importercalls.cpp: constrained
GetType()展開時にレシーバー式の評価を保持し、ボックス化がするはずの null チェックと他の副作用を復元する処理を追加(+5/-1) - src/tests/JIT/Regression_ro_2/Runtime_133715.cs: 正常系、境界エラー、null 参照ケースの回帰テストを追加(+32)
パフォーマンスへの影響
ボックス化回避の最適化自体は維持されるため、主要なパフォーマンス改善効果は変わりません。ただし、レシーバーの副作用評価が必要な場合は追加の処理が発生します。
関連Issue
その他
- この修正は JIT コンパイラの内部実装に関する変更であり、公開 API への影響はありません
- constrained call の最適化時にレシーバーの null チェック(ボックス化操作で必須)を保持することで、予期しないクラッシュや不正な動作を防ぎます
#133805 JIT: Preserve evaluation order in GC bulk copies
- 作成者: @Copilot
- 作成日時: 2026年09月12日 21:39:03(UTC)
- マージ日時: 2026年09月14日 13:21:20(UTC)
- ラベル: area-CodeGen-coreclr
概要
GC bulk-copy lowering(ガベージコレクションのバルクコピー最適化)において、評価順序を保持するように修正しました。従来は宛先のnullチェックが送信元の評価より前に実行されるため、送信元の副作用がスキップされたり送信元例外がマスクされたりする問題がありました。Unsafe.Add(ref dst, Index()) = GetSrc()のような場合、GetSrc()は必ずコピー実行前に評価される必要があります。
修正内容:
- nullチェックを両アドレス評価後まで遅延させる
GT_PUTARG_*ノードをnullチェック後に移動させ、引数配置はヘルパー呼び出しに隣接したまま維持
変更内容
- src/coreclr/jit/lower.cpp: GC bulk-copy lowering時の評価順序を調整。nullチェック実行のタイミングを遅延させ、引数配置ノードの位置を最適化
- src/tests/JIT/Regression_ro_2/Runtime_133587.cs: 評価順序と例外処理をカバーする6つの回帰テストを追加。有効/null宛先と有効/null/例外発生源の組み合わせで、評価順序・例外型・コピー結果を検証
パフォーマンスへの影響
影響なし。この変更はコード生成順序の修正であり、最終的な実行結果を変えるものではなく、正確な動作保証が目的です。
関連Issue
その他
- この修正はJITコンパイラの内部実装(lower.cpp)に対するもので、公開APIへの影響はありません
- 破壊的変更ではなく、不正な動作の修正です
- Copilotによるレビューは"Needs a closer look"状態で、人間によるレビューが推奨されています
#133775 Fix github60486 AOT caller identity and frame enumeration
- 作成者: @tannergooding
- 作成日時: 2026年09月12日 07:07:57(UTC)
- マージ日時: 2026年09月14日 22:19:41(UTC)
- ラベル: area-Codegen-AOT-mono
概要
AOT環境(NativeAOTおよびMono LLVM AOT)でのMethodBase.GetCurrentMethodとFrameEnumerationの動作を修正しました。Mono LLVM最適化によるインライン化を防止し、NativeAOTでのリフレクションメタデータ欠落時の処理を改善します。
変更内容
- src/mono/mono/mini/intrinsics.c: Mono LLVM向けスタックウォーク実装呼び出し元への
noinline属性追加(3行) - src/tests/Loader/classloader/DefaultInterfaceMethods/regressions/github60486.cs: テストケースの改善。4フレーム再帰検証は維持しつつ、NativeAOT環境で無関連なフレーム(
TestEntryPoint)からのメタデータ欠落を許容(+2/-1行)
パフォーマンスへの影響
影響なし。noinline属性はMono LLVM最適化によるインライン化を防止しますが、既存のLLVM-only intrinsicと同等の動作であり、パフォーマンス低下は想定されていません。
関連Issue
#133798、#133707、#133774、#60334
その他
- Windows x64で、NativeAOT Checked(null参照エラー→通過)、Mono LLVM AOT Release(メソッド名エラー→通過)を含む4つの構成で検証済み
- Copilotレビューでは「フロントエンドインライン化の拒否がまだ必要」という指摘あり
- Mono MiniJIT、CoreCLRなど他の構成は既に通過していることを確認
#133768 Populate runtime-async DiagnosticIP for Wasm R2R
- 作成者: @davidwrighton
- 作成日時: 2026年09月12日 01:07:01(UTC)
- マージ日時: 2026年09月14日 21:18:47(UTC)
- ラベル: area-ReadyToRun
概要
WebAssembly ReadyToRun形式でDiagnosticIP(診断用仮想IP)を実装し、runtime-async メソッドチェーンのスタックトレース精度を向上させるPRです。メソッド相対の仮想IP再配置を記録するコンパクトな固定アップセクション(delta/count/stride ULEB128形式)を追加し、ReadyToRun形式バージョンを29.0に引き上げています。旧runtimeは新形式のイメージを拒否します。
変更内容
コンパイラ・ツール関連:
WasmAsyncResumeInfoFixupsNode.cs,WasmMethodRelativeVirtualIPNode.cs: メソッド相対仮想IP記号の管理と、コンパクトな固定アップチャンクの生成WebCilObjectWriter.cs: Wasm非同期固定アップセクション(delta/count/stride ULEB128エンコーディング)の実装CorInfoImpl.cs,CorInfoImpl.ReadyToRun.cs: 固定アップ処理と公開ロジック統合、JIT完了後の公開で再試行の正確性を保証Relocation.cs,ObjectDataBuilder.cs: 新しい再配置データ型の定義・サポートReadyToRunCodegenNodeFactory.cs: 固定アップノード登録
ランタイム・形式定義:
readytorun.h: ReadyToRun形式定義更新(v29.0へ昇格)ModuleHeaders.cs/h: マネージ・NativeAOT形式定数更新readytoruninfo.cpp: ランタイム固定アップ検証・適用処理(ExecutionManager::AddVirtualIPRange後にモジュール仮想IPベース適用)jiteeversionguid.h: JIT/EEインターフェース バージョン更新corinfo.h: JIT再配置タイプ追加emit.cpp: Wasm診断IP再配置の発行
テスト・検証:
diagnostic-ip-stacktrace.cs/csproj: 非同期スタックトレース回帰テスト(ThrowAfterResume→Level4→Level3→Level2→Level1→TestEntryPointの順序検証)WasmR2RAssert.cs,R2RTestSuites.cs: 発行固定アップデータの検証helpers.cpp: フレームポインタ欠損時のWasm処理async.csproj,Directory.Build.targets: Wasm runtime-async ビルド設定
パフォーマンスへの影響
影響なし(診断機能の追加で実行時オーバーヘッドはなし。コンパクトなULEB128エンコーディングによるイメージサイズへの影響は最小限)
関連Issue
その他
破壊的変更: ReadyToRun形式v29.0への昇格により、旧runtimeは新形式のWasm ReadyToRunイメージを受け入れません。
重要な設計ポイント: JIT コード/データの公開が成功した後にのみ固定アップ位置を公開し、再試行の正確性を保証します。旧動作ではDiagnosticIPがnullのため、スタックトレースから中間フレームが欠落していました。
**テ
#133767 Report failed interface devirtualization lookup
- 作成者: @jtschuster
- 作成日時: 2026年09月12日 00:02:43(UTC)
- マージ日時: 2026年09月14日 18:04:41(UTC)
- ラベル: area-ReadyToRun
概要
マネージド インターフェース デバーチャル化で、インターフェース メソッドの実装が見つからない場合に CORINFO_DEVIRTUALIZATION_FAILED_LOOKUP を報告するように変更しました。CoreCLR VM JIT インターフェースの動作に合わせ、診断精度を向上させます。予期しない失敗後も CORINFO_DEVIRTUALIZATION_UNKNOWN を報告し、診断アサーションをトリガーします。
変更内容
- src/coreclr/tools/Common/Compiler/DevirtualizationManager.cs: インターフェース スロット検索後に実装が見つからない場合、
CORINFO_DEVIRTUALIZATION_FAILED_LOOKUPを報告する処理を追加(+5行)
パフォーマンスへの影響
影響なし
関連Issue
その他
- 検証:
./build.sh clr+libs.pretest -rc checked -lc releaseで実行 ComImportUnimplementedMethodテストを composite Crossgen2 環境(CompositeBuildMode=1,LargeVersionBubble=1)で検証- 変更は no-class-target パス内に限定され、既存の診断ロジックを保持
#133765 JIT: normalize loop-cloning offset ADD types
- 作成者: @Copilot
- 作成日時: 2026年09月11日 23:28:21(UTC)
- マージ日時: 2026年09月14日 23:35:34(UTC)
- ラベル: area-Infrastructure
概要
Loop Cloningがushort型の上限値(例:ushort n + 1000)に対して無効なADD ushort命令を生成していた問題を修正します。JIT IRで変数オフセットのADDにgenActualType(node)を使用して、ローカル変数の正確な型を保持するよう改善されました。
変更内容
- loopcloning.cpp: 変数オフセット加算時の型を
genActualType()で正規化し、ushortのような小型タイプでも正しいIR型が生成されるよう修正 - OffsetLimit.cs:
ushort境界ケース(65000 + 1000など)と短配列の例外スローテストを追加し、回帰防止カバレッジを拡充
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#133749 Preserve profiling for managed intrinsic implementations
- 作成者: @tannergooding
- 作成日時: 2026年09月11日 22:45:11(UTC)
- マージ日時: 2026年09月14日 02:10:17(UTC)
- ラベル: area-CodeGen-coreclr
概要
#132145で、Half変換に[Intrinsic]属性を追加したことにより、最小限のプロファイリング下での動的プロファイリングが意図しず無効化されました。これにより、AVX10.1非対応ハードウェアでdouble-to-Half変換の管理実装がインライン化されず、BinaryWriter.WriteHalfのパフォーマンスが低下しています。本PRでは、intrinsic実装のプロファイリング適格性を明示的な除外リスト方式に変更し、SIMD APIやコンパイラ/ランタイムプリミティブを除く通常の管理intrinsicメソッドをプロファイリング対象として復活させます。
変更内容
- namedintrinsiclist.h: Intrinsicマーカーとサポートクエリ識別子を追加
- hwintrinsic.h/cpp: Intrinsic認識とISAサポート解決を分離。
lookupNamedIntrinsicとlookupIdがISA可用性に依存しない正確な操作IDを返し、import時に明示的に解決 - importercalls.cpp: Intrinsic import処理と解決ハンドリングを更新。プラットフォームintrinsicマーカーの処理を追加
- fgprofile.cpp: 最小限プロファイリング下での適格性ポリシーを再定義。通常の管理intrinsic(数値変換、文字列/span操作)、Vector2/3/4/Quaternion/Planeは適格。SIMD explicit intrinsics、サポートクエリ、Unsafe intrinsics、コンパイラ/ランタイムプリミティブは除外
- fgbasic.cpp: インライン検証時に解決されたID使用。PNSE呼び出しをthrow観測として記録
パフォーマンスへの影響
Windows x64 / Ryzen 9 7950X(AVX10.1非対応)上でのベンチマーク結果:
| ベンチマーク | ベースライン | プロファイリング有効 | 比率 |
|---|---|---|---|
WriteHalf |
10.754 ns | 8.636 ns | 0.80 |
ConvertDouble |
6.049 ns | 4.711 ns | 0.78 |
WriteHalfPrecomputed(コントロール) |
4.191 ns | 4.292 ns | 1.03 |
管理intrinsic実装のRoundPackToHalfなどがプロファイリングに基づいてインライン化可能になることで、20-22%のパフォーマンス向上を確認。コントロール値は測定誤差の範囲内。
関連Issue
その他
- 37個の既存テスト(36個のintrinsic runner + InstrumentedTiersテスト)がパス
- Windows x64 Checked/Release JIT builds検証済み
- ARM64、AVX10.1ハードウェア、NativeAoT実行可能ファイルは未検証
- 15個のR2Rイメージ比較で、no-AVX、x86-64-v3、AVX10.1ターゲット間で完全一致を確認
#133742 [CreateDump] Use _exit after createdump launch failures
- 作成者: @mdh1418
- 作成日時: 2026年09月11日 20:31:55(UTC)
- マージ日時: 2026年09月14日 23:51:49(UTC)
- ラベル: area-Diagnostics-coreclr
概要
CoreCLR の createdump ランチャー子プロセスが失敗時に、親プロセスの診断エンドポイント(ソケット/パイプ)を削除してしまう問題を修正します。失敗時に exit(-1) の代わりに _exit(EXIT_FAILURE) を使用することで、親プロセスの状態に影響を与える継承された破棄処理の実行を回避します。
変更内容
- src/coreclr/pal/src/thread/process.cpp: ハンドシェイク失敗時と
execve失敗時にexit(-1)を_exit(EXIT_FAILURE)に変更(2箇所) - src/coreclr/nativeaot/Runtime/unix/PalCreateDump.cpp: 同様に
exit(-1)を_exit(EXIT_FAILURE)に変更(2箇所)
技術的詳細:
- 変更はフォークされた子プロセスの失敗パスのみに適用
exit()が呼び出される場合、PALのプロセスシャットダウンデストラクタが実行され、親プロセスと共有されるファイルシステム名前空間内の診断エンドポイント(/tmp/clr-debug-pipe-*,/tmp/dotnet-diagnostic-*)がアンリンクされてしまう問題を解決_exit()は継承された破棄処理を実行せず、カーネルが子プロセスのファイルディスクリプタをクローズするexecve成功時は既存のSOCK_CLOEXECとFD_CLOEXECフラグが継続して機能
パフォーマンスへの影響
影響なし(ユーザースペース破棄処理のスキップにより若干の高速化の可能性あり)
関連Issue
その他
- Copilot レビューコメント: NativeAOT の同様の失敗パスについて、同様の修正またはスコープを明確にする必要があるとの指摘
- 検証済み:不正なパーミッション(
0644)のcreatedumpで再現確認、修正後は診断ソケットが保持される - CoreCLR Release は変更で正常にリビルド
#133740 JIT: Fix MD array store evaluation order
- 作成者: @AndyAyersMS
- 作成日時: 2026年09月11日 20:29:41(UTC)
- マージ日時: 2026年09月14日 14:41:37(UTC)
- ラベル: area-CodeGen-coreclr
概要
多次元配列のストア操作において、NULL チェックと境界チェックが右辺値(RHS)のサイドエフェクトより先に実行される評価順序の問題を修正しました。RHS 値をあらかじめ Spill することで、正しい評価順序を保証します。
変更内容
- src/coreclr/jit/importercalls.cpp: MD 配列ストア展開時に、サイドエフェクトを持つ RHS 値を配列チェック前に Spill するロジックを追加
- src/tests/JIT/opt/MDArray/MDArrayIntrinsicExpansion.cs: 2D/3D 配列の評価順序に関する回帰テストを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
懸念事項: Copilot による指摘として、GTF_SIDE_EFFECT フラグのみを確認する Spill ガード処理では、GTF_ORDER_SIDEEFF フラグを持つ値(例:GT_CATCH_ARG)が見落とされ、ストア内に埋め込まれたままになる可能性があることが報告されています。診断チェック(fgdiagnostic.cpp:3738-3746)での評価順序不変量違反につながる可能性があります。
#133735 JIT: Preserve constrained boxing order
- 作成者: @AndyAyersMS
- 作成日時: 2026年09月11日 19:35:11(UTC)
- マージ日時: 2026年09月14日 20:52:59(UTC)
- ラベル: area-CodeGen-coreclr
概要
JIT コンパイラの制約付き呼び出し(constrained call)処理を修正し、ボックス化が引数の副作用を正しく観察するようにしました。引数評価中に実行される変更がボックス化に反映されるよう、レシーバー変換前に副作用をスピルします。
変更内容
- src/coreclr/jit/importercalls.cpp: 制約付き呼び出しの副作用処理を調整。レシーバー変換前に引数の副作用をスピルするロジックを追加(+11/-5)
- src/tests/JIT/Regression_2/Runtime_133716.cs: 制約付きボックス化の評価順序に関する回帰テストを追加(+54)
パフォーマンスへの影響
影響なし
関連Issue
その他
- このPRは JIT の内部実装(importercalls.cpp)を修正するもので、公開APIへの影響はありません
- Copilot によるレビューで、LDVIRTFTN パスでもレシーバー変換前に副作用がスピルされるべき点が指摘されていますが、最終的に承認されています
#133734 Fix runtime diagnostics SOS test configuration
- 作成者: @max-charlamb
- 作成日時: 2026年09月11日 19:09:02(UTC)
- マージ日時: 2026年09月14日 14:46:25(UTC)
- ラベル: area-Diagnostics-cdac
概要
ランタイム診断SOS テストパイプラインを修正し、一貫性のあるランタイム、cDAC(Common Data Access Component)、DBI(Debugger Bridge Interface)アーティファクトを使用するように改善しました。主な変更は、ランタイムビルド時に生成される cDAC トランスポートパッケージを発行・復元し、マッチング保証を実現すること、インタープリタデバッグアセットのビルド、厳密な cDAC のみモード(OnlyUseCDac)での検証と別途強制DAC比較レグの実施です。
変更内容
- eng/pipelines/runtime-diagnostics.yml: cDAC アーティファクト発行と SOS レグ更新
- eng/pipelines/diagnostics/sos-test-leg.yml: マッチング cDAC パッケージ処理の設定
- eng/pipelines/diagnostics/runtime-diag-job.yml: 依存関係復元とビルド/テスト実行フェーズの分離
パフォーマンスへの影響
影響なし
関連Issue
#133282、#132073、dotnet/diagnostics#6026
その他
重要な動作変更:
- 厳密な cDAC のみ検証レグ(
-dacMode cdac)はOnlyUseCDacモードで実行され、フォールバック禁止 - cDAC と汎用 DBI が同じランタイムビルドから生成されたトランスポートパッケージで確保される
- SHA-256 検証済み:パッケージ内の
mscordaccore_universal.dllのハッシュが同一ビルド内のアーティファクトと正確に一致 - 分離された
DACレグが-dacMode dacで従来型DAC比較カバレッジを提供
注意: Copilotのレビュー指摘により、testOnly/buildOnly パラメータの動作が変更されており、無条件でビルドとテストの両タスクが実行される仕様となっています。既存の test-only/build-only 動作に依存する呼び出し元の動作変更に注意が必要です。
#133725 JIT: preserve importer stack for negative constant Log2
- 作成者: @Copilot
- 作成日時: 2026年09月11日 17:55:54(UTC)
- マージ日時: 2026年09月14日 10:50:41(UTC)
- ラベル: area-Infrastructure
概要
JIT importerのint.Log2(-1)やlong.Log2(-1L)などの負の定数に対する呼び出しで、intrinsic展開が失敗する際にスタック上の引数を誤ってpopしていた問題を修正します。修正により、正しくArgumentOutOfRangeExceptionがスローされるようになります。
変更内容
- src/coreclr/jit/importercalls.cpp: 定数
Log2のスタック処理を修正。folding成功時のみ引数をpopし、失敗時はスタックを保持して通常の関数呼び出しにフォールバック - src/tests/JIT/Regression_ro_2/Runtime_133711.cs: issue #133711に対する回帰テストを追加。符号付き/符号なし定数、ネイティブサイズ定数、スタック上に複数の値がある場合を含むテストケース
パフォーマンスへの影響
影響なし
関連Issue
その他
Copilot reviewerからの指摘により、64ビットターゲットでネイティブサイズ定数の不正な切り詰めが依然として存在することが報告されています。このPRはこの懸念に対する追加の対応が必要な可能性があります。
#133686 JIT: Fix hang when a switch targets an empty-block cycle
- 作成者: @EgorBo
- 作成日時: 2026年09月11日 12:04:10(UTC)
- マージ日時: 2026年09月14日 10:51:41(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラのfgOptimizeSwitchBranches関数が空の無条件ブロックのサイクルをループして無限にリダイレクトされる問題を修正します。BitVecベースのサイクル検出をfgOptimizeBranchToEmptyUnconditionalと共有し、サイクリックターゲットは変更しないようにします。
変更内容
- src/coreclr/jit/compiler.h: サイクル検出ヘルパー関数を新規宣言(+2行)
- src/coreclr/jit/fgopt.cpp: 空ブロックチェーンのサイクル検出ロジックを追加実装。エッジをリダイレクトする前にサイクルを検出し、サイクリックターゲットは変更しない(+34/-34行)
- src/tests/JIT/Regression_ro_2/Runtime_133677.cs: 2ブロックサイクルの回帰テストをReflection.Emitで追加(+33行)
パフォーマンスへの影響
影響なし。サイクル検出により不必要なリダイレクト処理を回避するため、むしろコンパイル時間が短縮される可能性があります。
関連Issue
その他
- レビュアー(Copilot)より、メモリ効率の懸念があります。現在の実装では各チェック時にグラフサイズ分のアロケーションが発生する可能性があり、スクラッチビットベクトルの再利用またはアロケーション不要な検出方式の検討を推奨しています。
- テスト用回帰テストはIL形式で直接エミットされており、Roslyn最適化への依存を回避しています。
- 検証済み:ベースラインJITでハング、修正後のJITで合格(デフォルトtiering および JitStress=2で確認)
#133685 JIT: Respect offsets in non-null assertion propagation
- 作成者: @EgorBo
- 作成日時: 2026年09月11日 11:50:59(UTC)
- マージ日時: 2026年09月14日 18:28:22(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラにおいて、非Null割り当て(non-null assertion)が不正なポインタオフセットを通じて誤って伝播される問題を修正します。負のオフセットおよび範囲外のオフセットの伝播を拒否し、期待されるNullReferenceExceptionの発生を確保します。
変更内容
- src/coreclr/jit/assertionprop.cpp: 無効なオフセット伝播を防止するロジックを追加(+6行)
- src/tests/JIT/Regression_ro_2/Runtime_133678.cs: リグレッション テスト ケースを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
このPRは正確性に関連するJIT変更であり、不正なメモリアクセスを防ぐための重要な修正です。負のオフセットおよびオーバーサイズのオフセットを検証することで、アサーション伝播時の誤った最適化を排除します。
#133682 [release/10.0] Source code updates from dotnet/dotnet
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月11日 11:21:16(UTC)
- マージ日時: 2026年09月14日 05:43:50(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/dotnetリポジトリからのコードフロー更新PR。VMR(Virtual Monolithic Repository)経由で複数の依存パッケージのバージョン更新とソースコード同期を行うものです。主にコンパイラ関連、ビルドツール、分析ツール、WebAssemblyランタイムなどの依存パッケージが更新されています。
変更内容
- eng/Version.Details.props/xml: 複数の依存パッケージのバージョンを更新
- Microsoft.CodeAnalysis関連: 5.0.0-2.26454.107 → 5.0.0-2.26458.105
- Microsoft.DotNet.Arcade.Sdk等ビルドツール: 10.0.0-beta.26454.107 → 10.0.0-beta.26458.105
- NuGet.Frameworks等: 7.0.3-rc.45507 → 7.0.3-rc.45905
- WebAssemblyランタイム(Node): 10.0.0-alpha.1.26411.2 → 10.0.0-alpha.1.26457.2
- NuGet.config: ソース設定の更新
- global.json: SDK/ツールバージョン参照の更新
複数の下流リポジトリ(arcade, aspnetcore, efcore, msbuild, razor, roslyn, sdk等)からのコミットが統合されています。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- PR性質: CodeFlow自動更新(dotnet-maestro[bot]による自動生成)
- ターゲットブランチ: release/10.0
- ソース日時: 2026年9月8日(プレリリース版)
- このPRは機械的な依存パッケージ更新のため、具体的な機能変更やバグ修正の詳細は個別の下流リポジトリのコミット参照が必要です
#133666 Undo float->small integer saturation workaround
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月11日 05:40:21(UTC)
- マージ日時: 2026年09月14日 05:51:04(UTC)
- ラベル: area-NativeAOT-coreclr
概要
.NET 11 RC1の変換セマンティクスに依存して、NativeAOTのfloat-to-small-integer飽和度ワークアラウンドを削除します。conv.i1、conv.i2、conv.u1、conv.u2の変換処理を簡潔化し、廃止されたクランピングとNaN処理を削除します。
変更内容
- src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/TypePreinit.cs
- float/double から小整数型(i1, i2, u1, u2)への変換ワークアラウンドを削除
- 飽和度クランピングロジックを削除
- NaN処理とワークアラウンドコメントを削除
- 変更量: +4行/-20行
パフォーマンスへの影響
影響なし(コンパイル時の処理簡潔化のため、実行時パフォーマンスへの直接的な影響はなし)
関連Issue
なし
その他
Copilotのレビューで、境界値、範囲外の値、NaN変換ケースのリグレッション網羅テストを追加することが推奨されています。
#133649 JIT: Initialize Wasm resume IP to a rethrowing value
- 作成者: @AndyAyersMS
- 作成日時: 2026年09月10日 23:42:01(UTC)
- マージ日時: 2026年09月14日 02:10:48(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssemblyランタイムの例外処理におけるresume IP(再開命令ポインタ)の初期化と管理を修正します。プロローグでresume IPをゼロに初期化し、catchから正常に再開した後にリセットすることで、古い状態のresume IPがtryに見られるのを防ぎます。これによりIssue #133613で報告されたstale dispatch stateの問題を解決します。
変更内容
- src/coreclr/jit/codegenwasm.cpp: Wasmプロローグでresume IPをゼロに初期化する処理を追加
- src/coreclr/jit/fgwasm.cpp: try内での受け入れ後にresume状態をリセットする処理を追加(fgWasmEhFlowの制御フロー契約に関するコメント更新も含む)
- src/libraries/System.Runtime/tests/System.Runtime.Tests/System/ExceptionTests.cs: 連続したcatchのリグレッション テストケースを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
Copilotレビューより、以下の懸念が指摘されています:
- 最初のdispatch前に初期化されたresume IPをカバーするテストケースが不足している可能性(最初の例外dispatch時に0の初期値が実際に必要であることを検証するテストの追加を推奨)
- fgWasmEhFlowのコメント記述がresume IP = 0をrethrowの代替値として文書化していないため、制御フロー契約の更新が必要な可能性
#133640 [release/10.0] Fix cgroup v2 memory limit traversal at hierarchy root
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月10日 21:33:54(UTC)
- マージ日時: 2026年09月14日 20:18:46(UTC)
- ラベル: Servicing-approved area-Interop-coreclr
概要
cgroup v2メモリ制限のトラバーサルがhierarchy rootで停止しない問題を修正。Linux環境でプロセスがcgroup階層のルートに割り当てられている場合、メモリ制限参照時にNullReferenceExceptionが発生していました。System.Diagnostics.Process.MaxWorkingSet/MinWorkingSetプロパティへのアクセスが影響を受けていた問題を解決します。
変更内容
- Interop.cgroups.cs: cgroup v2メモリ制限トラバーサルの境界条件を修正。hierarchy mount時点で
memory.maxを読み込んだ後、トラバーサルを停止してマウント外のパス読み込みを防止 - cgroupsTests.cs: 以下の回帰テストを追加
- hierarchy mount自体がcgroup pathの場合に
memory.maxが正しく読み込まれること - ネストされたcgroupのトラバーサルがhierarchy mountで停止すること
- hierarchy mountが正しく返されること
- hierarchy mount自体がcgroup pathの場合に
パフォーマンスへの影響
影響なし
関連Issue
#133470, #133471, #130377, #93611
その他
- リスク評価: Low。cgroup v2メモリ制限トラバーサルの限定的な修正であり、現在のcgroupと祖先のトラバーサルは保持されます
- .NET 9での回帰: .NET 9で#93611により階層的cgroup メモリ制限サポートが追加された際に導入された回帰
- ネイティブ実装との一貫性: ネイティブCoreClr実装(#130377で修正済み)と同じ動作を実現
#133607 [release/11.0] Avoid reducing unused Vector2 and Vector3 elements
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月10日 16:10:39(UTC)
- マージ日時: 2026年09月14日 20:35:00(UTC)
- ラベル: Servicing-approved area-System.Numerics tenet-performance
概要
.NET 11 Preview 7でVector2/Vector3の内積(dot product)と二乗長(squared length)計算のパフォーマンス低下を修正します。JITが不要なSIMD要素を不必要に削減・クリアしていたコードを改善し、意味のある要素のみを削減するように変更します。Vector2.LengthSquaredのベンチマークループが46バイトから30バイトに縮小されます。
変更内容
- Vector2.cs: ドット積と二乗長の計算ロジックを改善し、不要なSIMD要素の削減を廃止
- Vector3.cs: 同様に正規化と反射向けのベクトル中間値を保持しながら意味のある要素のみを削減
- Vector2Tests.cs / Vector3Tests.cs: 符号付きゼロ、削減のグループ化、NaN/無限大、未使用の上位要素への毒性テストなど、エッジケースカバレッジを拡充(73行および76行追加)
パフォーマンスへの影響
大幅な改善
- Vector2.LengthSquaredのコード生成:46バイト → 30バイト(約35%削減)
- ベンチマーク結果:.NET 10比でのスループット低下を改善(完全な回復ではなく、Vector2/Vector3削減部分を対象)
- ARMおよびWASMでのパフォーマンスは未測定
懸念点
- ポータブルVector3ブロードキャストの実装は、SSE限定代替案より11-12%遅い(ただし、より広いアーキテクチャサポートを考慮した設計)
関連Issue
#133297(顧客報告) #133527(元のソースPR)
その他
- 変更タイプ: バックポート(release/11.0へ)
- 破壊的変更: なし。公開APIの追加なし
- セキュリティ影響: なし
- 互換性: 完全に後方互換。唯一の意図的な変更は、すべて負のゼロの意味のある要素を削減する際に負のゼロを保持すること
- リスク評価: 低。ポータブルなマネージドVector2/Vector3削減ロジックおよびテストに限定
- テスト: System.Numerics.Vectors.Testsの全7,523テストが合格、ハードウェアイントリンシック無効時のVector2非有限カバレッジも合格
- 注記: Mono/Windows(Vector3全負ゼロケース)では既存の独立した実装が第4要素を削減するためスキップ
#133599 Fix System.Text.Json source-generated unsafe accessors
- 作成者: @eiriktsarpalis
- 作成日時: 2026年09月10日 14:22:25(UTC)
- マージ日時: 2026年09月14日 15:13:26(UTC)
- ラベル: area-System.Text.Json
概要
System.Text.Json ソースジェネレータの unsafe accessor コード生成に関する複数の問題を修正するPRです。ジェネリック型での inaccessible メンバー/コンストラクタの処理改善、生成コードのヘルパー衝突削減、updated-memory-safety-rules コンパイラ機能への対応を実施しています。
変更内容
ソースジェネレータモデル・メタデータ拡張:
TypeGenerationSpec.cs: オープンジェネリック署名と型パラメータメタデータを追加PropertyGenerationSpec.cs,ParameterGenerationSpec.cs: ジェネリックアクセッサ生成用のメタデータを拡張ContextGenerationSpec.cs: ターゲットフレームワークとメモリ安全機能フラグを追加TargetFramework.cs: ターゲットフレームワーク判別用の新規ファイル
ジェネレータエミッション更新:
JsonSourceGenerator.Parser.cs: オープンジェネリック定義、型宣言階層インデックス、機能フラグをパース時に計算JsonSourceGenerator.Emitter.cs: ジェネリック unsafe アクセッサラッパー(コンストラクタ含む)のエミッション更新、反射フォールバック呼び出しで元の例外保持に対応RoslynExtensions.cs: ターゲットフレームワーク検出用のロジック追加
テスト強化:
- 複数のテストプロジェクトで
updated-memory-safety-rulesを有効化 - ジェネリック型、inaccessible コンストラクタ、init-only プロパティに関する包括的なテスト追加
- アンセーフメモリ操作を
unsafe(...)ブロックで適切にラップするコード更新
パフォーマンスへの影響
影響なし
関連Issue
その他
互換性に関する注意:
- 公開API表面を拡張する変更が含まれていますが、
api-approvedIssueとのリンクが不明確です - Copilotのレビューでは、生成されたジェネリック unsafe コンストラクタラッパーが ref 種別修飾子を保持する必要があることが指摘されています
RoslynExtensions.csのMemorySafetyRulesVersion列挙型をFunc<IModuleSymbol, int>に直接バインドする実装には注意が必要です(列挙型の戻り値型の互換性問題)- .NET 11へのバックポート予定
#133597 JIT: fix BITCAST removal widening a small-typed load
- 作成者: @EgorBo
- 作成日時: 2026年09月10日 14:10:26(UTC)
- マージ日時: 2026年09月14日 23:36:05(UTC)
- ラベル: area-CodeGen-coreclr
概要
JIT コンパイラの BITCAST 除去ロジックにおいて、小型ロード命令の幅を不正に拡大する問題を修正しました。小型整数ロード(byte/short など)を再型指定する際に等幅のオペランドのみに制限し、正規化セマンティクスを保持します。
変更内容
- src/coreclr/jit/lower.cpp: ロード再型指定を等幅オペランドのみに制限し、小型ロードの不正な拡大を防止
- src/coreclr/jit/importercalls.cpp: インポーター内の assertion を正規化された小整数入力を受け入れるように修正
- src/tests/JIT/Regression_ro_2/Runtime_133580.cs: 回帰テストを新規追加(間接ロード、ローカルフィールドロード、有効な fold パターンをカバー)
パフォーマンスへの影響
影響なし
関連Issue
その他
- JIT の内部実装(lower.cpp と importercalls.cpp)に対する修正で、公開 API への影響なし
- Copilot レビューでは、回帰テストがリトルエンディアン レイアウトを前提としており、符号付き小型ロード カバレッジが不足している点が指摘されています
#133544 Enable I2C linking via PR description
- 作成者: @mmitche
- 作成日時: 2026年09月09日 22:25:30(UTC)
- マージ日時: 2026年09月14日 14:46:29(UTC)
- ラベル: area-Infrastructure-libraries
概要
Idea2Customer (I2C) メトリクスのための issue リンキング機能を有効化するため、PR 説明に完全修飾形式の closing keyword (Resolves owner/repository#123) の使用を義務化するガイドラインを .github/copilot-instructions.md に追加するもの。これは GitHub が PR メタデータから issue metadata を直接解決できるまでの暫定的な回避策です。
変更内容
.github/copilot-instructions.md: Pull Requests セクションに I2C issue linking 用のガイドラインを追加- Issue を close する目的の PR では、PR 説明の末尾に
Resolves owner/repository#123形式を明記することを指示 - マージ時にデフォルトブランチへの自動 issue クローズが行われることを記載
- Issue を close する目的の PR では、PR 説明の末尾に
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
Copilot レビュー指摘事項:
- 「Always use」という表現が PR 全体への要件に読めるが、実際は I2C work など特定の PR に限定されるべき
- Issue クローズが「will close」と無条件に記載されているが、GitHub の設定で自動クローズを無効化できるため、条件付きの表現が必要
- 記載内容にタイプミス存在("incldue" → "include")
- PR 説明末尾の
Resolves ...配置と、既存のルール(AI 生成コンテンツの開示注記を最後に配置)との間に順序の競合が発生。両要件を同時に満たすための明確な指示が必要
#133413 [wasm] Resolve crossgen2 through the SDK
- 作成者: @radekdoulik
- 作成日時: 2026年09月08日 11:00:55(UTC)
- マージ日時: 2026年09月14日 08:36:39(UTC)
- ラベル: arch-wasm area-Infrastructure
概要
WebAssembly (Browser-WASM/WASI) のネイティブ再リンク パイプラインを更新し、crossgen2 の解決を .NET SDK パック機構を通じて行うように変更しました。従来のワークロード ベースの crossgen2 プラムビングと廃止予定の Sdk.props シムを削除し、ReadyToRun を有効にせずに crossgen2 を取得できるようにします。
変更内容
- BrowserWasmApp.CoreCLR.targets:
RequiresCrossgen2Packプロパティを追加して SDK パック機構を経由して crossgen2 を要求し、ResolveReadyToRunCompilersターゲットと@(Crossgen2Tool)を使用したフォールバック生成器パスを実装 - WasiApp.CoreCLR.targets: WASI アプリの crossgen2 パック要求とSDK ベースの生成器解決ロジックを追加
- WorkloadManifest.json.in / WorkloadManifest.targets.in: ワークロード マニフェストから crossgen2 パックへの参照を削除し、
wasm-toolsワークロード パック リストから削除 - Crossgen2/Sdk.props: 廃止された
Sdk.propsシムを削除 - Microsoft.NETCore.App.Crossgen2.props: 削除した
Crossgen2/Sdk.propsのパッケージング参照を削除 - Wasm.Build.Tests: SDK 経由の crossgen2 解決と改善されたエラー報告を検証するテストを追加
パフォーマンスへの影響
影響なし(解決メカニズムの変更であり、実行時のパフォーマンス特性には影響しない)
関連Issue
#133353、dotnet/sdk#56119、dotnet/sdk#55785、#133344
その他
- 本 PR は内部実装の変更です。公開 API への影響はありません
- 4 つのビルド/パブリッシュ回帰テストケースで検証済み。24 バイト構造体を値で渡すネイティブコード実行確認済み
- Copilot レビューで複数の懸念点が指摘されている:
RequiresCrossgen2Packが無条件に設定されると、実行されないビルド構成でも不要な復元が発生する可能性PublishReadyToRunUseCrossgen2が false の場合、crossgen2 が解決されない可能性PublishReadyToRun=true時にResolveReadyToRunCompilersが重複呼び出しされる可能性- WASI SDK パッケージ化の不完全性
#133372 [release/11.0] Source code updates from dotnet/dotnet
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月07日 17:41:09(UTC)
- マージ日時: 2026年09月14日 19:02:02(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/dotnetリポジトリ(release/11.0.1xxブランチ)からのコードフロー更新。主にビルドツール、コンパイラ、分析ツール、ランタイムライブラリなどの依存関係を更新しています。
変更内容
- ビルドツール関連: Microsoft.CodeAnalysis(5.12.0-1.26453.107 → 5.12.0-1.26457.102)、Microsoft.DotNet.Arcade.Sdkなど複数のビルドタスクパッケージを更新
- コンパイラ/分析: Microsoft.CodeAnalysis.NetAnalyzers、Microsoft.CodeAnalysis.CSharp、Microsoft.Net.Compilers.Toolsetを更新
- ランタイム/ライブラリ: Microsoft.NETCore.App.Ref、System.Reflection.Metadata、System.Text.Json、System.CommandLineを更新
- パッケージ管理: NuGet.Frameworks、NuGet.Packaging、NuGet.ProjectModel、NuGet.Versioningを更新
- 設定ファイル更新: .config/dotnet-tools.json、eng/Version.Details.props/xml、global.jsonを更新
- 関連リポジトリ: arcade、aspnetcore、diagnostics、fsharp、msbuild、nuget.client、roslyn、runtime、sdk、winformsに対応する変更あり
パフォーマンスへの影響
記載なし(依存関係更新のみ)
関連Issue
なし
その他
- これはMaestroによる自動化されたコードフロー更新(codeflow PR)です
- dotnet/dotnetリポジトリのVMRから、2026年9月7日時点のコミット5672e8351ebfceをベースとしています
- 複数の関連リポジトリの変更が同期されています
#133342 Use CoreCLRs GetCustomAttributes implementation in native AOT
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月07日 09:14:02(UTC)
- マージ日時: 2026年09月14日 06:37:21(UTC)
- ラベル: area-NativeAOT-coreclr
概要
このPRは、NativeAOT リフレクション属性クエリを CoreCLR の RuntimeCustomAttribute 実装に統合し、NativeAOT固有の古い実装を削除しています。これにより、カスタム属性の取得・検証ロジックが共通化され、コード重複が削減されます。
変更内容
- RuntimeCustomAttributeData.cs: NativeAOT向けのコンストラクタ解決・引数デコード・インスタンス化ロジックを追加
- NativeAOT反映型実装群:
Type/MemberInfoのIsDefined/GetCustomAttributesメソッドをRuntimeCustomAttribute経由に統一し、属性型の検証を追加 - 削除: 従来のNativeAOT専用実装ファイル(
RuntimeCustomAttribute.NativeAot.cs、CustomAttributeInstantiator.cs)と関連するプロジェクト設定を削除 - 追加: メタデータIDで一致するコンストラクタを検索するヘルパーAPI(
GetConstructorWithSameMetadataDefinitionAs)
パフォーマンスへの影響
影響なし(コード統合に伴う構造的な最適化のみ)
関連Issue
なし
その他
重要な懸念事項(Copilot指摘):
- RuntimeParameterInfo.IsDefined の早期リターン問題: メタデータリーダーが null の場合に false を返し、メタデータを必要としない疑似カスタム属性(In/Out/Optional など)を誤って隠す可能性があります。引数検証順序の問題も指摘されています。
- ジェネリック属性型の解決未対応: 名前付き引数の型解決が
default(TypeContext)を使用しており、ジェネリック属性パラメータを含む場合に実行時例外またはデコード誤りのリスクがあります。 - テストカバレッジ不足: NativeAOT環境でのジェネリック属性と名前付き引数を含むカスタム属性テストが欠落しています。
これらの懸念事項が解決されるまで、本マージは推奨されていません。
#133336 [release/10.0] Update dependencies from dotnet/xharness
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月07日 05:04:45(UTC)
- マージ日時: 2026年09月14日 06:06:21(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/xharnessの依存関係を更新するPull Request。Microsoft.DotNet.XHarness関連パッケージ(CLI、TestRunners.Common、TestRunners.Xunit)を11.0.0-prerelease.26428.1から11.0.0-prerelease.26461.1にバージョンアップしています。
変更内容
.config/dotnet-tools.json: XHarnessツールのバージョン更新eng/Version.Details.props: バージョン情報プロパティファイルの更新eng/Version.Details.xml: 詳細バージョン情報の更新(dotnet-maestroによる自動更新)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはdotnet-maestro[bot]による自動依存関係更新です。xharnessはテスト実行ツールチェーンの一部であり、内部開発ツールの更新となります。release/10.0ブランチへの更新となっており、リリース準備段階での依存関係同期です。
#133199 Fix ManagedWebSocket send cancellation leaving state Open
- 作成者: @steveisok
- 作成日時: 2026年09月03日 19:55:55(UTC)
- マージ日時: 2026年09月14日 12:03:25(UTC)
- ラベル: area-System.Net
概要
ManagedWebSocket.SendFrameFallbackAsyncにおいて、キャンセルトークンの登録がミューテックス取得前に行われていなかったため、ミューテックス待機中のキャンセルがAbort()コールバックをトリガーせず、WebSocketStateがOpenのまま残る問題を修正しました。これにより、特にAndroidやJIT-stressビルドで発生していたSendAsync_Cancel_Successテストのフレーキー失敗(#132031)を解決します。
変更内容
- ManagedWebSocket.cs:
cancellationToken.Register()の登録箇所を、ミューテックス取得前に移動。既存の受信パスと同様のパターンでキャンセル処理を統一。ロック待機中のキャンセルをNetEventSource.TraceExceptionで診断情報として記録。ミューテックスのExit()呼び出しは取得後の内側try/finallyに留まるため、二重解放は発生しない。 - WebSocketTests.cs: 2つの決定的な回帰テストと
GatedWriteStreamヘルパーを追加。SendAsync_AlreadyCanceledToken_*: 既にキャンセル済みのトークンで、AsyncMutex.EnterAsyncが即座にTask.FromCanceledを返し、ロック取得前キャンセルパスを確定的にテスト。SendAsync_CancelWhileWaitingForSendMutex_*:GatedWriteStreamにより、最初の送信でミューテックスをブロック、2番目のキャンセル可能な送信が待機中にキャンセルされ、接続がAbortされることを検証。
パフォーマンスへの影響
影響なし。ロック取得成功時の動作に変更はなく、キャンセルされた場合のみ既存の遅延パスに入ります。
関連Issue
その他
Copilot レビューからの指摘(未解決): GatedWriteStreamを使用した回帰テストで、最初の送信がWriteAsyncに到達しない場合await stream.WriteStartedが無限ハングする可能性あり。テストにはタイムアウト制御が不足しており、CI実行を阻害するリスク。修正時に境界付き待機とTimeoutExceptionの保存が必要です。
#133150 [ci-scan-feedback] Allow fixer to read scanner-authored KBE bodies
- 作成者: @vitek-karas
- 作成日時: 2026年09月03日 06:55:02(UTC)
- マージ日時: 2026年09月14日 10:18:43(UTC)
- ラベル: area-Infrastructure
概要
CI failure scannerが作成したKnown Build Error (KBE)発行を、ci-failure-fixワークフローのfixerが確実に読み込めるようにする変更。スキャナがKBE issue bodyを作成しても、fixer側でそれを読み込めず分析・修正が不可能だった問題(#132745)を解決。GitHub APIでgithub-actions[bot]認証を正しく判定し、deterministicscanner_kbesジョブで事前フィルタリングしてから、MCP経由でagentに提供。
変更内容
- .github/workflows/ci-failure-fix.md: GitHub MCP設定に
trusted-users: ["github-actions[bot]"]を追加。scanner_kbesジョブを新規追加して、REST APIでdotnet/runtimeリポジトリの開いているKBEを「確定的」に列挙・フィルタリング(リポジトリ・ラベル・タイトル接頭辞・作成者・アカウント種別で検証) - .github/workflows/shared/filter-scanner-kbes.sh: 新規シェルスクリプト。REST APIレスポンスをページネーション対応でフィルタリング(PR除外、古い順)
- .github/workflows/evals/ci-failure-fix.eval.yaml: grader検証ロジックを追加。候補メタデータ生成、MCP経由での body/comments読み込み確認、フィルタ済みコンテンツ検出、現在状態再検証などをカバー
- .github/workflows/evals/test_ci_failure_fix_candidates.py: 回帰テスト追加(フィルタ・メタデータ・ページネーション・API失敗・trusted eval設定など13テスト)
- .github/workflows/ci-failure-fix.lock.yml: コンパイル済みワークフロー再生成
- .github/workflows/ci-eval.yml: 評価ワークフロー設定追加
- .github/workflows/evals/README.md: KBE enumeration手順を文書化
パフォーマンスへの影響
影響なし
関連Issue
その他
- 制限事項: 候補artitectの不変性・独立した出所検証設計は今回スコープ外。既存eval harness改善にとどまる。
- 検証: テスト18件合格、ワークフローコンパイル/バリデーション合格、ShellCheck/Actionlint実行済み。ただしライブGitHub Actions実行・LLM eval実行なし。
- Copilot指摘: 複数の unresolved 問題が指摘されている—allowlistエンフォース・repository-guard・eval完全性・filtered-content処理・candidate状態再検証・artifact retention・trusted-helper処理・fixture shape不一致など。これらは承認前に対処要。ロックファイルの
GH_AW_ACTION_FAILURE_ISSUE_EXPIRES_HOURS: 0→168変更の正当性も要確認。
#132996 [release/8.0] Update dependencies from dotnet/arcade
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月01日 05:03:39(UTC)
- マージ日時: 2026年09月14日 06:00:43(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/arcadeリポジトリの依存パッケージを8.0.0-beta.26371.5から8.0.0-beta.26431.7にアップデートするPull Requestです。ビルド・テスト・パッケージング関連のArcadeツール群とその関連タスクが一括更新されます。
変更内容
- Version.Details.xml、Versions.props: Microsoft.DotNet.Arcade.Sdk、Build.Tasks.Archives/Feed/Installers/Packaging/TargetFramework/Templating/Workloads、CodeAnalysis、GenAPI、GenFacades、Helix.Sdk、PackageTesting、RemoteExecutor、SharedFramework.Sdk、VersionTools.Tasks、XUnitExtensions、XUnitConsoleRunnerのバージョン更新
- global.json: .NET SDKおよび関連ツールのバージョン更新
- ビルドスクリプト・テンプレート更新:
- GitHub App トークン取得スクリプト/テンプレート (Get-GitHubAppToken.ps1, get-github-app-token.yml) の追加・強化
- OneLocビルド、CodeQL、ソースビルド関連テンプレートの調整
- extract-artifact-packages.ps1、execute-sdl.yml等の削除・簡略化
- publish-build-assets.yml、common-variables.ymlの微調整
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
release/8.0ブランチへの依存関係の自動アップデートPull Requestです。Arcadeの内部インフラストラクチャの更新に伴う関連スクリプト・テンプレートの保守更新が含まれています。
#132763 Add fast path for Overlaps when other is HashSet with same equality comparer and has more items
- 作成者: @Advitalitum
- 作成日時: 2026年08月25日 21:26:47(UTC)
- マージ日時: 2026年09月14日 20:20:13(UTC)
- ラベル: area-System.Collections community-contribution
概要
HashSet<T>.Overlaps()メソッドに最適化パスを追加しました。同じ等値比較器を持つ2つのHashSetが比較される場合、より小さいセットを反復してより大きいセット内で検索することで、パフォーマンスを改善します。
変更内容
- src/libraries/System.Private.CoreLib/src/System/Collections/Generic/HashSet.cs:
Overlaps()メソッドにファストパスを追加。引数が同じ等値比較器を持つHashSetで、かつ要素数がより多い場合に、小さいセットの反復処理による最適化ルーチンを使用するようにしました(+24行)
パフォーマンスへの影響
小さいセットの方を反復し、大きいセット内で要素を検索することで、O(n)の計算量でより効率的に重複判定を実行できます。特に一方のセットが他方より大幅に小さい場合に効果的です。
関連Issue
その他
なし
#132282 Handle exceptions from parallel ReadyToRun compilation
- 作成者: @agocke
- 作成日時: 2026年08月13日 16:09:58(UTC)
- マージ日時: 2026年09月14日 22:15:06(UTC)
- ラベル: area-ReadyToRun
概要
ReadyToRun と NativeAOT のコンパイラにおける並列コンパイル時の例外処理を改善しました。従来のスレッド/セマフォベースのオーケストレーションを Parallel.ForEach と新しい CompilationWorklist<TWorkerState> に置き換え、ワーカー例外の適切な伝播と早期クリーンアップを実現します。また、動的パーティショナー(バッファリングなし)を採用し、メソッドコンパイルコストのばらつきに対応してコア負荷を均衡させます。
変更内容
- ReadyToRunCodegenCompilation.cs: 従来の永続スレッド/セマフォの仕組みを
CompilationWorklistに置き換え。ワーカー状態をパーティション単位で管理し、CorInfoImplキャッシュの寿命を制限。Compileが例外を投げる場合の処理と JIT 状態の早期解放を追加。 - CompilationWorklist.cs (新規): 並列作業分配、ワーカー寿命管理、例外キャプチャ/再スロー を一元管理するヘルパークラス。
- RyuJitCompilation.cs: 並列コンパイルからの例外を
AggregateExceptionでラップする仕様へ対応。 - crossgen2/Program.cs: コンパイル生成を
BuildCompilationヘルパーに分離し、using varでスコープ付き破棄を実施。
パフォーマンスへの影響
- ReadyToRun CoreLib: 並列度4 で中央値 22.26s vs 22.76s(ニュートラル)、並列度24 で 10.03s vs 9.94s(ニュートラル)
- NativeAOT crossgen2: 並列度4 で 58.46s → 57.09s(2.3% 高速化)、並列度24 で 41.49s → 39.91s(3.8% 高速化)
- ピークメモリ使用量は同等(p4: 1282→1244 MiB、p24: 1296→1316 MiB)
- 出力バイナリは両実装で byte-for-byte で一致
関連Issue
なし
その他
- テスト結果: ILCompiler.ReadyToRun.Tests で 34 passed/11 skipped/0 failed、ILCompiler.Compiler.Tests で 22 passed/0 failed
- 内部実装の変更(ICompilation 内部、ランタイムのコンパイラ部分)であり、公開 API への影響なし
- レビューで指摘された項目:
CompilationWorklistの null チェック、volatile/非volatile アクセスの一貫性(_compilationSessionGeneratedColdCodeの reset)、AggregateException の展開処理については審査中に改善予定
#132221 JIT: contain shifts into byref ADD on arm64
- 作成者: @EgorBo
- 作成日時: 2026年08月12日 17:17:44(UTC)
- マージ日時: 2026年09月14日 23:36:22(UTC)
- ラベル: area-CodeGen-coreclr
概要
ARM64 JITコンパイラにおいて、シフト/乗算などの単項・二項演算をbyref型の親ノード下で含有可能にする変更です。これにより、base + (index << cns)のようなアドレス計算が、分割されたlsl + add命令ではなく、単一のadd ... LSL #imm形式で発行されます。
// 最適化前: 3命令
add w5, w3, #1
lsl x5, x5, #3
add x5, x5, x0
// 最適化後: 2命令(シフト含有)
add w5, w3, #1
add x5, x0, x5, LSL #3
変更内容
- src/coreclr/jit/lowerarmarch.cpp:
IsContainableUnaryOrBinaryOpでTYP_BYREF型の親ノードを許可するよう変更(従来は整数型のみ) - src/coreclr/jit/codegenarm64.cpp: 含有された
MUL/SHIFT/ROR/CASTの処理でアサーションを緩和し、TYP_BYREF結果型を許可
パフォーマンスへの影響
命令数削減によるコード密度向上が期待されます。SPMI(Static Program Measurement Infrastructure)の差分結果に「顕著な改善」が報告されています(詳細数値は提供情報に記載なし)。
関連Issue
なし
その他
レビュー時にコメント更新の指摘あり:lowerarmarch.cppの説明コメントがTYP_BYREF対応を反映していないため、ドキュメンテーション更新が推奨されています。変更はJITコンパイラの内部実装(Lowering・CodeGen層)に限定され、公開APIへの影響はありません。
#131701 Support unsafe evolution in ComInterface, ComClass, JSImport, JSExport and VtableIndexStub generators
- 作成者: @EgorBo
- 作成日時: 2026年08月01日 17:41:27(UTC)
- マージ日時: 2026年09月14日 23:39:25(UTC)
- ラベル: area-System.Runtime.InteropServices
概要
.NET 7/8以降で公開APIとなったCOMおよびJavaScript相互運用ソースジェネレータ([GeneratedComInterface]、[GeneratedComClass]、[JSImport]、[JSExport])を、C#の新しいunsafe evolution規則(unsafe-v2)に対応させました。生成されるコードが新規則下でコンパイル可能になります。既存のunsafe-v1規則では動作に変更はありません。
従来は型レベルのunsafe修飾子で安全でないコンテキストを供給していましたが、新規則では効果がなく警告CS9377が発生します。各メソッド本体に個別のunsafeブロックを追加することで対応しました。
変更内容
- ComInterfaceGenerator: 静的コンストラクタ、マネージド/アンマネージスタブ、プロパティ/インデクサアクセッサ、
ABI_*メソッドにunsafeブロックを追加。InterfaceInformation.ManagedVirtualMethodTableをブロック本体のゲッターに変更。シャドウメンバーはアンセーフメンバーへのフォワードの場合unsafe修飾子付きブロック本体として生成。 - ComClassGenerator:
GetComInterfaceEntriesメソッドをunsafeブロックでラップ。 - JSImportGenerator / JSExportGenerator: メソッド本体を
unsafeブロックでラップ。__GeneratedInitializerクラスからunsafe修飾子を削除。 - VtableIndexStubGenerator:
PopulateUnmanagedVirtualMethodTableメソッドをunsafeブロックでラップ。 - SyntaxExtensions:
WrapInUnsafeBlockユーティリティメソッド追加(LibraryImportGeneratorなど既存コードも移行)。 - EnvironmentFlags: unsafe evolution有効化フラグを追加。
- テスト:
UnsafeCodeGeneration.csにて各ジェネレータをupdated-memory-safety-rules有効で実行し、エラーなしを検証。
パフォーマンスへの影響
影響なし
関連Issue
その他
- 型レベルの
unsafe修飾子は条件付きで生成(新規則無効時のみ)。ユーザーがメンバーに明示的なunsafe修飾子を付けない場合、型レベルの修飾子がコンテキストを供給する必要があるため。 - テストハーネスは
LanguageVersion.Previewでコンパイル済みだが、previewはフラグなしでもポインタ宣言規則を既に緩和しており、unsafe-v1ブレイキングが検出されない潜在的なギャップがある。 - ComClassGeneratorとComInterfaceGeneratorは文字列出力のため、ネストされたブロックは手動インデント。