注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #131086 Fix browser-wasm CoreCLR artifact collisions
- #131084 Add XML doc comments for the IEEE 754 decimal types and value properties
- #131075 Revert WinZipAesStreamFuzzer, ZipCryptoStreamFuzzer
- #131070 Remove larger test length for Iri_ExpandingContents_TestData
- #131061 [main] Update dependencies from dotnet/xharness
- #131058 [mono][wasm] Fix UnmanagedCallersOnly exports with more than 8 arguments
- #131055 Emit SupportedOSPlatform("browser") on generated JSImport partials
- #131042 Fix publishing of ILLink test results
- #131038 [release/10.0] [mono][wasm] Fix AOT + BlazorWebAssemblyLazyLoad startup crash
- #131035 Update code review skill guidelines for suggestions formatting
- #131019 Implement the transcendental functions for the IEEE 754 decimal types
- #131011 Implement IXCLRDataExceptionState state comparison
- #131007 Use eng\common\dotnet.cmd instead of .\dotnet.cmd in crossgen2 comparison legs
- #131006 Add System.Security.Cryptography Copilot instructions
- #130997 Add a limit on number of pending HTTP/2 PING ACKs
- #130996 Add method extent enumeration support to legacy cDAC
- #130970 Enable previously suppressed tests on CoreCLR browser
- #130942 [cDAC] Mark unused APIs E_NOTIMPL and remove fallback
- #130933 Embed debug info in host object libraries to avoid LNK4099
- #130912 Pause scheduled runs for gc-standalone pipeline
- #130901 Add CPU feature detection using elf_aux_info
- #130877 Async Profiler: Optimize async dispatcher allocation.
- #130867 [release/10.0] Fix tree type in impStoreNullableFields and impLoadNullableFields for simds
- #130854 [Apple] Preserve Norwegian locale names in hybrid globalization
- #130843 Fix three xarch lowering correctness/invariant issues
- #130822 [RyuJIT Wasm] SIMD Element-Wise Loads and Stores
- #130802 Implement RFC 9659 compliance for "zstd" HttpContent compression
- #130801 Remove dead/unreachable code in several JIT phases
- #130754 [release/10.0] Ignore PhiArgs without matching actual preds
- #130691 [iOS] Optimize CompareStringNative performance
- #130421 [release/10.0] Source code updates from dotnet/dotnet
- #130415 Escape C# keyword identifiers in OptionsValidator generated code
- #130382 Disable large alloc tests on 32b targets
- #130324 [release/10.0] JIT: fix widened IV init placed in unreachable block
- #130322 [release/10.0] JIT: don't propagate promoted struct LCL_VAR into FIELD_LIST uses
- #129592 [release/10.0] Fix LoaderHeap's free list growing more than expected
- #128211 Fix broken "See also" link in CoreCLR iOS build docs
#131086 Fix browser-wasm CoreCLR artifact collisions
- 作成者: @radekdoulik
- 作成日時: 2026年07月20日 15:09:35(UTC)
- マージ日時: 2026年07月20日 18:01:06(UTC)
- ラベル: arch-wasm area-Infrastructure-coreclr
概要
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
- 作成者: @tannergooding
- 作成日時: 2026年07月20日 15:01:16(UTC)
- マージ日時: 2026年07月20日 22:05:40(UTC)
- ラベル: area-System.Numerics
概要
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
- 作成者: @MihaZupan
- 作成日時: 2026年07月20日 12:11:30(UTC)
- マージ日時: 2026年07月20日 14:22:02(UTC)
- ラベル: area-System.IO.Compression
概要
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
その他
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
その他
なし
#131061 [main] Update dependencies from dotnet/xharness
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年07月20日 05:01:40(UTC)
- マージ日時: 2026年07月20日 13:58:19(UTC)
- ラベル: area-codeflow
概要
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
- 作成者: @lewing
- 作成日時: 2026年07月20日 02:18:50(UTC)
- マージ日時: 2026年07月20日 18:29:28(UTC)
- ラベル: arch-wasm area-Codegen-meta-mono
概要
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
その他
- 修正範囲は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
- 作成者: @lewing
- 作成日時: 2026年07月20日 01:45:31(UTC)
- マージ日時: 2026年07月20日 14:52:06(UTC)
- ラベル: area-System.Runtime.InteropServices.JavaScript
概要
JSImport部分メソッドの生成時に[SupportedOSPlatform("browser")]属性を直接付与することで、プラットフォーム互換性分析(CA1416)がJSImportメソッドに正しく適用されるよう修正しました。従来はJSImportAttributeクラスレベルの属性が機能していなかったため、ブラウザ以外のプラットフォームから呼び出される場合の警告が表示されていませんでした。
変更内容
- Constants.cs: SupportedOSPlatform属性と"browser"プラットフォーム文字列の定数を追加
- JSImportGenerator.cs: 生成される部分メソッド実装に
[SupportedOSPlatform("browser")]を出力するロジックを追加(9行追加、3行削除) - Compiles.cs: 新しい属性を含むように生成ソースの検証スナップショットを更新
パフォーマンスへの影響
影響なし
関連Issue
その他
- JSExportは変更されていません。JSExportAttributeは同じくクラスレベルの
[SupportedOSPlatform("browser")]を持ちますが、ユーザーが記述する非部分メソッドに適用されるため、ジェネレータはメソッド自体を生成せず、ラッパー/登録コードのみを出力します。そのため、装飾対象となる生成メソッド宣言がありません。 - JSImportAttribute/JSExportAttributeのクラスレベル
[SupportedOSPlatform("browser")]は削除されず、そのまま残されています。部分メソッド属性マージングにより、生成メソッドと結合された最終的なメソッドがブラウザ専用になります。 - 単体テスト22/22がパス、生成ソース検証スナップショット(Annotated、Import1)が新しい属性を含むように更新されました。
#131042 Fix publishing of ILLink test results
- 作成者: @akoeplinger
- 作成日時: 2026年07月19日 17:35:37(UTC)
- マージ日時: 2026年07月20日 00:31:28(UTC)
- ラベル: area-Infrastructure-mono
概要
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
- 作成者: @lewing
- 作成日時: 2026年07月19日 14:25:25(UTC)
- マージ日時: 2026年07月20日 22:10:43(UTC)
- ラベル: Servicing-approved arch-wasm area-Build-mono
概要
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
その他
- この修正は 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
- 作成者: @MichalPetryka
- 作成日時: 2026年07月19日 12:53:33(UTC)
- マージ日時: 2026年07月20日 01:55:15(UTC)
- ラベル: community-contribution area-skills
概要
コード レビュー スキルのガイドラインを更新し、提案フォーマットに関する指示を改善しました。Copilot によるコード提案の形式を統一することを意図としています。
変更内容
.github/skills/code-review/SKILL.md: コード レビュー スキルのガイドラインに対して、提案フォーマットに関する記述を追加・修正(2行追加、1行削除)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRは、GitHub Copilot がコード レビュー時に一貫性のある形式で提案を行うようにするためのガイドライン更新です。ドキュメント(スキル定義)の改善に限定されており、ランタイムやコンパイラの実装に変更はありません。
#131019 Implement the transcendental functions for the IEEE 754 decimal types
- 作成者: @tannergooding
- 作成日時: 2026年07月18日 21:59:40(UTC)
- マージ日時: 2026年07月20日 04:17:26(UTC)
- ラベル: area-System.Numerics
概要
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.csDiyFp128Trig.cs(Payne–Hanek reduction含む)、DiyFp128PiTrig.csDiyFp128InvTrig.cs、DiyFp128Hyper.cs、DiyFp128InvHyper.csDiyFp128Sqrt.cs、DiyFp128Cbrt.csDiyFp128Conversions.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
その他
- 内部実装の変更(ビルドパイプラインのテンプレート修正)
- Windows環境でのcrossgen2比較ジョブの信頼性向上を目的とした修正
#131006 Add System.Security.Cryptography Copilot instructions
- 作成者: @PranavSenthilnathan
- 作成日時: 2026年07月17日 23:54:43(UTC)
- マージ日時: 2026年07月20日 18:59:47(UTC)
- ラベル: area-System.Security
概要
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
その他
この変更は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
その他
このPull Requestは公開API(IXCLRDataMethodInstance)の拡張であり、デバッガツールの機能向上を目的とした変更です。Copilotによる自動レビューは組織の請求設定の制限により実施されていません。
#130970 Enable previously suppressed tests on CoreCLR browser
- 作成者: @radekdoulik
- 作成日時: 2026年07月17日 13:26:11(UTC)
- マージ日時: 2026年07月20日 14:56:30(UTC)
- ラベル: arch-wasm area-Infrastructure-coreclr
概要
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
- 作成者: @max-charlamb
- 作成日時: 2026年07月17日 01:56:03(UTC)
- マージ日時: 2026年07月20日 16:14:57(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Component Debugging for Access Control)のレガシDAC委譲機能を段階的に廃止するため、選定された複数のラッパーメソッドをレガシDAC実装へのフォールバック委譲から直接E_NOTIMPLを返すように変更しました。これにより、cDACがネイティブに対応していないAPIはレガシDACへ委譲せず明示的に未実装を返すようになります。
変更内容
- SOSDacImpl.IXCLRDataProcess.cs: タスク・アセンブリ・通知関連など複数の
IXCLRDataProcessAPIのレガシDAC委譲を廃止しE_NOTIMPLを返すように変更 - SOSDacImpl.cs: アセンブリロケーション、DACモジュールハンドル、GCハンドル列挙など選定された
ISOSDacInterfaceAPIのレガシDAC委譲を廃止 - ClrDataTask.cs: 複数の
IXCLRDataTaskAPIのレガシ委譲を無効化 - ClrDataStackWalk.cs:
GetFrameType、SetContext、SetContext2などのIXCLRDataStackWalkAPIの委譲を無効化 - ClrDataModule.cs: 列挙・ルックアップ関連の
IXCLRDataModuleAPIの委譲を廃止 - ClrDataMethodInstance.cs / ClrDataMethodDefinition.cs: 複数の
IXCLRDataMethodInstance/IXCLRDataMethodDefinitionAPIの委譲を無効化 - ClrDataFrame.cs:
IXCLRDataFrame/IXCLRDataFrame2APIの委譲を無効化し、不要になったIXCLRDataFrame2キャッシュフィールドを削除 - ClrDataAppDomain.cs: 複数の
IXCLRDataAppDomainAPIの委譲を無効化
これは内部実装(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
その他
- この変更はapphost、hostfxr、hostpolicyなどのコアホストコンポーネントに適用される
- 既にNativeAOT Runtime.GC.*やcDACディスクリプタで採用されている手法との統一化
- ビルド出力(オブジェクトファイルサイズ)への影響の有無は不明
#130912 Pause scheduled runs for gc-standalone pipeline
- 作成者: @Copilot
- 作成日時: 2026年07月16日 19:22:59(UTC)
- マージ日時: 2026年07月20日 22:51:21(UTC)
- ラベル: area-Infrastructure-coreclr
概要
CoreCLR gc-standalone パイプラインの夜間自動実行をスケジュール定義のコメントアウトにより一時停止するもの。調査中の問題が解決するまでの間、不要なCI実行を削減するための運用的な変更です。パイプライン定義自体は保持され、手動実行とスケジュール再有効化(コメント解除)は引き続き可能です。
変更内容
eng/pipelines/coreclr/gc-standalone.yml:schedules:cron ブロックをコメントアウト。再有効化方法を説明するインラインコメントを追加。
パフォーマンスへの影響
影響なし。(パイプライン実行スケジュールの制御のため、ランタイムの機能やビルド/テストロジックに変更はありません)
関連Issue
なし
その他
- リスク: 低。ビルド・テストロジックは変更されず、スケジュール機能のみ無効化。手動実行は利用可能で、ロールバックは簡単です。
- テスト: 該当なし。パイプラインスケジュール メタデータの更新のみ。
- 顧客への影響: 調査中の問題のため、応答不可能なパイプラインの継続的な夜間実行を回避し、CI消費の削減と通知ノイズの低減を実現します。
#130901 Add CPU feature detection using elf_aux_info
- 作成者: @am11
- 作成日時: 2026年07月16日 18:12:27(UTC)
- マージ日時: 2026年07月20日 12:50:03(UTC)
- ラベル: arch-arm64 os-freebsd community-contribution area-NativeAOT-coreclr
概要
FreeBSD ARM64 環境での AOT スモークテスト失敗を修正するため、elf_aux_info を使用した CPU 機能検出を追加します。.NET 11.0 での回帰(#118101に由来)を解決し、AdvSimd 命令セットの検出を正確に行えるようにします。
変更内容
- src/native/minipal/cpufeatures.c: CPU 機能検出ロジックを改善し、
elf_aux_infoAPI を使用した ARM64 向けの検出メカニズムを追加(+17/-9) - src/native/minipal/configure.cmake: ビルド設定に
elf_aux_info関連の構成を追加(+1/-0) - src/native/minipal/minipalconfig.h.in: コンパイル時の設定定義を追加(+1/-0)
パフォーマンスへの影響
影響なし(CPU 機能検出は初期化時の一度限りの処理)
関連Issue
その他
- 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.
- 作成者: @lateralusX
- 作成日時: 2026年07月16日 14:53:08(UTC)
- マージ日時: 2026年07月20日 10:08:06(UTC)
- ラベル: area-Diagnostics-coreclr
概要
非プーリングの 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
その他
- 互換性: 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
- 作成者: @github-actions[bot]
- 作成日時: 2026年07月16日 11:58:50(UTC)
- マージ日時: 2026年07月20日 20:52:16(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
.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
その他
- 本PRはrelease/10.0ブランチへの#124432のバックポート
- .NET 9で導入された回帰で、デバッグビルドのみで現象が発生(最適化ビルドは回避)
- 修正内容は局所的で低リスク。既に他の箇所で正しく使用されている同じヘルパー関数に置き換えた
#130854 [Apple] Preserve Norwegian locale names in hybrid globalization
- 作成者: @matouskozak
- 作成日時: 2026年07月16日 08:21:34(UTC)
- マージ日時: 2026年07月20日 16:18:31(UTC)
- ラベル: area-System.Globalization os-ios
概要
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
その他
テスト実績:
- CoreCLR iOS Simulator(ネイティブ/runtime-pack)ビルド成功
- ノルウェー語カルチャリグレッション テスト:2合格、0失敗
CultureInfoコンストラクタマトリックス:348合格、0失敗GetCultureInfo正規化マトリックス:22合格、0失敗
本変更は内部実装(ネイティブPALおよびテストコード)の修正であり、公開APIの互換性に影響はありません。
#130843 Fix three xarch lowering correctness/invariant issues
- 作成者: @tannergooding
- 作成日時: 2026年07月16日 04:47:02(UTC)
- マージ日時: 2026年07月20日 23:22:07(UTC)
- ラベル: area-CodeGen-coreclr
概要
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
その他
- 全ての修正は潜在的なものであり、非AVX512ハードウェアでは表面化していません。テストはAVX512 CIで実行カバレッジ用です。
- #130844はAVX512専用(EVEXマスク + KORTEST)の不具合です。
- #130845は低下順序の問題で、AND のGTF_SET_FLAGSが後で設定されるため実装順序に依存します。
- #130846は reg-optionalフラグが実行時には不活性であるため、デフォルトビルドではアサートが発生しませんが、一時的な計装により確認されています。
#130822 [RyuJIT Wasm] SIMD Element-Wise Loads and Stores
- 作成者: @adamperlin
- 作成日時: 2026年07月15日 22:37:00(UTC)
- マージ日時: 2026年07月20日 22:33:59(UTC)
- ラベル: area-CodeGen-coreclr
概要
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
その他
本PRは前回のPR #130082のフォローアップです。ユーザーが提供するZstandardCompressionOptionsに対する処理方針は未解決の質問として記載されています。
#130801 Remove dead/unreachable code in several JIT phases
- 作成者: @tannergooding
- 作成日時: 2026年07月15日 16:56:47(UTC)
- マージ日時: 2026年07月20日 20:16:57(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイラの複数のフェーズにおいて、デッドコード(到達不可能・未使用のコード)を4つ削除するクリーンアップPRです。各削除は独立した変更で、動作への影響はありません。
具体的には以下を削除:
- Span半定数
Equalsの常にfalseの参照等価性チェック -_reference(TYP_BYREF)と文字列オブジェクトハンドル(TYP_REF)の比較は常にfalseで到達不可 MorphStructFieldAddressの未完了isSpanLengthブロック - 計算結果が未使用で、実装が途中で放置されていた- 未使用の
optCSE_MaskHelper-MaskDataWalkerに置き換わった遺物 - 有理化フェーズの到達不可
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
- 作成者: @dhartglassMSFT
- 作成日時: 2026年07月15日 06:27:20(UTC)
- マージ日時: 2026年07月20日 21:32:42(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
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
- 作成者: @matouskozak
- 作成日時: 2026年07月14日 14:39:03(UTC)
- マージ日時: 2026年07月20日 08:13:06(UTC)
- ラベル: area-System.Globalization os-ios
概要
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
その他
- 元の実装(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-maestro[bot]
- 作成日時: 2026年07月09日 16:59:53(UTC)
- マージ日時: 2026年07月20日 01:13:49(UTC)
- ラベル: Servicing-approved area-codeflow
概要
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
- 作成者: @UditDewan
- 作成日時: 2026年07月09日 16:06:23(UTC)
- マージ日時: 2026年07月20日 09:29:57(UTC)
- ラベル: area-Extensions-Options community-contribution
概要
[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
その他
- キーワードではないメンバー/型の出力は変わりません。既存テストクラスから再生成したバイナリは変更前後で同一です
- System.Text.Jsonジェネレータの実装(
MemberNameNeedsAtSign)と同じアプローチを採用しており、一貫性があります
#130382 Disable large alloc tests on 32b targets
- 作成者: @dhartglassMSFT
- 作成日時: 2026年07月08日 22:42:25(UTC)
- マージ日時: 2026年07月20日 17:21:13(UTC)
- ラベル: area-CodeGen-coreclr
概要
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
その他
このPRは大規模メモリ割り当てテストの不安定性に対処する修正で、JITテスト(回帰テスト)に限定された変更です。32ビットプロセスとApple mobileプラットフォームでの割り当てリソースの制約が主な要因と推定されます。
#130324 [release/10.0] JIT: fix widened IV init placed in unreachable block
- 作成者: @EgorBo
- 作成日時: 2026年07月07日 22:29:46(UTC)
- マージ日時: 2026年07月20日 21:26:04(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
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
- 作成者: @github-actions[bot]
- 作成日時: 2026年07月07日 22:18:20(UTC)
- マージ日時: 2026年07月20日 20:52:38(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
.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
その他
- 顧客報告によるクラッシュ修正
- .NET 8では再現しない(.NET 9.x以降での回帰)
- リスクレベル: 低(エクスプリシット構造体レイアウトを使用した特殊なシナリオのみ)
#129592 [release/10.0] Fix LoaderHeap's free list growing more than expected
- 作成者: @eduardo-vp
- 作成日時: 2026年06月18日 19:33:14(UTC)
- マージ日時: 2026年07月20日 21:37:25(UTC)
- ラベル: Servicing-approved tenet-performance area-VM-coreclr
概要
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
- 作成者: @matouskozak
- 作成日時: 2026年05月14日 17:30:35(UTC)
- マージ日時: 2026年07月20日 13:09:00(UTC)
- ラベル: os-mac-os-x area-Infrastructure-coreclr
概要
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への参照を確認済み:該当なし