Pull Request on 2026年02月17日

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

注意点

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


目次

  1. #124517 Fix flaky MaxResponseHeadersLength tests by handling additional SocketError codes
  2. #124502 JIT: Check for inline candidates in gtTreeContainsAsyncCall
  3. #124500 [browser] Emit symbols in WasmSDK
  4. #124495 [main] Source code updates from dotnet/dotnet
  5. #124491 [Runtime Async] do not hold to continuation state when completing reusable valuetask sources
  6. #124490 [release/10.0] Source code updates from dotnet/dotnet
  7. #124488 [RuntimeAsync] Remove [RequiresPreviewFeatures] on runtime async API
  8. #124481 [RyuJit/WASM] Register allocation for multiply used operands
  9. #124476 Add default value when FeatureDynamicCodeCompiled is undefined
  10. #124475 Build zstd with /source-charset:utf-8 option
  11. #124469 [HTTP] Fix HttpListener tests blocking xunit workers (#21870)
  12. #124463 Re-enable SslStreamTlsResumeTests.ClientDisableTlsResume_Succeeds
  13. #124457 Add null check in LCGMethodResolver::GetManagedResolver
  14. #124440 Convert CustomMarshalerInfo GetInstance to UnmanagedCallersOnly
  15. #124433 Use IndexOfAny/SearchValues in more places around Uri
  16. #124400 Add legs to run crossgenned libraries tests with runtime-async enabled
  17. #124399 Fix aspnet2 spmi collection script
  18. #124323 Extract ManifestBuilder and EventListener
  19. #124161 Fix missing upper-bound guard in LastIndexOf and FindLastIndex
  20. #124047 Fixed some potential integer overflows in coreclr
  21. #123992 Add InstructionSet_VectorT for ARM64
  22. #123925 PersistedAssemblyBuilder: Fix encoding of custom modifiers.
  23. #123909 Remove support for issues.targets
  24. #123892 Implement SVE2 non-temporal scatter stores
  25. #123694 [Android][NativeAOT] Fix SIGSEGV in RandomNumberGenerator by providing weak JNI_OnLoad symbol
  26. #122283 Rename SVE2 AddSaturate signed/unsigned addend API

#124517 Fix flaky MaxResponseHeadersLength tests by handling additional SocketError codes

  • 作成者: @Copilot
  • 作成日時: 2026年02月17日 15:44:59(UTC)
  • マージ日時: 2026年02月17日 19:19:13(UTC)
  • ラベル: area-System.Net.Http

概要

HTTP クライアントの MaxResponseHeadersLength テストにおける競合状態によるフレーキーな失敗を修正しました。クライアントが接続を強制切断した際に、サーバー側が複数の SocketError コード(ShutdownConnectionResetConnectionAborted)に対応することで、プラットフォーム間での非決定的な動作を安定化させています。

// 修正例
catch (IOException ex) when (ex.InnerException is SocketException se && 
    (se.SocketErrorCode == SocketError.Shutdown || 
     se.SocketErrorCode == SocketError.ConnectionReset || 
     se.SocketErrorCode == SocketError.ConnectionAborted)) { }

変更内容

  • ファイル: src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs
    • ThresholdExceeded_ThrowsException テストメソッド:例外フィルターを拡張
    • LargeSingleHeader_ThrowsException テストメソッド:例外フィルターを拡張
    • 変更内容:SocketError.Shutdown のみの判定から、SocketError.ConnectionResetSocketError.ConnectionAborted も対象に追加

パフォーマンスへの影響

影響なし。テストコードのみの変更で、例外判定ロジックの追加であり、ランタイムパフォーマンスへの影響はありません。

関連Issue

  • dotnet/runtime#124515(本PRが修正する Issue)
  • dotnet/runtime#124469(フレーキーテストが検出された PR)

その他

本修正は既存の LoopbackProxyServer.cs で採用されている ConnectionResetConnectionAborted の同時処理パターンに統一するものです。異なるプラットフォーム/タイミングにおいて同じ競合状態が異なるソケットエラーコードで発生するため、テストの堅牢性向上に寄与します。


#124502 JIT: Check for inline candidates in gtTreeContainsAsyncCall

  • 作成者: @jakobbotsch
  • 作成日時: 2026年02月17日 09:46:42(UTC)
  • マージ日時: 2026年02月17日 23:43:19(UTC)
  • ラベル: area-CodeGen-coreclr runtime-async

概要

JIT コンパイラの gtTreeContainsAsyncCall 関数を改善し、インライン候補内の非同期呼び出しを正しく検出するようにしました。インライン候補は後で元の呼び出しに置き換わる可能性があり、その呼び出しが非同期呼び出しを含む場合、適切なスピリング処理が必要です。Native AOT シナリオでのランタイム非同期有効時における null 参照クラッシュを修正します。

変更内容

  • src/coreclr/jit/fgopt.cpp
    • gtTreeContainsAsyncCall 関数を拡張し、GT_RET_EXPR ノード内のインライン候補を再帰的に走査するように改善
    • ラムダキャプチャを [] から [=] に変更し、再帰的なメンバー関数呼び出しを可能に

パフォーマンスへの影響

影響なし。本修正は検出ロジックの改善であり、パフォーマンスに直接的な影響はありません。ただし、非同期呼び出しの検出漏れによる不正なレジスタ処理が修正されることで、実行時のクラッシュを防止します。

関連Issue

#124496

その他

  • バグ修正の重要性: Native AOT シナリオで runtime async が有効な場合、インライン候補内の非同期呼び出しが検出されないと、メモリ/レジスタ処理が不適切となり null 参照例外が発生していました
  • 修正範囲: コア JIT コンパイルロジック(src/coreclr/jit/)の変更のため、.NET ランタイムの安定性に関わる重要な修正です

#124500 [browser] Emit symbols in WasmSDK

  • 作成者: @maraf
  • 作成日時: 2026年02月17日 09:31:01(UTC)
  • マージ日時: 2026年02月17日 17:56:41(UTC)
  • ラベル: arch-wasm area-Build-mono os-browser

概要

WebAssembly SDK ビルド時にシンボルファイル(PDB)を出力対象に含める機能を追加したPRです。ブラウザベースの .NET ワークロードをデバッグする際に必要なシンボル情報が正しくパッケージに含まれるようになります。

