Pull Request on 2026年07月15日

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

注意点

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


目次

  1. #130797 Remove dead switch-table disassembly code from the xarch emitter
  2. #130795 Fix EC/DSA key generation cache under concurrency
  3. #130789 Rename INumberBase partial-parse overloads to TryParsePartial
  4. #130772 [browser][coreCLR] relink with -O3
  5. #130771 Only include System.Runtime.InteropServices.JavaScript in coreAssembly for Mono
  6. #130763 Re-enable EmittingIgnoresAccessChecksToAttributeIsRespected on CoreCLR interpreter
  7. #130756 Improve malformed TLS handshake frame detection
  8. #130753 Follow-ups to GVM dispatch change
  9. #130743 Remove unsafe code from System.Net.Mail decoders
  10. #130740 [wasm] Fix reverse P/Invoke thunk key for nested [UnmanagedCallersOnly] types (CoreCLR + Mono)
  11. #130738 Move bulk of the CoreCLR delegate implementation to Delegate.CoreCLR.cs
  12. #130737 Fix IsSupported tests for ML-KEM
  13. #130732 [cDAC] Avoid exception-based GetTypeParam probing
  14. #130728 [cDAC] Remove vestigial IsPegged from HandleData
  15. #130727 Replace Unsafe.SizeOf with sizeof
  16. #130705 Apply a number of mitigations to System.Security.Cryptography.Xml
  17. #130703 Don't throw from TensorPrimitives.Clamp when min is greater than max
  18. #130701 Remove unnecessary DisablePackageBaselineValidation from projects
  19. #130687 Fix FileStream position not updated when sync write partially succeeds
  20. #130685 Annotate Directory_Move_Multiple_From_Watched_To_Unwatched_Mac with [ActiveIssue]
  21. #130676 Preserve Android NativeAOT single-file test results
  22. #130673 Remove obsolete Apple ICU data bundling
  23. #130670 [clr-ios] Increase MacCatalyst CoreCLR job timeouts
  24. #130669 Fix CI workflow eval reporting and PR status
  25. #130668 Guard CI fixer against no-op test rooting changes
  26. #130663 Allow trimming NativeRuntimeEventSource
  27. #130653 [RyuJIT Wasm] Add JIT\HardwareIntrinsics\Wasm Tests
  28. #130635 DCS: Add more formal BOM-detection to Json encoding stream wrappers.
  29. #130632 Add test coverage for UnmanagedCallersOnly with CallConvFastcall (Windows-only)
  30. #130631 [main] Source code updates from dotnet/dotnet
  31. #130614 [browser] emscripten 6.0.2 follow up
  32. #130613 [browser][coreCLR] abort faster on unexpected errors
  33. #130603 Trim STAThreadAttribute in single-threaded (browser/wasi) Mono apps
  34. #130528 Exclude ResolvedFromDifferentContext collectible-unload test from GC stress
  35. #130482 JIT: Allow inlining of JIT-inserted AsyncHelpers.TransparentAwait
  36. #130456 Improve Linux AIA fetching
  37. #130449 Add default install dir for OpenBSD
  38. #130429 Fix XmlSerializer regression for derived XmlText properties
  39. #130346 [automated] Merge branch 'release/8.0' => 'release/8.0-staging'
  40. #130345 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'
  41. #130343 Fix failing symlink tests (9.0)
  42. #130342 Fix failing symlink tests
  43. #130304 Fix zip unix permissions
  44. #130124 [issue-check] Add closed issue reference check agentic workflow
  45. #130082 Http Request Compression
  46. #130053 Add CompositeMLDsa CNG (NCrypt)
  47. #130039 Add Sm4 and SVE Sm4 APIs
  48. #129992 Add MRV debug info for multi-register FP/mixed struct returns on Unix x64
  49. #129924 Consolidate RSA tests into S.S.C.
  50. #129609 Use dispatch cells for generic virtual method dispatch

#130797 Remove dead switch-table disassembly code from the xarch emitter

概要

xarch JIT emitterのデバッグ出力コードから、到達不可能な古いswitch/jump-tableのdisassembly処理を削除するクリーンアップ。emitIns_IJ関数は現代のswitch codegen (genTableBasedSwitch) により呼び出されなくなり、jump-table識別もdsTypeに移行したため、奇数サイズマーカーを用いた判別ロジックは不要になった。codegen/runtime動作への影響はなく、DEBUG出力の簡潔化のみ。

変更内容

  • src/coreclr/jit/emitxarch.h: emitDispAddrModeのnoDetailパラメータを削除、emitIns_IJ宣言を削除
  • src/coreclr/jit/emitxarch.cpp:
    • 到達不可能なjump-table disassembly処理(jtno/jdscローカル変数、label-finderループ、テーブルダンプ)を削除
    • emitIns_IJ関数定義を削除
    • 呼び出し元をnoDetailパラメータなしで更新

パフォーマンスへの影響

影響なし。削除対象はDEBUGのみの表示コード(到達不可能なパス)であり、ライブパスの命令生成・実行に変化なし。disassembly出力は既存のemitDispClsVar (@RWDラベル)、emitDispDataSec(dsTypeベースの判別)、genEmitJumpTable(詳細ヘッダ出力)により同等の情報が提供される。

関連Issue

なし

その他

  • 本変更は2020年のdirectory-moveから長く死んだコードの削除(git log -S の調査による)
  • 他のアーキテクチャ (arm/arm64/riscv64/loongarch64) は影響なし。奇数dsSizeマーカーはxarch固有、他はdsTypeによる識別を既に使用
  • ビルド確認済み (clr.jit -c checked -a x64: 警告・エラーなし)、jitformat.py実行結果なし

#130795 Fix EC/DSA key generation cache under concurrency

概要

EC/DSA鍵生成キャッシュの並行実行時の競合問題を修正しました。テスト派生クラスが並行実行される際、同じDSAProvider/ECDsaProviderに対して複数の派生テストクラスがDSA/ECDsa インスタンスを共有し、同時にアクセスされる問題を解決しています。このレグレッションは#129320で導入され、以前の同様の問題は#34045で報告、#34199で修正されていました。

変更内容

  • DSASignatureFormatTests.cs: 静的鍵キャッシュのキーをDSAProviderから(DSAProvider, Type)のタプルに変更。これにより、各派生テストクラスがプロバイダーごとに独立したキャッシュを持つようになります。
  • ECDsaSignatureFormatTests.cs: DSAと同じパターンで、鍵キャッシュキーを(ECDsaProvider, Type)に変更。

パフォーマンスへの影響

影響なし(テスト用の修正で、ランタイムパフォーマンスに関連しません)

関連Issue

その他

この修正は公開API変更ではなく、暗号化テストの内部実装修正です。並行テスト実行環境(DsaArraySignatureFormatTests、DsaArrayOffsetSignatureFormatTests、DsaSpanSignatureFormatTests)での競合状態を排除します。


#130789 Rename INumberBase partial-parse overloads to TryParsePartial

概要

.NET 11向けに、ジェネリック数値型の部分パース(partial parsing)API形状を再設計します。INumberBase<TSelf>にTryParsePartialという新しいstatic virtualメソッドを追加し、既存のTryParse(..., out charsConsumed)オーバーロードをリネームして公開APIとします。同時に、公開APIからNumberStyles.AllowTrailingInvalidCharactersフラグを削除し、内部専用のセンチネル値(0x8000_0000)に置き換えます。

// 新しいTryParsePartial署名(INumberBaseで定義)
static virtual bool TryParsePartial(string s, NumberStyles style, IFormatProvider? provider, out TSelf result, out int charsConsumed);
static virtual bool TryParsePartial(ReadOnlySpan<char> s, NumberStyles style, IFormatProvider? provider, out TSelf result, out int charsConsumed);

変更内容

  • INumberBase<TSelf>: TryParsePartialをstatic virtualDIMs(デフォルト実装メンバー)として追加。フォールバック実装はTryParseを呼び出し、成功時に全入力を消費済みとして報告
  • NumberStyles.cs: 公開フラグAllowTrailingInvalidCharactersを削除。最上位ビット(0x8000_0000)を内部専用セン手ネル用に予約
  • Number.Parsing.Common.cs: 内部専用のNumber.AllowTrailingInvalidCharactersセンチネルを定義
  • CoreLib数値型(Byte、Int32、Double、Decimal等):明示的インターフェース実装から公開TryParsePartialメソッドに変更
  • BigInteger/Complex: スタイル検証ロジックを更新し、センチネルビットを削除してから検証を実行
  • テスト: 全テストをTryParsePartialAPIに更新(3117テスト合格、73528テスト合格、33スキップ)

パフォーマンスへの影響

影響なし

関連Issue

#130537、#87171

その他

  • IParsable、ISpanParsable、IUtf8SpanParsableは.NET 11の対象外
  • 公開API(破壊的変更):NumberStyles.AllowTrailingInvalidCharactersフラグが削除されるため、このフラグを使用していたコードは修正が必要
  • 変更は対象レポジトリの参照サーフェス(ref アセンブリ)にも反映済み

#130772 [browser][coreCLR] relink with -O3

概要

CoreCLR ブラウザ-WASM リリンク時の Emscripten 最適化レベルを -O2 から -O3 に引き上げます。コンパイル時のデフォルト最適化フラグおよびリリースビルド時のリンク最適化フラグが対象です。

変更内容

  • src/mono/browser/build/BrowserWasmApp.CoreCLR.targets: EmccCompileOptimizationFlag のデフォルト値を -O2 から -O3 に変更、リリースビルド時の EmccLinkOptimizationFlag を -O2 から -O3 に変更(計4行の変更)

パフォーマンスへの影響

