注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #130797 Remove dead switch-table disassembly code from the xarch emitter
- #130795 Fix EC/DSA key generation cache under concurrency
- #130789 Rename INumberBase partial-parse overloads to TryParsePartial
- #130772 [browser][coreCLR] relink with -O3
- #130771 Only include System.Runtime.InteropServices.JavaScript in coreAssembly for Mono
- #130763 Re-enable EmittingIgnoresAccessChecksToAttributeIsRespected on CoreCLR interpreter
- #130756 Improve malformed TLS handshake frame detection
- #130753 Follow-ups to GVM dispatch change
- #130743 Remove unsafe code from System.Net.Mail decoders
- #130740 [wasm] Fix reverse P/Invoke thunk key for nested [UnmanagedCallersOnly] types (CoreCLR + Mono)
- #130738 Move bulk of the CoreCLR delegate implementation to Delegate.CoreCLR.cs
- #130737 Fix IsSupported tests for ML-KEM
- #130732 [cDAC] Avoid exception-based GetTypeParam probing
- #130728 [cDAC] Remove vestigial IsPegged from HandleData
- #130727 Replace Unsafe.SizeOf with sizeof
- #130705 Apply a number of mitigations to System.Security.Cryptography.Xml
- #130703 Don't throw from TensorPrimitives.Clamp when min is greater than max
- #130701 Remove unnecessary DisablePackageBaselineValidation from projects
- #130687 Fix FileStream position not updated when sync write partially succeeds
- #130685 Annotate Directory_Move_Multiple_From_Watched_To_Unwatched_Mac with [ActiveIssue]
- #130676 Preserve Android NativeAOT single-file test results
- #130673 Remove obsolete Apple ICU data bundling
- #130670 [clr-ios] Increase MacCatalyst CoreCLR job timeouts
- #130669 Fix CI workflow eval reporting and PR status
- #130668 Guard CI fixer against no-op test rooting changes
- #130663 Allow trimming NativeRuntimeEventSource
- #130653 [RyuJIT Wasm] Add
JIT\HardwareIntrinsics\WasmTests - #130635 DCS: Add more formal BOM-detection to Json encoding stream wrappers.
- #130632 Add test coverage for UnmanagedCallersOnly with CallConvFastcall (Windows-only)
- #130631 [main] Source code updates from dotnet/dotnet
- #130614 [browser] emscripten 6.0.2 follow up
- #130613 [browser][coreCLR] abort faster on unexpected errors
- #130603 Trim STAThreadAttribute in single-threaded (browser/wasi) Mono apps
- #130528 Exclude ResolvedFromDifferentContext collectible-unload test from GC stress
- #130482 JIT: Allow inlining of JIT-inserted
AsyncHelpers.TransparentAwait - #130456 Improve Linux AIA fetching
- #130449 Add default install dir for OpenBSD
- #130429 Fix XmlSerializer regression for derived XmlText properties
- #130346 [automated] Merge branch 'release/8.0' => 'release/8.0-staging'
- #130345 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'
- #130343 Fix failing symlink tests (9.0)
- #130342 Fix failing symlink tests
- #130304 Fix zip unix permissions
- #130124 [issue-check] Add closed issue reference check agentic workflow
- #130082 Http Request Compression
- #130053 Add CompositeMLDsa CNG (NCrypt)
- #130039 Add Sm4 and SVE Sm4 APIs
- #129992 Add MRV debug info for multi-register FP/mixed struct returns on Unix x64
- #129924 Consolidate RSA tests into S.S.C.
- #129609 Use dispatch cells for generic virtual method dispatch
#130797 Remove dead switch-table disassembly code from the xarch emitter
- 作成者: @tannergooding
- 作成日時: 2026年07月15日 16:26:17(UTC)
- マージ日時: 2026年07月15日 22:46:32(UTC)
- ラベル: area-CodeGen-coreclr
概要
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パラメータなしで更新
- 到達不可能なjump-table disassembly処理(
パフォーマンスへの影響
影響なし。削除対象は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
- 作成者: @vcsjones
- 作成日時: 2026年07月15日 16:01:53(UTC)
- マージ日時: 2026年07月15日 23:19:12(UTC)
- ラベル: area-System.Security test-bug
概要
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
- 作成者: @tannergooding
- 作成日時: 2026年07月15日 14:50:41(UTC)
- マージ日時: 2026年07月15日 22:57:53(UTC)
- ラベル: area-System.Numerics
概要
.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
その他
IParsable、ISpanParsable、IUtf8SpanParsableは.NET 11の対象外- 公開API(破壊的変更):
NumberStyles.AllowTrailingInvalidCharactersフラグが削除されるため、このフラグを使用していたコードは修正が必要 - 変更は対象レポジトリの参照サーフェス(ref アセンブリ)にも反映済み
#130772 [browser][coreCLR] relink with -O3
- 作成者: @pavelsavara
- 作成日時: 2026年07月15日 11:24:59(UTC)
- マージ日時: 2026年07月15日 17:58:38(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
CoreCLR ブラウザ-WASM リリンク時の Emscripten 最適化レベルを -O2 から -O3 に引き上げます。コンパイル時のデフォルト最適化フラグおよびリリースビルド時のリンク最適化フラグが対象です。
変更内容
- src/mono/browser/build/BrowserWasmApp.CoreCLR.targets:
EmccCompileOptimizationFlagのデフォルト値を-O2から-O3に変更、リリースビルド時のEmccLinkOptimizationFlagを-O2から-O3に変更(計4行の変更)
パフォーマンスへの影響
Emscripten の -O3 は -O2 よりも攻撃的な最適化を適用するため、実行速度の向上が期待されます。ただし、マクロベンチマークで性能低下が確認された場合はロールバック予定とのこと。
関連Issue
その他
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
その他
レビュアーから、BootJsonBuilderHelper が公開型であるため、プライマリコンストラクタシグネチャの変更は外部利用者への破壊的変更となる可能性がある旨の指摘がある。互換性を考慮した従来のコンストラクタオーバーロード追加の検討が推奨されている。
#130763 Re-enable EmittingIgnoresAccessChecksToAttributeIsRespected on CoreCLR interpreter
- 作成者: @Copilot
- 作成日時: 2026年07月15日 09:57:44(UTC)
- マージ日時: 2026年07月15日 18:35:11(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
CoreCLR interpreter環境でEmittingIgnoresAccessChecksToAttributeIsRespected RefEmitテストを再度有効化するPRです。このテストは以前Issue #125988により無効化されていましたが、根本原因が解決されたため再度有効化します。
変更内容
src/tests/reflection/RefEmit/EmittingIgnoresAccessChecksToAttributeIsRespected.cs: CoreCLR interpreter向けの[ActiveIssue(...125988..., IsCoreClrInterpreter)]属性を削除(1行削除)- NativeAOTおよびMono-FullAOT向けの
ActiveIssue属性は維持
パフォーマンスへの影響
影響なし
関連Issue
その他
- 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
- 作成者: @MichalStrehovsky
- 作成日時: 2026年07月15日 06:09:10(UTC)
- マージ日時: 2026年07月15日 23:45:32(UTC)
- ラベル: area-NativeAOT-coreclr
概要
GVM(汎用仮想メソッド)ディスパッチ変更 #130753 のフォローアップです。NativeAOT ランタイムのディスパッチ解決ロジックに関連した調整が行われています。
変更内容
- ICodeManager.h: インターフェース定義の軽微な変更(+1/-1)
- amd64/DispatchResolve.S: amd64アーキテクチャのディスパッチ解決ロジックの調整(+11/-11)
- arm64/DispatchResolve.S: arm64アーキテクチャのディスパッチ解決ロジックの調整(+11/-11)
パフォーマンスへの影響
影響なし(フォローアップ調整であり、パフォーマンス関連の情報は提供されていません)
関連Issue
その他
NativeAOT ランタイムの複数アーキテクチャ(amd64、arm64)対応のディスパッチ機構に関わる変更です。
#130743 Remove unsafe code from System.Net.Mail decoders
- 作成者: @EgorBo
- 作成日時: 2026年07月15日 00:13:03(UTC)
- マージ日時: 2026年07月15日 11:39:53(UTC)
- ラベル: area-System.Net reduce-unsafe
概要
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)
- 作成者: @lewing
- 作成日時: 2026年07月14日 23:02:26(UTC)
- マージ日時: 2026年07月15日 19:51:28(UTC)
- ラベル: arch-wasm area-VM-coreclr
概要
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
その他
- マネージドC++で生成されたコードとの互換性問題を修正する破壊的でない変更
- VM側の複数ファイル(corelib.h、comdelegate.cpp、appdomain.cpp、metasig.h)で対応するバインディング更新が実施されており、ランタイムとライブラリの整合性が取られている
#130737 Fix IsSupported tests for ML-KEM
- 作成者: @vcsjones
- 作成日時: 2026年07月14日 22:31:14(UTC)
- マージ日時: 2026年07月15日 14:35:48(UTC)
- ラベル: area-System.Security test-enhancement
概要
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
- 作成者: @max-charlamb
- 作成日時: 2026年07月14日 21:16:11(UTC)
- マージ日時: 2026年07月15日 19:16:53(UTC)
- ラベル: area-Diagnostics-cdac
概要
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
- 作成者: @max-charlamb
- 作成日時: 2026年07月14日 21:01:40(UTC)
- マージ日時: 2026年07月15日 19:19:24(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Contracts DAC)のGCハンドル契約から未使用のIsPeggedフィールドを削除する変更です。コンシューマー向けのHandleDataからはIsPeggedを除去し、レガシーSOS互換性のためSOSHandleData.IsPeggedは保持しつつ常に0を出力します。
変更内容
- IGC.cs(Abstractions):
HandleDatarecord 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
- 作成者: @EgorBo
- 作成日時: 2026年07月14日 20:52:01(UTC)
- マージ日時: 2026年07月15日 10:12:36(UTC)
- ラベル: area-System.Runtime.Intrinsics reduce-unsafe
概要
コードベース全体で 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
- 作成者: @eiriktsarpalis
- 作成日時: 2026年07月14日 18:10:41(UTC)
- マージ日時: 2026年07月15日 16:33:14(UTC)
- ラベル: area-System.Security linkable-framework
概要
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
- 作成者: @tannergooding
- 作成日時: 2026年07月14日 18:01:29(UTC)
- マージ日時: 2026年07月15日 11:56:52(UTC)
- ラベル: area-System.Numerics
概要
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
その他
破壊的変更: min > max時にArgumentExceptionをスロー する前のドキュメント化された動作を削除します。これまでこの例外に依存していたコードは動作が変わります。このPRはGitHub Copilotとの共同作成です。
#130701 Remove unnecessary DisablePackageBaselineValidation from projects
- 作成者: @akoeplinger
- 作成日時: 2026年07月14日 17:21:10(UTC)
- マージ日時: 2026年07月15日 10:09:31(UTC)
- ラベル: area-Infrastructure-libraries linkable-framework
概要
プロジェクトファイルから不要な 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オーバーロードを追加。WindowsWriteFileは全て成功または失敗のため、既存実装に委譲し成功時のみインクリメント。OSFileStreamStrategy.cs:Writeメソッドがref _filePositionを新しいオーバーロードに渡すように変更。呼び出し後の単独のインクリメント処理は削除。
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#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
その他
なし
#130676 Preserve Android NativeAOT single-file test results
- 作成者: @kotlarmilos
- 作成日時: 2026年07月14日 12:44:37(UTC)
- マージ日時: 2026年07月15日 11:49:42(UTC)
- ラベル: os-android area-Infrastructure
概要
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
- 作成者: @matouskozak
- 作成日時: 2026年07月14日 11:51:02(UTC)
- マージ日時: 2026年07月15日 14:17:23(UTC)
- ラベル: area-Infrastructure-mono os-ios os-tvos os-maccatalyst
概要
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
- 作成者: @kotlarmilos
- 作成日時: 2026年07月14日 10:40:48(UTC)
- マージ日時: 2026年07月15日 09:09:12(UTC)
- ラベル: area-Infrastructure
概要
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 分に増加
- MacCatalyst CoreCLR ライブラリテストジョブの
パフォーマンスへの影響
影響なし(タイムアウト値の調整であり、実行時パフォーマンスに変更なし)
関連Issue
なし
その他
- 変更対象は CI/CD パイプライン設定のみで、ランタイムコード自体の変更なし
- 背景:Azure Pipelines のジョブがタイムアウトしている間に、Helix での有効なテスト実行が中断されていた問題に対応
#130669 Fix CI workflow eval reporting and PR status
- 作成者: @kotlarmilos
- 作成日時: 2026年07月14日 10:33:17(UTC)
- マージ日時: 2026年07月15日 07:19:25(UTC)
- ラベル: area-Infrastructure
概要
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
その他
既知の問題: プローブワークフローの「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
- 作成者: @MichalStrehovsky
- 作成日時: 2026年07月14日 03:53:53(UTC)
- マージ日時: 2026年07月15日 13:07:02(UTC)
- ラベル: area-System.Threading
概要
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
その他
このPRはトリマー(AOT/ILTrimmer)が不要なコードを削除できるようにするための内部実装の最適化であり、公開APIへの影響はありません。定数値を直接使用するパターンにより、静的解析ツールが値の追跡を容易にできるようになります。
#130653 [RyuJIT Wasm] Add JIT\HardwareIntrinsics\Wasm Tests
- 作成者: @adamperlin
- 作成日時: 2026年07月13日 23:54:16(UTC)
- マージ日時: 2026年07月15日 20:31:03(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
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.
- 作成者: @StephenMolloy
- 作成日時: 2026年07月13日 16:51:20(UTC)
- マージ日時: 2026年07月15日 01:03:25(UTC)
- ラベル: area-Serialization
概要
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
その他
この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-maestro[bot]
- 作成日時: 2026年07月13日 15:30:26(UTC)
- マージ日時: 2026年07月15日 05:55:09(UTC)
- ラベル: area-codeflow
概要
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
- 作成者: @pavelsavara
- 作成日時: 2026年07月13日 10:45:31(UTC)
- マージ日時: 2026年07月15日 22:07:21(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
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
その他
本変更はEmscripten 6.0.2(dotnetパッチ付き)への対応として、JavaScript/ネイティブ相互運用性の保証とWASM環境での互換性維持を目的としています。
#130613 [browser][coreCLR] abort faster on unexpected errors
- 作成者: @pavelsavara
- 作成日時: 2026年07月13日 10:01:59(UTC)
- マージ日時: 2026年07月15日 10:38:39(UTC)
- ラベル: arch-wasm area-System.Runtime.InteropServices.JavaScript os-browser
概要
ブラウザランタイム(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
- 作成者: @Copilot
- 作成日時: 2026年07月13日 08:10:08(UTC)
- マージ日時: 2026年07月15日 07:39:26(UTC)
- ラベル: arch-wasm area-System.Threading linkable-framework size-reduction
概要
単一スレッド環境(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
その他
- マルチスレッド環境では既存動作を維持し、単一スレッド環境では属性をトリミング可能にする設計
- 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
- 作成者: @jakobbotsch
- 作成日時: 2026年07月10日 12:10:30(UTC)
- マージ日時: 2026年07月15日 09:48:09(UTC)
- ラベル: area-CodeGen-coreclr
概要
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
その他
- 変更はランタイムのJITコンパイラ層(内部実装)に限定され、公開APIへの影響はなし
- JITバージョンGUIDが更新されており、バージョン管理の厳密性が保たれている
- この最適化は特にasync/awaitパターンを多用するアプリケーション(UIフレームワーク、非同期I/Oループなど)において効果的と考えられます
#130456 Improve Linux AIA fetching
- 作成者: @bartonjs
- 作成日時: 2026年07月10日 02:05:34(UTC)
- マージ日時: 2026年07月15日 21:08:27(UTC)
- ラベル: area-System.Security breaking-change
概要
LinuxのOpenSSLベースのX.509チェーン構築パスを改善し、以下の2つを実現します:
- AIA(Authority Information Access)フェッチをチェーン構築あたり最大2回に制限(Windowsと同等の動作)
- 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
その他
- キャッシュの特性: 失敗はキャッシュされない。キャッシュタスクが
byte[]なしで完了した場合は無視され、新規ダウンロードがトリガーされる - キャッシュ競合: CRLダウンロードがX509/AIAをキャッシュから削除する可能性があるが、CRLダウンロードは成功時に自身をキャッシュから削除する(上位レベルでキャッシュされるため再ダウンロード不要)
- OCSP: OCSPリクエストはHTTPキャッシュを完全にバイパス
- CRL削除: CRLダウンロードはキャッシュ内容削除により、繰り返しアクセスによる重複ダウンロードを防止
#130449 Add default install dir for OpenBSD
- 作成者: @sethjackson
- 作成日時: 2026年07月10日 00:49:21(UTC)
- マージ日時: 2026年07月15日 03:12:06(UTC)
- ラベル: area-Host community-contribution os-openbsd
概要
OpenBSD環境における.NETのデフォルトインストールディレクトリを/usr/local/share/dotnetに設定するための変更です。OpenBSDではFreeBSDのようなCTL_USER sysctlが存在しないため、パスをハードコードしています。
変更内容
- src/native/corehost/hostmisc/pal.unix.c: OpenBSD固有のデフォルトインストールディレクトリパスを追加(+2行)
パフォーマンスへの影響
影響なし
関連Issue
その他
- OpenBSDではFreeBSDと異なり、システム設定値の動的取得が不可能なため、ハードコード対応となっています
- プラットフォーム固有の初期化処理に関する変更です
#130429 Fix XmlSerializer regression for derived XmlText properties
- 作成者: @StephenMolloy
- 作成日時: 2026年07月09日 19:23:30(UTC)
- マージ日時: 2026年07月15日 01:06:13(UTC)
- ラベル: area-Serialization
概要
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
その他
- コミット cc2019b による変更(基底宣言メンバーの 'continue' から 'RemoveUniqueAccessor + fall-through' への変更)の意図を保持しながら、リフレクションベースのシリアライザーとコンテンツモデルレベルの処理を正確に区別する修正です
- System.Xml.Serialization の内部実装(XmlReflectionImporter)の修正であり、公開 API の変更はありません
#130346 [automated] Merge branch 'release/8.0' => 'release/8.0-staging'
- 作成者: @github-actions[bot]
- 作成日時: 2026年07月08日 09:56:50(UTC)
- マージ日時: 2026年07月15日 13:55:00(UTC)
- ラベル: Servicing-approved area-codeflow
概要
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'
- 作成者: @github-actions[bot]
- 作成日時: 2026年07月08日 09:54:30(UTC)
- マージ日時: 2026年07月15日 20:13:46(UTC)
- ラベル: Servicing-approved area-codeflow
概要
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)
- 作成者: @alinpahontu2912
- 作成日時: 2026年07月08日 09:21:00(UTC)
- マージ日時: 2026年07月15日 13:21:47(UTC)
- ラベル: Servicing-approved area-System.Formats.Tar
概要
.NET 9向けのバックポート修正。TarEntry.FilePathEscapesDirectoryのシムリンク解決ロジックの不具合を修正し、symlink経由のディレクトリエスケープ検出時にArgumentOutOfRangeExceptionがスローされていた問題を解決します。macOSの/var、/tmpなどのシムリンク先への抽出が機能していませんでした。
変更内容
- TarEntry.cs:
FilePathEscapesDirectoryメソッドを修正。論理パスと物理パスの処理を分離し、相対パス計算前に長さチェックを追加。シムリンク解決時に非リンク/ぶら下がりリンクを正しく処理するよう調整。 - テストファイル群: 4つのテストファイル(File/Stream同期・非同期版)から
[ActiveIssue(#129227)]属性を削除し、以前無効化されていたシムリンク走査テストを再有効化。
パフォーマンスへの影響
影響なし
関連Issue
その他
- 内部発見のリグレッション修正(顧客報告なし)
- リスク評価:低
- 修正内容は
System.Formats.Tarライブラリの公開API(TarFile.ExtractToDirectoryなど)の動作を改善するもので、破壊的変更ではありません
#130342 Fix failing symlink tests
- 作成者: @alinpahontu2912
- 作成日時: 2026年07月08日 09:16:41(UTC)
- マージ日時: 2026年07月15日 12:27:43(UTC)
- ラベル: Servicing-approved area-System.Formats.Tar
概要
Tar形式のシンボリックリンク解決に関する回帰バグを修正します。TarFile.ExtractToDirectoryにおいて、シンボリックリンク経由のディレクトリトラバーサル検証時に、論理パス長とシンボリックリンク解決パス長の不一致によりArgumentOutOfRangeExceptionが発生していた問題を修正しました。macOS(/var、/tmp)およびWindowsでのシンボリックリンクされた宛先への抽出が修正されます。
変更内容
- TarEntry.cs:
FilePathEscapesDirectoryメソッドを更新。シンボリックリンク解決を含むコンポーネント単位のトラバーサル時に、まず論理相対パスを計算し、トラバーサル中にシンボリックリンク(ダングリングリンクを含む)を解決するロジックに変更(+35/-27行) - テストファイル(4ファイル): シンボリックリンク関連テストの
ActiveIssueスキップを削除し、macOSおよびWindowsで再度実行可能に(合計-28行)
パフォーマンスへの影響
影響なし
関連Issue
その他
- 内部報告による回帰バグ
- リスク評価:低
- 既存のスキップされていたCIテストを再有効化することで、今後の回帰を防止
#130304 Fix zip unix permissions
- 作成者: @alinpahontu2912
- 作成日時: 2026年07月07日 14:43:12(UTC)
- マージ日時: 2026年07月15日 14:15:59(UTC)
- ラベル: area-System.IO.Compression
概要
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
その他
- 修正は公開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
その他
CompressionLevelの無効な値は構成時に検証されるため、送信時ではなく早期にエラー検出が可能です- これは公開 API 追加であり、
System.Net.Httpライブラリの互換性維持範囲内です
#130053 Add CompositeMLDsa CNG (NCrypt)
- 作成者: @PranavSenthilnathan
- 作成日時: 2026年06月30日 18:47:11(UTC)
- マージ日時: 2026年07月15日 19:25:14(UTC)
- ラベル: area-System.Security
概要
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
- 作成者: @a74nh
- 作成日時: 2026年06月30日 15:34:05(UTC)
- マージ日時: 2026年07月15日 22:53:23(UTC)
- ラベル: area-System.Runtime.Intrinsics linkable-framework community-contribution
概要
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
その他
- 既存テストプログラムから不要な個別INCLUDEステートメント(Program.cs内)を削除し、共通化を図っています
- SM4参照実装ヘルパー関数(Helpers.cs)をテスト検証用に追加
- ARM64対応プロセッサでのみ利用可能で、プラットフォーム非対応環境では
IsSupportedがfalseになります
#129992 Add MRV debug info for multi-register FP/mixed struct returns on Unix x64
- 作成者: @tommcdon
- 作成日時: 2026年06月29日 18:19:52(UTC)
- マージ日時: 2026年07月15日 20:52:54(UTC)
- ラベル: area-Diagnostics-coreclr
概要
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
その他
- 19個のファイルが変更(ほぼ全てがデバッグインフラに関連)
- 公開APIではなく、内部のデバッグ情報エンコーディング形式の拡張
- JITEEバージョンGUID更新により、古いデバッグ情報との互換性に影響がある可能性あり
- x87 FPスタック変数のデバッガサポートは32ビット環境に限定される可能性
#129924 Consolidate RSA tests into S.S.C.
- 作成者: @PranavSenthilnathan
- 作成日時: 2026年06月27日 07:09:33(UTC)
- マージ日時: 2026年07月15日 10:02:58(UTC)
- ラベル: area-System.Security
概要
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
その他
テスト階層構造の簡略化により、プロバイダー別テスト実装の保守性が向上します。XUnitの静的メンバー参照制約への対応として、SkipTestExceptionベースの動的スキップに統一されます。
#129609 Use dispatch cells for generic virtual method dispatch
- 作成者: @MichalStrehovsky
- 作成日時: 2026年06月19日 06:19:52(UTC)
- マージ日時: 2026年07月15日 04:49:15(UTC)
- ラベル: area-NativeAOT-coreclr
概要
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をディスパッチセルに切り替え