変更内容

  • Microsoft.NET.Sdk.WebAssembly.Browser.targets: ビルド設定にシンボル出力フラグを追加
  • AssetsComputingHelper.cs: アセット計算時にシンボルファイルの処理ロジックを拡張(+2/-1)
  • ComputeWasmBuildAssets.cs: ビルドアセット計算処理にシンボルファイル対応を追加(+4/-1)
  • ComputeWasmPublishAssets.cs: 公開アセット計算処理にシンボルファイル対応を追加(+3/-1)
  • ModuleConfigTests.cs: シンボルファイル出力動作を検証するテストケース追加(+25)
  • WasmSdkBasedProjectProvider.cs: テストプロバイダーの軽微な修正(+1/-1)

パフォーマンスへの影響

ビルド時にシンボルファイルの処理が追加されますが、既存のビルド資産計算ロジックへの拡張であり、パフォーマンスへの顕著な悪化は予想されません。シンボルファイルの生成自体は既に行われており、今回は出力対象に含める処理のみです。

関連Issue

  • Fixes #122385

その他

  • WebAssemblyワークロード向けのビルド・公開パイプラインの改善
  • テストケースが追加されており、シンボル出力機能の動作検証が可能
  • 変更はすべてビルドタスクとビルド定義ファイルに限定されており、ランタイム互換性への影響なし

#124495 [main] Source code updates from dotnet/dotnet

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年02月17日 02:05:19(UTC)
  • マージ日時: 2026年02月17日 20:05:24(UTC)
  • ラベル: area-codeflow

概要

これはdotnet/dotnetリポジトリからのコードフロー更新PRです。ビルド20260216.9の依存関係更新を含むもので、Microsoft.CodeAnalysis、NuGet、ランタイムコンポーネント、Mono LLVM関連パッケージなど複数の重要なコンポーネントがアップデートされています。主にテストフレームワークの最適化と依存関係の同期化が行われています。

変更内容

構成ファイル更新:

  • eng/Version.Details.props - バージョン情報の更新(76行変更)
  • eng/Version.Details.xml - 詳細なバージョン情報の更新(153行変更)
  • global.json - グローバル設定ファイルの更新(6行変更)

テスト関連の更新:

  • src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/ - ジェネレータテストの調整
    • Microsoft.Extensions.Logging.Generators.targets: テスト構成更新
    • ExceptionTestExtensions.WithDiagnostics.cs: 診断テストの簡素化(2行削除)
    • LevelTestExtensions.WithDiagnostics.cs: レベルテストの簡素化(4行削除)

主要な依存関係更新:

  • Microsoft.CodeAnalysis系: 5.5.0-2.26110.116 → 5.5.0-2.26116.109
  • NuGet系パッケージ: 7.5.0-rc.11116 → 7.5.0-rc.11709
  • Microsoft.DotNet.Arcade.Sdk: 11.0.0-beta.26110.116 → 11.0.0-beta.26116.109
  • ランタイムツール(JIT、Mono LLVM、WebAssembly Node): マルチプラットフォーム対応の更新

パフォーマンスへの影響

影響なし

このPRは依存関係の定期同期更新であり、パフォーマンスに関連する実装変更を含みません。テスト関連の行削除は簡素化による保守性向上を目的とするものです。

関連Issue

なし

その他

  • これはAutomated Codeflow PRで、dotnet-maestro[bot]による自動更新です
  • 2026年2月17日UTC時点のVMRコミット ba0812f9f812023514211393785e17222be68e8d からの同期
  • 複数のドットネット関連リポジトリ(arcade、aspnetcore、efcore、fsharp、msbuild、nuget、razor、runtime、sdk等)からの関連変更を含む統合更新
  • darc vmr diffコマンドでソースコード差分の詳細確認が可能

#124491 [Runtime Async] do not hold to continuation state when completing reusable valuetask sources

  • 作成者: @VSadov
  • 作成日時: 2026年02月17日 01:27:10(UTC)
  • マージ日時: 2026年02月17日 21:44:20(UTC)
  • ラベル: area-System.Threading runtime-async

概要

ValueTaskSourceの完了時に、継続状態(_continuationState)を保持し続けることで、オブジェクトのファイナライゼーションが遅延する問題を修正します。完了後は不要な状態をnullに設定することで、ガベージコレクションを促進し、特にHttp3ストリームのような短命なリソースの適切なクリーンアップを実現します。

変更内容

  1. ManualResetValueTaskSourceCore.cs

    • _continuationState_capturedContextを、継続実行前に明示的にnullに設定
    • 完了後に不要な状態参照を早期に破棄
  2. AsyncOperation.cs(Threading/Channels)

    • 同様のパターンで_continuationState_capturedContextをnullに設定
    • 継続の実行後、状態保持による参照ループを防止

パフォーマンスへの影響

改善点

  • メモリ保持時間の短縮:不要な状態参照が長時間保持されなくなり、ガベージコレクション圧力を軽減
  • ファイナライゼーションの促進:Http3ReadStreamなどのリソースが予期通りにファイナライズされるようになり、接続リークを防止
  • テスト安定性向上:IncompleteResponseStream_ResponseDropped_CancelsRequestToServerテストのタイムアウト問題を解決

技術的背景 ValueTaskSourceは再利用可能な設計のため、1回限りの継続呼び出し後も状態が保持されていました。本修正は継続実行後の状態をnullに設定し、参照を明示的に解放しています。

関連Issue

なし

