注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #129579 Fix debug build of libraries tests
- #129572 Remove unneeded message printed in case of Tizen build
- #129569 [ci-scan] Use blocking-clean-ci-optional for JIT/GC/PGO stress pipeline KBEs
- #129550 Disable
CustomReflectionContextExamples.AddCustomAttributeon NativeAOT via existing tracking issue - #129539 Fix objRef not being stored in GetPointerData after DebuggerIPCE_ObjectData refactor
- #129531 Fix assembly labels on MacOS X64 to be LOCAL_LABEL
- #129529 Add DerivedTypes property to IsClosedTypeAttribute
- #129520 [cDAC] Add RuntimeFlavor to IRuntimeInfo and expand NAOT data descriptor
- #129514 [clr-ios] Disable Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests on Apple mobile
- #129512 Implement StartSuspended for Windows and Resume on SafeProcessHandle
- #129494 [Wasm RyuJit] Add Wasm SIMD NYIs, fix PushArgs assert, fix Async/Try/SCC issue.
- #129479 Port System.Net.Security to OpenBSD
- #129473 [release/10.0] Fix ComInterfaceGenerator collision on same-named methods in disjoint cross-assembly bases
- #129466 [browser][coreCLR] fix resource merging
- #129428 Improve WebSocket exceptions to include informative messages
- #129411 [cDAC]: Implement GetEnCHangingFieldInfo
- #129402 Skip UnmanagedCallersOnlyAssociatedSourceType test on Android
- #129321 JIT: Fix managed return value debug info for floating-point returns
- #129316 Cache NativeAOT Visual Studio tool discovery
- #129293 [mobile] .NET 11 mobile runtime configuration updates
- #129278 Handle canonical types in constraints checks
- #129203 Fix LoaderHeap's free list growing more than expected
- #129189 Pre-initialize InvariantCulture such that it can be safely used when creating stack traces
- #129091 [cDAC] Stackwalk DacDbi APIs
- #127760 [clr-interp] Implement Managed Return Value support for the interpreter
- #127582 Fix NoopLimiter disposal in DefaultPartitionedRateLimiter Heartbeat
- #126720 Separate GC WKS and SVR compilation units
- #78746 Aging dependent handles
#129579 Fix debug build of libraries tests
- 作成者: @gbalykov
- 作成日時: 2026年06月18日 15:48:13(UTC)
- マージ日時: 2026年06月18日 19:04:48(UTC)
- ラベル: area-System.Net.Security community-contribution
概要
System.Net.Security テストプロジェクトのデバッグビルドにおいて、RuntimeInformation への参照が解決されないコンパイルエラーを修正しています。PR #129479 で導入された問題の回帰修正です。
変更内容
- src/libraries/System.Net.Security/tests/FunctionalTests/TestConfiguration.cs
RuntimeInformation型を使用するために必要な using ステートメント(またはアセンブリ参照)を追加- 修正前:
CS0103: The name 'RuntimeInformation' does not exist in the current contextエラーが発生 - 修正後:コンパイルエラーが解決
パフォーマンスへの影響
影響なし
関連Issue
#129479(この PR で導入された回帰の原因)
その他
- 変更範囲が最小限(1行追加)であり、テストの機能変更ではなく純粋なコンパイルエラー修正です
- デバッグビルド環境でのテストプロジェクトのコンパイルを正常化します
#129572 Remove unneeded message printed in case of Tizen build
- 作成者: @gbalykov
- 作成日時: 2026年06月18日 12:41:11(UTC)
- マージ日時: 2026年06月18日 20:55:58(UTC)
- ラベル: area-System.Runtime.InteropServices community-contribution
概要
Tizen ビルド時に CMake スクリプト(eng/native/output-toolchain-info.cmake)の出力に不要なメッセージが含まれていたため、XML 形式の出力が破損していました。このメッセージを削除することで、NativeExports.csproj の XmlPeek タスク処理が正常に動作するようになります。
変更内容
eng/common/cross/toolchain.cmake: 不要なメッセージ出力を削除(2行削除)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- この変更は Tizen プラットフォーム向けビルドの修正です
- XmlPeek タスクが NullReferenceException で失敗していた根本原因は、CMake 出力がメッセージによって XML 形式として無効化されていたことです
- ビルドロジックの堅牢性向上に関連する修正です
#129569 [ci-scan] Use blocking-clean-ci-optional for JIT/GC/PGO stress pipeline KBEs
- 作成者: @kotlarmilos
- 作成日時: 2026年06月18日 08:53:25(UTC)
- マージ日時: 2026年06月18日 12:45:45(UTC)
- ラベル: area-Infrastructure
概要
CI失敗スキャンワークフロー(ci-failure-scan)を更新し、JIT/GC/PGOストレステスト用パイプラインの18個がKBE(Known Build Error)ラベルとしてblocking-clean-ci-optionalを使用するように変更。これらのパイプラインはrequiredゲートの外で実行される任意のローリングジョブであるため、失敗時にBuild Analysisで表示されてもクリーンCIをブロックすべきではありません。
変更内容
- ci-failure-scan.md: Step 2テーブルで18個のストレステストパイプラインを
optional-ciとしてマーク(jitstress、gcstress、pgo関連など)。新しいKBEラベル選択ルールを追加:デフォルトはblocking-clean-ci、optional-ciパイプラインではblocking-clean-ci-optionalを使用し、両方を付与しない。requiredゲート内で同じシグネチャが再発生する場合は、重要度エスカレーション例外により別個のblocking-clean-ciKBEを作成。 - shared/create-kbe.instructions.md: KBEテンプレート作成手順を更新し、
blocking-clean-ci-optionalをオプショナルパイプラインに対して許可する旨を記載。 - ci-failure-scan.lock.yml:
allowed_labels制約と生成文字列を更新し、blocking-clean-ci-optionalラベルを許可。
パフォーマンスへの影響
影響なし
関連Issue
その他
superpmi-diffs(152)は未含:PR実行のみでmainブランチでは実行されないため。Fuzzlyn(149)は未追加:別個のFuzzlyn JIT分析スキルで対応。- ロック変更は
allowed_labels制約と再コンパイル後のfrontmatter_hashのみ。プロ文は実行時インポートされるため、テーブル/ルール編集に際してロック再生成は不要。 blocking-clean-ci-optionalはdotnet/runtimeの既存ラベル(「オプショナルローリング実行のブロック」)。
#129550 Disable CustomReflectionContextExamples.AddCustomAttribute on NativeAOT via existing tracking issue
- 作成者: @Copilot
- 作成日時: 2026年06月18日 00:00:43(UTC)
- マージ日時: 2026年06月18日 05:35:56(UTC)
- ラベル: area-System.Reflection
概要
System.Reflection.ContextテストスイートのCustomReflectionContextExamples.AddCustomAttributeテストにNativeAOT環境でのみ適用される[ActiveIssue]属性を追加しました。既存の追跡Issue#73356を利用して、NativeAOT固有の問題を抑制しつつ、非NativeAOT環境での動作は変わりません。
変更内容
- src/libraries/System.Reflection.Context/tests/CustomReflectionContext.Examples.cs
CustomReflectionContextExamples.AddCustomAttribute()メソッドに[ActiveIssue]属性を追加- NativeAOT環境(
PlatformDetection.IsNativeAot)でのみ無視される設定 - 既存のパターン(Issue#73356)を再利用
[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/73356", typeof(PlatformDetection), nameof(PlatformDetection.IsNativeAot))]
public static void AddCustomAttribute()
パフォーマンスへの影響
影響なし
関連Issue
その他
- 変更はNativeAOT環境専用の既存パターンに準拠
- テストスコープは単一テストに限定
- 非NativeAOT環境での動作変化なし
#129539 Fix objRef not being stored in GetPointerData after DebuggerIPCE_ObjectData refactor
- 作成者: @tommcdon
- 作成日時: 2026年06月17日 21:04:54(UTC)
- マージ日時: 2026年06月18日 21:12:44(UTC)
- ラベル: area-Diagnostics-coreclr
概要
デバッガーのCordbReferenceValue::GetPointerDataメソッドにおいて、ローカルキャッシュ(localValue)からオブジェクト参照を読み込んだ後、それをm_info.objRefに書き戻していなかった問題を修正しました。この不具合により、Span<T>などの値型のデバッガー可視化が失敗していました。
変更内容
- src/coreclr/debug/di/divalue.cpp:
CordbReferenceValue::GetPointerData内のローカルコピーパスで、localValueから読み込んだポインターを一時的なvoid*変数に格納した後、PTR_TO_CORDB_ADDRESSを使ってm_info.objRefに書き戻す処理を追加(+2/-1)
パフォーマンスへの影響
影響なし
関連Issue
その他
この修正はランタイムのデバッガーインターフェース(内部実装)に対する変更です。byref型やポインター型を含む値型がGetPointerDataパスを通る場合のデバッガー動作の正確性に影響します。
#129531 Fix assembly labels on MacOS X64 to be LOCAL_LABEL
- 作成者: @davidwrighton
- 作成日時: 2026年06月17日 17:42:21(UTC)
- マージ日時: 2026年06月18日 02:58:36(UTC)
- ラベル: area-VM-coreclr
概要
macOS X64環境において、アセンブリのラベルをLOCAL_LABELに修正することで、リンカーによる関数の不正な分割を防止し、正しい動作を確保する変更です。ラベルを適切に指定しないとリンカーが関数を不正に細分化してしまい、予期しない動作につながるため、この修正が必要です。
変更内容
- src/coreclr/vm/amd64/Context.S: ラベル定義をLOCAL_LABELに修正(8箇所)
- src/coreclr/vm/amd64/virtualcallstubamd64.S: ラベル定義をLOCAL_LABELに修正(9箇所)
パフォーマンスへの影響
影響なし(リンカーの処理動作を正規化し、関数分割による予期しない最適化を防ぐため、安定性向上が目的)
関連Issue
その他
本変更はmacOS X64プラットフォーム専用の修正で、x86-64アーキテクチャのコアCLRランタイムコード(コンテキスト処理と仮想呼び出しスタブ)に影響します。リンカーの動作を制御する内部実装の修正であり、公開APIへの影響はありません。
#129529 Add DerivedTypes property to IsClosedTypeAttribute
- 作成者: @Copilot
- 作成日時: 2026年06月17日 15:39:40(UTC)
- マージ日時: 2026年06月18日 13:18:52(UTC)
- ラベル: area-System.Reflection
概要
IsClosedTypeAttribute に DerivedTypes プロパティを追加し、リフレクションベースのコンポーネントが TypeDef テーブルをスキャンせずに閉じられた型の派生型を検出できるようにします(API レビュー #129009 で承認済み)。
var attr = new IsClosedTypeAttribute();
attr.DerivedTypes; // Type.EmptyTypes (デフォルト)
attr.DerivedTypes = [typeof(Dog), typeof(Cat)];
attr.DerivedTypes = null; // Type.EmptyTypes に正規化される
変更内容
IsClosedTypeAttribute:public Type[] DerivedTypes { get; set; }プロパティを追加。デフォルトはType.EmptyTypesで初期化、null はType.EmptyTypesに正規化されるため、null を返すことはない(ライブラリ内部実装)- 参照アセンブリ (
System.Runtime.cs): 新規プロパティを公開 API サーフェスに追加(公開 API) - テスト (
AttributesTests.cs): デフォルトの空配列、値の設定、null 正規化動作をカバーするテストを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
なし
#129520 [cDAC] Add RuntimeFlavor to IRuntimeInfo and expand NAOT data descriptor
- 作成者: @max-charlamb
- 作成日時: 2026年06月17日 14:09:30(UTC)
- マージ日時: 2026年06月18日 14:52:07(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Compact Data Access Contract)の IRuntimeInfo コントラクトを拡張し、ターゲットランタイムの「flavor」(CoreCLR/NativeAOT)を識別する新しい GetRuntimeFlavor() API を追加しました。CoreCLR と NativeAOT の両方のデータディスクリプタを更新し、ランタイム情報の一貫した公開を実現します。
変更内容
- 公開API追加:
RuntimeInfoRuntimeFlavor列挙型(Unknown、Coreclr、NativeAot)とIRuntimeInfo.GetRuntimeFlavor()を追加(Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeInfo.cs) - 実装変更:
RuntimeInfo_1をクラスベースに変更し、値のキャッシング機能とFlush()による無効化を実装(RuntimeInfo_1.cs) - CoreCLR対応:
RuntimeFlavorグローバル文字列("Coreclr")を datadescriptor に追加 - NativeAOT対応:
RuntimeInfoc1 コントラクトを登録OperatingSystem、Architecture、RuntimeFlavor("NativeAot")、RID、RecommendedReaderVersionグローバルを公開- CMake駆動の
configure.h.inを追加(CLR_DOTNET_RIDに基づく RID マクロ生成)
- テスト追加:列挙値の検証、キャッシング動作、グローバル不在時の挙動、CoreCLR ダンプでの flavor 確認を含む 106 行のユニットテストと 12 行のダンプテストを追加
- ドキュメント更新:
RuntimeInfo.mdを更新
パフォーマンスへの影響
影響なし。キャッシング機能により、同一値の反復アクセス時は単一読み込みで済みます。
関連Issue
なし
その他
- 互換性への影響:既存の NativeAOT デバッグ実行可能ファイルは、新しいグローバルを取得するため再発行が必要です(データディスクリプタはAOT実行可能ファイルに静的に埋め込まれるため)
RuntimeInfo_1は内部実装の変更で、公開APIではありません- ビルド検証済み:CoreCLR と NativeAOT のリリースビルド、cDAC ユニットテスト(2527 合格、0 失敗)
#129514 [clr-ios] Disable Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests on Apple mobile
- 作成者: @kotlarmilos
- 作成日時: 2026年06月17日 12:58:47(UTC)
- マージ日時: 2026年06月18日 09:51:20(UTC)
- ラベル: area-Infrastructure-coreclr os-ios
概要
Apple モバイル/AOT な Helix テスト実行環境において、Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests が aggressive trimming により反射機能が削除されるため、テストケースが発見されず(Tests run: 0)実行がクラッシュとして報告されるのを防ぐため、このテストプロジェクトをテスト対象から除外します。
変更内容
- src/libraries/tests.proj: AOT/Apple-mobile Helix 除外リストに
Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests.csprojを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
このプロジェクトは既に除外されている同様のテストプロジェクト DI.Tests と同じ理由での除外となります。Aggressive trimming による反射ベースの第三者製 DI コンテナの削除が根本原因であり、テスト検出機構の制限によるものです。
#129512 Implement StartSuspended for Windows and Resume on SafeProcessHandle
- 作成者: @Copilot
- 作成日時: 2026年06月17日 12:11:47(UTC)
- マージ日時: 2026年06月18日 09:26:23(UTC)
- ラベル: area-System.Diagnostics.Process
概要
ProcessStartInfo.StartSuspended プロパティと SafeProcessHandle.Resume() メソッドを Windows に実装しました。プロセスを中断状態で起動し、後で再開できます。
ProcessStartInfo startInfo = new("myapp.exe") { StartSuspended = true };
using SafeProcessHandle handle = SafeProcessHandle.Start(startInfo);
// プロセスは作成されるがメインスレッドは中断状態
handle.Resume(); // ResumeThread経由でメインスレッドを再開
ProcessExitStatus status = handle.WaitForExit();
変更内容
- ProcessStartInfo.cs:
StartSuspended自動プロパティ([SupportedOSPlatform("windows")])を追加。StartSuspended+UseShellExecuteの組み合わせではInvalidOperationExceptionをスロー - SafeProcessHandle.Windows.cs: プロセス作成時に
CREATE_SUSPENDEDフラグを使用。PROCESS_INFORMATIONから取得したメインスレッドハンドルを_mainThreadHandleに保存。Resume()はInterlocked.ExchangeでスレッドセーフにResumeThreadを呼び出してハンドルをクローズ。ReleaseHandle()で未再開時のハンドルクローズに対応 - SafeProcessHandle.Unix.cs:
ResumeCore()がPlatformNotSupportedExceptionをスロー - SafeProcessHandle.cs: 公開
Resume()API エントリーポイントを追加 - Strings.resx: 互換性エラーと無効な再開用途のリソース文字列を追加
- StartSuspendedTests.cs: 中断→再開→終了フロー、ProcessId 有効性、二重再開エラー、非中断状態での再開エラー、パイプリダイレクション等のテスト (204行)
- ref/System.Diagnostics.Process.cs: 新 API を ref アセンブリに反映
パフォーマンスへの影響
影響なし
関連Issue
その他
- Windows のみサポート:
StartSuspendedは非Windows では無視され、Resume()は非Windows でPlatformNotSupportedExceptionをスロー - 制限事項:
KillOnParentExit+StartSuspendedの組み合わせではジョブオブジェクト割り当て後、再開をスキップ - スレッドセーフ:
Interlocked.Exchangeを使用した単一使用フロー設計で、二重呼び出しは検出・エラーとなる
#129494 [Wasm RyuJit] Add Wasm SIMD NYIs, fix PushArgs assert, fix Async/Try/SCC issue.
- 作成者: @AndyAyersMS
- 作成日時: 2026年06月16日 23:49:54(UTC)
- マージ日時: 2026年06月18日 14:00:11(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
Wasm RyuJITバックエンド向けの複数の修正を含むPRです。SIMD16ローカル変数/フィールド読み込みをWasm SIMD NYI(Not Yet Implemented)として報告し、R2Rコンパイル時に対応メソッドをスキップできるようにします。また、固定レジスタセットを持たないターゲット(Wasm)でのretbufコール引数の仮定を緩和し、非同期try領域のSCC書き換え処理を改善します。
変更内容
- layout.h: 16バイトレイアウトをWasm上でTYP_SIMD16レジスタ型として報告しないよう修正
- codegenwasm.cpp: SIMD16ローカル変数/フィールド読み込み、間接ローカル読み込み、レジスタロード時のWasm SIMD NYIガード追加(レジスタ候補ローカルは未対応)
- flowgraph.cpp: 複数エントリのtry領域に対するSCC発見を支援するための一時的エッジ追加、コメント誤字修正
- codegencommon.cpp: HAS_FIXED_REGISTER_SET==0(Wasm)時にretbuf引数が常にPUTARGノードであると仮定しない対応
パフォーマンスへの影響
影響なし(コンパイラ最適化ロジックの修正で、コンパイル時の処理フロー改善)
関連Issue
なし
その他
本変更はWasm特有の制限に対応するもので、他のターゲット(x86/x64/ARM)には影響を与えません。NYI報告により、Wasm環境でのR2Rコンパイル時に非サポートメソッドを適切に識別できるようになります。
#129479 Port System.Net.Security to OpenBSD
- 作成者: @am11
- 作成日時: 2026年06月16日 20:56:37(UTC)
- マージ日時: 2026年06月18日 12:43:51(UTC)
- ラベル: area-System.Net.Security community-contribution os-openbsd
概要
System.Net.SecurityライブラリをOpenBSDプラットフォームに対応させるPull Requestです。プラットフォーム固有の条件分岐を追加し、OpenBSD環境でのSecurity機能の動作をサポートします。
変更内容
- eng/versioning.targets: OpenBSD対応に関連するバージョニング設定を追加
- System.Net.Security.csproj: プロジェクトファイルのプラットフォーム条件更新(+1/-1)
- NegotiateAuthenticationPal.ManagedSpnego.cs: ManagedSpnego認証ロジックにOpenBSD対応コードを追加(+12/-1)
- LocalAppContextSwitches.cs: OpenBSD環境向けのアプリケーションコンテキストスイッチを新規追加(+5行)
- TestConfiguration.cs: テスト設定のプラットフォーム条件を更新
パフォーマンスへの影響
影響なし
関連Issue
その他
このPRは既存のIssue #124911への貢献です。変更は主にOpenBSDプラットフォームの条件分岐追加であり、既存プラットフォームへの破壊的変更は含まれていません。
#129473 [release/10.0] Fix ComInterfaceGenerator collision on same-named methods in disjoint cross-assembly bases
- 作成者: @Copilot
- 作成日時: 2026年06月16日 17:12:05(UTC)
- マージ日時: 2026年06月18日 01:05:47(UTC)
- ラベル: Servicing-approved area-System.Runtime.InteropServices
概要
クロスアセンブリの[GeneratedComInterface]継承で、異なる外部基底インターフェースが同じ名前のメソッドを持つ場合、ComMethodInfo辞書キーの衝突によりCS8785エラーが発生する問題を修正します。生成時に外部定義メソッドの識別子にExternalSymbolIdを組み込むことで、キー衝突を回避します。
変更内容
- ComMethodInfo.cs: 外部定義メソッドのレコード等値性とハッシュに
ExternalSymbolId(ドキュメント コメントIDまたは完全修飾名フォールバック)を含める(ジェネレータ内部のみ) - ISameNameMethodsDifferentAssembly.cs: 同じ名前の
MyMethodを持つ外部基底インターフェースを追加し、クロスアセンブリ衝突シナリオを再現 - IDerivedFromExternalSameName.cs: 新しい外部基底を継承するテスト用派生インターフェースを追加
- CrossAssemblyInheritanceTests.cs: 両方の不連続基底と単一基底のパスをカバーする回帰テストを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- 対象範囲: .NET 10 release/10.0向けのサービス対応可能な修正
- 互換性: 破壊的変更なし。変更はジェネレータ内部の処理に限定され、公開API、生成ソースコントラクト、ランタイム動作に影響しない
- リスク評価: 低。修正は外部定義メソッドのキー識別に限定された外科的変更
- テスト: CS8785エラーの再現確認、回帰テスト追加、ComInterfaceGenerator.Testsスイート全体で合格
#129466 [browser][coreCLR] fix resource merging
- 作成者: @pavelsavara
- 作成日時: 2026年06月16日 15:06:58(UTC)
- マージ日時: 2026年06月18日 07:35:57(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
WebAssemblyローダーの設定マージロジックにおけるバグを修正。mergeResourcesで明示的に列挙されていないリソースフィールド(例:libraryInitializers)がマージ時に失われていた問題を解決。新しい実装では、明示的な処理が不要なフィールドも含めてすべてのリソースプロパティが保持されるようになります。
変更内容
src/native/libs/Common/JavaScript/loader/config.ts
mergeResourcesを再実装。マージ結果をsourceオブジェクトに構築してからObject.assignでtargetにコピーする方式に変更。これによりlibraryInitializersなど特別なマージ処理が不要なフィールドが確実に保持されるsatelliteResourcesのマージで、targetとsourceの両方に存在するキーの合集合をループ処理するように更新
src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/main.js
- テスト出力に
resources.libraryInitializers.lengthを追加
- テスト出力に
src/mono/wasm/Wasm.Build.Tests/LibraryInitializerTests.cs
InvokeLibraryInitializersApiテストでresources.libraryInitializers.length=1が出力されることをAssert.Containsで検証
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
この修正は内部実装(ランタイムローダー)のバグ修正であり、公開APIの変更ではありません。libraryInitializersを使用するWebAssemblyアプリケーションの挙動に直結する重要な修正です。
#129428 Improve WebSocket exceptions to include informative messages
- 作成者: @Copilot
- 作成日時: 2026年06月15日 15:25:24(UTC)
- マージ日時: 2026年06月18日 13:34:31(UTC)
- ラベル: area-System.Net
概要
WebSocket例外の診断品質を向上させるPRです。無効なUTF-8テキストメッセージ受信、不正なクローズステータスコード/説明などのエラーケースで、単なる「Aborted state」というジェネリックなメッセージではなく、シナリオ固有の情報的なエラーメッセージを含むWebSocketExceptionをスローするようになりました。
従来の動作:
System.Net.WebSockets.WebSocketException (0x80004005): An exception caused the WebSocket to enter the Aborted state. Please see the InnerException, if present, for more details.
(InnerExceptionなし)
変更内容
- ManagedWebSocket.cs:受信/クローズエラーパスに明示的なリソースベースのエラーメッセージを追加。無効UTF-8ペイロードや不正なクローズペイロード時の診断情報を改善
- Strings.resx:新しいローカライズ可能なリソース文字列を追加(無効UTF-8テキストペイロード、プロトコル違反、無効クローズステータスコード、無効クローズ説明のUTF-8エラー)
- WebSocketReceiveErrorMessageTests.cs:新規テストファイル。不正なフレームを合成し、例外メッセージとInnerExceptionを検証
- WebSocketUtf8Tests.cs:既存UTF-8検証テストで新しい無効UTF-8例外メッセージをアサート
パフォーマンスへの影響
影響なし
関連Issue
その他
このPRはSystem.Net.WebSocketsライブラリのパブリックAPIの例外メッセージ改善です。既存の破壊的変更はなく、エラー診断の利便性を向上させるものです。
#129411 [cDAC]: Implement GetEnCHangingFieldInfo
- 作成者: @rcj1
- 作成日時: 2026年06月15日 06:02:18(UTC)
- マージ日時: 2026年06月18日 03:29:40(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDACのEdit-and-Continue(EnC)サポートを拡張し、GetEnCHangingFieldInfo機能を完全に実装するPRです。新しいIRuntimeMutableTypeSystem APIを通じて、EnC追加フィールドのストレージロケーション(静的フィールド・インスタンスフィールド)の特定と、フィールド修正の必要性判定をサポートします。
新しいAPI:
bool DoesEnCFieldDescNeedFixup(TargetPointer encFieldDescPointer);
TargetPointer GetEnCStaticFieldDataAddress(TargetPointer encFieldDescPointer);
TargetPointer GetEnCInstanceFieldAddress(TargetPointer objectAddress, TargetPointer encFieldDescPointer);
変更内容
- cDAC契約層(IRuntimeMutableTypeSystem): EnCフィールド情報解析用の3つの新規ヘルパーメソッドを実装
- cDAC データモデル: EnC関連構造体の新規データ型追加(
EnCFieldDesc,EnCSyncBlockInfo,EnCAddedField,EnCAddedStaticField,EditAndContinueHelperObject)およびSyncBlock.EnCInfoポインタ読み込み対応 - 管理型DAC実装(DacDbiImpl):
GetEnCHangingFieldInfoを新規cDAC契約を用いて完全実装、レガシー実装との比較検証対応 - ネイティブ側DAC/DBI:
GetEnCHangingFieldInfoシグネチャからpfStatic出力パラメータを削除し、代わりにFieldData.m_fFldIsStaticを使用 - ランタイムメタデータ:
syncblk.hでm_pEnCInfoオフセットをcDACに公開、encee.hでcdac_data<>マクロ経由でEnC構造体メンバーへアクセス - ユニットテスト:
DoesEnCFieldDescNeedFixupとGetEnCStaticFieldDataAddressの新規テスト追加 - ドキュメント: RuntimeMutableTypeSystem契約の設計ドキュメント更新(91行追加)
パフォーマンスへの影響
影響なし
関連Issue
その他
- API互換性: ネイティブDAC/DBI側の
IDacDbiInterface::GetEnCHangingFieldInfoシグネチャが変更される破壊的変更だが、これは内部実装向けAPIであるため外部への影響はなし - エラーコード: 新規エラーコード
CORDBG_E_ENC_HANGING_FIELDを追加 - 実装範囲: 全変更は
FEATURE_METADATA_UPDATERフィーチャー配下であり、EnC機能を持つビルドのみに影響
#129402 Skip UnmanagedCallersOnlyAssociatedSourceType test on Android
- 作成者: @MichalStrehovsky
- 作成日時: 2026年06月15日 02:25:09(UTC)
- マージ日時: 2026年06月18日 21:06:12(UTC)
- ラベル: os-android area-NativeAOT-coreclr
概要
NativeAOT Smoke TestsのAndroidプラットフォーム対応改善。UnmanagedCallersOnlyAssociatedSourceTypeテストがAndroid環境で失敗するため、プラットフォーム固有の早期終了処理を追加し、追跡中の問題へのリンクを含めました。
変更内容
src/tests/nativeaot/SmokeTests/TrimmingBehaviors/UnmanagedCallersOnlyAssociatedSourceType.csRun()メソッドにAndroid環境での早期終了処理を追加(+4行)- トラッキング対象の問題へのリンクを含む
パフォーマンスへの影響
影響なし(テスト実行時の条件分岐追加のみ)
関連Issue
なし(PR内での具体的なIssue番号の記載なし)
その他
本変更はテストのスキップ処理であり、プロダクションコードへの変更ではありません。Android環境での既知の問題をワークアラウンドとして対応しています。
#129321 JIT: Fix managed return value debug info for floating-point returns
- 作成者: @tommcdon
- 作成日時: 2026年06月12日 12:17:19(UTC)
- マージ日時: 2026年06月18日 21:11:25(UTC)
- ラベル: area-Diagnostics-coreclr
概要
PR #128479で導入された管理対象戻り値のネイティブ変数エミッションにおいて、浮動小数点戻り値の場合にstoreVariableInRegisters(REG_FLOATRET, REG_NA)を使用していたが、これは整数レジスタを示すVLT_REGを設定してしまい、デバッガが整数レジスタでの読み込みに失敗する問題を修正します。
修正内容として、VLT_REG_FPを使用し0ベースのFPレジスタインデックス(REG_FLOATRET - REG_FP_FIRST)をエンコードすることで、デバッガのVLT_REG_FPハンドラが正しくREGISTER_AMD64_XMM0を加算してCorDebugRegisterに変換できるようにしました。
変更内容
- src/coreclr/jit/scopeinfo.cpp: 非x86ターゲットでの浮動小数点戻り値に対して、
VLT_REG_FPを使用し、0ベースのFPレジスタインデックスでエンコード(+28/-10) - src/coreclr/jit/codegencommon.cpp:
VLT_REG_FPエンコーディング期待値に関するコメント追加(+20/-4) - src/coreclr/jit/ee_il_dll.cpp: 関連するデバッグ情報処理の調整(+4/-1)
パフォーマンスへの影響
影響なし
関連Issue
その他
Visual Studioでのテスト中に検出された問題です。この修正により、デバッガは浮動小数点型(float, double等)の戻り値を正しくXMM0レジスタから読み込めるようになります。
#129316 Cache NativeAOT Visual Studio tool discovery
- 作成者: @MichalStrehovsky
- 作成日時: 2026年06月12日 07:09:02(UTC)
- マージ日時: 2026年06月18日 05:34:30(UTC)
- ラベル: area-NativeAOT-coreclr
概要
Windows NativeAOT ビルド統合で Visual Studio 検出をキャッシュ化する変更。vswhere.exe を使用して Visual Studio インストール路とバージョンを検証し、vcvarsall.bat の出力(ツールディレクトリと LIB パス)をキャッシュして、再ビルド時の再検出を回避する。
変更内容
- Microsoft.NETCore.Native.Windows.targets:
findvcvarsall.batの呼び出しをvswhere.exeベースの検出に置き換え。VS インストール路とバージョン取得後、キャッシュファイル(findvcvarsall.$(_targetArchitecture).txt)を$(NativeIntermediateOutputPath)に生成。パス/バージョンが一致する場合はキャッシュを再利用。 - findvcvarsall.bat: 削除(ロジックが
.targetsファイルに統合)
パフォーマンスへの影響
初回ビルドで vswhere.exe 呼び出しによる検出が発生するが、以降のビルドではキャッシュファイルの存在確認(VS パス/バージョン一致時)で不要な再検出を回避し、ビルド時間を短縮。キャッシュはアーキテクチャ別に管理される。
関連Issue
その他
NativeAOT ビルド インフラの内部実装変更で、公開 API への影響なし。Windows 環境でのビルド統合のみに関連。
#129293 [mobile] .NET 11 mobile runtime configuration updates
- 作成者: @kotlarmilos
- 作成日時: 2026年06月11日 14:54:17(UTC)
- マージ日時: 2026年06月18日 14:33:52(UTC)
- ラベル: area-Infrastructure-mono
概要
.NET 11移行に伴う、モバイルランタイムのCI設定更新です。MonoのAndroid/iOS/tvOSモバイルテストレグをランタイムCI パイプラインから削除し、WebAssembly MonoおよびCoreClR/NativeAOTのモバイルレグは維持されます。また、SDK検証用に一時的にglobal.jsonをプレビューSDKにピンし、NuGet.configにgeneral-testingフィードを追加しています。
変更内容
- NuGet.config:
general-testingパッケージソースを追加(一時的な検証用) - global.json: SDK/ツーリングを11.0.100-preview.6.26310.106にピン(一時的な検証用)
- eng/pipelines/runtime.yml: Monoモバイルライブラリテストレグを削除、MonoAOTOffsetsからモバイルプラットフォームを削除(browser_wasmとwasi_wasmは維持)
- eng/pipelines/extra-platforms/: Android/iOS/tvOS/MacCatalystのMonoライブラリテストレグを削除
- eng/pipelines/performance/perf-build.yml: mono_arm64_androidとmono_arm64_iosビルドタイプを完全削除(パラメータも含む)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 重要:
NuGet.configのgeneral-testingフィード追加は一時的な検証ピンです。本来のプロダクション利用ではない旨をコメントで明記することが推奨されています(マージ時に誤って有効のままにならないよう注意が必要) - 検証方法: dotnet/performance#5240と併せて実施、ランタイムとランタイム-エクストラプラットフォームパイプラインのパス検証済み
- ランタイム側への影響: 内部CI設定のみで、公開APIや言語仕様への変更なし
- WebAssemblyモバイル、デスクトップMonoはこの変更の影響を受けません
#129278 Handle canonical types in constraints checks
- 作成者: @MichalStrehovsky
- 作成日時: 2026年06月11日 05:38:18(UTC)
- マージ日時: 2026年06月18日 21:53:01(UTC)
- ラベル: area-NativeAOT-coreclr
概要
正規型(canonical types)である__Canonと__UniversalCanonをジェネリック制約チェック時に正しく処理するため、キャスティングロジックと制約検証ロジックを更新しました。本変更により、NativeAOT/CoreCLRの共有TypeSystemが制約チェック時に__Canonを適切に扱え、リフレクションによるジェネリック型のインスタンス化がAOT/トリミング下で正しく保持されるようになります。
変更内容
- CastingHelper.cs: キャスティングロジックをハンドラベースに再構成し、canonical型対応の新メソッド
CanCastToWithCanonを追加。__Canonを単なるclass __Canon : objectとして扱う従来ロジックと、「参照型だが実際の型キャスト可否は不明」として扱う新ロジックの両立を実現 - CastingHelper.Canon.cs/NonCanon.cs: canonical型対応/非対応の具体的なキャスティング実装を分離
- TypeSystemConstraintsHelpers.cs: 制約チェックをcanonical対応ロジック
CanCastToWithCanonに変更し、型引数に対する適切な検証を実施 - TypeSystemConstraintsHelpers.Canon.cs/NonCanon.cs: canonical固有の制約検証ロジックを分離実装
- HandleCallAction.cs:
MakeGenericTypeのデータフロー解析で制約チェック前に型のインスタンス化を正規化 - テスト: canonical型の制約検証テスト(ConstraintsValidationTest.cs)とNativeAOTトリミング動作確認テスト(Dataflow.cs)を追加
パフォーマンスへの影響
影響なし
関連Issue
その他
本変更は先行コミットのrevert of the revertと新しいcanonical対応ロジックの実装から構成されます。キャスティング検証がcanonical対応と非対応に分岐することで、CoreCLR VMのキャスティング挙動との互換性を保ちながら、ジェネリック制約検証の精度を向上させています。
#129203 Fix LoaderHeap's free list growing more than expected
- 作成者: @eduardo-vp
- 作成日時: 2026年06月10日 01:22:46(UTC)
- マージ日時: 2026年06月18日 18:42:49(UTC)
- ラベル: tenet-performance area-VM-coreclr
概要
LoaderHeapの空きリスト(free list)が予期以上に増大し、スレッド競合により複数の冗長なメモリブロックがリストに追加されることで、線形スキャンが非常に遅くなる問題を修正します。サイズ別にバケット化された空きリスト構造を導入し、小さなブロックはO(1)で再利用、大きなブロックのみ線形スキャンするよう改善しました。
パフォーマンス改善実績:
- 実行時間:91.2秒 → 3.9秒(約95%削減)
- メモリ使用量はほぼ同等(114.1MB → 117.5MB)
変更内容
- src/coreclr/utilcode/loaderheap.cpp: バケット初期化、バケット対応の割り当て・挿入ロジック、オーバーフロー走査時の警告ログ、デバッグ用ダンプ・検証機能をバケット横断対応に更新
- src/coreclr/utilcode/loaderheap_shared.h:
LoaderHeapFreeBlockAPIから明示的なヘッドポインタパラメータを削除、ヒープが内部的にバケットを選択 - src/coreclr/inc/loaderheap.h:
UnlockedLoaderHeapにバケット/オーバーフロー空きリスト関連フィールドと定数を追加
パフォーマンスへの影響
- 大幅な改善: 複数スレッドが同時にジェネリック型をインスタンス化する負荷の高いシナリオで、実行時間が95%削減
- メモリ消費: ほぼ影響なし(97.5%~103%範囲)
- 改善メカニズム: 32個のサイズバケット(ポインタサイズ単位)により、一般的な小さなブロックの割り当てはO(1)で完了、オーバーフロー(大きなブロック)のみ線形スキャン対象
関連Issue
その他
- ランタイムの内部実装(UnlockedLoaderHeap)の最適化であり、公開APIへの影響なし
- スレッド競合によるバックアウトシナリオで複数ブロックが空きリストに蓄積される問題を根本的に解決するのではなく、空きリストの検索効率を劇的に向上させるアプローチ
#129189 Pre-initialize InvariantCulture such that it can be safely used when creating stack traces
- 作成者: @eduardo-vp
- 作成日時: 2026年06月09日 20:19:53(UTC)
- マージ日時: 2026年06月18日 04:13:10(UTC)
- ラベル: area-VM-coreclr
概要
スタックトレース生成時にメモリ不足下でCultureInfo.InvariantCultureが未初期化のまま使用されることによるアサーション失敗を修正します。AppDomain起動時にCultureInfoクラス初期化子を事前実行し、スタックトレース生成パスが安全にInvariantCultureにアクセスできるようにします。
変更内容
- corhost.cpp:
AppDomain::SetupSharedStatics()内でCheckRunClassInitThrowing()経由でCultureInfoクラス初期化を強制実行(+4行) - jithelpers.cpp: 関連コードの削除(-4行)
- methodtable.cpp: 初期化ロジック追加(+1行)
- CultureData.cs: 初期化処理の最適化(+18/-13行)
パフォーマンスへの影響
AppDomain起動時にCultureInfoの事前初期化が行われるため、起動時間に若干の影響がある可能性があります。ただし、スタックトレース生成時の例外処理を回避することで、エラー発生時のパフォーマンスは向上します。
関連Issue
その他
メモリ不足時のスタックトレース生成は重要なデバッグシナリオです。この修正により、メモリプレッシャー下でも確実にスタックトレースが生成できるようになります。チェックビルドでのアサーション失敗を予防する設計改善です。
#129091 [cDAC] Stackwalk DacDbi APIs
- 作成者: @rcj1
- 作成日時: 2026年06月07日 05:26:39(UTC)
- マージ日時: 2026年06月18日 13:55:51(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Compact Data Access)のスタックウォーク機能とデバッガー契約を拡張し、ランタイムのhijack-stub検出と recovery機能を追加します。CreateStackWalkの新しいオーバーロード、HRESULT ベースのエラー報告を備えた呼び出し側提供バッファでのコンテキスト取得、および対応する DacDbi スタックウォーク API(作成・削除・設定・取得・アンワインド・チェック)を実装します。
変更内容
- IStackWalk/IDebugger 抽象化:
IsRuntimeUnwindableStubAPI追加、CreateStackWalkのシード・コンテキスト対応オーバーロード、GetContextをHRESULT返却+16バイトアライン済み呼び出し側バッファに変更、RetrieveHijackedContext追加 - StackWalk_1.cs: 165行追加。シード・コンテキスト対応、hijacked-context recovery、HRESULT・バッファベース
GetContext、OS コンテキスト取得のためのアライン済みスクラッチ使用 - Debugger_1.cs: 32行追加。hijack 範囲テーブルスキャンによる
IsRuntimeUnwindableStub実装 - DacDbiImpl.cs: 303行追加。cDAC StackWalk/Debugger契約を用いた DacDbi スタックウォーク API(
CreateStackWalk、DeleteStackWalk、SetStackWalkCurrentStackFrame、GetStackWalkCurrentStackFrame、UnwindStackWalkFrame)実装 - StackWalkHandleData.cs: 54行追加。cDAC バックアップスタックウォーク用マネージド ハンドル状態
- Target.cs:
TryGetThreadContextの戻り値をboolからint(HRESULT)に変更(API契約変更) - データ型追加:
MemoryRange型記述子、Debugger のRgHijackFunctionフィールド、MaxHijackFunctionsグローバル定数 - ネイティブ側: datadescriptor.inc、debugger.h、memoryrange.h で cDAC 公開対応、rsstackwalk.cpp で エンド・オブ・スタック時のコンテキスト取得最適化
- ドキュメント更新: StackWalk.md、Debugger.md で新 API 使用方法と hijack テーブルグローバル記述
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
互換性への影響: Target.TryGetThreadContextの戻り値がboolからHRESULT (int)に変更されており、このメソッドを呼び出している外部コードは対応が必要です。cDAC公開 API(IStackWalk.GetContext)も呼び出し側提供バッファでの 16 バイトアライメント要件が追加されます。テストは内部スタックウォーキングテストに加え、アンワインド後のコンテキストを byte 単位で検証することで確認済みです。
#127760 [clr-interp] Implement Managed Return Value support for the interpreter
- 作成者: @kotlarmilos
- 作成日時: 2026年05月04日 15:11:08(UTC)
- マージ日時: 2026年06月18日 07:52:58(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
インタープリタで解釈されるメソッドのManaged Return Value (MRV)サポートを実装し、デバッガがメソッド実行からのステップ処理時に戻り値を表示できるようにします。インタープリタが戻り値を変数ホームスロットに保存することで、デバッガが他の変数ホームと同様にジェネリックに読み出せる仕組みです。
変更内容
- src/coreclr/interpreter/compiler.h: ネイティブマップ容量追跡機能を追加し、インタープリタが発行するデバッグ境界情報の拡張に対応
- src/coreclr/interpreter/compiler.cpp: IL/ネイティブマッピング情報を拡張し、呼び出し命令マーカー(
CALL_INSTRUCTION)をエミットして各IL呼び出しサイトを識別可能に
パフォーマンスへの影響
影響なし
関連Issue
その他
既知の問題: レビュー過程で重大性の高い正確性問題が発見されました。compiler.cppの新しいCALL_INSTRUCTIONタグ付けが、コンパイラが挿入したヘルパー呼び出し(例:EmitPushLdvirtftnで発行されるヘルパー)にも適用されるため、単一のIL呼び出しサイトに対して複数のオフセットが報告される可能性があります。このうち1つはユーザー呼び出しの戻り値ではなく、ヘルパー関数のポインタ結果に対応していることが問題です。
テスト実施: DOTNET_InterpMode=3環境下で全MRVデバッガテストをChecked CoreCLRに対して実行し、以下のテストスイート全てがパス確認済み(実装前のテスト報告であり、上記の問題発見後の状態は不明):
MRV.TestArrays、TestAsyncMethods、TestClasses、TestComplexGenerics、TestEnums、TestGenerics、TestMisc、TestNativeCalls、TestPointers、TestPrimitiveTypes、TestReflectionWithAbstractMethod、TestRefs、TestStructs
#127582 Fix NoopLimiter disposal in DefaultPartitionedRateLimiter Heartbeat
- 作成者: @Copilot
- 作成日時: 2026年04月29日 20:47:05(UTC)
- マージ日時: 2026年06月18日 21:42:17(UTC)
- ラベル: area-System.Threading
概要
DefaultPartitionedRateLimiterのNoopLimiterパーティション(IdleDurationが常にnullを返す)がHeartbeatタイマーで適切に破棄されていなかった問題を修正します。LimiterEntryラッパーを導入して最後のアクセス時刻を追跡し、IdleDurationがnullでも経過時間に基づいて未使用パーティションを削除できるようにしました。
変更内容
DefaultPartitionedRateLimiter.cs:
LimiterEntryラッパークラスを追加し、各RateLimiterインスタンスにLastAccessTimestampを関連付け。Acquire/WaitAsync呼び出し時に更新。GetIdleDuration(LimiterEntry)ヘルパーメソッドを追加し、NoopLimiterの場合は最後のアクセスからの経過時間をフォールバック値として使用。Heartbeat削除チェックでis TimeSpan idleDuration && idleDuration > s_idleTimeLimitパターンを適用。32ビットプラットフォーム対応としてVolatile.Read/Volatile.Writeで64ビットタイムスタンプをアクセス。RateLimiterHelper.cs: 新しい
GetElapsedTime(long)オーバーロードを追加し、呼び出し元での.GetValueOrDefault()を回避。PartitionedRateLimiterTests.cs:
NoopLimiterがHeartbeatで削除されることを検証するテストと、IdleDuration == nullの他の非NoopLimiterパーティションが活動中は削除されないことを確認するテストを追加。
パフォーマンスへの影響
影響なし。最後のアクセス時刻追跡はメモリオーバーヘッド最小限(パーティションあたり8バイト)。既存の削除ロジックを強化するものであり、アクティブパーティションへのアクセスパスには変更なし。
関連Issue
その他
なし
#126720 Separate GC WKS and SVR compilation units
- 作成者: @janvorli
- 作成日時: 2026年04月09日 16:52:59(UTC)
- マージ日時: 2026年06月18日 00:07:35(UTC)
- ラベル: area-GC-coreclr
概要
GCのビルドシステムをリファクタリングし、従来のwrapperファイルモデル(gcwks.cpp/gcsvr.cppおよびgceewks.cpp/gceesvr.cpp)から脱却しました。代わりに共有GC実装ソースを直接WKS/SVRの個別コンパイル単位として構築するよう変更します。新しい共有コンパイルコンテキストヘッダgcinternal.hを導入し、GC、VM、NativeAOT、GCサンプルのビルド構成を更新しました。
変更内容
gcinternal.h(新規): 共有GCコンパイルコンテキストヘッダ。クロス翻訳単位の宣言と複数のGCソースファイルで必要なインラインヘルパーを一元化- wrapper ファイル削除:
gcsvr.cpp、gcwks.cpp、gceesvr.cpp、gceewks.cppを廃止 - GCソースファイル:
gc.cpp、gcee.cppおよび関連ファイル(allocation.cpp、background.cpp、card_table.cppなど)をgcinternal.hをインクルードし、SERVER_GCマクロに基づいてWKS/SVR名前空間でラップするよう更新 - CMakeビルド構成: CoreCLR VM、スタンドアロンGC、NativeAOT、GCサンプルのビルドプロセスを更新し、WKS/SVRオブジェクトライブラリとして生成されたGCソースを直接コンパイル
- ヘッダ名変更:
gc_common.hからgcinternal.hにリネーム(命名混同を回避)
パフォーマンスへの影響
影響なし(バイナリサイズはほぼ変化なし)。clrgc.dllとclrgcexp.dllは約1.5KB増加、coreclr.dllは約1.5KB削減。リンカー/コンパイラのホット/コールドコード最適化判定の若干の相違による変化のため、実質的な性能差なし。
関連Issue
なし
その他
このリファクタリングはビルドシステムの内部実装を改善するもので、公開APIに破壊的変更はありません。複数翻訳単位で必要なインラインヘルパーは共有ヘッダに移動、ローカル専用ヘルパーは所有する.cppファイルに戻すことで、不要な定義を共有ヘッダから排除しています。
#78746 Aging dependent handles
- 作成者: @VSadov
- 作成日時: 2022年11月23日 05:36:05(UTC)
- マージ日時: 2026年06月18日 11:58:15(UTC)
- ラベル: area-GC-coreclr
概要
Dependent Handlesのエージング機能を実装し、ガベージコレクション(GC)のパフォーマンスを改善します。従来、Dependent Handlesは世代管理(aging)されず常にGen 0に留まるため、毎回のGCで不要に訪問されていました。本変更により、Dependent Handlesが世代の昇格(aging)とリジュベネーション(若返り)に対応します。これにより、特に古い世代(tenured)のオブジェクトを参照するDependentHandlesの場合、GCのオーバーヘッドが削減されます。
変更内容
- src/coreclr/gc/handletablescan.cpp: Dependent Handlesのエージング処理を追加実装(+23/-1)
- src/coreclr/gc/objecthandle.cpp: Dependent Handlesのリジュベネーション処理を追加実装(+2/-1)
パフォーマンスへの影響
改善: Dependent Handlesが世代管理されることで、tenured objectsを参照する場合にGC訪問頻度が削減され、GCオーバーヘッドが低下します。
関連Issue
その他
なし