Pull Request on 2026年04月19日

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

注意点

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



#127120 Port VtableIndexStubGenerator to string writing

  • 作成者: @DoctorKrolic
  • 作成日時: 2026年04月19日 16:19:42(UTC)
  • マージ日時: 2026年04月19日 19:43:49(UTC)
  • ラベル: area-System.Runtime.InteropServices community-contribution

概要

VtableIndexStubGeneratorをString Writerパターンに移行するリファクタリング。COM相互運用性コード生成の内部実装を改善し、より保守性の高い文字列生成メカニズムへの段階的な移行に貢献します。

変更内容

  • VtableIndexStubGenerator.cs: String Writerベースの実装に全面移行(106行 → 135行に再構成)
  • VirtualMethodPointerStubGenerator.cs: 関連する呼び出し側のコード簡略化(29行削減)

パフォーマンスへの影響

影響なし (リファクタリングは内部実装の改善であり、生成されるコードの機能には影響しません)

関連Issue

#95882

その他

このPRは段階的なコード生成ロジックの統一化の一部です。String Writerパターンへの移行により、将来的なメンテナンスと機能拡張が容易になります。


#127119 Remove stale comment on ClientWebSocket._state

  • 作成者: @cittaz
  • 作成日時: 2026年04月19日 14:29:31(UTC)
  • マージ日時: 2026年04月19日 14:35:41(UTC)
  • ラベル: area-System.Net community-contribution

概要

ClientWebSocketクラスの_stateフィールド上の古いXML doc commentを削除しました。このコメントはInterlockedがenum型をサポートしていなかった時代の説明であり、#104558でクラス制約が削除され_stateInternalState型に変更されたため、不要になっていました。

変更内容

  • src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocket.cs: 1行削除(古いXML doc comment)

パフォーマンスへの影響

影響なし

関連Issue

#104558

その他

なし


