Pull Request on 2026年05月25日

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

注意点

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



#128561 Add jit.instructions.md for JIT folder

  • 作成者: @EgorBo
  • 作成日時: 2026年05月25日 14:59:29(UTC)
  • マージ日時: 2026年05月25日 19:33:47(UTC)
  • ラベル: area-CodeGen-coreclr

概要

CoreCLR JITフォルダ(src/coreclr/jit/**)向けのGitHub Copilot指示ファイルを追加し、JIT PRのレビューガイダンスをカスタマイズするもの。JIT改善のPRに対して不要なテスト追加の要求を削減することを目的としています。

変更内容

  • .github/instructions/jit.instructions.mdを新規作成
    • スコープ: src/coreclr/jit/**に限定
    • JIT特有のコードレビューガイドラインを定義
    • テスト追加リクエストに関する指示を含む

パフォーマンスへの影響

影響なし(ドキュメント・メタデータのみの変更)

関連Issue

なし

その他

  • GitHub Copilotの自動指示読み込み機能に依存しており、実装時点では確実な動作が保証されていない状況です
  • 作成者により、JIT関連のPRレビューにおけるCopilotレビュアー(CCR)からの冗長なテスト要求削減が主な目的と明示されています
  • フォルダスコープ指示ファイルの実装例として機能します

#128551 Improve allocation of buffer when obtaining TCP/UDP connection/listeners

  • 作成者: @mrek-msft
  • 作成日時: 2026年05月25日 09:17:45(UTC)
  • マージ日時: 2026年05月25日 13:49:14(UTC)
  • ラベル: area-System.Net

概要

BSD sysctl呼び出しでTCP/UDP接続情報を取得する際のバッファ割り当てロジックを改善しました。リトライ時にestimatedSizeではなく、倍にされたtmpEstimatedSizeを使用することで、バッファサイズと実際に必要なサイズのミスマッチを防ぎます。

変更内容

  • src/native/libs/System.Native/pal_networkstatistics.c:
    • net.inet.tcp.pcblist sysctl のリトライ時、バッファ割り当てを古い estimatedSize から倍にされた tmpEstimatedSize に変更
    • net.inet.udp.pcblist sysctl のリトライ時、バッファ割り当てを古い estimatedSize から倍にされた tmpEstimatedSize に変更

パフォーマンスへの影響

影響なし。本修正は不正なバッファサイズによるリトライループの無限再実行やメモリアクセス違反を防止するもので、正常系では同じ効率で動作します。

関連Issue

なし

その他

この修正は System.Net.NetworkInformation の TCP/UDP接続情報取得機能(GetTcpConnectionsAsync、GetUdpTableAsync など)に影響します。対象プラットフォームはBSDベースのOSです。


#128548 [clrinterp] Remove wrong assertion

概要

CoreCLRインタープリタコンパイラの非同期サスペンドデータ修正ロジックにおいて、非同期呼び出しの戻り値が後でグローバル変数に昇格される可能性を考慮し、不正なアサーションを削除しました。PR #128403で誤って追加されたアサーションを修正します。

変更内容

  • src/coreclr/interpreter/compiler.cpp: InterpCompiler::UpdateLocalIntervalMaps()内のassert(!m_pVars[varIndex].global)を削除
  • 未使用の非同期戻り値無効化ケースを、戻り値変数がグローバル変数でなく、かつliveStart == liveEndの場合のみに適用するよう条件を絞り込み

パフォーマンスへの影響

影響なし

関連Issue

#128403(このPRの原因となった変更)

その他

  • インタープリタにおいて、呼び出しの戻り値は通常ローカル変数として割り当てられますが、IL スタック上に残され別のベーシックブロックで使用される場合、グローバル変数に昇格される可能性があります
  • 戻り値がグローバル変数の場合は特別な処理は不要です

#128537 Fix invalid IL test

概要

JIT Methodical テスト (refany/lcs.il) が無効なILを出力していた問題を修正します。テスト内で整数値(ceqの結果)とオブジェクト参照(System.Type)を誤って比較していたため、JIT内部で無効なIRが生成されていました。

修正により、GetTypeFromHandleの結果ペアを先に比較してから次のペアを比較する正しい評価順序に改めます。

変更内容

  • src/tests/JIT/Methodical/refany/lcs.il: ILの比較演算の順序を修正。混合型比較(整数とオブジェクト)を回避するため、早期にceqを挿入し、型比較を正しく構造化しました。

パフォーマンスへの影響

影響なし(テスト修正のみ)

関連Issue

なし

その他

本修正は主にrefanytype引数に関するテストケースの検証が目的と考えられます。無効なILの生成を防ぐことで、JIT処理の安定性向上につながります。


#128529 [wasm] Bump chrome for testing - linux: 148.0.7778.178, windows: 149.0.7827.22

概要

WebAssembly (WASM) テスト環境で使用する Chrome for Testing のバージョンをアップデートしています。Linux環境では148.0.7778.178に、Windows環境では149.0.7827.22にバンプされています。

変更内容

  • eng/testing/BrowserVersions.props: Chrome for Testing のバージョン設定を更新
    • Linux: 148.0.7778.178
    • Windows: 149.0.7827.22

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは自動化されたバージョン管理ツール(github-actions[bot])による更新です。WASM テスト基盤のメンテナンス関連の変更です。


#128526 [cDAC] Remove irrelevant method table test and update relevant one

  • 作成者: @rcj1
  • 作成日時: 2026年05月23日 19:20:17(UTC)
  • マージ日時: 2026年05月25日 20:33:54(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact Data Access Component)のメソッドテーブルユニットテストから、無効な状態を構築していたテストケースを削除し、有効なテストケースを修正するものです。グローバルシングルトンのContinuation EEClassがnullまたはゼロである状態で非メタデータContinuation MethodTableを検証しようとするテストは、矛盾した無効なMethodTableを構築するため、削除またはシングルtonEEClassを追加して修正されました。

変更内容

  • src/native/managed/cdac/tests/MethodTableTests.cs: IsContinuationWithoutMetadataのテスト範囲外の無効なContinuation MethodTableシナリオを削除。グローバルシングルトンEEClassの不整合な状態を避けるため、テストの一部を削除し、別のテストにシングルトンEEClassを追加。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは主にテストの妥当性と正確性の向上を目的としており、IsContinuationWithoutMetadataの検証ロジック自体への変更ではなく、テストスイートの品質向上に関するものです。


#128518 [cDAC] Restore Frame-walk fallback in Thread.GetContext

  • 作成者: @Copilot
  • 作成日時: 2026年05月23日 05:34:26(UTC)
  • マージ日時: 2026年05月25日 05:55:24(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC(Compact Data Access Component)の Thread.GetContext メソッドに Frame-walk フォールバック機能を復元しました。データターゲットが GetThreadContext を実装していない場合、スレッドの Frame チェーンをウォークしてスレッドコンテキストを導出します。これは以前削除されたネイティブ側の実装と同等の処理を cDAC に取り込むものです。

変更内容

  • Thread_1.cs: TryGetThreadContext が失敗した場合、スレッドの Frame チェーンをウォークしてコンテキストを復元

    • InterpreterFrame の場合は、既存の UpdateContextFromCurrentFrame を経由して top InterpMethodContextFrame からコンテキストを取得
    • その他の Frame については、クリアされたコンテキストを更新し、SP と PC がともに 0 でない最初のフレーム(RedirectedThreadFrame、InlinedCallFrame、DynamicHelperFrame など)を採用し、RawContextFlags = FullContextFlags を設定
    • usable なコンテキストを提供するフレームがない場合は、ゼロ化されたコンテキストを返す(スレッドが managed コード実行中でない)
  • docs/design/datacontracts/Thread.md: GetContext のフォールバック動作を文書化

パフォーマンスへの影響

影響なし

関連Issue

#128518

その他

  • 本変更は内部実装(cDAC)に対するもので、公開API の変更ではありません
  • ネイティブ側の対応は別途 PR で実施されています
  • Frame-walk フォールバックは、OS スレッドコンテキストが入手不可能なデータターゲットに対する互換性復元です

#128325 Fix GCHandle leak in OSX SafeDeleteSslContext

概要

macOS SecureTransport PALにおいて、SafeDeleteSslContext.SslSetConnectionで割り当てられたGCHandleがリークしていた問題を修正します。GCHandleの所有権をSafeSslHandleに移行し、ネイティブSSLContextが完全に解放されるReleaseHandle()内でのみ解放することで、ライフタイムを正しく管理します。

変更内容

  • SafeDeleteSslContext.cs: SslSetConnectionで割り当てた接続用GCHandleの所有権をSafeSslHandleに転送し、ネイティブコールバックとの競合状態を回避
  • Interop.Ssl.cs: SafeSslHandleにGCHandle保持フィールドを追加し、ReleaseHandle()内で解放するロジックを実装

パフォーマンスへの影響

メモリリーク修正により、SSL接続ごとにGCHandle table slotが不正に消費されることがなくなります。長時間実行されるアプリケーションやSSL接続を多数生成する環境での改善を期待できます。

関連Issue

#128136

その他

  • ローカルテスト(osx-arm64)でSystem.Net.Security.Unit.Tests(124テスト)およびSystem.Net.Security.Tests機能テスト(4964テスト)がすべてパス
  • 修正前はSslStreamSniTest.SslStream_ServerCallbackAndLocalCertificateSelectionSet_ThrowsでDebug.Assertクラッシュが確認されていた
  • GitHub Copilotの支援で開発されたPR

#127768 Remove RequiresUnsafeAnalyzer and update the fixer

概要

ILLinkのRoslyn分析ツールからRequiresUnsafeAnalyzerとUnsafeMethodMissingRequiresUnsafeAnalyzerを削除し、対応するコードフィックスを整理しています。これはRoslynの新しい分析機能へ機能移行するための変更です。

変更内容

  • RequiresUnsafeAnalyzer削除: ILLink.RoslynAnalyzer内のRequiresUnsafeAnalyzer.csと関連する診断ID、テストを削除
  • UnsafeMethodMissingRequiresUnsafeAnalyzer削除: UnsafeMethodMissingRequiresUnsafeAnalyzer.csと対応テストを削除
  • コードフィックス更新: RequiresUnsafeCodeFixProvider.csを拡張し、UnsafeMethodMissingRequiresUnsafeFixProviderを統合(83行を削除)
  • リソース整理: SharedStrings.resx、Resources.resx、MSBuildPropertyOptionNames.csから不要な診断メッセージとプロパティを削除
  • テスト削除: RequiresUnsafeAnalyzerTests.cs、UnsafeMethodMissingRequiresUnsafeTests.csを削除し、RequiresUnsafeCodeFixTests.csを縮小

パフォーマンスへの影響

影響なし(機能削除に伴う変更であり、パフォーマンス評価対象外)

関連Issue

#125800
#127761
dotnet/roslyn#81207

その他

  • ILLink内で重複していた分析・フィックス機能をRoslyn側に統一する変更です
  • 分析ロジック自体はRequiresUnsafeCodeFixProvider側に統合され、機能は継続します
  • バージョン詳細ファイル(eng/Version.Details.*)も更新されており、依存コンポーネントの版上げが含まれています

#127762 Make Async Profiler tests compatible with single threaded runtime.

概要

非同期プロファイラーテストのシングルスレッドランタイム(WASM等)への対応を実施しました。テストをマルチスレッド対応不要なテストと必須なテストに分割し、タスクIDとマーカーフレームのマッピングを使用した堅牢性向上、Native AOTの失敗修正、メタデータイベントからwrapper IPを削除(rundownイベントでの構築に変更)を行いました。結果として、CoreCLRとNativeAOTで全テスト実行可能、CoreCLR WASM シングルスレッド構成で48個中38個のテストが実行可能になりました。

変更内容

  • AsyncProfiler.CoreCLR.cs: wrapper IPのメタデータイベント処理の変更(-15行、+20行)
  • AsyncProfiler.cs: wrapper IP関連の処理削除(-15行、+3行)
  • AsyncProfilerTests.cs: テストスイートの大幅な改善
    • マルチスレッド対応不要なテストと必須なテストへの分割
    • タスクID→マーカーフレームマッピングによる特定イベントの絞込
    • Native AOT向けの失敗修正
    • テスト数が増加(883行→1188行、計2071行)

パフォーマンスへの影響

影響なし

関連Issue

#127762

その他

  • メタデータイベント内のwrapper IPは削除されましたが、wrapper数はメタデータイベントに保持、wrapper IPはrundownイベントを通じて構築する設計に変更(パーサー側の対応が必要)
  • WASM環境など、Native IP→Method Name情報が不足する環境での対応を強化しました

目次