Pull Request on 2026年04月14日

dotnet/runtimeにマージされたPull RequestをAIで日本語要約

注意点

このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。


目次

  1. #126894 Rename area-crossgen2-coreclr to area-ReadyToRun in area ownership docs
  2. #126886 Change area lead for System.Formats.Tar
  3. #126883 Allow repo traversal from runtime skills
  4. #126877 [browser][CoreCLR] JS minification in Release
  5. #126876 [wasm][coreclr] Enable webcil V1 for CoreCLR wasm builds
  6. #126871 Remove quic.tech from HTTP/3 interop test URIs
  7. #126870 [wasm][CoreCLR] Enable passing System.Runtime.Tests on wasm
  8. #126868 Fix ILLink analyzer assertion for delegates with default parameters
  9. #126865 Ensure IsVectorPerElementMask does a correct check and use it in more places
  10. #126864 Fix malformed MSBuild property function call in Microsoft.CSharp.Tests.csproj
  11. #126856 JIT: Elide BOUNDS_CHECK(0, length) when length != 0 is proven by assertion
  12. #126855 Filter runtime-diagnostics pipeline to SOS tests only
  13. #126854 Fix TarReader_SparseFileTests reflection breaking under Native AOT by replacing with [UnsafeAccessor]
  14. #126802 [wasm] Bump chrome for testing - linux: 147.0.7727.55, windows: 147.0.7727.56
  15. #126780 cDAC test cleanup - Allocator adds HeapFragments by default
  16. #126770 JIT: fix bug in loop cloning with down-counting loops
  17. #126719 Strip partial and virtual modifiers from generated COM interface method stubs
  18. #126702 Fix typos in docstring for HttpClientBuilderExtensions.AddTypedClient
  19. #126693 Work around Schannel TLS resume disable race on older Windows
  20. #126647 Remove stderr logging in GSSAPI initialization
  21. #126525 Fix stackoverflowtester to skip ARM32 in TestStackOverflowLargeFrameMainThread
  22. #126447 Fix ZipArchive Update removing data descriptors
  23. #126396 Add ConfigurationIgnoreAttribute
  24. #126276 Add sources from iltrim hackathon
  25. #126199 [clr-ios] Fix SIGSEGV in open virtual delegate dispatch with interpreter
  26. #126173 Fix duplicate assembly name errors in crossgen outerloop merged runners
  27. #126112 Refactor ObjectDataInterner to support pluggable deduplicators and enable for ReadyToRun
  28. #125832 Merge release/9.0 staging into release/9
  29. #125231 Fix DefaultCOMImpl reference counting bugs in DAC
  30. #119419 Remove base DAM mismatch warning on types

#126894 Rename area-crossgen2-coreclr to area-ReadyToRun in area ownership docs

  • 作成者: @Copilot
  • 作成日時: 2026年04月14日 18:10:16(UTC)
  • マージ日時: 2026年04月14日 18:28:17(UTC)
  • ラベル: area-crossgen2-coreclr

概要

ドキュメント内のラベル名を area-crossgen2-coreclr から area-ReadyToRun に統一するための更新です。エリア所有権管理ドキュメントとIssue自動振り分けのキーワードマッピングを修正し、ラベル名の一貫性を保ちます。

変更内容

  • docs/area-owners.md: area-crossgen2-coreclr から area-ReadyToRun に行を置き換え、アルファベット順(area-NativeAOT-coreclr の後)で適切に配置。所有者と貢献者は変更なし。
  • .github/skills/issue-triage/references/area-label-heuristics.md: Crossgen2/R2R/ReadyToRun キーワードのラベルマッピングを area-ReadyToRun に更新。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはドキュメント・メタデータのみの変更で、ランタイムコードへの影響はありません。ラベル名の変更に伴う管理ドキュメントの整合性確保目的の修正です。


#126886 Change area lead for System.Formats.Tar

  • 作成者: @jeffhandley
  • 作成日時: 2026年04月14日 17:16:02(UTC)
  • マージ日時: 2026年04月14日 17:46:19(UTC)
  • ラベル: documentation area-Meta

概要

System.Formats.Tar領域のarea leadを変更し、ドキュメントの区域所有権リストを現在の保守担当者と一致させるための更新です。area-System.Formats.Tarラベルのarea leadを@jeffhandleyから@karelzに変更します。

変更内容

  • docs/area-owners.md: area-System.Formats.Tarのarea lead表記を@jeffhandleyから@karelzに変更(+1/-1)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

GitHub team側は既に適切なメンバーが設定されているため、このPRはドキュメント整備のみを対象としています。


#126883 Allow repo traversal from runtime skills

  • 作成者: @JanKrivanek
  • 作成日時: 2026年04月14日 16:00:46(UTC)
  • マージ日時: 2026年04月14日 18:37:16(UTC)
  • ラベル: area-skills

概要

リポジトリローカルスキル(repo-local skills)が自身のフォルダ外のファイルを参照できるようにするため、skill-validator の検証ワークフローを更新するPR。--allow-repo-traversal フラグを追加し、ドキュメントリンクをリポジトリルート相対パスまたは明示的な相対パスに更新しました。

プラグインスキルと異なり、リポジトリローカルスキルはすでにリポジトリの一部であるため、フォルダ外のドキュメントやスクリプトへのアクセスを許可することで、エージェントが追加のターンを重ねずに必要なパスを探索できます。

変更内容

  • .github/workflows/skill-validation.yml: スキルとエージェントの検証に --allow-repo-traversal フラグを追加
  • .github/skills/update-os-coverage/SKILL.md: ドキュメントリンクをリポジトリルート相対パス(/docs/...)に更新
  • .github/skills/issue-triage/SKILL.md: docs/area-owners.md への参照を明示的なリンクに更新
  • .github/skills/api-proposal/SKILL.md: copilot-instructions.md への参照をリポジトリルート相対パスに更新

パフォーマンスへの影響

影響なし

関連Issue

#126814(先行するPR)

その他

Copilotからの低信度コメントにより、一部のリンクについて相対パスの使用方法に関する懸念が指摘されています。/docs/... 形式のリポジトリルート相対パスは GitHub レンダリングではサポートされていますが、GitHub 外でマークダウンを処理するツールでは絶対ファイルシステムパスとして解釈される可能性があるため、../../../../docs/... 形式の明示的な相対パスの使用が推奨されています。