Emscripten の -O3 は -O2 よりも攻撃的な最適化を適用するため、実行速度の向上が期待されます。ただし、マクロベンチマークで性能低下が確認された場合はロールバック予定とのこと。

関連Issue

#108976

その他

WebAssembly ターゲットのビルド設定変更です。内部実装(MSBuild ターゲット)への変更であり、公開 API への影響はありません。


#130771 Only include System.Runtime.InteropServices.JavaScript in coreAssembly for Mono

  • 作成者: @Copilot
  • 作成日時: 2026年07月15日 11:09:57(UTC)
  • マージ日時: 2026年07月15日 18:36:20(UTC)
  • ラベル: area-Build-mono

概要

WebAssembly ブートコンフィグ生成時に System.Runtime.InteropServices.JavaScript.dll をMonoランタイムのみの必須アセンブリとする変更。CoreCLRではブート時に不要であるため、ランタイムフレーバーに応じた条件付き処理を実装しました。

変更内容

  • GenerateWasmBootJson.cs: UseMonoRuntime パラメータを追加し、isMonoRuntime フラグを計算して BootJsonBuilderHelper に渡すように変更(UseMonoRuntime=false でのみCoreCLR判定)
  • BootJsonBuilderHelper.cs: プライマリコンストラクタに IsMonoRuntime フラグを追加。System.Private.CoreLib は両ランタイム共通のコアアセンブリとして、System.Runtime.InteropServices.JavaScript はMonoランタイムのみをターゲット時のコアアセンブリリストに移行
  • Microsoft.NET.Sdk.WebAssembly.Browser.targets: UseMonoRuntime プロパティをビルド・パブリッシュタスク呼び出しに渡し、インクリメンタルビルド・パブリッシュのスタンプコンテンツに追加してランタイムフレーバー変更時にブートコンフィグを再生成

パフォーマンスへの影響

影響なし

関連Issue

#122392

その他

レビュアーから、BootJsonBuilderHelper が公開型であるため、プライマリコンストラクタシグネチャの変更は外部利用者への破壊的変更となる可能性がある旨の指摘がある。互換性を考慮した従来のコンストラクタオーバーロード追加の検討が推奨されている。


#130763 Re-enable EmittingIgnoresAccessChecksToAttributeIsRespected on CoreCLR interpreter

概要

CoreCLR interpreter環境でEmittingIgnoresAccessChecksToAttributeIsRespected RefEmitテストを再度有効化するPRです。このテストは以前Issue #125988により無効化されていましたが、根本原因が解決されたため再度有効化します。

変更内容

  • src/tests/reflection/RefEmit/EmittingIgnoresAccessChecksToAttributeIsRespected.cs: CoreCLR interpreter向けの[ActiveIssue(...125988..., IsCoreClrInterpreter)]属性を削除(1行削除)
  • NativeAOTおよびMono-FullAOT向けのActiveIssue属性は維持

パフォーマンスへの影響

影響なし

関連Issue

#125988、#125460

その他

  • CoreCLR interpreter(x64)における複数実行モード(DOTNET_InterpMode=1|2|3、インタープリタ専用含む)での検証完了、すべて終了コード100で成功
  • browser-wasm CoreCLR(インタープリタ専用)での検証完了、node経由3回実行すべて終了コード100で成功
  • マージ後のCI(browser-wasm interpreter)による最終確認待機中

#130756 Improve malformed TLS handshake frame detection

  • 作成者: @rzikm
  • 作成日時: 2026年07月15日 08:00:07(UTC)
  • マージ日時: 2026年07月15日 17:47:04(UTC)
  • ラベル: area-System.Net.Security

概要

TLSハンドシェイク中の不正形式のTLSフレームヘッダー検出を改善するPRです。従来は不正なフレームヘッダーをLength = -1で返却していましたが、今後はfalseを返却して早期に失敗させるように変更されました。これにより、ハンドシェイク処理中に不正なTLSレコードが検出された場合、AuthenticationExceptionをスローして即座に失敗するようになります。

変更内容

  • TlsFrameHelper.cs: TryGetFrameHeaderメソッドで未知の/不正形式のTLSフレームに対してfalseを返却するように変更(従来はtrue+Length = -1で返却)
  • SslStream.IO.cs: ハンドシェイクフレーム集約処理で、不正なフレームヘッダーをAuthenticationExceptionで失敗させるように変更。GetFrameSizeメソッドの失敗時の動作を調整
  • SslStreamStreamToStreamTest.cs: リネゴシエーション/ハンドシェイク後認証時に不正なTLSバイト列を挿入するリグレッション テストを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

Copilotレビュアーから以下の懸念が指摘されています:

  • 例外処理の動作が変更されるため、通常のRead処理時にAuthenticationExceptionがIOExceptionでラップされるようになり、ユーザー側で確認される例外のメッセージ形状が変わる可能性があります。ハンドシェイク処理限定の動作を意図する場合は、例外処理のスコープを限定する必要があるかもしれません
  • ログメッセージ「invalid TLS frame size」は、実際には「invalid TLS frame header」の方がより正確な状況説明になると考えられます

#130753 Follow-ups to GVM dispatch change

概要

GVM(汎用仮想メソッド)ディスパッチ変更 #130753 のフォローアップです。NativeAOT ランタイムのディスパッチ解決ロジックに関連した調整が行われています。

変更内容

  • ICodeManager.h: インターフェース定義の軽微な変更(+1/-1)
  • amd64/DispatchResolve.S: amd64アーキテクチャのディスパッチ解決ロジックの調整(+11/-11)
  • arm64/DispatchResolve.S: arm64アーキテクチャのディスパッチ解決ロジックの調整(+11/-11)

パフォーマンスへの影響

影響なし(フォローアップ調整であり、パフォーマンス関連の情報は提供されていません)

関連Issue

#130753

その他

NativeAOT ランタイムの複数アーキテクチャ(amd64、arm64)対応のディスパッチ機構に関わる変更です。


#130743 Remove unsafe code from System.Net.Mail decoders

概要

System.Net.Mail のデコード処理から unsafe ポインタベースのコードを削除し、安全な Span<byte> インデックスベースの実装に置き換えます。既存のバッファ内デコード(decode-in-place)動作は保持されます。

変更内容

  • QuotedPrintableStream.cs: unsafe ポインタループを整数ベースの source/destination インデックス付き Span<byte> 操作に置き換え
  • QEncodedStream.cs: Q エンコーディングのデコードをポインタベースから Span<byte> インデックスベースに変更(_ → スペース変換を含む)
  • Base64Stream.cs: Base64 デコードループを unsafe ポインタから Span<byte> インデックスベースに変更し、バッファ内デコードセマンティクスを維持
  • QuotedPrintableStreamTest.cs: テストケース追加(27行)
  • エンコード完全性のため、quoted-printable および Q-encoded デコードに明示的な空バッファ高速パスを追加

パフォーマンスへの影響

わずかな冗長なバウンドチェックが追加されます。作成者は System.Net.Mail が極限の性能を必要としないと想定しており、この影響は許容範囲内と考えています。

関連Issue

なし

その他

  • コード中の空白行を無視してレビューすることが推奨されています
  • ReadState トラッキングによる既存の部分エスケープ継続動作は保持されます

#130740 [wasm] Fix reverse P/Invoke thunk key for nested [UnmanagedCallersOnly] types (CoreCLR + Mono)

概要

WebAssembly上で、ネストされた[UnmanagedCallersOnly]型の逆P/Invoke Thunkキー生成を修正します。CoreCLRとMonoの両方で、ネストされた型のnamespaceハンドリングが不一致だったため、native-to-interpテーブルのキー検索に失敗していました。修正により、ジェネレータはメタデータのnamespaceを使用するようにし、ネストされた型に対して空のnamespaceを生成します。

Namespace = t.IsNested ? string.Empty : t.Namespace;

