注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #126347 Skip Verify_ConstructDelegateFromFunctionPointer on NativeAOT
- #126329 Various fixes to get
-dynamiccodecompiled falseto build on windows - #126328 Fix NativeAOT GC crash: populate volatile arg registers from UniversalTransitionThunk
- #126327 [Wasm RyuJit] multi entry try preliminaries
- #126326 [Wasm RyuJIT] Partially implement genStructReturn
- #126319 [release/10.0] clang-21 on macos fixes
- #126314 Follow-up to #126192: address review comments (doc nit, ShellExecuteHelper refactor, field keyword, test, trimming, waitStateHolder fix)
- #126294 Stop RyuJIT from injecting thumb bit under ILC, remove ObjectWriter compensation
- #126281 Adding GetJitHelperFunctionName cDAC API
- #126232 Add --tree arg to src/tests/run.[sh|cmd]
- #126228 [RyuJIT Wasm] Support Additional Reloc Types used in R2R in WasmObjectWriter
- #126202 Fix ArrayValue.ToString separators
- #126130 [Wasm RyuJit] Use CORINFO_HELP_INITCLASS for fgGetSharedCCtor
- #126123 Fix R2R TypeMap fallback for unresolved assembly targets
- #126109 [GeneratedComInterface] Add
unsafeto derived partial interface when base has unsafe methods - #126056 Refactor DownlevelLibraryImportGenerator to inject types via RegisterPostInitializationOutput
- #126043 Redo GC heap size fix in heavily pinning scenarios
- #126028 JIT: Refactor async analysis
- #125720 [Interpreter] Fix localloc to guarantee 16-byte stack alignment
- #123775 Remove unused isNewNativeImage parameter from NativeImage::Open
- #120326 Utf16.IsValid and Utf8/16.IndexOfInvalidSubsequence
#126347 Skip Verify_ConstructDelegateFromFunctionPointer on NativeAOT
- 作成者: @Copilot
- 作成日時: 2026年03月31日 05:56:22(UTC)
- マージ日時: 2026年03月31日 10:45:29(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT環境でVerify_ConstructDelegateFromFunctionPointerテストがPlatformNotSupportedExceptionで失敗する問題を修正します。NativeAOTは検証可能なデリゲート構築シーケンスの外でデリゲートコンストラクタを直接呼び出すことをサポートしていないため、[ActiveIssue]属性を追加してNativeAOT上でテストをスキップします。
変更内容
- src/tests/baseservices/compilerservices/UnsafeAccessors/UnsafeAccessorsTests.cs
Verify_ConstructDelegateFromFunctionPointerメソッドに[ActiveIssue("https://github.com/dotnet/runtime/issues/69919", typeof(TestLibrary.Utilities), nameof(TestLibrary.Utilities.IsNativeAot))]属性を追加- テストスイート内の確立されたパターンに従ってNativeAOT非互換テストをスキップ
パフォーマンスへの影響
影響なし
関連Issue
#69919 - Constructing delegates outside verifiable delegate sequence
その他
- このPRは#125868で追加されたテストのNativeAOT互換性問題を解決するもの
- NativeAOTではデリゲート構築が検証可能なシーケンス内に限定されるため、関数ポインタからのデリゲート構築はサポートされていない
#126329 Various fixes to get -dynamiccodecompiled false to build on windows
- 作成者: @BrzVlad
- 作成日時: 2026年03月30日 20:16:32(UTC)
- マージ日時: 2026年03月31日 06:03:09(UTC)
- ラベル: area-VM-coreclr
概要
-dynamiccodecompiled false ビルドオプションでWindowsプラットフォーム上のビルドエラーを修正します。このオプションはTIERED_COMPILATION、VIRTUAL_STUB_DISPATCHを無効化し、STATICALLY_LINKEDを有効化する設定です。
変更内容
- src/coreclr/inc/switches.h: スイッチ定義の修正(1行変更)
- src/coreclr/interpreter/CMakeLists.txt: インタープリタのCMakeLists設定を調整(4行変更)
- src/coreclr/vm/amd64/thunktemplates.asm: AMD64アーキテクチャ向けthunkテンプレートの修正(2行追加)
- src/coreclr/vm/threadsuspend.cpp: スレッド休止処理の修正(1行変更)
ランタイムの動的コード生成に関連する内部実装の修正で、公開APIへの影響はありません。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
なし
#126328 Fix NativeAOT GC crash: populate volatile arg registers from UniversalTransitionThunk
- 作成者: @Copilot
- 作成日時: 2026年03月30日 19:22:01(UTC)
- マージ日時: 2026年03月31日 18:30:26(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT環境でスレッドがRhpUniversalTransition内で割り込まれる際のGCスタックウォーク中のクラッシュを修正します。問題は、スタックフレームイテレータが揮発性引数レジスタ(AMD64のpRcx、pRdx、pR8、pR9など)のセーブ位置をREGDISPLAYに設定せず、NULLのままにしていたため、GCが生きたレジスタ参照をスキャンする際にヌルポインタ参照エラー(0xC0000005)を引き起こしていました。
変更内容
- StackFrameIterator.cpp:
UniversalTransitionStackFrame::UnwindVolatileArgRegisters()メソッドを全アーキテクチャ(AMD64/UNIX、AMD64/Windows、ARM、x86、ARM64、LoongArch64、RISCV64)に追加。このメソッドは、ユニバーサル遷移スタンク内に保存されたm_intArgRegsから揮発性引数レジスタのセーブ位置をREGDISPLAYに展開します。 UnwindUniversalTransitionThunk()から新たにUnwindVolatileArgRegisters()を既存のUnwindNonVolatileRegisters()と共に呼び出すよう修正。
パフォーマンスへの影響
影響なし(GCスタックウォーク中の精密なレジスタ追跡により、パフォーマンスへの悪影響はありません)
関連Issue
その他
- 影響範囲: NativeAOT環境でのみ発生。非NativeAOTコードパスには影響なし。
- 顧客への影響: Crossgen2(NativeAOT)がGC中に終了コード
-1073741819でクラッシュする問題を解決。インターフェースディスパッチキャッシュミス中など、揮発性引数レジスタに生きたGC参照がある状態でスレッド割り込みが発生するあらゆるNativeAOTプロセスに影響。 - リスク評価: 低。変更は
StackFrameIterator.cpp内のUnwindUniversalTransitionThunk()に限定され、以前はNULLだったレジスタセーブ位置を正確に追跡するようになります。
#126327 [Wasm RyuJit] multi entry try preliminaries
- 作成者: @AndyAyersMS
- 作成日時: 2026年03月30日 19:21:38(UTC)
- マージ日時: 2026年03月31日 16:35:24(UTC)
- ラベル: area-CodeGen-coreclr
概要
WebAssembly (Wasm) ターゲット向けに、複数のエントリポイントを持つtry領域を処理するためのRyuJIT基盤を整備するPRです。FlowGraphTryRegion記述子をDFSなしで構築可能にし、Wasm EH dispatch ブロックにおけるcatch resumption entryの検出とベイルアウト機能を追加します。現段階では複数エントリtry領域に対して未実装(NYI)として動作します。
変更内容
- block.h:
BBF_CATCH_RESUMPTIONフラグを新規追加し、catch resumption edges が存在するbasic blockをマークできるようにしました - compiler.h: FlowGraphTryRegion が DFS の有無を切り替え可能に拡張。try領域の複数エントリ検出・追跡機能と entry edges の記録機能を追加
- compiler.hpp: RPO順序列挙時のDFS存在確認アサーション追加
- flowgraph.cpp: bbNum ベースのbitvectorを使用した DFS 不在時の try-region 記述子構築。entry edges の記録と multi-entry try の検出・追跡機能、dump 出力の更新
- fgwasm.cpp: multi-entry try 検出時のベイルアウト実装。dispatch switch block を
BBF_CATCH_RESUMPTIONでマーク、EH フロー制御の調整 - fgdiagnostic.cpp: Wasm における catch-resumption edges による try 領域中盤への進入を許可(restructuring 中は暫定的に)
パフォーマンスへの影響
影響なし(事前準備作業のため、現段階ではベイルアウトにより機能が無効化)
関連Issue
なし
その他
このPRは予備的な作業(prep work)であり、実際の複数エントリtry領域処理は将来のPRで実装予定です。Wasm固有の例外処理フロー制御の再構築に向けた基盤整備となります。
#126326 [Wasm RyuJIT] Partially implement genStructReturn
- 作成者: @kg
- 作成日時: 2026年03月30日 19:02:00(UTC)
- マージ日時: 2026年03月31日 22:53:59(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssembly RyuJIT バックエンドに genStructReturn の部分的な実装を追加し、構造体の戻り値処理に対応します。これにより、wasm crossgen実行時のアサート問題(#125756)に対応します。
現在は FIELD_LIST シナリオのみ実装されており、その他のシナリオは再現環境がないため未実装です。
変更内容
- src/coreclr/jit/codegenwasm.cpp:
genStructReturnメソッドの Wasm 固有実装を追加GT_RETURNノードで戻り値がFIELD_LISTの場合の処理を実装- フィールドリストの使用を消費してライブネス情報を保持
- その後、戻り値の返却を試みる
パフォーマンスへの影響
影響なし
関連Issue
その他
- この実装は部分的な対応であり、
FIELD_LIST以外のシナリオは実装されていません - 追加シナリオの実装には再現ケースが必要です
#126319 [release/10.0] clang-21 on macos fixes
- 作成者: @github-actions[bot]
- 作成日時: 2026年03月30日 15:07:56(UTC)
- マージ日時: 2026年03月31日 16:12:31(UTC)
- ラベル: Servicing-approved area-VM-coreclr
概要
Xcode 16.0へのアップデートに伴いclang 21への対応を行うPR。clang 21で導入された-Wc++-keywordの破壊的変更により、C/Swiftソースコードのコンパイルが失敗するため、ネイティブライブラリ群と関連テストを修正するもの。
変更内容
- System.Native:
pal_memory.cに-Wno-c++-keywordコンパイラフラグを追加、pal_networking.cで予約語の使用回避、pal_environment.mの微修正 - System.Globalization.Native: CMakeLists.txtで同フラグを設定
- System.Security.Cryptography.Native.Apple: 複数ファイルで予約語の使用を避けるため変数名修正(
pal_ecc.c、pal_networkframework.m、pal_ssl.c/h、pal_x509chain.c) - Swift テスト: SwiftErrorHandling.swiftで互換性対応
すべて内部実装の修正で、公開APIへの影響なし。
パフォーマンスへの影響
影響なし
関連Issue
その他
- release/10.0へのバックポート(元PR: #126235)
- インフラストラクチャ変更(ツールチェーン対応)であり、回帰ではなく環境変更への対応
- リスク評価: Low
- テスト結果: All tests pass
#126314 Follow-up to #126192: address review comments (doc nit, ShellExecuteHelper refactor, field keyword, test, trimming, waitStateHolder fix)
- 作成者: @Copilot
- 作成日時: 2026年03月30日 13:14:05(UTC)
- マージ日時: 2026年03月31日 12:10:34(UTC)
- ラベル: area-System.Diagnostics.Process
概要
#126192のマージ後のレビューコメントに対応した改善。System.Diagnostics.ProcessのShellExecuteサポートをリファクタリングし、ShellExecuteHelper.csを削除してSafeProcessHandle.Windows.csにインライン化。ProcessStartInfo.UseShellExecuteを共有ファイルに統合し、トリミング用のフックを追加。ProcessIdプロパティでfieldキーワードを採用し、無効なハンドルでの検証テストを追加。
変更内容
- ShellExecuteHelper.cs削除: ヘルパークラスを削除し、
ShellExecuteOnSTAThreadとGetShellErrorをSafeProcessHandle.Windows.csのプライベート静的メソッドに移動 - メソッドの統合:
StartWithShellExecuteExをStartWithShellExecuteに名称変更し、StartWithCreateProcessをStartCoreに折り込み(構造簡素化) - field キーワードの採用:
SafeProcessHandle.csのProcessIdプロパティで_processIdバッキングフィールドを廃止し、fieldキーワードを使用 - トリミング対応:
EnsureShellExecuteFunc()メソッドを追加し、UseShellExecuteが使用されないアプリケーションからStartWithShellExecuteとその依存関係をトリミング可能に - ProcessStartInfo.UseShellExecute統合: Windows/Unix固有の実装を共有ファイル(
ProcessStartInfo.cs)に統合し、setter内でトリミングフックを呼び出し - Unix向け修正:
waitStateHolderを出力パラメータ経由で呼び出し側に正しく流し、短命プロセスの終了状態追跡を保持。ENOEXEC フォールバックパスで前の試行の holder をクリーンアップ - ドキュメント修正:
SafeProcessHandle.Unix.csのコメント「OS handle」を「handle」に修正(Unix上ではSafeWaitHandleはOSハンドルではない) - テスト追加:
ProcessId_InvalidHandle_ThrowsInvalidOperationExceptionテストを追加し、無効なハンドルでInvalidOperationExceptionをスローするか検証
パフォーマンスへの影響
影響なし(構造的なリファクタリングであり、ランタイム動作に変更なし)
関連Issue
その他
- 変更の主目的は、
UseShellExecuteが使用されないアプリケーションからShellExecute関連コードをトリミング可能にすることで、アセンブリサイズ最適化に貢献 - Unixでのプロセス終了状態追跡の完全性を保証する修正を含む
- C# 11+の
fieldキーワードを活用してコードの簡潔性を向上
#126294 Stop RyuJIT from injecting thumb bit under ILC, remove ObjectWriter compensation
- 作成者: @MichalStrehovsky
- 作成日時: 2026年03月30日 07:05:07(UTC)
- マージ日時: 2026年03月31日 12:41:52(UTC)
- ラベル: area-NativeAOT-coreclr
概要
ILC(Intermediate Language Compiler)環境下でのARM32 thumb bitの二重カウント問題を修正します。RyuJITがmovw/movt命令にthumb bitを追加する際、ILCで既に定義されているシンボルのthumb bit(+1)と重複していました。修正により、RyuJITのthumb bit注入をReadyToRunとランタイムJITのみに限定し、ObjectWriterの補正ロジックを簡潔化します。
変更内容
- emitarm.cpp: RyuJITのthumb bit注入をガード条件で制御し、ILC環境では動作しないように修正(+8/-1)
- ObjectWriter.cs: maskThumbBitOut/maskThumbBitInの補正ロジックを削除し、BRANCH24命令のみシンボル値からthumb bitをストリップする単純な手法に置き換え(+8/-16)
パフォーマンスへの影響
影響なし。コード生成の正確性を改善する変更です。
関連Issue
#125421(参考PR)
その他
この変更はARM32プラットフォーム特有の修正で、ILC環境下でのARM32コード生成の正確性向上を目的としています。ReadyToRunおよびランタイムJITの動作には影響しません。
#126281 Adding GetJitHelperFunctionName cDAC API
- 作成者: @rcj1
- 作成日時: 2026年03月29日 19:57:17(UTC)
- マージ日時: 2026年03月31日 06:41:53(UTC)
- ラベル: area-Diagnostics-coreclr area-Diagnostics-cdac
概要
JIT動的書き込みバリア関数などのヘルパー関数に対して、実行時に割り当てられたIPアドレスから人間が読める名前を解決するための新しいcDAC契約(AuxiliarySymbols)を追加します。これにより、SOS DAC の GetJitHelperFunctionName API がディスアセンブリ時に動的JITヘルパーの人間が読める名前を返すことができるようになります。
変更内容
- CoreCLR(ネイティブ): JITヘルパーアドレスとその名前のグローバルテーブルを追加し、書き込みバリアヘルパーを登録(
src/coreclr/vm/jithelpers.cpp、src/coreclr/vm/jitinterface.h/.cpp、src/coreclr/vm/threads.cpp) - DataContractReader(マネージド): 新しい
IAuxiliarySymbols契約インターフェース、AuxiliarySymbols_1実装、AuxiliarySymbolsFactoryファクトリを追加 - SOS DAC互換性レイヤー:
GetJitHelperFunctionNameをAuxiliarySymbols契約経由でルーティングし、UTF-8出力バッファ生成ロジックを追加 - 契約登録: 新契約をCachingContractRegistryに登録し、ContractRegistry に公開
- テストとドキュメント: ユニットテスト(
AuxiliarySymbolsTests.cs)と設計ドキュメント(AuxiliarySymbols.md)を追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
互換性に関する注記: 動作変更として、アンマネージドシンボルが存在する場合はフォールバックパスで解決されます。ただし、アンマネージドシンボルが存在しない場合は、他のアンマネージドJITヘルパーについて人間が読める名前が返されません。この動作は意図的な設計決定です。
#126232 Add --tree arg to src/tests/run.[sh|cmd]
- 作成者: @jtschuster
- 作成日時: 2026年03月27日 23:07:03(UTC)
- マージ日時: 2026年03月31日 03:50:56(UTC)
- ラベル: area-Infrastructure
概要
テストビルド時に使用される --tree 引数をテスト実行スクリプト(src/tests/run.[sh|cmd])に追加し、ビルドと同じ方法でテスト実行を制限できるようにしました。これにより、開発者は特定のディレクトリツリー配下のテストのみを実行でき、ワークフローを統一できます。
変更内容
- src/tests/run.sh:
--tree=<path>引数をパースし、--tree <path>として run.py に転送 - src/tests/run.cmd:
tree <path>引数をパースし、--tree <path>として run.py に転送 - src/tests/run.py:
--tree引数を追加し、MSBuild のTestSubtreeプロパティとして転送 - src/tests/Common/tests.targets: テスト検出を指定されたサブツリー配下に限定(
$(BaseOutputPathWithConfig)\$(TestSubtree)\**)し、該当ツリーでテストが見つからない場合のエラーメッセージを改善
パフォーマンスへの影響
テスト検出の対象を限定することで、テストセットが小さい場合は検出処理が高速化される可能性があります。詳細なベンチマーク情報は提供されていません。
関連Issue
なし
その他
このPull Requestはテスト実行スクリプトの利便性向上を目的とした機能追加です。内部的なテストインフラストラクチャ変更であり、公開API への影響はありません。
#126228 [RyuJIT Wasm] Support Additional Reloc Types used in R2R in WasmObjectWriter
- 作成者: @adamperlin
- 作成日時: 2026年03月27日 21:40:57(UTC)
- マージ日時: 2026年03月31日 17:46:40(UTC)
- ラベル: arch-wasm area-crossgen2-coreclr
概要
RyuJIT Wasm ReadyToRun(R2R)コンパイラにおいて、WebAssemblyオブジェクトライターで使用される追加の再配置型(WASM_FUNCTION_INDEX、WASM_TABLE_INDEX、WASM_MEMORY_ADDR)をサポートします。これにより、R2R生成時にWasm符号化された即値の正しいパッチアップが可能になります。メモリアドレス再配置は__image_baseを基準にしたWebcilイメージ内のシンボルオフセットとして機能します。
変更内容
- WasmObjectWriter.cs:
WASM_FUNCTION_INDEX_*、WASM_TABLE_INDEX_*、WASM_MEMORY_ADDR_*型の再配置解決ロジックを実装 - Relocation.cs:
WASM_TABLE_INDEX_{U32,U64}型の値の書き込みサポートを追加 - corinfo.h/CorInfoTypes.cs: 新しい再配置型定義を追加
- emitwasm.cpp/JitInterface: Wasm JIT生成時の再配置型の宣言
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- Copilotレビューで指摘された懸念事項:
WASM_TABLE_INDEX_I32/I64のReadValueが0を返すのに対しWriteValueは4/8バイトのインラインデータを書き込むため、非対称性が生じており、加数シナリオでの問題の可能性があります。 - 変更はコンパイラ内部実装(オブジェクトライターと再配置処理)に限定されており、公開APIへの影響はありません。
#126202 Fix ArrayValue.ToString separators
- 作成者: @larkliy
- 作成日時: 2026年03月27日 13:57:42(UTC)
- マージ日時: 2026年03月31日 00:12:12(UTC)
- ラベル: linkable-framework community-contribution area-NativeAOT-coreclr
概要
ArrayValue.ToString()メソッドのコンマ配置ロジックを修正し、要素とネストされた値を正しく分離するようにしました。
変更内容
- src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/Dataflow/ArrayValue.cs: コンマ配置ロジックを修正(+3/-25行)
- src/tools/illink/src/linker/Linker.Dataflow/ArrayValue.cs: 同様のコンマ配置ロジックを修正(+3/-25行)
両ファイルはArrayValue.ToString()の実装を含み、配列要素の文字列表現における区切り文字の配置を改善しています。
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#126130 [Wasm RyuJit] Use CORINFO_HELP_INITCLASS for fgGetSharedCCtor
- 作成者: @AndyAyersMS
- 作成日時: 2026年03月25日 22:12:04(UTC)
- マージ日時: 2026年03月31日 03:37:15(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssembly(Wasm)JITにおいて、共有クラスコンストラクタ初期化の処理を改善するもの。Wasm固有の早期リターンを追加し、CORINFO_HELP_INITCLASSヘルパーを使用することで、他の共有静的フィールド初期化やReadyToRun(R2R)ヘルパーパスを回避する。
変更内容
- src/coreclr/jit/flowgraph.cpp:
Compiler::fgGetSharedCCtorにWasm固有の早期リターン処理を追加(+5行)。fgGetStaticsCCtorHelper経由でCORINFO_HELP_INITCLASSを発行するロジックを実装。
パフォーマンスへの影響
影響なし(提供されたPR情報にパフォーマンス測定結果の記載なし)
関連Issue
なし
その他
- この変更はWasm JIT(ランタイムコンパイラ)における内部実装の改善であり、公開APIへの影響はない。
- クラスコンストラクタ初期化パスの最適化により、Wasm環境でのコード生成が簡潔になる。
#126123 Fix R2R TypeMap fallback for unresolved assembly targets
- 作成者: @Copilot
- 作成日時: 2026年03月25日 20:54:01(UTC)
- マージ日時: 2026年03月31日 17:01:21(UTC)
- ラベル: area-CodeGen-coreclr
概要
ReadyToRun (R2R) モードで TypeMapAssemblyTarget が解決不可能なアセンブリを参照する場合の処理を修正しました。CrossGen2 が解決に失敗した際に空のターゲットエントリを生成し、ランタイムがフォールバック処理をスキップしていた問題を解決し、適切に属性処理にフォールバックして FileNotFoundException をスローするようになります。
変更内容
- src/coreclr/vm/assemblynative.cpp(ランタイム):アセンブリターゲット属性の再処理を条件分岐内で無条件に実行。3つのプリキャッシュマップ(targets/external/proxy)のいずれかがフォールバックが必要な場合、
AssemblyTargetProcessorの重複排除機構を活用して安全に属性を再処理。 - src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/TypeMapAssemblyTargetsNode.cs(CrossGen2):ターゲットモジュールがゼロ個のグループに対して
TypeMapAssemblyTargetsエントリの出力をスキップ。 - src/coreclr/tools/Common/Compiler/TypeMapMetadata.cs(CrossGen2):
MapクラスにHasAssemblyTargetAttributesフラグを追加。属性が存在しない場合とすべて失敗した場合を区別し、不要なフォールバック処理の強制を回避。 - src/tests/Interop/TypeMap/TypeMapApp.cs:
Validate_MissingAssemblyTarget_DoesNotAffectGroupsWithoutTargetsテストを追加。属性を持たないグループが失敗するグループと共存しても正常に動作することと、R2R イメージにExternalTypeMaps、ProxyTypeMaps、TypeMapAssemblyTargetsセクションが存在することを検証。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
本修正は内部実装(ランタイムおよびコンパイラのTypeMap処理)への変更であり、公開APIには影響しません。属性処理の再実行は既存の重複排除メカニズムにより安全に保証されています。
#126109 [GeneratedComInterface] Add unsafe to derived partial interface when base has unsafe methods
- 作成者: @Copilot
- 作成日時: 2026年03月25日 17:36:15(UTC)
- マージ日時: 2026年03月31日 10:26:13(UTC)
- ラベル: area-Codegen-Interpreter-mono
概要
[GeneratedComInterface]属性を持つ派生インターフェースが、unsafeメソッド(ポインタパラメータを含むメソッド)を持つ基本インターフェースから継承する場合、生成されるシャドウイング/フォワーディングメソッドにunsafe修飾子が不足し、コンパイルエラー(CS0214)が発生していた問題を修正します。生成される派生インターフェース宣言にunsafe修飾子を追加することで、ポインタ型を使用するメソッドをシャドウする際の構文エラーを解決します。
変更内容
ComInterfaceGenerator.cs: シャドウイングメソッドのインターフェース生成処理を新しいGenerateShadowingMethodsInterfaceヘルパーメソッドに抽出。生成されるパーシャルインターフェース宣言に対してAddToModifiers経由で無条件にunsafe修飾子を追加(既に存在する場合はno-op)することで、継承されたメソッドがポインタ型を使用するかに関わらず常に有効な宣言を生成します。CodeSnippets.cs:DerivedComInterfaceTypeWithUnsafeBaseMethodテストスニペットを追加。基本インターフェースがunsafeメソッドを含む派生インターフェースの正確な再現シナリオをカバーします。Compiles.cs: テストスニペットのコンパイル検証を追加。
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#126056 Refactor DownlevelLibraryImportGenerator to inject types via RegisterPostInitializationOutput
- 作成者: @Copilot
- 作成日時: 2026年03月24日 20:25:56(UTC)
- マージ日時: 2026年03月31日 03:50:31(UTC)
- ラベル: area-System.Runtime.InteropServices
概要
DownlevelLibraryImportGeneratorをリファクタリングし、LibraryImportAttributeとStringMarshalling型をRegisterPostInitializationOutput経由でコンパイルに直接注入するように変更しました。従来のeng/generators.targetsによる別ファイル配布方式から移行し、[Microsoft.CodeAnalysis.Embedded]属性を付与してCS0436警告を自動的に抑制します。これにより、源ファイルの#pragma warningディレクティブやダウンレベル向けの#if条件コンパイルが不要になります。
変更内容
- DownlevelLibraryImportGenerator.cs —
RegisterPostInitializationOutputを使用してダウンレベル向けのLibraryImportAttributeとStringMarshallingをコンパイルに注入 - eng/generators.targets — CoreLib共有ソースの
LibraryImportAttribute.csとStringMarshalling.csのコンパイル時インクルード(6行)を削除 - LibraryImportAttribute.cs — ダウンレベル向けの
internal/CS0436用#pragma(9行)を削除し、CoreLib内で無条件にpublicに変更 - StringMarshalling.cs — 可視性制御用の
#if(5行)を削除し、CoreLib内で無条件にpublicに変更 - ユニットテスト — 旧来のソースファイル注入パスに依存していたテストを削除。新たに注入されたダウンレベル属性が
usingなしで正常にコンパイルされることを検証するテストを追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 注入されるダウンレベル型はサポート対象フレームワークのプロパティのみを公開(
StringMarshallingはUtf16値のみ) OnlyTypeDefinitionsOutputTestの脆弱性を改善:注入ツリーの正確な数(+2)のアサーション可視から、Roslyn埋め込み属性処理の将来の変更に対応できる"LibraryImports"パス検証に変更StringMarshallingForwardingNotSupported_ReportsDiagnosticダウンレベルテストを復元:数値キャスト(StringMarshalling)1でUTF-8相当を表現(注入された列挙型はUtf16 = 2のみ公開)
#126043 Redo GC heap size fix in heavily pinning scenarios
- 作成者: @janvorli
- 作成日時: 2026年03月24日 17:32:58(UTC)
- マージ日時: 2026年03月31日 14:39:21(UTC)
- ラベル: area-GC-coreclr
概要
GCが4MBリージョンを使用する際に、大量のピン留めシナリオでヒープサイズが増加する問題を修正したPRを再導入し、無限ループによるハング問題も同時に解決しました。大きなプラグ(0x3FFFD0サイズ)がリージョンに収まらない場合、フロントパディングを追加しないようにすることで、リロケーション時の無限リトライを防止します。
変更内容
- plan_phase.cpp: Gen1ピン留めの昇格/降格判定ロジックを変更。従来の降格一辺倒ではなく、条件に応じた昇格判定を導入。ピン留め割り当ての属性計算をリファクタリング。
- allocation.cpp: Gen1ピン昇格判定ヘルパー関数を追加。リージョンサイズに近い大型プラグのフロントパディング抑制ロジックを実装。
- gcpriv.h:
demote_gen1_pをdecide_promote_gen1_pins_pに置き換え。GCヒープAPI表面を拡張。 - gc.cpp: 定義値の調整と新しい単一GC状態フラグ用のストレージを追加。
- テスト: Github Issue #126043のリグレッション検証テストを追加。
パフォーマンスへの影響
ヒープサイズの増加問題を修正し、大量ピン留めシナリオでのGCメモリ使用量を改善します。リロケーション時の無限ループを排除することで、ハング状態を防止し、GCパフォーマンスの安定性が向上。具体的なベンチマーク数値は提供されていません。
関連Issue
その他
この変更は以前に元に戻された修正を再導入するもので、元の実装にあった無限ループバグ(大型プラグのリロケーション時にパディングでリージョンに収まらなくなる問題)を修正しています。リージョン方式のGCを使用する環境での修正となります。
#126028 JIT: Refactor async analysis
- 作成者: @jakobbotsch
- 作成日時: 2026年03月24日 13:19:41(UTC)
- マージ日時: 2026年03月31日 08:43:05(UTC)
- ラベル: area-CodeGen-coreclr runtime-async
概要
JITコンパイラの非同期変換分析コードを機械的にリファクタリング。AsyncLivenessをAsyncAnalysisに名称変更し、非同期関連の分析を専用の翻訳単位(asyncanalysis.cpp)に統合。また、例外処理(EH)のtry-region連続性に関する命名と前提条件の明確化を行いました。
変更内容
- async.cpp/async.h:
AsyncLiveness→AsyncAnalysisに名称変更、関連分析ロジックを移動 - asyncanalysis.cpp(新規):
DefaultValueAnalysis、PreservedValueAnalysis、AsyncAnalysisを集約、共有のDataFlow::ForwardAnalysisコールバック実装を導入 - compiler.h:
fgTrysNotContiguous()→fgTrysContiguous()に名称変更(意味を反転させ、より直感的に) - dataflow.h:
DataFlow::ForwardAnalysisにtry-region連続性の前提条件をアサートで追加 - jiteh.cpp/fgdiagnostic.cpp/fgwasm.cpp: 名称変更に伴う呼び出し箇所の更新
パフォーマンスへの影響
影響なし(作成者が「Purely mechanical changes that should be no-diff」と明記)
関連Issue
なし
その他
- 本PRは内部実装の機械的なリファクタリング(no-diff変更)
- 公開API仕様への影響なし
- コード組織の改善により、非同期分析関連のロジックが一箇所に集約され、保守性が向上
#125720 [Interpreter] Fix localloc to guarantee 16-byte stack alignment
- 作成者: @Copilot
- 作成日時: 2026年03月18日 09:39:54(UTC)
- マージ日時: 2026年03月31日 09:21:41(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
CoreCLRインタープリタのlocalloc実装が、スタック割り当てポインタをsizeof(void*)(4〜8バイト)にしか整列させていなかった問題を修正します。INTERP_STACK_ALIGNMENT(16バイト)への整列を保証することで、WASMなど16バイト整列が必須のプラットフォームでstackallocが正しく動作するようになります。
変更内容
src/coreclr/vm/interpframeallocator.cpp
- フラグメント割り当てを
malloc()からVMToOSInterface::AlignedAllocate(INTERP_STACK_ALIGNMENT, size)に変更し、フラグメント基底アドレスを16バイト整列 - 対応する
free()をVMToOSInterface::AlignedFree()に変更 - バンプ割り当てのアライメントを
ALIGN_UP(size, sizeof(void*))からALIGN_UP(size, INTERP_STACK_ALIGNMENT)に変更し、以降の割り当て後もpFramePosが16バイト単位で進むよう保証
パフォーマンスへの影響
影響なし。変更は整列保証のみで、割り当て速度やメモリ使用効率に実質的な変化はありません。
関連Issue
その他
- 変更範囲は
FEATURE_INTERPRETERが有効な場合のみコンパイルされるinterpframeallocator.cppに限定されます VMToOSInterfaceは既にインタープリタ内で他の箇所(interpexec.cppのメインスタック割り当て)で使用されており、追加のインクルードは不要です- 既存の回帰テスト
JIT/Regression/Dev11/External/dev11_239804/ShowLocallocAlignmentでカバーされています - インタープリタ内でのみ動作が変わり、他の領域への影響はありません
#123775 Remove unused isNewNativeImage parameter from NativeImage::Open
- 作成者: @Copilot
- 作成日時: 2026年01月29日 21:46:23(UTC)
- マージ日時: 2026年03月31日 21:59:53(UTC)
- ラベル: area-AssemblyLoader-coreclr
概要
NativeImage::Openメソッドの未使用の出力パラメータisNewNativeImageを削除するクリーンアップです。このパラメータは値が設定されていたにもかかわらず、唯一の呼び出し元であるAssemblyBinder::LoadNativeImageでは使用されていませんでした。
変更内容
nativeimage.h: メソッドシグネチャからisNewNativeImage出力パラメータを削除nativeimage.cpp: 実装内の3つの*isNewNativeImage代入文を削除assemblybinder.cpp: 呼び出し側の未使用ローカル変数を削除
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
内部実装(CoreCLR VM層)の整理で、公開APIには影響しません。
#120326 Utf16.IsValid and Utf8/16.IndexOfInvalidSubsequence
- 作成者: @lilinus
- 作成日時: 2025年10月02日 14:24:49(UTC)
- マージ日時: 2026年03月31日 04:46:13(UTC)
- ラベル: area-System.Runtime community-contribution
概要
UTF-16とUTF-8の検証APIを標準化するPRです。新たにUtf16.IsValidとUtf16.IndexOfInvalidSubsequenceメソッドをSystem.Text.Unicodeに追加し、併せてUtf8.IndexOfInvalidSubsequenceも追加します。これらの新しい公開APIで既存のカスタム検証ロジックを置き換えることで、コード重複を削減し検証処理を統一します。
変更内容
- Utf16.cs(新規): UTF-16検証メソッド
IsValidとIndexOfInvalidSubsequenceを実装 - Utf16Utility.cs: 内部ユーティリティに検証ロジックを追加
- Utf8.cs:
IndexOfInvalidSubsequenceメソッドを追加し、IsValidのドキュメンテーションを更新 - System.Runtime.cs: 新しいUTF-16とUTF-8検証メソッドの公開API表面を追加
- HttpEncoder.cs: サロゲート検証を
Utf16.IndexOfInvalidSubsequenceに置き換え - StringSearchValues.cs: サロゲート検証を
Utf16.IsValidを使用した簡潔な実装に変更 - テストファイル: 新しいメソッドのテストカバレッジを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- 公開APIの追加であり、既存コードとの互換性は保持されます
- Copilotレビューからは、
Utf8.IsValidのXMLドキュメンテーションを新規メソッド追加に合わせて更新することが推奨されています