Pull Request on 2026年06月14日

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

注意点

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



#129383 [browser][wasm] Prep changes ahead of emsdk bump

概要

このPRは、Emscripten 5.0.6/LLVM 23へのツールチェーンバージョンアップに依存しないWASM関連の独立した変更をまとめたものです。ブラウザテスト環境の更新、ランタイムのキープアライブ参照カウント修正、およびWASM_BIGINTに関連するビルド動作の調整を含みます。

変更内容

1. ブラウザバージョン更新

  • eng/testing/BrowserVersions.props — Firefox 125.0.1 → 140.11.0esr、GeckoDriver 0.34.0 → 0.37.0に更新
  • eng/testing/wasm-provisioning.targets — Linux Firefox アーカイブ形式を .tar.bz2 → .tar.xz に変更(Mozilla新形式対応)

2. キープアライブ/タイマーバランス修正(ランタイムバグ修正)

  • src/mono/browser/runtime/scheduling.ts — clearTimeoutとruntimeKeepalivePopのバランスを修正、タイマー実行前にlastScheduledTimeoutIdをリセット
  • src/mono/browser/runtime/diagnostics/dotnet-gcdump.ts — 保留中のGCダンプタイムアウトがクリアされるときにruntimeKeepalivePopを実行
  • src/mono/browser/runtime/startup.ts — エラーパスの不釣り合いなruntimeKeepalivePop呼び出しを削除
  • src/mono/browser/runtime/loader/exit.ts — Node環境でのみflush_node_streamsを実行

3. WASM_BIGINT無効化(corerun/Node用)

  • src/coreclr/hosts/corerun/CMakeLists.txt — Node向けcorerunリンク時に-sWASM_BIGINT=0を追加
  • eng/native.wasm.targets — HEAP64/HEAPU64ビューのエクスポートをWASM_BIGINTプロパティでゲート制御
  • docs/workflow/building/coreclr/wasm.md — Node デバッグ起動引数を更新

パフォーマンスへの影響

影響なし

関連Issue

#129299 から分割されたPR

その他

  • 内部実装(ランタイムスケジューリング、ビルドシステム、テスト環境)への変更であり、公開APIへの影響なし
  • タイマーとキープアライブの参照カウント不釣り合いは、イベントループが適切にドレイン/終了できない潜在的なバグを修正するもの
  • WASM_BIGINT関連の変更は、DWARFデバッガの互換性に関連する回避策

#129356 Wasm R2R: push this before retbuf in InterpToR2R thunk args

概要

Wasm インタプリタから R2R へのthunk引数順序を修正するパッチです。従来はretbufがthisの前に配置されていましたが、JIT(lvaInitArgs)と逆方向thunk(WasmR2RToInterpreterThunk)の期待値に合わせて、thisをretbufの前に配置するよう変更します。これにより、構造体戻り値を持つSynchronized メソッドでのNRE/pMT->Validateアサート失敗を解決します。

変更内容

  • WasmInterpreterToR2RThunkNode.cs: インタプリタ→R2Rコール時の引数スタック順序を($sp, [retbuf], [this], ...)から($sp, [this], [retbuf], ...)に修正。また、インラインドキュメントを更新して、JITおよび逆方向thunkの仮定と一致させました。

パフォーマンスへの影響

影響なし(引数順序の修正のため、パフォーマンス上の変化はなく、正確な呼び出し規約の遵守による正確性の向上が目的)

関連Issue

#129347

その他

本修正はWasm AOT環境における構造体戻り値を持つSynchronizedメソッドの呼び出し時に発生していたランタイムエラーを対象としており、内部実装(ReadyToRun thunk生成)の修正です。


#129348 JIT: don't claim rotates set ZF on xarch

概要

JITコンパイラのxarchプラットフォーム向けフラグ設定分類を修正しました。ROL/ROR(ローテート)命令はZeroFlag(ZF)を更新しないにもかかわらず、シフト命令グループに分類されていたため、ゼロ比較の最適化時に古いZFをブランチが消費する問題を修正しています。

変更内容

  • src/coreclr/jit/gentree.cpp: GenTree::SupportsSettingZeroFlag()内のxarchシフトグループからGT_ROLとGT_RORを削除。ローテート命令はCF(キャリーフラグ)と1ビットローテート時のOFのみを更新し、ZF/SF/AF/PFは影響を受けないことを説明するコメントを追加。
  • src/tests/JIT/Regression/JitBlue/Runtime_129288/Runtime_129288.cs: 新規リグレッションテストケースを追加(114行)。

パフォーマンスへの影響

影響なし。本修正は正確性の修正であり、不正な最適化による誤った動作を防ぐもの。

関連Issue

#129288

その他

この修正は、ROL/ROR命令の実行後にZFを参照するコード生成パスで、古いフラグ値に基づいた間違った分岐判定が行われるバグを防ぐものです。xarchプラットフォーム(x86/x64)固有の命令フラグセマンティクスの正確な実装に関連しています。


#129336 [browser][coreCLR] link out icu/globalization module on InvariantGlobalization flag

概要

WebAssembly上のCoreCLR環境において、InvariantGlobalizationフラグが有効な場合にICU/グローバリゼーションモジュールをリンク対象から除外する機能を追加します。この変更により、不要なモジュールを含めないことでバイナリサイズを削減し、WebAssembly アプリケーションの最適化を実現します。

