Pull Request on 2026年07月31日

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

注意点

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


目次

  1. #131678 Fix NativeAOT crash in Server GC with ETW GCHeapDump tracing
  2. #131670 Fix SuppressGCTransitionNegativeTest: restore GCStressIncompatible, document CLRTestExitCode requirement
  3. #131661 JIT: use user arg indices when reading call args
  4. #131646 Fix CoreCLR browser-wasm native relink from a packaged SDK
  5. #131626 Update copilot instructions to allow more efficient interactive CLI usage
  6. #131625 Don't share a value number between raw addresses taken in different pinned regions
  7. #131622 Remove custom prefix handling from Windows apphost
  8. #131621 Delete long-disabled Bundle_can_be_renamed test
  9. #131617 Ship hosting layer error codes as a public header
  10. #131616 Vectorize PrintableStringEncoding and NumericStringEncoding
  11. #131608 Integrating GetFrameType and SetContext into cDAC
  12. #131607 Flush Crossgen2 R2R output stream before generating native PDB
  13. #131604 Port in-process crash reporters to all Unix OSes
  14. #131599 Fix an out-of-bounds read when matching UTF-8 number separators
  15. #131598 Add DI singleton reentrancy regression test
  16. #131586 [mono][interp] Fix miscompile of self-assignment via newobj with alised byref args.
  17. #131571 [cDAC] Rename GetPEFileMDInternalRW to HasReadWriteMetadata and implement in cDAC
  18. #131568 [release/9.0-staging] Update dependencies from dotnet/cecil
  19. #131567 [release/9.0-staging] Update dependencies from dotnet/icu
  20. #131558 [Wasm RyuJit] repair multi-entry try regions
  21. #131553 Remove NativeAOT DebugHeader plumbing
  22. #131551 Retarget cdac projects to NetCoreAppMinimum (net10)
  23. #131500 Add ReadOnlySpan constructors to BitArray
  24. #131454 Add unsafe contract consistency code fixes
  25. #131442 Normalize TYP_BYREF to TYP_INT in implicit casts even on x86
  26. #131415 [release/10.0] Source code updates from dotnet/dotnet
  27. #131409 [release/8.0-staging] Update dependencies from dotnet/xharness
  28. #131306 Correctly implement fuzzers for new encryption streams
  29. #131247 [release/9.0-staging] Update dependencies from dotnet/arcade
  30. #130985 Fix codegen assert reloading a spilled signed small cast source
  31. #130920 Make all entries in WASM tables SymbolDefinitions
  32. #130599 [release/10.0] Update dependencies from dotnet/xharness
  33. #130598 [release/9.0-staging] Update dependencies from dotnet/xharness
  34. #130127 [ios-clr] Deduplicate CreateThread event when a thread runs both R2R and interpreted code
  35. #129915 [APX] refactor APX-EVEX emitter

#131678 Fix NativeAOT crash in Server GC with ETW GCHeapDump tracing

  • 作成者: @Copilot
  • 作成日時: 2026年07月31日 20:46:45(UTC)
  • マージ日時: 2026年07月31日 23:06:46(UTC)
  • ラベル: area-GC-coreclr

概要

NativeAOT の Server GC で ETW GCHeapDump トレース中に発生するクラッシュを修正します。GcScanRootsForETW が未初期化の sc->thread_number (-1) を IsThreadUsingAllocationContextHeap に渡すことで、Server GC では g_heaps[-1] への範囲外読み取り(0xC0000005)が発生し、Workstation GC ではスタックルートなしのヒープダンプが生成されていました。

変更内容

  • src/coreclr/nativeaot/Runtime/eventtrace_gcheap.cpp: GcScanRootsForETW から IsThreadUsingAllocationContextHeap ガード条件を削除(3行削除)
    • 並列 GC スキャン(GcScanRoots)では各 GC スレッドが独自のヒープパーティションを要求するため有効ですが、順序付き ETW ウォークでは全マネージスレッドを正確に1回訪問する必要があるため、このフィルタは無意味で破損していました
    • CoreCLR の GcScanRootsForProfilerAndETW に合わせました

パフォーマンスへの影響

影響なし

関連Issue

#131677

その他

  • Server GC で ETW GCHeapDump トレース時のアクセス違反(0xC0000005)を解決します
  • Workstation GC でのスタックルート欠落も同時に解決します

#131670 Fix SuppressGCTransitionNegativeTest: restore GCStressIncompatible, document CLRTestExitCode requirement

  • 作成者: @Copilot
  • 作成日時: 2026年07月31日 19:28:13(UTC)
  • マージ日時: 2026年07月31日 22:22:31(UTC)
  • ラベル: area-GC-coreclr

概要

SuppressGCTransitionNegativeTestがGCストレス環境で失敗する問題を修正するPRです。PR #126108でXUnit属性によるGCStressIncompatibleスキップに置き換えられましたが、このテストは非デフォルトのCLRTestExitCode(クラッシュ終了コード)を指定しており、XUnitレベルのスキップが100を返すため、ハーネスが期待する終了コードと矛盾していました。この問題を解決するために、プロジェクト設定でGCストレス互換性チェックを復元し、ドキュメントに新しいテスト規則を追加します。

変更内容

  • SuppressGCTransitionNegativeTest.csproj: <GCStressIncompatible>true</GCStressIncompatible>をプロジェクト設定に復元。ラッパースクリプトレベルでのGCストレススキップを有効化
  • SuppressGCTransitionNegativeTest.cs: XUnitレベルのスキップを引き起こしていた[SkipOnCoreClr]属性を削除
  • requiresprocessisolation.md: Rule 30を追加 — 非デフォルトのCLRTestExitCodeを持つテストはXUnit属性ではなく、プロセスレベルのスキップメカニズム(例:GCStressIncompatible)を使用する必要があることをドキュメント化。また、テスト属性要件表にCLRTestExitCodeを追加

パフォーマンスへの影響

影響なし

関連Issue

#131667

その他

この変更は内部テスト機構に関するものです。テストフレームワークの期待値設定とスキップメカニズムの層別化(プロセスレベルvs. XUnitレベル)に関する重要な設計パターンをドキュメント化しており、同様の問題を将来防ぐためのガイドラインとなります。


#131661 JIT: use user arg indices when reading call args

概要

Wasm環境でのJIT最適化における引数インデックスの扱いの不具合を修正します。Wasm上では管理呼び出しに隠し引数WasmShadowStackPointerが追加されるため、GetArgByIndex(n)とGetUserArgByIndex(n)が異なる値を返します。本修正では、ユーザー引数のみを対象とする場面でGetUserArgByIndex(n)を使用するよう統一し、キャスト補助関数の引数判定エラーによるNullReferenceException発生を防止します。

変更内容

  • assertionprop.cpp: Assertion propagation処理でキャスト補助呼び出しの引数チェック時にGetUserArgByIndex()を使用するよう修正(GetArgByIndex()から変更)
  • gentree.cpp: 引数関連メソッドの複数箇所でGetUserArgByIndex()の使用に統一(GetArgByIndex()から変更、計18行)
  • morph.cpp: 引数アクセス処理でGetUserArgByIndex()の使用に統一(計3行修正)
  • テスト追加: Runtime_131635回帰テスト(Wasm環境でのインターフェース呼び出し後のnull参照チェック検証)

