Pull Request on 2026年06月08日

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

注意点

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


目次

  1. #129130 Arm64:[PAC-RET] Use hint-space instruction for stripping return address
  2. #129124 Add OpenBSD support for ICU library loading
  3. #129114 [cDAC] Ensure mt created
  4. #129113 Separate frozen object owning type from allocation site
  5. #129109 [cDAC] Fix stale Continuation MT bug
  6. #129106 [Wasm R2R] Fix unsigned add/sub overflow codegen
  7. #129103 Implement getexepath for OpenBSD
  8. #129101 Misc improvements for rangecheck
  9. #129097 JIT: remove unsound NOT(relop) VN simplification
  10. #129085 [wasm] Bump chrome for testing - linux: 149.0.7827.53, windows: 149.0.7827.54
  11. #129084 Remove PHASE_MERGE_THROWS
  12. #129078 Implement Environment.WorkingSet on OpenBSD
  13. #129070 Validate HttpVersionPolicy enum values on setters
  14. #129064 [Wasm R2R] Allow LDVIRTFTN call sigs to carry a type arg (MD array methods)
  15. #129021 Change the PerfMap crst into an UNSAFE_ANYMODE crst
  16. #129018 Change jit fuzzer build to pull Antigen from jitutils
  17. #129012 [clr-ios] Fix Vector<T> width and R2R AVX baseline mismatch on x64 iOS/tvOS simulators
  18. #128978 Map SEC_E_MUTUAL_AUTH_FAILED SSPI status
  19. #128973 Fix TypePreinit preinitialization correctness
  20. #128971 Preserve Win32 resources in aggregate executable shims
  21. #128969 Use Utf8Span for type system names
  22. #128957 [r2r] Enable generic cycles detection by default
  23. #128941 [release/10.0] Source code updates from dotnet/dotnet
  24. #128848 Track bool-returning and scalar-T-returning HW intrinsics via flags
  25. #128832 [ci-scan] Allow feedback workflow to edit shared KBE instructions
  26. #128318 [wasm][coreclr] Re-enable JIT/Directed/tailcall/mutual_recursion.fs test
  27. #126348 JIT: Improve codegen for xarch vector byte multiply
  28. #125311 [NativeAOT] Print OOM message before Abort() on Linux

#129130 Arm64:[PAC-RET] Use hint-space instruction for stripping return address

概要

ARM64プロセッサのPAC-RET(Pointer Authentication Code - Return)機能において、リターンアドレスをストリップする際にヒント空間命令を使用するように変更しました。フレームポインタ(FP)とリンクレジスタ(LR)をアンワインド情報とともに保存することで、LRが上書きされた状態でアンワインドが発生するシナリオに対応しています。

変更内容

  • src/coreclr/vm/arm64/asmhelpers.S: PAC-RETのリターンアドレスストリップ処理を修正(+9行、-4行)
  • src/coreclr/vm/arm64/asmhelpers.asm: 同様のアセンブリコード修正(+9行、-4行)

主な変更: ヒント空間命令を使用したリターンアドレスのストリップ処理と、FP/LRの保存ロジックの改善

パフォーマンスへの影響

影響なし

関連Issue

dotnet/dotnet#7079、#125436

その他

  • ARM64固有の実装変更
  • アンワインド時の正確性向上を目的とした修正
  • ランタイム内部実装(coreclr/vm/arm64)への変更

#129124 Add OpenBSD support for ICU library loading

概要

OpenBSDにおけるICUライブラリの読み込みに対応しました。OpenBSDはICUバージョン番号ではなくABIバージョニングをSONAMEで使用するため、バージョン付きライブラリ名の読み込みではなく、バージョンなしのdlopen呼び出しとシンボルバージョニングプローブを使用するよう変更しました。

変更内容

  • src/native/libs/System.Globalization.Native/pal_icushim.c: ICUライブラリローダーのロジックを修正。OpenBSDでのバージョンなしdlopenおよびシンボルバージョニング検出機構を実装(+31/-3)

パフォーマンスへの影響

影響なし

関連Issue

#124911

その他

OpenBSDプラットフォームの国際化機能サポート向上に寄与する変更です。


#129114 [cDAC] Ensure mt created

  • 作成者: @rcj1
  • 作成日時: 2026年06月08日 04:22:51(UTC)
  • マージ日時: 2026年06月08日 13:51:46(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact Diagnostic Access Component)のRuntimeTypeSystem_1コントラクト実装において、MethodDescから開始するコードパスで_methodTables辞書にアクセスする前に、MethodTableが確実に作成・キャッシュされるように修正しました。これにより、MethodDesc経由で汎用コンテキストやメタデータ関連プロパティをクエリする際のKeyNotFoundExceptionなどのランタイム失敗を防ぎます。

変更内容

  • src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.cs
    • MethodDescベースのMethodTable検索を直接_methodTables[methodDesc.MethodTable]でアクセスするのではなく、GetOrCreateMethodTable(methodDesc)経由でルーティングするよう修正
    • 汎用コンテキスト位置評価と抽象メソッドメタデータチェック処理に適用
    • 変更行数:+3/-3

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 重要な修正点:GetMethodDescHandle呼び出し後、事前にMethodTableをキャッシュしていない場合にGetGenericContextLocを呼び出すとKeyNotFoundExceptionが発生する可能性があったが、この修正により防止されます
  • テスト関連:既存のcDAC単体テストには、このシナリオをカバーする明示的なテストケースがない可能性があり、GetMethodDescHandleとGetGenericContextLocの連続呼び出しをカバーする対象テストの追加が推奨されています

