Pull Request on 2026年07月07日

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

注意点

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


目次

  1. #130301 Arm64: Only call checkRMWRegisters for RMW intrinsics
  2. #130296 Do not tune debug info for LLDB
  3. #130294 Use EXTERNAL_C_FUNC for CONTEXT_CaptureContext on s390x
  4. #130290 Fix symlink test failure
  5. #130283 Remove ActiveIssue for dotnet/runtimelab#901
  6. #130282 Enable JIT\jit64 caninline test on NativeAOT
  7. #130281 Process.Unix: skip non-executable files during process filename resolution.
  8. #130280 Enable StructPacking interop test on NativeAOT
  9. #130276 [main] Source code updates from dotnet/dotnet
  10. #130271 Clarify regex warnings
  11. #130261 Don't oversubscribe cores for framework crossgen on macOS; raise single-assembly timeout
  12. #130260 Block tail merges across handler and filter
  13. #130256 Replace SetCallEntrypointForR2R with gtNewUserCallNode
  14. #130255 Cleanup the AvxOnlyCompatible checks to ensure that we don't try to generate unsupported nodes for AVX only hardware
  15. #130252 JIT: Centralize WellKnownArg definitions
  16. #130222 Fix incorrect constant folding of CompareScalar True/False comparisons
  17. #130218 Fix variant interface GVM resolution in managed type system
  18. #130208 [cDAC] Implement DacDbi API GetUserState
  19. #130205 JIT: fold trivial redundant comparisons on loop induction variables
  20. #130190 JIT: fix widened IV init placed in unreachable block
  21. #130180 Name the underlying native thread on all Apple platforms
  22. #130175 Reject CR/LF in MailAddress parsing
  23. #130174 [ci-scan-feedback] Harden fixer dedup and mobile trimming-root guardrails
  24. #130109 Add public Property for VersionMadeBy flag in zipfiles
  25. #130107 JIT: Coalesce adjacent constant-address stores
  26. #130100 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 3016406
  27. #130074 JIT: use type argument as the exact type for Activator.CreateInstance<T>
  28. #130029 [cDac] Implement thread state
  29. #129919 Remove FEATURE_BASICFREEZE
  30. #129894 Skip save/restore of contexts in task-returning thunks; mark thunk infrastructure NonVersionable
  31. #129873 Remove concurrent verify_soh_segment_list call in background_sweep
  32. #129773 Add AssemblyLoadContext.SetAssemblyLocationOverride
  33. #128375 JIT: don't propagate promoted struct LCL_VAR into FIELD_LIST uses
  34. #127916 Cleanup TensorPrimitives
  35. #127502 Haiku: Clean up redundant flags
  36. #126887 Explain why RSA PKCS1 implicit rejection isn't used

#130301 Arm64: Only call checkRMWRegisters for RMW intrinsics

概要

Arm64 JITコンパイラにおいて、checkRMWRegisters関数の呼び出しをRead-Modify-Write (RMW)命令固有に限定する修正です。不要な呼び出しを削除することで、コンパイル時のオーバーヘッドを軽減します。

変更内容

  • src/coreclr/jit/hwintrinsiccodegenarm64.cpp: checkRMWRegistersの呼び出し箇所を修正し、RMW命令にのみ適用するよう条件を追加(+4行、-1行)

パフォーマンスへの影響

JITコンパイル時間の微少な短縮(checkRMWRegisters呼び出しの削減によるオーバーヘッド軽減)。実行時パフォーマンスへの直接的な影響はなし。

関連Issue

#130247

その他

なし


#130296 Do not tune debug info for LLDB

概要

Unix環境でのネイティブビルド時に、Clangの-glldbフラグによるLLDB専用デバッグ情報生成を回避し、GDBのDWARFパーサーとの互換性を確保する変更です。-gフラグで標準的なデバッグ情報生成を保証します。

変更内容

  • eng/native/configurecompiler.cmake: Unix ホストビルドに対して以下を調整
    • -glldbフラグの削除(Clang builds)
    • -gフラグを常に有効化してデバッグ情報生成を確保
    • Clang警告抑制は既存どおり維持

パフォーマンスへの影響

影響なし

関連Issue

#130287

その他

なし


#130294 Use EXTERNAL_C_FUNC for CONTEXT_CaptureContext on s390x

概要

s390x アーキテクチャ上の CONTEXT_CaptureContext 関数で、C_FUNC を EXTERNAL_C_FUNC に変更することで、正しいシンボルリンケージを確保します。

変更内容

  • src/coreclr/pal/src/arch/s390x/context2.S: CONTEXT_CaptureContext のマクロを C_FUNC から EXTERNAL_C_FUNC に変更(1行変更)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

s390x プラットフォーム固有の変更であり、PAL(Platform Abstraction Layer)のコンテキスト処理部分に関わります。シンボルリンケージの修正により、s390x での関数呼び出しの正確性が向上します。


#130290 Fix symlink test failure

概要

Windows環境でシンボリックリンクの走査攻撃テストが失敗する問題を修正しました。チェーンされたシンボリックリンク走査アーカイブの抽出時に、Windows OSビルドによって異なる例外型が発生することに対応し、テストの例外チェックを更新しています。

変更内容

  • src/libraries/System.Formats.Tar/tests/TarFile/TarFile.ExtractToDirectory.File.Tests.cs
    • Windows固有のアサーション修正:TarFile.ExtractToDirectory()がチェーンされたシンボリックリンク走査アーカイブを処理する際に、UnauthorizedAccessExceptionまたはIOExceptionのいずれかを受け入れるように更新
    • Windows OSビルドごとに例外型が異なる理由を説明するコメントを追加

パフォーマンスへの影響

影響なし

関連Issue

#130177

その他

テスト固有の修正で、ランタイムやコンパイラの実装変更ではありません。Windows環境のOSビルドの差異に起因する例外型の違いに対する耐性向上です。


#130283 Remove ActiveIssue for dotnet/runtimelab#901

概要

dotnet/runtimelab#901に関連するActiveIssue属性を削除するテスト修正です。System.IO.FileSystemのDirectory.ExistsおよびFile.Existsテストから条件付きスキップアノテーションを削除し、対応するIssueが解決されたことを示しています。

変更内容

  • src/libraries/System.Runtime/tests/System.IO.FileSystem.Tests/Directory/Exists.cs: ActiveIssueアノテーション削除(1行削除)
  • src/libraries/System.Runtime/tests/System.IO.FileSystem.Tests/File/Exists.cs: ActiveIssueアノテーション削除(1行削除)

パフォーマンスへの影響

影響なし

関連Issue

dotnet/runtimelab#901

その他

なし


#130282 Enable JIT\jit64 caninline test on NativeAOT

概要

