Pull Request on 2026年06月29日

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

注意点

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


目次

  1. #129984 wasm: fix R2R generic dictionary size-check off-by-one
  2. #129974 Chrome upgrade PR should bump mac versions as well.
  3. #129965 Disable System.Text.Json polymorphic source-gen tests on NativeAOT
  4. #129964 [main] Update dependencies from dnceng/internal/dotnet-optimization
  5. #129963 Implement Assembly.GetCallingAssembly for native AOT
  6. #129954 coreclr: implement Environment.CurrentManagedThreadId via ManagedThreadId.Current
  7. #129909 [release/10.0] Surface scheduled outerloop Helix work item failures (backport of #129049, #129629)
  8. #129908 [release/9.0] Surface scheduled outerloop Helix work item failures (backport of #129049, #129629)
  9. #129892 Support multi-connect on non-dual-mode IPv6
  10. #129875 [release/10.0] Source code updates from dotnet/dotnet
  11. #129862 [release/10.0] Pass correct search path to DllImportResolver for default flags on Mono
  12. #129797 Ensure we do not try to inline async versions of pinvokes
  13. #129791 Make crossbuilds faster
  14. #129703 [Wasm RyuJIT] Codegen for Const Vector Create and Basic Packed SIMD operations
  15. #129611 [ci-scan-feedback] Add pipeline-category gate to fixer prompt
  16. #129528 JIT: Reset compGenTreeID on failed Materialize to avoid leaking gen tree IDs
  17. #129468 Use managed NTLM on RHEL 8 to fix NegotiateAuthentication test failures
  18. #129431 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 3010786
  19. #129282 Refactor sync/async implementations by using Adapter pattern
  20. #129141 JIT: Tail-merge robust crossJumpVictim selection
  21. #129119 Redesign CallSiteFactory constructor selection with stable arity ordering and parameter-aware ambiguity
  22. #128983 Detect CR/LF and URL-encoded CR/LF in FtpWebRequest URI and command parameters
  23. #128702 Support devirtualization for virtual methods that require an instantiating stub
  24. #128285 Allow empty string identifiers on non-flags enums in JsonStringEnumConverter
  25. #126941 Add SHA3 and SVE SHA3 APIs
  26. #126124 [wasm] Fix interpreter crash with MethodImpl .override on PortableEntryPoints

#129984 wasm: fix R2R generic dictionary size-check off-by-one

  • 作成者: @AndyAyersMS
  • 作成日時: 2026年06月29日 15:35:04(UTC)
  • マージ日時: 2026年06月29日 18:26:16(UTC)
  • ラベル: area-VM-coreclr

概要

WebAssembly向けのRead-Ahead-of-Time (R2R) コンパイルにおいて、ジェネリック辞書のサイズチェックにオフバイワンエラーが存在していました。サイズチェック条件を size < slotOffset から size <= slotOffset に修正することで、辞書が要求されたスロットに対して十分な大きさでない場合に、ヘルパーパスへの適切なフォールバックを保証します。

変更内容

  • src/coreclr/vm/wasm/dynamichelpers.S: クラスジェネリック辞書とメソッドジェネリック辞書のルックアップにおけるサイズチェック条件を < から <= に変更(計8行の変更)
    • 最終的な間接参照を実行する前に、サイズチェックを厳密化

パフォーマンスへの影響

影響なし。本変更は正確性の向上であり、パフォーマンス特性には影響しません。

関連Issue

なし

その他

  • 変更対象: WASM ポータブルエントリポイントのランタイムヘルパーコード(内部実装)
  • 修正前: size < slotOffset の条件では、size == slotOffset の境界ケースで不正なメモリアクセスが発生する可能性
  • 修正後: 辞書サイズが要求されたスロット以下の場合は確実にヘルパーパスにフォールバック

#129974 Chrome upgrade PR should bump mac versions as well.

概要

WebAssembly用Chrome/V8自動バージョンアップデート機構をmacOSに対応させるPRです。従来はLinux/Windowsのみの対応でしたが、本変更でmacOS版Chromeのバージョン管理を自動化します。また、バージョンダウングレードを防止する仕組みを追加し、手動アップグレード後の自動ダウングレードを防ぎます。

変更内容

  • UpdateChromeVersions.cs: macOS対応(props更新、環境変数エクスポート、V8バイナリURL書き換え)とバージョンダウングレード防止ロジック(新値>旧値のチェック)を実装
  • bump-chrome-version.proj: 自動バージョンアップのタスク入力にmacOSを追加
  • .github/workflows/bump-chrome-version.yml: バージョンアップPRのタイトル生成にmacOS版Chromeバージョンを含める
  • platform-matrix.yml: browser_wasm_macジョブ設定を追加
  • helix-queues-setup.yml: browser_wasm_macをmacOS ARM64 Helixキューにマッピング
  • runtime.yml: macOS版WAsmスモークテストレッグを追加(Chrome更新PRでのみ実行)
  • wasm-library-tests.yml: runOnlyOnChromeVersionUpdateパラメータでジョブ条件を制御
  • WasmRunnerTemplate.sh: macOS環境対応の調整

パフォーマンスへの影響

影響なし

関連Issue

#129974、#124852、#129851、#129934

その他

  • CI/CDワークフロー(内部実装)の変更のため、公開APIへの影響なし
  • macOSスモークテストは自動アップグレードPRでのみ実行される条件付き実行設計

#129965 Disable System.Text.Json polymorphic source-gen tests on NativeAOT

  • 作成者: @Copilot
  • 作成日時: 2026年06月29日 05:42:31(UTC)
  • マージ日時: 2026年06月29日 11:45:11(UTC)
  • ラベル: area-System.Text.Json

概要

