Pull Request on 2026年10月14日

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

注意点

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


目次

  1. #135788 Fix DateTime parsing with Hebrew numbers
  2. #135780 [release/11.0] Remove unused client certificate from TLS host resumption test
  3. #135772 Fix ILVerify crash on callvirt to a static method
  4. #135767 Make GcScanRoots a no-op on native AOT/WASM
  5. #135765 WASM/WASI changes to bootstrapper
  6. #135762 Do not emit MethodAssociatedDataNode on WASM
  7. #135760 Do not use CORINFO_HELP_INITCLASS on native AOT
  8. #135756 [release/11.0] Return raw bytes from ZstandardDictionary.Train
  9. #135753 Use performant way to enforce handle inheritance restrictions, fail wth error if not available
  10. #135752 [HTTP] Clear proxy auth on redirect
  11. #135751 Disable parallelisation on SslStreamTlsResumeTests
  12. #135750 [release/11.0] Clarify async validation source documentation from API docs review
  13. #135746 Add post-handshake auth tests for TlsSession
  14. #135745 Re enable vector3Interop for gcstress
  15. #135743 EnvelopedCms.Decode should not run attribute-merge.
  16. #135741 Improve SignedCms and SignedXml processing
  17. #135740 Emit line number information for native AOT/WASM
  18. #135725 JIT: Reject native-int bounds checks in range check cloning
  19. #135723 JIT: Do not propagate non-nullness through isinst helpers
  20. #135722 JIT: Respect ordering side effects on the second operand when swapping
  21. #135721 JIT: Model xadd as writing its register operand
  22. #135720 JIT: Do not contain local addresses of volatile indirections on xarch
  23. #135719 JIT: Stop the redundant zero-init scan at blocks with other predecessors
  24. #135691 Clarify async validation source documentation from API docs review
  25. #135683 [EventPipe] Align EventPipeThreadSamplingRate parsing on CoreCLR and NativeAOT
  26. #135621 Fix CborReader exception handling for reserved simple-value headers
  27. #135600 JIT: use the second field's GC type for the ldp hi register in genPut…
  28. #135599 JIT: use the carry flag to detect SP wraparound in genLclHeap on ARM
  29. #135596 JIT: support register-condition SELECT_INC/NEG/INV on arm64
  30. #135575 Preserve ARM64 flags dependencies during indirection reordering
  31. #135549 Add OpenSSL v4 fallback for FreeBSD
  32. #135537 [Interpreter] Access object references in stack slots as raw pointers instead of checked OBJECTREFs
  33. #135531 Accept a faulted frame in the shadow stack assert of CallCatchFunclet
  34. #135434 Remove MoveSymbolFiles PDB consolidation; read CoreLib PDB from its natural location
  35. #135409 [release/11.0] Fix macOS Process hangs caused by stopped children
  36. #135377 Clean up FEATURE_CORPROFILER configuration
  37. #135366 Fix silent breaking-change documentation publication failures
  38. #135250 Simplify single-threaded CoreCLR thread and static machinery
  39. #135065 Add experimental ILLink task caching and cache maintenance
  40. #133572 [release/11.0] [Mono][browser] Quarantine double Min/Max NaN payload tests
  41. #132953 Add OpenHarmony/HarmonyOS build infrastructure

#135788 Fix DateTime parsing with Hebrew numbers

  • 作成者: @tarekgh
  • 作成日時: 2026年10月14日 20:08:54(UTC)
  • マージ日時: 2026年10月14日 23:50:24(UTC)
  • ラベル: area-System.DateTime

概要

ヘブライ語の数値(Hebrew numbers)を含む日時文字列を DateTime でパースする際、不正な入力が適切に失敗するよう修正するPRです。時・分・秒の各サフィックスに関する回帰テストが追加されています。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeParse.cs(+17/-1):DateTimeParse の処理を修正し、ヘブライ語の数値を含む不正な入力が適切に失敗するようにしました。
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DateTimeTests.cs(+10/-0):時・分・秒のサフィックスに関する回帰テスト3件を追加しました。

テスト結果(作成者による報告):

  • CoreLibのビルド成功
  • System.Runtimeの全テストスイート:78,526件成功、88件スキップ、失敗0件
  • 追加した3件の回帰テストは ICU と NLS の両方で成功
  • NLS の日付/時刻テスト:2,199件成功、1件スキップ、失敗0件
  • Invariant globalization の専用スイート:397件成功

パフォーマンスへの影響

影響なし(ベンチマーク結果の記載もありません)。

関連Issue

なし

その他

  • 変更は System.Private.CoreLib 内部の DateTimeParse 実装に限られ、公開APIの変更や破壊的変更に関する記載はありません。
  • 提供された情報には、修正前の具体的な不具合の挙動や修正の詳細な実装内容は含まれていません。

#135780 [release/11.0] Remove unused client certificate from TLS host resumption test

概要

DifferentHost_NoResume テストから、未使用のクライアント証明書を1行削除する変更です。この証明書が存在すると、Windows でクレデンシャルキャッシュが空(コールド)の状態において TLS セッション再開が成立しない問題があり、そのテスト失敗を解消します。#134422 の release/11.0 へのバックポートです。

変更内容

  • src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamAllowTlsResumeTests.cs: DifferentHost_NoResume からクライアント証明書の指定を1行削除(+0/-1)

製品コードの変更はなく、テストのセットアップのみの修正です。公開 API・内部実装・互換性への影響はありません。サーバーが要求しないクライアント証明書を削除するだけで、既存の再開(resumption)に関するアサーションは変更されていません。

パフォーマンスへの影響

影響なし

関連Issue

  • #134422(バックポート元の PR)

その他

  • 顧客報告ではなく社内で発見されたテスト失敗で、サービシング検証に影響していたものです。リグレッションではありません(導入時期は不明)。
  • main でも同様の失敗が発生していました。
  • #134422 では Windows x64 で3つのプロトコルバリアントすべてが成功し、新規プロセスでの追加30回の実行も成功したと報告されています。機能テスト・ユニットテストも実施済みです。このバックポートでの追加のローカルテストは未実施で、CI は実行待ちです。
  • リスクはテストのみ・1行削除のため低いとされています。

#135772 Fix ILVerify crash on callvirt to a static method

概要

callvirt の対象が static メソッドの場合に、ILVerify が ImportCall 内で NullReferenceException をスローしてクラッシュする問題の修正です。CallVirtOnStatic のチェックを FatalCheck に変更し、該当メソッドの検証を CallVirtOnStatic エラーとして打ち切って、次のメソッドの検証を継続できるようにします。

変更内容

  • src/coreclr/tools/ILVerification/ILImporter.Verify.cs (+1/-1)
    • CallVirtOnStatic チェックを FatalCheck 化。static ターゲットでは methodType が null になり、直後の CallVirtOnValueType チェックで null 参照が発生していたのを回避
    • 単にバリュー型チェックをスキップする方式ではなく、メソッドの検証自体を停止する方式を採用。IL がレシーバーをスタックに積んでいたかが不明で、残りを static 呼び出しとして検証するとスタックに関する誤ったエラーが出る可能性があるため
  • src/coreclr/tools/ILVerification.Tests/ILTests/CallTests.il (+14/-0)
    • 新規テスト Callvirt.StaticMethod_Invalid_CallVirtOnStatic を追加。static な SimpleClass::InObjectMethod(object&) を callvirt で呼び出し、CallVirtOnStatic のみがエラーとなるようパラメーター型の byref ローカルを渡す
    • ilasm は名前指定の callvirt ターゲットのシグネチャに instance を付加するため、MethodDef をトークンで指定

検証結果(作成者報告):

  • ILVerification.Tests: 修正前は Release/Debug とも 468/468、修正後は 469/469。修正を戻した状態で新規テストを実行すると NullReferenceException で失敗
  • ILVerify CLI: 修正前は NullReferenceException(終了コード 1)、修正後は CallVirtOnStatic と後続メソッドの ReturnVoid エラーを報告(終了コード 2)

パフォーマンスへの影響

影響なし

関連Issue

#135771(Resolves)。なお、類似の先行事例として #135445 が言及されています。

その他

  • 変更は ImportCall 内の callvirt チェックとテスト追加のみで、スコープは限定的です。
  • ILVerify(検証ツール)の内部実装の変更であり、公開 API や互換性への影響の記載はありません。
  • 本 PR は AI(Anthropic Claude と OpenAI Codex)の支援を受けて作成されたと記載されています。

#135767 Make GcScanRoots a no-op on native AOT/WASM

概要

Native AOT/WASM(WASI)向けのブリングアップの一環として、GcScanRoots 内の WASM 向けシャドウスタック走査(GcScanWasmShadowStack)を削除し、WASM では StackFrameIterator によるスタック走査を行わない(実質 no-op)ようにする変更です。旧 NativeAOT-LLVM プロトタイプ由来の t_pShadowStackTop/t_pShadowStackBottom(未定義のグローバル)への依存を取り除き、不要なリンク依存を解消することが目的です。CrossThreadUnhijack() の処理はそのまま維持されます。

作成者自身が明記している通り、これは WASM でのマネージドスタックルート列挙を未実装のままにするもので、GC の正しさを修正するものでも、本番利用可能なスタック走査のサポートでもありません。

変更内容

  • src/coreclr/nativeaot/Runtime/thread.cpp(+1/-14)
    • GcScanWasmShadowStack と、それが参照する未定義の t_pShadowStackTop/t_pShadowStackBottom を削除
    • StackFrameIterator による走査を非 WASM ターゲットでのみ実行するように変更(CrossThreadUnhijack() のバックアップ処理は維持)

パフォーマンスへの影響

影響なし(ベンチマーク等の記載なし)。

関連Issue

なし

その他

  • 検証結果(作成者による記載):
    • .\build.cmd clr.nativeaotruntime -rc Checked -os wasi -arch wasm は成功
    • シリーズ全体を適用した状態で、実際の CoreLib を使った Hello プログラム2種が、不要になったグローバルなしでリンクされ、Wasmtime 上で期待通りのテキストを出力し終了コード 0 で終了
  • 上記結果は、前提となる NativeAOT/Wasm 対応を含む結合済みローカルツリーでの検証であり、この単独ブランチ(main ベース)の新規ビルドによるものではありません。
  • GC 負荷時の挙動やルート生存性(root-survival)は未検証です。
  • この PR は、WASI/native AOT で Console.WriteLine の hello world をコンパイル・リンク・実行可能にする一連の PR の一部です。

#135765 WASM/WASI changes to bootstrapper

概要