変更内容

  • BrowserWasmApp.CoreCLR.targets: ビルドターゲット定義を修正し、InvariantGlobalizationフラグに基づくモジュールリンク処理を改善
  • ManagedToNativeGenerator.cs: マネージドからネイティブコードの生成時に、InvariantGlobalizationフラグの状態を考慮したロジックを追加
  • PInvokeTableGenerator.cs: P/Invoke テーブル生成時に、グローバリゼーション関連の P/Invoke エントリを条件付きで生成
  • InvariantGlobalizationTests.cs: InvariantGlobalizationフラグが有効な場合の動作を検証するテストケースを追加
  • BuildWasmAppsJobsListCoreCLR.txt: テストシナリオリストに新規テストシナリオを追加

パフォーマンスへの影響

InvariantGlobalizationフラグ有効時にバイナリサイズを削減(ICU/グローバリゼーション関連モジュールの除外により)。実行時パフォーマンスまたはメモリフットプリントへの直接的な測定値は提供されていません。

関連Issue

#129242

その他

本変更はWebAssembly/Browser環境のみに適用される、CoreCLRランタイムの内部実装変更です。InvariantGlobalizationフラグ利用時の最適化であり、通常のグローバリゼーション機能には影響しません。


#129244 [cdac] Pipeline refactor + StackWalk doc cleanup + DataGenerator build fix

概要

cDAC(compact Data Access Component)診断パイプラインのリファクタリングとビルド修正を行うPRです。主な変更は:

  1. runtime-diagnostics.ymlパイプラインを再構成し、プラットフォーム間で共有ビルドを活用して重複を削減
  2. DataGeneratorTests のコンパイル失敗を修正(ReadNInt抽象メソッドの実装不足)
  3. StackWalk データコントラクトドキュメントのクリーンアップ

変更内容

  • runtime-diagnostics.yml(351行に削減):

    • 共有CdacBuildステージを導入し、coreclr+libsのビルドをプラットフォームごとに1回実行
    • Dump/Stress/XPlatDumpGen/XPlatDumpTestが同じビルド成果物を消費
    • ジョブレベルdependsOnGlobalBuildsによるプラットフォーム単位の並列化
    • CdacUnitTests新規追加:cDAC管理側ユニットテスト + DataGeneratorTests を linux_x64 Debug で実行
    • 3つの再利用可能テンプレート追加で約250行のボイラープレートを削減
  • TestTarget.cs:ReadNInt(ulong address)抽象メソッドの override を追加(#128784の修正漏れ対応)

  • Subsets.props:DataGeneratorTestsをtools.cdactestsサブセットに追加

  • StackWalk.md:遅延中のシグネチャスキャンセクションを削除し、1行の注記 + tests/StressTests/known-issues.mdへのリンクに置換

  • 新規テンプレート:

    • sos-test-leg.yml(SOS テスト用)
    • cdac-helix-test-leg.yml(cDAC Helix テスト用)
    • download-cdac-build-artifact.yml(ビルド成果物ダウンロード用)

パフォーマンスへの影響

  • CI パイプラインの効率化:共有ビルド導入により、同じプラットフォーム上でのcDAC ビルド重複を排除
  • runtime-diagnostics.ymlが581行から351行に削減(30%削減)
  • プラットフォーム間の並列処理により全体実行時間短縮の可能性あり
  • ストレステストが毎回トリガーで実行されるようになり、テストカバレッジ向上

関連Issue

#128872、#128784、#129237、#129241(後者2つはこのPRで置換予定)

その他

  • ステータス:ドラフト。YAML構文はローカル検証済みだが、プラットフォーム間並列化・Debug cDAC ペイロード準備・CdacUnitTests最小サブセットビルドはエンドツーエンドパイプライン実行での検証が必要
  • GitHub Copilot CLIの支援で準備
  • Stress vs Dump の cDAC ビルド分離:Stress は Release ネイティブシム使用、Dump は Debug 管理アセンブリ使用(ライブラリはRelease固定)

#129221 [browser][coreCLR] set "LANG" env variable

概要

CoreCLR WebAssembly ブラウザローダーが applicationCulture を ICU シャードの選択にのみ使用していた問題を修正しました。LANG 環境変数を "<applicationCulture>.UTF-8" に設定することで、ランタイムのデフォルトロケールが applicationCulture と一致するようになり、Mono の実装に合わせます。これにより、非デフォルトカルチャで起動した Blazor WebAssembly アプリケーションで発生していた InvalidOperationException ("culture change is not supported") が解決されます。

if (culture && loaderConfig.environmentVariables!["LANG"] === undefined) {
    loaderConfig.environmentVariables!["LANG"] = `${culture}.UTF-8`;
}

変更内容

  • src/native/libs/Common/JavaScript/loader/icu.ts: applicationCulture の確定後に LANG 環境変数を設定するロジックを追加(+4行)
    • ユーザーが既に LANG を指定している場合はオーバーライドしない保守的な実装
    • 環境変数の適用は host/index.ts::setupEmscripten で dotnetInitializeModule 中に行われるため、タイミングは正しい

パフォーマンスへの影響

影響なし

関連Issue

関連 PR: aspnetcore#66331

その他

  • 互換性: 破壊的変更なし。ユーザーが明示的に LANG を設定している場合はその設定が優先される
  • 動作変更: applicationCulture=fr-FR で起動した場合、修正前は CurrentCulture が en-US にフォールバックしていたのに対し、修正後は fr-FR で一貫性が保たれます
  • Mono の src/mono/browser/runtime/loader/config.ts と同じアプローチを採用し、CoreCLR-WASM と Mono のグローバライゼーション動作を統一

目次