Pull Request on 2026年10月05日

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

注意点

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


目次

  1. #135228 [release/10.0] Fix msl wait time extraction in GC
  2. #135216 [browser][coreclr] Filter emcripten source maps from runtime pack and C++ headers from app build
  3. #135204 [wasm][coreclr] Ship Crossgen2Tasks shim in the CoreCLR wasm perf artifact
  4. #135198 [release/11.0] Fix CoreFoundation number interop ABI in Apple proxy handling
  5. #135181 Fix concurrent generic constraint cache publication
  6. #135180 Acquire type-loading completion flags in MethodTable and TypeDesc
  7. #135179 Order sync-table lookups and SyncBlock publication
  8. #135177 Fix NativeAOT namespace lookup for nested generic types
  9. #135174 NativeAOT: acquire object headers before SyncTable lookups
  10. #135157 Disable automatic failure issues in agentic workflows
  11. #135135 Skip badinlinee under GC stress
  12. #135134 Fix JIT over reporting RCPC2
  13. #135126 Switch ci-failure-scan and ci-failure-scan-feedback to GPT 6.1 Sol
  14. #135125 Reduce CI agentic workflow noise
  15. #135123 [release/10.0] [CreateDump] Use _exit after createdump launch failures
  16. #135097 [release/11.0] Fix msl wait time extraction in GC
  17. #135089 Fix CoreFoundation number interop ABI in Apple proxy handling
  18. #135068 Add Windows ARM64 to runtime diagnostics SOS coverage
  19. #135064 Make ILLink task output ownership explicit
  20. #134951 Clarify Copilot authorization for GitHub publication
  21. #134850 Handle TAR uid/gid values larger than int.MaxValue
  22. #134813 [wasi] Add CoreCLR ReadyToRun library and runtime test CI
  23. #134811 Make ExternFunctionSymbolNode implement INodeWithTypeSignature by giving them all signatures.
  24. #134555 Directly call same-image managed R2R helpers
  25. #134390 Fix allocation-by-class profiler cache ownership
  26. #134284 Fix pointer array copying and various array pinning regressions in CoreCLR
  27. #132640 Add security comment to DictionaryWrapper.cs

#135228 [release/10.0] Fix msl wait time extraction in GC

概要

.NET 9で導入されたGC(ガベージコレクション)のバグ修正。gc_heap::get_msl_wait_time関数がMSL(Managed System Library)待機時間を正しく抽出できない問題を修正します。この関数は出力引数soh_msl_wait_timeとuoh_msl_wait_timeを更新すべきですが、引数自体を更新してしまい、値が読み出されていませんでした。この影響によりDATAS(Dynamic Adaptation To Adjust Heaps)によるスループットコスト計算が正確でなくなり、Gen0割り当て予算とヒープ数適応に影響します。

変更内容

  • src/coreclr/gc/gc.cpp: MSL待機時間抽出ロジックの修正(2行削除、2行追加)
    • 引数ポインタが正しく逆参照されるよう修正

パフォーマンスへの影響

改善あり。本修正により以下が改善されます:

  • DATAS計算がMSL待機時間を正確に考慮するようになり、スループットコスト計算の精度が向上
  • Gen0割り当て予算がより最適化され、メモリ効率が向上
  • ヒープ数適応ロジックがより正確に動作

関連Issue

#134492(顧客報告) #135022(オリジナルPR)

その他

  • 回帰バグ:.NET 9の#103405で導入
  • このPRはrelease/10.0ブランチへのバックポート
  • テスト:CoreCLRおよびLibrariesテスト実施
  • リスク評価:低(軽微な修正)

#135216 [browser][coreclr] Filter emcripten source maps from runtime pack and C++ headers from app build

概要

Blazor WebAssembly(CoreCLR)ビルドで、ネイティブ再リンク用ヘッダーと中間JavaScript/SourceMapファイルが不要なスタティックWebアセットとして公開されていた問題を修正します。Emscripten中間SourceMapファイル(libBrowserHost.js.map、libSystem.Native.Browser*.js.mapなど)をランタイムパックから除外し、プラットフォームマニフェストエントリを削除。.hppヘッダーもWebAssemblyビルドの公開アセットからフィルタリングします。

変更内容

  • eng/liveBuilds.targets: CoreCLRブラウザランタイムパック入力から中間JavaScriptSourceMapファイルを除外するフィルター処理を追加
  • src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props: プラットフォームマニフェストから中間SourceMapエントリを削除(4行削除)
  • src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/AssetsComputingHelper.cs: WebAssemblyビルド・発行アセットから.hppヘッダーをフィルタリング対象に追加(.hファイルの既存処理に統一)

最終成果物のdotnet.js.map、dotnet.runtime.js.map、dotnet.diagnostics.js.mapおよびEmscriptenリンク入力用のlib*.jsファイルは変更なし。

パフォーマンスへの影響

影響なし

関連Issue

dotnet/sdk#56461

その他

  • Mono側は既にこれらの中間SourceMapを除外する明示的なパックファイルリストを持っている
  • PR説明はGitHub Copilotで生成

#135204 [wasm][coreclr] Ship Crossgen2Tasks shim in the CoreCLR wasm perf artifact

  • 作成者: @lewing
  • 作成日時: 2026年10月05日 11:17:23(UTC)
  • マージ日時: 2026年10月05日 14:41:20(UTC)
  • ラベル: area-ReadyToRun

概要

dotnet/performance#5324の新しいComposite R2R microベンチマークレーン(coreclr_r2r_composite_v8)で、CoreCLR browser-wasmをPublishReadyToRunCompositeで公開するために必要なCrossgen2Tasks shimを、CoreCLR wasmパフォーマンスアーティファクトにコピーします。これにより、SDK ReadyToRunタスクが所有者を<entry>.r2r.wasmと命名するまでの暫定的な対応です。