System.Text.Json の多態的シリアライゼーション テスト 12 メソッドを NativeAOT で条件付きスキップするよう修正しました。これらのテストは CustomPolymorphismResolver を使用しており、ランタイム リフレクションに依存するため NativeAOT 環境では実行できません。共有基底クラスの変更により、4つの SourceGeneration テストクラスすべての亜種をカバーしています。

変更内容

  • ファイル: tests/Common/PolymorphicTests.CustomTypeHierarchies.cs
    • 12 メソッドの属性を [Fact]/[Theory] から [ConditionalFact]/[ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotNativeAot))] に変更
    • 対象メソッド:
      • 6 つの Fact: PolymorphicClass_CustomConfigWith*_InvalidTypeDiscriminatorMetadata_ShouldThrowJsonException、PolymorphicDictionaryInterface_Serialization/Deserialization
      • 6 つの Theory: PolymorphicClass_CustomConfigWith{BaseType,NearestAncestor}Fallback_TestData{,Array}_{Serialization,Deserialization}

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 既存の PlatformDetection.IsNotNativeAot スキップパターンに準じた実装です
  • 影響を受けるのはテストコード(内部実装)のみで、公開 API に変更はありません
  • CustomPolymorphismResolver はランタイム リフレクションが必須な IJsonTypeInfoResolver の実装であり、NativeAOT 環境での実行不可は技術的な制約です

#129964 [main] Update dependencies from dnceng/internal/dotnet-optimization

概要

dotnet-optimization リポジトリから最適化関連の依存関係を更新するPull Requestです。MIBC(Mitigating Branch Collisions)ランタイム最適化データとPGO(Profile-Guided Optimization)データが複数のプラットフォーム(Linux ARM64/x64、Windows NT ARM64/x64/x86)向けに更新されています。

変更内容

  • eng/Version.Details.props: 依存関係バージョン情報の更新(+6/-6行)
  • eng/Version.Details.xml: 依存関係メタデータの更新(+12/-12行)

更新された依存関係:

  • optimization.linux-arm64.MIBC.Runtime
  • optimization.linux-x64.MIBC.Runtime
  • optimization.windows_nt-arm64.MIBC.Runtime
  • optimization.windows_nt-x64.MIBC.Runtime
  • optimization.windows_nt-x86.MIBC.Runtime
  • optimization.PGO.CoreCLR

バージョン範囲:1.0.0-prerelease.26276.2 → 1.0.0-prerelease.26318.1

パフォーマンスへの影響

影響あり(詳細データ不掲載)。MIBC最適化データとPGO最適化データの更新により、ランタイムパフォーマンスが改善される可能性があります。ただし、具体的なベンチマーク数値は提供されていません。

関連Issue

なし

その他

  • 自動化された依存関係更新PR(dotnet-maestro[bot]による作成)
  • ビルド日時:2026年6月23日(UTC)
  • 複数プラットフォームの最適化データを一括更新

#129963 Implement Assembly.GetCallingAssembly for native AOT

概要

Native AOT環境で Assembly.GetCallingAssembly() を実装します。スタックトレースメタデータを使用して呼び出し元のアセンブリを特定する方式で、スタックトレース情報が利用可能な場合にのみサポートされます。CoreCLRではF5デバッグ下では動作しないため、これは破壊的変更となります。

変更内容

  • Assembly.NativeAot.cs: スタックフレーム情報と診断メソッド情報を使用した GetCallingAssembly() の Native AOT 実装を追加
  • Assembly.CoreCLR.cs: 既存の実装に StackTrace.IsSupported ゲートを追加
  • Strings.resx: スタックトレースサポートが無効な場合のエラーメッセージを追加
  • CorInfoImpl.cs: canTailCall ロジックを共通JITインターフェースに統一し、ILC/crossgen2間での一貫性を確保
  • CorInfoImpl.RyuJit.cs/CorInfoImpl.ReadyToRun.cs: 重複していた canTailCall 実装を削除
  • テストファイル: Native AOT対応テストを再度有効化し、デリゲート経由の呼び出しテストを追加

パフォーマンスへの影響

影響なし。本変更はAPI機能の実装であり、スタックウォーキングはAPI呼び出しユーザーによる明示的な実行時のみです。

関連Issue

#129963

その他

  • スタックトレース情報が利用できない環境では、Assembly.GetCallingAssembly() は例外をスロー(公開API仕様)
  • スタティックコンストラクタ(.cctor)内での動作をサポートするため、スキップ対象メソッドのリストを保持(CoreCLRの実装に合わせた設計)
  • ILC(Intermediate Language Compiler)とcrossgen2間での canTailCall 動作が統一されました

#129954 coreclr: implement Environment.CurrentManagedThreadId via ManagedThreadId.Current

  • 作成者: @Copilot
  • 作成日時: 2026年06月29日 00:58:35(UTC)
  • マージ日時: 2026年06月29日 21:11:07(UTC)
  • ラベル: area-System.Threading

概要

CoreCLR上のEnvironment.CurrentManagedThreadId実装を、FCall(JIT_GetCurrentManagedThreadId)からManagedThreadId.Currentへの単純なスレッド静的読み取りに変更します。これにより、NativeAOTおよびMonoと同じアプローチに統一され、パフォーマンスが向上します。

変更内容

  • Environment.CoreCLR.cs: InternalCallの外部プロパティを=> Threading.ManagedThreadId.Currentに置き換え、AggressiveInlining属性を保持してインライン化を促進
  • ecalllist.h: gEnvironmentFuncsからJIT_GetCurrentManagedThreadIdのFCall登録を削除
  • corelib.h: METHOD__ENVIRONMENT__CURRENT_MANAGED_THREAD_IDメタデータを追加
  • jithelpers.h: CORINFO_HELP_GETCURRENTMANAGEDTHREADIDを動的JITヘルパーからILベースのヘルパーへ変更し、マネージメソッドにバインド
  • jithelpers.cpp/jitinterface.h: ネイティブ実装のJIT_GetCurrentManagedThreadIdを削除
  • importercalls.cpp: Thread.CurrentThread.ManagedThreadIdイントリンシックがCORINFO_HELP_GETCURRENTMANAGEDTHREADIDヘルパーをユーザーコール化し、インライン候補をマークしてEnvironment.CurrentManagedThreadIdと同じスレッド静的読み取りに統一

