Pull Request on 2026年08月13日

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

注意点

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


目次

  1. #132270 Fix TryParsePartial under-reporting charsConsumed for leading whitespace
  2. #132265 Enable long paths for AspNetCore sync checkout
  3. #132257 Wasm: don't zero-pad the caller's return buffer in the interp-to-R2R thunk
  4. #132252 [release/10.0] Make TestKeyRing.CreateECDsa resilient to transient macOS OSStatus -50 failures
  5. #132240 Fix CoreLib extern modifier ordering
  6. #132229 Fix RISC-V unwind scope calculations
  7. #132223 JIT: Add an inlining stress mode for general runtime async inlining
  8. #132220 Handle truncation errors in diagnostic IPC transport names
  9. #132219 Throw when Unix has no shell opener
  10. #132217 Fix extraction of password-protected ZIP archives with empty files
  11. #132214 Reject null characters in process environment variable names
  12. #132210 Add SslStream legacy path compatibility switch
  13. #132203 [release/10.0] Disable timing out EncryptedXml encoded-DTD tests
  14. #132199 Disable test using gc cover on interpreter
  15. #132173 Fix FileNotFoundException in NativeAOT test
  16. #132161 Merging internal commits for release/9.0
  17. #132160 Merging internal commits for release/8.0
  18. #132146 Enable hardware intrinsics for ExtractMostSignificantBits test
  19. #132130 [manual] Merge release/9.0-staging into release/9.0
  20. #132129 [manual] Merge release/8.0-staging into release/8.0
  21. #132113 Deduplicate minipal header helpers
  22. #132108 ILVerify: Use case-insensitive comparer for assembly binding cache
  23. #131988 Add Runtime Async profiler API coverage
  24. #131976 [LoongArch64] Fix some crash CoreRoot tests under --gcstresslevel=4 like Methodical_{r2|d2}.
  25. #131966 Remove Signature consumer documentation
  26. #131783 Replace SHA-1/RSA-1024 test data with SHA-256/RSA-2048 equivalents
  27. #131197 Unify sync/async Options validation contract
  28. #130097 Diagnose LibraryImport/[GeneratedComInterface] with restricted CCW/RCW options

#132270 Fix TryParsePartial under-reporting charsConsumed for leading whitespace

  • 作成者: @Copilot
  • 作成日時: 2026年08月13日 10:57:09(UTC)
  • マージ日時: 2026年08月13日 22:56:30(UTC)
  • ラベル: area-VM-coreclr

概要

INumberBase<T>.TryParsePartial が、フォーマットプロバイダーのサイン記号が "+"/"-" 以外の場合(sv-SE、fi-FI、アラビア語/ヘブライ語ロケールなど約96の言語)に、先頭の空白を charsConsumed に含めずに報告していたバグを修正します。この問題により、呼び出し元が返された消費文字数で位置を進めると、既に読み込んだ数値の途中に巻き戻ります。

int.TryParsePartial(" 5", NumberStyles.Integer, new CultureInfo("sv-SE"), out int v, out int consumed);
// 修正前: v = 5, consumed = 1 (期待値: 2)
// 修正後: v = 5, consumed = 2

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Number.Parsing.cs: Number.TryParseBinaryIntegerStyle で、サイン記号のマッチング時に元の value スパンのインデックスをスライス操作で失わないよう、スライスを remaining 局所変数に限定。これにより、先頭空白のオフセットが保持され、正確な elementsConsumed が計算されます。
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/Int32Tests.cs: TryParsePartial テストケースを追加(先頭空白のみ、+ 付き、マルチバイト負号、末尾空白の組み合わせ)
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/UInt32Tests.cs: 同様にテストケースを追加

パフォーマンスへの影響

影響なし

関連Issue

#132261

その他

  • 影響範囲: 全バイナリ整数型(int、uint、long、ulong など)で同じコードパスを使用するため、すべてのバイナリ整数型に適用
  • 互換性: 修正前の動作は仕様外のバグであり、正しい charsConsumed を返すことで互換性が向上
  • 非部分解析の呼び出し元(Enum、Version)は elementsConsumed を破棄するため影響なし
  • BigInteger.TryParsePartial の同様のバグは本修正では対象外とし、別途対応予定

#132265 Enable long paths for AspNetCore sync checkout

  • 作成者: @Copilot
  • 作成日時: 2026年08月13日 08:59:03(UTC)
  • マージ日時: 2026年08月13日 11:35:16(UTC)
  • ラベル: area-Infrastructure

概要

AspNetCore同期チェックアウト時にWindows環境でGitのパス長制限によるエラーが発生していた問題を解決するため、ワークフロー実行前にGitのlong-path設定を有効化する変更です。

- name: Enable Git long paths
  shell: pwsh
  run: git config --global core.longpaths true