その他

  • 修正は「Runtime Async」実装テスト時に発見された問題の解決
  • パターンは複数箇所(ManualResetValueTaskSourceCore、AsyncOperation)で同一であり、一貫した修正を適用
  • タイミングに依存する間欠的なテスト失敗(Http3リソース解放遅延)が改善される見込み

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

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年02月17日 00:49:24(UTC)
  • マージ日時: 2026年02月17日 22:20:21(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

このPRはVMR(Virtual Mono Repository)からのコードフロー更新で、dotnet/dotnetリポジトリ(release/10.0.1xx ブランチ、コミット: 12f41dd)の変更を dotnet/runtime の release/10.0 ブランチに同期しています。Microsoft.CodeAnalysis、NuGet関連パッケージ、およびビルドツール群の依存関係が更新され、System.Security.Cryptography.COSE ライブラリの機能拡張と関連テストが追加されています。

変更内容

依存関係の更新:

  • Microsoft.CodeAnalysis 系: 5.0.0-2.26110.124 → 5.0.0-2.26116.108
  • Microsoft.DotNet Arcade/Build.Tasks 系: 10.0.0-beta.26110.124 → 10.0.0-beta.26116.108
  • NuGet 関連 (Frameworks, Packaging, ProjectModel, Versioning): 7.0.2-rc.11124 → 7.0.2-rc.11708
  • Microsoft.DotNet.Cecil: 0.11.5-alpha.26110.124 → 0.11.5-alpha.26116.108
  • その他: NETCore.App.Ref, System.Text.Json, System.Reflection.Metadata など

主要なコード変更:

  • CoseMessage.cs: COSE(CBOR Object Signing and Encryption)メッセージ処理の拡張(+47/-9)
  • CoseMessageTests.DecodeMultiSign.cs: マルチ署名デコードテストの追加(+126行)
  • CoseMessageTests.DecodeSign1.cs: Sign1署名デコードテストの追加(+125行)
  • CoseMessageTests.Sign.CustomHeaderMaps.cs: カスタムヘッダーマップテストの改良(+35/-20)
  • GitHub_123254.vb: ローダーリグレッションテストの軽微な修正

パフォーマンスへの影響

影響なし。本PRは主に依存関係の最新化と機能テストの追加であり、ランタイムパフォーマンスに直結する変更は含まれていません。

関連Issue

Issue番号は明記されていませんが、GitHub_123254.vb ファイル名から GitHub Issue #123254 のリグレッション修正が含まれている可能性があります。

その他

  • 本PRは自動化されたコードフロー更新(codeflow PR)で、dotnet-maestro[bot] による自動作成
  • 複数のリポジトリ(arcade, aspnetcore, efcore, razor, sdk, sourcelink, windowsdesktop, winforms, wpf など)から同期された変更を含む
  • release/10.0.1xx ブランチの最新コミット(2026年2月16日)が対応

#124488 [RuntimeAsync] Remove [RequiresPreviewFeatures] on runtime async API

  • 作成者: @VSadov
  • 作成日時: 2026年02月16日 23:20:37(UTC)
  • マージ日時: 2026年02月17日 18:03:44(UTC)
  • ラベル: area-VM-coreclr linkable-framework runtime-async

概要

ランタイムの非同期API(RuntimeAsync)から [RequiresPreviewFeatures] 属性を削除し、正式なAPI として確定させるPull Requestです。同時に不要になった SYSLIB5007 の抑制コメントも削除しました。このAPIはプレビュー段階を既に卒業していたため、属性の削除により開発者はこのAPIを警告なく使用できるようになります。

変更内容

  • AsyncHelpers.cs: [RequiresPreviewFeatures] 属性と SYSLIB5007 抑制コメントを削除(31行削除、10行追加)
  • AsyncHelpers.CoreCLR.cs: 抑制コメント2行を削除
  • System.Runtime.cs: プレビュー機能に関するAPI定義10行を削除
  • ApiCompatBaseline.NetCoreAppLatestStable.xml: API互換性ベースラインを更新(変更内容の記録)
  • テスト・設定ファイル: プレビュー機能関連の設定を削除

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPull Requestは破壊的変更ではありません(属性の削除により、既存のコードがより多くの環境で動作可能になります)
  • APIの機能実装自体に変更はなく、属性メタデータの削除のみです
  • レビュアーによるコード指摘なしで承認されています

#124481 [RyuJit/WASM] Register allocation for multiply used operands

  • 作成者: @SingleAccretion
  • 作成日時: 2026年02月16日 21:31:58(UTC)
  • マージ日時: 2026年02月17日 20:28:31(UTC)
  • ラベル: arch-wasm area-CodeGen-coreclr community-contribution

概要

WASM向けのレジスタ割り当て機構を改善するPRです。複数回使用されるオペランド(multiply-used operands)に対して、新しいLIRフラグを導入し、レジスタアロケータが前方走査で効率的にライフタイムを追跡できるようにしました。また、SDSUノードが有効なレジスタを持つ場合、local.tee命令を通じてそれらを割り当てる契約を追加しています。これにより、任意のオペランドをマルチユース化できます。

// 新しいLIRフラグでマルチユースオペランドをマーク
node->SetFlag(LIR::Flags::MultiUseOperand);
// レジスタアロケータでlocal.teeを使用した割り当て処理
genProduceReg(node); // WASM固有のカスタマイズ

変更内容

  • lir.h: マルチユースオペランド追跡用の新しいLIRフラグを追加
  • lower.cpp/lowerwasm.cpp: Loweringフェーズでマルチユースオペランドに新フラグをマーク、WASM固有のローアリングロジックを追加
  • regallocwasm.cpp/regallocwasm.h: レジスタアロケータでマルチユースオペランドの前方走査をサポート、local.teeによる割り当てメカニズムを実装
  • codegenwasm.cpp: コード生成フェーズでSDSUノードへのレジスタ割り当てをサポート
  • codegen.h/lower.h: インターフェース拡張、メソッドシグネチャの追加

パフォーマンスへの影響

作成者により「TP-positive」と報告されています。レジスタアロケータがルックアヘッドなしで前方走査でライフタイム追跡を実施でき、スループットに改善が期待できます。内部レジスタメカニズムは現在未使用となりますが、将来の真正な内部レジスタ(オペランド無関連)用途に備えて保持されています。

関連Issue

Ref: https://github.com/dotnet/runtime/pull/124298

その他

  • この変更は主にストア命令など大多数のWASM操作で必要となるメカニズムです
  • genProduceRegのカスタマイズが必要な理由はWASMのdrop命令要件によるものです
  • WASM限定の変更であり、他のJIT対象アーキテクチャには影響なし

#124476 Add default value when FeatureDynamicCodeCompiled is undefined

  • 作成者: @BrzVlad
  • 作成日時: 2026年02月16日 19:06:13(UTC)
  • マージ日時: 2026年02月17日 09:53:23(UTC)
  • ラベル: area-Infrastructure-coreclr

概要

Visual Studio で CoreCLR を開く際の ./build.cmd -vs coreclr.slnx コマンド実行時に、FeatureDynamicCodeCompiled MSBuild プロパティが未定義のため CMake 構成に失敗する問題を修正しました。runtime.proj で条件チェックを修正し、プロパティが未定義の場合はデフォルト値として true を使用するようにしました。

変更内容

  • src/coreclr/runtime.proj (+1/-1)
    • FeatureDynamicCodeCompiled の条件チェックを修正
    • プロパティが未定義または空文字列の場合、デフォルト値を true に設定
    • Windows プラットフォームのビルドスクリプト内のデフォルト動作に準拠

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この修正は clrfeatures.cmake にデフォルト値を追加する代わりに、runtime.proj の上位レベルで処理することで、ビルドスクリプトからターゲット OS ロジックを重複させることを回避しています。これにより、Visual Studio 経由でのビルド時と従来のコマンドラインビルド時で一貫した挙動が保証されます。


#124475 Build zstd with /source-charset:utf-8 option

  • 作成者: @kzrnm
  • 作成日時: 2026年02月16日 17:40:06(UTC)
  • マージ日時: 2026年02月17日 12:11:15(UTC)
  • ラベル: area-System.IO.Compression community-contribution

概要

zstd(Zstandard圧縮ライブラリ)のビルド時に /source-charset:utf-8 コンパイラオプションを追加し、ソースコードの文字エンコーディングを明示的にUTF-8として指定する変更です。これにより、異なるシステムロケール環境でのビルドの一貫性が向上します。

変更内容

  • src/native/external/zstd.cmake: zstdのCMakeビルド設定を変更し、Visual Studioコンパイラのコンパイルフラグに /source-charset:utf-8 オプションを追加(+4/-1行)

パフォーマンスへの影響

影響なし。この変更は文字エンコーディング指定に関するもので、実行時のパフォーマンスへの直接的な影響はありません。

関連Issue

#124474

その他

  • このオプションはMicrosoft Visual Studioコンパイラ(MSVC)固有の設定です
  • ビルドの安定性向上とクロスプラットフォーム対応の改善が期待できます
  • 外部ライブラリ(zstd)のビルド設定に関連する変更であるため、.NET Runtimeの直接的なコード変更ではありません

#124469 [HTTP] Fix HttpListener tests blocking xunit workers (#21870)

  • 作成者: @ManickaP
  • 作成日時: 2026年02月16日 15:40:28(UTC)
  • マージ日時: 2026年02月17日 15:37:08(UTC)
  • ラベル: area-System.Net.Http

概要

System.Net.HttpListenerのテストスイートをxUnit並列実行に対応させるため、ブロッキングパターンをasync/awaitに置き換えました。.ResultTask.Run()でのデッドロックを排除し、テスト並列化制限を解除することで、テスト実行性能が向上します。

変更内容

  • XUnitAssemblyAttributes.cs: アセンブリレベルのテスト並列化無効設定を削除
  • Socket操作の非同期化: Socket.Send()SendAsync()に、GetContext()GetContextAsync()に変更(全テストファイル)
  • ブロッキング待機の排除: .Resultawaitに、Task.Run(() => ...)をネイティブAsync APIに置き換え(特にHttpListenerAuthenticationTests.cs)
  • リソース破棄順序の改善: HttpListenerRequestTests.csでクライアントソケットをリスナーの前に閉じ、1秒のlinger timeoutを削減

パフォーマンスへの影響

改善あり

  • テスト並列化制限の解除により、複数テストを同時実行可能に
  • リソース破棄順序の改善で、テストあたり1秒のlinger timeoutを削減(複数テスト実行時に顕著)
  • ブロッキングパターンの排除によりxUnitワーカースレッドの無駄な待機が減少

関連Issue

#21870: HttpListenerテストがxUnit並列実行時にデッドロック

その他

技術的懸念事項

  • InvalidClientRequestTests.csでTask/ValueTaskの型不一致がCopilotから指摘されており、別途対応が必要な可能性あり
  • 内部テストコードの変更のため、公開API互換性への影響なし

#124463 Re-enable SslStreamTlsResumeTests.ClientDisableTlsResume_Succeeds

  • 作成者: @Copilot
  • 作成日時: 2026年02月16日 12:13:19(UTC)
  • マージ日時: 2026年02月17日 08:34:06(UTC)
  • ラベル: area-System.Net.Security

概要

TLS セッション再開の無効化をテストする ClientDisableTlsResume_Succeeds テストを再有効化するPRです。このテストはWindows上でSChannel関連のバグによってフレーキーな動作を示していましたが、PR #113604で根本的なバグが修正されたため、[ActiveIssue] 属性を削除して再有効化します。

// テストの概要:AllowTlsResume = false が TLS セッション再開を正しく防止することを検証
[Theory]
[InlineData(true)]
[InlineData(false)]
public async Task ClientDisableTlsResume_Succeeds(bool testClient)
{
    // TLS セッション再開が発生しないことをアサート
}

変更内容

  • ファイル: src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamAllowTlsResumeTests.cs
  • 変更内容:
    • [ActiveIssue("https://github.com/dotnet/runtime/issues/103449", TestPlatforms.Windows)] 属性を削除
    • テストメソッド ClientDisableTlsResume_Succeeds を再有効化

パフォーマンスへの影響

影響なし(テストの有効化であり、実装コード変更なし)

関連Issue

  • #103449(このテストが無効化されていた関連Issue)
  • #113604(根本原因のSChannelバグを修正したPR)

その他

  • テストはLinux環境では既に両方のパラメータケース(testClient: True/False)でパスしており、CIでWindows環境での動作を検証予定
  • このテストが再び失敗する場合、SChannelの修正が完全でない可能性があります

#124457 Add null check in LCGMethodResolver::GetManagedResolver

  • 作成者: @leculver
  • 作成日時: 2026年02月16日 09:30:27(UTC)
  • マージ日時: 2026年02月17日 20:22:42(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

SOS診断ツールのdumplogコマンド実行時にGetManagedResolverでnullポインタ参照によるクラッシュが発生する問題を修正しました。診断コード内でnull状態のm_managedResolverハンドルが検出される場合の処理を追加し、ストレスログ出力時のクラッシュを回避します。

// 修正内容のイメージ
if (m_managedResolver == nullptr)
{
    return nullptr;  // null check追加
}
return ObjectFromHandle(m_managedResolver);

変更内容

  • src/coreclr/vm/dynamicmethod.cpp: LCGMethodResolver::GetManagedResolver関数にnullチェックを追加(4行追加)

パフォーマンスへの影響

影響なし(診断コードパス内の防御的なチェック追加のため、通常の実行パスへの影響はない)

関連Issue

  • dotnet/diagnostics#1837

その他

  • この変更はGetManagedResolverの呼び出し元で戻り値がnullでないことを確認していないケースに対する防御的な修正です
  • 既存の呼び出し元がnullチェックを実装していない場合でも、この関数内でnullを返すことでクラッシュを回避できます
  • 呼び出し元でのassertの追加についても検討されていますが、本変更で十分な修正と判断されています

#124440 Convert CustomMarshalerInfo GetInstance to UnmanagedCallersOnly

  • 作成者: @AaronRobinsonMSFT
  • 作成日時: 2026年02月15日 05:52:25(UTC)
  • マージ日時: 2026年02月17日 22:17:26(UTC)
  • ラベル: area-VM-coreclr

概要

CustomMarshalerInfo::GetInstance の呼び出しを MethodDescCallSite/CallDescrWorker から UnmanagedCallersOnly (UCO) reverse P/Invoke に置き換えるリファクタリング。これにより、マネージ・アンマネージ間の相互運用コードの統一を進め、#123864 の Priority 1 項目を完了します。

変更内容

  • StubHelpers.cs: MngdRefCustomMarshaler.GetCustomMarshalerInstance UCO ラッパーメソッドを新規追加(+35行)
  • custommarshalerinfo.cpp: 既存の MethodDescCallSite ベースの実装を削除し、UCO 経由の呼び出しに統一(-66行)
  • corelib.h: 新しい UCO メソッドのエクスポート エントリを追加
  • metasig.h: メタシグネチャ定義を更新
  • mscorrc.rc/resource.h: 不要になったリソース定義を削除(-2行)

パフォーマンスへの影響

影響なし。UnmanagedCallersOnly への置き換えは、既存の P/Invoke 呼び出し機構と同等のパフォーマンスを提供します。むしろコード管理の簡素化により、長期的な保守性が向上します。

関連Issue

#123864 (Priority 1 マーシャリング最適化タスク)

その他

本変更はランタイムの内部実装に限定される変更であり、公開 API への影響はありません。P/Invoke 逆呼び出し メカニズムの統一化により、CoreCLR のマーシャリング インフラストラクチャの モダナイゼーション を推進しています。


#124433 Use IndexOfAny/SearchValues in more places around Uri

  • 作成者: @MihaZupan
  • 作成日時: 2026年02月14日 23:41:48(UTC)
  • マージ日時: 2026年02月17日 13:05:09(UTC)
  • ラベル: area-System.Net

概要

Uri.cs内でIndexOfAnySearchValuesを活用し、ホスト名解析性能を最適化しました。特にLongHost(長いホスト名)のケースで約28%のパフォーマンス改善が実現されています(166.87ns → 120.22ns)。

変更内容

  • src/libraries/System.Private.Uri/src/System/Uri.cs
    • IndexOfAny/SearchValuesパターンをUri解析ロジックに適用
    • 文字列検索の効率化により、複数文字の検索を最適化
    • コード行数を削減(+40/-62)

パフォーマンスへの影響

改善あり - ベンチマーク結果:

  • NoUserInfo_ShortHost: 53.25ns → 53.30ns(変化なし、比率: 1.00)
  • NoUserInfo_LongHost: 166.87ns → 120.22ns(28%改善、比率: 0.72)

改善のポイント:

  • 長いホスト名処理での著しい性能向上
  • SearchValuesの使用により、複数文字検索が最適化されたバイナリサーチパターンに変換
  • 短いホスト名では目立った変化なし(既に十分に高速)

関連Issue

https://github.com/EgorBot/runtime-utils/issues/618

その他

  • Copilotレビュー済み:新規コメントなし
  • stephentoub(.NETコアメンテナー)によるレビュー完了
  • 内部実装の最適化であり、公開APIの変更なし

#124400 Add legs to run crossgenned libraries tests with runtime-async enabled

  • 作成者: @jtschuster
  • 作成日時: 2026年02月13日 19:59:01(UTC)
  • マージ日時: 2026年02月17日 22:22:41(UTC)
  • ラベル: area-crossgen2-coreclr runtime-async

概要

CrossGen2を使用したライブラリテストにおいて、runtime-asyncを有効にした状態での実行レグを追加するPull Requestです。既存のクロスジェン アウターループパイプラインに新しいテスト実行構成を追加し、非同期ランタイム機能の互換性を検証します。

変更内容

  • eng/pipelines/coreclr/crossgen2.yml (+24/-0)

    • CrossGen2パイプラインにruntime-asyncを有効にしたテスト実行レグを追加
  • eng/testing/tests.targets (+1/-1)

    • テストターゲット設定の微調整(詳細は不明)

パフォーマンスへの影響

影響なし。本変更はテスト実行構成の追加であり、ランタイムやコンパイラのパフォーマンスに直接的な影響はありません。パイプライン実行時間は増加する可能性があります。

関連Issue

なし

その他

  • 変更範囲が小さく(計26行)、既存パイプラインへの追加変更のみ
  • Copilotレビュアーから新規コメントなし
  • runtime-asyncのバグや互換性問題をCI/CDレベルで検出することが目的と推測されます

#124399 Fix aspnet2 spmi collection script

  • 作成者: @EgorBo
  • 作成日時: 2026年02月13日 19:22:50(UTC)
  • マージ日時: 2026年02月17日 01:19:02(UTC)
  • ラベル: area-CodeGen-coreclr

概要

AspNet2のSuperPMI収集スクリプトの堅牢性を向上させる修正です。Helixマシンの制限に対応するため、NuGetキャッシュの設定を改善、ビルドタイムアウトを延長、.NET 11.0プレビューへの切り替え、接続数削減、TieredPGO設定の削除を実施しました。結果として、mchファイルサイズは892 MBとなっています。

変更内容

  1. superpmi_aspnet2.py (+18/-17)

    • NuGetがOSディスクをキャッシュ用として使用しないように制限(Helixマシンのディスク容量不足対策)
    • ビルドタイムアウトを10分から30分に延長(OrchardCMS対応)
    • .NET 10.0の固定を解除し、.NET 11.0の最新パブリックプレビューに切り替え
    • bombardier接続数を16に削減(Helixマシンのスペック対応)
    • TieredPGO: "1"ReadyToRun: "0"の設定を削除
  2. superpmi-collect-pipeline.yml (+1/-1)

    • パイプライン設定の軽微な調整

パフォーマンスへの影響

改善点:

  • スクリプト全体の実行時間短縮(TieredPGO/ReadyToRun設定削除による)
  • Helixマシンでの信頼性向上(接続数削減、タイムアウト調整)
  • ディスク容量不足によるスクリプト失敗の減少

懸念点:

  • TieredPGO/ReadyToRun削除により、PGO関連のプロファイリング情報量が減少する可能性

関連Issue

なし

その他

  • mchファイルの統計情報から、DEBUG_INFO(98.61%)とFROZEN_ALLOC_ALLOWED(100%)が大部分を占めており、多層化コンパイル(TIER0: 34.00%、TIER1: 32.36%)のプロファイル情報も含まれています。
  • 本修正はCI/CDパイプラインの安定性向上を目的としており、実装ロジックの変更ではなく運用の最適化です。

#124323 Extract ManifestBuilder and EventListener

  • 作成者: @agocke
  • 作成日時: 2026年02月12日 08:28:17(UTC)
  • マージ日時: 2026年02月17日 18:59:10(UTC)
  • ラベル: needs-area-label

概要

System.Diagnostics.Tracing 名前空間の実装をリファクタリングし、EventSource.cs から ManifestBuilderEventListener を専用ファイルに抽出しました。これにより EventSource.cs のサイズが 1,969行から 411行に削減され、コードの可読性と保守性が向上します。動作は変わらず、純粋なコード整理です。

変更内容

  • ManifestBuilder.cs(新規): ManifestBuilder クラスの実装を抽出(939行)
  • EventListener.cs(新規): EventListener クラスの実装を抽出(638行)
  • EventSource.cs: ManifestBuilderEventListener の定義を削除し、残りのトレーシング型のみを保持(1,558行削減)
  • System.Private.CoreLib.Shared.projitems: ビルド設定に新規ファイルを追加

パフォーマンスへの影響

影響なし。コードの物理的な配置の変更のみで、実行時の動作やメモリ使用量に変化なし。

関連Issue

なし

その他

このリファクタリングは AI コードレビューツール使用時のトークン使用量削減を目的としています。単一ファイルの行数削減により、解析効率が向上します。抽出されたクラスは System.Private.CoreLib 内部実装であり、公開 API の変更はありません。


#124161 Fix missing upper-bound guard in LastIndexOf and FindLastIndex

  • 作成者: @prozolic
  • 作成日時: 2026年02月09日 02:35:34(UTC)
  • マージ日時: 2026年02月17日 21:24:49(UTC)
  • ラベル: area-System.Collections community-contribution

概要

ImmutableList<T>LastIndexOfFindLastIndex メソッドで上限値チェックが欠落していた問題を修正しました。従来は index == Count を指定しても例外をスローせず、不正な結果を返していました。この修正により ImmutableArray<T> の動作と一致するようになります。

// 修正前:index == Count で不正な結果を返していた
var list = ImmutableList.Create(1, 2, 3);
int result = list.LastIndexOf(2, 3); // 本来は ArgumentOutOfRangeException をスロー

// 修正後:ArgumentOutOfRangeException をスロー
// int result = list.LastIndexOf(2, 3); // throws ArgumentOutOfRangeException

変更内容

  • ImmutableList_1.Node.cs: LastIndexOfFindLastIndex(int, int, Predicate<T>) に上限値チェック(index < Count / startIndex < Count)を追加。空の範囲(startIndex == 0 && count == 0)の場合は -1 を返却。
  • IndexOfTests.cs: 単一要素リストと index == Count 検証のテストケースを拡張。
  • ImmutableListTestBase.cs: FindLastIndex の単一・複数要素リスト、複数マッチのテストと startIndex == Count の例外動作を追加。
  • ImmutableListTest.cs: 複数マッチと ImmutableArray<T> との一貫性に関する回帰テストを追加。

パフォーマンスへの影響

影響なし。検証ロジックのみの追加で、正常系の処理フローに変化はありません。

関連Issue

#70950

その他

この修正は API の動作を仕様に合わせるもので、不正な引数を正しく拒否することで、呼び出し側でのバグを早期に検出します。既存コードで index == Count を指定していた場合、修正後は ArgumentOutOfRangeException をスローするため、該当コードの修正が必要になる場合があります。


#124047 Fixed some potential integer overflows in coreclr

  • 作成者: @tpa95
  • 作成日時: 2026年02月05日 14:21:23(UTC)
  • マージ日時: 2026年02月17日 21:24:13(UTC)
  • ラベル: area-GC-coreclr community-contribution

概要

coreclrのガベージコレクション関連コード内で検出された2つの潜在的な整数オーバーフロー脆弱性を修正しました。Svace静的解析ツールで発見された問題で、実際の発生例は未確認ですが、セキュリティ観点から対応が必要です。

変更内容

  • gc.cpp: gc_heap::joined_youngest_desiredメソッド内の乗算演算を修正

    • num_heaps > 255の場合にuint32_tオーバーフロー発生の可能性を排除
    • 少なくとも1つのオペランドをsize_tに明示的にキャストして型昇格
  • mclist.cpp: MCList::processArgAsMCLメソッド内の文字列解析ロジックを修正

    • コマンドライン引数から入力される数値・範囲指定文字列のパース処理
    • UINT_MAXを超える数値入力時のscratch変数オーバーフロー対策
// 修正例(gc.cppの変更パターン)
// 修正前: uint32_t型の乗算でオーバーフロー
// 修正後: size_t型へのキャスト確保
size_t result = (size_t)num_heaps * some_value;

パフォーマンスへの影響

影響なし。明示的な型キャストの追加のため、パフォーマンス低下はありません。

関連Issue

なし

その他

  • Linux Verification Center (linuxtesting.org) のSVACE静的解析ツールにより発見
  • レポーター: Pavel Tikhomirov、Gazinformservice所属
  • コマンドライン引数(MCList処理)の入力検証強化により、外部入力に対するロバストネスが向上します
  • セキュリティ重要度は中程度(実際の発生事例なし、潜在的脆弱性の事前対策)

#123992 Add InstructionSet_VectorT for ARM64

  • 作成者: @snickolls-arm
  • 作成日時: 2026年02月04日 09:59:19(UTC)
  • マージ日時: 2026年02月17日 17:41:24(UTC)
  • ラベル: area-CodeGen-coreclr community-contribution

概要

ARM64向けにVector<T> API用のInstructionSet定義の基盤コードを追加しました。これにより、Vector<T>を対象アーキテクチャに応じてAdvSimd/SVEに適切にリダイレクトするための抽象化レイヤーが実装されます。

変更内容

  • clrconfigvalues.h: InstructionSet_VectorTの設定値を追加(+5行)
  • corinfoinstructionset.h: InstructionSet定義にVectorT関連の定義を追加(+21行)
  • jiteeversionguid.h: JIT EEバージョンGUIDを更新(互換性対応)
  • compiler.cpp: コンパイラ初期化時のInstructionSet_VectorT処理を追加(+10行)
  • hwintrinsic.cpp: ハードウェア組み込み命令処理にVectorT対応を追加(+1行)
  • CorInfoInstructionSet.cs: マネージド側のInstructionSet定義を更新(+24行)
  • InstructionSetDesc.txt: 命令セット記述にVectorTエントリを追加(+3行)
  • ReadyToRunInstructionSetHelper.cs: ReadyToRun形式対応を追加(+1行)
  • codeman.cpp: コード管理部でVectorT命令セット処理を追加(+9行)

パフォーマンスへの影響

影響なし。本変更は基盤構造の追加のみで、実行時のパフォーマンスに直接的な影響はありません。

関連Issue

なし

その他

  • 変更はARM64専用で、複数のレイヤー(JIT、ランタイム、マネージド側)に跨る構造的な更新です
  • Vector<T>のSIMD操作を将来的にAdvSimd/SVEにマッピングするための基盤として機能します
  • JIT EEバージョンGUIDの更新により、既存バイナリとの互換性は保証される必要があります

#123925 PersistedAssemblyBuilder: Fix encoding of custom modifiers.

  • 作成者: @teo-tsirpanis
  • 作成日時: 2026年02月03日 00:08:50(UTC)
  • マージ日時: 2026年02月17日 21:29:43(UTC)
  • ラベル: area-System.Reflection.Emit community-contribution

概要

PersistedAssemblyBuilderにおけるカスタム修飾子(custom modifiers)のエンコーディングのバグを修正しました。SignatureHelperの実装を簡潔化し、Mono環境での修飾子エンコーディング処理を改善しています。Issue #123857に対応し、テストケースを追加してローカルで検証済みです。

変更内容

  • SignatureHelper.cs: カスタム修飾子のエンコーディングロジックを12行追加、56行削除(実装の簡潔化)
  • AssemblySaveTypeBuilderTests.cs: カスタム修飾子関連のテストケースを60行追加
  • ModifiedType.Mono.cs: Mono環境での修飾子エンコーディング処理を修正(16行追加、17行削除)
  • RuntimeParameterInfo.cs: 軽微な修正(1行変更)
  • System.Reflection.Emit.Tests.csproj: テスト構成の1行追加

パフォーマンスへの影響

影響なし

関連Issue

#123857

その他

  • 複数レビュワーによるレビューを経て承認されています
  • Copilotレビュー完了(新規コメントなし)
  • Mono環境と.NET Core環境の両方の署名エンコーディング処理を対象とした修正

#123909 Remove support for issues.targets

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年02月02日 19:27:44(UTC)
  • マージ日時: 2026年02月17日 20:04:47(UTC)
  • ラベル: area-Infrastructure

概要

レガシーランナーの廃止に伴い、issues.targetsファイルと関連する除外リスト管理インフラストラクチャを削除するPRです。空になったissues.targetsとそれをサポートするテスト除外機能(TestExclusion.cs、APKパッチング機能など)が完全に削除されました。これにより、テスト実行パイプラインの複雑さが低減され、メンテナンス負荷が軽減されます。

変更内容

  • テスト除外関連: TestExclusion.cs(229行削除)、TestExclusionListTasks/プロジェクト全体(56行削除)を削除
  • ランナー設定: CommandLineOptions.csからissues.targets関連オプション(8行削除)、BuildFolderSet.csから関連処理(15行削除)を削除
  • テスト実行インフラ: mergedrunnermobile.targets(28行削除)、helixpublishwitharcade.projからissues.targets処理(43行削除)を削除
  • スクリプト・ビルド定義: bringup_runtest.shbuild.cmd/projからissues.targets関連部分を削除
  • テストフレームワーク: XUnitWrapperGeneratorXHarnessRunnerLibraryから除外リスト処理を簡略化

パフォーマンスへの影響

改善:テスト実行時のフィルタリング処理が削除され、以下の処理が軽減されます

  • テストフィルタリングロジック(TestFilter.csで98行削除)の簡略化によるメモリ使用削減
  • APKパッチング処理(PatchExclusionListInApks.cs全削除)による初期化時間の短縮
  • ランナー初期化時の設定解析オーバーヘッド削減

関連Issue

なし

その他

  • 互換性: 破壊的変更です。issues.targetsに依存する外部ツールやカスタムテスト実行スクリプトは修正が必要
  • 代替機構: テスト除外が必要な場合は、新しいテストフィルタリング機構の使用が推奨される(具体的な代替案はPR説明から不明)
  • レビュー: Copilotが21ファイル中21ファイルをレビュー済み

#123892 Implement SVE2 non-temporal scatter stores

  • 作成者: @ylpoonlg
  • 作成日時: 2026年02月02日 15:44:49(UTC)
  • マージ日時: 2026年02月17日 17:55:57(UTC)
  • ラベル: area-System.Runtime.Intrinsics community-contribution

概要

ARM64プロセッサのSVE2(Scalable Vector Extension 2)命令セットに非時間的スキャッタストア(non-temporal scatter stores)機能を実装しました。これにより、メモリへのベクトルデータ書き込み時にキャッシュを迂回する最適化が可能になります。

変更内容

  • hwintrinsiccodegenarm64.cpp: SVE2非時間的スキャッタストア命令のコード生成処理を追加(43行)
  • hwintrinsiclistarm64sve.h: SVE2非時間的スキャッタストア命令の定義を追加(8行)
  • Sve2.cs / Sve2.PlatformNotSupported.cs: マネージドAPI層でSVE2非時間的スキャッタストアの公開インターフェースを実装(各362行)
  • System.Runtime.Intrinsics.cs: 参照定義ファイルに新しい非時間的スキャッタストアオーバーロードを追加(55行)
  • gentree.cpp: JITコンパイラ用のGE構文ツリー定義を更新(8行)
  • Sve2Tests.cs: ハードウェア内在関数テストを追加(63行)

パフォーマンスへの影響

非時間的ストア命令はL1/L2キャッシュをバイパスしてメモリに直接書き込むため、大規模なスキャッタ操作でメモリバンド幅を節約できます。ただし、後続のデータへのアクセスがある場合はキャッシュミスが増加する可能性があります。最適な性能向上は、キャッシュメモリを圧迫する大規模スキャッタ書き込みシナリオに限定されます。

関連Issue

#122033(SVE2スキャッタストア機能の総合実装タスク)

その他

  • ARM64 SVE2対応プロセッサ(NEON対応の次世代ARMプロセッサ)でのみ実行可能
  • PlatformNotSupportedバリアントは非対応プラットフォームでのランタイムエラーを防止

#123694 [Android][NativeAOT] Fix SIGSEGV in RandomNumberGenerator by providing weak JNI_OnLoad symbol

  • 作成者: @Copilot
  • 作成日時: 2026年01月27日 23:32:43(UTC)
  • マージ日時: 2026年02月17日 22:47:54(UTC)
  • ラベル: area-Infrastructure

概要

Android上のNativeAOT環境でRandomNumberGenerator.GetBytes()を呼び出すとSIGSEGVクラッシュが発生する問題を修正しました。原因はJNI環境(gJvm)が初期化されていなかったこと。JNI_OnLoadを弱シンボルで実装することで、静的リンク時も自動初期化が可能になります。

// 修正前:SIGSEGVで必ずクラッシュ
RandomNumberGenerator.GetBytes(1);

// 修正後:正常に動作
RandomNumberGenerator.GetBytes(1);

変更内容

  • pal_jni_onload.c: JNI_OnLoad__attribute__((weak))で弱シンボル化し、デフォルト実装としてAndroidCryptoNative_InitLibraryOnLoadを呼び出す
  • CMakeLists.txt: pal_jni_onload.cNATIVECRYPTO_SOURCESに追加し、共有・静的ライブラリ両方のビルドに含める

パフォーマンスへの影響

影響なし。ライブラリロード時の初期化処理で、実行時パフォーマンスに変化はありません。

関連Issue

dotnet/runtime#123355 - [android][NativeAOT] SIGSEGV in RandomNumberGenerator.GetBytes

その他

  • 修正は最小限で、既存のコード規約に準拠
  • ユーザーが強シンボルでJNI_OnLoadをオーバーライド可能な設計により、カスタム初期化が必要な場合に対応可能
  • Android 16エミュレータでのNativeAOT計測テストで検証予定

#122283 Rename SVE2 AddSaturate signed/unsigned addend API

  • 作成者: @ylpoonlg
  • 作成日時: 2025年12月08日 11:16:21(UTC)
  • マージ日時: 2026年02月17日 17:49:50(UTC)
  • ラベル: area-System.Runtime.Intrinsics community-contribution

概要

ARM64 SVE2のADD SATURATE命令のパブリックAPI設計を改善するPRです。従来のAddSaturateWithSignedAddend/AddSaturateWithUnsignedAddendの2つの分割されたメソッドを、単一のSve2.AddSaturateメソッドに統合しました。JIT側でオペランドの符号付き/符号なし型に基づいて、実際の命令(SQADD/UQADD vs USQADD/SUQADD)を自動選択するSpecialImportフラグを使用しています。

// 変更前
public static Vector<long> AddSaturateWithSignedAddend(...);
public static Vector<long> AddSaturateWithUnsignedAddend(...);

// 変更後
public static Vector<long> AddSaturate(...); // 複数のオーバーロード

変更内容

  • Sve2.cs / Sve2.PlatformNotSupported.cs: AddSaturateオーバーロードに統合(符号付き/符号なし加数の複数バリアント対応)
  • hwintrinsiclistarm64sve.h: 複数の内部IDをSve2.AddSaturateに統合し、SpecialImportフラグを設定
  • hwintrinsicarm64.cpp: Special-import処理を実装し、オペランド型情報(aux type)を記録
  • hwintrinsiccodegenarm64.cpp: オペランド型に基づいて具体的な命令形式を選択
  • テスト/APIコンパット: テスト生成マトリックスを更新、旧メソッド名の削除を抑制

パフォーマンスへの影響

影響なし。APIの統合であり、実装の最適化ではありません。JITのSpecialImportメカニズムにより、コンパイル時に適切な命令が選択されるため、実行時パフォーマンスは変わりません。

関連Issue

#121961(SVE2 API設計の承認に対応)

その他

  • 破壊的変更: AddSaturateWithSignedAddend/AddSaturateWithUnsignedAddendは削除されました。既存コードはコンパイルエラーが発生し、新しいAddSaturateAPIへの移行が必要です
  • APIコンパット: ApiCompatBaseline.xmlに抑制エントリを追加し、ベースラインの互換性チェックに対応

目次