Pull Request on 2026年03月15日

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

注意点

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



#125568 [release/9.0] Disable Datagram_UDP_AccessDenied_Throws_DoesNotBind on all macOS/MacCatalyst

  • 作成者: @lewing
  • 作成日時: 2026年03月15日 00:36:49(UTC)
  • マージ日時: 2026年03月15日 18:29:08(UTC)
  • ラベル: Servicing-approved area-System.Net.Sockets

概要

macOS 15+におけるAppleのLocal Network privacy機能に対応したテスト修正です。UDP broadcast送信時にSO_BROADCASTなしの場合、macOS 15+はEACCESではなくEHOSTUNREACHを返すため、テストが失敗していました。既存のActiveIssue属性をMacCatalyst x64のみから全macOS/MacCatalystプラットフォームに拡大し、テスト無効化の対象を統一します。

変更内容

  • src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs: Datagram_UDP_AccessDenied_Throws_DoesNotBindテストの[ActiveIssue]属性を修正
    • 修正前: MacCatalyst && x64に限定
    • 修正後: TestPlatforms.OSX | TestPlatforms.MacCatalystに拡大

パフォーマンスへの影響

影響なし

関連Issue

#114450#125564#113313

その他

  • 本変更はrelease/9.0ブランチへのバックポート
  • macOS 15+全プラットフォーム(osx.15.amd64含む)およびcoreclr/Mono両方の実行環境で失敗が確認されている
  • AppleのLocal Network privacy featureによる仕様変更に基づく対応

#125514 Replace fixed buffers with InlineArray

  • 作成者: @EgorBo
  • 作成日時: 2026年03月13日 01:00:15(UTC)
  • マージ日時: 2026年03月15日 00:27:35(UTC)
  • ラベル: area-System.Runtime.InteropServices reduce-unsafe

概要

このPRは、Interop層および低レベルの構造体において、unsafe fixedバッファをInlineArrayベースのバッファに置き換え、unsafeキーワードの使用範囲を削減しています。互操作性レイアウトを保持しながら、より安全で保守性の高いコードへの現代化を実現しています。23ファイルにおいて、fixedバッファからInlineArrayN<T>または[InlineArray(...)]属性付きバッファへの段階的な移行を行っています。

変更内容

主な変更対象(23ファイル):

  • Windows Interop: WinSock、WinMm、SspiCli、SChannel、NtDll、Kernel32、IpHlpApi、BCryptなど、P/Invoke定義のfixedバッファをInlineArray*に置き換え
  • ネットワーク関連: QUIC(msquic.cs)、NTLM認証(ManagedNtlm.cs)、ICMPv6統計(SystemIcmpV6Statistics.cs)のバッファをInlineArray化
  • プラットフォーム固有: FreeBSD、macOS(libproc)のプロセス情報構造体のバッファを転換
  • コアライブラリ: SearchValuesのBitVector256、OpenSSL X.509チェーン処理などの内部バッファを改善

具体的な変換例:

  • fixed int[3]InlineArray3<int>
  • fixed uint[8]InlineArray8<uint>
  • fixed byte[16]InlineArray16<byte>
  • fixed char[64][InlineArray(64)] struct CharBuffer { ... }

unsafeの除去: 複数の構造体・クラスからunsafe修飾子を削除し、バッファアクセスはInlineArrayのインデクサーを使用(境界チェック付き)。

パフォーマンスへの影響

作成者による報告:

  • InlineArrayの追加の境界チェックによる若干のオーバーヘッドが存在
  • 全体的には改善がリグレッション数を上回っている
  • 詳細な差分はMihuBot/runtime-utils#1811に記載

具体的なベンチマーク数値は提供されていません。ただし、Interop層の変更であり、一般的なアプリケーションのホットパスには影響しないと考えられます。

関連Issue

なし

その他

  • 変更は比較的簡潔であり、使用例での大規模な変更は避けられている(作成者の発言)
  • 一部ファイル(GetCPInfoEx.cs、CreateToolhelp32Snapshot.cs、Interop.Blobs.cs)では、.NET TFM判定による条件付きコンパイルでInlineArrayfixedバッファの両方を保持している可能性がある
  • NTLM処理の一部で静的なヘルパーメソッドへのリファクタリングも含まれる
  • すべての変更は内部実装またはP/Invoke定義の領域であり、パブリックAPIへの破壊的変更はなし

