注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #126215 [Wasm RyuJit] Track stackifier temps by actual jit type
- #126208 [cDAC] fix ARM32 thumb bit bug in ExecutionManager
- #126191 Require RemoteExecutorSupported on color env test
- #126189 NRBF test fix: we need optimized library
- #126155 Update llvm-libunwind to 22.1.1
- #126132 Cache AsyncResumptionStub instances to avoid duplicate resumption stubs in the node factory
- #126128 Update github/gh-aw-actions requirement to f00748eed7ad5332d58709e92e1946cd1c8d3f8f
- #126116 Remove dead LastReportedFuncletInfo struct
- #126111 [Wasm RyuJit] bounds checks for GT_INDEX_ADDR
- #126103 [browser][coreCLR] host cleanup
- #126099 Implement System.Diagnostics.Process tests for Android
- #126095 Fix OverflowException in COSE decoder for oversized integer header labels
- #126074 Move IDispatch helpers into IDispatchHelpers.cs
- #126015 Log cgroup memory.events on exit code 137 as dmesg fallback
- #126006 Fix CanReadArrayOfAnySize timeout on checked coreclr by skipping the 2 GB case on non-release runtimes
- #125956 CngProperty constructor with ReadOnlySpan<byte> overload
- #125950 Revert "Disable iOS and tvOS jobs until infra issue is fixed"
- #125908 Fix intermittent NRE in ETW listener tests by using GUID overload of EnableProvider
- #125834 Stabilize ML-DSA X.509 PKIs with published RFC 9881.
- #125799 Rewrite BigInteger internals to use native-width (nuint) limbs
- #125676 Fix flaky UserPreferenceTests.SignalsUserPreferenceEventsAsynchronously under JIT stress
- #125610 Add System.Text.Json support for F# discriminated unions
- #125468 [RyuJIT Wasm] WasmObjectWriter Webcil Envelope Support
- #125083 [browser][coreCLR] no COM, no swift
- #124492 Support the FORCE_COLOR emerging standard in ConsoleUtils.EmitAnsiColorCodes
- #124139 Add support for floating-point hex formatting and parsing
- #124081 Sve: Expand CreateWhile APIs
#126215 [Wasm RyuJit] Track stackifier temps by actual jit type
- 作成者: @AndyAyersMS
- 作成日時: 2026年03月27日 18:13:50(UTC)
- マージ日時: 2026年03月27日 23:20:25(UTC)
- ラベル: area-CodeGen-coreclr
概要
WebAssembly JIT Stackifierの一時ローカル変数再利用機構を、粗いWasmValueTypeではなく実際のJIT型(genActualType経由)でトラッキングするよう改善。これにより、GC追跡型(TYP_REF/TYP_BYREF)と非GC型を区別して一時変数を再利用できるようになります。
変更内容
src/coreclr/jit/lowerwasm.cpp: Stackifier temp プールのインデックス機構を変更- temp池を
WasmValueType::CountバケットからTYP_COUNTバケットに変更 - 一時変数の再利用/解放リストを
ActualTypeToWasmValueType(...)からgenActualType(...)でインデックスするよう変更
- temp池を
パフォーマンスへの影響
影響なし(一時変数の再利用効率が改善される可能性がありますが、具体的なベンチマーク結果は提供されていません)
関連Issue
その他
このPRはWasmプラットフォーム向けのJITコンパイラの内部実装変更です。公開APIへの影響はありません。
#126208 [cDAC] fix ARM32 thumb bit bug in ExecutionManager
- 作成者: @rcj1
- 作成日時: 2026年03月27日 16:14:41(UTC)
- マージ日時: 2026年03月27日 16:35:17(UTC)
- ラベル: area-Diagnostics-coreclr
概要
ARM32環境におけるThumbビット処理のバグを修正しました。cDACのExecutionManagerにおいて、メソッドRVA計算前にコードポインタを実アドレスに正規化することで、EH(例外処理)句のルックアップを正しく動作させます。
変更内容
- ExecutionManagerCore.ReadyToRunJitManager.cs:
GetStartAddress(cbh)の戻り値をTargetCodePointerからCodePointerUtils.AddressFromCodePointerを使用して正規化されたTargetPointerに変更し、ARM32 Thumbビットをストリップ
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
ARM32アーキテクチャで、Thumbビット(コード実行モード指示用の最下位ビット)が含まれたままのポインタを使用することで、メソッドRVA計算が不正になっていた問題を修正しています。cDAC(Contracts for Debugger and Diagnostics)という診断・デバッグ機能に関する内部実装の修正です。
#126191 Require RemoteExecutorSupported on color env test
- 作成者: @am11
- 作成日時: 2026年03月27日 09:38:52(UTC)
- マージ日時: 2026年03月27日 16:10:52(UTC)
- ラベル: area-Extensions-Logging community-contribution
概要
NativeAOT環境でRemoteExecutorがサポートされていないため、色環境変数に関連するテストが失敗していた問題を修正しました。DoesConsoleSupportAnsi_RespectsColorEnvVarsテストにRemoteExecutorSupported属性を追加し、RemoteExecutorが利用可能なプラットフォームでのみテストが実行されるようにしました。
変更内容
- ConsoleLoggerTest.cs:
DoesConsoleSupportAnsi_RespectsColorEnvVarsテストメソッドに[ConditionalFact(nameof(RemoteExecutorSupported))]属性を追加(既存の属性から変更)
パフォーマンスへの影響
影響なし
関連Issue
その他
- NativeAOT環境ではRemoteExecutorが利用できないため、該当テストはスキップされるようになります
- テスト属性の変更のみで、ランタイムやコンパイラの動作に影響を与えるコード変更はありません
#126189 NRBF test fix: we need optimized library
- 作成者: @adamsitnik
- 作成日時: 2026年03月27日 08:27:03(UTC)
- マージ日時: 2026年03月27日 12:49:36(UTC)
- ラベル: test-enhancement area-System.Formats.Nrbf
概要
System.Formats.Nrbf.Tests.EdgeCaseTests.CanReadArrayOfAnySizeテストの不安定性を改善するため、前回の修正(#126006)を補完するPRです。Array.MaxLength(~2GB)テストケースがRELEASEビルドされたライブラリでのみ実行されるようにすることで、タイムアウトおよびflakiness問題を根本的に解決します。
変更内容
- src/libraries/System.Formats.Nrbf/tests/EdgeCaseTests.cs:
Array.MaxLengthテストケースを#if RELEASE条件付きコンパイルディレクティブでラップ- Release以外のビルドではテストケースを除外し、テスト実行時間を削減
パフォーマンスへの影響
影響なし(テストの安定性向上に寄与。大規模メモリ割り当てを伴うテストケースをDebugビルドで除外することで、不要なテスト実行時間を削減)
関連Issue
その他
本修正は、RELEASE ランタイムに加えて、RELEASE ライブラリビルドも必須とすることで、テストの信頼性を向上させます。テストインフラ関連の変更であり、公開APIへの影響なし。
#126155 Update llvm-libunwind to 22.1.1
- 作成者: @am11
- 作成日時: 2026年03月26日 16:27:33(UTC)
- マージ日時: 2026年03月27日 16:45:26(UTC)
- ラベル: community-contribution area-NativeAOT-coreclr
概要
LLVM libunwind を 22.1.1 にアップデートします。このPRは3つのコミットで構成され、最初のコミットで libunwind ソースを更新、2番目で過去のパッチを cherry-pick、3番目でバージョンファイルを更新します。squash せずにマージすることが重要です(コミット参照を保持するため)。
変更内容
- libunwind ライブラリ本体:
src/native/external/llvm-libunwind/配下の多数のファイルを 22.1.1 にアップデート- コア実装:
UnwindCursor.hpp、Registers.hpp、DwarfParser.hppなど大規模な変更 - アセンブリ:
UnwindRegistersSave.S、UnwindRegistersRestore.Sに ARM/WASM 対応強化 - 新機能: AArch64 NEON 向けアンワインド
aarch64_vg_unwind.pass.cppを追加
- コア実装:
- ビルド設定: CMakeLists.txt の更新(テストビルドオプション拡張など)
- パッチ適用: 過去の dotnet-specific パッチを新バージョンに対して再適用
- バージョン管理:
src/native/external/llvm-libunwind-version.txtを 22.1.0 → 22.1.1 に更新 - .NET ネイティブ AOT:
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppに関連修正
パフォーマンスへの影響
影響なし(スタックアンワインドの安定性・互換性向上が主目的)
関連Issue
なし
その他
- 重要: このPRは squash マージ禁止。個別コミットの参照完全性が必須
- プラットフォーム対応: Windows SEH、WebAssembly、ARM EABI、AIX など複数プラットフォームの対応が拡充
- API拡張:
libunwind.hで新規マクロ・関数シグネチャが追加(117行追加)
#126132 Cache AsyncResumptionStub instances to avoid duplicate resumption stubs in the node factory
- 作成者: @jtschuster
- 作成日時: 2026年03月25日 23:03:30(UTC)
- マージ日時: 2026年03月27日 22:08:45(UTC)
- ラベル: area-crossgen2-coreclr
概要
NativeAOT/ReadyToRun コンパイル時に、メソッドの再コンパイル(クロスモジュールインライニングなど)によって同一ターゲットメソッドに対する重複した AsyncResumptionStub インスタンスが作成される問題を修正します。これにより依存グラフのソート時に TypeSystemComparer.Compare() の Debug.Assert が発火していました。CompilerTypeSystemContext に AsyncResumptionStubHashtable を追加し、(targetMethod, owningType) をキーとしてスタブをインターン化することで、重複作成を防止します。
変更内容
- CompilerTypeSystemContext.Async.cs(新規):
LockFreeReaderHashtableベースのAsyncResumptionStubHashtableを追加し、GetAsyncResumptionStub()メソッドでAsyncResumptionStubインスタンスをインターン化 - CorInfoImpl.RyuJit.cs:
new AsyncResumptionStub(...)からGetAsyncResumptionStub()への切り替え - CorInfoImpl.ReadyToRun.cs: ReadyToRun の非同期再開スタブ作成をキャッシュ/インターン版に切り替え、fixup 動作を保持
- ILImporter.Scanner.cs: IL スキャナーが新規に割り当てられたスタブではなく、インターン化されたスタブのエントリポイントに依存するよう更新
- CorInfoImpl.cs: 不要な実装を削除
パフォーマンスへの影響
影響なし(重複するスタブの生成を削減するため、メモリ効率は改善されますがランタイムパフォーマンスへの直接的な影響はありません)
関連Issue
その他
この修正は非同期メソッドのインライニング機能が有効で、crossgen に --opt-cross-module * が指定される場合にのみ顕在化する問題への対応です。内部実装(CompilerTypeSystemContext)の変更で、公開 API への影響はありません。
#126128 Update github/gh-aw-actions requirement to f00748eed7ad5332d58709e92e1946cd1c8d3f8f
- 作成者: @dependabot[bot]
- 作成日時: 2026年03月25日 21:24:10(UTC)
- マージ日時: 2026年03月27日 18:34:45(UTC)
- ラベル: area-Infrastructure
概要
github/gh-aw-actionsの依存関係をバージョン f00748eed7ad5332d58709e92e1946cd1c8d3f8f に更新する変更です。これはDependabotによる自動更新で、依存パッケージの最新バージョンに対応させるものです。
変更内容
.github/workflows/code-review.lock.yml: github/gh-aw-actions の参照をf00748eed7ad5332d58709e92e1946cd1c8d3f8fに更新.github/workflows/copilot-echo.lock.yml: github/gh-aw-actions の参照をf00748eed7ad5332d58709e92e1946cd1c8d3f8fに更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはDependabotによる自動更新です。詳細な変更内容はgithub/gh-aw-actionsリポジトリのCHANGELOGを参照してください。
#126116 Remove dead LastReportedFuncletInfo struct
- 作成者: @Copilot
- 作成日時: 2026年03月25日 19:16:59(UTC)
- マージ日時: 2026年03月27日 22:15:54(UTC)
- ラベル: area-VM-coreclr
概要
PR #119863でCoreCLR例外処理(EH)の第2パス処理がネイティブコードに移行された際に、不要となったLastReportedFuncletInfo構体の定義が残されていたため、これを削除するクリーンアップです。削除対象の構体はコード内に全く参照されていない完全な孤立した定義です。
変更内容
src/coreclr/vm/exinfo.hから未使用のLastReportedFuncletInfo構体を削除(-7行)
パフォーマンスへの影響
影響なし
関連Issue
その他
- 機能的な動作変更なし(削除された構体はコード内で参照されていない)
- デッドコード除去によるコード品質改善
#126111 [Wasm RyuJit] bounds checks for GT_INDEX_ADDR
- 作成者: @AndyAyersMS
- 作成日時: 2026年03月25日 17:50:33(UTC)
- マージ日時: 2026年03月27日 21:35:09(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssembly (Wasm RyuJit) コンパイラで GT_INDEX_ADDR ノードから直接bounds checksを発行できるようにする機能追加です。特にminoptsでは GT_INDEX_ADDR が明示的な GT_BOUNDS_CHECK ツリーに展開されないため、この対応により配列要素アクセス時の境界チェック生成が改善されます。
変更内容
- src/coreclr/jit/lowerwasm.cpp:
LowerIndexAddrを新規実装し、bounds checkが必要な場合に配列(Arr)とインデックス(Index)を multiply-used としてマークします。 - src/coreclr/jit/lower.h/lower.cpp: Wasm対象で
GT_INDEX_ADDRを wasm lowering エントリポイントにルーティングします。 - src/coreclr/jit/regallocwasm.h/regallocwasm.cpp:
CollectReferencesForIndexAddrフックを実装し、bounds checkされたGT_INDEX_ADDRオペランド用の一時レジスタを確保・消費します。 - src/coreclr/jit/codegenwasm.cpp:
GT_INDEX_ADDRのWasm コード生成時に配列長ロード → 比較 →SCK_RNGCHK_FAILへの分岐を含む境界チェックシーケンスを生成します。
パフォーマンスへの影響
影響なし(機能追加であり、パフォーマンス測定値は提供されていません)
関連Issue
なし
その他
JIT(Just-In-Time)コンパイラのWasm対応部分が主な変更対象です。Copilotが6ファイル中6ファイルをレビューしており、レビュワーはSingleAccretionとkgが参加しています。
#126103 [browser][coreCLR] host cleanup
- 作成者: @pavelsavara
- 作成日時: 2026年03月25日 16:25:34(UTC)
- マージ日時: 2026年03月27日 15:19:48(UTC)
- ラベル: arch-wasm area-System.Runtime.InteropServices.JavaScript os-browser
概要
Browser/CoreCLR JS ホストサーフェスをクリーンアップするPRです。文字列/UTF-8ヘルパー関数をBrowserUtilsExportsに統合し、相互運用呼び出しサイトを更新しています。主な変更点は、utf8ToStringRelaxedとviewOrCopyをクロスモジュール交換に移行、ReceiverShouldFreeの処理を追加、WASM初期化失敗時のエラーハンドリングを改善、SharedArrayBuffer使用時のバッファコピーに対応しています。
変更内容
- JSMarshalerArgument.cs:
JSMarshalerArgumentのフィールドを非MT環境にも可視化 - 文字列ユーティリティの統合:
utf8ToStringRelaxedをローカル実装からdotnetBrowserUtilsExportsに移行viewOrCopyとutf8ToStringRelaxedをBrowserUtilsエクスポートテーブルに追加- 重複する型定義を削除し、共有型を再エクスポート
- WebSocket処理: BrowserUtilsExportsを使用したUTF-8デコードと送信時のSAB安全コピー機能を実装
- エラーハンドリング: WASM初期化失敗時に
exit(1, err)を呼び出すように改善 - クリーンアップ: 古いWASM-TODOコメントを削除・更新、パフォーマンス測定enum最適化、プレフィックスを
mono.*からclr.*に変更 - ReceiverShouldFree処理:
resolveOrRejectPromiseでReceiverShouldFreeを処理し、ポストされた引数バッファを解放
パフォーマンスへの影響
- SharedArrayBuffer(SAB)使用時のバッファコピー処理により、SAB環境での安全性が向上(オーバーヘッドの詳細記載なし)
- パフォーマンス測定enumの最適化により、若干のメモリ削減
関連Issue
その他
- 変更の多くはブラウザ上でのWASM実行環境(System.Runtime.InteropServices.JavaScript)に関連する内部実装
- 公開APIへの破壊的変更なし
- クロスモジュール間でのUTF-8デコード機能の統一化により、コード重複を削減
#126099 Implement System.Diagnostics.Process tests for Android
- 作成者: @Copilot
- 作成日時: 2026年03月25日 16:00:28(UTC)
- マージ日時: 2026年03月27日 12:16:53(UTC)
- ラベル: area-System.Diagnostics.Process test-enhancement os-android
概要
System.Diagnostics.ProcessのAndroidプラットフォーム向けテストスイートを実装しました。モバイルプラットフォームではRemoteExecutorがサポートされていないため、これまでテストカバレッジがゼロでした。本PRではlsとsleepコマンドを使用したAndroid固有の5つのテストを追加し、基本的なプロセス操作(起動、標準出力リダイレクト、プロセス終了、終了コード、ハンドルベースのIO)をカバーしています。
変更内容
- System.Diagnostics.Process.Tests.csproj:
androidをターゲットフレームワークに追加。Unix用コンパイル条件を拡張してAndroidを含める(ProcessTests.Unix.csのヘルパー関数を利用するため)。Android固有のテストファイルProcessTests.Android.csをコンパイル対象に追加。 - ProcessTests.Android.cs (新規):
[PlatformSpecific(TestPlatforms.Android)]で保護された5つのAndroid専用テスト:Process_Start_InheritedIO_ExitsSuccessfully: 親プロセスのハンドルを継承してls実行Process_Start_RedirectedStandardOutput_ReadsOutput: 標準出力リダイレクト検証Process_Kill_TerminatesRunningProcess: 実行中のプロセス(sleep 600)の終了処理検証Process_Start_ExitCode_ReflectsCommandFailure: 失敗したコマンドの終了コード検証Process_ProcessName_IsSetForStartedProcess: プロセス名の設定検証Process_Start_WithStandardHandles_CanRedirectIO:StandardInputHandle、StandardOutputHandle(匿名パイプ)、StandardErrorHandle(一時ファイル)を使用したIO検証
- ProcessHandlesTests.cs (既存): クラス全体に
[SkipOnPlatform(TestPlatforms.Android, "sh is not available on Android")]を追加し、AndroidではShellスクリプト実行が不可能なためスキップ。
パフォーマンスへの影響
影響なし
関連Issue
その他
テスト対象パスはPath.GetTempPath()を使用し、SELinuxでのuntrusted_appのルートファイルシステムアクセス拒否を回避しています。Copilotレビューでは、Unix専用テストがAndroidビルドに含まれることによる潜在的な失敗の懸念が指摘されています。
#126095 Fix OverflowException in COSE decoder for oversized integer header labels
- 作成者: @Copilot
- 作成日時: 2026年03月25日 15:45:20(UTC)
- マージ日時: 2026年03月27日 20:34:54(UTC)
- ラベル: area-System.Security
概要
CoseMessage.DecodeSign1がCBORヘッダーラベルまたは重要なヘッダー値にInt32をオーバーフローするような大きな整数が含まれている場合、CryptographicExceptionの代わりに生のOverflowExceptionをスローしていた問題を修正します。新しい拡張メソッドReadInt32ForCryptoを導入し、OverflowExceptionを適切にCryptographicExceptionでラップします。
// Before: OverflowException escapes to caller
CoseMessage.DecodeSign1(malformedData); // throws OverflowException
// After: properly wrapped
CoseMessage.DecodeSign1(malformedData); // throws CryptographicException (inner: OverflowException)
変更内容
- CborReaderExtensions.cs (新規追加) —
ReadInt32ForCrypto()拡張メソッドを実装。CborReaderのReadInt32()をラップし、OverflowExceptionをキャッチしてCryptographicExceptionとして再スロー(InnerExceptionを保持) - CoseMessage.cs —
DecodeBucket()とMissingCriticalHeaders()メソッドでヘッダーラベルおよび重要なヘッダー配列要素の読み込み時にReadInt32ForCrypto()を使用 - CoseHeaderMap.cs —
ValidateInsertion()メソッドで重要なヘッダー整数の読み込み時にReadInt32ForCrypto()を使用し、他のCBOR整数デコードパスとの一貫性を確保 - CoseMessageTests.DecodeSign1.cs — 両方のオーバーフロー経路をカバーするリグレッションテスト追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- 本変更は例外処理の正規化であり、公開API
CoseMessage.DecodeSign1の動作を変更(より適切な例外タイプを返す) - 互換性への影響:既存コードが
OverflowExceptionをキャッチしていた場合、CryptographicExceptionでのキャッチに変更する必要がある
#126074 Move IDispatch helpers into IDispatchHelpers.cs
- 作成者: @Copilot
- 作成日時: 2026年03月25日 04:57:05(UTC)
- マージ日時: 2026年03月27日 17:23:38(UTC)
- ラベル: area-VM-coreclr
概要
CoreCLR COM相互運用性(IDispatch)のサポートをリファクタリングし、IDispatch関連のマネージドヘルパーメソッドをStubHelpersから専用のSystem.Runtime.InteropServices.IDispatchHelpersクラスに移動します。これに伴い、MethodDescCallSiteをUnmanagedCallersOnly(UCO)に変換し、VM呼び出しサイトを更新して新しいエントリポイントを使用するようにします。
変更内容
- IDispatchHelpers.cs(新規作成):
System.Runtime.InteropServices名前空間に新しいinternal static class IDispatchHelpersを追加し、IDispatch関連の全ヘルパーメソッドをUCOメソッドとして実装 - StubHelpers.cs: IDispatch関連のヘルパーメソッド(約26行)を削除
- corelib.h:
IDISPATCHHELPERSクラスエントリを新規定義し、STUBHELPERSからIDISPATCHHELPERSへ全IDispatchメソッド登録を移行 - dispatchinfo.cpp:
MethodDescCallSiteからUnmanagedCallersOnlyCallerへの変換を実施。GetDispatchMethodDesc/GetDispatchFieldDescコールバックを直接的なネイティブキャストに置き換え、複数のGCPROTECTペアをマージしてコード削減 - stdinterfaces.cpp: DispatchEx呼び出しを
METHOD__IDISPATCHHELPERS__*参照に更新 - metasig.h: 新しいUCOヘルパーシグネチャ用のメタシグを追加し、不要な5つのメタシグエントリを削除
- System.Private.CoreLib.csproj:
IDispatchHelpers.csをFeatureCominterop条件下に追加
パフォーマンスへの影響
dispatchinfo.cpp内のコード削減(約285行削除)により、バイナリサイズが小さくなります。GCPROTECTペアの統合により若干の処理効率化が期待されます。具体的なベンチマーク結果は提供されていません。影響は軽微と考えられます。
関連Issue
その他
- cherry-pickされたコミット
ae7563aの著者情報(Adeel Mujahid / am11)が保持されています FeatureCominterop条件によるコンパイル制御はプロジェクトファイルで処理されており、ファイル内に#if FEATURE_COMINTEROPは含まれていません- COM相互運用性機能に関するWindows専用属性(
[SupportedOSPlatform("windows")])は削除されています - 本PRはGitHub Copilotの支援により作成されています
#126015 Log cgroup memory.events on exit code 137 as dmesg fallback
- 作成者: @danmoseley
- 作成日時: 2026年03月24日 04:50:22(UTC)
- マージ日時: 2026年03月27日 04:41:00(UTC)
- ラベル: area-Infrastructure
概要
Helix Linux コンテナでテストプロセスが終了コード137(SIGKILL/OOM)で終了する際、dmesgがCAP_SYSLOG権限不足で失敗するため、特別な権限を必要としない/sys/fs/cgroup/memory.events(cgroup v2)から OOM 情報を取得するフォールバックを追加します。プロセス固有の cgroup パスは /proc/self/cgroup から導出され、ルート cgroup へのフォールバックも試行します。
変更内容
- eng/testing/RunnerTemplate.sh: 終了コード137時に、cgroup v2の
memory.eventsファイルを読み込んで出力するロジックを追加(19行追加)/sys/fs/cgroup/<cgroup-path>/memory.events(プロセス固有)と/sys/fs/cgroup/memory.events(ルート)の2つのパスを試行- OOM Killer発動の有無を
oom_killカウンタで確認
パフォーマンスへの影響
影響なし
関連Issue
その他
- macOS、cgroup v1、または
/proc/self/cgroupを持たないシステムでは無操作となります - 既存の
dmesg | tail -50動作は保持され、cgroup情報は追加の診断コンテキストとして機能します - より充実したOOM診断のための
CAP_SYSLOG有効化は別途の課題(dotnet/dnceng#6481)で追跡されています
#126006 Fix CanReadArrayOfAnySize timeout on checked coreclr by skipping the 2 GB case on non-release runtimes
- 作成者: @Copilot
- 作成日時: 2026年03月24日 02:12:51(UTC)
- マージ日時: 2026年03月27日 04:36:14(UTC)
- ラベル: test-enhancement area-System.Formats.Nrbf
概要
System.Formats.Nrbf.Tests.EdgeCaseTests.CanReadArrayOfAnySizeテストがChecked CoreCLRで14分以上タイムアウトする問題を修正しました。2GB配列テストケースを対象に、Checked/Debug RuntimeおよびNon-64bitプロセスでのみスキップするランタイムチェックを追加しています。小規模なテストケース(100、64,001、127,000要素)は全プラットフォームで実行継続されます。
[ConditionalTheory]
[InlineData(100)]
[InlineData(64_001)]
[InlineData(127_000)]
[InlineData(2147483591)] // Array.MaxLength
public void CanReadArrayOfAnySize(int length)
{
if (length == 2147483591 && (!PlatformDetection.Is64BitProcess || !PlatformDetection.IsReleaseRuntime || !PlatformDetection.IsNetCore))
{
throw new SkipTestException("It would take too much time to execute.");
}
// ...
}
変更内容
- src/libraries/System.Formats.Nrbf/tests/EdgeCaseTests.cs
#if RELEASE && NETプリプロセッサガードを削除[ConditionalTheory]属性をパラメータなしに変更(SkipTestExceptionをスキップとして正しく扱うため)- テストメソッド内部に
PlatformDetection.IsReleaseRuntimeチェックを追加 - 2GB配列ケースのみ条件付きスキップ:64bitプロセス、Release Runtimeかつ.NET Coreの場合のみ実行
パフォーマンスへの影響
タイムアウト問題の解消。Checked CoreCLRのランタイム検証によるオーバーヘッドにより2GB配列処理が著しく遅いため、該当環境ではテスト実行をスキップすることで、CI/CDパイプラインの安定性が向上します。小規模ケースは引き続き全環境で実行されるため、機能の基本的検証は維持されます。
関連Issue
その他
SlowRuntimeTimeoutModifier != 1ではなくPlatformDetection.IsReleaseRuntimeを使用する理由:Checked(非Release、非Debug)ビルドでは前者が1を返すため、Checked Runtimeでのテストスキップが正しく機能しません。- 公開APIおよび互換性への影響なし(テストコード変更のみ)
#125956 CngProperty constructor with ReadOnlySpan<byte> overload
- 作成者: @krwq
- 作成日時: 2026年03月23日 13:15:31(UTC)
- マージ日時: 2026年03月27日 14:31:43(UTC)
- ラベル: area-System.Security
概要
CngPropertyコンストラクタにReadOnlySpan<byte>オーバーロードを追加しました。これにより、バイト配列をコピーせずに安全にプロパティ値を設定でき、メモリ効率と利便性が向上します。
変更内容
- CngProperty.cs:
ReadOnlySpan<byte>パラメータを受け取るコンストラクタオーバーロードを追加 - System.Security.Cryptography.cs: 公開API参照に新しいオーバーロードシグネチャを追加
- PropertyTests.cs: 新しいオーバーロードの機能テスト(99行分)を追加
パフォーマンスへの影響
メモリ効率の向上:ReadOnlySpan<byte>オーバーロードにより、不要なバイト配列のコピーを避けることができます。既存のbyte[]パラメータコンストラクタとの互換性は維持されます。
関連Issue
その他
- 本実装はCopilotにより生成され、#93805に基づいています
- 複数のレビュアー(特にbartonjs)による徹底的な審査を経ています
#125950 Revert "Disable iOS and tvOS jobs until infra issue is fixed"
- 作成者: @kotlarmilos
- 作成日時: 2026年03月23日 09:02:11(UTC)
- マージ日時: 2026年03月27日 11:34:50(UTC)
- ラベル: area-Infrastructure-mono
概要
dotnet/runtime#125771で無効化されたiOS/tvOS CI ジョブを再度有効化するリバート PR です。ランタイム パイプラインマトリックスにおいて、ios_arm64 と tvos_arm64 プラットフォームの CI ジョブを復活させます。
変更内容
- eng/pipelines/runtime.yml: ランタイム パイプラインの複数のプラットフォーム マトリックス ジョブ定義で iOS/tvOS プラットフォームを復活
- eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml: iOS 関連の追加プラットフォーム ジョブマトリックス全体で iOS/tvOS プラットフォームを復活
パフォーマンスへの影響
影響なし(CI/CD パイプライン設定の変更のため)
関連Issue
その他
このリバートは、以前の インフラストラクチャ問題の解決に伴い、iOS/tvOS の CI ジョブを再度有効化するものです。
#125908 Fix intermittent NRE in ETW listener tests by using GUID overload of EnableProvider
- 作成者: @Copilot
- 作成日時: 2026年03月22日 03:46:19(UTC)
- マージ日時: 2026年03月27日 21:49:27(UTC)
- ラベル: area-System.Diagnostics.Tracing
概要
BasicEventSourceTests の ETW テストが CI ストレス環境(PGO、jitstress)で断続的に NullReferenceException で失敗する問題を修正。原因は EtwListener.ApplyEventSourceCommand が文字列ベースの EnableProvider を使用していたため、Windows API の TdhEnumerateProviders が負荷下で一時的に失敗し、null プロバイダー辞書を返していた。修正として、GUID ベースの EnableProvider オーバーロードに切り替え、プロバイダー GUID をアルゴリズム的に計算することで Windows API 呼び出しを排除。
// 変更前
_session.EnableProvider(eventSourceName, (TraceEventLevel)options.Level, (ulong)options.Keywords, ...);
// 変更後
var providerGuid = TraceEventProviders.GetEventSourceGuidFromName(eventSourceName);
_session.EnableProvider(providerGuid, (TraceEventLevel)options.Level, (ulong)options.Keywords, ...);
変更内容
- EtwListener.cs:
ApplyEventSourceCommandメソッド内で、EnableProviderの呼び出しを文字列ベースから GUID ベースに変更。TraceEventProviders.GetEventSourceGuidFromNameを使用して EventSource GUID をプログラム的に計算し、TdhEnumerateProvidersの呼び出しを廃止。既存のDisableProvider実装との一貫性を確保。
パフォーマンスへの影響
Windows API 呼び出し(TdhEnumerateProviders)を排除し、GUID をアルゴリズム的に計算するため、プロバイダー有効化時の信頼性が向上。パフォーマンス的な悪化はなし。
関連Issue
その他
テスト専用の修正(System.Diagnostics.Tracing テストハーネス)。公開 API への影響なし。修正は DisableProvider で既に機能しているパターンと一致させた設計。
#125834 Stabilize ML-DSA X.509 PKIs with published RFC 9881.
- 作成者: @vcsjones
- 作成日時: 2026年03月20日 14:50:54(UTC)
- マージ日時: 2026年03月27日 19:26:06(UTC)
- ラベル: area-System.Security
概要
RFC 9881の公開に伴い、ML-DSA X.509 PKI関連のAPIを安定化させるため、ExperimentalAttributeを削除するPRです。PublicKey、X509Certificate2、X509CertificateKeyAccessorsのML-DSA関連メンバー、およびML-DSA SPKI/PKCS#8インポート/エクスポートAPIから実験的属性を削除します。なお、External-MuおよびSignPreHashメンバーは引き続き実験的状態です。
変更内容
- MLDsa.cs: SPKI/PKCS#8インポート/エクスポートメソッド(暗号化されたPKCS#8およびPEMヘルパーを含む)から
ExperimentalAttributeを削除 - PublicKey.cs: ML-DSAコンストラクタとキー抽出APIから実験的マーキングを削除
- X509Certificate2.cs: ML-DSA証明書キーAPIから実験的マーキングを削除
- X509CertificateKeyAccessors.cs: ML-DSA拡張APIから実験的マーキングを削除
- 公開参照アセンブリ: System.Security.Cryptography.refを更新してML-DSA安定化を反映
- テストデータ: IETF テストベクターの参照をRFC 9881に更新
- 互換性設定: CompatibilitySuppressions.xmlおよびApiCompatBaseline.NetCoreAppLatestStable.xmlを更新して実験的属性削除に対応
パフォーマンスへの影響
影響なし
関連Issue
その他
この変更は後方互換性を維持するものであり、既存のML-DSA機能に破壊的な変更は含まれません。External-MuおよびSignPreHashメンバーは引き続き実験的APIとして存在します。
#125799 Rewrite BigInteger internals to use native-width (nuint) limbs
- 作成者: @stephentoub
- 作成日時: 2026年03月19日 20:44:11(UTC)
- マージ日時: 2026年03月27日 03:26:49(UTC)
- ラベル: area-System.Numerics
概要
System.Numerics.BigIntegerの内部実装をuintリムからnuint(ネイティブ幅)リムへ書き直しました。64ビットプラットフォームではリム数が半減し、マルチリム算術のスループットが向上します。公開APIは変更されていません。
主な改善:
- 64ビットプラットフォームで各リムが64ビットを保持(32ビットから倍増)
- Montgomery乗算とREDCをModPow用に追加し、奇数法での除算ベース削減を排除
- スライディングウィンドウ指数演算でModPowの乗算回数を削減
- ビット演算での2の補数演算を融合し、アロケーション削減
- 10のべき乗テーブルをキャッシュして計算コスト削減
変更内容
コア表現
_bitsをuint[]からnuint[]に変更- すべての算術プリミティブを対応更新
_signはintのまま(小値インライン化での回帰防止)
主要な算術改善
- Montgomery乗算と駆動窓指数演算をModPowに統合(奇数法専用)
- 単一リムでの乗算プリミティブ(
Mul1、MulAdd1、SubMul1)を追加 - ビット演算(AND/OR/XOR)で負値の2の補数変換を融合化
PowersOf1e9テーブルをキャッシュして再利用- GCD/Lehmer処理を
Int128オーバーヘッド排除で最適化 - Burnikel-Zieglerの閾値を64ビットリム向けに再調整
- BMI2(
mulx)とADX(adcx/adox)ハードウェア命令を活用
バグ修正
SubtractSelfでborrow=0の事後条件を復元(Barrett削減・Toom-3/Karatsuba署名付き減算・Montgomery削減オーバーフロー)SubWithBorrowの符号拡張バグ(32ビットプラットフォーム)BitwiseAndの符号処理(特定の負オペランド組み合わせ)- ToString回帰(リム境界近くの数値を32ビット単位で処理)
テスト
- 算術恒等式・ビット演算一貫性・ラウンドトリップ変換の~1,000行のプロパティベーステスト追加
- 符号組み合わせ・SIMD境界・Barrett/FastReducer(偶数大型法)のエッジケーステスト
- 既存3,031テスト全てがDebug/Release両構成でパス
パフォーマンスへの影響
- 64ビットプラットフォームでリム数が半減し、スクールブック算法の反復回数削減
- Montgomery乗算によるModPow性能向上(除算削減)
- スライディングウィンドウによる乗算回数削減
- ビット融合演算によるアロケーション削減
- テーブルキャッシュによる大型数フォーマット高速化
- ハードウェア命令(BMI2/ADX)の活用で低レベル演算加速
- 具体的なベンチマーク数値は提供されていません
関連Issue
#125676 Fix flaky UserPreferenceTests.SignalsUserPreferenceEventsAsynchronously under JIT stress
- 作成者: @Copilot
- 作成日時: 2026年03月17日 20:21:57(UTC)
- マージ日時: 2026年03月27日 15:21:25(UTC)
- ラベル: area-Microsoft.Win32
概要
SignalsUserPreferenceEventsAsynchronouslyテストがJITストレス環境で不安定だった問題を修正します。OSから予期しないWM_SETTINGCHANGEメッセージ(wParam=0、カテゴリGeneral)がハンドラー登録とテストメッセージ処理の間に送信される競合状態が原因でした。非同期パスではメッセージ反映までにラグがあるため、JITストレスによる遅延がこの競合ウィンドウを拡大します。
修正内容:changingHandlerとchangedHandlerの両方に、e.Category == expectedCategoryのガード条件を追加し、予期しないOS生成イベントを無視するようにしました。
// 修正後
UserPreferenceChangingEventHandler changingHandler = (o, e) =>
{
if (e.Category == expectedCategory)
{
changingArgs = e;
changing.Set();
}
};
変更内容
- src/libraries/Microsoft.Win32.SystemEvents/tests/SystemEvents.UserPreference.cs
SignalsUserPreferenceEventsAsynchronouslyテストのUserPreferenceChangingハンドラーにカテゴリフィルターを追加UserPreferenceChangedハンドラーにも同様のフィルター条件を追加- 変更前後で関連する検証ロジックを調整(計16行の変更)
パフォーマンスへの影響
影響なし。テストコードのロジック修正のみで、ランタイムパフォーマンスに変化はありません。
関連Issue
その他
- 修正は
SignalsUserPreferenceEventsSynchronouslyテストには影響しません(同期パスはSendMessageWを直接使用するため、ハンドラーはインライン実行され非同期ギャップが存在しないため) Microsoft.Win32.SystemEventsテストはnet11.0-windowsとnet481のみをターゲットとするため、Linuxサンドボックスでの実行不可- Windows上でローカルに再現する場合は、ハンドラー登録と
SendMessageの間にThread.Sleepを挿入することで競合を確定的にできます
#125610 Add System.Text.Json support for F# discriminated unions
- 作成者: @eiriktsarpalis
- 作成日時: 2026年03月16日 12:20:24(UTC)
- マージ日時: 2026年03月27日 17:55:23(UTC)
- ラベル: area-System.Text.Json
概要
System.Text.JsonでF#の判別共用体(discriminated unions)のシリアライゼーション/デシリアライゼーション機能が実装されました。フィールドなしの共用体は JSON文字列として、フィールド付きはJSON オブジェクト($type型判別子付き)としてシリアライズされます。
type Shape =
| Point
| Circle of radius: float
| Rectangle of height: float * length: float
let json = JsonSerializer.Serialize(Circle 3.14)
// -> {"$type":"Circle","radius":3.14}
変更内容
- FSharpUnionConverter.cs (新規) — F#共用体専用の
JsonConverter<T>を実装。RequiresReadAheadを使用してJSON全体をバッファリングし、文字列/オブジェクト両形式に対応 - FSharpCoreReflectionProxy.cs (拡張) — 共用体ケースメタデータ抽出機能を追加(FSharpUnionCaseInfo、タグリーダー、コンストラクタ、フィールドリーダー)
- FSharpTypeConverterFactory.cs (更新) — 共用体型の検出と
[JsonPolymorphic]属性による型判別子カスタマイズに対応 - JsonConverter.cs / JsonConverterOfT.cs (更新) — 新しい
SupportsMultipleTokenTypesプロパティを追加し、文字列/オブジェクト両トークン型を処理するコンバーターの検証を緩和 - テスト (拡張) — 671行のテストケース追加(UnionTests.fs)
パフォーマンスへの影響
影響なし(既存機能への悪影響はなし)
関連Issue
その他
- 反射ベースのみ対応 — ソースジェネレーターやNative AOTには非対応。ソースジェネレーター利用時はコンパイル時エラーまたはデフォルト
objectシリアライゼーションにフォールバック。 - 対応機能 — PropertyNamingPolicy、PropertyNameCaseInsensitive、JsonPropertyNameAttribute、RespectRequiredConstructorParameters、UnmappedMemberHandling、ReferenceHandler.Preserve、JsonNumberHandling、AllowDuplicateProperties
- 型判別子 —
[<JsonPolymorphic(TypeDiscriminatorPropertyName = "kind")>]で カスタマイズ可能。デフォルトは$type。位置は任意(read-ahead buffering対応)。 - 参照保持 — クラス共用体はReference Preserveモード時に
$id/$refメタデータをサポート。フィールドなしのクラスケースは{"$id":"1","$type":"Point"}形式。構造体共用体は参照追跡に参加しない。 - 互換性 — フィールドなしケースは
"Point"と{"$type":"Point"}両形式でデシリアライズ可能
#125468 [RyuJIT Wasm] WasmObjectWriter Webcil Envelope Support
- 作成者: @adamperlin
- 作成日時: 2026年03月12日 00:08:36(UTC)
- マージ日時: 2026年03月27日 15:17:12(UTC)
- ラベル: area-crossgen2-coreclr
概要
WasmObjectWriter に WebCIL エンベロープサポートを実装しました。RyuJIT Wasm AOT コンパイラが WebAssembly バイナリ内に PE/CLI ヘッダーとデバッグディレクトリデータを配置できるようになります。
WebCIL ペイロードは、WebCIL 仕様に従って 2 つの Wasm データセグメントとして出力されます:
(data "\0f\00\00\00") ;; データセグメント 0: ペイロードサイズ(4バイト LE uint32)
(data "payload\cc") ;; データセグメント 1: webcil ペイロード(4バイト境界に整列)
変更内容
- Webcil.cs(新規):WebCIL ヘッダー・セクションヘッダーのエンコーダを実装
- WasmObjectWriter.cs:WebCIL セグメントのビルド、PE スタイルの再配置解決、Wasm データセグメントとしての出力機能を追加。DataCount/Global ハンドリングも実装
- WebcilEncoder.cs(新規):WebCIL ヘッダーおよびセクションヘッダーのエンコーディングロジック
- WasmNative.cs:WasmGlobal エンコーディングサポートを追加
- WasmInstructions.cs:Wasm スタブ生成用の命令ヘルパー(locals、memory.init)を追加
- Relocation.cs:WASM_PADDED_RELOC_SIZE_32 を公開化
- ILCompiler プロジェクトファイル:Webcil.cs の統合
- AssemblyStubNode.cs:Wasm ターゲット向けに読み取り専用データセクションへの配置を変更
- ObjectWriter.cs:Wasm 関連の調整とシンボル範囲ノード処理の拡張
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 懸念事項(Copilot レビューより):
- ObjectWriter.cs の ISymbolRangeNode 処理が全ターゲットで無条件化されており、非Wasm バックエンド或いは分離レイアウト時の動作変更リスクあり
- WasmObjectWriter.ResolveRelocations で WASM_TYPE_INDEX_LEB 型の再配置処理時、_definedSymbols キー検索が失敗する可能性あり(署名キーは _uniqueSignatures に格納)
- Relocation.cs の ReadValue で WASM_TABLE_INDEX_U32/U64 対応されたが、WriteValue 側はまだ対応されていない
- AssemblyStubNode 派生クラスの一部(WasmReadyToRunHelperNode など)が Wasm で NotImplementedException をスローするため、AOT ビルド時にエラーの可能性あり
#125083 [browser][coreCLR] no COM, no swift
- 作成者: @pavelsavara
- 作成日時: 2026年03月02日 23:23:43(UTC)
- マージ日時: 2026年03月27日 08:51:31(UTC)
- ラベル: arch-wasm area-VM-coreclr linkable-framework size-reduction os-browser
概要
Browser WASM向けのCoreCLRランタイムビルドをトリミングするため、非Windows環境でCOM相互運用、SEH例外、Windows固有のコードパスを条件付きコンパイルで除外します。また、ComActivatorの逆P/Invokeサンク生成をスキップし、WASM PInvokeCollectorにBrowser非サポート型のコールバック処理をスキップさせる機能を追加します。
変更内容
SEH例外ハンドリングのWindows限定化
ex.h/ex.cpp、rexcep.h:SEHException定義を#ifdef TARGET_WINDOWSでラップclrex.cpp: SEH例外処理パスをWindows限定に、非Windows環境では汎用HRExceptionにフォールスルーexcep.cpp:MapWin32FaultToCOMPlusExceptionで非Windows環境はkExceptionを返すよう変更
COM相互運用コードの整理
excep.cpp/excep.h:CallOutFilter、FilterAccessViolationをCOM関連のヘルパーとしてinteroputil.cppに移動(#ifdef FEATURE_COMINTEROP内)rexcep.h、corelib.h、metasig.h: COM関連型(InvalidOleVariantTypeException、COMVARIANT)を#ifdef FEATURE_COMINTEROPでラップMarshal.cs:COR_E_INVALIDOLEVARIANTTYPEマッピングをCOM機能限定化
Apple限定機能
corelib.h:SwiftSelf、SwiftError、SwiftIndirectResultを#ifdef TARGET_APPLEでラップ
WASM固有の変更
ComActivator.PlatformNotSupported.cs:[SupportedOSPlatform("windows")]属性を追加callhelpers-reverse.cpp: ComActivator関連の3つの逆P/Invokeサンクを削除、OnThreadExiting→OnThreadExitedにリネームPInvokeCollector.cs:IsUnsupportedOnBrowserメソッドを追加し、[UnsupportedOSPlatform("browser")]または[SupportedOSPlatform(...)]("browser"なし)が付与された型のコールバック生成をスキップcallhelpers-interp-to-managed.cpp、callhelpers-pinvoke.cpp: サンク追加(CallFunc_I32_I32_I32_RetI64等)
パフォーマンスへの影響
Browser WASMビルドサイズの削減(COM/SEH関連の未使用コードがトリミング対象となる)。実行時パフォーマンスへの影響はなし。
関連Issue
なし
その他
このPRはBrowser/WASM環境でサポートされていない機能(COM相互運用、Windows固有の例外処理、Swift相互運用)を明示的にマークし、トリミングツール(ILLink)による最適化を支援します。内部実装の変更であり、公開APIの破壊的変更はありません。
#124492 Support the FORCE_COLOR emerging standard in ConsoleUtils.EmitAnsiColorCodes
- 作成者: @Copilot
- 作成日時: 2026年02月17日 01:58:41(UTC)
- マージ日時: 2026年03月27日 04:29:20(UTC)
- ラベル: area-System.Console
概要
FORCE_COLOR環境変数(force-color.orgで定義されるスタンダード)のサポートを追加し、標準出力がリダイレクトされていても強制的にANSIカラー出力を有効にします。これによりdotnet watchなどでリダイレクトされた子プロセスにおいても色付き出力が保持されます。DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTIONは従来の動作を保つレガシーエイリアスとなり、優先順位は①FORCE_COLOR/DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION(任意の非空値で色ON) → ②NO_COLOR(任意の非空値で色OFF) → ③リダイレクト検査となります。またNO_COLOR=""は仕様に基づき無視されるようになります。
変更内容
- ConsoleUtils.cs:
FORCE_COLORとDOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTIONの優先チェック追加。セマンティクスを非空値での判定に統一(従来の"1"/"true"比較を削除)。NO_COLORチェックをis nullから!string.IsNullOrEmpty()に変更 - ConsoleLoggerProvider.cs:
DoesConsoleSupportAnsi()に同等のカラー環境変数サポートを追加 - ConsolePal.Unix.cs: コメント更新で
FORCE_COLORを言及 - Color.cs テスト: 空文字列を含む各値、優先順位(
FORCE_COLOR+NO_COLOR→ 色が優先)のシナリオをカバーする網羅的なテスト追加 - ConsoleLoggerTest.cs テスト:
DoesConsoleSupportAnsi_RespectsColorEnvVars理論テストでFORCE_COLOR設定時のAnsiLogConsole生成、NO_COLOR設定時のAnsiParsingLogConsole生成、優先順位を検証
パフォーマンスへの影響
影響なし
関連Issue
その他
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTIONのセマンティクスが"1"/"true"要求から非空値受け入れに変更されました。これは破壊的変更ですがレビュアーのガイダンスに基づき許容されています。このPRは当初PR #124107の改善版です。
#124139 Add support for floating-point hex formatting and parsing
- 作成者: @stephentoub
- 作成日時: 2026年02月08日 03:04:03(UTC)
- マージ日時: 2026年03月27日 13:21:05(UTC)
- ラベル: area-System.Runtime
概要
IEEE 754形式の16進浮動小数点数のパース・フォーマット機能をdouble、float、Half、BFloat16に追加しました。新しいNumberStyles.HexFloat複合スタイルと"x"/"X"フォーマット指定子により、16進浮動小数点数の入出力が可能になります。
// パース例
double d = double.Parse("0x1.8p+3", NumberStyles.HexFloat); // 12.0
// フォーマット例
double d = 12.0;
string hex = d.ToString("x"); // "0x1.8p+3"
変更内容
- NumberStyles.cs: 新しい
HexFloat複合スタイルを追加(p/Pの2進指数をサポート) - Number.Parsing.cs: 16進浮動小数点パーサー実装(366行追加)、
AllowHexSpecifierフラグの処理を統合 - Number.Formatting.cs:
"x"/"X"フォーマット指定子の実装(211行追加、精度オプション対応) - NumberFormatInfo.cs: 浮動小数点型のスタイル検証を更新、16進浮動小数点と2進指数の非互換性を検証
- Single.cs、Double.cs、Half.cs、BFloat16.cs: UTF-8スパン型パースエントリーポイントを浮動小数点スタイル検証に対応
- Strings.resx: 新しい検証エラーメッセージを追加
- テストファイル:
DoubleTests.cs(319行)、SingleTests.cs(202行)、HalfTests.cs(170行)、BFloat16Tests.cs(123行)に包括的なパース・フォーマットテストを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- 16進浮動小数点フォーマットは、2進指数表記(
p/P)をサポートし、IEEE 754標準に準拠しています - 共有テストスイート(RealFormatterTestsBase.cs)を更新し、浮動小数点型で
"X"フォーマットを有効な形式として扱うようになりました - 破壊的変更なし、既存APIに対する互換性が保持されています
#124081 Sve: Expand CreateWhile APIs
- 作成者: @a74nh
- 作成日時: 2026年02月06日 10:45:15(UTC)
- マージ日時: 2026年03月27日 17:37:59(UTC)
- ラベル: area-System.Runtime.Intrinsics community-contribution
概要
SVE(Scalable Vector Extension)のCreateWhile APIを拡張し、既存の符号なし型対応APIを明確に名前付けし直すとともに、符号付き型およびDouble/Single型に対応する新しいバリアント関数を追加しました。
変更内容
JIT関連 (
hwintrinsic.cpp,hwintrinsiccodegenarm64.cpp,hwintrinsiclistarm64sve.h):- CreateWhile組み込み関数の実装を更新し、符号なし/符号付き型の区別を明確化
公開API (
Sve.cs,Sve.PlatformNotSupported.cs):CreateWhileAPIを名前変更して符号なし型専用を明確化- 符号付き型(int, long)対応の
CreateWhileオーバーロードを追加 - Double/Single型対応のバリアントを追加
参照API (
System.Runtime.Intrinsics.cs):- 新規API署名を参照実装に追加
互換性 (
ApiCompatBaseline.NetCoreAppLatestStable.xml):- 新しいAPI追加に対応する互換性ベースラインを更新
テスト (
SveTests.cs、回帰テスト更新):- 新規APIのテストケースを追加
- 既存テストを新しいAPI名に対応
パフォーマンスへの影響
影響なし
関連Issue
その他
このPRは公開API追加に分類されます。既存のCreateWhile APIに対する非破壊的な拡張であり、新しい数値型(符号付き整数、浮動小数点型)での利用が可能になります。