Pull Request on 2026年06月19日

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

注意点

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



#129627 Reapply "Add lane construction and composition APIs"

概要

SIMD Vector型に対するレーン構築・合成API(lane construction and composition APIs)を追加します。これにより、個別のスカラー値からベクトルを構築したり、ベクトルから特定のレーン(要素)を抽出・操作する機能が提供されます。WebAssembly SIMD パスには「Not Yet Implemented(NYI)」マーカーが付与されています。

変更内容

  • JIT コンパイラ(x64/ARM64): HWIntrinsic 命令リストに新しいレーン構築・合成操作を追加し、それぞれのプラットフォーム固有の実装(hwintrinsicxarch.cpp, hwintrinsicarm64.cpp)を実装
  • JIT 最適化パイプライン: gentree.cpp, morph.cpp, rationalize.cpp で新しい操作の最適化パスを組み込み
  • 公開API: System.Runtime.Intrinsics の Vector64/Vector128/Vector256/Vector512 に新しい lane construction/composition メソッドを追加(計 1,140 行のAPI追加)
  • レガシーAPI: System.Numerics.Vector に互換性のための API を追加
  • テスト: Vector64/128/256/512 各型の包括的なテストスイート(計 957 行)を追加

パフォーマンスへの影響

ベンチマーク結果なし。レーン構築・合成操作は JIT コンパイル時にプラットフォーム固有の効率的な命令にコンパイルされることで、ランタイムオーバーヘッドを最小化する設計です。

関連Issue

#129627

その他

  • WebAssembly の SIMD 実装はまだ完成していないため、NYI マーカーが適用されています
  • 公開API として System.Runtime.Intrinsics に追加されるため、.NET 9 以降の新機能となります
  • x64 および ARM64 の両プラットフォーム対応です

#129619 Remove unsafe MemoryMarshal.Cast from Crc32C update path

概要

CRC-32C計算の内部ループにおいて、unsafe な MemoryMarshal.Cast<byte, ulong/uint> の再解釈をより安全な BinaryPrimitives のリトルエンディアン読み取りに置き換えました。SSE4.2とArm CRC32の両パスで共通の8/4/1バイト処理パイプラインを共有し、コード生成は変わりません。

変更内容

  • src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc32ParameterSet.WellKnown.cs
    • MemoryMarshal.Cast<byte, ulong> / MemoryMarshal.Cast<byte, uint> を BinaryPrimitives.ReadUInt64LittleEndian() / BinaryPrimitives.ReadUInt32LittleEndian() に置き換え
    • x86(SSE4.2)とArm(CRC32)の内部ループ構造を統一し、同じ8/4/1バイト消費パターンを共有
    • コード行数削減(56行削除、20行追加)

パフォーマンスへの影響

影響なし。作成者が「same codegen」と明記しており、パフォーマンスは変わりません。

関連Issue

なし

その他

  • 本PRはGitHub Copilotの支援を受けて作成されています
  • CRC-32C計算の信頼性向上(unsafe操作の削減)を目的とした安全性向上施策です

#129610 Revert "Add lane construction and composition APIs"

概要

PR #127690で追加された「レーン構築および合成API」の機能を完全に削除するリバート変更です。作成者の報告では、この機能がmainブランチを破損させたため、緊急対応として実装全体を取り除きます。

変更内容

JITコンパイラとランタイムライブラリから以下を削除:

  • JITコンパイラ: compiler.h、gentree.cpp、hwintrinsicarm64.cpp、hwintrinsicxarch.cppから合成API関連のJIT処理ロジック(合計1,017行削除)
  • 公開API: System.Numerics.VectorsおよびSystem.Runtime.Intrinsicsから、Vector64/128/256/512のレーン構築・合成メソッド(約1,320行削除)
  • テスト: GenericVectorTestsとVector64/128/256/512テストから対応するテストケース(約1,462行削除)
  • 参照ファイル: ref/System.Numerics.Vectors.csとref/System.Runtime.Intrinsics.csから署名定義を削除

パフォーマンスへの影響

削除による性能への直接的な悪影響はなし。むしろ、破損していた機能を削除することでビルド安定性が回復する可能性あり。

関連Issue

#127690(リバート対象のオリジナルPR)

その他

  • 破壊的変更: 公開APIレベルの削除のため、PR #127690をベースに実装していたコードは互換性を失う
  • リバート理由: 作成者の「this broke main」という報告から、この機能が何らかの実装問題を引き起こしていたと考えられます

