注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #133531 JIT: expand all stack array allocations in a statement
- #133486 Fix missing Helix queue variables in SuperPMI replay pipelines
- #133482 [release/11.0] JIT: guard negative-offset bounds inference against underflow
- #133481 [release/11.0] JIT: fix range assertions for bypassed phi blocks
- #133480 Exclude job monitor stage when it is disabled in perf.yml
- #133479 [release/11.0] Enable Helix job monitor for runtime perf
- #133477 [release/11.0] Fix discarding of NRE's when unboxing nullables in Mono and JIT
- #133474 Delete ILCompiler.Compiler.Tests unit test
- #133463 Restore non-blocking browser WASM R2R runtime tests
- #133461 Address Wasm unboxing stub review feedback
- #133444 Skip Runtime_133101 on Windows Mono MiniJIT
- #133441 Add & use OperatingSystem.IsOpenBSD,VersionAtLeast
- #133440 Handle unresolved TypeMap attribute types in Crossgen2
- #133439 [release/11.0] Stabilize ConnectAsync_Cancel_ThrowsCancellationException loopback test
- #133434 JIT: preserve recursive tail call flag during inlining
- #133427 Fix duplicate fake authentication success response
- #133419 [wasm] Align the runtime-test call-helper generator override
- #133407 Fix MIME encoded-word decoding
- #133404 Exclude desktop certificate context test from mobile builds
- #133403 Enable NativeAOT callback stress coverage without SEH interop
- #133402 Enable SuppressGCTransition tests on NativeAOT
- #133401 Enable NativeAOT delegate function-pointer tests
- #133400 Align NativeAOT generic marshalling rejection with CoreCLR
- #133399 Enable supported UnmanagedCallersOnly tests on NativeAOT
- #133398 Narrow NativeAOT interop test exclusions
- #133397 Reject WinRT metadata types in compiler type validation
- #133396 Track NativeAOT BestFitMapping failures with a dedicated issue
- #133368 Fix configuration reload test race
- #133358 JIT: Dispatch OSR resumptions in tail-await-only methods
- #133344 [main] Source code updates from dotnet/dotnet
- #133324 JIT: Improve cast helper fallbacks
- #133292 [release/10.0] Deduplicate "all managed object wrappers" mapping
- #133254 [release/11.0] Fix EC public key export for provider keys
- #133244 Suppress SYSLIB1227 for unions with custom converters
- #133243 Fix JsonSchemaExporter handling of default struct parameters
- #133242 [release/11.0] [mono][llvm] Properly link endfinally to leave targets
- #133138 JIT: Tail-merge fix self-loop handling
- #133093 JIT: fix TrailingZeroCount constant folding on 32-bit targets
- #132930 Use ArrayBuffer in SseParser, deduplicate more logic
- #132895 [release/10.0] Fix crossgen2 rejecting input files with uppercase .DLL/.EXE extensions
- #132823 Handle bare LF in EightBitStream dot-stuffing to prevent SMTP corruption
- #132822 JIT: add JitEnablePhaseChecks, and disable it for the base SuperPMI asm diffs JIT
- #132479 Clarify ArrayRecord handling of Multiple Null Records
- #131995 Regression test validating usage of static TLS resolver on Linux ARM64.
- #131869 Guard against empty remote address on macOS accept
- #131507 Managed ilasm: comprehensive parity fixes with native ilasm
#133531 JIT: expand all stack array allocations in a statement
- 作成者: @EgorBo
- 作成日時: 2026年09月09日 20:15:33(UTC)
- マージ日時: 2026年09月09日 23:24:21(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラのfgExpandStackArrayAllocationsがステートメント内の最初のスタック配列割り当てのみを展開し、後続の割り当てが展開されないバグを修正しました。unexpandedのまま残されたNEWARRヘルパー呼び出しは不正なStackArrayLocal引数を持ち、ローリング時のアサート失敗またはリリースビルドでのAVの原因となっていました。
変更内容
- src/coreclr/jit/helperexpansion.cpp:
Compiler::fgExpandStackArrayAllocationsを修正し、ステートメント内のすべてのスタック配列割り当てヘルパー呼び出しが展開されるまでステートメントを繰り返し走査するように変更。gtUpdateStmtSideEffectsにより副作用フラグの正確性を維持。 - src/tests/JIT/Regression/JitBlue/Runtime_133523/Runtime_133523.cs: 1ステートメント内の複数スタック配列割り当てをカバーするxUnitリグレッションテストを追加(3配列バリアント含む)。
- src/tests/JIT/Regression/Regression_ro_2.csproj: 新規リグレッションテストをビルドに登録。
パフォーマンスへの影響
影響なし(SPMI asm diffsなし)
関連Issue
その他
- 修正はJIT内部実装に限定される(公開API変更なし)
- 破壊的変更なし
- リグレッションテストにより同じ問題の再発防止を実装
#133486 Fix missing Helix queue variables in SuperPMI replay pipelines
- 作成者: @jakobbotsch
- 作成日時: 2026年09月09日 11:31:42(UTC)
- マージ日時: 2026年09月09日 15:10:16(UTC)
- ラベル: area-CodeGen-coreclr
概要
SuperPMI replay Azure Pipelinesでhelix-platforms.ymlの共有テンプレートをインポートし、Windowsキューエイリアス変数を正しく解決できるようにする修正です。標準、APX、WASM の3つのreplay pipelineに対して、Helixプラットフォーム/キュー変数テンプレートを追加しています。
変更内容
- eng/pipelines/coreclr/superpmi-replay.yml:
variables:リストに/eng/pipelines/helix-platforms.ymlをインポート - eng/pipelines/coreclr/superpmi-replay-apx.yml: APX replay向けに同様のテンプレートをインポート
- eng/pipelines/coreclr/superpmi-replay-wasm.yml: WASM replay向けに同様のテンプレートをインポート
各ファイルで1行追加(合計3行)。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 変更は最小限で、eng/pipelines内の他の箇所で確立されているHelix変数使用パターンとの一貫性を確保しています
- Copilotによるレビューで「最小限で一貫性のあるテンプレートインポート」として承認推奨となっています
- このテンプレートインポートにより、下流のテンプレート(キュー選択など)がWindows キューエイリアス変数を正しく解決できるようになります
#133482 [release/11.0] JIT: guard negative-offset bounds inference against underflow
- 作成者: @EgorBo
- 作成日時: 2026年09月09日 11:16:42(UTC)
- マージ日時: 2026年09月09日 18:04:33(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
JITの範囲推論ロジックにおいて、負のオフセットを持つ符号なし比較で下限の推論を行う際、アンダーフローの可能性を考慮していなかった脆弱性を修正します。この問題により、JITが不正に配列境界チェックを削除し、無効な負のインデックスに対してIndexOutOfRangeExceptionをスローする代わりに処理を続行する可能性がありました。
変更内容
- src/coreclr/jit/rangecheck.cpp: 負のオフセット付き符号なし比較
(X + negConst) u< boundから下限を推論する際、既知の定数下限により減算/加算がアンダーフローしないことを証明する条件を追加しました。 - src/tests/JIT/Regression/JitBlue/Runtime_133271/Runtime_133271.cs: アンダーフロー/ラップアラウンドシナリオをカバーし、
IndexOutOfRangeExceptionが適切にスローされることを検証する回帰テストを追加しました。 - src/tests/JIT/Regression/Regression_ro_2.csproj: 新しいテストをプロジェクトに登録しました。
パフォーマンスへの影響
影響なし。この変更はJITの最適化の安全性を向上させるもので、パフォーマンスへの悪影響はありません。
関連Issue
#133272 (オリジナルのPR) #125235 (回帰を引き起こしたPR)
その他
- 回帰情報: .NET 11 RC1で発生し、.NET 10.0.12では発生しない
- リスク評価: 低。変更は既知の定数下限によってアンダーフローが発生しないことが証明される場合にのみ範囲推論を有効にします
- JIT部分の影響: ランタイムのJITコンパイラの内部実装(公開APIへの影響なし)
- セキュリティ: 境界チェック削除による不正なメモリアクセスを防止する重要な修正
#133481 [release/11.0] JIT: fix range assertions for bypassed phi blocks
- 作成者: @EgorBo
- 作成日時: 2026年09月09日 11:16:42(UTC)
- マージ日時: 2026年09月09日 18:03:14(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
JITのrangeチェック最適化においてジャンプスレッディング(jump threading)によりバイパスされたブロックから古い(stale)range assertionが取り込まれる問題を修正します。この不具合により、有効なコードが不可能なエラーパスを実行して予期しない例外をスローする可能性がありました。本修正は.NET 11開発中に導入された回帰を解決します。
変更内容
- rangecheck.cpp/h:
ComputeRangeForLocalDefを修正し、定義サイトでuse-block由来の古いassertionのマージを停止。代わりに使用サイト(useブロック)でMergeAssertionを呼び出し、phi引数に対するエッジ認識マージを活用 - Runtime_133267.cs: jump threading/bypassシナリオにおける古いassertion問題を再現するJIT回帰テストを追加
- Regression_ro_2.csproj: 新規回帰テストをプロジェクトに登録
パフォーマンスへの影響
影響なし。本修正はrangeの計算ロジック調整であり、パフォーマンス面での変化は報告されていません。
関連Issue
#133268(オリジナルのfix) #133267(回帰テストのタイトル名に示唆)
その他
- .NET 11 RC1で回帰を確認、.NET 10.0.12では発生なし
- 修正はChecked JITで検証済み、テストケースが期待値(4)を返すことを確認
- リスク評価:低。range assertionのマージ戦略を制限する小規模な変更で、既存のエッジ認識マージメカニズムに依存
#133480 Exclude job monitor stage when it is disabled in perf.yml
- 作成者: @akoeplinger
- 作成日時: 2026年09月09日 11:00:35(UTC)
- マージ日時: 2026年09月09日 12:24:11(UTC)
- ラベル: area-Infrastructure
概要
eng/pipelines/performance/perf.yml Azure DevOps パイプラインを更新し、Helix Job Monitor ジョブが enableHelixJobMonitor フラグによってコンパイル時に条件付きで実行されるようにしました。これにより、他のランタイムパイプラインで既に使用されている条件付きパターンに統一しています。
変更内容
eng/pipelines/performance/perf.yml:helix-job-monitor.ymlジョブテンプレートを${{ if enableHelixJobMonitor }}ブロックでラップし、フラグがfalseの場合にジョブが除外されるようにしました
パフォーマンスへの影響
影響なし
関連Issue
#132884、#132807 で実施された同様の変更の follow-up です
その他
- YAML 条件付きゲーティングに関する小規模で低リスクな変更
- 既存のランタイムパイプラインのパターンに統一した修正
#133479 [release/11.0] Enable Helix job monitor for runtime perf
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月09日 10:57:09(UTC)
- マージ日時: 2026年09月09日 12:52:51(UTC)
- ラベル: Servicing-approved area-Infrastructure-libraries
概要
release/11.0ブランチにHelixジョブモニター機能を有効化するCI/CDパイプラインの変更です。 本変更は#132807のバックポートで、サービシング承認済みです。
変更内容
- eng/pipelines/performance/perf.yml: Helixジョブモニター関連の設定を追加(9行追加)
パフォーマンスへの影響
影響なし(CI/CDパイプラインの設定変更のため、ランタイムのパフォーマンスには直接影響しません)
関連Issue
その他
- 変更対象: release/11.0ブランチ(リリースブランチ)
- 承認状況: Servicing-approved
#133477 [release/11.0] Fix discarding of NRE's when unboxing nullables in Mono and JIT
- 作成者: @jakobbotsch
- 作成日時: 2026年09月09日 10:36:15(UTC)
- マージ日時: 2026年09月09日 18:06:39(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
Mono および JIT コンパイラが nullable 型の GetType() を最適化する際に null チェックを誤って破棄し、本来 NullReferenceException が発生すべき場合に例外が投げられなくなる不具合を修正するバックポート(#133351 の release/11.0 へのバックポート)です。
変更内容
- JIT (assertionprop.cpp, gentree.cpp, compiler.h): VN ベースの定数折り畳み時に、ルートノードの例外動作を保持するよう修正。未使用の
GetTypeintrinsic を副作用抽出時にNULLCHECKノードに変換し、null チェックが保持されるようにしました。 - Mono インタープリタ (transform.c): nullable box に対する
box + Object.GetType()パターンの書き換えを無効化し、必要な null フォルトが破棄されないようにしました。 - テスト:
bool?.GetType()が null 入力時に例外を投げることを検証するリグレッションテスト (Runtime_133207) を追加しました。
パフォーマンスへの影響
影響なし。この修正は正確性の確保が目的であり、パフォーマンス面での変更はありません。
関連Issue
#133351(元の修正)
その他
- 互換性への影響: 破壊的変更ではなく、不正なバグ修正です。修正前は null 参照時に例外が発生すべきだったのに発生していませんでした。修正後は正しく例外が発生します。
- リスク評価: Low
- テスト: リグレッションテストが追加されています。
#133474 Delete ILCompiler.Compiler.Tests unit test
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月09日 06:56:03(UTC)
- マージ日時: 2026年09月09日 22:24:55(UTC)
- ラベル: area-NativeAOT-coreclr
概要
ILCompiler.Compiler.Tests単体テストプロジェクトを削除し、テスト戦略をEnd-to-End(E2E)テストに統一する変更です。9年間の運用経験から、このプロジェクトのユニットテストは冗長性が高く、AIが追加するテストも価値の低いものが多いと判断されました。Swift lowering テストはILCompiler.TypeSystem.Tests に移行され、今後のテストはsrc/tests配下のE2Eテストに集約される予定です。
変更内容
- 削除: ILCompiler.Compiler.Tests プロジェクトとその資産(DependencyGraphTests.cs、DevirtualizationTests.cs、関連資産)を完全削除
- 移行: Swift lowering テストをILCompiler.TypeSystem.Testsに移行、CoreTestAssemblyにSwift関連テストデータを統合
- ビルド設定: eng/Subsets.propsからclr.toolstestsスブセットを削除、ilc.slnxからプロジェクト参照削除
- テストデータ: SwiftTypes.cs、SwiftTypesSupport.csのネームスペースを
TypeSystemTests.TestData.SwiftTypesに変更、Platform.csにInlineArrayAttribute定義を追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
⚠️ 重大な問題: このPRは現在ビルド失敗を含んでいます(Copilot指摘):
SwiftLoweringTests.cs:35-MetadataType参照の曖昧性(System.Reflection.MetadataとInternal.TypeSystemの両方で定義)によるCS0104エラーSwiftTypesSupport.cs:7- 未使用のusing System.Runtime.InteropServices;によるCS8019エラーSwiftTypes.cs:8- 未使用のusing System;によるCS8019エラーSwiftLoweringTests.cs:39- Offsets解析ロジックの誤りで、Offsets属性データが常に無視される可能性
マージ前にこれらの問題を修正する必要があります。
戦略的背景: 今後AIは、単体テストではなくsrc/tests配下でのE2Eテスト追加に従うべきとされています。E2Eテストは全ランタイム・AOTコンパイラ、全ストレスモード・最適化レベルで実行されるため、単体テストより価値が高いと判断されました。
#133463 Restore non-blocking browser WASM R2R runtime tests
- 作成者: @lewing
- 作成日時: 2026年09月09日 02:22:35(UTC)
- マージ日時: 2026年09月09日 22:36:43(UTC)
- ラベル: arch-wasm area-Infrastructure-coreclr
概要
WebAssembly上のブラウザCoreClR向けReadyToRun(R2R)ランタイムテストR2R_CG2ジョブをデフォルトruntimeパイプラインに復元しました。このジョブはエラーで継続実行され、共有Helixモニターをオプトアウトするため、既知の製品障害が関連のないPRをブロックしません。複数の既知の問題(#132855、#133219、#133307、#133464–#133469、#133502–#133506など)に対応する対象的なテスト/プロジェクト除外を追加しています。
変更内容
- パイプライン設定:
eng/pipelines/runtime.ymlに非ブロッキングbrowser_wasmR2R_CG2ランタイムテストジョブを追加(continue-on-error、Helixモニター除外) - テスト除外:
ActiveIssue属性を使用してbrowser-wasm + R2Rモード向けの特定テストをゲート - プロジェクト除外:
R2RIncompatibleマーク(browser CoreCLRのみ)とBypassReadyToRun属性による方法レベルの除外を追加- 複数のJITテスト、GC、Loader関連テストプロジェクトが対象
- InterpreterTesterは
TestMdArrayとTestPInvokeのみバイパス、他は継続実行 Runtime_76273、GitHub_22888、Regression4はAssembly.Locationが空の場合の処理を改善- アウトプロセス実行が必要なテスト(
StructABI、more_tailcalls、Runtime_101046)も除外
- テストライブラリ:
PlatformDetection.csにwasm R2R検出ヘルパー追加
パフォーマンスへの影響
影響なし
関連Issue
- #133305(修正対象)
- #133294(ジョブ削除PR)
- #133308(テンポラリ実装)
- #132855、#133219、#133307、#133464–#133469、#133502–#133506(既知の課題トラッカー)
その他
- 非ブロッキング状態: 既知の除外が削除され、ローリング検証が良好になるまで意図的に非ブロッキング。新しい障害は専用R2Rジョブと公開テスト結果で可視化
- コード品質: 複数ファイルでTEST_READY_TO_RUN_MODEの直接読み取りが指摘されており、将来的には共有テストインフラプレディケートの使用が推奨されています
- ビルド問題:
Runtime_76273.csに未使用の`using System
#133461 Address Wasm unboxing stub review feedback
- 作成者: @davidwrighton
- 作成日時: 2026年09月08日 23:54:01(UTC)
- マージ日時: 2026年09月09日 18:36:40(UTC)
- ラベル: area-VM-coreclr
概要
WebAssemblyの非ボックス化スタブ解決ロジックのコード整理とVM契約パターンの一貫性向上。GetUnboxingStub関数でSTANDARD_VM_CONTRACTマクロを使用し、LookupPortableEntryPointThunkを活用して、スタブポインタをvoid*型として統一的に扱う変更。
変更内容
- src/coreclr/vm/wasm/helpers.cpp
GetUnboxingStub関数の明示的なCONTRACTLブロックをSTANDARD_VM_CONTRACTマクロに置き換え- 事前生成されたアンボックス化スタブの検索を
LookupPortableEntryPointThunkに変更し、解決済みスタブをvoid*型として保持 PCODEキャストを削除し、nullptrとの比較に統一
パフォーマンスへの影響
影響なし。この変更は基盤となる検索動作(LookupPregeneratedThunkByStringによる支援)を保持したまま、型の一貫性とコード整理を改善するもの。
関連Issue
#133218(前回のレビュー指摘への対応)
その他
- WebAssemblyプラットフォーム向けの内部ランタイム実装の変更(公開API非対象)
- ReadyToRun機能に関連するWasmVirtualMethodGenericsテストで検証済み(2テスト合格)
- 変更範囲は限定的で、アンボックス化スタブ解決フローに影響なし
#133444 Skip Runtime_133101 on Windows Mono MiniJIT
- 作成者: @lewing
- 作成日時: 2026年09月08日 20:52:22(UTC)
- マージ日時: 2026年09月09日 00:34:38(UTC)
- ラベル: area-Infrastructure
概要
Windows x64 Mono MiniJIT環境でRuntime_133101テストが実行時にアクセス違反(0xC0000005)で終了する問題に対応して、該当環境でのみテストをスキップするよう[ActiveIssue]条件を追加する変更です。他のランタイム、OS、アーキテクチャ構成では通常通りコンパイルおよび実行されます。
変更内容
- src/tests/JIT/Regression/JitBlue/Runtime_133101/Runtime_133101.cs: Windows x64 Mono MiniJIT環境に限定した
[ActiveIssue]属性を追加(+2行)
パフォーマンスへの影響
影響なし
関連Issue
その他
- テストはWindows x64 Mono MiniJIT構成でも引き続きコンパイルされ、問題の環境以外ではスキップされません
- 検証済み:macOS arm64 Checked環境で同テストおよび関連テスト(Runtime_133207)が実行・合格確認
- クラッシュ時のTRXが生成されず特定のKBE(Known Build Error)に一致しないため、ソースレベルの
ActiveIssue条件で対応
#133441 Add & use OperatingSystem.IsOpenBSD,VersionAtLeast
- 作成者: @am11
- 作成日時: 2026年09月08日 19:43:33(UTC)
- マージ日時: 2026年09月09日 18:39:53(UTC)
- ラベル: area-System.Runtime community-contribution os-openbsd
概要
OpenBSD のプラットフォーム検出API (OperatingSystem.IsOpenBSD() と OperatingSystem.VersionAtLeast()) を追加し、既存のコードベースでそれらを活用します。これにより、OpenBSD固有の条件分岐が統一された公開APIを通じて実装できるようになります。
変更内容
- System.Private.CoreLib/System/OperatingSystem.cs:
IsOpenBSD()メソッドと関連するバージョン検出ロジックを実装 - System.Runtime/ref/System.Runtime.cs: 公開APIメタデータに新しいメソッドのシグネチャを追加
- System.Net.Security/LocalAppContextSwitches.cs: OpenBSD チェックを新API に置き換え
- System.Net.Security/TestConfiguration.cs: テスト設定内の OpenBSD 検出ロジックを更新
- System.Net.Sockets/Socket.cs: ソケット実装での OpenBSD 検出を更新
パフォーマンスへの影響
影響なし
関連Issue
その他
このPRは2つのコミットで構成されており、2番目のコミットはコード整形に関するものです。これはGitフックが参照ファイルの更新を検出した際の自動整形結果です。
#133440 Handle unresolved TypeMap attribute types in Crossgen2
- 作成者: @jtschuster
- 作成日時: 2026年09月08日 19:36:42(UTC)
- マージ日時: 2026年09月09日 16:23:06(UTC)
- ラベル: area-Interop-coreclr area-ReadyToRun
概要
Crossgen2でTypeMap属性のデコード処理を既存の例外ハンドリング内に移動し、シリアル化された型名の解決失敗時にランタイムフォールバックを使用するようにしました。これにより、Crossgen2が異常終了する代わりに、エラーを記録して処理を継続できるようになります。
変更内容
- src/coreclr/tools/Common/Compiler/TypeMapMetadata.cs
TypeMapMetadata.CreateFromAssemblyメソッド内で、attr.DecodeValue(new TypeMapCustomAttributeTypeProvider(...))の呼び出しを既存のTypeSystemExceptiontry/catchブロック内に移動- 解決できないシリアル化型名はフォールバック処理によって適切に処理されるようになり、クラッシュを回避
パフォーマンスへの影響
影響なし
関連Issue
#133038(先行するPRで発見されなかったTypeMapテスト失敗に対応)
その他
- この変更は内部実装(Crossgen2のAOT コンパイラ処理)に限定された修正です
- 公開APIには影響しません
- 既存の例外ハンドリング設計に沿った狭い範囲の修正であり、意図した失敗処理パス外の動作は変更されません
#133439 [release/11.0] Stabilize ConnectAsync_Cancel_ThrowsCancellationException loopback test
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月08日 19:27:37(UTC)
- マージ日時: 2026年09月09日 12:55:16(UTC)
- ラベル: Servicing-approved area-System.Net
概要
loopbackテストのConnectAsync_Cancel_ThrowsCancellationExceptionを安定化させるバックポート。テスト自体の信頼性向上を目的とした変更です。
変更内容
- src/libraries/System.Net.WebSockets.Client/tests/CancelTest.Loopback.cs: テストの安定性改善のため57行追加、2行削除(総59行)
パフォーマンスへの影響
影響なし(テストコードの変更のため)
関連Issue
#133200(オリジナルPR)
その他
- 本PRはrelease/11.0ブランチへのバックポート
- テストの安定化を目的とした変更で、本体機能への影響なし
#133434 JIT: preserve recursive tail call flag during inlining
- 作成者: @AndyAyersMS
- 作成日時: 2026年09月08日 19:17:04(UTC)
- マージ日時: 2026年09月09日 14:17:15(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラのインライニング処理中に、BBF_RECURSIVE_TAILCALL基本ブロックフラグが失われる問題を修正しました。GT_RET_EXPRプレースホルダ置換時にフラグ伝播マスクを拡張し、再帰的テイルコール最適化の不変式を保つことで、checked-JIT環境でのアサーション失敗を解決しています。
変更内容
- src/coreclr/jit/block.h:
CopyFlags伝播マスクを拡張し、GT_RET_EXPR置換時にBBF_RECURSIVE_TAILCALLフラグを含めて伝播するよう修正
パフォーマンスへの影響
影響なし。フラグ伝播の追加であり、実行ロジックの変更ではありません。
関連Issue
その他
- narrowly scopedな変更で、既存フラグ伝播パターンと一貫性を保っています
- debug buildでのアサーション検証と本番環境での実際の動作に齟齬がないよう確保する修正です
#133427 Fix duplicate fake authentication success response
- 作成者: @simonrozsival
- 作成日時: 2026年09月08日 17:18:24(UTC)
- マージ日時: 2026年09月09日 08:37:55(UTC)
- ラベル: area-System.Net.Http
概要
NTLM/Negotiate認証をテストするための偽のサーバーが重複した認証成功応答を送信していた問題を修正。修正により、認証成功時に正確に1つのターミナル応答のみを送信し、Connection: closeヘッダを追加して後続リクエストが新しいHTTP/1.1接続を使用するようになります。これはAndroidでのタイムアウトやネットワーク遅延に伴う不安定性を解決します。
変更内容
- src/libraries/System.Net.Http/tests/FunctionalTests/NtAuthTests.FakeServer.cs
- 偽のNTLM/Negotiateサーバーのループロジックを調整し、認証完了後の無条件な追加の
200 OK応答を削除 - ターミナル成功応答に
Connection: closeヘッダを追加して接続を明示的にクローズ - 認証成功応答のカウント(
successfulResponseCount)を返すように変更 Http2_SessionAuthChallenge_SubsequentRequestsUseHttp11テストに、偽サーバーが正確に1つの認証成功応答を生成したことをアサートする検証を追加
- 偽のNTLM/Negotiateサーバーのループロジックを調整し、認証完了後の無条件な追加の
パフォーマンスへの影響
影響なし(テストインフラストラクチャの修正)
関連Issue
その他
- テスト検証:Android arm64で従来の動作は
Expected: 1, Actual: 2で失敗していたが、修正後はNTLMとNegotiateの両ケースで成功 - 複数プラットフォーム(Android、macOS)でのリグレッション確認済み
- 変更範囲はテストコードのみで、公開APIや本体実装への影響なし
#133419 [wasm] Align the runtime-test call-helper generator override
- 作成者: @radekdoulik
- 作成日時: 2026年09月08日 14:00:29(UTC)
- マージ日時: 2026年09月09日 18:49:17(UTC)
- ラベル: arch-wasm area-Infrastructure
概要
WASM runtime-testのコアラン呼び出しヘルパー生成を、ブラウザ/WASIアプリビルドと一致させるため、プライベートプロパティ_WasmCorerunGeneratorPathから共有プロパティPortableCallHelpersGeneratorPathへ統一します。既存のイン・リポジトリジェネレータフォールバック(Crossgen2InBuildDir)は保持されます。
変更内容
- src/tests/Common/CLRTest.WasmCorerun.targets: ジェネレータパス参照を
PortableCallHelpersGeneratorPathに変更し、診断メッセージとExec実行を更新 - src/mono/browser/build/BrowserWasmApp.CoreCLR.targets: Crossgen2パス解決ロジックを一貫性のため調整
- src/mono/wasi/build/WasiApp.CoreCLR.targets: Crossgen2パス解決ロジックを一貫性のため調整
変更は内部MSBuildビルドターゲットで、公開APIには影響しません。
パフォーマンスへの影響
影響なし
関連Issue
#131877のレビューフィードバック対応
その他
互換性上の懸念: 複数のレビュアーから、_WasmCorerunGeneratorPathとPortableCallHelpersGeneratorPathの削除が破壊的変更となる可能性が指摘されています。既存の社外ビルドやカスタマイズが旧プロパティに依存している場合、サイレントに動作しなくなる恐れがあります。後方互換性のための別名設定(新プロパティ優先)の検討が推奨されます。
#133407 Fix MIME encoded-word decoding
- 作成者: @rzikm
- 作成日時: 2026年09月08日 09:30:03(UTC)
- マージ日時: 2026年09月09日 08:33:21(UTC)
- ラベル: area-System.Net
概要
RFC 2047 MIME エンコード・デコード処理を改善し、通常のASCIIテキストと混在するエンコード語を正しく処理できるようにしました。主な改善点は以下の通りです:
- トークン単位でのRFC 2047エンコード語デコード処理
B/Qエンコーディング識別子の大文字小文字を区別しない処理- 通常テキスト周辺の線形空白を保持しつつ、隣接するエンコード語間の空白は抑制
MailMessage.SubjectおよびContentType.Nameにおける混在エンコード語の認識
変更内容
- MimeBasePart.cs: トークンベースのRFC 2047デコードロジックを実装。線形空白でトークン化し、各トークントがエンコード語かどうかを判定するようリファクタリング(+233行)
- ContentType.cs/ContentDisposition.cs:
DecodeHeaderValue呼び出しの微調整 - テスト追加:
- ByteEncodingTest:混在ASCII/エンコード語デコードと識別子大文字小文字対応のテスト(25件合格)
- MessageHeaderBehaviorTest:Subjectの混在入力に関する回帰テスト(15件合格)
- ContentTypeTest/ContentDispositionTest:
Nameフィールド内のエンコード語デコード機能テスト(30件合格)
パフォーマンスへの影響
影響なし
関連Issue
その他
- 公開API (
MailMessage.Subject、ContentType.Name) に流入するシナリオで未知の文字セット時に例外が発生する可能性あり Q/qデコード経路の新規テストカバレッジが部分的(Base64のテストが中心)- 不正形式のペイロード動作は既存のまま保持
- ビルド結果:警告0件、エラー0件
#133404 Exclude desktop certificate context test from mobile builds
- 作成者: @rzikm
- 作成日時: 2026年09月08日 08:26:30(UTC)
- マージ日時: 2026年09月09日 08:34:57(UTC)
- ラベル: area-System.Net.Security
概要
デスクトップ専用の証明書コンテキスト所有権テストがtvOSを含むモバイルビルドでコンパイルされてしまい、OpenSSL固有パスで実行時エラーが発生する問題を修正します。MSBuildの条件にTargetsMobileチェックを追加して、tvOSおよび他のモバイルビルドからテストを除外します。
変更内容
- src/libraries/System.Net.Security/tests/UnitTests/System.Net.Security.Unit.Tests.csproj
SslAuthenticationOptionsTests.Desktop.csのItemGroup条件を更新- 既存の
TargetPlatformIdentifierホワイトリスト(windows/unix/osx)に加えて、TargetsMobile != trueの条件を追加 - これによりtvOS、iOS、Android、ブラウザビルドからテストを除外
パフォーマンスへの影響
影響なし
関連Issue
その他
- 検証済み:Windows デスクトップターゲットではファイルが含まれることを確認
- 検証済み:tvOS(
TargetsMobile=true,TargetPlatformIdentifier=unix)ではファイルが除外されることを確認 - 検証済み:iOS内部ビルドではファイルが除外されることを確認
- テスト結果:System.Net.Security.Unit.Tests で121パス、0失敗、4スキップ
- 最小限の変更で既存リポジトリパターンに準拠した低リスク修正
#133403 Enable NativeAOT callback stress coverage without SEH interop
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月08日 08:10:30(UTC)
- マージ日時: 2026年09月09日 05:14:57(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeLibrary callback stress testをNativeAOTを含むより多くのランタイムで実行できるようにするため、ネイティブ例外伝播処理をランタイム機能チェック(IsExceptionInteropSupported)でゲーティングし、ネイティブライブラリのパス解決にはヘルパーメソッドを使用するように改善しました。
変更内容
CallbackStressTest.cs:DllImportResolver内でネイティブライブラリをロードする際にNativeLibraryToLoad.GetFullPath()を使用し、NativeAOTレイアウトに対応- Windows SEH例外伝播(
RaiseException/SEHException)をPlatformDetection.IsExceptionInteropSupportedでゲーティング - NativeAOT固有の
[ActiveIssue]スキップを削除し、テストがNativeAOTでも実行可能に(ただし非サポート環境では例外interop部分のみスキップ)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
テストスコープの変更で、既存のインタロップテストスイート全体で使用されているパターン(GetFullPathおよびIsExceptionInteropSupported)に統一されました。これにより、NativeAOTを含むより広いランタイムでの callback stress coverage が実現します。
#133402 Enable SuppressGCTransition tests on NativeAOT
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月08日 08:10:03(UTC)
- マージ日時: 2026年09月09日 05:12:08(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT環境でのSuppressGCTransitionテストの実行を有効にするため、ネイティブライブラリの探索ロジックをNativeAOTの出力レイアウト差異に対応させ、テスト側の除外条件を削除しました。
変更内容
- src/tests/Interop/SuppressGCTransition/SuppressGCTransitionTest.cs
- ネイティブライブラリ探索ロジックをNativeAOT環境に対応させ、実行ファイルのサブディレクトリ構造を考慮
- NativeAOT環境における
ActiveIssueスキップ条件を削除してテスト実行を有効化
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
変更はテストインフラストラクチャの改善で、本体ランタイムコード(公開API/内部実装)には影響しません。NativeAOT環境でのテストカバレッジを拡大するための変更です。Copilotのレビューコメントでは、Assembly.Locationの回避とAppContext.BaseDirectoryおよびその親ディレクトリの両方をプローブする堅牢性の向上が推奨されています。
#133401 Enable NativeAOT delegate function-pointer tests
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月08日 08:09:10(UTC)
- マージ日時: 2026年09月09日 05:10:26(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOTでデリゲート-関数ポインタ相互運用性テストを実行可能にするため、TestFunctionPointerから誤って配置されたIDispatch関連の[ActiveIssue]属性を削除します。このテストはIDispatch/COM機能に依存しておらず、NativeAOT環境での実行をブロックすべきではないため、スキップ条件を解除するものです。
変更内容
- src/tests/Interop/PInvoke/Delegate/DelegateTest.cs:
runtimelab#176に関連するIDispatch用の[ActiveIssue(..., Utilities.IsNativeAot)]属性をTestFunctionPointerから削除(-1行)
パフォーマンスへの影響
影響なし(テストカバレッジの拡大のみ)
関連Issue
その他
- この変更により、デリゲート-関数ポインタのP/Invoke相互運用性テストがNativeAOT環境でも実行されるようになります
- IDispatch/COM関連のテストは
TestIDispatchに隔離されたままで、本来の目的に応じたテスト分離が実現します
#133400 Align NativeAOT generic marshalling rejection with CoreCLR
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月08日 08:08:33(UTC)
- マージ日時: 2026年09月09日 04:57:00(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT のジェネリック型マーシャリング動作を CoreCLR と統一するため、マーシャリング分類ルールを強化しました。ジェネリックインターフェースの拒否とジェネリック型のバリデーションを追加し、38個の無効化されていた Interop/PInvoke/Generics テストを再度有効化します。
変更内容
src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs
- ジェネリックインターフェースのマーシャリングを拒否するロジックを追加
- blittable byref 戻り値を受け入れる前にジェネリック型のバリデーションを実施
- 内部実装の変更(MarshalHelpers クラスの marshalling 分類ロジック)
38個のテストファイル(Generics テストスイート)
- Vector、Vector64、Vector128、Vector256、Span、ReadOnlySpan、IComInterface テストから
ActiveIssue(... IsNativeAot ...)スキップを削除 - NativeAOT プラットフォームでのテスト実行を再度有効化
- Vector、Vector64、Vector128、Vector256、Span、ReadOnlySpan、IComInterface テストから
パフォーマンスへの影響
影響なし
関連Issue
その他
- この変更は CoreCLR の既存の期待値と NativeAOT の動作を統一するもの
- 広範な先行無効化(wide disablement)が誤ってテストにコピーペーストされていたため、適切なテスト再有効化
- P/Invoke インターポップ機能に関する変更のため、プラットフォーム/設定横断での検証が推奨されています
#133399 Enable supported UnmanagedCallersOnly tests on NativeAOT
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月08日 08:06:29(UTC)
- マージ日時: 2026年09月09日 06:08:34(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT環境下でUnmanagedCallersOnly相互運用テストを実行可能にするPRです。主な変更として、ジェネリック型のインスタンス化されたメソッドを典型的な定義に正規化してから呼び出し規約を読み取ることで、コンパイラクラッシュを回避しています。また、プロジェクト全体のNativeAOT除外条件を削除し、NativeAOTで動作が異なる負のテストケースのみに条件を絞っています。
変更内容
- src/coreclr/tools/Common/TypeSystem/Interop/UnmanagedCallingConventions.cs:
UnmanagedCallersOnlyAttributeの呼び出し規約を読み取る前に、メソッドをGetTypicalMethodDefinition()で正規化し、無効なジェネリック宣言のクラッシュを防止(内部実装) - src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.csproj: プロジェクト全体のNativeAOT除外属性を削除
- src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs: NativeAOTで例外動作が異なる負のテストケースのみに
[ConditionalFact(...IsNotNativeAot)]を適用 - src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyNegativeTest.csproj: NativeAOT除外を削除し、NativeAOT固有のWindows致命的終了コードを設定
パフォーマンスへの影響
影響なし
関連Issue
#130233に関連する残存する無効なテストケース
その他
- この変更は内部実装(コンパイラのタイプシステム処理)への修正であり、公開APIへの影響はなし
- テスト除外の範囲を狭めることで、NativeAOT環境でのテスト保証範囲が拡大
- CoreCLRでのテスト動作と異なるNativeAOT固有の動作についての詳細は別途追跡が必要
#133398 Narrow NativeAOT interop test exclusions
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月08日 08:05:25(UTC)
- マージ日時: 2026年09月09日 05:02:18(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT環境でのinterop テストカバレッジを拡大するため、プロジェクト単位の除外設定(NativeAotIncompatible)を削除し、未サポートの特定マーシャリング シナリオのみをインライン ガード(!Utilities.IsNativeAot)で除外する変更です。これにより、実装予定のない機能を除き、可能な限り多くのinterop テストを実行できるようになります。
変更内容
プロジェクト ファイル: 4つのinterop テスト プロジェクト(.csproj)から
<NativeAotIncompatible>true</NativeAotIncompatible>を削除- BestFitMapping
- MarshalStructAsLayoutSeq
- DelegatePInvokeTest
- ReversePInvokeTest
テスト コード:
UnmanagedType.Error、System.Delegate フィールド、特定のLPSTR-out コールバックなど、NativeAOT未サポートの特定パスにランタイム ガードを追加!Utilities.IsNativeAot/!TestLibrary.Utilities.IsNativeAot条件で S8/S9 テスト ケースの実行をスキップ- スキップ理由を Issue リンクで注記
パフォーマンスへの影響
影響なし
関連Issue
その他
- 互換性への影響: テスト カバレッジの変更のみで、ランタイムの公開 APIに変更なし(テスト コード内部の変更)
- 留意事項: Copilot による指摘として、NativeAOT ガードが呼び出しサイトのみをスキップしていますが、未サポートのinterop パスがスイッチ本体で常に到達可能な状態のため、NativeAOT コンパイルが失敗する可能性が残存している点が挙げられています
#133397 Reject WinRT metadata types in compiler type validation
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月08日 08:03:18(UTC)
- マージ日時: 2026年09月09日 05:16:40(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT コンパイラの型検証ルールを強化し、WinRT メタデータ型(tdWindowsRuntime)を TypeLoadException で明示的に拒否するように変更しました。これにより CoreCLR の動作に統一され、NativeAOT 特有の例外処理が不要になります。対応する WinRT Interop リグレッション テストもスキップ解除され、NativeAOT 環境下で実行されるようになります。
変更内容
- src/coreclr/tools/Common/Compiler/CompilerTypeSystemContext.Validation.cs:
EnsureLoadableTypeUncachedメソッドに WinRT 型チェック(type.IsWindowsRuntime)を追加し、該当する場合はThrowHelperを介してTypeLoadExceptionをスロー - src/tests/Interop/WinRT/Program.cs: NativeAOT 環境下での条件付きスキップを削除し、WinRT リグレッション テストを有効化
パフォーマンスへの影響
影響なし
関連Issue
その他
- この変更は NativeAOT 固有の特例処理を削除し、CoreCLR との一貫性を実現する簡潔な修正です
- コンパイル時の型検証ルール変更のため、AOT/ツール チェーン全体に広く影響する可能性がありますが、CoreCLR の既存動作と同期させるものであるため、互換性上の問題は想定されていません
#133396 Track NativeAOT BestFitMapping failures with a dedicated issue
- 作成者: @MichalStrehovsky
- 作成日時: 2026年09月08日 08:02:07(UTC)
- マージ日時: 2026年09月09日 05:00:14(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT環境でのBestFitMappingインタロップテストの失敗を追跡するため、ActiveIssue属性が指すIssueをruntimelabから専用のdotnet/runtime Issueに変更しました。テストが正当なバグ(マーシャリング非サポートではない)に遭遇していることを反映した変更です。
変更内容
- src/tests/Interop/PInvoke/BestFitMapping/Program.cs: NativeAOT
ActiveIssue属性のURL参照を新しいdotnet/runtime issue(#133395)に更新
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#133368 Fix configuration reload test race
- 作成者: @svick
- 作成日時: 2026年09月07日 16:36:58(UTC)
- マージ日時: 2026年09月09日 17:36:23(UTC)
- ラベル: area-Extensions-Configuration
概要
構成ファイルリロード時の競合状態を修正するテスト改善です。FileConfigurationProviderがデータを更新してからプロバイダーのリロードトークンを発行するため、ルートのリロードトークンが変更される前に期待値が見える競合が発生していました。待機条件を強化し、期待値かつ対応するルートリロードトークン通知の両方を確認してからテストを続行するようにしました。
変更内容
- src/libraries/Microsoft.Extensions.Configuration/tests/FunctionalTests/ConfigurationTests.cs
DeletingFilesThatRedefineKeysWithReloadテストの各待機条件を更新- 期待される設定値の確認に加えて、
token.HasChangedでリロードトークンの変更も確認する条件を追加 nullチェックをis nullパターンに統一
パフォーマンスへの影響
影響なし(テストコードのみの変更)
関連Issue
その他
- テスト専用の修正であり、プロダクトコードには影響なし
- 20回の繰り返し実行(40理論ケース)でレグレッションがないことを確認済み
- 競合状態による不安定なテストを排除するための同期化条件の強化
#133358 JIT: Dispatch OSR resumptions in tail-await-only methods
- 作成者: @jakobbotsch
- 作成日時: 2026年09月07日 15:02:32(UTC)
- マージ日時: 2026年09月09日 15:03:18(UTC)
- ラベル: area-CodeGen-coreclr
概要
Tier0段階で末尾の待機のみを含む非同期メソッドが、OSR(オンスタック置換)バージョンではインライン化によって非末尾待機を獲得する場合、OSR再開時に制御が正しく転送されない問題を修正します。Tier0に中断状態がない場合でも再開ディスパッチを生成することで、OSR継続が適切にOSRメソッドに制御を転送できるようにします。
変更内容
- src/coreclr/jit/async.cpp: Tier0の再開ディスパッチロジックを更新。通常の待機がなくパッチポイント/OSRが存在する場合でも、再開ディスパッチスイッチを生成。OSRジャンプブロック作成ロジックを
CreateOSRJumpBBヘルパーとして抽出し、再開ディスパッチロジックで再利用。 - src/coreclr/jit/async.h:
CreateOSRJumpBBヘルパーメソッドを宣言。 - src/tests/async/osr-inlined-contexts/osr-inlined-contexts.cs: Tier0が末尾待機のみで、OSRバージョンがインライン化で非末尾待機を獲得するメソッドの再開をカバーする回帰テストを追加。
パフォーマンスへの影響
影響なし
関連Issue
その他
JIT非同期変換の制御フロー正確性に関する修正であり、特にOSRと非同期メソッドの相互作用に関する微妙な領域への変更です。コア設計の変更ではなく、内部実装(CoreCLR JIT)の修正であり、公開APIへの影響はありません。破壊的変更なし。
#133344 [main] Source code updates from dotnet/dotnet
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年09月07日 09:38:45(UTC)
- マージ日時: 2026年09月09日 07:21:17(UTC)
- ラベル: area-codeflow
概要
dotnet/dotnetからの定期的なCodeflow更新です。ビルド日時は2026年9月8日で、コンパイラツール、ビルドタスク、ランタイム関連のライブラリを含む複数の依存パッケージが更新されました。Microsoft.CodeAnalysis、Microsoft.DotNet.Arcade.Sdk、System.Reflection.Metadata、System.Text.Json など主要なコンポーネントのバージョンが上がっています。
変更内容
- ビルド設定: global.json、eng/Versions.props、eng/Version.Details.props/.xmlを更新
- 依存パッケージの更新:
- Microsoft.CodeAnalysis系: 5.12.0-1.26431.109 → 5.12.0-1.26458.102
- Microsoft.DotNet.Arcade.Sdk: 11.0.0-beta.26431.109 → 11.0.0-beta.26458.102
- System.Reflection.Metadata、System.Text.Json: 11.0.0-rc.1.26431.109 → 12.0.0-alpha.1.26458.102
- NuGet関連パッケージ: 7.11.0-rc.43209 → 7.12.0-rc.45902
- System.CommandLine: 3.0.0-rc.1.26431.109 → 4.0.0-alpha.1.26458.102
- 新規追加: Microsoft.DotNet.GenAPI.Task 12.0.100-alpha.1.26458.102
- 削除: Microsoft.NET.Workload.Emscripten.Current.Manifest-11.0.100.Transport
- プラットフォーム別LLVM/Monoツール: 23.1.0-alpha.1.26420.1 → 23.1.0-alpha.1.26451.1
- その他: ツール設定ファイル、パイプライン設定、Wasmテンプレートテストなどのマイナー更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはVMR(Virtual Monolithic Repository)からの自動Codeflow更新で、複数の下流リポジトリ(arcade、aspnetcore、cecil、diagnostics、efcore、fsharp、msbuild、nuget.client、roslyn、runtime、sdk、winforms、wpf等)の変更を統合しています。System.Reflection.MetadataやSystem.Text.JsonがRC/Alphaバージョンに更新されているため、互換性検証が必要な場合があります。
#133324 JIT: Improve cast helper fallbacks
- 作成者: @EgorBo
- 作成日時: 2026年09月06日 17:32:59(UTC)
- マージ日時: 2026年09月09日 12:10:44(UTC)
- ラベル: area-CodeGen-coreclr
概要
JIT コンパイラのキャスト展開処理を最適化し、キャストヘルパーのフォールバック処理をより効率的に生成するもの。正確な型へのキャストでは型チェック失敗時に常に例外をスローすることを活用し、フォールバックを簡潔にするとともに、より専門的なヘルパーの利用条件が既に守られている場合は CHKCASTCLASS_SPECIAL ヘルパーを優先的に選択。
変更内容
- src/coreclr/jit/helperexpansion.cpp: キャスト展開の候補選択とフォールバック戦略を調整
- 正確な型へのキャスト(
CHKCASTCLASS/CHKCASTARRAY)のフォールバックを常にスローするとして分類し、フォールバックブロックにno-return属性を付与 - null チェックと正確な型等価性チェックがすでに展開内で行われている場合、
CHKCASTCLASS_SPECIALヘルパーの選択を優先 - 正確な型処理とフォールバック動作に関するコメント整理
- 正確な型へのキャスト(
パフォーマンスへの影響
改善。アセンブリコードの生成において:
- 不要な分岐命令を削除(
je SHORT G_M14817_IG05をjne SHORT G_M25441_IG05に変更) - フォールバック時に即座に例外スロー処理へ遷移し、中間的な
nop命令を削除 - 例外ケースではヘルパーが常にスローするため、フォールバック後の制御フロー簡潔化
- 汎用ジェネリックコード部分でも
CHKCASTCLASS_SPECIALヘルパーへの切り替えで最適化
関連Issue
なし
その他
本変更は JIT のコア実行パスに影響する型チェック処理であり、正確性とパフォーマンスのテストカバレッジによる検証が必要と指摘されています。
#133292 [release/10.0] Deduplicate "all managed object wrappers" mapping
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月05日 05:32:39(UTC)
- マージ日時: 2026年09月09日 18:18:33(UTC)
- ラベル: Servicing-approved area-System.Runtime.InteropServices
概要
COM経由でマネージドオブジェクトを渡す際にComWrappersで管理されているマネージドオブジェクトの重複排除を実装するパッチです。同じCOMインスタンスを再利用してもメモリ使用量が増加し続ける問題(メモリリーク)を解決します。この変更はPR #133260のrelease/10.0へのバックポートです。
変更内容
- src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs
- "all managed object wrappers"マッピング内の重複要素を排除するロジックを追加(7行の変更、削除1行、追加6行)
- マネージドオブジェクトがComWrappersを通じてCOMに渡される際に、既存インスタンスの再利用時に冗長なコレクション要素が生成される問題を修正
パフォーマンスへの影響
改善: メモリ使用量の削減
- COM経由でマネージドオブジェクトを繰り返し渡す場合、メモリリークが解決されます
- コレクション内の想定要素数は最大2個程度であるため、ハッシュテーブルを使用する必要はなく効率的です
- 顧客報告の問題では修正後にコレクションに1要素のみ保持されることが期待されています
関連Issue
#133260(main向けの元PR) #113907(この変更が対応する回帰の原因PR)
その他
- リスク評価: 低リスク。変更はSOS(デバッグツール)に公開されているAPIのみに影響し、他のコンシューマーは利用していません
- テスト: SOS経由でのローカル検証が実施されています
- 互換性: .NET 10+のリリースブランチ向けバックポートであり、互換性への懸念なし
#133254 [release/11.0] Fix EC public key export for provider keys
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月04日 18:58:46(UTC)
- マージ日時: 2026年09月09日 22:21:20(UTC)
- ラベル: Servicing-approved area-System.Security
概要
OpenSSL Providersから提供されるECDSAキー(PKCS#11 Providerなど)の公開鍵エクスポート機能を修正しました。このバグ修正により、カスタムOpenSSL Providerを使用する際に公開鍵をエクスポートできるようになり、X509Certificate2.CopyWithPrivateKey(ECDsa)のような関連APIが正常に動作するようになります。
変更内容
- pal_ecc_import_export.c: EC公開鍵エクスポート処理に代替手段を追加。既存のエラーパスで異なる方法でキー処理を試行するようにしました。
- opensslshim.h/osslcompat_30.h: OpenSSL互換性のためのシム定義を追加(6行、3行)。
パフォーマンスへの影響
影響なし
関連Issue
その他
- 対象: release/11.0ブランチへのバックポート
- 影響度: 低。修正は既存エラーパスの代替処理であり、最悪でも以前と同じエラーが発生するのみ
- テスト: 顧客から報告された再現ケースで検証済み。カスタムProviderの性質上、新規テストの追加は困難だが、既存のnon-customProviderに対する十分なテストカバレッジがあります
- 破壊的変更: なし
- 顧客インパクト: 顧客報告あり。OpenSSL Providersから提供されるECDSAキーの使用を可能にするため
#133244 Suppress SYSLIB1227 for unions with custom converters
- 作成者: @eiriktsarpalis
- 作成日時: 2026年09月04日 15:39:21(UTC)
- マージ日時: 2026年09月09日 07:21:51(UTC)
- ラベル: area-System.Text.Json
概要
System.Text.Json ソースジェネレータが、型レベルの [JsonConverter] 属性を持つ型の場合、Union型の曖昧性診断(SYSLIB1227)を抑制するように修正されました。カスタムコンバーターがコントラクトを所有している場合、Union ケースの発見と曖昧性診断をスキップします。
変更内容
- JsonSourceGenerator.Parser.cs: Union ケースの発見と曖昧性診断を型レベルの
[JsonConverter]属性がない場合のみ実行するように条件分岐を追加 - JsonSourceGeneratorDiagnosticsTests.cs: 型レベルのカスタムコンバーターを持つ Union に対して SYSLIB1227 が発生しないことを検証する回帰テストを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- Copilot レビューにより、テストがコンパイル成功をアサートしないため空虚に成功する可能性がある点が指摘されています
- 全 System.Text.Json テストプロジェクトで 131,786 回のテスト実行を完了(0 failures、17 既存スキップ)
- 修正前: 型レベルコンバーター存在時に Union ケースが先に分析され、SYSLIB1227 が不正に発行されていた
- 修正後: 型レベルコンバーターが存在する場合、Union 分析が完全にスキップされる
#133243 Fix JsonSchemaExporter handling of default struct parameters
- 作成者: @eiriktsarpalis
- 作成日時: 2026年09月04日 15:39:02(UTC)
- マージ日時: 2026年09月09日 07:42:40(UTC)
- ラベル: area-System.Text.Json
概要
JsonSchemaExporterが= defaultで宣言された非null値型の省略可能パラメータを処理する際、ParameterInfo.DefaultValueがnullになるケースでJsonExceptionをスローしていた問題を修正します。JsonParameterInfo.EffectiveDefaultValueを使用することで、スキーマのdefaultキーワード出力時に正規化されたデフォルト値を適切に処理するようになります。
変更内容
- JsonSchemaExporter.cs: スキーマの
defaultキーワード出力時に、ParameterInfo.DefaultValueの代わりにJsonParameterInfo.EffectiveDefaultValueを使用するよう変更(1行修正) - JsonSchemaExporterTests.TestTypes.cs: 既存の省略可能コンストラクタパラメータテストに
Guid x11 = defaultパラメータを追加し、出力されるデフォルト値がGuid.Emptyとして正しくシリアライズされることを検証
パフォーマンスへの影響
影響なし
関連Issue
その他
- 互換性: 既存コードへの破壊的変更なし。スキーマ出力の修正であり、内部実装の変更です
- 検証:
System.Text.Json.Testsおよび関連する全テストスイート(Roslyn変種を含む)での合格を確認済み
#133242 [release/11.0] [mono][llvm] Properly link endfinally to leave targets
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月04日 14:57:22(UTC)
- マージ日時: 2026年09月09日 13:04:22(UTC)
- ラベル: Servicing-approved area-Codegen-JIT-mono
概要
Mono/LLVM コンパイラで、finally ブロックから leave 命令のターゲットへのリンク処理を改善するバグ修正。オブファスケーター使用時の AOT コンパイル (WASM, iOS) でクラッシュする問題を解決します。finally 句のリンク処理を IL の初期処理完了後に遅延実行することで、必要な情報が全て揃った状態で正確に処理できるようになります。
変更内容
- src/mono/mono/mini/method-to-ir.c: finally ブロック処理のロジックを変更。最初の IL 処理イテレーション中は finally 句のリンク処理をスキップし、その後の処理ステップで実行するよう延期 (+44/-14)
- src/mono/mono/mini/mini-llvm.c: LLVM バックエンド側で finally ブロック処理の対応を調整 (+7/-1)
- テストケース追加: Runtime_132936.il (IL アセンブリ) と Runtime_132936.ilproj (プロジェクトファイル) で、オブファスケーター使用時のクラッシュ再現テストを追加
パフォーマンスへの影響
影響なし。この修正はコンパイル中間処理の順序調整のみで、実行時パフォーマンスへの影響はありません。
関連Issue
#133011 (オリジナルのマスターブランチへの修正)、#132936 (関連する回帰テストケース)
その他
- .NET 10 での顧客報告による問題で、WASM の AOT コンパイル時に LLVM を有効にした場合に発生
- 回避策として AOT を完全に無効化するか LLVM を無効化する必要があったが、両方とも大きなパフォーマンス低下につながるため重要な修正
- リスク評価: 低い (修正内容がシンプルで局所的)
- 顧客が提供した再現サンプルに基づいてテストケースを追加済み
#133138 JIT: Tail-merge fix self-loop handling
- 作成者: @BoyBaykiller
- 作成日時: 2026年09月03日 01:06:58(UTC)
- マージ日時: 2026年09月09日 00:10:08(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
JITコンパイラのtail-merge最適化におけるself-loop処理のバグを修正します。この修正により、self-loopを含むコード構造でのtail-mergeの誤った動作が解決されます。
変更内容
- src/coreclr/jit/fgopt.cpp: tail-merge最適化のself-loop処理を修正(+13/-9)
- src/tests/JIT/Regression/JitBlue/Runtime_133131/Runtime_133131.cs: 回帰テストケースを追加(+61)
- src/tests/JIT/Regression/Regression_ro_2.csproj: テストプロジェクト構成を更新(+1)
パフォーマンスへの影響
影響なし。本修正はバグ修正であり、正確な制御フローを保証するもので、パフォーマンスの低下や改善は予想されません。
関連Issue
その他
本修正はJITコンパイラの内部実装(fgopt.cpp)に限定された変更であり、公開APIへの影響はありません。self-loopを含むコード構造における最適化の正確性向上を目的とています。
#133093 JIT: fix TrailingZeroCount constant folding on 32-bit targets
- 作成者: @AndyAyersMS
- 作成日時: 2026年09月02日 15:08:34(UTC)
- マージ日時: 2026年09月09日 14:49:10(UTC)
- ラベル: area-CodeGen-coreclr
概要
BitOperations.TrailingZeroCount(ulong) の定数畳み込み処理において、32ビットターゲットで型のミスマッチが発生し InvalidProgramException が発生する問題を修正します。JITインポーターが TYP_LONG ノードを生成していたのに対し、戻り値型は int であるべき仕様との不整合を解決します。この問題は #80789(2023年1月)から導入され、.NET 8、9、10が影響を受けていました(.NET 6、7は正常)。
変更内容
- src/coreclr/jit/importercalls.cpp:
NI_PRIMITIVE_TrailingZeroCount定数パスからbaseType = retType;の代入を削除。これにより関数末尾の既存のLONG↔INT型調整ロジックが正常に動作し、長整数から整数へのキャスト処理が実行されるようになります。 - src/tests/JIT/Regression/JitBlue/Runtime_133092/Runtime_133092.cs:
ldc.i8でエンコードされるような定数形式を含むTrailingZeroCount定数畳み込みの回帰テストを追加。 - src/tests/JIT/Regression/Regression_ro_2.csproj: テストプロジェクト参照を更新。
パフォーマンスへの影響
64ビットターゲットでは、キャスト操作が挿入されてから gtFoldExpr で定数畳み込みされるため、生成コードは変わらず性能への悪影響なし。32ビットターゲットでは、以前クラッシュしていた処理が正常に定数畳み込みされるようになり、正しい結果を返すようになります。
関連Issue
その他
- 修正は
NI_PRIMITIVE_LeadingZeroCount(すでに正常)およびNI_PRIMITIVE_Log2と同じパターンに統一するもの - 検証: x86 6.0.36、7.0.20では正常(32を返却)だが、8.0.30、9.0.19、10.0.11では
InvalidProgramException発生。修正後は全バージョンで一致 - チェック済みJIT上のストレステストで、修正前は347/1200メソッドが失敗、修正後は1200/1200成功
#132930 Use ArrayBuffer in SseParser, deduplicate more logic
- 作成者: @MihaZupan
- 作成日時: 2026年08月29日 20:35:20(UTC)
- マージ日時: 2026年09月09日 11:07:28(UTC)
- ラベル: area-System.Net
概要
内部バッファ管理パターンをArrayBufferでより一貫性を持たせるリファクタリング。SSEパーサーをArrayBufferを使用するように改良し、新しいDiscardAll()ヘルパーメソッドを導入してバッファクリア処理を簡潔にしています。複数のネットワーク関連コンポーネント(HTTP、TLS、Server-Sent Events)でバッファ管理ロジックを統一し、重複を削減することが目的です。
変更内容
ArrayBuffer.cs:
DiscardAll()メソッドを新規追加し、Dispose()およびClearAndReturnBuffer()内で再利用SseParser_1.cs:
ArrayBufferを使用したラインバッファリングに全面リファクタリング、ラインバッファとデータバッファを統一、ラインスプリッティング処理の集約複数コンポーネントでの適用:
- PooledByteBufferWriter(JSON、ServerSentEvents)
- HttpConnection、Http2Connection、Http3RequestStream(HTTP処理)
- TlsSession、SafeDeleteSslContext(TLS/SSL処理)
- ZstandardStream(圧縮処理)
各箇所で従来の
Discard(ActiveLength)パターンを新しいDiscardAll()に置き換え
パフォーマンスへの影響
影響なし。これは内部実装のリファクタリング(内部API)であり、機能や外部APIの動作は変わりません。コードの可読性と保守性の向上のみです。
関連Issue
なし
その他
セキュリティ上の注意: レビューコメントで、SseParser<T>のFillLineBuffer()およびFillLineBufferAsync()メソッドに潜在的な問題が指摘されています。バッファサイズが_maxBufferSizeを超える可能性があり、単一の読み込みで最大長ガードをバイパスする可能性があります。具体的には、EnsureLineBufferAvailableSpace()がAvailableLength == 0時にのみチェックするため、すでに成長したバッファでは_maxBufferSizeを超える読み込みが許可される可能性があります。本PRでは未解決のままです。
#132895 [release/10.0] Fix crossgen2 rejecting input files with uppercase .DLL/.EXE extensions
- 作成者: @github-actions[bot]
- 作成日時: 2026年08月28日 17:01:29(UTC)
- マージ日時: 2026年09月09日 21:01:12(UTC)
- ラベル: Servicing-approved area-ReadyToRun
概要
Crossgen2がファイル拡張子の大文字・小文字を区別し、大文字の.DLL/.EXE`拡張子を持つ入力ファイルを拒否していた問題を修正します。大文字のファイル名を常に返すファイルシステムでは、このバグにより使用不可になっていました。
変更内容
- src/coreclr/tools/aot/crossgen2/Program.cs: ファイル拡張子の判定ロジックを修正し、大文字・小文字を区別しないようにしました。(+20/-15)
パフォーマンスへの影響
影響なし
関連Issue
#132857(元のPR)
その他
- リグレッション:はい。Microsoft.NETCore.App.Crossgen2.win-x64の10.0.5~10.0.9の間に導入されました。
- 顧客報告:あり
- リスク:低。変更は小規模かつ対象を絞った修正で、既存テストは全てパスしています。
- 検証:ローカルビルドのcrossgen2で検証済み
#132823 Handle bare LF in EightBitStream dot-stuffing to prevent SMTP corruption
- 作成者: @rzikm
- 作成日時: 2026年08月27日 08:46:01(UTC)
- マージ日時: 2026年09月09日 08:45:06(UTC)
- ラベル: area-System.Net
概要
SmtpClientのEightBitStreamがRFC 2821 Section 4.5.2のドット詰め処理で裸のLF(CR前置なし)を適切に処理していなかった問題を修正しました。従来はCRLFのみが行末として認識されたため、裸のLF直後の先頭ドットがドット詰めされず、\n.\nシーケンスがSMTPサーバーでCRLF.CRLF(データ終了マーカー)と誤解釈され、メッセージが破損する可能性がありました。
修正により、ドット詰め有効時に裸のLFを行末として認識し、CRLF(\r\n)に正規化するとともに行長をリセットします。
変更内容
- EightBitStream.cs:
EncodeLinesメソッドに裸LF処理を追加。既存のCR遅延処理後に、裸のLFを検出してCRLFに正規化し、CurrentLineLengthをリセット(ドット詰め有効時のみ) - EightBitStreamTest.cs:
TestEncodeStream_BareLineFeedCanonicalizedToCrlfテストケースを追加。以下のシナリオをカバー:- 裸LF直後の先頭ドット(
Hello\n.World→Hello\r\n..World) - 破損シナリオ(
a\n.\nb→a\r\n..\r\nb) - 複数の書き込みに分割された裸LF
- ドット符号化無効時の素通し動作
- 裸LF直後の先頭ドット(
パフォーマンスへの影響
影響なし
関連Issue
その他
- ドット詰め無効モード(パススルーモード)では従来どおりバイトをそのまま出力
- 384個のSystem.Net.Mail単体テストがすべてパス
- GitHub Copilotの支援で作成されたPR
#132822 JIT: add JitEnablePhaseChecks, and disable it for the base SuperPMI asm diffs JIT
- 作成者: @jakobbotsch
- 作成日時: 2026年08月27日 08:44:49(UTC)
- マージ日時: 2026年09月09日 17:28:55(UTC)
- ラベル: area-CodeGen-coreclr
概要
JIT の phase ごとの検証処理を制御する新しい設定値 JitEnablePhaseChecks を追加します。SuperPMI の asm diffs において、既に検証済みのベースラインJITで検証処理を実行する必要がないため、ベースJITではこの検証を無効化し、テスト対象のdiff JITでは有効なままにします。これにより、asm diffs のベンチマーク処理が約11~22%高速化されます。
変更内容
- src/coreclr/jit/jitconfigvalues.h:
JitEnablePhaseChecks設定値を追加(デフォルト: 有効) - src/coreclr/jit/phase.cpp: post-phase の検証チェック(フローグラフ、ループ、ユニーク性、プロファイル、IR等)を
JitEnablePhaseChecksで制御 - src/coreclr/scripts/superpmi.py:
-full_ir_checksと-no_ir_checksオプションを追加し、これらを通じて対応するJITにJitEnablePhaseChecksを設定 - src/coreclr/scripts/superpmi_diffs.py: asm-diffs パイプラインで
-full_ir_checksを使用
パフォーマンスへの影響
asm diffs ベンチマーク結果(92,134コンテキスト、3回実行の最小値):
-full_ir_checks: 12.23秒- デフォルト(ベースJITのみ検証無効化): 10.88秒(-11.0%)
-no_ir_checks(全JIT検証無効化): 9.57秒(-21.8%)
関連Issue
なし
その他
Copilot のレビューでは以下の点が指摘されています:
- ヘルプテキストやコメントで「phase IR checks」と記述されているが、実際には
JitEnablePhaseChecksはフローグラフ、ループ、プロファイルなど全post-phase検証をゲートしており、説明とのズレがある -full_ir_checksと-no_ir_checksを同時指定した場合の優先度が不明確で、相互排他的にするか優先順位を明確にすべきprint()ではなくlogging.warning()を使用してログ一貫性を確保すべき
#132479 Clarify ArrayRecord handling of Multiple Null Records
- 作成者: @Copilot
- 作成日時: 2026年08月18日 18:17:13(UTC)
- マージ日時: 2026年09月09日 13:41:18(UTC)
- ラベル: area-System.Formats.Nrbf
概要
NRBF(.NET Remoting Binary Format)のArrayRecordにおけるNullレコードの取り扱いに関するドキュメント整理。複数のNullレコード("multiple null" records)が存在する場合の記録カウント動作を明確化するため、ArrayRecord.CheckExpectedRecordCountの上部にあるインラインコメントを更新し、より簡潔で的確な説明に改めたもの。
変更内容
- ArrayRecord.cs:
CheckExpectedRecordCount上部のXML docコメント/remarksブロックを削除(8行削減)。短い2行のコメントに置き換え、複数のNullレコード存在時の記録カウント対要素カウント不変性に焦点を当てた説明に変更 - ArrayOfSerializationRecordsTests.cs: テストコード61行削除
パフォーマンスへの影響
影響なし(ドキュメント/テストコード変更のみ)
関連Issue
その他
この変更はSystem.Formats.Nrbfライブラリの内部実装ドキュメント更新であり、公開APIへの影響はありません。テスト削除の詳細については、提供情報から確認できません。
#131995 Regression test validating usage of static TLS resolver on Linux ARM64.
- 作成者: @lateralusX
- 作成日時: 2026年08月07日 12:18:58(UTC)
- マージ日時: 2026年09月09日 13:57:17(UTC)
- ラベル: area-VM-coreclr
概要
Linux ARM64で CoreCLRが通常の Release起動条件下で直接的な静的 TLS アクセスを使用できることを検証するリグレッションテストを追加します。このテストは管理対象の [ThreadStatic] フィールドにアクセスし、ARM64スレッドポインタアクセス命令(mrs ..., tpidr_el0)が生成されることを JIT逆アセンブリ検査インフラストラクチャで検証します。
[ThreadStatic]
private static int t_value;
[MethodImpl(MethodImplOptions.NoInlining)]
private static int AccessThreadStatic()
{
// ARM64-LINUX: mrs {{x[0-9]+}}, tpidr_el0
t_value = 100;
return t_value;
}
変更内容
src/tests/JIT/Directed/tls/StaticTlsResolver.cs (+27行)
[ThreadStatic]フィールドへのアクセスを含むテストメソッドを実装HasDisasmCheckインフラストラクチャを使用した JIT逆アセンブリ検査
src/tests/JIT/Directed/tls/StaticTlsResolver.csproj (+28行)
- テスト用のプロジェクトファイル
src/tests/JIT/Directed/Directed_ro.csproj (+1行)
- テストプロジェクトの登録
パフォーマンスへの影響
影響なし(リグレッションテストのため)
関連Issue
- #131954 - Linux ARM64での広範なパフォーマンス低下の原因特定
- #131410 - TLSキャッシュ追加によるTLSセグメント拡大
- #131991 - TLSキャッシュの重複排除と TLSフットプリント復元
その他
- 本テストは既存の
TestTLSWithLoadedDllsとは異なり、通常の Linux ARM64起動で静的TLS経路が保持されることを検証する専用テストです TestTLSWithLoadedDllsは動的TLSリゾルバの強制動作を検証し、今テストは静的リゾルバの使用を検証するという異なる条件をカバーしています- Copilotレビュアーが csproj設定のゲーティングが PR説明の計画と矛盾しているとの指摘を行っています
#131869 Guard against empty remote address on macOS accept
- 作成者: @wfurt
- 作成日時: 2026年08月05日 12:38:03(UTC)
- マージ日時: 2026年09月09日 17:24:54(UTC)
- ラベル: area-System.Net.Sockets os-mac-os-x
概要
macOSでピアがAF_INET6リスニングソケットに接続した直後に接続をリセット(SO_LINGER=0)する場合、accept(2)が有効なファイルディスクリプタを返しながらリモートソケットアドレスバッファが未初期化(addrlen=0)のままになる問題を修正します。これによりEndPoint.CreateがArgumentExceptionをスローしてKestrelのacceptループが永続的に停止する不具合を解決します。
変更内容
- SocketAsyncEventArgs.cs:
FinishOperationSyncSuccess内のEndPoint.Create呼び出しをガード。ソケットアドレスが空の場合の処理を追加し、accept完了時の例外を防止。また、NetEventSourceのacceptログをリモートエンドポイント検索失敗に対して堅牢化。 - Socket.cs: accept処理での例外ハンドリングの調整(計6行の変更)。
- Accept.cs: デュアルスタックIPv6リスナーに対して接続直後のリセットシナリオを繰り返し実行し、リスナーが継続して接続を受け入れられることを検証する回帰テスト
AcceptDualStackResetTestsを追加。
パフォーマンスへの影響
影響なし
関連Issue
その他
破壊的変更: なし
互換性: 既存のremoteEP == nullサポート動作と一致する内部実装の修正です。
Copilotからの指摘事項:
- 回帰テストはmacOS固有とされていますが、現状ではすべてのIPv6対応プラットフォームで実行されており、クロスプラットフォームでの不安定性のリスクがあります。プラットフォーム限定の実装が推奨されています。
- テスト内のハードコードされた反復回数
200は名前付き定数化が推奨されています。
#131507 Managed ilasm: comprehensive parity fixes with native ilasm
- 作成者: @jkoritzinsky
- 作成日時: 2026年07月28日 23:19:57(UTC)
- マージ日時: 2026年09月09日 16:42:42(UTC)
- ラベル: area-ILTools-coreclr linkable-framework
概要
マネージド ilasm (src/tools/ilasm) をネイティブ ilasm との完全互換性に向けて大幅改善するPRです。2,868個の ilproj テストファイルで約2,128個の失敗をほぼゼロまで削減。ANTLR文法修正、メタデータ生成の修正、シグネチャ書き直し機構の追加、IL本体の修正、および236個の新規ユニットテストの追加により、バイトレベルの正確性を実現しました。
変更内容
パーサー・文法修正(ANTLR)
.language、.line(QSTRING対応)、value/instanceキーワード、複数ddItem、&label参照、atOpt、空のpinvokeimpl()、セキュリティ属性blob型順序、関数ポインタ構文など多数の文法改善DocumentCompilerにANTLRパーサーエラーリスナーを追加し、厳密な診断を実装- プリプロセッサ
#defineマクロ展開を修正し、複数トークン値を正しく再lex
メタデータ生成修正(主要変更)
- MemberRef→MethodDef/FieldDef解決: ローカルメソッド/フィールド参照を定義トークンに解決(ネイティブ ilasm動作と一致)
- TypeRef→TypeDef解決: 遅延TypeRefトラッキングとPseudoHandleを使用。署名エンコーディング時にPseudoHandleベースの符号化インデックスをすべてのシグネチャblobで書き直し、IL命令トークンはバックパッチ
- フィールド属性フラグ: HasDefault、HasFieldMarshal、HasFieldRVA、PinvokeImpl
- メソッド属性: 自動instance呼び出し規約、.ctor/.ccctor向け自動RTSpecialName|SpecialName、PinvokeImpl フラグ
- Param生成: 明示的パラメータの行常時生成、無名パラメータは自動
A_N名付け - ClassLayout:
.pack/.sizeなしでも明示的レイアウト型に対して生成 - GenericParamConstraint: 生成時にOwner handleでソート
- カスタム属性: 型レベル・トップレベルハンドラ修正、blobプロログ修正、モジュール所有権対応
- ローカル: 解析された
.locals宣言からLOCAL_SIGスタンドアロン署名を構築 - Corelib TypeRef リダイレクト: 異なるcorelib アセンブリ名を正規化
- プリミティブ型コード: 良く知られたcorelib型(
System.String→String等)に対して正しいコード生成 - 先頭ドット型名: ドットは名前空間区切りではなく名前の一部
シグネチャ書き直し機構(新規)
- すべてのシグネチャblobをPseudoHandleベースのTypeRef符号化インデックスから実解決ハンドルに書き直し
GetModifiedTypeを修正し、修飾子を完全型エンコーディングではなく生符号化インデックスとして書き込みGetArrayTypeを修正し、ELEMENT_TYPE_ARRAYプレフィックス