Pull Request on 2026年07月20日

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

注意点

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


目次

  1. #131086 Fix browser-wasm CoreCLR artifact collisions
  2. #131084 Add XML doc comments for the IEEE 754 decimal types and value properties
  3. #131075 Revert WinZipAesStreamFuzzer, ZipCryptoStreamFuzzer
  4. #131070 Remove larger test length for Iri_ExpandingContents_TestData
  5. #131061 [main] Update dependencies from dotnet/xharness
  6. #131058 [mono][wasm] Fix UnmanagedCallersOnly exports with more than 8 arguments
  7. #131055 Emit SupportedOSPlatform("browser") on generated JSImport partials
  8. #131042 Fix publishing of ILLink test results
  9. #131038 [release/10.0] [mono][wasm] Fix AOT + BlazorWebAssemblyLazyLoad startup crash
  10. #131035 Update code review skill guidelines for suggestions formatting
  11. #131019 Implement the transcendental functions for the IEEE 754 decimal types
  12. #131011 Implement IXCLRDataExceptionState state comparison
  13. #131007 Use eng\common\dotnet.cmd instead of .\dotnet.cmd in crossgen2 comparison legs
  14. #131006 Add System.Security.Cryptography Copilot instructions
  15. #130997 Add a limit on number of pending HTTP/2 PING ACKs
  16. #130996 Add method extent enumeration support to legacy cDAC
  17. #130970 Enable previously suppressed tests on CoreCLR browser
  18. #130942 [cDAC] Mark unused APIs E_NOTIMPL and remove fallback
  19. #130933 Embed debug info in host object libraries to avoid LNK4099
  20. #130912 Pause scheduled runs for gc-standalone pipeline
  21. #130901 Add CPU feature detection using elf_aux_info
  22. #130877 Async Profiler: Optimize async dispatcher allocation.
  23. #130867 [release/10.0] Fix tree type in impStoreNullableFields and impLoadNullableFields for simds
  24. #130854 [Apple] Preserve Norwegian locale names in hybrid globalization
  25. #130843 Fix three xarch lowering correctness/invariant issues
  26. #130822 [RyuJIT Wasm] SIMD Element-Wise Loads and Stores
  27. #130802 Implement RFC 9659 compliance for "zstd" HttpContent compression
  28. #130801 Remove dead/unreachable code in several JIT phases
  29. #130754 [release/10.0] Ignore PhiArgs without matching actual preds
  30. #130691 [iOS] Optimize CompareStringNative performance
  31. #130421 [release/10.0] Source code updates from dotnet/dotnet
  32. #130415 Escape C# keyword identifiers in OptionsValidator generated code
  33. #130382 Disable large alloc tests on 32b targets
  34. #130324 [release/10.0] JIT: fix widened IV init placed in unreachable block
  35. #130322 [release/10.0] JIT: don't propagate promoted struct LCL_VAR into FIELD_LIST uses
  36. #129592 [release/10.0] Fix LoaderHeap's free list growing more than expected
  37. #128211 Fix broken "See also" link in CoreCLR iOS build docs

#131086 Fix browser-wasm CoreCLR artifact collisions

概要

browser-wasm CoreCLR ビルドにおいて、Linux と Windows ホストが同じ名前の Pipeline Artifact を発行することによる競合を解決する変更です。ホスト固有の名前付け($(_hostedOs) サフィックス)を導入し、非ブラウザ成果物には影響を与えません。

変更内容

  • eng/pipelines/runtime.yml (+5/-5)
    • browser-wasm CoreCLR の "ReleaseLibraries" ビルド/テスト Pipeline Artifact 名にホスト固有のサフィックスを追加
    • runtime-test ジョブを更新して、リネームされた(Linux ホスト)統一ビルド成果物を unifiedArtifactsName 経由でダウンロード
    • 非ブラウザ成果物の名前と参照元は変更なし

パフォーマンスへの影響

影響なし

関連Issue

#128498 - 本変更のきっかけとなった重複名の問題

その他

  • Ruby YAML パーサで eng/pipelines/runtime.yml を検証済み
  • 4つのホスト固有のプロデューサーと対応するブラウザ・コンシューマーを確認
  • git diff --check を実行済み
  • Claude と Gemini による独立したコード レビューを完了(指摘事項なし)

#131084 Add XML doc comments for the IEEE 754 decimal types and value properties

概要

IEEE 754準拠の10進浮動小数点型Decimal32、Decimal64、Decimal128の公開APIに対するXMLドキュメンテーションを追加しました。各型がIEEE 754のdecimalNインターチェンジ形式とバイナリ整数10進数(BID)エンコーディングを使用することを明記し、精度(それぞれ7、16、34桁)を記載しています。また、PositiveInfinity、NegativeInfinity、NaN、NegativeZero、Zero、MinValue、MaxValue、Epsilonといった静的値プロパティについても、対応するインターフェース(IFloatingPointIeee754<TSelf>など)の標準的な記述に準じたサマリーを追加しました。

変更内容

  • Decimal32.cs: 型全体のサマリーおよび8つの静的値プロパティのXMLドキュメントを追加
  • Decimal64.cs: 型全体のサマリーおよび8つの静的値プロパティのXMLドキュメントを追加
  • Decimal128.cs: 型全体のサマリーおよび8つの静的値プロパティのXMLドキュメントを追加

内部インターフェースIDecimalIeee754ParseAndFormatInfo<T, TSignificand>の明示的実装は公開APIではないため、ドキュメント化は不要です(Half/BFloat16の慣例に準拠)。

パフォーマンスへの影響

影響なし(ドキュメンテーションのみの変更)

関連Issue

なし

その他

  • すべての値プロパティドキュメントはIFloatingPointIeee754<TSelf>/IMinMaxValue<TSelf>/INumberBase<TSelf>の正規の表現に基づいており、既存のOne/E/Pi/Tau/NegativeOneの慣例と一貫しています。
  • Copilotによるレビューで、型レベルの<remarks>におけるBID/DPDエンコーディングの説明が実装と若干矛盾する可能性が指摘されています(ABI依存の記述)。

#131075 Revert WinZipAesStreamFuzzer, ZipCryptoStreamFuzzer

概要

WinZipAesStreamFuzzerおよびZipCryptoStreamFuzzerの2つのファザーを削除します。これらのファザーはビルド失敗(corpus fileの欠落)とランタイムエラー(TypeInitializationException)により動作していなかったため、ファジング機能をアンブロックするため削除されました。

変更内容

  • eng/pipelines/libraries/fuzzing/deploy-to-onefuzz.yml: ファザーのデプロイ設定を削除(16行削除)
  • src/libraries/Fuzzing/DotnetFuzzing/Fuzzers/WinZipAesStreamFuzzer.cs: ファザー実装を削除(171行削除)
  • src/libraries/Fuzzing/DotnetFuzzing/Fuzzers/ZipCryptoStreamFuzzer.cs: ファザー実装を削除(127行削除)

パフォーマンスへの影響

影響なし

関連Issue

#122093

その他

PR作成者より、今後新しいファザーをコミットする際は必ずローカルでテストしてからコミットするよう警告が記載されています。テストなしでのコミットはビルドエラーやランタイムエラーの原因となり、ファジング全体をブロックする可能性があります。


#131070 Remove larger test length for Iri_ExpandingContents_TestData

  • 作成者: @MihaZupan
  • 作成日時: 2026年07月20日 10:27:00(UTC)
  • マージ日時: 2026年07月20日 15:55:39(UTC)
  • ラベル: area-System.Net

