Pull Request on 2026年07月10日

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

注意点

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


目次

  1. #130531 [cDAC] Align data-contract docs with merged FieldDesc offset and HandleData changes
  2. #130501 Fix cDAC big-RVA field offset detection to mask packed type bits
  3. #130474 Use hint-safe pointer authentication stripping in NativeAOT
  4. #130461 Remove outdated comment in OSArchitecture
  5. #130454 Fix #130453 build break
  6. #130450 [cDAC] Move GetWatsonBuckets into a dedicated WindowsErrorReporting contract
  7. #130448 [cDAC] Remove vestigial JupiterRefCount from HandleData contract
  8. #130443 createdump: use 47-bit-valid SpecialDiagInfo address on arm64 macOS
  9. #130424 Ensure instantiating stub for target encoded in async return dropping thunk IL
  10. #130402 [clr-ios] Default Apple mobile CoreCLR ReadyToRun to composite regardless of BuildTestsOnHelix
  11. #130401 JIT: Replace promoted fields after morphing indirs in local morph
  12. #130396 Use DOTNET_HOST_ instead of COREHOST_ in docs
  13. #130361 Add fast path in string.Concat
  14. #130340 Fix "GMT Standard Time" incorrectly interpreted as fixed-offset zone on Android
  15. #130334 Bump actions/cache/save from 5.0.5 to 6.1.0
  16. #130333 Bump actions/cache/restore from 5.0.5 to 6.1.0
  17. #130328 [ci-fix] Needs review: deploy FileVersionInfo TestAssembly as Content on Apple NativeAOT (refs #130253)
  18. #130327 [release/10.0] Handle STATUS_OBJECT_NAME_NOT_FOUND in Windows directory enumeration
  19. #130275 Fix x86 Debugger_STRData layout and ESP adjustment in cDAC DBI
  20. #130168 [mobile] Disable NativeAOT-specific test failures on Apple mobile
  21. #130142 [browser] atob polyfil for feature detection in V8
  22. #130051 [wasm][wasi] CoreCLR wasi onboarding
  23. #129958 [cDAC] Implement DacDbiImpl.ResolveTypeReference
  24. #129267 [cDAC] Implement GetNativeCodeSequencePointsAndVarInfo for cDAC
  25. #127868 Fix tensor EqualWithTolerance test helper
  26. #127180 Preserve invalid friend assembly error

#130531 [cDAC] Align data-contract docs with merged FieldDesc offset and HandleData changes

概要

cDAC(Compact Diagnostic Artifact Container)のデータコントラクトドキュメントを、最近マージされた2つの実装変更に合わせて更新するドキュメント修正です。RuntimeTypeSystem.mdのGetFieldDescOffset疑似コードをビッグRVAオフセット検出時のマスク処理に対応させ、GC.mdのCreateHandleData疑似コードから削除されたフィールドの割り当てを削除しています。

変更内容

  • docs/design/datacontracts/RuntimeTypeSystem.md: GetFieldDescOffset疑似コードを更新。FieldDesc::DWord2の packed type bits(5ビット)をマスクしてからFIELD_OFFSET_BIG_RVAセンチネル値と比較する処理を追加。これは#130501での実装変更(27ビットオフセット + 5ビット型情報の packed形式)に対応。
  • docs/design/datacontracts/GC.md: CreateHandleData疑似コードから削除されたJupiterRefCountフィールドの割り当て(handleData.JupiterRefCount = 0;)を削除。これは#130448での実装変更に対応。

パフォーマンスへの影響

影響なし(ドキュメント修正のみ)

関連Issue

#130501(ビッグRVAオフセット検出修正) #130448(JupiterRefCount削除)

その他

ドキュメント専用の変更で、実装コードの修正は含まれていません。疑似コードと実装の一貫性を保つための追従的な修正です。


#130501 Fix cDAC big-RVA field offset detection to mask packed type bits

概要

cDAC の RuntimeTypeSystem コントラクトにおいて、big-RVA フィールド オフセットがメタデータから解決されない버그を修正します。FieldDesc::DWord2 は27ビットのフィールド オフセットと5ビットのフィールド型をパックしていますが、比較時にマスク処理が不足していたため、big-RVAの判定が常に失敗していました。修正により、OffsetMask を適用してから FIELD_OFFSET_BIG_RVA センチネルと比較するようにしました。

変更内容

  • RuntimeTypeSystem_1.cs: GetFieldDescOffset メソッドで FieldDesc.DWord2 を FieldDescFlags2.OffsetMask でマスク処理してから FIELD_OFFSET_BIG_RVA と比較するように修正。マスク済みオフセット値を戻り値として使用することで、型ビットのリークを防止します。
  • MethodTableTests.cs: GetFieldDescOffset_BigRVA_ResolvesFromMetadata(big-RVA時にメタデータからRVAを正しく解決すること)と GetFieldDescOffset_NonBigRVA_ReturnsMaskedOffset(非big-RVA時にマスク済みオフセットを返すこと)のユニットテストを追加。
  • MockDescriptors.RuntimeTypeSystem.cs: MockFieldDesc レイアウトとヘルパーメソッド AddFieldDesc を追加し、パック済みの FieldDesc インスタンス生成をテストでサポートしました。

パフォーマンスへの影響

