Pull Request on 2026年02月19日

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

注意点

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


目次

  1. #124619 Skip unloadable-type tests under ReadyToRun; update ActiveIssue to #124031
  2. #124617 Fix nondeterministic test failure for X509CertificateLoader
  3. #124591 [HTTP] Re-enable Http3 nginx interop test
  4. #124580 Fix memory leak in ICorDebugEnum::Clone on CordbEnumerator
  5. #124574 Improve performance-benchmark/SKILL.md
  6. #124572 [RyuJit] Remove the gtCallCookie operand from calls
  7. #124571 Eliminate redundant bounds checks for arr[^N-1] after arr[^N]
  8. #124562 Preserve ninja=false via msbuild
  9. #124554 Pass EncApproxFieldDescIterator::FixUpEncFields instead of TRUE
  10. #124540 #124513 - Guard Base64Url.DecodeFromChars against non-ASCII input
  11. #124539 Add ActiveIssue to GetTotalAllocatedBytes test
  12. #124533 Fix RangeOps::Multiply to handle dependent ranges
  13. #124483 [browser][coreCLR] native stack trace symbols
  14. #124466 Mark HTTP/1 trailer headers as unsupported on Browser
  15. #124383 SPMI: Fix relocs into new RO data section
  16. #124265 [ios] HelloiOS - Set RunAOTCompilation only on Mono
  17. #124220 [maccatalyst][coreclr] Fix native build failure on Xcode 26.2
  18. #124194 [release/10.0] Revert #112403
  19. #123989 Improve test coverage for System.Formats.Tar APIs
  20. #123744 Add a config switch to fully disable hot-reload
  21. #123642 [browser] Marshalling support float[], Span and ArraySegment
  22. #123377 [wasm][coreclr] runtime tests on CI
  23. #123076 Handle RFC 6761 special-use domain names in Dns resolution
  24. #123036 [release/10.0] Fix EC-DSA / EC-DH PEM key loading with PKCS#8 key load attributes
  25. #120114 Simple ComWrappers APIs
  26. #117256 Use OpenSSL implementation of AES Key Wrap with Padding on Linux

#124619 Skip unloadable-type tests under ReadyToRun; update ActiveIssue to #124031

  • 作成者: @Copilot
  • 作成日時: 2026年02月19日 20:15:34(UTC)
  • マージ日時: 2026年02月19日 23:54:15(UTC)
  • ラベル: area-TypeSystem-coreclr

概要

ReadyToRun(R2R)コンパイル下でのテスト失敗を修正するPRです。R2Rプリコンパイル済みネイティブコードがメソッドテーブルやfixupを通じてcollectible AssemblyLoadContextから読み込まれた型への強い参照を作成し、テストの10回のGC反復内でALCがGC回収できず、型アンロード関連テストが失敗していました。2つのテストに[ActiveIssue]属性を追加/更新して、R2R実行時に一貫してスキップするようにします。

変更内容

  • TypeDescriptorTests.cs(+2/-1, 全3行変更)
    • TypeDescriptor_WithCustomProvider_UnloadsUnloadableTypes[ActiveIssue("#124031", IsReadyToRunCompiled)]属性を新規追加
    • TypeDescriptor_WithDefaultProvider_UnloadsUnloadableTypes:既存[ActiveIssue]を#95928(クローズ済み)から#124031(進行中)に更新

両テストが同じ追跡Issue#124031を参照するよう統一:

[ActiveIssue("https://github.com/dotnet/runtime/issues/124031", typeof(PlatformDetection), nameof(PlatformDetection.IsReadyToRunCompiled))]

パフォーマンスへの影響

影響なし。本変更はテストの条件付きスキップを修正するもので、ランタイムコードには影響しません。

関連Issue

  • #124031(本修正で参照する進行中の追跡Issue)
  • #95928(以前参照していたクローズ済みIssue)

その他

R2Rコンパイルの特性としてメモリ参照の強度が異なるため、JIT実行時と異なるテスト条件が必要となります。両テストの属性統一により、保守性が向上します。


#124617 Fix nondeterministic test failure for X509CertificateLoader

  • 作成者: @vcsjones
  • 作成日時: 2026年02月19日 19:49:27(UTC)
  • マージ日時: 2026年02月19日 23:03:25(UTC)
  • ラベル: area-System.Security test-bug

概要

OpenSSLの仕様を正しく反映するように、X509CertificateLoaderのテストを修正しました。OpenSSLは証明書の後ろの有効なASN.1データを許可するため、プロセスIDをトレーリングデータとして使用したテストが非決定的に失敗していた問題を解決します。特定のPID値(例:32816 = 0x30 0x80 0x00 0x00)が有効なASN.1 BER SEQUENCEに見えるため、テストが例外を期待していても解析が成功してしまうケースが発生していました。

変更内容

  • ファイル: src/libraries/Common/tests/System/Security/Cryptography/X509Certificates/X509CertificateLoaderTests.cs
    • 変更内容: テストロジックを修正(+2/-10行)
    • 修正内容:OpenSSLの実際の動作(有効なASN.1トレーリングデータを許可する)に合わせてテストケースを更新

パフォーマンスへの影響

影響なし

関連Issue

#123630(非決定的なテスト失敗の問題)

その他

  • 本修正はテストの信頼性向上に関するもので、実装コード自体の変更ではなく、OpenSSLライブラリの実装動作に対する既存テストの誤った前提を是正しています
  • X.509証明書解析時のOpenSSLの振る舞い:トレーリングデータが有効なASN.1の場合は無視され、無効なASN.1の場合のみ例外が発生する

#124591 [HTTP] Re-enable Http3 nginx interop test

  • 作成者: @ManickaP
  • 作成日時: 2026年02月19日 13:14:47(UTC)
  • マージ日時: 2026年02月19日 16:18:15(UTC)
  • ラベル: area-System.Net.Http

概要