パフォーマンスへの影響

改善: FCall経由のメソッド呼び出しのオーバーヘッドが排除され、スレッド静的フィールドの直接読み取りになるため、呼び出し時のレイテンシが大幅に削減されます。AggressiveInlining属性により、JITがスレッド静的読み取りを呼び出し箇所にインライン化できるため、関数呼び出しコストがゼロになります。

関連Issue

#129954

その他

  • Thread.CurrentThread.ManagedThreadIdイントリンシックとEnvironment.CurrentManagedThreadIdは同じJITヘルパーに統一され、両者が同一のインライン化されたスレッド静的読み取りに解決します
  • 検証済み: main thread、新規マネージスレッド、スレッドプール上のスレッドで動作確認およびJitStress/TailcallStressでのアサーション検証が完了

#129909 [release/10.0] Surface scheduled outerloop Helix work item failures (backport of #129049, #129629)

概要

スケジュール実行されるOuterloopビルドにおいて、Helixテスト失敗時の失敗処理を改善するバックポート。Scheduled outerloop実行時(always:false)にHelix work item/テスト失敗がビルド全体を失敗させないようにし、同時に失敗を警告として可視化する変更を release/10.0 ブランチに適用します。これにより、フレキなテストによるAzDOの不要な再キューイングを防止します。

変更内容

  • eng/pipelines/libraries/helix.yml: failOnTestFailures/warnOnTestFailures パラメータ設定を追加(+12行)
  • eng/pipelines/libraries/outerloop.yml: Scheduled outerloop実行時のHelix失敗処理設定を追加(+17行)
  • src/libraries/sendtohelixhelp.proj: Helix統合の失敗処理ロジック追加(+16行)

マージコンフリクトは helix.yml のSuperPmiパラメータと outerloop.yml のWindows leg(net481使用)について、ブランチ固有の内容を保持しながら新しい失敗処理設定を適用する形で解決されています。

パフォーマンスへの影響

影響なし

関連Issue

#129049、#129629

その他

本Pull Requestはrelease/10.0ブランチへのバックポートであり、GitHub Copilotの支援を受けて作成されています。


#129908 [release/9.0] Surface scheduled outerloop Helix work item failures (backport of #129049, #129629)

概要

Scheduled outerloop Helix ビルドの失敗処理を改善するバックポート。Helix テスト失敗時に build を失敗させない(always:false)一方で、失敗を AzDO timeline に警告として表示し、不安定なテストによる不要な再キューイングを防止します。

変更内容

  • eng/pipelines/libraries/helix.yml: Scheduled outerloop Helix work item 失敗を警告として surface するための設定追加(+12行)
  • eng/pipelines/libraries/outerloop.yml: Scheduled outerloop ビルドで Helix テスト失敗時に build を失敗させない設定追加(+17行)
  • src/libraries/sendtohelixhelp.proj: Helix 失敗サーフェス処理の実装追加(+16行)

パフォーマンスへの影響

影響なし

関連Issue

#129049、#129629

