注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #134148 [release/11.0] Fix .NET 11 rc1 SDK crash on RHEL8 arm64
- #134135 [perf] Optimise {ActivityTraceId|ActivitySpanId}.CopyTo()
- #134113 Fix TimeSpan constructor overflow
- #134112 Implement IParsable on Uri
- #134104 [PERF] Enable slow performance CI for mainline releases
- #134099 JIT: preserve side effect ordering when unrolling UTF16 comparisons
- #134097 JIT: stop tail duplication from looping forever around a conditional …
- #134096 [release/9.0-staging] Disable RSA SHA1/384 signature tests on Android
- #134079 Fix ILTrim field store dataflow
- #134073 Unify native API availability probes
- #134065 [release/11.0] Fix NativeAOT resource string inlining for async IL
- #134047 [release/11.0] Disable ConnectAsync_WithBuffer_Succeeds test on all platforms
- #134041 [release/11.0] Disable WebSocket Clien SendAsync_Cancel_Success test
- #134038 [release/11.0] Correct HTTP/2 stream window cap test expectations
- #134036 [release/11.0] Separate QUIC idle-timeout test setup from inactivity
- #134034 [release/11.0] Quarantine async IPAddress DNS test on OSX and MacCatalyst
- #134010 [wasm] Package CoreCLR native symbol map
- #133932 Fix Wasm R2R exceptions escaping filters
- #133887 Fix .NET 11 rc1 SDK crash on RHEL8 arm64
- #133827 JIT: Fix null-check ordering in EH regions
- #133802 JIT: Preserve overflow checks when folding scaled indexes
- #133654 Add Microsoft.Extensions.FileProviders.Composite package README
- #133577 [iOS] Avoid debugger patches in R2R code without dynamic code support
- #133378 [wasm][coreclr] ReadyToRun for CoreCLR browser-wasm
- #133076 Check the IValueTaskSource case first in HandleSuspended
- #133023 Avoid duplicate ValueTask checks in transparent awaits
- #132517 JIT: Enable async inlining stress under JitStress
- #132448 Abort when there's an attempt to reinitialize a runtime thread object
- #129536 [release/10.0] Fix assembly labels on MacOS X64 to be LOCAL_LABEL
- #129534 [release/8.0-staging] Fix assembly labels on MacOS X64 to be LOCAL_LABEL
- #126639 Fix null-forgiving operator misuse in System.Diagnostics.EventLog
- #123292 Make analyzers and ILLink trimming opt-in via MSBuild properties
#134148 [release/11.0] Fix .NET 11 rc1 SDK crash on RHEL8 arm64
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月17日 18:15:48(UTC)
- マージ日時: 2026年09月17日 23:10:41(UTC)
- ラベル: Servicing-approved arch-arm64 os-linux area-NativeAOT-coreclr
概要
NativeAOT コンパイルされた .NET SDK コンポーネントが RHEL8 arm64 環境でクラッシュする問題を修正するバックポートです。Arm64 命令エンコーディングが RHEL のデフォルト 64kB ページサイズに対応していなかったことが原因でした。
変更内容
- src/coreclr/nativeaot/Runtime/ThunksMapping.cpp : NativeAOT マーシャルド デリゲート サンク用の Arm64 命令エンコーディングを修正(+4/-2)
パフォーマンスへの影響
影響なし
関連Issue
#133887(オリジナルの修正PR) #133944(テストカバレッジ改善のためのIssue)
その他
- 本変更は release/11.0 ブランチへのバックポートです
- RHEL 環境での検証済み
- 破壊的変更なし
- リスク評価:低
#134135 [perf] Optimise {ActivityTraceId|ActivitySpanId}.CopyTo()
- 作成者: @martincostello
- 作成日時: 2026年09月17日 13:09:08(UTC)
- マージ日時: 2026年09月17日 21:13:47(UTC)
- ラベル: area-System.Diagnostics.Tracing community-contribution
概要
ActivityTraceId.CopyTo() と ActivitySpanId.CopyTo() のパフォーマンスを最適化します。内部の16進数文字列からバイト列への変換処理を Convert.FromHexString() に切り替え、利用可能な環境では SIMD 加速を活用して、IDが変動する現実的なシナリオで約9倍のスループット向上を実現します。
変更内容
System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs
ActivityTraceId.SetSpanFromHexChars()をConvert.FromHexString()(NET ビルド時) を使用するように更新- 厳密な成功チェック(
OperationStatus.Doneおよび期待されるbytesWritten)を追加し、不一致時に例外をスロー - ヘルパーメソッドの長さ前提条件を XML コメントで明記
System.Diagnostics.DiagnosticSource/tests/ActivityTests.cs
- 更新されたエラーハンドリングのリグレッションテストを追加
パフォーマンスへの影響
大幅な改善を実現(ベンチマーク結果):
| メソッド | ID変動時 | 改善前 | 改善後 | 高速化 |
|---|---|---|---|---|
ActivityTraceId.CopyTo |
あり | 117.24 ns | 12.31 ns | 9.5倍 |
ActivitySpanId.CopyTo |
あり | 58.37 ns | 6.73 ns | 8.7倍 |
ActivityTraceId.CopyTo |
共有時 | 21.80 ns | 11.82 ns | 1.8倍 |
ActivitySpanId.CopyTo |
共有時 | 11.80 ns | 6.53 ns | 1.8倍 |
テスト環境:.NET 10.0.12、13th Gen Intel Core i7-13700H、Windows 11 x64
関連Issue
なし
その他
互換性に関する注意:
- NET ビルド時には
Convert.FromHexString()による SIMD 加速が適用され、レガシーパスは#elseで保持されています - Copilot レビューで複数の潜在的な問題が指摘されています:
- NET パスにおいて例外スロー前に destination に部分的な書き込みが発生する可能性
- レガシーパス(
#else)ではDebug.Assertに依存しており、Release ビルドでは異なる動作になる可能性 - エラーメッセージで公開 API のパラメータ名と異なる名前("outBytes")が露出する可能性
#134113 Fix TimeSpan constructor overflow
- 作成者: @asad24-dev
- 作成日時: 2026年09月16日 23:19:48(UTC)
- マージ日時: 2026年09月17日 17:49:25(UTC)
- ラベル: community-contribution area-System.DateTime
概要
日数ベースのTimeSpanコンストラクタにおいて、中間的なマイクロ秒単位の算術演算がオーバーフローする前に範囲チェックが行われていた問題を修正します。計算をInt128で拡張してから、サポートされているTimeSpan範囲に対して検証し、最終的にlongに縮小するように改善しました。
変更内容
- src/libraries/System.Private.CoreLib/src/System/TimeSpan.cs: 日数ベースのコンストラクタの中間計算を
Int128で実行してからオーバーフロー検証を行うよう変更(14行の変更) - src/libraries/System.Runtime/tests/System.Runtime.Tests/System/TimeSpanTests.cs: 正負のオーバーフロー、ラップアラウンドケースを含むリグレッションテストを追加(26行追加)
パフォーマンスへの影響
懸念あり。レビュアーの指摘によると、時間・分・秒・ミリ秒の各成分はintであり、それぞれの積はlongの範囲内に収まるため、Math.BigMulを使用した全幅乗算は不要です。日数の積のみを拡張演算する必要があり、他の4項に対してMath.BigMulを呼び出すと、通常のコンストラクタ呼び出しのたびに不要な高位ビット乗算が発生します。
関連Issue
その他
本修正は内部実装の改善であり、公開APIの変更ではありません。コンストラクタの引数値の妥当性チェック(オーバーフロー検出)が確実に機能するようになります。パフォーマンス懸念については、現在のレビューでは非ブロッキング指摘となっていますが、不要なMath.BigMul呼び出しを削減することが推奨されています。
#134112 Implement IParsable on Uri
- 作成者: @MihaZupan
- 作成日時: 2026年09月16日 22:59:51(UTC)
- マージ日時: 2026年09月17日 15:48:31(UTC)
- ラベル: area-System.Net
概要
Uri クラスに IParsable<Uri> インターフェースを実装しました。パース動作は UriKind.RelativeOrAbsolute で AllowImplicitFilePaths = false に設定されています。これにより、Uri.Parse() および Uri.TryParse() メソッドを使用した標準的な文字列パースが可能になります。
// 使用例
Uri uri = Uri.Parse("https://example.com", CultureInfo.InvariantCulture);
bool success = Uri.TryParse("relative/path", CultureInfo.InvariantCulture, out Uri? result);
変更内容
- Uri.cs:
UriクラスでIParsable<Uri>インターフェース実装を宣言 - UriExt.cs:
Parse()およびTryParse()メソッドの実装、パース不変量の更新 - UriCreateStringTests.cs: パース動作のシナリオテストとエッジケーステストを追加(102行)
- UriCreationOptionsTest.cs: ファイルパス動作のテストを追加(11行)
- System.Runtime.cs: パブリックAPI定義に
IParsable<Uri>を追加
パフォーマンスへの影響
影響なし
関連Issue
その他
明示的なインターフェース実装が採用されています。AllowImplicitFilePaths = false に設定されているため、ファイルパスの暗黙的な変換は行われません。
#134104 [PERF] Enable slow performance CI for mainline releases
- 作成者: @LoopedBard3
- 作成日時: 2026年09月16日 20:43:04(UTC)
- マージ日時: 2026年09月17日 02:31:46(UTC)
- ラベル: area-Infrastructure
概要
CI パイプラインの遅いパフォーマンステスト(perf-slow.yml)が、main ブランチに加えて release/*.0 の mainline リリースブランチでもトリガーされるように設定を変更しました。スケジュール実行は main のみのままで、パスフィルタやバッチ処理、ジョブ構成は変更されていません。
変更内容
- eng/pipelines/performance/perf-slow.yml: CI ブランチフィルタに
release/*.0を追加(1行追加)
パフォーマンスへの影響
パイプライン設定のみの変更であり、ランタイムやコンパイラの動作には影響ありません。ただし CI 実行頻度が増加します。
関連Issue
その他
- YAML の構文検証済み(12 のブランチマッチングケースを検証)
- ランタイムビルドやテスト実行なし(パイプライン設定のみの変更)
- 変更内容は GitHub Copilot により生成されました
#134099 JIT: preserve side effect ordering when unrolling UTF16 comparisons
- 作成者: @EgorBo
- 作成日時: 2026年09月16日 19:30:26(UTC)
- マージ日時: 2026年09月17日 11:19:28(UTC)
- ラベル: area-CodeGen-coreclr
概要
UTF-16文字列およびスパン比較の展開時に、JITコンパイラが副作用の評価順序を誤って変更していた問題を修正します。impUtf16StringComparisonとimpUtf16SpanComparisonで、展開された比較に対するテンポラリストアを追加する際に、評価スタック上の下層にある式の副作用が引数評価の後に実行されていました。特にobj.Equals("cns")/StartsWith/EndsWithのような展開では、レシーバーの直接参照解除によりNullReferenceExceptionが本来の副作用順序より先に発生していました。修正では、引数の下層にあるスタックエントリの副作用を事前にスピルして評価順序を保証します。
変更内容
- src/coreclr/jit/importervectorization.cpp: UTF-16文字列比較とスパン比較の展開時に、引数評価前の副作用をスピルする処理を追加。
- src/tests/JIT/Regression_ro_2/Runtime_133966.cs: 例外発生順序と比較動作の回帰テストを追加(71行)。
パフォーマンスへの影響
影響なし(正確性の修正であり、パフォーマンスへの実質的な影響は想定されません)。
関連Issue
その他
Copilotレビューで指摘されているように、現在の修正には不完全な点があります:impSpillSideEffects(true, ...)はGTF_GLOB_EFFECTフラグのみを対象としており、GTF_ORDER_SIDEEFFフラグのみを持つスタックエントリは依然としてスピルされないため、その後のCHECK_SPILL_NONEストアがこのエントリを飛び越える可能性があります。GTF_ORDER_SIDEEFFも含めたスピル方式への拡張が必要とされています。
#134097 JIT: stop tail duplication from looping forever around a conditional …
- 作成者: @EgorBo
- 作成日時: 2026年09月16日 19:09:52(UTC)
- マージ日時: 2026年09月17日 20:07:21(UTC)
- ラベル: area-CodeGen-coreclr
概要
JIT最適化フェーズ(fgUpdateFlowGraph)において、条件分岐のサイクル周辺で尾部複製が無限ループしてハング問題を修正します。既に複製された(ソース、ターゲット)ブロックペアをメモ化することで、重複する複製を回避し、ループの収束を保証します。
変更内容
- src/coreclr/jit/fgopt.cpp:
fgUpdateFlowGraph内での尾部複製の再試行を制限。複製済みの(ソース、ターゲット)ブロックペアをメモ化し、重複する複製をスキップする仕組みを実装。64ビットキーでブロックIDを圧縮して格納。 - src/tests/JIT/Regression_ro_2/Runtime_134008.cs: Issue #134008に対する回帰テストケースを追加。条件分岐サイクル周辺の無限ループシナリオをカバー。
パフォーマンスへの影響
影響なし。この修正は無限ループによるハング(メモリ枯渇)を防ぐもので、正常系のパフォーマンスに悪影響は出ません。メモ化処理はブロックペアの探索空間が有限であるため、オーバーヘッドは最小限です。
関連Issue
その他
fgBlockIsGoodTailDuplicationCandidateは直接的な自己参照エッジのみを除外していたため、サイクル周辺の無限ループは防止できていませんでした。この修正により、ブロック複製のペア空間が有限であることを活用してループの収束を保証します。- Copilot reviewerより、C++の
static_cast<uint64_t>使用に関するスタイル指摘あり。
#134096 [release/9.0-staging] Disable RSA SHA1/384 signature tests on Android
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月16日 18:34:27(UTC)
- マージ日時: 2026年09月17日 16:21:43(UTC)
- ラベル: Servicing-approved area-System.Security
概要
Android上でRSA SHA1/384署名テストが失敗するため、.NET 9.0向けにこれらのテストを無効化する変更です。根本原因の修正は.NET 9のバックポート基準を満たさないため、テスト側を適応させています。
変更内容
src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/SignVerify.cs: RSA署名検証テストをAndroidで無効化(+2行)src/libraries/System.Security.Cryptography/tests/X509Certificates/PublicKeyTests.cs: 公開鍵テストをAndroidで無効化(+1行)
パフォーマンスへの影響
影響なし(テストのみの変更)
関連Issue
その他
- テスト専用の変更であり、ランタイムやライブラリの実装への影響なし
- 内部報告の問題への対応
- リスク評価: なし
#134079 Fix ILTrim field store dataflow
- 作成者: @jtschuster
- 作成日時: 2026年09月16日 17:43:36(UTC)
- マージ日時: 2026年09月17日 22:28:26(UTC)
- ラベル: area-Tools-ILLink
概要
ILTrim のデータフロー分析を改善し、フィールドストア操作(stfld および stsfld)時に格納される値が対象フィールドの要件に対して正しく分析されるようにしました。これにより、5つの期待失敗テストが解決され、ILTrim の期待失敗削減スタックの第1段階を完成させています。
変更内容
- MethodBodyNode.cs: フィールドストア操作に対するデータフロー分析の トリガーを追加(+2/-1)
- ILTrimExpectedFailures.txt: 解決した5つの期待失敗エントリを削除(-5)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 本PRは ILTrim 期待失敗削減スタック(全12段階)の第1段階です
- テスト検証: Release ILTrim で928件中424件がパス、504件がスキップ、失敗なし
- ビルド検証:
./build.sh tools+tools.ilasm+tools.illinktests+tools.cdactests -testで警告およびエラーなし
#134073 Unify native API availability probes
- 作成者: @akoeplinger
- 作成日時: 2026年09月16日 15:14:31(UTC)
- マージ日時: 2026年09月17日 02:26:16(UTC)
- ラベル: area-Infrastructure
概要
ネイティブビルド全体における API 可用性チェック(特に pipe2 プローブ)の統一化と、Apple デプロイメントターゲット可用性チェックの一元管理を実施します。CMake 設定全体で一貫した _GNU_SOURCE フィーチャー定義を使用することで、Linux での glibc サポートを改善します。
変更内容
- eng/native/configurecompiler.cmake: Apple 可用性警告設定を共有コンポーネントとして追加
- src/native/libs/configure.cmake: ネイティブライブラリの可用性プローブを更新
- src/native/external/libunwind_extras/configure.cmake: libunwind の
pipe2プローブを標準化 - src/coreclr/pal/src/configure.cmake: PAL プローブを更新(
_GNU_SOURCE定義の適用)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
重要な注意事項: Copilot によるレビューコメントで指摘されている通り、PAL ターゲットが _GNU_SOURCE フィーチャー定義とともにコンパイルされることが必須です。この定義がないと glibc 環境でビルド失敗の可能性があります。本変更により、CMake 設定全体で pipe2 可用性プローブが統一され、展開ターゲット別の可用性チェックの管理が一元化されます。
#134065 [release/11.0] Fix NativeAOT resource string inlining for async IL
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月16日 14:02:10(UTC)
- マージ日時: 2026年09月17日 23:11:31(UTC)
- ラベル: Servicing-approved area-NativeAOT-coreclr
概要
NativeAOTにおいて、async メソッド内の文字列リソース検索がインライン化されない問題を修正します。この問題により、文字列リソースを使用するNativeAOTアプリケーションで不要なリソース機構が組み込まれ、アプリケーションサイズが肥大化していました。顧客報告による修正です。
変更内容
- src/coreclr/tools/Common/TypeSystem/IL/NativeAotILProvider.cs: リソース文字列インライン化ロジックの改善(+15/-2)
- src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/SubstitutedILProvider.cs: 関連する置換IL提供ロジックの調整(+3/-3)
パフォーマンスへの影響
async メソッド内のリソース文字列検索がインライン化されることにより、NativeAOTアプリケーションサイズが削減されます。不要なリソース機構の引き込みが回避されるため、バイナリサイズの削減が期待できます。
関連Issue
その他
- release/11.0ブランチへのバックポートです
- 手動テストおよびNativeAOT outerloop パイプラインでの検証済み
- リスク評価:低
#134047 [release/11.0] Disable ConnectAsync_WithBuffer_Succeeds test on all platforms
- 作成者: @rzikm
- 作成日時: 2026年09月16日 09:42:57(UTC)
- マージ日時: 2026年09月17日 11:00:56(UTC)
- ラベル: Servicing-approved area-System.Net.Sockets
概要
release/11.0ブランチにおけるソケットテストの間欠的な失敗に対応するため、ConnectAsync_WithBuffer_SucceedsテストのActiveIssueを拡大しました。既知の問題#133012に関連するもので、mainブランドではPR#133201で修正済みです。
変更内容
src/libraries/System.Net.Sockets/tests/FunctionalTests/Connect.Unix.cs- ActiveIssue #133012の適用範囲を変更(1行追加、1行削除)
- テストロジック自体の変更はなし
パフォーマンスへの影響
影響なし
関連Issue
#133012 - 間欠的なバッファ付きconnect失敗
mainでの修正: #133201
その他
注意点: Copilotレビュアーの指摘により、ActiveIssueの適用範囲に関する確認が必要です。現在の変更はすべてのUnixプラットフォームに対象を拡大していますが、問題がLinuxのみで報告されており、既存のAndroidスキップやApple/BSD向けのTFO(TCP Fast Open)カバレッジの保持を検討する必要があります。
#134041 [release/11.0] Disable WebSocket Clien SendAsync_Cancel_Success test
- 作成者: @rzikm
- 作成日時: 2026年09月16日 08:52:24(UTC)
- マージ日時: 2026年09月17日 11:01:31(UTC)
- ラベル: Servicing-approved area-System.Net
概要
WebSocket Client の flaky なキャンセレーションテスト SendAsync_Cancel_Success を無効化し、CI ノイズを削減するテスト専用の変更です。本番コードへの変更はありません。
変更内容
src/libraries/System.Net.WebSockets.Client/tests/CancelTest.Loopback.cs:SendAsync_Cancel_Successテストメソッドに[ActiveIssue]属性を追加
パフォーマンスへの影響
影響なし
関連Issue
その他
注意点: レビュアーの指摘により、現在のスキップはベースクラスの共有メソッドに適用されているため、意図した以上に広範な構成(複数の具体的なLoopbackテストクラス、SSL/非SSLケース)をスキップしてしまっています。スキップ対象を影響を受けている特定のテスト構成に限定し、他のトランスポートパスのキャンセレーションカバレッジを保持することが推奨されています。
#134038 [release/11.0] Correct HTTP/2 stream window cap test expectations
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月16日 07:34:44(UTC)
- マージ日時: 2026年09月17日 11:02:04(UTC)
- ラベル: Servicing-approved area-System.Net.Http
概要
HTTP/2ストリームウィンドウキャップのテスト期待値を修正するバックポート。テストのみの変更でCI環境をクリーンアップしています。
変更内容
- src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.Http2FlowControl.cs
- HTTP/2フロー制御に関するストリームウィンドウキャップテストの期待値を更新(+78/-13行)
- テストロジックの調整と期待値の正確化
パフォーマンスへの影響
影響なし(テストのみの変更)
関連Issue
その他
- 本変更はrelease/11.0ブランチへのバックポート
- テストオンリーの変更のためCI環境に対する影響に限定
#134036 [release/11.0] Separate QUIC idle-timeout test setup from inactivity
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月16日 07:28:06(UTC)
- マージ日時: 2026年09月17日 11:03:40(UTC)
- ラベル: Servicing-approved area-System.Net
概要
QUIC idle-timeout テストの設定をinactivity テストから分離するテスト専用の変更です。CI環境でのテスト実行をクリーンアップするための改善で、#133945のrelease/11.0へのバックポートです。
変更内容
- MsQuicTests.cs: idle-timeout テスト設定をリファクタリング(+49/-15)
- QuicTestCollection.cs: 新しいテストコレクション設定を追加(+44/-0)
テストのセットアップロジックを整理し、idle-timeout とinactivity に関連するテストの初期化処理を分離しています。
パフォーマンスへの影響
影響なし
関連Issue
その他
- テスト専用の変更のため、ランタイムやライブラリの動作には影響なし
- CI パイプラインの信頼性向上を目的とした変更
#134034 [release/11.0] Quarantine async IPAddress DNS test on OSX and MacCatalyst
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月16日 07:13:34(UTC)
- マージ日時: 2026年09月17日 11:03:54(UTC)
- ラベル: Servicing-approved area-System.Net
概要
OSX and MacCatalyst環境での非同期IPAddress DNS テストの不安定性を解決するため、該当テストをQuarantine(隔離)する変更です。CI環境でのテスト実行の安定性改善を目的としています。
変更内容
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.cs: 非同期IPAddress DNS テストにQuarantine属性を追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- テストのみの変更です
- release/11.0ブランチへのバックポートです
#134010 [wasm] Package CoreCLR native symbol map
- 作成者: @lewing
- 作成日時: 2026年09月15日 23:15:06(UTC)
- マージ日時: 2026年09月17日 19:10:04(UTC)
- ラベル: arch-wasm area-Build-mono
概要
CoreCLRブラウザビルドで生成されていたdotnet.native.js.symbolsファイルをランタイムパック(.nupkg)に含めるようにしました。これにより、WasmEmitSymbolMap=trueを設定することで、アプリケーションの再リンクを強制せずにネイティブシンボルマップを公開できます。ブートリソースモデルがシンボルファイルのSHA-256ハッシュを既存の最終WasmハッシュとともにSHA-256で保持し、指紋付きの公開ファイルが正確なペアとして検出・検証できるようになりました。
変更内容
- eng/liveBuilds.targets: CoreCLRネイティブシンボルマップを収集対象に追加
- BootJsonData.cs / BootJsonBuilderHelper.cs: ブートリソースにシンボルマップハッシュデータを追加、エミット処理を実装
- TypeScript型定義(dotnet.d.ts / public-api.ts): ネイティブアセット型とMono型定義をシンボルマップ対応に更新
- Wasm.Build.Tests: シンボルマップ検証テストを追加
ModuleConfigTests.cs: シンボルマップ発行、指紋付けのテスト(+129行)CoreCLRWasmNativeDefaultsTests.cs: WebAssembly/シンボルマップの一貫性検証(+275行)
パフォーマンスへの影響
ランタイム.nupkgサイズが71,838,978バイトから71,984,589バイト(+145,611バイト、+0.20%)に増加。アプリケーション公開はオプトイン(WasmEmitSymbolMap)のため、既定では影響なし。
関連Issue
その他
- 検証機構: WebAssembly(import/function/code/export)と Emscripten マップパーサーの独立実装により、モジュール関数インデックス検証、ランタイム/インタプリタ/libc/エクスポート/コンパイラ生成アンカー確認、シフトされたインデックスの拒否、古いWasm IDとミューテーション検出に対応
- R2R遷移サンク: 個別ロードの Webcil モジュール内の関数であり、本マップには意図的に含めず、モジュール個別の名前セクション(#132906)でカバー
- ライブ検証: Chrome/CDPでの実デバッグ(V8停止位置の名前解決成功)およびビルドテスト4件すべてがパス
#133932 Fix Wasm R2R exceptions escaping filters
- 作成者: @lewing
- 作成日時: 2026年09月15日 06:07:57(UTC)
- マージ日時: 2026年09月17日 02:04:24(UTC)
- ラベル: arch-wasm area-VM-coreclr
概要
WASM ReadyToRun(R2R)環境におけるフィルター例外の処理を修正しました。フィルター関数内で発生した例外が正しく分類・伝播されるよう、実行可能なフィルターエントリを含有するfuncletにマッピングし、既存のクロスプラットフォーム例外伝播パスを活用します。この修正により、quarantineされていた3つのランタイムテストを再度有効化できるようになりました。
変更内容
src/coreclr/jit/fgwasm.cpp: WASM固有のフィルター関数レイアウト処理の微調整(1行修正)src/coreclr/vm/eetwain.cpp: WASM R2R環境での例外ハンドリング時のフィルター境界判定処理を追加(9行追加)- テストの変更: 3つの例外処理関連テストで隔離メタデータを削除
src/tests/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b68872/b68872.ilsrc/tests/JIT/Regression_3/GitHub_4044/GitHub_4044.cssrc/tests/JIT/Methodical/eh/basics/throwinfilter.il
- 未使用のテスト依存関係を削除(
b68872.ilproj)
パフォーマンスへの影響
影響なし
関連Issue
その他
- 修正は内部ランタイム実装(例外ハンドリング)に関するもので、公開APIの変更はありません
- WASM R2R環境における例外フィルター処理の動作が変更されるため、既存の「collided-unwind fail-fast」の不変条件を保持する必要があります
- 修正は複数のテストシナリオで検証済み(ネイティブ、WASM R2R、診断スタックトレース処理を含む)
#133887 Fix .NET 11 rc1 SDK crash on RHEL8 arm64
- 作成者: @Copilot
- 作成日時: 2026年09月14日 15:50:51(UTC)
- マージ日時: 2026年09月17日 18:12:36(UTC)
- ラベル: area-NativeAOT-coreclr
概要
NativeAOT ARM64 Thunkが64 KiBページを持つシステム(RHEL8 arm64など)でクラッシュする問題を修正します。PC相対リテラルロードを使用してコモンスタブポインタを読み込むことで、範囲とアライメント検証を正確に行えるようにします。
変更内容
- src/coreclr/nativeaot/Runtime/ThunksMapping.cpp: ARM64 Thunkターゲットの読み込み方式を修正。PC相対リテラルロードを採用し、大ページサイズシステムでの範囲外参照を防止。
パフォーマンスへの影響
影響なし
関連Issue
その他
- NativeAOT ランタイムの ARM64 Thunk実装(内部実装)に関する修正
- 特定プラットフォーム(RHEL8 arm64)での実行時クラッシュ問題の解決
- .NET 11 RC1 SDKに関連する問題
#133827 JIT: Fix null-check ordering in EH regions
- 作成者: @AndyAyersMS
- 作成日時: 2026年09月13日 16:58:52(UTC)
- マージ日時: 2026年09月17日 19:00:04(UTC)
- ラベル: area-CodeGen-coreclr
概要
例外ハンドラーとフィルターで観察可能なインライン化されたメソッドの副作用に対して、レシーバーのnull-checkの順序を保証するJITコンパイラの修正です。EH(例外処理)リージョン内でのnull-checkの不正な削除フォールディングを防ぎ、回帰テストを追加しています。
Issue #133714を修正します。
変更内容
- src/coreclr/jit/importer.cpp: インライン化されたメソッド内の代入をEHリージョン内で可視的な副作用として扱い、null-checkがinlinee側効果を越えて折り畳まれるのを防ぐ。
- src/coreclr/jit/earlyprop.cpp: EH保護リージョン内でのnull-checkフォールディングを制限し、unsafe な最適化を回避。
- src/coreclr/jit/compiler.h: ヘルパー関数のパラメータ名を更新。
- src/tests/JIT/Regression_ro_2/Runtime_133714.cs: catch ハンドラーおよび exception filter に対する回帰テストカバレッジを追加。
パフォーマンスへの影響
null-checkの削除が制限されるため、EH保護リージョン内でのコード生成が増加する可能性があります。ただし具体的なベンチマーク数値は提供されていません。
関連Issue
その他
懸念事項(Copilot指摘): 現在の実装ではEHリージョン内のすべての代入(GTF_ASG)を可視的な副作用として扱っており、これがインライン化されたメソッドの内部ローカル変数への代入まで含まれます。結果として、例外ハンドラーが観察できない代入に関連するnull-checkが不要に保持される可能性があり、null-check削除の回帰につながる懸念があります。
#133802 JIT: Preserve overflow checks when folding scaled indexes
- 作成者: @EgorBo
- 作成日時: 2026年09月12日 21:23:20(UTC)
- マージ日時: 2026年09月17日 20:10:15(UTC)
- ラベル: area-CodeGen-coreclr
概要
CoreCLR JITのスケーリングされたインデックスのフォールディング処理において、チェック付き乗算のオーバーフロー例外が誤って破棄される問題を修正します。この修正により、アドレスモード最適化時にチェック付き乗算の演算結果が保持され、必要なOverflowExceptionが正しく発生するようになります。
変更内容
- src/coreclr/jit/gentree.cpp: スケーリングされたインデックス認識処理からチェック付き乗算を除外(4行追加/削除)
- src/tests/JIT/Regression_ro_2/Runtime_133782.cs: チェック付きスケーリング乗算とオーバーフロー動作に関する回帰テストを追加(41行追加)
パフォーマンスへの影響
チェック付き乗算がフォールディング対象から除外されるため、一部のアドレス計算最適化が適用されなくなる可能性がありますが、具体的なベンチマーク値は提供されていません。ただし、正確性(オーバーフロー例外の適切な発生)を優先した変更です。
関連Issue
その他
Copilotのレビューコメントによると、スケーリングインデックス認識処理での対策は施されていますが、その後の段階でのフォールディングパスにおいて、チェック付き乗算が依然として破棄される可能性が指摘されています。本PR提出時点で、この二次的な問題は完全には解決していない状態です。
#133654 Add Microsoft.Extensions.FileProviders.Composite package README
- 作成者: @z0rimo
- 作成日時: 2026年09月11日 01:41:39(UTC)
- マージ日時: 2026年09月17日 11:21:34(UTC)
- ラベル: area-Extensions-FileSystem community-contribution
概要
Microsoft.Extensions.FileProviders.CompositeパッケージにPackage READMEを追加しました。プロジェクトファイルで既定のPackage README機能を有効化し、PACKAGE.mdをNuGetパッケージに含めるようにしています。
変更内容
- Microsoft.Extensions.FileProviders.Composite.csproj: プロジェクトファイルから2行を削除し、Package README機能を既定値で有効化
- PACKAGE.md: 新規作成、35行のパッケージ説明資料を追加
パフォーマンスへの影響
影響なし
関連Issue
その他
ValidatePackageReadmeExists検証およびgit diff --checkが両方とも合格- ドキュメントとメタデータの整備に関連する変更で、機能や動作の変更は含まない
#133577 [iOS] Avoid debugger patches in R2R code without dynamic code support
- 作成者: @matouskozak
- 作成日時: 2026年09月10日 08:16:13(UTC)
- マージ日時: 2026年09月17日 13:40:12(UTC)
- ラベル: area-Diagnostics-coreclr
概要
iOSの物理デバイス上でR2R(ReadyToRun)コードが署名されている環境で、デバッガがソフトウェアブレークポイントをパッチしようとした際、メモリページの書き込み可能化によってコード署名が無効化されるという問題を修正します。FEATURE_DYNAMIC_CODE_COMPILEDが無効な場合、R2Rコード内でのデバッガパッチ適用を防止し、パッチ活性化失敗を適切に伝播させます。R2Rメソッドへの直接ブレークポイント設定はCORDBG_E_UNABLE_TO_SET_BREAKPOINTで失敗します。
変更内容
- debugger.cpp: R2Rコードへの遅延パッチマッピングを条件分岐で回避;パッチ活性化失敗を伝播;インタプリタエントリで直接スレッド開始イベント送信時に未処理のスレッドスターターをキャンセル
- controller.h:
ActivatePatchおよびAddPatchToStartOfLatestMethodパッチングAPIをブール戻り値ベースの状態返却に変更 - controller.cpp:
ActivatePatch戻り値の状態返却実装;動的コード無効時のR2Rパッチ活性化を拒否;トレーシングとバインディングパス全体でパッチ作成/活性化失敗を伝播
パフォーマンスへの影響
影響なし
関連Issue
その他
- 互換性への影響: この変更は破壊的変更ではなく、デバッガAPI動作の修正です
- 重要な注記: .NET 11へのバックポート予定(iOSの物理デバイスでのデバッグ修正)
- 指摘事項: Copilotレビューでいくつかの懸念が報告されています
MapPatchToDJIが再帰的バインドの成功を失敗と誤判定する可能性ApplyPatch失敗後にパッチ活性化が成功を報告する可能性- tvOS(同様の署名制限・非動的コード構成を持つ)がプラットフォームガードから漏れている可能性
- 再帰的バインド中の保持パッチポインタの陳腐化の可能性
- デバイスレベルの検証が必要なCore CLRデバッガパッチライフサイクル変更です
#133378 [wasm][coreclr] ReadyToRun for CoreCLR browser-wasm
- 作成者: @pavelsavara
- 作成日時: 2026年09月07日 20:52:16(UTC)
- マージ日時: 2026年09月17日 11:40:43(UTC)
- ラベル: NO-MERGE arch-wasm area-Build-mono linkable-framework os-browser
概要
CoreCLR browser-wasm向けのPublishReadyToRun機能を実装し、開発ループとpublish時の両方でReadyToRun(R2R)イメージをwasm対応crossgen2を使って生成できるようにします。デフォルトはfalseで、既存のMono実装への影響はなく、CoreCLR-onlyの新規ブランチまたはRuntimeFlavorガードで分離されています。
変更内容
- WebcilReader.cs :
MetadataReaderProviderリソースリークを修正 - ConvertDllsToWebCil.cs : プリビルドR2Rイメージのステージング検証をアセンブリバージョンからMVID比較に変更し、wasm magic byteでwebcil-in-wasmを検出
- Microsoft.NET.Sdk.WebAssembly.Browser.CoreCLR.*.targets/props : CoreCLRブラウザwasm向けR2R wiring、crossgen2解決、ステージング/キャッシュ無効化ロジックを新規追加
- BrowserWasmApp.CoreCLR.targets : native relinkをサポート
- ReadyToRunTests.cs : Playwr ightベースのブラウザテスト(dev-loop build、publish trimmed/untrimmed、native relink有無)
- 其他 : Helix correlation payloadへのcrossgen2/Crossgen2Tasksシム追加、ILLink.Tasks冗長ビルド修正
パフォーマンスへの影響
dev-loop build時: パック内のプリビルトR2Rイメージがある場合それを使用(IL変換をスキップ)するため、CoreLibサイズが5,543KBから28,990KBに増加しますが、ビルド時間は改善。publish時: 全クロージャの per-app crossgen実行が必須のため、untrimmedでは122イメージ、trimmedでは37イメージを生成(版bubble制約のため、変更されたアセンブリは全体を再コンパイル)。
関連Issue
なし
その他
- Version bubble:
--opt-cross-module:*でコンパイルされたすべてのイメージは相互にインライン可能。MVID不一致は起動時にfail-fast(グレースフルフォールバックなし) - Staging correctness :プリビルトイメージのMVID不一致はビルド時にIL変換へフォールバック
- Incremental safety :1つのアセンブリ変更で全イメージ再コンパイル必要、ステイルイメージは削除される
- Publish uniform flow :trimmed/untrimmed問わず常にper-appクロージャをコンパイル、pack R2Rをserveしない
- テスト検証:4つの独立した車両で実施、6/6 Wasm.Build.Tests成功、16/16出-of-tree Blazorアプリブラウザ検証済、
System.Runtime.InteropServices.JavaScript.Testsで476 run / 474 passed
#133076 Check the IValueTaskSource case first in HandleSuspended
- 作成者: @jakobbotsch
- 作成日時: 2026年09月02日 11:15:24(UTC)
- マージ日時: 2026年09月17日 09:29:03(UTC)
- ラベル: area-VM-coreclr
概要
RuntimeAsyncTask<T>.HandleSuspendedメソッドの非同期処理の分岐チェック順序を最適化しました。IValueTaskSourceベースの継続処理(ValueTaskSourceContinuation)を最初にチェックするよう変更し、高性能な非同期ソースの処理レイテンシを削減します。各チェック条件は相互排他的なため、機能的な変更はありません。
変更内容
- src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/AsyncHelpers.CoreCLR.cs
HandleSuspendedメソッドの条件分岐順序を変更ValueTaskSourceContinuationチェックを最初に移動- awaiter/critical notifier/task continuation等の他の継続パスは後方に配置
- 動作的な変更なし(チェック順序のみ変更)
パフォーマンスへの影響
IValueTaskSourceベースの継続処理のディスパッチレイテンシが削減される見込みIValueTaskSourceの使用が増加傾向にあるため、一般的なケースでの性能向上が期待できる- 他の継続パスのパフォーマンスへの影響なし
関連Issue
なし
その他
- 相互排他的な条件のみを対象とした最適化であり、逆互換性の問題はなし
- ランタイムの内部実装(
System.Private.CoreLib)の変更であり、公開APIへの影響なし
#133023 Avoid duplicate ValueTask checks in transparent awaits
- 作成者: @jakobbotsch
- 作成日時: 2026年09月01日 14:48:40(UTC)
- マージ日時: 2026年09月17日 09:28:37(UTC)
- ラベル: area-System.Threading.Tasks runtime-async
概要
TransparentAwaitでのValueTask処理を最適化し、バッキングオブジェクト(Task vs IValueTaskSource)の分類を1回に集約して、型指定されたインスタンスをサスペンドヘルパーに渡すことで、重複した型チェックを排除します。これにより、ランタイム非同期テールアウェイトでの不要なValueTask実体化と型チェックが削除されます。
変更内容
src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/AsyncHelpers.CoreCLR.cs
TransparentSuspend(ValueTask)/TransparentSuspend(ValueTask<T>)をTransparentSuspend(IValueTaskSource, short)/TransparentSuspend(IValueTaskSource<T>, short)に変更- Task バッキングの場合は既存の
TransparentSuspend(Task)/TransparentSuspend(Task<T>)を使用 TransparentAwait(ValueTask)/TransparentAwait(ValueTask<T>)を、ValueTask の_objフィールドに直接分岐して、ValueTask の再実体化/再チェックなしにTaskAwaiter.ValidateEndまたはIValueTaskSource*.GetResultを呼び出すように更新- AsyncHelpers.Await の既存実装と同じパターンを適用
パフォーマンスへの影響
改善:約2% RPS向上
- TechEmpower Arm64 JSON ベンチマークで測定
- 主な改善源:
SocketReceiver.WaitForDataAsync内での重複したis Task<T>チェック CastHelpers.IsInstanceOfClassの呼び出し削減による効果
関連Issue
なし
その他
- CoreCLR ランタイム内部実装(System.Private.CoreLib)の変更
- 公開APIへの影響なし
AsyncHelpers.Awaitの既存実装パターンを参考に実装されている
#132517 JIT: Enable async inlining stress under JitStress
- 作成者: @jakobbotsch
- 作成日時: 2026年08月19日 13:18:42(UTC)
- マージ日時: 2026年09月17日 09:30:16(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITストレステスト基盤を拡張し、JitStress下での非同期メソッドのインライン化ストレステストを有効にする変更です。既存のストレス基盤を再利用することで、非同期インライン化の堅牢性をより広い条件下で検証できるようになります。
変更内容
- compiler.h/cpp: 非同期インライン化ストレス制御用の新規述語関数
compAsyncInliningStress()を追加(52行追加) - jitconfigvalues.h:
JitStressAsyncInlining設定値を追加(DEBUG-only) - fginline.cpp, inline.cpp, inlinepolicy.cpp: 各インライン化処理で新規述語を使用するよう更新(計5行変更)
- RuntimeAsyncTests.cs: テスト安定化対応(6行追加、2行削除)
パフォーマンスへの影響
影響なし。本変更はDEBUGビルドおよびストレステスト時の動作のみに影響し、リリースビルドでは活用されません。
関連Issue
なし
その他
留意点: レビュアーによって指摘されたように、compiler.cpp:3385のコメント「非同期メソッドのみがストレス対象」は不正確です。compAsyncInliningStress()はJitStressAsyncInliningが明示的に設定された場合、非同期でないルートに対してもtrueを返すため、コメント修正またはチェックロジック変更が必要となる可能性があります。
#132448 Abort when there's an attempt to reinitialize a runtime thread object
- 作成者: @eduardo-vp
- 作成日時: 2026年08月18日 02:52:32(UTC)
- マージ日時: 2026年09月17日 03:56:03(UTC)
- ラベル: area-System.Threading
概要
ランタイム スレッド オブジェクトの再初期化を検出した際に abort するセーフガードを追加します。スレッド破棄後のコールバックで管理コードが実行されることを防ぐため、PLATFORM_THREAD_LOCAL変数(Appleプラットフォームではpthreadキー)を使用してスレッド状態の破棄をマークし、再初期化の試行時にランタイムをfail-fastさせます。
変更内容
- src/coreclr/vm/ceemain.cpp/h: スレッド破棄状態を追跡する
PLATFORM_THREAD_LOCAL変数の追加と、スレッド再初期化時のabort処理を実装 - src/coreclr/vm/threads.cpp: スレッド破棄完了時にフラグを設定
- テストファイル群: 新規テストプロジェクト(ThreadStateDestroyed)を追加
- ネイティブコード(FLS/pthreadデストラクタ)でスレッド破棄時にコールバックを2度実行
- 管理コードでランタイムが破棄済みスレッドに対して新しいThread オブジェクトを再アタッチしないことを検証
パフォーマンスへの影響
影響なし。スレッド初期化パスで軽量なフラグチェックを追加するのみ。
関連Issue
その他
- Apple プラットフォーム(Darwin)では pthread キーベースの実装を使用。他の Unix は FS セグメントベースのスレッドローカル機構により正常に動作します
- 内部実装の変更: CoreCLR ランタイム内のスレッド管理機構の修正であり、公開API への影響なし
- テスト実装にはレビュー指摘が複数あり(Windows/Unix の FLS/pthread デストラクタ実行順序の不確定性、Release ビルドでの exit code 検証、NativeAOT との互換性など)、改善が予定されています
#129536 [release/10.0] Fix assembly labels on MacOS X64 to be LOCAL_LABEL
- 作成者: @davidwrighton
- 作成日時: 2026年06月17日 19:23:16(UTC)
- マージ日時: 2026年09月17日 19:03:08(UTC)
- ラベル: Servicing-approved area-VM-coreclr
概要
macOS x64でアセンブリラベルが通常のシンボルとして出力される問題を修正しました。ラベルをLOCAL_LABEL()に変換することで、リンカーが関数を不正に分割するのを防ぎ、ランタイムの正確な動作を保証します。この修正は#129531をrelease/10.0ブランチへバックポートしたものです。
変更内容
src/coreclr/vm/amd64/Context.S: アセンブリラベルをLOCAL_LABEL()に変換(8行追加/削除)src/coreclr/vm/amd64/virtualcallstubamd64.S: アセンブリラベルをLOCAL_LABEL()に変換(9行追加/削除)
修正対象はmacOS x64 CoreCLRのアセンブリコード内の内部ラベルとブランチで、制御フローは保持されつつ外部に見えるラベルを回避しています。
パフォーマンスへの影響
影響なし(アセンブリラベルの可視性に関する修正であり、ランタイム動作への性能的変化はありません)
関連Issue
#129531(元のPR)
その他
- リスク評価: 低。内部的なアセンブリラベルの変更に限定されています
- テスト: 新規テストは追加されていません。アセンブリラベル/リンカー動作に関する修正のため、CI カバレッジに依存します
- 既知リグレッション: なし
- 内部で発見された問題であり、顧客報告ではありません
#129534 [release/8.0-staging] Fix assembly labels on MacOS X64 to be LOCAL_LABEL
- 作成者: @davidwrighton
- 作成日時: 2026年06月17日 19:23:05(UTC)
- マージ日時: 2026年09月17日 19:02:39(UTC)
- ラベル: Servicing-approved area-VM-coreclr
概要
macOS x64プラットフォームにおいて、CoreCLR AMD64仮想呼び出しスタブアセンブリの内部ラベルをLOCAL_LABELに変換する修正をリリース/8.0-stagingにバックポートしたものです。この修正がない場合、macOS x64のアセンブリラベルが通常のシンボルとして出力され、リンカが関数を不正に分割してランタイムの動作が不正になる可能性があります。
変更内容
src/coreclr/vm/amd64/virtualcallstubamd64.S:ResolveWorkerChainLookupAsmStub内の複数の内部ラベルとブランチターゲットをLOCAL_LABEL(...)に変換(+9/-9行)- ループ、成功、プロモート、失敗ラベルをすべてローカルラベルとして一貫性を持たせて出力し、macOSリンカのシンボル/サブセクション問題を回避
パフォーマンスへの影響
影響なし
関連Issue
その他
- 内部実装の修正(CoreCLRランタイムアセンブリコード)
- .NET 8のバックポートのため、Context.Sは対象外
- 破壊的変更なし
- リスク度:低
- CI により影響範囲をカバー
- .NET 9以降では追加作業不要
#126639 Fix null-forgiving operator misuse in System.Diagnostics.EventLog
- 作成者: @Copilot
- 作成日時: 2026年04月08日 11:32:39(UTC)
- マージ日時: 2026年09月17日 21:13:18(UTC)
- ラベル: area-System.Diagnostics.Tracing
概要
System.Diagnostics.EventLogにおけるNullable Reference Types対応の追従として、不適切な null-forgiving operator(!)の使用を適切な null チェックに置き換えるPRです。EventLogTraceListenerとEventLogInternalの複数箇所で unsafe な null 抑制を除去し、null 安全な実装に改善しています。
変更内容
- EventLogTraceListener:
EventLog?プロパティを使用するTraceEvent/TraceDataメソッド内のEventLog!を、ローカル変数キャプチャと null チェック付き早期リターンに置き換え(6箇所) - EventLogInternal:
parent?フィールドに対するparent!.ComponentDesignModeをparent?.ComponentDesignMode == trueに置き換え(4箇所) - CompletionCallback TOCTOU:
onEntryWrittenHandlerフィールドの null チェック後のアクセスをローカル変数キャプチャに変更し、購読解除時の競合状態を回避 - InternalWriteEvent:
strings[i]!.Lengthをstring s = strings[i] ??= string.Empty; if (s.Length > ...)に置き換え、null-forgiving 抑制を排除 - テスト: EventLogTraceListenerの null 動作をカバーするテストを追加
パフォーマンスへの影響
影響なし
関連Issue
#119891(NRT annotations for System.Diagnostics.EventLog の追従)
その他
未解決の指摘事項:
onEntryWrittenHandlerの TOCTOU 競合状態修正に関連し、SynchronizingObject設定および購読解除時のシナリオをカバーする決定論的なリグレッション テストの追加が推奨されています
作成者による将来改善提案(別PRで実施予定):
- Reader API の
IEnumerable<string?>内部 null 許容性の見直し EventRecord.FormatDescription()の null ハンドリング統一EventRecordWrittenEventArgsコンストラクタの null ハンドリング統一LogListeningInfoフィールドのreadonly化- ref/impl間の null 許容注釈不一致のAPI レビュープロセス化
#123292 Make analyzers and ILLink trimming opt-in via MSBuild properties
- 作成者: @Copilot
- 作成日時: 2026年01月16日 21:48:38(UTC)
- マージ日時: 2026年09月17日 22:23:45(UTC)
- ラベル: linkable-framework area-Tools-ILLink
概要
Analyzers と ILLink trimming をデフォルトでは無効化し、MSBuild プロパティ(RunAnalyzersInBuild / RunILLinkInBuild)で明示的に有効化する形に変更しました。これにより、ローカルビルドの高速化とビルド時間の短縮を実現し、CI パイプラインでは包括的なチェックを別ジョブとして実行します。
# 使用方法(両方有効化)
./build.sh libs -c Release /p:RunAnalyzersInBuild=true /p:RunILLinkInBuild=true
変更内容
MSBuild プロパティ追加
eng/Analyzers.targets:RunAnalyzersInBuild=trueが指定されない限りRunAnalyzers=falseがデフォルトsrc/libraries/Directory.Build.targets: NetCoreApp ソースプロジェクトで trimming を実行するにはRunILLinkInBuild=trueが必須- プロジェクトレベルでの
RunAnalyzers/ILLinkTrimAssemblyプロパティオーバーライドは継続対応
CI パイプライン統合 (
eng/pipelines/global-build.yml)- main/release ブランチの全 PR で実行(パスベースフィルタリング付き)
Libraries_AnalyzersLinkerジョブ: linux_x64_dev_innerloop, windows_x64, osx_arm64 対応CoreClr_Tools_AnalyzersLinkerジョブ: CoreLib とツール向け(linux_x64_dev_innerloop)- 冗長な
Libraries_WithPackagesジョブを削除
ドキュメント更新
docs/workflow/building/libraries/README.mdにビルド例を追加docs/project/analyzers.mdを更新
パフォーマンスへの影響
ローカルビルドのターンアラウンドタイムを削減(具体的な数値は未記載)。Analyzer と Linker チェックは CI の専用ジョブで実行されるため、開発ループでの実行オーバーヘッドが消滅します。
関連Issue
なし
その他
この変更は既存の RunAnalyzers / ILLinkTrimAssembly プロパティでのプロジェクトレベルオーバーライドと並存しており、後方互換性を保ちながら段階的に移行可能です。