影響なし。(この修正はバグ修正で、パフォーマンス特性の変更はありません)

関連Issue

#130501

その他

  • ネイティブランタイムの FieldDesc::GetOffset メソッドと同様にマスク処理を適用しており、既存の IsFieldDescEnCNew メソッドとも同じパターンを採用しています。
  • big-RVAフィールドは実際のRVA静的フィールドでオフセットが FIELD_OFFSET_MAX(約128 MB)を超える場合に該当するため、ダンプテストでの検証は困難であり、ユニットテストにより検証されています。
  • 全136個のMethodTableTests が合格しています。

#130474 Use hint-safe pointer authentication stripping in NativeAOT

概要

NativeAOTがARM64 GCスタックウォーキング中にxpaci命令を実行し、ポインタ認証機能を持たないtvOSデバイスでSIGILL例外が発生していた問題を修正。CoreCLRのヒント安全なPacStripPtr実装をポートし、xpaclri命令を使用して呼び出し元のlrレジスタを保護する方式に変更。

mov lr, x0
xpaclri
mov x0, lr

変更内容

  • src/coreclr/nativeaot/Runtime/arm64/MiscStubs.S: Unix ARM64向けのPacStripPtrヘルパーをリーフスタブから、fp/lrを保存し、入力ポインタをlr経由でルーティングしてxpaclriを実行し、剥き出したポインタをx0で返すネストされたプロログ/エピログ方式に変更(+9行/-4行)
  • src/coreclr/nativeaot/Runtime/arm64/MiscStubs.asm: Windows ARM64向けに同じ変更を適用。xpaclriを生命令ワードDCD 0xD50320FFでエンコーディング(+9行/-4行)

パフォーマンスへの影響

影響なし。ポインタ認証のストリッピング処理の正確性向上が主目的であり、パフォーマンス数値の変化報告なし。

関連Issue

なし

その他

  • 変更はARM64のポインタ認証サポートの正確性向上に関わる内部実装の変更
  • tvOSを含むポインタ認証機能を持たないプラットフォームでのクラッシュ回避が目的
  • Unix/Windows双方のARM64アセンブリスタブに対称的に適用されており、プラットフォーム間の一貫性を維持

#130461 Remove outdated comment in OSArchitecture

概要

Windows.csの古いコメントを削除するPR。.NET 7以降、x64 on ARM64エミュレーションは正しく対応されているため、それを反映するものです。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/RuntimeInformation.Windows.cs: OSArchitectureに関する古いコメントを削除(+1行/-3行)

パフォーマンスへの影響

影響なし

関連Issue

#130398

その他

なし


#130454 Fix #130453 build break

概要

#130453で報告されたビルド破損を修正するPull Requestです。System.Text.Json の JsonSourceGenerator.Parser.cs に対する小規模な修正が含まれています。

変更内容

  • src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs: 1行の修正(+1/-1)

パフォーマンスへの影響

影響なし

関連Issue

#130453

その他

なし


#130450 [cDAC] Move GetWatsonBuckets into a dedicated WindowsErrorReporting contract

概要

Watson bucket アクセッサを一般的なThreadコントラクトから専用のWindowsErrorReportingコントラクト(c1)に移動しました。Watson bucketはWindows Error Reportingの概念であるため、スレッドコントラクトをランタイムニュートラルに保ち、この機能に対応しないターゲットが専用コントラクトを省略できるようにします。

変更内容

  • 新規コントラクト追加: IWindowsErrorReportingインターフェースとWindowsErrorReporting_1(CoreCLR実装)を新規作成
  • IThread更新: GetWatsonBucketsメソッドを削除
  • Thread_1実装更新: Watson bucket読み取りロジックを削除(40行削減)
  • SOSDacImpl更新: GetClrWatsonBucketsを新しいWindowsErrorReportingコントラクトを呼び出すように変更
  • cDAC登録: CoreCLRContracts.csで新コントラクトを登録
  • グローバルコントラクト広告: datadescriptor.incでWindowsErrorReportingを広告
  • ドキュメント更新: 新しいコントラクトのドキュメント追加、スレッドコントラクトのドキュメント更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更はcDAC(Core Diagnostics Access Component)のコントラクト設計原則に準拠しており、デバッガの需要に合わせたコントラクト分離です。Windows Error Reportingをサポートしないターゲットではこの専用コントラクトを省略可能になります。


#130448 [cDAC] Remove vestigial JupiterRefCount from HandleData contract

概要

Windows 8時代のWinRT/Jupiter概念に対応していたJupiterRefCountフィールドを、管理されたcDAC HandleDataコントラクト型から削除します。COM ABI互換性を保つため、公開型のSOSHandleData.JupiterRefCountは保持し、常に0を報告します。JupiterRefCountは従来より意味のあるデータが入力されておらず、レガシーDACでも0にハードコードされていたため、内部コントラクト表面からの削除による技術的な整理です。

変更内容

  • IGC.cs: HandleDataレコード構造体からJupiterRefCountメンバーを削除
  • GC_1.cs: GC契約実装でHandleData.JupiterRefCountの初期化処理を削除
  • SOSDacImpl.cs: レガシーSOS DAC COM適配器でSOSHandleData.JupiterRefCountを常に0に明示的に設定

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