パフォーマンスへの影響

影響なし。x64/arm64ではWasmの引数シフトが発生しないため、SPMI asm diffsなし。

関連Issue

#131635

その他

Wasm固有の問題であり、x64やarm64プラットフォームは影響を受けません。修正内容の一部はGitHub Copilotとの協働で実施されています。


#131646 Fix CoreCLR browser-wasm native relink from a packaged SDK

概要

CoreCLR browser-wasm native relink機能をパッケージ化されたSDK(例:daily wasm-tools workload)から動作するように修正するPRです。Emscriptenキャッシュの環境変数設定、ヘッダファイルのパッケージング、ランタイムパックへのVM/minipalヘッダ追加により、復元されたSDK環境でのビルドを可能にしました。

変更内容

  • Fix 1: BrowserWasmApp.CoreCLR.targetsにEM_CACHEとEM_FROZEN_CACHEを設定し、emccが正しいEmscriptenキャッシュディレクトリを参照するように修正
  • Fix 2: coreclr_compat.hをWebAssembly.Sdk packのSdk/フォルダに追加(ビルド時の互換性シム)
  • Fix 3: callhelpers.hpp、minipal/entrypoints.h、minipal/utils.hをMicrosoft.NETCore.Appランタイムパックのnative/includeフォルダに追加し、プラットフォームマニフェストで宣言
  • BrowserWasmApp.CoreCLR.targetsで_VmWasmIncludeDirと_MinipalIncludeDirをランタイムパックの$(MicrosoftNetCoreAppRuntimePackRidNativeDir)から解決するよう設定

パフォーマンスへの影響

影響なし

関連Issue

#128362

その他

本修正により、復元されたSDK環境でのnative-relinkビルドが完全に動作することが検証されています。ビルド後、CoreCLR wasmアプリはHeadless Chromeで読み込み可能となり、ベンチマーク測定が完了します。


#131626 Update copilot instructions to allow more efficient interactive CLI usage

  • 作成者: @rcj1
  • 作成日時: 2026年07月31日 00:30:30(UTC)
  • マージ日時: 2026年07月31日 16:31:36(UTC)
  • ラベル: area-Infrastructure

概要

dotnet/runtimeリポジトリのCopilot指示ガイドを更新し、インタラクティブCLI使用時に、ユーザーが明示的にビルド/テスト実行をスキップするよう指示した場合に、自動化されたビルド/テスト処理をスキップすることを許可します。これにより、反復的な編集作業中の不要な自動処理を削減することが目的です。

変更内容

  • .github/copilot-instructions.md: CLI固有の例外を追加し、ユーザーが事前にビルド/テストの実行を指示しなかった場合、自動ビルド/テストステップをスキップできるようにしました。

パフォーマンスへの影響

影響なし(開発者体験の効率化が主な目的)

関連Issue

なし

その他

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

  • リスク評価との矛盾: 提案された指示は無条件にビルド/テストをスキップできるため、動作変更やコード生成、パブリックAPIなど高リスクな変更でも検証をスキップする可能性があります。元の「リスクに応じた努力の段階付け」ガイドと矛盾しています。
  • スコープの広さ: ユーザーディレクティブが他の指示を完全に無効化できる可能性があり、実行内容の正確な報告などの重要な要件までオーバーライドされるリスクがあります。

改善案としてCopilotは、高リスク変更での検証は維持しつつ、テスト実行をスキップしたことの明示的な報告を必須とするような限定的な例外を提案しています。


#131625 Don't share a value number between raw addresses taken in different pinned regions

概要

JIT値番号付けのバグを修正しました。GC値を非GCテンポラリにキャストする際、異なるpinned領域からの等価なストアに同じ値番号を割り当てていたため、CSEが圧縮GC後の古い生アドレスを再利用する問題がありました。各ストアに一意の値番号を付与し、sequential pinned領域とループ形式の両方に対する回帰テストを追加します。

変更内容

  • src/coreclr/jit/valuenum.cpp: ストア値の型がストア型と一致せず、値がGC型(TYP_REFまたはTYP_BYREF)の場合、各ストアに一意の不透明な値番号を割り当てるロジックを追加。これにより、CSEが異なるpinned領域間での生アドレススナップショット共有を防ぐ。
  • src/tests/JIT/Regression/JitBlue/Runtime_131226/Runtime_131226.cs: sequential pinned領域とループ内pinned領域パターンを含む回帰テストを追加。圧縮GC実行時の古い生アドレス再利用を検出。
  • src/tests/JIT/Regression/Regression_ro_2.csproj: 新規回帰テストをプロジェクトに統合。

パフォーマンスへの影響

影響なし

関連Issue

#131226

その他

このバグ修正はメモリセーフティに関連しており、固定領域(pinned regions)と圧縮GCが絡むシナリオで、不正なメモリアクセスが発生する可能性がありました。修正は内部JIT実装(値番号付けエンジン)への変更で、公開APIには影響しません。


#131622 Remove custom prefix handling from Windows apphost

  • 作成者: @elinor-fung
  • 作成日時: 2026年07月30日 22:57:16(UTC)
  • マージ日時: 2026年07月31日 02:33:17(UTC)
  • ラベル: area-Host

概要

Windows apphostのエラーダイアログ処理から、カスタム接頭辞(" _ ")によるエラーメッセージの特殊処理を削除しました。この接頭辞はapphost自身でのみ生成されていましたが、現在は出力されなくなったため、対応コードを削除したものです。

変更内容

  • src/native/corehost/apphost/apphost.windows.c:
    • custom_prefix定数と関連する条件分岐(7行)を削除
    • フレームワーク不足エラーメッセージのパース処理(7.0未満と7.0以降の両対応)およびapplaunch URLの抽出処理は維持

パフォーマンスへの影響

影響なし(処理の単純化により、わずかなコード削減)

関連Issue

なし

その他

このPRはコード簡潔化を目的とした変更であり、Windows apphostの機能に影響を与えません。appmodelチームによるレビュー済みです。


#131621 Delete long-disabled Bundle_can_be_renamed test

  • 作成者: @Copilot
  • 作成日時: 2026年07月30日 22:50:51(UTC)
  • マージ日時: 2026年07月31日 21:28:38(UTC)
  • ラベル: area-Host

概要

6年前からアクティブな問題としてマークされていた Bundle_can_be_renamed_while_running テストを削除します。このテストは共有の TestFixture が [Theory] 実行間で非決定的な失敗を引き起こしていたため無効化されていましたが、この期間に関連する報告済みの問題がないため、削除することで技術負債を削減します。

変更内容

  • BundleRename.cs: Bundle_can_be_renamed_while_running テストケース全体を削除(74行削除)
  • AppWithWait.csproj: テストアセットのプロジェクトファイルを削除(8行削除)
  • AppWithWait/Program.cs: テスト用アプリケーションの実装を削除(41行削除)

パフォーマンスへの影響

影響なし

関連Issue

#38013