WASM/WASI 向けの NativeAOT ブートストラップ(main.cpp)において、モジュール検出方法を変更するPRです。リンカのセクション境界シンボルではなく、ModulesSectionNode が出力する単一の __Module スロットを使用します。このスロットには ReadyToRun ヘッダへのポインタが格納されており、ブートストラップは &__Module とモジュール数 1 を InitializeModules に渡します。

WASI/NativeAOT で Console.WriteLine の Hello World をコンパイル・リンク・実行可能にするための一連のPRの一部です。

変更内容

  • src/coreclr/nativeaot/Bootstrap/main.cpp (+15/-0)
    • Wasm では __Module スロットのアドレスと数 1 を InitializeModules に渡す
    • Wasm では RhRegisterOSModule をスキップ(現状のネイティブのコードマネージャ/マネージドコード/unboxing range の登録が Wasm で未サポートのため)
    • 型マネージャの作成、statics、frozen objects、classlib 関数、モジュール初期化はそのまま維持
    • 他プラットフォームの既存の検出・登録パスは変更なし

制約: Wasm パスは「1 つの NativeAOT コンパイル単位」を前提としており、マルチモジュールや動的リンクのサポートは追加されません。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 検証結果(PR記載):
    • .\build.cmd clr.nativeaotruntime -rc Checked -os wasi -arch wasm は成功
    • ローカルのブートストラップ検証用フィクスチャで、修正前はセクションシンボル欠落によるリンクエラーが再現し、修正後はリンク・Wasm検証・実行に成功
    • シリーズ全体を適用した状態で、実際の CoreLib を用いた Hello の2種類のバリアントが Wasmtime 上でリンク・実行に成功
  • これらの結果は前提となる NativeAOT/Wasm 対応を含むローカルの統合ツリーでのものであり、このブランチ単独の新規ビルドではありません。フィクスチャはローカルの検証用で、本PRに追加されたテストではありません。

#135762 Do not emit MethodAssociatedDataNode on WASM

概要

WASM(WASI/Native AOT)ターゲットでは MethodAssociatedDataNode を出力しないよう、MethodHasAssociatedData が false を返すように変更しています。現行の associated-data 形式はアンワインド情報にメタデータを付加し、相対ターゲットポインタを出力しますが、これは WASM の表現に適合しません。実際のリンク失敗として、instantiating unboxing stub の associated-data レコードから関数シンボルを指す R_WASM_MEMORY_ADDR_LOCREL_I32 リレーションが発生していました(WASM の関数ポインタはテーブルインデックスであり、リニアメモリ相対アドレスではないため)。

Console.WriteLine の hello world を WASI/Native AOT でコンパイル・リンク・実行可能にするための一連の PR の一部です。

変更内容

  • src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/MethodAssociatedDataNode.cs(+4/-0)
    • MethodHasAssociatedData が WASM の場合に false を返すよう修正

形式の変更やテーブルインデックスを相対ポインタとして扱う回避策は取らず、bringup のためにサポート外のメタデータ出力を抑制するアプローチです。

パフォーマンスへの影響

影響なし(記載なし)

関連Issue

なし

その他

  • 検証結果(作成者報告):
    • ILCompiler.csproj の Checked ビルドは bringup 中に成功
    • 実 CoreLib の Hello オブジェクト 2 種が LLVM で読み取り可能になり、元の不正リロケーションによるリンク失敗を通過
    • シリーズ全体の適用で、両バリアントとも Wasmtime 上でリンク・実行に成功
  • 上記はシリーズ全体を含むローカル統合ツリーでの結果であり、この PR 単体(main ベース)の新規ビルドではありません。
  • associated-data に依存するランタイム動作は未検証です。
  • この情報を必要とするコンシューマー向けに、将来的に WASM 固有のメタデータ機構が必要になるとされています。

#135760 Do not use CORINFO_HELP_INITCLASS on native AOT

概要

WASM向けJITの fgGetSharedCCtor にある CORINFO_HELP_INITCLASS の早期リターンを、CoreCLR(FEATURE_NATIVEAOT でない場合)に限定する変更です。これによりNativeAOTでは、既存のReadyToRunのクラスコンストラクタ/静的ベースヘルパー選択ロジックを利用できます。ILCが実装できないヘルパーを要求していたことで、System.AppContext.OnUnhandledException(object) のコンパイル中に System.NotImplementedException: CORINFO_HELP_INITCLASS が発生していた問題を解消します。修正後のJITダンプでは CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE が選択されます。

WASI上でnative AOTを使って Console.WriteLine のhello worldをコンパイル・リンク・実行できるようにする一連のPRの一部です。

変更内容

  • src/coreclr/jit/flowgraph.cpp(+5/-2)
    • fgGetSharedCCtor 内のWasm向け CORINFO_HELP_INITCLASS 早期リターンをCoreCLRのみに限定
    • CoreCLRのWasmでは、動的に生成されるヘルパーを避ける従来の挙動を維持

パフォーマンスへの影響

影響なし(ベンチマーク結果の記載もなし)

関連Issue

なし

その他

  • 検証内容(作成者による):
    • .\src\coreclr\build-runtime.cmd -checked -x64 -component wasmjit が成功
    • 実際のCoreLibの起動メソッドが、元のヘルパー選択エラーを越えてコンパイルされた
    • ローカルの2つのHelloオブジェクトが通常のスキャンと -NoDebug でコンパイルされ、シリーズの他の変更と合わせてWasmtime上でリンク・実行に成功
  • 上記の結果は、前提となるNativeAOT/Wasm対応を含むローカルの統合ブリングアップツリーによるもので、このPR単体(mainベースのブランチ)のクリーンビルドではない
  • プローブスクリプトはローカルのフィクスチャであり、このPRで追加されるテストではない

#135756 [release/11.0] Return raw bytes from ZstandardDictionary.Train

概要

ZstandardDictionary.Train の戻り値を、特定の品質で準備済みの ZstandardDictionary から、辞書の生バイト列 (byte[]) に変更します。従来は Train が既定品質で準備した辞書を返すため、呼び出し側が指定した圧縮品質が上書きされる問題がありました。生バイト列を返すことで、呼び出し側が任意の品質で ZstandardDictionary.Create により辞書を準備できます。

main ブランチの PR #135424 の release/11.0 へのバックポートです。

byte[] data = ZstandardDictionary.Train(samples, sampleLengths, maxDictionarySize);
using ZstandardDictionary dictionary = ZstandardDictionary.Create(data, quality: 19);

変更内容

  • System.IO.Compression.cs (ref): 公開 API Train の戻り値型を変更
  • Zstandard.PlatformNotSupported.cs: browser/WASI 向けスタブを新しいシグネチャに更新
  • ZstandardDictionary.cs: 実装を生バイト列を返す形に変更(+15/-5)
  • README.md: ドキュメントを追記(+18)
  • ZstandardDictionaryTests.cs: 既存のトレーニングテストを新しい戻り値に合わせて更新

パフォーマンスへの影響

影響なし(性能に関する記載・ベンチマークはなし)。

関連Issue

その他

  • 破壊的変更: 公開 API の戻り値型の変更です。API の形状は承認済みですが、破壊的変更のドキュメントは追跡中とされています。
  • 回帰ではありません: ZstandardDictionary は .NET 11 で新規追加された型です。
  • 顧客影響: この変更がないと、Train で生成した辞書により、呼び出し側が指定した圧縮品質が反映されない場合があります。
  • テストに関する記載は PR 本文にはありません。

#135753 Use performant way to enforce handle inheritance restrictions, fail wth error if not available

概要

ProcessStartInfo の InheritedHandles(ハンドル継承の制限)をUnixで強制する際の実装を、より高速な方法に置き換える変更です。利用できない環境ではエラーで失敗するようにしています。ただし、提供された情報には具体的な実装方式(使用するシステムコール等)の記述がなく、変更差分の規模(pal_process.c で +27/-55)から、ネイティブ層の処理が簡素化されたことのみが読み取れます。

変更内容

  • src/libraries/System.Diagnostics.Process/src/System/Diagnostics/ProcessStartInfo.cs(+2/-1): ProcessStartInfo 側の軽微な変更。
  • src/libraries/System.Diagnostics.Process/tests/ProcessHandlesTests.Unix.cs(+112/-0): Unix向けのハンドル継承に関するテストを追加。
  • src/native/libs/System.Native/pal_process.c(+27/-55): ネイティブ側のプロセス起動処理におけるハンドル継承制限の実装を変更。コード量は純減(-28行)。

パフォーマンスへの影響

タイトルに「performant way」とあり、パフォーマンス改善を意図した変更です。ただし、ベンチマーク結果や具体的な改善率は提供された情報に含まれていません。

関連Issue

なし

その他

  • タイトルから、必要な機能が利用できない環境ではフォールバックせずエラーを返す挙動に変わると読み取れます。この点は、一部のUnix環境での互換性・動作に影響する可能性があります(詳細な対象環境は提供情報からは不明)。
  • 作成者による概要・Copilotによる概要が提供されていないため、上記は PR タイトルと変更ファイルの統計情報のみに基づいています。

#135752 [HTTP] Clear proxy auth on redirect

  • 作成者: @ManickaP
  • 作成日時: 2026年10月14日 08:42:02(UTC)
  • マージ日時: 2026年10月14日 11:53:59(UTC)
  • ラベル: area-System.Net.Http

概要

HTTPリダイレクト時に、Proxy-Authorization ヘッダーをクリアするようにする修正です(RedirectHandler.cs の変更)。提供された情報にはPRの説明文がないため、変更の背景や詳細な動機までは不明です。リダイレクト先リクエストにプロキシ認証情報が引き継がれないようにする変更と解釈できます。

変更内容

  • src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/RedirectHandler.cs (+2/-1)
    • リダイレクト処理でプロキシ認証関連の情報をクリアする変更(内部実装)。
  • src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.Proxy.cs (+106/-0)
    • プロキシ関連の新規テストを追加。
  • src/libraries/Common/tests/System/Net/Http/LoopbackProxyServer.cs (+3/-1)
    • テスト用ループバックプロキシサーバーの小規模な修正。

公開APIの変更は確認できず、SocketsHttpHandler の内部実装(リダイレクト処理)への変更です。破壊的変更や非推奨化に関する記載は提供情報にはありません。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 提供情報にはPR本文、CVE番号、セキュリティ上の重要度に関する記載がないため、これらは不明です。
  • 変更規模は本体コードが数行、残りはテスト追加です。

#135751 Disable parallelisation on SslStreamTlsResumeTests

概要