その他

  • release/9.0 ブランチへのバックポート(#129049 と #129629 の組み合わせ)
  • helix.yml のマージ競合(SuperPmi パラメータ)は両方を保持して解決
  • GitHub Copilot アシストで作成

#129892 Support multi-connect on non-dual-mode IPv6

概要

IPv6デュアルモードをサポートしないOpenBSDやWASIなどのOS上で、複数のアドレスファミリーへの接続を可能にする改善です。これらのプラットフォームでは単一のソケットで両方のアドレスファミリーに到達できないため、接続時に必要に応じてソケットハンドルを再作成します。この修正により、OpenBSDでのTLSエンドポイントへの接続失敗(dotnet restoreでHttpRequestException hr=0x80004005が発生していた)が解決されます。

変更内容

  • Socket.Unix.cs: Unix系OSにおいて、非デュアルモードのIPv6ソケット再接続ロジックを追加(+15行)
  • Socket.Windows.cs: Windows固有の再接続処理を追加(+4行)
  • SocketAsyncEventArgs.cs: 非同期接続イベント処理で、アドレスファミリー変更時のソケットハンドル再作成ロジックを実装(+6行、-2行)

パフォーマンスへの影響

OpenBSDやWASIではアドレスファミリー切り替え時にソケットハンドルの再作成が発生するため、わずかなオーバーヘッドが生じる可能性があります。ただし、デュアルモード非対応環境では接続失敗を回避するための必要な処理であり、影響は許容範囲です。

関連Issue

#129892

その他

  • OpenBSD環境でのIPv6デュアルモード非対応が根本原因であり、この修正はそのOS固有の制限に対応するものです
  • Windows環境でも互換性のための処理が追加されています

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

概要

dotnet/dotnetリポジトリからのコードフロー更新です。VMRの2026年6月26日のビルド(build/320383)から、複数の依存パッケージとビルドツール、ネイティブコンパイル関連の設定ファイルが同期されました。

変更内容

  • 依存パッケージ更新: Microsoft.CodeAnalysis系(5.0.0-2.26319.104→5.0.0-2.26326.102)、Microsoft.DotNet.Arcade.Sdk系(10.0.0-beta.26319.104→10.0.0-beta.26326.102)、NuGet系(7.0.3-rc.32004→7.0.3-rc.32702)など複数のツールチェーン関連パッケージを更新
  • ネイティブコンパイル設定追加: LocateNativeCompiler.targets、NativeAotSupported.propsを新規追加
  • クロスコンパイル環境構築スクリプト更新: build-rootfs.sh、install-debs.py、toolchain.cmakeを改修(Linuxディストリビューション環境セットアップ処理の拡充)
  • ビルド/バージョン定義更新: Version.Details.xml/propsおよびglobal.jsonを同期

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本PRは自動化されたコードフロー更新(maestro[bot]による)であり、VMRから複数のリポジトリ(arcade、aspnetcore、runtime、sdk、sourcelink、templating、windowsdesktop、wpf)の関連変更が含まれています。


#129862 [release/10.0] Pass correct search path to DllImportResolver for default flags on Mono

概要

Monoランタイムで、ユーザーが検索フラグを指定しない場合、DllImportResolverに渡される検索パスが誤って明示的なDllImportSearchPath.AssemblyDirectory値になっていた問題を修正。正しくは、属性値またはnull(ユーザーが指定していない場合)を渡すべき。PR #114756の後、AssemblyDirectoryのみ指定すると他のデフォルト検索が行われなくなったため、この回帰が発生していた。

変更内容

  • src/mono/mono/metadata/native-library.c: フラグがユーザー指定されたかどうかを追跡する情報をリゾルバー呼び出しに伝播させ、正しい検索パス値(属性値またはnull)をDllImportResolverに渡すよう修正(+5/-5行)
  • src/tests/Interop/DllImportSearchPaths/DllImportSearchPathsTest.cs: 回帰検証用の自動テストを追加(+46行)

パフォーマンスへの影響

影響なし

関連Issue

#129798、#114756(回帰の原因となったPR)

その他

  • 顧客報告による問題
  • Mono専用の修正
  • release/10.0ブランチへのバックポート
  • リスク度:低(単純な真偽値の伝播修正)

#129797 Ensure we do not try to inline async versions of pinvokes

  • 作成者: @jakobbotsch
  • 作成日時: 2026年06月24日 12:30:41(UTC)
  • マージ日時: 2026年06月29日 20:52:48(UTC)
  • ラベル: area-VM-coreclr

概要

P/Invokeの非同期バリアント(async variant)がインライン化されるべきではないことを保証するための修正です。通常、P/Invokeはインライン化に失敗しますが、非同期バリアントの場合はその呼び出しが成功してしまい、EH情報取得時にアサーション失敗が発生していました。この修正により、IL/EHメタデータ取得時に常に通常バリアント(ordinary variant)のMethodDescを使用するようにしています。

変更内容

  • method.hpp: MethodDesc::GetOrdinaryVariantIfAsyncVersion()ヘルパーメソッドを追加し、非同期バリアントメソッドを通常バリアントにマッピング
  • jitinterface.h: getMethodInfoWorkerの署名を変更し、IL/EHメタデータのソースとなるMethodDesc(ilFtn)を明示的に受け取るように拡張
  • jitinterface.cpp: IL/EH情報取得パスを更新し、ilFtnを通常バリアントに正規化して、非同期P/Invokeバリアントのインライン化/メタデータ不一致を防止

パフォーマンスへの影響

影響なし

関連Issue

#129782

その他

  • 内部実装(CoreCLR JIT/EEインタフェース)の修正であり、公開APIへの影響はありません
  • 非同期P/Invokeバリアントに関連するコンパイルエラーの回避が目的です

#129791 Make crossbuilds faster

概要

クロスビルド(異なるアーキテクチャ間のビルド)を高速化するため、ホストアーキテクチャ用のcrossgen2/ILCツールが、すべてのJITフレーバーではなく、ターゲットアーキテクチャ専用の単一JITのみをビルド・パッケージするよう変更します。CI時間を約5分削減する予定です。

変更内容

  • AotCompilerCommon.props: JIT/jitinterfaceコピーロジックを集約。クロスホスト向けには単一のJIT(ターゲット専用)のコピー・リネーム処理を実装
  • Subsets.props: クロスツール依存関係のサブセット選択をClrAllJitsSubsetからClrJitSubset(単一JIT)に変更
  • ILCompiler.props/crossgen2.props: 個別プロジェクトのJITコピーロジックを削除(AotCompilerCommonに統合)
  • CMakeLists.txt: JIT関連の変更
  • global-build-job.yml: Windows ARM64タイムアウト下限ロジックを削除(タイムアウト値指定がないテンプレートでリグレッション発生の可能性あり)

パフォーマンスへの影響

  • クロスビルド時間を約5分短縮
  • ホストアーキテクチャ用crossgen2/ILCの不要なネイティブビルド作業とコンテンツコピーを削減
  • 内部実装の最適化のため、ユーザー向けランタイム性能への直接的な影響なし

関連Issue

#129791

その他

  • 本変更は内部ビルドシステムの最適化であり、公開APIへの影響なし
  • global-build-job.ymlの変更により、タイムアウト値を明示的に指定していないビルドテンプレートでタイムアウト問題が再発する可能性がある点に注意が必要

#129703 [Wasm RyuJIT] Codegen for Const Vector Create and Basic Packed SIMD operations

概要

WebAssembly向けRyuJITで、定数引数を用いたVector128.Createと大量のPackedSIMD操作のコード生成をサポート。定数ベクトル作成はv128.constに最適化され、表駆動方式により複数のSIMD演算(v128、(v128, v128)、(v128, v128, v128)型)に対応。

非定数Vector128.CreateとSIMD比較演算はスコープ外(比較は符号付き比較の実装に課題)。

変更内容

  • ISA設定: Wasm32のISAフラグ(WasmBase、PackedSimd、Vector128)を有効化し、ベースラインにsimd128を追加
  • 定数ベクトル: GT_CNS_VECノードをv128.constに降低化
  • ロード/ストア: TYP_SIMD16に対応したv128_load/v128_store命令を選択
  • インポータ/リスト: hwintrinsicwasm.cppで定数Vector128.CreateをGT_CNS_VECに変換
  • コード生成: hwintrinsiccodegenwasm.cppに表駆動型Wasm HW内在関数発行機構を実装
  • ISA検証: hwintrinsic.cppにPackedSIMDのISA範囲とsimdSizeチェックを追加
  • Lowering調整: Wasm向けにTYP_SIMD12の制限を緩和、SIMD系GT_HWINTRINSICを許可

パフォーマンスへの影響

影響なし(機能追加段階のため、ベンチマーク結果なし)

関連Issue

なし

その他

  • ARM64およびx86向けの既存HW内在関数コード(約140行)をリファクタリングで削減
  • 非定数ベクトル作成(追加のローリング作業が必要)と比較演算(i64符号なし比較がWasm非サポート)は将来の対応予定
  • superpmi.pyに追加の設定処理を含む

#129611 [ci-scan-feedback] Add pipeline-category gate to fixer prompt

  • 作成者: @Copilot
  • 作成日時: 2026年06月19日 08:46:04(UTC)
  • マージ日時: 2026年06月29日 07:03:39(UTC)
  • ラベル: area-Infrastructure

概要

CI失敗自動修正ワークフローにパイプラインカテゴリーゲートを追加し、JIT/GC/PGO関連のコードジェン圧力テストの失敗を既存の修正ポリシーテーブルから実装レベルで強制するものです。これにより、これらのパイプラインの失敗に対して製品コードの修正やワークアラウンドPRを開かせず、ループイン機構にルーティングするようになります。

変更内容

  • .github/workflows/ci-failure-fix.md — Step 5.1(修正ポリシーテーブル)とStep 5.2(修正試行)の間に新しいStep 5.1.1「Pipeline-category gate」を追加
    • AzDO APIから取得したビルド定義ID(109–160、230、235範囲)またはパイプライン/脚部名(jitstress、gcstress、pgo、r2r、superpmi、jit-cfg、jit-experimental、interpreter など、大文字小文字区別なし)でマッチするKBEを検出
    • マッチしたKBEはStep 5.5(ループインコメント)に短絡ルーティングし、製品修正とワークアラウンド両者を明示的に禁止
    • それ以外はStep 5.2に処理を継続

パフォーマンスへの影響

影響なし(プロンプトのみの変更で、ロックファイルの再コンパイルは不要)

関連Issue

#129360 (PGOコードジェンバグ)

その他

修正ポリシーテーブルが「参考」から「強制可能」に変わります。ci-failure-fix.lock.ymlは実行時に{{#runtime-import .github/workflows/ci-failure-fix.md}}経由でマークダウンをインポートするため、ロックファイルの再コンパイルは不要です。


#129528 JIT: Reset compGenTreeID on failed Materialize to avoid leaking gen tree IDs

  • 作成者: @Copilot
  • 作成日時: 2026年06月17日 14:58:34(UTC)
  • マージ日時: 2026年06月29日 12:21:49(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITのスカラー進化(SCEV)IR実装化処理で、失敗時にcompGenTreeID(デバッグ専用フィールド)がリセットされず、フェーズがMODIFIED_NOTHINGを報告すべき場合に矛盾が生じていた問題を修正。Materialize(Scev* scev)で実装化を試みる前にcompGenTreeIDのスナップショットを取得し、失敗時に復元することで、孤立したノードのID増加を防止。

INDEBUG(unsigned prevGenTreeID = m_compiler->compGenTreeID);
if (Materialize(scev, true, &result, &vnp))
{
    return result;
}
INDEBUG(m_compiler->compGenTreeID = prevGenTreeID);
return nullptr;

変更内容

  • scev.cpp: GenTree* Materialize(Scev* scev)オーバーロードで、IR実装化前にcompGenTreeIDをスナップショットし、実装化失敗時(AddRecノード、TYP_REF/TYP_BYREFの非nullコンスタント、32ビット×TYP_LONGなど)に復元。スナップショット/リセット処理はINDEBUGマクロで囲まれている。
  • Runtime_129527.cs: Fuzzlyn生成テストケースの回帰テストを追加。[ConditionalFact]でIsMultithreadingSupportedチェック付き。
  • Regression_ro_2.csproj: テストプロジェクトへの登録。

パフォーマンスへの影響

影響なし(変更はINDEBUGで囲まれたデバッグ専用フィールド操作のみ)

関連Issue

#129527

その他

  • MaterializeVNはcreateIR=falseを使用するため、IR割り当てが発生せず変更不要。
  • 回帰テストはTask.Yield()継続でブロックするため、シングルスレッドランタイムでのデッドロック防止のため条件付き実行。

#129468 Use managed NTLM on RHEL 8 to fix NegotiateAuthentication test failures

概要

RHEL 8環境でgss-ntlmssp 1.2.0がOpenSSL 1.1.1と組み合わせて使用される場合、NTLM Type 3(認証)メッセージ生成時に失敗する問題を修正します。マネージドNTLM実装を有効化する条件にRHEL 8(OpenSSL 3未満)を追加し、テスト失敗を解決します。

変更内容

  • src/libraries/System.Net.Security/tests/UnitTests/NegotiateAuthenticationTests.cs: UseManagedNtlm条件にPlatformDetection.IsRedHatFamily && !PlatformDetection.IsOpenSsl3を追加し、RHEL 8でマネージドNTLM実装を有効化

パフォーマンスへの影響

影響なし(テストの信頼性向上のための修正)

関連Issue

#129468

その他

  • RHEL 8(OpenSSL 1.1.1)ではマネージドNTLM実装を使用し、RHEL 9/10(OpenSSL 3.x)では既存の動作を維持
  • 同様の問題はUbuntu 24/26およびopenSUSE 16で既に対応済み
  • RHEL 8.10 s390xで検証済み:マネージドNTLM有効時はNTLMハンドシェイク完全成功、Type 3メッセージ(356バイト)を正常に生成

#129431 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 3010786

概要

OneLocBuildタスクによって自動生成されたローカライズファイル(xlf形式)のチェックインです。System.Runtime.InteropServices生成ツールの多言語リソース文字列が更新されました。翻訳に問題がある場合は、localization pipelineに報告してください。

変更内容

  • System.Runtime.InteropServices/gen/Common/Resources/xlf/ 配下の13言語のリソースファイル(Strings.*.xlf)を更新
    • 対象言語:英語(cs)、ドイツ語(de)、スペイン語(es)、フランス語(fr)、イタリア語(it)、日本語(ja)、韓国語(ko)、ポーランド語(pl)、ポルトガル語ブラジル(pt-BR)、ロシア語(ru)、トルコ語(tr)、中国語簡体字(zh-Hans)、中国語繁体字(zh-Hant)
    • 各ファイルで60行の追加、15行の削除

パフォーマンスへの影響

影響なし(ローカライズリソースのメンテナンスのため)

関連Issue

なし

その他

  • 自動生成PR(dotnet-botによる)
  • ローカライズプロセスの詳細:https://aka.ms/AllAboutLoc
  • 翻訳に関する問題報告:https://aka.ms/icxLocBug
  • OneLocBuild Wiki:https://aka.ms/onelocbuild

#129282 Refactor sync/async implementations by using Adapter pattern

概要

System.Formats.Tarライブラリの同期・非同期実装の重複を排除するため、Adapterパターンを導入してリファクタリングしました。静的抽象インターフェースIReadWriteAdapterとSyncReadWriteAdapter/AsyncReadWriteAdapter実装を使用して、同期・非同期APIを共有の汎用*CoreAsync<TAdapter>メソッドに統一します。

変更内容

  • System.Formats.Tar関連
    • TarReadWriteAdapter.cs(新規): 静的抽象IReadWriteAdapterインターフェースと2つの実装(同期・非同期用)を追加
    • TarReader.cs: 同期・非同期読込APIを統一された汎用コア実装に統合(-211行)
    • TarWriter.cs: 同期・非同期書込APIを統一された汎用コア実装に統合(-63行)
    • TarHeader.Read.cs/Write.cs: ヘッダ読込・書込ロジックをアダプタベースのコアメソッドに統合(合計-224行)
    • TarHelpers.cs: ストリーム操作ヘルパーを汎用コアメソッドに統合(-55行)
    • GnuSparseStream.cs: 同期・非同期実装をアダプタパターンで統合(-75行)
  • その他
    • System/ReadWriteAdapter.cs: 汎用アダプタ基盤の共有実装を展開
    • 各プロジェクトファイル更新(参照追加)

パフォーマンスへの影響

パフォーマンス回帰の可能性として指摘されている点:

  • WriteEmptyPaddingCoreAsyncが512バイト以下のパディング書込時にArrayPoolを使用するようになった。従来の同期実装ではstackallocを使用していたため、同期アーカイブ作成時にエントリごとのpool rent/returnコストが発生する。

ベンチマーク結果は記載されていません。

関連Issue

#127378

その他

  • Copilotのコード検証で、小規模パディング書込時の最適化提案(同期専用のstackalloc高速パス)が指摘されています
  • 内部実装の変更であり、公開API面での破壊的変更はありません
  • 複数回のレビューラウンドを経ており、変更の安定性を確認しています

#129141 JIT: Tail-merge robust crossJumpVictim selection

概要

JIT の tail-merge 処理における crossJumpVictim 選択ロジックを改善しました。従来は候補の処理順序に依存していたため、ランダムな差分が発生していました。早期終了を削除し、ブロック番号に基づく tie-break ロジックを追加することで、選択を順序に依存しない堅牢な実装に変更しました。

変更内容

  • src/coreclr/jit/fgopt.cpp: crossJumpVictim 選択ロジックを改善
    • 早期終了(early out)を削除
    • 同点の候補に対し predBlock->bbNum < crossJumpVictim->bbNum を基準とした tie-break を追加
    • 選択の順序独立性を確保し、後続の最適化(複数セットの一括処理)のための準備を実施

パフォーマンスへの影響

影響なし(ロジック改善により JIT コード生成の安定性は向上しますが、実行時パフォーマンスの変化は予想されません)

関連Issue

なし

その他

  • 実装者のコメント: 現在の tie-break(ブロック番号比較)は副次的に BBF_NEEDS_GCPOLL ブロック回避を実現していますが、将来的には明示的なヒューリスティックとして分離することが望ましいと指摘されています
  • 本 PR は zero-diff を目指した後続 PR の準備段階です

#129119 Redesign CallSiteFactory constructor selection with stable arity ordering and parameter-aware ambiguity

概要

CallSiteFactory.CreateConstructorCallSite の構築者選択ロジックを再設計し、複数のコンストラクタが存在する場合の動作を決定論的にしました。従来の不安定な Array.Sort に依存する実装を、安定なアリティ降順(arity-desc)での選択に置き換え、キーサービスと既定値パラメータを考慮したパラメータ認識の曖昧性検出を実装しています。

変更内容

  • CallSiteFactory.cs

    • ソート・ウォーク方式を融合挿入パスに置き換え、安定なアリティ降順でコンストラクタを並べ替え、GetParameters() を1回のみ呼び出すようにキャッシュ
    • 型のみの曖昧性追跡を ServiceIdentifier を用いたパラメータ認識の追跡に変更
    • 同じアリティで同一パラメータ型セットの場合、宣言順で決定論的に選択
    • 異なるアリティで解決可能な構築者は曖昧性例外を一貫して発生
    • キーサービスアイデンティティ(キー+型)を区別して処理
    • 選択された構築者の既定値で満たされるパラメータが小さい構築者にある場合、その小さい構築者を無視
  • CallSiteFactoryTest.cs

    • 同一アリティ・同一パラメータ型セット・異なるパラメータ順序での決定論的選択を検証
    • 同一アリティ・異なるパラメータ型・両方解決可能での曖昧性例外を検証
    • 異なるアリティでの曖昧性検出を両方の宣言順で検証
    • 同一パラメータ型で異なる [FromKeyedServices] キーでのキーサービスアイデンティティ処理を検証
    • 既定値パラメータを使用する場合の小さい構築者の無視動作を検証(登録有無両方)
    • 既存の短い解決可能/長い非解決可能カバレッジを保持

パフォーマンスへの影響

  • メモリ割り当て削減:融合挿入パスで不要な一時配列割り当てを削減
  • 実行速度改善:GetParameters() の呼び出しが複数回から1回に削減
  • ベンチマーク結果の記載なし

関連Issue

#129119

その他

  • 既存の短絡処理(コンストラクタ0個または1個)と例外メッセージ形式は保持
  • .NET の依存性注入コンテナの構築者選択ロジック(内部実装)の改善
  • 公開APIには直接的な影響なし

#128983 Detect CR/LF and URL-encoded CR/LF in FtpWebRequest URI and command parameters

  • 作成者: @Copilot
  • 作成日時: 2026年06月04日 11:51:36(UTC)
  • マージ日時: 2026年06月29日 08:10:18(UTC)
  • ラベル: area-System.Net

概要

FtpWebRequestとFtpControlStreamの入力検証を強化し、CR/LFとそのURL符号化形式(%0D/%0A)をより早期かつ一貫して検出・拒否します。従来は\r\nの組み合わせのみを検出していましたが、単独の\rや\n、またはURL符号化された形式が検出漏れしていました。

// URIの検証(リテラルとURL符号化の両方をチェック)
if (uri.OriginalString.AsSpan().ContainsAny('\r', '\n') ||
    uri.OriginalString.Contains("%0A", StringComparison.OrdinalIgnoreCase) ||
    uri.OriginalString.Contains("%0D", StringComparison.OrdinalIgnoreCase))
    throw new FormatException(SR.net_ftp_no_newlines);

// FormatFtpCommandの検証(リテラルCR/LFのみチェック)
if (parameter is not null && parameter.AsSpan().ContainsAny('\r', '\n'))
    throw new FormatException(SR.net_ftp_no_newlines);

変更内容

  • FtpWebRequest.cs: コンストラクタの改行検証を拡張。リテラル\r、\nおよびURL符号化形式%0D、%0A(大文字小文字問わず)を個別に検出し、FormatExceptionを即座にスロー
  • FtpControlStream.cs: FormatFtpCommandメソッドを拡張し、コマンドパラメータ内のリテラル\r、\nをチェック(パラメータは既にデコード済みのためURL符号化形式は検査対象外)
  • Strings.resx: エラーメッセージを"CRLF character pair is not allowed in FtpWebRequest inputs."から"CR and LF characters are not allowed in FtpWebRequest inputs."に更新
  • FtpWebRequestTest.cs: URI構築、認証情報、RenameToプロパティなどのシナリオをカバーするテストケースを追加・拡張

パフォーマンスへの影響

影響なし。検証ロジックの追加は初期化時のみで、実行時パフォーマンスへの悪影響はありません。

関連Issue

#128983

その他

  • API変更: 破壊的変更。従来受け入れられていた単独の\rや\n、URL符号化形式を含むURIやコマンドパラメータが新たに拒否されます
  • セキュリティ影響: FTPコマンド・インジェクション攻撃(CRLF injectionの一種)を防ぐための検証強化
  • 内部実装(System.Net.Requestsライブラリ)の変更です

#128702 Support devirtualization for virtual methods that require an instantiating stub

概要

仮想メソッドのデバイルチュアライゼーション機能を拡張し、インスタンス化スタブを必要とするジェネリック仮想メソッド(GVM)とジェネリックインターフェースのデフォルト実装メソッド(DIM)をサポートしました。JITの事前リファクタリングにより、ランタイムで必要な実装パラメータを自動的に計算・渡すことで、これまで失敗していたデバイルチュアライゼーションが可能になります。

変更内容

  • VM JIT インターフェース(jitinterface.cpp):ジェネリック DIM と共有 GVM の早期終了を削除し、実装パラメータルックアップ(instParamLookup)を計算。インスタンス化スタブのアンラップをトークンルックアップコンテキスト設定後に変更
  • マネージド JIT インターフェース(CorInfoImpl.cs):R2R と NativeAOT の双方でジェネリック DIM/GVM/配列インターフェースのデバイルチュアライゼーション時に instParamLookup を設定。R2R は TypeDictionary ヘルパーを使用し、NativeAOT は現在 FAILED_CANON を返却
  • デバイルチュアライゼーションマネージャー(DevirtualizationManager.cs):共有 GVM の無条件 Canon 終了を削除。R2R では変異型ディスパッチ時のみ DIM 解決を失敗させる。NativeAOT は従来の厳密な動作を保持

パフォーマンスへの影響

大幅な改善が確認されます:

  • JIT コンパイルの場合:99 バイト → 42 バイト(57% 削減)。仮想関数ポインタ参照と遅延ルックアップが排除され、文字列リテラルへの直接呼び出しに最適化
  • Ready-to-Run(R2R)の場合:相応の最適化により動的ディスパッチが削減
  • NativeAOT の場合:ルックアップロジックが簡素化(97 バイト → 122 バイト)されて柔軟性が向上。ただし GVM デバイルチュアライゼーションは今後の改善予定

関連Issue

#9588 #112596 #43668

その他

  • 破壊的変更なし(パブリック API への影響なし)
  • テストが追加され、ジェネリック仮想メソッドとデフォルトインターフェースメソッドの双方のデバイルチュアライゼーションをカバー
  • NativeAOT での GVM デバイルチュアライゼーションはスコープ外で今後の改善対象

#128285 Allow empty string identifiers on non-flags enums in JsonStringEnumConverter

  • 作成者: @Copilot
  • 作成日時: 2026年05月16日 13:03:08(UTC)
  • マージ日時: 2026年06月29日 15:34:16(UTC)
  • ラベル: area-System.Text.Json

概要

JsonStringEnumConverterの検証ロジックを緩和し、非Flags enumでは[JsonStringEnumMemberName("")]による空文字列識別子の使用を許可します。Flags enumでは引き続き空文字列を拒否します(カンマ区切り解析の曖昧性を回避)。これにより、XSD派生enumで空文字列をJSON表現とする要件に対応できます。

public enum YesOrNoOrEmpty
{
    [JsonStringEnumMemberName("y")] Yes,
    [JsonStringEnumMemberName("n")] No,
    [JsonStringEnumMemberName("")] Empty  // 以前はInvalidOperationException
}

変更内容

  • EnumConverter.ResolveAndValidateJsonName: 空文字列の検証を緩和。非Flags enumでは許可、Flags enumでは拒否。nullおよび先頭/末尾の空白は両方で拒否(入力はTrim()で正規化されるため)。
  • EnumConverter.TryParseNamedEnum: 既存のカンマ区切り解析動作を保持しつつ、非Flags enumで空の識別子を使用可能に。
  • Strings.resx: エラーメッセージUnsupportedEnumIdentifierを更新(「Flags enumは空文字列とカンマも禁止」と明記)。
  • テスト追加:
    • 空識別子テストを[Flags]付きに変更
    • EnumWithEmptyStringMemberName_NonFlags_RoundtripsAsExpected: 非Flags enumでのシリアライズ/デシリアライズ検証
    • EnumWithEmptyStringMemberName_NonFlags_ParsesWhitespaceAsEmptyMember: 空白のみペイロードのtrim正規化動作確認
    • EnumWithEmptyStringMemberName_Flags_Throws: Flags enumでの空文字列識別子拒否を確認

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはGitHub Copilot Coding Agentによって作成されています。API互換性の変更ですが、破壊的な変更ではなく制限の緩和(非Flags enumのみ)です。


#126941 Add SHA3 and SVE SHA3 APIs

概要

ARM64プロセッサのSHA3およびSVE SHA3命令セット用のハードウェアイントリンシックスAPIを追加します。JIT認識・コード生成パスおよび関連テストを実装し、#98692と#94425を解決します。

新しいAPI使用例:

// SHA3命令の直接使用(ARM64でサポート)
if (Sha3.IsSupported)
{
    // BCAX, EOR3, RAX1, XARなどの命令を利用可能
}

// SVE SHA3命令の直接使用
if (SveSha3.IsSupported)
{
    // RAX1などのベクトル化SHA3命令を利用可能
}

変更内容

  • 公開API追加:System.Runtime.Intrinsics.Arm.Sha3とSystem.Runtime.Intrinsics.Arm.SveSha3クラスを追加(ref + 実装 + PlatformNotSupported版)
  • JIT対応:CoreCLR JIT intrinsic tableおよびコード生成パスをSha3/SveSha3命令に対応(BCAX/EOR3/RAX1/XARなど、イミディエート値と格納最適化を含む)
  • テスト基盤:生成テストプロジェクト・ヘルパーメソッドおよびtest scaffoldingを追加
  • Linker対応:ARM intrinsics無効時のIsSupportedスタブを追加

パフォーマンスへの影響

影響なし。新しいハードウェアイントリンシックスAPIの追加であり、既存コードのパフォーマンスへの直接的な影響はありません。

関連Issue

#98692 #94425

その他

注意点:Copilotレビューで複数の低信頼度コメントが指摘されています:

  • 生成テストの検証式に&~の無効なC#構文の可能性
  • *_longテストケースでInt16入力が生成されているが、オペランド型はInt64(テストカバレッジ低下の懸念)
  • テンプレートと入力パラメータのミスマッチ(NextValueOp3が不要な可能性)

これらは本PRマージ前に検証が必要な可能性があります。


#126124 [wasm] Fix interpreter crash with MethodImpl .override on PortableEntryPoints

概要

WebAssemblyインタープリタで、MethodImpl .overrideディレクティブによる仮想メソッドのvtableスロット再マップ時に発生するクラッシュを修正します。オーバーライドメソッドのPortableEntryPointが元のメソッドのvtableスロットに配置される場合、インタープリタコードの設定とメソッド準備が失敗していました。修正では、メソッドが実際に所有するスロットのコードを参照するよう、.overrideリダイレクトを解決します。

変更内容

  • interpexec.cpp — FEATURE_PORTABLE_ENTRYPOINTS配下で、vtableスロット再マップ時にオーバーライドメソッドをコンパイルし、結果をキャッシュ。デリゲート・リフレクション経由の実行パスを修正
  • reflectioninvocation.cpp — PrepareMethodHelperで宣言→実装の.overrideリダイレクトを事前解決、PrepareMethod/PrepareDelegateが実装メソッドを準備するよう修正
  • テスト追加 — self_override5.ilでデリゲート経由のカバレッジを追加、browser-wasmでActiveIssueゲーティングを削除;self_override_generic.il(新規)で汎用.overrideリグレッション対応

パフォーマンスへの影響

影響なし

関連Issue

#120708

その他

修正はdesktop(macOS/arm64)とbrowser-wasm/CoreCLRで検証済み。インタープリタ実行パスとPrepareMethodパスの両方でクラッシュが解消され、オーバーライドメソッドへの正しい処理が確認されています。


目次