COM ABIの公開フィールドSOSHandleData.JupiterRefCountは互換性維持のため削除されず、DEBUG時のcDAC対DACパリティアサーションも変更されません。内部実装のクリーンアップであり、外部APIへの影響はありません。


#130443 createdump: use 47-bit-valid SpecialDiagInfo address on arm64 macOS

概要

Apple Silicon (arm64) macOS上で、createdumpが書き込むSpecialDiagInfoセグメントのアドレスを47ビット有効範囲内に修正しました。従来のアドレス 0x7fffffff10000000 はlldbが受け付けない範囲に位置していたため、SOS側で読み込みに失敗していました。arm64 macOSでは 0x00007ffffff10000 (Linux/他64ビット同様)、x86_64 macOSでは従来のアドレスを継続使用しています。

変更内容

  • src/coreclr/debug/createdump/specialdiaginfo.h: arm64 macOS向けにSpecialDiagInfoAddress定義をアーキテクチャ別で分岐。arm64では47ビット有効アドレス 0x00007ffffff10000 を使用、x86_64は従来の 0x7fffffff10000000 のまま。その他プラットフォーム(Linux他)は変更なし。

パフォーマンスへの影響

直接的なパフォーマンス改善ですが、lldbがSpecialDiagInfo領域を正常に読み込めるようになることで、SOS診断機能の遅延フォールバック処理を回避できるため、デバッグ体験が向上します。

関連Issue

dotnet/diagnostics#5823 (リーダー側の修正)、#130443

その他

  • SpecialThreadInfoAddress (0x7fffffff00000000) は今回の修正対象外(lldbが許容しているため)
  • 旧createdumpで生成されたダンプもこのPRと対応する診断リーダー側の修正により引き続き読み込み可能(後方互換性を維持)

#130424 Ensure instantiating stub for target encoded in async return dropping thunk IL

  • 作成者: @jakobbotsch
  • 作成日時: 2026年07月09日 18:09:58(UTC)
  • マージ日時: 2026年07月10日 21:08:11(UTC)
  • ラベル: area-VM-coreclr

概要

CoreCLR VMの非同期サンク(async thunk)IL生成で、ターゲットメソッドがジェネリック型/メソッドのインスタンス化を持つ場合のトークン化処理を改善しました。ILStubResolverのEmitReturnDroppingThunkが共有(非インスタンス化スタブ)のhMethodを含むメソッド仕様トークンを作成する問題を解決し、予期しないLDVIRTFTN呼び出しと汎用コンテキストパラメータが一緒に指定される状況を防ぎます。

変更内容

  • src/coreclr/vm/asyncthunks.cpp
    • MethodDesc::GetTokenForThunkTargetをリファクタリングし、非ジェネリックターゲットの場合は早期リターン
    • ジェネリックインスタンス化の処理を調整
    • IL スタブで使用される署名/トークンを生成する前に、サンク対象の MethodDesc を「事前インスタンス化」するロジックを追加

パフォーマンスへの影響

影響なし

関連Issue

#121754 #130351

その他

  • 内部実装の修正(非公開API)
  • コード内のホワイトスペースを含まないレビュー推奨
  • CoreCLR VM内での非同期処理関連の手動コード生成(thunk生成)の問題修正

#130402 [clr-ios] Default Apple mobile CoreCLR ReadyToRun to composite regardless of BuildTestsOnHelix

概要

Apple mobile CoreCLR の ReadyToRun ビルドにおいて、BuildTestsOnHelix=true で構築した場合でも、composite Mach-O 形式を一貫して使用するように MSBuild デフォルト設定を修正します。従来は BuildTestsOnHelix ゲートにより、テストビルド時に per-assembly PE 形式が使用されていましたが、PublishReadyToRun=true であれば常に composite Mach-O を既定値とするように変更します。

変更内容

  • src/mono/msbuild/apple/build/AppleBuild.props
    • PublishReadyToRunComposite と PublishReadyToRunContainerFormat のデフォルト設定を、PublishReadyToRun==true の条件下に移動
    • これらが未設定の場合のみデフォルト値(composite=true、format=macho)を適用し、明示的な設定を上書きしないようにしました

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更により、iOS.CoreCLR.R2R.Test など BuildTestsOnHelix=true で構築されるテストでも、他の Apple mobile CoreCLR イメージと同様に composite Mach-O 形式の ReadyToRun イメージが生成されるようになり、ビルド設定の一貫性が向上します。


#130401 JIT: Replace promoted fields after morphing indirs in local morph

概要

JITのローカルモルフ処理において、インダイレクション(間接参照)がGT_LCL_FLD/GT_STORE_LCL_FLDに変換される際、プロモートされたフィールドの置換を即座に実行するように修正しました。従来は制御フロー処理により置換が見落とされていました。

変更内容

  • src/coreclr/jit/lclmorph.cpp: MorphLocalIndir関数が非TYP_STRUCTアクセスでインダイレクションをGT_LCL_FLD/GT_STORE_LCL_FLDに変換する際、既存のMorphLocalFieldヘルパーを即座に呼び出すように修正。TYP_STRUCTフィールドの既存の「DNERの強制なし」動作は維持され、グローバルモルフがそれらをエンレジストラブルなローカルに変換する可能性を保持。