その他

このPRはテスト基盤の整理目的の変更です。削除対象のテストは長期間無効化されており、新たな問題報告がないため削除対象として妥当です。


#131617 Ship hosting layer error codes as a public header

  • 作成者: @elinor-fung
  • 作成日時: 2026年07月30日 21:39:39(UTC)
  • マージ日時: 2026年07月31日 02:32:16(UTC)
  • ラベル: area-Host

概要

ホスティングレイヤーの StatusCode enum を公開C言語ヘッダー host_error_codes.h として出荷します。これにより、ネイティブホストコンシューマーは hostfxr、hostpolicy、nethost APIから返されるエラーコードを手動で再定義する必要がなくなります。ヘッダーは Microsoft.NETCore.DotNetAppHost パッケージに含まれ、純粋なC言語コードとしてコンパイル可能です。

変更内容

  • src/native/corehost/error_codes.h: C言語互換性を保つため、C++-のみの static_cast マクロ使用をラップ
  • src/native/corehost/nethost/CMakeLists.txt: error_codes.h を公開名 host_error_codes.h としてインストール
  • src/installer/pkg/projects/Microsoft.NETCore.DotNetAppHost/Microsoft.NETCore.DotNetAppHost.pkgproj: DotNetAppHost パッケージに host_error_codes.h を追加
  • src/installer/pkg/archives/dotnet-nethost.proj: dotnet-nethost アーカイブ出力に host_error_codes.h を公開
  • src/native/corehost/test/mockhostfxr/test_c_api.c: 純C言語インクルード検証テストに error_codes.h を追加

パフォーマンスへの影響

影響なし

関連Issue

#110891

その他

  • 公開API変更: 公開ヘッダーの追加であり、既存の破壊的変更はなし
  • C言語互換性: ホスト消費者(C/C++ネイティブコード)が hostfxr/nethost の戻り値を正確に解釈できるよう、標準化されたエラーコード定義を提供
  • Copilot指摘事項: C言語向け STATUS_CODE_SUCCEEDED マクロの定義欠落、インクルードガード識別子が予約形式(__ で始まる)である点について低信頼度の指摘あり

#131616 Vectorize PrintableStringEncoding and NumericStringEncoding

概要

ASN.1制限文字列エンコーディングのNumericStringとPrintableStringに対して、SIMD(ベクトル化)による高速化を実装するフォローアップ。これら2つのエンコーディングは、連続した文字範囲ではなく複数の範囲と個別文字から構成されるため、複数範囲チェックが必要です。小さな入力ではスカラーパスの高速化により、ベンチマーク回帰を補完しています。

変更内容

  • AsnCharacterStringEncodings.cs: RestrictedAsciiSetEncoding新基底型の導入、NumericString/PrintableStringがセットベースエンコーディングから派生し、位置認識スカラーヘルパーを追加
  • AsnCharacterStringEncodings.net.cs (新規): SIMD検証実装(byte/ushortベクトル形式)、GetBytes/GetCharsの高速化
  • AsnCharacterStringEncodings.downlevel.cs (新規): SIMD非対応環境向けのスタブ実装
  • SimpleWriterTests.cs: 境界安全性、ベクトルサイズ有効文字範囲、無効インデックス報告のテスト追加
  • ComprehensiveReadTests.cs: 上記に加えてDecoderFallbackException経由の無効インデックス報告テスト追加

パフォーマンスへの影響

大幅な改善(内部実装):

PrintableString/NumericStringともに:

  • 小規模(2-15バイト): Writeで約30%改善、Readで10-15%改善
  • 中規模(16-64バイト): Writeで50-80%改善、Readで50-78%改善
  • 大規模(255-1024バイト): Writeで65-69%改善、Readで75-88%改善

例:NumericString 1024バイト時、WriteCharacterStringは1,516ns→231ns(85%削減)、TryReadCharacterStringは1,315ns→153ns(88%削減)

スカラーパスの最適化により、ベクトル化の初期オーバーヘッドを相殺しています。

関連Issue

なし

その他

  • 公開APIに対する破壊的変更なし(内部実装のみ)
  • .NET標準ライブラリ(System.Formats.Asn1)の更新
  • SIMD非対応環境への後方互換性を確保(downlevel実装)

#131608 Integrating GetFrameType and SetContext into cDAC

  • 作成者: @Copilot
  • 作成日時: 2026年07月30日 19:02:00(UTC)
  • マージ日時: 2026年07月31日 16:18:42(UTC)
  • ラベル: area-Diagnostics-cdac

概要

IXCLRStackWalk インターフェースの GetFrameType および SetContext メソッドを cDAC (Compact Data Access Component) に統合します。これらのメソッドにより、スタックウォーク時のフレームタイプ取得とコンテキスト設定が可能になります。なお、CLRDATA_STACK_WALK_REQUEST_SET_FIRST_FRAME リクエストは現在の実装コンテキストでは no-op として残されています。

変更内容

  • IStackWalk.cs: インターフェース定義にフレームタイプ情報の取得関連メソッドを追加
  • StackWalk_1.cs: スタックウォークコントラクトの実装を拡張
  • ClrDataStackWalk.cs: GetFrameType と SetContext の実装を追加(計105行追加、内部API)
  • IXCLRData.cs: GetFrameType メソッドの新規実装を追加(内部API)
  • StackWalk.md: データコントラクト設計ドキュメントにフレームタイプ関連の説明を追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

潜在的な問題(Copilotの指摘による):

  1. Reseed() メソッドで既存のenumeratorを破棄した後に新しいものを作成しているため、作成に失敗した場合に無効な状態が残る可能性があります。成功時にswapする実装に変更することが推奨されます。

  2. SetContext() で cDAC 側の処理が失敗した場合でも、レガシー実装の状態が更新される可能性があります。成功時(S_OK)のみレガシー実装を更新するべきです。

  3. CLRDATA_STACK_WALK_REQUEST_SET_FIRST_FRAME が現在 no-op となっているため、ネイティブ DAC の動作との互換性に差が生じる可能性があります。


#131607 Flush Crossgen2 R2R output stream before generating native PDB

  • 作成者: @Copilot
  • 作成日時: 2026年07月30日 18:09:55(UTC)
  • マージ日時: 2026年07月31日 15:47:33(UTC)
  • ラベル: area-ReadyToRun

概要

Crossgen2で生成されるネイティブPDB(*.ni.pdb)のGUIDがゼロになる問題を修正します。原因はReadyToRunObjectWriterの出力ストリームがバッファリングされたままSavePdbに渡され、ディスク上の不完全なイメージが読み込まれたためです。ネストされたusingブロックでストリームをフラッシュ・クローズすることで、PDBファイルの同一性がDLLと一致するようになります。

変更内容

  • ReadyToRunObjectWriter.cs: オブジェクト出力をusingブロックでスコープし、シンボルファイル読み込み前にストリームをフラッシュ・クローズ。stream.Lengthをusingブロック内でキャプチャ
  • PdbChecker (MSDiaSymbolReader.cs、Program.cs): PDB検証時にイメージファイルとの照合機能を追加し、crossgen2スモークテストで使用可能に
  • CLRTest.CrossGen.targets: PdbChecker実行時の引数指定を更新