#127118 Skip cross-bitness cDAC dump tests until ClrMD supports it

  • 作成者: @max-charlamb
  • 作成日時: 2026年04月19日 13:43:06(UTC)
  • マージ日時: 2026年04月19日 17:20:54(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC dump統合テストにおいて、ホストのポインタサイズとダンプアーキテクチャが異なる場合(クロスビットネス、例:32ビットホストが64ビットダンプを読み込む)のテストをスキップする機能を追加しました。ClrMDのClrDataAddressトランケーション問題(microsoft/clrmd#1423で修正中)がまだサポートしていないため、テスト失敗を回避するものです。

変更内容

  • DumpTestBase.cs: EvaluateSkipAttributesメソッドにクロスビットネスチェックを追加。IntPtr.Sizedump-info.jsonから取得したダンプアーキテクチャと一致しない場合、テストをスキップし、上流のClrMD修正を参照するメッセージを出力します。

パフォーマンスへの影響

影響なし

関連Issue

microsoft/clrmd#1423

その他

このスキップはClrMDパッケージが更新され、microsoft/clrmd#1423の修正がマージされた後に削除可能になります。特にx86 Helixレグで64ビットダンプを読み込もうとする際の不可解なテスト失敗を防ぎます。


#127111 Fix the encoding of vcvtps2ph

  • 作成者: @tannergooding
  • 作成日時: 2026年04月18日 21:18:59(UTC)
  • マージ日時: 2026年04月19日 02:55:50(UTC)
  • ラベル: area-CodeGen-coreclr

概要

SIMD命令vcvtps2ph(単精度浮動小数点を半精度に変換)のエンコーディングをRM(Register-Memory)からMR(Memory-Register)に修正します。これにより、特定のシナリオで発生していた無効な結果の生成を防ぎます。

変更内容

  • src/coreclr/jit/instrsxarch.h: 命令エンコーディング属性をRM→MRに変更
  • src/coreclr/jit/emitxarch.cpp: エンコーディング形式を修正(+1/-1)
  • src/coreclr/jit/codegenxarch.cpp: 関連する実装コード追加

パフォーマンスへの影響

影響なし

関連Issue

#127094の後続修正

その他

本修正は、同PRで追加されたvcvtps2ph命令が正しく機能するための重要な修正です。エンコーディング形式が不正だと、JITコンパイラが生成する機械語コードが無効になる可能性があるため、この修正はランタイムの安定性に関わります。


#127109 Cleanup the xarch perfscore handling

  • 作成者: @tannergooding
  • 作成日時: 2026年04月18日 19:36:34(UTC)
  • マージ日時: 2026年04月19日 20:48:04(UTC)
  • ラベル: area-CodeGen-coreclr

概要

x86/x64アーキテクチャのJITエミッタにおけるパフォーマンススコア(perfscore)モデリングをクリーンアップ・拡張するPRです。複数の命令でメモリレイテンシーの処理が不完全であった、EA_64BYTEなどの大きいオペランドサイズへの対応がなかった、SIMD操作の高コストが考慮されていなかった等の問題を修正します。

メモリとインストラクション特性を分離して計算し、一貫性のある方法で統合するようにリファクタリング済みです。

変更内容

  • instrsxarch.h: 多くのxarch命令の命令テーブルのperfscore情報(レイテンシー/スループット)を更新。これまでILLEGALであった値の埋め込みやメモリレイテンシー誤上書きの防止。
  • emitxarch.cpp: emitter::getInsExecutionCharacteristicsメソッドを大幅リファクタリング。メモリコストとインストラクションコストを分離して計算し、最後に一貫性のある方法で統合。EA_32BYTE以上のサイズチェック追加。SIMD/浮動小数点ロード時の高コスト反映。
  • emit.h: Perfscoreおよびメモリスループット定義の追加・調整(読取/書込/読み書きヘルパーマクロの導入)。

パフォーマンスへの影響

JITコンパイル時のコスト推定精度向上により、インストラクション選択やスケジューリングの改善が期待されます。特にSIMDおよび浮動小数点メモリ操作、大規模ベクトルサイズ(64バイト以上)での推定精度が向上します。実行時パフォーマンスへの直接的な数値改善は提供されていません。

関連Issue

なし

その他

  • 内部実装(JITコンパイラのパフォーマンス分析ロジック)への変更であり、公開APIには影響しません。
  • 破壊的変更はありません。

#126975 [cDAC] Implement thread-related DacDbi APIs

  • 作成者: @Copilot
  • 作成日時: 2026年04月15日 23:34:28(UTC)
  • マージ日時: 2026年04月19日 04:29:27(UTC)
  • ラベル: area-Diagnostics-coreclr area-Diagnostics-cdac

概要

cDAC(Compact Data Access)ベースの DacDbiImpl に4つのスレッド関連APIを実装します。GetThreadObjectHasUnhandledExceptionGetCurrentCustomDebuggerNotification、および GetCurrentException を Thread コントラクトを使用して実装し、ダンプベースのテストにより新しいAPIがコントラクト提供のスレッド状態と一貫性のある値を返すことを保証します。

変更内容

  • DacDbiImpl.cs: GetThreadObjectHasUnhandledExceptionGetCurrentCustomDebuggerNotification の実装、および GetCurrentException の更新。DEBUG モードでレガシー DAC との検証機能を含む
  • Thread コントラクト拡張 (Thread_1.cs, Thread.cs): スレッドオブジェクトハンドル、未処理例外状態、カスタムデバッガー通知ハンドルを公開する ThreadData の拡張
  • Thread 抽象化 (IThread.cs): ThreadState/ThreadData の拡張、GetThrowableObject をインターフェースから削除
  • cDAC データ記述子 (threads.h, datadescriptor.inc): 最後にスローされた未処理フラグとカスタム通知ハンドルのオフセット追加
  • 定数追加 (CorDbHResults.cs): CORDBG_E_BAD_THREAD_STATE 定数を追加
  • テスト (DumpTests, MockDescriptors): ダンプベースおよびモックベースの統合テストを追加・調整

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 本変更は内部実装(cDAC コントラクト層)の拡張であり、公開APIの変更はありません
  • 既存のレガシー DAC 実装との互換性検証を DEBUG モードで実施することで、移行の信頼性を向上させています

#126924 Clear blob returned by BlobBuilder.ReserveBytes.

  • 作成者: @teo-tsirpanis
  • 作成日時: 2026年04月14日 23:54:00(UTC)
  • マージ日時: 2026年04月19日 15:38:54(UTC)
  • ラベル: area-System.Reflection.Metadata community-contribution

概要

BlobBuilder.ReserveBytesが返すバイト領域をゼロクリアする修正です。プール再利用されたバッファから古いデータが露出する非決定的な動作とデータリークの可能性を排除します。Array.Clearを追加して予約領域を初期化し、呼び出し元が再利用バッファの古いデータを観察しないようにします。

変更内容

  • BlobBuilder.cs: ReserveBytesメソッドで予約バイト領域に対してArray.Clearを呼び出し、ゼロ初期化を実装(src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobBuilder.cs
  • PEBuilder.cs: チェックサム修正初期化の冗長な明示的ゼロ書き込みを削除。ReserveBytesの新しい動作(ゼロ初期化)に依存(src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEBuilder.cs
  • BlobTests.cs: 予約バイトがゼロ初期化されることを検証する回帰テストを追加(src/libraries/System.Reflection.Metadata/tests/Metadata/BlobTests.cs

パフォーマンスへの影響

ReserveBytes呼び出し時にArray.Clear処理が追加されるため、わずかなパフォーマンス低下の可能性があります。ただし、修正前の冗長なゼロ書き込みがPEBuilder内で削除されるため、全体的な影響は限定的と考えられます。

関連Issue

#99244

その他

これはセキュリティ関連の修正です。プール/再利用バッファからの意図しないデータ露出を防止する内部実装の改善であり、公開APIの破壊的変更ではありません。テストコードに実装上の問題があることが指摘されています。


#126168 Reduce helix queue fan-out for library tests on PR builds

  • 作成者: @davidwrighton
  • 作成日時: 2026年03月26日 20:39:42(UTC)
  • マージ日時: 2026年04月19日 15:06:42(UTC)
  • ラベル: area-Infrastructure

概要

PR ビルドにおけるライブラリテストの Helix キュー ファンアウトを削減することで、CI 実行時間を短縮する変更です。複数の OS バージョン/ディストリビューション上でテストを実行していた構成を、PR ビルドでは最小限の OS セットに絞り、追加 OS での検証は定期ビルド(1 日 2 回)で実施するように変更します。

変更内容

eng/pipelines/libraries/helix-queues-setup.yml の変更:

  • Linux x64: PR ビルドで使用するキューを 3 → 1 に削減(Ubuntu 26.04 のみ)

    • AzureLinux 3.0 と CentOS Stream 10 は定期ビルドのみ
  • Windows x64: PR ビルドで使用するキューを 4 → 2 に削減(Windows Server 2025 と Windows Nano Server 1809)

    • Windows Server 2022 と Windows 11 Client は定期ビルドのみ
    • Nano Server は異なる環境(最小構成 OS、GUI なし、異なる API サーフェス)のため保持
  • Browser WASM Windows: PR ビルドで使用するキューを 2 → 1 に削減(Windows Server 2025 のみ)

    • Windows Server 2022 は定期ビルドのみ

パフォーマンスへの影響

PR ビルドの Helix 実行時間を大幅に短縮:

ジョブ 削減前(ワークアイテム) 削減後(ワークアイテム) 削減時間
linux_x64 CoreCLR Libraries Debug 771(3 キュー) 257(1 キュー) ~13h
windows_x64 CoreCLR Libraries Debug 1120(4 キュー) 560(2 キュー) ~9h
browser_wasm_win Mono LibraryTests 406(2 キュー) 203(1 キュー) ~21h
合計削減 ~43h

ライブラリのみの PR ビルドで約 200h → 約 157h への削減が期待できます。

関連Issue

なし

その他

  • ビルド 1351553 の実績に基づいた変更です
  • 定期/CI ビルド、追加プラットフォームビルド、Outerloop テスト、CoreCLR ランタイムテスト、その他プラットフォーム(ARM、musl、macOS 等)は影響を受けません
  • 本 PR は GitHub Copilot の支援で生成されました

#125333 JIT: Avoid resolving def-use conflicts by changing use registers

  • 作成者: @jakobbotsch
  • 作成日時: 2026年03月09日 14:02:46(UTC)
  • マージ日時: 2026年04月19日 08:05:50(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITのLinear Scan Register Allocator (LSRA)で、def-use競合を解決する際にuse側のレジスタ割り当てを変更する慣行を廃止し、代わりに明示的なコピーを挿入する方式に変更します。これにより、LSRAとコード生成間の曖昧な暗黙的契約を排除し、より堅牢な実装にします。同時に、GT_CATCH_ARGのコード生成バグとマルチレジスタ定義の問題を修正します。

変更内容

  • lsrabuild.cpp: LinearScan::resolveConflictingDefAndUseを簡潔化。use側レジスタ割り当てを変更するCase 1/4を削除し、def側のみ修正する4つのケースに統一
  • lsra.h/lsra.cpp: LsraDumpEvent列挙型を数値ベース(CASE1-CASE6)から説明的な名前に変更、デバッグダンプ処理を更新
  • codegenlinear.cpp: GT_CATCH_ARGのコード生成を修正(レジスタ値を正しく生成)
  • codegenxarch.cpp他: シフト演算などでキル制約の追加挿入を削除
  • gentree.h他: マルチレグ定義の統制強化

パフォーマンスへの影響

影響なし(明示的コピー挿入により一部ケースでコード生成が増える可能性がありますが、提供情報には具体的なベンチマーク結果がないため、詳細は不明)

関連Issue

#125432 #125685

その他

  • コンパイラ内部実装(JIT)の変更で、公開APIへの影響なし
  • LSRAとコード生成間の契約モデルを明確化することで、将来的な保守性向上を期待
  • 修正に伴い、複数アーキテクチャ(x86/ARM/LoongArch64/RISC-V)のコード生成ロジックを整理

#124967 Fix IndexOf upper-bound guard in ImmutableArray/List

  • 作成者: @prozolic
  • 作成日時: 2026年02月27日 13:58:19(UTC)
  • マージ日時: 2026年04月19日 17:18:38(UTC)
  • ラベル: area-System.Collections community-contribution

概要

ImmutableArray<T>ImmutableArray<T>.BuilderImmutableList<T>.NodeIndexOfメソッドにおける上限検証を修正しました。startIndexの上限チェックを< Countから<= Countに変更し、Array.IndexOfの動作(count == 0の場合にindex == Countを許可)に合わせました。これは#124560で修正されたLastIndexOfの同様の問題に続くフォローアップです。

変更内容

  • ImmutableArray.cs: IndexOfstartIndex上限検証を< Lengthから<= Lengthに変更
  • ImmutableArray.Builder.cs: IndexOfstartIndex上限検証を< Countから<= Countに変更
  • ImmutableList.Node.cs: IndexOfの上限チェックを追加(単一の>= 0チェックから>= 0 && <= Countに拡張)、冗長なcount上限検証も追加
  • テストファイル群: 例外のパラメータ名検証とエッジケーステストを追加、Array.IndexOfとの一貫性をテストするIndexOfConsistentWithArrayテストを追加

パフォーマンスへの影響

影響なし

関連Issue

#124968(修正対象)、#124560(関連する過去の修正)

その他

  • この変更は公開API(イミュータブルコレクション)の動作仕様修正であり、破壊的変更ではなく、標準的なArray.IndexOfとの動作統一です
  • パラメータ名の例外検証も強化され、開発時のデバッグが容易になります

#111439 Add whitespace handling methods to MemoryExtensions

  • 作成者: @AlexRadch
  • 作成日時: 2025年01月14日 21:50:40(UTC)
  • マージ日時: 2026年04月19日 18:43:27(UTC)
  • ラベル: area-System.Memory new-api-needs-documentation community-contribution

概要

MemoryExtensionsクラスに効率的なホワイトスペース処理メソッドを追加します。新しいメソッドContainsAnyWhiteSpaceIndexOfAnyWhiteSpaceLastIndexOfAnyWhiteSpaceを導入し、IsWhiteSpaceメソッドをSearchValues.WhiteSpacesを利用する形に最適化しました。

変更内容

  • System.Memory.cs: 公開APIとして5つのホワイトスペース関連メソッドの署名を追加
  • MemoryExtensions.Globalization.cs: ホワイトスペース処理メソッドの実装を追加(42行追加)
    • ContainsAnyWhiteSpace: ホワイトスペース文字を含むか判定
    • IndexOfAnyWhiteSpace: 最初のホワイトスペース位置を検索
    • LastIndexOfAnyWhiteSpace: 最後のホワイトスペース位置を検索
    • IsWhiteSpaceメソッドをSearchValues.WhiteSpacesを使用する形に最適化
  • WhiteSpace.cs: 新しい機能を検証するテストケース260行を追加

パフォーマンスへの影響

SearchValues.WhiteSpacesを活用することで、ホワイトスペース検索の性能向上が期待できます。特に大規模なデータセットに対して効率的な検索が実現されます。具体的なベンチマーク結果は提供されていません。

関連Issue

#77959ContainsAnyExceptWhiteSpaceを除く部分的な実装)

その他

なし


目次