Pull Request on 2026年02月06日

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

注意点

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


目次

  1. #124090 Delete GetFriendlyErrorCodeString and HAVE_STRERRORNAME_NP
  2. #124084 [release/10.0] Fix SampleType field in ThreadSample event from Sample Profiler
  3. #124057 Update dogfooding.md to target .NET 11
  4. #124049 Remove dead thread suspension code from PAL
  5. #124037 Disable failing ToString_Async test on Apple mobile with CoreCLR R2R and interpreter
  6. #124023 Run the issue-labeler over pull requests using polling
  7. #124019 Fix SampleType field in ThreadSample event from SampleProfiler
  8. #124018 [RyuJit/WASM] Simple RA
  9. #124013 FreeBSD: Add suffix numbering for OpenSSL3.5
  10. #124012 Add \[IgnoreILFailure\] support to ILLink test framework.
  11. #124010 Display method variants in R2RDump
  12. #124006 [wasm][coreclr] Add scripts to generate the helpers
  13. #123975 Add R2R helpers for AllocContinuation, AllocContinuationMethod, and AllocContinuationClass.
  14. #123961 Add testing for native IDispatch custom marshaller scenario.
  15. #123913 Add an azdo failure skill
  16. #123895 [release/10.0] Source code updates from dotnet/dotnet
  17. #123754 Vectorize TensorPrimitives.BitIncrement/BitDecrement for Half using ushort operations
  18. #123719 Fix ZipArchive Update mode rewriting unchanged archives on Dispose
  19. #123654 [release/11.0-preview1] Source code updates from dotnet/dotnet
  20. #123644 [AsyncV2] Runtime support for breakpoints and stepping
  21. #123643 Add support for encoding Continuation types with specific layouts in ReadyToRun
  22. #123554 [RyuJit] Remove indentation from target*.h files
  23. #123500 JIT: Run full liveness in MinOpts for async

#124090 Delete GetFriendlyErrorCodeString and HAVE_STRERRORNAME_NP

  • 作成者: @Copilot
  • 作成日時: 2026年02月06日 15:02:29(UTC)
  • マージ日時: 2026年02月06日 19:12:02(UTC)
  • ラベル: area-PAL-coreclr

概要

未使用のデッドコード GetFriendlyErrorCodeString 関数とその関連する HAVE_STRERRORNAME_NP CMake設定を削除するPRです。コードベース内に呼び出しサイトが存在しないため、安全に削除できます。合計62行のコードを削除し、codebaseのメンテナンス性を向上させます。

変更内容

ファイル 変更内容
src/coreclr/pal/src/misc/utils.cpp GetFriendlyErrorCodeString の実装を削除(-58行)
src/coreclr/pal/src/include/pal/utils.h GetFriendlyErrorCodeString の宣言を削除(-2行)
src/coreclr/pal/src/configure.cmake strerrorname_np 機能チェックと HAVE_STRERRORNAME_NP 定義を削除(-1行)
eng/native/tryrun.browser.cmake ブラウザtryruncacheから HAVE_STRERRORNAME_NP エントリを削除(-1行)

パフォーマンスへの影響

影響なし。デッドコードの削除のため、パフォーマンスへの直接的な影響はありません。ただしビルド時間がわずかに短縮される可能性があります(CMakeの機能検出と不要な条件分岐の削除)。

関連Issue

なし

その他

  • PAL(Platform Abstraction Layer)の内部実装に限定した変更
  • 公開APIへの影響なし
  • 破壊的変更ではなく、純粋な内部最適化
  • CMakeのクロスコンパイル設定(特にブラウザ/WebAssembly)も同期して更新され、整合性が取れている

#124084 [release/10.0] Fix SampleType field in ThreadSample event from Sample Profiler

  • 作成者: @steveisok
  • 作成日時: 2026年02月06日 12:47:19(UTC)
  • マージ日時: 2026年02月06日 18:42:26(UTC)
  • ラベル: Servicing-approved area-VM-coreclr

概要

.NET 9で導入されたリグレッションを修正するバックポート。SampleProfilerのThreadSampleイベントにおいて、SampleTypeフィールドがマネージドコード実行中でも常にEP_SAMPLE_PROFILER_SAMPLE_TYPE_EXTERNALを報告していた問題を解決します。新しいスレッド状態フラグTS_SuspensionTrappedを導入し、スレッドが協調的(cooperative)モード中に自発的に一時停止したかどうかを追跡することで、正確なプロファイリングデータを提供するようになります。

変更内容

  • threads.h: 新スレッド状態フラグTS_SuspensionTrappedを追加(未使用ビット0x00000002を使用)。不要になったm_gcModeOnSuspensionフィールドとそのアクセッサメソッドを削除
  • threadsuspend.cpp: スレッドが協調モードで一時停止時にTS_SuspensionTrappedをセット、再開時にクリア
  • ep-rt-coreclr.cpp: 削除されたGetGCModeOnSuspension()の代わりにHasThreadState(TS_SuspensionTrapped)を使用してサンプル型を判定
  • amd64/asmconstants.h、arm64/asmconstants.h: Thread構造体サイズ削減に伴い、m_pInterpThreadContextオフセットを8バイト調整

パフォーマンスへの影響

影響なし - メモリ効率むしろ向上。m_gcModeOnSuspensionフィールド(8バイト)の削除により、Thread構造体サイズが8バイト削減されます。フラグ判定のオーバーヘッドは無視できるレベルです。

関連Issue

  • Fixes #123996
  • 関連PR: #124019(元の修正)
  • リグレッション原因: commit 00a897369db(NativeAoTからCoreClrへのSuspendAllThreadsポート)