#129597 Remove unused nativeImagePath from assembly LoadFromPath paths

概要

NGEN(.NET Native Image Generator)の廃止に伴い、すべてのランタイム(CoreCLR、Mono、NativeAOT)で未使用となっていた nativeImagePath パラメータを AssemblyLoadContext の LoadFromPath 関連メソッドから削除します。このパラメータは既に各ランタイムで無視されていたため、APIの簡潔化が目的です。

変更内容

  • AssemblyLoadContext.CoreCLR.cs: CoreCLR の AssemblyNative_LoadFromPath QCall の LibraryImport シグネチャから nativeImagePath パラメータを削除、InternalLoadFromPath の呼び出しを更新
  • AssemblyLoadContext.Mono.cs: Mono 実装の InternalLoadFromPath から nativeImagePath パラメータを削除、関連する TODO コメントと警告抑制を削除
  • AssemblyLoadContext.NativeAOT.cs: NativeAOT スタブの InternalLoadFromPath から nativeImagePath パラメータを削除
  • assemblynative.hpp / assemblynative.cpp: CoreCLR ネイティブ QCall の AssemblyNative_LoadFromPath のプロトタイプと実装からNI パス引数を削除
  • AssemblyLoadContext.cs: LoadFromAssemblyPath / LoadFromNativeImagePath の呼び出し元から nativeImagePath 引数を削除

パフォーマンスへの影響

影響なし

関連Issue

#129597

その他

  • 破壊的変更: InternalLoadFromPath は内部API(InternalLoadFromPath の接頭辞)のため、公開APIの互換性への影響なし
  • 簡潔化: 不要なレガシーパラメータの削除により、QCall シグネチャとマネージド側の実装が簡潔になります

#129596 Bump actions/checkout from 6 to 7

  • 作成者: @dependabot[bot]
  • 作成日時: 2026年06月18日 21:23:20(UTC)
  • マージ日時: 2026年06月19日 18:53:37(UTC)
  • ラベル: area-codeflow

概要

actions/checkoutをv6からv7にアップデートします。このメジャーバージョンアップでは、セキュリティ強化とモダナイゼーションが含まれます。主な変更は、フォークPRのpull_request_targetおよびworkflow_run環境での悪意あるチェックアウトをブロックする安全装置の追加、ESMモジュールへの移行、および依存関係の更新です。

変更内容

  • .github/workflows/ 配下の7つのワークフローファイルで actions/checkout のバージョンを v6 から v7 に更新
  • 該当ワークフロー:aspnetcore-sync.yml、bump-chrome-version.yml、copilot-setup-steps.yml、jit-format.yml、locker.yml、markdownlint.yml、skill-validation.yml

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

v7.0.0の主要な変更点:

  • セキュリティ強化:pull_request_targetおよびworkflow_runトリガーでのフォークPRチェックアウトをブロック(セキュリティリスク軽減)
  • モダナイゼーション:CommonJS から ESM(ECMAScript Module)への移行
  • 依存関係更新:@actions/core、@actions/tool-cache、flatted、js-yamlなど複数の依存関係をアップデート
  • 破壊的変更:メジャーバージョンアップのため、既存のワークフローで互換性の問題が生じる可能性があります(特にカスタムスクリプトでcheckoutアクションの動作に依存している場合)

#129590 [wasm] WBT: flush async output handlers in ToolCommand.ExecuteWithCapturedOutput

  • 作成者: @lewing
  • 作成日時: 2026年06月18日 19:12:56(UTC)
  • マージ日時: 2026年06月19日 06:38:08(UTC)
  • ラベル: area-Build-mono

概要

Wasm.Build.Tests の ToolCommand.ExecuteWithCapturedOutput でプロセスの Exited イベントと非同期出力ハンドラ間の競合状態を修正します。高速に終了するサブプロセス(例:Hello-World の dotnet run)で、出力ハンドラがすべてのデータを処理する前にプロセスが終了すると、キャプチャされた出力が空になる間欠的な失敗が発生していました。修正では await completionTask 後に Process.WaitForExit() を追加し、最終的な出力ドレイン(stdout/stderr の完全なフラッシュ)を強制します。

変更内容

  • ProcessExtensions.cs: 不要になった StartAndWaitForExitAsync メソッドを削除(-55行)
  • ToolCommand.cs: ExecuteWithCapturedOutput メソッドを修正し、プロセス完了タスク待機後に同期 WaitForExit() を呼び出すことで非同期出力ハンドラの完全なドレインを保証(+31/-38行)、競合状態を回避するためのコメントを追加