SslStreamTlsResumeTests の並列実行を無効化するPull Requestです。このクラスは接続間のセッションキャッシュ状態に依存するため、並列テストコレクション外で実行することで、同じアセンブリ内の他テストがその状態へ干渉するのを防ぎます。dotnet/runtime#135689 で試みられたテスト単位のプロセス分離を、コレクション単位のシリアライズに置き換える内容です。

変更内容

  • src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamAllowTlsResumeTests.cs (+1/-0): SslStreamTlsResumeTests を並列化無効のコレクションに属させる変更(1行追加)
  • src/libraries/System.Net.Security/tests/FunctionalTests/System.Net.Security.Tests.csproj (+2/-0): 既存の DisableParallelization コレクション定義をテストアセンブリに含める変更(2行追加)

テストのみの変更であり、ランタイム・ライブラリの公開APIや内部実装、互換性への影響はありません。

パフォーマンスへの影響

影響なし(テスト実行上の変更のみ。対象クラスは他のテストコレクションと並列実行されなくなります)。

関連Issue

その他

  • 作成者による検証結果: ./build.sh clr+libs -rc release でビルド後、TLS再開関連の対象テスト32件が成功し、System.Net.Security テストプロジェクト全体では 5,116 件成功、8 件スキップ、0 件失敗。
  • PR説明はGitHub Copilotの支援で作成されたと記載されています。

#135750 [release/11.0] Clarify async validation source documentation from API docs review

概要

release/11.0 への #135691 のバックポートです。.NET 11 で導入された非同期検証機能の公開 API ドキュメント(XML ドキュメントコメント)を、API リファレンスレビューのフィードバックに沿って明確化しています。実行時の動作や API の形状に変更はありません。

変更内容

すべて src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ 配下の XML ドキュメントコメントの修正です。

  • AsyncValidationAttribute.cs: 非同期検証属性に関する記述の修正(+6/-5)
  • IAsyncValidatableObject.cs: 記述の軽微な修正(+1/-1)
  • ValidationException.cs: ドキュメントの追記・修正(+15/-3)
  • Validator.cs: IValidatableObject の公開検証エントリポイントに関するガイダンスの明確化と文言改善(+97/-18)

パフォーマンスへの影響

影響なし

関連Issue