パフォーマンスへの影響

影響なし(ベンチマーク情報なし)

関連Issue

#117416

その他

なし


#130396 Use DOTNET_HOST_ instead of COREHOST_ in docs

概要

ホスト トレーシング機能のドキュメントで環境変数の記述を更新します。.NET 10で追加されたDOTNET_HOST_プリフィックスを主要な環境変数として記載し、COREHOST_はフォールバック時のみに使用される旨を明確にします。

変更内容

  • docs/design/features/host-tracing.md: ドキュメント内の環境変数参照をCOREHOST_からDOTNET_HOST_に更新(10行追加、10行削除)
  • 環境変数の優先順位を明確化:DOTNET_HOST_(推奨)→ COREHOST_(フォールバック)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはドキュメントのみの変更であり、実装コードの変更は含まれていません。.NET 10で導入された新しい環境変数命名規則への移行を反映した更新です。


#130361 Add fast path in string.Concat

概要

string.Concat(IEnumerable<string?> values)にファストパスを追加し、入力がList<string?>またはstring?[]の場合のパフォーマンスを向上させます。既存のJoinメソッドで使用されているパターンに基づいて実装されています。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/String.Manipulation.cs: Concat(IEnumerable<string?>)メソッドにList<string?>とstring?[]に対するファストパスを追加。CollectionsMarshal.AsSpanを使用してスパンを抽出し、スパンベースのConcat実装に転送します。
  • src/libraries/Common/tests/Tests/System/StringTests.cs: List<string?>と非配列/非リスト列挙型(LINQ Select)のテストカバレッジを追加。

パフォーマンスへの影響

大幅な改善が確認されています:

  • List<string?>入力:最大40%高速化(Size=100時点で1.00→0.60の比率)
  • string?[]入力:最大31%高速化(Size=100時点で1.00→0.69の比率)
  • 汎用IEnumerable<string?>:最大5%の改善(Size=1000時点で1.00→0.95の比率)

特に大規模データセット(Size=1000以上)で顕著:

  • List: Size=1000で平均5,252ns→3,070ns(42%削減)、Size=10000で123,694ns→92,988ns(25%削減)
  • Array: Size=1000で平均4,299ns→2,999ns(30%削減)、Size=10000で108,964ns→82,938ns(24%削減)

メモリ割り当てにも改善が見られ、割り当て率が0.85~0.98に低下しています。

関連Issue

なし

その他

ファストパスは既存のString.Joinメソッドで確立されたパターンに倣っており、互換性への影響はありません。変更は内部実装の最適化であり、公開APIの動作は変わりません。


#130340 Fix "GMT Standard Time" incorrectly interpreted as fixed-offset zone on Android

概要

Androidプラットフォームにおいて、TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")が夏時間を持たない固定オフセットゾーンとして誤解釈される問題を修正します。"GMT Standard Time"はイギリス(Europe/London)を表すWindowsタイムゾーンIDで、夏時間(BST、UTC+1)に対応する必要があります。

修正内容: GMT+NやGMT-N形式の数値オフセットゾーンのみを固定オフセットとして処理するよう、検出ロジックを改善しました。

// 修正前("GMT Standard Time"も誤マッチ)
if (name.Length >= 3 && name[0] == 'G' && name[1] == 'M' && name[2] == 'T')

// 修正後(GMT+/-の数値オフセット形式のみ対象)
if (name.Length >= 4 && name[0] == 'G' && name[1] == 'M' && name[2] == 'T' && (name[3] == '+' || name[3] == '-'))

変更内容

  • TimeZoneInfo.Unix.Android.cs:GetTimeZoneメソッドのGMT数値オフセットゾーン判定条件を厳格化。位置3に+または-があることを確認して、実際の数値オフセット形式のみを処理するように修正(2行変更)
  • TimeZoneInfoTests.cs:Android固有の新テストを2つ追加
    • AndroidGMTOffsetTimeZoneTest:GMT+/-N形式のゾーンが正しく機能することを検証
    • AndroidGMTNameNotMistakenForGMTOffsetTimeZoneTest:「GMT Standard Time」がDST対応で正しく解決されることの回帰テスト

パフォーマンスへの影響

影響なし

関連Issue

#126943

その他

  • 修正はAndroidプラットフォーム固有であり、公開APIのTimeZoneInfo.FindSystemTimeZoneByIdの動作を修正するもの
  • Android Emulator(Pixel 8、API 35)での検証済み:修正前はSupportsDaylightSavingTime: False、修正後はTrueで夏時間の正しいオフセット(UTC+1)を返却

#130334 Bump actions/cache/save from 5.0.5 to 6.1.0

  • 作成者: @dependabot[bot]
  • 作成日時: 2026年07月08日 07:49:54(UTC)
  • マージ日時: 2026年07月10日 11:09:52(UTC)
  • ラベル: area-codeflow

概要

GitHub Actions の actions/cache/save アクションを v5.0.5 から v6.1.0 にアップデートする依存関係の更新です。このアップデートはメジャーバージョンアップを含み、ESM モジュールシステムへの移行とキャッシュ書き込みエラーの読み取り専用トークンハンドリングの改善が含まれます。