NativeAOT環境でのStackTrace infra-frame skipping問題(dotnet/runtimelab#183)が解決されたため、JIT inlining最適化テスト(caninline.cs)のNativeAOT向けスキップ属性を削除し、すべての構成で実行可能にしました。

変更内容

  • src/tests/JIT/jit64/opt/inl/caninline.cs: [ActiveIssue]属性を削除してNativeAOTでのテストスキップを解除、using TestLibrary;ステートメントを削除(2行削減)

パフォーマンスへの影響

影響なし(テストスイート拡張のみ)

関連Issue

dotnet/runtimelab#183

その他

なし


#130281 Process.Unix: skip non-executable files during process filename resolution.

概要

Unix環境でのプロセス起動時にファイル名解決をより正確に行うよう改善しました。access(X_OK)を使用して実行可能ファイルをチェックすることで、ACLやケーパビリティなどのエッジケースに対応し、作業ディレクトリ内の非実行可能ファイルがPATH上の実行可能ファイルをシャドウイングすることを防ぎます。

変更内容

  • ProcessUtils.Unix.cs: ファイルモードビットとユーザー/グループメンバーシップの手動チェックを廃止し、access(X_OK)を使用したIsExecutableメソッドに統一。ファイル名解決時にFile.ExistsからIsExecutableに変更することで、非実行可能ファイルがPATH検索をシャドウイングしないようになりました
  • pal_process.c: ForkAndExecProcessInternal内の冗長なaccess(X_OK)チェックを削除(マネージド側でチェック済み)
  • ProcessTests.Unix.cs: 新しいテストケースを追加して実行可能性チェックの動作を検証
  • System.Diagnostics.Process.csproj: プロジェクト設定を微調整

パフォーマンスへの影響

影響なし

関連Issue

#129736

その他

内部実装の変更(ランタイムのUnix固有のプロセス起動処理)です。公開APIの互換性に影響はありません。


#130280 Enable StructPacking interop test on NativeAOT

概要

NativeAOTで無効化されていたStructPacking相互運用テストを再度有効化するPullRequest。dotnet/runtimelab#181で報告されていた問題が解決されたため、[ActiveIssue]属性を削除してテストを復活させます。

変更内容

  • src/tests/Interop/StructPacking/StructPacking.cs: TestEntryPointから2つの[ActiveIssue(..., IsNativeAot)]属性を削除し、NativeAOT環境でのテスト実行を再度有効化

パフォーマンスへの影響

影響なし

関連Issue

dotnet/runtimelab#181

その他

なし


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

概要

dotnet/dotnetリポジトリからのコードフロー更新PRです。VMRを通じた定期的なソースコード同期であり、複数の依存パッケージの更新とランタイム周辺コンポーネントの最新版への更新が含まれています。

変更内容

  • eng/Version.Details.props: バージョン詳細の更新(+39/-39行)
  • eng/Version.Details.xml: バージョン詳細XMLの更新(+79/-79行)
  • global.json: グローバル設定の更新(+4/-4行)

更新された主要依存パッケージ:

  • Microsoft.CodeAnalysis関連:5.10.0-1.26352.103 → 5.10.0-1.26356.103
  • Microsoft.DotNet.Arcade.Sdk等のビルドツール:11.0.0-beta.26352.103 → 11.0.0-beta.26356.103
  • NuGet関連:7.9.0-rc.35303 → 7.9.0-rc.35703
  • System.Reflection.Metadata、System.Text.Json等のコアライブラリ:11.0.0-preview.7.26352.103 → 11.0.0-preview.7.26356.103
  • その他、Microsoft.DotNet.Helix.Sdk、Microsoft.DotNet.GenAPI等の開発ツール

関連リポジトリの変更:

  • aspnetcore、diagnostics、fsharp、msbuild、roslyn、runtimeのソースコード同期

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRはMaestro自動化による定期的なコードフロー更新です
  • ビルド: 20260706.3(Build ID: 321546)
  • 同期対象コミット: a67d575054ff3bcb905ea6699734d0ed8816aa2b
  • 変更内容の詳細確認には、提供されているコミット差分リンク(bcaa8d4...a67d575)をご参照ください

#130271 Clarify regex warnings

概要

System.Text.RegularExpressions の XML ドキュメント(ドキュメントのみ、コード変更なし)を更新し、正規表現のセキュリティガイダンスをより明確に提示します。Regex 型レベルに ReDoS/DoS 警告を追加し、CISA リンクを ReDoS に特化した OWASP リソースに変更。RegexOptions.NonBacktracking のドキュメントを関連する Learn セクションへ向け直します。

変更内容

  • Regex.cs: 型レベルのリマークスを markdown 形式に更新し、ReDoS/DoS 警告とベストプラクティスへのリンクを追加
  • RegexOptions.cs: NonBacktracking オプションのドキュメントコメントを改善し、Learn 記事の該当セクションを参照

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

ドキュメント専用変更のため、ランタイム動作に影響なし。関連する同様のドキュメント更新が複数リポジトリ(dotnet/docs、dotnet/docs-desktop、dotnet/dotnet-api-docs)で同時進行中。


#130261 Don't oversubscribe cores for framework crossgen on macOS; raise single-assembly timeout

  • 作成者: @jtschuster
  • 作成日時: 2026年07月06日 20:12:15(UTC)
  • マージ日時: 2026年07月07日 12:44:44(UTC)
  • ラベル: area-ReadyToRun

概要

macOS上のframework crossgen処理でコア数が過剰割り当てされていた問題を修正し、System.Private.CoreLibコンパイルの性能を向上させます。また、単一アセンブリのコンパイルタイムアウト値を10分から15分に延長し、低速なMac CI環境での処理失敗を回避しています。

変更内容

  • src/coreclr/tools/r2rtest/ProcessRunner.cs: macOSでのクロスジェン実行時のプロセス数をcores+1から正確なコア数に調整(+4/-1)
  • src/tests/build.sh: 単一アセンブリのnon-composite compilation タイムアウトを10分から15分に変更(+1/-1)

パフォーマンスへの影響

改善:

  • macOS上でのクロスジェンステップの処理時間短縮(過剰なプロセス生成による文脈切り替えオーバーヘッド削減)
  • System.Private.CoreLibコンパイルへのCPUリソース競合低減

改善率:具体的な数値は提供されていません。

関連Issue

なし

その他

  • 本PRはGitHub Copilotの支援により生成されました
  • macOS CI環境でのタイムアウト問題対応が主目的です

#130260 Block tail merges across handler and filter

概要

JITコンパイラで、例外ハンドラーとフィルター間でのテール マージを禁止し、無効なフロー制御に対する診断チェックを追加する変更です。これにより、正しくない制御フロー パターンをコンパイル時に検出できるようになります。

変更内容

  • src/coreclr/jit/fgopt.cpp: テール マージ時のバリデーション ロジックを追加し、ハンドラーとフィルター間のテール マージを明示的にブロック(+24/-2)
  • src/coreclr/jit/fgdiagnostic.cpp: 無効なフロー制御パターンを検出する診断チェックを強化(+24/-8)
  • テストコード: Runtime_130248の回帰テストを新規追加(+47行)

パフォーマンスへの影響

影響なし(診断チェック層での追加であり、ランタイム実行性能には影響しません)

関連Issue

#130248

その他

  • 内部実装(JIT最適化パス)の変更であり、公開APIへの影響なし
  • 破壊的変更ではなく、不正な制御フロー パターンをより厳密に検出する品質向上の修正

#130256 Replace SetCallEntrypointForR2R with gtNewUserCallNode

  • 作成者: @Copilot
  • 作成日時: 2026年07月06日 15:16:16(UTC)
  • マージ日時: 2026年07月07日 22:52:46(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT合成呼び出しの作成パターンを改善するため、SetCallEntrypointForR2Rヘルパーを新しいファクトリメソッドCompiler::gtNewUserCallNode(handle, type, di)に置き換えました。このメソッドはCT_USER_FUNC呼び出しを作成し、Ready-to-Run(R2R)コンパイル時に自動的にエントリポイントを設定します。複数の合成呼び出しサイト(async/await関連、tailcall dispatcher、特殊コピーヘルパー)で従来の「作成→エントリポイント設定」パターンを単一のAPI呼び出しに統一します。

// 変更前
GenTreeCall* call = gtNewCallNode(CT_USER_FUNC, handle, TYP_VOID);
SetCallEntrypointForR2R(call, this, handle);

// 変更後
GenTreeCall* call = gtNewUserCallNode(handle, TYP_VOID);

変更内容

  • gentree.cpp/compiler.h: 新しいgtNewUserCallNode(handle, type, di)ファクトリメソッドを追加。R2R時にエントリポイント検索を実行する内部実装で、非R2Rではno-op。
  • async.cpp: SetCallEntrypointForR2R実装を削除し、7つの非同期ヘルパー呼び出し合成をgtNewUserCallNodeに変換。
  • importer.cpp: await-return呼び出し合成をgtNewUserCallNodeに変換。
  • morph.cpp: tailcall dispatcherの合成呼び出しをgtNewUserCallNodeに変換。
  • lower.cpp/gschecks.cpp: 特殊コピーヘルパーの合成呼び出しをgtNewUserCallNodeに変換。
  • importercalls.cpp/rationalize.cpp: インポートパスのサイトは変更なし(既存のメカニズムでエントリポイント割り当て)。

パフォーマンスへの影響

影響なし。リファクタリングは既存機能を保持したまま、コード重複を削減します。

関連Issue

なし

その他

この変更はJITコンパイラの内部実装に限定され、公開APIには影響しません。R2Rコンパイル時のみ機能的差異があり、非R2Rコンパイルではno-opです。


#130255 Cleanup the AvxOnlyCompatible checks to ensure that we don't try to generate unsupported nodes for AVX only hardware

概要

AVX対応(AVX2非対応)ハードウェアでAVX2が必要なノードが生成されることを防ぐため、RyuJITのSystem.Numerics.Vector/xplat SIMD イントリンシックスのAVX-only ゲーティングロジックをクリーンアップしました。Compiler::impXplatIntrinsicに"AVX-only compatible"チェックを一元化し、散在していたAVX2チェックを削除しています。

変更内容

  • src/coreclr/jit/hwintrinsic.cpp: Vector256イントリンシックスのAVX-only import ゲーティングを再実装。simdSize == 32の処理をHWIntrinsicInfo::AvxOnlyCompatibleと型固有チェックで一元管理し、散在していたAVX2チェック(-176行)を削除(+86行)。
  • src/coreclr/jit/hwintrinsiclist.h: 追加のVector.*イントリンシックスにHW_Flag_AvxOnlyCompatibleフラグを付与し、AVX-only環境での動作制御を可能にする(-61行、+62行)。
  • src/coreclr/jit/lowerxarch.cpp: LowerHWIntrinsicDotのAVX機能チェック条件順序を軽微に再構成(セマンティック変更なし)。

パフォーマンスへの影響

影響なし。本変更はコード生成の正確性向上を目的としており、ベンチマーク対象外。

関連Issue

#130230

その他

  • 内部実装(コンパイラ最適化コード)への変更であり、公開APIへの直接的な影響なし。
  • AVX-only ハードウェアでのVector SIMD イントリンシックス使用時の正確なコード生成を確実にする修正。

#130252 JIT: Centralize WellKnownArg definitions

概要

JITコンパイラのWellKnownArgメタデータを一元化するため、単一のwellknownargs.hX-マクロリストを導入しました。このファイルを複数回インクルードして、列挙型および関連するクエリヘルパーを生成します。GDV(ガード付きデバイスの仮想化)候補の引数処理も調整され、予期しないwell-known引数でのアサート失敗を回避するようになりました。

変更内容

  • src/coreclr/jit/wellknownargs.h (新規): WellKnownArg定義とメタデータの単一の情報源として機能するX-マクロテーブルを追加
  • src/coreclr/jit/gentree.h/gentree.cpp: WellKnownArg列挙型メンバーと関連ヘルパー(IsArgAddedLate、IsUserArg、短名ルックアップ)をテーブル駆動方式に変更
  • src/coreclr/jit/morph.cpp: getWellKnownArgNameをテーブル駆動方式に変更
  • src/coreclr/jit/importercalls.cpp: GDV互換性チェックをCallArg::IsUserArg()経由でシグネチャ外引数をスキップするよう更新
  • src/coreclr/jit/importer.cpp/fginline.cpp: インライン引数初期化ロジックをwell-known引数の手動スイッチからIsUserArg/InstParamベースの実装に変更
  • src/coreclr/jit/compiler.hpp: ヘルパーの「メソッドハンドル」引数のwell-known引数タグ付けを削除
  • src/coreclr/jit/CMakeLists.txt: JITヘッダリストにwellknownargs.hを追加

パフォーマンスへの影響

影響なし

関連Issue

#130227

その他

本変更は内部実装の最適化です。WellKnownArg定義をX-マクロテーブルに一元化することで、メタデータの管理をシンプル化し、複数の箇所での定義重複を排除します。またGDV処理のロジック改善により、予期しないwell-known引数に対するアサート失敗が防止されます。


#130222 Fix incorrect constant folding of CompareScalar True/False comparisons

概要

AVX比較イントリンシックの定数畳み込み(constant folding)における2つのバグを修正しました。Avx.CompareScalarが"常に真"/"常に偽"の比較モード(OrderedFalse*、UnorderedTrue*)で使用された場合、下位要素のみが結果となるべきところ、上位要素の値が破棄されていました(例:CompareScalar(<1,2,3,4>, ..., OrderedFalse)が<0,0,0,0>ではなく<0,2,3,4>になるべき)。また、gtNewZeroConNodeとgtNewAllBitsSetConNodeがTYP_MASKをサポートしていなかったため、AVX512マスク比較(NI_AVX512_CompareMask)の畳み込みがクラッシュしていました。

変更内容

  • src/coreclr/jit/gentree.cpp:

    • gtNewZeroConNodeがTYP_MASKに対応(FEATURE_MASKED_HW_INTRINSICS配下でGenTreeMskConを返す)
    • gtFoldExprHWIntrinsicのNI_AVX_Compare/NI_AVX_CompareScalar/NI_AVX512_CompareMaskの真/偽モード処理を改善
    • CompareScalarはop1がコンスタントである場合のみ畳み込みを行い、下位要素のみを設定して上位要素を保持
    • スカラー以外のフォールスケースでマスク対応のgtNewZeroConNodeを使用
    • マスク結果の真ケースでsimdmask_t::AllBitsSet(elementCount)により正規化されたマスクを構築
  • src/tests/JIT/Regression/JitBlue/Runtime_125160/Runtime_125160.cs:

    • floatおよびdoubleのAvx.CompareScalar全4つの真/偽モード、およびVector512<float>/<double>のAvx512F.Compareをカバーする回帰テストを追加
  • src/tests/JIT/Regression/Regression_ro_2.csproj: 新規テストRuntime_125160をプロジェクトに登録

パフォーマンスへの影響

影響なし

関連Issue

#125160

その他

  • この修正は内部実装(JIT定数畳み込み)に関するもので、公開APIの変更はありません
  • テスト検証により、修正なしで期待値2に対して実際の値が0になることを確認し、修正後に正常動作することを検証しています
  • スカラー畳み込みは副作用を持たないコンスタントをリサイクルしてgtWrapWithSideEffectsでラップすることで、他のオペランドの副作用を保持します

#130218 Fix variant interface GVM resolution in managed type system

概要

マネージド型システムにおける変性を考慮したインターフェース汎用仮想メソッド(GVM)解決の修正。複数の変性互換なインターフェース実装例を持つ型の場合、メソッド用語を除外した定義を使用してスロット解決を実施してから、メソッドの具体化を再適用することで、不正な仮想化解除ターゲットの選択を防止します。

変更内容

  • MetadataVirtualMethodAlgorithm.cs: インターフェースGVM解決時に、方法定義を基にスロット選択を実施し、その後メソッド具体化を再適用するロジックを実装
  • DevirtualizationManager.cs: デバーチャル化マネージャの小規模修正(3行追加、1行削除)
  • テスト追加:
    • VirtualFunctionOverrideTests.cs: 型システムテストに変性GVM関連のテストケース追加
    • CoreTestAssembly: GvmVariantInterface.csテストアセット追加
    • JIT汎用テスト: variance_generic_virtual.csに複数変性互換インターフェース実装例の回帰テスト追加
    • プロジェクトファイル: 新規テスト用の標準および最適化ビルド構成

パフォーマンスへの影響

影響なし。本修正は正確性の向上に焦点を当てており、パフォーマンス上の改変は伴いません。

関連Issue

#130202(NAOT向けGVM仮想化解除対応中に発見)

その他

  • CoreCLRネイティブ型システムは既にこのケースを適切に処理しているため、当該の問題は存在しません。
  • 回帰テストはCallOnBaseケースで従来の失敗を検出するよう設計されており、マネージド型システムとJIT両側での将来的な回帰防止を目的としています。

#130208 [cDAC] Implement DacDbi API GetUserState

  • 作成者: @rcj1
  • 作成日時: 2026年07月05日 00:00:21(UTC)
  • マージ日時: 2026年07月07日 22:05:17(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC(Compact Diagnostic Access Component)の DacDbi GetUserState API を実装しました。ExecutionManager の GC-safety APIs と GCInfo contracts を組み合わせ、スレッドの IP(Instruction Pointer)から GC-unsafe point の状態を判定します。また、ダンプテストで GetUserState と contracts から計算された GC-safepoint 状態の相互検証を追加しました。

変更内容

  • DacDbiImpl.cs: GetUserState を実装。既存のユーザー状態情報と新しい "GC-unsafe point" ビット(スレッド IP から導出)を組み合わせます
  • ExecutionManager(Core/_1/_2.cs): IsGcSafe API を追加。CodeBlock 解決 + GCInfo デコード を使用
  • GCInfo コントラクト層:
    • IGCInfoDecoder.cs: IsGcSafe メソッドをインターフェースに追加
    • GCInfoDecoder.cs: 汎用 GCInfo デコーダーの IsGcSafe を実装
    • GCInfoX86_1.cs / GCInfo_1.cs: x86 と汎用 IGCInfo 実装経由で IsGcSafe を公開
    • X86/GCInfo.cs: x86 環境での IsGcSafe 実装と no-GC regions の遅延デコード
  • IDacDbiInterface.cs: CorDebugUserState.USER_UNSAFE_POINT フラグを追加
  • ドキュメント: ExecutionManager.md と GCInfo.md に新しい IsGcSafe API の説明を追加
  • テスト: DacDbiThreadDumpTests.cs にダンプベースの相互検証テストを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更は cDAC(コンパイル時アクセス可能な診断データ)インフラストラクチャの拡張であり、ランタイム診断・デバッグ機能を強化するものです。変更は内部実装レイヤー(Contracts/Legacy)に限定され、公開 API 層への影響はありません。


#130205 JIT: fold trivial redundant comparisons on loop induction variables

  • 作成者: @EgorBo
  • 作成日時: 2026年07月04日 20:09:48(UTC)
  • マージ日時: 2026年07月07日 20:15:21(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITコンパイラが、ループのインダクション変数に対する自明に冗長な比較をコンパイル時にフォールドするための最適化を改善しました。SSA範囲クエリの予算を64から256に増加させることで、RangeCheck::TryGetRangeがループインダクション変数パターンの範囲をより正確に計算できるようになります。

static void Test()
{
    for (int i = 0; i < 100; i++)
    {
        if (i >= 0) // コンパイル時に常にtrueと判定され、フォールド可能に
        {
            Console.WriteLine("Hi");
        }
    }
}

変更内容

  • src/coreclr/jit/assertionprop.cpp: assertionpropの低速GetRangeパスで使用されるSSA走査予算をデフォルト値の64から256に増加。複数の内部SSA走査が必要になるため、TryGetRangeには共有予算をより大きくする必要があるという説明コメントを追加。

パフォーマンスへの影響

ループ内の冗長な比較がフォールドされることで、不要なジャンプ命令が削除され、コード生成が簡潔化します。提供されたdiffでは、複数のjmp・test・jl命令が除去されて、より効率的なコードが生成される例が示されています。

関連Issue

#130206

その他

テストを含む多くのファイルで差分が発生していますが、詳細な変更内容の説明は提供されていません。


#130190 JIT: fix widened IV init placed in unreachable block

  • 作成者: @EgorBo
  • 作成日時: 2026年07月03日 19:55:14(UTC)
  • マージ日時: 2026年07月07日 22:02:32(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT のループ誘導変数最適化において、拡張された誘導変数(widened IV)の初期化が到達不可能なブロックに配置されるバグを修正しました。冗長分岐最適化(RBO)のジャンプスレッディングにより、狭い IV の到達定義ブロックがループに到達しなくなった場合でも、拡張 IV の初期化がそのブロックに配置されていました。修正では、到達定義が PHI でない場合のみそのブロックを使用し、PHI の場合はプリヘッダーにフォールバックするようにしました。

変更内容

  • src/coreclr/jit/inductionvariableopts.cpp: optWidenPrimaryIV 関数の修正。到達定義が PHI であるかどうかを確認し、PHI の場合はプリヘッダーを使用、非 PHI の場合は既存の到達定義ブロックを使用するロジックを追加(+5/-1)
  • src/tests/JIT/Regression/JitBlue/Runtime_130189/Runtime_130189.cs: 回帰テストケースを追加。この修正前に誤った結果を出力していたループの動作を検証(+52 行)
  • src/tests/JIT/Regression/Regression_ro_2.csproj: テストプロジェクトファイルにテストケースを登録(+1 行)

パフォーマンスへの影響

SPMI(x64)での測定結果:約 676K コンテキスト(libraries.pmi/crossgen2/aspnet2/realworld)において、拡張 IV の初期化がプリヘッダーに移動される場合が限定的に増加し、+85 バイトのコード生成サイズ増加。全体的には中立的またはわずかな改善。

関連Issue

#130189

その他

  • RBO のジャンプスレッディング後に残存する古い SSA(stale SSA)が問題の根本原因。DFS 到達可能性チェック(m_dfsTree->Contains)では不十分であり、PHI ブロックが別の経路で到達可能でもループへの経路が削除されている場合に誤った判定となるため、PHI 定義かどうかの判定を採用しました。

#130180 Name the underlying native thread on all Apple platforms

  • 作成者: @Copilot
  • 作成日時: 2026年07月03日 13:41:58(UTC)
  • マージ日時: 2026年07月07日 07:55:18(UTC)
  • ラベル: area-System.Threading

概要

Apple プラットフォーム(iOS、tvOS、MacCatalyst)において、マネージドスレッド名をネイティブスレッドに設定する際のプラットフォームガード条件を TARGET_OSX から TARGET_APPLE に更新しました。これにより、すべての Apple プラットフォームでネイティブデバッガーやツールがマネージドスレッド名を正しく認識できるようになります。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs (+2/-2)
    • ネイティブスレッド命名処理のプラットフォームガード条件を変更
    • macOS のみに限定されていた動作を iOS、tvOS、MacCatalyst にも拡張

パフォーマンスへの影響

影響なし

関連Issue

#130166

その他

  • 作成者による説明と Copilot による概要に相違があります。PR の実際の変更内容は、スレッド命名のプラットフォームサポート拡張に関するものです。
  • この変更により、iOS、tvOS、MacCatalyst 上でデバッグ時のスレッド識別性が向上します。

#130175 Reject CR/LF in MailAddress parsing

  • 作成者: @liveans
  • 作成日時: 2026年07月03日 11:32:32(UTC)
  • マージ日時: 2026年07月07日 08:36:42(UTC)
  • ラベル: area-System.Net

概要

System.Net.Mail のメールアドレスパース処理において、CR (キャリッジリターン) および LF (ラインフィード) 文字を含むメールアドレスを拒否するようにしました。この変更により、SMTP インジェクション攻撃などのセキュリティリスクを軽減します。

変更内容

  • MailAddressParser.cs: メールアドレス文字列内に CR/LF 文字が含まれていないかの検証ロジックを追加(14行追加)
  • MailAddressParserTest.cs: CR/LF を含むメールアドレスの拒否動作を検証するテストケースを追加(34行追加)
  • MailAddressParsingTest.cs: 既存のパース関連テストを更新(7行追加、4行削除)
  • SmtpClientSendMailTest.cs: テスト内容の調整(2行追加、6行削除)

パフォーマンスへの影響

影響なし(検証ロジックの追加はパース処理の標準的なチェック)

関連Issue

なし

その他

この変更は、メールアドレスに CR/LF 文字が含まれている場合に例外をスローすることで、SMTP ヘッダーインジェクションの防止を目的としたセキュリティ向上です。既存コードで CR/LF を含むメールアドレスを使用している場合は、パース時に例外が発生するため、対応が必要な可能性があります。


#130174 [ci-scan-feedback] Harden fixer dedup and mobile trimming-root guardrails

概要

CI自動化ワークフローの指示を改善し、重複する[ci-fix] PRと再提出されるKBEを削減するため、Fixer dedupロジックとモバイルトリミングガイダンスを強化しました。信頼性の低い#<kbe>トークン検索の代わりに、解析済みのLinked KBE:マップを使用した堅牢なdedup処理を導入しています。

変更内容

  • .github/workflows/ci-failure-fix.md: [ci-fix] PRのdedup処理を改善。従来の#<kbe>トークン検索の信頼性の低さに対応し、PR本文から解析したLinked KBE:マップに基づくdedup推奨を追加。モバイルトリミング関連の修正ガイダンスを厳密化し、テストアセンブリ内の型に対する無効なトリミングルート記述子の提案を回避。

  • .github/workflows/shared/create-kbe.instructions.md: 慢性再発ガード機能を追加。同じテスト名幹で2件以上のクローズされた[ci-scan]先行案件が検出された場合、新規回帰ではなく慢性再発として扱い、KBEの再提出を回避する指示。

パフォーマンスへの影響

影響なし(CI指示の変更であり、ランタイム/ライブラリコードへの変更ではない)

関連Issue

#130121 #130171

その他

Copilotレビューから懸念点が指摘されています:

  • Step 3の[ci-fix] PR全列挙クエリ(日付制限なし)がGitHub検索結果制限を超過する可能性と、検索パフォーマンスへの影響
  • dedup検証結果の永続化(/tmp/gh-aw/agent/dedup/<kbe>.txt)により後続ステップの再クエリ回避の提案
  • 慢性再発検出ロジックが検索時間と結果セット拡大のバランスを取る必要性
  • checks 1〜3が依然として#<kbe>検索を指示しており、提案内容との内部矛盾の指摘

#130109 Add public Property for VersionMadeBy flag in zipfiles

概要

ZIP ファイルの "version made by" フィールドを公開 API として公開するため、ZipArchiveEntry に新しいプロパティ VersionMadeBy を追加します。このプロパティは ZIP 中央ディレクトリに格納されたメタデータ(ホストプラットフォーム + ZIP 仕様バージョン)を ushort として取得できます。

public ushort VersionMadeBy { get; }

変更内容

  • ZipArchiveEntry.cs: VersionMadeBy プロパティを追加([CLSCompliant(false)] 属性付き)。内部の "made by" フィールドから計算される値を公開します。
  • System.IO.Compression.cs(ref assembly): 新しいプロパティをリファレンスアセンブリの公開 API サーフェスに追加。
  • zip_CreateTests.cs: VersionMadeBy プロパティの動作を検証するテストケースを追加。

パフォーマンスへの影響

影響なし

関連Issue

#124755

その他

  • VersionMadeBy は ushort 型で CLS 非準拠([CLSCompliant(false)])のため、他言語との相互運用性を考慮する場合は注意が必要です。
  • ZIP 形式の "version made by" フィールド仕様(ホストプラットフォーム識別子 + ZIP 仕様バージョン)を直接検査したい場合に便利です。

#130107 JIT: Coalesce adjacent constant-address stores

  • 作成者: @EgorBo
  • 作成日時: 2026年07月02日 02:23:52(UTC)
  • マージ日時: 2026年07月07日 22:02:52(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITのLowerStoreCoalescingを拡張し、絶対定数アドレスへの隣接するSTOREINDノードの認識と合体をサポートしました。非GCスタティック構造体の隣接フィールドへの複数の書き込みを、単一の広いストア命令に統合できるようになり、コード生成が最適化されます。

例:

private struct S2 { public int A, B; }
private static S2 s_static2;

private static void Test()
{
    s_static2.A = 1;  // 2つの書き込みが
    s_static2.B = 2;  // 1つのqword storeに合体
}

変更内容

  • src/coreclr/jit/lower.cpp: GetLoadStoreCoalescingDataを拡張し、非リロケータブル定数アドレスを(baseAddr=null, offset=<絶対アドレス>)として処理。オフセット計算、アライメント検査、アトミシティ検査、ストア書き直しロジックをbaseAddr == nullptrに対応させました。
  • src/coreclr/jit/lower.h: LoadStoreCoalescingData::offsetの型をintからssize_tに拡張し、より大きなアドレス値に対応。

パフォーマンスへの影響

コード生成の改善によるスループット向上。隣接フィールドへの複数書き込みが単一の広いストア命令に統合され、メモリ書き込み命令数が削減されます。具体的なベンチマーク値は提供されていません。

関連Issue

なし

その他

この変更はJITコンパイラの内部実装であり、公開APIへの影響はありません。互換性への影響もありません。


#130100 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 3016406

概要

OneLocBuild自動タスクによるローカライズファイルの定期チェックインです。System.Runtime.InteropServices および System.Text.Json ライブラリのリソースファイル(.xlf形式)の多言語翻訳が更新されます。

変更内容

  • System.Runtime.InteropServices/gen/Common/Resources/xlf: 13言語の Strings リソースファイル(cs, de, es, fr, it, ja, ko, pl, pt-BR, ru, tr, zh-Hans, zh-Hant)が各12行の変更
  • System.Text.Json/gen/Resources/xlf: 13言語の Strings リソースファイルが各10行削除

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この変更はOneLocBuildパイプラインによる自動生成されたPRです
  • 翻訳品質に関する問題は https://aka.ms/icxLocBug で報告できます
  • リソースファイル(.xlf)は XLIFF フォーマットで、コンパイル時にローカライズされたエラーメッセージやリソース文字列を生成するために使用されます
  • ユーザーに対する公開APIや機能的な変更はありません

#130074 JIT: use type argument as the exact type for Activator.CreateInstance<T>

概要

Activator.CreateInstance<T>()の戻り値型が常に正確な型引数TであることをJITに教えることで、後続の最適化(特にデバイラチュアライゼーション)を可能にします。これにより、仮想メソッド呼び出しを直接呼び出しに置き換え、コード生成を大幅に改善できます。

static T Get<T>() where T : new()
{
    return new T();
}
// Get<A>().VirtualMethod() の仮想呼び出しが直接呼び出しに最適化される

変更内容

  • namedintrinsiclist.h: NI_System_Activator_CreateInstance_Tという新しい名前付き組み込み関数を追加
  • importercalls.cpp: Activator.CreateInstance<T>を名前付き組み込み関数として認識し、"特別な"呼び出し場所としてマーク。型引数を検査して正確な戻り値型情報を回復するロジックを追加

パフォーマンスへの影響

改善あり。提供例では:

  • Before: 仮想メソッド呼び出し用にmov rax, qword ptr [rax]とmov rax, qword ptr [rax+0x48]でVtable参照が必要
  • After: デバイラチュアライゼーションにより、戻り値が定数に置き換わり、仮想呼び出しが除去される

総命令数が減少し、メモリアクセスが削減されます。将来、エスケープ解析を適用することで、割り当てられていないオブジェクトの削除も可能。

関連Issue

なし

その他

Copilotの指摘:lookupNamedIntrinsic内で全組み込み関数に対して無条件にeeGetMethodSig()を呼び出しているため、ホットなインポートパスでEE(実行エンジン)の処理が増加する可能性がある。シグネチャ取得をActivator.CreateInstanceチェック内に限定することで、他の組み込み関数の性能への影響を軽減できる余地あり。


#130029 [cDac] Implement thread state

概要

PR #126592で削除されたthreadData->state = thread->m_State;をClrDataAccess::GetThreadDataに復元し、DACConsumer(SOS等)がスレッドごとのThreadStateフラグを再び観察できるようにします。同時にスレッド状態の列挙型を拡張し、GC/デバッグサスペンションフラグ、COMアパートメントフラグ、スレッドアボート関連フラグなど、ランタイムデバッグに重要なフラグをすべて網羅しました。

変更内容

  • src/coreclr/debug/daccess/request.cpp: DacpThreadData::stateにThread::m_Stateを割り当てる処理を復元
  • src/coreclr/vm/threads.h: ThreadState列挙型を拡張し、GC/デバッグサスペンションフラグ、COMアパートメントフラグ、スレッドアボート関連フラグを追加
  • src/coreclr/vm/threadsuspend.cpp: ThreadState列挙値の参照を更新
  • src/coreclr/debug/daccess/dacdbiimplstackwalk.cpp, src/coreclr/debug/ee/frameinfo.cpp, src/coreclr/debug/di/shimstackwalk.cpp: ThreadState列挙値の参照を更新
  • docs/design/datacontracts/Thread.md: ThreadState仕様ドキュメントを更新
  • src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IThread.cs: IThreadインターフェースを拡張
  • src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Thread_1.cs: Thread_1実装を更新
  • src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.cs: SOSDacImpl実装を更新
  • src/native/managed/cdac/tests/UnitTests/ThreadTests.cs: ThreadTests単体テストを追加

パフォーマンスへの影響

影響なし

関連Issue

#126592

その他

この変更は内部実装(DAC/デバッグ支援機構)に限定されており、公開APIへの影響はありません。SOS(Son of Strike)デバッガ拡張やその他のランタイムデバッグツールがスレッド状態をより正確に診断できるようになります。


#129919 Remove FEATURE_BASICFREEZE

  • 作成者: @EgorBo
  • 作成日時: 2026年06月27日 01:39:44(UTC)
  • マージ日時: 2026年07月07日 12:46:19(UTC)
  • ラベル: area-GC-coreclr

概要

FEATURE_BASICFREEZE フィーチャーフラグを完全に削除し、読み取り専用/凍結セグメント (Frozen Segment) サポートを無条件有効化します。このフラグは全ての出荷構成(CoreCLR、NativeAOT、standalone clrgc)で年来無条件定義されていたため、不要な条件付きコンパイルコードを削除してコード品質を向上させます。

変更内容

  • CMake定義削除: src/coreclr/clrdefinitions.cmake、NativeAOT CMakeLists.txtからFEATURE_BASICFREEZE定義を削除
  • GCコア実装: gc.cpp、gcee.cpp、gcpriv.h、gcinternal.hなどで条件付きコード(#else/#ifndef分岐)を削除
  • GC処理フェーズ: mark_phase.cpp、background.cppなど各GC処理フェーズで凍結セグメント関連の条件分岐を簡潔化(例:#if defined(FEATURE_BASICFREEZE) && !defined(USE_REGIONS) → #ifndef USE_REGIONS)
  • VM実装: frozenobjectheap.cpp、syncblk.cpp、comutilnative.cppなどで不要なガード条件を削除
  • 公開API変更: gcinterface.hの公開インターフェース定義から該当フラグを削除

パフォーマンスへの影響

影響なし(実装ロジック自体は変更せず、デッドコード削除のみ)

関連Issue

なし

その他

  • 破壊的変更なし: 有効だったコード経路は完全に保持され、削除されるのは無効化されていた分岐のみ
  • 検証済み: Windows x64 (Checked) ビルドで coreclr.dll、clrgc.dll、gcsample.exe、NativeAOT Runtime.WorkstationGC/Runtime.ServerGC全て成功(エラー/警告なし)
  • 影響範囲: GCサンプル(src/coreclr/gc/sample)が従前の無効分岐をコンパイルしていた唯一のツリー内コンシューマでしたが、今後は凍結セグメントコードを無条件にコンパイルします

#129894 Skip save/restore of contexts in task-returning thunks; mark thunk infrastructure NonVersionable

概要

タスク戻り値型の非同期サンク内で、すでにJIT生成コードで実行される文脈保存/復元を削除することで、パフォーマンスを改善します。また、サンク関連の型およびメソッドをNonVersionableでマークし、crossgen2による効率的な処理を実現します。ReadyToRun(R2R)バージョンを25に上げ、内部関数を以下のように大幅にリネーム:FinalizeTaskReturningThunk → CreateRuntimeAsyncTask、FinalizeValueTaskReturningThunk → CreateRuntimeAsyncValueTask、await補助関数をSuspend/TransparentSuspendに、TransparentAwaitWithResultをTransparentAwaitに変更。

変更内容

  • AsyncHelpers.CoreCLR.cs: サンク実行時の文脈保存/復元を削除し、内部関数をリネーム。サンク関連メソッドにNonVersionable属性を付与。
  • asyncthunks.cpp・AsyncThunks.cs: VM/crossgen2のILスタブ生成をリネームされたCreateRuntimeAsync*メソッド呼び出しへ更新。
  • corelib.h: CoreLibBinderのメソッドIDをリネームに対応。削除されたCompletedTask*ヘルパーのバインダー登録を削除。
  • ReadyToRunバージョン: readytorun.h・ModuleHeaders.h・ModuleHeaders.csでR2Rメジャーバージョンを25に更新。JITEEバージョンGUIDを更新。
  • テスト: execution-context.csに新規テストを追加。

パフォーマンスへの影響

同期完了する非同期メソッドのタスクラッパー作成で約20%の改善。サスペンションが発生する場合も小幅な改善を確認(ベンチマーク結果参照)。0回サスペンション時:93.2ms→71.6ms、1回:571.6ms→556.5ms。NonVersionableマークにより、R2R生成コードのサイズ効率も向上。

関連Issue

#122512
#130081

その他

破壊的変更: ReadyToRun R2R v25へのバージョンアップにより、以前のバージョンで生成されたR2Rイメージとの互換性がなくなります(内部実装の変更であり公開APIへの影響なし)。サンク関連の内部メソッドをすべてNonVersionableでマークすることで、将来のR2R変更時に効率的なバージョン管理が可能に。Copilotレビューで、TaskFromExceptionとValueTaskFromExceptionヘルパーもNonVersionable対象として検討の可能性を指摘。


#129873 Remove concurrent verify_soh_segment_list call in background_sweep

  • 作成者: @janvorli
  • 作成日時: 2026年06月26日 00:05:47(UTC)
  • マージ日時: 2026年07月07日 19:29:26(UTC)
  • ラベル: area-GC-coreclr

概要

GC(ガベージコレクション)のバックグラウンドスイープ処理中に実行されていたverify_soh_segment_list()呼び出しを削除します。この呼び出しはrestart_EE()後の並行スイープループ内で実行されていたため、他のスレッドからのメモリ割り当てとSOH(Small Object Heap)セグメントリストの更新が競合し、検証が誤ったエラーを報告する問題がありました。検証処理はGCの同期フェーズ境界に限定し、レースコンディションが存在するループ内の呼び出しのみを削除します。

変更内容

  • src/coreclr/gc/background.cpp: gc_heap::background_sweep()内の並行バックグラウンドスイープループからのverify_soh_segment_list()呼び出しを削除(2行削除)

パフォーマンスへの影響

影響なし。検証処理のオーバーヘッド削減により、バックグラウンドスイープの軽微なパフォーマンス改善が期待できますが、主な目的はレースコンディションの排除です。

関連Issue

#129723

その他

この変更は内部GC実装(非公開API)への修正です。検証処理自体は削除されず、同期化されたGCフェーズ境界での検証は継続されます。


#129773 Add AssemblyLoadContext.SetAssemblyLocationOverride

概要

プロセス全体で有効な、一度だけ設定可能なコールバックを通じて Assembly.Location の戻り値をオーバーライドする新しいパブリックAPI AssemblyLoadContext.SetAssemblyLocationOverride を追加します。このオーバーライドはCoreClr、Mono、NativeAOTの全ランタイムで一貫して適用されます。

サンプルコード:

AssemblyLoadContext.SetAssemblyLocationOverride((assembly, originalLocation) =>
{
    return "/custom/path/" + Path.GetFileName(originalLocation);
});

変更内容

  • AssemblyLoadContext.cs: SetAssemblyLocationOverride(Func<Assembly, string, string>) パブリックメソッドと内部の ResolveAssemblyLocation ヘルパーメソッドを追加。set-once保護機構を実装
  • CoreCLR RuntimeAssembly.cs: Assembly.Location 実装でオーバーライドを適用
  • Mono RuntimeAssembly.cs: Assembly.Location 実装でオーバーライドを適用
  • NativeAOT ThunkedApis.cs: Assembly.Location 実装でオーバーライドを適用
  • System.Runtime.Loader 参照アセンブリ: 新しいパブリックAPIをAPI表面に追加
  • テスト: null引数処理、ストリーム読み込み時のオーバーライド動作、set-once保護のテストを追加
  • リソース文字列: "already set"例外メッセージ用のSR文字列を追加

パフォーマンスへの影響

影響なし

関連Issue

#127097

その他

  • パブリックAPIの追加のため、参照アセンブリも更新されています
  • set-once機構により、同じコールバックの複数回設定は InvalidOperationException で防止されます
  • 全ランタイム実装で統一的にサポートされる設計となっています

#128375 JIT: don't propagate promoted struct LCL_VAR into FIELD_LIST uses

  • 作成者: @EgorBo
  • 作成日時: 2026年05月19日 15:18:17(UTC)
  • マージ日時: 2026年07月07日 22:03:50(UTC)
  • ラベル: area-CodeGen-coreclr

概要

Explicit layoutで構造体のSIMDフィールドが通常のフィールドとエイリアスされている場合、JITのプロモーション最適化が正常に機能しない問題を修正します。promoted struct LCL_VARがFIELD_LIST用途に伝播されるのを防ぐことで、不正なコード生成を回避します。修正は最小限に抑えられており、サイズ回帰を防ぐために慎重に設計されています。

変更内容

  • src/coreclr/jit/assertionprop.cpp: promoted LCL_VARをFIELD_LISTに代用する場合の検証ロジックを追加(8行追加)
  • src/coreclr/jit/forwardsub.cpp: forward substitution時にpromoted LCL_VARがFIELD_LISTに伝播されるのを防ぐチェックを追加(13行追加)
  • src/coreclr/jit/morph.cpp: morphing時のFIELD_LIST処理でpromoted structの制約を追加(15行追加)
  • テストケース: Runtime_128373回帰テスト(Explicit layoutのSIMDエイリアス化ケースをカバー)

パフォーマンスへの影響

影響なし。作成者の報告では、Azure DevOps上でのテスト結果でも差分が非常に限定的です。

関連Issue

#128373

その他

  • JITのコンパイラ内部実装(Assertion Propagation、Forward Substitution、Morphing)に対する変更で、公開APIへの影響はありません
  • 破壊的変更ではなく、既存のバグ修正です
  • Explicit layoutを使用する特殊なケースを対象とした修正で、一般的な構造体プロモーション最適化には影響しません

#127916 Cleanup TensorPrimitives

概要

TensorPrimitives の内部実装をモダン化するクリーンアップPR。.NET Core専用にコンパイルされるファイルに存在していた #if !NET の不要なフォールバック実装を削除し、Vector128/256/512 APIを直接使用するように統一。内部ヘルパーメソッド(IsNaN/IsPositive/IsNegative)および未使用の Tensor.CalculateCopyLength メソッドも削除。

変更内容

  • フォールバック実装の削除: TensorPrimitives.Exp.cs、TensorPrimitives.Log.cs、TensorPrimitives.Log2.cs から #if !NET 時の多項式・ベクトルフォールバック実装を削除
  • ヘルパーメソッドの廃止: IsNaN、IsPositive、IsNegative 内部ヘルパーを削除し、呼び出し元を Vector*.IsNaN/Vector*.IsPositive/Vector*.IsNegative に直接置換
  • Min/Max の簡素化: TensorPrimitives.Min.cs、TensorPrimitives.Max.cs の #if !NET 特別ケースを削除し、式体メンバーで Vector*.Min/Vector*.Max を直接呼び出し
  • その他: TensorPrimitives.Round.cs の不要な境界定数を削除、Tensor.CalculateCopyLength メソッドを削除

パフォーマンスへの影響

影響なし。本変更は内部実装の簡潔化であり、既に.NET Coreのみで動作するコードパスに対する変更のため、実行時の動作は変わらない。

関連Issue

なし

その他

なし


#127502 Haiku: Clean up redundant flags

概要

Haiku OSにおいて、プライベートPROT_NONEマッピング用の冗長なMAP_NORESERVEフラグを削除するクリーンアップ。Haiku の新しいバージョンでは、書き込み不可(PROT_WRITEなし)のプライベートマッピング内でのメモリコミットを回避するため、この冗長なフラグを削除して動作を標準化する。

変更内容

  • src/coreclr/pal/src/map/virtual.cpp: 仮想メモリ予約のmmap フラグから Haiku 固有の MAP_NORESERVE を削除(4行削除)
  • src/coreclr/gc/unix/gcenv.unix.cpp: GC の予約およびデコミットの mmap フラグセットから Haiku 固有の MAP_NORESERVE を削除(6行削除)

パフォーマンスへの影響

影響なし。本変更は Haiku OS 上でのメモリ管理戦略の標準化であり、パフォーマンス特性への直接的な影響はない。

関連Issue

#55803

その他

  • 変更は Haiku OS プラットフォーム固有のコード領域に限定される
  • 内部実装の変更であり、公開API への影響なし
  • Haiku の最新版での推奨動作に準拠するための調整

#126887 Explain why RSA PKCS1 implicit rejection isn't used

概要

OpenSSL RSA相互運用層のコメントを拡充し、RSA PKCS#1の暗黙的な拒否(implicit rejection)機能を無効化する理由を詳しく説明しました。

変更内容

  • src/native/libs/System.Security.Cryptography.Native/pal_evp_pkey_rsa.c
    • 既存の簡潔なコメントを、OpenSSLの暗黙的な拒否動作とそれを無効化する動機についてより詳細な説明に置き換え
    • 仕様への適合性やセキュリティ上の考慮事項に関する補足的な根拠を追加

パフォーマンスへの影響

影響なし

関連Issue

#126887

その他

この変更は内部実装のドキュメンテーション強化のみで、RSA PKCS#1の処理動作そのものには変更がありません。


目次