Pull Request on 2026年09月28日

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

注意点

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


目次

  1. #134804 Mark ILVerify and ILVerification as shipping
  2. #134782 JIT: initialize tracked-local counts before liveness
  3. #134774 Ensure type loader templates for interface dispatch cells
  4. #134767 [Apple][Android][CoreCLR] Don't pass the program path as managed args[0]; quarantine newly running runtime tests
  5. #134765 [wasm][R2R] Re-enable open virtual delegate runtime tests
  6. #134762 [browser][CoreCLR] Re-enable tests disabled under #123011
  7. #134760 [browser][trimmed] Fix DI generic constraint tests conflicting with trimmability validation
  8. #134759 [browser][CoreCLR] Root UnloadableAssembly so trimmed builds keep it for AssemblyGetForwardedTypesLoadFailure
  9. #134744 JIT: Extend non-null assertion propagation to pointer-sized comparisons
  10. #134738 Avoid Type.GetTypeCode in ConcurrentDictionaryTypeProps.IsWriteAtomicPrivate
  11. #134730 [wasm] Bump chrome for testing - linux: 154.0.8037.57, windows: 155.0.8059.12, mac: 155.0.8059.12
  12. #134688 Disable HPKE ECDH NIST curves on Android
  13. #134680 JIT: Fix normalization check for parameter register fields
  14. #134639 Split RuntimeParameterInfo runtime-specific members
  15. #134635 Simplify single-threaded CoreCLR locks in Release builds
  16. #134595 [release/11.0] Match old layouts and feature selection for named mutexes for cross-TFM compatibility
  17. #134502 [WIP] Fix integer-divide overflow in JIT strength reduction
  18. #134312 [wasm] Make CoreCLR WebCIL images self-installing (wrapper version 2)
  19. #133457 Prevent dual-mode accept tests from hanging
  20. #133222 Use hidden arguments for NativeAOT thunks
  21. #131952 Reduce weak ref blocking with java interop
  22. #130463 Move SocketAsyncEngine to CoreLib so different SafeHandle types can use it.

#134804 Mark ILVerify and ILVerification as shipping

概要

ILVerifyとILVerificationツールをshipping製品として正式にマークし、パッケージ検証ツール要件への対応を実装しました。これにより、これらのツールが公式な配布対象として認識されるようになります。

変更内容

  • ILVerification.csproj: プロジェクトファイルに5行の変更を追加(shippingマーク関連)
  • ILVerification/PACKAGE.md: パッケージメタデータファイルを新規作成(3行)
  • ILVerify.csproj: プロジェクトファイルに1行の変更を追加
  • ILVerify/PACKAGE.md: パッケージメタデータファイルを新規作成(13行)

これらの変更はパッケージ検証ツール(package validation tooling)の要件を満たすためのものです。

パフォーマンスへの影響

影響なし

関連Issue

#134763

その他

なし


#134782 JIT: initialize tracked-local counts before liveness

概要

JITコンパイラのフローグラフ最適化前に、トラッキング対象のローカル変数数とビットセットサイズを初期化するように修正しました。これにより、早期フローグラフ最適化でlive-outセットにアクセスする際の不変性を保証します。ブロック圧縮時にプリ・ライブネス不変性のアサーションを追加し、インライニング後の圧縮を実行する回帰テストを追加しました。

変更内容

  • compiler.h: トラッキング対象ローカル数関連の初期化コードを調整(+2/-2)
  • fgopt.cpp: ブロック圧縮処理にプリ・ライブネス不変性チェック用のアサーション4行を追加
  • Runtime_134798.cs: インライニング後のブロック圧縮シナリオをカバーする回帰テストを新規追加(34行)

パフォーマンスへの影響

影響なし

関連Issue

#134798

その他

このPRはJITのライブネス分析における不変性保証の強化であり、ブロック圧縮などの最適化パスとライブネス情報の初期化順序に関する問題を修正しています。内部的なコンパイラロジックの修正のため、公開APIへの影響はありません。


#134774 Ensure type loader templates for interface dispatch cells

概要

NativeAOTのインターフェース ディスパッチにおいて、型ローダーテンプレートの計算時に正規化されたジェネリック型の情報が失われるバグを修正します。IEnumerable<Foo<T__Canon>>がIEnumerable<__Canon>に正規化される際、ネストされたジェネリック型Foo<T__Canon>のテンプレートが必要であることが見落とされていました。インターフェース分散との相互作用により顕在化したレグレッションです。

