Pull Request on 2026年01月09日

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

注意点

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


目次

  1. #123034 Update DumpHeaders to take params span instead of params array
  2. #123032 Mark async CapacityTests as GC stress incompatible
  3. #123031 Keep proxy type map entries that could be created dynamically
  4. #123025 Tweak Copilot Coding Agent setup
  5. #123024 Fix DateTime parsing when AM designator prefix PM designator
  6. #123019 [Wasm RyuJIT] Add missing TYP_REF check
  7. #123003 Fix detection of System.Net.Security.Native
  8. #123001 Remove GetFullName(DefType) extension method and replace usage
  9. #122997 Fix EC-DSA / EC-DH PEM key loading with PKCS#8 key load attributes
  10. #122993 [clr-interp] Fix EH logic edge case
  11. #122987 skip timeout ping tests if test targets are unreachable
  12. #122967 JIT: Mark non-internal block as imported
  13. #122924 JIT: Fix GC info for fast tailcalls with contained targets
  14. #122734 [main] Update dependencies from dotnet/hotreload-utils, dotnet/icu, dotnet/runtime-assets
  15. [#122704 wasm][coreclr] Fix struct layout
  16. #122702 Update iOS and tvOS device queues to OSX 15
  17. #122601 Show only a single suggestion adornment for multi-line regex patterns
  18. #122407 Convert [GeneratedRegex] from method to property syntax

#123034 Update DumpHeaders to take params span instead of params array

  • 作成者: @Copilot
  • 作成日時: 2026年01月09日 14:07:56(UTC)
  • マージ日時: 2026年01月09日 16:27:53(UTC)
  • ラベル: area-System.Net.Http

概要

内部メソッド DumpHeaders の署名を、C# 12のparams ReadOnlySpan<T>を使用するように更新しました。従来のparams arrayによる不要なヒープ割り当てを排除しています。APIサーフェスの変更はなく、内部実装のみの改善です。

// 変更前
internal static void DumpHeaders(ref ValueStringBuilder sb, params HttpHeaders?[] headers)

// 変更後
internal static void DumpHeaders(ref ValueStringBuilder sb, params ReadOnlySpan<HttpHeaders?> headers)

変更内容

  • HeaderUtilities.cs: DumpHeadersメソッドのシグネチャを更新(1行の変更)
  • 3つの呼び出し元(HttpRequestMessage.ToString()HttpResponseMessage.ToString()内)は互換性があるため変更不要
  • メソッドの実装は既にSpan互換の操作(Length、インデクサー)のみを使用

パフォーマンスへの影響

改善あり。params配列の削減によりヒープ割り当てが解消されます。呼び出し元が複数のヘッダーオブジェクトを引数に渡す際、従来は配列をヒープに確保していましたが、本更新ではスタック上でSpanを構築するため、ガベージコレクションの対象が減少します。

関連Issue

記載情報なし

その他

  • リスク評価:低。単一行のシグネチャ変更で、セマンティクスは完全に同等
  • テスト:ビルド検証済み(警告0、エラー0)
  • .NET 9以降に対応した最適化

#123032 Mark async CapacityTests as GC stress incompatible

  • 作成者: @Copilot
  • 作成日時: 2026年01月09日 13:43:48(UTC)
  • マージ日時: 2026年01月09日 16:32:08(UTC)
  • ラベル: 指定なし

概要

非同期処理の大規模テスト(CapacityTests)がGCストレステスト時に問題を起こすため、[SkipOnCoreClr("", RuntimeTestModes.AnyGCStress)]属性を追加してスキップするようにマークしました。対象は4万個のメソッドを持つテストクラスを動的に生成するテストメソッド3つです。

変更内容

  • src/tests/async/capacity/capacity.cs
    • TestLargeClassWithIntMethods(40,000個のint返却メソッド)に属性追加
    • TestLargeClassWithTaskMethods_Success(32,750個のTask返却メソッド)に属性追加
    • TestLargeClassWithTaskMethods_Exception(32,763個のTask返却メソッド)に属性追加

パフォーマンスへの影響

影響なし。テストインフラストラクチャの変更のみで、製品コードに影響はありません。GCストレスモード時にこれらのテストが実行されなくなることで、テスト実行時のメモリ圧力と実行時間の不安定性が軽減される可能性があります。

関連Issue

なし

その他

  • テストのみの変更で、既存のパターン(HugeArray.csなど)に従った低リスクな修正
  • 動的に大量のメソッドを生成するテストはGCストレス環境で問題を引き起こすため、スキップが必要

#123031 Keep proxy type map entries that could be created dynamically

  • 作成者: @MichalStrehovsky
  • 作成日時: 2026年01月09日 13:26:13(UTC)
  • マージ日時: 2026年01月09日 22:19:01(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT (Ahead-Of-Time) コンパイルでプロキシ型マップのエントリが不正にトリミングされる問題を修正します。ジェネリック型がランタイムで動的にインスタンス化される可能性がある場合、型ローダーテンプレートを保持するための依存関係を自動的に作成するようになりました。これにより、リフレクション経由でジェネリック型が生成される際に必要な型情報が確実に保存されます。

変更内容

  • ProxyTypeMapNode.cs: ジェネリック型がカノニカル形式(ランタイム時に動的生成可能)を持つ場合、条件付き依存関係を作成するロジックを追加
  • DeadCodeElimination.cs: プロキシ型マップ内のジェネリック型に対するテストケースを追加。使用されるジェネリック型インスタンスは保持し、未使用のものはトリミングされることを検証

パフォーマンスへの影響

影響なし。この修正は正確な型情報の保持に関するもので、実行時パフォーマンスへの直接的な影響はありません。コンパイル時にメタデータの保存判定が改善され、実行時の型解決エラーが防止されます。

関連Issue

#122598(修正対象)

その他

  • NativeAOT環境でのトリミング動作に関する修正
  • ジェネリック型のカノニカル形式検出により、型ローダーが必要な型テンプレートを確実に利用可能に
  • テストカバレッジを拡充し、使用/未使用のジェネリックプロキシ型の両方をカバー

#123025 Tweak Copilot Coding Agent setup

  • 作成者: @stephentoub
  • 作成日時: 2026年01月09日 04:34:45(UTC)
  • マージ日時: 2026年01月09日 05:22:25(UTC)
  • ラベル: area-Infrastructure

概要

Copilot Coding Agent (CCA)のセットアップ時間を短縮するPRです。従来は初期セットアップに20分以上の完全ビルドが必要でしたが、このビルドステップを削除し、指示を柔軟化することで初期化時間を削減します。コメントやドキュメント変更時はビルドをスキップできるようにし、System.Private.CoreLibの作業ガイダンスも追加しています。

変更内容

  • .github/workflows/copilot-setup-steps.yml: セットアップワークフローからclr+libsの完全ビルドステップを削除(3行削減)
  • .github/copilot-instructions.md: 以下を追加・修正
    • コード以外の変更(コメント、ドキュメント)でのビルドスキップ許可
    • System.Private.CoreLib対応の具体的なガイダンス
    • ビルド必要性の判定基準の明確化

パフォーマンスへの影響

改善: 初期セットアップ時間が20分以上から大幅削減されます。これにより、Copilot Coding Agentの作業開始までの待機時間が劇的に短縮され、エージェントの時間枠を有効活用できるようになります。

懸念点: ビルド検証なしでCCAが作業を開始するため、不完全な変更提案のリスクがわずかに増加する可能性があります。ただし、指示文で必要時のビルド要件を明示しているため、実装時には制御可能な範囲と考えられます。

関連Issue

なし

その他

  • このPRは実験的な変更です。セットアップ時間短縮後に問題が生じた場合、リバート予定とのこと
  • 変更は過去8ヶ月間のレビュー経験に基づいており、CCAの効率性と品質のバランスを考慮したものです

#123024 Fix DateTime parsing when AM designator prefix PM designator

  • 作成者: @tarekgh
  • 作成日時: 2026年01月09日 02:17:19(UTC)
  • マージ日時: 2026年01月09日 21:34:00(UTC)
  • ラベル: area-System.DateTime

概要

CLDR グローバライゼーションデータの更新により、ak-GH ロケールの AM/PM 指定子が AN/ANW に変更されました。新しい値では AM 指定子が PM 指定子のプリフィックスになるため、DateTime パース時にバグが発生していました。このプリフィックスの問題に対応するため、常に最長マッチを優先的にパースし、必要に応じてフォールバックする修正です。

// 修正例:PM指定子がAM指定子を含む場合に最長マッチを優先
if (pmDesignator.StartsWith(amDesignator))
{
    // PM指定子の方が長い場合は優先的に照合
    // その後AM指定子にフォールバック
}

変更内容

ファイル 変更内容
src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeParse.cs MatchTimeMark メソッドの修正:AM 指定子が PM 指定子のプリフィックスである場合に、より長い PM マッチを優先するロジックを追加(+20/-8)
src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DateTimeTests.cs TestParsingWithAmPrefixPm テストケースを追加:AM 指定子が PM 指定子のプリフィックスである場合の DateTime パース動作を検証(+17)

パフォーマンスへの影響

影響なし。修正は日時指定子のマッチングロジックに最適化的な条件分岐を追加するため、パフォーマンスへの負の影響は生じません。

関連Issue

#123024

その他

この修正は、グローバライゼーションデータの更新に伴う互換性の問題を解決するものです。AM/PM 指定子のプリフィックス関係は地域によって異なる可能性があるため、この修正はすべてのロケール環境における DateTime パースの信頼性を向上させます。


#123019 [Wasm RyuJIT] Add missing TYP_REF check

  • 作成者: @kg
  • 作成日時: 2026年01月09日 00:28:15(UTC)
  • マージ日時: 2026年01月09日 20:44:10(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr

概要

WebAssembly JIT コードジェネレータにおいて、PackOperAndType 関数が TYP_REF(オブジェクト参照型)のチェックを欠落していた問題を修正しました。既存の TYP_BYREF(マネージドポインタ型)チェックと同様に TYP_REFTYP_I_IMPL(ネイティブ整数型)に正規化する処理を追加し、100件以上の superPMI テストの失敗を解決しています。

変更内容

  • src/coreclr/jit/codegenwasm.cpp
    • PackOperAndType 関数に TYP_REF 型チェックを追加
    • 既存の TYP_BYREF チェック条件と組み合わせて、両方の参照型を正規化処理の対象に

パフォーマンスへの影響

影響なし。この変更は型チェックロジックの修正であり、パフォーマンス特性への直接的な影響はありません。ただし、正しい型正規化により、Wasm JIT生成コードの正確性が向上し、後続の最適化が適切に動作するようになります。

関連Issue

なし

その他

  • 変更は minimal(+1/-1)かつ局所的であり、単一行の修正
  • superPMI(集約されたパフォーマンス・メトリクス・インフラ)で100件以上のテスト失敗が解決されたことから、この欠落チェックが Wasm ターゲットのコード生成において重大な問題であったことが示唆されます
  • PR作成者は同様のチェックの一元化を検討する価値があると指摘していますが、現在の修正の場所が適切と判断されたようです

#123003 Fix detection of System.Net.Security.Native

  • 作成者: @filipnavara
  • 作成日時: 2026年01月08日 09:58:29(UTC)
  • マージ日時: 2026年01月09日 07:47:56(UTC)
  • ラベル: area-System.Net.Security community-contribution

概要

System.Net.Security.Nativeの検出ロジックを修正するPRです。CheckHasSystemNetSecurityNativeメソッドが、ネイティブinterop機能の可用性を正しく判定するようにしました。従来はgss-ntlmsspの存在を誤って検出していましたが、GSSAPI呼び出し可能なネイティブinteropの実際の可用性に基づいて判定するよう改善されています。

// 修正内容:ネイティブinteropが実際に利用可能かつ
// GSSAPI呼び出しが可能な場合にのみtrueを返すよう改善

変更内容

  • src/libraries/System.Net.Security/src/System/Net/NegotiateAuthenticationPal.Unix.cs
    • CheckHasSystemNetSecurityNativeメソッドのロジック修正(+2行/-1行)
    • ネイティブinterop検出条件の改善

パフォーマンスへの影響

影響なし。検出ロジックの正確化であり、パフォーマンスクリティカルな部分ではありません。

関連Issue

#122895 および関連コメント

その他

このPRはSystem.Net.SecurityライブラリのUnix環境でのネゴシエーション認証(NTLM/Kerberos)実装に関する修正です。正しい検出により、ネイティブセキュリティライブラリへのinteropが適切に機能するようになります。


#123001 Remove GetFullName(DefType) extension method and replace usage

  • 作成者: @Copilot
  • 作成日時: 2026年01月08日 07:22:21(UTC)
  • マージ日時: 2026年01月09日 22:22:48(UTC)
  • ラベル: 指定なし

概要

GetFullName(DefType) 拡張メソッドをTypeSystemHelpers.csから削除し、EcmaType.csの唯一の使用箇所をThrowHelper.ThrowTypeLoadException(this)に置き換える内部リファクタリング。他のGetFullNameオーバーロード(TypeDesc、FieldDesc、MethodDesc)は変更なし。

// 変更前
throw new TypeSystemException.TypeLoadException(ExceptionStringID.ClassLoadGeneral, GetFullName());

// 変更後
ThrowHelper.ThrowTypeLoadException(this);

変更内容

  • TypeSystemHelpers.cs: GetFullName(this DefType metadataType) 拡張メソッド削除(9行削減)
  • EcmaType.cs: 例外スロー処理をThrowHelper.ThrowTypeLoadException(this)に統一(1行変更)

パフォーマンスへの影響

影響なし。既存のヘルパーメソッドへの置き換えで、機能的な変更はありません。

関連Issue

なし

その他

  • 完全な内部リファクタリング(外部APIへの影響なし)
  • CoreCLRツールのビルド確認済み
  • 単一行の置き換えのため低リスク
  • 他のGetFullNameオーバーロードは保持されているため、既存コードへの影響なし

#122997 Fix EC-DSA / EC-DH PEM key loading with PKCS#8 key load attributes

  • 作成者: @vcsjones
  • 作成日時: 2026年01月08日 02:43:28(UTC)
  • マージ日時: 2026年01月09日 18:31:39(UTC)
  • ラベル: area-System.Security

概要

.NET 10で導入されたEC-DSA/EC-DH PEM鍵ロードの順序変更に起因するリグレッションを修正します。PKCS#8形式の秘密鍵に埋め込まれたキー使用属性を検査するようにロジックを改善しました。Windows CNGが書き出したPKCS#8鍵のdigitalSignatureなどの属性を尊重し、EC-DSAキーが誤ってEC-DHとしてロードされる問題を解決します。

// 修正前の問題:PKCS#8の属性を無視してEC-DHでロード
// 修正後:PKCS#8の keyUsage 属性を確認してから適切なアルゴリズムでロード
X509Certificate2.ImportFromPem(pemData); // 正しく処理される

変更内容

  • X509Certificate2.cs (+257/-38): EC鍵用のカスタムロジックを実装。PKCS#8(EncryptedPrivateKeyInfoを含む)のキー使用属性を解析してEC-DSA/EC-DHを判定。既存のキーロード処理をヘルパーメソッドにリファクタリング
  • X509KeyUsageExtension.cs (+1/-1): DecodeX509KeyUsageExtensionをprivateからinternalに変更し、PKCS#8属性解析での再利用を可能化
  • X509Certificate2PemTests.cs (+253/-1): signing-only、agreement-only、混合などの各種キー使用属性を持つECキーのテストケースを追加

パフォーマンスへの影響

PKCS#8の秘密鍵をロードする際、既にデコード済みの{Encrypted}PrivateKeyInfoに対してBERローダーを使用するため、PEM PKCS#8の2重デコード(特に暗号化鍵の場合はPBES処理も重複)を回避できます。むしろパフォーマンス面での改善が期待できます。

関連Issue

#122925(本修正の対象)、#115232(EC-DH優先ロード導入時のissue)

その他

  • コメント内の文法エラー指摘あり("validate"→"validation")
  • PKCS#8属性の検査実装により、他の暗号化形式への同様の問題も抑止可能な基盤が整備されました

#122993 [clr-interp] Fix EH logic edge case

  • 作成者: @davidwrighton
  • 作成日時: 2026年01月08日 01:12:02(UTC)
  • マージ日時: 2026年01月09日 00:09:02(UTC)
  • ラベル: area-CodeGen-Interpreter-coreclr

概要

CLR インタープリタの例外処理(EH)ロジックにおけるエッジケースを修正しました。try ブロックが別の try/finally または try/catch ブロックを完全に囲み、ハンドラーが try 本体の終了地点と同じ位置で終了する場合に、leave チェーン島の ilOffset 表現でオフバイワン エラーが発生していた問題を解決しました。

変更内容

  • src/coreclr/interpreter/compiler.cpp

    • leave チェーン島のオフバイワン エラーを修正(+23/-1)
    • 特定の基本ブロックタイプの ilOffset 表現を補正
  • src/coreclr/interpreter/compiler.h

    • 関連するヘッダー定義を追加(+4/-0)

パフォーマンスへの影響

影響なし

この修正は正確性の問題(コード生成の正確さ)であり、パフォーマンス特性への直接的な影響はありません。

関連Issue

  • "badcodeinsidefinally" テストを修正

その他

注目すべき点として、C# コンパイラは同様のエッジケースを避けるため NOP 命令を意図的に挿入しているとのこと。本修正により、CLR インタープリタはこのような状況をより堅牢に処理できるようになります。


#122987 skip timeout ping tests if test targets are unreachable

  • 作成者: @wfurt
  • 作成日時: 2026年01月07日 20:03:42(UTC)
  • マージ日時: 2026年01月09日 17:58:11(UTC)
  • ラベル: area-System.Net

概要

タイムアウトPingテストが到達不可能なテストターゲットに対して実行されるときの誤検出を防ぐ改善です。テストターゲットがDestinationNetworkUnreachableステータスを返す場合、テストをSkipTestExceptionで動的にスキップするようになりました。

変更内容

  • PingTest.cs: タイムアウト関連の3つのテストメソッドを[Fact]から[ConditionalFact]に変更
  • ネットワークの到達不可能性をチェックして、テスト実行時に動的にテストをスキップする処理を追加
  • 変更行数: 追加8行、削除3行

パフォーマンスへの影響

影響なし。本変更はテスト実行時の条件判定を追加するもので、実行時パフォーマンスには影響しません。むしろテスト環境によって不要なテスト実行を回避するため、CI/CDのテスト実行時間を短縮できる可能性があります。

関連Issue

#115358 - タイムアウトPingテストにおける誤検出の問題

その他

  • [ConditionalFact]属性の使用により、テスト実行環境の状態に応じた動的なテストスキップが可能になります
  • ネットワーク環境によってテストターゲットが到達不可能な場合でも、テスト失敗ではなくスキップとして扱われるようになり、CI/CDパイプラインの安定性が向上します

#122967 JIT: Mark non-internal block as imported

  • 作成者: @jakobbotsch
  • 作成日時: 2026年01月07日 12:01:33(UTC)
  • マージ日時: 2026年01月09日 14:16:50(UTC)
  • ラベル: area-CodeGen-coreclr runtime-async

概要

JITの非内部ブロック(non-internal block)に関する不変条件を修正するPRです。async rewriteで生成されるブロックがBBF_IMPORTEDフラグを適切に設定していなかったため、デバッグ検証で失敗していました。非内部ブロックは常にBBF_IMPORTEDでマークされる必要があるという JIT の不変条件を守るため、BBF_INTERNALフラグを削除した後にBBF_IMPORTEDフラグを追加します。

変更内容

  • src/coreclr/jit/async.cpp
    • 例外の再スロー用に生成されるブロックで、BBF_INTERNALフラグを削除した後にSetFlags(BBF_IMPORTED)を呼び出す処理を追加
    • 変更量:+2/-0行

パフォーマンスへの影響

影響なし

関連Issue

#122963

その他

このPRは JIT のデバッグアサーション失敗を修正するものです。async 変換時に生成されるブロックは、デバッグ情報を保持するために内部ブロック(BBF_INTERNAL)であってはならず、その代わり外部ブロックとしてマークされます。この場合、JIT の不変条件により非内部ブロックはBBF_IMPORTEDフラグでも同時にマークされていなければなりません。


#122924 JIT: Fix GC info for fast tailcalls with contained targets

  • 作成者: @jakobbotsch
  • 作成日時: 2026年01月06日 16:11:08(UTC)
  • マージ日時: 2026年01月09日 13:46:43(UTC)
  • ラベル: area-CodeGen-coreclr

概要

Fast tailcall で含まれた間接呼び出しターゲット(contained indirection)を使用する際の GC 情報追跡バグを修正しました。レジスタが消費される際に GC ポインタ情報が失われていた問題を、引数レジスタと同じパターンで base/index レジスタの GC ポインタ情報を明示的に復元することで解決します。

変更内容

  • src/coreclr/jit/codegenxarch.cpp: Fast tailcall ターゲットの contained indirection における base/index レジスタを GC ポインタとして remarking するロジックを追加
  • src/coreclr/jit/codegenlinear.cpp: Tailcall ブロックの検証ロジックを更新し、引数レジスタだけでなく非変数ポインタレジスタすべてをスキップするように改善

パフォーマンスへの影響

影響なし。本修正は GC 情報の正確性を改善するための修正であり、パフォーマンスには直接的な影響はありません。

関連Issue

#122544(本修正で解決) #107283(GS cookie チェック付きメソッドからの tailcall 許可による派生的な影響)

その他

  • 本修正は x64/x86 プラットフォーム限定です。他のプラットフォームは contained indirection を call でサポートしていないため、ターゲットが GC ポインタを含むことは稀です
  • #107283 で tailcall out of methods with GS cookie checks を許可した際に、エミッタが GC 情報をラベルと同期するケースで問題が顕在化しました

#122734 [main] Update dependencies from dotnet/hotreload-utils, dotnet/icu, dotnet/runtime-assets

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2025年12月26日 02:01:44(UTC)
  • マージ日時: 2026年01月09日 19:35:34(UTC)
  • ラベル: area-codeflow

概要

このPull Requestは、dotnet/runtime リポジトリの依存パッケージを自動更新するものです。3つの外部リポジトリ(runtime-assets、hotreload-utils、icu)から提供される複数のテストデータパッケージとユーティリティパッケージが更新されています。更新は Maestro 自動化システムによって管理されています。

変更内容

  • eng/Version.Details.props: 依存パッケージのバージョン情報を18行更新
  • eng/Version.Details.xml: 対応する XML 形式の詳細バージョン情報を36行更新

更新パッケージ一覧:

  • runtime-assets (11.0.0-beta.25574.4 → 11.0.0-beta.25626.1)

    • 16個のテストデータパッケージ(CilStrip、タイムゾーンデータ、X.509証明書テストデータなど)
  • hotreload-utils (11.0.0-alpha.0.25574.1 → 11.0.0-alpha.0.25625.1)

    • Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
  • icu (11.0.0-alpha.1.25613.1 → 11.0.0-alpha.1.25631.1)

    • Microsoft.NETCore.Runtime.ICU.Transport

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは Maestro 自動化ツールにより、複数の依存リポジトリの変更を自動的に統合するものです
  • すべての更新は正式版リリース前のプレリリース版(beta/alpha)です
  • 変更は eng(エンジニアリング)ディレクトリの設定ファイルのみに限定されており、ランタイムコードの直接的な変更は含まれていません

#122704 [wasm][coreclr] Fix struct layout

  • 作成者: @radekdoulik
  • 作成日時: 2025年12月22日 16:59:20(UTC)
  • マージ日時: 2026年01月09日 09:36:58(UTC)
  • ラベル: arch-wasm area-TypeSystem-coreclr

概要

WebAssembly(WASM)環境におけるstructのメモリレイアウトをC言語のレイアウト規則に合わせるために修正されました。8バイト整列が必要なWASM型において、ハードコーディングされた8バイト整列ではなく、実際のフィールド整列要件を参照するように変更されています。

変更内容

  • src/coreclr/vm/methodtablebuilder.cpp: auto layout時のWASM固有ロジックを更新し、ハードコーディングされた8バイト整列の代わりにmax(8, GetFieldAlignmentRequirement())を使用
  • src/coreclr/vm/classlayoutinfo.cpp: default layout時のWASM固有ロジックを同様に更新
  • src/coreclr/inc/readytorun.h: メタデータ関連の微調整
  • src/coreclr/nativeaot/Runtime/inc/ModuleHeaders.h: NativeAOTモジュールヘッダーの調整
  • src/coreclr/tools/Common/Internal/Runtime/ModuleHeaders.cs: ツールの対応更新
  • src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs: フィールドレイアウトアルゴリズムの更新

パフォーマンスへの影響

影響なし。本変更はメモリレイアウトの正確性に関わる修正であり、パフォーマンス面での変化はありません。

関連Issue

#122294

その他

この修正により、WASM環境でのstruct定義時にC言語と同等のメモリレイアウトが保証されるようになります。auto layoutとdefault layoutの両方が一貫性を持つように更新されており、特にinterop シナリオでの互換性向上が期待されます。


#122702 Update iOS and tvOS device queues to OSX 15

  • 作成者: @kotlarmilos
  • 作成日時: 2025年12月22日 10:52:01(UTC)
  • マージ日時: 2026年01月09日 12:43:54(UTC)
  • ラベル: area-Infrastructure os-ios

概要

iOS および tvOS デバイステスト基盤を、スカウティング用 Helix キューから macOS 15 搭載の本番環境キューへ移行します。これにより、以前無効化されていた tvos_arm64 および ios_arm64 プラットフォームが有効化され、iOS/tvOS デバイスのテストが再開可能になります。

変更内容

  • eng/pipelines/runtime.yml: tvos_arm64 プラットフォームを有効化、BuildTestsOnHelix および NeedsToBuildAppsOnHelix パラメータを追加、ブロッキング TODO コメントを削除
  • eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml: ios_arm64 プラットフォームを複数のジョブで有効化、ブロッキング TODO コメントを削除
  • eng/pipelines/libraries/helix-queues-setup.yml: Helix キュー名を osx.amd64.{iphone|appletv}.scouting.open から osx.15.amd64.{iphone|appletv}.open に更新
  • eng/pipelines/coreclr/templates/helix-queues-setup.yml: 同様に Helix キュー名を本番環境キューに更新
  • eng/pipelines/helix-platforms.yml: プラットフォーム定義の更新

パフォーマンスへの影響

影響なし。本変更はテスト基盤の更新であり、ランタイム実行時のパフォーマンスには直接的な影響を与えません。ただし、より新しい macOS 15 環境への移行により、テスト実行環境の安定性向上が期待できます。

関連Issue

なし

その他

  • 本変更は CI/CD パイプライン設定の更新であり、実行時コードには影響しません
  • Xcode 26 を搭載した macOS 15 環境への移行は、最新の開発ツール環境でのテストが可能になることを意味します
  • 以前ブロッキング状態であった iOS/tvOS ARM64 ビルドがビルドシステム上で正式サポートされます

#122601 Show only a single suggestion adornment for multi-line regex patterns

  • 作成者: @Copilot
  • 作成日時: 2025年12月17日 02:55:21(UTC)
  • マージ日時: 2026年01月09日 14:25:48(UTC)
  • ラベル: area-System.Text.RegularExpressions

概要

SYSLIB1045アナライザーがマルチライン正規表現パターンに対して診断を報告する際、エディタの全行に"..."のサジェスション修飾子を表示していた問題を修正しました。診断スパンを開き括弧の前までに絞ることで、Regex.IsMatchnew Regex、target-typed newなどのメソッド/コンストラクタ名のみを指すようにしています。これにより、マルチラインパターンでのUI混雑を改善します。

変更内容

  • UpgradeToGeneratedRegexAnalyzer.cs: GetLocationBeforeArgumentsヘルパーメソッドを追加して、式の開始から開き括弧の直前までの診断スパンを生成。ImplicitObjectCreationExpressionSyntax(target-typed new)のサポートも追加
  • UpgradeToGeneratedRegexCodeFixer.cs: FindNodeが絞られたスパンを持つネストされたノードを返すため、構文木を上に遡る処理を追加。AncestorsAndSelf()で含むInvocationExpressionSyntaxまたはObjectCreationExpressionSyntaxを検出。target-typed newもサポート
  • UpgradeToGeneratedRegexAnalyzerTests.cs: 116個の既存テストを診断スパンの期待値で更新。新たにtarget-typed new向けテストケースTestTargetTypedNewを追加

パフォーマンスへの影響

影響なし。本変更は診断位置の報告のみに関わり、コード修正機能の動作には影響しません。

関連Issue

#93787(dotnet/runtime)

その他

  • リスク評価: 低。診断スパンの報告位置の変更のみで、コード修正はなお正常に機能
  • テスト: 117個のUpgradeToGeneratedRegexAnalyzerテストすべてが、更新されたスパン期待値で合格
  • 破壊的変更なし

#122407 Convert [GeneratedRegex] from method to property syntax

  • 作成者: @Copilot
  • 作成日時: 2025年12月10日 21:15:16(UTC)
  • マージ日時: 2026年01月09日 14:35:59(UTC)
  • ラベル: area-System.Text.RegularExpressions linkable-framework

概要

このPRは、.NET 10.0以上をターゲットとしているため、すべての [GeneratedRegex] 属性の宣言をメソッド構文からプロパティ構文に変換します。プロパティ構文はプロパティアクセス形式 { get; } を使用でき、コードをより簡潔にすることができます。

変換例:

// 変更前(メソッド構文)
[GeneratedRegex(...)]
static partial Regex Something();

// 変更後(プロパティ構文)
[GeneratedRegex(...)]
static partial Regex Something { get; }

変更内容

主な変更ファイル:

  • DebugProxy関連: MonoSDBHelper.cs(8つの宣言、15箇所のコールサイト変更)、EvaluateExpression.cs、DebugStore.cs
  • データベース接続: DbConnectionOptions.cs(複数ファイルで計5つの宣言、4~5箇所の変更)
  • CoreCLRツール: Amd64InstructionTableGenerator.cs(6つの宣言、7箇所のコールサイト)、GrammarExtractor/Program.cs(6つの宣言、8箇所のコールサイト)
  • その他: System.Text.Json、WasmBuildTasks、AndroidAppBuilder、ILLink等

変更内容:

  • 40以上の [GeneratedRegex] 宣言をメソッド構文からプロパティ構文に変換
  • コールサイトを更新し、メソッド呼び出し () をプロパティアクセスに変更
  • #if/#else/#endifブロック内の中間フィールド宣言を削除し、プロパティを直接使用

パフォーマンスへの影響

影響なし。この変更は構文的な置き換えであり、実行時の動作やパフォーマンスに変化はありません。Regex source generatorはコンパイル時にコード生成を行うため、プロパティ構文とメソッド構文は同じILを生成します。

関連Issue

なし

その他

  • テストファイルの変更は、メソッド構文のテストを保持するため、一度のレビュー後に取り消されました
  • 条件付きコンパイルブロック内のコードパターンが改善され、より読みやすくなっています