変更内容

  • src/tasks/WasmAppBuilder/coreclr/PInvokeCollector.cs / src/tasks/WasmAppBuilder/mono/PInvokeCollector.cs: ネストされた型に対して空のnamespaceを生成するロジックを追加(内部実装の修正)
  • src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs: UnmanagedCallersOnly_Nestedテストケースを追加(ネストされた型のcold-ldftn呼び出しを検証)
  • src/mono/wasm/testassets/EntryPoints/PInvoke/UnmanagedCallbackNested.cs: ネストされた型とダブルネストされた型のコールバックテストアセット追加
  • src/mono/wasm/testassets/EntryPoints/PInvoke/UnmanagedCallbackNestedConflict.cs: 同一の簡潔名を持つネストされた型の衝突ケースを記録([ActiveIssue(#130739)]でスキップ)

パフォーマンスへの影響

影響なし

関連Issue

その他

  • 本修正はWebAssemblyプラットフォームのみに影響します
  • CoreCLRではアサーション失敗(precode_portable.cpp:35)、Monではトラップ(MONO_WASM: null function)が発生していました
  • テストはbrowser-wasmで実行され、Mono・CoreCLR両方のジェネレータをカバーします
  • ネストされた型の簡潔名衝突の完全な解決は#130739で追跡されています

#130738 Move bulk of the CoreCLR delegate implementation to Delegate.CoreCLR.cs

  • 作成者: @jkotas
  • 作成日時: 2026年07月14日 22:49:19(UTC)
  • マージ日時: 2026年07月15日 16:12:46(UTC)
  • ラベル: area-System.Reflection

概要

CoreCLRのDelegate実装をリファクタリングし、マルチキャストの結合/削除やデリゲートコンストラクタロジックをMulticastDelegate.CoreCLR.csからDelegate.CoreCLR.csに移動しました。NativeAOTの実装構造に合わせることで、Unsafe.Asキャストを削除し、マネージドC++で生成されたコード内の隠れたnewメンバー宣言による互換性問題(#130612)を修正します。

変更内容

  • CoreCLR: マルチキャスト結合/削除とデリゲートコンストラクタヘルパーをDelegate.CoreCLR.csに統合。VM側(corelib.h、comdelegate.cpp)を更新してデリゲート構成時にSystem.MulticastDelegateではなくSystem.Delegateをバインド対象に変更
  • Mono: MulticastDelegate上の隠れたnewメンバーを避けるため内部ヘルパー名を変更し、Delegate経由で処理をルーティング
  • 共有CoreLib: COM可視属性をshared定義に移動。デリゲート逆シリアル化エラーをSerializationExceptionに統一
  • NativeAOT: 未使用の内部ヘルパーを削除、HasSingleTargetをpartial化

パフォーマンスへの影響

影響なし

関連Issue

#130612

その他

  • マネージドC++で生成されたコードとの互換性問題を修正する破壊的でない変更
  • VM側の複数ファイル(corelib.h、comdelegate.cpp、appdomain.cpp、metasig.h)で対応するバインディング更新が実施されており、ランタイムとライブラリの整合性が取られている

#130737 Fix IsSupported tests for ML-KEM

概要

ML-KEM の IsSupported プロパティをテストするテストクラスの構成を修正しました。従来は [ConditionalClass] により IsSupported が true の場合のみテストが実行されていたため、false の場合の検証がなされていませんでした。同時に、Azure Linux の SymCrypt-OpenSSL 1.10 対応に伴う プラットフォーム比較テストの柔軟化を実施しています。

変更内容

  • MLKemImplementationTests.cs:
    • IsSupported プロパティ検証用テストを [ConditionalClass] ゲーティング対象外の独立したクラスに移動し、IsSupported が false の場合でもテスト実行可能に変更
    • IsSupported_AgreesWithPlatform テストで Azure Linux の SymCrypt-OpenSSL 1.10 バックポート対応により、プラットフォーム期待値チェックを緩和

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

テスト実行環境による IsSupported の戻り値が異なるため、プラットフォーム判定の硬直的な期待値から柔軟な許容範囲へ変更されています。Azure Linux 4 以降では ML-KEM サポートが確定的になるため、その時点で更新検討可能です。


#130732 [cDAC] Avoid exception-based GetTypeParam probing

概要

cDAC(Compact Diagnostic Access Component)の SOS フィールド記述子投影ロジックを改善し、GetTypeParam 呼び出し前に既存の HasTypeParam 述語を使用することで、例外ベースの制御フローを排除しました。ArgumentException を通常の制御フローとして使用しない変更です。

変更内容

  • src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.cs
    • try { GetTypeParam } catch (ArgumentException) による例外ベースの型パラメータ探査を廃止
    • HasTypeParam 述語による明示的なチェックに変更
    • 配列、型パラメータ付き型記述子、および非配列 MethodTable に対する MTOfType 選択の動作は維持

パフォーマンスへの影響

改善の可能性あり。例外の生成・キャッチに伴うオーバーヘッド(スタック走査、例外オブジェクト生成)が排除されるため、特に型パラメータを持たないケースの処理が高速化する可能性があります。

関連Issue

なし

その他

  • 検証済み:ビルド成功(警告 0、エラー 0)、単体テスト 2697 パス・16 スキップ、対象テスト 16 パス
  • GitHub Copilot による支援で作成されたPR

#130728 [cDAC] Remove vestigial IsPegged from HandleData

概要

cDAC(Contracts DAC)のGCハンドル契約から未使用のIsPeggedフィールドを削除する変更です。コンシューマー向けのHandleDataからはIsPeggedを除去し、レガシーSOS互換性のためSOSHandleData.IsPeggedは保持しつつ常に0を出力します。

変更内容

  • IGC.cs(Abstractions): HandleData record struct からIsPeggedメンバを削除(公開API層の変更)
  • GC_1.cs(Contracts): ハンドル列挙時のHandleData.IsPegged設定ロジックを削除
  • SOSDacImpl.cs(Legacy): SOSHandleData.IsPeggedを常に0で出力し、DEBUG時にペグ状態が常にゼロであることをアサート
  • GC.md(ドキュメント): 契約仕様ドキュメントのハンドル構築ロジックを更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 破壊的変更: HandleDataの公開API からIsPeggedフィールドが削除されます
  • 互換性: レガシーSOS出力形式(SOSHandleData)との互換性は維持されます
  • テスト結果: ユニットテスト2697件合格、GCTestsターゲット実行24件合格

#130727 Replace Unsafe.SizeOf with sizeof

概要

コードベース全体で Unsafe.SizeOf<T>() を C# の sizeof(T) 演算子に置き換え、不要な unsafe コンテキストを削除するメカニカルな整理。最近のコンパイラ改善により、sizeof(T) は管理型でも使用でき、unsafe キーワードなしで使用可能になったため、より単純で汎用的なアプローチが実現。Unsafe.SizeOf<T>() API のテストカバレッジは維持。

変更内容

  • 主な変更対象: テストコード、ライブラリ、ツール全体で Unsafe.SizeOf<T>() を sizeof(T) に置換
    • ハードウェアイントリンシックテンプレート 60+ ファイル
    • JIT テスト、メモリ操作テスト、相互運用性テスト
    • Vector64/Vector128、Number.BigInteger など System.Private.CoreLib の実装
    • Base64Helper、JSON Document、ネットワーク関連ライブラリ
  • 副次的な変更: sizeof のためだけに存在していた unsafe ブロックを削除
  • ドキュメント更新: RuntimeHelpers の remarks を sizeof(T) 参照に統一

パフォーマンスへの影響

sizeof(T) 演算子は、Unsafe.SizeOf<T>() で発生していた汎用メソッド呼び出しとジェネリック型システムのオーバーヘッドを排除するため、わずかなパフォーマンス改善の可能性あり。ただし定量的なベンチマーク結果は提供されていない。

関連Issue

なし

その他

  • このPRはGitHub Copilotで生成されたメカニカルな変更
  • レビュアーのCopilot分析では 253 ファイル中 219 ファイルを検証

#130705 Apply a number of mitigations to System.Security.Cryptography.Xml

概要

System.Security.Cryptography.Xmlに対して、攻撃者が制御するXMLワークロードに対する堅牢性とセキュリティを強化するための複数の対策を適用します。具体的には、TransformChain内のTransform数、XmlDecryptionTransformによる暗号化要素処理数に上限を設定し、Transform実行中の中間状態をメモリから削除して保持期間を短縮します。

変更内容

  • Transform.cs: 内部仮想メソッドClearState()を追加(Transform状態クリア用フック)
  • TransformChain.cs: デシリアライズ時にTransform個数の上限を強制、出力生成後に各TransformのClearState()を呼び出し
  • XmlDecryptionTransform.cs: 処理EncryptedData要素数に設定可能な上限を追加、ClearState()を実装
  • 各Transform実装クラス (XmlDsigBase64Transform、XmlDsigC14NTransform、XmlDsigEnvelopedSignatureTransform、XmlDsigExcC14NTransform、XmlDsigXPathTransform、XmlDsigXsltTransform、XmlLicenseTransform): ClearState()をオーバーライドし、キャッシュ済みドキュメント、入力ストリーム、正規化状態などの中間状態を解放
  • LocalAppContextSwitches.cs: 新しい上限値用のAppContextスイッチとデフォルト値を追加
  • CryptoHelpers.cs: アルゴリズム名内のネストされた型表記(+)をフィルタリング対象に追加
  • テスト: TransformChain限度テスト、暗号化要素処理限度テスト、Transform再利用テスト、AppContextスイッチ動作テスト、新規XMLサンプルリソース(EncryptedXmlSample5.xml)を追加

パフォーマンスへの影響

メモリ使用量を削減。Transform実行中に中間状態が継続的にクリアされることで、長いTransformチェーン処理時のメモリ保持量が低減します。計測値は提供されていません。

関連Issue

なし

その他

公開APIではなく、内部実装の堅牢化です。AppContextスイッチにより、必要に応じて上限値を調整・無効化できるため、互換性への影響は最小限に抑えられています。


#130703 Don't throw from TensorPrimitives.Clamp when min is greater than max

概要

TensorPrimitives.Clampの動作を統一し、min > maxの場合に例外をスローしないようにしました。スカラー処理パスをベクトル処理パス(Vector128/256/512.Clamp)と同じ意味論に合わせ、両方ともMin(Max(x, min), max)を計算するように変更しました。これにより、要素位置に関わらず一貫した動作が保証されます。

変更内容

  • TensorPrimitives.Clamp.cs: スカラーClampOperator*実装をT.Min(T.Max(x, min), max)に変更し、min > maxの事前検証を削除。XML docsを更新。
  • ThrowHelper.cs: 未使用のThrowArgument_MinGreaterThanMaxメソッドを削除。
  • Strings.resx: 未使用のArgument_MinGreaterThanMaxリソース文字列を削除。
  • TensorPrimitives.Generic.cs: スカラー/ベクトル化パスの一貫性を検証する回帰テスト(Clamp_UnorderedBoundsMatchScalarSemantics、Clamp_SpecialValuesMatchScalarSemantics)を追加。NaN や符号付きゼロを含む浮動小数点特殊値の動作一貫性もテスト。

パフォーマンスへの影響

影響なし

関連Issue

#130703

その他

破壊的変更: min > max時にArgumentExceptionをスロー する前のドキュメント化された動作を削除します。これまでこの例外に依存していたコードは動作が変わります。このPRはGitHub Copilotとの共同作成です。


#130701 Remove unnecessary DisablePackageBaselineValidation from projects

概要

プロジェクトファイルから不要な DisablePackageBaselineValidation プロパティを削除するクリーンアップ。System.Linq.AsyncEnumerable は既に安定版をリリース済み、Microsoft.NET.Runtime.WebAssembly.Templates は検証不可、Mono.Linker は出荷されないため、eng/packaging.targets で既に設定されている該当プロパティを削除します。

変更内容

  • docs/coding-guidelines/project-guidelines.md: ドキュメント更新(1行追加、1行削除)
  • System.Linq.AsyncEnumerable.csproj: DisablePackageBaselineValidation プロパティ削除(5行削除)
  • Microsoft.NET.Runtime.WebAssembly.Templates.csproj: 1行追加(詳細は提供されていません)
  • Mono.Linker.csproj: DisablePackageBaselineValidation プロパティ削除(4行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは主にプロジェクト設定の整理を目的とした変更です。削除されるプロパティは中央集約管理ファイル(eng/packaging.targets)で既に処理されているため、個別プロジェクトでの重複設定を排除しています。


#130687 Fix FileStream position not updated when sync write partially succeeds

  • 作成者: @Copilot
  • 作成日時: 2026年07月14日 13:50:33(UTC)
  • マージ日時: 2026年07月15日 15:57:41(UTC)
  • ラベル: area-System.IO

概要

同期的なFileStream.Write操作において、Unix/Windows両プラットフォームで部分的な書き込み成功時に_filePositionが更新されない問題を修正します。Unix環境でRandomAccess.WriteAtOffsetがループ内の複数の書き込みシステムコールを実行する際、途中で例外(EIOSPACなど)が発生した場合でも、既に書き込まれたバイト数を反映するようになります。非同期パスではこの修正が既に実装されていました。

変更内容

  • RandomAccess.Unix.cs: WriteAtOffset(..., ref long fileOffset)オーバーロードを追加。ファイルオフセットは各システムコール成功直後にインクリメントされるため、部分的な進捗が常に反映されます。既存のlongオーバーロードはこの新しいオーバーロードに委譲。
  • RandomAccess.Windows.cs: 一貫性のためref longオーバーロードを追加。Windows WriteFileは全て成功または失敗のため、既存実装に委譲し成功時のみインクリメント。
  • OSFileStreamStrategy.cs: Writeメソッドがref _filePositionを新しいオーバーロードに渡すように変更。呼び出し後の単独のインクリメント処理は削除。

パフォーマンスへの影響

影響なし

関連Issue

#127854

その他

なし


#130685 Annotate Directory_Move_Multiple_From_Watched_To_Unwatched_Mac with [ActiveIssue]

  • 作成者: @Copilot
  • 作成日時: 2026年07月14日 13:34:27(UTC)
  • マージ日時: 2026年07月15日 14:27:46(UTC)
  • ラベル: area-System.IO

概要

macOS環境での既知の不安定なテスト Directory_Move_Multiple_From_Watched_To_Unwatched_Mac に [ActiveIssue] 属性を追加し、FileSystemWatcher のイベント配信における基盤的な順序付けの問題が解決されるまでスキップするようにしました。

変更内容

  • src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.Directory.Move.cs
    • Directory_Move_Multiple_From_Watched_To_Unwatched_Mac テストに [ActiveIssue("https://github.com/dotnet/runtime/issues/127651", TestPlatforms.OSX)] 属性を追加

パフォーマンスへの影響

影響なし

関連Issue

#127651、#130685

その他

なし


#130676 Preserve Android NativeAOT single-file test results

概要

Android NativeAOT single-file テストで、TEST_RESULTS_DIR 環境変数が設定されている場合、SingleFileTestRunner が自動的に testResults.xml を出力するように改善しました。明示的に -xml パスが指定された場合はそれを優先します。これにより、logcat が失われた場合でも構造化されたテスト結果ファイルを XHarness に報告できるようになります。

変更内容

  • src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs
    • TEST_RESULTS_DIR 環境変数から自動的に XML 結果出力パスを導出する機能を追加
    • デフォルトパスは Path.Combine(TEST_RESULTS_DIR, "testResults.xml")
    • 既存の -xml <path> 明示指定による上書き機能は継続サポート

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更は Android NativeAOT シングルファイル テスト実行の信頼性向上を目的としています。テスト結果ファイルが構造化形式で保存されることで、CI/CD パイプラインでの失敗分析が容易になります。


#130673 Remove obsolete Apple ICU data bundling

概要

Apple プラットフォーム向けの CoreCLR と Mono アプリビルドで、不要になった ICU データバンドリング機能を削除しました。Apple モバイル環境では、アプリケーション独自の ICU データファイル(icudt*.dat)をバンドルせず、代わりに Apple ネイティブ API とシステムの icucore を使用する設計に統一されます。

変更内容

  • AppleAppBuilder.cs: ICU データファイルのバンドリング処理を削除
  • runtime-coreclr.m, runtime-librarymode.m, runtime.m: ICU_DAT_FILE_PATH 環境変数設定とアプリローカル ICU データ参照コードを削除
  • Xcode.cs: ICU 関連の設定ロジックを簡潔化(不要な ICU ライブラリ処理を削除)
  • tests.ioslike.targets: NativeAOT テスト用の ICU データファイルコピー処理を削除
  • globalization-hybrid-mode.md: ドキュメントを更新し、Apple モバイルハイブリッド グローバライゼーションがシステム icucore を使用することを明確化

パフォーマンスへの影響

アプリバンドル サイズの削減(ICU データファイルが不要になるため)、ビルド時間の短縮が期待されます。

関連Issue

なし

その他

互換性への影響:変更は内部実装の整理であり、公開 API への破壊的変更はありません。Apple モバイルプラットフォーム向けアプリはシステムのグローバライゼーション機能に依存することが明確化されます。


#130670 [clr-ios] Increase MacCatalyst CoreCLR job timeouts

概要

MacCatalyst CoreCLR のAzure Pipelines ジョブタイムアウトを増加させ、Helix テスト実行中のジョブ強制終了を防ぎます。ビルド + ライブラリテストジョブを240分から360分に、ランタイムテストジョブを360分から480分に拡張しています。

変更内容

  • eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalist.yml
    • MacCatalyst CoreCLR ライブラリテストジョブの timeoutInMinutes を 240 → 360 分に増加
    • MacCatalyst CoreCLR ランタイムテストジョブの timeoutInMinutes を 360 → 480 分に増加

パフォーマンスへの影響

影響なし(タイムアウト値の調整であり、実行時パフォーマンスに変更なし)

関連Issue

なし

その他

  • 変更対象は CI/CD パイプライン設定のみで、ランタイムコード自体の変更なし
  • 背景:Azure Pipelines のジョブがタイムアウトしている間に、Helix での有効なテスト実行が中断されていた問題に対応

#130669 Fix CI workflow eval reporting and PR status

概要

dotnet/runtimeのオンデマンドCI評価ワークフロー(ci-workflow-eval)の信頼性を向上させるための修正です。以下の改善を実施:

  • Copilot PAT(Personal Access Token)の有効性を事前検証
  • ワークフローレベルから評価ジョブレベルへの並行実行制御の変更
  • PR headへのci-workflow-evalコミットステータス(pending/success/failure/error)の投稿
  • GITHUB_TOKEN(pull-requests: write権限)をリアクションとレポートコメントに使用

検証済みの実行結果:https://github.com/dotnet/runtime/actions/runs/29326781714

変更内容

  • .github/workflows/ci-eval.yml: PAT検証ロジック、PR head commit status報告機能、ジョブスコープの並行実行制御の追加
  • .github/workflows/ci-eval-pr-probe.yml: PR毎のトークン権限検証を行うプローブワークフローの新規追加(最終変更では削除予定)

パフォーマンスへの影響

影響なし

関連Issue

#130669

その他

既知の問題: プローブワークフローの「Probe eval status permissions」ステップがgithub-tokenパラメータを指定していないため、デフォルトのGITHUB_TOKENが使用され、コメント/リアクションプローブと異なるトークンでステータス書き込み検証が行われている点(低信頼度での指摘)


#130668 Guard CI fixer against no-op test rooting changes

  • 作成者: @Copilot
  • 作成日時: 2026年07月14日 09:36:12(UTC)
  • マージ日時: 2026年07月15日 08:44:05(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

CI外側ループフィクサーワークフローを更新し、テストアセンブリが既にハーネスによってルーティングされている場合、NativeAOT/runtime-missing失敗に対して無効なルーティング変更を提案しないようにガードします。既存のルートを検査してからDynamicDependency、descriptor、TrimmerRootAssembly、またはアプリバンドル変更を提案することを要求します。

変更内容

  • .github/workflows/ci-failure-fix.md: Mobile(ios/tvos/maccatalyst/android/wasm/wasi)ポリシー行を改善し、Step 5.2の「既にルーティング済み」ガイダンスへの参照を追加。新しいStep 5.2警告を追加し、既存ルートをチェックして既にルーティング済みのテストアセンブリに対して無効なルーティング提案を避けるよう指示。そうでない場合は、具体的な製品側の原因またはループインコメントにルーティング。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはドキュメント/ワークフロー更新であり、実装コード変更ではありません。CI失敗修正プロセスの精度向上を目的としています。


#130663 Allow trimming NativeRuntimeEventSource

概要

NativeRuntimeEventSourceのトリミングを許可するため、定数伝播がローカル変数の割り当て/再割り当てを通じて値を追跡できない制限に対応しました。System.Threading.Lock.csの既存パターンに合わせて、WaitHandle.csのコード構造を改善しています。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Threading/Lock.cs: ローカル変数の割り当てパターンを調整(+4/-2行)
  • src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandle.cs: 定数伝播対応のため変数割り当てを最適化(+8/-4行)

パフォーマンスへの影響

影響なし

関連Issue

#130663

その他

このPRはトリマー(AOT/ILTrimmer)が不要なコードを削除できるようにするための内部実装の最適化であり、公開APIへの影響はありません。定数値を直接使用するパターンにより、静的解析ツールが値の追跡を容易にできるようになります。


#130653 [RyuJIT Wasm] Add JIT\HardwareIntrinsics\Wasm Tests

概要

CoreCLR JIT テストツリーに WebAssembly 向けの PackedSimd ハードウェアイントリンシック機能テストを追加します。既存の System.Runtime.Intrinsics ライブラリテストスイートから PackedSimdTests.cs をポートし、JIT/HardwareIntrinsics テスト領域に統合します。Wasm ターゲット専用のビルドゲーティングを実装し、適切なプラットフォーム上でのみ実行されるようにしています。

変更内容

  • PackedSimdTests.cs (938 行追加): System.Runtime.Intrinsics のテストスイートから移植した Wasm 向け PackedSimd 機能テスト(xUnit [Fact] テスト)
  • PackedSimdTests_r.csproj / PackedSimdTests_ro.csproj: テストのプロジェクトラッパー(最適化ありなし両方対応)
  • HardwareIntrinsics_Wasm_r.csproj / HardwareIntrinsics_Wasm_ro.csproj: Wasm テストランナー用統合プロジェクト
  • Directory.Build.props (13 行追加): Wasm サブツリーに HWITestsWasmOnly プロパティを設定
  • Directory.Build.targets (5 行追加): Wasm 専用ビルドゲーティング実装(HWITestsWasmOnly 設定時に CLRTestTargetUnsupported を適用)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このテストセットは当面、src/libraries/System.Runtime.Intrinsics/tests/Wasm/PackedSimdTests.cs と重複していますが、将来的に分岐する可能性があります。Wasm ターゲットのみでの実行を確保するため、ビルドゲーティングメカニズムが実装されています。


#130635 DCS: Add more formal BOM-detection to Json encoding stream wrappers.

概要

DataContractJsonSerializerのJSON BOM(Byte Order Mark)処理を改善するPRです。新しいDetectEncodingメソッドを導入して、BOM検出ロジックを集約し、バッファおよびストリーム処理パスで重複していたコードを統一します。また、BOMs付きのJSONペイロードのデシリアライゼーションが正しく動作することを確認する包括的なテストを追加しています。

変更内容

  • JsonEncodingStreamWrapper.cs: 新規メソッドDetectEncoding(ReadOnlySpan<byte>, out int bomLength)を追加し、UTF-8/UTF-16LE/UTF-16BEのBOMを検出。バッファおよびストリーム読み込みロジックを更新して、BOMバイトをスキップし、JSON本体のみを処理するように改善。
  • DataContractJsonSerializer.cs: UTF-8、UTF-16LE、UTF-16BEのBOMシナリオをカバーする複数の理論テストを追加。自動検出と明示的指定の両方のエンコーディング検出パターンに対応したテストヘルパーメソッドを実装。

パフォーマンスへの影響

影響なし

関連Issue

#80160

その他

このPRはデータコントラクトシリアライゼーション(DCS)の内部実装改善で、公開APIへの破壊的変更はありません。BOM処理ロジックの一元化により、複数のJSONエンコーディングパスで一貫した動作が保証されます。


#130632 Add test coverage for UnmanagedCallersOnly with CallConvFastcall (Windows-only)

  • 作成者: @Copilot
  • 作成日時: 2026年07月13日 16:11:03(UTC)
  • マージ日時: 2026年07月15日 20:09:10(UTC)
  • ラベル: area-Interop-coreclr

概要

UnmanagedCallersOnly属性を使用したアンマネージ呼び出し規約のテストカバレッジを拡張します。Stdcall、Cdecl、および Windows でのみ Fastcall 呼び出し規約に対応し、複数パラメータを持つマネージメソッドの呼び出しを検証します。すべての新規テストは ConditionalFact で Windows のみに限定されています。

変更内容

  • UnmanagedCallersOnlyBasicTest.cs: Fastcall 呼び出し規約を使用する UnmanagedCallersOnly コールバックを追加し、ネイティブ DLL エクスポート経由のラウンドトリップをテストする Windows 限定テストを追加
  • UnmanagedCallersOnlyDll.cpp: __fastcall 呼び出し規約のコールバックポインタを受け取り実行する Windows 限定エクスポート CallManagedProc_Fastcall を追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • テストは Windows プラットフォームでのみ実行されます(PlatformDetection.IsWindows で条件付け)
  • 複数パラメータ(3個の整数パラメータ)に対応するためコールバックシグネチャを拡張しています
  • 本PR は既存のネイティブテスト DLL を活用した相互運用性テストの充実を目的としており、機能追加ではなくテストカバレッジの向上です

#130631 [main] Source code updates from dotnet/dotnet

概要

dotnet/dotnetリポジトリからのコードフロー更新です。主にビルド依存関係とツールチェーン(Roslyn、NuGet、Arcadeなど)のアップデートが含まれています。また、数値型(Byte、Decimal、Double、Int32など)のジェネリック数学ヘルパーメソッドの実装更新と、エンジニアリングスクリプトの改善が行われています。

変更内容

依存関係更新:

  • Microsoft.CodeAnalysis系(5.10.0-1.26357.109 → 5.10.0-1.26363.117)
  • Microsoft.DotNet.Arcade.Sdk(11.0.0-beta.26357.109 → 11.0.0-beta.26363.117)
  • NuGet関連パッケージ(7.9.0-rc.35809 → 7.10.0-rc.36417)
  • System.Text.Json、System.Reflection.Metadata等のプラットフォームライブラリ
  • その他ビルドツール・SDK多数

ソースコード変更:

  • src/libraries/System.Private.CoreLib内の数値型(Byte、Decimal、Double、Half、Int16/32/64、Int128、SByte、Single等):ジェネリック数学インターフェース実装の更新
  • IntPtr.cs:InteropServices実装の変更
  • NFloat.cs:ランタイム相互運用性の調整
  • eng/common配下のビルドスクリプト(tools.sh、tools.ps1、dotnet-install.sh等):ツール初期化ロジックの改善
  • eng/common/cross/build-rootfs.sh:クロスプラットフォームビルド処理の強化
  • global.json:ツールチェーン設定の同期

関連ソースリポジトリの更新:

  • dotnet/roslyn、dotnet/msbuild、dotnet/sdk、dotnet/aspnetcoreなど複数リポジトリの同期更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

これはCodeflow PRであり、VMR(Virtual Monorepo)からのソースコード同期です。複数の下流リポジトリ(aspnetcore、efcore、fsharp、msbuild、roslyn、sdk等)の変更を統合したものです。


#130614 [browser] emscripten 6.0.2 follow up

概要

Emscripten 6.0.2への対応を目的とした追従更新。WASM環境で非対応のO_NOCTTYフラグをスキップし、emscripten_stack_get_currentをJS-libraryの明示的な依存関係として追加。またisSharedArrayBufferをarrayBufferNeedsCopyに名称変更し、リサイズ可能なバッファにも対応しています。

変更内容

  • src/native/libs/System.Native/pal_io.c: WASM環境でSystemNative_Openの呼び出し時にO_NOCTTYフラグの追加をスキップ
  • System.Native.Browser JS-library: emscripten_stack_get_currentをブラウザユーティリティの依存関係に追加(libSystem.Native.Browser.Utils.footer.js)
  • corerun WASM: emscripten_stack_get_currentをWASMホストコードの依存関係に追加(libCorerun.js)
  • ネイティブビルド設定: Emscripthenリンク時に_emscripten_stack_get_currentをエクスポート(eng/native.wasm.targets)
  • メモリバッファ処理: isSharedArrayBufferからarrayBufferNeedsCopyへの名称変更およびbuffer.resizableへの対応(memory.ts等)
  • CMakeLists.txt: corehost、corerun、browserhost向けにWASM関連のリンク設定を更新

パフォーマンスへの影響

影響なし

関連Issue

#130631

その他

本変更はEmscripten 6.0.2(dotnetパッチ付き)への対応として、JavaScript/ネイティブ相互運用性の保証とWASM環境での互換性維持を目的としています。


#130613 [browser][coreCLR] abort faster on unexpected errors

概要

ブラウザランタイム(Wasm/Emscripten環境)において、予期しないJavaScript側のエラーを致命的なものとして扱い、実行時状態が不正な状態にある可能性があるときに迅速に中止するように変更しました。これにより、エラーハンドリングがより堅牢になります。

変更内容

  • managed-exports.ts: JS管理エクスポート相互運用エントリーポイント周辺に fail-fast 中止/終了処理を追加し、予期しない例外時にランタイムを終了するようにしました。
  • host.ts: abortPosix を拡張し、中止時にバックグラウンドタイマーを停止し、Emscripten の on-exit コールバックを無効化するようにしました。
  • scheduling.ts: ネイティブスケジューリングコールバック(タイマー、バックグラウンド、ファイナライゼーション、診断)で予期しない例外発生時に中止処理を呼び出すようにしました。
  • runtime.yml: パイプライン設定に関連する変更が含まれています。

パフォーマンスへの影響

影響なし(エラーハンドリング強化による変更のため、正常系のパフォーマンスへの影響はありません)

関連Issue

なし

その他

この変更はブラウザ環境(WebAssembly/Emscripten)に固有のもので、デスクトップ/サーバー環境には影響しません。予期しないエラー発生時の動作が変更されるため、ブラウザランタイム上で実行されるアプリケーションの例外処理ロジックに依存している場合は注意が必要です。


#130603 Trim STAThreadAttribute in single-threaded (browser/wasi) Mono apps

概要

単一スレッド環境(browser/WASI)向けのMonoアプリにおいて、System.STAThreadAttributeが不要に保持されていた問題を解決します。本PRは、ILLinkディスクリプタにおいてSystem.STAThreadAttributeをRuntimeFeature.IsMultithreadingSupportedがtrueの場合のみ保持するよう条件化し、同時にMono起動時のネイティブコードで属性の欠失を許容するように対応しています。

変更内容

  • src/mono/System.Private.CoreLib/src/ILLink/ILLink.Descriptors.xml:System.STAThreadAttributeの無条件なルーティングを削除し、System.Runtime.CompilerServices.RuntimeFeature.IsMultithreadingSupportedがtrueの場合のみ根付くよう再実装
  • src/mono/mono/metadata/object.c:エントリポイントメソッドの[STAThread]属性チェック時に、属性型が存在しない場合でも動作するよう修正(try-loadパス導入)

パフォーマンスへの影響

単一スレッド環境(ブラウザ/WASI)でのトリミング後メタデータサイズ削減による間接的な改善が期待されます。マルチスレッドプラットフォームでは既存動作を変更なし。

関連Issue

#130603

その他

  • マルチスレッド環境では既存動作を維持し、単一スレッド環境では属性をトリミング可能にする設計
  • WASI起動時に属性がトリミングされた場合の失敗を回避
  • ネイティブ起動パスが属性の欠失を優雅に処理するため、リスクは低~中程度
  • .NET 9以降はパッケージオーサリング対応不要

#130528 Exclude ResolvedFromDifferentContext collectible-unload test from GC stress

  • 作成者: @Copilot
  • 作成日時: 2026年07月10日 21:17:19(UTC)
  • マージ日時: 2026年07月15日 19:34:49(UTC)
  • ラベル: area-AssemblyLoader

概要

Loader/CollectibleAssemblies/ResolvedFromDifferentContext テストがGCストレス環境下で間欠的に失敗する問題を修正します。このテストは固定回数のGC反復回数をポーリングして、collectibleな AssemblyLoadContext のアンロード完了を確認していますが、GCストレスはタイミングを変動させるため、ポーリング期間内にコレクションが完了しず、誤った失敗(終了コード103)が発生します。テストプロジェクトファイルに GCStressIncompatible 属性を追加して、全GCストレスモードで実行を除外します。

変更内容

  • src/tests/Loader/CollectibleAssemblies/ResolvedFromDifferentContext/ResolvedFromDifferentContext.csproj:<GCStressIncompatible>true</GCStressIncompatible> を設定し、GCストレス実行から除外。タイミング依存性(固定反復回数ポーリング)によるテスト信頼性の低下を説明するコメント追加。

パフォーマンスへの影響

影響なし(テスト実行対象の除外であり、ランタイムやライブラリのパフォーマンスに変化なし)

関連Issue

なし

その他

  • テスト専用の変更(ランタイムやコンパイラ機能への影響なし)
  • 他の collectible-unload テストと同じパターンの対応
  • cc: @dotnet/appmodel @AaronRobinsonMSFT

#130482 JIT: Allow inlining of JIT-inserted AsyncHelpers.TransparentAwait

概要

JITコンパイラが挿入する AsyncHelpers.TransparentAwait メソッドのインライン化を可能にするPRです。完了済みタスクに対するawait操作のコスト削減を目的としています。

提供されたサンプルコードの実行結果から、この最適化により約6倍のパフォーマンス向上(191ms → 32ms)が実現されています。

変更内容

  • JIT インポーター (importer.cpp): TransparentAwait メソッドのインライン化ロジックを追加。タスクの状態をチェックして、完了済みタスクの場合は軽量なインラインコードを生成
  • JitInfo インターフェース (corinfo.h, jitinterface.cpp): JIT-ランタイム通信の新メソッド追加(JITバージョンGUID更新)
  • 各種ツール対応: Thunk生成ツール、AOTコンパイラ、SuperPMI(JITパフォーマンス測定ツール)の関連ファイルを更新し、新しいJitInfoインターフェースに対応

パフォーマンスへの影響

改善あり(大幅):

  • ベンチマーク結果では約6倍の高速化(191ms → 32ms)を実現
  • 完了済みタスクのawait操作時に、JIT呼び出しオーバーヘッドを排除し、直接状態チェックのインラインコードで処理
  • アセンブリコード生成は20バイト(関数呼び出し)から34バイト(インラインチェック)に増加しますが、全体のスループットは大幅改善

関連Issue

#129896

その他

  • 変更はランタイムのJITコンパイラ層(内部実装)に限定され、公開APIへの影響はなし
  • JITバージョンGUIDが更新されており、バージョン管理の厳密性が保たれている
  • この最適化は特にasync/awaitパターンを多用するアプリケーション(UIフレームワーク、非同期I/Oループなど)において効果的と考えられます

#130456 Improve Linux AIA fetching

概要

LinuxのOpenSSLベースのX.509チェーン構築パスを改善し、以下の2つを実現します:

  1. AIA(Authority Information Access)フェッチをチェーン構築あたり最大2回に制限(Windowsと同等の動作)
  2. MRUキャッシュを導入して、複数スレッド間のHTTP資産(証明書/CRL)ダウンロードを共有化し、重複ダウンロードを排除

変更内容

  • OpenSslX509ChainProcessor.cs: FindChainViaAiaメソッドに固定のAIAダウンロード制限を追加
  • X509MruCache.cs: GC駆動型プルーニング機能を持つ新規MRUキャッシュ実装(共有利用)
  • OpenSslCertificateAssetDownloader.cs: メモリ内HTTPリクエストキャッシュを追加し、OCSP要求はキャッシュをバイパス
  • OpenSslCrlCache.cs: CRLキャッシュをX509MruCache<T>を使用するように リファクタリング、成功時にHTTPキャッシュから削除
  • OpenSslX509ChainEventSource.cs: HTTPキャッシュアクティビティ/リフレッシュ/プルーニング用の新規イベント追加
  • ChainPal.OpenSsl.cs: OpenSSLのデフォルト取得タイムアウト定数(15秒)を一元化
  • AiaTests.cs: 「2AIA ダウンロード/ビルド」動作のテストカバレッジを追加

パフォーマンスへの影響

  • ダウンロード時間削減: 同じチェーン構築を実行する複数スレッドが AIA/CRL ダウンロードを共有化し、並列ダウンロードを排除
  • メモリ増加(短期): ワンオフAIAフェッチのレスポンスはGC 2回分までメモリ上に留まる
  • タイムアウト最適化の注意: 複数スレッドがキャッシュを共有する場合、全体のダウンロード時間は最小タイムアウト値に制限される可能性あり
  • キャッシュリフレッシュ: 6分以上キャッシュされた値への再リクエストは自動的にバックグラウンド更新がトリガーされる

関連Issue

#130456

その他

  • キャッシュの特性: 失敗はキャッシュされない。キャッシュタスクがbyte[]なしで完了した場合は無視され、新規ダウンロードがトリガーされる
  • キャッシュ競合: CRLダウンロードがX509/AIAをキャッシュから削除する可能性があるが、CRLダウンロードは成功時に自身をキャッシュから削除する(上位レベルでキャッシュされるため再ダウンロード不要)
  • OCSP: OCSPリクエストはHTTPキャッシュを完全にバイパス
  • CRL削除: CRLダウンロードはキャッシュ内容削除により、繰り返しアクセスによる重複ダウンロードを防止

#130449 Add default install dir for OpenBSD

概要

OpenBSD環境における.NETのデフォルトインストールディレクトリを/usr/local/share/dotnetに設定するための変更です。OpenBSDではFreeBSDのようなCTL_USER sysctlが存在しないため、パスをハードコードしています。

変更内容

  • src/native/corehost/hostmisc/pal.unix.c: OpenBSD固有のデフォルトインストールディレクトリパスを追加(+2行)

パフォーマンスへの影響

影響なし

関連Issue

#124911

その他

  • OpenBSDではFreeBSDと異なり、システム設定値の動的取得が不可能なため、ハードコード対応となっています
  • プラットフォーム固有の初期化処理に関する変更です

#130429 Fix XmlSerializer regression for derived XmlText properties

概要

XmlSerializer における回帰バグを修正します。派生クラスで基底クラスの [XmlText] または [XmlNamespaceDeclarations] 属性を持つ仮想プロパティをオーバーライドした場合、InitializeStructMembers が重複したテキスト/xmlns アクセッサを追跡し、HasSimpleContent == true の基底マッピングで XmlIllegalSimpleContentExtension 例外を発生させていました。

基底で宣言されたメンバーのオーバーライドに対して、テキストと xmlns アクセッサの追跡を抑制することで、コンテンツモデルレベルの重複登録を防ぎます。

変更内容

  • XmlReflectionImporter.cs: InitializeStructMembers で基底マッピングで既に宣言されたメンバーを検出する memberDeclaredByBase フラグを導入。テキスト/xmlns アクセッサのトラッキングをこのフラグでガード(&& !memberDeclaredByBase)。派生メンバーのアクセッサは AddUniqueAccessor を経由して適切に登録される
  • XmlSerializerTests.RuntimeOnly.cs: [XmlText] のオーバーライドと [XmlAttribute] オーバーライドシナリオに対する回帰テストを追加(+55行)
  • SerializationTypes.RuntimeOnly.cs: 継承/オーバーライドシナリオを再現するための共有テスト型を追加(+84行)

パフォーマンスへの影響

影響なし

関連Issue

#121881

その他

  • コミット cc2019b による変更(基底宣言メンバーの 'continue' から 'RemoveUniqueAccessor + fall-through' への変更)の意図を保持しながら、リフレクションベースのシリアライザーとコンテンツモデルレベルの処理を正確に区別する修正です
  • System.Xml.Serialization の内部実装(XmlReflectionImporter)の修正であり、公開 API の変更はありません

#130346 [automated] Merge branch 'release/8.0' => 'release/8.0-staging'

概要

release/8.0ブランチからrelease/8.0-stagingブランチへの自動マージPRです。dotnet-botによってrelease/8.0に加えられた変更を、release/8.0-stagingに同期させるためのものです。

変更内容

  • NuGet.config: NuGet設定の1行更新
  • eng/Version.Details.xml: バージョン詳細情報の4行更新
  • eng/Versions.props: バージョン定義の3行更新

これらはすべてバージョン管理とNuGet関連の設定変更です。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは自動マージされず、手動でマージコミット(squashやrebaseではなく)として完了する必要があります
  • マージ時にコンフリクトが発生する場合は、手動で解決してからマージを完了する必要があります
  • このPRはgithub-actions[bot]によって自動生成されたブランチ間同期用のPRです

#130345 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'

概要

release/9.0ブランチからrelease/9.0-stagingブランチへの自動マージPRです。dotnet-botによるコミットが release/9.0 に存在するため、stagingブランチに同期されます。マージコミット形式での統合が必須です。

変更内容

  • NuGet.config: NuGet設定の更新(1行追加、1行削除)
  • eng/Version.Details.xml: 依存パッケージのバージョン情報を更新(50行追加、50行削除)
  • eng/Versions.props: ビルド関連のバージョンプロパティを更新(26行追加、26行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは自動マージされません。チェック完了後、UI上またはコマンドラインからマージコミット形式(スクイーズ/リベースではなく)で統合してください
  • マージ競合が発生した場合は手動で解決し、その後git merge --continueを実行してください
  • merge/release/9.0-to-release/9.0-staging ブランチへの変更プッシュで検証が再実行されます

#130343 Fix failing symlink tests (9.0)

概要

.NET 9向けのバックポート修正。TarEntry.FilePathEscapesDirectoryのシムリンク解決ロジックの不具合を修正し、symlink経由のディレクトリエスケープ検出時にArgumentOutOfRangeExceptionがスローされていた問題を解決します。macOSの/var、/tmpなどのシムリンク先への抽出が機能していませんでした。

変更内容

  • TarEntry.cs: FilePathEscapesDirectoryメソッドを修正。論理パスと物理パスの処理を分離し、相対パス計算前に長さチェックを追加。シムリンク解決時に非リンク/ぶら下がりリンクを正しく処理するよう調整。
  • テストファイル群: 4つのテストファイル(File/Stream同期・非同期版)から[ActiveIssue(#129227)]属性を削除し、以前無効化されていたシムリンク走査テストを再有効化。

パフォーマンスへの影響

影響なし

関連Issue

#129227、#130342

その他

  • 内部発見のリグレッション修正(顧客報告なし)
  • リスク評価:低
  • 修正内容はSystem.Formats.Tarライブラリの公開API(TarFile.ExtractToDirectoryなど)の動作を改善するもので、破壊的変更ではありません

#130342 Fix failing symlink tests

概要

Tar形式のシンボリックリンク解決に関する回帰バグを修正します。TarFile.ExtractToDirectoryにおいて、シンボリックリンク経由のディレクトリトラバーサル検証時に、論理パス長とシンボリックリンク解決パス長の不一致によりArgumentOutOfRangeExceptionが発生していた問題を修正しました。macOS(/var、/tmp)およびWindowsでのシンボリックリンクされた宛先への抽出が修正されます。

変更内容

  • TarEntry.cs: FilePathEscapesDirectoryメソッドを更新。シンボリックリンク解決を含むコンポーネント単位のトラバーサル時に、まず論理相対パスを計算し、トラバーサル中にシンボリックリンク(ダングリングリンクを含む)を解決するロジックに変更(+35/-27行)
  • テストファイル(4ファイル): シンボリックリンク関連テストのActiveIssueスキップを削除し、macOSおよびWindowsで再度実行可能に(合計-28行)

パフォーマンスへの影響

影響なし

関連Issue

#129227

その他

  • 内部報告による回帰バグ
  • リスク評価:低
  • 既存のスキップされていたCIテストを再有効化することで、今後の回帰を防止

#130304 Fix zip unix permissions

概要

System.IO.Compression.ZipFileのUnix抽出動作を修正し、ZIPエントリの"version made by"フィールドがUnixプラットフォーム(3)を示す場合のみ、ExternalAttributesからUnixパーミッションビットを適用するようにしました。これにより、Windows製のエントリのWindows属性がUnixファイルモードとして誤釈される問題を防ぎます。

変更内容

  • ZipFileExtensions.ZipArchiveEntry.Extract.cs: UnixCreateModeの適用をVersionMadeByプラットフォームの確認に基づいて制限。非Windows OS上の抽出時に、VersionMadeByがUnix(3)の場合のみUnixパーミッションを復元するように条件付けました(+4行)。
  • ZipFile.Unix.cs: Windowsで作成されたエントリに対してUnixパーミッションが適用されないことを検証する回帰テストを追加。また、中央ディレクトリレコード内の"version made by"プラットフォームをパッチするテストヘルパーも追加しました(+84行)。

パフォーマンスへの影響

影響なし

関連Issue

#94465

その他

  • 修正は公開API(ZipFile.ExtractToDirectoryなど)の抽出動作に影響します。
  • 互換性: 従来はWindows製ZIPファイルでも誤ってUnixパーミッションが適用されていたケースを修正するため、その挙動に依存していたコードには影響する可能性があります。

#130124 [issue-check] Add closed issue reference check agentic workflow

  • 作成者: @kotlarmilos
  • 作成日時: 2026年07月02日 13:15:24(UTC)
  • マージ日時: 2026年07月15日 11:26:51(UTC)
  • ラベル: area-Meta

概要

GitHub Agentic Workflows (gh-aw) を使用した新しいスケジュール済みワークフローを追加します。このワークフローは src/ ディレクトリ内で閉じられたIssueへの参照を検出し、GraphQLでIssue状態を確認して、依然として参照されている閉じられたIssueについてアドバイザリーコメントを投稿します。

変更内容

  • .github/workflows/closed-issue-reference-check.md: ワークフロー定義ファイル。スケジュール実行(週1回)またはマニュアル実行に対応し、決定論的なスキャンステップ、GraphQL解析、およびエージェントプロンプト/ガードレールを定義します。スキャンは正の整数Issueのみをサポートし、ActiveIssue属性の実行可能な出現のみを分類します。コメント化された属性と平文のコメントは無視され、Issue毎に最大15参照位置を記録します。投稿されるアドバイザリーコメントは重複排除され、実行毎に最大5件に制限されます。
  • .github/workflows/closed-issue-reference-check.lock.yml: gh aw compileで生成されたコンパイル済みロックファイル。GitHub Actionsのジョブとステップで実装されます。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • ワークフローは現在のアイソレートされた copilot-pat-pool 設定を使用します
  • dotnet/runtime リポジトリに限定されます
  • Issue参照の検出にはGraphQL APIを使用してIssue状態を解決します
  • MCP読み取りは整合性ゲート付きで実行されます

#130082 Http Request Compression

  • 作成者: @iremyux
  • 作成日時: 2026年07月01日 14:58:44(UTC)
  • マージ日時: 2026年07月15日 12:56:59(UTC)
  • ラベル: area-System.Net.Http

概要

HTTP リクエストボディの圧縮を標準サポートするため、3つの新しい公開 HttpContent ラッパー型を導入します。GZipCompressedContent、BrotliCompressedContent、ZstandardCompressedContent は、内部のコンテンツをラップし、適切な Content-Encoding ヘッダーを設定して、シリアライズ時にボディを圧縮します。共通の圧縮ロジックは内部ヘルパー CompressedContentCore に集約されています。

各型は2つのコンストラクタを提供します:

  • (HttpContent content, CompressionLevel compressionLevel = CompressionLevel.Optimal):高レベルの圧縮率制御
  • (HttpContent content, <Algorithm>CompressionOptions compressionOptions):細粒度の設定

変更内容

  • GZipCompressedContent.cs:gzip圧縮を適用する新しい HttpContent ラッパー
  • BrotliCompressedContent.cs:Brotli圧縮を適用する新しい HttpContent ラッパー
  • ZstandardCompressedContent.cs:Zstandard圧縮を適用する新しい HttpContent ラッパー
  • CompressedContentCore.cs:ヘッダー初期化と同期/非同期シリアライズの共通ロジック
  • System.Net.Http.cs(ref):3つの圧縮コンテンツ型の公開API surface定義
  • プロジェクトファイル更新:新規ソースファイルと圧縮依存関係の参照を追加
  • テスト追加:機能テストスイート(計372行)

パフォーマンスへの影響

シリアライズ時に圧縮ストリームを通じてコンテンツを処理するため、CPU使用率が増加しますが、ネットワーク転送サイズが削減され、帯域幅制約環境での全体的なパフォーマンスが向上する可能性があります。詳細なベンチマーク結果は提供されていません。

関連Issue

#46944

その他

  • CompressionLevel の無効な値は構成時に検証されるため、送信時ではなく早期にエラー検出が可能です
  • これは公開 API 追加であり、System.Net.Http ライブラリの互換性維持範囲内です

#130053 Add CompositeMLDsa CNG (NCrypt)

概要

Windows環境のCNG (CryptoAPI: Next Generation) を使用したComposite ML-DSAの暗号化実装を追加します。このPRではCNG経由でComposite ML-DSAの鍵生成、署名、検証などの操作を可能にします。ただし、PKCS8エクスポート機能はWindowsではまだサポートされていないため、暗号化されたエクスポート専用鍵は現在エクスポートできません。

変更内容

  • CompositeMLDsaCng.Windows.cs: CNG実装の本体を大幅拡張(227行追加)。鍵の生成・インポート・エクスポート、署名・検証操作のCNG統合
  • CompositeMLDsa.cs: 共通インターフェースの微調整(5行変更)
  • CompositeMLDsaCng.cs: CNG実装の初期化・ファクトリロジックを追加(16行追加)
  • CngAlgorithm.cs、CngAlgorithmGroup.cs: Composite ML-DSA用の新しいCNGアルゴリズム定義を追加
  • CngIdentifierExtensions.cs: CNG識別子拡張機能を追加
  • テストコード: Windows向けCNGテスト(179行)、一般的なテスト追加(24行)、既存テストの調整・拡張
  • リソース: エラーメッセージ文字列を3行追加

パフォーマンスへの影響

影響なし

関連Issue

#130052(Composite ML-DSA公開API承認待ち)

その他

  • このPRの対象APIは内部実装(internal)として実装されています。関連するPR #130052で公開API化の承認が待機中です
  • PKCS8エクスポート機能の制限:Windowsプラットフォームではまだサポートされていないため、暗号化されたキーのエクスポートに影響があります
  • PKCS8エクスポートは秘密鍵をエクスポートすることで対応されています

#130039 Add Sm4 and SVE Sm4 APIs

概要

ARM64アーキテクチャ向けのSM4(FEAT_SM4)およびSVE SM4(FEAT_SVE_SM4)ハードウェア暗号化イントリンシックAPIを新たに追加します。JITコンパイラのハードウェアイントリンシックテーブル・コード生成に統合し、対応するテストカバレッジを実装しています。これにより、ARM64プロセッサのネイティブSM4命令を利用した暗号化処理が可能になります。

変更内容

  • 公開API表面: System.Runtime.Intrinsics.Arm.Sm4とSystem.Runtime.Intrinsics.Arm.SveSm4の新規クラスを追加(ref assembly + CoreLib実装、プラットフォーム非対応時の実装含む)
  • JIT統合: ARM64ハードウェアイントリンシックテーブル(hwintrinsiclistarm64.h/hwintrinsiclistarm64sve.h)にSm4/SveSm4イントリンシックス定義を追加
  • コード生成: ARM64エミッター(emitarm64.cpp)でSM4 Encode命令(INS_sm4e)のRMW(Read-Modify-Write)2オペランド処理を実装
  • リンカ設定: ARM イントリンシックス除外時のILLink置換設定を更新(IsSupported のスタブ化)
  • テスト: JITハードウェアイントリンシックステスト(Sm4/SveSm4用のテストプロジェクト、ジェネレータ入力定義、検証ヘルパー関数)を追加

パフォーマンスへの影響

影響なし(新規API追加によるオーバーヘッドはなく、ネイティブハードウェア命令を直接利用するため、従来のソフトウェア実装と比べ暗号化性能が向上します)

関連Issue

#94426 #98696

その他

  • 既存テストプログラムから不要な個別INCLUDEステートメント(Program.cs内)を削除し、共通化を図っています
  • SM4参照実装ヘルパー関数(Helpers.cs)をテスト検証用に追加
  • ARM64対応プロセッサでのみ利用可能で、プラットフォーム非対応環境ではIsSupportedがfalseになります

#129992 Add MRV debug info for multi-register FP/mixed struct returns on Unix x64

概要

Unix x64でマルチレジスタFP/混合構造体戻り値に対するマネージ戻り値(MRV)デバッグ情報エンコーディングを追加します。2つのレジスタにまたがる値クラスの戻り値(少なくとも1つがFPレジスタの場合)を表現できるようにしました。また、x86 x87 FPスタック戻り値/ローカル変数のCordbJITILFrame::GetNativeVariable実装も追加しています。

変更内容

JIT側(コンパイラ):

  • 新しいVarLocType列挙型を追加:VLT_REG_FP_REG_FP、VLT_REG_FP_REG、VLT_REG_REG_FP(int+fp、fp+fp、fp+intレジスタペアに対応)
  • storeVariableInTwoRegistersヘルパー関数を追加し、SysV AMD64での混合/FP型2レジスタ位置のエミット処理を実装
  • スコープ/戻り値デバッグ情報エミッションを更新

デバッガ側:

  • 新しいVarLocType値のデコード/値の構築ロジックを追加(2レジスタスナップショットホーム経由)
  • x86のVLT_FPSTK読み取りパスを実装
  • GetLocalTwoRegisterValue関数を追加し、GetNativeVariableで新しい位置型を処理

共通インフラ:

  • VarLoc等価性チェック、デバッグ情報エンコード/デコード、ツール(R2R/AOT)のリーダー/ライターを新しい位置型に対応
  • cordebuginfo.hで新しいVarLocType値を追加・ドキュメント化
  • JITEE バージョンGUIDを更新(フォーマット変更のため)

パフォーマンスへの影響

影響なし

関連Issue

#129344 関連:#129321

その他

  • 19個のファイルが変更(ほぼ全てがデバッグインフラに関連)
  • 公開APIではなく、内部のデバッグ情報エンコーディング形式の拡張
  • JITEEバージョンGUID更新により、古いデバッグ情報との互換性に影響がある可能性あり
  • x87 FPスタック変数のデバッガサポートは32ビット環境に限定される可能性

#129924 Consolidate RSA tests into S.S.C.

概要

DSA/ECDAと同じアプローチを用いてRSAテストをCNG、CSP、OpenSSLの各テストプロジェクトからSystem.Security.Cryptography.Testsに統合します。RSAプロバイダーの抽象化とインスタンスベースのテスト実装により、テストコードの重複を削減し、複数のプロバイダー実装を統一的にテストします。

変更内容

  • 共有テスト基盤: src/libraries/Common/tests/.../RSA/配下のテストクラスを静的から抽象インスタンスベースに変更。プロバイダーアクセサーと機能チェック用のSkipTestExceptionを追加
  • プロバイダー実装: DefaultRSAProvider、RSACngProvider、RSACryptoServiceProviderProvider、RSAOpenSslProviderを新規作成
  • テスト登録: 各プロバイダー用のリーフ登録クラス(RSATestRegistration.*.cs)をsrc/libraries/System.Security.Cryptography/tests/に追加
  • 条件付きスキップ: XUnit静的条件属性の代わりにSkipTestExceptionを使用してプロバイダー機能の差異に対応
  • プロジェクト設定: 旧プロバイダー別テストプロジェクト(CNG/CSP/OpenSsl)からRSA関連ソースを削除し、統合テストプロジェクトに移行

パフォーマンスへの影響

影響なし

関連Issue

#66338、#129320、#129552

その他

テスト階層構造の簡略化により、プロバイダー別テスト実装の保守性が向上します。XUnitの静的メンバー参照制約への対応として、SkipTestExceptionベースの動的スキップに統一されます。


#129609 Use dispatch cells for generic virtual method dispatch

概要

NativeAOT環境でジェネリック仮想メソッド(GVM)のディスパッチをディスパッチセルベースに統一し、インターフェースメソッドディスパッチと同じ仕組みを使用するように改善しました。これにより、GVMの呼び出しコストが削減され、リフレクションの暗黙的なターゲット検出の問題が解決され、非同期メソッド変種の扱いが簡潔になります。

変更内容

コンパイラ/AOT工具チェーン:

  • 新しい読み込み準備完了(ReadyToRun)セクション・ノードを追加してGVM ディスパッチセル メタデータを出力
  • ディスパッチセル概念をインターフェースディスパッチとGVM両方に対応する汎用構造に統一
  • 全アーキテクチャ(x86、x64、ARM、ARM64、RISC-V、LoongArch64)でGVMディスパッチセル対応を実装
  • JIT/RTR生成時にディスパッチセルベースのヘルパー参照に変更

ランタイム/CoreLib(内部実装):

  • ResolveDispatch新規エクスポート関数を全アーキテクチャで実装(ディスパッチセルを解決してコードアドレスを返却)
  • RhpDispatchResolveエントリーポイントを全アーキテクチャで追加(キャッシュプローブと遅延パス処理)
  • GVM解決ロジックをSystem.Private.CoreLibに移行(DispatchCell.cs)
  • ディレクティブ/署名を更新して新しい動的ディスパッチセルレイアウトに対応

破壊的変更はなし:

  • RuntimeMethodHandleから非同期変種フラグを削除(内部実装)
  • 古いGVMLookupForSlotキャッシュベース実装を削除(内部実装のみ)

パフォーマンスへの影響

大幅な改善:

  • 単一形態GVMコールサイト:2.45 ns/call → 1.74 ns/call(29%削減)
  • 多形態GVMコールサイト:2.45 ns/call → 2.10 ns/call(14%削減)
  • ファットポインタ(非同期変種対応)により、インターフェース呼び出しと完全には等しくないが、大幅に接近

関連Issue

なし

その他

  • リフレクション経由でGVMメソッドが暗黙的にLDTOKEN実装詳細のターゲットと見なされることがなくなった
  • 非同期メソッド変種用の奇妙なRuntimeMethodHandleエンコーディングが削除
  • 3つのコミット構成:①デッドコード削除 ②ディスパッチ解決ロジックをCoreLibに移行 ③GVMをディスパッチセルに切り替え

目次