変更内容

  • .github/workflows/agentics-maintenance.yml: actions/cache/save のバージョン参照を v5.0.5 から v6.1.0 に更新(2行の変更)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 主な変更点:

    • v6.1.0: @actions/cache を v6.1.0 にアップデート。読み取り専用トークンによるキャッシュ書き込みエラーのハンドリング改善
    • v6.0.0: ESM モジュールシステムへの移行、@actions/cache・@actions/core・@actions/exec・@actions/io のアップデート
  • 互換性: 大きなバージョンアップであり、ESM への移行を含みますが、GitHub Actions のワークフロー定義の変更は不要です

  • Dependabot 互換性スコア: 提供されています(詳細は PR 内のバッジを参照)


#130333 Bump actions/cache/restore from 5.0.5 to 6.1.0

  • 作成者: @dependabot[bot]
  • 作成日時: 2026年07月08日 07:49:50(UTC)
  • マージ日時: 2026年07月10日 11:10:46(UTC)
  • ラベル: area-codeflow

概要

GitHub Actions の actions/cache/restore を v5.0.5 から v6.1.0 にアップデートする依存関係更新PRです。主な変更は、読み取り専用トークンによるキャッシュ書き込みエラーへの対応と、ESM モジュールシステムへの移行です。

変更内容

  • .github/workflows/agentics-maintenance.yml: actions/cache/restore のバージョンを v5.0.5 → v6.1.0 に更新(2行変更)
  • 上流の actions/cache ライブラリの変更:
    • キャッシュ書き込みエラー時の読み取り専用トークン対応(v6.1.0)
    • ESM モジュールシステムへの移行(v6.0.0)
    • 依存パッケージの更新(@actions/cache、@actions/core、@actions/exec、@actions/io)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • これはDependabot による自動更新PRです
  • メジャーバージョン更新(v5 → v6)のため、互換性に注意が必要です
  • Dependabot互換性スコアが表示されており、更新の安全性が評価されています
  • CI/CD ワークフロー自体への実質的な機能変更はなく、キャッシュ復元アクションの改善版を利用するようになります

#130328 [ci-fix] Needs review: deploy FileVersionInfo TestAssembly as Content on Apple NativeAOT (refs #130253)

概要

Apple NativeAOT環境でのFileVersionInfoTest.FileVersionInfo_CustomManagedAssemblyテスト失敗を修正します。NativeAOT下ではテストアセンブリが管理されたDLLファイルとして展開されず、ファイルパスからメタデータを読み込むテストがFileNotFoundExceptionで失敗していました。修正により、テストアセンブリをEmbeddedResourceとして埋め込み、実行時に一時ファイルに抽出して使用するようにします。

変更内容

  • System.Diagnostics.FileVersionInfo.Tests.csproj: テストアセンブリプロジェクト参照をEmbeddedResource生成に変更。Apple Monoの条件分岐を削除。
  • FileVersionInfoTest.cs: 埋め込みテストアセンブリを一時ファイルに抽出するヘルパーメソッドを追加。カスタムアセンブリテストを更新。
  • FileVersionInfoTest.Unix.cs: シンボリックリンクテストを抽出された一時ファイルコピーを使用するよう更新(+2/-2行)。
  • ILLink.Descriptors.xml: Apple Monoトリミング記述子(テストアセンブリをroot化)を削除(-3行)。

パフォーマンスへの影響

影響なし。テスト実行時に一時ファイルへの抽出処理が追加されますが、テスト初期化段階の1回限りの処理です。

関連Issue

#130253、#125437(Apple NativeAOTライブラリテスト有効化)、#46856(Apple Monoのvfs-mapping関連)

その他

注意点:本PRはCI失敗修正エージェント生成の下書き版で、Apple NativeAOT環境での検証がまだできていません。マージ前にiossimulator/maccatalyst AllSubsets_NativeAOTビルドでFileVersionInfo_CustomManagedAssemblyテストが成功することの確認が必須です。既存の[ActiveIssue(".../124344", IsAppleMobile && IsCoreCLR)]は本修正では適用されないため、テストは実際に実行されます。


#130327 [release/10.0] Handle STATUS_OBJECT_NAME_NOT_FOUND in Windows directory enumeration

概要

Windows ディレクトリ列挙時に STATUS_OBJECT_NAME_NOT_FOUND ステータスを適切に処理する修正。10.0.9で導入された回帰で、特定のファイルシステムドライバ(Azure App Service の WEBSITE_RUN_FROM_PACKAGE で使用される zip マウント仮想ファイルシステムなど)上で、検索パターンがファイルにマッチしない場合に FileNotFoundException が例外発生していた問題を解決します。修正前の想定動作は空配列を返すことです。

// Read-only, zip-mounted content root (Azure App Service WEBSITE_RUN_FROM_PACKAGE)
string dir = AppContext.BaseDirectory; // C:\home\site\wwwroot

string[] files = Directory.GetFiles(dir, "__no_such_file__*.dll");
// 修正前(10.0.9): System.IO.FileNotFoundException
// 修正後: 空配列を返す(10.0.8以前と同じ動作)

変更内容

  • src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerator.Windows.cs
    • FileSystemEnumerator<T>.GetData() メソッドに STATUS_OBJECT_NAME_NOT_FOUND (0xC0000034) ケースを追加
    • 既に処理されていた STATUS_NO_SUCH_FILE (0xC000000F) と同じ処理分岐に統合
    • ファイルシステムドライバが検索パターンのゼロマッチをこのステータスで返す場合に対応