HTTP/3 nginx相互運用性テストを再有効化するPRです。quic.nginx.orgのテストURIは以前TLS alert 112エラーにより無効化されていましたが、外部サーバーの問題が解決されたため再度有効化します。InteropUrisWithContent()メソッド内のテストURIを復元します。

変更内容

  • HttpClientHandlerTest.Http3.cs: InteropUrisWithContent()メソッドで無効化されていたhttps://quic.nginx.org/のテストURIを再有効化(+1/-2行)

パフォーマンスへの影響

影響なし

関連Issue

  • #120257(HTTP/3 nginx interop testの無効化に関するIssue)

その他

  • TLS alert 112エラーは外部のnginxサーバー側の問題であり、.NETランタイムの問題ではなく既に解決済み
  • 変更は最小限(1行追加、2行削除)で、テストの再有効化のみ

#124580 Fix memory leak in ICorDebugEnum::Clone on CordbEnumerator

  • 作成者: @noahfalk
  • 作成日時: 2026年02月19日 00:24:48(UTC)
  • マージ日時: 2026年02月19日 23:49:08(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

CoreCLR デバッガーの ICorDebugEnum::Clone 実装における CordbEnumerator のメモリリークを修正しました。クローンされた列挙子が内部の m_items 配列を解放せず、プロセスのクリーンアップ時に IsNeutered() アサーション失敗を引き起こしていた問題を解決します。クローンされた列挙子をプロセスの continue neuter リストに追加することで、適切なクリーンアップを保証します。

変更内容

  • src/coreclr/debug/di/rsenumerator.hpp (+1/-0)
    • クローンされた列挙子をプロセスの continue neuter リストに追加する処理を実装

パフォーマンスへの影響

影響なし

本修正は、メモリリークを防ぎデバッガーのリソース管理を改善するものであり、パフォーマンスへの直接的な悪影響はありません。むしろ、不適切なメモリ保持によるメモリ圧力が軽減されます。

関連Issue

#121925

その他

  • 本修正はデバッガー機能に関するもので、デバッグセッション中の列挙子クローン操作に影響します
  • リリースビルドには影響しませんが、デバッグビルドではアサーション失敗を防ぐため重要です
  • 変更は最小限に抑えられており、クローン処理の既存ロジックに対する破壊的変更はありません

#124574 Improve performance-benchmark/SKILL.md

  • 作成者: @EgorBo
  • 作成日時: 2026年02月18日 23:12:22(UTC)
  • マージ日時: 2026年02月19日 18:44:21(UTC)
  • ラベル: area-skills

概要

dotnet/runtimeのパフォーマンスベンチマーク用Copilot Skillの設定を改善したPRです。Copilotが生成するコマンドを簡潔化し、PR内での使用に最適化しました。主な変更は、不要なコードブロックラッピングの防止、-commitモードの削除、OSX ARM64ターゲットの推奨です。

変更内容

  • .github/skills/performance-benchmark/SKILL.md (+18/-86)
    • Copilotのコマンド生成時にコードブロックでのラッピングを回避するよう指示を修正
    • -commit モードを削除(PR内での使用に限定)
    • osx_arm64 ターゲットを優先推奨(Helixベアメタル環境を活用)

パフォーマンスへの影響

改善点:

  • osx_arm64 ターゲットの推奨により、ベアメタル環境での実行が可能になり、より安定した・最速のベンチマーク結果が得られる
  • Skill設定の簡潔化により、Copilotの応答速度向上を期待

その他:

  • PR内での操作に特化することで、不要なコンテキスト情報を削減

関連Issue

なし

その他

  • ファイルサイズが大幅に削減(104行中-86行)され、メンテナンス性が向上
  • Copilot Skillの改善であり、開発者の直接的なコード変更ではなく、ツール設定の最適化

#124572 [RyuJit] Remove the gtCallCookie operand from calls

  • 作成者: @SingleAccretion
  • 作成日時: 2026年02月18日 20:48:19(UTC)
  • マージ日時: 2026年02月19日 22:30:23(UTC)
  • ラベル: area-CodeGen-coreclr community-contribution

概要

RyuJIT コンパイラの呼び出し(call)ノードから gtCallCookie オペランドを削除するリファクタリングです。このオペランドはインポーター(IL解析)からモルフ(中間表現最適化)フェーズへの単純なデータ伝達にのみ使用されていたため、IR(中間表現)として保持する必要がなくなり、直接的なパラメータ渡しに変更することで、コンパイラのコード複雑性を低減しています。

変更内容

  • compiler.h/compiler.hpp: gtCallCookie 関連の定義・宣言を削除(-20行)
  • gentree.h/gentree.cpp: GenTreeCall 構造体から gtCallCookie フィールドを削除し、関連するアクセッサーを整理(-10行)
  • importer.cpp: gtCallCookie の設定コードを削除(-31行)
  • importercalls.cpp: コール構築ロジックを簡略化(-15行)
  • ee_il_dll.cpp: 代替の gtCallCookie 処理ロジックを追加(+25行)
  • lower.cpp: gtCallCookie 関連のコード生成処理を削除(-9行)
  • morph.cpp: gtCallCookie 処理をリファクタリング(+6行で効率化)

パフォーマンスへの影響

影響なし。本変更は機能的な動作に変更を加えないリファクタリングです。IR内の不要なフィールド削除により、メモリ使用量の軽微な削減が期待されますが、パフォーマンスへの顕著な影響はありません。

関連Issue

なし

その他

本変更は内部実装の改善であり、公開APIや外部インターフェースに影響を与えません。JIT コンパイラの中間表現を簡潔にすることで、将来の保守性が向上し、コンパイラロジックの理解が容易になります。


#124571 Eliminate redundant bounds checks for arr[^N-1] after arr[^N]

  • 作成者: @Copilot
  • 作成日時: 2026年02月18日 20:09:30(UTC)
  • マージ日時: 2026年02月19日 15:40:39(UTC)
  • ラベル: area-CodeGen-coreclr reduce-unsafe

概要

インデックス-from-end パターン(arr[^4]arr[^3]など)でJITが生成する冗長な境界チェックを排除するための最適化です。arr[^4]の境界チェックで配列長が4以上と判定された場合、後続のarr[^3]arr[^2]arr[^1]の境界チェックは数学的に冗長であり、これらを削除します。

public int DecodeRemaining(ReadOnlySpan<int> source)
    => source[^4] | source[^3] | source[^2] | source[^1];

変更内容

  • src/coreclr/jit/rangecheck.cpp: MergeEdgeAssertions メソッドを修正
    • IsBoundsCheckNoThrow アサーション内で、インデックスが VNF_ADD(lenVN, -CNS) パターン(arr.Length - N の形式)である場合、配列長の下限を正確に導出
    • 従来は汎用的な「配列に最低1要素ある」という推論(lenVN > 0)に落ち着いていた
    • 改善後は「配列長 >= N」という厳密な制約を導出し、後続チェックの冗長性判定が可能に

パフォーマンスへの影響

大幅な改善:

  • 冗長な境界チェック命令の削除:4個 → 1個(例示コードの場合)
  • 最適化前:lea、cmp、jae 命令セット×3 が不要に生成
  • 最適化後:最初の1チェック後は直接メモリアクセス可能
  • 生成コードサイズ:64バイト → 明らかに削減(アセンブリ出力参照)
  • スループット向上:特にループ内で連続アクセスする場合に効果的

関連Issue

  • #124531(元の報告issue)

その他

  • 互換性:JIT最適化のみで、アプリケーションレベルの動作変更なし
  • 対象シナリオ:ReadOnlySpan や配列への複数の index-from-end アクセスで効果顕著
  • 実装方針:既存の範囲ベース境界チェック削除ロジック(optAssertionProp_BndsChk)を活かす設計

#124562 Preserve ninja=false via msbuild

  • 作成者: @am11
  • 作成日時: 2026年02月18日 18:11:14(UTC)
  • マージ日時: 2026年02月19日 10:40:46(UTC)
  • ラベル: area-Infrastructure-coreclr community-contribution

概要

build.sh -ninja false で ninja ビルドシステムの無効化がMSBuild経由では反映されない問題を修正しました。また、dotnet パスにスペースが含まれる場合の CMake パース問題も同時に修正されています。この変更により、ネイティブビルドシステムの生成時に -ninja false フラグが正しく保持されます。

変更内容

  • eng/native/gen-buildsys.sh: ネイティブビルドシステム生成スクリプトでの ninja フラグ処理を修正(+3/-3)
  • src/coreclr/runtime.proj: CoreCLR ランタイムプロジェクトファイルに ninja フラグ伝播を追加(+2/-1)
  • src/native/corehost/corehost.proj: CoreHost プロジェクトファイルに ninja フラグ伝播を追加(+1/-0)
  • src/native/libs/build-native.proj: ネイティブライブラリビルドプロジェクトに ninja フラグ伝播を追加(+1/-0)

パフォーマンスへの影響

影響なし。本変更はビルドシステム選択の制御に関するものであり、ランタイムパフォーマンスへの直接的な影響はありません。

関連Issue

なし

その他

  • パス処理の改善: dotnet パスにスペースが含まれる場合、CMake が正しく解析できるようにクォーティング処理も改善されています
  • スコープ: ネイティブビルドシステムの生成層に限定された変更で、Core CLR、CoreHost、ネイティブライブラリの複数のプロジェクトファイルで一貫性を保つ更新が行われています
  • MSBuild統合: コマンドラインから指定された ninja 無効化オプションが MSBuild 経由でも正しく伝播されるようになりました

#124554 Pass EncApproxFieldDescIterator::FixUpEncFields instead of TRUE

  • 作成者: @gbalykov
  • 作成日時: 2026年02月18日 13:58:43(UTC)
  • マージ日時: 2026年02月19日 05:51:13(UTC)
  • ラベル: area-VM-coreclr community-contribution

概要

EncApproxFieldDescIterator::FixUpEncFields メソッド呼び出しで、TRUE のハードコーディングを正しいイテレータオブジェクトに置き換える修正です。PR #85269 で見落とされていた問題を修正するもので、これまで偶然に動作していたコードを適切に修正しています。

変更内容

  • src/coreclr/vm/runtimehandles.cpp
    • EncApproxFieldDescIterator::FixUpEncFields への呼び出しで、TRUE リテラルをイテレータオブジェクトに変更(+1行/-1行)
    • Edit and Continue (EnC) フィールド初期化処理の引数を修正

パフォーマンスへの影響

影響なし

この修正は、意図した引数が正しく渡されることを保証するコード修正であり、パフォーマンス特性に変更はありません。

関連Issue

#85269(前回の関連修正)

その他

  • 重要: これはBOOL型の引数に対してTRUE定数を渡していた問題の修正です
  • Edit and Continue (EnC) 機能に関連する Core CLR の内部実装の修正であり、通常のユーザーコードへの直接的な影響はありません
  • 型安全性の観点から、正しいオブジェクト参照を渡すことでコードの意図をより明確にしています

#124540 #124513 - Guard Base64Url.DecodeFromChars against non-ASCII input

  • 作成者: @Tomius
  • 作成日時: 2026年02月18日 08:24:13(UTC)
  • マージ日時: 2026年02月19日 03:05:20(UTC)
  • ラベル: area-System.Buffers community-contribution

概要

Base64Url.DecodeFromChars において、非ASCII文字入力時にアウト・オブ・バウンド読み取りバグが発生していました。非ASCII文字(値 > 2048)がデコードマップ(256要素配列)へのインデックスとして直接使用されることで AccessViolationException が発生していた問題を修正します。

修正方法として、デコード前に System.Text.Ascii.IsValid チェックを追加し、非ASCII入力を早期に拒否するようにしました。Base64/Base64Urlは ASCII文字のみを使用するため、非ASCII入力は本質的に無効です。

変更内容

  • Base64DecoderHelper.cs

    • DecodeFromChars メソッドに入力バリデーションロジックを追加
    • デコード処理前に ASCII 有効性チェックを実装
  • Base64UrlUnicodeAPIsUnitTests.cs

    • 非ASCII入力に対する新しいテストケースを追加
    • 既存テストケースの一部を調整

パフォーマンスへの影響

入力バリデーションステップが追加されるため、わずかなオーバーヘッドが発生します。ただし、不正な入力(非ASCII文字)の場合は、後続のアウト・オブ・バウンドアクセスやメモリ例外による性能低下を回避できるため、総合的には安定性の向上と予測可能な例外処理が実現されます。

関連Issue

#124513

その他

  • この修正は内部実装の安全性向上であり、公開APIの変更ではありません
  • AccessViolationException は予測不可能なメモリ破壊につながる重大なバグであり、この修正により信頼性が向上します

#124539 Add ActiveIssue to GetTotalAllocatedBytes test

  • 作成者: @MichalStrehovsky
  • 作成日時: 2026年02月18日 08:20:48(UTC)
  • マージ日時: 2026年02月19日 04:37:15(UTC)
  • ラベル: area-GC-coreclr

概要

GetTotalAllocatedBytesテストにActiveIssue属性を追加し、outerloopテストの実行から除外します。このテストは頻繁にOut-Of-Memory(OOM)エラーが発生するため、除外することでouterloopテストスイート全体の安定性を向上させます。

[ActiveIssue("issue-number", TestRuntimes.CoreCLR)]
public void GetTotalAllocatedBytes_Test()
{
    // テスト実装
}

変更内容

  • src/tests/GC/API/GC/GetTotalAllocatedBytes.cs
    • GetTotalAllocatedBytesテストメソッドにActiveIssue属性を追加(1行追加)
    • このテストがouterloopテスト実行時にスキップされるようになります

パフォーマンスへの影響

影響なし

このテスト自体の除外であり、製品コード(runtime)への変更ではありません。ただしouterloopテストの成功率向上につながります。

関連Issue

明記されていません(PR説明では"We'll get more fully green outerloops"と記載されているため、既知のOOM問題に対応した可能性があります)

その他

  • このPRはILC(IL Compiler)チームへの通知がCcされています
  • テストの実装ロジック自体の変更ではなく、テスト実行の除外という対応です

#124533 Fix RangeOps::Multiply to handle dependent ranges

  • 作成者: @Copilot
  • 作成日時: 2026年02月18日 03:05:21(UTC)
  • マージ日時: 2026年02月19日 15:40:52(UTC)
  • ラベル: area-CodeGen-coreclr

概要

RangeOps::Multiplyがdependent bounds(依存バウンド)を持つ範囲でkeUnknownを返していた問題を修正しました。これにより、ループの帰納変数に対する範囲伝播が可能になり、ARM64のCSieveBenchmarkで約12%のパフォーマンス低下が改善されます。

修正により、以下のようなパターンで範囲最適化が有効になります:

for (int k = i + i; k <= Size; k += i)
{
    array[k] = value;  // 境界チェックが最適化可能に
}

変更内容

ファイル: src/coreclr/jit/rangecheck.h

  • RangeOps::Multiplyの処理ロジックを修正(+7/-1行)
  • 完全な定数範囲に対しては既存の動作を保持
  • dependent boundsを持つ範囲に対して:定数バウンド組み合わせのオーバーフロー判定後、keUnknownではなくdependent range を返すよう変更
  • Add/Subtractのdependent bound処理パターンに合わせた統一化

パフォーマンスへの影響

改善: ARM64 CSieveBenchmarkで約12%の性能低下が改善されます。JITの範囲解析がloop induction variablesの範囲情報を保持し、配列の境界チェック最適化が可能になるため、実行時のオーバーヘッドが削減されます。

関連Issue

記載情報なし

その他

  • 変更は内部JIT実装(rangecheck.h)に限定され、公開APIへの影響なし
  • 破壊的変更なし
  • CSieveBenchmarkでの動作確認・検証予定

#124483 [browser][coreCLR] native stack trace symbols

  • 作成者: @pavelsavara
  • 作成日時: 2026年02月16日 21:41:44(UTC)
  • マージ日時: 2026年02月19日 15:32:12(UTC)
  • ラベル: arch-wasm area-Host os-browser

概要

WebAssemblyにおけるネイティブスタックトレースのシンボル解析機能を実装しました。EnableDiagnosticsWasmEmitSymbolMapが有効な場合、wasm-function[1018]形式のWebAssemblyスタックトレースを実際のシンボル名(例:PROCAbortTerminateProcess)に自動変換し、デバッグの可読性を大幅に向上させます。また、終了コード伝播、シャットダウン処理、例外ロギングの改善も含まれています。

変更内容

主要な変更ファイル:

  • src/native/libs/System.Native.Browser/diagnostics/symbolicate.ts (+81/-3): シンボル解析エンジンの実装
  • src/native/corehost/browserhost/loader/logging.ts (+42/-9): ログ出力とスタックトレース処理の強化
  • src/native/corehost/browserhost/loader/assets.ts (+36/-3): シンボルマップアセットの読み込み処理
  • src/native/corehost/browserhost/browserhost.cpp (+25/-4): C++側のホストロジック更新
  • 各種診断・終了コード関連ファイルの更新(CMakeLists.txt、exit.ts、logging.tsなど)

パフォーマンスへの影響

改善点:

  • Release ビルドにおいても、シンボルマップが利用可能な場合はスタックトレースが人間が読める形式で出力されます
  • シンボル解析はオンデマンド処理のため、有効な場合のみ実行される設計

懸念点:

  • シンボルマップファイルのロードとマッピング処理によるオーバーヘッドがありますが、デバッグ時のみの使用を想定しているため実質的な影響は最小限

関連Issue

その他

本PR は WebAssembly(WASM)を対象とするBrowser版 .NETランタイム向けの改善です。特にブラウザでの例外デバッグ時にスタックトレースが理解しやすくなり、開発効率が向上します。


#124466 Mark HTTP/1 trailer headers as unsupported on Browser

  • 作成者: @Copilot
  • 作成日時: 2026年02月16日 14:39:55(UTC)
  • マージ日時: 2026年02月19日 17:21:36(UTC)
  • ラベル: area-System.Net.Http os-browser

概要

HTTP/1 trailer headers はブラウザプラットフォームではサポートされていない永続的な制限であることを反映するため、テスト属性を ActiveIssue から SkipOnPlatform に変更しました。これにより、追跡対象のバグではなくプラットフォーム制限として正しく分類されます。

変更内容

  • ファイル: src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs
    • SocketsHttpHandler_Http1_TrailingHeaders_Test のテスト属性を変更
    • [ActiveIssue("https://github.com/dotnet/runtime/issues/54156", TestPlatforms.Browser)] を削除
    • [SkipOnPlatform(TestPlatforms.Browser, "HTTP/1 trailers are not supported by most major browsers")] を追加

パフォーマンスへの影響

影響なし

関連Issue

  • Fixes #54156 ([wasm] Trailer headers not implemented)

その他

  • この変更は他のブラウザプラットフォーム制限(プロキシ、証明書、ソケット)に使用されているパターンに合わせています
  • スキップメッセージにより、これが .NET の実装問題ではなくブラウザの制限であることが明確になります
  • HTTP/1 trailer headers は RFC 7230 で定義されていますが、ほとんどのメジャーブラウザでは実装されていません

#124383 SPMI: Fix relocs into new RO data section

  • 作成者: @jakobbotsch
  • 作成日時: 2026年02月13日 14:04:08(UTC)
  • マージ日時: 2026年02月19日 18:04:30(UTC)
  • ラベル: area-CodeGen-coreclr

概要

ARM64アーキテクチャにおける読み取り専用(RO)データセクションへの相対リロケーション処理を修正しました。ARM64では複数のROデータブロック(コード末尾のブロックと非同期関数用の別個ブロック)が存在するため、リロケーション処理を拡張して後者のブロックを正しく認識するようにしました。

変更内容

  • asmdumper.cpp (+4/-2):ARM64リロケーション処理の基本的な追加
  • compileresult.cpp (+34/-6):ROデータセクションのハンドリング強化、複数ROデータブロック対応
  • compileresult.h (+4/-2):対応する構造体定義の更新
  • neardiffer.cpp (+44/-32):相対リロケーション検証ロジックの改善、ARM64向けのROデータセクション識別処理を追加

パフォーマンスへの影響

影響なし

関連Issue

#124371(修正対象Issue) #124382(今後のクリーンアップ予定)

その他

本修正は暫定的な実装となっており、作成者自身が今後のクリーンアップ予定(#124382)を明記しています。現在のアプローチは「かなりハッキーな」実装とのことで、将来的にはより洗練されたアプローチへの移行を検討中です。

このPRはSPMI(Spec JIT Microbenchmark Infrastructure)ツール内のリロケーション処理に関連するもので、ランタイムコンパイル結果の検証を改善するものです。


#124265 [ios] HelloiOS - Set RunAOTCompilation only on Mono

  • 作成者: @davidnguyen-tech
  • 作成日時: 2026年02月11日 12:27:43(UTC)
  • マージ日時: 2026年02月19日 13:19:09(UTC)
  • ラベル: documentation os-ios needs-area-label

概要

iOS の HelloiOS サンプル において、RunAOTCompilation プロパティが Mono ランタイム専用の設定であることを明確にするため、条件付きで設定するように修正しました。従来は UseMonoRuntime=false(CoreCLR使用)時に RunAOTCompilation=true を指定すると、Mono の AOT 関連ターゲットを経由して ILStrip がエラーになる問題がありました。

<!-- 修正後: Mono ランタイムのみで AOT コンパイルを有効化 -->
<RunAOTCompilation Condition="'$(UseMonoRuntime)' == 'true'">true</RunAOTCompilation>

変更内容

  • src/mono/sample/iOS/Program.csproj: RunAOTCompilation プロパティに Mono ランタイム使用時のみ有効となるように条件付き属性 Condition="'$(UseMonoRuntime)' == 'true'" を追加

パフォーマンスへの影響

影響なし。本変更はビルド失敗を防ぐための修正であり、ランタイムパフォーマンスへの直接的な影響はありません。ただし CoreCLR では AOT コンパイルが実行されず、Mono では AOT コンパイルが実行されるため、ランタイム環境に応じた最適な設定が実現されます。

関連Issue

PR #124230 にて RunAOTCompilation=false フラグが誤って削除されたことが本修正の契機。

その他

  • CoreCLR と Mono の両ランタイムで異なるビルド要件があることが明示されました
  • iOS ビルド時の /p:UseMonoRuntime フラグ指定時の動作が明確になります

#124220 [maccatalyst][coreclr] Fix native build failure on Xcode 26.2

  • 作成者: @davidnguyen-tech
  • 作成日時: 2026年02月10日 13:26:53(UTC)
  • マージ日時: 2026年02月19日 13:00:23(UTC)
  • ラベル: area-Infrastructure-coreclr os-maccatalyst

概要

Xcode 26.2でのmacCatalyst ネイティブビルド失敗を修正するPRです。eng/native/build-commons.shからCMAKE_OSX_DEPLOYMENT_TARGETを削除し、clangの厳密なバージョン検証エラー(invalid version number in '-mmacosx-version-min=17.0')を解決します。macCatalystのバージョン番号(17.0)がmacOSのバージョン番号として誤釈釈されていた問題を修正し、実際のCatalystターゲット指定はconfigurecompiler.cmake-target arm64-apple-ios17.0-macabiトリプルで別途適用されます。

変更内容

  • eng/native/build-commons.sh: macCatalystビルド設定からCMAKE_OSX_DEPLOYMENT_TARGET変数を削除(+6/-3行)
  • eng/native/configurecompiler.cmake: コメント追加またはマイナーな設定調整(+2/-0行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 変更はコンパイラテスト段階でのclangエラーを排除するもので、実際のビルドやランタイム動作への影響はありません
  • Xcode 26.2 / CMake 4.2.0での完全なmacCatalyst-arm64ビルド(clr+clr.runtime+libs+packs)で検証済みです
  • 旧バージョンのclangは無効なバージョン番号を黙認していましたが、Xcode 26.2のclangでは厳密に検証されるようになりました

#124194 [release/10.0] Revert #112403

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年02月09日 18:32:29(UTC)
  • マージ日時: 2026年02月19日 16:00:27(UTC)
  • ラベル: Servicing-approved area-GC-coreclr

概要

.NET 10でGCデッドロックを引き起こしていたPR #112403と#124194をリバートします。顧客がアップグレード後にGCデッドロックを報告し、プライベートビルドでこのPRが原因であることが確認されました。リバート後、デッドロックは解消されました。

変更内容

  • src/coreclr/gc/gc.cpp: GCロジック関連の実装を.NET 9の状態に戻す(+83/-174)
  • src/coreclr/gc/gcpriv.h: GCプライベートヘッダーの定義を修正(+2/-17)

パフォーマンスへの影響

影響なし。本リバートは機能的な安定性を優先するものです。元のPR #112403/124194は高pinning シナリオでの問題への対策でしたが、リバート後は.NET 9の既存動作に戻ります。

関連Issue

  • PR #123966(release/10.0へのバックポート元)
  • PR #112403(リバート対象)
  • PR #124194(リバート対象)

その他

  • リスク評価: 低リスク。.NET 9の既知で安定した動作状態に戻すため
  • 顧客影響: 既に報告済み。プライベートビルドで検証済み
  • 回帰判定: 確認済み
  • レビュワー: mangod9

#123989 Improve test coverage for System.Formats.Tar APIs

  • 作成者: @Copilot
  • 作成日時: 2026年02月04日 09:34:11(UTC)
  • マージ日時: 2026年02月19日 14:00:51(UTC)
  • ラベル: area-System.Formats.Tar

概要

System.Formats.Tar APIのテストカバレッジを拡充するPRです。3つの主要なテストを追加しています:

  1. 実行可能権限の保持: 全tar形式(V7、Ustar、Pax、Gnu)でアーカイブ化・抽出時に実行可能ビットが保持されることを検証
  2. 非サポートエントリタイプの読み込み: MultiVolume、SparseFile、TapeVolumeなどの非サポート型を含むアーカイブをTarReaderが例外なく読み込めることを確認
  3. 隠しファイル対応: ドット(.)で始まるファイルをアーカイブに追加・抽出できることをテスト

変更内容

  • TarEntry.ExtractToFile.Tests.Unix.cs: Archive_And_Extract_Executable_PreservesExecutableBitテスト追加(+43行)

    • V7を含む全tar形式をテスト
    • プロセスのumaskを考慮した権限検証
  • TarReader.GetNextEntry.Tests.cs: Read_Archive_With_Unsupported_EntryTypeテスト追加(+53行)

    • GNUtar形式の有効なヘッダを手動構築
    • 各ヘッダフィールドの詳細なコメント付き
    • tar仕様に基づく正しいチェックサム計算
  • TarWriter.WriteEntry.File.Tests.Unix.cs: Create_Entry_From_HiddenFileテスト追加(+34行)

    • 全tar形式(V7、Ustar、Pax、Gnu)をテスト
    • クロスプラットフォーム対応(Unixテストだがdotプレフィックスはすべてのプラットフォームで有効)
    • ドット付きファイル名の保持を検証

パフォーマンスへの影響

影響なし。テストコード追加のみであり、ランタイムパフォーマンスに影響はありません。

関連Issue

#68230 - System.Formats.Tar APIのテストカバレッジ改善

その他

  • テストはリポジトリの確立されたパターンに準拠
  • 非サポートエントリタイプテストではチェックサムフィールド(バイト148-155)を計算時に8つのスペース文字として扱う仕様に従ったヘッダ構築
  • 実行可能権限テストはumaskを考慮し、テスト失敗の回避を実装

#123744 Add a config switch to fully disable hot-reload

  • 作成者: @barosiak
  • 作成日時: 2026年01月29日 01:36:12(UTC)
  • マージ日時: 2026年02月19日 01:52:22(UTC)
  • ラベル: enhancement area-Diagnostics-coreclr

概要

Hot-Reloadを完全に無効化するための設定スイッチを追加しました。メタデータアップデーター機能を条件付きで無効にする新しい構成オプションを実装しています。これにより、アプリケーション側でホットリロード機能を完全に無効化することが可能になります。

変更内容

  • clrconfigvalues.h: 設定値定義の更新(+1/-1)
  • assemblynative.cpp: ネイティブアセンブリ処理の変更(+2/-1)
  • ceeload.cpp: CLRローダーロジックの修正(+3/-1)
  • eeconfig.cpp/h: ランタイム設定処理の拡張(+11/-1、+12/-3)
    • メタデータアップデーターの有効/無効制御ロジックを追加
  • hot_reload.c/hot_reload-stub.c: ホットリロード実装の更新(+24/-12、+1/-1)
    • 無効化オプション対応処理を実装
  • metadata-update.h: メタデータ更新ヘッダーの更新(+5/-3)
  • ApplyUpdateTest.cs/ApplyUpdateUtil.cs: テストスイートの追加(+20、+4)
    • ホットリロード無効化機能のテストケース

パフォーマンスへの影響

影響なし。本変更は機能の有効/無効をランタイム起動時に決定する設定メカニズムであり、スイッチが有効な場合の実行パス削減によるパフォーマンス改善の可能性あり。

関連Issue

Issue #78540を修正

その他

  • CoreCLRとMonox両ランタイムの対応を実装
  • テストコードの充実により、ホットリロード無効時の動作検証が可能
  • 構成オプションを通じてアプリケーション起動時に制御可能

#123642 [browser] Marshalling support float[], Span and ArraySegment

  • 作成者: @ArcadeMode
  • 作成日時: 2026年01月26日 21:37:21(UTC)
  • マージ日時: 2026年02月19日 18:46:14(UTC)
  • ラベル: arch-wasm area-System.Runtime.InteropServices.JavaScript community-contribution os-browser

概要

WebAssembly(WASM)のJavaScript相互運用性を強化するため、float[]Span<float>ArraySegment<float>のマーシャリングサポートを追加しました。CoreCLRおよびMonoランタイムで機能し、インポート/エクスポートテストで動作を実証しています。

// 使用例
[JSImport("jsFunction", "module")]
public static partial float[] GetFloatArray();

[JSExport]
public static void ProcessFloatSpan(Span<float> data) { }

変更内容

C#側の実装:

  • JSMarshalerArgument.Single.cs: float配列型のマーシャリングロジック(99行追加)
  • JSMarshalerType.cs: 新しい浮動小数点配列型の登録
  • ジェネレータとRef APIの更新

TypeScript側の実装:

  • marshal-to-cs.tsmarshal-to-js.ts: float配列の双方向マーシャリング処理
  • marshaled-types.ts: マーシャリング型定義の拡張

テスト追加:

  • JSImportテスト(74行追加): float[]、Spanのインポート検証
  • JSExportテスト(36行追加): float配列型のエクスポート検証
  • テストヘルパー関数の追加(70行)

パフォーマンスへの影響

メモリバッファ操作(Span、ArraySegment)のサポートにより、配列複製を避けて直接メモリ参照が可能になります。大規模データセット処理時のメモリコピーオーバーヘッド削減が期待できます。具体的なベンチマーク数値は記載なし。

関連Issue

  • #97380
  • #123706

その他

作成者がドキュメント更新の手順とリリースバージョン(.NET 10/11)の確認を質問しており、マージ後のドキュメント対応が必要と考えられます。


#123377 [wasm][coreclr] runtime tests on CI

  • 作成者: @radekdoulik
  • 作成日時: 2026年01月20日 12:56:15(UTC)
  • マージ日時: 2026年02月19日 22:06:00(UTC)
  • ラベル: arch-wasm area-Infrastructure-coreclr os-browser

概要

WebAssembly上のCoreClrランタイムテストをCI上で実行可能にするパッチです。Node.jsをテスト実行ホストとして使用し、デスクトップ環境に近いテスト実行フローを実現しています。CI パイプラインにbrowser_wasmビルド・テストジョブが追加され、WASM ランタイムの固有の問題に対応するためのテスト調整が含まれています。

変更内容

  • CI パイプライン: runtime.yml に browser_wasm ビルド・テストジョブを追加。TargetsBrowserOnCoreCLR プロパティを導入し、Mono ブラウザテストとの区別と TargetsMobile=false 設定によるデスクトップ実行パスの採用
  • Node.js テストランナー: run.sh/run.cmd/run.py に --node フラグを追加。RunWithNodeJS 設定時にタイムアウト機能付きで node corerun.js を呼び出し
  • WASM ランタイム: 最大メモリを 4GB に拡張、corerun.cpp の終了コード返却修正、libCorerun.js の終了処理再構築、12 個の新しいインタプリタ-マネージド呼び出しスタブ追加、リバースサンク主要ルックアップの無効化
  • ブラウザホスト: マネージド終了コードを Node.js process.exitCode に伝播、Node.js 環境対応の TypeScript 更新
  • テスト調整: PlatformDetection.IsWasm 追加、WASM 上の IsCoreClrInterpreter=true マーク、9 つのテストをスキップ(已知の WASM 問題対応)

パフォーマンスへの影響

メモリ上限を 2GB から 4GB に増加させており、WASM 環境での大規模テスト実行に対応しています。その他のパフォーマンス最適化情報は提供されていません。

関連Issue

その他

  • 60 ファイルがレビュー対象(全 61 ファイル中)
  • リバースサンク主要ルックアップの無効化については、別 PR での修正が必要と明記

#123076 Handle RFC 6761 special-use domain names in Dns resolution

  • 作成者: @laveeshb
  • 作成日時: 2026年01月11日 18:09:04(UTC)
  • マージ日時: 2026年02月19日 10:43:20(UTC)
  • ラベル: area-System.Net community-contribution

概要

RFC 6761に準拠した特殊用途ドメイン名のDNS解決処理を実装しました。invalid*.invalidドメインは即座にHostNotFoundを返し、*.localhostサブドメインはOSリゾルバーを試行した後、失敗時はlocalhostへフォールバックしてループバックアドレスを返すようになります。

// 変更前:DNS照会を試行して失敗
await Dns.GetHostAddressesAsync("test.invalid");  // SocketException

// 変更後:即座にHostNotFoundを返す
await Dns.GetHostAddressesAsync("test.invalid");  // SocketError.HostNotFound

// *.localhostサブドメイン:OSリゾルバー→フォールバック
await Dns.GetHostAddressesAsync("foo.localhost");  // ループバックアドレス

変更内容

  • Dns.cs (+172行/-17行)

    • TryHandleRfc6761InvalidDomain() メソッド追加:invalid*.invalidの即座的な拒否
    • *.localhost サブドメイン処理:OSリゾルバー優先、失敗時にlocalhostへフォールバック
    • 同期/非同期パスでのフォールバック実装、例外処理の最適化
  • GetHostAddressesTest.cs (+152行) / GetHostEntryTest.cs (+159行)

    • 無効ドメイン拒否テスト(invalidtest.invalidfoo.bar.invalidなど)
    • localhostサブドメイン解決テスト(foo.localhostbar.foo.localhostなど)
    • 大文字小文字区別なしの確認、AddressFamilyフィルタリング、末尾ドット処理

パフォーマンスへの影響

  • invalid / *.invalid ドメイン:ネットワークI/O排除により、不要なDNS照会が即座に短絡される
  • *.localhost サブドメイン:OSリゾルバー呼び出しが1回増加(フォールバックケース)

関連Issue

Fixes #118569

その他

  • 破壊的変更(意図的):従来は*.localhostサブドメインでSocketExceptionを発生させていましたが、今後はループバックアドレスを返却。ローカル開発シナリオで*.localhostサブドメインを活用できるようになります。
  • 実装上の注意点
    • フォールバック処理はtry/catch外に配置し、テレメトリー二重報告を防止
    • 非同期パスではcatchフィルターを!fallbackOccurredで保護
    • SocketException生成時に直接コンストラクタを使用し、HResultの上書きを回避
  • システムカスタマイズ対応/etc/hostsやローカルDNスの独自設定を尊重

#123036 [release/10.0] Fix EC-DSA / EC-DH PEM key loading with PKCS#8 key load attributes

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年01月09日 18:33:59(UTC)
  • マージ日時: 2026年02月19日 18:17:57(UTC)
  • ラベル: Servicing-approved area-System.Security

概要

EC-DSA / EC-DH の PEM キー読み込みに関するリグレッション修正です。X509Certificate2.CreateFromPemを使用して EC-DSA キーを Windows でインポートする際にエラーが発生していた問題を解決しました。修正内容は、証明書のキー使用法だけでなく、キー自体の属性(PKCS#8 キー負荷属性)も検査するようになったことです。

変更内容

  • X509Certificate2.cs: キー読み込みメカニズムを改修し、証明書とキー両方のキー使用法属性を検査するロジックを追加(+257行)
  • X509KeyUsageExtension.cs: 軽微な修正(+1行)
  • X509Certificate2PemTests.cs: EC-DSA と EC-DH の複数シナリオをカバーする新規テストを追加(+253行)

パフォーマンスへの影響

影響なし(キー検証ロジックの追加であり、パフォーマンスクリティカルではない)

関連Issue

  • #122925(顧客報告)
  • #122997(本体PR)
  • #115249(リグレッション原因となった過去PR)

その他

  • リグレッション情報: .NET 10 の #115249 で EC-DH 問題を修正した際に、EC-DSA シナリオが意図せずに回帰
  • 互換性: 破壊的変更なし。修正により既存シナリオとの互換性が復元される
  • リスク評価: Low。証明書ベースとキーベースの両側面でテストカバレッジが確保されている
  • Backport: release/10.0 ブランチへのバックポート対応

#120114 Simple ComWrappers APIs

  • 作成者: @rcj1
  • 作成日時: 2025年09月25日 20:00:32(UTC)
  • マージ日時: 2026年02月19日 07:05:52(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

ComWrappersに関連する3つの新しいcDAC(Common Data Access Component)APIを追加します:

  • GetComWrappersCCWData: CCW(COM Callable Wrapper)データの取得
  • IsComWrappersCCW: オブジェクトがComWrappers CCWかどうかの判定
  • IsComWrappersRCW: オブジェクトがComWrappers RCW(Runtime Callable Wrapper)かどうかの判定

これらのAPIにより、デバッガやプロファイラなどの診断ツールがComWrappersの状態をより効率的に検査できるようになります。

変更内容

  • cDAC API実装: ComWrappers_1.csに3つの新しいAPI実装を追加
  • データ構造定義: ComWrappersVtablePtrs、ManagedObjectWrapperLayout、ManagedObjectWrapperHolderObjectなどのデータ構造を定義
  • runtime統合: comwrappers.cppでruntimeサイドのサポートを実装
  • ローダー関連: Loader_1.cs、Loader.mdに関連機能を追加
  • 型システム連携: RuntimeTypeSystem_1.csに統合ロジックを追加
  • ドキュメント: ComWrappers.mdに設計仕様を記載
  • 互換性: DAC変数とインターフェイス定義を更新

パフォーマンスへの影響

影響なし。この変更は診断APIの追加であり、通常のランタイム実行パスには影響しません。

関連Issue

なし

その他

  • 公開APIの追加であり、デバッギングインフラストラクチャ(cDAC)の拡張です
  • 複数の型システムコンポーネント(Loader、RuntimeTypeSystem)との統合が必要とされました
  • レビュープロセスで多くのコメントが付いており、設計の洗練と実装の詳細に関する議論がありました

#117256 Use OpenSSL implementation of AES Key Wrap with Padding on Linux

  • 作成者: @bartonjs
  • 作成日時: 2025年07月03日 01:45:20(UTC)
  • マージ日時: 2026年02月19日 00:20:35(UTC)
  • ラベル: area-System.Security

概要

Linux上でAES Key Wrap with Padding機能をOpenSSLネイティブ実装に移行するPRです。OpenSSL 1.0.1以降で利用可能なEVP_aes_###_wrap_padをRequired importとして扱い、プラットフォーム別の実装を分離しました。Androidは独立したコピーを保持しています。

変更内容

  • Interop/EVP.Cipher.cs: EVP_aes_wrap_pad関連のOpenSSLインターオップ定義を追加(+9行)
  • AesImplementation.OpenSsl.cs: Linux用のAES Key Wrap with Padding実装を新規作成(+101行)
  • AesImplementation.Android.cs: Android専用の独立したAES実装をコピーとして新規作成(+63行)
  • pal_evp_cipher.c/h: OpenSSL EVP Cipher PAL層にEVP_aes_wrap_padのネイティブバインディングを追加(+47行)
  • entrypoints.c: エントリポイント定義を追加(+3行)
  • opensslshim.h: OpenSSL shimヘッダに新規バインディングを追加(+8行)
  • System.Security.Cryptography.csproj: プロジェクト設定を更新(-1/+1行)

パフォーマンスへの影響

OpenSSL ネイティブ実装への移行により、AES Key Wrap with Paddingの処理はOpenSSLの最適化されたネイティブコードで実行されるため、マネージド実装よりもパフォーマンスが向上する可能性があります。ただし具体的なベンチマーク数値は記載されていません。

関連Issue

#108332(修正対象)

その他

  • Androidプラットフォームは独立したコピーとして分離され、OpenSSLに依存しない実装を保持
  • OpenSSL 1.0.1以降への依存性が追加されますが、これは既に最小要件として扱われている

目次