#129113 Separate frozen object owning type from allocation site

概要

NativeAOT/ILCにおける凍結オブジェクトのシンボル名マングリング処理で、数字で終わる型名とアロケーションサイトIDが衝突する問題を修正します。型名とIDの間に区切り文字を挿入することで、名前の曖昧性を排除します。

変更内容

  • SerializedFrozenObjectNode.cs: AppendMangledNameメソッド内で、マングル後の型名とアロケーションサイトIDの間に区切り文字('_')を挿入

パフォーマンスへの影響

影響なし(シンボル名生成の最小限の変更)

関連Issue

#129074

その他

この修正はNativeAOT/ILCコンパイラの内部実装(シンボル名マングリング)に限定された変更で、公開APIへの影響はありません。


#129109 [cDAC] Fix stale Continuation MT bug

  • 作成者: @rcj1
  • 作成日時: 2026年06月08日 01:37:06(UTC)
  • マージ日時: 2026年06月08日 17:34:25(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC(Compact Data Access Contract)の RuntimeTypeSystem コントラクトで、Continuation 関連のグローバルポインタ(_continuationMethodTablePointer と _continuationSingletonEEClassPointer)が遅延初期化される問題を修正します。これらのポインタはスタートアップ時には初期化されず、最初の Continuation 作成時に初期化されるため、ライブターゲットの診断時に null 値を読む可能性がありました。本修正により、キャッシュされた値が null の場合、必要に応じて再度ポインタを読み込むようになります。

変更内容

  • RuntimeTypeSystem_1.cs: Continuation MT/singleton EEClass ポインタの遅延リフレッシュ機構を実装。IsContinuationWithoutMetadata が遅延初期化後に正常に動作するようになります。
  • TypeValidation.cs: MethodTable 検証パスが同様の遅延リフレッシュ機構に対応。ターゲットがグローバルを初期化した後に検証が成功するよう改善されます。

パフォーマンスへの影響

影響なし(キャッシュ値が null の場合のみ追加の読み込みが発生するため、通常時のオーバーヘッドはありません)

関連Issue

#129109

その他

なし


#129106 [Wasm R2R] Fix unsigned add/sub overflow codegen

概要

WASM R2R JITコンパイラのgenCodeForBinaryOverflow関数において、符号なし加算・減算(GT_ADD/GT_SUB)のオーバーフロー検出ロジックが誤って符号付きXORベースのアルゴリズムを使用していた問題を修正しました。treeNode->IsUnsigned()フラグを正しく参照し、符号なしオーバーフロー検出を実装します。

変更内容

  • src/coreclr/jit/codegenwasm.cpp:
    • 符号なし加算オーバーフロー: result < op1による符号なし比較で検出
    • 符号なし減算オーバーフロー: op1 < op2による符号なし比較で検出
    • 符号付き加算・減算の既存ロジック(XORベース符号チェック)は保持

パフォーマンスへの影響

影響なし(機能的な修正により正確なコード生成を行うため、パフォーマンス低下の記述はなし)

関連Issue

#128234

その他

  • 対象: add.ovf.un/sub.ovf.un操作のWASM機械語生成の正確性向上
  • 内部実装(JITコンパイラの機械語生成ロジック)の修正

#129103 Implement getexepath for OpenBSD

概要

OpenBSDプラットフォームにおける実行可能ファイルのパスを取得する機能を実装しました。OpenBSD固有のシステムコール対応により、ランタイムの実行ファイルパス取得の互換性を向上させます。

変更内容

  • src/native/minipal/getexepath.h: OpenBSD向けのgetexepath実装を追加(14行)
    • OpenBSD固有のシステムコールを使用して実行可能ファイルのパスを取得する機能を追加

パフォーマンスへの影響

影響なし

関連Issue

#124911

その他

本変更はOpenBSDプラットフォームサポートの一部として、minipal(プラットフォーム抽象化レイヤー)の内部実装の改善です。


#129101 Misc improvements for rangecheck

  • 作成者: @EgorBo
  • 作成日時: 2026年06月07日 21:15:28(UTC)
  • マージ日時: 2026年06月08日 14:00:43(UTC)
  • ラベル: area-CodeGen-coreclr

概要

Range Check最適化における複数の健全性バグを修正し、より正確な値域推論を実装します。主な改善は、RangeOps::Orの不正な範囲計算の修正、UDIV命令の定数範囲サポート追加、チェック付きバウンドとVN-relop assertionsからのm_isVNNeverNegativeの自動計算、およびO2K_VN_ADD_CNSの範囲推論を安全なrelop(LT/LE)に限定することです。

例:[3..5] | [4..7]は従来[7..7](不正)と計算されていましたが、修正により正しい範囲が計算されます。

変更内容

  • rangecheck.cpp: RangeOps::Orロジックを修正し、max/min関数を使用して下限・上限を正確に計算
  • rangecheck.h:
    • GetRangeFromAssertionsWorkerにUDIV定数範囲サポートを追加
    • チェック付きバウンドとVN-relopアサーションからm_isVNNeverNegativeフラグを自動的に設定
    • O2K_VN_ADD_CNS範囲推論をLT/LEオペレーションに制限(GT/GEは健全性が低い)
  • compiler.h: インターフェース定義の調整(+9/-8行)

パフォーマンスへの影響

影響なし。これらは最適化の正確性向上とバグ修正であり、パフォーマンス数値には直接的な改善は報告されていません。ただし、より正確な値域推論により、不正な最適化による誤った動作の削減が期待できます。

関連Issue

なし

その他

  • この変更はRange Check最適化(配列バウンドチェック削除など)の健全性に関わる重要な修正です
  • JITコンパイラの内部実装(rangecheck関連モジュール)への変更であり、公開APIへの影響はありません
  • 互換性への影響はありませんが、最適化挙動が変更される可能性があります

#129097 JIT: remove unsound NOT(relop) VN simplification

概要

JIT値番号付け(VN)の不正な簡約を修正しました。NOT(relop(x,y))をReverse(relop)(x,y)に書き換える最適化が削除されます。GT_NOTはビット反転演算子であり論理否定ではないため、0/1の結果に対して~vは-1か-2を生成する一方、Reverse(relop)は0か1を生成します。これにより、補数値の下流で使用される算術演算(例:~v3 >= -1)が誤った方向に畳み込まれていました。NOT(NOT(x)) => xの簡約は正しいため保持されます。

変更内容

  • src/coreclr/jit/valuenum.cpp: VNF_NOTとVNFuncIsComparisonの組み合わせ時のNOT(relop) -> Reverse(relop)書き換えロジックを削除。NOT(NOT(x)) -> xの簡約は保持。
  • src/tests/JIT/Regression/JitBlue/Runtime_129076/Runtime_129076.cs: ビット反転された関係演算子が下流の算術比較で使用されるシナリオをカバーする新規回帰テストを追加。
  • src/tests/JIT/Regression/Regression_ro_2.csproj: 回帰テストのプロジェクトファイルを更新。

パフォーマンスへの影響

影響なし。SuperPMI検証では全10個のosx-arm64 Checkedコレクション(2,302,269コンテキスト、871K MinOpts + 1.4M FullOpts)で差分なし。この最適化は実際のコード上で実行されないため、パフォーマンスへの変化はありません。

関連Issue

#129076

その他

このPRはGitHub Copilot CLIによって作成されました。修正対象の不正な簡約により、ビット演算と論理演算の意味的相違が原因の誤ったコード生成が発生していたため、安全性の観点から重要な修正です。


#129085 [wasm] Bump chrome for testing - linux: 149.0.7827.53, windows: 149.0.7827.54

概要

WebAssembly テスト環境で使用する Chrome のバージョンを更新しました。Linux 環境を 149.0.7827.53 に、Windows 環境を 149.0.7827.54 に各々アップデートしています。

変更内容

  • eng/testing/BrowserVersions.props: Chrome for testing のバージョン定義を更新
    • Linux: 149.0.7827.53
    • Windows: 149.0.7827.54

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

github-actions[bot] による自動更新PRです。


#129084 Remove PHASE_MERGE_THROWS

  • 作成者: @EgorBo
  • 作成日時: 2026年06月06日 22:28:12(UTC)
  • マージ日時: 2026年06月08日 15:10:07(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT コンパイラの tail-merge 最適化フェーズを統合しました。スタンドアロンの PHASE_MERGE_THROWS フェーズを削除し、その機能を PHASE_HEAD_TAIL_MERGE に統合することで、コード複雑性を低減しつつ、terminal block(return/throw)の tail-merge 動作を拡張しました。結果として win-x64 でバイナリサイズが 13KB 削減されました。

変更内容

  • fgopt.cpp: fgHeadTailMerge を修正し、terminal merge(return/throw)では predecessor 数の上限チェックを適用しないようにし、terminal merge を反復的に実行するよう変更
  • fgehopt.cpp: fgTailMergeThrows 実装全体(241行)を削除
  • compphases.h: PHASE_MERGE_THROWS フェーズを削除
  • compmemkind.h: TailMergeThrows メモリ kind を削除
  • compiler.h: fgTailMergeThrows メソッド宣言を削除
  • compiler.cpp: DoPhase(PHASE_MERGE_THROWS) の呼び出しを削除

パフォーマンスへの影響

バイナリサイズが win-x64 で約 13KB 削減されました。 JIT のコンパイル処理が統合されることで複雑度が低減されますが、具体的な JIT コンパイル時間への影響は提供情報に記載されていません。

関連Issue

なし

その他

この変更は JIT コンパイラの内部実装(compiler phase)に限定される変更で、公開 API への影響はありません。


#129078 Implement Environment.WorkingSet on OpenBSD

概要

OpenBSD上でEnvironment.WorkingSetプロパティを実装します。FreeBSDの実装パターンに従い、プロセス情報取得の相互運用層を追加することで、OpenBSDでのbootstrap build対応を実現します。

変更内容

  • Interop.Process.GetProcInfo.cs(新規): OpenBSD向けのプロセス情報取得相互運用層を実装(202行追加)
  • System.Private.CoreLib.Shared.projitems: プロジェクト設定を更新し、OpenBSD固有の環境実装ファイルを組み込み
  • Environment.OpenBSD.cs(新規): OpenBSD向けのEnvironment.WorkingSet実装を追加(27行)

パフォーマンスへの影響

影響なし

関連Issue

#124911

その他

本実装はOpenBSDプラットフォームのサポート拡充に向けた段階的な対応の一部です。FreeBSDの実装パターンを参考にしており、プラットフォーム間の一貫性を保つ設計になっています。


#129070 Validate HttpVersionPolicy enum values on setters

  • 作成者: @Copilot
  • 作成日時: 2026年06月06日 13:37:13(UTC)
  • マージ日時: 2026年06月08日 09:51:09(UTC)
  • ラベル: area-System.Net.Http

概要

HttpRequestMessage.VersionPolicy と HttpClient.DefaultVersionPolicy のセッターに入力値検証を追加しました。無効な HttpVersionPolicy enum値を早期に検出し、ArgumentException を発生させることで、リクエストパイプライン内部での失敗やsilent mis-behaviorを防止します。

public HttpVersionPolicy VersionPolicy
{
    get => _versionPolicy;
    set
    {
        if ((uint)value > (uint)HttpVersionPolicy.RequestVersionExact)
        {
            throw new ArgumentException(SR.Format(SR.net_invalid_enum, nameof(HttpVersionPolicy)), nameof(value));
        }
        CheckDisposed();
        _versionPolicy = value;
    }
}

変更内容

  • HttpRequestMessage.VersionPolicy セッター — enum値が有効な範囲(RequestVersionOrLower~RequestVersionExact)外の場合、ArgumentExceptionをスロー
  • HttpClient.DefaultVersionPolicy セッター — 同じ検証ロジックを追加し、既存の CheckDisposedOrStarted() 呼び出しの前に実行
  • エラーメッセージ — 既存のリソース SR.net_invalid_enum("The specified value is not valid in the '{0}' enumeration.")を再利用
  • テスト — 両セッターの無効値(-1、3、int.MaxValue)に対する理論テストを追加

パフォーマンスへの影響

影響なし(セッターでの軽量な値チェックのため、性能上の懸念なし)

関連Issue

なし

その他

検証パターンは System.Net.Security の SslClientAuthenticationOptions や SslStream で既に採用されている手法と一貫性があります。


#129064 [Wasm R2R] Allow LDVIRTFTN call sigs to carry a type arg (MD array methods)

概要

WebAssemblyのR2R(ReadyToRun)JITで、仮想呼び出しがLDVIRTFTNパスに強制される際に、隠し型パラメータ(MD配列のイントリンシック処理など)を含むシグネチャを許可するためのデバッグアサーションを緩和する変更です。

変更内容

  • ファイル: src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs
  • CORINFO_VIRTUALCALL_LDVIRTFTN処理のデバッグアサーションを緩和
  • Wasm環境で型引数を含むシグネチャが許可される理由とinstParamLookupの設定箇所を明確化するコメントを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更はデバッグ専用のアサーション調整であり、WebAssemblyのスタブディスパッチ非対応という制限に対応したものです。MD配列メソッドなどで隠し型パラメータが必要になる場合、Wasm R2R JITが正常に動作するようになります。


#129021 Change the PerfMap crst into an UNSAFE_ANYMODE crst

  • 作成者: @davidwrighton
  • 作成日時: 2026年06月04日 22:52:28(UTC)
  • マージ日時: 2026年06月08日 21:45:26(UTC)
  • ラベル: area-VM-coreclr

概要

PerfMapログのロック(s_csPerfMap)をCRST_UNSAFE_ANYMODEに変更し、GCモードの切り替えに関連するデッドロックを回避します。また、VirtualCallStubManager のスタブ生成パスを更新し、PerfMapログが有効な場合に安全にプリエンプティブモードに移行できるようにします。

変更内容

  • perfmap.cpp: PerfMapロックをCRST_UNSAFE_ANYMODEとして初期化し、LogPreCompiledMethodでロック保持時間を短縮
  • perfmap.h: FEATURE_PERFMAPが定義されていないビルド向けにスタブPerfMapクラスを追加
  • virtualcallstub.cpp: PerfMapが有効な場合、特定のスタブ生成パスをGCX_MAYBE_PREEMPで囲み、モード遷移後にプローバーをリセット
  • eventing/eventpipe/ds-rt-coreclr.h: 関連する変更(詳細不明)
  • clrconfigvalues.h: 軽微な変更

パフォーマンスへの影響

影響なし。本変更はロック機構の同期化を改善し、デッドロックを回避することが目的であり、パフォーマンス向上や低下に関する具体的な数値は提供されていません。

関連Issue

なし

その他

  • 本変更は内部実装の同期メカニズム(CRST:Critical Section)に関するもので、公開APIへの影響なし
  • GCモード管理(プリエンプティブ/コーペラティブ)の複雑な相互作用を扱っており、ランタイムの安定性向上に寄与
  • #ifdef FEATURE_PERFMAPラッパーなしでコンパイルできるようスタブ実装が追加されたため、呼び出し側がコンパイル条件を回避可能

#129018 Change jit fuzzer build to pull Antigen from jitutils

概要

JIT Fuzzer(Antigen)のビルドパイプラインを、外部の独立リポジトリからdotnet/jitutilsリポジトリへ移行する変更です。スパース・チェックアウトを活用して、jitutils全体ではなく必要な部分のみを取得することで、クローン時間を削減します。

変更内容

  • src/coreclr/scripts/fuzzer_setup.py: Antigenのソースリポジトリをhttps://github.com/dotnet/jitutils.gitに変更し、プロジェクトパスを調整。スパース・チェックアウト機能を追加して、リポジトリ全体ではなく特定のディレクトリのみをクローン可能にしました。
  • src/coreclr/scripts/exploratory.md: Antigenのドキュメントリンクを新しいjitutilsの位置に更新。

パフォーマンスへの影響

スパース・チェックアウトの導入により、クローン時のディスク使用量とネットワーク転送量が削減されます。jitutils全体のクローンを避けることで、セットアップ時間が短縮されます。

関連Issue

なし

その他

なし


#129012 [clr-ios] Fix Vector<T> width and R2R AVX baseline mismatch on x64 iOS/tvOS simulators

概要

インタープリタのみの実行モード(フル インタープリタまたはno-JITビルド)において、x64 iOS/tvOSシミュレータ上でVector<T>が256ビットに拡張されてしまう問題を修正しました。インタープリタは128ビットVector<T>のみをサポートしているため、AVX2が利用可能でも128ビットに制限する必要があります。また、Crossgen2が生成するReadyToRun(R2R)コードのベースラインをx86-64-v3からx86-64-v2に変更し、インタープリタとの一致を確保しました。

変更内容

  • src/coreclr/vm/codeman.cpp: EEJitManager::SetCpuInfo()を更新し、インタープリタが唯一の実行エンジンである場合、Vector<T>を128ビットに制限するロジックを追加
  • src/coreclr/tools/Common/InstructionSetHelpers.cs: インタープリタのみのモード判定条件の変更
  • src/coreclr/vm/ceeload.cpp: R2Rイメージ読み込み時のfixup失敗処理強化
  • src/coreclr/vm/readytoruninfo.h: iOS/tvOSシミュレータ向けのR2Rベースラインをx86-64-v2に調整

パフォーマンスへの影響

iOS/tvOSシミュレータ上で不正な256ビットVector<T>によるNullReferenceExceptionやスタックオーバーフロー を防止できます。Rosetta環境(AVXをサポートしない)での実行をより安全にします。影響なし(既存の128ビット制限の正常化)。

関連Issue

#128901 #128898

その他

  • インタープリタのみのモード判定: (InterpMode == 3) || !FEATURE_DYNAMIC_CODE_COMPILED
  • R2R fixup失敗時に、ストリップされたIL本体を持つno-JIT環境では、不透明なスタックオーバーフローの代わりに明確なエラーメッセージで即座に失敗するようになり、デバッグが容易になります
  • arm64は影響なし(常に128ビット)

#128978 Map SEC_E_MUTUAL_AUTH_FAILED SSPI status

概要

Windows SSPI/SChannel の SEC_E_MUTUAL_AUTH_FAILED (0x8009035D) ステータスをマッピングに追加します。これにより、TLS クライアント認証ハンドシェイク失敗時に AuthenticationException が発生し、Debug.Fail でのクラッシュを防ぎます。

変更内容

  • Interop.SECURITY_STATUS.cs: MutualAuthFailed (0x8009035D) の SSPI ステータス定数を追加
  • SecurityStatusPal.cs: マネージド共有ステータス列挙型に MutualAuthFailed を追加
  • SecurityStatusAdapterPal.Windows.cs: Windows SSPI ステータスマッピング辞書に対応エントリを追加し、期待サイズ定数を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更は、System.Net.Security ライブラリの内部実装の改善であり、公開 API への変更はありません。Windows プラットフォームにおける TLS ハンドシェイクエラーハンドリングの堅牢性が向上します。


#128973 Fix TypePreinit preinitialization correctness

概要

NativeAOT型プレ初期化インタプリタ/シリアライザの正確性を修正するPRです。ネストされたプレ初期化評価における参照同一性の保持、vtable類似スロット初期化バグの修正、冷凍オブジェクトの可変性追跡をより保守的にしています。

変更内容

  • TypePreinit.cs:
    • ForeignTypeInstanceオブジェクトの割り当てサイト別インターン化により、ネストされたプレ初期化割り当てへの繰り返し参照で参照同一性を保持
    • vtable類似スロット初期化バグを修正(スロット範囲の正しいクリア)
    • シリアル化されたObjectInstanceのIsKnownImmutableを保守的にfalseとして報告
  • Preinitialization.cs:
    • ネストされたプレ初期化参照同一性の挙動をテストするスモークテストを追加
    • vtableスロットクリア挙動をテストするスモークテストを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

作成者はGPT-5.5により検出されたバグを修正していることを報告しており、そのうち1つはより深刻な問題だったとしています。このPRはNativeAOT固有の型プレ初期化機能の正確性に関わる変更であり、実行時のメモリレイアウトと参照同一性の保証に影響します。


#128971 Preserve Win32 resources in aggregate executable shims

  • 作成者: @Copilot
  • 作成日時: 2026年06月04日 05:09:19(UTC)
  • マージ日時: 2026年06月08日 02:52:51(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT集約実行形式(aggregate executable)シム バイナリにおいて、マネージドアセンブリのWin32リソースを保持するサポートを追加します。DumpNativeResourcesMSBuildタスクでPEのWin32リソースを.resファイルに変換し、Windowsシム生成時にこれをリンクして、実行時にリソースの存在を検証するテストを追加しました。

変更内容

  • DumpNativeResources.cs (新規、255行): PE形式のWin32リソースディレクトリを.resファイルに変換するMSBuildタスクを追加
  • Microsoft.NETCore.Native.Windows.targets: 集約実行形式シムのWin32リソース処理を統合。.resファイルの生成、シムバイナリへのリンク、増分ビルド入力への追加を実装
  • Microsoft.NETCore.Native.targets: 集約実行形式リファレンスアイテムにShimResourceFileメタデータを追加
  • HelloExe.csproj/HelloExe.cs: Windowsでのリソース埋め込み、共有Win32検証ソースのリンク、実行時リソース検証の追加
  • Win32Resources.cs: Win32リソース検証ロジックを再利用可能なヘルパー(ValidateWin32Resources)にリファクタリング

パフォーマンスへの影響

影響なし(ビルド時のリソース処理追加のみで、実行時のパフォーマンスへの直接的な影響なし)

関連Issue

#128971

その他

  • 本変更はWindows環境でのNativeAOT集約実行形式に限定される内部実装の拡張です
  • 既存のWin32リソーステストロジックを再利用することで、テストコードの重複を排除しています
  • DumpNativeResourcesタスクは削除された実装(4e48d2d)の復元に基づいています

#128969 Use Utf8Span for type system names

概要

型システム名前サーフェスを ReadOnlySpan<byte> から新しい Utf8StringRef 型に移行するPRです。これにより、デバッガ表示の改善(文字列として意味のある表示)と、SequenceEqual の代わりに == 演算子での文字列比較が可能になります。

変更内容

  • 新型の導入: Internal.Text.Utf8StringRef を追加し、UTF-8文字列の型安全な表現を提供
  • 型システム API の更新:
    • TypeDesc.GetMethod()/GetField() など複数のAPI署名を Utf8StringRef パラメータに更新
    • MetadataType、EcmaType、MethodDesc、FieldDesc などのコア型で Name/Namespace プロパティを Utf8StringRef に変更
  • 比較ロジックの簡略化:
    • .SequenceEqual("..."u8) パターンを == で直接比較に置き換え(130以上のファイルで実施)
    • 名前空間・メンバー名チェックを一貫して ==/!= に統一
  • ヘルパーAPI の拡張:
    • Utf8StringBuilder.Append(Utf8StringRef) オーバーロード追加
    • Utf8String から Utf8StringRef への暗黙的変換を実装
    • 名前ハッシング用に VersionResilientHashCode.TypeSystem.cs に Utf8StringRef オーバーロード追加
  • プロジェクト統合: ILVerification、ILCompiler.TypeSystem、System.Private.TypeLoader などのプロジェクトに Utf8StringRef をリンク

パフォーマンスへの影響

影響なし(文字列表現の改善で機能的にはニュートラル)

関連Issue

#122363

その他

  • 互換性: 公開APIではなく内部実装(Internal.TypeSystem)の変更のため、外部への破壊的変更はなし
  • コンパイラツールチェーン全体に波及: CoreCLR ツール(dotnet-pgo、ILCompiler、ReadyToRun コンパイラ、crossgen2など)の名前比較ロジックが統一される
  • デバッガ改善: Utf8StringRef.ToString() が ReadOnlySpan<byte> より有意な文字列を返すため、デバッガ表示が向上

#128957 [r2r] Enable generic cycles detection by default

  • 作成者: @BrzVlad
  • 作成日時: 2026年06月03日 17:41:04(UTC)
  • マージ日時: 2026年06月08日 19:47:32(UTC)
  • ラベル: area-ReadyToRun

概要

ReadyToRun (R2R) コンパイラにおいて、ジェネリック循環検出をデフォルトで有効化し、GVM(Generic Virtual Method)スキャンの過度な展開を防ぐ変更です。System.Linq.Parallel.Tests のコンパイルオーバーフロー問題を解決するため、ジェネリック循環の可能性があるメソッド/型に対して GVM 依存関係の生成をスキップしてコンパイルの過度な増大を抑制します。

変更内容

  • GenericCycleDetection/ModuleCycleInfo.cs: GenericCycleDetector に CanBeInCycle クエリメソッドを追加し、型/メソッドが循環に参加する可能性があるかを高速に判定
  • ReadyToRunCodegenCompilationBuilder.cs: ジェネリック循環検出を默认で有効化するよう初期化ロジックを変更
  • ReadyToRunCodegenNodeFactory.cs: CanBeInGenericCycle メソッドを追加し、循環の可能性がある定義に対して GVMDependencies() が null を返すよう実装
  • GVMDependenciesNode.cs: GVMDependencies() が null を返すケースへの対応を追加、R2R パス内の冗長な例外処理を削除
  • MethodFixupSignature.cs: GVMDependencies() が null を返す場合に仮想ディスパッチ GVM 依存関係の追加をスキップ
  • crossgen2 コマンドライン: --enable-generic-cycle-detection フラグを削除(デフォルト有効化のため)
  • テスト: 複数の IL テストプロジェクトと R2R ジェネリック循環検出テストを更新

パフォーマンスへの影響

影響なし(パフォーマンス数値は提供されていません)。ただし、コンパイル時のメモリ/時間増大を抑制する目的の変更であり、System.Linq.Parallel.Tests などで過度なコンパイル展開によるオーバーフロー発生を防止します。

関連Issue

#128694

その他

  • この変更は内部実装(R2R コンパイラの依存関係分析)に限定され、公開 API への影響はありません
  • ジェネリック循環に参加する可能性のあるメソッド/型については JIT またはインタプリタへのフォールバックが可能であるため、保守的に GVM スキャンを回避できます
  • 副次効果として、他の R2R 領域においてもジェネリック循環チェックが有効化されます

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

概要

VMR(Virtual Monolithic Repository)からのコードフロー更新であり、dotnet/dotnetリポジトリの複数の依存パッケージをアップデートしています。主に、Roslyn関連(CodeAnalysis)、ビルドツール、ランタイム関連ライブラリの更新が含まれています。

変更内容

  • 依存パッケージの更新

    • Microsoft.CodeAnalysis系(CodeAnalysis、Analyzers、CSharp、Net.Compilers.Toolset): 5.0.0-2.26274.103 → 5.0.0-2.26303.112
    • Microsoft.DotNet.Arcade.Sdk等ビルドタスク群: 10.0.0-beta.26274.103 → 10.0.0-beta.26303.112
    • System.Text.Json、System.Reflection.Metadata等ランタイムライブラリ: 10.0.9 → 10.0.10
    • NuGet.Frameworks、NuGet.Packaging等: 7.0.3-rc.27503 → 7.0.3-rc.30412
    • その他複数の依存パッケージを更新
  • ファイル更新

    • eng/Version.Details.xml/props:依存パッケージバージョン情報の更新
    • global.json:SDK版情報の更新
    • NuGet.config:NuGetソース設定の更新
    • テストファイル(ImporterTests.cs)の軽微な変更

パフォーマンスへの影響

影響なし。このPRは依存パッケージのバージョン更新と構成ファイルの同期であり、パフォーマンスに直接的な影響はありません。

関連Issue

なし

その他

  • このPRは自動コードフロー更新(codeflow PR)であり、dotnet-maestro[bot]による定期的な同期です
  • 対象ブランチはrelease/10.0.1xx
  • 複数のリポジトリ(arcade、aspnetcore、efcore、sdk、wpfなど)の関連変更も含まれています
  • Roslyn/CodeAnalysisのアップデートに伴う分析器の更新が含まれるため、コード分析の動作が変わる可能性があります

#128848 Track bool-returning and scalar-T-returning HW intrinsics via flags

  • 作成者: @Copilot
  • 作成日時: 2026年06月01日 14:08:21(UTC)
  • マージ日時: 2026年06月08日 13:56:42(UTC)
  • ラベル: area-CodeGen-coreclr

概要

ハードウェア割り込み(HW intrinsic)の戻り値の型情報を追跡する仕組みを改善しました。従来は複数のコンシューマー(assertionprop、rangecheck、valuenum)が長いID用スイッチでboolまたはscalar Tを返すintrinsicを個別に列挙していましたが、これをintrinsicテーブルのフラグ(HW_Flag_ReturnsBoolean、HW_Flag_ReturnsScalarT)に統一し、HWIntrinsicInfo経由でクエリ可能にしました。

変更内容

  • hwintrinsic.h: HWIntrinsicFlagを32ビットから64ビット(uint64_t)に拡張し、HW_Flag_ReturnsBooleanとHW_Flag_ReturnsScalarTフラグを追加。HWIntrinsicInfo::ReturnsBoolean()/ReturnsScalarT()静的APIを新規追加。
  • hwintrinsiclistxarch.h: x86/x64向けintrinsic 24個をReturnsBoolean、8個をReturnsScalarTでタグ付け(Vector{128,256,512}_op_{Equality,Inequality}、比較・テスト関数、GetElement/ToScalar/Extractなど)。
  • hwintrinsiclistarm64.h: ARM64向けintrinsic 4個をReturnsBoolean、5個をReturnsScalarTでタグ付け。
  • assertionprop.cpp、rangecheck.cpp、valuenum.cpp: ID用スイッチを削除し、フラグチェック(HWIntrinsicInfo::ReturnsBoolean(id)など)で代替。IsVNHWIntrinsicFuncを活用してVNF_HWI_FIRST/LAST範囲チェックを廃止。

パフォーマンスへの影響

影響なし(リファクタリング)。コード重複排除により保守性向上。

関連Issue

#128848

その他

SVE関連のbool/scalar-T intrinsicは意図的にタグ付けしていません(元々スイッチに含まれていなかったため)。


#128832 [ci-scan] Allow feedback workflow to edit shared KBE instructions

概要

CI失敗スキャンフィードバックワークフロー(ci-failure-scan-feedback)の編集権限を拡張し、メインスキャナープロンプト(ci-failure-scan.md)に加えて、共有KBE作成手順ファイル(.github/workflows/shared/create-kbe.instructions.md)の更新を許可するようにしました。コンパイルされたロックワークフローを再生成し、Safe Outputs設定を同期化しています。

変更内容

  • .github/workflows/ci-failure-scan-feedback.md: ワークフロー説明とプロンプトの「ハード・ルール」、Safe Outputsのallowed-filesリストを拡張し、共有KBE手順ファイルを含めるよう更新
  • .github/workflows/ci-failure-scan-feedback.lock.yml: 拡張されたallow-listを反映させ、埋め込みSafe Outputs設定を更新・再コンパイル

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

ワークフロー検証コマンド実行済み:

  • gh aw compile .github/workflows/ci-failure-scan-feedback.md
  • git diff --check -- .github/workflows/ci-failure-scan-feedback.md .github/workflows/ci-failure-scan-feedback.lock.yml

これはCI/CDパイプラインのメタ変更で、.NET開発者向けの直接的な機能変更ではありません。


#128318 [wasm][coreclr] Re-enable JIT/Directed/tailcall/mutual_recursion.fs test

概要

WebAssembly/Browser環境のCoreCLRインタープリタで暗黙的テールコール(ITC)検出機能を実装し、mutual_recursion.fsテストを再度有効化したPRです。インタープリタのスタックオーバーフロー問題を解決し、F#で発行されたコードの深い再帰処理に対応しています。

変更内容

  • src/tests/JIT/Directed/tailcall/mutual_recursion.fs: IsBrowser向けのActiveIssue属性を削除。Debug構成でのスタックオーバーフロー対策としてSkipOnCoreClrを追加。
  • src/tests/JIT/Directed/tailcall/mutual_recursion.fsproj: テスト構成の更新。

パフォーマンスへの影響

影響なし(テスト再開により、インタープリタスタックオーバーフロー問題が解消され、深い再帰処理の安定性が向上)

関連Issue

#127437

その他

本PRは部分的な変更のみを示しており、Copilot生成の概要によると、完全な実装には以下が含まれます:

  • CoreCLRインタープリタのCreateBasicBlocksでILをプリスキャンし、m_hasAddressExposedLocalsおよびm_hasLocallocフラグを設定
  • CallHasByrefIntoLocalFrameヘルパーで安全でない引数型(CORINFO_TYPE_PTR、CORINFO_TYPE_REFANY、CORINFO_FLG_BYREF_LIKE)を検査
  • EmitCallで暗黙的テールコール検出ロジックを実装

Release構成でのテスト成功を確認。Debug構成では継続的なスタックオーバーフロー対策が必要。


#126348 JIT: Improve codegen for xarch vector byte multiply

概要

xarch(x86-64)ベクトル化バイト乗算のJIT コード生成を改善しました。次のベクトルサイズへの拡張が不可能な場合、従来の実装では不効率な分割・拡張・乗算・縮小を2回繰り返していましたが、奇数/偶数バイトアプローチを採用することで約2倍のパフォーマンス向上を実現しています。

変更内容

src/coreclr/jit/gentree.cpp

  • ベクトル化バイト乗算のコード生成ロジックを最適化
  • 次のベクトルサイズへの拡張が可能な場合:AVX2(SIMD16)またはAVX512(SIMD32)を使用して単一乗算を実行
  • 拡張が不可能な場合:従来の分割・拡張・乗算・縮小の二重化を排除し、16ビット乗算2回と奇数/偶数バイトの再構成によるアプローチに変更
  • 生成されるアセンブリコード長を大幅削減(106バイト → 65バイト)

パフォーマンスへの影響

改善率:約2倍のパフォーマンス向上

改善内容:

  • 不要なメモリロード/ストア削減
  • ベクトル拡張・縮小操作の削減(従来は各乗算サイクルで拡張・縮小が必要)
  • 生成コードサイズ削減(41バイト削減)
  • L1キャッシュ効率向上とスループット向上

関連Issue

#109775

その他

  • 実装は@MineCake147Eによる提案に基づいている
  • AVX2とAVX512の両方に対応
  • JITでのAND_NOT操作の処理方法(定数の再利用時に複数の定数を生成)により、さらなるコード最適化の余地があることが指摘されている

#125311 [NativeAOT] Print OOM message before Abort() on Linux

  • 作成者: @Copilot
  • 作成日時: 2026年03月08日 22:55:27(UTC)
  • マージ日時: 2026年06月08日 23:01:26(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT で Out of Memory 例外により終了する際、Linux 上で診断情報なしに Aborted とのみ出力される問題を修正しました。RuntimeExceptionHelpers.FailFast の最小限フェイルファスト処理で、OOM メッセージを stderr に出力してから Abort() を呼び出すように改善しました。プロセス出力は try/catch {} で保護されているため、二次的なメモリ割り当て失敗時も既存の abort パスに進みます。

修正前: Aborted
修正後: Out of memory.

変更内容

  • src/coreclr/nativeaot/System.Private.CoreLib/src/System/RuntimeExceptionHelpers.cs: minimalFailFast パス内で stderr に固定テキストの OOM メッセージを出力する処理を追加
  • src/libraries/System.Private.CoreLib/src/Internal/Console.Unix.cs: Unix 環境での stderr 出力機構の調整(+19/-12)
  • src/tests/baseservices/exceptions/OutOfMemoryException/OutOfMemoryException.cs: DOTNET_GCHeapHardLimit=20000000 を設定してプロセスを起動し、OOM 時に stderr に OOM メッセージが出力されることを検証する新しいスモークテストを追加
  • src/tests/baseservices/exceptions/OutOfMemoryException/OutOfMemoryException.csproj: テストプロジェクトファイルを追加

パフォーマンスへの影響

影響なし。終了時の診断出力のため、パフォーマンス上の懸念は生じません。

関連Issue

#82337

その他

  • NativeAOT ランタイムの内部実装(RuntimeExceptionHelpers)の変更であり、公開 API への影響なし
  • テストはモバイルおよびブラウザプラットフォーム(プロセス生成をサポートしない環境)ではスキップされます

目次