パフォーマンスへの影響

影響なし。本修正は #122947/#123695 で導入された O(n) → O(log n) の性能改善を維持し、ファイルシステム レベルでの検索パターン フィルタリング機能を保護します。ゼロマッチのみを正しく処理する一行の case 追加であり、制御フローの変更はありません。

関連Issue

#130134(顧客報告)、#127974(回帰導入)、#122947(原初の性能改善)、#123695(性能改善)

その他

  • 内部実装変更(公開 API は影響なし)
  • 低リスク変更:単一の case 追加のみで制御フローに他の変更なし
  • 10.0.9 で導入された回帰の修正。NTFS/ReFS/UDF/CDFS 等の標準ドライバは既に処理されていた STATUS_NO_SUCH_FILE を返すため、組み込みのリグレッション テストでは検出されていませんでした
  • 修正は out-of-band で ntdll!NtQueryDirectoryFile をフックしてステータスコードを書き換え、ドライバ動作を再現して検証済み
  • Full System.IO.FileSystem.Tests でリグレッションなし確認済み

#130275 Fix x86 Debugger_STRData layout and ESP adjustment in cDAC DBI

  • 作成者: @tommcdon
  • 作成日時: 2026年07月07日 01:39:11(UTC)
  • マージ日時: 2026年07月10日 18:17:30(UTC)
  • ラベル: area-Diagnostics-cdac

概要

x86 デバッガスタックフレーム構造体の レイアウト修正と ESP 調整ロジックの改善を行い、32ビット DBI と cDAC の互換性を向上させます。ポインタサイズに依存した構造体フィールドを CORDB_ADDRESS/nuint に統一し、ネイティブ匿名ユニオンのレイアウトを正確にモデル化しました。また、x86 スタックウォーク中のネイティブフレーム遷移時に古いスタックパラメータサイズが誤って再利用される問題を修正しています。

変更内容

  • Debugger_STRData 構造体の修正:fp、ctx、fpParentOrSelf フィールドを CORDB_ADDRESS/nuint に統一し、32/64ビット環境での互換性を確保
  • ネイティブユニオンのモデル化:匿名ユニオンを明示的レイアウトユニオン(u.stubFrame)として再構造化
  • ParseContinuation 署名更新:pDiagnosticIP をポインタサイズ対応の CORDB_ADDRESS*/nuint* に変更
  • x86 ESP 調整ロジック改善:LastFramelessStackParameterSize をネイティブフレーム状態遷移時にリセット、X86ESPIgnoresCalleePoppedArgs メカニズムの削除
  • cStubFrame エントリの初期化:ctx フィールドをゼロで初期化
  • ドキュメント更新および複数の デバッグモジュール(dacdbiimpl.cpp、rsstackwalk.cpp など)の整合性修正

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは DBI(Debugger Interface)と cDAC(Compact Data Access Contract)間の相互運用性を修正する重要な変更です。特に x86 環境でのスタックウォークの正確性とポインタサイズの扱いに関する互換性問題を解決しており、32ビットデバッガの信頼性向上に寄与します。


#130168 [mobile] Disable NativeAOT-specific test failures on Apple mobile

概要

Apple モバイルプラットフォーム上の NativeAOT ランタイムでのみ失敗するテストを [ActiveIssue] 属性で無効化します。CoreCLR/Mono や他のプラットフォーム上では変わらず実行されます。失敗の原因は、NativeAOT アプリバンドルのキーチェーン資格処理、Microsoft.Extensions.Hosting のリフレクションと設定ファイル動作、HttpListener の接続切断ケースです。

変更内容

  • System.Security.Cryptography.Pkcs: クラスレベルの [ActiveIssue] を複数のテストクラス(SignerInfoTests、SignedCmsTests、CounterSigningDerOrder、TimestampTokenTests、TimestampRequestTests、DecryptTests など)に追加
  • Microsoft.Extensions.Hosting: ホスト、ホストビルダー、ホストアプリケーションビルダーテストにメソッドレベルの [ActiveIssue] を追加(特に設定ファイルシナリオ対象)
  • System.Net.HttpListener: HttpResponseStreamTests に接続切断シナリオ用の [ActiveIssue] を追加
  • System.Diagnostics.FileVersionInfo: テストメソッドにメソッドレベルの [ActiveIssue] を追加
  • Microsoft.Extensions.Caching.Memory: MemoryCacheSetAndRemoveTests にメソッドレベルの [ActiveIssue] を追加

全変更は条件 PlatformDetection.IsAppleMobile && PlatformDetection.IsNativeAot に基づいています。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

テストの無効化はテスト実装の変更ではなく、テスト属性による条件付きスキップです。Apple モバイル以外のプラットフォームと CoreCLR/Mono ランタイムでは影響を受けません。


#130142 [browser] atob polyfil for feature detection in V8

概要

ブラウザ/WASM向けJavaScriptローダーのポリフィル初期化を調整し、V8/d8シェル環境でのエンジン機能検出用にatobフォールバックを追加するとともに、--experimental-wasm-exnrefフラグの使用を廃止します。ポリフィル初期化を「早期」と「ローダー」の2段階に分割し、シェル環境での互換性を向上させます。