その他

  • リスク: 低 - 変更は最小限で自己完結型
  • テスト: 手動テスト実施済み
  • 互換性: 破壊的変更なし。プラットフォーム固有のアセンブリ定数調整のみ
  • 顧客影響: diagnostics toolsを使用しているお客様のプロファイリングデータが正確になります

#124057 Update dogfooding.md to target .NET 11

  • 作成者: @Copilot
  • 作成日時: 2026年02月05日 18:57:49(UTC)
  • マージ日時: 2026年02月06日 01:19:47(UTC)
  • ラベル: 指定なし

概要

dogfooding.md ドキュメントを .NET 9 から .NET 11 に統一する更新です。main ブランチが現在 .NET 11 をターゲットしているため、ドキュメント全体を .NET 11 の pre-GA バージョンに一貫性を持たせています。

変更内容

docs/project/dogfooding.md

  • NuGet/Azure DevOps フィード URL:dotnet9dotnet11 に更新
  • SDK バージョン:11.0.100-alpha.1.24556.7 に統一
  • ランタイムバージョン:11.0.0-alpha.1.24556.3 に統一
  • ダウンロードリンク:/9.0/daily//11.0/daily/ に変更
  • NETSDK1045 エラーメッセージテキスト:.NET 11.0 を参照するように更新
  • ランタイム識別子:win10-x64win-x64 に現代化

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更は、プロジェクト内部向けの開発ドキュメント(dogfooding documentation)の統一更新です。開発者が .NET 11 pre-GA 環境でテストする際に参照するドキュメントの一貫性確保を目的としています。すべてのサンプルコマンド、バージョン番号、フィード URL が .NET 11 alpha スキーム に統一されています。


#124049 Remove dead thread suspension code from PAL

  • 作成者: @Copilot
  • 作成日時: 2026年02月05日 15:04:35(UTC)
  • マージ日時: 2026年02月06日 07:11:52(UTC)
  • ラベル: area-PAL-coreclr

概要

PAL(Platform Abstraction Layer)から約1,200行の不要なスレッド制御コードを削除し、単一統一されたpthread mutex基盤の実装に統一しました。複数の古い同期メカニズム(POSIX semaphore、SysV semaphore、pthread condition variable、spinlock)と関連インフラをクリーンアップし、コードベースを大幅に簡素化しています。

変更内容

  • threadsusp.cpp: スピンロック実装、PostOnSuspendSemaphore/WaitOnSuspendSemaphoreなどのセマフォベース関数(~450行)削除
  • thread.cpp: スレッド作成/破棄時のスレッドリスト管理、errno保存コード削除(~70行)
  • process.cpp: PROCAddThread、PROCRemoveThread、スレッドリスト管理関数、グローバル変数(pGThreadList、g_dwThreadCount)削除(~268行)
  • threadsusp.hpp: セマフォメンバー変数、m_fPending、m_fSuspendedForShutdownなどの状態追跡メンバ削除(~220行)
  • process.h/procprivate.hpp: 関連する関数宣言削除
  • configure.cmake: HAS_POSIX_SEMAPHORES、PTHREAD_CREATE_MODIFIES_ERRNO、SEM_INIT_MODIFIES_ERRNOなどのプラットフォーム定義削除
  • CMakeファイル群: キャッシュ値設定削除(tryrun.cmake、tryrun_ios_tvos.cmake、tryrun.browser.cmake)

パフォーマンスへの影響

影響なし(内部実装の簡素化のみ)

デッドコード削除のため、実行時パフォーマンスへの直接的な影響はありません。むしろバイナリサイズが削減される見込みです。単一のpthread mutex実装に統一することで、メンテナンス性向上とコンプリケーション削減により、将来的な最適化の余地が生まれます。

関連Issue

提供情報なし

その他

  • 13ファイルにおいて全ビルド成功
  • 累積約1,200行のデッドコード削除により、PAL実装の保守性が大幅に向上
  • 複数のプラットフォーム固有のセマフォ実装に対応していた複雑な条件付きコンパイルが簡素化
  • 変更は内部実装のみで、公開API互換性への影響なし

#124037 Disable failing ToString_Async test on Apple mobile with CoreCLR R2R and interpreter

  • 作成者: @kotlarmilos
  • 作成日時: 2026年02月05日 10:54:59(UTC)
  • マージ日時: 2026年02月06日 01:43:56(UTC)
  • ラベル: area-ExceptionHandling-coreclr os-ios runtime-async

概要

Apple モバイルプラットフォーム上で CoreCLR R2R およびインタープリターモードにおいて、ToString_Async テストが失敗する問題に対応するPRです。該当するテストを無効化し、トラッキングissue #124044 で問題の根本原因の解決を追跡する予定です。

変更内容

  • src/libraries/System.Diagnostics.StackTrace/tests/StackTraceTests.cs

    • ToString_Async テストに Apple モバイル + CoreCLR R2R/インタープリターモード向けのスキップ属性を追加(+1行)
  • src/coreclr/vm/debugdebugger.cpp

    • デバッグ関連のコード調整(+11/-10行、合計21行)

パフォーマンスへの影響

影響なし。テスト実行時の対象外化のみで、ランタイムパフォーマンスに直接的な影響はありません。

関連Issue

  • #124044(Apple モバイルプラットフォーム上での ToString_Async テスト失敗の追跡issue)

その他

このPRはテスト無効化による一時的な対応です。根本原因はトラッキングissue #124044 で別途解決される予定です。Apple モバイル環境(iOS/tvOS など)でのみ問題が発生しており、他のプラットフォームへの影響はありません。


#124023 Run the issue-labeler over pull requests using polling

  • 作成者: @jeffhandley
  • 作成日時: 2026年02月05日 01:55:31(UTC)
  • マージ日時: 2026年02月06日 01:21:32(UTC)
  • ラベル: area-Infrastructure