変更内容

  • eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml: Crossgen2Tasksファイル(DLL、propsファイル、targetsファイル)をartifacts/bin/Crossgen2Tasks/<config>/からstaging/Crossgen2Tasks/(flat、configサブフォルダなし)にコピーするステップを追加(13行追加)
  • CoreCLR関連のビルドステップのみが該当(includeCoreClrToolchainPacks: true)し、Monoアーティファクトは変更なし
  • ソースディレクトリまたは3つのファイルのいずれかが欠落している場合、ステップは失敗するよう設計

パフォーマンスへの影響

影響なし

関連Issue

  • #135204(本PR)
  • #134618(_WasmCoreClrValidateCompositeTasks)
  • #135023(削除予定の追跡)
  • dotnet/performance#5324(新しいComposite R2R microベンチマークレーン)
  • dotnet/sdk#56395(SDK ReadyToRunタスクの更新)

その他

本PRは暫定的な対応であり、dotnet/sdk#56395がruntime's global.json SDKに到達した後に削除予定です。YAML構文検証済みおよびgit diff --checkでクリーン。パイプライン自体はまだ実行されていません。PR生成にGitHub Copilotが使用されました。


#135198 [release/11.0] Fix CoreFoundation number interop ABI in Apple proxy handling

概要

CoreFoundationとのNumber interop ABI修正により、Appleプロキシ処理でのクラッシュを解決します。iOS上でSocketsHttpHandlerを使用する際、プロキシが設定されているネットワークでCoreClrランタイムが不正なメモリレイアウトのためクラッシュしていた問題を修正しました。.NET 10(Monoランタイム)では発生しておらず、.NET 11での回帰です。

変更内容

  • Interop.CoreFoundation.CFNumber.cs: CoreFoundationのCFNumber interop呼び出しにおけるABIの修正(3行追加、2行削除)
  • CFProxyTest.cs: 顧客報告の動作を再現する新規テスト追加(52行追加)
  • System.Net.Http.Unit.Tests.csproj: テスト構成の変更(23行追加)

本修正は内部実装レベルの変更であり、公開APIには影響を与えません。

パフォーマンスへの影響

影響なし。修正前はクラッシュが必ず発生するため、動作環境での破壊的な影響がありました。修正後は正常動作が回復されます。

関連Issue

#134617 - iOSでプロキシが設定されたネットワーク上でSocketsHttpHandlerがクラッシュ
#135089 - 元のPR(release/11.0へのバックポート対象)

その他

  • 本変更は回帰修正のバックポートであり、リスクは低い
  • 修正前のコードは常にクラッシュするため、修正による動作変更リスクはない
  • Monoランタイムではゼロ初期化メモリの使用により症状が隠蔽されていた可能性がある
  • 新規テストにより修正前後での動作差分を検証済み

#135181 Fix concurrent generic constraint cache publication

概要

ジェネリック制約キャッシュの並行ロード時に、部分的に埋められていない制約配列が誤って公開される競合状態を修正しました。複数のローダーが共有の配列を使用し、すべてのスロットを埋めてからAllカバレッジを公開するように改善しています。

変更内容

  • src/coreclr/vm/typedesc.cpp (+12/-9)
    • ゼロ初期化された候補配列をCAS(Compare-And-Swap)で事前公開
    • 失敗したビルダーが公開された配列を採用するよう変更
    • スロット埋め込み完了後にカバレッジをCAS公開(ゼロ制約の動作は変更なし)

パフォーマンスへの影響

影響なし

関連Issue

#134243

その他

Copilot Code Reviewの指摘:

  • リグレッション対策として、失敗する並行インターリーブ処理に対する決定的なテストカバレッジが不足している(低優先度)

この修正はランタイムのコア部分(CoreCLR)の内部実装を対象とした競合状態の修正であり、公開APIへの互換性影響はありません。


#135180 Acquire type-loading completion flags in MethodTable and TypeDesc

概要

ARM64などの弱順序アーキテクチャで、型ローディング完了フラグの読み取り時に古いペイロードデータが参照されるメモリ順序問題を修正しました。VolatileLoadを使用してAcquire セマンティクスを導入し、MethodTableおよびTypeDescの型ローディング状態チェックに取得的メモリバリアを追加します。

変更内容

  • methodtable.h: GetLoadLevel、IsFullyLoaded、HasApproxParentでAcquireセマンティクスを持つ単一のVolatileLoadスナップショットを取得する実装に変更
  • typedesc.h: IsFullyLoadedで取得的読み取りを使用するよう変更
  • typedesc.cpp: GetLoadLevelでロードレベルクエリ1つあたり1回のAcquireスナップショット読み取りを実装

パフォーマンスへの影響

影響なし。VolatileLoadの導入により若干のメモリオーバーヘッドが増加する可能性がありますが、型ローディングはスタートアップフェーズの処理であり、ホットパス外です。

関連Issue

#134245

その他

  • Interlocked書き込み側、フラグ値、レイアウト、ローダーロックはすべて保持されます
  • 新規テストは追加されていません
  • 弱順序アーキテクチャ(ARM64など)での検証が有益ですが、提供情報には含まれていません

#135179 Order sync-table lookups and SyncBlock publication

  • 作成者: @Copilot
  • 作成日時: 2026年10月04日 02:46:41(UTC)
  • マージ日時: 2026年10月05日 20:53:39(UTC)
  • ラベル: area-VM-coreclr

概要