概要

URI テストの IRI_ExpandingContents_TestData から 1 百万文字の長いテストケースを削除します。このテストケースは約 9 百万文字の文字列を ToString() で割り当てることになり、他のプロパティやバッファと合わせて約 100 MB のメモリを消費していました。ushort より長いシナリオのカバレッジは、既に 66K のテストケースで十分です。

変更内容

  • src/libraries/System.Private.Uri/tests/FunctionalTests/IriTest.cs: 1 百万文字の長いテストケースを削除し、66K のテストケースのみを保持(+1/-1)

パフォーマンスへの影響

テスト実行時のメモリ使用量削減。1 百万文字テストケースによる約 100 MB のメモリ割り当てが削除されます。

関連Issue

#130786

その他

なし


#131061 [main] Update dependencies from dotnet/xharness

概要

dotnet/xharnessの依存関係を更新するPull Requestです。Microsoft.DotNet.XHarness関連の3つのNuGetパッケージを11.0.0-prerelease.26360.1から11.0.0-prerelease.26368.1にアップデートしています。

変更内容

  • .config/dotnet-tools.json: dotnetツール設定を更新(1行追加、1行削除)
  • eng/Version.Details.props: バージョン詳細情報を更新(3行追加、3行削除)
  • eng/Version.Details.xml: バージョン詳細情報を更新(6行追加、6行削除)

更新対象パッケージ:

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

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPull Requestはdotnet-maestro[bot]による自動依存関係更新です。xharnessリポジトリのmainブランチのビルド20260718.1(コミット: acc639bea6c5720abf118b8808e18f9cabe90568)に基づいています。


#131058 [mono][wasm] Fix UnmanagedCallersOnly exports with more than 8 arguments

概要

Mono WebAssembly環境で[UnmanagedCallersOnly]属性を持つエクスポート関数が9引数以上の場合、ネイティブコードから呼び出すと「function signature mismatch」エラーでトラップする問題を修正しました。問題の根因は、PInvokeTableGeneratorが生成するCサンクが、8引数以下用の個別引数渡し規約を常に使用していたのに対し、ランタイムが9引数以上向けにinterp_entry_general(ポインタ配列渡し)をインストールしていたため、呼び出し規約の不一致が発生していました。修正により、9引数以上の場合はローカル引数ポインタ配列を構築してinterp_entry_generalを直接呼び出すようになります。

変更内容

  • src/tasks/WasmAppBuilder/mono/PInvokeTableGenerator.cs: MAX_INTERP_ENTRY_ARGS(8)を超える引数の場合、void**引数配列を構築してinterp_entry_generalを呼び出すパス実装。8引数以下のパスは変更なし。
  • src/mono/wasm/testassets/native-libs/local_manyargs.c: 8/9/16/12(void戻り値)引数でエクスポート関数を呼び出すネイティブ側テストハーネス。
  • src/mono/wasm/testassets/EntryPoints/PInvoke/UnmanagedCallbackManyArgs.cs: 検証用の[UnmanagedCallersOnly]エクスポートとDllImportを定義。
  • src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs: 多引数アンマネージドエクスポートの回帰テスト追加。

パフォーマンスへの影響

影響なし。修正は呼び出し規約の正確性を改善するもので、パフォーマンス特性には変化なし。

関連Issue

#109338

その他

  • 修正範囲はMono WebAssembly実装に限定。CoreCLR WebAssemblyジェネレータはすでに引数配列経由で呼び出すため影響なし。
  • ローカルブラウザWebAssemblyインタプリタビルドでの検証済み(8/9/16/12引数ケース全て確認)。
  • 修正前の9/16/12引数ケースでは「null function or function signature mismatch」エラーが発生していたが、修正後は正常に動作。

#131055 Emit SupportedOSPlatform("browser") on generated JSImport partials

概要

JSImport部分メソッドの生成時に[SupportedOSPlatform("browser")]属性を直接付与することで、プラットフォーム互換性分析(CA1416)がJSImportメソッドに正しく適用されるよう修正しました。従来はJSImportAttributeクラスレベルの属性が機能していなかったため、ブラウザ以外のプラットフォームから呼び出される場合の警告が表示されていませんでした。

変更内容

  • Constants.cs: SupportedOSPlatform属性と"browser"プラットフォーム文字列の定数を追加
  • JSImportGenerator.cs: 生成される部分メソッド実装に[SupportedOSPlatform("browser")]を出力するロジックを追加(9行追加、3行削除)
  • Compiles.cs: 新しい属性を含むように生成ソースの検証スナップショットを更新

パフォーマンスへの影響

影響なし

関連Issue

#121165

その他

  • JSExportは変更されていません。JSExportAttributeは同じくクラスレベルの[SupportedOSPlatform("browser")]を持ちますが、ユーザーが記述する非部分メソッドに適用されるため、ジェネレータはメソッド自体を生成せず、ラッパー/登録コードのみを出力します。そのため、装飾対象となる生成メソッド宣言がありません。
  • JSImportAttribute/JSExportAttributeのクラスレベル[SupportedOSPlatform("browser")]は削除されず、そのまま残されています。部分メソッド属性マージングにより、生成メソッドと結合された最終的なメソッドがブラウザ専用になります。
  • 単体テスト22/22がパス、生成ソース検証スナップショット(Annotated、Import1)が新しい属性を含むように更新されました。

#131042 Fix publishing of ILLink test results

概要

ILLink テストの結果発行パイプラインの不具合を修正します。テストは Debug ビルドで実行されますが、Release 構成で結果を検索していたため、テスト結果が発行されていませんでした。結果ファイルを適切なディレクトリにコピーし、テスト結果形式を xUnit として明示的に設定します。

変更内容

  • eng/pipelines/runtime-linker-tests.yml: ILLink テスト パイプライン構成を更新
    • testResultsFormat を xunit として明示的に指定
    • artifacts/TestResults/Debug から artifacts/TestResults/$(_BuildConfig) へテスト結果 XML をコピーするステップを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更は CI/CD パイプラインの構成修正であり、テスト結果の発行ステップが正常に機能することを保証します。ビルド構成(Debug/Release)と結果検索パスの不一致が原因となっていた問題の対応です。


#131038 [release/10.0] [mono][wasm] Fix AOT + BlazorWebAssemblyLazyLoad startup crash

概要

AOT (Ahead-of-Time) コンパイル + BlazorWebAssemblyLazyLoad を組み合わせた Blazor WebAssembly アプリの起動時クラッシュを修正します。

AOT イメージ読み込み時に、参照されるすべてのアセンブリへのバインディングが即座に行われるため、遅延ロード対象のアセンブリが実行時に存在しないとイメージが使用不可になり、インタープリタへのフォールバック時に appdomain.c や interp.c でアボートが発生していました。

修正により、AOT と遅延ロードが組み合わされた場合に、MSBuild で --aot-lazy-assembly-load ランタイムオプションが自動的に有効化され、アセンブリバインディングが実際のロード時点まで遅延されるようになります。

変更内容

  • Microsoft.NET.Sdk.WebAssembly.Browser.targets: RunAOTCompilation=true かつ BlazorWebAssemblyLazyLoad アイテムが存在する場合に --aot-lazy-assembly-load オプションを自動的に追加する MSBuild プロパティの実装(6 行追加)
  • LazyLoadingTests.cs: LoadLazyAssemblyWithAOT テストを追加。Release + AOT + 遅延ロード構成での動作を検証(22 行追加)