#126877 [browser][CoreCLR] JS minification in Release

  • 作成者: @pavelsavara
  • 作成日時: 2026年04月14日 14:10:44(UTC)
  • マージ日時: 2026年04月14日 20:06:04(UTC)
  • ラベル: arch-wasm area-System.Runtime.InteropServices.JavaScript os-browser

概要

Release ビルド構成の検出をケース非依存にして、JavaScript のミニフィケーション動作を Release で正しく適用できるようにしました。ビルド時の設定検出ロジックを修正し、Configuration 値の大文字小文字を区別せずに比較するようになります。

変更内容

  • src/native/rollup.config.defines.js: isDebug のデフォルト値を "Debug" に設定し、Configuration 値をケース非依存("release" に対して)で比較するように変更

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは browser ワークロード(WebAssembly/JavaScript 相互運用)における CoreCLR ビルドの改善です。JavaScript のミニフィケーション機能が Release 構成で確実に有効になるようになります。


#126876 [wasm][coreclr] Enable webcil V1 for CoreCLR wasm builds

  • 作成者: @radekdoulik
  • 作成日時: 2026年04月14日 14:08:55(UTC)
  • マージ日時: 2026年04月14日 17:24:29(UTC)
  • ラベル: arch-wasm area-Infrastructure-coreclr

概要

CoreCLR WebAssemblyビルドに対してWebcil V1形式での出力をデフォルトで有効化します。MSBuildのWebcilバージョン設定をWebcil変換タスクに伝播させることで実現しています。

変更内容

  • ConvertDllsToWebCil.cs: WebcilVersionプロパティをMSBuildタスクに追加し、WebcilConverterに伝播
  • Microsoft.NET.Sdk.WebAssembly.Browser.targets: _WasmWebcilVersionプロパティを追加。RuntimeFlavor=CoreCLRの場合はV1、それ以外はV0がデフォルト。ユーザーはWasmWebcilVersionで上書き可能

パフォーマンスへの影響

影響なし

関連Issue

#126709

その他

  • #126709で追加されたWebcil V1サポートインフラストラクチャの上に構築
  • ビルドおよびパブリッシュパイプラインの両方で適用される
  • CoreCLRとそれ以外のランタイムで異なるデフォルト動作に対応

#126871 Remove quic.tech from HTTP/3 interop test URIs

  • 作成者: @rzikm
  • 作成日時: 2026年04月14日 09:37:07(UTC)
  • マージ日時: 2026年04月14日 12:36:49(UTC)
  • ラベル: area-System.Net.Http

概要

HTTP/3相互運用性テストで使用されているquic.tech:8443エンドポイントを削除するPRです。このサーバーがCI環境から一貫してタイムアウトしており、複数のプラットフォーム(AzureLinux、Windows 11、Windows Server 2022/2025)で100%の失敗率を示していたため、テスト対象から除外するものです。

変更内容

  • src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Http3.cs
    • InteropUris()メソッドからhttps://quic.tech:8443/を削除
    • 影響するテスト: Public_Interop_ExactVersion_SuccessPublic_Interop_Upgrade_Request2OrHigher_SuccessPublic_Interop_Upgrade_Request3OrLower_Success

パフォーマンスへの影響

CI実行時間の改善。該当テストで10秒のタイムアウト待機が発生していたため、その時間が削減される。テスト失敗の完全排除により、CI信頼性が向上。

関連Issue

#124743(同様の理由でquic.nginx.orgを削除した先例)

その他

このエンドポイント削除は#126871に対応するもの。テストの範囲は縮小されますが、外部リソースの不安定性によるCI信頼性低下を防ぐための実用的な対応です。


#126870 [wasm][CoreCLR] Enable passing System.Runtime.Tests on wasm

  • 作成者: @radekdoulik
  • 作成日時: 2026年04月14日 09:19:33(UTC)
  • マージ日時: 2026年04月14日 15:19:51(UTC)
  • ラベル: arch-wasm area-Infrastructure-coreclr

概要

WebAssembly(wasm)CoreCLRインタプリタでSystem.Runtime.Testsの44個のテストを有効化するため、不要な[ActiveIssue]および[SkipOnPlatform]属性を削除しました。マルチスレッド機能を必要とするテストについては、イシュー判定から機能検出(PlatformDetection.IsMultithreadingSupported)へ変更しています。

変更内容

  • 44個のテスト属性削除:15ファイルにおいてwasm/ブラウザ環境で不要となった[ActiveIssue][SkipOnPlatform]属性を削除(Decimal、Delegate、Half、Int128、UInt128、GCなど)
  • マルチスレッド関連テストの条件分岐化JitInfoTestsControlledExecutionTestsConditionalFact/ConditionalClassを使用し、IsMultithreadingSupportedによる実行制御に変更
  • トリアージドキュメント追加libraries-tests-triage.mdを新規作成し、wasm CoreCLRインタプリタ上で残存する無効化テストの根本原因を文書化

パフォーマンスへの影響

影響なし。テストカバレッジの拡充で全テスト実行時間は約7分、68,025テストが実行される(失敗0、スキップ94)。

関連Issue

#122980

その他

残存する10個の[ActiveIssue]属性の理由

  • GCファイナライザーテスト(4件):シングルスレッドwasmにファイナライザースレッドなし
  • Moduleテスト(2件):Module.FullyQualifiedName/Name<Unknown>を返す
  • DateTimeテスト(1件):System.Runtime.Serialization.Formattersが利用不可
  • RuntimeFeatureテスト(1件):IsDynamicCodeSupportedがfalse(JIT非対応)
  • その他(2件):int飽和バグなど

詳細な分析は提供されたトリアージドキュメントを参照。


#126868 Fix ILLink analyzer assertion for delegates with default parameters

  • 作成者: @Copilot
  • 作成日時: 2026年04月14日 08:01:57(UTC)
  • マージ日時: 2026年04月14日 21:48:15(UTC)
  • ラベル: linkable-framework area-Tools-ILLink

概要

ILLink Roslyn アナライザーのデータフロー分析が、デフォルトパラメータ値を持つデリゲート型を処理する際に Debug.Assert で失敗する問題を修正しました。

delegate ParallelQuery<int> Operation(int start, int count, Operation source = null);

Roslyn がデリゲートのデフォルトパラメータ初期化子の操作ブロックを生成する際、その OwningSymbol が予期される IMethodSymbol/IFieldSymbol/IPropertySymbol ではなく INamedTypeSymbol になるため、アナライザーがこれを処理できていませんでした。