パフォーマンスへの影響

影響なし

関連Issue

#131605

その他

本修正により、.NET 11プレビューSDKのR2Rシンボルに対してmsdlシンボル参照が正常に機能するようになります。内部実装(Crossgen2 AOT コンパイラ)の修正であり、公開APIへの影響はありません。


#131604 Port in-process crash reporters to all Unix OSes

概要

in-processクラッシュレポーターの対応OSを拡張します。従来はLinuxに限定されていた機能を、すべてのUnix OSに対応させることで、より広範な環境でのクラッシュレポート生成を可能にします。

変更内容

  • clrfeatures.cmake: in-processクラッシュレポーター機能の有効化条件を変更。LinuxのみからすべてのUnix OSベースシステムへの対応を拡大(+5/-3)
  • inproccrashreporter.cpp: クラッシュレポート生成ロジックを調整。Unix OS間の互換性を考慮した実装に修正(+81/-48)

パフォーマンスへの影響

影響なし

関連Issue

#131535

その他

この変更はランタイムのクラッシュ診断機能(内部実装)に関するもので、公開APIへの影響はありません。Unix系OS(Linux、macOS、BSD等)全体でのクラッシュレポート生成機能の一貫性向上を目指しています。


#131599 Fix an out-of-bounds read when matching UTF-8 number separators

概要

UTF-8数値パーサーの境界外読み取りバグを修正しました。NumberFormatInfoの UTF-8キャッシュにNULターミネータが存在しないため、MatchCharsが配列境界を超えて読み込み、セパレータマッチングの失敗により数字が符号の一部として解析されていました。例えばfa-IRの8バイトNegativeSignを持つカルチャでは"-1234"が-234と解析されていました。修正により、キャッシュに末尾NULバイトを追加し、パターンマッチングをvalue.Lengthで制限することで安全性を確保しました。

変更内容

  • src/libraries/Common/src/System/Number.Parsing.Common.cs: MatchCharsの実装を変更し、NULターミネータに依存せずvalue.Lengthで範囲チェックを行うように修正
  • src/libraries/System.Private.CoreLib/src/System/Globalization/NumberFormatInfo.cs: UTF-8キャッシュ作成ロジックを集約し、テキスト長より1バイト長いバッファを割り当て末尾にNULを配置
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DecimalTests.cs: マルチバイトUTF-8符号/セパレータ/通貨記号を含むカルチャでの解析テストケースを追加

パフォーマンスへの影響

影響なし

関連Issue

#131599

その他

  • この修正はコアランタイムの数値パーサー(内部実装)に対するものです
  • バグの影響範囲:マルチバイトUTF-8エンコーディングを持つ符号またはセパレータを含むカルチャ(例:fa-IR)でのDecimal/数値解析時に不正な結果が返される可能性がありました
  • 修正によりStartsWithベースのマッチング手法と一貫性を持つようになりました

#131598 Add DI singleton reentrancy regression test

概要

DI(Dependency Injection)コンテナのシングルトン解決時に、コンストラクタ内で再入的に同じサービスを解決しようとする場合の動作を検証する回帰テストを追加しました。このテストは、循環依存エラーが発生した場合でも複数のシングルトンインスタンスが生成されないことを確認します。

変更内容

  • CircularDependencyTests.cs: 新しい非同期テストメソッド ReentrantSingletonResolution_DoesNotCreateMultipleInstances を追加

    • ReentrantSingleton、ReentrantDependency、ReentrantSingletonConsumer という3つのヘルパー型を導入
    • コンストラクタ内での再入的解決シナリオをモデル化し、例外がキャッチされることを確認
    • Assert.Same でシングルトンインスタンスの同一性を検証
    • コンストラクタが正確に1回実行されることを確認
  • Microsoft.Extensions.DependencyInjection.Tests.csproj: テストプロジェクト設定を更新

パフォーマンスへの影響

影響なし(テストコードの追加のため)

関連Issue

#124331、dotnet/aspnetcore#67904