SyncBlock同期テーブルのメモリ順序付けを強化し、競合状態を防止するPR。パッシブルックアップ時にオブジェクトヘッダービットを取得してからインデックスを解決し、初期化済みSyncBlocksを公開前にリリース発行することで、古いテーブルベースと新しいインデックスの組み合わせを防ぎます。内部実装の改善であり、公開APIへの影響はありません。

変更内容

  • syncblk.h/syncblk.cpp: メモリ順序付けされたアクワイア・ロードを使用した順序付きSyncBlock検索を実装。初期化済みSyncBlockをリリース発行前に設定。廃止された状態管理とGCクリーンアップヘルパーを削除。
  • runtimecallablewrapper.cpp: RCW初期化時のブロック検索でアクワイア・ロードを使用。
  • cominterfacemarshaler.cpp: インターフェース変換処理の軽微な調整。
  • comcallablewrapper.cpp: 関連クリーンアップ。
  • object.h: 廃止された状態フラグの削除。

パフォーマンスへの影響

影響なし(ビルド、テスト、ベンチマーク未実施)。内部的にはアクワイア・ロード操作の追加により若干のオーバーヘッドが生じる可能性がありますが、同期の堅牢性向上とロック削減のトレードオフです。

関連Issue

#134252

その他

留意事項:

  • ロックフリーなメモリ順序付けの変更であるため、x64/ARM64アーキテクチャ上での並行成長シナリオの検証が重要
  • レビュアーによりメンテナーの最終確認と最適化検証が推奨されている
  • 提供されたコード変更のみに基づいており、実際の動作検証は別途実施が必要

