Pull Request on 2026年08月19日

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

注意点

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


目次

  1. #132523 JIT: Guard named intrinsic lookup
  2. #132514 [release/11.0-rc1] Fix unordered DiagnosticsHelper tag comparison
  3. #132512 [release/10.0] Fix IsSupported tests for ML-KEM
  4. #132508 Edit remarks section of HostApplicationBuilder's parameterless constructor
  5. #132501 [release/10.0] Update dependencies from dotnet/icu
  6. #132500 [mono][interp] Fix mis-sorted SIMD intrinsic tables making entries unreachable
  7. #132499 [mono][interp] Intrinsify Vector128 GetElement/WithElement on wasm
  8. #132498 Fix some AES-KWP tests
  9. #132496 [mono][wasm] Intrinsify Vector128.MultiplyAddEstimate in the interpreter
  10. #132495 Fix browser-wasm sfx pack NU5118 collision from stale prior Mono build artifacts
  11. #132493 test: use span assertions in GenericMath tests
  12. #132491 Disable ContextualReflection test on browser wasm
  13. #132482 [CoreCLR] Protect exception object across funclet callbacks
  14. #132477 [release/11.0-rc1] Implement AES-KW
  15. #132474 Fix EventPipe method events on CoreCLR WASM and harden the Blazor EventPipe test
  16. #132472 [release/11.0-rc1] Fix duplicate _start offset in Tensor.Resize
  17. #132471 [release/11.0-rc1] Reject malformed UTF-8 number separators
  18. #132447 [release/9.0-staging] Update dependencies from dotnet/roslyn
  19. #132440 Add Composite ML-KEM base APIs
  20. #132437 Fix codegen of NotMask on x64
  21. #132436 [release/11.0-rc1] Fix PAL QueryThreadCycleTime test format macros
  22. #132435 Avoid unnecessary allocations in single-file app bundle launch
  23. #132434 Select latest installed Xcode 26 in macOS CI
  24. #132433 [release/11.0-rc1] NativeAOT: remove BOM from generated source/response files
  25. #132409 JIT: Enable async inlining by default
  26. #132386 [release/10.0] Update dependencies from dotnet/xharness
  27. #132384 [release/9.0-staging] Update dependencies from dotnet/xharness
  28. #132362 Adds metadata reference validation to ILVerify.
  29. #132335 Remove multi-level lookup completely
  30. #132306 [mono][wasm][AOT] Pin OP_MOVE destinations in the GC pin area
  31. #132296 Add Agent Merge CI guardrails to Copilot instructions
  32. #132289 Add standalone runtime test repro skills
  33. #132224 Calibrate copilot-instructions for non-Opus models
  34. #132196 [release/9.0-staging] Update dependencies from dotnet/cecil
  35. #132195 [release/9.0-staging] Update dependencies from dotnet/icu
  36. #132178 Fix unordered DiagnosticsHelper tag comparison
  37. #132175 [release/10.0] Source code updates from dotnet/dotnet
  38. #132131 Upgrade Vally eval tooling to 0.14
  39. #132090 Move IidParameterIndexMarshallerResolver into Microsoft.Interop.SourceGeneration default resolvers
  40. #132070 Remove dead references to WasmRuntimeAssetsLocation
  41. #132063 [main] Update dependencies from dnceng/internal/dotnet-optimization
  42. #132040 Reduce the GC handle cost of every RCW in ComWrappers
  43. #131970 Use ubuntu-slim for trivial GitHub Actions
  44. #131957 [browser][CoreCLR] Gate remaining priority-1 outerloop failures
  45. #131953 Update container image digests
  46. #131778 Move shared WASM logic to base writer
  47. #131745 Arm64-SVE: Fixes for passing Vector<T> by reference in reflection calls
  48. #131610 Fix CrossGen2 TypeMap blob-only type references
  49. #131552 Enable contracts for new holders and refactor Crst initialization
  50. #131244 Populate PrivateMemorySize64 on macOS
  51. #131231 Widen the internal Number.BigInteger buffer to nuint

#132523 JIT: Guard named intrinsic lookup

概要

JIT コンパイラの名前付きintrinsic検索を保護する変更です。impIntrinsic で named intrinsic の検索が実行されるのは、有効なメタデータメソッドハンドルを持つユーザー呼び出し(CT_USER_FUNC)のみに限定されます。これにより、無効なハンドルの使用によるintrinsic検出時のエラーを防止します。

変更内容

  • src/coreclr/jit/importercalls.cpp: lookupNamedIntrinsic(call->gtCallMethHnd) の呼び出しを call->gtCallType == CT_USER_FUNC チェックで保護。非ユーザー呼び出しに対する named intrinsic 分類の試行を回避。

パフォーマンスへの影響

影響なし

関連Issue

#131924

その他

この変更は RuntimeTypeHandle.ToIntPtr(typeof(T).TypeHandle) の高速パス実装に関連しており、import時の最適化を安全にするための予防的な修正です。


#132514 [release/11.0-rc1] Fix unordered DiagnosticsHelper tag comparison

概要

DiagnosticsHelper のタグ比較ロジックの修正をrelease/11.0-rc1ブランチにバックポートしたものです。元のPR #132178で修正された順序付けされていないタグ比較の問題を対象リリースに適用します。

変更内容

  • src/libraries/Common/src/System/Diagnostics/DiagnosticsHelper.cs: タグ比較ロジックを修正(14行追加、12行削除)
  • src/libraries/System.Diagnostics.DiagnosticSource/tests/MetricsTests.cs: テストケースを追加(19行追加、2行削除)

パフォーマンスへの影響

影響なし

関連Issue

#132178(元のPR)