変更内容

  • LocalDataFlowAnalysis.cs: InterproceduralAnalyze() メソッドにデリゲート型(INamedTypeSymbol { TypeKind: TypeKind.Delegate })の所有シンボルを検出してスキップする処理を追加(+6行)
  • AnnotatedMembersAccessedViaReflection.cs: DelegateCreation テストクラスにデフォルトパラメータを持つデリゲート型(delegate void DelegateWithDefaultParameter(Type type = null))をテストケースとして追加(+5行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この修正は ILLink アナライザー内部の実装(デフォルトパラメータ持つデリゲート型処理)に限定され、公開 API には影響しません。


#126865 Ensure IsVectorPerElementMask does a correct check and use it in more places

  • 作成者: @tannergooding
  • 作成日時: 2026年04月14日 05:11:46(UTC)
  • マージ日時: 2026年04月14日 23:44:43(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT コンパイラの SIMD/MASK 値に対する「per-element mask」の検証ロジックを強化し、より多くの最適化パスで正しく適用するための修正です。IsVectorPerElementMask ヘルパーの拡張により、マスク要素数の不一致を防ぎながら、より安全な最適化を可能にします。

変更内容

  • GenTree::IsVectorPerElementMask の強化:MASK 定数の検証とイントリンシック互換性チェックを追加
  • ValueNumStore::GetConstantSimd の新規実装:SIMD 定数抽出を一元化
  • ValueNumStore::IsVectorPerElementMask の追加:値番号ベースの per-element mask 検証を実装
  • morph.cpp での使用拡張:比較最適化(Zero/AllBitsSet との比較)を per-element mask チェックで保護
  • simd.h の改善:ヘルパー配列の const 正確性を強化し、基本型+要素数から per-element mask 判定するオーバーロードを追加

パフォーマンスへの影響

影響なし。本変更は正確性を重視した修正であり、既存の使用箇所は上位レベルのチェックで適切に保護されていたか、ビットワイズ操作で機能的にサポートされていたため、パフォーマンス低下の懸念はありません。

関連Issue

なし

その他

本変更はバックポート不要と判断されています。内部の JIT 最適化パスに限定された修正で、公開 API には影響しません。


#126864 Fix malformed MSBuild property function call in Microsoft.CSharp.Tests.csproj

  • 作成者: @Copilot
  • 作成日時: 2026年04月14日 05:02:09(UTC)
  • マージ日時: 2026年04月14日 18:15:01(UTC)
  • ラベル: area-Microsoft.CSharp

概要

Microsoft.CSharp.Tests.csprojのMSBuildプロパティ関数呼び出しが閉じ括弧を欠いていたため、修正しました。修正前は$(Features.Replace('strict', '')と記述されており、MSBuildがこれをプロパティ関数として解析できず空文字列に評価されていました。その結果、Directory.Build.propsから継承されたnullablePublicOnlyを含むすべてのコンパイラ機能が意図せず削除されていました。修正後は$(Features.Replace('strict', ''))となり、strictのみを削除しつつ他の機能を保持するようになります。

変更内容

  • src/libraries/Microsoft.CSharp/tests/Microsoft.CSharp.Tests.csproj: <Features>プロパティの閉じ括弧を追加(1行変更)
    • 修正前:$(Features.Replace('strict', '')
    • 修正後:$(Features.Replace('strict', ''))

パフォーマンスへの影響

影響なし

関連Issue

#126863より指摘

その他

  • strict機能はこのテストプロジェクトから意図的に除外されています。テストが列挙型の演算操作を行っており、Roslyn の strict モードではこれらの操作が拒否されるためです。
  • この問題はこのファイルのみで発生していることが確認されています。

#126856 JIT: Elide BOUNDS_CHECK(0, length) when length != 0 is proven by assertion

  • 作成者: @Copilot
  • 作成日時: 2026年04月14日 00:01:41(UTC)
  • マージ日時: 2026年04月14日 18:42:52(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT の BOUNDS_CHECK(0, length) 削除最適化を改善しました。BOUNDS_CHECK(0, length)(uint)0 < (uint)length をチェックし、これは length != 0 と意味的に等価です。本修正により、支配的な length != 0 アサーションが live である場合に、この冗長なチェックを削除できるようになります。これは null/empty チェック後の span/array アクセスで一般的なパターンです。

static bool TryStripFirstChar(ref ReadOnlySpan<char> span, char value)
{
    if (!span.IsEmpty && span[0] == value)
    {
        return true;
    }
    return false;
}

上記のコードでは、IsEmpty チェック後の span[0] アクセスに対する bounds check が削除されます。

変更内容

  • src/coreclr/jit/assertionprop.cppoptAssertionProp_BndsChk 関数を修正。GetRangeFromAssertions の後、インデックスが 0 で lenLo <= 0 の場合、live アサーション内で length VN に対する OAK_NOT_EQUAL アサーション(定数 0 との比較)を検索し、見つかった場合 lenLo を 1 に変更。これにより idxHi=0 < lenLo=1 が成立し、bounds check が削除されます。

  • src/tests/JIT/opt/RangeChecks/ElidedBoundsChecks.csTryStripFirstChar テストケースを追加し、正規パターンにおいて bounds check が削除されることを検証。生成されたアセンブリに CORINFO_HELP_RNGCHKFAIL 呼び出しがないことを確認します。

パフォーマンスへの影響

生成されるコード量が削減され、不要な例外チェックが除去されるため、パフォーマンスが向上します。span/array のアクセスパターンが一般的な場合に効果が見られます。

関連Issue

#126857

その他

内部実装(JIT 最適化パス)の改善であり、公開 API への影響なし。本修正は assertion propagation フェーズで機能し、コンパイラの最適化効率を向上させます。


#126855 Filter runtime-diagnostics pipeline to SOS tests only

  • 作成者: @max-charlamb
  • 作成日時: 2026年04月13日 23:33:30(UTC)
  • マージ日時: 2026年04月14日 13:54:56(UTC)
  • ラベル: area-Diagnostics-cdac

概要

runtime-diagnostics パイプラインのcDAC/DACテストレグをSOS(デバッガ拡張機能)テストのみに限定するCI設定変更です。EventPipeモニタリングやdotnet-countersなど、DAC実装に依存しないテストを除外し、パイプラインのブロッキング問題を解決します。

変更内容

  • eng/pipelines/diagnostics/runtime-diag-job.yml: -classfilter パラメータをサポートするよう追加(6行追加)
  • eng/pipelines/runtime-diagnostics.yml: cDAC/DAC両レグに classFilter: SOS を設定(2行追加)

既存のdiagnosticsリポジトリの -classfilter 機能を活用し、xunitの -class フィルタとして機能します。27以上のテストメソッドを含むSOSテストクラス(DivZero、StackTests、OtherCommands、GCTests、DotnetDumpCommandsなど)のみが実行されます。

パフォーマンスへの影響

影響なし(テスト実行時間は短縮されると考えられますが、具体的な数値は提供されていません)

関連Issue

なし

その他

  • 本PRはGitHub Copilotの支援を受けて生成されました
  • Microsoft.Diagnostics.Monitoring.EventPipe.UnitTestsは2024年4月10日以降、継続的に失敗しており、すべてのビルドをブロックしていました
  • その他のテスト(EventPipeモニタリング、dotnet-counters、DbgShimなど)は診断リポジトリ自体のCI(diagnostics-public-ci)で既にカバーされているため、プライベートビルドランタイムに対して実行する必要はありません

#126854 Fix TarReader_SparseFileTests reflection breaking under Native AOT by replacing with [UnsafeAccessor]

  • 作成者: @Copilot
  • 作成日時: 2026年04月13日 22:12:45(UTC)
  • マージ日時: 2026年04月14日 06:48:05(UTC)
  • ラベル: area-System.Formats.Tar

概要

Native AOT環境でのテスト失敗を修正するため、TarReader_SparseFileTests.WriteSparseEntry内のリフレクションベースの内部メンバアクセスを[UnsafeAccessor]に置き換えました。トリマーがリフレクションメタデータを削除することで発生していたNullReferenceExceptionを解決します。

変更内容

  • ファイル: src/libraries/System.Formats.Tar/tests/TarReader/TarReader.SparseFile.Tests.cs
  • 変更内容:
    • GetField/GetProperty/GetValueによるリフレクション呼び出しを[UnsafeAccessor]属性に置き換え
    • ReadOnlyDictionary<string, string>の背後の可変辞書にアクセスするため、ReadOnlyDictionaryAccessors<TKey, TValue>ヘルパークラスを追加(m_dictionaryフィールドへの汎用アクセサ)
    • using System.Reflectionを削除し、using System.Collections.ObjectModelusing System.Runtime.CompilerServicesを追加

パフォーマンスへの影響

影響なし

関連Issue

#125283

その他

本修正は内部実装の詳細へのアクセスパターンの変更であり、テストの動作自体に変更はありません。[UnsafeAccessor]はトリマーで静的に解析可能となるため、Native AOT環境でのメタデータ削除による問題が発生しなくなります。


#126802 [wasm] Bump chrome for testing - linux: 147.0.7727.55, windows: 147.0.7727.56

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年04月12日 00:15:54(UTC)
  • マージ日時: 2026年04月14日 07:55:24(UTC)
  • ラベル: arch-wasm area-Infrastructure-mono

概要

WebAssembly テスト用の Chrome ブラウザバージョンを更新します。Linux で 147.0.7727.55、Windows で 147.0.7727.56 にバージョンアップしています。

変更内容

  • eng/testing/BrowserVersions.props: Chrome バージョン定義を更新(3行追加/3行削除)
  • src/tasks/WasmBuildTasks/UpdateChromeVersions.cs: Chrome バージョン更新用タスクを新規追加(51行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

自動化タスク(github-actions[bot])による更新です。新規ファイル UpdateChromeVersions.cs は Chrome バージョン更新プロセスの自動化を目的としている可能性があります。


#126780 cDAC test cleanup - Allocator adds HeapFragments by default

  • 作成者: @noahfalk
  • 作成日時: 2026年04月11日 00:17:46(UTC)
  • マージ日時: 2026年04月14日 12:27:15(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact Data Access Component)テストの簡潔化に関するクリーンアップです。BumpAllocatorが自動的にHeapFragmentsを保存するよう改善され、テスト内での二段階プロセス(アドレス計算と別途のAddHeapFragment()呼び出し)が不要になりました。これに伴い、AllocateAndAdd()ヘルパーの統合要求への対応として、テストコード全体から二重呼び出しのパターンを排除しています。

変更内容

  • MockMemorySpace.BumpAllocator.cs: BumpAllocatorにHeapFragment自動保存機能を追加(+6/-2)
  • MockMemorySpace.cs: メモリ空間管理の簡潔化(+3/-2)
  • MockDescriptors配下のファイル群: 各テストファイルで不要になったAllocateAndAdd()ヘルパー呼び出しを削除
    • MockBuiltInComBuilder.cs、CodeVersions.cs、ExecutionManager.cs、GC.cs、HashMap.cs、Loader.cs等で一貫してAddHeapFragment()の重複呼び出しを削除
  • テストファイル群: GCMemoryRegionTests.cs、DebuggerTests.cs、LoaderTests.cs等でテストロジックを簡潔化

パフォーマンスへの影響

影響なし

関連Issue

#126466(前回のPR feedback)

その他

  • 内部テスト実装の改善であり、公開APIへの影響なし
  • テストコードの保守性向上を目的とした変更

#126770 JIT: fix bug in loop cloning with down-counting loops

  • 作成者: @AndyAyersMS
  • 作成日時: 2026年04月10日 21:41:04(UTC)
  • マージ日時: 2026年04月14日 16:37:45(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT ループクローニングにおいて、ダウンカウントループの条件生成が不十分だったバグを修正します。ダウンカウントループで初期値が配列長と等しい場合、不正に高速パスが実行される可能性がありました。初期値が配列長より厳密に小さいことを常に検証する必要があります。

変更内容

  • src/coreclr/jit/loopcloning.cpp: ダウンカウントループのクローニング条件導出を厳密化。初期値が配列長より小さい(等しくない)ことを要求するように条件演算子を調整(+3/-3行)
  • src/tests/JIT/opt/Cloning/DownCounted.cs: 配列とSpanのダウンカウントループでLengthから開始するケースのリグレッションテストを追加。これらは正しくクローニング条件が機能していればIndexOutOfRangeExceptionをスロー(+72行)
  • src/tests/JIT/opt/Cloning/DownCounted.csproj: テストプロジェクト定義を追加(+8行)

パフォーマンスへの影響

影響なし。この修正は正確性の向上であり、パフォーマンスへの直接的な影響はありません。むしろ不正な最適化を防ぐことで、境界外アクセスの予期しない実行を回避します。

関連Issue

なし

その他

JIT内部実装(ループクローニング最適化)の修正であり、公開APIへの影響はありません。テストコメントで末尾の空行整理が指摘されていますが、修正対象として反映されています。


#126719 Strip partial and virtual modifiers from generated COM interface method stubs

  • 作成者: @Copilot
  • 作成日時: 2026年04月09日 16:51:52(UTC)
  • マージ日時: 2026年04月14日 18:19:59(UTC)
  • ラベル: area-Infrastructure

概要

ComInterfaceGeneratorVtableIndexStubGeneratorで、ユーザーが宣言した[GeneratedComInterface]インターフェースのメソッドにpartialまたはvirtual修飾子を付与した場合、生成されるスタブコードに無効な修飾子がコピーされていた問題を修正します。生成されたコードからpartialvirtualキーワードをフィルタリングして、有効なC#を生成するようにしました。

// 以前は無効なコードが生成されていた例
[GeneratedComInterface]
[Guid("...")]
internal partial interface ICalculator
{
    public virtual partial int Subtract(int a, int b);
}

変更内容

  • ComInterfaceGenerator.cs: CalculateStubInformationメソッド内で、既存のNewKeywordフィルタと併せてSyntaxKind.PartialKeywordSyntaxKind.VirtualKeywordをフィルタリングするよう追加
  • VtableIndexStubGenerator.cs: CalculateStubInformationメソッド内のモディファイア抽出処理にPartialKeywordVirtualKeywordフィルタを追加
  • Compiles.cs: partial/virtual修飾子が無効なコードを生成しないことを確認する回帰テストを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • LibraryImportGeneratorDownlevelLibraryImportGeneratorは意図的に変更されていません。これらはpartialメソッド実装を生成する場合があり、partialキーワードの保持が必要なため

#126702 Fix typos in docstring for HttpClientBuilderExtensions.AddTypedClient

  • 作成者: @emilwall
  • 作成日時: 2026年04月09日 11:59:39(UTC)
  • マージ日時: 2026年04月14日 14:53:33(UTC)
  • ラベル: area-Extensions-HttpClientFactory community-contribution

概要

HttpClientBuilderExtensions.AddTypedClient<TClient, TImplementation>のXMLドキュメントコメントに含まれる2つのタイポを修正しました。

  • "They type specified will" → "The type specified will"
  • "The type specified by will" → "The type specified will"

変更内容

  • src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientBuilderExtensions.cs
    • XML docstring内の2つのタイポを修正(+2/-2行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

公開APIのドキュメント修正のため、ランタイム動作への影響はありません。


#126693 Work around Schannel TLS resume disable race on older Windows

  • 作成者: @rzikm
  • 作成日時: 2026年04月09日 07:47:37(UTC)
  • マージ日時: 2026年04月14日 07:19:23(UTC)
  • ラベル: area-System.Net.Security

概要

Windows Server 2022以前のバージョンにおいて、ApplyControlToken(SSL_SESSION_DISABLE_RECONNECTS)がSchannel内部のセッションキャッシュとの競合状態により、TLS再開が無効化されてもセッションIDがClientHelloに埋め込まれる問題を修正します。修正後は、セキュリティコンテキストを削除してInitializeSecurityContextを再実行し、新しいClientHelloを生成することで問題を回避します。この対応はWindows 11未満(ビルド22000未満)に限定されています。

変更内容

  • SslStreamPal.Windows.cs: ApplyControlToken成功後、ビルド22000未満のWindows環境でセキュリティコンテキストを破棄し、InitializeSecurityContextをnullコンテキストで再実行する回避策を実装。
  • SslStreamAllowTlsResumeTests.cs: 従来無効化されていたClientDisableTlsResume_SucceedsテストのActiveIssueアノテーションを削除し、テストを再度有効化。

パフォーマンスへの影響

Windows Server 2022以前では、TLS再開を無効化する際に追加のセキュリティコンテキスト破棄と再初期化が発生するため、若干のオーバーヘッドが生じます。Windows 11以降は影響なし。

関連Issue

#103449

その他

なし


#126647 Remove stderr logging in GSSAPI initialization

  • 作成者: @rzikm
  • 作成日時: 2026年04月08日 14:33:29(UTC)
  • マージ日時: 2026年04月14日 07:21:08(UTC)
  • ラベル: area-System.Net.Security

概要

GSSAPI初期化時のstderr ログ出力を削除し、エラーハンドリングを例外ベースに変更するPRです。libgssapi_krb5.so.2がオプションまたは利用不可な環境(チゼル化されたコンテナなど)における動作を改善します。

変更内容

  • pal_gssapi.c: 必要なGSSAPIシンボルが解決できない場合の動作をstderr ログからabort()に変更
  • NegotiateAuthenticationPal.Unix.cs: Create()メソッドの例外ハンドリングを拡張し、広範なExceptionをキャッチしてUnsupportedにマッピング
  • Interop.NetSecurityNative.IsNtlmInstalled.cs: GSS初期化失敗時に静的コンストラクタからDllNotFoundExceptionをスロー

パフォーマンスへの影響

影響なし

関連Issue

その他

Copilotのレビューコメント指摘により、静的コンストラクタからのDllNotFoundExceptionのスロー処理にコンパイル時の問題が存在することが報告されています。


#126525 Fix stackoverflowtester to skip ARM32 in TestStackOverflowLargeFrameMainThread

  • 作成者: @Copilot
  • 作成日時: 2026年04月03日 23:43:29(UTC)
  • マージ日時: 2026年04月14日 04:57:39(UTC)
  • ラベル: area-Infrastructure-libraries

概要

ARM32プラットフォームでTestStackOverflowLargeFrameMainThreadテストが確実に失敗するため、スキップ条件にArchitecture.Armを追加する修正。大フレームメソッド(65KB/フレーム)がARM32で実行される際、JITがスタックページを調査する方法の制限により、ガードページフォルトが実行時の検出ウィンドウ(signal.cppの2ページ)外で発生し、SIGABRT(終了コード134)ではなくSIGSEGV(終了コード139)が生成されることが原因。

// 変更前
if (((RuntimeInformation.ProcessArchitecture == Architecture.Arm64) || ... ||
    (RuntimeInformation.ProcessArchitecture == Architecture.LoongArch64)) && ...)

// 変更後
if (((RuntimeInformation.ProcessArchitecture == Architecture.Arm64) || ... ||
    (RuntimeInformation.ProcessArchitecture == Architecture.LoongArch64) ||
    (RuntimeInformation.ProcessArchitecture == Architecture.Arm)) && ...)

変更内容

  • src/tests/baseservices/exceptions/stackoverflow/stackoverflowtester.cs: Unix/macOS上でTestStackOverflowLargeFrameMainThreadをスキップする条件にArchitecture.Armを追加。既に正しく実装されていたTestStackOverflowLargeFrameSecondaryThreadと一貫性を持たせた。

パフォーマンスへの影響

影響なし。テストのみの修正。

関連Issue

#110173(参照のみ。ARM32スタックオーバーフロー検出の根本的な制限)

その他

  • 顧客への影響: なし。テストスキップのみの修正で、製品の動作には変更がない。
  • リスク: 最小限。既に同じファイル内で適用されているパターンと同じ早期リターン処理をARM32 Unix上で追加する。
  • テスト: 非ARM32プラットフォームでは動作変更なし。修正内容は既に正しく実装されたセカンダリスレッド版と同じパターン。

#126447 Fix ZipArchive Update removing data descriptors

  • 作成者: @bwinsley
  • 作成日時: 2026年04月02日 02:49:09(UTC)
  • マージ日時: 2026年04月14日 12:41:44(UTC)
  • ラベル: area-System.IO.Compression community-contribution

概要

ZipArchive.Update モードで既存のZIPを開く際、データディスクリプタ(general purpose bit flag bit 3)を持つエントリが上書きされてアーカイブが破損する問題を修正しました。非シーク可能なストリームで作成されたアーカイブやJavaのZipOutputStream、Azure SDKなどで作成されたアーカイブが影響を受けます。.NET 10で導入された PR #102704 の最適化による回帰です。

変更内容

  • オフセット計算の修正(ZipArchive.cs)ReadCentralDirectory()時に各エントリのEndOfLocalEntryDataを事前計算し、WriteFileCalculateOffsetsでデータディスクリプタ(12~24バイト)を含めたオフセットを使用するように変更
  • メタデータのみの書き込み時のシーク修正(ZipArchiveEntry.cs、ZipArchiveEntry.Async.cs) — ローカルファイルヘッダ書き込み後、相対シークから絶対位置のEndOfLocalEntryDataへのシークに変更し、圧縮データとデータディスクリプタの両方を正確にスキップ
  • データディスクリプタの保持(ZipArchiveEntry.cs、ZipArchiveEntry.Async.cs)WriteLocalFileHeaderpreserveDataDescriptorパラメータを追加。メタデータのみの書き込みで元のエントリがbit 3を持つ場合、bit 3を保持しCRC32/圧縮サイズ/非圧縮サイズを0にしてデータディスクリプタ規約に準拠
  • テスト追加zip_UpdateTests.csに3つの回帰テストを追加(非シーク可能ストリームからのアーカイブ生成、エントリ削除、メタデータのみの変更を検証)

パフォーマンスへの影響

影響なし。修正はオフセット計算とシーク動作の正確性向上であり、パフォーマンス低下はありません。

関連Issue

#126344

その他

  • 破壊的変更なし。内部実装(ZipArchiveEntryの非公開メソッド)の修正
  • 2つの非公開メソッド(WriteLocalFileHeaderWriteLocalFileHeaderPrepare)のシグネチャ変更あり
  • 全1739テスト合格(既存1733 + 新規6テスト実行)

#126396 Add ConfigurationIgnoreAttribute

  • 作成者: @rosebyte
  • 作成日時: 2026年04月01日 06:25:15(UTC)
  • マージ日時: 2026年04月14日 16:01:19(UTC)
  • ラベル: area-Extensions-Configuration

概要

ConfigurationIgnoreAttributeを新たに追加し、設定バインディング時に特定のプロパティを明示的にスキップできるようにしました。リフレクションベースのバインダーとソースジェネレータの両方を更新して、無視されたプロパティをバインディング対象から除外します。

[ConfigurationIgnore]
public string IgnoredProperty { get; set; }

変更内容

  • Microsoft.Extensions.Configuration.Abstractions: ConfigurationIgnoreAttributeを新規追加(実装 + ref)
  • ConfigurationBinder.cs: リフレクションバインディング時に無視されたプロパティをスキップ、コンストラクタパラメータ/プロパティマッチング時に無視されたプロパティを非バインド可能として扱う
  • ソースジェネレータ: PropertySpecにIsIgnoredフラグを追加、パーサーで[ConfigurationIgnore]を解析、TypeIndexでバインド可能性判定時に考慮
  • テスト: 無視動作、ErrorOnUnknownConfiguration、プライマリコンストラクタマッチングのテストを追加(296テスト合格)
  • ドキュメント: README/PACAKGEサンプルを更新

パフォーマンスへの影響

影響なし

関連Issue

#125111

その他

Copilotの指摘: コンストラクタパラメータ/プロパティの名前比較が大文字小文字を区別しており(p.Name == property.Name)、他箇所では大文字小文字を区別しない比較(OrdinalIgnoreCase)が使用されているため、プライマリコンストラクタのような名前が異なるケース("color" → "Color")で不正なバインディングが発生する可能性がある点が指摘されています。


#126276 Add sources from iltrim hackathon

  • 作成者: @MichalStrehovsky
  • 作成日時: 2026年03月29日 12:51:29(UTC)
  • マージ日時: 2026年04月14日 17:18:26(UTC)
  • ラベル: linkable-framework area-Tools-ILLink

概要

5年前のiltrim hackathonで開発されたIL-levelトリマーのプロトタイプをdotnet/runtimeに統合します。ILCompiler.TypeSystem、DependencyAnalysisFramework、System.Reflection.Metadataを活用し、Mono.Linker.Testsインフラストラクチャ上に構築されています。約14,000行から7,000行に削減され、テストの32%が現在パスしています。

変更内容

ILTrim.Core実装

  • 型システムコンテキスト(ILTrimTypeSystemContext)の追加
  • 依存関係分析ノード群(TokenBasedNode、TokenWriterNode、MethodBodyNode等)の実装
  • ECMA署名のスキャンと書き換え(EcmaSignatureAnalyzer、EcmaSignatureRewriter)
  • メタデータ・PE出力機構(ModuleWriter、TokenMap)
  • メタデータテーブル処理(TypeDef、MethodDef、Field等47種類のノード)

ILTrim.Tests統合

  • Mono.Linker.Tests共有テストランナーの再利用(#if ILTRIMコンパイルパス)
  • TrimmingDriver、TrimmingArgumentBuilder等のテスト実行基盤
  • 失敗テストのベースライン機構

CLI・ビルド設定

  • System.CommandLineベースのILTrim.Exeプロジェクト
  • repro.csproj(テスト用サンプル)
  • eng/Subsets.props更新(+toolsサブセットに統合)
  • Mono.Linker.Tests関連の#if ILTRIMコンディショナルコンパイル追加

パフォーマンスへの影響

影響なし

関連Issue

#126275

その他

  • ドラフト状態での提出であり、著者による完全なレビューが未実施
  • Claudeによるrebase、ビルド修正、テスト自動化支援(実装は一部のみ)を活用
  • 公開APIではなく内部ツール実装(src/coreclr/tools配下)
  • Copilotによる低信度コメント:LinkContext.csのUnintializedContextFactory型名にスペルミス指摘あり

#126199 [clr-ios] Fix SIGSEGV in open virtual delegate dispatch with interpreter

  • 作成者: @kotlarmilos
  • 作成日時: 2026年03月27日 13:09:01(UTC)
  • マージ日時: 2026年04月14日 11:26:20(UTC)
  • ラベル: os-ios area-CodeGen-Interpreter-coreclr

概要

インタープリタが開放型仮想デリゲート(open virtual delegate)のコンパイル済みターゲットを呼び出す際のSIGSEGV(セグメンテーション違反)を修正しました。インタープリタの呼び出しハンドラが、解決されたターゲットがコンパイル済み(targetIp == NULL)である開放型仮想デリゲートを検出した場合、これまでは汎用パスでGetTarget()を呼び出していましたが、開放型デリゲートの場合null が返されて引数スロットが破損していました。修正により、コンパイル済みターゲットを持つ開放型仮想デリゲート用の専用パスが追加され、memmoveを使ってデリゲートオブジェクトを除去しながら引数をシフトします。V128引数の16バイトアラインメントも保持します。

変更内容

  • src/coreclr/vm/interpexec.cpp: 開放型仮想デリゲートかつtargetIp == NULLの場合のハンドリングを追加。ShiftDelegateCallArgs()ヘルパー関数を導入して引数シフト処理を統一し、解決されたメソッドを直接CALL_INTERP_METHOD経由でディスパッチします。
  • src/coreclr/interpreter/compiler.cpp/inc/intops.def: インタープリタコンパイラの関連処理を更新。
  • src/libraries/tests.proj: #124325で除外されていたAppleMobileテストスイートを再度有効化(System.Runtime.Serialization.Xml.Testsを除く)。
  • src/libraries/Common/tests/System/Runtime/Serialization/Utils.cs: AssemblyDependencyResolverの初期化をBrowserおよびAppleMobileプラットフォームで特殊処理。

パフォーマンスへの影響

影響なし

関連Issue

#124325

その他

  • 本修正はiOSプラットフォーム特有の問題(interpreter + open virtual delegate呼び出し)に対応しています。
  • 引数シフト処理時のV128(SIMD)アラインメント要件が厳密に保持されるように設計されており、スタックレイアウト要件の違反を防いでいます。
  • コメントにおいて、テイルコール(INTOP_CALLDELEGATE_TAIL)パスでコンパイル済みターゲットが解決される場合のアラインメント問題が指摘されており、今後の改善が検討される可能性があります。
  • AssemblyDependencyResolverはAndroidなどの一部モバイルプラットフォームでも非対応のため、PlatformDetection.IsMobileへの統一が推奨されています。

#126173 Fix duplicate assembly name errors in crossgen outerloop merged runners

  • 作成者: @Copilot
  • 作成日時: 2026年03月26日 22:37:21(UTC)
  • マージ日時: 2026年04月14日 18:19:02(UTC)
  • ラベル: area-Infrastructure

概要

Crossgen outerloop ビルドにおいて、異なるディレクトリに存在する同名の .csproj ファイル(finally.csprojTarget.csproj)がMergedTestRunner内で重複するアセンブリ名を生成し、MSBuildの競合解決によって参照が静かに削除される問題を修正しました。MergedTestRunner.targetsにおいて、extern alias とアセンブリ名の導出ロジックを%(Filename)から%(RelativeDir)%(Filename)(非英数字を_で置換)に変更し、ファイルシステム上の位置情報を含めることで一意性を保証します。

変更内容

  • src/tests/MergedTestRunner.targets:
    • ProjectReferenceAliases導出を%(RelativeDir)%(Filename)(サニタイズ済み)に変更し、同じファイル名でも異なるディレクトリに存在するプロジェクトには一意なaliasが付与されるように改善
    • ProjectReferenceAdditionalPropertiesを使用して、各参照プロジェクトに一意なAssemblyNameを渡すことで、MSBuildの競合解決による参照削除を防止

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この修正はビルド処理の一部であり、個別のテスト.csprojファイルへの変更は不要です。外側のループ(outerloop)ビルドでのみ問題が顕在化した理由は、該当するテストペアがCLRTestPriority=1に設定されていたためです。


#126112 Refactor ObjectDataInterner to support pluggable deduplicators and enable for ReadyToRun

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年03月25日 17:51:15(UTC)
  • マージ日時: 2026年04月14日 23:55:59(UTC)
  • ラベル: area-ReadyToRun

概要

ObjectDataInternerをリファクタリングし、プラグ可能なIObjectDataDeduplicatorインターフェースを導入することで、デデュプリケーション戦略を抽象化します。これにより、NativeAOT(メソッドボディの折畳み)とReadyToRun(コピーされたメソッドILの折畳み)の両方で統一されたデデュプリケーション基盤を共有できるようになります。

変更内容

  • ObjectDataInternerの共有化: Common/Compiler/に移動し、params IObjectDataDeduplicator[]を受け入れるようにリファクタリング
  • IObjectDataDeduplicatorインターフェース: DeduplicatePassメソッドを持つ単一の戦略インターフェースを導入
  • MethodBodyDeduplicator(NativeAOT): MethodDesc/IMethodBodyNode固有のロジック(CanFoldMethodInternKeyMethodInternComparer)を抽出してデデュプリケーター化
  • CopiedMethodILDeduplicator(ReadyToRun): CopiedMethodILNodeインスタンスを生のILバイト列で比較してデデュプリケートする新規実装
  • NodeFactory.CanFold: ベースNodeFactoryに仮想メソッドを追加(既定はfalse)、RyuJitNodeFactoryMethodBodyDeduplicatorに委譲
  • ObjectWriterの統一化: ReadyToRun向けの#if !READYTORUNガードを削除し、両パイプラインでデデュプリケーションが均一に実行される
  • ReadyToRunNodeCache: 列挙を有効にするためValuesプロパティを追加

パフォーマンスへの影響

影響なし(リファクタリングによる機能統一のため、既存のNativeAOT動作は変わらず、ReadyToRun向けに新たにデデュプリケーション機能が追加される)

関連Issue

なし

その他

  • GitHub Copilotで生成されたPRです
  • Copilotのレビューで低信度のコメント指摘:MethodBodyDeduplicator.cs:61において、複数のデデュプリケーターが同じbodyに対して異なるマッピングを追加する場合、TryAddは競合をサイレントに無視するため、非決定的な動作やデデュプリケーション結果の部分適用につながる可能性があります

#125832 Merge release/9.0 staging into release/9

  • 作成者: @steveisok
  • 作成日時: 2026年03月20日 14:01:40(UTC)
  • マージ日時: 2026年04月14日 16:08:19(UTC)
  • ラベル: Servicing-approved area-System.Net.Quic

概要

release/9.0 stagingブランチの変更をrelease/9ブランチにマージするリリース統合PR。System.Net.WebSocketsのプロトコル検証強化、System.Net.Quicのテスト環境対応、ビルド基盤のアップデートを含みます。

変更内容

  • System.Net.WebSockets: サーバーが受信したマスク済みでないフレームをプロトコルエラーとして扱う検証を追加。テストとリソース文字列を追加。
  • System.Net.Quic: Azure Linux 3 VM対応として、複数の機能テストクラスにIsNotAzureLinux3VM条件を適用。
  • エンジニアリング: Linux ビルドプールイメージ要件をAzure Linux 3に更新、XHarness ツール/依存関係バージョンをアップデート、obsoleteなNuGetパッケージソース(dotnet-emsdk)を削除。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはrelease/9.0 stagingブランチからのマージであり、.NET 9.0リリースブランチ対応のメンテナンス統合です。System.Net.WebSocketsの変更はWebSocket プロトコル仕様(RFC 6455)への準拠強化を意図しています。


#125231 Fix DefaultCOMImpl reference counting bugs in DAC

  • 作成者: @max-charlamb
  • 作成日時: 2026年03月05日 18:00:34(UTC)
  • マージ日時: 2026年04月14日 03:07:32(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

DAC(Debugging Assist Code)のDefaultCOMImplテンプレートクラスにおける2つの参照カウント管理バグを修正し、cDACの互換性回避策を削除するPRです。また、ClrMDを最新版(4.0.0-beta)にバージョンアップし、cDACでCLRDATA_REQUEST_REVISIONを直接実装しています。

変更内容

  • dacimpl.h: DefaultCOMImpl::Release()の後置デクリメント(mRef--)を前置デクリメント(--mRef)に修正。IUnknownコントラクト違反により、参照カウントが0になってもオブジェクトが解放されないメモリリークが発生していました。
  • request.cpp: GetMethodTableSlotEnumeratorで返却時にQueryInterface/AddRefを呼び出し、参照カウントを適切に管理するように修正。
  • SOSDacImpl.IXCLRDataProcess.cs: CLRDATA_REQUEST_REVISIONを9から10へ実装し、修正された参照カウント動作をClrMDが検出可能に。DEBUG時にレガシーDACとの整合性を検証。
  • SOSDacImpl.cs: GetHandleEnum/GetHandleEnumForTypesにおける参照カウント意図的リークの互換性回避策を削除。
  • cdacstress.cpp: 修正されたRelease()に対応するため、補正的な二重Release()呼び出しを削除。
  • eng/Versions.props: Microsoft.Diagnostics.Runtimeを3.1.512801から4.0.0-beta.26210.1へアップデート。

パフォーマンスへの影響

メモリ管理の改善:複数のDefaultCOMImpl派生クラス(DacHandleWalkerDacStackReferenceWalkerDacMemoryEnumeratorサブクラス、DacMethodTableSlotEnumeratorDacStackReferenceErrorEnum)で発生していたメモリリークが解消されます。

関連Issue

#125231

その他

  • 兄弟PR: dotnet/diagnostics#5789(マージ済み)、microsoft/clrmd#1414(マージ済み)、microsoft/clrmd#1416(マージ済み)で関連修正が並行実施。
  • クライアント対応: ClrMD 4.0.0-beta.26210.1により、CLRDATA_REQUEST_REVISION 10検出による二重解放防止、ネストされたジェネリック型のParseGenericTypeArgumentNames修正、キャッシュされたジェネリックインスタンス化の修正が含まれます。

#119419 Remove base DAM mismatch warning on types

  • 作成者: @sbomer
  • 作成日時: 2025年09月06日 00:22:51(UTC)
  • マージ日時: 2026年04月14日 18:17:09(UTC)
  • ラベル: linkable-framework area-Tools-ILLink

概要

Dynamically Accessed Members (DAM) 注釈の基底型不一致警告を削除します。基底型での警告は不要です。なぜなら派生型の構築時に警告が生成されるため、穴は生じないからです。この変更により、そのような型の静的メソッド使用が可能になります。併せて、ILLink の分岐削除時の IL オフセット追跡バグを修正します。

変更内容

  • DynamicallyAccessedMembersAnalyzer.cs: 基底型の DAM 不一致処理を削除
  • UnreachableBlocksOptimizer.cs: 到達不可能ブロック削除時の IL オフセット修正(38行追加)
  • GenericArgumentDataFlow.cs: 新しい制約処理を追加
  • FlowAnnotations.cs: ジェネリックパラメータの new 制約チェックメソッド追加(34行追加)
  • MarkStep.cs: 基底型のジェネリック引数データフロー処理を削除
  • DataFlowAnalyzerContext.cs: ブール値フラグから特定のアナライザーインスタンスに変更(トリムアナライザーの参照を改善)
  • TrimAnalysis 系クラス: アナライザーコンテキスト参照の更新
  • テストケース: 基底型 DAM 不一致警告の期待値を削除・更新

パフォーマンスへの影響

影響なし

関連Issue

#118713 #119290 #119291(依存PR)

その他

  • このPRは内部実装(ILLink トリマーとRoslyn アナライザー)の変更です
  • 破壊的変更ではなく、警告の削除により使用可能性を向上させています
  • IL オフセット追跡バグの修正は、メソッドボディスキャン中の既知スタック追跡の正確性を改善します

目次