注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #127062 [ios-clr] Fix ErrObjectTests.Clear to set LastPInvokeError
- #127042 Revert "Accelerate
Halfwith FP16 ISA" - #127040 Remove DacDbi GetCachedWinRTTypes APIs from native and cDAC
- #127038 Backport System.Text.RegularExpressions XML docs from dotnet-api-docs to source
- #127030 [browser][coreCLR] Fix
loadBootResourceCallbackreceiving undefined integrity and refactor config merge - #127029 Remove unused HAVE_EVP_MAC macro in native crypto PAL
- #127021 Cache Late-bound CLR->COM stubs by MethodDesc
- #127019 [cDAC] Adding
TryGetContracton ContractRegistry to allow more custom behavior if contract is not found - #127013 Fix browser-wasm CI coverage gap for npm config changes
- #127001 Add UnionAttribute and IUnion interface to System.Runtime.CompilerServices
- #126988 Fix trimmed library test assemblies missing from app bundles on tvOS
- #126946 [browser] CoreCLR in-tree relink
- #126928 [cDAC] Implement RequiresAlign8 for cDAC
- #126906 Improve xplat dump test work item naming
- #126893 Extend xcrun SDK resolution to all Apple platforms for NativeAOT linker
- #126850 Fix COM Event ilstub classification
- #126848 Save all volatile argument registers in GC probe hijack frames on AMD64 and ARM64
- #126840 Add early long path validation to Windows build script
- #126830 [browser][event-pipe] EventPipe diagnostic server TypeScript for CoreCLR
- #126752 Add cDAC no-fallback test leg to runtime-diagnostics pipeline
- #126690 [release/10.0] Fix race condition in cached interface dispatch stubs
- #126689 [release/10.0] Fix ARM64 interface dispatch cache torn read
- #126572 [infra] Fix jq example in update-os-coverage skill
- #126566 [RISC-V] Use fine-grained fence variants for memory barriers
- #126486 Add ReadyToRun test project and create CrossModuleInliningInfo section in R2R reflection library
- #126398 arm64: Refactor mov/movprfx for embedded masked operations
- #126371 JIT: Fix disasm of reg to reg SIMD narrowing/widening instructions
- #126263 superpmi: Refactor parallelsuperpmi.cpp to eliminate scattered #ifdef blocks and remove PAL usage
- #126142 Remove nullability annotation from
MetadataLoadContext.CoreAssembly. - #126078 Add Process.StartAndForget APIs for fire-and-forget process launching
- #124478 RetryAfter metadata in FixedWindowRateLimiter returns time to next window
- #123609 [release/9.0-staging] Update dependencies from dotnet/roslyn-analyzers
- #115996 Support certificate validation TLS alerts for Linux
#127062 [ios-clr] Fix ErrObjectTests.Clear to set LastPInvokeError
- 作成者: @kotlarmilos
- 作成日時: 2026年04月17日 09:11:17(UTC)
- マージ日時: 2026年04月17日 16:10:20(UTC)
- ラベル: area-Microsoft.VisualBasic os-ios
概要
ErrObjectTests.ClearテストをiOsを含む全プラットフォームで確定的に実行するよう修正しました。テストがP/Invoke エラー状態に依存していたため、Apple mobileでの予期しないP/Invoke活動により競合状態が発生していた問題を解決します。
変更内容
- src/libraries/Microsoft.VisualBasic.Core/tests/ErrObjectTests.cs
System.Runtime.InteropServices名前空間をインポートMarshal.SetLastPInvokeError(42)でスレッドのP/Invokeエラーを明示的に初期化Err().LastDllErrorがこの値を正しく返すことをアサート- Apple mobileの古い
[ActiveIssue]スキップ(dotnet/runtime#124344関連)を削除
パフォーマンスへの影響
影響なし
関連Issue
その他
このテストはVisual Basic互換性機能のテストであり、内部テストコードの修正です。変更は破壊的ではなく、テストの信頼性向上を目的としています。
#127042 Revert "Accelerate Half with FP16 ISA"
- 作成者: @tannergooding
- 作成日時: 2026年04月17日 02:03:26(UTC)
- マージ日時: 2026年04月17日 06:19:45(UTC)
- ラベル: area-CodeGen-coreclr
概要
PR #122649で導入されたSystem.HalfのFP16/AVX10v1アクセラレーション機能を完全に取り消します。Half型の内部実装をFP16ネイティブサポートから従来の「通常の構造体/float経由」の動作に戻し、JIT、VM、CoreLibにおけるHalf固有の特別扱いをすべて削除します。
変更内容
- CoreLib:
System.Halfの[Intrinsic]属性を削除し、静的プロパティを非組み込み形式に変更 - JIT型システム:
TYP_HALF型エントリを削除し、float16_tヘッダを削除 - HW組み込み:
System.Half名前付き組み込みとAVX10v1スカラーFMA処理を削除 - 呼び出し規約: VM/JIT内の
Half特別扱い(FP レジスタ経由の引数/戻り値パッシング)を削除 - 構造体処理: 2バイト構造体を
TYP_HALFからTYP_USHORTとして扱うように統合 - SIMD関連:
System.Halfをアクセラレーテッド型リストから削除し、SIMD専用の最適化に戻す - プロファイリング・反射:
Half型に対する特別なレジスタ分類ロジックを削除
パフォーマンスへの影響
Half型の操作がfloat経由に戻るため、FP16ネイティブサポートを活用していたコードではパフォーマンス低下の可能性があります。ただし、AVX10v1環境下での複雑な最適化ロジックが削除されるため、コンパイル時間と複雑性は低下します。
関連Issue
#122649(この変更により取り消される)
その他
このリバートにより、Half型に関連する広範な内部実装が削除されます。変更ファイル数は47ファイル(約2,200行削除)に及び、特にhwintrinsiclistxarch.hでは組み込み命令テーブルが大幅に縮小されます。公開API自体は変わりませんが、バイナリレベルでの呼び出し規約や最適化パスが簡素化されます。
#127040 Remove DacDbi GetCachedWinRTTypes APIs from native and cDAC
- 作成者: @Copilot
- 作成日時: 2026年04月17日 00:18:02(UTC)
- マージ日時: 2026年04月17日 05:07:55(UTC)
- ラベル: area-Diagnostics-coreclr
概要
DAC/DBI(デバッガアクセスコンポーネント/デバッガバイナリインターフェース)ネイティブインターフェースからGetCachedWinRTTypesとGetCachedWinRTTypesForIIDs APIを削除します。これはWinRT型キャッシュ機能の廃止に伴う内部インターフェースのクリーンアップです。
変更内容
- IDL定義の削除:
src/coreclr/inc/dacdbi.idlから2つのメソッドシグネチャを削除 - ネイティブC++インターフェースの削除:
src/coreclr/debug/inc/dacdbiinterface.hから純粋仮想メソッド定義を削除 - DAC実装の削除:
src/coreclr/debug/daccess/dacdbiimpl.hとdacdbiimpl.cppからメソッド宣言と実装を削除 - マネージド互換性レイヤーの削除:
Microsoft.Diagnostics.DataContractReader.LegacyのIDacDbiInterface.csとDacDbiImpl.csから対応するメソッドと転送スタブを削除
パフォーマンスへの影響
影響なし(削除のみであり、パフォーマンス関連の変更ではありません)
関連Issue
なし
その他
本PRは内部デバッグインターフェースのAPIサーフェスを縮小するクリーンアップです。ネイティブC++インターフェース定義、IDL、マネージド互換性レイヤーの3つのレイヤーから一貫して削除されています。削除対象のAPIはWinRT型キャッシュ関連の機能であり、今後サポートされません。
#127038 Backport System.Text.RegularExpressions XML docs from dotnet-api-docs to source
- 作成者: @danmoseley
- 作成日時: 2026年04月16日 22:52:10(UTC)
- マージ日時: 2026年04月17日 19:34:30(UTC)
- ラベル: area-System.Text.RegularExpressions
概要
System.Text.RegularExpressionsの包括的なXMLドキュメンテーションをソースコードに逆ポート(backport)し、コンパイラ生成XMLドキュメントを公式ドキュメントの単一の情報源とします。新しいAPI(RegexOptions.AnyNewLine、NonBacktracking、GeneratedRegexAttributeメンバー)がLearn.microsoft.comで正しく表示されるようにし、dotnet-api-docsリポジトリでの個別パッチ適用を不要にします。
変更内容
- 24ファイルのXMLドキュメント拡張:
System.Text.RegularExpressions公開APIの全体に対して、型、メンバー、例外、リマーク、パラメータ説明を追加・拡充 - プロジェクト設定変更:
.csprojから<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>を削除し、コンパイラ生成XMLをオーソライティブに - 保護されたメンバーのドキュメント化:
Regex.csの保護されたフィールドをインラインコメント(//)から///XMLコメントに変換(CS1591警告回避) - フォーマット変換:dotnet-api-docsのカスタムXML/Markdownハイブリッド形式から標準
///XML形式へ(バッククォートコード→<c>、Markdownリンク→<see href>、テーブル→<list type="table">など) - 動作上の変更なし:ドキュメンテーションのみの変更
パフォーマンスへの影響
影響なし
関連Issue
#10722(dotnet/dotnet-api-docs)
その他
テスト結果:
- ビルド:0エラー、0警告(Release構成)
- テスト実行:.NET Framework 4.8.1で15,932件、.NET 11.0で32,068件すべてパス
フォローアップ必要事項(ドキュメントチーム対応):
System.Text.RegularExpressionsをdotnet-api-docsのdisallow-edits.ymlに追加- API Docsリポジトリで
open_to_public_contributorsをfalseに設定 - ドキュメントCI パイプラインに追加して継続的な検証を実施
Copilot指摘事項:Regex.Splitメソッドの複数の<see cref>参照が型のみにリンクしており、特定のオーバーロード(例:<see cref="Regex.Split(string)"/>)への変更が推奨されています(低信頼度、4件の指摘)。
#127030 [browser][coreCLR] Fix loadBootResourceCallback receiving undefined integrity and refactor config merge
- 作成者: @pavelsavara
- 作成日時: 2026年04月16日 21:44:34(UTC)
- マージ日時: 2026年04月17日 11:41:40(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
ブラウザ向けCoreCLR JavaScriptローダーの2つの問題を修正します:
loadBootResourceCallbackに渡されるintegrityパラメータが常にundefinedになっていたバグを修正し、代わりにアセットマニフェストから取得したhashフィールドを使用- ローダー設定マージロジックをリファクタリングして、直接ターゲットオブジェクトに書き込むことでマージ後のリソースが上書きされることを防止
変更内容
- src/native/libs/Common/JavaScript/types/internal.ts:
AssetEntryInternalから未使用のintegrityフィールドを削除 - src/native/libs/Common/JavaScript/loader/config.ts:
mergeResources/mergeConfigsをリファクタリング。マージ結果をターゲットに直接書き込む方式に変更し、coreVfsフィールドのマージ処理を追加、Assets.hashのマージ対応 - src/native/libs/Common/JavaScript/loader/assets.ts:
loadBootResourceCallback呼び出し時にassetInternal.integrityからassetInternal.hash ?? ""に変更
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
本修正は内部実装(ローダー設定マージロジック)の改善と、公開APIへの正確な値渡し(hashフィールド)を実現するものです。Object.assignによる上書きによってマージが失われる脆弱性が解消され、衛星リソースのマージ処理が簡潔になります。
#127029 Remove unused HAVE_EVP_MAC macro in native crypto PAL
- 作成者: @Copilot
- 作成日時: 2026年04月16日 21:27:32(UTC)
- マージ日時: 2026年04月17日 02:40:23(UTC)
- ラベル: area-System.Security
概要
ネイティブ暗号PALの未使用マクロHAVE_EVP_MACを削除し、同等の条件チェックg_evpMacHmac != NULLをその唯一の呼び出し箇所にインライン化する変更です。HMAC作成ロジックは変更されません。
変更内容
src/native/libs/System.Security.Cryptography.Native/pal_hmac.c:HAVE_EVP_MACマクロを削除し、代わりにg_evpMacHmac != NULLチェックを直接インライン化(+1/-2行)
パフォーマンスへの影響
影響なし。マクロ削除によるコード簡潔化であり、実行時の動作変更はありません。
関連Issue
その他
- 変更はSystem.Security.Cryptographyネイティブライブラリの内部実装に限定されます
- 検証済み:ビルド成功、HMAC関連の暗号テスト合格、CodeQL分析合格
- AIアシスタント(Copilot)により作成・レビューされたPull Requestです
#127021 Cache Late-bound CLR->COM stubs by MethodDesc
- 作成者: @jkoritzinsky
- 作成日時: 2026年04月16日 18:20:57(UTC)
- マージ日時: 2026年04月17日 18:16:59(UTC)
- ラベル: os-windows area-Interop-coreclr
概要
CLR→COM late-bound IL stubのキャッシュ方式を変更し、シグネチャのみでなくMethodDescをキーに含める修正です。複数のメソッドが同じシグネチャを持つ場合、DispIdAttributeなどのメタデータに基づいた動作が異なるメソッド間で誤ってstubが再利用される問題を解決します。
変更内容
- src/coreclr/vm/dllimport.cpp:
CreateHashBlob関数を更新し、COM late-bound stubsを「非共有」として扱い、対象MethodDescおよびstubフラグをキーに含めるよう変更。同時に、forward P/Invoke(非CALLI、非vararg)とCOM late-bound stubsで共通の「非共有stub」ハッシュブロブ構築パスへのリファクタリング実施。デバッグアサーションの定数値も更新。 - テストの追加: COM Interop機能のテストケースを追加(IDispatchクライアント/サーバー、ネイティブサーバーのディスパッチテストヘッダー、サーバーコントラクト定義)
パフォーマンスへの影響
影響なし(キャッシュキーの変更であり、キャッシュヒット率やスループットに大きな影響はない。late-bound COM stubsの再利用は極めて稀であるため、実質的な負荷増加は予期されない)
関連Issue
その他
- 修正前:複数のメソッドが同じシグネチャを持つ場合、異なるMethodDescに対応する同一の late-bound stub が再利用され、DispIdAttributeなどのメタデータが混在する原因となっていた
- 修正後:各MethodDescごとに独立したstubが生成・キャッシュされるため、メタデータに依存した動作が正しく分離される
- 内部実装の変更であり、公開APIへの影響はない
#127019 [cDAC] Adding TryGetContract on ContractRegistry to allow more custom behavior if contract is not found
- 作成者: @rcj1
- 作成日時: 2026年04月16日 17:39:08(UTC)
- マージ日時: 2026年04月17日 05:02:07(UTC)
- ラベル: area-Diagnostics-coreclr area-Diagnostics-cdac
概要
cDAC(Common Data Access Component)のContractRegistryにTryGetContractメソッドを追加し、コントラクトが見つからない場合の制御フローを例外に依存しない設計に改善するもの。従来のGetContractは見つからない場合にNotImplementedExceptionをスローしていたが、一部のAPIではS_OKを返すなど異なる動作が必要なため、呼び出し側が例外ベースではなく戻り値で処理できるようにした。
// 使用例
if (contractRegistry.TryGetContract<IReJIT>(out var contract, out string? reason))
{
// コントラクトが利用可能
}
else
{
// コントラクト未対応 - カスタム動作を実行
}
変更内容
- ContractRegistry.cs:
TryGetContract<TContract>(out TContract, out string? failureReason)メソッドをAbstract基底に追加し、既存のGetContractプロパティアクセス機構を内部ヘルパーを通じてリルーティング - CachingContractRegistry.cs: ディスクリプタベースの解析とキャッシング機構を備えた
TryGetContractの実装を追加 - TestPlaceholderTarget.cs: テスト用コントラクトレジストリを新しい
TryGetContractパターンに対応 - SOSDacImpl.cs:
GetTieredVersionsの機能ゲーティングを例外ベースからTryGetContractを使用した方式に変更
パフォーマンスへの影響
影響なし。本変更は制御フローの改善であり、パフォーマンス数値に変化なし。
関連Issue
#126963(同PR内のディスカッション参照)
その他
- 互換性: 既存の
GetContractプロパティアクセスは引き続きサポートされ、破壊的変更なし - 目的: 例外を制御フローとして使用するアンチパターンを排除し、コードの意図を明確化
#127013 Fix browser-wasm CI coverage gap for npm config changes
- 作成者: @steveisok
- 作成日時: 2026年04月16日 16:39:37(UTC)
- マージ日時: 2026年04月17日 15:40:52(UTC)
- ラベル: area-Infrastructure
概要
browser-wasm CI の カバレッジギャップを修正するPRです。src/native/package.json や package-lock.json などの npm 設定変更が、実際に npm run rollup を実行する browser-wasm CoreCLR ビルドを トリガーしていませんでした。この問題により、Dependabot PR が serialize-javascript v7 への更新時に CI を通過してしまい、マージ後に crypto is not defined エラーで破損していました。
変更内容
eng/pipelines/common/evaluate-default-paths.yml:
_wasm_src_nativeパス検出に以下のファイルを追加し、これらへの変更がwasmbuildtests、wasm_mono_runtimetests、wasm_coreclr_runtimetestsサブセットをトリガーするように修正src/native/package.jsonsrc/native/package-lock.jsonsrc/native/tsconfig.jsonsrc/native/.npmrcsrc/native/rollup.config*
src/native/package.json、src/mono/browser/runtime/package.json: npm
overrides機能を使用してserialize-javascriptを~6.0.2に固定。emsdk が Node v18.17.1 をバンドルしており、serialize-javascriptv7+ が必須とする Node 20+ の グローバルcryptoAPI をサポートしていないため、の暫定的な修正です。
パフォーマンスへの影響
影響なし
関連Issue
- #127008(修正対象)
- #125340(3月9日のリバート)
- #126986(4月16日のリバート)
- #125230(破損した Dependabot PR)
- #126217(破損した Dependabot PR)
その他
根本原因は、npm/rollup 設定ファイルの最上位レベルの変更が CI パス検出から漏れていたため、LibraryTests レグのみが実行される状態になっていました。実際に rollup ビルドを実行する CoreCLR レグはスキップされていました。emsdk の Node バージョン更新が実施されるまで、npm overrides による暫定的な対応が継続されます。
#127001 Add UnionAttribute and IUnion interface to System.Runtime.CompilerServices
- 作成者: @Copilot
- 作成日時: 2026年04月16日 12:45:29(UTC)
- マージ日時: 2026年04月17日 12:28:03(UTC)
- ラベル: area-System.Runtime.CompilerServices
概要
System.Runtime.CompilerServicesに承認済みのUnion型サポートAPI(UnionAttributeとIUnionインターフェース)を実装します。コンパイラがUnion型を認識するための属性と、ランタイムでUnionの値にアクセスするためのインターフェースを提供します。
[Union]
public struct Pet : IUnion
{
public Pet(Cat value) => Value = value;
public Pet(Dog value) => Value = value;
public object? Value { get; }
}
変更内容
- UnionAttribute.cs —
System.Runtime.CompilerServices名前空間にUnionAttributeを追加。[AttributeUsage(Class | Struct, AllowMultiple = false, Inherited = false)]で装飾され、sealed属性を持つ - IUnion.cs —
object? Value { get; }プロパティを定義するインターフェースを追加。実装はコンパイラの提供するUnion動作には必須ではないが、ランタイムアクセスを提供 - System.Private.CoreLib.Shared.projitems — 新規ソースファイルのコンパイル登録を追加
- System.Runtime/ref/System.Runtime.cs — 参照アセンブリに公開API宣言を追加
- AttributesTests.cs —
UnionAttributeのAttributeUsage制約(Inherited = false、sealed)およびIUnion.Value動作をカバーするテストを追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- XML文書化は両型に含まれており、将来変わる可能性のある具体的な提案詳細やパターンへの参照は意図的に回避されています
UnionAttributeは非継承で設計されており、参照アセンブリと実装の両方に反映されていますIUnion実装はオプションですが、提供される場合、コンパイラによるUnion型認識と連動します
#126988 Fix trimmed library test assemblies missing from app bundles on tvOS
- 作成者: @kotlarmilos
- 作成日時: 2026年04月16日 08:19:43(UTC)
- マージ日時: 2026年04月17日 10:16:59(UTC)
- ラベル: area-Infrastructure-libraries
概要
PR #125673でLibrary出力プロジェクトのTrimmerRootAssemblyアイテム作成がスキップされたため、tvOSのRelease Library テスト時にILLinkによりテストアセンブリが完全にトリムされてしまう問題を修正します。RootEntireIntermediateAssemblyターゲットを変更し、メタデータ更新ではなくRemove+Includeを用いて、SDKが提供しないLibraryプロジェクトでも常にRootMode=allのTrimmerRootAssemblyアイテムが作成されるようにします。
変更内容
- eng/testing/tests.mobile.targets:
RootEntireIntermediateAssemblyターゲットの実装を修正- メタデータ更新による条件付き処理から、
Remove+Includeによる無条件のTrimmerRootAssemblyアイテム再作成に変更 - 関連コメントを更新し、SDKがLibrary出力型に対して
TrimmerRootAssemblyを提供しない理由を説明
- メタデータ更新による条件付き処理から、
パフォーマンスへの影響
影響なし
関連Issue
その他
tvOS上でRelease設定のLibrary形式テストプロジェクトを実行する際に、テストアセンブリが以下のエラーで検出されなくなる問題の修正です。
Test libs were not found (*.Tests.dll was not found in .../AppBundle/...)
この問題はCoreClrとMonoの両ランタイムのtvOSテストに影響していました。
#126946 [browser] CoreCLR in-tree relink
- 作成者: @maraf
- 作成日時: 2026年04月15日 11:28:58(UTC)
- マージ日時: 2026年04月17日 09:44:08(UTC)
- ラベル: arch-wasm area-Build-mono os-browser
概要
CoreCLR browser-wasm アプリケーション向けの完全なネイティブ再リンク・パイプラインを実装します。これにより、NativeFileReference を通じてカスタムネイティブコードを含めながら、CoreCLR 静的ライブラリから dotnet.native.wasm を再リンクできるようになります。Emscripten ベースの構築パイプラインで、スタブ的な WasmBuildApp / WasmTriggerPublishApp ターゲットに置き換わります。
変更内容
src/mono/browser/build/BrowserWasmApp.CoreCLR.targets(+607/-5): CoreCLR WASM ネイティブ再リンク MSBuild パイプラインの実装_CoreCLRWasmBuildAppCoreオーケストレーター: 初期化 → Emscripten セットアップ → コンパイル準備 → ManagedToNativeGenerator 実行 → コンパイル RSP 生成 → EmccCompile 実行 → リンク RSP 生成 → emcc リンク → ネイティブアセット置換の 10 段階パイプライン-fwasm-exceptions -msimd128を必須化(CoreCLR WASM の要件)、ユーザーによる無効化を禁止coreclr_compat.hヘッダー自動生成(CoreCLR 内部型MethodDesc、PCODE等のスタブ)libBrowserHost.a、libcoreclr_static.a、libcoreclrpal.aなどを使用した静的ライブラリのリンク
eng/native.wasm.targets(+6/-1): アプリレベルの再リンク時に ICU/タイムゾーン NuGet パッケージ参照をスキップ(コンテンツの二重注入防止)src/native/corehost/corehost.proj(+2/-0):libSystem.Native.Browser.extpost.jsをランタイムパック ネイティブディレクトリへコピー(emcc リンク時に必須)src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs(+60/-0):EnsureXHarnessAvailable()ヘルパー追加(ローカル開発時のテスト実行時に xharness CLI を確保)src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs(+38/-29): CoreCLR 固有プロパティ注入ロジックをAddCoreClrProjectProperties()に抽出、テンプレート作成時のプロパティ設定の一貫性を向上src/mono/sample/wasm/Directory.Build.props(+8/-0): インツリー サンプル構築時のRuntimeFlavor早期設定
パフォーマンスへの影響
影響なし(ビルド・パイプラインの変更であり、ランタイム実行性能への直接的な影響はなし)
関連Issue
その他
- Mono WASM ネイティブビルド パイプラインに類似した設計だが、CoreCLR 固有の静的ライブラリ セットと要件に
#126928 [cDAC] Implement RequiresAlign8 for cDAC
- 作成者: @barosiak
- 作成日時: 2026年04月15日 00:31:32(UTC)
- マージ日時: 2026年04月17日 00:18:05(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Common Data Access Component)のRuntimeTypeSystemコントラクトにRequiresAlign8フラグの実装を追加しました。このフラグはメソッドテーブルが8バイト境界での配置を必要とするかどうかを示します。実装は既存のDacDbiImplを通じて公開され、DEBUG時には従来のDAC実装との相互検証を行っています。
変更内容
- MethodTableFlags_1.cs -
RequiresAlign8フラグとプロパティを追加(内部実装) - IRuntimeTypeSystem.cs / RuntimeTypeSystem_1.cs -
RequiresAlign8コントラクトメソッドを追加(公開API) - DacDbiImpl.cs -
RequiresAlign8の実装を追加し、DEBUG時には従来のDAC との検証を実施(公開API層) - methodtable.h - ネイティブフラグに
[cDAC]コントラクトアノテーションを追加 - RuntimeTypeSystem.md - コントラクト設計ドキュメントを更新
- MethodTableTests.cs - 複数のアーキテクチャ間でフラグ設定/未設定をカバーする新しいテストを追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
この変更はcDACの既存APIへの破壊的変更ではなく、新しいコントラクト機能の追加です。DEBUG構成での相互検証により、従来のDAC実装との互換性が確保されています。
#126906 Improve xplat dump test work item naming
- 作成者: @max-charlamb
- 作成日時: 2026年04月14日 21:02:36(UTC)
- マージ日時: 2026年04月17日 20:24:06(UTC)
- ラベル: area-Diagnostics-coreclr
概要
クロスプラットフォーム cDAC ダンプテストの命名を改善し、テスト結果にホストプラットフォームとダンプソースプラットフォーム両方が表示されるようにしました。
Helix ワークアイテム名が CdacXPlatDumpTests_windows_x64 から CdacXPlatDumpTests_host_linux_arm_dumps_windows_x64 に変更され、個別の xUnit テスト表示名が GetModule_Succeeds(config: local/r2r) から GetModule_Succeeds(config: local/r2r, target: windows/x64) に変更されます。
変更内容
- DumpTestBase.cs: ダンプソースプラットフォーム情報を
dump-info.jsonから読み込み、テスト表示名に追加する処理を実装 - TestConfiguration.cs: テスト表示名生成のロジックを拡張し、ターゲット情報を含める
- cdac-dump-xplat-test-helix.proj: Helix ワークアイテム名生成処理の更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
CDAC_DUMP_ROOTが設定されていないローカル実行では、表示内容は変更されません- ダンプソースプラットフォーム情報は
dump-info.jsonから取得されます(ダンプが生成されたOS およびアーキテクチャを記録)
#126893 Extend xcrun SDK resolution to all Apple platforms for NativeAOT linker
- 作成者: @Copilot
- 作成日時: 2026年04月14日 18:02:19(UTC)
- マージ日時: 2026年04月17日 01:51:32(UTC)
- ラベル: area-Infrastructure-libraries
概要
macOS 15以上でNativeAOT ビルドが間欠的に失敗する問題を修正しました。Swift自動リンク ライブラリ(swift_Builtin_floatなど)がXcode SDKパス配下に移動したため、xcrun --show-sdk-pathで SDK パスを解決し、-isysrootによるパス再マッピングを活用することで対応します。これまでmacOS デスクトップターゲットはSDK解決に参加していませんでしたが、iOS系プラットフォームと同じメカニズムを適用することで問題を解決します。
変更内容
- src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets
- OSXターゲットの
_AppleSdkNameをmacosxに設定 Xcrunプロパティ初期化、command -vチェック、xcrun --show-sdk-path実行の条件を_IsiOSLikePlatformから_IsApplePlatformに拡張し、macOSもSDK パス解決に参加するよう変更- 既存の
-isysroot "$(SysRoot)"リンカー引数により-L/usr/lib/swiftが<SDK>/usr/lib/swiftに自動的に再マッピングされる - xcrun 不在やSDK 欠落時のエラー処理は
_IsiOSLikePlatformに限定し、macOS ビルドはクロスコンパイル環境で xcrun が利用できない場合でも段階的に動作するよう配慮
- OSXターゲットの
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- macOS 15+でのリンク信頼性向上が主な目的
- iOS系プラットフォームの既存メカニズムをmacOSに拡張する設計
- エラーハンドリングはmacOS デスクトップターゲットに対して寛容(クロスコンパイル環境での手動SysRoot設定に対応)
#126850 Fix COM Event ilstub classification
- 作成者: @jkoritzinsky
- 作成日時: 2026年04月13日 21:16:45(UTC)
- マージ日時: 2026年04月17日 22:02:19(UTC)
- ラベル: area-Interop-coreclr
概要
COM イベント用の IL スタブが P/Invoke として誤分類されていた問題を修正します。GCStress における P/Invoke の特殊処理が COM イベント スタブに誤って適用されていたため、スタブを専用のタイプとして正しく分類することで対応しました。
変更内容
src/coreclr/vm/clrtocomcall.cpp: COM イベント スタブの分類処理を修正(1行変更)src/coreclr/vm/ilstubcache.cpp: IL スタブ キャッシュに COM イベント タイプの分類を追加(1行追加)
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#126848 Save all volatile argument registers in GC probe hijack frames on AMD64 and ARM64
- 作成者: @Copilot
- 作成日時: 2026年04月13日 18:44:28(UTC)
- マージ日時: 2026年04月17日 00:54:03(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT ランタイムの GC probe hijack フレーム で volatile な引数レジスタを保存・復元するように改善し、GC スタックウォーク時にレジスタが生きた GC 参照を保有している場合の保存位置の喪失を防止します。これにより CrossGen2 の GC promotion 時に発生していた AV を修正します。また JIT の interface lookup ヘルパーのキルセット更新と PHI ベース jump threading の回帰修正も含まれます。
変更内容
NativeAOT ランタイム(内部実装):
- AMD64 Windows: GC probe フレーム で RDX/R8/R9 を保存・復元; hijack fixup で R10/R11 を scratch レジスタとして使用し引数レジスタの破壊を回避
- AMD64 Unix: GC probe フレーム で RSI/RDI/R8/R9 を保存・復元;
INLINE_GETTHREADを跨いで引数を保護; CFI-aware push/pop マクロで正確な unwind directive を生成 - ARM64 Windows/Unix: GC probe フレーム で x3–x7(引数)と q0–q7(FP 引数)を保存・復元; hijack パスで引数レジスタ保護
- PTFF フラグ定義追加: AsmMacros.inc および Unix macro files に PTFF_SAVE_RDX/R8/R9 定義を追加
JIT(内部実装):
RBM_INTERFACELOOKUP_FOR_SLOT_TRASHを拡張し、interface lookup ヘルパー で引数レジスタ以外の全 volatile レジスタを trash として保守的にモデル化(targetamd64.h, targetarm64.h)- redundantbranchopts.cpp: SSA def が global uses を持つ場合に PHI ベース jump threading から即座に bailout(#126976 回帰対策)
その他:
- src/libraries/tests.proj: NativeAOT Windows ARM64 テストプロジェクトを除外
パフォーマンスへの影響
影響なし。本変更は正確性(GC safety)に関わるレジスタ保存の追加であり、パフォーマンス向上を目的としたものではありません。
関連Issue
その他
- 変更は NativeAOT ランタイムの GC 実装および JIT コード生成の内部詳細に限定されており、公開 API に対する互換性影響はありません
- CFI-aware マクロの使用により ARM64/AMD64 Unix プラットフォーム での unwind directive の正確性が向上します
#126840 Add early long path validation to Windows build script
- 作成者: @pavelsavara
- 作成日時: 2026年04月13日 16:51:14(UTC)
- マージ日時: 2026年04月17日 13:16:41(UTC)
- ラベル: area-Infrastructure
概要
Windows上でロングパスサポートが有効になっていない場合、ビルド後半で診断困難なエラーが発生する問題に対して、ビルドスクリプト(eng/build.ps1)の早期段階でロングパスサポートを検証するチェック機能を追加するものです。HKLM:\SYSTEM\CurrentControlSet\Control\FileSystemレジストリキーを確認し、260文字を超えるパスを作成できるか事前検証を行い、ロングパスサポート未有効な場合は早期終了して対応方法を提示します。
変更内容
- eng/build.ps1:
Check-LongPathSupport関数を追加(25行追加)- ビルドスクリプトの早期段階(
-helpおよび-subset helpオプションの処理後)でロングパスサポートをチェック - 260文字を超えるパス名でテンプイルの作成を試行
- チェック結果をスタンプファイル(
artifacts/以下)に記録し、以降の実行では重複チェックをスキップ - ロングパスサポート未対応の場合はビルドを終了し、Windowsの要件ドキュメントへのリンク付きで対応方法を提示
- ビルドスクリプトの早期段階(
パフォーマンスへの影響
影響なし。チェックはスタンプファイルにより初回実行時のみ実行され、以降はスキップされるため実質的なオーバーヘッドはありません。
関連Issue
その他
本チェックは-helpおよび-subset helpオプション処理後に実行されるため、これらのオプション使用時はファイルシステムアクセスなしに実行可能です。
#126830 [browser][event-pipe] EventPipe diagnostic server TypeScript for CoreCLR
- 作成者: @pavelsavara
- 作成日時: 2026年04月13日 10:08:45(UTC)
- マージ日時: 2026年04月17日 10:57:41(UTC)
- ラベル: arch-wasm area-Diagnostics-coreclr os-browser
概要
Mono から EventPipe 診断サーバーの TypeScript 実装を CoreCLR ブラウザランタイムパスにポートします。ネイティブ EventPipe がブラウザ上の JS/TS 診断サーバーを駆動できるよう、JS トランスポート(直接実行)と WebSocket トランスポート(dotnet-dsrouter 経由)の両方をサポートし、クロスモジュール交換を通じてネイティブコードと統合します。現在の段階ではエンドツーエンド動作は未実装です。
変更内容
新規ファイル — 診断サーバー実装(TypeScript)
diagnostic-server.ts: WebSocket/JS トランスポートの管理、ネイティブからの呼び出しエントリーポイント(ds_rt_websocket_*関数)diagnostic-server-js.ts: ブラウザ内 JS クライアント、IPC プロトコル処理、シナリオ自動開始(js://gcdumpなど)diagnostic-server-ws.ts: 外部ツール(dotnet-dsrouter)への WebSocket トランスポートclient-commands.ts: EventPipe/プロセスコマンドの IPC プロトコルシリアライゼーションcommon.ts: メッセージバッファリング、ヒープ読み書き、トレースファイルダウンロードdotnet-gcdump.ts,dotnet-counters.ts,dotnet-cpu-profiler.ts: GC ダンプ、メトリクス、CPU サンプリングの収集コマンドtypes.ts: プロトコルEnum と IPC インターフェース
新規ファイル — ネイティブブリッジ
diagnostic_server_jobs.c/h: ネイティブコードから JS イベントループへの診断サーバーコールバック処理をキューイング
クロスモジュール交換拡張
cross-module/index.ts,types/exchange.ts,types/ems-ambient.ts: 診断サーバー関連の新規エクスポート・型定義types/public-api.ts:collectCpuSamples,collectMetrics,collectGcDump,connectDSRouterを公開 API に追加
Mono 向け機械的リネーム
mono_wasm_ds_exec→SystemJS_ExecuteDiagnosticServerCallbackmono_schedule_ds_job→SystemJS_DiagnosticServerQueueJob(複数ファイルで対応)
パフォーマンスへの影響
影響なし(実装段階で機能は未完成のため、パフォーマンス測定対象外)
関連Issue
なし
その他
- 本 PR は #126324 から JavaScript 部分のみを分割したもの
- 循環依存警告の抑制対象に
diagnostics-jsモジュールを追加 - CMake と Rollup ビルド設定を更新して新規 TypeScript ソースを含める
#126752 Add cDAC no-fallback test leg to runtime-diagnostics pipeline
- 作成者: @max-charlamb
- 作成日時: 2026年04月10日 16:15:48(UTC)
- マージ日時: 2026年04月17日 20:38:30(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(データアクセスレイヤー)の段階的な実装進捗を測定するため、レガシーDAC へのフォールバックを制御する新しいテスト基盤を導入します。LegacyFallbackHelperという粒度の細かい許可リストを実装し、CDAC_NO_FALLBACK=1設定下で特定のメソッドのみフォールバックを許可しながら、その他の未実装API はブロックします。runtime-diagnostics CI パイプラインに統合し、すべてのフォールバック試行(許可・ブロック両方)をメソッド名・ファイル・行番号付きで stderr に記録します。
変更内容
- LegacyFallbackHelper.cs(新規):
CallerMemberName、CallerFilePath、CallerLineNumber属性を使用して呼び出し元を特定し、CanFallback()メソッドでフォールバック可否を判定。通常モードでは常にtrueを返す(AggressiveInlining最適化)、no-fallbackモードではメソッド名をHashSet<string>許可リストで確認 - 許可リスト対象メソッド:
EnumMemoryRegions(ダンプ作成)、GetInterface(IMetaDataImport)、GetMethodDefinitionByToken(IXCLRDataModule)、IsTrackedType(GC ヒープ分析)、TraverseLoaderHeap(ローダーヒープ走査) - 許可リスト対象ファイル:
DacDbiImpl.cs(DBI/ICorDebugインターフェース122メソッド) - 13個のレガシーラッパーファイル: 296個のデリゲーション専用メソッドすべてに
LegacyFallbackHelper.CanFallback()呼び出しを追加(SOSDacImpl 12メソッド、IXCLRDataProcess 38メソッド、ClrDataModule 29メソッド、DacDbiImpl 122メソッドなど) - CI パイプライン:
runtime-diag-job.ymlにnoFallbackパラメータを追加、runtime-diagnostics.yml でcDAC_no_fallbackテストレグを新規追加 - stderr ログ出力:
[cDAC] Allowed fallback: メソッド名 at ファイル:行番号形式で全フォールバック試行を記録
パフォーマンスへの影響
通常モード(CDAC_NO_FALLBACK未設定): 単一のboolチェック(AggressiveInlining属性により最適化)のため、パフォーマンス影響は無視可能。
no-fallbackモード(CDAC_NO_FALLBACK=1): HashSet<string>ルックアップとログ出力が発生するため、テスト環境でのオーバーヘッドあり。本番環境では非対象。
テスト結果:フルSOS テストスイート実行で24テスト合格、2テスト失敗(既存の不安定テスト)、2テストスキップ、ブロックされたフォールバック0件。
関連Issue
dotnet/diagnostics#5806(-noFallbackフラグ実装) #127028(GetInterface対応) [#125895](https://github.com/
#126690 [release/10.0] Fix race condition in cached interface dispatch stubs
- 作成者: @github-actions[bot]
- 作成日時: 2026年04月09日 04:09:14(UTC)
- マージ日時: 2026年04月17日 14:03:00(UTC)
- ラベル: Servicing-approved area-VM-coreclr
概要
キャッシュされたインターフェース送出(cached interface dispatch)における競合状態を修正するバックポート。ディスパッチセルの更新時に、メソッドポインタとそのキャッシュデータの形状がミスマッチし、クラッシュを引き起こす可能性がある問題に対応しています。キャッシュ形状が一致しない場合は再送出されるため、リスクは低いとされています。
変更内容
- AsmOffsets.h, rhbinder.h: アセンブリ定数定義の追加
- 複数アーキテクチャのStubDispatch実装: amd64、arm、arm64、i386、loongarch64、riscv64のアセンブリコードで、ディスパッチセル読み込み時の競合条件対策を実装
- CachedInterfaceDispatchCoreCLR実装: amd64およびarm64での同期ロジックの追加によるレース条件の回避
- asmconstants.h: アセンブリ定数の定義追加(amd64およびarm64)
変更の技術的ポイント:ディスパッチセルのメソッドポインタとキャッシュデータの一貫性を保証するための同期メカニズムをアーキテクチャレベルで実装しています。
パフォーマンスへの影響
影響なし(セキュリティ/安定性修正であり、パフォーマンスに関連する変更ではありません)
関連Issue
その他
- 本修正は2015年の.NET Native for UWP初版リリース時から存在していた根本的なバグの対応です
- 競合状態の性質上、テストは主にコードレビューベースです
- ターゲットブランチはrelease/10.0です
#126689 [release/10.0] Fix ARM64 interface dispatch cache torn read
- 作成者: @github-actions[bot]
- 作成日時: 2026年04月09日 04:09:05(UTC)
- マージ日時: 2026年04月17日 14:02:39(UTC)
- ラベル: Servicing-approved area-VM-coreclr
概要
ARM64プラットフォームにおけるインターフェース ディスパッチ キャッシュの破れた読み取り(torn read)問題を修正します。MethodTableとコードアドレスのペアが原子的に書き込まれても、読み取りが原子的でないため、ARM64では破れた読み取りが発生し、MethodTableはマッチしても0のコードアドレスを読み取ることがあり、nullディスパッチに至る可能性がありました。
修正では、2つのポインタを個別に読み込むのではなく一緒に読み込むようにし、競合状態の場合の追加チェックを実装しています。
変更内容
- src/coreclr/runtime/arm64/StubDispatch.S: ARM64アセンブリコードの修正(+26/-7行)
- src/coreclr/runtime/arm64/StubDispatch.asm: ARM64アセンブリコードの修正(+24/-7行)
インターフェース ディスパッチの読み取りロジックを修正し、MethodTableとコードアドレスの読み取りを原子的に実行するように改善しました。
パフォーマンスへの影響
影響なし。修正ではポインタ読み取りの方式を最適化しており、パフォーマンス低下は最小限です。
関連Issue
#126346(元の修正)
その他
- 本PRはrelease/10.0ブランチへのバックポート版です
- 2017年のARM64がUWPアプリ向けの.NET Nativeに追加されて以来、存在していた既知のバグです
- 回帰ではありません
- 競合状態の性質上テストが困難なため、コードレビューに重点を置いています
- リスクレベルは低く、ディスパッチの正確性を向上させます
#126572 [infra] Fix jq example in update-os-coverage skill
- 作成者: @richlander
- 作成日時: 2026年04月06日 05:58:40(UTC)
- マージ日時: 2026年04月17日 06:10:01(UTC)
- ラベル: area-skills
概要
update-os-coverage スキルのドキュメントにおける jq コマンドの例を修正し、コンテナイメージタグの存在確認がより明確で スクリプト化しやすくなるようにしました。欠落タグの場合に明示的に失敗するよう改善されています。
変更内容
.github/skills/update-os-coverage/SKILL.md: jq コマンド例を修正jq -r ... | .[]からjq -e ... any(...)に変更- リクエストされた前提条件イメージタグが存在しない場合、jq の終了コードで明確に失敗を示すように改善
- タグ欠落時の動作が曖昧でなく、スクリプト化が容易になった
パフォーマンスへの影響
影響なし
関連Issue
#126524(スキップされたレビューフィードバックに対応)
その他
このPRはAI/Copilot生成です。ドキュメント(SKILL.md)の変更のみで、実装コードへの変更はありません。
#126566 [RISC-V] Use fine-grained fence variants for memory barriers
- 作成者: @JamieMagee
- 作成日時: 2026年04月06日 03:21:46(UTC)
- マージ日時: 2026年04月17日 09:47:25(UTC)
- ラベル: area-CodeGen-coreclr community-contribution arch-riscv
概要
RISC-V JIT コード生成における instGen_MemoryBarrier メソッドが、barrierKind パラメータを無視して常に fence rw,rw (最も重い命令) を生成していた問題を修正しました。RISC-V の fence 命令は先行・後続命令の順序制御(読取、書込、またはその両方)をビット単位で制御可能なため、より細粒度の barrier variant を使用してパフォーマンスを改善します。
変更内容
- src/coreclr/jit/instr.h: RISC-V64 の
insBarrierに複数の fence mask を表現する値を追加(full、load-only (acquire)、store-only (release) の variant) - src/coreclr/jit/codegenriscv64.cpp:
instGen_MemoryBarrierを更新し、BarrierKindに基づいて適切な fence variant を選択するよう変更。また、RISC-V64 での制限を述べた古いコメントも削除
変更の詳細
以下のマッピングに従い、barrier の種類に応じて最適な fence 命令を発行:
BARRIER_FULL:fence rw,rw(変更なし)BARRIER_LOAD_ONLY:fence r,rw(acquire semantics)BARRIER_STORE_ONLY:fence rw,w(release semantics)
パフォーマンスへの影響
改善あり。より軽量な barrier variant を発行することで、メモリフェンスのオーバーヘッドを削減。特に GT_MEMORYBARRIER ノードと volatile CpBlk の後続ロードバリア時に効果あり。QEMU での検証済み(fence r,rw = 0x0230000f、fence rw,w = 0x0310000f)。
関連Issue
なし
その他
ARM64 が DMB ISHLD (load-only) と DMB ISH (full) で同様の最適化を行っているのと並行した改善。.NET の volatile semantics 要件に適合するよう load/store variant は acquire/release semantics を使用。
#126486 Add ReadyToRun test project and create CrossModuleInliningInfo section in R2R reflection library
- 作成者: @jtschuster
- 作成日時: 2026年04月02日 19:42:27(UTC)
- マージ日時: 2026年04月17日 00:09:49(UTC)
- ラベル: area-ReadyToRun
概要
ReadyToRun(R2R)出力の詳細な単体テストを可能にするため、新しいILCompiler.ReadyToRun.Testsプロジェクトを追加します。このプロジェクトはRoslyn経由でC#ソースをインメモリコンパイル、out-of-procでcrossgen2を実行し、ILCompiler.Reflection.ReadyToRunライブラリを使用してR2Rイメージのメタデータを検証します。また、R2RリフレクションライブラリにCrossModuleInliningInfoSectionを追加し、インライニング情報の解析とメソッド名解決機能を拡張します。
変更内容
- 新規プロジェクト:
ILCompiler.ReadyToRun.Tests.csproj- Roslyn in-memoryコンパイル→crossgen2実行→R2Rイメージ検証の統合パイプライン - R2R Reflection Library拡張:
CrossModuleInliningInfoSection.cs:CrossModuleInlineInfoセクションの新規パーサーInliningInfoSection2.cs: エントリ列挙とインライナー/インライニー名解決API追加TextDumper.cs: r2rdumpにCrossModuleInlineInfoダンプ機能追加
- テストケース:
CrossModuleInlining/: 基本的なクロスモジュールインライニング、複数ステップコンパイル、ジェネリック対応RuntimeAsync/: 非同期メソッドの[ASYNC]バリアント生成、クロスモジュール継続、デバーチャル化テスト
- ビルドシステム:
Subsets.propsにclr.toolstestsサブセット追加、crossgen2.slnxにテストプロジェクト追加
パフォーマンスへの影響
影響なし(テストプロジェクトの追加であり、ランタイムパフォーマンスに直結する変更なし)
関連Issue
なし
その他
- テストは
xUnitフレームワークを使用 - 一部の非同期テスト(CompositeAsync関連)は現在スキップ状態(実装未完了)
- R2Rテストランナーは
RuntimeHostConfigurationOptionを利用してアーティファクトパスを動的に探索
#126398 arm64: Refactor mov/movprfx for embedded masked operations
- 作成者: @ylpoonlg
- 作成日時: 2026年04月01日 08:46:12(UTC)
- マージ日時: 2026年04月17日 18:53:43(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
ARM64 SVE命令のmov/movprfx処理をコード生成ロジックからemit関数にリファクタリングするもの。埋め込みマスク操作に対して述部付きmovprfx(ゼロイング/マージ)を活用できるようにし、条件付き選択の偽引数情報を新しいmoptオプション(デフォルト: INS_SVE_MOV_OPTS_UNPRED)経由でemitInsSve_Movヘルパーに渡すようにしました。
変更内容
- emitarm64.h: SVE mov/movprfx関連の宣言を追加・修正(+88/-30)
- emitarm64sve.cpp: emit関数内でmov/movprfx処理を実装(+372/-83)
- hwintrinsiccodegenarm64.cpp: コード生成側のmov/movprfx処理をリファクタリング(+52/-59)
- instr.h: 新しいSVE mov操作オプション定義を追加(+9/-0)
パフォーマンスへの影響
影響なし(リファクタリングのみ)
関連Issue
その他
- これは#115508の第2部であり、#123717に続くもの
- リファクタリングは埋め込みマスク操作における述部付きmovprfxの効率的な活用を可能にするため、コード生成時の最適化ロジックをemit層に移行するアプローチを採用
#126371 JIT: Fix disasm of reg to reg SIMD narrowing/widening instructions
- 作成者: @saucecontrol
- 作成日時: 2026年03月31日 19:21:56(UTC)
- マージ日時: 2026年04月17日 15:42:18(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
JITのx86-64アーキテクチャにおける、SIMD命令の逆アセンブル出力を修正するPRです。レジスタ間のSIMD拡張/縮小命令で、ソースとターゲットのレジスタサイズが誤って表示されていた問題を解決します。例えば、vpmovsxbw zmm1, zmm1と表示されていたものを正しくvpmovsxbw zmm1, ymm1と表示するようになります。また、埋め込みラウンディング制御({rd-sae}など)が逆アセンブル出力に含まれていなかった箇所も修正します。
変更内容
- src/coreclr/jit/emitxarch.cpp:
IF_RRW_*形式のレジスタ間命令の逆アセンブル処理をリファクタリング。命令サイズからソース/ターゲットのemitAttrを導出し、SIMD拡張/縮小命令のオペランドサイズを正確に表示するロジックを統一 vcvtps2ph命令など、ソース/ターゲットサイズが異なる命令に対応- 埋め込みラウンディング(例:
{rd-sae})の表示処理を追加
パフォーマンスへの影響
影響なし(逆アセンブル出力の修正のみで、ランタイム動作に変更なし)
関連Issue
その他
jit-diffでの確認済み。意図された逆アセンブル出力の変更以外にテキスト差分なし。変更はJITコンパイラの内部実装(逆アセンブル表示)の範囲内で、公開APIへの影響なし。
#126263 superpmi: Refactor parallelsuperpmi.cpp to eliminate scattered #ifdef blocks and remove PAL usage
- 作成者: @Copilot
- 作成日時: 2026年03月28日 18:29:50(UTC)
- マージ日時: 2026年04月17日 01:29:33(UTC)
- ラベル: area-CodeGen-coreclr
概要
parallelsuperpmi.cppのプラットフォーム固有コードをリファクタリングし、分散していた#ifdef TARGET_UNIXガードを削除してコード可読性を向上させました。POSIX経路でのCtrl+C信号処理を実装し、Win32/PAL APIの使用を排除し、代わりにPOSIX標準API(fork/execv、waitpid、open/close)を使用するように整理しました。
変更内容
プロセス生成の分離
StartProcessをWin32版(CreateProcess使用)とPOSIX版(fork/execv使用)の独立した実装に分割- POSIX向けに
ParseCommandLineToArgvヘルパー関数を追加し、スペースを含むパスに対応 SpmiProcessHandle型定義を追加(POSIX:pid_t、Windows:HANDLE)CreateProcess成功後にpi.hThreadをクローズして、スレッドハンドルリークを防止
POSIX Ctrl+C処理の実装
PosixCtrlHandlerシグナルハンドラを追加し、以前のTODO-Portingを解決closeRequestedをvolatile boolからvolatile sig_atomic_tに変更(async-signal-safe型)#include <signal.h>をプラットフォーム依存ガード外に移動
プラットフォーム固有ロジックの整理
doParallelSuperPMI内の分散した#ifdefガードを、名前付きヘルパー関数に抽出(RegisterCtrlHandler、GetTempFolderPath、GetDefaultWorkerCount等)- すべてのヘルパー実装を単一の
#ifdef TARGET_UNIXブロックに統合(POSIX実装、その後Windows実装) doParallelSuperPMI自身は前処理ガードを含まなくなった
PAL/Win32 API削除
- POSIX版
WaitForWorkerProcessesでWaitForMultipleObjectsをwaitpidループに置き換え、EINTR時の再試行に対応 - POSIX版ワーカー出力ファイルで
CreateFileA/CloseHandleをopen/close(O_CLOEXECフラグ付き)に置き換え - ファイルオープン失敗時のリソースリーク修正
- Windows版
WaitForWorkerProcessesでWAIT_FAILEDの確認とエラーログを追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このリファクタリングは内部実装の整理であり、公開APIへの変更はありません。POSIX環境でのワーカープロセス管理がPAL依存から解放され、よりネイティブなUNIX APIの使用に統一されました。
#126142 Remove nullability annotation from MetadataLoadContext.CoreAssembly.
- 作成者: @teo-tsirpanis
- 作成日時: 2026年03月26日 02:54:00(UTC)
- マージ日時: 2026年04月17日 04:21:06(UTC)
- ラベル: area-System.Reflection community-contribution
概要
MetadataLoadContext.CoreAssemblyプロパティのnullability注釈を削除し、非null確定型に変更します。コア アセンブリの解決をMetadataLoadContext構築時の前処理として実行し、解決失敗時は例外をスローするように変更することで、このプロパティが常に非nullであることを保証します。
変更内容
- MetadataLoadContext.Apis.cs: コンストラクタでコア アセンブリを前処理で読み込み、
CoreAssemblyプロパティをLazy初期化から非nullに変更 - MetadataLoadContext.CoreAssembly.cs:
TryGetCoreAssemblyメソッドをLoadCoreAssemblyに置き換え、_coreAssemblyを非nullのreadonlyフィールドに変更 - CoreTypes.cs:
CoreTypesコンストラクタをリファクタリング、既に解決されたRoAssemblyを直接受け取るように変更 - ref/System.Reflection.MetadataLoadContext.cs: 公開API(リファレンス アセンブリ)の
CoreAssembly型をnullableから非nullに更新
パフォーマンスへの影響
影響なし
関連Issue
その他
破壊的変更: CoreAssemblyプロパティがnullableからnon-nullableに変更されたため、コンパイル時に互換性に影響する可能性があります。
未解決の注釈: Copilotのレビューコメントで指摘されているとおり、XMLドキュメントコメント(CoreAssemblyプロパティ説明およびGetCoreType/TryGetCoreTypeメソッド説明)がLazy初期化やnull可能性に関する古い記述のままであり、更新が必要な点が残されています。
#126078 Add Process.StartAndForget APIs for fire-and-forget process launching
- 作成者: @Copilot
- 作成日時: 2026年03月25日 08:04:36(UTC)
- マージ日時: 2026年04月17日 00:48:31(UTC)
- ラベル: area-System.Diagnostics.Process
概要
ProcessクラスにStartAndForget静的メソッドの2つのオーバーロードを追加します。プロセスを起動してPIDを取得し、終了を待たずに即座にすべてのリソースを解放する"fire-and-forget"シナリオに対応します。UseShellExecuteが有効な場合と標準ストリームのリダイレクトが指定された場合はInvalidOperationExceptionをスローします。
// 新しいAPI(リソースリークなし、自動クリーンアップ)
int pid = Process.StartAndForget("myapp", args);
変更内容
- Process.Scenarios.cs(新規):
Process.StartAndForget(ProcessStartInfo)とProcess.StartAndForget(string, IList<string>?)の実装。UseShellExecuteや標準ストリームリダイレクトの使用を禁止するバリデーション。 - SafeProcessHandle.cs:
SerializationGuardチェックをStartCoreに移動(Windows/Unix)。 - Strings.resx:リダイレクト不サポート時のエラーメッセージリソース
CantSetRedirectForSafeProcessHandleStartを追加。 - 参照アセンブリ:両方のシグネチャを追加。
- テスト(StartAndForget.cs):成功時のテスト、
ArgumentNullException検証、各リダイレクトフラグとUseShellExecuteに対するInvalidOperationException検証。
パフォーマンスへの影響
影響なし
関連Issue
その他
- 公開API:両方の
StartAndForgetメソッドはパブリックAPI。 - 破壊的変更:なし。
- プラットフォーム対応:
SafeProcessHandle.Startの直接使用により、Windowsと Unix双方で動作。 - Copilotレビュー指摘:
SerializationGuardがProcess.StartとStartCoreで二重評価される可能性。
#124478 RetryAfter metadata in FixedWindowRateLimiter returns time to next window
- 作成者: @asbjornvad
- 作成日時: 2026年02月16日 20:26:20(UTC)
- マージ日時: 2026年04月17日 15:59:13(UTC)
- ラベル: area-System.Threading community-contribution
概要
FixedWindowRateLimiterのRetryAfterメタデータが、ウィンドウ全体の期間ではなく次のウィンドウまでの残り時間を正しく返すように修正しました。Issue #92557の対応となります。
ただし、この実装ではキューは考慮されていません。
変更内容
- FixedWindowRateLimiter.cs:
CreateFailedWindowLeaseメソッドを修正し、ウィンドウの残り時間を計算するようにロジックを変更。テスト用にgetElapsedTime関数フィールドを追加してインジェクション可能に。 - FixedWindowRateLimiterTests.cs: テストヘルパーメソッド
SetElapsedTimeを追加してテスト時に経過時間を制御できるように。テスト期待値を新しい動作に合わせて更新。
パフォーマンスへの影響
影響なし
関連Issue
その他
- 変更は
System.Threading.RateLimitingライブラリの公開API動作に影響します(RetryAfterの戻り値が変更) - 実装では現在のところキューに関連した処理は考慮されていないため、将来の改善が必要な可能性があります
#123609 [release/9.0-staging] Update dependencies from dotnet/roslyn-analyzers
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年01月26日 02:01:52(UTC)
- マージ日時: 2026年04月17日 17:41:26(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/roslyn-analyzersの依存関係を更新するPull Requestです。Microsoft.CodeAnalysis.AnalyzersとMicrosoft.CodeAnalysis.NetAnalyzersのプレビュー/ベータバージョンをそれぞれ更新しています。
変更内容
- eng/Version.Details.xml: Microsoft.CodeAnalysis.Analyzersを3.11.0-beta1.26057.1から3.11.0-beta1.26075.3へ、Microsoft.CodeAnalysis.NetAnalyzersを9.0.0-preview.26057.1から9.0.0-preview.26075.3へ更新(各2行変更)
- eng/Versions.props: 同様に依存関係バージョン情報を更新(各2行変更)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- このPRは自動化されたマエストロ(dotnet-maestro[bot])によるルーチン更新です
- release/9.0-stagingブランチへの依存関係アップデートの一環です
- roslyn-analyzersのrelease/9.0.1xxブランチの最新ビルド(2026年1月25日)に対応しています
#115996 Support certificate validation TLS alerts for Linux
- 作成者: @rzikm
- 作成日時: 2025年05月26日 13:37:46(UTC)
- マージ日時: 2026年04月17日 08:34:43(UTC)
- ラベル: area-System.Net.Security
概要
Linux上のOpenSSL SslStreamにおいて、証明書検証をハンドシェイク後からハンドシェイク中に移行し、検証失敗時に適切なTLSアラート(bad_certificate、unknown_ca、certificate_expired、certificate_requiredなど)を送信するように変更しました。これにより、Windows実装と動作が統一されます。
変更内容
ネイティブレイヤー(OpenSSL統合):
SSL_CTX_set_cert_verify_cb経由で証明書検証コールバックをハンドシェイク中に実行するための新しいPAL関数を追加(SslGetSslCtx、SslCtxSetCertVerifyCallback)- 検証失敗時にOpenSSLの
X509_V_ERR_*コードにマッピングするコールバックトランポリンを実装 - TLS 1.2でのpending cipher フォールバック機構を追加(ハンドシェイク中の接続情報取得対応)
マネージドレイヤー(SslStream実装):
- 既存の
VerifyRemoteCertificateロジック(ユーザーのRemoteCertificateValidationCallback含)をコールバック内から呼び出すように refactor - ハンドシェイク中にコールバック実行時に必要な接続情報(
SslProtocol、CipherAlgorithm)をあらかじめ設定 - コールバック内で発生した例外を
SafeSslHandleに保存し、ハンドシェイク完了後に再スロー CertValidationInCallbackフラグを各プラットフォーム(Windows=false、Unix/OpenSSL=true、OSX/Android=false)に追加
エッジケース対応:
- クライアント証明書なし(
ClientCertificateRequired=true): コールバックが起動されないため、SSL_VERIFY_FAIL_IF_NO_PEER_CERTフラグまたは後処理で対応 - セッション再開時: OpenSSLはコールバックをスキップするため、後処理で検証を実施
パフォーマンスへの影響
影響なし。ハンドシェイクのタイミングが変わるだけで、全体の処理フローは同等です。
関連Issue
その他
- ユーザーコールバック登録時にクライアント証明書なしの場合、TLSアラートが送信されない制限あり(既存動作互換性維持)
- セッション再開時の検証失敗でもTLSアラートは送信されない(実践的には頻繁でない想定)
- テスト追加:
SslStreamAlertsTest.csに複数の検証失敗シナリオをカバーするテストを実装