変更内容

  • NativeLayoutVertexNode.cs: TemplateConstructableTypesの計算において、元の所有型の情報を保持しながら、仮想スロット追跡用途に限定してメソッドの正規化を行うように修正(+4行-7行)
  • Generics.cs: インターフェース分散を含むランタイム ジェネリック構築のテストケースを追加(44行追加)

パフォーマンスへの影響

影響なし

関連Issue

#134698

その他

このバグはNativeAOTの内部実装(DependencyAnalysis)に関するもので、公開APIには影響しません。修正により、複雑なジェネリック型構造を含む場合のインターフェース ディスパッチの正確性が向上します。


#134767 [Apple][Android][CoreCLR] Don't pass the program path as managed args[0]; quarantine newly running runtime tests

概要

Apple(iOS、maccatalyst、tvOS)およびAndroid上のCoreClr環境で、管理引数の処理が不正であったため、すべてのランタイムテストがスキップされていた問題を修正します。Apple/Androidホストが実行可能ファイルパスをargv[0]に含めて渡していましたが、corerunおよびdotnetホストと同じく引数のみを渡すように変更。同時にモバイルテストアプリでのF#テストの失敗を解決するため、FSharp.Coreをバンドルし、インタープリタおよびReadyToRun検出の構成を修正しました。