その他

  • #124331で追加された再入ガード機構を検証する目的のテスト
  • 負のコントロール(#124331の再入ガードを削除すると Assert.Same で失敗)により、テストの有効性が確認されている
  • Copilotからは、ReentrantDependency の SemaphoreSlim は不要との指摘あり(本テストでは並行アクセス保護が不要なため)

#131586 [mono][interp] Fix miscompile of self-assignment via newobj with alised byref args.

概要

Monoインタープリタの最適化ティア(INTERP_OPT_SUPER_INSTRUCTIONS)における自己割り当てコンストラクタのミスコンパイルを修正しました。in(byref)パラメータが宛先とエイリアスする場合、ECMA-335に準拠してコンストラクタが古い値を参照できるよう、中間値の一時コピーを経由するようにしました。

修正前は以下のコードが誤動作していました:

a = new GEJ(a.x, a.y, a.z, a.infinity);

インタープリタティアアップ後、アドレス取得されたローカル変数への直接書き込み最適化により、コンストラクタが読み書き同時実行の状態に陥り、フィールドがゼロ化されていました。

変更内容

  • interp/transform-opt.c: interp_super_instructionsの"forward dreg"パスにvar_has_indirectsガード追加。ソースまたは宛先ローカル変数がアドレス取得されている場合は最適化をスキップ。
  • Runtime_122237.cs: 回帰テスト追加。修正前は失敗、修正後は成功を確認。
  • Regression_ro_2.csproj: テストプロジェクトに新テストを登録。

パフォーマンスへの影響

影響なし(安全性の確保のための最適化抑制であり、一般的なコード生成パスには影響しない)

関連Issue

#122237

その他

  • 既存のinterp_cpropのガード機構およびMono JIT vreg_is_volatileの規約に準じた修正
  • デフォルト(自動)およびインタープリタティアリング強制モード両方で検証済み
  • 主にAndroidで約1000イテレーション後のティアアップ時に問題が観察されていた

#131571 [cDAC] Rename GetPEFileMDInternalRW to HasReadWriteMetadata and implement in cDAC

概要

GetPEFileMDInternalRWをHasReadWriteMetadataにリネームし、内部ターゲットアドレスを公開する代わりにメタデータの書き込み可能性を直接返すように変更しました。ネイティブとマネージドのDacDbiインターフェース、cDAC、およびそれらの呼び出し元を更新しています。

変更内容

  • ネイティブDAC層 (src/coreclr/debug/daccess/dacdbiimpl.*): GetPEFileMDInternalRWをHasReadWriteMetadataにリネーム、戻り値をBOOLに変更
  • デバッグインターフェース (src/coreclr/debug/inc/dacdbiinterface.h, src/coreclr/inc/dacdbi.idl): インターフェース定義を更新
  • PEAssembly (src/coreclr/vm/peassembly.h): HasReadWriteMetadata()ヘルパーメソッドを追加
  • cDAC契約 (IEcmaMetadata.cs): 新しいHasReadWriteMetadataメソッドを公開インターフェースに追加
  • cDAC実装 (EcmaMetadata_1.cs, DacDbiImpl.cs): 書き込み可能フラグとメタデータポインタの両方をチェックする実装を追加
  • データ記述子 (datadescriptor.inc, PEAssembly.cs): MDImportIsRW_Debugger_Use_Onlyフィールドを追加
  • テスト (DacDbiImplTests.cs): 書き込み可能、読み取り専用、無効出力ケースのカバレッジを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

注意点(Copilotによる指摘):

  1. 公開API承認の欠落: IEcmaMetadataインターフェースに新しいメソッドHasReadWriteMetadataを追加していますが、リポジトリポリシーでは新しい公開APIはapi-approvedIssueでバックアップされる必要があります。
  2. 例外処理の一貫性: null出力時にArgumentExceptionをスロー(HRESULT: 0x80131500)していますが、ネイティブDAC実装ではE_INVALIDARGを返すため、マネージド/ネイティブ間での動作に矛盾があります。
  3. テストカバレッジ: MDImportIsRWが設定されているがMDImportがnullのケースがテストでカバーされていません。
  4. レガシーフォールバック: cDAC契約が利用できない古いターゲットバージョンではクロスバージョン対応が必要な可能性があります。

#131568 [release/9.0-staging] Update dependencies from dotnet/cecil

概要

dotnet/cecilの依存関係を更新します。Microsoft.SourceBuild.Intermediate.cecilおよびMicrosoft.DotNet.Cecilを0.11.5-alpha.26370.3から0.11.5-alpha.26379.2へアップグレードしています。

変更内容

  • eng/Version.Details.xml: dotnet/cecil依存関係のバージョン情報を更新(コミット: ba9a32d74b72e8e1e8853d2073e95382d28c6db9)
  • eng/Versions.props: バージョン定義を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 更新は2026年7月29日のdotnet/cecil release/9.0ブランチのビルドに基づいています
  • 自動更新(dotnet-maestro[bot]による)

#131567 [release/9.0-staging] Update dependencies from dotnet/icu

概要

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

変更内容

  • eng/Version.Details.xml: ICU依存関係のバージョン情報を更新(+2/-2)
  • eng/Versions.props: ICU関連のバージョンプロパティを更新(+1/-1)

パフォーマンスへの影響

記載なし

関連Issue

なし

その他

  • これは自動依存関係更新PR(dotnet-maestro[bot]による)です
  • dotnet/icu の dotnet/release/9.0 ブランチからの更新です
  • ビルド日時: 2026年7月29日

#131558 [Wasm RyuJit] repair multi-entry try regions

概要

WebAssembly上でのRyuJit実行時、非同期再開とEH変換によってtry領域の中間にエッジが挿入される問題を解決するPRです。try領域を単一エントリ領域に変換する新しいfgWasmRepairTryEntriesフェーズを導入し、Wasm構造制御フローの要件を満たします。従来のSCC変換に頼る機構を廃止し、より堅牢で保守性の高い実装に置き換えています。

変更内容

  • fgwasm.cpp: 新しいfgWasmRepairTryEntriesフェーズを実装。サイドエントリを持つtry領域をディスパッチャー(制御変数のswitchブロック)を使用して単一エントリ領域に変換します(+456行)
  • compiler.h/cpp: 新フェーズをwasm JITパイプラインに統合。EH変換と到達不可能ブロック削除後、SCC変換前に実行されるよう配置
  • compiler.h: try領域の「マルチエントリ」追跡をm_hasSideEntryに変更し、従来の機構を削除(-13行)
  • flowgraph.cpp: 非同期/catch再開エッジの特殊ケース処理を廃止。サイドエントリ存在を記録(-92行)
  • fgwasm.h: Wasm DFSの疑似後続ハック機構を削除(-50行)
  • compphases.h: 新フェーズPHASE_WASM_REPAIR_TRY_ENTRIESを登録

パフォーマンスへの影響

影響なし

関連Issue

#131393

その他

  • WebAssemblyのみに影響する内部JIT実装の変更です
  • 破壊的変更はなく、公開APIへの影響もありません
  • try領域に対する複数エントリパスが残存した場合、NYI(Not Yet Implemented)で検出可能な防御的設計になっています

#131553 Remove NativeAOT DebugHeader plumbing

概要

NativeAOT の従来のデバッグヘッダコントラクト (DebugHeader.cpp、PopulateDebugHeaders、DotNetRuntimeDebugHeader) を削除するPRです。ランタイム診断検出が DotNetRuntimeContractDescriptor に統一されたため、レガシな実装は不要になりました。

変更内容

  • DebugHeader.cpp の削除: 291行のデバッグヘッダ実装ファイルを完全削除
  • CMakeLists.txt: DebugHeader.cpp のビルド設定を削除
  • ランタイムヘッダの簡素化:
    • RuntimeInstance.h: デバッグヘッダ関連の3行削除
    • MethodTable.h: デバッグヘッダ関連の3行削除
    • stressLog.h: デバッグヘッダ関連の6行削除
    • threadstore.h: デバッグヘッダ関連の5行削除
    • startup.cpp: デバッグヘッダ初期化処理5行削除
  • ビルド設定: Microsoft.NETCore.Native.targets からデバッグヘッダ関連の設定2行削除
  • クラッシュダンプ処理: Unix/Mac環境のクラッシュダンプコード内のデバッグヘッダ参照を削除(計24行削減)

パフォーマンスへの影響

  • バイナリサイズ削減: NativeAOT実行ファイルのサイズが若干削減
  • ビルド時間: ビルド対象ファイルが1つ削減され、ビルド処理が簡素化
  • その他の実行時パフォーマンスへの直接的な影響なし

関連Issue

#131553

その他

  • この変更は NativeAOT のみに影響し、通常の .NET ランタイムには影響しません
  • 診断機能は DotNetRuntimeContractDescriptor に移行済みであり、デバッガやプロファイラの機能に影響はありません
  • 破壊的変更ではなく、内部実装の整理です

#131551 Retarget cdac projects to NetCoreAppMinimum (net10)

概要

cDAC (Compact Data Access Contract) スタック配下の全プロダクト、ツール、テストプロジェクトをターゲットフレームワークから $(NetCoreAppToolCurrent) (net11) から $(NetCoreAppMinimum) (net10) に変更するリターゲティング。これにより、リリース済みのSDKでのビルドが可能になります。

変更内容

  • Microsoft.Diagnostics.DataContractReader およびそのサブプロジェクト(Abstractions、Contracts、Legacy): $(NetCoreAppMinimum) へのリターゲット
  • mscordaccore_universal (NativeAOT コンポーネント): $(NetCoreAppMinimum) へのリターゲット
  • cdac-dump-inspect ツールスクリプト: $(NetCoreAppMinimum) へのリターゲット
  • テストプロジェクト (TestInfrastructure、UnitTests、DumpTests、StressTests、DataGenerator.Tests): $(NetCoreAppMinimum) へのリターゲット

変更なし: デバッギー対象アプリ(CrossModuleLib、Debuggees)および gen/DataGenerator (netstandard2.0)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • cDAC スタックはツールとソースコード共有されており、これらツールはリリース済みSDKのみで構築可能であるため、このターゲットフレームワーク変更により統一的なビルド環境が実現されます
  • GitHub Copilot の支援を受けて作成されたPRです

#131500 Add ReadOnlySpan constructors to BitArray

概要

BitArrayにReadOnlySpan<bool>、ReadOnlySpan<byte>、ReadOnlySpan<int>を受け取るコンストラクタを追加しました。既存の配列コンストラクタはスパンオーバーロードを経由するようにリファクタリングされ、nullチェックとオーバーフロー動作は保持されます。Boolean SIMD最適化、スカラー残余処理、整数エンディアン動作も維持されます。

// 使用例
BitArray ba1 = new BitArray(new ReadOnlySpan<bool>(boolArray));
BitArray ba2 = new BitArray(new ReadOnlySpan<byte>(byteArray));
BitArray ba3 = new BitArray(new ReadOnlySpan<int>(intArray));

変更内容

  • System.Collections.cs: ReadOnlySpan<bool>、ReadOnlySpan<byte>、ReadOnlySpan<int>コンストラクタシグネチャを公開APIに追加
  • BitArray.cs: 3つの新しいReadOnlySpanコンストラクタを実装、既存の配列コンストラクタをスパンオーバーロード経由でルーティング
  • BitArray_CtorTests.cs: パリティ、スライス、スタック割り当てスパン、ソース独立性、SIMD境界、非標準Boolean値のカバレッジを含む155行の新規テストを追加

パフォーマンスへの影響

Windows ARM64 Release環境での測定結果:

  • スループット: スパン直接構築は既存のspan.ToArray()回避策と比較して33~51%高速化
  • メモリ割り当て: バイト/整数入力で約50%削減、Boolean入力で最大89%削減
  • 既存配列コンストラクタ: 割り当てに回帰なし、中~大規模入力での性能低下は観測されず
  • 小規模入力(32要素): Boolean/バイト配列コンストラクタの委譲による約1ns のオーバーヘッド

関連Issue

#80263

その他

テスト結果:216件のBitArray_CtorTestsがデフォルト、AVX2無効、HWIntrinsic無効環境で全てパス、33,944件のSystem.Collectionsテストが全てパス。このPRは公開API(パブリックコンストラクタ)の追加であり、既存コードへの互換性への影響はありません。


#131454 Add unsafe contract consistency code fixes

概要

unsafe-v2マイグレーションツーリングにメモリ安全性契約の一貫性を修正するRoslynコード修正プロバイダを2つ追加します。SynchronizeUnsafeContractCodeFixProviderは派生メンバーと基底メンバー間のunsafe契約の不一致(CS9364/9365/9366)を修正し、MatchPartialSafetyModifierCodeFixProviderは部分メンバー宣言間の修飾子不一致(CS0764/CS9390)を修正します。既存の診断IDのみを使用し、新規追加はありません。

変更内容

  • SynchronizeUnsafeContractCodeFixProvider: CS9364/CS9365/CS9366を修正。派生メンバーを狭める(unsafeを除去またはsafeに置換)か、基底メンバーをunsafeで標記するオプションを提供。externメンバーの場合はsafeへの置換を行い、externメンバーの明示的な安全性マーカーを保持。
  • MatchPartialSafetyModifierCodeFixProvider: CS0764/CS9390を修正。unsafe/safe修飾子を部分メンバー宣言間で伝播。修飾子を常に伝播(除去ではなく)し、外部メンバーのCS9389再発を防止。
  • UnsafeModifierCodeFixHelpers: unsafeとsafeの両方をサポートするよう修飾子編集を汎用化。修飾子置換ヘルパーを追加。
  • UnsafeMigrationSyntaxHelpers: SafeKeywordKindを公開。
  • Resources.resx: 新しいコード操作のローカライズ済みタイトルを追加。
  • テスト: SynchronizeUnsafeContractCodeFixTests(615行)とMatchPartialSafetyModifierCodeFixTests(294行)で外部メンバー、部分基底メンバー、競合する部分契約などのシナリオをカバー。計1223テスト合格。

パフォーマンスへの影響

影響なし

関連Issue

#131454、#131451(トラッキングIssue §3)、#131002(先行PR)

その他

  • 基底メンバーにunsafeを標記するオプションはソースコード内の基底メンバーに限定(参照アセンブリのRequiresUnsafeAttributeはアナライザーから見えない)
  • 逆方向マイグレーション(オーバーライド/実装が無標記で基底がunsafe)は対象外。独立した分析器(IL5008)が必要
  • MatchPartialSafetyModifierCodeFixProviderは生成コード内の部分をスキップ(編集可能なドキュメントが存在しないため)
  • externオーバーライドなどの複雑なケースに対応。unsafe除去のみだとCS9389が再発するためsafeでの置換を実行
  • 部分基底メンバーではDeclaringSyntaxReferencesが両方の部分をカバーしないため、両方をウォークするか文書ごとにバッチ処理

#131442 Normalize TYP_BYREF to TYP_INT in implicit casts even on x86

概要

x86ターゲットにおいて、デバッグスピリングコード実行時にTYP_BYREFからTYP_INTへの暗黙的キャストが正しく実行されていない問題を修正します。PR #129866によってWindows x86でPDB読み取りが有効になったことで、従来x64でのみ実行されていたキャスト正規化ロジックがx86でも必要になりました。

変更内容

  • src/coreclr/jit/morph.cpp: impImplicitIorI4Cast関数内の#endif // TARGET_64BITプリプロセッサディレクティブの位置を変更し、(wantedType == TYP_INT) && varTypeIsI(currType)のキャストパスがすべてのターゲット(x86含む)でコンパイルされるようにしました。これにより、ポインタ型(ref/byref)からintへの正規化キャストがx86でも実行されるようになります。

パフォーマンスへの影響

影響なし(ノーオペレーション相当のキャストが挿入されるため、実行時の副作用なし)

関連Issue

#131256

その他

  • この修正は既存のx64動作を保持しながら、x86でも同一の正規化ロジックを適用します
  • TYP_INTとTYP_BYREFのサイズが同じx86では、従来暗黙的キャストが挿入されていませんでしたが、JIT内の型チェック処理がTYP_INTを期待するため、型ミスマッチアサーションが発生していました

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

概要

このPRはVMR(dotnet/dotnet)からのコードフロー更新です。release/10.0ブランチに対して、複数のリポジトリからのソースコード変更と依存関係の更新を統合しています。Microsoft.CodeAnalysis、Microsoft.DotNet.Arcadeなどの主要なビルドツール・コンパイラパッケージの更新、およびSystem.Net.Http、System.Net.Security、System.Net.Mailなどのネットワーク関連ライブラリのバグ修正が含まれます。

変更内容

ネットワーク・セキュリティ関連のバグ修正:

  • System.Net.Http:Http2Connection.csの修正(53行追加)とテストケース追加(170行)
  • System.Net.Security:NegotiateAuthentication.cs、SslStream.IO.cs、TlsFrameHelper.csの修正およびテスト追加
  • System.Net.Mail:EightBitStream.csの修正(52行追加)

ビルドツール・コンパイラの依存関係更新:

  • Microsoft.CodeAnalysis系:5.0.0-2.26361.102 → 5.0.0-2.26376.103
  • Microsoft.DotNet.Arcade.Sdk他ビルドタスク:10.0.0-beta.26361.102 → 10.0.0-beta.26376.103
  • Microsoft.NET.Sdk.IL、System.Reflection.Metadata他ランタイム関連:10.0.10 → 10.0.12
  • System.CommandLine:2.0.10 → 2.0.12
  • NuGet.Frameworks/Packaging/ProjectModel/Versioning:7.0.3-rc.36202 → 7.0.3-rc.37703

XML・データ処理の改善:

  • System.Private.Xml:XPathNodeInfoAtom.cs、XmlTextReaderImpl.csの最適化

ビルド・テスト基盤の更新:

  • global.json、eng/Version.Details.props/.xmlの依存関係情報更新
  • Azure Pipelines設定ファイルの調整(onelocbuild.yml、publish-build-assets.yml)

パフォーマンスへの影響

提供された情報からパフォーマンス改善の具体的なベンチマーク数値は記載されていません。ただし、System.Private.Xmlの変更はメモリ効率化の可能性があります。

関連Issue

なし

その他

このPRは自動化されたコードフロー更新(dotnet-maestro[bot]作成)です。複数のリポジトリ(arcade、aspnetcore、efcore、runtime、sdk、windowsdesktop、wpfなど)からの変更が統合されています。


#131409 [release/8.0-staging] Update dependencies from dotnet/xharness

概要

dotnet/xharnessのビルド20260720.1への依存関係更新です。Microsoft.DotNet.XHarness.CLI、Microsoft.DotNet.XHarness.TestRunners.Common、Microsoft.DotNet.XHarness.TestRunners.Xunitが11.0.0-prerelease.26368.1から11.0.0-prerelease.26370.1にアップデートされます。

変更内容

  • .config/dotnet-tools.json: dotnet toolsの設定を更新
  • eng/Version.Details.xml: xharnessの依存関係バージョンを11.0.0-prerelease.26368.1から11.0.0-prerelease.26370.1に更新
  • eng/Versions.props: ビルドプロパティのバージョン情報を同様に更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このはマエストロ(dotnet-maestro[bot])による自動依存関係更新PRです。xharnessはテストハーネス実行ツールであり、このアップデートはテスト実行基盤の改善を目的としています。


#131306 Correctly implement fuzzers for new encryption streams

  • 作成者: @alinpahontu2912
  • 作成日時: 2026年07月24日 09:12:55(UTC)
  • マージ日時: 2026年07月31日 14:16:38(UTC)
  • ラベル: area-Meta

概要

ZIP暗号化ストリーム(ZipCryptoStream、WinZipAesStream)のファザーを修正し、リフレクションを使用した内部ストリーム構築から実際のZipArchiveの暗号化/復号化パスを通じたテストに変更しました。ZipCryptoおよびWinZip AES(128/192/256ビット)の暗号化ラウンドトリップ検証(同期・非同期)と、不正なパスワードシナリオのテストを追加しています。

変更内容

  • ZipCryptoStreamFuzzer.cs: リフレクションベースのZipCryptoStream.CreateからZipArchive.CreateEntry(..., password, ZipEncryptionMethod)とOpen/OpenAsync(password)ラウンドトリップワークフローへ移行
  • WinZipAesStreamFuzzer.cs: リフレクションベースの構築からZipArchiveベースのAES(128/192/256)暗号化/復号化ラウンドトリップテストへ移行
  • 両ファザーで暗号化エントリの検証、期待される暗号化方法の確認、平文ラウンドトリップの正確性検証を追加
  • 不正なパスワードで復号化を試みるテストケースを追加(InvalidDataExceptionの発生を意図)
  • deploy-to-onefuzz.yml: OneFuzzデプロイ設定の更新

パフォーマンスへの影響

影響なし(ファザー実装の変更であり、本体パフォーマンスへの直接的な影響なし)

関連Issue

#131306

その他

  • Copilotからの指摘:現在の実装では不正なパスワードテストが例外をスローしない場合でもテスト成功とみなされる。より信頼性の高いファザーのため、Assert.Throwsを使用してリグレッションを確実にキャッチすることが推奨されている。
  • これはファザー品質向上のPRであり、公開APIの変更ではない。

#131247 [release/9.0-staging] Update dependencies from dotnet/arcade

概要

dotnet/arcadeリポジトリの依存関係を、9.0.0-beta.26371.3から9.0.0-beta.26379.3(XUnitアサーションとコンソールランナーは2.9.0-beta.26371.3から2.9.0-beta.26379.3)に更新する自動化された依存関係更新です。Arcadeビルドタスク、SDK、およびテストユーティリティの複数のNuGetパッケージが対象です。

変更内容

  • eng/Version.Details.xml: Arcadeからの42個の依存関係バージョン情報を更新
  • eng/Versions.props: 16個のバージョンプロパティを更新
  • eng/common/core-templates/steps/publish-logs.yml: ログ発行ステップの1行削除
  • global.json: ツールバージョン情報を3行更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この更新は自動化されたdotnet-maestroボットによる定期的な依存関係同期です
  • release/9.0-stagingブランチを対象とした更新であり、.NET 9.0の開発フェーズでの保守更新と考えられます
  • Arcadeコミット: 2e2298e9cdec79ef907be5246d725c97661a946a

#130985 Fix codegen assert reloading a spilled signed small cast source

概要

JIT codegen内で、LSRA(Linear Scan Register Allocation)スピルテンポラリから再ロードされるキャストが、実際の型ではなく元の小型メモリオペランド型として処理される問題を修正しました。符号付き小型源(sbyteなど)から符号なしキャストへの場合、1バイトのmovzxが誤って符号拡張ビットをゼロクリアする、または checked buildでアサーション失敗を引き起こしていました。

変更内容

  • src/coreclr/jit/codegenlinear.cpp: GenIntCastDescで、operandがスピルテンポラリから使用される場合、reload型をsrc->TypeGet()ではなくgenActualType(src)(実際の型)から計算するように修正
  • src/tests/JIT/Regression/JitBlue/Runtime_124508/Runtime_124508.cs: Fuzzlyn生成の回帰テストを追加(符号付き小型sbyteロード → ゼロ拡張キャストのシーンを再現)
  • Regression_ro_1.csproj: テストプロジェクトをxUnitベースで新規追加

パフォーマンスへの影響

影響なし。修正前はコード生成エラー(アサーション失敗または不正な命令生成)により実行不可でした。修正後、スピルテンポラリは正しく全size(例:4バイト)から16ビット単位のmovzx word ptr[TEMP]として再ロードされるため、正確な動作が可能になります。

関連Issue

#124508

その他

  • 修正はx86のみに影響。x64ではレジスタに保持され、既に正しく処理されていました
  • ContainCheckCastが符号付き小型ロードをゼロ拡張キャスト下で含有化することを禁止しているため、スピルテンポラリパスがアサーションに到達する唯一のパスです
  • テストはコンパイル+実行カバレッジを提供しますが、マージ後のテストフレームワーク内では具体的なスピルシェイプが発生しないため、修正有無に関わらず合格します(スタンドアロンコンソールプログラムが確実な再現方法)

#130920 Make all entries in WASM tables SymbolDefinitions

概要

WebAssembly object writer において、異なるセクション内のシンボル追跡をアドホックフィールドから専用のWasmSymbolManagerクラスに抽出しました。これにより、物理セクションまたは論理 WASM インデックス空間内のシンボル管理が統一され、WASM インデックス再配置の処理が簡潔になります。また、インポートセクションを「凍結」し、各論理インデックス空間においてインポートが最初になるように強制します。

変更内容

  • WasmSymbolManager.cs(新規): シンボルとその対応するインデックスの追跡を専用クラスに集約(140行追加)
  • WasmObjectWriter.cs: _uniqueSymbols/_uniqueSignaturesなどのアドホックな追跡フィールドをリファクタリング、WasmSymbolManagerを使用してインデックス割り当てと再配置を統一化
  • ObjectWriter.cs: EmitSymbolDefinitionをバーチャルメソッド化し、フォーマット固有のオーバーライドを可能化
  • WasmWellKnownGlobalSymbolNode.cs: READYTORUNに基づいてウェルノウングローバルインポート名を切り替え
  • jiteeversionguid.h: JIT/EE インターフェースバージョン GUID を更新
  • テスト関連:SuperPMI レコーディング、WebCil/R2R テストケースの拡張・改善

パフォーマンスへの影響

影響なし(内部実装のリファクタリングであり、ランタイムの動作や実行速度に直接的な変更なし)

関連Issue

なし

その他

  • SuperPMI レコーディングサポートがGetWasmWellKnownGlobalsに拡張されました
  • このリファクタリングにより WASM インデックス再配置処理が複数のケースで共有化され、コード維持性が向上します
  • インポート優先度を論理インデックス空間で強制することで、WASM モジュール構造の正確性が保証されます

#130599 [release/10.0] Update dependencies from dotnet/xharness

概要

dotnet/xharnessの依存関係を更新するPull Requestです。Microsoft.DotNet.XHarness関連パッケージ(CLI、TestRunners.Common、TestRunners.Xunit)を11.0.0-prerelease.26353.1から11.0.0-prerelease.26370.1にアップグレードします。

変更内容

  • .config/dotnet-tools.json: dotnet-tools のバージョン更新
  • NuGet.config: NuGet設定の調整
  • eng/Version.Details.props: バージョン詳細プロパティファイルの更新
  • eng/Version.Details.xml: バージョン詳細XMLの更新

更新対象パッケージ:

  • Microsoft.DotNet.XHarness.CLI
  • Microsoft.DotNet.XHarness.TestRunners.Common
  • Microsoft.DotNet.XHarness.TestRunners.Xunit

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは自動依存関係更新(Maestro)により生成されています。対象はrelease/10.0ブランチで、xharnessのビルド20260720.1(コミット: 65e5795252474ebd04e4e872bd4152e86c558209)に基づいています。


#130598 [release/9.0-staging] Update dependencies from dotnet/xharness

概要

dotnet/xharness依存関係の自動更新PRです。XHarness関連の3つのNuGetパッケージをバージョン11.0.0-prerelease.26353.1から11.0.0-prerelease.26370.1に更新します。

変更内容

  • .config/dotnet-tools.json: dotnet-toolsのバージョン情報を更新
  • eng/Version.Details.xml: 依存関係の詳細バージョン情報を更新(以下3パッケージ)
    • Microsoft.DotNet.XHarness.CLI
    • Microsoft.DotNet.XHarness.TestRunners.Common
    • Microsoft.DotNet.XHarness.TestRunners.Xunit
  • eng/Versions.props: ビルドプロパティのバージョン情報を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この更新はMaestroの自動依存関係更新メカニズムにより自動生成されたものです
  • xharness側のコミット: 65e5795252474ebd04e4e872bd4152e86c558209
  • release/9.0-stagingブランチへの更新です

#130127 [ios-clr] Deduplicate CreateThread event when a thread runs both R2R and interpreted code

概要

iOSでDebug時にcorelibがR2Rコンパイルされている場合、スレッド実行時にR2Rコードとインタプリタコードの両方でDebugger::CreateThreadイベントが重複して発生する問題を修正します。新しいper-threadフラグTSNC_DebuggerThreadStartSentを導入し、最初に到達したパスだけがイベントを送信し、2番目のパスはスキップすることで、重複するthread-attachイベントと不要なデバッギーの一時停止を防止します。

変更内容

  • src/coreclr/vm/threads.h: ThreadStateNoConcurrencyビットに新しいフラグTSNC_DebuggerThreadStartSentを追加し、デバッガスレッド開始イベント送信済みを記録
  • src/coreclr/debug/ee/debugger.cpp: ThreadStartedとSendCreateThreadAtInterpreterEntryでper-threadフラグをチェック・設定して重複イベントを防止し、冗長なインタプリタ側同期化をスキップ
  • フラグはThreadStore lockの下でThreadStartedからのみ書き込みされ、既存のsingle-writerルールに準拠

パフォーマンスへの影響

  • デバッグ時の不要なスレッド一時停止を回避することで、デバッギー暖機時の負荷軽減
  • per-threadフラグチェックによるオーバーヘッドはごく小さい

関連Issue

#129389

その他

  • R2Rコンパイルされたcorelibとインタプリタコードが同じスレッド内で実行される場合のみ有効な修正
  • 互換性への影響なし(内部実装の変更のみ)
  • フラグ操作はThreadStore lockの下で行われるため、スレッド安全性を維持

#129915 [APX] refactor APX-EVEX emitter

概要

APX(Advanced Performance Extensions)とEVEX命令エンコーディングの処理を簡潔化するリファクタリング。TakesApxExtendedEvexPrefixを廃止し、TakesEvexPrefixに統一して、SIMD EVEX と APX 拡張 EVEX の両方を一元管理します。可読性と堅牢性の向上を目指し、スループットへの悪影響を最小化します。

変更内容

  • emitxarch.cpp: EVEX エンコーディングロジックのリファクタリング(+310/-287)
  • emitxarch.h: 関連する内部実装の調整(+4/-4)
  • instr.h: 命令定義における EVEX フラグ管理の変更(+10/-1)
  • instrsxarch.h: x86 命令セット定義の EVEX 属性更新(+72/-72)

主な変更点:

  • TakesApxExtendedEvexPrefixを削除し、TakesEvexPrefixで全 EVEX ケースを管理
  • IsEvexEcodableInstructionを統一エンコーダビリティ確認として機能するよう調整
  • SIMD および APX 命令の両方に対応した汎用的なロジック構築

パフォーマンスへの影響

スループットへの影響なし。リファクタリングの主目的は保守性向上であり、エンコーディングロジックの実質的な動作変更ではありません。

関連Issue

#117326

その他

  • 内部実装の変更であり、公開 API への影響なし
  • APX 命令が追加される際の保守コスト低減を目的とした基盤整備
  • 複数回のレビュー を経て改善されたリファクタリング

目次