変更内容

  • .github/workflows/aspnetcore-sync.yml: AspNetCore checkout実行前にGitのlong-path対応を有効化する設定を追加(+3行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この変更はCI/CDワークフローの修正であり、ランタイムコード自体への変更ではありません
  • Windows環境でのGit path-length制限(260文字)を回避するための設定で、AspNetCore追跡スナップショットのチェックアウト成功を目的としています
  • Copilot reviewerではYAMLファイルのレビューが実施されていません

#132257 Wasm: don't zero-pad the caller's return buffer in the interp-to-R2R thunk

概要

WebAssembly interp-to-R2R thunkノードが呼び出し元の戻り値バッファを不適切にゼロパディングしていた問題を修正しました。pRet バッファがインタプリタ自身のリターンスロットではなく、呼び出し元のバッファやCallDescrData用バッファである場合、パディングがバッファサイズを超えて次のフレームスロットに書き込み、メモリ破損を引き起こしていました。12バイト構造体の場合、後続フレームの参照フィールドをゼロ上書きして NullReferenceException を発生させていました。

変更内容

  • WasmInterpreterToR2RThunkNode.cs: R2R本体呼び出し後の pRet バッファのゼロパディング処理を削除(18行削減、2行追加)
  • Runtime_131640.cs: 回帰テスト追加(JsonDocument.Parse で ReadOnlySpan の参照フィールドが破損する問題を検証)
  • Runtime_131640.csproj: テストプロジェクト設定

パフォーマンスへの影響

影響なし(不要なメモリ書き込み処理を削除するため、わずかに高速化の可能性あり)

関連Issue

#131640

その他

このバグは WebAssembly インタプリタと R2R コンパイル済みコードの相互運用層(WasmInterpreterToR2RThunkNode)における内部実装の問題です。ユーザーコードに直接の API 変更はありませんが、WebAssembly ホスト環境での JsonDocument.Parse など複数フレームにまたがる呼び出しでメモリ破損を引き起こしていました。


#132252 [release/10.0] Make TestKeyRing.CreateECDsa resilient to transient macOS OSStatus -50 failures

概要

macOS環境においてTestKeyRing.CreateECDsaメソッドが一時的なOSStatus -50エラーに対して耐性を持つように改善するバックポート。PR #125909のrelease/10.0ブランチへのバックポートで、Issue #131140に対応しています。

変更内容

  • src/libraries/System.Security.Cryptography.Cose/tests/TestKeyRing.cs: TestKeyRing.CreateECDsaメソッドに対して、transient(一時的)なmacOS OSStatus -50エラーに対する耐性を追加(+9行、-1行)

パフォーマンスへの影響

影響なし

関連Issue

#131140、#125909

その他

  • テストユーティリティの変更であり、ランタイムまたはライブラリの公開APIへの影響なし
  • macOS環境でのテスト実行の安定性向上を目的としたテスト基盤の改善

#132240 Fix CoreLib extern modifier ordering

概要

CoreLib内の extern修飾子の順序をIDE0036ルールに準拠するよう修正しました。safe extern/unsafe externからextern safe/extern unsafeに並べ替えることで、macOS ARM64ビルドの復旧を実現します。

変更内容

  • CoreLib P/Invoke定義: Environment、GC、Math、MathF、RuntimeHelpers、GCSettings、Marshal、JitInfo、StubHelpers、String各クラスのextern修飾子の順序をextern safe/extern unsafeに統一(合計73行が修正)
  • ILLink CodeFix: AddUnsafeToExternCodeFixProviderおよびUnsafeModifierCodeFixHelpersを更新して、修飾子の正しい順序でコード生成するよう改善
  • テスト: AddUnsafeToExternCodeFixTestsに新規テストケースを追加

パフォーマンスへの影響

影響なし

関連Issue

#132238

その他

  • この変更はコンパイル時の修飾子順序ルール(IDE0036)への準拠と、macOS ARM64ビルドの失敗を解決するための修正です
  • extern修飾子自体の機能に変更はなく、純粋にコードスタイルの統一です
  • ILLink codefix toolも連動更新され、今後自動生成されるコードも正しい修飾子順序を採用します

#132229 Fix RISC-V unwind scope calculations

  • 作成者: @Copilot
  • 作成日時: 2026年08月12日 19:38:54(UTC)
  • マージ日時: 2026年08月13日 13:15:38(UTC)
  • ラベル: area-Diagnostics-cdac

概要

RISC-V64スタックアンワインダーのスコープ計算をハーフワード単位で統一し、エピログスコープサイズ計算時に最終エピログ命令を考慮するよう修正しました。リターン命令でのアンワインディング時にスタック調整が誤って再適用されないことを検証するリグレッションテストを追加しています。

変更内容

  • RISCV64Unwinder.cs: プロログ/エピログのスコープ境界計算をハーフワード単位で統一。最終エピログ命令をスコープサイズ計算に含めるよう修正(+24/-20行)。
  • StackWalkTests.cs: シングルエピログ関数のリターン命令でのアンワインディング動作を検証するRISCV64リグレッションテストを追加(+70行)。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本修正は、cDACコンポーネント(diagnostic情報読み取り用の契約ベースアーキテクチャ)内のRISC-V64ランタイム固有の実装を対象としています。スタック操作計算の精度向上により、RISC-Vプラットフォームでのダンプデバッグ時のスタックウォーク信頼性が改善されます。


#132223 JIT: Add an inlining stress mode for general runtime async inlining

概要

JIT インライニングのストレステストモード JitStressAsyncInlining を追加するもので、async メソッドの呼び出しを通常のサイズ・予算・採算性ヒューリスティクスを無視して積極的にインラインします。インライン深度と候補インデックスに応じて確率が減衰し、一つのメソッド内の多数の async 呼び出しが全てインラインされることを防ぎます。DEBUG ビルドのみの機能です。

変更内容

  • inlinepolicy.h/cpp: AsyncStressPolicy クラスを実装し、JitStressAsyncInlining が設定された場合に有効化。予算チェックと採算性判定を async 候補向けにカスタマイズ
  • jitconfigvalues.h: JitStressAsyncInlining、JitStressAsyncInliningPct、JitStressAsyncInliningDepth、JitStressAsyncInliningRandomSeed の新規設定値を追加
  • inline.h: InlineCandidateInfo に DEBUG 専用フィールド asyncStressIndex を追加
  • inline.def: CALLEE_IS_ASYNC と CALLSITE_ASYNC_STRESS_INDEX 観察値を追加
  • inline.cpp: async メソッドの情報をインラインポリシーに記録
  • fginline.cpp: Compiler::fgAsyncStressPrepare() メソッドを追加し、メソッド内の async 候補をシャッフルしてインデックスを付与
  • compiler.h: fgAsyncStressPrepare() 宣言と compAsyncInliningStress() ヘルパーを追加

パフォーマンスへの影響

ストレステストモード専用(DEBUG ビルドのみ)のため、リリースビルドへの影響なし。ストレスモード有効時は async メソッドのインライニングが大幅に増加し、実際のランタイム動作をテストするための意図的な負荷機構です。

関連Issue

なし

その他

Copilot レビューで 2 つの潜在的問題が指摘されています:

  1. BudgetCheck の処理: 現在は全 async 呼び出しの予算チェックをスキップしていますが、asyncStressIndex == -1(遅延生成された候補)の場合は通常の予算動作にフォールバックすべき可能性がある
  2. DetermineProfitability の処理: asyncStressIndex == -1 の候補を常に採算性ありとして扱っていますが、ドキュメント上は通常ポリシーにフォールバックすべき可能性がある

#132220 Handle truncation errors in diagnostic IPC transport names

概要

EventPipe診断IPC転送で、PAL_GetTransportNameの失敗を適切に伝播し、截断または空のUnixドメインソケットパスを拒否するように修正。Linux抽象名前空間で空のsun_pathバインドが許可される問題を防ぎます。

変更内容

  • src/coreclr/vm/eventing/eventpipe/ds-rt-coreclr.h: エラーハンドリングロジックを追加(+4行)
  • src/native/eventpipe/ds-ipc-pal-socket.c: PAL_GetTransportNameの失敗を検出し、截断または空のソケットパスを拒否するバリデーション処理を追加(+16行、-6行)

パフォーマンスへの影響

影響なし

関連Issue

#132220

その他

  • dotnet/dotnet#8241のコミット90e1097e9e4ad09e4aa3da19bf7dd73ee0eaaa2aからのポート
  • EventPipe診断IPC機能の安全性改善(ランタイムの内部実装領域)
  • テスト済み: イベントパイプの診断ポート関連テストスイートで検証

#132219 Throw when Unix has no shell opener

概要

Unix環境でUseShellExecuteを使用する際、シェルオープナーが利用できない場合にWin32Exception(ERROR_NO_ASSOCIATION)をスローするように修正しました。これにより、後続の処理でnullポインタエラーが発生するのを防ぎます。

変更内容

  • SafeProcessHandle.Unix.cs: Process.GetPathToOpenFile()がnullを返す場合、Win32Exception(Interop.Errors.ERROR_NO_ASSOCIATION)をスローするように修正
  • ProcessTests.Unix.cs: PATHをクリアして「シェルオープナーが見つからない」条件を再現し、ERROR_NO_ASSOCIATIONが正しくスローされることを検証する回帰テストを追加
  • System.Diagnostics.Process.Tests.csproj: テスト関連の設定を追加

パフォーマンスへの影響

影響なし

関連Issue

#96565 メインPR: #128416

その他

このPRはmain branchへのマージ後に特定のbranchへcherry-pickされた修正です。Unix環境でのSystem.Diagnostics.Processの動作を改善し、エラーハンドリングをより堅牢にします。


#132217 Fix extraction of password-protected ZIP archives with empty files

概要

パスワード保護されたZIPアーカイブに空のファイルが含まれる場合、抽出に失敗する問題を修正しました。根本原因は、暗号化されたエントリがローカルファイルヘッダーを書き込む前に暗号化ストリームを終了していたため、暗号化メタデータ(ZipCrypto、AES)とローカルヘッダーの順序が逆になり、かつ中央ディレクトリとの記述内容が矛盾していたことです。修正では、空のエントリでも暗号化を考慮した通常のパスでローカルファイルヘッダーを先に書き込み、その後暗号化ストリームを終了するように変更しました(同期・非同期両対応)。

変更内容

  • src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs: 同期Disposeパスで、暗号化された空のエントリについてローカルファイルヘッダーを暗号化ストリーム終了前に書き込み、CRC/サイズを後から修正する処理を追加(58行追加、21行削除)
  • src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.Async.cs: 非同期DisposeAsyncパスで同様の修正を適用(5行追加、4行削除)
  • src/libraries/System.IO.Compression.ZipFile/tests/ZipFile.Encryption.cs: 回帰テスト追加 - Encryption_EmptyEntry_RoundTripとUpdateMode_EmptyEncryptedEntry_Unchanged_RoundTrip(4種類の暗号化方式、同期・非同期対応、計157行追加)

パフォーマンスへの影響

影響なし

関連Issue

#132213

その他

  • 修正対象: ZipCrypto および WinZip AES 暗号化の両方に対応
  • 修正されたテスト: ZipFile_EncryptionTests で 181 テストすべてが成功(新規 8 テスト含む)
  • 修正はシーク不可能なストリームに対してもデータディスクリプタを用いて対応
  • 同期・非同期の両Disposeパスで修正が適用されている

#132214 Reject null characters in process environment variable names

概要

環境変数名に含まれるヌル文字がWindowsの環境ブロックを破損させる問題を修正します。環境変数の変更時にヌル文字を含む名前を明示的に拒否し、ArgumentExceptionをスローするようになります。

変更内容

  • DictionaryWrapper.cs: インデクサとすべてのAddオーバーロードでヌル文字検証ロジックを追加(16行追加)
  • Strings.resx: エラーメッセージリソースを追加(3行追加)
  • ProcessUtils.Windows.cs: 検証ロジックの参照を追加(1行追加)
  • ProcessStartInfoTests.cs: ジェネリック/非ジェネリックの変更パスに対するテストケースを追加(22行追加)

パフォーマンスへの影響

検証処理により僅かなオーバーヘッドが発生する可能性がありますが、環境変数の設定時にのみ実行されるため、実行時パフォーマンスへの実質的な影響は軽微と考えられます。

関連Issue

#132214

その他

  • 既存のnull-keyの動作は保持されます(nullそのものの拒否ではなく、ヌル文字\0の含有を拒否)
  • Windows環境ブロック形式の破損を防ぐためのセキュリティ関連の修正と考えられます

#132210 Add SslStream legacy path compatibility switch

  • 作成者: @rzikm
  • 作成日時: 2026年08月12日 13:54:07(UTC)
  • マージ日時: 2026年08月13日 07:00:13(UTC)
  • ラベル: area-System.Net.Security

概要

SslStreamのハンドシェイク処理において、新しい互換性スイッチを追加し、TlsSession経由の新しいパスをバイパスして従来のGenerateToken実装にフォールバックできるようにしました。このスイッチはデフォルトで無効(新しいパスを使用)であり、既存の動作は変わりません。

スイッチの制御方法:

  • AppContext: System.Net.Security.UseLegacySslStreamHandshake
  • 環境変数: DOTNET_SYSTEM_NET_SECURITY_USELEGACYSSLSTREAMHANDSHAKE

変更内容

  • LocalAppContextSwitches.cs: 互換性スイッチUseLegacySslStreamHandshakeを追加し、AppContextキーと環境変数のオーバーライドに対応
  • SslStream.Protocol.cs: NextMessageハンドシェイク処理に条件分岐を追加し、スイッチが有効な場合にTryNextMessageViaTlsSessionをスキップして従来パスを使用
  • SslStreamRemoteExecutorTests.cs: RemoteExecutorを用いた機能テストを追加。AppContext/環境変数の切り替え、レガシ/ウェッジパスの選択検証、ハンドシェイク後のデータ転送をテスト

パフォーマンスへの影響

影響なし(互換性スイッチのみで、デフォルト動作は変わらず)

関連Issue

#130366、#131315

その他

  • テストはAppContextのデフォルト値、明示的な値設定、環境変数、双方向のAppContext優先度、クライアント/サーバー両パスの選択、ハンドシェイク後のデータ転送をカバー
  • 本PRはオペレーショナルロールバックメカニズムを提供し、#131315で追跡される残作業の完了を待つ間の中間対応

#132203 [release/10.0] Disable timing out EncryptedXml encoded-DTD tests

概要

release/10.0ブランチへのバックポート (#131955)。EncryptedXml関連のエンコードされたDTDテストのタイムアウトを無効化します。

変更内容

  • src/libraries/System.Security.Cryptography.Xml/tests/EncryptedXmlTests.cs: EncryptedXmlエンコードDTDテストに対するタイムアウト処理を無効化(2行追加)

パフォーマンスへの影響

影響なし

関連Issue

#131955

その他

  • 本PRはオリジナルの#131955をrelease/10.0ブランチへバックポートしたもの
  • テスト関連の変更であり、本体コード(ランタイム/ライブラリ実装)への影響はなし
  • タイムアウト無効化の詳細な背景や理由はオリジナルPRを参照する必要があります

#132199 Disable test using gc cover on interpreter

  • 作成者: @BrzVlad
  • 作成日時: 2026年08月12日 06:37:09(UTC)
  • マージ日時: 2026年08月13日 16:11:42(UTC)
  • ラベル: area-GC-coreclr

概要

GC coverage(GCStress=4)はJITコンパイルされたコードのみをサポートするため、インタープリタ実行時に互換性がないテストにInterpreterIncompatibleメタデータを追加して、テスト実行時にスキップするようにしました。

変更内容

  • Runtime_129681.csproj: GC回帰テストにInterpreterIncompatibleメタデータを追加
  • GitHub_27924.csproj: インタープリタ非互換なテストメタデータを削除
  • Runtime_45090.csproj: インタープリタ非互換なテストメタデータを削除

パフォーマンスへの影響

影響なし

関連Issue

#131881

その他

なし


#132173 Fix FileNotFoundException in NativeAOT test

概要

NativeAOT テスト Runtime_101046 における FileNotFoundException を修正するPRです。C# 版と IL 版のプロジェクトが同じ名前を共有していたため出力ディレクトリが競合し、NativeAOT ビルド時に TestLibrary 参照がなくなり、ラッパー生成時に例外が発生していました。C# 版をリネーム(Runtime_101046_1)し、TestLibrary 依存の ActiveIssue ゲートをネイティブアセット用の CLRTestTargetUnsupported ゲートに置き換えることで解決します。

変更内容

  • Runtime_101046_1.csproj: プロジェクト名を Runtime_101046 から Runtime_101046_1 に変更し、出力・中間ディレクトリの競合を解消。ActiveIssue ゲートを削除し、CLRTestTargetUnsupported ゲートを適用
  • Runtime_101046_1.cs: テストクラスと関連参照を更新
  • Runtime_101046.ilproj: IL 版プロジェクトに CLRTestTargetUnsupported ゲートを追加し、x64 Unix を除外(JIT の正規化処理に関する既知の問題あり)

パフォーマンスへの影響

影響なし

関連Issue

#131997

その他

  • C# 版は TestLibrary ProjectReference と [ActiveIssue] を持つため、別出力ディレクトリが必須
  • IL 版は x64 Unix で実行時に失敗(JIT が正規化されていない uint16 を渡すが、clang ビルドの被呼び出し側は正規化を想定)し、この問題は JIT チームの決定待機中
  • NativeAOT ビルドでは参照アセンブリが不足するとラッパーが throwing body になる仕様が根本原因

#132161 Merging internal commits for release/9.0

概要

release/9.0ブランチ向けの内部コミットマージです。バージョン更新、EventPipe診断機能の改善、HttpListener/WebSocketのバグ修正が含まれています。特にWebSocketの圧縮機能(Deflate)に関する修正が主要な変更となっています。

変更内容

  • バージョン管理: eng/Versions.propsのバージョン情報を更新
  • EventPipe診断: ds-rt-coreclr.hおよびds-ipc-pal-socket.cで診断ランタイム機能を改善
  • HttpListener: System.Net.HttpListener内のHttpListenerRequest.Managed.csで実装を簡潔化、テストケースを調整
  • WebSocket圧縮機能:
    • WebSocketInflater.csに17行の修正を追加
    • Strings.resxに新しい例外メッセージを追加
    • WebSocketDeflateTests.csに59行の新テストケースを追加(圧縮フレームハンドリングの検証)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはdotnet-botによる自動マージであり、複数のレビュワーによる承認を経た内部修正のまとめです。WebSocketの圧縮機能に関する修正には対応するテストカバレッジが追加されており、安定性向上を目的としていることが推察されます。


#132160 Merging internal commits for release/8.0

概要

release/8.0ブランチの内部コミットをマージするリリース準備PRです。バージョン情報の更新、HttpListener/WebSocketsライブラリのバグ修正、EventPipeのネイティブコード改善が含まれています。

変更内容

  • eng/Versions.props: バージョン情報の更新
  • System.Net.HttpListener: HttpListenerRequestの処理ロジック簡略化、不正なクライアントリクエスト処理の強化
  • System.Net.WebSockets:
    • WebSocketInflater(圧縮解除)の改善(17行追加)
    • リソース文字列の追加(3行)
    • WebSocketデフレート圧縮関連のテスト追加(59行)
  • EventPipe関連:
    • ds-rt-coreclr.h: ネイティブランタイム統合の調整
    • ds-ipc-pal-socket.c: IPC通信ソケット層の改善(16行追加)

パフォーマンスへの影響

影響なし。主にバグ修正とコード改善のため、パフォーマンス指標への直接的な影響は記載されていません。

関連Issue

なし

その他

  • dotnet-bot による自動マージのため、作成者による詳細な概要なし
  • ManickaP、steveisok によるレビュー済み
  • WebSocketsの圧縮機能の堅牢性向上とHttpListener の不正リクエスト処理の強化が主要な改善

#132146 Enable hardware intrinsics for ExtractMostSignificantBits test

概要

ExtractMostSignificantBits JITテストプロジェクトにおいて、jitstress_isas_nohwintrinsic ストレステスト実行時にハードウェアイントリンシクスを強制的に有効にするための設定を追加しました。このテストはARM64ハードウェアイントリンシク コード生成を検証するディスアセンブリアサーションを含んでいるため、グローバルレベルのハードウェアイントリンシクス無効化を回避する必要があります。

変更内容

  • src/tests/JIT/opt/InstructionCombining/ExtractMostSignificantBits.csproj: DOTNET_EnableHWIntrinsic=1 環境変数をテスト設定に追加し、nohwintrinsic ストレスシナリオ下でもハードウェアイントリンシクスを有効にするよう強制

パフォーマンスへの影響

影響なし(テスト設定の変更であり、ランタイム実装への変更なし)

関連Issue

#132106

その他

  • このPull Requestはブランチ保護ルール回避を目的としたものではなく、ARM64ハードウェアイントリンシク検証テストが意図通りに動作するための設定修正です
  • JIT ストレステスト環境での テスト可用性を向上させます

#132130 [manual] Merge release/9.0-staging into release/9.0

概要

release/9.0-stagingブランチをrelease/9.0へマージするリリース管理用プルリクエストです。バージョン情報の更新、内部ツールの復元設定の調整、およびテストコードの修正が含まれています。

変更内容

  • バージョン管理: eng/Version.Details.xml と eng/Versions.props でバージョン情報を更新
  • 開発ツール: .config/dotnet-tools.json のツールバージョンを更新、eng/pipelines/common/restore-internal-tools.yml で内部ツール復元パイプラインを修正
  • テスト修正:
    • System.Formats.Tar: TarFile.ExtractToDirectory テストにファイルハンドリングの改善を追加
    • System.Net.Security: SslStreamStreamToStream テストを改善
    • System.Security.Cryptography.Xml: EncryptedXmlSample5.xml テストリソースを削除、EncryptedXmlTests.cs のテストコードを修正

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

これはrelease/9.0ブランチへの定期的なマージであり、ステージングブランチからの変更を本体に統合するリリース管理作業です。


#132129 [manual] Merge release/8.0-staging into release/8.0

概要

release/8.0-stagingブランチをrelease/8.0ブランチにマージするリリース管理用のPull Requestです。バージョン情報、ツール設定、テストコードの更新が含まれています。

変更内容

  • バージョン管理: eng/Version.Details.xml、eng/Versions.props、.config/dotnet-tools.jsonの更新(依存関係とツールバージョンの同期)
  • ビルドパイプライン: eng/pipelines/common/restore-internal-tools.ymlの修正
  • テスト更新:
    • System.Formats.Tar: TarFile.ExtractToDirectory.File.Tests.csの安定性向上
    • System.Net.Security: SslStreamStreamToStreamTest.csのテスト調整
    • System.Security.Cryptography.Xml: テストXMLサンプル(EncryptedXmlSample5.xml)の削除とテストコード修正(4行の実装変更)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このマージは.NET 8.0のリリース管理作業であり、ステージングブランチから本番リリースブランチへの定期的な同期となります。テスト安定性の改善が含まれています。


#132113 Deduplicate minipal header helpers

  • 作成者: @mdh1418
  • 作成日時: 2026年08月11日 04:14:44(UTC)
  • マージ日時: 2026年08月13日 23:48:30(UTC)
  • ラベル: area-PAL-coreclr

概要

minipalヘッダーヘルパー関数の重複定義を排除するリファクタリング。パフォーマンス非重視の関数(minipal_getexepath、minipal_get_current_thread_id_no_cache、minipal_set_thread_name)を専用の.cファイルに移動し、out-of-line実装として提供。パフォーマンス重視の関数はinlineをヘッダーに保持しつつ、コンパイラが非インライン化する場合のため外部フォールバック定義を配置。

変更内容

  • thread.c/h: スレッド管理ヘルパーを分離。キャッシュなし版のminipal_get_current_thread_id_no_cacheはout-of-line化。minipal_get_current_thread_idは高速パス(TLS参照)をinlineで保持
  • getexepath.c/h: 実行可能ファイルパス解決ロジックをout-of-line化。minipal独自のgetauxval能力チェックをminipalconfig.hに追加
  • cpuid.c/h: CPUID フォールバックの外部定義を提供。ソース名は__cpuid/__cpuidexを保持しつつ、linkerシンボルはminipal_cpuid/minipal_cpuidexに変更(アセンブラー名ラベルを使用)
  • ospagesize.c/h: 制御マクロMINIPAL_OSPAGESIZE_*を導入してinline/out-of-line定義を切り替え
  • entrypoints.c/h: minipal_resolve_dllimportをout-of-line化
  • CMakeLists.txt: minipal build に新規.cソースを追加。System.IO.Compression.Nativeがminipalライブラリをリンク

パフォーマンスへの影響

改善点:

  • 複数TU(Translation Unit)での重複定義排除によるコード量削減
  • 非インライン時の外部シンボル呼び出しで、スタックトレース可視性が向上
  • TLS定義の一元化

懸念点:

  • 低最適化レベル(-O0)でのコンパイラ判断によるinline非適用時に、新規の外部呼び出しが発生する可能性(ただし設計意図)

関連Issue

#131991(PR内討論から派生)

その他

  • C inline linkage パターン: ヘッダーにinline定義を配置し、対応する.cファイルで#include後にextern再宣言することで、各TUでのstaticコピーを回避しつつ外部フォールバック定義を提供
  • 予約シンボル対策: __cpuid/__cpuidexは標準ライブラリと競合する可能性があるため、アセンブラー名ラベルでminipal_cpuid/minipal_cpuidexに割り当て
  • _GNU_SOURCE局所化: minipal_set_thread_name移動により、GNU特有の宣言要件をthread.cに限定
  • 検証: GCC/Clang両環境で-O0時の外部定義呼び出し、最適化時のinline有効性、C++ C-linkage互換性、shippedアーカイブのシンボル確認済み

#132108 ILVerify: Use case-insensitive comparer for assembly binding cache

概要

ILVerifyのアセンブリバインディングキャッシュをケース非依存にして、ランタイムのアセンブリバインディング動作と一致させます。--system-module引数のケースの不一致により同じシステムモジュールが複数回ロードされる問題を修正しています。

変更内容

  • src/coreclr/tools/ILVerify/Program.cs: アセンブリバインディングキャッシュの辞書キーにケース非依存な比較器を適用(+1/-1)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更はILVerifyツール内部の実装変更であり、公開APIへの影響はありません。ランタイムのアセンブリバインディング動作(ケース非依存)と同期させることで、キャッシュの重複ロードを防止します。


#131988 Add Runtime Async profiler API coverage

概要

Runtime Async プロファイラー機能のテストカバレッジを拡充するPRです。新たに2つのマネージドテストプロジェクト(runtimeasyncapis、runtimeasynctypes)と対応するネイティブプロファイラー実装を追加し、以下の機能をカバーしています:

  • メタデータレス継続と配列の ClassLoad コールバック
  • GetClassIDInfo/GetClassIDInfo2/GetClassLayout の拒否動作
  • JIT コールバックと FunctionID/ネイティブIP の相互往来、IL-ネイティブマッピング
  • 例外検索、アンワインド、キャッチャーのコールバック
  • GC 参照トラバーサル

Windows x64 および Linux x64 で検証済みです。

変更内容

  • マネージドテストプロジェクト追加

    • runtimeasyncapis.cs/csproj: JIT/例外シナリオを駆動する実行ファイル(DOTNET_RuntimeAsync=1 で実行)
    • runtimeasynctypes.cs/csproj: GC/継続シナリオを駆動する実行ファイル
  • ネイティブプロファイラー追加

    • RuntimeAsyncApisProfiler: JIT/例外/IP マッピング関連コールバックの観測実装
    • RuntimeAsyncTypesProfiler: ClassLoad/GC グラフトラバーサル関連コールバックの観測実装
  • ビルド構成の更新

    • CMakeLists.txt に新しいプロファイラーソースをコンパイル対象に追加
    • classfactory.cpp に新プロファイラーのCLSID ルーティングを統合

パフォーマンスへの影響

影響なし(テスト機能の追加のみ)

関連Issue

#120799、#120800

その他

レビュー指摘事項:複数のプロファイラーコールバック実装で SHUTDOWNGUARD() マクロの使用が推奨されています。これはシャットダウン中/後のプロファイラー状態へのアクセスを保護するためのベストプラクティスであり、今後の改善の参考になります。


#131976 [LoongArch64] Fix some crash CoreRoot tests under --gcstresslevel=4 like Methodical_{r2|d2}.

概要

LoongArch64アーキテクチャにおいて、GCストレステスト(--gcstresslevel=4)実行時にコアランタイムテストがクラッシュする問題を修正しました。JIT エミッター内の命令範囲チェックと、エピログ処理における大型フレームのREG_FPBASEアンワインドデータ記録の不正確さを改正し、併せてネイティブAoT実装の時代遅れのコードとコメントを更新しました。

変更内容

  • JIT エミッター関連(emitloongarch64.cpp): emitInsMayWriteToGCReg() の命令範囲を修正し、GC対象レジスタへの書き込み判定の精度を向上
  • 命令定義(instrsloongarch64.h): 命令定義の更新・整備
  • コード生成(codegenloongarch64.cpp): エピログ処理でREG_FPBASEのアンワインドデータ記録を改正
  • ネイティブAoT ランタイム(複数の.S、.inc ファイル): アセンブリコード内の時代遅れなコード・コメントを改善
  • GC情報デコーダー(gcinfodecoder.cpp): アンワインド情報処理の微調整

パフォーマンスへの影響

影響なし(バグ修正・安定性向上の変更)

関連Issue

#131976

その他

  • LoongArch64特有のバグ修正であり、他のアーキテクチャへの影響なし
  • ガベージコレクション処理の安定性向上を目的とした変更

#131966 Remove Signature consumer documentation

概要

Signature契約のドキュメンテーションから、ダウンストリームコンシューマーの説明を削除するドキュメント更新です。

変更内容

  • docs/design/datacontracts/Signature.md: ダウンストリームコンシューマーに関する説明を削除(6行削除)

パフォーマンスへの影響

影響なし

関連Issue

#130447

その他

なし


#131783 Replace SHA-1/RSA-1024 test data with SHA-256/RSA-2048 equivalents

概要

Fedora/CentOS Streamなどの環境がSHA-1署名の検証を拒否するため、PKCS#7テストデータをSHA-1/RSA-1024からSHA-256/RSA-2048へ移行するPRです。これにより、29個のテストが[ConditionalFact(SupportsRsaSha1Signatures)]による条件付きスキップから解放され、全プラットフォームで実行可能になります。SHA-1検証の互換性テストは新たに2つの明示的なテストケースで担保されます。

変更内容

  • テストドキュメント再生成: 8つのSHA-256/RSA-2048署名CMS文書を新規追加(単一署名、カウンター署名、複数カウンター署名など複数のパターン)
  • 条件付きテストの削減: SHA-1専用だった29個のテストをSHA-256ドキュメントで無条件化し、プラットフォーム依存をなくす
  • SHA-1互換性テストの明示化: CheckSignature_Pkcs1_Rsa1024WithSha1およびCheckSignature_Pkcs1_Rsa1024WithSha1_CounterSignedの2つのテストを追加し、SHA-1検証を設計上カバー
  • 新しい機能プローブ追加: SupportsEcdsaSha1Signaturesを追加(従来はRSA-SHA1プローブに結合されていたECDSA-SHA1テストを分離)
  • ヘルパー関数拡張: CheckSignedEncryptedに復号化証明書をオプションパラメータ化し、複数の暗号文書フォーマットに対応
  • PFX再暗号化: RSA2048Sha256KeyTransfer1のPFXをRC2から3DESで再暗号化(Android互換性向上)
  • 不要なドキュメント削除: SHA-1専用ドキュメント3件を削除

パフォーマンスへの影響

影響なし

関連Issue

#70209

その他

  • テスト実行結果: .NET 11.0-windows 961パス / 0失敗、.NET 4.8.1 388パス / 0失敗
  • Fedora 44での検証: 933パス、20件スキップ(SHA-1関連1件、その他関連なし)
  • 生成方法: テストドキュメントはWindows/.NET Frameworkのcrypt32で生成され、ContentType属性を含む標準エンコーディングを保証。ただしNoSignatureプライマリ署名者の場合は.NET Framework実装を使用してハイブリッド生成
  • 残存する条件付きテスト: SHA-1設計上カバー用の4テストのみ(CheckSignature_Pkcs1_Rsa1024WithSha1、カウンター署名版、CheckSignature_SHA1WithRSA、AddCounterSigner_ECDSA_Sha1)

#131197 Unify sync/async Options validation contract

概要

Microsoft.Extensions.OptionsとMicrosoft.Extensions.Hostingの同期/非同期オプション検証を統一するPRです。IAsyncValidateOptions<TOptions>をIValidateOptions<TOptions>から派生させることで、両方の検証方式を単一のバリデータコレクションで管理します。スタートアップ検証はIStartupValidator(互換性ルート)とIAsyncStartupValidator(新規の非同期専用)で独立した経路を保持します。

変更内容

  • 統一されたオプション検証契約: IAsyncValidateOptions<TOptions>がIValidateOptions<TOptions>から継承。すべてのバリデータはIValidateOptions<TOptions>で登録・列挙され、非同期パスがIAsyncValidateOptions<TOptions>の有無を検出してValidateAsyncを呼び出します。
  • 非同期専用バリデータ: 同期呼び出し時はSkipまたはエラー結果を返し、sync-over-asyncを避けます。
  • スタートアップ検証ルーティング: ValidateOnStartの組み込みバリデータは両方の互換性契約で同じシングルトンインスタンスとして公開。カスタム同期IStartupValidatorは優先度を保持。それ以外の場合、登録されたIAsyncStartupValidatorすべてを実行して失敗を集約。
  • OptionsFactory<TOptions>: 非同期作成パスを追加。スタートアップ検証済み値をキャッシュにシード化し、デフォルト名のIOptions<TOptions>スロットに供給。
  • IStartupValidator: SYSLIB0066で廃止。
  • DataAnnotations: 統一コレクションに参加しながら同期動作と名前付きオプションフィルタリングを保持。

パフォーマンスへの影響

スタートアップ検証がHostedService解決前に実行されるよう順序変更されたため、コンストラクタで検証済み値を観察可能に。スタートアップ失敗時のStopAsyncでの未解決HostedServiceコレクション参照を回避。具体的な数値は記載なし。

関連Issue

#130719、#131906

その他

重要な制限事項:

  • IOptions<TOptions>.Valueはスタートアップ検証後のシード値を提供可能。非同期専用バリデータがある場合、スタートアップ前の同期アクセスは明示的に失敗。
  • IOptionsSnapshot<TOptions>とIOptionsMonitor<TOptions>(設定リロード)は依然同期のまま。非同期バリデータがあると明示的に失敗。
  • IAsyncValidateOptions<TOptions>のみで登録するのは無効(IValidateOptions<TOptions>を列挙するため)。IValidateOptions<TOptions>またはOptionsBuilder<TOptions>.Validate<TValidator>()を使用。
  • 新しいスタートアップバリデータはIAsyncStartupValidatorのみで登録すべき。カスタムIStartupValidatorは非同期スタートアップルートを意図的に置き換え。
  • 非同期スタートアップシード化は組み込みOptionsFactory<TOptions>のみサポート。

広範なテス


#130097 Diagnose LibraryImport/[GeneratedComInterface] with restricted CCW/RCW options

  • 作成者: @Copilot
  • 作成日時: 2026年07月01日 19:48:10(UTC)
  • マージ日時: 2026年08月13日 18:03:38(UTC)
  • ラベル: area-Interop-coreclr

概要

[LibraryImport]および[GeneratedComInterface]でマーシャリング方向に対応しないComInterfaceOptionsが指定された場合、コンパイル時に診断エラーSYSLIB1051を発行するようにしました。従来は無言でランタイムエラーが発生していましたが、ビルド時に問題を検出できるようになります。

// 例: RCW(ComObjectWrapper)が必要ですが、ManagedObjectWrapperのみ指定
[LibraryImport("dxgi")]
public static partial void CreateDXGIFactory2(uint flags, in Guid riid, out IDXGIFactory6 ppFactory);

[GeneratedComInterface(Options = ComInterfaceOptions.ManagedObjectWrapper)]
[Guid("...")]
public partial interface IDXGIFactory6 { }
// エラー: SYSLIB1051 - ComObjectWrapperが指定されていません

変更内容

  • NativeMarshallingAttributeInfo — SupportsManagedToUnmanagedMarshalling/SupportsUnmanagedToManagedMarshalling(初期値true)の2つのinitプロパティを追加。マーシャラーがどの方向をサポートするかを示します。
  • ComInterfaceMarshallingInfoProvider — [GeneratedComInterface(Options = …)]からComInterfaceOptionsを読み込み、対応フラグを設定(内部的にはintとして読込、0x1=CCW、0x2=RCW)。
  • AttributedMarshallingModelGeneratorResolver.CreateCustomNativeTypeMarshaller — マーシャリング方向が必要なオプションでサポートされているかを検証し、未サポートの場合はSYSLIB1051エラーを返す。
  • リソース文字列 — Strings.resxに新規の2つエラーメッセージと対応する多言語.xlfファイルの更新。
  • ユニットテスト — LibraryImportGenerator.UnitTests/CompileFails.csとComInterfaceGenerator.Unit.Tests/CompileFails.csに、各マーシャリング方向と制限オプションのカバレッジを追加。

パフォーマンスへの影響

影響なし

関連Issue

#130097

その他

  • Copilotのレビューコメント(抑制)指摘:不正なComInterfaceOptions値(未知のビット)が指定された場合、両方のフラグがfalseとなり誤解を招く可能性があります。
  • ジェネレータのテストカバレッジは充実していますが、エッジケース(マスク外のビット値)への対応は現時点では実装されていません。

目次