変更内容

  • polyfills.ts: V8/d8シェル環境向けにatobポリフィルを追加し、ポリフィル初期化関数をinitPolyfillsEarly()とinitPolyfillsLoader()に分割
  • loader/dotnet.ts, loader/run.ts: ポリフィル初期化関数の呼び出しを新しい関数名に更新
  • V8実行スクリプト: 各種V8/Node実行コマンドから--experimental-wasm-exnrefフラグを削除(wasm.mk、Wasm.Console.V8.Sample.csproj、BrowserWasmApp.targets等)
  • パイプライン設定: Helix V8機能制限に関するコメントを更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは主にWASM環境でのV8エンジン互換性向上と実験的機能フラグの廃止に関する変更です。atobポリフィルの追加により、V8/d8シェル環境でも標準的なグローバルAPI互換性が確保されます。


#130051 [wasm][wasi] CoreCLR wasi onboarding

概要

CoreCLRランタイムのWASI(WebAssembly System Interface)対応のオンボーディングを行うPull Requestです。WASIプラットフォーム上でのビルド、ランタイムテスト、ネイティブコンポーネントの統合を実装しており、WebAssembly環境でのClr実行環境の基礎を整備しています。

変更内容

  • ビルドシステム: eng配下のCMakeファイルやビルドターゲット設定(native.wasm.targets、configureplatform.cmake等)を追加・更新し、WASI向けのコンパイル構成を定義
  • パイプライン設定: wasi-wasm-coreclr-build-only.yml および wasi-wasm-coreclr-runtime-tests.yml を新規追加し、CI/CDで専用ビルドテストを実行できるように整備
  • PAL層(Platform Abstraction Layer): src/coreclr/pal配下にwasm向けのスタブ実装(stubs.cpp)、WASI固有の機能補充ヘッダ(pal_wasi_missing.h)を追加し、WASIの制限に対応
  • CoreLib: System.Private.CoreLib.csprojをWASI対応に更新
  • ホストコンポーネント: corerun(ホストプログラム)をWASIプラットフォーム対応に拡張(corerun.cpp、corerun.hpp変更)
  • デバッグ機能: debug-pal配下でWASI環境でのデバッグサポートを追加
  • その他: featuredefines、clrfeaturesの設定更新、CMakeLists.txtの複数ファイル更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPull Requestは67ファイルの変更を含む大規模なインフラストラクチャ整備で、CoreCLRのWASI向けサポートの初期段階を構築するものです。WebAssembly環境での.NETランタイム実行を実現するための基盤実装となります。