#135177 Fix NativeAOT namespace lookup for nested generic types

  • 作成者: @Copilot
  • 作成日時: 2026年10月04日 01:38:29(UTC)
  • マージ日時: 2026年10月05日 06:18:27(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOTで、ネストされた汎用型のType.Namespaceがnullを返していた問題を修正しました。メタデータスキーマを変更し、ネストされた型の名前空間解決を構造化親(enclosing type)を通じて行うように改善しました。

変更内容

  • メタデータスキーマ変更: ネストされた型に対して名前空間定義の出力を停止し、統一された親ハンドル(構造化親)を使用するようにスキーマを変更
  • リフレクション処理の更新:
    • ネストされた型の名前空間を、外側の型をたどることで解決
    • トップレベルのwell-known属性マッチングからネストされた型を除外
  • テストの追加: ネストされた汎用型の定義と構築、グローバル名前空間のネスティング、ネストされた属性の偽装ケースを追加

パフォーマンスへの影響

影響なし

関連Issue

#135106

その他

  • バイナリ互換性: NativeAOTのメタデータスキーマ全体とその主要な消費者すべてに影響するため、バイナリ形式の広範な変更が必要です
  • 内部実装変更: 公開APIではなく、NativeAOTランタイムの内部リフレクション実装と型ローダーのメタデータ処理が主な変更対象です
  • 変更の詳細: NativeFormatReaderGen.cs、NativeMetadataWriter.cs、NativeFormatWriterGen.csなどのメタデータ生成・読取コンポーネント、およびStackTraceMetadata.cs、MethodNameFormatter.csなどのランタイム利用側がすべて対応更新されています

#135174 NativeAOT: acquire object headers before SyncTable lookups

  • 作成者: @Copilot
  • 作成日時: 2026年10月04日 00:15:24(UTC)
  • マージ日時: 2026年10月05日 12:21:24(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT環境のARM64プラットフォームにおいて、オブジェクトヘッダーとSyncTableの独立した読み込みが、新しく公開されたSync インデックスと古い、サイズが小さいテーブルをペアリングする競合状態を修正します。ヘッダー読み込みに取得(Acquire)セマンティクスを追加し、インデックス公開後のテーブルアクセスを順序付けます。

変更内容

  • ObjectHeader.NativeAot.cs: オブジェクトヘッダー読み込みにVolatile.Readを使用した取得セマンティクスを追加。SyncTable アクセス前に必要な順序付けの不変条件をドキュメント化。
  • RuntimeHelpers.NativeAot.cs: 5行の削除(詳細は提供情報に記載なし)。
  • SyncTable.cs: 軽微な変更(詳細は提供情報に記載なし)。

パフォーマンスへの影響

ARM64プラットフォームでのVolatile.Read操作の追加による若干のオーバーヘッドが考えられますが、具体的な数値は提供されていません。ベンチマーク結果なし。

関連Issue

#135173

その他

Copilotレビューでは、PR説明で言及された「concurrent table-growth coverage」がコード内に欠けている点が指摘されました。また、このARM64低レベル並行処理の変更についてはランタイムの再現テストと保守者による検証が必要であると指摘されています。


#135157 Disable automatic failure issues in agentic workflows

  • 作成者: @vitek-karas
  • 作成日時: 2026年10月03日 07:05:36(UTC)
  • マージ日時: 2026年10月05日 10:40:54(UTC)
  • ラベル: area-skills

概要

agentic workflows(GitHub Actions自動化ワークフロー)における自動Issue作成機能を無効化する変更です。ワークフロー失敗時の自動Issue生成を停止し、失敗情報はActions実行ログに留めることで、不要なIssue作成を防止します。意図的に作成されるKnown Build Error Issuesなどの出力は変わりません。

変更内容

  • 6つのagentic workflows全体: safe-outputs.report-failure-as-issue: falseおよびsafe-outputs.report-failed-jobs: falseを設定
  • ワークフロー対象: breaking-change-doc、ci-failure-fix、ci-failure-scan-feedback、ci-failure-scan、closed-issue-reference-check、holistic-review
  • lock/mdファイル: gh-aw v0.86.2コンパイラで再生成し、ロックファイルを最新化
  • ドキュメント: README.mdにポリシー説明を追加

パフォーマンスへの影響

影響なし

関連Issue

#135150

その他

  • ローカル検証済み: 全6ワークフローがコンパイルとActions スキーマ検証に合格
  • 比較確認: プロンプト、トリガー、意図的な出力、ジョブ動作に変更なし
  • git diff --checkパス確認済み
  • ライブワークフロー実行は未実施
  • GitHub Copilotで生成されたPull Request

#135135 Skip badinlinee under GC stress

概要

GC stress テストでは合成オブジェクトが現在のスレッドに割り当てられるため、ゼロ割り当て assertion が無効化されます。既にプロセス分離されているテスト badinlinee に GCStressIncompatible マークを追加し、GC stress 下でのスキップを実現します。

変更内容

  • src/tests/JIT/opt/GuardedDevirtualization/badinlinee.csproj: GCStressIncompatible プロパティを追加(+2行)

パフォーマンスへの影響

影響なし。本変更はテスト実行制御に関するもので、製品コードのパフォーマンスに変更はありません。

関連Issue

#134493

その他

本変更により、GC stress を有効にしたテスト実行時に badinlinee テストがスキップされ、GC による予期しないメモリ割り当てに起因する偽陽性エラーが防止されます。


#135134 Fix JIT over reporting RCPC2

概要

ARM64プラットフォームで、Lowering::TryCreateAddrModeがRCPC2(ARM ISA拡張機能)の対応可能性を過剰に報告していた問題を修正しました。volatile load/storeでRCPC2対応を宣言した後に、アドレスオフセットが9ビット以内に収まらないなどの理由でバックアウトする場合、不要にRCPC2が必要と報告されていました。

変更内容

  • src/coreclr/jit/lower.cpp: compOpportunisticallyDependsOn(InstructionSet_Rcpc2)の呼び出しを適性チェック後に移動し、RCPC2対応の宣言前に実際に使用可能かを検証するように修正
  • write-barrierに変換されるスカラーストアに対して、明示的なバックアウト処理を追加(例:value.Value = dataのような参照代入)

パフォーマンスへの影響

影響なし(ISA要件の報告ロジックの修正であり、実行時の処理は変わらない)

関連Issue

#133671

その他

  • RCPC2は既に最適化ARM64セットから削除されているため、この修正による機能への影響は限定的
  • テスト時にRCPC2を最適化セットに戻した状態で検証し、誤ったRCPC2報告がなくなることを確認
  • R2R(Ready-to-Run)イメージの生成時に不正なISA要件が記録されるのを防止する

#135126 Switch ci-failure-scan and ci-failure-scan-feedback to GPT 6.1 Sol

概要

CI失敗スキャンワークフロー(ci-failure-scanとci-failure-scan-feedback)で使用するAIモデルをclaude-opus-4.8からgpt-6.1-solに切り替えます。評価エージェントモデルも同様に更新され、eval判定モデルは変更されません。GPT 6.1 Solはgh-aw v0.86.2のカタログに未含まれるため、モデル価格オーバーライドを追加し、実行あたり2500 AIクレジットの予算を設定しています。

変更内容

  • ci-failure-scan-feedback.lock.yml / ci-failure-scan.lock.yml: ワークフロー定義の更新(20行変更)
  • ci-failure-scan-feedback.md / ci-failure-scan.md: eval仕様の再生成、モデル価格設定の追加(各16行変更)
  • ci-failure-scan-feedback.eval.yaml / ci-failure-scan.eval.yaml: エージェントモデルをgpt-6.1-solに更新(各2行変更)

すべてのワークフロー定義はgh-aw v0.86.2コンパイラとdotnet/runtimeスケジュールシードで再生成されています。

パフォーマンスへの影響

影響なし(モデルの切り替えに伴う性能変化については記載なし)

関連Issue

#135126

その他

  • ワークフローコンパイルと厳密なVally lintの両方の検証に合格
  • ライブ評価は実行されていない

#135125 Reduce CI agentic workflow noise

概要

CI agentic workflowsからのノイズ削減を目的とした変更。スキャン、フィクサー、フィードバックワークフローが失敗やレート制限時の[aw]issue自動開設を廃止し、失敗はActions実行履歴に留める。フィクサーの実行を12時間ごとから平日1日1回に変更し、コメント数を最大3件に制限。フィードバックワークフローを日次から隔週実行に変更し、PR自動作成を廃止して、既存のKPIトラッカーissue(#128742)内で提案内容をプレーンテキスト+差分で最大3件表示するように変更。

変更内容

  • ci-failure-scan.lock.yml / ci-failure-scan.md: ワークフロー定義の軽微な変更(スキャン処理の微調整)
  • ci-failure-fix.lock.yml / ci-failure-fix.md: フィクサーワークフローの実行スケジュール変更(12時間ごと→平日日次)およびコメント数制限(最大3件/実行)の追加
  • ci-failure-scan-feedback.lock.yml / ci-failure-scan-feedback.md: フィードバックワークフローの大幅簡素化。実行スケジュール変更(日次→隔週)、PR自動作成廃止、KPIトラッカーissueへのコメント形式変更(プレーンテキスト+差分、最大3件)

パフォーマンスへの影響

CI/CD処理負荷の削減。フィードバックワークフロー実行頻度の低減(日次→隔週)、コメント数制限による処理軽量化。GitHub APIレート制限への接触回数減少。

関連Issue

#134138、#128742

その他

本PR説明はGitHub Copilotにより生成されている。フィードバックワークフローはトークン権限の制限(.github/workflows/への変更プッシュ不可)によりPR自動作成を廃止し、代わりに既存issueへの意見陳述形式に統一した。


#135123 [release/10.0] [CreateDump] Use _exit after createdump launch failures

概要

createdumpプロセスの起動失敗時にexit()の代わりに_exit()を使用することで、親プロセスのクリーンアップロジックが不正に実行される問題を修正します。execve失敗時に診断ポート(diagnostic socket)が誤ってクローズされる問題を解決し、ターゲットアプリケーションが継続して動作する際に適切に接続できるようにします。

変更内容

  • src/coreclr/nativeaot/Runtime/unix/PalCreateDump.cpp: createdumpフォーク子プロセスの失敗時にexit()から_exit(EXIT_FAILURE)に変更(2行)
  • src/coreclr/pal/src/thread/process.cpp: 同様にexit()から_exit(EXIT_FAILURE)に変更(2行)

フォーク後の子プロセスでexecveに失敗した場合、_exit()を使用することで親プロセスから継承されたatexitハンドラとstatic変数のデストラクタの実行を回避します。

パフォーマンスへの影響

影響なし。成功時のexecve/execvの動作は変わらず、親プロセスの処理(エラーパイプの読み込み、waitpid呼び出し、終了ステータス判定)も変わりません。

関連Issue

#133742(元のPR)

その他

  • リスク評価: 低い。標準的な実装であり、マルチスレッドプロセスでフォーク後のexec前に子プロセスを放棄する際の推奨操作です。
  • 検証済み: createdumpの実行権限がない状態(mode 0644)でテスト済み。修正前はexecve失敗時に診断ソケットが消失、修正後は複数回の失敗後も診断ソケットが保持されることを確認。
  • このバックポートはdotnet/runtime release/10.0ブランチ向けです。

#135097 [release/11.0] Fix msl wait time extraction in GC

概要

.NET 9で導入されたGCのgc_heap::get_msl_wait_time関数におけるバグを修正します。関数は出力引数soh_msl_wait_timeとuoh_msl_wait_timeを受け取っていますが、ポインタ先の値を更新せず引数自体を更新していたため、値が正しく抽出されていませんでした。このバグはDATAS(スループットコスト計算)に影響し、Gen0アロケーションバジェットとヒープ数の適応に波及します。

変更内容

  • src/coreclr/gc/dynamic_heap_count.cpp: ポインタ参照を正しく行うよう修正(+2/-2)
    • soh_msl_wait_timeとuoh_msl_wait_timeの値を正しくポインタ先に書き込むよう修正

パフォーマンスへの影響

修正により、GCのヒープ数適応とGen0アロケーションバジェット計算が正常に機能するようになります。これまでのバグにより不正確なMSL待機時間を使用していたことで、ヒープ管理が最適化されていなかった可能性があります。

関連Issue

#134492

その他

  • .NET 9でPR #103405により導入されたリグレッション
  • release/11.0へのバックポート(元のPRは#135022)
  • 変更の規模が小さく、テストは既存のcoreclrおよびlibrariesテストで対応

#135089 Fix CoreFoundation number interop ABI in Apple proxy handling

概要

CoreFoundation数値相互運用のABI不整合を修正しました。Apple proxy処理でCFNumberGetValueがCoreClRインタープリタ実行時にクラッシュする問題を解決します。CFNumberTypeが32ビット列挙型として宣言されていましたが、ネイティブCoreFoundationはすべてのサポート対象.NET Appleプラットフォームで64ビットCFIndexを使用しているため、型値が正しく解析されていませんでした。

変更内容

  • Interop.CoreFoundation.CFNumber.cs: CFNumberTypeをlongバックアップ列挙型に変更し、戻り値のBooleanをbyteに修正(ネイティブ実装に合致)
  • CFProxyTest.cs: メモリ内PAC(Proxy Auto-Config)スクリプトを評価する6つのApple専用テストケースを追加(ポート1, 80, 443, 8080, 65535, DIRECT対応)
  • System.Net.Http.Unit.Tests.csproj: テストのビルド設定を追加

パフォーマンスへの影響

影響なし。ネイティブABI宣言の修正であり、ロジック変更ではありません。

関連Issue

#134617

その他

  • iOS 26.5 arm64シミュレータで元のクラッシュを再現確認済み
  • iOSシミュレータユニットテスト: 2,558パス、既存40スキップ、新規6テストすべてパス
  • macOSユニットテスト: 2,683パス、既存4スキップ
  • macOS機能テスト: 4,766パス、43スキップ、IPv6リンクローカル3件は未修正宣言でも再現
  • システムプロキシ設定変更やネットワーク接続不要なテスト設計

#135068 Add Windows ARM64 to runtime diagnostics SOS coverage

概要

Windows ARM64プラットフォームをランタイム診断SOS(Debugger Symbolic Operating System)のカバレッジに追加します。runtime-diagnostics.ymlのデフォルトSOSプラットフォームリストにwindows_arm64を追加することで、Windows ARM64でのReleaseランタイムビルドとSOS Helixテストを有効化します。

変更内容

  • eng/pipelines/runtime-diagnostics.yml: windows_arm64をSOS platform listに追加(+1行)
    • 既存のプラットフォームマトリックスとSOSテンプレートは既にWindows ARM64をサポート
    • テンプレート変更は不要

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • Windows ARM64 Helixキューの選択は既に既存のテンプレート機構で対応済み
  • 作成者による検証: プラットフォームリストがSOSビルド・テストマトリックスの両方で正しく参照されることを確認
  • パイプラインのローカル実行検証はなされていない

#135064 Make ILLink task output ownership explicit

概要

ILLinkタスクの出力所有権を明確化するため、実行前に専用の出力ディレクトリをクリアするように変更。これにより、staleファイルの残存を防ぎ、全体キャッシング用の出力所有権を確立します。インクリメンタルビルドセマフォと per-library トリミング出力をタスク所有ディレクトリ外に移動。ユーザーは入力ファイルと無関係な中間ファイルをタスク所有ディレクトリ外に配置する必要があります。

変更内容

  • LinkTask.cs: 実行前の出力ディレクトリクリーンアップロジックを追加、失敗時の処理を実装
  • Microsoft.NET.ILLink.targets: インクリメンタルビルドセマフォをタスク所有ディレクトリ外に移動
  • eng/illink.targets: per-libraryトリミング用の専用出力ステージングディレクトリを導入
  • ILLink.Tasks.Tests.cs: ディレクトリクリーンアップ、失敗処理、繰り返し実行のテストを追加(テスト行数大幅増加)
  • Mock.cs: タスクエラーキャプチャ機能を追加
  • illink-tasks.md: 出力所有権の動作仕様をドキュメント化

パフォーマンスへの影響

影響なし(ビルドシステム側の動作改善であり、実行時パフォーマンスへの直接的な影響はなし)

関連Issue

なし

その他

Copilotによるレビューで中程度の問題が指摘:ExtraArgsパラメータがクリア後の出力ディレクトリをオーバーライドして、所有権保証を無効化する可能性がある。この問題は本PRでは未解決。


#134951 Clarify Copilot authorization for GitHub publication

  • 作成者: @vitek-karas
  • 作成日時: 2026年09月30日 14:42:00(UTC)
  • マージ日時: 2026年10月05日 07:56:22(UTC)
  • ラベル: area-skills

概要

GitHub CopilotおよびAgent Mergeによる自動化タスク(Known Build Error(KBE)issue作成、コメント投稿など)の権限管理を明確化するドキュメント更新です。ユーザーの明示的な認可がない限り、incidental な issue 作成やコメント投稿は下書きに留め、認可がある場合のみ公開するルールを定めました。Agent Merge の既存の publication scope は保持しつつ、不正な自動化投稿を防止する仕組みを整備しています。

変更内容

  • copilot-instructions.md: リポジトリ全体の Copilot 権限ガイドラインを拡張
  • create-kbe/SKILL.md: KBE issue 作成スキルに publication 権限ルールを追加
  • breaking-change-doc/SKILL.md: breaking change ドキュメンテーション タスクにおける publication スコープを明確化
  • mobile-platforms/SKILL.md: モバイル プラットフォーム関連スキルの権限定義を更新
  • pr-failure-scan/SKILL.md: PR failure スキャンの publication ルールを追加
  • shared/create-kbe.instructions.md: KBE 共有ガイダンスを新規追加
  • breaking-change-doc.lock.yml および breaking-change-doc.md: ワークフロー設定の軽微な更新

パフォーマンスへの影響

影響なし

関連Issue

#134870

その他

  • これはドキュメント(Markdown)のみの変更で、ランタイムコード、KBE 適格性ルール、ワークフロー出力および制限は変更されていません
  • Agent Merge の no-rerun ルールと KBE 適格性要件は維持されています
  • 本 PR 自体が GitHub Copilot の支援で作成された旨が明記されています

#134850 Handle TAR uid/gid values larger than int.MaxValue

概要

Unix の uid_t/gid_t は unsigned 型ですが、TAR ファイルから GNU base-256 または PAX 形式で Int32.MaxValue を超える uid/gid を読み込む際に OverflowException が発生していました。本変更では、これらの値を overflow チェックなしで int として再解釈し、負の値を GNU ヘッダおよび PAX 拡張属性では unsigned として書き込むことで、ラウンドトリップに対応します。TarWriter の既存のファイルシステム ID 処理と一貫性を持たせています。

変更内容

  • TarHeader.Read.cs: GNU base-256 および PAX uid/gid 読み込み時のオーバーフロー処理を修正(4行変更)
  • TarHeader.Write.cs: 負の uid/gid を GNU ヘッダおよび PAX 拡張属性に unsigned として書き込む処理を追加(22行追加)
  • TarHelpers.cs: uid/gid 変換ヘルパーメソッドを新規追加(32行追加)
  • TarHeader.cs/TarEntry.cs: uid/gid 処理ロジックの微調整(合計9行変更)
  • テスト: Int32.MaxValue を超える uid/gid のラウンドトリップテストを追加(119+34行追加)

パフォーマンスへの影響

影響なし

関連Issue

#127006

その他

  • System.Formats.Tar ライブラリの内部実装変更であり、公開 API に対する破壊的変更はなし
  • Unix システムで大きな uid/gid 値を含む TAR ファイルを処理する場合の互換性が向上

#134813 [wasi] Add CoreCLR ReadyToRun library and runtime test CI

概要

WASI CoreCLR向けのReadyToRun (R2R) コンパイルのテスト機能とCI環境を追加するPRです。#133265でR2Rパブリッシング機能がマージされた後、本PR は直接mainブランチをベースにしており、R2R JIT コンパイルの有効性検証と包括的なCI カバレッジを提供します。

変更内容

  • CI パイプライン:

    • Checked WASI R2R_CG2 ランタイムテストジョブの追加
    • System.Collections.Testsスモークスイートを実行するLibraryTestsCoreCLR_WASI_R2Rジョブの追加
    • 既存のインタープリタジョブは変更なし
  • ランタイムテストハーネス:

    • マージされた各ランナーのCrossgen2複合コンパイル
    • テスト毎の合成ホスト
    • ゲストにAPP_ASSEMBLIES=EXTERNALとTEST_READY_TO_RUN_MODE=1を渡す処理
    • ヘリックス関連ペイロードへのBinaryen・wasm-toolsアーカイブのステージング
  • スタンドアロン corerun:

    • R2R イメージバッファとその容量の強い定義を追加し、公開アプリ で使用される弱いプレースホルダーをオーバーライド
  • Windows ビルドホスト:

    • Windows固有のアーカイブフォーマットと実行可能ファイル名に対応したBinaryen・wasm-toolsアーカイブの取得
    • SHA-256によるx64・arm64アーカイブの検証とextraction
  • ライブラリテスト:

    • テストガードをIsBrowserからIsWasmに変更(WebAssemblyすべてのターゲットに適用される問題のため)
    • 合成トリミングがテスト想定の非サポート化を露出させる場合は#130129下で隔離

パフォーマンスへの影響

影響なし

関連Issue

#133265(R2Rパブリッシング機能)
#130129(R2R隔離に関連)

その他

検証結果:

  • Release/Checked ビルド: 警告0、エラー0
  • System.Collections.Tests(トリミング複合R2R): 33,958/33,958 テスト合格
  • ランタイムログに162件の「Ready to Run initialized successfully」エントリを確認し、R2R有効化を検証
  • Windows x64/arm64アーカイブのSHA-256検証完了

#134811 Make ExternFunctionSymbolNode implement INodeWithTypeSignature by giving them all signatures.

概要

WebAssemblyターゲット向けの外部関数呼び出しに型情報を付与する改修。ExternFunctionSymbolNodeがINodeWithTypeSignatureを実装し、すべての外部関数(ネイティブランタイムヘルパー、直接P/Invoke)が型付きWebAssembly関数インポートを持つようになりました。JitHelperとCorInfoImplは文字列ベースのヘルパー名から列挙型ベースのKnownExternFunctionに移行し、一貫した署名管理を実現しています。

変更内容

  • ExternFunctionSymbolNode: INodeWithTypeSignatureを実装、コンストラクタでExternalTypeSignatureを受け取り(署名なし関数はnull)、INodeWithTypeSignatureメソッドに委譲
  • NodeFactory: ExternFunctionSymbolNodeをシンボル名ごとに一つ保持、DirectPInvokeTargetおよびKnownExternFunctionから生成、同一関数に対する異なる呼び出し元(JITヘルパーと直接P/Invoke)で同一ノードを共有、署名の一貫性をアサーション検証
  • KnownExternFunctions.cs: 新規ファイル、ヘルパー名に代わり列挙型定義、各ヘルパーの標準ABI互換シンボル名と署名をマッピング、WebAssemblyのマネージド[RuntimeExport]メソッドはマネージメソッドの署名を使用
  • WasmFunctionImportNode: WebAssemblyプラットフォーム上で外部関数ごとに作成され、インポートセクション内のエントリを記述、型インデックスをWASM_TYPE_INDEX_LEB再配置として設定
  • JitHelper.cs: 文字列ベースのヘルパー名定義からKnownExternFunction列挙型への移行
  • CorInfoImpl.cs: KnownExternFunction列挙型の使用開始
  • ObjectWriter/WasmObjectWriter.cs: Wasmインポート情報の処理追加、関数インデックス割り当ての実装

パフォーマンスへの影響

影響なし

関連Issue

#134811

その他

  • 互換性: 内部実装の変更であり、公開APIへの影響なし
  • 将来の改善として、WASM内の各インポート種別についてWasmImportノードを作成し、WasmObjectWriter.CreateDefaultImportsを依存グラフに移行することが検討されており、WasmImportSectionがWasmExternallyCountedSectionから派生し、RecordFunctionImportの簡素化が見込まれます

#134555 Directly call same-image managed R2R helpers

  • 作成者: @davidwrighton
  • 作成日時: 2026年09月23日 21:23:03(UTC)
  • マージ日時: 2026年10月05日 21:30:56(UTC)
  • ラベル: area-ReadyToRun

概要

ReadyToRun(R2R)コードが、同じイメージ内で直接呼び出し可能なマネージJITヘルパーを直接呼び出すことをサポートします。Crossgen2がマネージJITヘルパーをプローブコンパイルする際、プロセッサ機能の固定なしでコンパイル可能なヘルパーは互いに直接呼び出し可能になります。ARM32/Arm64はアーキテクチャ上の制限によりヘルパーセルを使用し続けます。R2R形式をバージョン31.0に更新(メジャーバージョンアップ)。

変更内容

  • R2R形式: METHOD_ENTRY_READYTORUN新規追加、バージョン31.0へアップグレード
  • ランタイム(jitinterface.cpp等): メソッドエントリ固定の処理、FILE_ACTIVE直後の eager imports処理、JITヘルパー根の明示化
  • JIT(lowerwasm.cpp等): Wasmの直接呼び出し対応、PEP(Portable Entry Point)セルの最適化、LoongArch逆方向呼び出しの符号拡張修正
  • Crossgen2(CorInfoImpl.ReadyToRun.cs等): ローカルヘルパー解決、ヘルパーメソッドキャッシング、直接呼び出し可能性の追跡
  • アセンブリロード: eager/activation固定処理の順序制御

パフォーマンスへの影響

大幅な改善: Wasm CoreCLRベンチマーク(ArrayDeAbstraction.foreach_member_array_via_interface_property_in_loop)

  • Individual R2R: -14.4% (36,032 → 30,857.62 ns/op)
  • Composite R2R: -17.7% (34,143 → 28,088.91 ns/op)

イメージサイズ削減:

  • CoreLib standalone: -1,143,142 bytes (-4.01%)
  • Composite: -1,254,774 bytes (-4.89%)

最適化効果はVirtualFunctionPointer(39.51%)、GetGCStaticBase(9.49%)などのヘルパー呼び出しオーバーヘッド削減に由来。解釈パスは非対象。

関連Issue

なし

その他

互換性: R2R形式のメジャーバージョンアップのため、30.x以前の実装では新形式を認識不可。

アーキテクチャ対応: ARM32/Arm64は直接呼び出しの到達可能範囲制限(±16MiB/±128MiB)により従来のヘルパーセルを継続使用。LoongArch直接呼び出しは±128GiBの到達可能性を保持。

検証: Wasm全70マネージヘルパーで直接呼び出し成功、ARM32/Arm64全ヘルパーがヘルパーセルパス使用を確認。


#134390 Fix allocation-by-class profiler cache ownership

  • 作成者: @rcj1
  • 作成日時: 2026年09月22日 01:24:52(UTC)
  • マージ日時: 2026年10月05日 17:18:23(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

Profiler teardown時に能動的なProfilerのheap-walk状態が解放されるレースコンディションを修正。allocation-by-classデータブロックをプロセスグローバルからインスタンス所有に変更し、各Profiler独立のキャッシュ管理を実現しています。

変更内容

  • eetoprofinterfaceimpl.h: キャッシュポインタをインスタンスメンバに変更し、per-profilerキャッシュ所有権を宣言
  • eetoprofinterfaceimpl.cpp: 各Profilerのキャッシュを独立して初期化・使用・解放。キャッシュ再利用とheap-walkコンテキストは保持

パフォーマンスへの影響

影響なし。キャッシュ再利用メカニズムは変更されず、インスタンス所有への変更はパフォーマンス低下をもたらさないです。

関連Issue

#134241

その他

Copilot reviewにより、並行GC報告中のnotification-profiler障害/teardown時のカバレッジと、テストによるheap-walk状態の寿命検証の不十分さが指摘されています。修正は内部実装(CoreCLRランタイム)の変更であり、公開APIへの影響はありません。


#134284 Fix pointer array copying and various array pinning regressions in CoreCLR

概要

CoreCLRの配列マーシャリング における3つの重大な回帰を修正:

  1. 不正なコピーサイズ: ポインタ配列のメタデータがポインタサイズのVARTYPEを使用しながらも、指す先の型のサイズでコピーしていた(例:4要素のbyte*[]が4バイトのみをコピー)
  2. ピニング失敗: blittableな値型のみがピニング対象となり、ポインタ型と関数ポインタ型が除外されていた
  3. 列挙型とchar配列: 列挙型は基礎となる整数型でピニング判定、UTF-16のchar配列をピニング対象として認識すべき

修正により、ポインタ要素を不透明なネイティブサイズ値として扱い、マーシャリングオペランドで実際の要素TypeHandleを保持。ジェネリックコピーのキャリアとしてのみnintを使用。

変更内容

  • mlinfo.h/cpp: ポインタ要素をネイティブサイズ値として処理し、要素TypeHandleを保持
  • ilmarshalers.cpp: キャリア選択、メモリ割り当て、ピニング、レイアウト処理を更新
  • fieldmarshaler.cpp: 保持された要素型をネイティブレイアウトに使用
  • StubHelpers.cs: ポインタ配列互換性アサーション対応
  • テスト追加: AsLPArrayTest.cs(1257行、250ポインタ/ネイティブ整数ケース)、AsByValArrayTest.cs(169行、ポインタ固定配列フィールド)、MarshalArrayLPArrayNative.cpp(ネイティブヘルパー)

合計324の新規インタロップテストケース追加(P/Invoke、逆呼び出し、ref/out、固定配列フィールド、null配列対応)。

パフォーマンスへの影響

スタブコードサイズ削減(Release x64、ReadyToRun無効):

  • デフォルト/In/Out: 294-303バイト → 185バイト(63%削減)
  • In/Out: 332バイト → 185バイト(44%削減)

新しい列挙型・UTF-16宣言は281-285バイト → 170バイト(40%削減)。固定メモリ割り当て/Memmove/CoTaskMemFree呼び出しを排除。

関連Issue

#134174 #134576 #134577 #134575 #134573

その他

検証状況: Windows x64/x86のチェック/リリースビルドで全324ケース合格。Linux・ARM64は未検証。

ランタイム固有の除外設定: NativeAOT(27ケース #134628)、Compiled Mono(17ケース関数ポインタ #90308)、WebAssembly(既存)の失敗ケースを


#132640 Add security comment to DictionaryWrapper.cs

概要

System.Diagnostics.Processの内部クラスDictionaryWrapperにセキュリティコメントを追加し、環境変数検証がセキュリティ対策ではなく、単なるコード明確化であることを示しています。環境変数は信頼できる制御プレーンメカニズムとして扱われるため、インデックスセッターでの検証は補足的なものであることを文書化しています。

変更内容

  • src/libraries/System.Diagnostics.Process/src/System/Collections/Specialized/DictionaryWrapper.cs
    • DictionaryWrapper.this[string].setのValidate呼び出し上部にセキュリティコンテキストコメントを追加(+3行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更はセキュリティ脆弱性の修正ではなく、既存コードのセキュリティ意図を明確にするためのドキュメント改善です。.NET Core基本セキュリティ仮定ドキュメント(参照:https://github.com/dotnet/core/blob/main/Documentation/security-foundations/baseline-security-assumptions.md#22-environment-variables-are-trusted-as-a-control-plane-mechanism)に基づいて、環境変数は信頼できるものとして扱われることを示しています。


目次