パフォーマンスへの影響

影響なし(遅延ロード対象のアセンブリへのバインディングが実際のロード時点まで遅延されるだけで、全体的なパフォーマンスは変わらない)

関連Issue

#125794

その他

  • この修正は release/10.0 ブランチへのバックポートです(main PR: #131020)
  • 変更スコープが限定的 (RunAOTCompilation=true かつ BlazorWebAssemblyLazyLoad が存在する場合のみ) で、非 AOT / 非遅延ロードビルドへの影響はありません
  • 既存の aot-lazy-assembly-load ランタイムオプションを活用した安全な修正で、リスクは低いです
  • ローカルでの検証済み:修正なしでは interp.c アサーション・タイムアウト、修正後は正常に動作

#131035 Update code review skill guidelines for suggestions formatting

概要

コード レビュー スキルのガイドラインを更新し、提案フォーマットに関する指示を改善しました。Copilot によるコード提案の形式を統一することを意図としています。

変更内容

  • .github/skills/code-review/SKILL.md: コード レビュー スキルのガイドラインに対して、提案フォーマットに関する記述を追加・修正(2行追加、1行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは、GitHub Copilot がコード レビュー時に一貫性のある形式で提案を行うようにするためのガイドライン更新です。ドキュメント(スキル定義)の改善に限定されており、ランタイムやコンパイラの実装に変更はありません。


#131019 Implement the transcendental functions for the IEEE 754 decimal types

概要

IEEE 754 decimal型(Decimal32、Decimal64、Decimal128)の超越関数ファミリーを実装し、汎用数値インターフェースの完成を目指すPRです。指数関数(Exp系)、対数関数(Log系)、べき乗関数(Pow、Cbrt、RootN、Hypot)、三角関数(Sin、Cos、Tan、SinCos、逆三角関数、*Pi変種)、双曲関数の全ファミリーを追加し、新しい公開インターフェースIDecimalFloatingPointIeee754<TSelf>を定義します。

変更内容

公開API(System.Runtime)

  • IDecimalFloatingPointIeee754<TSelf> : IFloatingPointIeee754<TSelf>インターフェース追加(Quantize/Quantum/SameQuantumメソッド含む)
  • Decimal32/Decimal64/Decimal128が新インターフェース実装
  • 超越関数メソッド群を各型に追加(ref: System.Runtime.cs)

内部実装(System.Private.CoreLib)

  • DiyFp128ソフトウェア128ビット浮動小数点エンジン追加(normalize/multiply/divide/add-subtract/pack操作)
  • Intel dpml_ux_*ルーチンをC#に移植したコア実装ファイル群追加:
    • DiyFp128Exp.cs、DiyFp128Log.cs、DiyFp128Pow.cs
    • DiyFp128Trig.cs(Payne–Hanek reduction含む)、DiyFp128PiTrig.cs
    • DiyFp128InvTrig.cs、DiyFp128Hyper.cs、DiyFp128InvHyper.cs
    • DiyFp128Sqrt.cs、DiyFp128Cbrt.cs
    • DiyFp128Conversions.cs(BID-decimal ↔ DiyFp128相互変換)、DiyFp128DecimalReduce.cs
  • Number.DecimalIeee754.Transcendental.cs:上記エンジンへの統一ディスパッチ層
  • UInt128.cs:内部消費者向けに10の累乗テーブル公開

テスト

  • Decimal32Tests.cs/Decimal64Tests.cs/Decimal128Tests.cs:関数ごとのExactBit特殊ケーステスト(NaN/±Infinity/±0/通常値)、許容度テスト、Intel readtest.inベクタ比較
  • DecimalIeee754GenericSurface.cs:汎用数学インターフェース検証ヘルパー
  • 計18,079テスト、全て合格

パフォーマンスへの影響

  • Decimal32の改善: double経由ではなくDiyFp128エンジンで評価するよう変更。従来のdouble経由ルートは1.6~2.8倍遅く、結果をDragon4精密拡張で再構築する複雑な処理が必要でした。エンジン直接丸めが高速です。
  • 精度維持: doubleの有効桁数(約15.9桁)ではDecimal64(16桁)およびDecimal128(34桁)の精度を保全できないため、

#131011 Implement IXCLRDataExceptionState state comparison

  • 作成者: @rcj1
  • 作成日時: 2026年07月18日 04:05:27(UTC)
  • マージ日時: 2026年07月20日 17:16:02(UTC)
  • ラベル: area-Diagnostics-cdac

概要

cDAC(Compact DAC)レガシーシムに IXCLRDataExceptionState.IsSameState / IsSameState2 APIを実装しました。例外アドレスと"first-chance"セマンティクスに基づいて例外状態を比較するための機能で、内部的に使用されていたAPIです。

変更内容

  • ClrDataExceptionState.cs: IsSameState/IsSameState2の比較ロジックを実装。DEBUG構成では従来のDAC実装との検証も含む
  • IXCLRData.cs: フラグ検証用のCLRDataExceptionSameFlag列挙型を追加(CLRDATA_EXSAME_SECOND_CHANCE/CLRDATA_EXSAME_FIRST_CHANCE)
  • ClrDataExceptionStateTests.cs: 状態比較とフラグ処理のユニットテストを拡充(219行追加)
  • ClrDataTask.cs / SOSDacImpl.IXCLRDataProcess.cs: 軽微な調整

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

⚠️ 公開API警告: CLRDataExceptionSameFlag列挙型が公開APIサーフェースとして追加されていますが、API approval issueが記載されていません。テスト専用の場合はinternal化を検討してください(Legacy csprojは既にInternalsVisibleToが設定済み)。


#131007 Use eng\common\dotnet.cmd instead of .\dotnet.cmd in crossgen2 comparison legs

  • 作成者: @jtschuster
  • 作成日時: 2026年07月18日 01:04:10(UTC)
  • マージ日時: 2026年07月20日 23:23:33(UTC)
  • ラベル: area-ReadyToRun

概要

crossgen2比較ビルドジョブで、.\dotnet.cmdの使用を.\eng\common\dotnet.cmdに変更することで、sdk.txtファイルのロック競合を解決します。200以上の並列実行時にdotnet.cmdがInitializeDotnetCLIでsdk.txtをロックするため、読み取り時にロック状態が発生していた問題を回避します。

変更内容

  • eng/pipelines/coreclr/templates/crossgen2-comparison-build-job.yml:
    • dotnet CLIの事前初期化ステップを削除(-12行)
    • Windowsの--dotnet引数を$(Build.SourcesDirectory)\dotnet.cmdから$(Build.SourcesDirectory)\eng\common\dotnet.cmdに変更(+1行)
    • eng\common\dotnet.ps1を使用することでsdk.txtへの直接的なアクセス競合を回避

パフォーマンスへの影響

改善: 200以上の並列crossgen2実行時にsdk.txtロック競合による失敗を排除。ビルド安定性が向上し、ジョブの失敗率低減が期待されます。

関連Issue

#131004 #131005

その他

  • 内部実装の変更(ビルドパイプラインのテンプレート修正)
  • Windows環境でのcrossgen2比較ジョブの信頼性向上を目的とした修正

#131006 Add System.Security.Cryptography Copilot instructions

概要

System.Security.Cryptographyに特化したGitHub Copilot指示ファイルを追加し、暗号化関連コードの開発規則をAIアシスタントに提供するドキュメント変更です。コード規則、Try* API の正確性チェック、機密データ処理、定時間比較、テストスキップの規則をカバーしています。

変更内容

  • .github/instructions/system-security-cryptography.instructions.md (新規追加、24行)
    • System.Security.Cryptography配下のコード生成時に適用するGitHub Copilot指示ファイル
    • 暗号化コード特有のコードスタイル、正確性チェック、機密データ処理ガイダンス
    • 定時間比較とバッファクリア/リターンに関するセキュリティ推奨事項
    • テストスキップ規則の記載

パフォーマンスへの影響

影響なし(ドキュメント変更のみ)

関連Issue

なし

その他

レビューコメント指摘事項: Copilotが指摘した低信頼度コメントとして、テストスキップガイダンスに改善提案があります。既存実装ではSkipTestExceptionが広く使用されており(例:CryptoConfigTests.cs、ECDsaCngImportExportTests.cs)、ガイダンスの修正提案:

  • 可能な場合は[ConditionalFact]/[ConditionalTheory]を優先
  • それが不可能な場合のみSkipTestExceptionを使用(テストが「スキップ」として報告される)

#130997 Add a limit on number of pending HTTP/2 PING ACKs

  • 作成者: @mrek-msft
  • 作成日時: 2026年07月17日 20:29:20(UTC)
  • マージ日時: 2026年07月20日 09:58:47(UTC)
  • ラベル: area-System.Net.Http

概要

HTTP/2接続でのPING ACK・SETTINGS ACK無限蓄積を防ぐため、キュー済みフレーム数に上限を設定しました。上限超過時は接続を中止します。

変更内容

  • Http2Connection.cs: キュー済みフレームカウンター追加、キューイングヘルパーメソッド実装、上限超過時の接続中止処理
  • Http2StreamWindowManager.cs: RTT推定用PING送信パスを新規キューイングヘルパーへルーティング
  • Strings.resx: キューイング上限到達時の新規エラーメッセージ追加
  • SocketsHttpHandlerTest.cs: SETTINGS/PINGキューイング上限動作の機能テスト追加(クライアント書き込みブロック用テストストリーム含む)

パフォーマンスへの影響

影響なし

関連Issue

#130997

その他

この変更はSystem.Net.Http内のpublic APIには影響しない内部実装の改善です。悪意あるまたは障害のあるサーバーからのDoS攻撃防止を目的としており、通常の正常なHTTP/2通信には影響しません。


#130996 Add method extent enumeration support to legacy cDAC

  • 作成者: @Copilot
  • 作成日時: 2026年07月17日 19:56:45(UTC)
  • マージ日時: 2026年07月20日 21:59:53(UTC)
  • ラベル: area-Diagnostics-cdac

概要

legacy cDAC(Compact Debugging Architecture)に対して、メソッド範囲(method extent)の列挙機能を追加するPull Request。IXCLRDataMethodInstanceインターフェースのStartEnumExtents、EnumExtent、EndEnumExtentsメソッドを実装し、デバッガがメソッドの物理的な範囲情報にアクセスできるようにしています。

変更内容

  • ClrDataMethodInstance.cs: StartEnumExtents、EnumExtent、EndEnumExtentsメソッドを新規実装(+166行)
  • IXCLRData.cs: メソッド範囲列挙に関連するインターフェース定義を拡張(+7行)
  • StackWalkDumpTests.cs: メソッド範囲列挙機能を検証するテストケースを追加(+56行)

パフォーマンスへの影響

影響なし

関連Issue

#130996

その他

このPull Requestは公開API(IXCLRDataMethodInstance)の拡張であり、デバッガツールの機能向上を目的とした変更です。Copilotによる自動レビューは組織の請求設定の制限により実施されていません。


#130970 Enable previously suppressed tests on CoreCLR browser

概要

CoreCLRブラウザ/WASM上で動作するランタイムテストについて、ActiveIssue条件を絞り込み、以前は抑制されていたテストを有効化するもの。Monoやその他の構成では必要に応じて抑制を維持しながら、CoreCLRブラウザ上でのSIMD、JIT、GC、ハードウェア組み込み関数、基本サービステストを実行可能にする。

変更内容

  • PlatformDetection.cs: IsCoreCLR/IsNotCoreCLRヘルパーを追加し、共有テストライブラリで実行時の判定を可能に
  • JITテスト: Matrix4x4.cs、HwiSideEffects.cs、switchinfinally.cs、Runtime_64125テンプレート等でActiveIssue述語をMonoブラウザのみまたはインタープリタのみに絞り込み
  • GCテスト: 271010.csでブラウザ除外述語に変更
  • 基本サービステスト: ManagedPointers.cs、Arrays.csでブラウザ抑制をMonoブラウザのみに分割
  • StackallocBlkTests.cs: 新しいPlatformDetection.IsNotCoreCLRヘルパーを使用、Mono/NativeAOTで抑制を維持しつつCoreClrデスクトップ/ブラウザで有効化

パフォーマンスへの影響

影響なし(テスト対象範囲の拡大のみで、実装の最適化なし)

関連Issue

なし

その他

テスト結果: 5,654総実行、5,643成功、0失敗、11スキップ。上流の回帰(TestConvertFromIntegral、b05617)は本変更と無関係。Runtime_64125 T4テンプレートは生成されたソースと同期化。


#130942 [cDAC] Mark unused APIs E_NOTIMPL and remove fallback

概要

cDAC(Component Debugging for Access Control)のレガシDAC委譲機能を段階的に廃止するため、選定された複数のラッパーメソッドをレガシDAC実装へのフォールバック委譲から直接E_NOTIMPLを返すように変更しました。これにより、cDACがネイティブに対応していないAPIはレガシDACへ委譲せず明示的に未実装を返すようになります。

変更内容

  • SOSDacImpl.IXCLRDataProcess.cs: タスク・アセンブリ・通知関連など複数のIXCLRDataProcess APIのレガシDAC委譲を廃止しE_NOTIMPLを返すように変更
  • SOSDacImpl.cs: アセンブリロケーション、DACモジュールハンドル、GCハンドル列挙など選定されたISOSDacInterface APIのレガシDAC委譲を廃止
  • ClrDataTask.cs: 複数のIXCLRDataTask APIのレガシ委譲を無効化
  • ClrDataStackWalk.cs: GetFrameType、SetContext、SetContext2などのIXCLRDataStackWalk APIの委譲を無効化
  • ClrDataModule.cs: 列挙・ルックアップ関連のIXCLRDataModule APIの委譲を廃止
  • ClrDataMethodInstance.cs / ClrDataMethodDefinition.cs: 複数のIXCLRDataMethodInstance/IXCLRDataMethodDefinition APIの委譲を無効化
  • ClrDataFrame.cs: IXCLRDataFrame/IXCLRDataFrame2 APIの委譲を無効化し、不要になったIXCLRDataFrame2キャッシュフィールドを削除
  • ClrDataAppDomain.cs: 複数のIXCLRDataAppDomain APIの委譲を無効化

これは内部実装(Microsoft.Diagnostics.DataContractReader.Legacy名前空間)の変更で、公開APIレベルの破壊的変更ではありませんが、レガシDAC委譲に依存していたクライアントはE_NOTIMPLエラーを受け取るようになります。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはレガシDAC実装への依存を段階的に削減し、cDAC単独の対応ケースに絞るリファクタリング活動の一部です。既存のcDAC実装は保持されるため、実装済みAPIの動作に変更はありません。


#130933 Embed debug info in host object libraries to avoid LNK4099

  • 作成者: @elinor-fung
  • 作成日時: 2026年07月16日 22:51:17(UTC)
  • マージ日時: 2026年07月20日 17:44:21(UTC)
  • ラベル: area-Host

概要

libnethost.libとlibhostfxr.libに埋め込まれたオブジェクトライブラリが外部のvc140.pdbを参照していため、これらのスタティックライブラリをリンクするコンシューマー側でLNK4099警告が発生していた。この問題を解決するため、オブジェクトライブラリをコンパイル時に埋め込みデバッグ情報フラグ(/Z7)を使用してコンパイルし、NativeAOT Runtime.GC.*およびcDACディスクリプタと同じアプローチに統一する。

変更内容

  • src/native/corehost/CMakeLists.txt: corehost関連のビルド設定に埋め込みデバッグ情報フラグ(/Z7)を追加(+7行)
  • src/native/corehost/hostmisc/CMakeLists.txt: hostmisc関連のビルド設定に埋め込みデバッグ情報フラグ(/Z7)を追加(+12行)

変更はWindows環境でのオブジェクトライブラリコンパイル時にデバッグ情報をオブジェクトファイルに直接埋め込むようにするもの。これにより、外部PDBファイルへの依存が解消され、LNK4099警告が発生しなくなる。

パフォーマンスへの影響

影響なし

関連Issue

#116527

その他

  • この変更はapphost、hostfxr、hostpolicyなどのコアホストコンポーネントに適用される
  • 既にNativeAOT Runtime.GC.*やcDACディスクリプタで採用されている手法との統一化
  • ビルド出力(オブジェクトファイルサイズ)への影響の有無は不明

#130912 Pause scheduled runs for gc-standalone pipeline

概要

CoreCLR gc-standalone パイプラインの夜間自動実行をスケジュール定義のコメントアウトにより一時停止するもの。調査中の問題が解決するまでの間、不要なCI実行を削減するための運用的な変更です。パイプライン定義自体は保持され、手動実行とスケジュール再有効化(コメント解除)は引き続き可能です。

変更内容

  • eng/pipelines/coreclr/gc-standalone.yml: schedules: cron ブロックをコメントアウト。再有効化方法を説明するインラインコメントを追加。

パフォーマンスへの影響

影響なし。(パイプライン実行スケジュールの制御のため、ランタイムの機能やビルド/テストロジックに変更はありません)

関連Issue

なし

その他

  • リスク: 低。ビルド・テストロジックは変更されず、スケジュール機能のみ無効化。手動実行は利用可能で、ロールバックは簡単です。
  • テスト: 該当なし。パイプラインスケジュール メタデータの更新のみ。
  • 顧客への影響: 調査中の問題のため、応答不可能なパイプラインの継続的な夜間実行を回避し、CI消費の削減と通知ノイズの低減を実現します。

#130901 Add CPU feature detection using elf_aux_info

概要

FreeBSD ARM64 環境での AOT スモークテスト失敗を修正するため、elf_aux_info を使用した CPU 機能検出を追加します。.NET 11.0 での回帰(#118101に由来)を解決し、AdvSimd 命令セットの検出を正確に行えるようにします。

変更内容

  • src/native/minipal/cpufeatures.c: CPU 機能検出ロジックを改善し、elf_aux_info API を使用した ARM64 向けの検出メカニズムを追加(+17/-9)
  • src/native/minipal/configure.cmake: ビルド設定に elf_aux_info 関連の構成を追加(+1/-0)
  • src/native/minipal/minipalconfig.h.in: コンパイル時の設定定義を追加(+1/-0)

パフォーマンスへの影響

影響なし(CPU 機能検出は初期化時の一度限りの処理)

関連Issue

#130901

その他

  • FreeBSD ARM64 プラットフォーム固有の修正です
  • エラーメッセージ「The current CPU is missing one or more of the following instruction sets: AdvSimd」が表示されていた問題が解決されます
  • minipal(最小 PAL)はプラットフォーム抽象化レイヤーであり、ランタイムの内部実装に該当します

#130877 Async Profiler: Optimize async dispatcher allocation.

概要

非プーリングの Task/ValueTask async パス(async profiler 有効時)における per-suspension dispatcher 割り当てを削除し、state-machine box 自体が dispatcher として機能するように最適化。状態マシンボックスが IAsyncStateMachineDispatcher を実装する AsyncProfilerAsyncStateMachineBox<TStateMachine> に統合され、suspension ごとの追加割り当てがなくなります。

変更内容

  • AsyncTaskMethodBuilderT.cs: AsyncProfilerAsyncStateMachineBox<TStateMachine> を新規導入。box を割り当てる際に dispatcher 状態を保持し、MoveNextAsDispatcher パスで処理。profiler 有効時にこの box が割り当てられるため追加割り当てなし
  • AsyncStateMachineDispatcher.cs: dispatcher 状態追跡とセグメントごと ID 管理を refactor。per-segment で ID をオンデマンド生成・リセット、Suspend/Complete イベント発行ロジック更新
  • AsyncProfiler.cs: dispatcher ID 取得ロジック統一、leaf 検出時の callstack-walk 処理更新、per-segment flattening 対応
  • TaskAwaiter.cs: profiler 有効時の await 継続 hook アップで dispatcher 作成ロジック調整
  • AsyncProfiler.CoreCLR.cs / AsyncHelpers.CoreCLR.cs: runtime-async (V2) dispatcher の cached ID 取得・設定を統合
  • テスト: AsyncProfilerV1Tests.cs に per-segment flattening (StateMachineAsync_NestedChildResume_FlattensPerSegment)、inline/pooled re-suspend parity、single-await lifecycle parity を検証。AsyncProfilerTests.cs に共有 assertion helper 追加

パフォーマンスへの影響

改善: 非プーリング async path で profiler 有効時、per-suspension dispatcher 割り当てがゼロに。従来は suspension ごとに AsyncStateMachineDispatcher wrapper が割り当てられていたが、状態マシンボックスが既に割り当てられるため追加のヒープ割り当てなし。dispatcher frame はスタックベース、ID mint は interlocked increment のため追加ヒープトラフィックなし。

懸念点なし: プーリング(opt-in)は従来通り wrapper dispatcher 使用。完全同期 async メソッドは box 割り当てなし。すべて async profiler フラグで制御。

関連Issue

#130877

その他

  • 互換性: NativeAOT ではゼロ影響(merged box は NativeAOT に含まれない)。R2R SPC では generic type が NoInlining factory 経由でのみ到達するため JIT 時に state-machine-type ごとにオンデマンド生成。profiler 有効時のみ JIT コンパイル、フラグで DCE 対象。公開 API 変更なし。すべて内部 profiler 型
  • DebugFinalizableAsyncStateMachineBox<T> を profiler box から継承、TPL async-method-completion 追跡有効時に優先割り当て。profiler と completion tracking 同時有効時に単一 box で両方の機能提供

#130867 [release/10.0] Fix tree type in impStoreNullableFields and impLoadNullableFields for simds

概要

.NET 9で導入されたバグの修正。Nullable<T>においてTがSIMD型(Vector2?、Vector3?、Vector4?など)である場合、型情報が正しく処理されず、MinOpts(デバッグビルド)で無効なIRが生成され、実行時にInvalidProgramExceptionが発生していました。JITコンパイラの型マッピング処理を修正し、正しくTYP_SIMD*型として扱うようにしました。

変更内容

  • src/coreclr/jit/importer.cpp: impStoreNullableFields/impLoadNullableFields内で、型マッピング時にJITtype2varTypeからTypeHandleToVarTypeに変更。SIMD型を正確に識別し、値フィールドを正しい型として処理するように修正。
  • 回帰テスト追加: Runtime_124425.csとRuntime_124425.csprojで、null値のNullable<Vector2/Vector3/Vector4>のキャストをMinOptsで実行し、InvalidProgramExceptionではなく期待するNullReferenceExceptionが発生することを検証。

パフォーマンスへの影響

影響なし

関連Issue

#124425、#104931

その他

  • 本PRはrelease/10.0ブランチへの#124432のバックポート
  • .NET 9で導入された回帰で、デバッグビルドのみで現象が発生(最適化ビルドは回避)
  • 修正内容は局所的で低リスク。既に他の箇所で正しく使用されている同じヘルパー関数に置き換えた

#130854 [Apple] Preserve Norwegian locale names in hybrid globalization

概要

Apple環境のハイブリッド国際化で、ノルウェー語ロケール(no/no-NO)がFoundationによってnbに正規化されるのを防ぎ、要求されたカルチャ名とISO言語コードを保持するように修正。リソースルックアップの親フォールバック(no-NO → no)も保持され、Appleロケール言語コード解決の一元化と国際化テスト範囲の拡張が行われています。

変更内容

  • pal_locale.m: Apple環境での言語コード/ロケール識別子の処理を一元化。Foundationがnbに正規化する際、noを保持するためのヘルパー関数を追加。ISO639 2文字・3文字言語コード照会と親カルチャ計算に保持された言語コードを使用。
  • CultureInfoCtor.cs: CultureInfo("no")およびCultureInfo("no-NO")の言語コード、名前、親カルチャの期待値を検証するノルウェー語リグレッション テストを追加。

パフォーマンスへの影響

影響なし

関連Issue

#112249

その他

テスト実績:

  • CoreCLR iOS Simulator(ネイティブ/runtime-pack)ビルド成功
  • ノルウェー語カルチャリグレッション テスト:2合格、0失敗
  • CultureInfoコンストラクタマトリックス:348合格、0失敗
  • GetCultureInfo正規化マトリックス:22合格、0失敗

本変更は内部実装(ネイティブPALおよびテストコード)の修正であり、公開APIの互換性に影響はありません。


#130843 Fix three xarch lowering correctness/invariant issues

概要

xarch JIT lowering における3つの独立した正確性/不変量の問題を修正します。各修正は個別のコミットで提供され、対応するJitBlue回帰テストが含まれています。

変更内容

  • src/coreclr/jit/lowerxarch.cpp: 3つの修正を実装

    • LowerHWIntrinsicCmpOpのマスク反転でmaskBaseTypeをTryInvertMaskに正しく渡す(#130844)
    • TryLowerAndOpToExtractLowestSetBitでopNodeではなくandNodeのGTF_SET_FLAGSをチェック(#130845)
    • NI_X86Base_Insertでop2が既に含有されている場合、reg-optionalフラグを追加しない(#130846)
  • 回帰テスト: 3つの新規JitBlue回帰テストと対応するプロジェクト設定ファイル

    • Runtime_130844: マスク比較でAllBitsSetと異なる要素解釈をカバー
    • Runtime_130845: x & (-x)パターンのAND/NEG低下処理をテスト
    • Runtime_130846: INSERTPS op2が含有されたゼロベクトルの動作をテスト

パフォーマンスへの影響

影響なし。これらは内部実装の正確性修正であり、実行時性能には影響しません。

関連Issue

#130844、#130845、#130846

その他

  • 全ての修正は潜在的なものであり、非AVX512ハードウェアでは表面化していません。テストはAVX512 CIで実行カバレッジ用です。
  • #130844はAVX512専用(EVEXマスク + KORTEST)の不具合です。
  • #130845は低下順序の問題で、AND のGTF_SET_FLAGSが後で設定されるため実装順序に依存します。
  • #130846は reg-optionalフラグが実行時には不活性であるため、デフォルトビルドではアサートが発生しませんが、一時的な計装により確認されています。

#130822 [RyuJIT Wasm] SIMD Element-Wise Loads and Stores

概要

WebAssembly SIMD(PackedSimd)の要素単位ロード/ストア操作に対するRyuJIT コンパイラサポートを実装します。LoadScalarAndInsertおよびStoreSelectedScalarなどのレーン固有操作をメモリ操作として分類し、ジャンプテーブルベースの即値処理を拡張することで、テーブル駆動型のコード生成を実現しています。

変更内容

  • hwintrinsic.h: HW_Flag_HasImmediateOperandフラグを追加し、WASM上で即値検出をカテゴリベースから フラグベースに切り替え
  • hwintrinsiclistwasm.h: PackedSimd load/store lane操作(LoadScalarAndInsert、StoreSelectedScalar)をHW_Category_MemoryLoad/Storeに再分類し、WASM SIMDオペコードにマッピング
  • hwintrinsiccodegenwasm.cpp: HW_Category_MemoryLoad/Storeのテーブル駆動型出力と、レーン memarg形式(emitIns_MemargLane)のジャンプテーブル フォールバック処理を追加
  • lowerwasm.cpp: HasImmediateOperandフラグを用いてコンテインメント/ロワリング判定を実施
  • gentree.cpp: WASM ハードウェア組み込みのOperIsMemoryLoad/Store分類を有効化
  • codegenwasm.cpp: 間接SIMD16ストアのNYI(Not Yet Implemented)ガードを削除
  • tests/JIT/HardwareIntrinsics/Wasm/PackedSimd/PackedSimdTests.cs: 要素単位ロード/ストア操作のテストケースを追加(42行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更は内部実装(JIT コンパイラのロワリング/コード生成パイプライン)に限定され、公開APIの変更はありません。WASM SIMD操作の効率的なコンパイルを実現するための最適化です。


#130802 Implement RFC 9659 compliance for "zstd" HttpContent compression

  • 作成者: @rzikm
  • 作成日時: 2026年07月15日 17:36:32(UTC)
  • マージ日時: 2026年07月20日 16:01:44(UTC)
  • ラベル: area-System.Net.Http

概要

RFC 9659準拠の"zstd"圧縮を実装するため、ZstandardCompressedContentがHTTPリクエスト本文として生成する圧縮データのウィンドウサイズを制限します。CompressionLevel.SmallestSize使用時に明示的なZstandardCompressionOptionsでWindowLog2 = 23(8 MiB最大ウィンドウ)に制限し、RFC 9659準拠の内容を保証します。

変更内容

  • ZstandardCompressedContent.cs: CompressionLevel.SmallestSize時にWindowLog2 = 23を指定した明示的なZstandardCompressionOptionsを使用するよう変更
  • CompressedContentTest.NonBrowser.cs: Brotli/Zstandard機能テストを全CompressionLevel値に対応するよう拡張し、zstd出力がMaxWindowLog2 = 23でデコード可能であることを検証

パフォーマンスへの影響

CompressionLevel.SmallestSize使用時にウィンドウサイズが制限されることで、最大圧縮率は低下する可能性があります。ただし、RFC 9659準拠を保証するための意図的な制限です。

関連Issue

#130948

その他

本PRは前回のPR #130082のフォローアップです。ユーザーが提供するZstandardCompressionOptionsに対する処理方針は未解決の質問として記載されています。


#130801 Remove dead/unreachable code in several JIT phases

概要

JITコンパイラの複数のフェーズにおいて、デッドコード(到達不可能・未使用のコード)を4つ削除するクリーンアップPRです。各削除は独立した変更で、動作への影響はありません。

具体的には以下を削除:

  1. Span半定数Equalsの常にfalseの参照等価性チェック - _reference(TYP_BYREF)と文字列オブジェクトハンドル(TYP_REF)の比較は常にfalseで到達不可
  2. MorphStructFieldAddressの未完了isSpanLengthブロック - 計算結果が未使用で、実装が途中で放置されていた
  3. 未使用のoptCSE_MaskHelper - MaskDataWalkerに置き換わった遺物
  4. 有理化フェーズの到達不可XnorMask処理 - NI_AVX512_XnorMaskは有理化より後の低下化フェーズでのみ生成されるため、このコードは実行されない

変更内容

  • src/coreclr/jit/compiler.h: optCSE_MaskHelper宣言を削除(-4行)
  • src/coreclr/jit/importervectorization.cpp: span比較の常にfalseな参照等価性チェックを削除(-10行)
  • src/coreclr/jit/lclmorph.cpp: IsSpanLengthブロック内のno-op処理を削除(-12行、+4行)
  • src/coreclr/jit/optcse.cpp: optCSE_MaskHelper実装を削除(-9行)
  • src/coreclr/jit/rationalize.cpp: XnorMask有理化ロジック削除(-20行)

パフォーマンスへの影響

影響なし。デッドコード削除のため、バイナリサイズが若干削減される可能性があります。

関連Issue

#117431(Span高速パス追加時の経緯) #81055(Span.Length負でない性質に関連)

その他

  • jit-formatは正常(フォーマット違反なし)
  • PR説明はGitHub Copilotの支援で作成

#130754 [release/10.0] Ignore PhiArgs without matching actual preds

概要

PHI(Phi)ノードの無効な引数がアサーション伝播コードによって誤って処理され、値がNULLではないと不正に想定される問題を修正。コンパイラがstrVal ?? value.ToString();のようなコードを不正にコンパイルし、実行時に予期しない挙動を引き起こていました。本修正は#125093のrelease/10.0へのバックポートおよび関連の#125222を含みます。

変更内容

  • src/coreclr/jit/assertionprop.cpp: optVisitReachingAssertions関数を修正し、存在しないフロー辺に対応する無効なPHI引数をフィルタリング処理を追加(+101行)
  • src/tests/JIT/Regression/JitBlue/Runtime_124507/: リグレッションテストケースを新規追加。テストはPHI引数とアサーション伝播の相互作用を検証

パフォーマンスへの影響

影響なし。本修正はバグ修正のみで、パフォーマンスを意図した改善を含みません。

関連Issue

その他

  • リグレッション: .NET 10での#111985により導入(nullチェック最適化強化)
  • リスク評価: 低リスク。本修正はmain ブランチで2024年3月から存在する変更のバックポート
  • 検証: release/10.0の最新コードで問題の再現を確認、修正後に問題が解決されることを確認済み

#130691 [iOS] Optimize CompareStringNative performance

概要

iOS上での文字列ソート性能最適化。CompareStringNativeの冗長なstringByFoldingWithOptions呼び出しを削除。compare:options:range:locale:API(NSLiteralSearch使用)がNSCaseInsensitiveSearch、NSDiacriticInsensitiveSearch、NSWidthInsensitiveSearchを事前に合成された文字列に対して既に処理しているため、フォリング処理は不要。IgnoreCase、IgnoreDiacritics、IgnoreWidthなど複数の比較オプションの組み合わせを含む20個のエッジケーステストで検証済み。

変更内容

  • src/native/libs/System.Globalization.Native/pal_collation.m: CompareStringNativeから冗長なstringByFoldingWithOptions呼び出しを削除(7行削減)

パフォーマンスへの影響

改善:stringByFoldingWithOptionsがネイティブ時間の約9%を消費していたため、その削除によりCompareStringNativeのパフォーマンスが向上。特にiOSでの文字列ソートが高速化される(具体的な数値は提供されていません)。

関連Issue

#121204

その他

  • 元の実装(PR #86895, 2023年5月)はフォリング処理なしで動作していた
  • フォリング処理はPR #96002(IgnoreKanaType対応、2023年12月)で導入されたが、構造的なリファクタリングの一環であり実際には不要だったもの
  • テスト検証:IgnoreCase、IgnoreNonSpace(ダイアクリティクス:é/e、ñ/n、À/A、結合文字)、IgnoreWidth(全角/半角カタカナ)、濁点(ガ/カ)、オプション組み合わせをカバー

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

概要

dotnet/dotnetリポジトリからの定期的なコードフロー更新です。release/10.0ブランチに対して、VMR(Virtual Monolithic Repository)経由で複数のリポジトリ(aspnetcore、runtime、sdk、source-build-assets、templating)からのソースコード変更と依存関係の更新がもたらされています。

変更内容

  • NuGet.config: パッケージソース設定の更新(1行削除、1行追加)
  • eng/Version.Details.props: バージョン管理ファイルの更新(29行削除、29行追加)
  • eng/Version.Details.xml: 依存関係バージョン情報の更新(69行削除、69行追加)
  • global.json: グローバル設定の更新(3行削除、3行追加)

主な依存関係更新:

  • Microsoft.CodeAnalysis系: 5.0.0-2.26358.108 → 5.0.0-2.26360.118
  • Microsoft.DotNet.Arcade.Sdk他ビルドツール: 10.0.0-beta.26358.108 → 10.0.0-beta.26360.118
  • Microsoft.DotNet.Cecil: 0.11.5-alpha.26358.108 → 0.11.5-alpha.26360.118
  • NuGet.Frameworks/Packaging/ProjectModel/Versioning: 7.0.3-rc.35908 → 7.0.3-rc.36118
  • その他: System.Text.Json、System.Reflection.Metadata等が10.0.10で統一

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは自動化されたコードフロー機構(codeflow PR)による定期更新です。dotnet-maestro[bot]により自動生成され、複数リポジトリの変更を統合します。関連する各リポジトリの差分確認にはdarcコマンドが利用できます。


#130415 Escape C# keyword identifiers in OptionsValidator generated code

概要

[OptionsValidator]ソースジェネレータが、C#キーワードをプロパティ名やモデル型名として使用する場合(例:public string? @class { get; set; })に、生成されたバリデータコードでキーワードをエスケープしていなかった問題を修正しました。修正前はoptions.classが生成されてコンパイルエラー(CS1520/CS0501/CS0246)が発生していました。

変更内容

  • Emitter.cs: メンバーアクセス位置でのキーワード識別子をエスケープ。SyntaxFacts.GetKeywordKind/GetContextualKeywordKindでキーワード判定し、必要に応じて@プレフィックスを追加(TryValidateValue、推移的検証、列挙検証、CompareAttribute置換の4箇所)
  • Parser.cs: GetFQNメソッドでWithMiscellaneousOptionsからAddMiscellaneousOptionsに変更し、EscapeKeywordIdentifiersフラグを保持するように修正
  • テストクラス追加: KeywordNames.cs で全4つの生成パス(検証属性、Compare置換、ValidateObjectMembers、ValidateEnumeratedItems)でキーワード名を検証
  • テストコード追加: KeywordNamesTests.cs で生成されたバリデータの動作確認(失敗報告と成功パス)
  • ベースラインを更新: NetCoreApp/NetFX用Validators.g.csで新規テストケースを追加

パフォーマンスへの影響

影響なし

関連Issue

#130318

その他

  • キーワードではないメンバー/型の出力は変わりません。既存テストクラスから再生成したバイナリは変更前後で同一です
  • System.Text.Jsonジェネレータの実装(MemberNameNeedsAtSign)と同じアプローチを採用しており、一貫性があります

#130382 Disable large alloc tests on 32b targets

概要

32ビットプロセスで不安定に発生する大規模メモリ割り当てテストを無効化するPRです。PR #123248でのリファクタリング中に誤って削除された32ビットターゲット向けのスキップ処理を復活させ、Apple mobile向けのスキップも追加することで、テストの信頼性を向上させています。

変更内容

  • src/tests/JIT/jit64/regress/vsw/373472/test.il: PlatformDetection.Is32BitProcessに対するActiveIssueスキップ属性を追加し、既存のApple mobile向けスキップと並行させます。
  • src/tests/JIT/jit64/regress/vsw/373472/test.cs: テストスキップ条件をIsArmProcessからIs32BitProcessに変更し、IsAppleMobileでのスキップも追加します。

パフォーマンスへの影響

影響なし(テストの信頼性向上のための変更で、実装機能のパフォーマンスに直接の影響はありません)

関連Issue

#127128、#123248

その他

このPRは大規模メモリ割り当てテストの不安定性に対処する修正で、JITテスト(回帰テスト)に限定された変更です。32ビットプロセスとApple mobileプラットフォームでの割り当てリソースの制約が主な要因と推定されます。


#130324 [release/10.0] JIT: fix widened IV init placed in unreachable block

概要

IV(Induction Variable)ウィデニング最適化がJITコンパイル時に到達不可能ブロックへウィデニングされたIVの初期化を配置する問題を修正しました。redundant branch opts(冗長分岐最適化)がジャンプスレッド化で到達不可能にしたブロックに初期化コードが生成され、後のflow-graph passでそのデッドブロックが削除される際にウィデニングされたIVが初期化されず、ループが誤った結果を返すというレグレッション(.NET 9で導入)を修正しています。

変更内容

  • src/coreclr/jit/inductionvariableopts.cpp: ウィデニングされたIV初期化の配置ロジックを修正(5行追加、1行削除)
  • src/tests/JIT/Regression/JitBlue/Runtime_130189/Runtime_130189.cs: 回帰テスト Runtime_130189 を追加
  • src/tests/JIT/Regression/JitBlue/Runtime_130189/Runtime_130189.csproj: テストプロジェクト設定ファイルを追加

パフォーマンスへの影響

影響なし。本修正は正しいコード生成を保証するための修正であり、パフォーマンスの改善や低下は報告されていません。

関連Issue

#130189(本修正の対象となった誤ったコード生成) #130190(release/10.0ブランチへのバックポート元のPR)

その他

  • リスク評価: Low
  • 内部テストで発見された問題
  • テストはこの修正なしでは失敗し、修正により成功することが確認されている

#130322 [release/10.0] JIT: don't propagate promoted struct LCL_VAR into FIELD_LIST uses

概要

.NET 10.0向けのバックポート。StructLayout(LayoutKind.Explicit)で SIMD フィールドと通常フィールドをエイリアスする構造体が、プロモートされた構造体のLCL_VARをFIELD_LISTの使用箇所に伝播されることで、Release/最適化ビルドでLinearScan::processBlockStartLocations内でセグメンテーション違反を引き起こす問題を修正します(#128373)。

変更内容

  • src/coreclr/jit/assertionprop.cpp (+8): Assertion propagation時に構造体フィールド伝播の制限を追加
  • src/coreclr/jit/forwardsub.cpp (+13): Forward substitution時にプロモートされた構造体の伝播を防止
  • src/coreclr/jit/morph.cpp (+15): IR morphing時にFIELD_LIST使用でプロモートされた構造体変数の伝播を抑止
  • 回帰テスト追加: Runtime_128373テスト(修正前はセグメンテーション違反、修正後は成功)

パフォーマンスへの影響

SPMI差分が非常に少ないことから、パフォーマンスへの悪影響は最小限と予想されます。影響なし(期待)。

関連Issue

#128373、#128375

その他

  • 顧客報告によるクラッシュ修正
  • .NET 8では再現しない(.NET 9.x以降での回帰)
  • リスクレベル: 低(エクスプリシット構造体レイアウトを使用した特殊なシナリオのみ)

#129592 [release/10.0] Fix LoaderHeap's free list growing more than expected

概要

LoaderHeapのフリーリストが予想以上に増加する回帰問題を修正します。高ボリュームなジェネリックメソッド型初期化時に複数スレッドが競合して冗長なInstantiatedMethodDescを割り当て・破棄することで、フリーリストが膨張し、その後の割り当てが遅くなるという問題が発生していました(テストスイート実行時に Linux で 6~8倍遅化)。この修正により、スレッドセーフに同一型初期化を一度だけ実行するようにしました。

変更内容

src/coreclr/vm/genmeth.cpp

  • 新しいヘルパー関数SatisfiesMethodConstraintsForInstantiationを追加し、明示的な型引数に対してジェネリックメソッド制約を評価
  • InstantiatedMethodDesc::NewInstantiatedMethodDescを改修し、m_InstMethodHashTableCrstロックをルックアップから作成・挿入まで保持し続けることで、1つの型初期化に対して1スレッドのみがMethodDescを割り当て・登録するようにしました
  • MethodDesc::SatisfiesMethodConstraintsをリファクタリングして新しいヘルパーに委譲

パフォーマンスへの影響

改善あり。高ボリュームなメソッド型初期化下での性能低下を解消。顧客報告のベンチマークテストで確認済み(具体的な改善率は記載されていません)。ロック保持時間を最適化(重複ロック取得/解放を排除)することで、フリーリストの無駄な増加を防ぎます。

関連Issue

#123124 - 元の回帰報告 #129203 - main ブランチでのオリジナル修正(本 PR はこれの backport)

その他

  • リスク評価: 中/低
  • main ブランチで1週間検証済みで、関連する問題報告なし
  • 本 PR は release/10.0 ブランチへの backport です
  • 高ボリュームなメソッド型初期化専用のテストは現在ないため、今後の追加を検討する価値あり

#128211 Fix broken "See also" link in CoreCLR iOS build docs

概要

CoreCLR iOS ビルドドキュメント内の壊れたクロスリファレンスリンクを修正しました。docs/workflow/building/coreclr/ios.md の "See also" セクションにおいて、存在しない ../macos.md へのリンクを、同じディレクトリ内の README.md(CoreCLR ビルドガイド)に修正しています。

変更内容

  • docs/workflow/building/coreclr/ios.md: "See also" セクション内のリンクを ../macos.md から README.md に更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • ドキュメントのみの修正(コード変更なし)
  • 検証済み:修正前のリンク先である macos.md が実際に存在しないことを確認
  • 修正後のリンク先である README.md が存在し、macOS ビルドガイダンスを含むことを確認
  • リポジトリ内の他の macos.md への参照を確認済み:該当なし

目次