パフォーマンスへの影響

WaitForExit() はテスト実行時のみ呼び出されるため、製品コードへの影響はありません。テスト実行時は追加の同期待機が発生しますが、これはプロセス終了後の出力バッファドレイン完了を待つもので、通常は数ミリ秒以内に完了します。

関連Issue

なし

その他

このプルリクエストは GitHub Copilot の支援で作成されたものです。修正は Helix ワーカーで約12個の xunit theories が並行実行されている環境での間欠的な失敗に対応しています。


#129586 Remove OSX from linker tests and runtime trimming tests

  • 作成者: @sbomer
  • 作成日時: 2026年06月18日 16:58:52(UTC)
  • マージ日時: 2026年06月19日 19:59:53(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

Microsoft ホステッド公開 Mac プールへの負荷軽減を目的として、ILLink テストとランタイムトリミングテストから OSX(osx_x64)を削除するものです。作成者は、ILLink テストの OSX は プラットフォーム固有のロジックを実行しないため削除しても安全であり、トリミング済みライブラリテストについても既存の NativeAOT スモークテスト、ライブラリテスト、ILLink/AOT 固有テストによる十分なカバレッジがあると判断しています。

変更内容

  • eng/pipelines/runtime-linker-tests.yml: ILLink テストのジョブマトリックスから osx_x64 を削除(Windows + Linux のみに変更)
  • ランタイムビルド + トリミングテストのジョブマトリックスから osx_x64 を削除
  • ILLink ジョブの nameSuffix を ILLink_Runtime_Testing から ILLink_Tests に変更し、関連コメントを更新

パフォーマンスへの影響

影響なし(CI パイプラインの実行負荷軽減が目的であり、テスト対象コードのパフォーマンスに変更はない)

関連Issue

なし

その他

この変更は CI/CD パイプライン設定の変更であり、テストコードやランタイムコード自体の機能変更ではありません。削除される OSX テストについては、既存のプラットフォーム横断的なテスト戦略により同等のカバレッジが確保されていると判断されています。


#129583 Port System.IO.FileSystem.Watcher to OpenBSD

概要

System.IO.FileSystem.WatcherをOpenBSDにポートします。このPull Requestは、OpenBSDプラットフォームでのファイルシステム監視機能の実装に必要な構成変更とテストの調整を含みます。

変更内容

  • PlatformDetection.cs: OpenBSDプラットフォーム検出ロジックを追加
  • System.IO.FileSystem.Watcher.csproj: OpenBSD向けのビルド構成を更新
  • FileSystemWatcher テストファイル群: OpenBSD環境でのテスト実行に対応(ディレクトリ/ファイル移動テスト、基本テストの調整)
  • extra_libs.cmake: OpenBSD向けのネイティブライブラリ依存関係を追加
  • configure.cmake: OpenBSDの構成スクリプトを更新(プラットフォーム固有の設定を追加)

パフォーマンスへの影響

影響なし

関連Issue

#124911

その他

なし


#129580 Link libgssapi.so.9.0 on OpenBSD for AOT libs

概要

OpenBSD上でAOT(Ahead-of-Time)ライブラリのビルド時に、libgssapi.so.9.0への動的リンクを追加することで、ld.lldリンカーのundefined symbol エラー(krb5_cc_get_lifetime)を解決しました。libs.nativeサブセットとの一貫性を保つための変更です。

変更内容

  • Microsoft.NETCore.Native.Unix.targets: OpenBSD向けのLinkerArg設定に-lgssapiリンカーフラグを追加し、libgssapi.so.9.0への動的リンクを指定

パフォーマンスへの影響

影響なし

関連Issue

#124911

その他

  • 現在のOpenBSD rootfsではlibcom_err(e2fsprogs パッケージ)が欠落しているため、完全な静的リンク版(全ライブラリの静的リンク)への移行は今後の課題とされています
  • この変更はXUnitLogCheckerのAOTコンパイル時のビルド失敗を解決するものです

#129553 Enforce 75-minute timeout floor for windows_arm64 global build jobs

概要

Windows ARM64プラットフォームのビルドパイプラインジョブがデフォルトの60分タイムアウトに達して失敗する問題を解決するため、タイムアウト処理をグローバルビルドジョブ設定層で実装しました。windows_arm64プラットフォーム専用に75分の最小タイムアウトを設定します。

変更内容

eng/pipelines/common/global-build-job.yml

  • timeoutInMinutesの条件付きロジックを追加実装
  • windows_arm64プラットフォームに対してのみ適用
  • タイムアウト値が未指定の場合は75分を適用
  • 75分より大きい明示的な値は保持
  • 75分より小さい値は75分にフロア(下限設定)
  • windows_arm64以外のプラットフォームは動作変更なし

パフォーマンスへの影響

直接的なパフォーマンス改善ではなく、ビルドパイプラインの信頼性向上です。Windows ARM64エージェントは他のプラットフォームより遅いため、60分のデフォルトタイムアウトでジョブが失敗していた状態を解消します。

関連Issue

なし

その他

この変更はテンプレートパラメータをjobParameters経由で予期せず渡すことを避け、ジョブタイムアウト設定の責務を持つレイヤーでタイムアウト処理を一元管理する設計になっています。


#129549 [wasm] Split CoreCLR thunks by target OS (browser vs wasi)

  • 作成者: @lewing
  • 作成日時: 2026年06月17日 23:51:44(UTC)
  • マージ日時: 2026年06月19日 21:23:55(UTC)
  • ラベル: area-VM-coreclr

概要

WebAssembly(WASM)ランタイムで、ブラウザとWASI環境向けの異なるP/Invoke表面に対応するため、CoreCLRのcallhelpersシンク(thunk)をターゲットOS別に分割しました。生成されたthunkファイルはsrc/coreclr/vm/wasm/{browser,wasi}/に分け、CMakeビルドでCLR_CMAKE_TARGET_WASIに基づいて適切なサブディレクトリを選択します。WasmAppBuilderのジェネレータにTargetOSプロパティを追加し、[SupportedOSPlatform]/[UnsupportedOSPlatform]属性でP/Invokeをフィルタリングするようにしました。

変更内容

  • src/coreclr/vm/wasm/{browser,wasi}/: ブラウザ向けとWASI向けにcallhelpersのベースラインファイル(pinvoke、reverse、interp-to-managed)を分割
  • src/coreclr/vm/CMakeLists.txt: WASM_THUNK_SUBDIRによりCLR_CMAKE_TARGET_WASIに基づいてthunkソースを選択するロジック追加
  • src/tasks/WasmAppBuilder/coreclr/: TargetOSプロパティをManagedToNativeGenerator・PInvokeTableGenerator・PInvokeCollectorに追加し、プラットフォーム属性ベースのフィルタリング実装
  • src/mono/browser/build/BrowserWasmApp.CoreCLR.targets: ブラウザビルド時にTargetOS="browser"を明示的に指定

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

注意点: Copilotレビュー結果で、src/coreclr/vm/wasm/browser/callhelpers-reverse.cppに存在しないSystem.Threading.WasiFinalizerScheduler.ScheduleFinalizationへの手動エントリが検出されました。該当する管理型メソッドがこのPRに追加されていない場合、ランタイム時にLookupUnmanagedCallersOnlyMethodByNameが失敗する可能性があります。これらの手動エントリは検証が必要です。


#129503 [browser][mono][MT] Prep for emscripten upgrade

概要

Emscripten アップグレードに向けて、Mono WebAssembly スレッド(MT)ランタイムを準備するPRです。pthread_self への切り替え、WebAssembly.Module のワーカーへの伝播、JS相互運用の修正を実施します。また、マルチスレッド環境での RuntimeFeature.IsMultithreadingSupported の設定と、ワーカーキューの初期化タイミングの改善が含まれます。

変更内容

コア変更(TypeScript/JavaScript):

  • mono_wasm_pthread_ptr から pthread_self への切り替え(startup.ts、worker-thread.ts、shared.ts)
  • Emscripten モジュール型定義の更新:wasmModule を WebAssembly.Module として、wasmMemory/handlers メタデータを追加(internal.ts)
  • ワーカーインスタンス化フロー調整:preRunWorker の実行タイミングを後処理に変更(startup.ts、ui-thread.ts)
  • ワーカーメッセージハンドリングのリファクタリング:モジュール/メモリ/ハンドラーペイロードの受け取り(worker.ts)
  • デフォルト pthread プール初期サイズを 5 から 7 に変更(config.ts)

ビルド・ランタイム設定:

  • PThread を EXPORTED_RUNTIME_METHODS にエクスポート(スレッド有効時)(BrowserWasmApp.targets)
  • pthread_self cwrap シグネチャを追加(cwraps.ts)

テスト調整:

  • WebWorker 関連テスト(WebWorkerTest.cs、WebWorkerTest.Http.cs、WebWorkerTest.WebSocket.cs 他)を一時的にコメントアウト(mt シナリオでの JS 相互運用の破損に対応)
  • JSImportTest.cs の調整

サンプル更新:

  • browser-threads サンプルの pthread プール初期サイズを増加(wwwroot/main.js)
  • Wasm.Browser.Threads.Sample.csproj のビルドプロパティ調整

パフォーマンスへの影響

影響なし(準備段階の変更。ただしワーカープール初期化サイズの増加により、初期メモリ使用量がわずかに増加する可能性あり)

関連Issue

なし

その他

  • 破壊的変更なし:公開 API 層への直接的な変更は限定的
  • 一時的なテスト無効化:WebWorker テストが MT シナリオで現在機能していないため、Emscripten アップグレード完了後の再有効化が必要
  • Copilot レビューコメント:XML コメントでテストを無効化するのではなく、MSBuild 条件または ActiveIssue/ConditionalFact での明示的なスキップが推奨されています

#129495 Fix crossgen2 R2R issues found by static analysis

  • 作成者: @jtschuster
  • 作成日時: 2026年06月16日 23:50:09(UTC)
  • マージ日時: 2026年06月19日 00:49:57(UTC)
  • ラベル: area-ReadyToRun

概要

crossgen2/ILCompilerで静的解析により報告された複数の潜在的バグを修正。主にnullポインタ逆参照の可能性と論理的な比較エラーを解決しています。

変更内容

  • PropertyPseudoDesc/EventPseudoDesc: operator==がnullオペランドを安全に処理するように修正
  • MutableModule.Sorting: CompareToメソッドが_indexとother._indexを正しく比較するよう修正(以前は常に0を返していた)
  • ReadyToRunCodegenNodeFactory: ModuleAndIntValueKey.Equalsでnull Moduleの逆参照を回避
  • ReadyToRunCodegenCompilation: 継承チェーン走査ループで無効なnullチェックを削除し、BaseTypeの非null不変条件をアサート
  • ReadyToRunSymbolNodeFactory: GenericLookupHelperの到達不可能なMethodDictionary/TypeDictionary分岐を削除

パフォーマンスへの影響

影響なし

関連Issue

#129042

その他

すべての修正はAOT/Ready2Run コンパイラの内部実装に限定されます。実行時公開APIには影響ありません。修正されたバグは実装上の潜在的な問題(latent bugs)であり、従来のコード実行パスでは実際に触発されていなかったと報告されています。


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

概要

dotnet/dotnetリポジトリからのコードフロー更新です。複数の依存パッケージがアップデートされ、ビルドインフラストラクチャやツールチェーン関連の調整が行われています。主にMicrosoft.CodeAnalysis系、NuGet系、System.Reflection.Metadata、System.Text.Jsonなどが更新されています。

変更内容

  • バージョン定義ファイル: eng/Version.Details.props、eng/Version.Details.xmlが更新
  • ビルドスクリプト: eng/common配下の複数のスクリプト(build.ps1/sh、msbuild.ps1/sh、tools.ps1/sh)に新機能または小改善が追加
  • インフラストラクチャ: 内部ソース有効化処理(enable-internal-sources.yml)の追加、Helix監視設定の微調整
  • ネイティブコンパイラ検出: eng/common/native/LocateNativeCompiler.targets(新規)
  • クロスコンパイル: cross/build-rootfs.sh、toolchain.cmakeに小規模な修正
  • 依存パッケージ更新: 20以上のパッケージが更新(Microsoft.CodeAnalysis、NuGet系、System.Reflection.Metadata、System.Text.Json、Roslyn関連ツール、WebAssembly Node Transport等)
  • その他: global.jsonのツールバージョン更新、LibraryImportGeneratorテストプロジェクトの微調整

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは完全自動化されたコードフロー更新(maestro)であり、dotnet/dotnetのVMR(Virtual Monorepo)から複数の下流リポジトリの変更を統合しています。aspnetcore、diagnostics、efcore、fsharp、msbuild、nuget.client、roslyn、sdk、winforms、wpfなど、主要なコンポーネントからの複数の変更が含まれています。


#129403 Remove Wrapper delegate kind, switch ARM32 VSD hidden arg to R12

概要

CoreCLRの「Wrapper」デリゲート種別を削除し、ARM32仮想スタブディスパッチ(VSD)の隠し引数パラメータ渡しをR4からR12レジスタに変更します。この変更により、ARM32 VSD ABI互換性のためだけに存在していたWrapper デリゲートインフラストラクチャ全体を廃止し、コンパイラおよびランタイムの実装を簡潔化します。

変更内容

  • ARM32 VSD ABI更新: 隠し引数レジスタをR12に変更、ARM スタブエミッタ/アセンブリワーカーのハンドオフを更新、スタブサイズ定数を調整
  • Wrapper デリゲート機能の削除: VM/JIT/CoreLib全体でWrapper デリゲートプロット、EE/JIT インターフェースフィールド、SuperPMI記録機能を削除
    • DelegateObject::IsWrapperDelegate()、IsWrapperDelegateStub等のヘルパー削除
    • CORINFO_CALL_INFO、CORINFO_EE_INFOからWrapper関連フィールドを削除
    • JIT呼び出しフラグ、calling convention特別ケース、テールコール制限を削除
  • ReadyToRun バージョンアップ: メジャー/ミニマムバージョンを24に変更し、ARM32 VSD レジスタ変更をドキュメント更新

パフォーマンスへの影響

影響なし

関連Issue

#129399

その他

  • JIT/EE インターフェースGUID(jiteeversionguid.h)を更新し、インターフェース変更を反映
  • CLR ABI設計ドキュメント(clr-abi.md)を更新
  • Copilotレビューで、ARM32呼び出し発行時にR12をスクラッチレジスタとして使用しないことを確認する必要があることが指摘されています

#129398 [ARM32] Eliminate red zone usage in runtime stubs

概要

ARM32 Linuxでは SP下のメモリ領域がシグナル配送時に保証されないため、red zone(SP調整せずに下位メモリへの読み書き)の使用がサイレント破損やクラッシュを引き起こす可能性があります。本PR では、ARM32ランタイムスタブにおけるすべてのred zone使用法を排除し、明示的なスタック調整(push/pop)に置き換えています。これにより信頼性が向上し、NativeAOT interop thuks ではスタブサイズが20バイトから12バイトに縮小されます。

変更内容

  • CoreCLR VTableCallStub (virtualcallstubcpu.hpp) — red zone スピル代わりにpre-indexed str / post-indexed ldr を使用
  • CoreCLR interface dispatch (StubDispatch.S) — PROLOG_PUSH/EPILOG_POP で red zone スピル/レストアを置き換え
  • NativeAOT interop thunks (ThunksMapping.cpp, InteropThunksHelpers.S) — r12 から ldr pc で直接ディスパッチ、スタック中間値廃止。THUNK_SIZE を20から12バイトに縮小
  • NativeAOT UniversalTransition (UniversalTransition.S) — 呼び出し元がスタックへ引数をプッシュしてからブランチ。プロローグは既知スタックオフセットから引数レジスタ保存後に読取
  • NativeAOT interface dispatch (DispatchResolve.S) — red zone ストアを stack push に置き換え
  • スタックフレームレイアウト調整 (StackFrameIterator.cpp, EHHelpers.cpp) — null-this AV時のスタックフレームレイアウト更新

パフォーマンスへの影響

  • THUNK_SIZE削減: NativeAOT interop thunksで20バイトから12バイト(40%削減)
  • その他パフォーマンス影響:提供情報なし

関連Issue

なし

その他

本変更は 内部実装の修正 であり、公開APIへの影響はありません。ARM32 Linux環境でのランタイム安定性向上が主な目的です。シグナルハンドラ統合実行時のメモリ破損リスク排除に直結した変更です。


#129376 [release/10.0] Update dependencies from dotnet/icu

概要

dotnet/icu リポジトリからの依存関係を更新するPRです。Microsoft.NETCore.Runtime.ICU.Transport を 10.0.0-rtm.26264.1 から 10.0.0-rtm.26313.1 にアップデートします。

変更内容

  • eng/Version.Details.props: バージョン情報の更新(+1/-1)
  • eng/Version.Details.xml: ICU Transport パッケージのバージョン参照を更新(+2/-2)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは dotnet-maestro[bot] による自動依存関係更新で、release/10.0 ブランチへのアップデートです。dotnet/icu の dotnet/release/10.0 ブランチのコミット ed0c405315d02903e474b1513198c58f68904bc6 (2026年6月13日) に基づいています。


#129375 [release/8.0-staging] Update dependencies from dotnet/icu

概要

dotnet/icu リポジトリからの依存関係を更新するPRです。Microsoft.NETCore.Runtime.ICU.Transport パッケージを 8.0.0-rtm.26256.1 から 8.0.0-rtm.26313.2 にアップデートしています。

変更内容

  • eng/Version.Details.xml: ICU Transport パッケージのバージョン参照を 8.0.0-rtm.26313.2 に更新(+2/-2)
  • eng/Versions.props: 関連するバージョン定義を更新(+1/-1)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 更新元: dotnet/icu の dotnet/release/8.0 ブランチ
  • ビルド: 20260613.2 (Commit: e3c2c4c546b5bb787873c3581949571e9ecf2826)
  • 自動マージPR: dotnet-maestro[bot] による自動依存関係更新

#129272 Add ISOSDacInterface17 for StressLog enumeration via cDAC

概要

新しいISOSDacInterface17 COM インターフェースを追加し、cDAC の IStressLog コントラクトを SOS および clrmd に公開します。これにより、CoreCLR と NativeAOT の両方のプロセスから、ハードコードされた構造体オフセットを使用せずにストレスログを読み取ることができるようになります。

背景: SOS(!DumpLog)と clrmd は現在、CoreCLR レイアウトに一致するハードコードされたオフセットで raw メモリ読み取りを使用しており、NativeAOT のストレスログ読み取りには対応していません。cDAC はすでに両方のランタイムに対応した IStressLog コントラクトを実装しており、これを COM インターフェース層を介して公開します。

変更内容

  • cDAC コントラクト拡張:StartTime(壁掛け時計 FILETIME)を StressLog データ記述子に追加(CoreCLR + NativeAOT)、ThreadStressLogData に Address フィールドを追加してスレッド識別を実現
  • ISOSDacInterface17 定義:SOSStressLogData、SOSThreadStressLogData、SOSStressMsgData データ構造体、ISOSStressLogThreadEnum/ISOSStressLogMsgEnum 列挙子インターフェース、および GetStressLogData、GetStressLogThreadEnumerator、GetStressLogMessageEnumerator メソッドを IDL で定義
  • SOSDacImpl ブリッジ実装:スレッド列挙子はマテリアライズ配列で実装、メッセージ列挙子は完全な Reset/GetCount サポートおよび GetArguments で実装
  • ストレスログが有効でない場合、すべての API は S_FALSE を返す
  • レガシー DAC は非対応:ネイティブ DAC はこのインターフェースを実装しておらず、cDAC のみが対応

パフォーマンスへの影響

影響なし。既存の cDAC IStressLog コントラクトの上に構築された COM ブリッジであり、ランタイムのパフォーマンス特性に変更なし。

関連Issue

なし

その他

  • 互換性の注意:StressLogData と ThreadStressLogData はパブリック positional record struct であり、StartTime と Address パラメータの追加は、プライマリコンストラクタとデコンストラクタシグネチャを変更するため、外部コンシューマに対する破壊的変更となります
  • テスト:StressLog ダンプテストを追加(StressLogIsAvailable、StressLogDataIsValid、CanEnumerateThreadsAndMessages)。所有する debuggee(環境変数でストレスログを有効化)がダンプを生成し、dump ベースの統合テストで検証
  • 関連する Diagnostics PR:dotnet/diagnostics#5873 で SOS !DumpLog がこの新インターフェースに対応される予定
  • デザインドキュメント:docs/design/datacontracts/StressLog.md に SOS/clrmd マイグレーション戦略を記載

#129207 [main] Update dependencies from dotnet/runtime-assets

概要

dotnet/runtime-assetsからの依存関係を更新するPull Requestです。16個のテストデータおよび関連パッケージをバージョン11.0.0-beta.26302.1から11.0.0-beta.26309.3にアップデートします。

変更内容

  • eng/Version.Details.props: 依存関係バージョン情報を更新(+16/-16行)
  • eng/Version.Details.xml: 依存関係の詳細情報を更新(+32/-32行)

アップデート対象パッケージ:

  • Microsoft.DotNet.CilStrip.Sources
  • Microsoft.DotnetFuzzing.TestData
  • Microsoft.NET.HostModel.TestData
  • System.ComponentModel.TypeConverter.TestData
  • System.Data.Common.TestData
  • System.Drawing.Common.TestData
  • System.Formats.Tar.TestData
  • System.IO.Compression.TestData
  • System.IO.Packaging.TestData
  • System.Net.TestData
  • System.Private.Runtime.UnicodeData
  • System.Runtime.Numerics.TestData
  • System.Runtime.TimeZoneData
  • System.Security.Cryptography.X509Certificates.TestData
  • System.Text.RegularExpressions.TestData
  • System.Windows.Extensions.TestData

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPull Requestはdotnet-maestro[bot]による自動更新です。対応するruntime-assetsリポジトリのコミット: 741cd9b2bf5a322b38c37367bc26c4e97ab16abe


#129058 JIT: Fix for IV opt to preserve updates to a counter that is live into an EH handler

概要

JITのInduction Variable(IV)最適化において、例外ハンドラ(EH handler)内で使用されるカウンタ変数への更新が誤って削除される問題を修正します。PR #127932でDo Not Enregister(DNER)とliveness検出が分離されたため、optLocalHasNonLoopUsesがcatch handlerに流入するIVを検出できなくなり、full-opt codegen(crossgen2、jitstress、AggressiveOptimization)で不正な結果が発生していました。

変更内容

  • inductionvariableopts.cpp: optLocalHasNonLoopUsesに明示的なlvTracked && IsLiveInOutOfHandler()チェックを追加。VisitRegularExitBlocksがhandlerブロックを除外しているため、handler内で使用されるIV変数を確実に検出できるようにしました。
  • Runtime_128392.cs: 回帰テストケースを追加。例外ハンドラ内で使用されるカウンタ変数を含むシナリオをカバーしています。
  • Regression_ro_2.csproj: テストケースをプロジェクトに登録。

パフォーマンスへの影響

影響なし。本修正は不正な最適化によって削除されるべきでない更新を保持するための正確性修正であり、パフォーマンスに関する改善や低下を引き起こしません。

関連Issue

#128392

その他

  • 本修正はPR #127932の副作用に対する対応です。
  • full-opt codegenモード(crossgen2、jitstress、AggressiveOptimization属性)での動作正確性に関わる修正です。
  • JIT最適化パス(inductionvariableopts)の内部実装修正のため、公開APIへの影響はありません。

#127690 Add lane construction and composition APIs

概要

Vector型に対するレーン構築・合成APIとシーケンス生成APIを追加するPRです。幾何級数、交互シーケンス、調和級数の生成、およびConcat/Zip/Unzip/Reverseなどのレーン操作機能が新たに公開APIとなります。JITはこれらをネイティブSIMD命令に展開し、ハードウェア非対応時は狭いベクトル幅での分解をサポートします。

変更内容

公開API追加(ref assemblies):

  • Vector<T>/Vector{64,128,256,512}<T>にCreateGeometricSequence、CreateAlternatingSequence、CreateHarmonicSequenceを追加
  • Concat*(Lower/Upper組合せ)、Zip/ZipLower/ZipUpper、Unzip/UnzipEven/UnzipOdd、Reverseレーン操作を追加
  • SignSequenceを符号付き数値型向けの拡張プロパティとして公開
  • CreateCauchySequenceは削除

JIT実装(x86-64ターゲット):

  • 固定イミディエイトシャッフル(vpbroadcast*、vshufps、vpunpck*)により128/256ビットのconcat/zip/unzipを最適化
  • AVX512時は512ビット対応(vpermt2d、vshufi32x4等)
  • ハードウェア非対応時はVector256への分解機構
  • 定数入力時は完全に計算済みベクトルをリード・オンリーデータに埋め込み

JIT実装(ARM64ターゲット):

  • テーブルルックアップを避け、ins(要素挿入)、zip1/zip2、uzp1/uzp2、rev64等の直接命令を活用

マネージド実装(CoreLib):

  • Vector64~Vector512に対する完全な実装
  • 部分ベクトル幅(simdCount==1)の特殊ケース処理

テスト追加:

  • Vector64/128/256/512およびSystem.Numerics.Vectorに対する包括的なユニットテスト

パフォーマンスへの影響

改善:

  • 128ビットconcat: 3命令(vmovups/vshufps/vmovups)に最適化
  • Reverse: 固定シャッフルイミディエイト1命令(例:vpshufd xmm0, [rdx], 27)
  • 定数入力時:シーケンス計算はJIT時実行済み、ランタイムはメモリロードのみ(約19バイト)
  • Vector256/512への分解:AVX512未対応環境でも効率的に動作

懸念点(レビューコメント):

  • CreateGeometricSequenceの浮動小数点版で丸め結果が異なる可能性:各レーンinitial * (multiplier^index)として計算されるため、逐次乗算による積とは異なる
  • elementCount変数が未使用で警告の可能性あり
  • CreateAlternatingSequenceのAVX2高速パスで64ビット広報による型ミスマッチ(TYP_LONGで作成されるが周辺はTYP_INT)

関連Issue

#122557


目次