変更内容

  • Apple/AndroidホストでのCorecLR引数処理:runtime-coreclr.mとmonodroid-coreclr.cを修正し、プログラムパスを除いた引数のみをマネージコード(Main()のargs)に渡すように変更
  • F#テストのサポート:mergedrunnermobile.targetsとtest_dependencies.fsprojを更新し、FSharp.Coreを依存関係から解決してモバイルテストアプリにバンドル
  • インタープリタ検出の汎化:CoreClrConfigurationDetection.IsCoreClrInterpreterを改善し、WebAssembly固有ロジックをno-JIT一般チェックに変更してAppleモバイルにも対応
  • ReadyToRun対応:tests.ioslike.targetsでTEST_READY_TO_RUN_MODE=1を設定し、AssemblyTests.GetEntryAssemblyの単一ファイルR2RロジックからAppleモバイルを除外
  • テスト隔離:新たに実行されるテストの既知の問題を隔離(#134770、#134775のActiveIssueマーク)し、プラットフォム固有の条件付きスキップを追加

パフォーマンスへの影響

影響なし。本変更はテスト実行能力の修復とテスト結果の正確化を目的としており、ランタイムのパフォーマンスに直接的な影響はありません。

関連Issue

#134766、#134770、#134775、#134803

その他

検証結果(ローカル、CoreClR):

  • maccatalyst-arm64 Release:82ワークアイテム全数でテスト実行可能(修正前は全スキップ)
  • android-arm64エミュレータ:77グループで3,968パス、1失敗(スキップに変更)、372スキップ;その他5グループも正常動作
  • 隔離されたテスト:2つのハング関連テスト(#134770)と1つのスタックオーバーフロー(#134775)をActiveIssueで隔離;既存のInterpreterActive条件がAppleに適用開始

#134765 [wasm][R2R] Re-enable open virtual delegate runtime tests

概要

WebAssemblyのReadyToRun (R2R)環境において、開いた仮想デリゲート(open virtual delegate)を使用するJIT回帰テストを再度有効化するPRです。PR #134699で修正されたポータブルエントリポイント検証の問題により、インターフェースメソッドに対する開いた仮想デリゲートのディスパッチが正常に動作するようになりました。

変更内容

  • src/tests/JIT/Regression_2/Runtime_70259/Runtime_70259.cs: ActiveIssue属性を削除(#133169で対応済み)
  • src/tests/JIT/Regression_2/Runtime_70259/Runtime_70259.il: ActiveIssue属性を削除、TestLibrary参照を削除
  • src/tests/JIT/Regression_o_3/Runtime_79354.cs: ActiveIssue属性を削除(#131886で対応済み)、TestLibrary参照を削除

パフォーマンスへの影響

影響なし(テストの再有効化のみ)

関連Issue

#131886 #130840 #133169

その他

  • browser-wasm環境での動作確認済み(チェックランタイムとReadyToRun crossgen2で検証)
  • PR #134699によって、PortableEntryPoint::GetMethodDesc呼び出しでCID_VirtualOpenDelegateDispatchが正しく処理されるようになり、テスト失敗の原因が解決
  • TestLibrary参照の削除は過去のPR #125138と同様の対応

#134762 [browser][CoreCLR] Re-enable tests disabled under #123011

概要

WebAssembly/ブラウザ環境でのテスト無効化を解除し、プラットフォーム固有の条件分岐を改善するPRです。CoreCLR WebAssemblyビルドおよびApple NativeAOTでの動作改善により、複数のテストが正常に動作するようになりました。

変更内容

  • ZipFile_Unix テスト: Unix権限関連の2つのテストの無効化を解除(#123011の問題が解決)
  • RuntimeFeatureTests.DynamicCode_Jit: IsDynamicCodeCompiledがfalseの環境(WasmおよびApple mobile)に対応する条件分岐を拡張
  • ModuleTests (Name/FullyQualifiedName): ブラウザ環境でのメモリ読み込みに対応し、Assembly.Locationが空の場合の処理を実装
  • ModuleTests Apple NativeAOT: NativeAOTでもAssembly.Locationが空のため、同様の条件分岐を適用
  • EnvironmentTests.GetFolderPath_Unix: ブラウザVFSに/usr/shareディレクトリを作成(SpecialFolder.CommonApplicationData対応)
  • PackedSimdTests: ActiveIssueをConditionalClass属性に置き換え、MonoランタイムとReadyToRunコンパイル環境でのみ実行

パフォーマンスへの影響

影響なし

関連Issue

#123011、#127786

その他

  • ブラウザ CoreCLR Release環境で検証済み:ZipFile_Unix 14/14合格、ModuleTests 146/146合格、GetFolderPath theory 13/13合格
  • PackedSimdTests は ReadyToRun環境で45テスト実行・全て合格、interpreter環境ではクラス単位でスキップ
  • Monoブラウザ環境での包括的検証は実施されていないが、Module早期リターン処理が適用される予定

#134760 [browser][trimmed] Fix DI generic constraint tests conflicting with trimmability validation

概要

PublishTrimmedが有効な場合、DependencyInjection(DI)のtrimmability検証機能がデフォルトで有効になり、テストケースが意図的に使用していたオープンジェネリック登録がバリデーションエラーで拒否される問題を修正します。DIテストプロジェクトで検証機能をオプトアウトし、明示的に検証が必要なテストのみRemoteExecutorで有効化することで、トリミング互換性を保証しながらテストカバレッジを維持します。

変更内容

  • Microsoft.Extensions.DependencyInjection.Tests.csproj: VerifyDependencyInjectionOpenGenericServiceTrimmabilityをfalseに設定し、デフォルトのtrimmability検証をオプトアウト
  • CallSiteFactoryTest.cs: 5つのActiveIssue属性を削除。VerifyOpenGenericTrimmabilityChecksテストのみRemoteExecutorで検証機能を明示的に有効化

パフォーマンスへの影響

影響なし

関連Issue

#134266

その他

  • テスト検証: browser-wasm CoreCLR Release環境で、EnableAggressiveTrimming=trueとTestTrimming=trueの設定下で884テスト中847が成功、37がスキップ、0が失敗
  • 7つの再度有効化されたテストケース(4つのFact + 3つのTheoryロー)がすべてパス
  • RemoteExecutorがサポートされない環境(ブラウザ含む)では該当テストが自動スキップされます

#134759 [browser][CoreCLR] Root UnloadableAssembly so trimmed builds keep it for AssemblyGetForwardedTypesLoadFailure

概要

ブラウザの積極的なトリミング(aggressive trimming)ビルドにおいて、AssemblyGetForwardedTypesLoadFailureテストが失敗する問題を修正します。ILLinkがtype forwarderの参照先であるUnloadableAssemblyを削除していたため、GetForwardedTypes()が予期されたBadImageFormatExceptionではなくファイル不在エラーで失敗していました。ILLink.Descriptors.xmlでUnloadableAssemblyをroot化することで、ReferenceAssemblyAttributeとともに保持されるようにしました。

変更内容

  • src/libraries/System.Runtime/tests/System.Reflection.Tests/ILLink.Descriptors.xml: UnloadableAssemblyをroot化するディスクリプタを追加(+2行)
  • src/libraries/System.Reflection.Tests/AssemblyTests.cs: AssemblyGetForwardedTypesLoadFailureに関連するActiveIssue #134263を削除(-3行)

パフォーマンスへの影響

影響なし

関連Issue

  • #134263 - 部分的に解決(forwarded-types半分のみ、MetadataLoadContext MarshalAs半分はdotnet/cecil側の修正が必要)
  • #124344 - Apple CoreCLRの同様の問題に対応見込み
  • #129226 - Apple CoreCLRのActiveIssueを追加
  • #77821 - Android向けActiveIssueは保持

その他

  • 検証: browser-wasm、CoreCLR、Releaseビルドで検証済み。System.Reflection.Testsスイート実行結果は1773テスト中1749合格、24スキップ、0失敗。
  • 制限事項: #134263の完全解決ではなく、MetadataLoadContext MarshalAs半分はdotnet/cecil内のCecilバグが原因であり、TrimMode=copyの既存回避策がSystem.Reflection.MetadataLoadContext.Tests.csprojに残存。
  • プラットフォーム対応: Apple CoreCLRについてはruntime-extra-platformsでの検証が必要。Android対応は保留中。

#134744 JIT: Extend non-null assertion propagation to pointer-sized comparisons

  • 作成者: @EgorBo
  • 作成日時: 2026年09月27日 14:18:52(UTC)
  • マージ日時: 2026年09月28日 11:54:25(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITコンパイラの非null assertion伝播(non-null assertion propagation)をポインタサイズ比較にも拡張しました。これにより、より多くのnullチェックがコンパイル時に最適化・削減されます。

変更内容

  • src/coreclr/jit/assertionprop.cpp: Non-null assertion伝播ロジックをポインタサイズ比較に対応させるため、既存のassertion処理を拡張(+5行、-12行の変更)

パフォーマンスへの影響

改善あり。提供されたdiffから、複数のnullチェックが削減され、JITが生成するコードがより最適化されることが確認されています。具体的な改善率は記載されていません。

関連Issue

なし

その他

  • 内部実装(JITコンパイラ最適化ロジック)の変更
  • 公開APIへの影響はなし
  • 破壊的変更なし

#134738 Avoid Type.GetTypeCode in ConcurrentDictionaryTypeProps.IsWriteAtomicPrivate

  • 作成者: @EgorBo
  • 作成日時: 2026年09月27日 12:05:23(UTC)
  • マージ日時: 2026年09月28日 11:57:17(UTC)
  • ラベル: area-System.Collections

概要

Type.GetTypeCode(typeof(T))の呼び出しがILC(Intermediate Language Compiler)のスキャナーで折りたたまれていなかったため、値型の型情報に関連する不要なメタデータやコードがNativeAOTバイナリに含まれていました。この変更により、ConcurrentDictionaryTypeProps<T>.IsWriteAtomicPrivateの実装を見直し、NativeAOTバイナリサイズを約70 KB削減(Linux環境で180 KBのサイズギャップのうち約70 KBを改善)しています。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Collections/Concurrent/ConcurrentDictionary.cs:ConcurrentDictionaryTypeProps<T>.IsWriteAtomicPrivateメソッドの実装を変更
    • 従来のType.GetTypeCode()に依存する実装(56行)から、より効率的な実装(67行、ネット+11行)に改善
    • RuntimeType.GetEnumUnderlyingType、Enum.GetEnumInfo、Enum関連のリフレクションメタデータ、Enum書式設定コードをバイナリから除外

パフォーマンスへの影響

バイナリサイズの改善: Linux環境のNativeAOT hello worldで約70 KBのサイズ削減が確認されています(Linux 1.35 MB → 実装後は不記載だが改善)。Console.Out → Encoding.GetEncoding() → ConcurrentDictionary<string, int>経由で影響を受けていた不要なEnum関連コードが削除されます。

実行時のパフォーマンスへの影響は明記されていません。

関連Issue

#134738

その他

  • NativeAOT環境でバイナリサイズ最適化が重要な関心事
  • この変更は公開API変更ではなく、内部実装の改善
  • ILCのスキャナーがType.GetTypeCode()を適切に認識できていなかった問題に対する実装側からのアプローチ

#134730 [wasm] Bump chrome for testing - linux: 154.0.8037.57, windows: 155.0.8059.12, mac: 155.0.8059.12

概要

WebAssembly(WASM)テスト環境で使用するChromiumブラウザのバージョンを更新するプロパティファイルの変更です。Linux、Windows、macOS各プラットフォーム向けの最新バージョンに更新されています。

変更内容

  • eng/testing/BrowserVersions.props: Chrome for Testingのバージョンを更新
    • Linux: 154.0.8037.57
    • Windows: 155.0.8059.12
    • macOS: 155.0.8059.12

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

なし


#134688 Disable HPKE ECDH NIST curves on Android

  • 作成者: @vcsjones
  • 作成日時: 2026年09月25日 22:43:57(UTC)
  • マージ日時: 2026年09月28日 18:09:10(UTC)
  • ラベル: area-System.Security

概要

AndroidプラットフォームでHPKE(Hybrid Public Key Encryption)の楕円曲線ディフィ・ヘルマン(ECDH)NIST曲線実装を無効化します。AndroidのECDiffieHellman実装が秘密鍵dから公開鍵Qを回復できないために、テストが失敗していた問題に対処しています。X25519DiffieHellmanは引き続き有効です。

変更内容

  • src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HpkeKemMetadata.Managed.cs
    • HpkeKemMetadata内でAndroid上のECDH NIST曲線サポートを条件付きで無効化
    • X25519DiffieHellmanはAndroidでも引き続き利用可能

パフォーマンスへの影響

影響なし

関連Issue

#134688

その他

  • この変更はプラットフォーム固有の制限(Android)に対応するものです
  • HPKE実装自体ではなく、基盤となるECDiffieHellman APIの制限が原因です
  • 他のプラットフォームのNIST曲線サポートに影響はありません

#134680 JIT: Fix normalization check for parameter register fields

概要

JITコンパイラの正規化チェック処理を修正。パラメータレジスタフィールドの小フィールド処理において、フィールドのレジスタ相対オフセットを使用して、右シフト操作がすでに正規化を実行しているかどうかを正しく認識するように改善しました。

変更内容

  • src/coreclr/jit/rationalize.cpp: フィールドの正規化チェックロジックを修正(+2/-1)
    • レジスタ相対オフセットを利用した正規化判定の改善
    • パラメータレジスタに関連する小フィールドの処理を最適化

パフォーマンスへの影響

影響なし(正規化チェックロジックの修正であり、パフォーマンスへの直接的な影響は報告されていません)

関連Issue

なし

その他

内部実装の修正(JIT/rationalize処理)であり、公開APIへの影響はありません。


#134639 Split RuntimeParameterInfo runtime-specific members

概要

RuntimeParameterInfoクラスの実装をランタイム固有の部分と共有可能な部分に分割しました。共有実装をlibrariesパーティションに移動し、CoreCLR固有のメンバーはCoreClR用の部分クラスに保持し、Monoからは除外しています。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs: 共有実装のみを保持(-196行、共有ロジックを残す)
  • src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.CoreCLR.cs: CoreCLR固有メンバーを新規作成(+172行)
  • src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems: 共有ソース にMonoを除外した包含設定を追加
  • src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj: 冗長なソース包含を削除(-1行)
  • src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.NativeAot.cs: 形式調整(20行変更)
  • src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj: CoreCLR部分クラスの包含設定を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更はコード組織の改善です。共有可能なロジックと各ランタイムの固有実装を明確に分離することで、コードの保守性と再利用可能性が向上します。NativeAoTでの冗長な包含が削除されることで、ビルド設定がシンプルになります。


#134635 Simplify single-threaded CoreCLR locks in Release builds

概要

単一スレッド環境(WASM)における CoreCLR ロック操作の最適化。Release ビルドで Crst と DeadlockAwareLock を特殊化し、不要なマルチスレッド対応コード(GC モード遷移、スレッド間デッドロック追跡など)を削除。FEATURE_MULTITHREADING が定義されていない単一スレッド Release ビルドではロック操作をインライン no-op に簡略化し、メモリフットプリントと実行時オーバーヘッドを大幅に削減。マルチスレッド構成と Debug ビルドは既存実装を保持。

変更内容

  • src/coreclr/vm/crst.h/crst.cpp: Crst と CrstBase を !FEATURE_MULTITHREADING && !_DEBUG 下で特殊化。初期化・破棄・取得・解放をインライン no-op に。ミューテックス/フラグ格納を省略。
  • src/coreclr/vm/threads.h/threads.cpp: DeadlockAwareLock を保持フラグのみに削減。スレッド間デッドロック追跡コードをガード。
  • src/tests/Loader/classloader/TypeInitialization/CctorsWithSideEffects/CctorThrowStaticField.cs: 再入可能初期化テスト(121 行追加)。
  • src/tests/Interop/LayoutClass/LayoutClassTest.cs: 再帰的レイアウト失敗カバレッジ(15 行追加)。

パフォーマンスへの影響

改善率:

  • sizeof(Crst): 132 B → 1 B(99.2% 削減)
  • sizeof(DeadlockAwareLock): 4 B → 1 B(75% 削減)
  • sizeof(ListLock): 140 B → 12 B(91.4% 削減)
  • sizeof(ListLockEntry): 172 B → 44 B(74.4% 削減)
  • corerun.wasm: 4,517,870 B → 4,493,540 B(24,330 B、約 0.54% 削減)
  • dotnet.native.wasm: 4,689,892 B → 4,665,417 B(24,475 B、約 0.52% 削減)

実行速度: 汎用クラス初期化 4,096 回(中央値): 5.3659 ms → 4.6473 ms(約 13.4% 改善)。ただし実装に基づいた焦点的計測で、アプリケーション全体への速度改善は未測定。ロック操作は ret void に削減、リスト取得は保持バイト確認/格納のみに。

関連Issue

なし

その他

  • 互換性: 破壊的変更なし。マルチスレッド構成と Debug ビルドは既存実装を保持。公開 API ではなく内部実装のみの変更。
  • 検証状況: Release/Debug 両ビルド通過。7 つの焦点テスト(初期化・再入・キャッシュ失敗・再帰レイアウト)を実施。WASM バイナリを wasm-tools validate で検証済み。ただし、非 WASM ビルドおよび実際のマルチスレッド WASM 実行は未検証。
  • 未解決: Copilot

#134595 [release/11.0] Match old layouts and feature selection for named mutexes for cross-TFM compatibility

概要

.NET 11 RC1アプリと.NET 10以下のアプリ間でUnix上の名前付きミューテックスを使用する際に、放棄されていないミューテックスに対して誤ったAbandonedMutexExceptionが発生する回帰不具合を修正します。レイアウトと機能選択を以前のバージョンと一致させてクロスTFM互換性を確保します。

変更内容

  • System.Private.CoreLib/src/System/Threading/NamedMutex.Unix.cs: Unix プラットフォーム向けの名前付きミューテックス実装を更新し、レイアウトと機能選択ロジックを修正
  • Interop/Unix/System.Native/Interop.LowLevelCrossProcessMutex.cs: P/Invoke定義の調整
  • src/native/libs/System.Native/pal_crossprocessmutex.c/.h: ネイティブレイヤーのクロスプロセスミューテックス実装を修正
  • src/native/libs/System.Native/pal_crossprocessmutex_unsupported.c: 非サポートプラットフォーム向けの対応

パフォーマンスへの影響

影響なし

関連Issue

#134541(元のPR) #117635(回帰の原因)

その他

  • .NET 11 RC1への回帰修正をrelease/11.0ブランチにバックポート
  • カスタマーから報告されたissue
  • リスク評価:Low(名前付きミューテックスロジックのみに影響)
  • テスト:手動検証完了

#134502 [WIP] Fix integer-divide overflow in JIT strength reduction

  • 作成者: @Copilot
  • 作成日時: 2026年09月23日 09:12:16(UTC)
  • マージ日時: 2026年09月28日 12:03:49(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT強度低減(strength reduction)における整数除算オーバーフロー問題を修正します。符号付きGCD計算でのオーバーフロー(特に最小値のケース)を防ぐガード条件を追加し、int型とlong型のリグレッションテストを追加します。

変更内容

  • src/coreclr/jit/inductionvariableopts.cpp: GCD計算のオーバーフロー防止ガードを追加(+6行)
  • src/tests/JIT/Regression_ro_2/Runtime_133756.cs: int型とlong型の回帰テストケースを追加(+45行)

パフォーマンスへの影響

影響なし(ガード条件の追加により若干のチェックが増加しますが、エッジケースに限定)

関連Issue

#133756

その他

現状: WIP(Work in Progress)段階。Copilot Code Reviewにより以下の指摘が挙がっています:

  • 高重要度: long回帰テストのコンパイルエラー(16進定数をlong型にキャストする必要がある)
  • 中重要度: GCDガード条件が過度に広い(最小値/-1オーバーフローケースに限定すべき)

修正完了前のため、マージ不可の状態です。


#134312 [wasm] Make CoreCLR WebCIL images self-installing (wrapper version 2)

概要

WebAssembly向けのCoreClR WebCILイメージを自己インストール可能に変更し、WASI R2R有効化を簡素化します。パッシブセグメント方式から、ホスト提供の基本グローバルを使用するアクティブセグメント方式へ移行し、WebCILラッパーバージョン2を導入します。インスタンス化時にエンジンが自動的にペイロードと関数テーブルをインストールするため、ホスト側の手動インストール処理は不要になります。

変更内容

  • WebCILラッパー:バージョン2導入

    • ペイロード:データセグメント1は(global.get __memory_base)でのアクティブセグメント
    • 関数テーブル(R2R):(global.get __table_base)でのアクティブエレメントセグメント
    • メタデータ:データセグメント0はパッシブのまま(payloadSize/tableSize保持)
    • エクスポート:getWebcilSizeとpatchWebcilHeader(R2R);旧getWebcilPayload/fillWebcilTableは削除
    • バージョン1は廃止;ホストはバージョン2のみ受け入れ
  • crossgen2/WebCilObjectWriter:アクティブペイロード/エレメントセグメントとスタブを常時出力

  • IL-onlyラッパー:バージョン1ペイロード向けバージョン2ラッパーを出力;Monoはバージョン0パッシブ方式維持

  • ホスト統合(browser host、corerun):バージョン2要求、常に__memory_base供給、R2RイメージでpatchWebcilHeader呼び出し

  • リーダー拡張:WebcilReaderとWebcilImageReaderがアクティブペイロード(メモリインデックス付きアクティブ形式含む)に対応

  • ドキュメント更新:docs/design/mono/webcil.mdでラッパーバージョン2、ホストABI、マッチングアーティファクト仕様を記載

パフォーマンスへの影響

影響なし。セグメント形式の変更は出力サイズやランタイム性能には直接的な影響を与えません。ただしインスタンス化時のアクティブセグメント自動インストールにより、ホスト側の明示的なデータコピー処理が削減されます。

関連Issue

#133265(WASI R2Rの前提条件)

その他

  • 互換性に関する注意:バージョン1(パッシブセグメント)は廃止。既存のR2Rイメージはバージョン2で再生成が必要です。
  • Mono非対応:Monoはバージョン0パッシブ方式のまま変更なし。
  • 検証済み:アクティブペイロード/テーブル配置、メタデータ、エクスポート、バージョン、アラインメント、スタブ出力をテスト。IL-only/composite/component-stubモジュールがwasm-tools validateを通過し、インスタンス化後のペイロードがバイト同一、テーブルスライスが埋められること

#133457 Prevent dual-mode accept tests from hanging

  • 作成者: @wfurt
  • 作成日時: 2026年09月08日 22:48:05(UTC)
  • マージ日時: 2026年09月28日 21:27:05(UTC)
  • ラベル: area-System.Net.Sockets

概要

macOSにおいて、デュアルモードソケットの受け入れテストがアドレスファミリー不一致時に無限待機する問題を修正しました。PortBlockerに明示的なシャドウアドレス対応を追加し、失敗予定の接続をTryConnectでバウンド化し、有効な同一ファミリーの接続を事前キューイングすることで、ソケット破棄に依存せず正常に完了するよう改善しています。

変更内容

  • SocketTestExtensions.cs: PortBlockerにシャドウアドレスパラメータを追加し、バインド失敗時のソケットリークを防止(MainSocketと_shadowSocketのdispose追加)
  • DualModeSocketTest.cs: 負のデュアルモード受け入れテスト(AcceptV6BoundToAnyV4_CantConnect等)を強化し、ミスマッチアドレスファミリーの接続をバウンド化、受け入れた有効なクライアントを検証、Sync/APM/EAP/Task実装全体で対応

パフォーマンスへの影響

影響なし

関連Issue

#16265(歴史的な同類問題)、#1481、#80715(テスト再有効化)

その他

テスト専用の変更。System.Net.Sockets.Testsで検証済み(Total: 32, Errors: 0, Failed: 0, Skipped: 0)。Copilot指摘のバインド再試行時のリソースリークについて、修正内容に含まれています。


#133222 Use hidden arguments for NativeAOT thunks

  • 作成者: @jkotas
  • 作成日時: 2026年09月04日 03:40:35(UTC)
  • マージ日時: 2026年09月28日 01:31:33(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOTのthunk処理において、TLS(Thread Local Storage)ベースのコンテキスト受け渡しを、RyuJITがサポートするSecretStubArgument(隠しパラメータ)に置き換える変更です。これにより、アーキテクチャ固有のアセンブリコード量を削減できます。委譲インターフェース呼び出しやPInvoke thunkで隠しコンテキストパラメータが渡されるようになります。

変更内容

  • コンパイラIL生成: DelegateMarshallingMethodThunk.csとILEmitter.csで隠し引数をシグネチャに追加
  • Runtime層: TLS経由のコンテキスト取得を削除し、直接パラメータ経由でコンテキストを受け取るよう変更(InteropHelpers.cs、PInvokeMarshal.cs)
  • アーキテクチャ別実装: AMD64/x86/ARM64/ARM/LoongArch64/RISC-V向けの共通stubアセンブリを削除。代わりにthunkコード生成時(ThunksMapping.cpp)に直接コンテキストをロードする実装に変更
  • アセンブリコード削除: 複数アーキテクチャのInteropThunksHelpersファイルを削除
  • x86スタックプローブ対応: codegenxarch.cppで隠し引数がスタック検査時に保持されるよう修正

パフォーマンスへの影響

間接的なTLS lookup処理が削除され、コンテキストは隠しパラメータとして直接渡されるため、わずかなオーバーヘッド軽減が期待されます。アーキテクチャ固有のアセンブリコード削減により、バイナリサイズが縮小します。

関連Issue

#132534

その他

Copilotレビュー指摘: ThunksMapping.cppの未整列メモリアクセス(バイトオフセット7でのvoid**の型付きストア)がC++の未定義動作を引き起こしている点が指摘されています。その他、i386/ppc64le/s390x向けの未使用InteropThunksHelpers.Sが削除されず残っている点も指摘されており、クリーンアップが必要です。


#131952 Reduce weak ref blocking with java interop

  • 作成者: @BrzVlad
  • 作成日時: 2026年08月06日 16:10:27(UTC)
  • マージ日時: 2026年09月28日 14:03:52(UTC)
  • ラベル: area-GC-coreclr

概要

Android Java相互運用性におけるブリッジオブジェクト処理中の弱参照ブロッキングを削減します。オブジェクトヘッダーの未使用ビットをBIT_SBLK_BRIDGE_PENDINGとして再利用し、Java側処理待ちのブリッジオブジェクトのみマーク。弱参照解決時に、ブリッジ処理全体の完了を待つのではなく、対象オブジェクトが現在処理中かどうかをチェックして条件付きでのみブロックします。

変更内容

  • syncblk.h: オブジェクトヘッダーの高位ビットをBIT_SBLK_BRIDGE_PENDINGに再割り当て
  • gcbridge.cpp/h: ブリッジグラフ構築時にペンディング状態のハンドルを追跡し、処理完了時にビットをクリア
  • objecthandle.cpp: 弱ハンドルの高速パス(GCHandleInternalTryGetBridgeWait)をブリッジペンディング状態を確認するよう更新
  • marshalnative.cpp: 弱ハンドル取得を新しいブリッジペンディング対応ヘルパー(TryGetObjectFromHandleWithoutBridgeWait)経由にルーティング
  • interoplibinterface_java.cpp (CoreCLR/NativeAOT): ペンディングビットの設定・クリア処理を実装
  • gcinterface.h/interface.cpp: GCブリッジインターフェース更新

パフォーマンスへの影響

弱参照ブロッキングの削減により、Java相互運用性シナリオでのスレッド待機時間を短縮します。具体的なベンチマーク結果は提供されていません。オブジェクトヘッダーのビット操作追加による若干のオーバーヘッドは無視できるレベルと考えられます。

関連Issue

#131370

その他

既知の懸念事項 (Copilotレビューで指摘):

  • interoplibinterface_java.cpp内のg_GCBridgeActiveチェック時にBIT_SBLK_BRIDGE_PENDINGがクリアされないケースが存在。ブリッジ処理の再実行時に古いペンディングビットが残る可能性がある(FIXMEコメント記載)
  • TryGetObjectFromHandleWithoutBridgeWaitでObjectFromHandleを二重呼び出ししている実装効率の問題
  • 回帰テスト(ペンディング/非ペンディング弱参照)と日本語以外のコメント更新が推奨されている

内部実装変更: ランタイムの内部GCブリッジインターフェース変更のため、公開APIへの互換性影響はありません。


#130463 Move SocketAsyncEngine to CoreLib so different SafeHandle types can use it.

概要

SocketAsyncEngineをSystem.Private.CoreLibに移動し、UnixHandleAsyncContextとして再構築することで、異なるSafeHandle型が共通の非同期エンジンを利用できるようにする変更です。これにより、ソケット以外のハンドルも同じ非同期I/O機構を活用できるようになります。

変更内容

  • System.Private.CoreLib への統合: SocketAsyncEngineの機能をUnixHandleAsyncContextとして新規実装し、CoreLibに移動。プラットフォーム別実装(Unix、Wasi、PlatformNotSupported)を提供
  • SocketAsyncContext の簡素化: 従来のSocketAsyncEngineの実装(約900行)を削除し、新しいUnixHandleAsyncContextに依存する形に変更
  • ネイティブP/Invoke の再構成: pal_networking.cの関連コード(約427行)をpal_io.cに移動し、ハンドル汎用の処理として整理。Interop.HandleEventsとInterop.SocketEventの統合
  • プロジェクト依存関係の更新: System.Net.NameResolution、System.Net.Primitives、System.Net.SocketsがSystem.Private.CoreLibの新しいAPIを参照するよう調整

パフォーマンスへの影響

影響なし

関連Issue

#47631

その他

  • 内部API: UnixHandleAsyncContextおよび関連クラスはSystem.Private.CoreLib内部の実装詳細であり、公開APIではありません
  • 既存のSocketAsyncEngineに依存するコードは内部実装のみのため、互換性への影響はありません
  • Wasiプラットフォーム対応も含まれており、ブラウザ環境での非同期I/Oにも対応

目次