注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #134924 Fix NotSupportedException in DnsSocket.ReceiveAsync peek overload on macOS
- #134918 [wasm] Simplify template version bumps
- #134914 Fix Tensor correctness and accelerate contiguous operations
- #134886 Add pseudo custom attribute lowering to managed ilasm
- #134882 Handle in-memory module paths in cDAC loader
- #134877 Replace remaining fixed buffers with InlineArray
- #134876 [wasi] Don't reference shm_open/shm_unlink in the double mapper
- #134857 Use safe code for UTF-8 StartsWith(OrdinalIgnoreCase)
- #134821 [release/10.0] Ensure type loader templates for interface dispatch cells
- #134820 [release/11.0] Ensure type loader templates for interface dispatch cells
- #134807 [release/11.0] Prevent infinite recursion in ILLink generic dataflow
- #134802 JIT: Use local definition visitors in async mutation analysis
- #134779 [wasm] Report arguments of VM-to-managed calls while running the prestub
- #134771 [wasm][CoreCLR] Run Wasm HardwareIntrinsics tests, gated on IsSupported
- #134769 [wasm] Report untracked GC slots for aborted Wasm R2R frames
- #134697 Fix crossgen2 OverflowException emitting inlining info for runtime-async inliners
- #134616 Build macOS Arm64 artifacts for M4 performance runs
- #134585 Disable implicit AIA fetching for Schannel credentials
- #134582 Add ASP.NET end-to-end benchmarking skill and clarify microbenchmark scope
- #134570 Preserve peer certificate chain in TlsSession
- #134527 [browser] Fix Debug-only startup failures: stack-first assert, incoming Module API, preRun function form
- #134466 JIT: Fix several range check correctness bugs
- #134373 Prevent recursive ILLink generic dataflow
- #134078 Implement ReadyToRunGenericHelperNode for WASM
- #133987 Fix case-sensitive extraction on Windows
- #133647 [release/10.0] Fix NoopLimiter disposal in DefaultPartitionedRateLimiter Heartbeat
- #133195 Use also extended policy for looking up auth context
- #132752 Arm64-SVE: Support accessing unknown-sized Tier-0 locals from Tier-1 (OSR)
- #132245 Inline GC handle write barrier
- #130407 Tar tests deduplicate
#134924 Fix NotSupportedException in DnsSocket.ReceiveAsync peek overload on macOS
- 作成者: @rzikm
- 作成日時: 2026年09月30日 11:49:48(UTC)
- マージ日時: 2026年09月30日 13:35:26(UTC)
- ラベル: area-System.Net.Sockets
概要
macOS上のDnsResolverがmDNSResponderソケットの読み込み準備状態を確認する際に呼び出すDnsSocket.ReceiveAsync(buffer, peek: true)メソッドでNotSupportedExceptionが発生していた問題を修正します。原因はUnsafeAccessorType属性が値型(enum)のSocketFlagsに対応していないためでした。修正により、非同期DNS問い合わせがmacOSで正常に動作するようになります。
変更内容
- src/libraries/System.Net.NameResolution/src/System/Net/DnsSocket.cs
UnsafeAccessor/UnsafeAccessorTypeによるSocketFlagsパラメータ指定から、リフレクションベースのMethodInfoキャッシング方式に変更Socketコンストラクタで既に適用されていたSocketType/ProtocolTypeenum処理と同様のワークアラウンドを適用MethodInfo.Invoke経由でReceiveAsyncオーバーロードを動的に呼び出すように実装
パフォーマンスへの影響
リフレクション経由の呼び出しへの変更により若干のオーバーヘッドが発生する可能性がありますが、DNS解決パスの初期化時のみの呼び出しのため、実運用上の影響は限定的と考えられます。
関連Issue
その他
- macOS outer-loop
System.Net.NameResolution.Functional.Testsで38テストが全てパス(修正前は非同期テストが全て失敗) - GitHub Copilot CLIによって生成されたPRの例
#134918 [wasm] Simplify template version bumps
- 作成者: @akoeplinger
- 作成日時: 2026年09月30日 09:15:07(UTC)
- マージ日時: 2026年09月30日 14:21:07(UTC)
- ラベル: arch-wasm area-Build-mono
概要
WebAssemblyテンプレートの.NET版バージョンバンプを簡素化するPRです。template.jsonの生成をNetCoreAppCurrentVersionから自動導出するよう変更し、複数箇所のハードコード版バージョン更新を不要にします。テンプレートソースディレクトリの構造をフラット化し、launchSettings.jsonの追跡を可能にします。
変更内容
- Microsoft.NET.Runtime.WebAssembly.Templates.csproj:
CoreCompile前にbrowser.template.json.inからtemplate.jsonを生成し、パッケージコンテンツとして宣言。--no-buildでの再利用を可能にします。 - browser.template.json.in: フレームワークとアイデンティティ値をパラメータ化。
- templates/browser/: ディレクトリ構造をフラット化(
templates/templatesの冗長性を除去)。 - eng/Signing.props:
net*ワイルドカード対応でテンプレートパッケージ発行エントリを更新。 - System.Diagnostics.DiagnosticSource.csproj: テンプレートタスク参照から不要な
IsImplicitlyDefinedメタデータを削除。 - .gitignore: テンプレートの
launchSettings.jsonをトラッキング対象に追加。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
注意事項:
- Copilot Code Reviewから低重度の指摘2件:①DiagnosticSource メタデータ削除は本来スコープ外のため差し戻し推奨、②PackageId版バージョンのバンプ説明(ドキュメント?)が古いままの可能性
- ワークロードマニフェストは手動でのバージョン管理を継続
- net11テンプレートパッケージコンテンツは変更なし
- 検証済み: ビルド、--no-build パック、NetCoreAppCurrentVersion=12.0での動作、
dotnet new wasmbrowserの6ケース実行確認
#134914 Fix Tensor correctness and accelerate contiguous operations
- 作成者: @tannergooding
- 作成日時: 2026年09月30日 04:03:22(UTC)
- マージ日時: 2026年09月30日 21:26:01(UTC)
- ラベル: area-System.Numerics.Tensors needs-breaking-change-doc-created
概要
System.Numerics.Tensorsの正確性と性能の大規模な改善です。Tensorの形状、ストレージ、ブロードキャスト、重複、リサイズ、列挙の正確性を修正し、密集レイアウトおよび連続後続スライスの要素ごと操作をTensorPrimitivesにディスパッチして高速化します。空の形状は自動計算されたゼロストライドを使用してオーバーフロー防止を強化し、ベクトル化されたTan操作のFMA依存性を補正しました。
変更内容
主な修正:
ReadOnlyTensorSpan<T>は非互換なSystem.Array要素型を拒否(#133459)Tensor<T>スライスのピン留めがスライスオフセットから開始(#134691)ResizeToは未書き込み論理要素にデフォルト値を設定し、曖昧な重複宛先レイアウトを拒否(#128555)TensorSpan<T>.FlattenToの回帰修正:個別要素コピーから連続行コピーへ(#121463)
主要な実装変更:
- TensorOperation.cs: 密集レイアウト向けTensorPrimitivesディスパッチ、互換性のある外側次元ブロードキャスト対応
- TensorShape.cs: 形状演算、互換性、重複ロジックの改訂
- Tensor.cs: メイン修正と性能改善(491行追加)
- TensorPrimitives.Tan.cs: FMA検出による精度補正(スカラー代替パス実装)
- テスト: 6,300+の回帰テスト追加、5つのローカル構成で検証
パフォーマンスへの影響
大幅な改善が実測されています:
- 密集Add(64x16): 12.69µs → 0.121µs(105倍)
- ギャップ行Add: 11.58µs → 2.29µs
- ブロードキャスト行Add: 12.58µs → 1.91µs
- ギャップ行FlattenTo: 5.66µs → 0.79µs
- SequenceEqual: 6.41µs → 0.57µs
- #121463クロップFlattenTo(3×512×512バイト): 2.030ms → 19.71µs(≈103倍)
その他の改善:
- 非密集Resize: 1,909ns → 289ns
- 均一フィル: 5.56µs → 2.41µs
- ガウシアンフィル: 13.97µs → 10.88µs
- 単項floatSin(密集): 2.88µs → 0.63µs
懸念点:
- 非密集テンソルの列挙が
O(rank)分割を伴う座標再計算に変更(高ランク テンソルで潜在的な回帰) - 転置ケースは最適化対象外のまま
関連Issue
#134886 Add pseudo custom attribute lowering to managed ilasm
- 作成者: @jkoritzinsky
- 作成日時: 2026年09月29日 21:53:33(UTC)
- マージ日時: 2026年09月30日 16:54:57(UTC)
- ラベル: area-ILTools-coreclr
概要
マネージドILasm(IL Assembler)にPseudo Custom Attribute(疑似カスタム属性)の低水準化機能を追加する変更です。CLIメタデータで特殊な処理が必要なPseudo Custom Attributeを、マネージドilasm実装で適切に処理できるようにします。これにより、以前のPR #131510を置き換えます。
変更内容
- PseudoCustomAttributes.cs及び関連モジュール群(新規追加): Pseudo Custom Attributeの処理を行うメインロジック、属性の適用、デコード、識別、既知属性、MarshalAs、セキュリティ属性関連の実装を6つのファイルに分割
- EntityRegistry.cs: Pseudo Custom Attributeを適切に登録・追跡するための機能を拡張(+64行)
- MetadataExtensions.cs: メタデータ拡張メソッドを追加(+39行)
- Diagnostic.cs: 診断機能を強化(+12行)
- GrammarActions系: カスタム属性処理、ビルドイメージ、マニフェスト処理を調整
- テスト: CustomAttributeTests.cs(+456行)、InteropTests.cs、MethodTests.cs等で包括的なテストを追加・拡充
パフォーマンスへの影響
影響なし
関連Issue
#131510の置き換え
その他
- 変更は内部実装(ツール層のilasm)に限定されており、公開APIへの影響はありません
- Pseudo Custom Attributeは.NETメタデータに組み込まれた特殊な属性で、マーシャリング情報やセキュリティ属性など重要なメタデータを格納します
- テストカバレッジが大幅に追加され、カスタム属性、フィールド、メソッド、パラメータ、プロパティ/イベントなど多岐にわたる要素に対応
#134882 Handle in-memory module paths in cDAC loader
- 作成者: @max-charlamb
- 作成日時: 2026年09月29日 21:19:05(UTC)
- マージ日時: 2026年09月30日 18:33:30(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDACのモジュールパス処理をネイティブランタイムのPEAssembly::GetPath()の動作に合わせました。reflection-emitおよびprobe-extensionモジュールに対して空のパスを返すようにし、ヒープダンプに存在しない共有空文字列バッファへの無効な参照を回避します。これにより、macOS arm64 SingleFile環境でのcDAC clrstack -iの失敗を修正します。
変更内容
- Loader_1.cs: reflection-emitとprobe-extensionモジュール向けの特別なパス処理を実装。これらのモジュール型に対して
PEAssembly::GetPath()と同じ空のパスを返すロジックを追加 - LoaderTests.cs: reflection-emitおよびprobe-extensionモジュールのパス処理を検証する12個のテストケースを追加(複数アーキテクチャで実行)
- Loader.md: 特別なモジュール型の動作を文書化
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 検証済み: 対応アーキテクチャ全体で12個のターゲット化された
LoaderTests.GetPathテストが合格 - macOS arm64用のユニバーサルcDACを再構築
- 4つのcDACテストシナリオ(DivZero、NestedException、LineNums、DynamicMethod)すべてが元のヒープダンプに対して合格
- dotnet/diagnosticsで現在スキップされていた
ClrStack_ICorDebugFrameCountテストの失敗を修正
#134877 Replace remaining fixed buffers with InlineArray
- 作成者: @EgorBo
- 作成日時: 2026年09月29日 19:50:58(UTC)
- マージ日時: 2026年09月30日 14:00:09(UTC)
- ラベル: area-Meta reduce-unsafe
概要
このPRは、#125574のフォローアップとして、ライブラリ内の残存する固定バッファ(fixed buffer)をInlineArrayに置き換えるものです。ハッシング、エンコーディング、ネットワーク、セキュリティ、プロセス間通信に関連する複数のInterop定義を更新し、ポインタベースのバッファアクセスをSpanおよびInlineArray インデックスベースのアクセスに置き換えています。
変更内容
Interop定義の更新: Windows(DNS、IpHlpApi、NCrypt、SspiCli、WinSock)およびUnix(FreeBSD、OpenBSD、OSX、System.Native)の複数のInterop層で固定バッファをInlineArrayに移行
Interop.DnsTypes.cs: DNS Interop バッファの移行Interop.FIXED_INFO.cs: ネイティブ文字列バッファの移行Interop.Keys.cs: CNG salt バッファの移行Interop.TokenSource.cs: TOKEN_SOURCE.SourceName の移行Interop.WinsockAsync.cs: IPv6制御データアドレスの移行- プロセス関連(FreeBSD、OpenBSD、OSX): プロセス名バッファの移行
- IPAddress関連: ネイティブIPアドレスストレージの移行
ライブラリコンポーネントの更新:
XxHashShared.cs: XXH3状態バッファの移行、状態バッファのピン留めを更新(XxHash3.cs、XxHash128.cs)AsciiByteMap.cs: ASCII ルックアップバッファの移行AllowedBmpCodePointsBitmap.cs: BMP ビットマップとSpan処理の一元化WindowsIdentity.cs: インライントークンソース名バッファの使用SocketPal.Windows.cs: IPv6パケット情報の読み取りをInlineArrayから実施CngHelpers.cs: CNG salt をSpanとしてアクセス
パフォーマンスへの影響
影響なし(構造体レイアウトの互換性を維持しながら、内部実装をInlineArrayに統一するもの)
関連Issue
その他
ABI互換性に関する注記: Copilotの指摘の通り、このPRはABI影響を有するInteropレイアウト変更を含むため、最終的なクロスプラットフォーム検証が必要とされています。非NETターゲット向けの互換性フォールバック固定バッファが保持されています。
#134876 [wasi] Don't reference shm_open/shm_unlink in the double mapper
- 作成者: @lewing
- 作成日時: 2026年09月29日 19:48:07(UTC)
- マージ日時: 2026年09月30日 00:47:06(UTC)
- ラベル: area-PAL-coreclr
概要
WASI(WebAssembly System Interface)のDebugビルドで、未実装のshm_open/shm_unlinkシンボルへの参照が原因となるリンク失敗を修正します。WASM環境では共有メモリマッピング機能が不要であるため、TARGET_WASM条件下でこれらの機能を完全に無効化し、デッドコードを排除します。
変更内容
- src/coreclr/minipal/Unix/doublemapping.cpp:
TARGET_WASM条件下で以下の動作を無効化CreateDoubleMemoryMapper()が常にfalseを返すように変更CreateTemplate()とAllocateThunksFromTemplate()が常にNULLを返すように変更- テンプレートスンク対応のコンパイルを条件付けして、
pal_wasi_missing.hのDl_info包含を不要に
パフォーマンスへの影響
影響なし。本修正はWASM環境でのデッドコード除去であり、実行時の動作変更はありません。Release ビルドでは最適化により既にこれらの参照が削除されていました。
関連Issue
なし
その他
- 修正の背景: wasi-libc v33.0が
shm_open/shm_unlinkを宣言但しながら実装していないため、Debug ビルド(最適化なし)でリンク失敗が発生していた - 非推奨化なし: Apple専用の
FEATURE_MAP_THUNKS_FROM_IMAGEはWASM環境では使用されていないため、WASM上では機能的な影響なし - 検証済み: macOS arm64 + wasi-sdk 33.0環境で Debug/Release ビルドの両方で成功確認済み
#134857 Use safe code for UTF-8 StartsWith(OrdinalIgnoreCase)
- 作成者: @EgorBo
- 作成日時: 2026年09月29日 13:09:15(UTC)
- マージ日時: 2026年09月30日 17:10:05(UTC)
- ラベル: area-System.Runtime reduce-unsafe
概要
MemoryExtensions.StartsWithOrdinalIgnoreCaseUtf8 の実装を、アンセーフコードと手動最適化(ベクトル化、ループ展開)から、安全なspanベースのコードに書き換えました。UTF-8浮動小数点パースにおいてNumberFormatInfo.PositiveSign/NegativeSignのマッチングに使用される主要な機能です。前のバージョンのバグ(境界超過、プリフィックス長の検証不備、ASCII/非ASCIIの不一貫性)を修正し、非ASCIIルーンのケーシングをRune.ToUpperInvariantからRune.ToUpperOrdinalに変更して、UTF-16のOrdinalIgnoreCase動作と統一しました。
変更内容
- Ordinal.Utf8.cs:
Ordinal.StartsWithIgnoreCaseUtf8メソッドの完全な書き換え。ベクトル化されたコードを単一ループに置き換え、単一ASCIIバイトのインライン高速パスを追加。 - MemoryExtensions.Globalization.Utf8.cs: 新しい実装に対応して呼び出し側を簡素化。
- DoubleTests.cs: UTF-8パース関連の回帰テストを追加(39行)。
パフォーマンスへの影響
全体として改善傾向(特にLRM文字を含む複数バイトプリフィックスケースで顕著)ですが、プラットフォームごとに差異あり:
- macOS arm64: 高速化が顕著。LRM+LRM(7バイト)のケースで0.47倍(61.32ns → 29.04ns)に改善。単一ASCII(
+/-)での高速パスで0.92~0.99倍。 - Linux x64: ほぼ中立(0.96~1.03倍)、LRM関連で0.45倍に改善。
- Windows x64: 単純なASCIIケースで若干低下(1.02~1.10倍、3~10ns増)。LRM+LRM(7バイト)では0.47倍で改善、LRM+LRMプレーンでは1.06倍。複雑なケースで1.05~1.10倍の低下が見られます。
特に Windows x64 での単純ケースの小幅な低下が指摘されています。
関連Issue
なし
その他
動作変更に伴う互換性に関する注記:
ſ(U+017F) は従来sとマッチしていましたが、新実装ではマッチしなくなります。- Garay文字(U+10D70–U+10D85)など一部の新しいスカラーは、UTF-16と同じく大文字形式とマッチするようになります。
- 前のバージョンのバグ修正:3バイトのテール処理でメモリ超過アクセス、プリフィックスがソースより長い場合の誤マッチ、ブロックアライメント依存の結果が解決されました。
Copilot review により、Windows x64 での性能低下調査と回帰テスト強化の推奨があります。
#134821 [release/10.0] Ensure type loader templates for interface dispatch cells
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月28日 21:46:28(UTC)
- マージ日時: 2026年09月30日 21:34:56(UTC)
- ラベル: Servicing-approved area-NativeAOT-coreclr
概要
AOT(Ahead-of-Time)コンパイラがディスパッチセルからのみ参照されるジェネリック型の型ローダーテンプレートを生成漏れしていた問題を修正します。この問題により、MakeGenericType/Methodやジェネリック仮想メソッドディスパッチシナリオでNotSupportedExceptionやFailfastが発生していました。
修正内容は最小限で、追加の型ローダーテンプレート生成のみであり、低リスクです。
変更内容
- NativeLayoutVertexNode.cs: 型ローダーテンプレート生成ロジックの修正(4行追加、7行削除)
- Generics.cs: MakeGenericType/Methodおよびジェネリック仮想メソッドディスパッチをカバーするテストケースを追加(44行追加)
パフォーマンスへの影響
影響なし。本修正は必要な型ローダーテンプレートの生成を改善するもので、パフォーマンス特性に変化はありません。
関連Issue
#134774 のバックポート
その他
- .NET Nativeの時代から存在していた長期的な問題
- これまで見過ごされていた理由は、通常は他の手段(例:インターフェースリスト)から型ローダーテンプレートが生成されていたため
- 回避策として、エラーメッセージから報告された不足しているものを強制的に含めることで対応可能でした
- 本バックポートはrelease/10.0ブランチを対象としています
#134820 [release/11.0] Ensure type loader templates for interface dispatch cells
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月28日 21:46:18(UTC)
- マージ日時: 2026年09月30日 17:14:06(UTC)
- ラベル: Servicing-approved area-NativeAOT-coreclr
概要
コンパイラがディスパッチセルからのみ参照される型に対して型ローダテンプレートの生成をスキップしていた問題を修正します。この修正により、MakeGenericType/Method呼び出しやジェネリック仮想メソッドディスパッチが失敗するケースが解決されます。
変更内容
- NativeLayoutVertexNode.cs: 型ローダテンプレート生成ロジックを修正。ディスパッチセルを通じた型参照でも適切にテンプレートが生成されるように調整
- Generics.cs: MakeGenericType呼び出しとディスパッチセル経由の型参照をカバーするテストケース(44行)を追加
パフォーマンスへの影響
影響なし(不足していた型ローダテンプレートを追加生成するため、生成物サイズがわずかに増加する可能性がありますが、パフォーマンスへの悪影響はありません)
関連Issue
その他
- 本PRはrelease/11.0への逆流入(Backport)です
- 顧客報告の問題で、.NET Native時代から存在する既知のバグです
- 回避策として、エラーメッセージに報告された不足要素を強制的に含めることで対応可能でした
- リスク評価: 低リスク(追加の型ローダテンプレート生成のみで副作用なし)
- AOT(Ahead-of-Time)コンパイル環境における修正です
#134807 [release/11.0] Prevent infinite recursion in ILLink generic dataflow
- 作成者: @jtschuster
- 作成日時: 2026年09月28日 17:16:07(UTC)
- マージ日時: 2026年09月30日 22:25:17(UTC)
- ラベル: Servicing-approved linkable-framework area-Tools-ILLink
概要
ILLink のジェネリック型引数データフロー解析において、RequiresPublicMethods<Self> のような自己参照型署名が無限再帰を引き起こす問題を修正します。反射可視メンバーの署名データフロー解析進行中を追跡する「訪問済み」セットを導入し、同じメンバーへの再帰的進入時には署名解析のみをスキップしつつ、通常のマーキング・依存関係記録・アノテーション処理は継続します。
変更内容
- MarkStep.cs: アクティブな署名解析に対する再帰ガード機構を追加(+40/-5)
- GenericParameterDataFlowMarking.cs: 自己参照型および混合サイクルの無限再帰リグレッションテストを追加(+72)
パフォーマンスへの影響
影響なし。再帰チェック用の訪問済みセット追跡は最小限のオーバーヘッドで、解析時間の改善(無限ループの回避)が期待されます。
関連Issue
その他
- リグレッション:Yes(内部で発見)
- リスク評価:Low。修正は小規模で概念的にシンプル、テスト済みです
- このPRはrelease/11.0ブランチへの修正です
#134802 JIT: Use local definition visitors in async mutation analysis
- 作成者: @jakobbotsch
- 作成日時: 2026年09月28日 15:19:09(UTC)
- マージ日時: 2026年09月30日 08:19:03(UTC)
- ラベル: area-CodeGen-coreclr runtime-async
概要
非同期メソッド解析(async mutation analysis)における局所変数定義の検出方法を最適化しました。ノードの種類を列挙せずに局所定義ビジターを使用することで、ゼロ初期化とアドレス取得ルールを保持したまま効率化しています。
変更内容
- src/coreclr/jit/asyncanalysis.cpp: 局所定義の発見ロジックを、従来のノード種別チェックから局所定義ビジターパターンへ変更(+60/-69行)
- ノード種別の列挙処理を削減
- ゼロ初期化とアドレス取得に関するルール保持を明確化
パフォーマンスへの影響
JIT解析フェーズの効率化により、非同期メソッドのコンパイル時間が改善される可能性があります。ただし、具体的なベンチマーク数値は提供されていません。
関連Issue
なし
その他
なし
#134779 [wasm] Report arguments of VM-to-managed calls while running the prestub
- 作成者: @lewing
- 作成日時: 2026年09月28日 06:44:25(UTC)
- マージ日時: 2026年09月30日 00:47:48(UTC)
- ラベル: arch-wasm area-VM-coreclr
概要
WebAssembly上での VM-to-managed 呼び出しにおいて、prestub 実行時に呼び出し引数が適切にレポートされていない問題を修正します。prestub 実行中に GC が発生すると参照引数が解放され、呼び出し先で不正なポインタを受け取る可能性がありました。修正により、R2R コンパイル済みメソッドへの呼び出しでも prestub が毎回実行されるのを防ぎ、引数を PrestubMethodFrame 経由で正しく保護します。
変更内容
- src/coreclr/vm/callhelpers.cpp/h:
CallDescrDataに transition block 情報を渡すためのインターフェース追加 - src/coreclr/vm/reflectioninvocation.cpp: リフレクション呼び出し時に transition block を
CallDescrDataに渡す処理を追加 - src/coreclr/vm/wasm/calldescrworkerwasm.cpp:
MethodDesc::ShouldCallPrestub()を確認し、必要な場合のみ prestub を実行PrestubMethodFrameを引数上に構築して GC 中も引数を保護- R2R メソッドへの不要な prestub 呼び出しを削除
パフォーマンスへの影響
- R2R コンパイル済みメソッドへの呼び出し時に prestub 実行のオーバーヘッド削減
- ベースラインと比較して非ストレス環境ではパフォーマンス変化なし
関連Issue
その他
- GC ストレス検証:
CustomAttribute_CreateCustomAttributeInstanceなど属性処理での dangling reference 問題が修正されることを確認 - 制限事項:
DispatchCallSimpleはまだ transition block を持たないため、prestub 実行時の引数保護は未対応(将来の改善として位置付け) - GC ストレス下での検証結果: 修正前は assert エラーが発生していたが、修正後は安定して動作
- 既存の非ストレス環境での動作は変化なし
#134771 [wasm][CoreCLR] Run Wasm HardwareIntrinsics tests, gated on IsSupported
- 作成者: @lewing
- 作成日時: 2026年09月28日 04:46:22(UTC)
- マージ日時: 2026年09月30日 16:42:04(UTC)
- ラベル: area-System.Runtime.Intrinsics
概要
WebAssembly HardwareIntrinsics テストが CI で実行されていなかった問題を修正します。従来の EnableWasmHWIntrinsicsTests オプトイン方式を廃止し、他プラットフォームと同じモデルに統一:各 PackedSimd テストは PackedSimd.IsSupported が false の場合は早期リターンします。これにより、通常の browser lanes および ReadyToRun で自動的にテストが実行されるようになります。
変更内容
Wasm/PackedSimd/PackedSimdTests.cs:PackedSimd.IsSupportedチェックに基づいた早期リターン処理を追加(66 個のテスト対応)HardwareIntrinsics_Wasm_r/_ro.csproj:EnableWasmHWIntrinsicsTestsプロパティ定義を削除Wasm/Directory.Build.props: 条件付きテスト除外の設定を削除src/tests/build.proj: グループ 1 のみ構築制限を完全ツリービルドにのみ適用し、サブセットビルドでは Wasm HWI ランナーを含むグループも構築対象にhardware-intrinsics-wasm.yml: 統合ランナー(r/_ro.csproj)を Helix に送信、ReadyToRun フラグ有効化build-runtime-tests-and-send-to-helix.yml: ReadyToRun 送信時にhelixTypeを設定(修正前は空値でSendHelixJobが失敗)PackedSimdIsSupported:IsSupportedの true アサーションを削除(チェック自体は継続、一貫性確保)
パフォーマンスへの影響
影響なし
関連Issue
その他
- Wasm CoreCLR HardwareIntrinsics テストは 66 個あり、CI で初めて実行されます
- libraries 版 PackedSimdTests は browser CoreCLR trimmed R2R でローカルで 45/45 パス確認済み
- 本 PR の実行で初めて実際に動作検証されるため、失敗は隠蔽せず分類・調査する必要があります
#134769 [wasm] Report untracked GC slots for aborted Wasm R2R frames
- 作成者: @lewing
- 作成日時: 2026年09月28日 03:32:54(UTC)
- マージ日時: 2026年09月30日 18:10:32(UTC)
- ラベル: arch-wasm area-VM-coreclr
概要
Wasm R2R コードの例外ディスパッチ中に発生する GC ホール(GC 参照の報告漏れ)を修正します。例外が funclet からスローされた場合、親フレームの untracked スロットが報告されず、GC がそこで保持されているオブジェクトを誤って解放することがあり、SanityCheck() アサーションが失敗していました。
修正は GcInfoEncoding に HAS_INTERRUPTIBLE_RANGES トレイトを追加し、Wasm32 では false に設定。これにより EnumerateLiveSlots は interruptible range 処理をスキップし、aborted frames でも untracked スロットを報告するようになります。
変更内容
- gcinfotypes.h:
HAS_INTERRUPTIBLE_RANGESトレイトをGcInfoEncodingに追加 - gcinfoencoder.cpp/h: Wasm32 の場合、interruptible ranges の数をシリアライズしないように変更
- gcinfodecoder.cpp: デコード時に
HAS_INTERRUPTIBLE_RANGESがfalseの場合、interruptible range 処理をスキップし untracked スロットのみ報告 - GCInfoTypes.cs/Amd64/GcInfo.cs: R2RDump の対応コード更新
- cDAC GCInfoDecoder: デコード側の変更をミラー実装、IGCInfoTraits に新トレイト追加
- GCInfo.md: 変更内容をドキュメント化
パフォーマンスへの影響
メモリ削減:browser-wasm の System.Private.CoreLib.wasm で 1,088 バイト削減(0.003%)。interruptible ranges の数をシリアライズしないことで効果が出ます(11,606 個のメソッドで 2 ビット削減がバイト境界をまたぎ、5,331 個の unwind エントリが共有)。
実行速度への影響なし。
関連Issue
#134768、#134777、#134779、#133890
その他
- Wasm はまだリリースされていないため R2R バージョンバンプなし
- 修正は JIT ではなくデコーダーレベルで実施(JIT が Wasm メソッドを完全 interruptible と宣言するのは不正確)
- GC ストレステスト下での検証:修正前は rare flake として
SanityCheck()アサーション失敗、修正後はTest_throwinfinallynestedintry_30等が安定して成功 - R2RDump と cDAC ユニットテスト合格(3,179/3,179)
- ネイティブ (osx-arm64) と browser-wasm チェックビルド合格
- cDAC は
HAS_INTERRUPTIBLE_RANGESトレイトをミラー実装し、デフォルト値はtrue
#134697 Fix crossgen2 OverflowException emitting inlining info for runtime-async inliners
- 作成者: @lewing
- 作成日時: 2026年09月26日 02:49:42(UTC)
- マージ日時: 2026年09月30日 14:02:43(UTC)
- ラベル: area-ReadyToRun
概要
crossgen2で--opt-cross-module有効時に、ランタイム非同期インライナーのクロスモジュール情報を出力する際に発生していたOverflowExceptionとアサーション失敗を修正。根本原因はAsyncMethodVariantのCheck_IL_Bodyフィックスアップが正しく追跡されず、無効なオフセット値(int.MinValue)のキャストが例外を引き起こしていたこと。また、IL本体チェックに実装フラグ(miAsync・miSynchronized)を追加し、フラグのみ変わった陳旧なインライン展開を防止。
変更内容
- ILBodyFixupSignature.cs: 新規メソッド
GetSignatureMethodForCompiledMethodを追加。CompileMethodとInliningInfoNodeがCheck_IL_Bodyフィックスアップを取得する適切なメソッド(典型的EcmaMethodまたはAsyncMethodVariant)を共有 - InliningInfoNode.cs: クロスモジュールインライナーの場合、メソッド識別情報(
EcmaMethodまたはその他)を保存。コンパイラ生成async thunkやラッパーは報告対象外に変更 - ReadyToRunStandaloneMethodMetadata.cs: IL本体署名に
miAsync(0x04)とmiSynchronized(0x08)フラグをローカル変数テーブルを表すバイトに記録。これらのフラグがないメソッドは従来と同じblobを生成 - readytorunstandalonemethodmetadata.cpp (VM側): ランタイムメソッドにILヘッダーがない場合(タスク返却版がランタイム非同期化したケース)にフィックスアップを拒否
- テスト追加:
AsyncCrossModuleGenericInlinerテストケース、非同期メソッドのクロスモジュール汎用インライニングの回帰テスト、IL本体実装フラグのバージョニングテスト
パフォーマンスへの影響
影響なし
関連Issue
#134015(報告された問題)、#125472(async inlining変更に関連)、#133146(codegen変更に関連)
その他
- 互換性: crossgen2と実行時が異なる側からこの変更を取得した場合、非同期または同期メソッドの
Check_IL_Bodyが相互に拒否される。Verify_IL_Body(Debug/Checked CoreLib用)はフェイルファストとなり、新しいVMと古いCoreLibイメージの混在時はCoreLibの再構築が必要 - フォーマット変更: R2R形式自体は変更なし(古いランタイムは新しいblobを拒否するため)。readytorun-format.mdに記載済み
- 検証: osx-arm64でのテスト合格、既存R2Rテストスイート35合格・13プラットフォーム対象外、ブラウザCoreClR実行イメージの再現テスト成功
#134616 Build macOS Arm64 artifacts for M4 performance runs
- 作成者: @DrewScoggins
- 作成日時: 2026年09月24日 20:28:41(UTC)
- マージ日時: 2026年09月30日 02:07:49(UTC)
- ラベル: area-Infrastructure
概要
macOS Arm64上でのパフォーマンステスト実行(osx.26.arm64.m4.perf)向けに、CoreCLR パフォーマンスビルドのArm64アーティファクトを追加します。既存のクロスビルドおよびアーティファクトアップロードパスを再利用し、opt-inプラットフォームとしてosx_arm64をパフォーマンスビルドテンプレートに追加しています。
変更内容
- eng/pipelines/performance/templates/perf-coreclr-build-jobs.yml: macOS Arm64プラットフォームのサポートとアーティファクト公開機能を追加(+4/-1)
- eng/pipelines/performance/templates/perf-build-jobs.yml: リリースブランチ外でのmacOS Arm64ビルド有効化(+1/-0)
パフォーマンスへの影響
影響なし。ビルド構成の追加であり、ランタイムパフォーマンスへの直接的な影響はありません。
関連Issue
なし
その他
留意事項:
- 本変更はdotnet/performanceリポジトリのcompanion PR (#5323)と連動しており、M4マイクロベンチマークジョブの有効化前にランタイムパイプラインで利用可能である必要があります。
- Copilotレビューで複数の指摘あり:リリースブランチのmacOS Arm64ビルドガード除外、WASM ビルドの無条件削除、既存プラットフォーム選択の喪失に関する懸念が提示されています。
- ローカルでYAML/構造チェックは実施済みですが、Azure Pipelinesテンプレート展開、macOSビルド、エンドツーエンドのHelix実行検証はパイプラインでの実施が必要です。
#134585 Disable implicit AIA fetching for Schannel credentials
- 作成者: @rzikm
- 作成日時: 2026年09月24日 11:50:58(UTC)
- マージ日時: 2026年09月30日 15:14:28(UTC)
- ラベル: area-System.Net.Security
概要
Schannel認証情報の暗黙的なAIA(Authority Information Access)フェッチを無効化し、QUIC ハンドシェイク中の不要な遅延を削減するための変更です。キャッシュのみモード(cache-only)をSchannel認証情報フラグに追加し、MsQuic設定で適用することで、証明書チェーン取得時のネットワークアクセスを防ぎます。
関連Issue: #133645
変更内容
- Interop.SSPI.cs: Schannel認証情報フラグに
SECPKG_CRED_CACHE_ONLYフラグを追加 - MsQuicConfiguration.cs: 供給された証明書に対して一時的なSslStreamCertificateContextを構築・破棄し、MsQuic Schannel設定にキャッシュのみ取得モードを適用
- SslStreamPal.Windows.cs: 認証情報フラグの処理を更新
パフォーマンスへの影響
QUICハンドシェイク中のAIA フェッチによる不要な遅延を削減します。具体的なベンチマーク数値は提供されていません。
関連Issue
その他
Copilot Code Reviewから以下の指摘が挙げられています:
- 一時的な証明書コンテキストの破棄処理が
ConfigurationOpen失敗時に呼ばれない可能性がある点 - キャッシュのみフラグの保持方法についての確認が必要な点
これはセキュリティ脆弱性修正ではなく、パフォーマンス最適化に該当します。
#134582 Add ASP.NET end-to-end benchmarking skill and clarify microbenchmark scope
- 作成者: @adamsitnik
- 作成日時: 2026年09月24日 11:05:14(UTC)
- マージ日時: 2026年09月30日 15:39:14(UTC)
- ラベル: tenet-performance area-skills
概要
ASP.NET Core エンドツーエンドベンチマーク実施スキルを追加し、既存の BenchmarkDotNet ガイダンスを microbenchmark に名称変更・狭義化しました。マイクロベンチマークは単一操作の計測に対し、ASP.NET ベンチマークは並行リクエスト/レスポンス処理下でのスループット、レイテンシ、CPU 使用率への影響を測定します。ローカル SDK オーバーレイ測定と外部 Crank 実行の両ワークフローをカバーし、PlatformBenchmarks と BasicMinimalApi の両実装での回帰防止を徹底します。
変更内容
- 新規追加:
.github/skills/aspnet-benchmark/SKILL.md- ローカル SDK オーバーレイ測定と Crank ベースの外部実行ワークフロー、ビルド・トレース・シンボルマッチング・結果比較手順を記載 - 名称変更:
.github/skills/microbenchmark/SKILL.md-performance-benchmarkからmicrobenchmarkに変更、BenchmarkDotNet ガイダンスに狭義化 - 参照更新: 複数スキル(vectorization、jit-regression-test、issue-triage、build-and-test、api-proposal)およびコパイロット指示書でベンチマーク参照を更新
パフォーマンスへの影響
影響なし(ドキュメント変更のため)
関連Issue
なし
その他
Copilot レビューで複数の指摘が挙げられており、以下の未解決課題が存在:
- 高優先度: SDK オーバーレイ cleanup のバックアップパス固定化による上書き脆弱性、framework 依存アプリが upload されたランタイムバイナリを無視する問題
- 中優先度: Restore 検証のチェックサム記録漏れ、相対パスの working directory 解釈誤り
ローカル BasicMinimalApi ビルド・起動・wrk ワークフローで検証済み。
#134570 Preserve peer certificate chain in TlsSession
- 作成者: @wfurt
- 作成日時: 2026年09月24日 04:52:14(UTC)
- マージ日時: 2026年09月30日 16:32:58(UTC)
- ラベル: area-System.Net.Security
概要
TLS セッションにおいて、ピア提供の中間証明書チェーンを PAL チェーン破棄前にキャプチャし、リユーザブル TlsContext での証明書の永続化を防ぎます。プラットフォーム PAL 間での一貫性確保のため、GetRemoteCertificates() からはリーフ証明書を除外し、プリコンフィグされたチェーンポリシーエントリを保存します。
変更内容
- TlsSession.cs: ピア提供の中間証明書を
X509ChainPolicy.ExtraStoreからキャプチャして管理するロジックを追加。セッション再利用時の証明書汚染を防ぐため、キャプチャした証明書をセッション終了時に破棄。 - SslStream.Protocol.cs: キャプチャされた証明書をチェーン検証時に適用。
- TlsSessionTests.cs: クライアント/サーバー側でのチェーン保存とコンテキスト再利用のリグレッションテストを追加(5,035 機能テスト、134 ユニットテスト合格)。
パフォーマンスへの影響
影響なし。
関連Issue
その他
セキュリティ関連: Copilot レビューで「High severity」として、CertificateChainPolicy.ExtraStore の共有による並行性とクロスセッション証明書汚染リスクが指摘されていますが、本 PR はこれを解決するために設計されています。リユーザブルコンテキスト再利用時にセッション固有の証明書がコンテキストに保持されないよう改善されました。
#134527 [browser] Fix Debug-only startup failures: stack-first assert, incoming Module API, preRun function form
- 作成者: @pavelsavara
- 作成日時: 2026年09月23日 14:55:02(UTC)
- マージ日時: 2026年09月30日 05:49:46(UTC)
- ラベル: arch-wasm area-Build-mono os-browser
概要
WebAssembly Browser での Debug ビルド限定の起動失敗を3つ修正するプルリクエストです。(1) -O0 emscripten の stack-first レイアウトでの Mono MT のスタック境界アサーション、(2) Emscripten の INCOMING_MODULE_JS_API 宣言の欠落による Module.wasmMemory エラー、(3) preRun がコールバック関数として渡された時の反復不可エラー。
変更内容
1. Mono スタック境界修正 (src/mono/mono/utils/mono-threads-wasm.c)
pthread_getattr_npで取得するスタック開始アドレスがstack-first配置では合法的に NULL になることを許容- 既存の
register_threadの#ifndef TARGET_WASMアサーション除外と一貫性を確保
2. Emscripten Module API 宣言 (複数ビルドシステムファイル)
eng/native.wasm.targetsで CoreCLR のINCOMING_MODULE_JS_APIをセンターに定義(WebAssembly SDK に包含)src/mono/browser/browser.projで Mono のINCOMING_MODULE_JS_APIを定義、wasm-props.json経由で伝播- Emscripten の全26個のデフォルト API + Mono スレッド有効時に
wasmMemoryを追加 - Debug ビルドのみフラグを出力(Release は Emscripten デフォルト使用)
- 重複を排除し単一ソースから参照(
BrowserWasmApp.CoreCLR.targetsの旧フォールバック削除)
3. preRun コールバック正規化 (src/native/libs/System.Native.Browser/native/index.ts)
preRun/preInitを関数またはスプレッド可能な配列として受け入れるよう拡張- 型定義も
EmscriptenModuleInternalからEmscriptenModuleに統一 - 正規化ロジックを
dotnetInitializeModule内に内包(バンドル時の関数シリアライズで外部スコープ参照がドロップされるため)
4. TypeScript 型定義更新 (src/native/libs/Common/JavaScript/types/internal.ts)
- コールバック型を関数単体または関数配列の Union 型に拡張
5. その他クリーンアップ
- HTTP interop 型スクリプトのフォーマット修正
パフォーマンスへの影響
影響なし。すべて Debug ビルド時の起動エラー修正で、実行時パフォーマンスへの変更なし。
関連Issue
その他
- Mono スレッド有効 Debug ビルド (
-subset mono -c Debug /p:WasmEnableThreads=true) で動作確認済み - CoreCLR Debug ビルド (
-subset clr+libs+host -c Debug) で動作確認済み - npm ビルド・linting は成功
- 未検証: Wasm.Build.Tests や xharness での実行テスト
- Copilot 指摘: Debug CoreCLR ワークロード/ネイティブ再リンクテストの追加が推奨される。また、スタックベースが NULL の場合のスタック範囲チェック安全性について検討が必要とのこと
#134466 JIT: Fix several range check correctness bugs
- 作成者: @EgorBo
- 作成日時: 2026年09月22日 22:12:51(UTC)
- マージ日時: 2026年09月30日 22:11:30(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラの範囲チェック(range check)と境界チェック(bounds check)における複数の正確性バグを修正します。論理右シフトの範囲計算、浮動小数点型キャストを通じた範囲伝播、オーバーフロー検出、およびARM64のインデックス拡張生成に関する4つの修正を含みます。
変更内容
rangecheck.h/cpp:
RangeOps::ShiftRightを修正し、負の値に対する論理右シフト(x >>> [0..N])の上限計算を正確化- 浮動小数点型キャスト時に丸め/飽和を考慮し、浮動小数点VNには未知の範囲を設定
DoesVarDefOverflowを改善し、依存する制限値を持つ範囲内の局所変数定義をチェック対象に追加
codegenarmarch.cpp:
- ARM64の
genLeaInstructionを修正し、含まれたCAST/BFIZインデックスの符号拡張/ゼロ拡張をドロップしていた問題を解決 span[(int)longValue]のようなアドレス計算時に、add xd, xn, wm, UXTW/SXTW #scale命令を正しく生成
- ARM64の
回帰テスト: 3つの修正に対応したテストケースを追加(Runtime_134451.cs、Runtime_134452.cs、Runtime_134455.cs)
パフォーマンスへの影響
SPMIベンチマーク結果:
- 最初の2つの修正:差分なし
- オーバーフロー修正:+123バイト(コード生成サイズ増加)
- ARM64修正:サイズ中立(
LSL→UXTWへの置換)
関連Issue
その他
Copilot reviewより、ARM64アサーション問題(有効なlongからintへのGT_CASTが棄却される)と、ARM64拡張動作に対するターゲット化された回帰テストカバレッジの追加が推奨されています。
#134373 Prevent recursive ILLink generic dataflow
- 作成者: @jtschuster
- 作成日時: 2026年09月21日 20:29:56(UTC)
- マージ日時: 2026年09月30日 17:44:43(UTC)
- ラベル: linkable-framework area-Tools-ILLink
概要
ILLink のジェネリック引数のデータフロー分析において、RequiresPublicMethods<Self> のような自己参照型シグネチャが無限再帰を引き起こす問題を修正します。反射可視メンバーのシグネチャ分析を「訪問済み」セットで追跡し、同一メンバーへの再帰的エントリをスキップすることで、無限ループを防止します。通常のマーキング、依存関係の記録、アノテーション処理は継続されます。
変更内容
- MarkStep.cs: シグネチャのデータフロー分析時に再帰ガードを追加。反射可視メンバーの分析進行状況を追跡するメカニズムを実装し、同一メンバーへの重複分析をスキップ
- GenericParameterDataFlowMarking.cs: 自己参照型パラメータを含むメソッドおよびフィールドの再帰回避テストケースを追加
パフォーマンスへの影響
影響なし。再帰ガードは無限ループを防止することで、むしろ分析の完了を保証します。
関連Issue
その他
- リンカー(ILLink)の内部実装に対する変更で、.NET ライブラリの公開API には影響しません
- 回帰テストが含まれているため、同様の無限再帰問題の再発を防止できます
#134078 Implement ReadyToRunGenericHelperNode for WASM
- 作成者: @Copilot
- 作成日時: 2026年09月16日 17:13:49(UTC)
- マージ日時: 2026年09月30日 22:07:15(UTC)
- ラベル: arch-wasm area-NativeAOT-coreclr
概要
WASMコンパイルでReadyToRunジェネリックヘルパースタブを生成できるよう、WASM固有の実装を追加しました。ディクショナリーおよび型コンテキスト検索、静的ベース・スレッド静的・デリゲート・ハンドルヘルパーをサポートし、無効なディクショナリーエントリはThrowUnavailableTypeにルーティングします。
変更内容
- WasmReadyToRunGenericHelperNode.cs: WASM向けのジェネリックヘルパーコード生成を実装
- WASM署名定義とルックアップ出力の追加
- 辞書検索、型コンテキスト検索、静的ベース検索、スレッド静的検索、デリゲート検索、ハンドル検索に対応
- 無効なディクショナリーエントリハンドリング
パフォーマンスへの影響
影響なし
関連Issue
その他
注意: Copilotレビューにより、以下の既知の問題が指摘されています:
高重要度: スレッド静的検索パス(125行目付近)でオペランドスタックに余分な値が残る。
Local.Teeの使用により、非ジェネリックWASMヘルパーと異なるスタック構造[SP, indexCell, manager, index]が生成される。高重要度: ジェネリックコンテキスト読み込み(199行目付近)で誤ったローカルインデックスが指定されており、初期化されていないローカル変数から読み込まれる。
DelegateCtorではインデックス2、通常のヘルパーではインデックス0を使用する必要がある。高重要度:
DelegateCtorパス(154行目付近)でコンストラクタに不正な引数が渡される。Local.Get(2)を削除して予期された引数のみを渡す必要がある。高重要度: 遅延非GC静的ベースパス(115行目付近)で調整された非GC静的ベースポインタを
contextLocalIndexに格納し直す必要がある。中重要度: WASM向けのリグレッション テスト不足。ジェネリック辞書/型検索を含む代表的なケースをカバーするR2Rテストの追加が推奨される。
#133987 Fix case-sensitive extraction on Windows
- 作成者: @iremyux
- 作成日時: 2026年09月15日 19:05:56(UTC)
- マージ日時: 2026年09月30日 12:11:14(UTC)
- ラベル: area-System.Formats.Tar
概要
TAR抽出時のパス検証で序数比較(Ordinal)を使用するように修正し、Windows上でのケース依存のパス抽出に関する問題を解決します。これまでプラットフォーム依存の比較が使用されていましたが、大文字小文字の異なるディレクトリが正しく処理されていませんでした。
変更内容
- TarEntry.cs: パス検証時の
StringComparisonをStringComparison.Ordinalに統一(行442および522)normalizedFile.StartsWith(logicalPrefix, StringComparison.Ordinal)normalizedFile.Equals(logicalDest, StringComparison.Ordinal)fullPath.StartsWith(destinationDirectoryFullPath, StringComparison.Ordinal)
- TarFile.ExtractToDirectory.Stream.Tests.cs: ケース依存の抽出シナリオに関するテストケースを追加(50行追加)
パフォーマンスへの影響
影響なし
関連Issue
その他
- セキュリティ・保守性に関する注意:序数比較への変更はセキュリティに関連するため、コメントで「Windows上のケース依存ディレクトリをサポートするため、序数比較を使用する必要がある」という意図を明記することが推奨されています。
- テストカバレッジ:現在のテスト追加では早期の拒否ケースのみを検証しており、正規化されたパス(例:
subdir/../file、./)や同期/非同期の正常系など、より包括的な検証の追加が望まれています。
#133647 [release/10.0] Fix NoopLimiter disposal in DefaultPartitionedRateLimiter Heartbeat
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月10日 22:57:44(UTC)
- マージ日時: 2026年09月30日 21:56:20(UTC)
- ラベル: Servicing-approved area-System.Threading
概要
DefaultPartitionedRateLimiterにおいてNoopLimiterがDisposeされず、メモリリークとCPU使用率の増加を招いていた問題を修正するバックポート(#127582をrelease/10.0にバックポート)。NoopLimiterのインスタンスが100ms毎のハートビート処理で全Limiterのリスト上で無限に保持されていた。
変更内容
- DefaultPartitionedRateLimiter.cs: パーティションへのアクセスタイムスタンプを追跡し、アイドル状態のNoopLimiterインスタンスを自動的に削除するロジックを追加(61行追加、18行削除)
- RateLimiterHelper.cs: Null非許容タイムスタンプのオーバーロードを追加(5行追加)
- PartitionedRateLimiterTests.cs: NoopLimiterの削除動作とNull IdleDurationの互換性をカバーする回帰テストを追加(110行追加)
パフォーマンスへの影響
メモリリーク修正により、長時間の実行でメモリ使用量が増加しなくなる。また100ms毎のハートビート処理で全Limiterリストを処理する際のCPU負荷が減少する(アイドル状態のパーティションは自動削除)。
関連Issue
その他
- 本修正は.NET 7以降に存在していた問題
- ユーザーによる検証済み
- リスク評価:Low
- 回帰なし
- スレッドセーフな実装で既存のセマンティクスを保持
#133195 Use also extended policy for looking up auth context
- 作成者: @wfurt
- 作成日時: 2026年09月03日 18:36:10(UTC)
- マージ日時: 2026年09月30日 16:35:39(UTC)
- ラベル: area-System.Net
概要
Windows HttpListener の認証セッション再利用ロジックを更新し、Extended Protection ポリシーをキャッシュされた NegotiateAuthentication コンテキストに組み込みました。カスタムデリゲートが実行される際に期待されたレベルをチェックするために、認証コンテキストに拡張属性を追加します。これにより、ハンドシェイク中にポリシーが変更される場合の不正なコンテキスト再利用を防止します。
変更内容
- HttpListener.Windows.cs: キャッシュされた NegotiateAuthentication セッションの再利用判定時に Extended Protection ポリシーの同等性チェックを含める処理を追加。セッションの作成・再利用に使用された有効なポリシーを保持するロジック を実装
- HttpListenerAuthenticationTests.cs: Windows 専用の機能テストを追加。NTLM ハンドシェイク中に ExtendedProtectionSelectorDelegate がポリシーを厳格に変更する場合の回帰テストを実装(273 行追加)
パフォーマンスへの影響
影響なし
関連Issue
その他
Copilot による指摘事項あり: 現在の実装では、raw な per-request ポリシーではなく effective policy を比較・保持する必要があります。キャッシュされたセッションを永続化する際、セッション作成時に使用された有効なポリシーを保持する必要があり、その後のリクエストで同じベースで比較できるようにすべきです(src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListener.Windows.cs:1116 行目付近)。
#132752 Arm64-SVE: Support accessing unknown-sized Tier-0 locals from Tier-1 (OSR)
- 作成者: @snickolls-arm
- 作成日時: 2026年08月25日 15:30:19(UTC)
- マージ日時: 2026年09月30日 15:34:49(UTC)
- ラベル: arch-arm64 area-CodeGen-coreclr community-contribution arm-sve
概要
Arm64 SVE対応において、OSR(On-Stack Replacement)使用時にTier-0から割り当てられた未知サイズのローカル変数(Vector<T>など)へのアクセスをTier-1で正しく実行するための修正です。EEからのVector<T>のサイズ取得によりUnknownSizeFrameのサイズを計算し、VL(Vector Length)から各ベクトル/マスク変数の正確な仮想アドレスを導出してスタックオフセットを更新します。OSRはJIT専用機能のため、VLの読み取りが安全に可能という前提に基づいています。
変更内容
- compiler.h/cpp:
UnknownSizeFrame関連のロジック拡張。EEからVector<T>サイズを要求し、フレームサイズ計算と報告機構を更新 - lclvars.cpp:
UnknownSizeFrameに割り当てられたベクトル/マスク変数のスタックオフセット計算ロジック追加。VLに基づいた正確なアドレス計算 - codegencommon.cpp, emitarm64.cpp, emit.cpp: コードジェネレーション処理の微調整
- targetarm64.h: Arm64ターゲット固有の定義追加
- vectort.cs/csproj: OSR時の
Vector<T>アクセスをテストするJITテストケース追加
パフォーマンスへの影響
影響なし(正確性の修正であり、パフォーマンス上の変動の報告はなし)
関連Issue
なし
その他
本修正はArm64 SVE(Scalable Vector Extension)対応の一部であり、Tier-1 JIT(OSR)コンパイル時のスタックレイアウト処理に限定された内部実装の変更です。公開APIへの影響はありません。
#132245 Inline GC handle write barrier
- 作成者: @Copilot
- 作成日時: 2026年08月12日 23:22:44(UTC)
- マージ日時: 2026年09月30日 00:01:29(UTC)
- ラベル: tenet-performance area-GC-coreclr
概要
GCハンドルの書き込みバリア(write-barrier)ワーカーをインライン化し、呼び出し元に直接統合することで、GC/EEインターフェースを変更せずにパフォーマンスを改善します。マイクロベンチマークではハンドル割り当て/解放操作が約15%高速化されました。
変更内容
- handletable.inl: GCハンドル書き込みバリア処理をインライン化(122行追加)
- handletablepriv.h: ハンドルテーブルのプライベート定義を拡張(137行追加、47行削除)
- handletable.cpp, handletablecore.cpp, handletablecache.cpp: 従来の書き込みバリア実装を削除(計461行削除)
- gcinternal.h: インターフェース調整(1行変更)
- NativeAOT Runtime: GCハンドルユーティリティの対応更新(gchandleutilities.h に10行追加)
- その他: gc.h, handletable.h, handletablescan.cpp など関連ファイルの調整
パフォーマンスへの影響
GCハンドル割り当て/解放マイクロベンチマークで約15%の性能向上。インライン化により関数呼び出しオーバーヘッドを削減し、コンパイラの最適化機会が増加します。
関連Issue
その他
- 内部実装の最適化で、公開APIに対する破壊的変更なし
- Copilotが指摘した懸念事項:
handletable.inlの新コードでC言語スタイルのキャスト使用(reinterpret_castへの統一が推奨)rgBlockTypeの1バイトサイズ仮定について、変更時の潜在的リスク
#130407 Tar tests deduplicate
- 作成者: @alinpahontu2912
- 作成日時: 2026年07月09日 13:33:53(UTC)
- マージ日時: 2026年09月30日 08:27:47(UTC)
- ラベル: area-System.Formats.Tar
概要
System.Formats.Tar テストスイートの重複排除リファクタリング。同期・非同期のテスト変数を分離した個別ファイルをマージし、単一のテスト定義内で bool async パラメータまたはループを使用して両方のコードパスをカバーするように統合しました。これにより、冗長な *Async* テストファイルを削除し、テストの保守性と実行効率を改善します。
変更内容
- TarTestsBase.Helpers.cs 新規作成: 同期・非同期 Tar API を抽象化するヘルパーメソッドを追加
- TarWriter テスト: WriteEntry、WriteEntryAsync テストを統合。9 個の冗長な async テストファイルを削除
- TarReader テスト: GetNextEntry、GEA(Global Extended Attributes)テストを統合。async テストファイルを削除
- TarFile テスト: CreateFromDirectory、ExtractToDirectory テスト(ファイル・ストリーム両対応)を統合。複数の async テストファイル(6 個以上)を削除
- TarEntry テスト: ExtractToFile テストを統合。async テストファイルを削除
- CompressedTar テスト: 同期・非同期パス両方をカバーするよう更新
- System.Formats.Tar.Tests.csproj: 削除されたテストファイルをコンパイル項目から除去、新しいヘルパーファイルを追加
パフォーマンスへの影響
懸念点: TarTestsBase.Helpers.cs の GetNextEntry ヘルパーメソッド(行 49)が async Task<TarEntry?> を返すため、同期パスで呼び出されるたびに避けられる Task アロケーションが発生します。ループ内での呼び出し(leave-open テストなど)で不要なメモリオーバーヘッドが増加する可能性があります。ValueTask<TarEntry?> への変更と async/await の廃止を検討する必要があります。
関連Issue
その他
- レビュー指摘: 以下の改善点が指摘されています:
- TarReader の確実な解放が保証されていない:アサーションや読み取り失敗時に
using宣言から手動解放に変更されたため、ファイルハンドルがリークする可能性があります(特に Windows で一時ディレクトリのクリーンアップに影響)。try/finallyまたはawait usingの使用が推奨されています。 - 未使用の
CreateTarReaderオーバーロード(行 85)の削除を推奨 - テスト内のコメント誤記(TarWriter.WriteEntry.File.Tests.cs 行 319):ディレクトリエントリに関する末尾コメントがハードリンクテストに適さず、置き換えが必要
- TarReader の確実な解放が保証されていない:アサーションや読み取り失敗時に