#125459 Cache debugger patches to speed up x64 stackwalk epilogue/prologue scanning

  • 作成者: @hoyosjs
  • 作成日時: 2026年03月11日 21:55:31(UTC)
  • マージ日時: 2026年03月15日 06:20:59(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

x64スタックウォーク中のデバッガブレークポイントパッチスキャンのパフォーマンスを最適化するため、DAC側にパッチキャッシュを導入しました。ミニダンプ収集時に毎フレームで実行されていたパッチハッシュテーブルの走査を削減することで、大幅な高速化を実現しています。

変更内容

  • dacimpl.h: DacPatchCache型とキャッシュエントリ型を追加し、ClrDataAccessに新しいキャッシュメンバを格納
  • dacfn.cpp: DacReplacePatchesInHostMemoryをパッチキャッシュを利用するよう更新、キャッシュの初回生成ロジックを実装(48行追加、23行削除)
  • daccess.cpp: ClrDataAccess::Flush()からパッチキャッシュをフラッシュし、DAC再初期化時にキャッシュを無効化(3行追加)

パフォーマンスへの影響

大幅な改善:ミニダンプ収集において10,000イテレーション×10スレッドのベンチマーク結果で、baseline 55秒から約7秒に短縮(約87%削減)。

改善の理由は、従来は各スタックフレーム処理時に1,000個の固定バケットを持つパッチハッシュテーブル全体を走査していたが、キャッシュ導入により初回アクセス時の1回の走査で済むようになったためです。

関連Issue

#122459

その他

このPRは同Issue(#122459)の部分修正(Second partial fix)に該当します。キャッシュはFlush()メソッドでのみ無効化され、ダンプ収集中のアクティブなパッチが通常ゼロであることを活用した設計となっています。


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

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年03月10日 21:34:33(UTC)
  • マージ日時: 2026年03月15日 22:44:27(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

VMR(Virtual Monorepo)の dotnet/dotnet リポジトリからのコードフロー更新PRです。このコミットは2026年3月11日時点での依存関係パッケージのバージョン更新を含んでおり、Roslyn、Runtime、SDK、ASP.NET Core、EF Core、Arcade、WPF など複数のコンポーネントにまたがる更新が反映されています。

変更内容

  • NuGet.config: NuGetソース設定の軽微な更新
  • eng/Version.Details.props: 119行の依存関係バージョン定義を更新
  • eng/Version.Details.xml: 95行の依存関係情報を更新
  • eng/Versions.props: ビルドバージョン設定の更新
  • global.json: グローバルツールバージョン定義を更新(4行)
  • eng/common/core-templates/steps/publish-logs.yml: ログ公開テンプレートの軽微な削除

主要な依存関係更新:

  • Roslyn関連: Microsoft.CodeAnalysis系を5.0.0-2.26125.123→5.0.0-2.26161.102に更新
  • Runtime・SDK関連: Microsoft.NETCore.App.Ref、Microsoft.NET.Sdk.IL、System.Reflection.Metadataなど10.0.5→10.0.6に更新
  • ビルドツール: Microsoft.DotNet.Arcade.Sdk、Microsoft.DotNet.GenAPI など beta.26125.123→beta.26161.102に更新
  • NuGet関連: NuGet.Frameworks/Packaging/ProjectModel/Versioning を7.0.2-rc.12623→7.0.2-rc.16202に更新
  • その他: System.CommandLine (2.0.5→2.0.6)、WebAssembly Nodeランタイム関連パッケージの更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRは自動生成されるコードフロー更新(dotnet-maestro[bot]による)です。dotnet/dotnet リポジトリの release/10.0.1xx ブランチから 複数のリポジトリ(arcade、aspnetcore、efcore、roslyn、runtime、sdk など)の変更が集約されています。


#125274 Remove unnecessary volatile from fields in Libraries

  • 作成者: @stephentoub
  • 作成日時: 2026年03月06日 16:42:41(UTC)
  • マージ日時: 2026年03月15日 14:23:54(UTC)
  • ラベル: area-Meta

概要

.NET メモリモデル(docs/design/specs/Memory-model.md)に基づき、187個のフィールドから不要なvolatile修飾子を削除するメンテナンス変更です。参照型フィールド(159個)ではオブジェクトアサインメントがリリースセマンティクスを提供し、値型フィールド(28個)ではメモリモデルで読み込み導入が禁止されたため、volatileが不要になりました。破壊的変更ではなく、メモリ最適化による内部実装の改善です。

変更内容

参照型フィールドからの削除(159個、86ファイル)

  • 遅延初期化パターン(??=、sentinel チェック)でのvolatile削除
  • ロック/Interlocked操作で保護されたフィールド
  • キャッシュ用途の参照型フィールド(TimeZoneInfo、CultureInfo、リフレクションメタデータ など)

値型フィールドからの削除(28個、13ファイル)

  • IntPtr ハンドルキャッシュ(暗号化アルゴリズム)
  • sbyte 三値フラグ
  • int sentinel ベースの遅延初期化(s_processIds_systemPageSizes_osArchPlusOne など)

volatile を保持したフィールド

  • 他の共有可変状態へのアクセスをゲートするフィールド
  • 複数のコードパスで読み取られるブール型の破棄/初期化フラグ
  • 複数のライターを持つ可変フィールド
  • 並行データ構造とスレッド化プリミティブ内のすべてのフィールド
  • Volatile.Read/Write の明示的なコール箇所

パフォーマンスへの影響

改善:メモリバリア命令削減による軽微なランタイムオーバーヘッド削減。ただし具体的なベンチマーク数値は提供されていません。ホットパスではないキャッシュフィールドが多いため、実測性能への影響は限定的と予想されます。

関連Issue

なし

その他

  • 変更は 95ファイルに及び、主にライブラリの内部実装を対象
  • 公開API の変更はなし
  • 正確性を維持しつつ、.NET メモリモデルの最新仕様に準拠したメンテナンス

目次