概要

Copilot作成のPull Requestでissue-labelerワークフローが実行されない問題を解決するため、ポーリング機構を導入しました。5分ごとのcronスケジュールで未ラベル化されたPRを検出し、issue-labelerを実行します。これにより、Copilot PRやGitHubサービス中断時にラベル付けが漏れたPRも対象となります。

変更内容

  • .github/workflows/labeler-predict-pulls.yml
    • cron トリガー追加(5分ごと)
    • ポーリングロジック実装:開かれているかつ未ラベル化されたPRを対象に、最後のポーリング実行時刻以降の更新分を収集
    • workflow_dispatch イベント更新:PR番号リストが空の場合でもポーリング実行をトリガー可能に

パフォーマンスへの影響

ワークフロー実行頻度が増加します。5分ごとのcron実行により、定期的にPR一覧を検索・フィルタリングする処理が発生しますが、既にラベル化済みのPRは除外されるため、実質的な処理負荷は最小限に抑えられています。

関連Issue

dotnet/issue-labeler#105 - Pull Request Labeling does not run automatically for Copilot PRs

その他

本アプローチが有効であることが確認されれば、他のリポジトリにも同様の修正を展開予定です。Copilot作成PRは通常のPRより権限が制限されるため、このポーリング方式による補完的なラベリング実行が必要な対応です。