その他

  • このPRはrelease/11.0-rc1ブランチへのバックポート(#132514)です
  • テンプレート上でお客様への影響、リグレッション情報、テスト方法、リスク評価の詳細は記入されていません
  • .NET 10以上に対応したバージョンのため、NuGetパッケージの手動編集は不要です

#132512 [release/10.0] Fix IsSupported tests for ML-KEM

概要

SymCrypt-OpenSSL 1.10がML-KEM(ML-KEM: Module-Lattice-Based Key-Encapsulation Mechanism)サポートを追加したことに対応して、ML-KEM関連のユニットテストを修正するバックポートです。既存のテストではSymCrypt-OpenSSLがML-KEMをサポートしていないと仮定していたため、サポート検出テスト(IsSupportedテスト)が失敗していました。

変更内容

  • MLKemImplementationTests.cs: ML-KEM実装テストのIsSupportedテスト判定ロジックを修正(14行追加、5行削除)
  • PlatformDetection.Unix.cs: Unix環境でのプラットフォーム検出ロジックにML-KEM対応判定を追加(1行追加)
  • ChaCha20Poly1305Tests.cs: テスト条件の微調整(3行追加、2行削除)

パフォーマンスへの影響

影響なし(ユニットテスト修正のみ)

関連Issue

#132510、#130737

その他

  • 内部検証による修正で、顧客報告ではないバグ修正です
  • SymCrypt-OpenSSL 1.10の最近のPatch Tuesday リリースに対応しています
  • 変更リスクは最小限です(ユニットテスト変更のみ)
  • mainブランチでSymCrypt-OpenSSL 1.10に対して検証済み

#132508 Edit remarks section of HostApplicationBuilder's parameterless constructor

概要

HostApplicationBuilderのパラメータなしコンストラクタのXML documentation remarksセクションを修正し、実際の動作に合わせました。パラメータなしコンストラクタはargs: nullを渡すため、コマンドライン引数からの設定は適用されません。

変更内容

  • src/libraries/Microsoft.Extensions.Hosting/src/HostApplicationBuilder.cs
    • パラメータなしコンストラクタの remarks セクションから、コマンドライン引数に関連する2つの記述を削除
    • HostApplicationBuilder(string[]? args) オーバーロードには引き続きコマンドライン引数の動作を記載

パフォーマンスへの影響

影響なし

関連Issue

#13000

その他

この変更はドキュメンテーション(XML comments)のみの修正であり、ランタイム動作や公開APIの変更はありません。


#132501 [release/10.0] Update dependencies from dotnet/icu

概要

dotnet/icu リポジトリからの依存関係を更新するPull Requestです。Microsoft.NETCore.Runtime.ICU.Transport パッケージを 10.0.0-rtm.26407.3 から 10.0.0-rtm.26418.2 にアップデートしています。.NET 10.0 リリースブランチ向けの定期的な依存関係更新です。

変更内容

  • eng/Version.Details.props: バージョン情報の更新(+1/-1)
  • eng/Version.Details.xml: Microsoft.NETCore.Runtime.ICU.Transport のバージョン指定を 10.0.0-rtm.26407.3 → 10.0.0-rtm.26418.2 に更新(+2/-2)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 自動マージPull Request(dotnet-maestro[bot]による作成)
  • 変更内容はICU(国際化コンポーネント)ライブラリの内部依存関係更新で、公開APIへの影響はなし
  • ビルド日時: 2026年8月18日 UTC

#132500 [mono][interp] Fix mis-sorted SIMD intrinsic tables making entries unreachable

概要

Mono インタプリタの SIMD 内部関数検索がバイナリサーチ時にテーブルが ASCII順でないため一部エントリに到達できない問題を修正します。lookup_intrins() は mono_binary_search で厳密なソート順序を要求しており、sri_vector128_methods では AsVector4 が、packedsimd_alias_methods では Subtract、SubtractSaturate、Store、StoreUnsafe が到達不可になっていました。修正後、これらの操作は マネージド実装へのフォールバックではなく、ネイティブ SIMD 命令に直接コンパイルされるようになります。

変更内容

src/mono/mono/mini/interp/transform-simd.c

  1. sri_vector128_methods テーブルの並べ替え — SN_AsVector, SN_AsVector4, SN_AsVector128 から SN_AsVector, SN_AsVector128, SN_AsVector4 に順序を修正し、AsVector4 をバイナリサーチで到達可能に。

  2. packedsimd_alias_methods テーブルの並べ替え — SN_Sqrt, SN_SquareRoot を SN_SubtractSaturate の後から SN_Subtract の前に移動し、Subtract と SubtractSaturate を到達可能に。

  3. Store/StoreUnsafe エントリの削除 — これらのエントリは仕様の型引数の順序が逆のため、ソート順に組み込むとメモリ破損バグが発生するリスクがあるため削除。(機能実装には operand-swap メカニズムが必要)

  4. check_intrins_sorted() 関数追加 — ENABLE_CHECKED_BUILD 時に lookup_intrins() から呼び出され、テーブルのソート状態をアサートで検証。Debug ビルドでは自動的に有効化され、将来のテーブルドリフトを明示的なエラーとして検出。

パフォーマンスへの影響

大幅な改善 — browser-wasm/V8 インタプリタ環境での測定結果(best of 5、2回のウォームアップ後):

操作 修正前 修正後 高速化
Vector128.SubtractSaturate<short> 28.13 ns 0.84 ns 33.5x
Vector128.SubtractSaturate<byte> 30.73 ns 0.84 ns 36.6x
Vector128.Subtract<int> (static) 0.69 ns 0.68 ns 変化なし

SubtractSaturate は修正前はマネージド実装を実行していたため、WASM ネイティブ命令 (i8x16.sub_sat/i16x8.sub_sat) の実行により約 30-35 倍の高速化を達成。

ランタイムコストの追加:ENABLE_CHECKED_BUILD 時の check_intrins_sorted() は最大で約 46 回の短い strcmp を SIMD メソッド解決時に実行(変換時間での一度だけ)。

関連Issue

なし

その他

  • 互換性への影響:Store/StoreUnsafe は修正前も到達不

#132499 [mono][interp] Intrinsify Vector128 GetElement/WithElement on wasm

概要

Mono インタープリタで Vector128<T>.GetElement と Vector128<T>.WithElement の intrinsify を実装し、browser-wasm での性能を大幅に改善します。これらの API は System.Numerics で頻繁に使用されており(GetElement ~120、WithElement ~66箇所)、従来は 16 バイトベクトルのスタックコピーを伴うマネージド実装にフォールバックしていました。既存の PackedSimd ExtractScalar/ReplaceScalar SIMD intrinsics を活用し、新しい MINT オペコードや追加のヘルパー関数は不要です。

// GetElement/WithElement は以下のように最適化されます
Vector128<float> v = Vector128.Create(1f, 2f, 3f, 4f);
float element = v.GetElement(2);  // intrinsified (constant index only)
v = v.WithElement(2, 5f);         // intrinsified (constant index only)

変更内容

  • transform-simd.c: Vector128<T>.GetElement/WithElement の intrinsify ロジック追加。コンパイル時定数の範囲内インデックスのみ intrinsify し、可変インデックスまたは範囲外定数インデックスの場合は ArgumentOutOfRangeException を発生させるマネージド実装にフォールバック
  • simd-methods.def: GetElement/WithElement のメソッド ID を lookup table に追加
  • simd-methods.def での修正: sri_vector128_methods[] が mono_binary_search で検索されるため、SN_AsVector、SN_AsVector128、SN_AsVector4 の順序を修正(従来は AsVector4 と AsVector128 が逆順で到達不可能だった)
  • Vector128Tests.cs: 新テスト 4 種類追加:定数インデックス、負数値、範囲外定数インデックス、可変インデックスのテスト

パフォーマンスへの影響

browser-wasm (Release, V8 環境、中央値 ns/op):

ベンチマーク 改善率
Vector128<float>.WithElement(2) −38.3% (2.875 → 1.775 ns/op)
Matrix4x4.CreateFromQuaternion −17.9% (39.42 → 32.35 ns/op)
Vector128<byte>.GetElement(11) −17.4% (1.267 → 1.047 ns/op)
Vector128<int>.GetElement(3) −16.5% (1.288 → 1.075 ns/op)
Quaternion.CreateFromRotationMatrix −10.1% (42.34 → 38.08 ns/op)
Matrix4x4.Decompose −4.5% (253.54 → 242.15 ns/op)
Vector3.Transform(matrix) −2.8% (69.2 → 67.27 ns/op)

dotnet.native.wasm バイナリサイズ増加: +329 bytes (3,158,305 → 3,158,634 bytes)

一部の lambda ベースベンチマークで +6.8% の計測結果が確認されましたが、同一処理を [MethodImpl(NoInlining)] 静的ループで実行した専用ベンチマーク (FloatExtractLoop, IntExtractLoop) では


#132498 Fix some AES-KWP tests

概要

AES-KWP(パディング付きキーラップ)の既存テストにおける検証ロジックの問題を修正します。空の暗号文に対するDecryptKeyWrapPadded(byte[])オーバーロードのカバレッジ向上、デクリプト重複テストの誤った呼び出しカウント検証の修正、および誤解を招くエラーメッセージの改善が含まれます。

変更内容

  • KeyWrapPaddedTests.cs:
    • 空の暗号文テストをDecryptKeyWrapPadded(byte[])オーバーロードを実行するよう修正
    • デクリプト重複テストで、デクリプトカウントを検証するべき箇所でエンクリプトカウントを誤って検証していた問題を修正
    • DecryptKeyWrapPaddedCoreのエラーメッセージを明確化

パフォーマンスへの影響

影響なし(テストコードのみの変更)

関連Issue

なし

その他

このPRはテスト(公開API contract tests)の品質向上に関するもので、暗号化実装そのものの機能的な変更はありません。AES-KW実装が先行してマージされた後の、関連するKWP(Key Wrap with Padding)テストの補正です。


#132496 [mono][wasm] Intrinsify Vector128.MultiplyAddEstimate in the interpreter

概要

Mono インタプリタと Browser/WASM Jiterpreter で Vector128<float>.MultiplyAddEstimate を直接 SIMD イントリンシックとして認識するように改善しました。これにより、マネージドな Vector64 フォールバック経由のインライン化を回避し、利用可能な場合は WebAssembly の f32x4.relaxed_madd を、そうでない場合は f32x4.mul + f32x4.add を発行します。

変更内容

  • transform-simd.c: Vector128<float>.MultiplyAddEstimate を認識し、対応するインタプリタ SIMD イントリンシックを発行
  • simd-methods.def: MultiplyAddEstimate を SIMD メソッド名セットに追加
  • interp-simd.c: Vector128<float> 乗算加算推定値のインタプリタ実装を追加
  • interp-simd-intrins.def: 新しいインタプリタ SIMD イントリンシックを登録
  • jiterpreter-trace-generator.ts: WebAssembly コード生成時に新しいイントリンシックを f32x4.relaxed_madd(またはフォールバック)に変換

パフォーマンスへの影響

BenchmarkDotNet (Mono Browser/WASM, V8 15.1.182, macOS arm64) における大幅な改善:

  • Perf_Matrix3x2.MultiplyByMatrixBenchmark: 167.051 ns → 89.296 ns(46.5% 改善)
  • Perf_Matrix4x4.InvertBenchmark: 633.863 ns → 466.457 ns(26.4% 改善)
  • Perf_Plane.TransformByMatrix4x4Benchmark: 942.725 ns → 685.874 ns(27.2% 改善)

関連Issue

dotnet/perf-autofiling-issues#76371、#130192、#130274

その他

  • 検証: Mono ネイティブビルド、Mono Browser/WASM Release ビルド、System.Runtime.Intrinsics Browser/WASM テスト(13,021 パス、0 失敗)
  • 本変更は dotnet/perf-autofiling-issues #76371 で追跡されていた System.Numerics のブラウザ/WASM パフォーマンス低下を対処する主要な改善です
  • Numerics リファクタリング(#130192、#130274)により多くの Vector128.MultiplyAddEstimate 呼び出しが導入されましたが、Mono インタプリタはそれまでこの API を認識していませんでした

#132495 Fix browser-wasm sfx pack NU5118 collision from stale prior Mono build artifacts

概要

browser-wasm ランタイムパック生成時に、同一ワークツリー内での Mono ビルド後の stale native artifacts が CoreCLR パック入力と衝突し、NU5118 重複ファイルエラーを引き起こす order-dependent なビルド失敗を修正します。eng/liveBuilds.targets に TargetOS=browser && RuntimeFlavor=CoreCLR の条件付き除外リストを追加し、Mono ビルドで残された 13 個のネイティブライブラリファイルをパック対象から除外します。

変更内容

  • eng/liveBuilds.targets: ExcludeNativeLibrariesRuntimeFiles に TargetOS=browser && RuntimeFlavor=CoreCLR 条件の除外エントリを追加(21行追加)
    • libSystem.Native.a、ICU ライブラリ/データ、libSystem.Globalization.Native.a、libSystem.IO.Compression.Native.a、libz.a など 13 個のベースネーム を除外
    • 既存の AppleMobile/Android/WASI 向け除外リストと同じパターンで実装

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 根本原因: $(LibrariesNativeArtifactsPath) は RuntimeFlavor セグメントなしの flavor-agnostic ディレクトリで、Mono と CoreCLR ビルドで共有される。Mono ビルド後に stale ファイルが残ると、CoreCLR の top-level glob がこれらを拾い上げ、LibrariesSharedFrameworkDir/CoreCLRSharedFrameworkDir の正規ソースと同じベースネームで衝突する。
  • 修正の安全性: これらファイルは CoreCLR ビルドで top-level 位置に生成されることはなく、正規ソースで常に利用可能であるため、from-scratch single-flavor ケースに対して安全な no-op 変更。
  • 検証済み: 修正適用後、同一ワークツリーで mono+libs -os browser -c Release 次に clr+libs+host+packs -os browser -c Release を実行して NU5118 エラーが消滅、nupkg 内に 13 個全ファイルが正確に 1 回のみ存在することを確認。

#132493 test: use span assertions in GenericMath tests

概要

GenericMath テストスイート全体で、従来のアサーション方法から Span<T> ベースのアサーション方法への統一的な移行を実施しました。これにより、テストコードの一貫性と保守性を向上させるための内部テストコードの改善です。

変更内容

  • System.Runtime.InteropServices.UnitTests: NFloatTests.GenericMath.cs でアサーション方法を更新(128行追加/削除)
  • System.Runtime.Numerics: BigIntegerTests.GenericMath.cs でアサーション方法を更新(28行追加/削除)
  • System.Runtime: 以下の全GenericMath関連テストファイルでアサーション方法を統一
    • 数値型テスト: ByteTests, CharTests, DecimalTests, DoubleTests, SingleTests, HalfTests
    • 整数型テスト: Int16Tests, Int32Tests, Int64Tests, Int128Tests, IntPtrTests
    • 符号なし整数型テスト: UInt16Tests, UInt32Tests, UInt64Tests, UInt128Tests, UIntPtrTests

全18ファイルで合計 788行のアサーション表記が更新されています。

パフォーマンスへの影響

テストコードの変更であるため、実行時パフォーマンスへの影響はありません。

関連Issue

なし

その他

本変更は内部テストコードの品質向上を目的とした修正であり、公開APIや実行時動作には影響を与えません。


#132491 Disable ContextualReflection test on browser wasm

概要

CoreCLR ブラウザ WASM ターゲットにおける Loader/ContextualReflection テストの失敗に対応するため、該当テストプロジェクトを一時的に無効化します。CLRTestTargetUnsupported プロパティを設定することで、ブラウザターゲットのみでのテストビルド/実行を防ぎ、他のプラットフォームやランタイムフレーバーには影響を与えません。

変更内容

  • src/tests/Loader/ContextualReflection/ContextualReflection.csproj: RuntimeFlavor=coreclr かつ TargetOS=browser の条件下で CLRTestTargetUnsupported=true を設定

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 既存の Loader テスト除外条件と同じパターンを使用しており、他のプラットフォーム(Windows など)および他のランタイムフレーバーでは引き続きテストが有効
  • ブラウザ WASM 環境での既知の失敗に対する暫定的な措置で、将来的な修正に備えた条件付きの無効化

#132482 [CoreCLR] Protect exception object across funclet callbacks

概要

CoreCLRの例外処理におけるGC安全性のバグを修正します。プロファイラー、デバッガー、ETWコールバック中にGCが発生する可能性がある際に、CallFilterFuncletとCallCatchFunclet内で例外オブジェクト(OBJECTREF)を保護するため、GCPROTECT_BEGIN/ENDマクロを追加します。これにより、例外監視が有効な場合のチェックドビルドのアサート失敗を防止します。

変更内容

  • src/coreclr/vm/exceptionhandling.cpp: CallFilterFuncletとCallCatchFuncletで例外オブジェクトthrowableをGCPROTECTで保護し、コールバック領域とfunclet呼び出し中のGC中も例外参照が無効化されないようにしました。
  • src/tests/profiler/exception/ExceptionTest.cs: 例外フィルターを追加してfilter/catch funcletパスを実行し、期待されるプロファイラーコールバック通知(ExceptionSearchFilter*イベント)の順序を検証するテストを拡張しました。

パフォーマンスへの影響

影響なし。この変更はGC安全性を確保するためのメタデータ保護であり、実行時パフォーマンスへの影響はありません。

関連Issue

#132462

その他

レビュー段階で、pHandlerIP == NULLパスにおいて未使用の保護されていないOBJECTREFローカル変数が存在する可能性が指摘されており、ExInfo::PopExInfos後のGCX_PREEMP_NO_DTOR()呼び出し時に同様の問題が発生するリスクがあります。テストは確認済みで、チェックされたランタイムに対してテストが失敗することが確認されており、修正後のチェックビルド実行およびプロファイラーテストで「PROFILER TEST PASSES」を報告しています。


#132477 [release/11.0-rc1] Implement AES-KW

概要

AES-KW(AES Key Wrap)アルゴリズム対応を.NET 11.0-rc1に追加するバックポートです。既に実装済みのAES-KWPに加えて、AES-KWのサポートを提供します。JOSE ライブラリ(System.IdentityModel.Tokens.Jwt など)およびML-KEM Enveloped CMS の将来の PQC 機能に対応しています。

RFC テスト ベクトルに基づいた包括的なユニットテストが含まれています。

変更内容

  • 暗号化 API 層:Aes クラスに AES-KW キーラップ機能を追加するパブリック API を実装
  • プラットフォーム別実装:
    • macOS/Apple:SwiftBridge を通じた Secure Enclave API への対応
    • OpenSSL/Unix:EVP Cipher インターフェースへの対応
  • 相互運用層:AppleおよびOpenSSL向けのネイティブ相互運用コード(C/Swift)を追加
  • リソース/メタデータ:公開 API 宣言(ref ファイル)とリソース文字列を追加
  • テスト:AES-KW テストと既存 AES-KWP テストを分離・充実

パフォーマンスへの影響

影響なし(新機能追加のため、既存 API への変更はありません)

関連Issue

#132349

その他

  • 互換性:新規 API のみで、既存 API に対する破壊的変更なし
  • リスク評価:低(新機能追加であり、既存機能への変更なし)
  • 回帰テスト:なし(新機能のため)

#132474 Fix EventPipe method events on CoreCLR WASM and harden the Blazor EventPipe test

概要

CoreCLR/WASMプラットフォームでEventPipeメソッドイベント収集時にランタイムクラッシュが発生する問題を修正。未登録のJITマネージャーに対応するコードアドレスからのETWメソッドイベント発行を保護し、Blazor EventPipeテストをハードニングして、ランタイムトラップを確実にテスト失敗として報告するようにします。併せてCoreClRのemsdkパス取得ロジックを修正。

変更内容

  • src/coreclr/vm/eventtrace.cpp: ETW::MethodLog::SendMethodEventとSendMethodILToNativeMapEventにEECodeInfo::IsValid()チェックを追加。無効なコード領域に対するJITマネージャークエリを回避し、メソッドイベント発行時の無効な状態の逆参照によるクラッシュを防止(内部実装の修正)
  • src/mono/wasm/Wasm.Build.Tests/Blazor/EventPipeDiagnosticsTests.cs: ClickAndCollectメソッドをハードニング。Playwriteのコンソール/ページエラーフック経由でランタイム失敗を検出し、明示的なトレース収集タイムアウト(3分)を実装。ランタイムトラップ時にPromiseが永遠に待機する問題を解決。Task.WhenAnyで失敗シグナルとのレース処理を導入
  • src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj: CoreCLR EMSDK_PATHフォールバック、共有wasmツールキャッシュ($(EmscriptenSdkCacheDir))の.completeスタンプで条件付けするよう修正。キャッシュが未プロビジョニング時は空にして、より明確なエラーメッセージを提示

パフォーマンスへの影響

影響なし(バグ修正とテスト信頼性向上のみ)

関連Issue

#132410(CoreCLR CPU samples経路の安定化追跡用)

その他

  • BlazorEventPipeTestWithCpuSamplesテストは[ActiveIssue]アノテーション付きで、CPU samplesパス安定化まで条件付け実行
  • テストにおいてオーファンのEvaluateAsyncタスクを明示的にdefuseして、後続テストでの未観察例外を防止

#132472 [release/11.0-rc1] Fix duplicate _start offset in Tensor.Resize

概要

Tensor.Resizeメソッドがstartオフセット0より大きい密張量のサイズ変更時に重複したオフセット適用により誤った値を返していた問題を修正。例えば[3, 4, 5, 6]を表すテンソルのサイズ変更が[5, 6, 0, 0]と誤って返される問題を解決。

変更内容

  • src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/Tensor.cs:重複するオフセット適用を削除。既存の読み取り専用テンソルスパンとフラット化された長さを使用する修正(Tensor.ResizeToと同じアプローチ)
  • src/libraries/System.Numerics.Tensors/tests/TensorTests.cs:TensorResizeWithStartTestsを追加。nonzeroのstartを持つテンソルについて、サイズ変更なし・拡大・縮小・ランク変更の各ケースをカバー

パフォーマンスへの影響

影響なし

関連Issue

#128512、#128511、#114927

その他

  • リグレッション:あり(#114927で導入)
  • リスク:低。内部実装のみの変更で、公開API表面には変更なし
  • 顧客報告の問題

#132471 [release/11.0-rc1] Reject malformed UTF-8 number separators

概要

malformed UTF-8入力が数値パーサーで誤って受け入れられる回帰バグを修正します。#123783による変更がUTF-16向けのスペース/NBSP正規化をUTF-8バイト単位にも適用してしまい、standalone 0xA0継続バイトが数値フォーマットシンボルのASCIIスペースとして解釈される問題を解決します。

変更内容

  • System/Number.Parsing.Common.cs: Unicode互換性正規化をUTF-16専用化に制限(2行変更)
  • BigInteger/parse.cs: malformed UTF-8拒否の回帰テスト追加(8行追加)
  • Int32Tests.cs: malformed UTF-8拒否の回帰テスト追加(8行追加)

パフォーマンスへの影響

影響なし

関連Issue

#132417、#123783

その他

  • 対象: CoreLib数値パーサー(Int32など)と BigInteger共有ソースの両方に影響
  • 破壊的変更: なし(正しい動作への修正)
  • リスク評価: 低(UTF-8マッチングは変更なし、UTF-16の意図された双方向動作は維持)
  • 検証: System.Runtime.Tests (77,366テスト) と System.Runtime.Numerics.Tests (8,426テスト) すべてで確認済み
  • 回帰原因: #123783はUTF-16入力のみでテストされていたため、UTF-8要素での共有実装インスタンス化の問題が見逃されていた

#132447 [release/9.0-staging] Update dependencies from dotnet/roslyn

概要

dotnet/roslynの依存パッケージを更新するプルリクエストです。Roslyn release/dev17.12ブランチの最新ビルド(20260817.1)に基づいて、Roslyn関連の複数のNuGetパッケージをバージョン4.12.0-3.26274.2から4.12.0-3.26417.1に更新しています。

変更内容

  • eng/Version.Details.xml: Roslyn依存パッケージのバージョン情報を更新(+8行/-8行)
  • eng/Versions.props: ビルドプロパティファイルのバージョン定義を更新(+3行/-3行)

更新対象パッケージ:

  • Microsoft.SourceBuild.Intermediate.roslyn
  • Microsoft.CodeAnalysis
  • Microsoft.CodeAnalysis.CSharp
  • Microsoft.Net.Compilers.Toolset

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このプルリクエストは自動化されたdotnet-maestroボットによるアップストリーム依存パッケージの自動更新です
  • Roslynのコンパイラおよびコード解析機能の最新改善が反映されます
  • release/9.0-stagingブランチへの更新のため、.NET 9.0のリリース準備の一環と考えられます

#132440 Add Composite ML-KEM base APIs

概要

Composite ML-KEM(ポスト量子暗号アルゴリズム)の基本的な公開API を System.Security.Cryptography に追加します。アルゴリズム識別子、OID配線、インポート/エクスポート機能を含みます。現在は全プラットフォームで NotSupported 実装となっており、プラットフォーム固有の実装は後続予定です。

変更内容

  • 公開API追加: CompositeMLKem および CompositeMLKemAlgorithm 型(ref定義と実装)をシステムライブラリに追加
  • OID定義: Composite ML-KEM のOID定数を Oids.cs に追加
  • インポート/エクスポート機能: SPKI/PKCS#8/PEM形式のキーインポート/エクスポート機能を基本クラスに実装
  • プラットフォーム実装スケルトン: CompositeMLKemImplementation に部分クラスのフック構造を用意し、現在は NotSupported スタブを提供
  • テスト基盤: アルゴリズム識別子テスト、契約テスト、ファクトリテスト、モック実装を含む包括的なテストスイートを追加
  • マルチターゲット対応: System.Security.Cryptography と Microsoft.Bcl.Cryptography の両方のテストプロジェクトにテストをリンク、NET11_0_OR_GREATER で型フォワーディング

パフォーマンスへの影響

影響なし(基本API定義とテストスケルトンのため、実装機能は NotSupported 段階)

関連Issue

#129633

その他

  • 内部実装(NotSupported スタブ)であり、公開APIの破壊的変更はなし
  • GitHub Copilot が当PRの作成を支援
  • プラットフォーム固有の実装(Linux/Windows など)は今後のPRで追加予定

#132437 Fix codegen of NotMask on x64

概要

x64のAVX-512マスク命令で、NotMaskが8レーン未満のマスクに対して不正なコード生成を行う問題を修正しました。knotb実行後に未使用ビットが設定されたままになり、後続のkmovb+popcntで誤った結果が返されていました。修正として、コード生成時にシフト命令で未使用ビットをクリアするロジックを追加し、マスク反転パターンの最適化変換も導入しました。

変更内容

  • hwintrinsiccodegenxarch.cpp: knotb/kxnorb実行後、レーン数が8未満の場合にkshiftlb/kshiftrbを使用して低バイトの未使用ビットをクリアする処理を追加
  • lowerxarch.cpp: LowerHWIntrinsicCmpOp内の専用シフト修正ロジックを削除し、TryInvertMask内で~(a | ~b)→~a & b変換を追加して差分回帰を回復
  • codegen.h: 関連する定義を追加
  • Runtime_124154テスト: ステートメント分割ストレス下での問題を再現し、複数レーン数での正確性を検証するJIT回帰テストを新規追加

パフォーマンスへの影響

マスク反転パターンの最適化により、Vector128<T>.Equalsのコード生成が改善されました(全体的により良い差分を実現)。未使用ビットのクリア処理は必要最小限に限定されているため、オーバーヘッドは軽微です。

関連Issue

#124154

その他

  • 修正はランタイム(JITコンパイラ)の内部実装であり、公開APIへの影響なし
  • ステートメント分割ストレスによる最適化抑制が原因で、通常のグローバルモルフがCompareEqualMask+NotMask→CompareNotEqualMask変換を実行できないケースに対応

#132436 [release/11.0-rc1] Fix PAL QueryThreadCycleTime test format macros

概要

RC1ブランチへの#132400のバックポート。テストビルドの破損を修正するため、QueryThreadCycleTimeテストのフォーマットマクロを修正しました。

変更内容

  • src/coreclr/pal/tests/palsuite/threading/QueryThreadCycleTime/test1/test1.cpp: テストのフォーマットマクロを修正(5行追加、4行削除)

パフォーマンスへの影響

影響なし

関連Issue

#132400

その他

このPRはテストスイートの修正であり、PAL(Platform Abstraction Layer)のスレッド関連テストに限定された変更です。


#132435 Avoid unnecessary allocations in single-file app bundle launch

概要

シングルファイルアプリの起動時に、バンドルに含まれるアセット(非抽出)に対して不要なネイティブメモリアロケーションを削減する最適化です。バンドルマニフェストアクセサでの参照返却、パス構築の遅延化、プローブフローの簡素化により、起動時間を2.50%削減し、ネイティブヒープ割り当てカウントを57.09%削減しました。

変更内容

  • deps_resolver.cpp: バンドルから直接解決されたアセットに対して早期にbundledを返却し、空のパスを使用するのを回避
  • deps_entry.cpp: バンドルプローブ後までcandidate.reserve()とパス構築を遅延化;抽出済み/非抽出アセット対応のトレース更新
  • runner.cpp/runner.h: 非抽出バンドルエントリに対する「偽の」オンディスクパス構築を回避;ロケーション機能の簡素化
  • file_entry.h: relative_path()を定数参照で返却してコピーを削減
  • args.cpp: 関連する調整

パフォーマンスへの影響

Windows x64 シングルファイル自己完結型空コンソールアプリ(TimeToMainシナリオで計測):

  • 起動時間: 81.033 ms → 79.007 ms(-2.50%)
  • ネイティブヒープ割り当てカウント: 36,318 → 15,585(-57.09%)
  • ネイティブヒープ割り当てバイト: 11,022.17 KB → 9,589.94 KB(-12.99%)

すべての実行で1.3~4.8%の改善を確認(10回実行×20回起動の平均値)

関連Issue

なし

その他

変更はホストランタイムのネイティブコード(hostpolicy/bundle関連)の内部実装に限定されており、公開APIへの影響なし。Copilotレビュアーから、runner.hの宣言と実装の不整合についてコメント指摘あり(詳細は確認が必要)。


#132434 Select latest installed Xcode 26 in macOS CI

  • 作成者: @agocke
  • 作成日時: 2026年08月17日 22:35:45(UTC)
  • マージ日時: 2026年08月19日 04:21:45(UTC)
  • ラベル: area-Infrastructure

概要

macOS CI環境でXcode 26を優先的に選択するよう Azure Pipelines ワークフローを更新します。macOS-15ホストイメージに含まれるXcode 26をランタイムで検出し、DEVELOPER_DIR環境変数を通じて後続タスクに公開することで、バージョン番号をハードコーディングせずにXcode 26でのビルドをサポートします。

変更内容

  • eng/pipelines/common/select-xcode.yml(新規): Xcode 26のインストール位置を検出しDEVELOPER_DIRを設定する再利用可能なステップテンプレート
  • eng/pipelines/libraries/run-test-job.yml: ライブラリテストジョブ内でApple依存関係インストール前にXcode選択を実行
  • eng/pipelines/diagnostics/runtime-diag-job.yml: Apple関連の診断ジョブおよびmacOS実行でXcode選択を実行
  • eng/pipelines/common/templates/runtimes/xplat-job.yml: Apple関連のランタイムジョブでXcode選択を適用(レビューコメントで参照されていないパラメータの問題が指摘)
  • eng/pipelines/common/global-build-job.yml: Apple関連のグローバルビルドジョブおよびmacOS実行でXcode選択を実行

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • YAML構文とスクリプトの妥当性確認済み(bash -nで検証)
  • このPRはCI/CDワークフロー設定の変更のみであり、ランタイムコードの変更を含みません
  • レビュー時にxplat-job.ymlで参照されている未宣言パラメータの問題が注摘されています

#132433 [release/11.0-rc1] NativeAOT: remove BOM from generated source/response files

概要

NativeAOT生成のソースおよびレスポンスファイルからBOM(Byte Order Mark)を削除する変更。source-build VMRビルドの破損を修正します。

変更内容

  • src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets: NativeAOTのUnixビルドターゲットで、生成されるソース/レスポンスファイルのBOM削除処理を追加(4行変更)

パフォーマンスへの影響

影響なし

関連Issue

#132408(オリジナルPR)

その他

  • release/11.0-rc1ブランチへのバックポート
  • source-build VMRビルドの互換性に関わる修正

#132409 JIT: Enable async inlining by default

概要

JITコンパイラの非同期インライニング機能をデフォルトで有効化する変更です。これまでオプト機能であった非同期メソッドのインライニングが、デフォルト動作として有効になります。

変更内容

  • src/coreclr/jit/jitconfigvalues.h: JIT設定値で非同期インライニングのデフォルト値を有効化(1行追加、1行削除)

パフォーマンスへの影響

非同期メソッドのインライニング有効化により、以下の改善が期待できます:

  • メソッド呼び出し時のオーバーヘッド削減
  • 命令キャッシュの効率向上
  • 非同期操作が頻繁に使用されるコードの実行速度向上

具体的な性能指標はこの情報には含まれていません。

関連Issue

なし

その他

この変更はJIT内部の設定値を対象とした内部実装の変更で、公開APIへの影響はありません。既存コードに対する破壊的変更はなく、むしろ多くのアプリケーションでパフォーマンス向上の恩恵を受けることが期待されます。


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

概要

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

変更内容

  • .config/dotnet-tools.json: dotnet toolsのバージョン情報を更新
  • eng/Version.Details.props: バージョン詳細の設定ファイルを更新
  • eng/Version.Details.xml: バージョン詳細のXML設定を更新

更新対象パッケージ:

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

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPull Requestはdotnet-maestro[bot]による自動依存関係更新です。release/10.0ブランチを対象としています。


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

概要

dotnet/xharnessの依存関係を更新するプルリクエスト。Microsoft.DotNet.XHarness関連のパッケージを11.0.0-prerelease.26370.1から11.0.0-prerelease.26413.1にアップデート。

変更内容

  • .config/dotnet-tools.json: XHarness CLIツールのバージョン更新
  • eng/Version.Details.xml: 3つのXHarnessパッケージの詳細バージョン情報を更新
    • Microsoft.DotNet.XHarness.CLI
    • Microsoft.DotNet.XHarness.TestRunners.Common
    • Microsoft.DotNet.XHarness.TestRunners.Xunit
  • eng/Versions.props: バージョン定義の更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

自動依存関係更新(dotnet-maestro[bot]による)。release/9.0-stagingブランチへの定期的なメンテナンス更新。


#132362 Adds metadata reference validation to ILVerify.

概要

ILVerifyにメタデータ参照の検証機能を追加しました。ILVerifyは型やメソッド検証の前に、サポートされているメタデータ参照の検証を実行します。各参照は独立して解決され、使用されていない無効な参照も報告されます。P/Invoke ModuleRefはネイティブライブラリを参照するためスキップされます。新しい --metadata-references-only オプションで、メタデータ参照検証のみを実行できます。

変更内容

  • Verifier.cs: メタデータ参照の検証ロジックを追加(263行追加)。参照の解決と検証、診断の重複排除機能を実装
  • Program.cs: --metadata-references-only コマンドラインオプションを追加(128行追加)、参照検証結果の処理
  • ILVerifyRootCommand.cs: オプション定義を追加
  • VerificationResult.cs: 参照検証結果の格納フィールドを追加
  • テスト: InvalidMetadataReferenceTests、UnusedMetadataReferenceTests、ValidMetadataReferenceModule の3つのテストケースセットを追加し、有効/無効な参照、使用されない参照をカバー

パフォーマンスへの影響

影響なし(検証段階の追加により実行時間は増加する可能性がありますが、具体的なベンチマーク結果の記載なし)

関連Issue

#96458

その他

  • メタデータ参照の解決失敗時の診断は、同一の解決失敗に対する重複出力を排除
  • --tokens オプション指定時はメタデータトークンを診断に含める
  • P/Invoke ModuleRefは検証対象から除外(ネイティブライブラリのため)

#132335 Remove multi-level lookup completely

  • 作成者: @elinor-fung
  • 作成日時: 2026年08月14日 18:48:36(UTC)
  • マージ日時: 2026年08月19日 05:11:28(UTC)
  • ラベル: area-Host

概要

マルチレベルルックアップ(Multi-Level Lookup: MLL)機能をネイティブホスティングレイヤーから完全に削除するPRです。関連Issue #131555 を解決します。

フレームワークと共有ストアの探索を単一のdotnet_rootのみに限定し、グローバルロケーション、DOTNET_MULTILEVEL_LOOKUP環境変数、TFMベースの互換性ゲーティングを削除しています。

変更内容

ネイティブコード(内部実装):

  • runtime_config.h/cpp: MLL関連API・互換性ヘルパーおよびTFMメジャーバージョン解析を削除
  • shared_store.cpp: グローバル共有ストアロケーションの探索を廃止、環境変数とmuxer相対パスのみ対応
  • pal.windows.cpp/unix.cpp/h: グローバルdotnetディレクトリ列挙API削除
  • utils.cpp/h: DOTNET_MULTILEVEL_LOOKUP解析とフレームワークロケーション集約ロジック削除
  • fx_resolver.cpp/h: マルチハイブフレームワーク探索を廃止、選択されたdotnet_rootのみから解決
  • framework_info.cpp/h: ハイブ深度追跡削除、<dotnet_root>/shared配下のみを列挙
  • hostfxr.cpp: startupinfo entrypoint用に空のdotnet_rootバリデーション追加、フレームワーク列挙シグネチャ調整

テスト・ドキュメント:

  • MultilevelLookup.cs: MLL動作専用のテストスイート削除(178行削除)
  • 複数のテストファイルから.MultilevelLookup()ヘルパー呼び出しを削除
  • テストユーティリティからDOTNET_MULTILEVEL_LOOKUP定数削除
  • ドキュメント(hosting-layer-apis.md, host-probing.md等)からMLL関連記述を削除

パフォーマンスへの影響

影響なし。単純化による探索パスの削減でむしろ起動時間が若干改善される可能性があります。

関連Issue

#131555

その他

  • 互換性への影響: 破壊的変更。DOTNET_MULTILEVEL_LOOKUP環境変数は機能しなくなり、空のdotnet_rootを渡すとバリデーションエラーになります
  • レビュー指摘: エラーメッセージが空文字列とnullptrを区別していない点を改善推奨(既存コードなので本PRで対応なし)
  • ファイル数: 34ファイル変更、主要削除がMultilevelLookup.cs(178行)、utils.cpp(56行)

#132306 [mono][wasm][AOT] Pin OP_MOVE destinations in the GC pin area

概要

WebAssembly上のMono LLVM-AOT環境で、OP_MOVE命令の宛先が不正に収集される問題を修正しました。アドレスを取得されたローカル変数をエイリアスすると、再代入時に元のオブジェクトへの参照がGCピン領域から削除され、GCによる移動時に宙吊り参照が生じていました。条件付きでピン留めを行うmove_needs_gc_pin関数を導入し、ソースが単一定義でアドレス取得されていない場合のみスキップすることで修正します。

修正対象となるソースコードのパターン:

GcRootBox cur = MakeGcRootBox(0);
TouchGcRootBox(ref cur);        // アドレス取得
for (int i = 1; i <= 128; i++) {
    GcRootBox alias = cur;      // OP_MOVE - エイリアス化
    cur = MakeGcRootBox(i);     // 元の参照を上書き
    GC.Collect();               // GC実行 - aliasが不正に収集される可能性
}

変更内容

mini-llvm.c:

  • OP_MOVE宛先のemit_gc_pin呼び出し除外条件を修正
  • move_needs_gc_pin関数を追加:ソースが単一定義かつアドレス取得されていない場合のみピン留めをスキップ
  • vreg_defcount配列を活用して各仮想レジスタの定義回数を追跡

GCTests.cs:

  • MovedAliasOfAddressTakenLocalIsRootedAcrossGCテストを追加:アドレス取得されたローカル変数のエイリアスがGC中に正しくピン留めされることを検証

パフォーマンスへの影響

AOT生成コード: +0.15% (+17,487バイト/非圧縮、+186バイト/brotli圧縮)

  • 約79%のOP_MOVEはスキップされ(ソースが単一定義かつ非address-taken)、約21%のみピン留めされる
  • 条件なく全てピン留めする場合と比較して9.5倍のサイズ削減

ユーザーがダウンロードする最終成果物(brotli圧縮)への影響は測定ノイズレベル。

関連Issue

#130592、#132180

その他

本修正はAOT codegen側の対応。インタプリタモード(非AOT)では問題が発生しない。WebAssemblyは保守スタック非対応のため、GC参照の保持に専用のピン領域が必須。修正対象パターンは稀ではなく、AOT対象の5アセンブリ中の252メソッドで発見されている。


#132296 Add Agent Merge CI guardrails to Copilot instructions

概要

Copilot Agent Mergeに対してdotnet/runtime固有のCI検証ガイドラインを追加します。CI再実行によるノイズを防ぎ、CIシグナルをマスキングしない方針を徹底し、ビルド失敗の分類プロセスを標準化します。

変更内容

  • .github/copilot-instructions.md: Agent MergeのCI確認解決に関するセクションを追加し、/azpの使用禁止とPRの閉じ直し再実行の禁止を明記
  • .github/skills/create-kbe/SKILL.md: Build Analysisとci-analysisスキルを使用して非known失敗を分類し、PR由来の問題修正と未関連の失敗に対するKnown Build Error (KBE)課題の作成/更新プロセスを記載
  • .github/workflows/ci-failure-scan.md: CI失敗スキャンワークフローのドキュメント更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更はCI/CD自動化ツールの構成ドキュメント更新であり、ランタイムコードや公開APIへの影響はありません。Agent Mergeのプロセス改善に関する変更です。


#132289 Add standalone runtime test repro skills

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年08月13日 19:22:37(UTC)
  • マージ日時: 2026年08月19日 21:04:15(UTC)
  • ラベル: area-skills

概要

Runtime CI障害の再現を容易にするため、GitHub Copilot skills を通じてマネージド src/tests テストをスタンドアロン コンソール アプリケーションに抽出し、corerun で直接実行可能にする仕組みを追加しました。ラッパーパス/完全修飾メソッド名から対応するプロジェクトとソースメソッドを解決し、シナリオ環境変数とプロジェクト環境変数をマージして生成します。

変更内容

  • .github/skills/test-scenario-env/SKILL.md: src/tests/Common/testenvironment.proj を MSBuild で評価し、CoreRun 互換の .env ファイルを生成するスキルを追加。プロジェクトの CLRTestEnvironmentVariable と統合可能。
  • .github/skills/standalone-test-repro/SKILL.md: ラッパー/完全修飾メソッドからプロジェクトとソースメソッドを特定し、artifacts/tmp にスタンドアロン repro アプリを抽出する統合ワークフローを追加。
  • .github/skills/standalone-test-repro-method/SKILL.md: 完全修飾メソッド名/xUnit 表示名からテストを解決するサブスキルを追加。
  • .github/skills/standalone-test-repro-cmd/SKILL.md: 生成された .cmd/.sh ラッパーパスからテストを解決し、実際の実行コマンドをキャプチャするサブスキルを追加。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 検証では、45 プロジェクトにわたる 100 個の一意の Windows x64 互換テストに対して deterministic fleet run(seed 20260812)を実施。
  • 全 100 個のオリジナルメソッドとスタンドアロン repro ともに、期待される終了コード 100 で終了。
  • RequiresProcessIsolation = true のテスト 5 件(インデックス 37, 47, 65, 86, 93)は、各々独立した corerun プロセスで実行。
  • 環境変数設定とローカル ネイティブ依存関係が保持・実行確認済み。

#132224 Calibrate copilot-instructions for non-Opus models

概要

dotnet/runtimeリポジトリのCopilot動作ガイドライン(.github/copilot-instructions.md)を更新し、自動選択される弱いモデルの失敗パターンに対応しました。新たに4つのルール(タスク完了まで中断しない、発見事項を報告する、全ての質問に答える、ツール/スキル名を文字列ではなく機能として扱う)を追加し、既存の4つのルールを明確化しました。特に「Tool and skill names are capabilities, not literals」ルールは、リポジトリ内のスキル呼び出しが文字列マッチに依存するため重要です。

変更内容

  • .github/copilot-instructions.md: 新規ルール4行追加、既存ルールの曖昧性を除去するための明確化・拡張を実施(+14/-6行)
    • 新規ルール:「Finish the task before you yield」「Volunteer what you notice」「Answer every question」「Tool and skill names are capabilities, not literals」
    • 既存ルール改善:
      • Validationルール:テストの義務化を明確化、コメント/ドキュメント例外を保持しつつ型チェック失敗は許さない仕様に
      • Push指示ルール:「プッシュ要求=プッシュ指示」として曖昧性を解消、独立していない並列ツール呼び出しの定義を厳密化
      • Review feedback対応:Issueをレビューコメント同様にサンプルとして扱う指示を追加
    • 構造変更なし

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 本変更は3つのモデルファミリーで実際のタスク追跡により検証済み
  • Push矛盾はすべてのモデルで検出され、1つのモデルは実際にこのバグで失敗(コミット後に停止して許可を求める)
  • 最終検証で2つのモデルからブロッキング指摘なし
  • PR説明はGitHub Copilotにより作成

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

概要

dotnet/cecilの依存関係を更新するPull Requestです。Microsoft.SourceBuild.Intermediate.cecilおよびMicrosoft.DotNet.Cecilが0.11.5-alpha.26404.3から0.11.5-alpha.26418.4にアップデートされています。

変更内容

  • eng/Version.Details.xml: dotnet/cecilの依存関係情報を更新(+4/-4行)
  • eng/Versions.props: バージョン番号を更新(+1/-1行)

更新内容:

  • Microsoft.SourceBuild.Intermediate.cecil: 0.11.5-alpha.26404.3 → 0.11.5-alpha.26418.4
  • Microsoft.DotNet.Cecil: 0.11.5-alpha.26404.3 → 0.11.5-alpha.26418.4

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPull Requestは自動化された依存関係更新ツール(dotnet-maestro)による定期的な更新です
  • release/9.0-stagingブランチへの更新であり、.NET 9.0向けの依存関係管理です
  • 変更は設定ファイルのみで、ランタイムコードには直接の影響なし

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

概要

dotnet/icuリポジトリからの依存関係を更新するPRです。Microsoft.NETCore.Runtime.ICU.Transportを9.0.0-rtm.26407.5から9.0.0-rtm.26418.3にアップグレードしています。release/9.0-stagingブランチ向けの自動更新です。

変更内容

  • eng/Version.Details.xml: Microsoft.NETCore.Runtime.ICU.Transportの参照を更新(26407.5 → 26418.3)
  • eng/Versions.props: ICU関連のバージョン情報を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはdotnet-maestro[bot]による自動依存関係更新です。dotnet/icuのdotnet/release/9.0ブランチのコミットb5d4ef3に基づいています(2026年8月18日ビルド)。


#132178 Fix unordered DiagnosticsHelper tag comparison

概要

DiagnosticsHelper.CompareTagsメソッドの不具合を修正。順序が異なるタグを比較する際に、値が異なる場合でも等しいと判定されていた問題を解決しました。修正により、異なるタグ値を持つメーターまたはインストルメントが誤って再利用されるケースを防ぎます。

変更内容

  • src/libraries/Common/src/System/Diagnostics/DiagnosticsHelper.cs

    • CompareTagsメソッドのロジックを改善。順序なしタグのコレクション内の各タグに対して、すべてのマッチしていないソート済みタグをスキャンするアルゴリズムに変更
  • src/libraries/System.Diagnostics.DiagnosticSource/tests/MetricsTests.cs

    • インストルメント キャッシュが、順序が異なるタグによって値が異なる場合にインストルメントを再利用しないことを検証するテストケースを追加

パフォーマンスへの影響

影響なし。内部的な等価性比較ロジックの修正であり、パフォーマンス関連の変更ではありません。

関連Issue

#119264

その他

  • リスク評価: Low - 順序なしタグの内部等価性マッチングのみに限定した変更
  • テスト: System.Diagnostics.DiagnosticSource.Tests で検証済み
  • 互換性: 内部実装の修正であり、公開APIへの影響なし

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

概要

dotnet/dotnetリポジトリからの定期的なコードフロー更新です。このPRはVMRから.NET Runtime release/10.0ブランチへのソースコード変更と依存関係の更新を含みます。主にコンパイラ、ビルドツール、テストユーティリティ、ランタイムコンポーネントの依存パッケージが更新されています。

変更内容

  • バージョン情報の更新: eng/Version.Details.propsとeng/Version.Details.xmlが更新され、複数の依存パッケージのバージョン番号が変更
  • Microsoft.CodeAnalysis関連: 5.0.0-2.26403.103から5.0.0-2.26411.108へ更新(Analyzers、CSharpも含む)
  • *Microsoft.DotNet.ビルドツール: 10.0.0-beta.26403.103から10.0.0-beta.26411.108へ更新(Arcade SDK、Build Tasks各種、GenAPI、Helix SDKなど複数)
  • NuGet関連: 7.0.3-rc.40403から7.0.3-rc.41208へ更新(Frameworks、Packaging、ProjectModel、Versioning)
  • WebAssembly Runtime: Node.Transportパッケージが10.0.0-alpha.1.26377.2から10.0.0-alpha.1.26407.3へ更新(複数プラットフォーム対応)
  • GitHub認証関連: Get-GitHubAppToken.ps1スクリプトが新規追加され、GitHubアプリトークン取得ロジックが複数の場所で追加
  • ビルドパイプライン更新: OneLocBuild、CodeQL、publish-build-assetsの設定が調整

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはdotnet/runtimeの他、arcade、aspnetcore、efcore、sdk、windowsdesktop、winforms、wpf、sourcelink、templatting等の複数リポジトリからの変更を統合するコードフロー更新です。GitHub App認証トークン処理の強化が含まれており、ビルドパイプラインのセキュリティが向上しています。


#132131 Upgrade Vally eval tooling to 0.14

  • 作成者: @vitek-karas
  • 作成日時: 2026年08月11日 12:52:25(UTC)
  • マージ日時: 2026年08月19日 09:29:45(UTC)
  • ラベル: area-skills

概要

Vally eval toolingを0.7.0から0.14.0にアップグレードし、評価ワークフローを最新スキーマに対応させました。LLM判定基準をstimulus rubricsに移行し、trajectory/diffエビデンスを提供。ツールコール検査をLinux/Windows間で互換性を持たせ、ローカルセットアップ要件を文書化しました。

変更内容

  • @microsoft/vally-cliを0.7.0から0.14.0へアップグレード(package.json、package-lock.json更新)
  • 評価仕様YAML(3ファイル)を新しいVally 0.14スキーマに対応:LLM判定基準をstimulus rubricsに移行、trajectory/diffエビデンス追加
  • ツールコール検査をbash|powershellに対応させ、Windows/Linux両環境で動作可能に
  • CI eval workflowでnpmバージョンピン留め(Vally 0.14のNode-onlyエンジン要件に対応)
  • ローカルセットアップ要件をREADMEに文書化

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

検証結果:

  • 依存関係監査:脆弱性0件
  • 厳密なlint:3つの評価仕様すべてがNode 22.23/npm 10.9下で合格(npmアップグレード不要)
  • 保存済みの3つのライブトラジェクトリがVally 0.14.0で再採点成功
  • 元のDocker対応評価結果:全9グレーダー、CI失敗スキャン100%、6グレーダーのCI失敗修正100%、4グレーダーのCI失敗フィードバック100%

注記: Copilotの概要では0.13.0と記載されていますが、作成者による正式な概要では0.14.0へのアップグレードです。


#132090 Move IidParameterIndexMarshallerResolver into Microsoft.Interop.SourceGeneration default resolvers

概要

IidParameterIndexMarshallerResolverをComInterfaceGenerator専用から共有ソース生成インフラストラクチャの既定リゾルバーへ移動することで、Microsoft.Interop.SourceGenerationを使用する任意のジェネレーターから利用可能にします。マーシャリング動作自体に変更はなく、リゾルバーの登録場所の再構成のみです。

変更内容

  • IidParameterIndexMarshallerResolver.csをComInterfaceGenerator/Marshallers/からMicrosoft.Interop.SourceGeneration/Marshalling/に移動
  • DefaultMarshallingGeneratorResolver.Createに登録し、ComInterfaceGenerator専用ではなくMicrosoft.Interop.SourceGenerationを消費する全ジェネレーターのコア機能として利用可能に
  • ComInterfaceGeneratorHelpers.csから冗長な明示的登録を削除

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 既存のマーシャリング動作およびUnmanagedToManaged条件下でのみ動作する制約に変更なし
  • ソース生成インフラの共有化により、今後COM相互運用性関連の機能の再利用性が向上

#132070 Remove dead references to WasmRuntimeAssetsLocation

概要

WebAssembly(Wasm)ビルドシステムにおいて、WasmRuntimeAssetsLocation MSBuildプロパティの互換性のために存在していた不要なコードと誤解を招く参照を削除しました。プロパティ定義自体は WasmApp.Common.targets に残し、後方互換性を維持しています。

変更内容

  • WasmApp.Common.targets — WasmRuntimeAssetsLocation プロパティ定義(デフォルト値: _framework)と関連ドキュメントを保持
  • features.md — WasmRuntimeAssetsLocation で _framework フォルダをフラット化できるという誤った説明を削除
  • GenerateWasmBootJson.cs — 実装されていない機能についての古いコメント 2 件を削除(パス処理ロジックは変更なし)
  • WasmTemplateTests.cs / WasmTemplateTestsBase.cs — デッドコードである runtimeAssetsRelativePath パラメータ、WasmRuntimeAssetsLocation プロパティ注入、未使用の DefaultRuntimeAssetsRelativePath 定数を削除

パフォーマンスへの影響

影響なし

関連Issue

#132069

その他

  • テスト内で runtimeAssetsRelativePath パラメータはデフォルト値のみ使用されており、非デフォルトケースは既に ActiveIssue #90979 でコメントアウトされていました
  • 削除後の UpdateBrowserMainJs の全呼び出しは、パラメータ削除後も有効なシグネチャを使用しています
  • 本変更後、ソースツリーに WasmRuntimeAssetsLocation への参照は残っていません

#132063 [main] Update dependencies from dnceng/internal/dotnet-optimization

概要

dotnet-optimization リポジトリから最適化関連の依存関係を更新するPRです。MIBC(Minimum Intermediate Block Count)ランタイムおよびPGO(Profile-Guided Optimization)CoreCLRのプリリリースバージョンを1.0.0-prerelease.26403.1から1.0.0-prerelease.26407.1に更新しています。

変更内容

  • eng/Version.Details.props: 6行の依存関係バージョン更新
  • eng/Version.Details.xml: 12行の依存関係バージョン更新

更新対象の依存関係:

  • optimization.linux-arm64.MIBC.Runtime
  • optimization.linux-x64.MIBC.Runtime
  • optimization.windows_nt-arm64.MIBC.Runtime
  • optimization.windows_nt-x64.MIBC.Runtime
  • optimization.windows_nt-x86.MIBC.Runtime
  • optimization.PGO.CoreCLR

パフォーマンスへの影響

MIBC最適化データとPGOデータの更新であり、ランタイムのパフォーマンス最適化に関連していますが、具体的なベンチマーク結果は提供されていません。

関連Issue

なし

その他

  • このPRはMaestroボットによる自動更新です
  • 更新元:dnceng/internal/dotnet-optimization リポジトリ(内部用)
  • 生成日時:2026年8月7日 UTC
  • 対象ブランチ:main

#132040 Reduce the GC handle cost of every RCW in ComWrappers

概要

ComWrappersが作成するRCW(Runtime Callable Wrapper)ごとのGCハンドルコストを削減します。従来は2つのWeakハンドル(WeakとWeakTrackResurrection)をプロキシオブジェクトに割り当てていましたが、新しいRuntimeHelpers.ObjectHasFinalizerを使用してファイナライザーがないプロキシに対しては1つのハンドルに削減します。また、強い型付けのWeakGCHandle<T>を使用してハンドル操作を最適化します。

// ファイナライザーなしの場合は1つのハンドルで十分
bool hasFinalizer = RuntimeHelpers.ObjectHasFinalizer(comProxy);
if (!hasFinalizer)
{
    _proxyHandle = GCHandle.Alloc(comProxy, GCHandleType.WeakTrackResurrection);
    // 追加の resurrection tracking ハンドルは不要
}

変更内容

  • ComWrappers.cs: プロキシハンドルをWeakGCHandle<object>に変更し、RuntimeHelpers.ObjectHasFinalizerを用いてファイナライザーなしの場合はWeakTrackResurrectionハンドル1つのみ割り当て。RCWキャッシュをプロセッサごとのバケットに分割。
  • RuntimeHelpers.CoreCLR.cs / RuntimeHelpers.NativeAot.cs: 内部API RuntimeHelpers.ObjectHasFinalizerを追加(MethodTableから直接読み込み)。
  • TrackerObjectManager.cs / TrackerObjectManager.NativeAot.cs: プロキシハンドルの参照取得時にTryGetTargetを使用。
  • テストの更新: RCW復活シナリオ(他のオブジェクトのファイナライザーによる復活)を検証するテスト追加。

パフォーマンスへの影響

9~13%のRCW構築高速化(CsWinRTベンチマーク)

  • ConstructProjectedClassWithInt: −12.3% (CsWinRT 2.x) / −13.1% (CsWinRT 3.0)
  • ConstructFastAbiProjectedClassWithInt: −12.5% (2.x) / −11.1% (3.0)
  • ConstructManyProjectedClassesWithInt: −10.2% (2.x) / −12.4% (3.0)
  • ConstructProjectedClassWithString: −1.3% ~ −2.2% (HSTRING処理が支配的)

ハンドル割り当て・開放処理が顕著な高速化要因。GCハンドルテーブルのソート処理(ファイナライザースレッドで35%)の減少に貢献。

関連Issue

#132033、#132058

その他

  • 互換性: 公開API変更なし。呼び出し元による変更は不要で、ファイナライザーなしのプロキシ型に自動的に適用される。
  • 破壊的変更なし: 既存コードに対する互換性維持。
  • NativeAOT対応: CoreCLRとNativeAOTの両方で実装。
  • 検証: ハンドル数の削減を反射で確認済み。キャッシュ削除動作は変更なし。

#131970 Use ubuntu-slim for trivial GitHub Actions

  • 作成者: @vcsjones
  • 作成日時: 2026年08月06日 21:31:05(UTC)
  • マージ日時: 2026年08月19日 10:46:14(UTC)
  • ラベル: area-Meta

概要

GitHub Actionsのメタタスク用ワークフロー2つを、ubuntu-latestからubuntu-slimランナーに変更します。リポジトリのクローンを必要としないメンテナンス作業に対して、起動時間が短く費用効率の良い軽量ランナーを使用することで、パイプライン効率を改善します。

変更内容

  • .github/workflows/check-service-labels.yml: ラベルチェックジョブのランナーをubuntu-latestからubuntu-slimに変更
  • .github/workflows/check-no-merge-label.yml: NO-MERGEラベルチェックジョブのランナーをubuntu-latestからubuntu-slimに変更

パフォーマンスへの影響

  • ランナー起動時間の短縮
  • GitHub Actionsの実行コストの削減
  • 該当ワークフローは軽量メタタスク(ラベル操作)のため、実行時間への悪影響なし

関連Issue

なし

その他

なし


#131957 [browser][CoreCLR] Gate remaining priority-1 outerloop failures

概要

CoreCLRブラウザビルドの優先度1の外部ループテスト失敗を対処するPRです。ブラウザ環境がProcess.GetCurrentProcessとプロセスPIDベースの診断クライアント収集をサポートしないため、4つのEventPipeイベント検証プロジェクトをゲートします。また、ContextualReflectionインタープリタ失敗を追跡済みActiveIssueで一時的に抑制し、Server GCがコア設計によってブラウザで無効化されていることを明確化します。

変更内容

  • GetTotalAllocatedBytesServerGC.csproj: Server GCがブラウザで無効化されていることの明確化に関連する構成変更
  • EventPipe検証プロジェクト(4件): ExceptionThrown_V1.csproj、GCEvents.csproj、GCFinalizers.csproj、SampleProfilerSampleType.csprojにゲート条件を追加
    • これらはProcess.GetCurrentProcessを使用するため、CoreCLRブラウザビルドから除外
  • ContextualReflection.cs: #131925のActiveIssueを通じた一時的な抑制(インタープリタ失敗対処)

パフォーマンスへの影響

影響なし(テスト実行のゲート化のみ)

関連Issue

#131321、#131898、#131925

その他

  • 検証済み: origin/main(663c457b86ccd35743374676a69de5ed97bc3b14)でChecked browser clr+libsベースライン合格(警告0、エラー0)
  • 関連修正(#132078、#132172)は既にメインブランチに含まれており、該当テストはブラウザ検証で合格
  • EventPipeプロジェクトはJS/WebSocketベースのブラウザ診断クライアントを使用すべき設計

#131953 Update container image digests

概要

dotnet-buildtools/prereqsコンテナイメージのダイジェスト値を一括更新するAutomated Dependency Update。複数のプラットフォーム向けビルドツール前提条件イメージが更新されており、ビルドパイプライン構成ファイル内で参照されるコンテナイメージハッシュ値が更新されています。

変更内容

  • eng/pipelines/common/templates/pipeline-with-resources.yml: 25行のコンテナイメージダイジェスト値を更新
  • eng/pipelines/coreclr/templates/helix-queues-setup.yml: 10行のコンテナイメージダイジェスト値を更新
  • eng/pipelines/installer/helix-queues-setup.yml: 4行のコンテナイメージダイジェスト値を更新
  • eng/pipelines/libraries/helix-queues-setup.yml: 22行のコンテナイメージダイジェスト値を更新

計42個のmcr.microsoft.com/dotnet-buildtools/prereqsイメージのダイジェストが新バージョンに更新されています。

パフォーマンスへの影響

影響なし(ビルドインフラストラクチャの更新のため、ランタイム/ライブラリのパフォーマンスへの直接的な影響はありません)

関連Issue

なし

その他

  • このPRは.NET Renovate Botにより自動生成された依存性更新です
  • 変更内容は純粋にコンテナイメージダイジェスト値の更新のみで、機能変更や破壊的変更はありません
  • ビルドパイプラインで使用されるコンテナイメージが最新の状態に保つことが目的です

#131778 Move shared WASM logic to base writer

  • 作成者: @jtschuster
  • 作成日時: 2026年08月03日 23:06:14(UTC)
  • マージ日時: 2026年08月19日 23:11:53(UTC)
  • ラベル: area-ReadyToRun

概要

WebAssemblyオブジェクトライターの共通ロジックをリファクタリングするもので、動作上の変更はありません。セクションマッピング、シンボル管理、セクション生成順序の共通処理を新しいWasmObjectWriter基底クラスに抽出し、WebCIL固有のロジックはWebCilObjectWriterに留めます。これにより、将来的に複数のWebAssemblyオブジェクトライターで共有可能な汎用実装の基盤が整備されます。

変更内容

  • WasmObjectWriter.cs(新規作成): WebAssemblyセクション構成、シンボル/インデックス空間管理、セクション生成順序の共通処理を実装した基底ライター
  • WebCilObjectWriter.cs: 共有処理を基底クラスに委譲し、WebCIL固有のデータセクションファクトリをオーバーライド。WebCIL固有のインポート/エクスポート/グローバル/レイアウト処理は保持
  • WasmSection.cs: WebAssembly生成/セクションインターフェイスを明示的にinternalに変更
  • ILCompiler.ReadyToRun.csproj: 新しい基底ライターをコンパイル対象に追加

パフォーマンスへの影響

影響なし(リファクタリングのみで動作上の変更なし)

関連Issue

なし

その他

  • Copilotレビューで指摘: グローバルインデックス定数(StackPointerGlobalIndex等)がWasmGlobalImportsとWebCilObjectWriterに重複定義されており、単一の情報源を保つことで将来の編集時のズレを防ぐことが望ましい(現在は仕様通り両方で保持)
  • ReadyToRun.csprojでWebCILライターの記述が重複している可能性あり(レビュー時点では現状維持)

#131745 Arm64-SVE: Fixes for passing Vector<T> by reference in reflection calls

概要

ARM64 SVE(Scalable Vector Extension)対応において、reflection経由でVector<T>を参照渡しする際の引数分類と戻り値フラグの処理を修正しました。従来のサイズチェック(単なるポインタサイズ判定)の代わりに、IsArgPassedByRef()を使用することで、スケーラブルなVector<T>が正しく参照渡しとして処理されるようになり、segmentation faultの発生を防ぎます。

変更内容

  • src/coreclr/vm/callingconvention.h: ArgIteratorTemplate::GetNextOffsetとArgIteratorTemplate::ComputeReturnFlagsのロジックを更新。IsArgPassedByRef()メソッドを使用して、非HFA値型の引数分類と戻り値フラグの判定を正確化しました。
  • テストファイル追加: GitHub_131745用の回帰テストケースを新規追加(C#テストコードとプロジェクトファイル)。

パフォーマンスへの影響

影響なし

関連Issue

#131745

その他

  • この修正はCoreClrのARM64呼び出し規約(calling convention)の内部実装であり、公開APIの変更はありません。
  • Reflection経由の値型引数受け渡しは相対的に使用頻度の低いシナリオですが、正確な引数分類により潜在的なクラッシュを防ぎます。
  • ARM64 SVE環境でのVector<T>スケーラブル型の扱いについて、引数渡しと戻り値処理の両方をカバーしています。

#131610 Fix CrossGen2 TypeMap blob-only type references

  • 作成者: @jkoritzinsky
  • 作成日時: 2026年07月30日 19:44:19(UTC)
  • マージ日時: 2026年08月19日 21:14:17(UTC)
  • ラベル: area-ReadyToRun

概要

CrossGen2/ReadyToRun コンパイルで、カスタム属性のブロブ内にのみ参照される型(TypeRef 行や AssemblyRef 行がない)に対応するため、TypeMap ペイロード生成を修正しました。System.Type 値がカスタム属性ブロブ内にのみ存在する場合でも必要なトークンを生成できるようにし、このメタデータ形状をカバーする回帰テストを追加しています。

変更内容

  • テスト追加:ブロブのみで TypeMap 型をエンコードする IL テストプロジェクト(TypeMapBlobOnlyLib.il/.ilproj)を新規作成し、TypeMapApp テストに検証ロジックを追加
  • 型参照エンコーディング拡張:INativeFormatTypeReferenceProvider にモジュールコンテキストの受け渡し対応を実装
  • MutableModule 拡張:TypeRef テーブルスキャンでは AssemblyRef 名が推定できない場合のフォールバック処理を追加
  • トークン管理の改善:ReadyToRunCodegenCompilation でトークンマネージャーの初期化を早期化し、ImportReferenceProvider に提供してモジュールコンテキスト時の def トークン事前作成を確保
  • TypeMap 処理パイプライン更新:ReadyToRunProxyTypeMapNode、ReadyToRunExternalTypeMapNode、TypeMapAssemblyTargetsNode で発動モジュールコンテキストを渡すように一貫性を持たせた

パフォーマンスへの影響

影響なし

関連Issue

#131527

その他

Copilot によるレビューで、ImportReferenceProvider.cs の EncodeReferenceToType メソッドでモジュール引数がオプショナル(デフォルト null)だが Debug アサーションで not null を要求する矛盾が指摘されています。将来の呼び出し時に問題になる可能性があります。


#131552 Enable contracts for new holders and refactor Crst initialization

概要

EE(Execution Engine)コントラクト検証をホルダー(holder)の解放パスで有効化し、CoreCLR、GC、NativeAOT、スタンドアロンILツール全体でコントラクト使用法を統一します。主な変更は、Crst初期化の標準化(InitNoThrow廃止)、ENABLE_EE_CONTRACTSゲートの導入、IsIPInModuleをutilcodeからVMに移動することです。

変更内容

  • Crst初期化の標準化:CrstStatic::InitNoThrowを廃止し、VM/GC/NativeAOT全体でInitに統一(src/coreclr/vm/crst.h、src/coreclr/vm/crst.cpp、src/coreclr/gc/env/gcenv.sync.hなど)
  • コントラクト語彙の一元化:src/coreclr/vm/eecontract.hでENABLE_EE_CONTRACTSを導入し、ホステッドコントラクト機構をホストレス・診断構成から分離
  • ホルダーコントラクト強化:src/coreclr/inc/holder.hのReleaseHolderTraits::FreeでENABLE_EE_CONTRACTS下での完全CONTRACTLサポートを追加
  • IsIPInModuleの移動:src/coreclr/utilcode/util.cppからsrc/coreclr/vm/util.cppへ移動し、EEDebugInterface経由でデバッガに公開(src/coreclr/vm/eedbginterface.h、src/coreclr/vm/eedbginterfaceimpl.h)
  • メタデータ/型読み込みコントラクト強化:src/coreclr/inc/metadata.hにロック取得コントラクトでGC_NOTRIGGERを追加
  • IL ツール build調整:CMakeLists.txt更新でENABLE_EE_CONTRACTSゲート下でのコンパイル互換性確保

パフォーマンスへの影響

影響なし。本変更は検証・デバッグ契約の整理とAPI標準化であり、ランタイム動作に直接的な性能変化なし。

関連Issue

なし

その他

  • Fault-contract annotation cleanup は意図的に後続のフォーカスされたPRに委譲
  • Copilot検証でコード品質上の指摘多数(CrstBase::InitWorkerでのminipal_mutex_init失敗処理、holder.h内のインデント不整合など)があり、フォローアップ推奨
  • 公開APIの場合:IsIPInModuleはEEDebugInterfaceとして新規公開、内部実装:ほぼ内部構造の整理
  • 破壊的変更:CrstStatic::InitNoThrow廃止(呼び出しサイト全て更新済み)

#131244 Populate PrivateMemorySize64 on macOS

概要

macOS上でProcess.PrivateMemorySize64が常に0を返していた問題を修正しました。proc_pid_rusage(RUSAGE_INFO_V3)のri_phys_footprintフィールドを使用してプライベートメモリサイズを取得し、Activity Monitorのメモリ列と同じ値を報告するようになります。権限チェックは既存のproc_pidinfoと同じ動作に従い、他のユーザーのプロセスに対してはEPERMで適切に失敗します。

変更内容

  • Interop.libproc.cs: proc_pid_rusage及びRUSAGE_INFO_V3構造体の新しいinteropヘルパーを追加
  • ProcessManager.OSX.cs: ProcessInfo.PrivateBytesを物理フットプリント値から設定するように変更
  • ProcessTests.cs: macOSでPrivateMemorySize64/PrivateMemorySizeが0より大きい値を返すことを検証するテストアサーションを更新
  • プロジェクトファイル: OSX/MacCatalystプラットフォーム用のビルド構成に新しいinteropソースを追加

パフォーマンスへの影響

影響なし(メモリ取得APIの追加であり、パフォーマンスクリティカルな変更ではありません)

関連Issue

#105665

その他

  • 変更はmacOS/MacCatalystプラットフォームのみに限定
  • サンドボックス化されたアプリを含む、現在のユーザー所有のプロセスに対してクロスプロセスで動作確認済み
  • task_for_pid()またはroot権限は不要

#131231 Widen the internal Number.BigInteger buffer to nuint

概要

内部のNumber.BigInteger(浮動小数点の解析、フォーマット、丸め処理で使用)とSystem.Numerics.BigIntegerCalculatorのブロック幅をuintからnuintに拡張し、64ビットプラットフォーム上でレジスタの上半分を有効活用します。同時に、重複していた算術カーネル(加減算、乗除算)を新しい共有実装BigIntegerCalculator.Shared.csに統一し、約1300行のコード削減を実現します。

変更内容

  • ブロック幅の拡張: BigIntegerのブロックバッファをnuintベースに変更。64ビットでUInt128、32ビットでulongを使用した算術操作により、JIT時に最適化。
  • 共有カーネルの新規作成: BigIntegerCalculator.Shared.csを作成し、加減算・比較・乗除算の学校式アルゴリズムを実装。CoreLibとSystem.Runtime.Numericsの両方で再利用。
  • 重複コードの削除: System.Runtime.NumericsからAddSub.cs(231行)、DivRem.cs(136行)、Utils.cs(366行)を削除し、共有実装に統一。
  • ブロックアクセッサの変更: GetBlock32をnuint対応のGetBits64(bitIndex)(64ビット時は単一読み込み)とHasZeroTail(bitCount)(末尾ゼロスキャン)に置換。
  • テーブル再利用: UInt32.PowersOf10をinternal化し、重複を排除。
  • Dragon4の最適化維持: HeuristicDivideはnint.Size == 8の定数折りたたみで特化版を維持し、ToString("G50")の40%以上の低下を回避。

パフォーマンスへの影響

  • 肯定的な影響: 64ビット上で学校式カーネル(加減乗除)が1ステップあたりネイティブワードを処理するため、理論上最大50%の効率化が期待できます。
  • 注意点: HeuristicDivideは共有カーネルを経由すると40%以上の性能低下が報告されており、Dragon4パス(ToString())で高頻度に実行されるため、特化版を維持。
  • ベンチマーク: 詳細な測定値は進行中。

関連Issue

#131231

その他

  • 検証: x64/x86(checked)でビルド成功。System.Runtime.Tests(4608パス)、System.Runtime.Extensions.Tests(3583パス)、System.Runtime.Numerics.Tests(8422パス)すべて合格。
  • 互換性: 内部実装の変更のため、公開APIへの影響なし。
  • 注記: PR説明はGitHub Copilotによって作成されました。

目次