なし(元 PR: #135691)

その他

  • ドキュメントのみの変更であり、リスクは低いとされています。
  • 新機能に対するドキュメント更新のため、リグレッションではありません。内部で発見されたもので、顧客報告ではありません。
  • テストについて: 差分は確認済みですが、このバックポートではビルドやテストは実行されていません。

#135746 Add post-handshake auth tests for TlsSession

  • 作成者: @rzikm
  • 作成日時: 2026年10月14日 07:08:27(UTC)
  • マージ日時: 2026年10月14日 09:41:53(UTC)
  • ラベル: area-System.Net.Security

概要

SslStream の TLS 1.3 ポストハンドシェイク認証(Post-Handshake Authentication)に関するテストを追加するPRです。あわせて SslStream.IO.cs と SslStreamPal.Unix.cs に小規模な変更(それぞれ +12 行、+4 行)が入っています。PRタイトルは TlsSession を対象としていますが、変更内容の詳細は提供情報からは確認できません。

変更内容

  • src/libraries/System.Net.Security/src/System/Net/Security/SslStream.IO.cs(+12/-0): 実装側の変更(詳細は提供情報に含まれていません)
  • src/libraries/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs(+4/-0): Unix 向け PAL の変更(詳細は提供情報に含まれていません)
  • src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamNetworkStreamTest.cs(+120/-0): ポストハンドシェイク認証のテストを追加(変更量の大半を占めます)

変更はいずれも追加のみ(削除なし)で、既存コードの削除や置き換えはありません。公開APIの変更は確認できません。

パフォーマンスへの影響

影響なし(提供情報にパフォーマンスに関する記載・ベンチマーク結果はありません)

関連Issue

なし

その他

  • 作成者: rzikm
  • PR概要の記載がないため、実装側の変更の意図や互換性への影響は提供情報からは判断できません。詳細は差分を確認してください。

#135745 Re enable vector3Interop for gcstress

概要

GC stress 環境で無効化されていた Vector3Interop テストを再度有効化する変更です。テストが無効化された原因は #127827 で、#127973 以降は最新のコードでテストが成功するようになったため、無効化を解除しています。

変更内容

  • src/tests/JIT/SIMD/Vector3Interop.cs(+0/-2): テストを無効化していた記述を2行削除

パフォーマンスへの影響

影響なし(テストの再有効化のみで、ランタイム/ライブラリの実装変更はありません)

関連Issue

  • #127827(テストを無効化した原因となったIssue)
  • #127973(この変更以降、テストが最新コード上で成功)

その他

  • テスト変更のみで、公開APIや互換性への影響はありません。
  • 作成者の説明によれば、最新のコード上でテストが成功することを確認済みです。

#135743 EnvelopedCms.Decode should not run attribute-merge.

  • 作成者: @bartonjs
  • 作成日時: 2026年10月14日 04:52:26(UTC)
  • マージ日時: 2026年10月14日 21:52:09(UTC)
  • ラベル: area-System.Security

概要

EnvelopedCms.Decode が Windows 上でのみ属性のマージ(attribute-merge)処理を実行していた問題を修正します。.NET Framework の Decode では属性のマージは行われておらず、SignedCms や Windows 以外の EnvelopedCms でもマージは行われていません。この変更により、Windows での挙動を他のケースと揃えます。

変更内容

  • src/libraries/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/HelpersWindows.cs (+1/-1)
    • Windows 実装の Decode で実行されていた属性マージ処理を行わないよう修正
  • src/libraries/System.Security.Cryptography.Pkcs/tests/EnvelopedCms/UnprotectedAttributeTests.cs (+35/-0)
    • 保護されていない属性(UnprotectedAttributes)に関するテストを追加(35行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 影響範囲は System.Security.Cryptography.Pkcs ライブラリの Windows 実装(内部実装)です。公開 API のシグネチャ変更は提供情報からは確認できません。
  • Windows 上の EnvelopedCms.Decode で、これまで同一種類の属性がマージされていた場合は、マージされなくなる動作変更となる可能性があります(.NET Framework および他のプラットフォームとの互換性を揃える修正)。

#135741 Improve SignedCms and SignedXml processing

概要

SignedCms(System.Security.Cryptography.Pkcs)および SignedXml / EncryptedXml(System.Security.Cryptography.Xml)、さらに System.Private.Xml の XmlTextReader 周辺の処理を改善する変更です。PR の説明文は提供されていないため、以下は変更ファイルから読み取れる範囲での要約です。

  • System.Private.Xml: XmlTextReaderImpl(同期/非同期)を修正し、LocalAppContextSwitches に新規スイッチを追加。属性バッファの無効化に関するテスト(AttributeBufferInvalidationTests)が追加されています。
  • System.Security.Cryptography.Pkcs: SignedCms(+173/-13)を中心に処理が変更されており、SignerInfo、Rfc3161TimestampRequest にも小規模な修正があります。
  • System.Security.Cryptography.Xml: SignedXml(+221/-146)、EncryptedXml(+243/-67)、Utils(+271/-5)、XmlDecryptionTransform など、ライブラリ全体にわたる大きな変更が入っています。独自の LocalAppContextSwitches(新規、+70)が追加されています。

変更内容

System.Private.Xml

  • LocalAppContextSwitches.cs: スイッチ追加(+12)
  • XmlTextReaderImpl.cs / XmlTextReaderImplAsync.cs: 同期・非同期の両経路で処理を変更
  • テスト: AttributeBufferInvalidationTests.cs(新規、+94)、テストプロジェクトへの追加

System.Security.Cryptography.Pkcs

  • SignedCms.cs: +173/-13
  • SignerInfo.cs: +2/-2
  • Rfc3161TimestampRequest.cs: +1/-1
  • テスト: SignedCmsTests.cs(+153)

System.Security.Cryptography.Xml

  • SignedXml.cs: +221/-146
  • EncryptedXml.cs: +243/-67
  • Utils.cs: +271/-5
  • XmlDecryptionTransform.cs: +48/-21
  • LocalAppContextSwitches.cs: 新規追加(+70)
  • Strings.resx: リソース文字列の追加・変更(+9/-3)
  • Canonicalization 関連: C14NAncestralNamespaceContextManager.cs、ExcAncestralNamespaceContextManager.cs、CanonicalXml.cs、ExcCanonicalXml.cs、CanonicalXmlElement.cs
  • Transform 関連: Transform.cs、TransformChain.cs、XmlDsigEnvelopedSignatureTransform.cs、XmlDsigXPathTransform.cs、XmlLicenseTransform.cs
  • テスト: EncryptedXmlTests.cs(+505)、SignedXmlTest.cs(+408/-3)、SignedXmlTests.cs(+202)、SignedXml_SignatureMethodAlgorithm.cs(+22/-7)
  • System.Runtime.Serialization.Xml の XmlCanonicalizationTest.cs も軽微に変更

その他 5 ファイルの詳細は提供情報に含まれていません。

パフォーマンスへの影響

提供情報からは判断できません(ベンチマーク結果の記載なし)。

関連Issue

なし

その他

  • 作成者による概要・Copilot による概要がなく、変更の動機や互換性への影響(破壊的変更の有無など)は提供情報からは確認できません。
  • LocalAppContextSwitches が System.Private.Xml と System.Security.Cryptography.Xml の両方に追加されていることから、AppContext スイッチで制御される動作変更が含まれている可能性があります。ただし、スイッチ名や既定値は提供情報にないため、詳細は PR 本体の確認が必要です。
  • 変更規模が大きく、テストコードの追加量(EncryptedXml / SignedXml / SignedCms)も多いため、レビュー時は挙動変更の範囲を実際の差分で確認することを推奨します。

#135740 Emit line number information for native AOT/WASM

概要

Native AOT の WebAssembly (WASM) 出力に DWARF の行番号情報を出力するようにし、WASMTIME_BACKTRACE_DETAILS=1 を指定した wasmtime がソースファイル名・行番号付きでバックトレースを表示できるようになります。ローカル変数・引数の情報は RyuJIT 側に情報がないため出力されません。

PR 説明に示されている実行例(抜粋):

1:    0x43b - reproZero_Program__DoAbort
                at D:\git\runtime2\src\coreclr\tools\aot\ILCompiler\reproZero\zerosharp.cs:164:0
2:    0x3d5 - reproZero_Program__Main
                at D:\git\runtime2\src\coreclr\tools\aot\ILCompiler\reproZero\zerosharp.cs:156:0

変更内容

  • WasmRelocatableObjectWriter.cs: DWARF カスタムセクションの出力と Wasm リロケーションの処理を追加(+138/-13)
  • WasmObjectWriter.cs: デバッグ用カスタムセクションを生成
  • WasmSection.cs: セクションのプレフィックスサイズを公開
  • MethodCodeNode.cs: funclet 用に行マッピングを再開始するよう変更
  • DwarfLineSequenceWriter.cs: 行シーケンスを正しく完了させるよう修正
  • DwarfInfo.cs: Wasm では未サポートのフレーム式を出力しないよう変更
  • DwarfBuilder.cs: Wasm アーキテクチャ向けの対応を追加

パフォーマンスへの影響

ランタイムの実行性能に関する記載はありません。変更はコンパイラ(ILCompiler)側のデバッグ情報出力に限られ、デバッグ情報セクション分だけ出力 .wasm ファイルのサイズが増える可能性があります(具体的な数値の記載なし)。

関連Issue

なし

その他

  • Copilot のレビューで、Wasm ライターが指定された --gdwarf-5 オプションを無視して常に DWARF v4 を出力するという指摘(重要度: Medium、未解決)があります。
  • 本変更は内部のコンパイラ/オブジェクトライターの実装に対するもので、公開 API や互換性への影響についての記載はありません。

#135725 JIT: Reject native-int bounds checks in range check cloning

  • 作成者: @EgorBo
  • 作成日時: 2026年10月13日 20:49:59(UTC)
  • マージ日時: 2026年10月14日 21:46:28(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITのrange check cloning(境界チェックの複製による最適化)において、インデックスまたは配列長が TYP_INT でない境界チェックを事前に除外する修正です。

従来の BoundsCheckInfo::Initialize は、非定数パスでのみインデックスの型を確認していました。そのため arr[(nint)0] のような TYP_LONG の定数インデックス(長さ側も CAST(long <- ARR_LENGTH) になる)が IsIntCnsFitsInI32() を通過して受け入れられていました。一方、optRangeCheckCloning_DoClone はガード条件を TYP_INT として生成するため、int/long 混在の relop が作られ、Checked ビルドではアサート、Release ビルドでは不正な IR が生成されていました。

変更内容

  • src/coreclr/jit/rangecheckcloning.cpp(+6/-0): 境界チェックのインデックスまたは長さが TYP_INT でない場合、複製の対象外として早期に除外するチェックを追加。
  • src/tests/JIT/Regression_ro_2/Runtime_134459.cs(+25/-0): 定数 nint インデックスによる配列アクセスで報告されたアサート失敗を再現する回帰テストを追加。

影響範囲は JIT 内部の最適化(公開 API の変更なし)で、互換性への影響は記載されていません。

パフォーマンスへの影響

影響なし。libraries.pmi では asm の差分もないと報告されています(変更は従来誤って受け入れられていたケースを除外するのみ)。

関連Issue

#134459(このPRで修正)

その他

Copilotによるレビュー概要では「承認推奨」で、未解決の指摘は0件とされています。保守的な型ガードにより不正な IR の生成を防ぎ、最適化付きの回帰テストが元の失敗を検証できるとの評価です。


#135723 JIT: Do not propagate non-nullness through isinst helpers

  • 作成者: @EgorBo
  • 作成日時: 2026年10月13日 20:47:47(UTC)
  • マージ日時: 2026年10月14日 22:00:19(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITの gtGetHelperCallClassHandle が、インターフェイスや不明なターゲットの場合に value 引数のクラスを使用し、その「非null」プロパティまでコピーしていた問題の修正です。この挙動は chkcast では正しいものの、isinst は失敗時に null を返すため、型比較の畳み込み(type compare folding)で本来必要な null チェックが削除されていました。isinst ヘルパーについては isNonNull をクリアするようにしています。

変更内容

  • src/coreclr/jit/gentree.cpp(+7/-0): isinst ヘルパー呼び出しの結果について、非null情報が伝播しないよう isNonNull をクリア
  • src/tests/JIT/Regression_ro_2/Runtime_134193.cs(+24/-0): 汎用の catch-all ヘルパーを対象にした、失敗するジェネリックなインターフェイスキャストの回帰テストを追加

影響範囲はランタイムの JIT(コンパイラ内部実装)で、公開APIの変更や互換性への影響に関する記載はありません。

パフォーマンスへの影響

影響なし(CI の diffs でも差分なしと報告されています)。

関連Issue

#134193(Fixes)

その他

Copilot のレビューでは、回帰テストが「バリアントでない(non-variant)インターフェイスのヘルパー」経路をカバーしておらず、今回の修正で変更された別経路のテストが不足している点が Medium の指摘として挙がっています(判定は "Changes recommended")。


#135722 JIT: Respect ordering side effects on the second operand when swapping

  • 作成者: @EgorBo
  • 作成日時: 2026年10月13日 20:47:23(UTC)
  • マージ日時: 2026年10月14日 21:52:43(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITの gtCanSwapOrder が、第1オペランドの GTF_ORDER_SIDEEFF のみを並べ替え不可として扱っていたバグの修正です。アサーション伝播により「例外を発生させない」と証明された除算は GTF_ORDER_SIDEEFF のみを保持します。このため、その証明の根拠となる checked な加算より前に除算が入れ替えられ、誤った例外がスローされる可能性がありました。修正後は、第2オペランドの順序付けの副作用も他の並べ替え不可の副作用と同様に扱います。

変更内容

  • src/coreclr/jit/gentree.cpp(+1/-1): スワップ可否の判定で、第2オペランドの GTF_ORDER_SIDEEFF も並べ替えを禁止する条件に含めました。
  • src/tests/JIT/Regression_ro_2/Runtime_134191.cs(+21/-0): 回帰テストを追加しました。OverflowException が先にスローされる順序が維持されることを確認します。

パフォーマンスへの影響

ベンチマーク結果は提供されていません。作成者は「いくつかの diff がある」としてCIのdiffリンクを示しています。並べ替えが抑止される分、一部のコード生成が変わる可能性がありますが、具体的な影響は提供情報からは不明です。

関連Issue

#134191(このPRで修正)

その他

  • 変更は内部のJIT実装(gentree.cpp)に限られ、公開APIや互換性への影響についての記載はありません。
  • Copilotのレビュー概要では、修正は順序付けの契約に沿っており、対象を絞った回帰テストが含まれるため、承認を推奨しています(未解決の指摘は0件)。

#135721 JIT: Model xadd as writing its register operand

  • 作成者: @EgorBo
  • 作成日時: 2026年10月13日 20:46:48(UTC)
  • マージ日時: 2026年10月14日 21:45:22(UTC)
  • ラベル: area-CodeGen-coreclr

概要

xadd [mem], reg は、メモリの古い値をレジスタ側に書き戻す命令ですが、JIT のエミッタでは xchg にだけ読み書き(RW)レジスタ形式が与えられ、xadd は読み取り専用の形式のままでした。そのため、冗長な mov を除去するピープホール最適化が lock xadd をまたいで遡り、結果のゼロ拡張である mov eax, eax を誤って削除していました。本 PR は xadd にも xchg と同じ RW レジスタ形式を使うよう修正します。

変更内容

  • src/coreclr/jit/emitxarch.cpp(+3/-3): メモリ形式の xadd(static / address / stack の各形式)について、レジスタオペランドを読み書き(RW)として扱うよう変更
  • src/tests/JIT/Regression_ro_2/Runtime_135385.cs(+21/-0): Interlocked.Add の結果のゼロ拡張が正しく行われることを確認するリグレッションテストを追加

パフォーマンスへの影響

影響なし(正確性の修正。diff も報告されていません)。

関連Issue

#135385

その他

  • Copilot のレビューでは、レジスタ‑レジスタ形式の xadd(emitIns_R_R 経由)で、第2レジスタが引き続き読み取り専用としてモデル化されたままになっている点が指摘されています(重要度: High、未解決)。本 PR の対象は、メモリ形式の xadd の修正です。

#135720 JIT: Do not contain local addresses of volatile indirections on xarch

  • 作成者: @EgorBo
  • 作成日時: 2026年10月13日 20:46:25(UTC)
  • マージ日時: 2026年10月14日 21:45:17(UTC)
  • ラベル: area-CodeGen-coreclr

概要

xarch(x86/x64)向けJITで、address-exposedなローカル変数へのvolatileアクセスが、エミッタのスタックmovパス経由で出力され、IsRedundantStackMovがvolatileを考慮しないために、同一の連続ストア(またはストア直後のロード)が除去されてしまう問題を修正します。volatileな間接参照ではローカルのアドレスをレジスタに保持し、これらのアクセスが省略されないようにします。

変更内容

  • src/coreclr/jit/lowerxarch.cpp(+2/-1): volatileな間接参照に対して、ローカルアドレスをcontainedにしない(レジスタに保持する)ように変更。
  • src/tests/JIT/Regression_ro_2/Runtime_135386.cs(+30/-0): 連続するvolatileストアに関する回帰テストを追加。

なお、Copilotのレビューでは、このテストは修正前の(問題のある)コードでも通ってしまうため、実際に出力されるvolatileアクセスを検証できていない(volatileストアの結合を検出できない)との指摘(重要度: Medium)が出ています。

パフォーマンスへの影響

正しさのために必要な修正であり、実運用での影響は小さいとされています。

  • libraries.pmiで4メソッド、計+21バイトのコードサイズ増加(まれなケース)。
  • いくつかのリグレッション(サイズ増加)が確認されていますが、正しさのために必要なものとされています。

関連Issue

その他

  • 対象はxarchのJIT(lowering)のみです。
  • 互換性への影響(破壊的変更など)に関する記載は提供情報にはありません。

#135719 JIT: Stop the redundant zero-init scan at blocks with other predecessors

  • 作成者: @EgorBo
  • 作成日時: 2026年10月13日 20:45:55(UTC)
  • マージ日時: 2026年10月14日 21:45:03(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITの optRemoveRedundantZeroInits が、プロローグからの全経路が走査対象ブロックを通ると仮定して、一意な BBJ_ALWAYS 後続ブロックをたどっていました。しかし合流ブロックには、ローカル変数(例: アドレス露出されたもの)に書き込む catch ハンドラ経由でも到達できるため、そこにある明示的なゼロ初期化ストアが誤って削除されていました。本PRは、先行ブロック(EH 経由を含む)が複数あるブロックで走査を停止するようにし、この誤削除(誤コンパイル)を修正します。正しさのために必要な修正です。

変更内容

  • src/coreclr/jit/optimizer.cpp(+8/-0): 先行ブロックが複数あるブロックで冗長なゼロ初期化の走査を停止するガードを追加
  • src/tests/JIT/Regression_ro_2/Runtime_134004.cs(+59/-0): catch ハンドラ内の書き込みが、その後のゼロ代入によって失われないことを検証する回帰テストを追加

パフォーマンスへの影響

libraries.pmi で 2 メソッドにわたり +17 バイトのコードサイズ増加があります。これは、これまで誤って削除されていたゼロ初期化が残るようになったためで、正しさのために必要な変更とされています。実行速度やスループットに関する計測結果は提供されていません。

関連Issue

その他

  • Copilot のレビューでは承認推奨とされており、このガードが再現された誤コンパイルを修正し、回帰テストも用意されていると評価されています。
  • 未解決の指摘が 1 件あり(重要度: 低)、メソッドのドキュメント(Notes)に「複数の先行ブロックを持つブロックで停止する」旨を追記すべきという内容です。
  • PR 作成者は、いくつかの回帰が見られるものの、正しさのために必要であると説明しています。

#135691 Clarify async validation source documentation from API docs review

概要

System.ComponentModel.Annotations の非同期検証API(Validator の非同期オーバーロード、AsyncValidationAttribute.GetValidationResultAsync など)に関する XMLドキュメントコメントのみ の修正です。API docsレビューで得られた指摘を反映し、キャンセル時の挙動や戻り値の契約を明確にしています。実行コード、APIシグネチャ、参照アセンブリは変更されていません。

変更内容

  • AsyncValidationAttribute.cs: GetValidationResultAsync に伝播する OperationCanceledException を記載し、現在形の表現へ統一
  • IAsyncValidatableObject.cs: 1行のドキュメント修正
  • ValidationException.cs: 短いコンストラクターに関する曖昧な説明を、属性・値を保持する ValidationException オーバーロードへのリンクに置換(inner exception を取るオーバーロードとの違いは維持)
  • Validator.cs:
    • 8つの非同期オーバーロードすべてに OperationCanceledException を記載
    • 非同期列挙中のキャンセルについて説明を追加
    • 検証結果コレクション(省略可能)と、値検証の戻り値の契約を明確化
    • 両方の ValidateObjectAsync オーバーロードで、必須プロパティの検証と validateAllProperties の非再帰的な適用範囲を説明

パフォーマンスへの影響

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

関連Issue

なし(PR番号: #135691)

その他

  • System.ComponentModel.Annotations のリファレンスドキュメントは dotnet/dotnet-api-docs 側(https://github.com/dotnet/dotnet-api-docs/pull/13101)で管理されており、本PRはそれに代わるものではありません。
  • 検証: System.ComponentModel.Annotations.csproj が警告・エラーなしでビルド成功。XMLコメントの構文、9件のキャンセル例外エントリ、3件のコンストラクター参照の解決を確認。git diff --check も通過。ドキュメントのみの変更のためテストは未実施。

#135683 [EventPipe] Align EventPipeThreadSamplingRate parsing on CoreCLR and NativeAOT

  • 作成者: @mdh1418
  • 作成日時: 2026年10月13日 16:48:29(UTC)
  • マージ日時: 2026年10月14日 16:08:47(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

CoreCLRとNativeAOTで挙動が異なっていた EventPipeThreadSamplingRate の解析方法を揃えるPRです。CoreCLR側の設定定義を変更し、NativeAOT側と同じ挙動にすることで混乱を減らすことが目的です。

変更内容

  • src/coreclr/inc/clrconfigvalues.h (+1/-1): EventPipeThreadSamplingRate の設定定義を1行変更。作成者の説明によると、これまでCoreCLRは16進数、NativeAOTは整数として解析しており、両者の挙動を揃える変更です。
  • 影響範囲はランタイム内部の構成値の解析のみで、公開APIの変更はありません。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 作成者の説明によると、EventPipeCircularMB は16進数解析のままですが、CoreCLRとNativeAOTで挙動が一致しており、ドキュメント上でも追加の説明は不要とのことです(Monoは整数として解析)。
  • 互換性について、PR情報には記載がありません。環境変数 DOTNET_EventPipeThreadSamplingRate の値の解釈が変わる可能性があるため、既存の設定値を利用している場合は注意が必要です。

#135621 Fix CborReader exception handling for reserved simple-value headers

概要

System.Formats.Cbor の CborReader における例外処理の修正です。

  • 予約済みの additional-information 値 28〜30(初期バイト 0xFC、0xFD、0xFE)は不正な CBOR ですが、従来は ReadSimpleValue が InvalidOperationException を報告していました。スキップ API やエンコード済み値 API でも同じ例外が漏れていました。これらの入力は、適合性チェックが無効な場合も含め、CborContentException をスローするようになります。
  • ReadUnixTimeSeconds は、エンコードされた Unix 時刻が DateTimeOffset で表現できない場合、数値変換で発生する ArgumentOutOfRangeException と OverflowException の両方を InvalidOperationException に変換します。元の例外は内部例外として保持され、失敗時にはリーダーのチェックポイントが復元されます。

変更内容

  • Resources/Strings.resx: 新しいエラーメッセージ用のリソースを追加(+6)
  • Reader/CborReader.Simple.cs: 既存のエラー分岐内で、予約済み値(28〜30)に対して CborContentException をスローする判定を追加(+6)
  • Reader/CborReader.Tag.cs: ReadUnixTimeSeconds で ArgumentOutOfRangeException / OverflowException を InvalidOperationException に変換し、内部例外を保持。失敗時はチェックポイントを復元(+10/-2)
  • テスト(CborReaderTests.Helpers.cs / .Simple.cs / .SkipValue.cs / .Tag.cs): 回帰テストを追加
    • ネストされた値、段階的な入力、すべての適合モード、リーダーのロールバックを対象
    • 数値の境界値と復旧(厳格なマップキー検証を含む)を対象

互換性・挙動に関する補足:

  • 判定は既存のエラー分岐内に限定されており、有効な浮動小数点エンコーディングやコンテナ終端の誤用は、従来どおり InvalidOperationException のままです。
  • ReadUnixTimeSeconds の数値演算自体は変更されておらず、成功パスへの事前チェックも追加されていません。
  • ReadDecimal は従来の OverflowException の挙動を維持します。整形式だが範囲外の値は、不正な CBOR として再分類されません。

パフォーマンスへの影響

影響なし(成功パスへの事前チェックは追加されていません)。

関連Issue

なし

その他

  • #135359(dangling-tag 修正)とは独立した変更で、変更ファイルの重複もありません。
  • この Pull Request は GitHub Copilot を用いて作成されたと記載されています。

#135600 JIT: use the second field's GC type for the ldp hi register in genPut…

  • 作成者: @EgorBo
  • 作成日時: 2026年10月11日 17:15:40(UTC)
  • マージ日時: 2026年10月14日 02:17:03(UTC)
  • ラベル: area-CodeGen-coreclr

概要

ARM64 JITにおいて、構造体引数をスタックに渡す処理(genPutArgStk)で使われる ldp 命令の上位(2番目)レジスタに、誤ったGCタイプが設定されていた問題を修正します。2番目のフィールドのGCタイプを上位レジスタに使用するようにしました。

変更内容

  • src/coreclr/jit/codegenarmarch.cpp(+1/-1): ldp の上位レジスタに対して、2番目のフィールドのGCタイプを使用するよう修正
  • src/tests/JIT/Regression_ro_2/Runtime_134066.cs(+56/-0): 該当のスタック引数パスを対象とした回帰テストを追加(Copilotの概要によると、fully interruptibleな実行を対象としたテスト)

パフォーマンスへの影響

影響なし(提供された情報にベンチマーク結果の記載はありません。PR作者はいくつかのdiffを提示していますが、数値は示されていません)。

関連Issue

#134066

その他

  • 内部実装(JITコード生成)の修正であり、公開APIへの変更や互換性への影響に関する記載はありません。
  • Copilotのレビューでは、修正内容は隣接するload/storeの処理と整合しており、回帰テストも適切であるとして承認推奨(未解決の指摘事項0件)とされています。

#135599 JIT: use the carry flag to detect SP wraparound in genLclHeap on ARM

  • 作成者: @EgorBo
  • 作成日時: 2026年10月11日 17:15:30(UTC)
  • マージ日時: 2026年10月14日 02:18:37(UTC)
  • ラベル: area-CodeGen-coreclr

概要

ARM/ARM64 の JIT における genLclHeap(localloc/stackalloc)の非ゼロ初期化パスで、sp - size のラップアラウンド(SPの巻き戻り)検出に、符号付きオーバーフロー判定(bvc/EJ_vc)ではなくキャリーフラグを使うよう修正します。 修正前は、巨大な stackalloc を行うと SP がラップした値に設定され、プローブされずにスタックオーバーフローとして扱われませんでした。 Fixes #135524

変更内容

  • src/coreclr/jit/codegenarm64.cpp: ラップアラウンド検出の分岐条件を EJ_vc から EJ_hs(キャリーセット=借りなし)に変更し、対応するアセンブリコメントを更新(+2/-2)
  • src/coreclr/jit/codegenarm.cpp: ARM(32bit)側にも同等の修正を適用(+2/-2)

パフォーマンスへの影響

影響なし(作成者はコード生成の差分(diffs)へのリンクを提示していますが、具体的な数値は提供されていません)。

関連Issue

#135524

その他

  • Copilot のレビューでは、アプローチ自体は正しいとされつつ、サイズが過大な非ゼロ初期化スタック割り当てを対象とした、プロセス分離型のリグレッションテストが不足している点が指摘されています(Medium severity、未解決)。

#135596 JIT: support register-condition SELECT_INC/NEG/INV on arm64

  • 作成者: @EgorBo
  • 作成日時: 2026年10月11日 16:35:30(UTC)
  • マージ日時: 2026年10月14日 02:18:31(UTC)
  • ラベル: area-CodeGen-coreclr

概要

ARM64 JITにおいて、SELECTノードがレジスタ条件を保持したまま(例:CCMPチェーンが長すぎてTryLowerConditionToFlagsNodeで処理できない場合)、Lowering で GT_SELECT_INC/NEG/INV に変換されることがあるものの、LSRA・VisitOperands・コード生成(INC)がこれらのノードに対応していなかった問題を修正します。あわせて、TryLowerCnsIntCselToCinc で GT_SELECT の場合も GT_SELECTCC と同様に、小さい方の定数を CINC のベースとして保持するようにしています。

変更内容

  • src/coreclr/jit/codegenarm64.cpp: SELECT_INC のコード生成における条件(レジスタ条件)の取り扱いを修正(+1/-1)
  • src/coreclr/jit/compiler.hpp: VisitOperands で GT_SELECT_INC/NEG/INV のオペランドを訪問するよう対応(+9/-0)
  • src/coreclr/jit/lowerarmarch.cpp: TryLowerCnsIntCselToCinc で小さい方の定数を CINC のベースとして保持(+5/-0)
  • src/coreclr/jit/lsraarm64.cpp: 特殊化されたSELECTノードを BuildSelect 経由で処理(+3/-0)
  • src/coreclr/jit/lsraarmarch.cpp: 条件および値オペランドの use を構築する処理を追加・修正(+11/-4)
  • src/tests/JIT/Regression_ro_2/Runtime_134055.cs: レジスタ条件を持つ increment / negate / invert の select を対象とした回帰テストを追加(+46/-0)

パフォーマンスへの影響

影響なし(PR情報にはベンチマーク結果の記載なし。diffsも差分なしと記載されています)

関連Issue

その他

  • 影響範囲はARM64向けJIT(Lowering / LSRA / コード生成)の内部実装であり、公開APIや互換性への影響についての記載はありません。
  • Copilotによるレビュー概要では、未解決の指摘は0件とされています。

#135575 Preserve ARM64 flags dependencies during indirection reordering

  • 作成者: @Copilot
  • 作成日時: 2026年10月10日 16:52:32(UTC)
  • マージ日時: 2026年10月14日 02:17:39(UTC)
  • ラベル: area-CodeGen-coreclr

概要

ARM64のstore-pair(stp)最適化やindirectionの並べ替え時に、cneg が対応する cmp より前に移動し、k % 2 が古いフラグ(アロケーションヘルパー由来)を読んでしまう問題の修正です。.NET 10では、非負の奇数入力に対して -1 が返る可能性がありました。

修正は、フラグの生成側・消費側としてマークされたノードの移動を、store-pairおよびpost-indexed addressingの最適化で拒否することで行われています。これはJIT(コンパイラ)の内部実装の変更で、公開APIへの影響はありません。

変更内容

  • src/coreclr/jit/lower.cpp(+3/-1): フラグの依存関係を持つノードの並べ替えを防ぐ変更。MarkTree は明示的なオペランドのみを追跡します。
  • src/coreclr/jit/lowerarmarch.cpp(+3/-1): ARM64向けのstore-pairおよびpost-indexed addressing最適化で、マークされたフラグの消費側/生成側の移動を拒否する変更。
  • src/tests/JIT/Regression_ro_2/Runtime_135521.cs(+67/-0): 回帰テストの追加。符号付き int と long の剰余演算を、負数・ゼロ・境界値の入力で検証します。

パフォーマンスへの影響

軽微なコード生成上のトレードオフがあります。再現コードでは stp が使われなくなり、2つのスカラーストアが残るため、メソッドあたり1命令(4バイト)増加します。ベンチマーク結果の記載はありません。

関連Issue

その他

  • 互換性への影響(破壊的変更・非推奨化)に関する記載はありません。

#135549 Add OpenSSL v4 fallback for FreeBSD

概要

FreeBSDにおいて、OpenSSL v4(.so.19)へのフォールバックを追加するPRです。作成者によると、他のプラットフォームと挙動を揃えることが目的です。

変更内容

  • src/native/libs/System.Security.Cryptography.Native/opensslshim.c(+6/-0)
    • FreeBSD向けにOpenSSL v4用のフォールバックを追加しています。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 作成者が参照している情報として、FreeBSD Ports(security/openssl40)の「Expand this list」でOpenSSL v4のライブラリが .so.19 であることが示されています。
  • 変更はネイティブ層のOpenSSLシム内に限られており、提供情報からは公開APIの変更や互換性への影響は確認できません。

#135537 [Interpreter] Access object references in stack slots as raw pointers instead of checked OBJECTREFs

概要

Checked ビルドで、インタープリターのスタックスロットを検証付きの OBJECTREF(Thread::dangerousObjRefs テーブルで検証される)経由で読み書きしていたため、過去の無関係なエントリが残っていると後続の読み取りで誤って assert する問題(#135535)を修正します。スタックスロットを生のオブジェクトポインタとして扱う方式に変更しました。

  • LOCAL_VAR_OBJREF(生ポインタ→OBJECTREF)と SET_LOCAL_VAR_OBJREF(OBJECTREF→生ポインタ)を導入し、OBJECTREF / DELEGATEREF / CONTINUATIONREF / BASEARRAYREF のスロットアクセスを置き換え。
  • 仮想呼び出しの解決(CALLVIRT のキャッシュミス、CALLDELEGATE / CALLI の open virtual delegate)は ResolveVirtualCallTarget を経由し、レシーバをネイティブの OBJECTREF ローカルにコピーして GCPROTECT_BEGIN で保護した上で MethodDesc::GetMethodDescOfVirtualizedCode に渡すようにしました。
  • GCFrame::Remove は変更なし(以前のリビジョンの _DEBUG ループ削除は元に戻されています)。

変更内容

  • src/coreclr/vm/interpexec.cpp (+96/-73): スロットアクセスの生ポインタ化、ResolveVirtualCallTarget の追加、continuation resume と CALLI の回避策部分の直接キャストの置換。
  • src/coreclr/vm/eetwain.cpp (+3/-1): InterpreterCodeManager::GetInstance で生ポインタを読み込んでから変換。
  • src/coreclr/debug/ee/funceval.cpp (+3/-1): デバッガーの関数評価で引数を生ポインタとして読み込んでから変換。
  • src/tests/Regressions/coreclr/GitHub_135535/test135535.cs / .csproj (新規): プロセス分離の回帰テスト。Issue 版よりアドレススイープを密にしています。

検証(windows-x64 Checked、DOTNET_InterpMode 2/3、DOTNET_TieredCompilation=0):

  • main では reflection、async、tracing、Regression_o_1、JIT.performance(および mode 3 の GC)で assert が発生しますが、本変更では全て通過します。
  • #135535 の再現コードは、main では assert し、本変更では no assert を出力して終了コード 100 で終わります。
  • linux-x64 / osx-arm64 の Checked では main でも再現しませんが、本変更でも InterpreterTester と再現コードが通り、System.Runtime.Tests の discovery(mode 3)で assert は 0 件でした。

パフォーマンスへの影響

ベンチマーク結果の記載なし。Release ビルドでは OBJECTREF が Object* なので、スロットアクセスの変換は従来と同等のコードに展開されます。一方、仮想呼び出しのターゲット解決では、全ビルドでネイティブのレシーバローカルを保護するようになります(従来はスロットのアドレスを直接渡していました)。

関連Issue

#135535

その他

  • 原因は、CreateCustomAttributeInstance(#133658 以降はマネージド実装)が登録するインタープリタースタック上の引数スロットが GCFrame::Remove で未保護アドレスとして記録され、次の GC ポイントでマークされ、その後の仮想呼び出しの this 読み取りが Thread::IsObjRefValid(this) で失敗する、という流れです。テーブルはスロットアドレスのみをキーとするため、GCFrame::Pop(PopExplicitFrames 経由)など他の発生源でも同種の stale エントリが生じ得るため、個別の発生源ではなくインタープリター側のアクセスで修正しています。
  • 回帰テストは構成依存です。assert に至るには、スレッドの次の prestub フラッシュ前に、記録済みアドレスのいずれかに後続の this が載る必要があります。windows-x64 Checked では main で再現し、本変更で解消しています(JIT、mode 1、JIT stress、GC stress を含む 17 構成で通過)。linux-x64 / osx-arm64 では main でも通過します。
  • スケジュール実行の runtime-interpreter パイプライン(windows x64 のワークアイテム)が、より広いカバレッジとなります。

#135531 Accept a faulted frame in the shadow stack assert of CallCatchFunclet

概要

Windows x64(CETシャドウスタック有効)のCheckedランタイムで、ランタイムが catch ハンドラ末尾で再送出したスレッドアボートを、同一メソッド内の別ハンドラが捕捉した際に CallCatchFunclet 内のアサートが失敗する問題を修正します。アサート条件に「フォールトしたフレーム(faulted frame)」を許容する節を追加するもので、Releaseビルドの動作は変わりません。

原因(作成者の説明による):

  • EECodeManager::ResumeAfterCatch は、このようなスレッドを ThrowControlForThread へ送ります。
  • RedirectForThrowControl は FaultingExceptionFrame に、リダイレクト時点のSSPを記録します。
  • このフレームは呼び出し地点で停止したものではなく割り込まれたものであるため、SSP直下のスロットに ControlPC が入っていません。そのため、catchハンドラがそのフレームにある場合にアサートの最後の節が失敗します。
  • SSPが指すのはフレームのリターンアドレスで、フレームの再開に必要なのはこちらです。

変更内容

  • src/coreclr/vm/exceptionhandling.cpp(+4): CallCatchFunclet のシャドウスタックのアサートが、フォールトしたハンドラフレームも受け入れるように変更。
  • src/tests/Regressions/coreclr/GitHub_135530/test135530.cs(+94): Issueの再現ケースを回帰テストとして追加。
  • src/tests/Regressions/coreclr/GitHub_135530/test135530.csproj(+16): テストのプロジェクトファイル。インタープリタ下では #135520(#135463 を修正)がマージされるまで無効化。インタープリタでの失敗は本件とは別の原因によるものです。

検証結果(Checked):

  • windows-x64(CET有効)、JIT: main では CallCatchFunclet でアサート、本PRでは成功。
  • windows-x64、JIT(TieredCompilation=0、JITMinOpts、JitStress 1・2、ReadyToRun=0、GCStress 0x3・0xC): 成功。
  • linux-x64、osx-arm64(JIT、同構成): main・本PRともに成功(このアサートはWindows x64のみ)。

パフォーマンスへの影響

影響なし(Checkedビルドのアサート条件の変更のみで、Releaseビルドは変更なし)。

関連Issue

#135530(本PRで修正)。 関連: #135520、#135463(インタープリタ下でのテスト無効化の理由)。

その他

  • 本PRはAI支援(Anthropic Claude、OpenAI Codexによるレビュー)で作成されたと記載されています。
  • 引用されたビルド・実行結果は、PRのベースコミットで取得されたものです。

#135434 Remove MoveSymbolFiles PDB consolidation; read CoreLib PDB from its natural location

  • 作成者: @sbomer
  • 作成日時: 2026年10月08日 16:41:03(UTC)
  • マージ日時: 2026年10月14日 17:45:17(UTC)
  • ラベル: area-Infrastructure

概要

src/coreclr/Directory.Build.targets の MoveSymbolFiles(全マネージドプロジェクトのPDBを $(RuntimeBinDir)PDB\ に集約するターゲット)を削除し、唯一の実質的な利用者である eng/liveBuilds.targets が CoreLib のマネージドPDBを本来の出力先 IL\ から直接読むように変更しています。

背景として、同一アセンブリ名を持つビルドバリアント(例: crossgen2 の通常ビルドと publish ビルド)が共有フォルダ内でPDBを上書きし合い、配布されるDLLと一致しないPDBが残る問題があったと説明されています。.ni.pdb は crossgen-corelib.proj が直接書き出すため影響を受けません。

変更内容

  • src/coreclr/Directory.Build.targets: MoveSymbolFiles ターゲットを削除(-25行)。
  • eng/liveBuilds.targets: ResolveRuntimeFilesFromLocalBuild が System.Private.CoreLib.pdb を IL\System.Private.CoreLib.pdb から解決するよう変更。既存のDLLのフォールバックと同様の方式(+5/-4)。
  • src/tests/Common/helixpublishwitharcade.proj: 変更あり(+4/-2)。Copilotのレビューでは、Core_Root のシンボルパス設定に関連して、Windows Helix のシンボルパス用コマンドで未エスケープのセミコロンが MSBuild アイテムを2つに分割する問題が指摘されています(Medium)。具体的な変更内容は提供情報からは確認できません。

パフォーマンスへの影響

影響なし(ビルド時のPDBコピー処理が不要になる点のみ)。ベンチマーク結果の記載はありません。

関連Issue

なし

その他

  • 検証: clr サブセットのクリーンリビルドでエラーなし。Microsoft.NETCore.App.Runtime.CoreCLR.sfxproj で AddRuntimeFilesToPackage を直接実行し、System.Private.CoreLib.pdb が IL\ から正しく解決されることを確認。旧コピーと IL\ のPDBはバイト単位で同一であることも確認済みと記載されています。
  • Copilotレビュー(初回)では、CoreLib のPDBが Core_Root の設定済みシンボルパスから見つからなくなる点が指摘されましたが、2回目のレビューで解決済みとなり、新たにセミコロンのエスケープ漏れが指摘されています(未解決)。
  • PRの説明と実装はGitHub Copilotによって生成されたと明記されています。

#135409 [release/11.0] Fix macOS Process hangs caused by stopped children

概要

macOS で Process.Kill(entireProcessTree: true) を呼び出すとアプリケーションがハングする問題の修正を release/11.0 へバックポートするPRです(#135323 と #135624 のバックポート)。 macOS の OS 自体の挙動(停止状態の子プロセスを reap できない)により、#128598 の変更でこの問題が顕在化していました。reap できない(kill されたのではなく stopped になっている)プロセスについては、待ち続けるのではなく個々のプロセスを個別に確認するフォールバックに切り替えます。

変更内容

  • Process.Unix.cs: 停止状態の子プロセスを扱うための処理を追加(+9/-1)
  • ProcessWaitState.Unix.cs: 待機状態の処理を修正(+8/-8)
  • ProcessTests.Unix.cs: ハングを再現する失敗テストを追加(+58)
  • AssemblyInfo.cs: 既存の設定を削除(+0/-6)
  • System.Diagnostics.Process.Tests.csproj: テストプロジェクトの設定を調整(+2/-1)

パフォーマンスへの影響

影響なし(ハングの回避が目的で、ベンチマーク結果の記載もありません)。

関連Issue

#131944(本PRで fix) 関連: #135323、#135624、#128598

その他

  • 影響範囲: SDK から最初に報告され、他のユーザーからも同様の報告があります(顧客報告・社内発見の両方)。
  • リスク: 低。reap できない場合のみフォールバックが動作します。
  • テスト: 追加した失敗テストが修正後にパスすることを確認済みです。
  • CPython でも同様のワークアラウンドが必要になった OS 側の不具合です(python/cpython#158962)。

#135377 Clean up FEATURE_CORPROFILER configuration

概要

FEATURE_CORPROFILER の設定を整理し、ランタイムおよび CoreLib のプロファイラーサポートを一貫して制御できるようにする変更です。プロファイラー無効ビルドでは、プロファイラー専用のヘルパーやスタブ(WASM 向けの未サポート用プレースホルダーを含む)がビルドから除外されます。DAC のプロファイリングデータとプロファイラーの attach/detach は、独立して設定可能な状態を維持します。

変更内容

  • ビルド設定
    • clr.featuredefines.props、clrdefinitions.cmake、clrfeatures.cmake を更新し、FEATURE_CORPROFILER の定義を整理。
    • md/compiler、md/enc、md/runtime の CMakeLists.txt も調整。
  • VM(ランタイム)
    • assembly.cpp、ceeload.cpp/.h、peassembly.cpp/.h/.inl、method.cpp、threads.cpp、vars.cpp、rejit.cpp/.inl、proftoeeinterfaceimpl.cpp などで FEATURE_CORPROFILER によるガードを整理。
    • 特に assembly.cpp(+12/-26)と ceeload.cpp(+37/-30)で変更量が大きい。
  • JIT ヘルパー / アセンブリスタブ
    • jithelpers.h、jitinterface.cpp/.h にプロファイラー関連の条件付きコンパイルを追加。
    • amd64/AsmHelpers.asm、amd64/asmhelpers.S、i386/asmhelpers.S/.asm のプロファイラー専用スタブを条件付きにした。
  • WASM
    • vm/wasm/helpers.cpp から、プロファイラー無効時に不要となる未サポート用プレースホルダー(20行)を削除。
  • デバッガー
    • debug/ee/debugger.cpp に条件付きコンパイルを追加。
  • その他
    • inc/profilepriv.h から2行を削除。

パフォーマンスへの影響

影響なし(ベンチマーク結果の記載なし)。プロファイラー無効ビルドでは不要なコードが除外されるため、バイナリ構成が簡素化されます。

関連Issue

なし

その他

  • 公開APIの変更は記載されておらず、ビルド構成と内部実装の整理が中心です。
  • テスト: プロファイラー有効/無効の x64 Debug ビルドが成功し、attach/detach を無効にした状態で elttransitions、transitions、ijw テストが通過したと記載されています。

#135366 Fix silent breaking-change documentation publication failures

  • 作成者: @tarekgh
  • 作成日時: 2026年10月07日 21:05:43(UTC)
  • マージ日時: 2026年10月14日 22:40:57(UTC)
  • ラベル: area-Infrastructure

概要

pull_request_target で動作する破壊的変更ドキュメント生成ワークフロー(breaking-change-doc)が、ドラフト成果物を生成しながらコメントを投稿せずに「成功」扱いで終了してしまう問題を修正します。dotnet/runtime#135277 マージ後の実行で、必要なシェルコマンドが拒否されたにもかかわらずワークフローが失敗しなかったことが発端です。

主な対応は次のとおりです。

  • ヘルパースクリプトを使えるよう、デフォルトの浅いチェックアウトを1回だけ構成
  • 必要最小限のコマンド(jq、mkdir)のみ許可
  • 生成結果・投稿先PR・コメント本文を検証し、不完全な生成や投稿失敗は拒否
  • 生成ジョブが成功しない限り投稿を行わないよう制御

変更内容

  • .github/workflows/breaking-change-doc.md(+123/-7)
    • 信頼できるベースコンテキストを保持したまま、リポジトリの二重チェックアウトを避ける構成に変更
    • jq と mkdir のみ許可(無制限のシェルアクセスは付与しない)
    • 既存のバージョン取得・コメント生成ヘルパーの利用を必須化し、完全なコメントを単一コマンドの safe-output 呼び出しで送信
    • 実効的な dry-run モードをレンダリング後のプロンプトに公開(自動PRイベント時のフォールバックは false)
    • 結果、PR宛先、ドラフトの組、生コメント本文を pr-comment.md に照らして検証。正当な早期 no-op と dry-run は維持し、不完全な生成と投稿失敗は拒否
  • .github/workflows/breaking-change-doc.lock.yml(+28/-20)
    • gh-aw v0.86.2 で再生成
    • 生成されたエージェントジョブは persist-credentials: false、fetch-depth: 1 の単一チェックアウトになったと記載

パフォーマンスへの影響

影響なし(CIワークフローの信頼性に関する変更で、ランタイム/ライブラリの性能には無関係)。

関連Issue

  • #135277(本件の発端となったPR。Issueではなくマージ済みPRとして言及)

その他

  • PR は Draft のままです。最終コミット上で、手動dispatchによる dry-run 生成と実コメント投稿の動作は確認済みです(dotnet/runtime#135277 に github-actions[bot] によるコメントが実際に投稿されたと記載)。
  • 一方、マージ/ラベルによる自動トリガーは手動実行では検証されていません。
  • 検証用の回帰チェック58件はセッションローカルで実施されたもので、PRには含まれず、リポジトリCIにも組み込まれていません。
  • バージョン取得ヘルパーは、サンドボックス内の未認証 gh により文書化されたメタデータのフォールバックを使用します。認証済みローカル実行では .NET 12 Preview 1(Tentative=false、バックポートなし)と生成結果が一致したとのことです。追加の GitHub 権限は付与されません。
  • PR の CI は Markdownlint のみ通過しており、このワークフローの生成・投稿経路は CI の対象外です。

#135250 Simplify single-threaded CoreCLR thread and static machinery

概要

FEATURE_MULTITHREADING を持たない CoreCLR ビルド(browser / WASI wasm を含む)から、複数ネイティブスレッドおよびスレッドごとの静的ストレージ用の仕組みを取り除き、単一のネイティブ Thread を前提とした実装に簡素化する変更です。

  • ネイティブのスレッド ID と ThreadStore を単一スレッド前提に整理。DirectOnThreadLocalData のネイティブスレッドポインタと、開始操作が未サポートのままの managed 側 unstarted Thread オブジェクトは維持。
  • マルチスレッド無効時、managed のスレッド静的変数は通常の静的変数として扱う。crossgen2 と ReadyToRun のメタデータも単一スレッドモデルを表現するよう更新。
  • wasm は引き続きネイティブの GC ポーリング実装を使用。managed 側のポーリングのフォールバックは GC トランジションを実行。単一スレッド時のスピン待機の上限は 0(マルチスレッド時の挙動は維持)。

変更内容

  • Managed Thread: Thread.CoreCLR.cs から実装を分離し、Thread.CoreCLR.Multithreading.cs(+361)と Thread.CoreCLR.SingleThreading.cs(+120)の partial に分割。ManagedThreadId.CoreCLR.cs、AssemblyLoadContext.CoreCLR.cs、StaticsHelpers.cs(スレッド静的の扱いを変更)も更新。
  • ネイティブ側: ネイティブの起動処理、ユーティリティスレッド、優先度、ファイナライズ、ヘルパー FCall をコンパイル対象から除外。マルチスレッド無効時は multicore JIT も無効化。clrdefinitions.cmake、clrfeatures.cmake、CMakeLists.txt、jithelpers.h、GC(diagnostics.cpp、interface.cpp、gcpriv.h、regions_segments.cpp)、DAC(request.cpp、reimpl.cpp)などを更新。
  • ReadyToRun / crossgen2: readytorun.h、ReadyToRunConstants.cs、ModuleHeaders を更新し、readytorun-format.md にも反映。
  • cDAC: スレッド静的データをオプション扱いにし、コントラクト、descriptor、ドキュメント(Thread.md、RuntimeTypeSystem.md、data-descriptor-meanings.json)、テストを更新。
  • NativeAOT: Runtime/Full/CMakeLists.txt、datadescriptor/CMakeLists.txt、gcenv.ee.cpp を調整(共有 Thread partial 分割の検証用に NativeAOT CoreLib もビルド)。
  • 上記のほか、ファイル一覧に含まれない 62 ファイルも変更。

パフォーマンスへの影響

browser-wasm Release でのサイズ比較(単位: バイト)。実行速度のベンチマークは記載なし。

成果物 形式 ベース 変更後 削減
dotnet.native.wasm 非圧縮 4,553,180 4,505,348 47,832 (1.05%)
dotnet.native.wasm Brotli 1,324,802 1,313,959 10,843 (0.82%)
R2R System.Private.CoreLib.wasm 非圧縮 26,683,738 26,648,519 35,219 (0.13%)
R2R System.Private.CoreLib.wasm Brotli 4,194,214 4,189,499 4,715 (0.11%)

合計で非圧縮 83,051 バイト、Brotli 圧縮後 15,558 バイトの削減です。CoreLib の計測対象は IL DLL ではなく R2R wasm です。

関連Issue

なし

その他

  • 検証内容:
    • Browser Debug/Release、WASI Debug のネイティブランタイム/CoreLib ビルド(Release R2R CoreLib を含む)。
    • Windows Checked ビルドと Thread テスト(55 件成功、4 件スキップ)。
    • Browser Thread テスト(14 件成功、33 件スキップ)。
    • cDAC ユニットテスト(descriptor 変更時点で 3,240 件成功)。
    • NativeAOT CoreLib ビルド。
    • ビルド済み CoreLib のメタデータ/IL を確認。
  • PR 説明は GitHub Copilot の支援で生成されたと記載されています。

#135065 Add experimental ILLink task caching and cache maintenance

概要

ILLink MSBuildタスクに、呼び出し全体の結果をキャッシュする実験的機能を追加します。ILLINK_EXPERIMENTAL_CACHE で有効化し、ILLINK_EXPERIMENTAL_CACHE_PATH で保存先を上書きできます。成功した出力はリンカーを再実行せずに再利用されます。あわせて、指定したUTCカットオフ以前に最後に使われたエントリを削除する、スタンドアロンのメンテナンスツール(ILLink.CacheTool)も追加されます。これは初期実装であり、範囲は限定的です。

変更内容

  • キャッシュ本体(ILLinkCache.cs, ILLinkCacheEntry.cs, LinkTask.cs)
    • キャッシュキーは、引数・パス・入力ファイルの内容、およびタスク/リンカー/ホストのバイナリで構成されます。
    • 成功した出力の保存・復元と、エントリごとの最終使用マーカーの管理を行います。
    • LinkTask の実行処理にキャッシュを統合します。
  • メンテナンスツール(ILLink.CacheTool/*)
    • 明示的なUTCカットオフ以前に最後に使われたエントリを削除する purge コマンドを提供します。
    • README、プロジェクトファイル、パッケージ化設定を含みます。
  • ビルド統合(eng/Subsets.props, illink.slnx, ILLink.Tasks.csproj)
    • ツールとテストをビルド対象に追加し、テスト用に内部APIを公開します。
  • テスト
    • ILLink.Tasks.Tests: キャッシュの動作と無効化条件を検証します(約1000行規模のテスト追加)。
    • ILLink.CacheTool.Tests: purgeのルールとコマンド検証を確認します。
  • ドキュメント
    • docs/design/tools/illink/task-cache.md、illink-tasks.md、README.md に設計・設定・メンテナンス手順を追記します。

制限事項(現時点)

  • 追加の引数(extra arguments)を指定した場合はキャッシュをバイパスします。
  • キャッシュヒット時は診断メッセージを再生しません。
  • ディスク上のフォーマットに互換性保証はありません。
  • リンク中の自動エビクションはなく、purgeはキャッシュがアイドル状態のときのみ実行すべきです。

これらは公開APIではなく、ILLinkのMSBuildタスクとビルドツール側の内部実装・ツール追加が中心です。

パフォーマンスへの影響

キャッシュヒット時はリンカーの再実行を省略できるため、リンク時間の短縮が期待されます。ただしPR情報にはベンチマーク結果や具体的な数値は含まれていません。Copilotのレビュー概要によると、ビルドやテスト、ベンチマークは実行されておらず、ソースの確認にとどまっています。

関連Issue

なし

その他

  • 本アプローチは dotnet/roslyn#82881 に着想を得ています。
  • ランタイムのビルドへの統合とCIでの有効化は、別途対応予定です。
  • Copilotレビューの指摘(Medium): キャッシュ更新時の最終使用マーカーの置き換えが非アトミックなため、タイムスタンプが破損し、purgeが該当エントリを回収できなくなる可能性があります。マーカーはアトミックに置き換えることが推奨されています。

#133572 [release/11.0] [Mono][browser] Quarantine double Min/Max NaN payload tests

概要

release/11.0 へのバックポート(元PR: #133312)。Mono の browser 環境において、double の Min/Max に関する NaN ペイロードのテストを隔離(Quarantine)する変更です。提供された情報からは、変更の動機や具体的な失敗原因までは読み取れません。

変更内容

  • src/libraries/Common/tests/System/GenericMathTestMemberData.cs(+12/-4)
    • double の Min/Max における NaN ペイロードのテストデータが対象。変更はテスト用メンバーデータ(GenericMathTestMemberData.cs)のみで、ランタイム/ライブラリ本体のコードや公開APIへの変更は含まれません。
    • 差分の詳細な内容は提供されていないため、具体的な変更方法は不明です。

パフォーマンスへの影響

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

関連Issue

  • 元PR: #133312(release/11.0 へのバックポート元)

その他

  • PR本文の Customer Impact / Regression / Testing / Risk の各セクションはテンプレートのままで、記入されていません。
  • 互換性・破壊的変更・セキュリティに関する記述は提供情報にありません。
  • 作成者は github-actions[bot] で、/cc @lewing が指定されています。

#132953 Add OpenHarmony/HarmonyOS build infrastructure

概要

OpenHarmony(HarmonyOS)向けポートシリーズ(トラッキング Issue: #132866)の第1弾として、HarmonyOS NDK を用いた openharmony ターゲットのクロスビルド基盤を追加する PR です。変更はすべて TargetsOpenHarmony(--os openharmony 指定時のみ有効)でガードされており、既存プラットフォームには影響しない(no-op)と説明されています。

変更内容

  • eng/build.sh: --os openharmony を受け付け、NDK ベースのツールチェーンのため rootfs 要件をスキップ
  • eng/RuntimeIdentifier.props: TargetsOpenHarmony プロパティを追加。openharmony は Linux ファミリーのフラグ(TargetsLinux)を維持しつつ TargetsLinuxGlibc からは除外
  • eng/Subsets.props: OpenHarmony 用の DefaultSubsets(CoreCLR + NativeAOT、Mono 依存なし)と、linux-bionic に倣った UseNativeAotForComponents の除外を追加
  • eng/native/build-commons.sh: OHOS NDK ツールチェーン分岐(OHOS_NDK_HOME、ohos.toolchain.cmake、OHOS_ARCH)と rootfs バイパスを追加
  • eng/native/configureplatform.cmake: CMAKE_SYSTEM_NAME=OHOS を linux/musl にマップし、CLR_CMAKE_HOST_OPENHARMONY / CLR_CMAKE_TARGET_OPENHARMONY を定義
  • eng/native/configurecompiler.cmake: OHOS 用コンパイルフラグ(-Qunused-arguments、-fno-emulated-tls)と、TARGET_ANDROID に倣った TARGET_OPENHARMONY 定義を追加
  • eng/native/configuretools.cmake: find_program に NDK コンパイラディレクトリのヒントを付与(他プラットフォームでは空のヒント)
  • eng/native/gen-buildsys.sh: OHOS クロスビルド時の rootfs バイパス(NDK ツールチェーンは build-commons.sh が注入)
  • src/libraries/Microsoft.NETCore.Platforms/src/PortableRuntimeIdentifierGraph.json: openharmony と各アーキテクチャの RID を追加(openharmony は any を import、アーキテクチャ RID は openharmony を import)。固定の runtime.json は変更なし
  • src/native/libs/System.Native/CMakeLists.txt: OHOS を「robust mutex 非対応」プラットフォーム群に追加
  • src/native/libs/build-native.sh: クロスビルド判定で openharmony を linux-bionic と同様に扱う

パフォーマンスへの影響

影響なし(ビルド基盤のみの変更で、ベンチマーク結果の記載もありません)。

関連Issue

  • #132866(OpenHarmony ポートシリーズのトラッキング Issue)
  • dotnet/arcade#17608(eng/common 側の OpenHarmony ホスト向け追加。init-os-and-arch.sh、init-distro-rid.sh、cross/toolchain.cmake)

その他

  • 検証: clr.native+libs+host+packs --os openharmony -arch arm64 --cross のフルクロスビルドが 0 Warning(s) 0 Error(s) で成功したと記載されています。標準プラットフォームの CI マトリクスは通過が必要です。
  • HarmonyOS 用の CI レグは本 PR に含まれず、sysroot のコンパイル修正、NativeAOT 対応、RID/packs は後続 PR で追加される予定です。
  • Copilot のレビューでは、以下の2点が指摘されています(いずれも Medium、未解決)。
    • musl ホスト上でビルドした場合に、OpenHarmony の RID が linux-musl と誤判定される
    • ダイレクトネイティブビルドでも、musl ホスト上で OpenHarmony の RID が誤判定される
  • 本 PR は AI(Copilot/エージェント)の支援を受けて作成されたと明記されています。

目次