#124019 Fix SampleType field in ThreadSample event from SampleProfiler

  • 作成者: @steveisok
  • 作成日時: 2026年02月04日 23:19:58(UTC)
  • マージ日時: 2026年02月06日 04:51:30(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

ThreadSample イベントの SampleType フィールドが常に EP_SAMPLE_PROFILER_SAMPLE_TYPE_EXTERNAL を報告していた問題を修正。.NET 9 で SuspendAllThreads を NativeAOT から CoreCLR に移植した際のリグレッション。修正により、マネージドコード実行中のスレッドは RareDisablePreemptiveGC で自身の GC モード(マネージド/外部)を保存するようになり、サンプラーがより正確なサンプルタイプを報告可能に。

変更内容

  • ep-rt-coreclr.cpp: サンプラーがスレッドの GC モード情報を取得するロジックを簡略化(スレッド反復処理の削除)
  • threadsuspend.cpp: スレッド自動サスペンション時に GC モード状態を記録
  • threads.h: 既存のスレッド状態管理コードを整理(22行削除)
  • asmconstants.h: 各アーキテクチャ(amd64, arm, arm64, riscv64)の定数調整に伴う微調整

パフォーマンスへの影響

改善: SuspendAllThreads 処理がスケーラビリティ向上。従来は全スレッドを反復走査していたが、修正後は自発的にサスペンドするマネージドコード実行中のスレッドのみが GC モード情報を保存。多コアマシンでの性能低下を軽減(pay-for-play 設計)。

関連Issue

#123996(SampleType フィールドの不正な報告)

その他

このリグレッションは .NET 9 の SuspendAllThreads ポーティングに起因。修正は IsTrappingThreadsForSuspension チェック時の RareDisablePreemptiveGC 内で各スレッドが主体的に状態保存を行うアプローチで、スレッド同期時の効率性を維持。


#124018 [RyuJit/WASM] Simple RA

  • 作成者: @SingleAccretion
  • 作成日時: 2026年02月04日 21:49:28(UTC)
  • マージ日時: 2026年02月06日 20:44:39(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr community-contribution

概要

WebAssembly(WASM)ターゲット向けのレジスタ割り当て(RA)アルゴリズムを簡素化・改善するPRです。追跡対象の各ローカル変数に仮想レジスタを割り当て、その仮想レジスタを物理的なWASM局所変数にマッピングするシンプルで正確性の高い設計を導入しました。将来的には、境界チェック用の内部レジスタなどの追加機能の基盤となります。

変更内容

主要な変更は以下の通りです:

  • regallocwasm.cpp/h: レジスタ割り当てロジックの大幅な拡張(285行追加)。新しいアルゴリズムの実装により、仮想レジスタと物理レジスタ(WASM局所変数)のマッピングを管理
  • registeropswasm.cpp/h: レジスタ操作処理の強化(53行追加)。WASM局所変数の生成・使用を適切に処理
  • emitwasm.cpp: WASM命令生成ロジックを更新(30行追加)。割り当てられたレジスタに対応した正確なコード生成
  • compiler.h/lclvars.cpp: ローカル変数追跡機構の改善。仮想レジスタ管理構造の追加
  • codegencommon.cpp: JIT全体の共通コード生成部分を微調整

パフォーマンスへの影響

直接的なパフォーマンス測定値の提示なし。ただし、以下の点が考慮されます:

  • 改善期待値: シンプルで正確なRA設計により、将来的な最適化(境界チェック内部レジスタ対応など)による性能向上の基盤構築
  • 現状: WASM出力コードの正確性向上に焦点。ローカル変数管理の効率化により、JIT処理時間への顕著な悪化は想定されない
  • 懸念点: 現段階では追加的なレジスタ管理オーバーヘッドが発生する可能性

関連Issue

なし

その他

  • 設計方針: 「シンプルで容易に正確性が検証できるアルゴリズム」を優先。段階的な最適化を念頭に置いた実装
  • 対象アーキテクチャ: WebAssemblyランタイム専用の変更。x86/ARM等の既存アーキテクチャへの影響なし
  • 互換性: 内部JIT実装の変更のため、外部API互換性への影響はなし

#124013 FreeBSD: Add suffix numbering for OpenSSL3.5

  • 作成者: @sec
  • 作成日時: 2026年02月04日 19:06:54(UTC)
  • マージ日時: 2026年02月06日 12:37:19(UTC)
  • ラベル: area-System.Security os-freebsd community-contribution

概要

FreeBSD 15.0で導入されたOpenSSL 3.5.4に対応するため、OpenSSLライブラリの動的読み込み処理にサフィックス番号付けを追加しました。これにより、複数のOpenSSLバージョンが共存する環境での正確なライブラリ解決が可能になります。

変更内容

  • opensslshim.c: OpenSSLライブラリの動的読み込み時にサフィックス番号(3.5など)を付与するロジックを追加
    • ライブラリ名の解決順序を調整(+16/-7行)
    • FreeBSD環境での複数OpenSSLバージョン対応

パフォーマンスへの影響

影響なし(ロード時の初期化処理での変更のため、実行時パフォーマンスへの影響なし)

関連Issue

なし

その他

  • 互換性: FreeBSD 15.0に導入されたOpenSSL 3.5.4への対応
  • プラットフォーム固有: FreeBSD環境のみに影響する変更
  • System.Security.Cryptography: 暗号化ライブラリの基盤となるネイティブOpenSSLバインディングの修正
// opensslshim.cでのライブラリロード時にサフィックス付きの
// OpenSSLライブラリ名(例: libssl.so.3.5)を試行

#124012 Add [IgnoreILFailure] support to ILLink test framework.

  • 作成者: @mrvoorhe
  • 作成日時: 2026年02月04日 19:06:33(UTC)
  • マージ日時: 2026年02月06日 18:14:52(UTC)
  • ラベル: linkable-framework community-contribution area-Tools-ILLink

概要

ILLink テストフレームワークに [IgnoreILFailure] 属性を追加し、特定の IL 検証エラーを選択的に無視できるようにしました。これにより、System.Private.CoreLib の IL 修正時にオフセット変更によって引き起こされる検証エラーを個別にフィルタリングできるため、アセンブリ全体の IL 検証を無効化する必要がなくなります。

また、デバッグ効率化のため ILVerifierResult[DebuggerDisplay] 属性も追加しました。

変更内容

  • IgnoreILFailureAttribute.cs: [IgnoreILFailure] 属性の新規定義(メッセージコンテンツベースで IL 検証エラーをフィルタリング)
  • ILChecker.cs: 属性に基づいた IL 検証エラーのフィルタリング処理を実装(+38行)
  • ILVerifierResult.cs: [DebuggerDisplay] 属性と System.Diagnostics 名前空間の追加(+2行)
  • ILVerificationErrorsCanBeIgnored.cs: 新機能のテストケース実装(+23行)
  • TestFrameworkTests.g.cs: 生成されたテストフレームワークコード更新(+6行)

パフォーマンスへの影響

影響なし。本変更はテストフレームワークの IL 検証フィルタリング機能の追加であり、ランタイムパフォーマンスには影響しません。

関連Issue

なし

その他

  • 本変更は ILLink テストツール向けで、製品コード自体への変更ではありません
  • Unity での運用ニーズに基づいた実装で、限定的な利用を想定した「粗い仕組み」と作成者が述べています
  • [DebuggerDisplay] の追加は IL 検証関連デバッグの作業効率向上に寄与します

#124010 Display method variants in R2RDump

  • 作成者: @jtschuster
  • 作成日時: 2026年02月04日 18:51:57(UTC)
  • マージ日時: 2026年02月06日 23:41:33(UTC)
  • ラベル: area-R2RDump-coreclr

概要

R2RDump(Ready2Run ダンプツール)で、メソッドシグネチャにプレフィックスを追加し、メソッドエントリーポイントテーブルのダンプ出力において、タスク返却メソッド、async メソッド、async resumption stub などの異なるメソッドバリアントを識別可能にしました。

変更内容

  • PgoInfoKey.cs: コンストラクタに string[] signaturePrefixes パラメータを追加(+10/-2)
  • ReadyToRunMethod.cs: メソッドシグネチャプレフィックス処理に対応するロジックを追加(+11/-0)
  • ReadyToRunReader.cs: メソッドバリアント検出とプレフィックス適用のロジックを実装(+95/-109)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

互換性への注意: PgoInfoKey はパッケージ化されたアセンブリの公開APIであり、コンストラクタシグネチャに必須パラメータ signaturePrefixes が追加されています。Copilot のレビューでは、外部ソースコンシューマーの互換性を保つため、従来のコンストラクタをオーバーロードとして残すか、signaturePrefixes をオプショナルにすることを検討するよう指摘されています。


#124006 [wasm][coreclr] Add scripts to generate the helpers

  • 作成者: @radekdoulik
  • 作成日時: 2026年02月04日 15:11:09(UTC)
  • マージ日時: 2026年02月06日 20:40:09(UTC)
  • ラベル: arch-wasm area-Infrastructure-coreclr

概要

WebAssemblyにおけるCoresCLRの開発効率を向上させるために、C++ヘルパーファイルを自動生成するためのシェルスクリプトを追加しました。Unix/macOS用のBashスクリプト(generate-coreclr-helpers.sh)とWindows用のバッチスクリプト(generate-coreclr-helpers.cmd)により、ManagedToNativeGeneratorタスクの実行を自動化します。

変更内容

  • generate-coreclr-helpers.sh (+77行):Unix/macOS環境でCoresCLRのWASMヘルパーを生成するBashスクリプト。パスとビルド設定をカスタマイズ可能
  • generate-coreclr-helpers.cmd (+92行):Windows環境用の同等機能を提供するバッチスクリプト。エラーハンドリング機能を実装
  • WasmAppBuilder.csproj (+1/-1):アセンブリスキャンのグロブパターンを再帰的(**/*.dll)から非再帰的(*.dll)に変更
  • wasm-documentation.md (+4):新しいジェネレータスクリプトの使用方法に関するドキュメントを追加

パフォーマンスへの影響

影響なし。本変更は開発プロセスの自動化を目的としており、ランタイムパフォーマンスには直接的な影響はありません。グロブパターンの変更により、アセンブリスキャン時の処理負荷がわずかに軽減される可能性があります。

関連Issue

なし

その他

  • クロスプラットフォーム対応:Bashとバッチスクリプルにより、Windows、Unix、macOS環境すべてをサポート
  • 開発者の手作業を削減し、CoreCLR WASM開発のオンボーディングを簡素化

#123975 Add R2R helpers for AllocContinuation, AllocContinuationMethod, and AllocContinuationClass.

  • 作成者: @jtschuster
  • 作成日時: 2026年02月03日 23:10:30(UTC)
  • マージ日時: 2026年02月06日 21:54:10(UTC)
  • ラベル: area-crossgen2-coreclr runtime-async

概要

Ready-to-Run (R2R) コンパイラに対して、AllocContinuationAllocContinuationMethodAllocContinuationClass の3つのヘルパー関数を追加しました。これらは非同期状態機械の継続アロケーション処理を最適化するためのランタイムサポート機能です。

変更内容

  • readytorun.h / readytorunhelpers.h: 3つの新しいR2Rヘルパー定義を追加(合計8行追加)
  • ReadyToRunConstants.cs: C#側での定数定義を追加(4行)
  • JitHelper.cs: JITヘルパーの実装を追加(4行)
  • CorInfoImpl.ReadyToRun.cs: R2Rコンパイラ側でのヘルパー呼び出し処理を実装(14行追加、2行削除)
  • ReadyToRunSignature.cs: シグネチャ情報の処理を追加(10行)
  • CorInfoImpl.RyuJit.cs: RyuJITコンパイラ側の対応(2行追加、1行削除)
  • ILImporter.Scanner.cs: スキャナーの軽微な調整(1行削除、1行追加)

パフォーマンスへの影響

非同期メソッドの継続アロケーションがR2Rコンパイル時に最適化されるため、実行時のアロケーション処理が効率化されます。具体的なベンチマーク数値はPR内に記載されていませんが、async/awaitを多用するアプリケーションのGC圧力およびメモリ使用量の削減が期待されます。

関連Issue

なし

その他

本変更はランタイムライブラリのコア部分(JITヘルパー、R2Rコンパイラ)とAOTコンパイラの両方に対応する実装となっており、既存コンパイラパイプラインとの互換性が保たれています。レビューアの jkotas と copilot による複数回の検証が行われており、品質が確保されています。


#123961 Add testing for native IDispatch custom marshaller scenario.

  • 作成者: @AaronRobinsonMSFT
  • 作成日時: 2026年02月03日 19:42:06(UTC)
  • マージ日時: 2026年02月06日 00:08:08(UTC)
  • ラベル: area-Interop-coreclr

概要

COM相互運用におけるIDispatchカスタムマーシャラーのネイティブシナリオに対するテストカバレッジの追加です。PR #123832で発見されたテストの抜け穴を埋めるため、.NETサーバーとネイティブクライアント間のIDispatch通信テストを実装しました。

変更内容

  • DispatchTesting.cs: .NETサーバー側のIDispatchテストコード追加(+13行)
  • Client.cpp: ネイティブクライアント側のIDispatch呼び出しテストロジック追加(+75行)
  • DispatchTesting.h: ネイティブサーバー側のヘッダー定義追加(+7行)
  • Server.Contracts.cs/.h: サーバーコントラクト定義の拡張(合計+22行)

これらの変更により、.NET/ネイティブ間のIDispatchマーシャリングに関するエンドツーエンドテストが実装されました。

パフォーマンスへの影響

影響なし(テストコードの追加のため)

関連Issue

PR #123832(本PRで対応された先行PR)

その他

本PRはテスト機能の拡張であり、ランタイムの機能変更ではありません。COM相互運用性のテストスイートの整備により、将来のIDispatchマーシャリング関連の回帰防止に貢献します。


#123913 Add an azdo failure skill

  • 作成者: @lewing
  • 作成日時: 2026年02月02日 21:05:57(UTC)
  • マージ日時: 2026年02月06日 20:27:50(UTC)
  • ラベル: area-Infrastructure

概要

Azure DevOps と Helix テスト失敗を分析するための AI エージェントスキルを追加します。Copilot に CI 失敗の調査方法を教え、PR番号またはビルドIDからAPIクエリを実行し、失敗詳細を抽出して改善提案を提供します。dotnet/runtime、sdk、aspnetcore、roslyn など複数リポジトリに対応し、既知問題との照合や PR の変更との相関分析も実施します。

変更内容

ファイル 説明
.github/skills/azdo-helix-failures/SKILL.md スキルの概要ドキュメント(118行)
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1 テスト失敗分析の PowerShell スクリプト(2101行)
.github/skills/azdo-helix-failures/references/azdo-helix-reference.md Azure DevOps および Helix API リファレンス(93行)
.github/skills/azdo-helix-failures/references/helix-artifacts.md Helix アーティファクト調査ガイド(184行)
.github/skills/azdo-helix-failures/references/manual-investigation.md 手動調査ステップガイド(98行)

主要機能

  • PR/ビルドID による失敗分析クエリ
  • Build Analysis PR チェックから既知問題の自動取得
  • GitHub の "Known Build Error" ラベル付きissue の検索
  • Helix work item、コンソールログ、アーティファクト抽出
  • PR の変更ファイルとの失敗相関分析
  • キャンセルされたジョブと実際の失敗の区別

パフォーマンスへの影響

影響なし(スキル機能の追加であり、ランタイム実行には影響しません)

関連Issue

  • #123863 を supersedes(より充実した PowerShell スクリプト実装版)

その他

本スキルは Copilot による CI 失敗調査の自動化をサポートします。-SearchMihuBot オプションでセマンティック検索も利用可能です。推奨事項として「NO RETRY NEEDED」「LIKELY PR-RELATED」「POSSIBLY TRANSIENT」を判定し提供します。


#123895 [release/10.0] Source code updates from dotnet/dotnet

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年02月02日 17:26:18(UTC)
  • マージ日時: 2026年02月06日 00:52:23(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

このPRは、dotnet/dotnetのVMR(Virtual Monolithic Repository)から自動生成されたコードフロー更新です。.NET 10.0.1xxリリースブランチの複数の依存パッケージをバージョンアップしています。主な更新対象は、Roslyn/CodeAnalysis、.NETビルドツール、NuGetパッケージなど、開発ツールチェーン全体にわたっています。

変更内容

  • NuGet.config: NuGetソース設定の更新(+1/-1行)
  • eng/Version.Details.props: バージョン情報の更新(+29/-29行)
  • eng/Version.Details.xml: 詳細なバージョン定義の更新(+69/-69行)
  • global.json: SDKおよびグローバル設定の更新(+3/-3行)

依存パッケージの更新内容:

  • Microsoft.CodeAnalysis系: 5.0.0-2.26077.101 → 5.0.0-2.26102.102
  • Microsoft.DotNet.Arcade.Sdk等ビルドタスク: 10.0.0-beta.26077.101 → 10.0.0-beta.26102.102
  • NuGet.Frameworks/Packaging/ProjectModel/Versioning: 7.0.2-rc.7801 → 7.0.2-rc.10302
  • Microsoft.DotNet.Cecil: 0.11.5-alpha.26077.101 → 0.11.5-alpha.26102.102

関連ソースリポジトリの更新: efcore、roslyn、runtime、sdk、winformsなど複数のドットネット関連リポジトリから変更が取り込まれています。

パフォーマンスへの影響

影響なし。このPRは自動生成されたコードフロー更新であり、依存パッケージのバージョン更新のみが含まれます。実装上の最適化やパフォーマンス改善を伴う変更は含まれていません。

関連Issue

なし。このPRは自動化されたコードフロー更新プロセス(dotnet-maestrobot)によるもので、特定のissueに紐付けられていません。

その他

  • このPRはautomated codeflow PRであり、Maestroビルドシステムによって自動生成されています
  • build ID: 20260202.2、コミット日時: 2026年2月2日
  • リリースブランチは release/10.0.1xx です
  • darc vmr diffコマンドで詳細な変更内容を確認できます

#123754 Vectorize TensorPrimitives.BitIncrement/BitDecrement for Half using ushort operations

  • 作成者: @Copilot
  • 作成日時: 2026年01月29日 14:52:34(UTC)
  • マージ日時: 2026年02月06日 04:03:15(UTC)
  • ラベル: area-System.Numerics.Tensors

概要

TensorPrimitives.BitIncrementTensorPrimitives.BitDecrementHalf 型に対してベクトル化を追加しました。これまで float への拡張と縮小を行っていたオーバーヘッドを排除し、Halfushort ビット表現を直接操作することで性能を向上させます。

変更内容

  • TensorPrimitives.BitIncrement.cs

    • HalfBitIncrementOperator struct を実装(IUnaryOperator<short, short> インターフェース)
    • スカラーパスで Half.BitIncrement に委譲
    • Vector128/256/512 での SIMD 実装を追加(Vector.IsNegative() 使用)
    • 特殊ケース対応:NaN(符号保持)、+∞(保持)、-∞→MinValue、-0→Epsilon
  • TensorPrimitives.BitDecrement.cs

    • HalfBitDecrementOperator struct を実装(IUnaryOperator<short, short> インターフェース)
    • スカラーパスで Half.BitDecrement に委譲
    • Vector128/256/512 での SIMD 実装を追加(Vector.IsNegative()Vector.IsZero() 使用)
    • 特殊ケース対応:NaN(符号保持)、-∞(保持)、+∞→MaxValue、+0→-Epsilon

パフォーマンスへの影響

改善点: TryUnaryBitwiseInvokeHalfAsInt16 による最適化で、Halffloat に変換・操作・再変換する一連のオーバーヘッドを完全に排除できます。ビット操作を直接実行することで、メモリ帯域幅の利用効率と計算速度が向上します。

// 最適化前:Half → float → float処理 → Half への変換オーバーヘッド
// 最適化後:ushort ビット直接操作による高速化
TensorPrimitives.BitIncrement<Half>(_source, _destination);

関連Issue

PR #123610 のフィードバックに基づく変更

その他

  • IEEE 754 の特殊ケース(NaN、∞、±0)への対応が適切に実装されており、正確性を保証しています
  • スカラーパスは正規の Half.BitIncrement/BitDecrement メソッドに委譲することで、エッジケースの正確性を確保しています

#123719 Fix ZipArchive Update mode rewriting unchanged archives on Dispose

  • 作成者: @alinpahontu2912
  • 作成日時: 2026年01月28日 15:52:43(UTC)
  • マージ日時: 2026年02月06日 12:08:52(UTC)
  • ラベル: area-System.IO.Compression

概要

ZipArchive の Update モードで、エントリストリームを開く際に実際のデータ書き込みがなくても、アーカイブが変更済みと誤認識され、Dispose 時に不要な再書き込みが発生していた問題を修正しました。これにより、MemoryStream などの拡張不可能なストリームで NotSupportedException がスローされていた問題が解決されます。

// 修正前:ストリームを開いただけで変更済みとマーク
using (var archive = new ZipArchive(stream, ZipArchiveMode.Update))
{
    var entry = archive.CreateEntry("test.txt");
    var entryStream = entry.Open(); // この時点で変更済みとマーク
    // 実際に書き込まない場合、Dispose時に不要な再書き込み
}

// 修正後:実際の書き込み時にのみ変更済みとマーク
using (var archive = new ZipArchive(stream, ZipArchiveMode.Update))
{
    var entry = archive.CreateEntry("test.txt");
    var entryStream = entry.Open();
    // 書き込みがなければ、Dispose時に再書き込みされない
}

変更内容

  • ZipArchive.cs / ZipArchive.Async.cs: エントリが実際に変更されたかを追跡するロジックを強化
  • ZipArchiveEntry.cs / ZipArchiveEntry.Async.cs: WrappedStream を使用して実際のデータ書き込みを検出
  • ZipCustomStreams.cs: ラッピング用ストリームの実装を追加
  • テスト: Update モード時の不要な再書き込みをテストするケースを追加(zip_UpdateTests.cs で93行追加)

パフォーマンスへの影響

改善: 書き込みのないエントリストリーム操作時に不要なアーカイブ再書き込みが削減され、メモリ使用量と I/O 処理が削減されます。特に MemoryStream など固定サイズストリームでの例外発生を防止し、正常に処理完了できるようになります。

関連Issue

#123419

その他

  • 新規作成されたアーカイブ(空のストリーム上のアーカイブ)は、初回作成時に確実に書き込みされるよう明示的にマーク
  • 公開 API の変更なし(内部実装の修正のみ)
  • 既存コードの互換性に影響なし

#123654 [release/11.0-preview1] Source code updates from dotnet/dotnet

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年01月27日 02:14:26(UTC)
  • マージ日時: 2026年02月06日 17:43:59(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

このPRは、dotnet/dotnetリポジトリからのコードフロー更新で、.NET 11.0-preview1ブランチに対するソースコード変更と依存関係の更新を統合します。Roslyn、NuGet、System.Text.Jsonなど複数の重要なコンポーネントの依存関係がアップデートされており、ビルドシステムとバージョン管理ファイルが更新されています。

変更内容

依存関係の更新(主要なもの):

  • Roslyn関連: Microsoft.CodeAnalysis系パッケージが5.4.0-2.26065.101 → 5.4.0-2.26076.102へ更新
  • ビルドツール: Microsoft.DotNet.Arcade.Sdk、Build.Tasks.*など16個のパッケージが11.0.0-beta版に更新
  • NuGet: NuGet.Frameworks、NuGet.Packaging等が7.3.0-preview.1 → 7.4.0-rc.7702へ更新
  • コア機能: System.Text.Json、System.Reflection.Metadata、System.CommandLineなどが11.0.0-preview.1版に更新
  • WebAssembly: 複数プラットフォーム向けWasm.Node.Transportランタイムが更新

ビルド設定ファイル変更:

  • global.jsoneng/Version.Details.*、バージョン管理ファイルの更新
  • WasmテンプレートテストやCrossGen2タスク関連ファイルの微調整
  • publish構成プロジェクトへのメタデータ追加

関連リポジトリの同期: arcade、aspnetcore、roslyn、sdk、msbuildなど13以上のdotnetエコシステムリポジトリが同時更新

パフォーマンスへの影響

影響なし。このPRは依存関係とビルド設定の更新であり、ランタイムのパフォーマンス特性に直接的な変更はありません。NuGetの7.4.0-rc.7702移行により、パッケージ解決やビルドパイプラインの効率が向上する可能性があります。

関連Issue

なし

その他

  • 互換性: このコードフロー更新はpreview1段階のため、APIの不安定性が予想されます
  • scope: 複数リポジトリ間の大規模な同期更新(maestroによる自動化)
  • 検証: 変更ファイル数は限定的で、主にメタデータ更新のため、リグレッションリスクは低い

#123644 [AsyncV2] Runtime support for breakpoints and stepping

  • 作成者: @max-charlamb
  • 作成日時: 2026年01月26日 21:52:33(UTC)
  • マージ日時: 2026年02月06日 17:16:52(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

Runtime Async v2メソッドのデバッガサポートを実装しました。Async メソッドは同じメタデータトークンを持つ2つの MethodDesc バリアント(Task返却アダプタの"thunk"と実装)を生成しますが、デバッガはthunkと実装を区別できず、ステップイン失敗やブレークポイント バインディング問題が発生していました。本PR は新しい AsyncThunkStubManager を追加し、ステップイン時のthunk認識、ブレークポイント バインディングの制御、スタックウォークでの非表示化を実現します。

変更内容

ファイル 主な変更内容
stubmgr.cpp / stubmgr.h 新しい AsyncThunkStubManager クラスを追加。Async v2 メソッドのthunkを認識・処理
controller.cpp / controller.h ブレークポイント バインディングでthunkをスキップ。DebuggerStepper::TriggerPatch にthunk検出・解決ロジックを追加
frameinfo.cpp スタックウォーク時にthunk含むdiagnostics非表示メソッドをフィルタリング
dacdbiimplstackwalk.cpp フレーム 'NoMetadata' ロジックを拡張。IsDiagnosticsHidden() を使用
vptr_list.h / appdomain.cpp / debugger.cpp 型情報登録・初期化など補助変更

パフォーマンスへの影響

影響なし

デバッガステップイン・ブレークポイント処理の正確性向上が主目的であり、通常実行パスへの影響はありません。

関連Issue

なし

その他

  • 互換性への影響: 破壊的変更なし。デバッガの内部動作改善のため、既存コードへの互換性影響なし
  • 技術的詳細: AsyncThunkStubManagerTraceManagerTRACE_MGR_PUSH トレースをサポートし、thunkから実装へのトレース解決を実現。IL stubs、wrapper stubsも同様に扱われます
  • デバッグメタデータ: Async thunkは意味のあるデバッグメタデータを持たないため、スタックウォークから除外されます

#123643 Add support for encoding Continuation types with specific layouts in ReadyToRun

  • 作成者: @jtschuster
  • 作成日時: 2026年01月26日 21:48:31(UTC)
  • マージ日時: 2026年02月06日 19:22:13(UTC)
  • ラベル: area-crossgen2-coreclr

概要

ReadyToRun (R2R) イメージにおけるContinuation型のエンコード機能を追加しました。新しいフィックスアップタイプ(READYTORUN_FIXUP_Continuation_Layout = 0x37)を導入し、GC参照マップをビットベクトルからバイト配列に展開してエンコードします。ランタイム側ではGetContinuationTypeFromLayoutによる復号化とLoadDynamicInfoEntryによる処理に対応しました。

// Continuation型フィックスアップのエンコード例
// GC refmap → byte array 展開
// R2Rイメージから動的に型情報を復号化

変更内容

  • readytorun.h: 新しいフィックスアップタイプ定数(0x37)を追加
  • AsyncContinuationType.cs: Continuation型の定義軽微修正
  • CompilerTypeSystemContext.Async.cs: 非同期型コンテキストの処理拡張
  • ReadyToRunConstants.cs: R2R定数定義の追加
  • TypeFixupSignature.cs: Continuation型レイアウトのシグネチャエンコード処理(+63行)
  • ReadyToRunSymbolNodeFactory.cs: Continuation型向けシンボルノード生成の追加
  • asynccontinuations.cpp/h: ランタイムでの復号化と型生成処理の実装
  • jitinterface.cpp: LoadDynamicInfoEntryによる新フィックスアップ処理対応(+89行)
  • ReadyToRunSignature.cs: R2Rシグネチャ解析の更新

パフォーマンスへの影響

影響なし。本機能はインフラストラクチャ層の追加であり、実行時のパフォーマンスへの直接的な影響はありません。ただし、今後async2メソッドがR2Rでコンパイルされる際には、GC refmapのエンコード・デコードのオーバーヘッドが生じる可能性があります。

関連Issue

なし

その他

注記:現在、async2メソッドはReadyToRun イメージでコンパイルされていないため、これらのコード経路はまだ実行されていません。今後、非同期メソッドのR2Rコンパイル対応時に実際の効果が検証される見込みです。


#123554 [RyuJit] Remove indentation from target*.h files

  • 作成者: @SingleAccretion
  • 作成日時: 2026年01月23日 18:09:56(UTC)
  • マージ日時: 2026年02月06日 20:44:51(UTC)
  • ラベル: area-CodeGen-coreclr community-contribution

概要

RyuJITのターゲットアーキテクチャヘッダーファイル(target*.h)から不要なインデント(2スペース)を削除するリファクタリング。targetwasm.hを追加する際のスタイル不一致を解消し、#defineのインデント規約を統一。

変更内容

  • src/coreclr/jit/target.h - 15行のインデント削除
  • src/coreclr/jit/targetamd64.h - 408行のインデント削除
  • src/coreclr/jit/targetarm.h - 282行のインデント削除
  • src/coreclr/jit/targetarm64.h - 331行のインデント削除
  • src/coreclr/jit/targetloongarch64.h - 281行のインデント削除
  • src/coreclr/jit/targetriscv64.h - 231行のインデント削除
  • src/coreclr/jit/targetx86.h - 283行のインデント削除

すべての#defineマクロから先頭の2スペースインデントを削除し、統一されたコーディング規約を適用。

パフォーマンスへの影響

影響なし。本変更は純粋なホワイトスペース修正であり、コンパイル対象コードは変更されていません。

関連Issue

なし

その他

レビュアーの指示により、差分確認時に"hide whitespace"オプションを有効にすることを推奨。本変更は2,092行の大規模な形式変更となりますが、実質的なコード動作に影響はありません。


#123500 JIT: Run full liveness in MinOpts for async

  • 作成者: @jakobbotsch
  • 作成日時: 2026年01月22日 16:17:13(UTC)
  • マージ日時: 2026年02月06日 11:26:00(UTC)
  • ラベル: area-CodeGen-coreclr

概要

MinOpts(最小化最適化)コード生成時に、async中断を跨いでのローカル変数の生存性判定を改善しました。従来はすべてのローカル変数をliveと見なしていましたが、本PRで完全な生存性分析(full liveness)を実行することで、余分なlifted state生成を削減し、全体的なパフォーマンスを向上させています。

変更内容

  • async.cpp: async中断時のローカル変数生存性判定ロジックを改善(+34/-22行)
  • compiler.h: 新たな生存性分析機能のための宣言追加(+1行)
  • lclvars.cpp: ローカル変数の生存性追跡機構の強化(+28/-10行)
  • liveness.cpp: 完全な生存性分析ロジックの実装(+33/-19行)

パフォーマンスへの影響

改善:生存性分析を実行することで、async中断を跨ぐローカル変数のlifted state(スタック領域での状態保持)を削減。生成されるIR量の削減効果が、生存性分析実行のコスト以上に大きい。これにより、MinOpts環境でのコード生成効率が向上。

関連Issue

#116370

その他

  • MinOpts(デバッグビルド相当)での最適化改善であるため、リリースビルドには直接の影響なし
  • async/awaitパターンを多用するコード(特にデバッグビルド)で利点が顕著
  • 完全な生存性分析の導入により、async状態機械の生成がより効率化

目次