#129958 [cDAC] Implement DacDbiImpl.ResolveTypeReference

  • 作成者: @rcj1
  • 作成日時: 2026年06月29日 01:41:43(UTC)
  • マージ日時: 2026年07月10日 22:12:11(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC(managed Diagnostics Data Contract)に DacDbiImpl.ResolveTypeReference を実装し、ネイティブ実装をポートしました。ECMA-335メタデータを使用して mdTypeRef トークンを mdTypeDef トークンに解決し、AssemblyRefスコープ、型フォワーダー、ネストされた型に対応しています。

変更内容

  • DacDbiImpl.cs: ResolveTypeReference のマネージド実装を追加。メタデータベースのスコープ/名前走査と型フォワーダー・ネストされた型の解決ヘルパーを含みます。
  • EcmaMetadataUtils.cs: mdtAssemblyRef トークンタイプ定数を追加し、リゾルバロジックがAssemblyRefトークンマップを構築可能に。
  • ILoaderExtensions.cs: ローダーコントラクト拡張を追加(34行新規)。
  • DacDbiImplTests.cs: AssemblyRef、型フォワーダー、ネストされた型の解決をカバーするユニットテストと、メタデータ構築ヘルパーを追加。

パフォーマンスへの影響

影響なし(ベンチマーク情報提供なし)

関連Issue

#129958

その他

  • 内部実装の変更であり、公開APIへの影響はありません。
  • 以前は E_NOTIMPL を返していた機能をメタデータベースの解決アプローチに置き換えています。
  • ユニットテストでメモリ内メタデータグラフを構築して複数の解決シナリオを検証しています。

#129267 [cDAC] Implement GetNativeCodeSequencePointsAndVarInfo for cDAC

  • 作成者: @barosiak
  • 作成日時: 2026年06月11日 00:10:35(UTC)
  • マージ日時: 2026年07月10日 03:26:50(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC(Compact DAC)の DacDbiImpl に GetNativeCodeSequencePointsAndVarInfo メソッドを実装しました。ネイティブ実装からコールバックベースの列挙パターン(FP_NATIVEVARINFO_CALLBACK、FP_SEQUENCEPOINT_CALLBACK)に変更することで、マネージド cDAC がネイティブの forDbi アロケータを使用しないようにしました。また、メタデータトークンのないメソッド(async 変種など)での GetArgCount と ClrDataFrame メソッドの失敗を修正するため、IRuntimeTypeSystem に TryGetMethodSignature を追加し、ICorDebugInfo::VarLoc から未使用の vlMemory メンバを削除(JIT/EE バージョン GUID をバンプ)しました。

変更内容

  • ネイティブインターフェイス定義: dacdbi.idl、dacdbiinterface.h、dacdbiimpl.h でコールバック型定義を追加し、メソッド署名を更新
  • ネイティブ実装: dacdbiimpl.cpp でメソッドをコールバックベースに書き換え、GetNativeVarData/GetSequencePoints ヘルパを削除;module.cpp で LoadNativeInfo をコールバック構造体を使用して書き換え
  • マネージド相互運用型: IDacDbiInterface.cs に VarLocType、VarLoc、NativeVarInfo、DbiOffsetMapping 構造体と DbiSourceTypes enum を追加し、メソッド署名を更新
  • cDAC 実装: DacDbiImpl.cs と DacDbiImpl.NativeCodeInfo.cs で GetNativeCodeSequencePointsAndVarInfo を実装、変換ヘルパと DEBUG 検証を追加
  • メソッドシグネチャ取得: IRuntimeTypeSystem.cs と RuntimeTypeSystem_1.cs に TryGetMethodSignature を追加;AsyncMethodData.cs、method.hpp、siginfo.hpp、datadescriptor.inc で Sig と cSig フィールドを公開
  • 既存コード更新: ClrDataFrame.cs、TypeNameBuilder.cs、MethodSignatureHelpers.cs が TryGetMethodSignature を使用するよう更新
  • 単体テスト: DacDbiImplTests.cs で VarLoc 型マッピング、フィールドレベル変換、SourceTypes フラグ変換のテストを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • JIT/EE バージョン GUID が更新されています(jiteeversionguid.h)
  • cordebuginfo.h の ICorDebugInfo::VarLoc から vlMemory メンバが削除されたため、この構造体に依存するコードは影響を受ける可能性があります
  • CorInfoTypes.VarInfo.cs で古い VarLoc 定義が簡略化されました

#127868 Fix tensor EqualWithTolerance test helper

概要

テンソルテストにおける特殊値(NaN、Infinity など)の許容誤差比較を修正するため、テストヘルパーを再構築しました。IsEqualWithTolerance の述語スタイルからアサーション スタイル(AssertEqualWithTolerance)へ移行し、NFloat 型の比較サポートを追加しています。これにより、ベクトル化が再度有効になった場合のテスト失敗に対応できるようになります。

変更内容

  • AssertExtensions.cs: NFloat 型に対する等値性アサーション(分散ベース および ビット単位)を追加
  • Helpers.cs:
    • IsEqualWithTolerance(述語スタイル)からAssertEqualWithTolerance(アサーション スタイル)に移行
    • AssertExtensions.Equalへのデリゲーション実装
    • NFloat の許容誤差値選択ロジックを修正
  • TensorPrimitives.Generic.cs: 手動の要素ごと許容誤差チェック をセントラライズされたアサーション ヘルパーに統一
  • TensorPrimitives.NonGeneric.Single.cs: float 許容誤差比較をセントラライズされたアサーション ヘルパーに切り替え

パフォーマンスへの影響

影響なし

関連Issue

#107934

その他

このPRは内部テストユーティリティの改善であり、公開APIには影響しません。テストコードのメンテナンス性と堅牢性向上が主目的です。


#127180 Preserve invalid friend assembly error

  • 作成者: @Copilot
  • 作成日時: 2026年04月20日 20:51:47(UTC)
  • マージ日時: 2026年07月10日 21:13:26(UTC)
  • ラベル: area-VM-coreclr

概要

InternalsVisibleTo属性で無効なアセンブリ参照(例:PublicKeyとPublicKeyTokenの両方を指定)が宣言された場合、ランタイムが汎用のファイルロードエラーをスローしていた問題を修正します。アセンブリ名解析の失敗を内部例外として保持し、診断情報を改善しています。

修正前後の比較:

// 修正前: 詳細情報がない汎用エラー
// System.IO.FileLoadException: Unable to load file 'InvalidFriendAssemblyName.dll'

// 修正後: 原因の詳細が内部例外として含まれる
// System.IO.FileLoadException: Could not load file or assembly 'InvalidFriendAssemblyName, ...'
//  ---> System.IO.FileLoadException: The given assembly name was invalid.
//       FileName = 'Broken,PublicKey=…,PublicKeyToken=...'

変更内容

  • src/coreclr/vm/assembly.cpp: FriendAssemblyName_t::Init() の失敗をEX_TRY/EX_CATCHでラップし、元の解析例外を内部例外として保持したEEFileLoadExceptionとして再スローするよう実装。
  • InvalidFriendAssemblyName.cs/.csproj: 無効なInternalsVisibleTo属性を持つ新しいローダー回帰テストプロジェクトを追加し、FileLoadExceptionチェーンの診断情報を検証。

パフォーマンスへの影響

影響なし

関連Issue

#127180

その他

  • 影響範囲: CoreCLR ランタイム(アセンブリローダー内部実装)
  • 互換性: 例外オブジェクトの構造が変わるため、例外ハンドリングコードで例外チェーン(InnerException)を検証している場合に影響する可能性があります。ただし、既存のFileLoadExceptionスロー動作は維持されるため、上位互換性は保たれます。
  • テスト: 無効なInternalsVisibleTo属性を使用した回帰テストが追加されており、診断情報の改善を検証します。

目次