Pull Request on 2026年03月16日

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

注意点

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


目次

  1. #125628 switch to AZL as build platform to avoid disk problems
  2. #125622 Fix aspnetcore-sync.yml
  3. #125620 Update create-pull-request action version
  4. #125614 Add cdac.slnx solution file for cDAC development
  5. #125605 Do not store result of cast in IDynIntfCastable scenarios
  6. #125583 [mono] Fix jit_mm mismatch in delegate trampoline creation for dynamic methods
  7. #125575 Fix Mono AOT crash on struct fields with unsupported marshal conversion
  8. #125574 Remove more fixed buffers and replace them with InlineArray
  9. #125573 Fix flaky TestResourceManagerIsSafeForConcurrentAccessAndEnumeration timeout
  10. #125562 Fix libs.native subset on OpenBSD
  11. #125540 [cDAC] Implement GetLastExceptionState on IXCLRDataTask
  12. #125538 Add pipeline legs for crossgen2 with --large_version_bubble
  13. #125537 Fix racy mvid tests.
  14. #125527 Port ComClassGenerator to string writing instead of constructing syntax nodes
  15. #125526 Sync shared HPack/QPack changes from aspnetcore
  16. #125509 [browser] Fix WasmEmitTypeScriptDefinitions making builds non-incremental
  17. #125497 JIT: Create suspensions/resumptions separately from processing calls in async transformation
  18. #125496 [wasm][coreclr] Enable passing coreclr tests
  19. #125418 Fix missing call to write barrier in static constructors of ref structs
  20. #125384 Initialize WebProxy credentials from URI UserInfo
  21. #125293 Fix GCHandle double-free race in WinHttpRequestState
  22. #125219 JIT: Preference SDSU intervals away from killed registers
  23. #125152 CodeQL ilasm fixes
  24. #125096 [release/8.0-staging] Update dependencies from dotnet/runtime-assets
  25. #125095 [release/8.0-staging] Update dependencies from dotnet/icu
  26. #124965 Include propertyName in KeyNotFoundException thrown by JsonElement.GetProperty
  27. #124801 Decouple ILC from ManagedAssemblyToLink
  28. #124777 [release/8.0] Update dependencies from dotnet/cecil
  29. #124728 Use PF_LINK on SunOS
  30. #124611 NativeAOT: Use lib prefix by default on Unix for native library outputs
  31. #124482 Fix UdpClient.EnableBroadcast not preventing broadcast sends
  32. #124428 Fix XmlReader ArgumentOutOfRangeException for malformed UTF-8 in XML …

#125628 switch to AZL as build platform to avoid disk problems

  • 作成者: @wfurt
  • 作成日時: 2026年03月16日 18:39:25(UTC)
  • マージ日時: 2026年03月16日 23:49:53(UTC)
  • ラベル: area-Infrastructure

概要

ビルドパイプラインで Docker イメージビルド時にディスク容量不足が発生する問題を解決するため、内部 Linux ジョブのビルドイメージを 1es-ubuntu-2204 から build.azurelinux.3.amd64(Azure Linux)に切り替えます。この問題は 1ES イメージ更新後に発生しました。

変更内容

  • eng/pipelines/common/xplat-setup.yml: クロスプラットフォーム共通パイプラインテンプレート内の内部 Linux プール設定の ImageOverride1es-ubuntu-2204 から build.azurelinux.3.amd64 に変更(+1/-1)

パフォーマンスへの影響

ビルド環境のディスク容量問題の解決による Docker イメージビルドの安定性向上が期待されます。具体的なパフォーマンス指標は提供されていません。

関連Issue

なし

その他

この変更は CI/CD インフラストラクチャの調整であり、ランタイム・コンパイラ・パブリック API には直接の影響はありません。


#125622 Fix aspnetcore-sync.yml

  • 作成者: @akoeplinger
  • 作成日時: 2026年03月16日 16:40:42(UTC)
  • マージ日時: 2026年03月16日 16:43:02(UTC)
  • ラベル: area-Infrastructure

概要

GitHub Actions ワークフロー aspnetcore-sync.yml を修正し、単一ジョブ内での複数リポジトリチェックアウト時に発生する actions/checkout の認証情報永続化の問題(actions/checkout#2299)を解決します。

変更内容

  • .github/workflows/aspnetcore-sync.yml
    • dotnet/aspnetcore チェックアウトに persist-credentials: false を追加
    • dotnet/runtime チェックアウトに persist-credentials: false を追加

パフォーマンスへの影響

影響なし

関連Issue

actions/checkout#2299

その他

なし


#125620 Update create-pull-request action version

  • 作成者: @akoeplinger
  • 作成日時: 2026年03月16日 16:17:05(UTC)
  • マージ日時: 2026年03月16日 16:24:54(UTC)
  • ラベル: area-Infrastructure

概要

aspnetcore→runtime同期ワークフローで使用されているdotnet/actions-create-pull-requestアクションを、Aspireで使用されているバージョンに更新します。アクションで発生していた問題に対応するため、v4タグから特定のコミットSHAにピン留めされたバージョンに切り替えています。

変更内容

  • .github/workflows/aspnetcore-sync.yml: dotnet/actions-create-pull-requestアクションのバージョン指定を更新(v4タグから特定のコミットSHAへ変更)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

ワークフローのメンテナンス/依存関係更新のみの変更です。


#125614 Add cdac.slnx solution file for cDAC development

  • 作成者: @max-charlamb
  • 作成日時: 2026年03月16日 14:01:28(UTC)
  • マージ日時: 2026年03月16日 16:08:27(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact DAC)開発用の公式ソリューションファイル cdac.slnx をチェックインして、開発者の環境構築を簡素化します。従来はREADMEの手動テンプレートを使用していましたが、5つのライブラリプロジェクトと2つのテストプロジェクト(ユニットテスト・ダンプテスト)をまとめた検証済みソリューションを提供することで、セットアップの手間を削減します。

変更内容

  • 新規ファイル src/native/managed/cdac/cdac.slnx: 5つのライブラリプロジェクトを /cdac/ フォルダ、2つのテストプロジェクトを /tests/ フォルダに構成。ビルド時依存関係であるデバッギープログラムは除外。
  • 更新 src/native/managed/cdac/README.md: 不完全なテンプレート手順を削除し、チェックインされたソリューションファイルの参照に置き換え。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • dotnet build cdac.slnx は0件の警告で成功を確認
  • 全1235個のユニットテストがパス
  • 開発者は手動でソリューションファイルを作成する必要がなくなり、DXが向上

#125605 Do not store result of cast in IDynIntfCastable scenarios

  • 作成者: @MichalStrehovsky
  • 作成日時: 2026年03月16日 05:49:27(UTC)
  • マージ日時: 2026年03月16日 21:09:09(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT環境において、IDynamicInterfaceCastable型のインターフェース型チェック結果が誤ってキャッシュされ、異なるインスタンス間で結果が誤った形で再利用される不具合を修正します。修正により、IsInterfaceImplementedメソッドの結果がインスタンスごとに正しく評価されるようになります。

変更内容

  • TypeCast.cs: IDynamicInterfaceCastable型に対するisinst/isおよびcastclass形式の型チェックで、キャッシュを更新しないように変更(キャッシュスキップロジックを追加)
  • Interfaces.cs: 複数インスタンス間でIsInterfaceImplementedの呼び出し結果がインスタンスごとに異なることを検証する回帰テストを追加

パフォーマンスへの影響

IDynamicInterfaceCastable型のインターフェース型チェストのキャッシュをスキップするため、該当する型に対する繰り返しの型チェックでわずかなパフォーマンス低下の可能性あり。ただし、正確性の確保が優先される設計と考えられます。

関連Issue

#125577

その他

CoreCLRからのロジックコピーに際して、NativeAOT環境での異なる考慮事項(実際にオブジェクトインスタンスが存在)を見落としていたことが根本原因です。修正は内部実装(ランタイムの型キャスト処理)の範囲内であり、公開APIへの互換性影響はありません。


#125583 [mono] Fix jit_mm mismatch in delegate trampoline creation for dynamic methods

  • 作成者: @lewing
  • 作成日時: 2026年03月15日 15:39:36(UTC)
  • マージ日時: 2026年03月16日 15:06:08(UTC)
  • ラベル: area-VM-meta-mono

概要

Mono JITランタイムにおけるdelegate trampolineの作成時のメモリマネージャー選択ミスマッチを修正します。動的メソッドの場合、jit_mm_for_methodを一貫して使用し、hash table挿入をアトミックに行うことで、マルチスレッド環境での不整合状態を排除します。特にWASM with AOT + threads環境での予期しないアサーション失敗を解決します。

変更内容

  • src/mono/mono/mini/mini-trampolines.c:
    • 動的メソッドにおいて、delegate_info_hash選択時にマージされたメモリマネージャー(class+method)の使用を廃止し、jit_mm_for_method(method)を使用するよう変更
    • delegate_info_hashdyn_delegate_info_hashへの両方のhash table挿入を単一のロック領域下で実行し、mono_jit_free_methodによる並行クリーンアップ時の部分的な不整合状態を排除

パフォーマンスへの影響

影響なし(ロック範囲の拡張により若干のコンテンション増加の可能性あるが、既にメモリマネージャー単位のロックが存在するため実質的な性能低下は想定されない)

関連Issue

#120059

その他

  • 修正前:mono_create_delegate_trampoline_infoで使用されるメモリマネージャーとmono_jit_free_methodでの参照が異なるため、cleanup時にhash tableエントリが削除されず、mini-runtime.c:3006のアサーション失敗を引き起こす
  • 修正後:同じメモリマネージャーを使用し、両hash table操作をアトミックに実行することで、WASM with AOT + threadsでの予期しないアサーション失敗を解決

#125575 Fix Mono AOT crash on struct fields with unsupported marshal conversion

  • 作成者: @lewing
  • 作成日時: 2026年03月15日 02:28:49(UTC)
  • マージ日時: 2026年03月16日 14:23:09(UTC)
  • ラベル: area-VM-meta-mono

概要

Mono AOT コンパイラが、参照型フィールド(string、class、array など)で MONO_MARSHAL_CONV_NONE に解決されるマーシャリング変換に遭遇した際に SIGABRT でクラッシュする問題を修正。例えば [MarshalAs(UnmanagedType.CustomMarshaler)] が指定された string フィールドを含む構造体がこれに該当します。修正により、AOT コンパイラはアサーションではなく MarshalDirectiveException を発行して正常に完了し、ランタイムが適切な例外をスロー可能になります。

変更内容

  • src/mono/mono/metadata/marshal-shared.c: mono_marshal_shared_emit_struct_conv_full 関数内の MONO_MARSHAL_CONV_NONE パス処理を拡張。MONO_TYPE_STRINGMONO_TYPE_CLASSMONO_TYPE_OBJECTMONO_TYPE_SZARRAYMONO_TYPE_ARRAY といった参照型フィールドに対して、g_assert_not_reached() でクラッシュさせる代わりに MarshalDirectiveException を発行する処理に統一。既存の MONO_TYPE_OBJECT の処理を、より正確なエラーメッセージを持つ統合的なエラーパスに再構成。

パフォーマンスへの影響

影響なし

関連Issue

#125168

その他

  • この問題は linux-x64 Release AllSubsets_Mono_LLVMFULLAOT_RuntimeIntrinsicsTests ビルドで毎回発生しており、月間 22 件のクラッシュを記録していました。
  • 影響を受けるアセンブリは ICustomMarshaler_TargetUnix.dll です。
  • テスト CustomMarshaler_StructWithCustomMarshalerFieldIsMarshaledCorrectly は意図的に無効な構造体に対して実行時に TypeLoadException をスローすることを期待していましたが、AOT コンパイラがクラッシュしてテスト実行に至りませんでした。

#125574 Remove more fixed buffers and replace them with InlineArray

  • 作成者: @EgorBo
  • 作成日時: 2026年03月15日 02:22:14(UTC)
  • マージ日時: 2026年03月16日 23:08:25(UTC)
  • ラベル: area-System.Net reduce-unsafe

概要

固定サイズバッファ(fixedキーワード)をC# InlineArray(InlineArray*<T>および[InlineArray(N)])に置き換えることで、interop関連の低レベルコードにおけるunsafeな操作を削減するマイグレーションです。ネイティブレイアウトの互換性を維持しながら、Spanベースのアクセスパターンを採用しています。

変更内容

  • Interop構造体: WinHttp、NtDll(RtlGetVersion)、Kernel32(TimeZone)、Unix/Bsdネットワーク情報などの固定バッファをInlineArray型に置き換え(多くは#if NET条件付き)
  • System.Net.NetworkInformation: MAC/IPアドレス抽出時にBuffer.MemoryCopyからSpanスライシングに変更
  • System.Net.Http.WinHttpHandler: WinHTTP remote addressアクセスをSpan変換に対応
  • System.Text.Encodings.Web: ASCIIプリエスケープテーブルをInlineArray化
  • System.Private.CoreLib: OS版文字列構築時のポインタベース操作をSpanスライシングに置き換え
  • WebAssembly: WebcilヘッダマジックをInlineArray4<byte>に変更
  • System.Net.Quic: MsQuic interop構造体の複数固定バッファをInlineArray化

パフォーマンスへの影響

影響なし。内部実装の変更であり、ネイティブレイアウトと動作は変わりません。むしろスタック割り当てやメモリアクセスパターンの最適化により、わずかな改善が期待できます(PR作成者による報告では「very minor diffs」)。

関連Issue

なし

その他

  • #if NET条件付きで実装されており、.NET Framework互換性を維持
  • unsafeキーワードの使用を削減し、コードの安全性を向上
  • Interop層の内部実装変更のため、公開APIへの破壊的変更なし
  • P/Invoke署名の一部調整が行われた(例:RtlGetVersionでポインタベース署名への変更)

#125573 Fix flaky TestResourceManagerIsSafeForConcurrentAccessAndEnumeration timeout

  • 作成者: @lewing
  • 作成日時: 2026年03月15日 02:17:44(UTC)
  • マージ日時: 2026年03月16日 02:13:47(UTC)
  • ラベル: area-System.Resources

概要

TestResourceManagerIsSafeForConcurrentAccessAndEnumerationテストの不安定性を解決するPRです。このテストは複数スレッドでのリソース列挙時のスレッドセーフティを検証していますが、CI環境の負荷により30秒のタイムアウトで頻繁に失敗していました。Task.WaitAllの代わりにTask.WhenAllを使用し、タイムアウトを120秒に延長し、例外伝播を改善することで、フレークテストを解消しています。

変更内容

  • src/libraries/System.Resources.Extensions/tests/BinaryResourceWriterUnitTest.cs
    • テストメソッドをvoidからasync Taskに変更
    • Task.WaitAll(tasks, TimeSpan.FromSeconds(30))からTask.WhenAny(allTasks, Task.Delay(TimeSpan.FromSeconds(120)))パターンに変更
    • タイムアウト時の明確なアサーションメッセージを追加
    • await allTasksで実際の例外を伝播させるように改善

パフォーマンスへの影響

影響なし(テストの信頼性向上のための変更であり、ランタイムパフォーマンスには影響しません)

関連Issue

#125448(主要Issue) #80277(過去の既知ビルドエラー) #86013(過去の既知ビルドエラー)

その他

  • .NET Framework TFMとの互換性を保つため、Task.WhenAll(...).WaitAsync(...)ではなくWhenAny/Task.Delayパターンを採用
  • xUnitはasync Taskテストメソッドをネイティブサポートしているため、メソッドシグネチャの変更は互換性に影響なし

#125562 Fix libs.native subset on OpenBSD

  • 作成者: @am11
  • 作成日時: 2026年03月14日 17:56:00(UTC)
  • マージ日時: 2026年03月16日 20:10:57(UTC)
  • ラベル: area-PAL-coreclr community-contribution os-openbsd

概要

OpenBSD上でネイティブライブラリのクロスコンパイルを成功させるための修正です。build-native.shスクリプトでOpenBSD向けx64クロスコンパイル時の設定エラーを解決し、関連PR #125294と組み合わせることで完全なビルドが可能になります。

変更内容

  • pal_config.h.in: OpenBSD固有の設定マクロを追加(3行)
  • pal_mount.c: OpenBSDでのマウント情報取得処理を修正(9行追加、1行削除)
  • pal_process.c: OpenBSD固有のプロセス処理を追加(4行)
  • System.Net.Security.Native/extra_libs.cmake: OpenBSD向けリンクライブラリ設定を追加(14行追加、1行削除)
  • System.Security.Cryptography.Native/CMakeLists.txt: OpenBSD向けネイティブ暗号化ライブラリの設定を追加(25行)
  • configure.cmake: OpenBSD向けのconfigureスクリプト生成設定を改善(24行追加、3行削除)

パフォーマンスへの影響

影響なし

関連Issue

#124911 #125294(関連PR)

その他

  • OpenBSD対応は内部実装(ネイティブライブラリビルド系)の変更のため、公開APIへの影響なし
  • OpenBSDプラットフォーム固有のビルド設定修正であり、他のプラットフォームへの互換性影響なし

#125540 [cDAC] Implement GetLastExceptionState on IXCLRDataTask

  • 作成者: @barosiak
  • 作成日時: 2026年03月13日 23:13:54(UTC)
  • マージ日時: 2026年03月16日 18:19:35(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Compact Data Access Component)のマネージド実装において、IXCLRDataTask.GetLastExceptionStateメソッドを実装しました。このメソッドは、スレッドの最後に発生した例外の状態を取得します。ThreadData.LastThrownObjectHandleから情報を読み込み、ネストされた例外チェーンなしのClrDataExceptionStateを構築し、既存のGetCurrentExceptionStateと同じパターンに従っています。

変更内容

  • ClrDataTask.cs: GetLastExceptionStateメソッドを実装。ThreadData.LastThrownObjectHandleを使用して例外状態を取得し、ClrDataExceptionState(CLRDATA_EXCEPTION_PARTIAL フラグ付き)を構築
  • IXCLRData.cs: COM インターフェース定義でGetLastExceptionStateの戻り値パラメータをDacComNullableByRef<IXCLRDataExceptionState>に変更し、他のレガシーCOM出力パラメータと一貫性を確保
  • ClrDataExceptionStateTests.cs: 例外なし、例外あり、ネストされた例外が伝播されない3つのシナリオをカバーする6つの新規ユニットテストを追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • この変更はレガシー cDAC IXCLRDataTask インターフェース(診断・デバッグ機能)に対する拡張であり、公開APIの内部実装に該当します
  • すべての新規テストがパスし、既存テストにリグレッションなし
  • 「前の例外情報なし」の場合の動作も適切に処理されています

#125538 Add pipeline legs for crossgen2 with --large_version_bubble

  • 作成者: @jtschuster
  • 作成日時: 2026年03月13日 22:05:03(UTC)
  • マージ日時: 2026年03月16日 17:49:11(UTC)
  • ラベル: area-crossgen2-coreclr

概要

crossgen2のコンポジットモード(--large_version_bubble)でのCI カバレッジを追加し、非同期メソッドのコンパイル処理を調整してトークン解析エラーを回避するもの。従来のクロスジェン2パイプラインでは、フレームワークライブラリを含むテストをコンポジットモードでビルドするテストがなかったため、コンポジットモード固有の問題が検出されていませんでした。

変更内容

  • CI パイプライン追加: crossgen2-composite.ymlに新しいパイプラインレグ(Linux/Windows x64)を追加。largeVersionBubble: trueでコンポジットR2Rテストを実行
  • Helix統合: run-test-job.ymlsend-to-helix-step.ymllargeVersionBubbleパラメータを追加し、テスト実行時にLargeVersionBubble=1をエクスポート
  • R2Rコンパイル動作調整:
    • CorInfoImpl.ReadyToRun.cs: コンポジットモード時にコンパイラ生成の非同期IL本体をスキップするロジックを拡張
    • ReadyToRunCodegenNodeFactory.cs: 非同期メソッド発行フィルタリングをARM32のみに限定
  • R2RDump修正: CLRTest.CrossGen.targets--rpオプションをR2RDumpに追加

パフォーマンスへの影響

影響なし

関連Issue

#125444で発生した問題の完全修正を目的としており、当初の修正が不完全だったことに対応

その他

  • コンポジットモードの非同期メソッド処理によるトークン解析クラッシュを根本的に解決するもの
  • CI パイプラインの拡張により、将来の類似問題の早期発見が可能に

#125537 Fix racy mvid tests.

  • 作成者: @mrvoorhe
  • 作成日時: 2026年03月13日 20:55:24(UTC)
  • マージ日時: 2026年03月16日 17:36:34(UTC)
  • ラベル: linkable-framework community-contribution area-Tools-ILLink

概要

IL Linkerのテスト実行時にMVID関連テスト(DeterministicMvidWorksNewMvidWorksRetainMvid)が同じサンドボックスロケーションで競合し、UnauthorizedAccessExceptionが発生する問題を解決。3つのテストをAll.CommandLineTestsから除外し、Individualフォルダに移動して個別実行テストに統合。重複トリミング処理を削減。

変更内容

  • テストケースファイルの移動: CommandLine/Mvid/配下の3つのテストをCommandLine/Mvid/Individual/サブフォルダへ移動
  • テストメタデータ更新:
    • CommandLine.Mvid.IndividualTests.g.csに3テストを新規追加(+31行)
    • CommandLine.MvidTests.g.csから3テストを削除(-18行、重複実行を排除)
  • テスト実行パターン更新: IndividualTests.csに9行追加し、個別テスト実行用のCheckメソッド呼び出しを統合
  • 互換性: テストの実行カバレッジは変わらず(All.CommandLineTestsでの実行結果と等価をIndividual実行で実現)

パフォーマンスへの影響

テスト実行時間の短縮。3つのテストが重複実行されなくなることで、不要なトリミング処理が削減される。

関連Issue

#125537

その他

  • テストインフラの一貫性: 他のIndividualTestsに従うパターンに統一
  • 競合原因: 2つの異なるテストスイート(All.CommandLineTestsIndividualTests)が同じサンドボックスディレクトリを使用していたため、ファイル削除時のアクセス権限エラーが発生していた

#125527 Port ComClassGenerator to string writing instead of constructing syntax nodes

  • 作成者: @DoctorKrolic
  • 作成日時: 2026年03月13日 16:56:08(UTC)
  • マージ日時: 2026年03月16日 19:56:35(UTC)
  • ラベル: area-System.Runtime.InteropServices community-contribution

概要

COM相互運用ソースジェネレータのComClassGeneratorをシンタックスノード構築から文字列書き込みベースへ移植しました。これにより、コード生成の効率化とメモリ使用量の削減を実現します。関連Issue #95882 の一部です。

変更内容

  • ComClassGenerator.cs: シンタックスノード構築ロジックを文字列書き込みに変更(-109行、実装簡素化)
  • ComClassInfo.cs: 生成ロジック対応のための小規模な修正(+7行)
  • ContainingSyntaxContext.cs: 文字列ベースの生成に必要なコンテキスト管理機能を追加(新規、+49行)
  • TypeNames.cs: 不要になった定義を削除(-28行)
  • ComClassGeneratorOutputShape.cs: テスト用の出力形状検証ロジックを追加(+28行)

パフォーマンスへの影響

シンタックスノード構築からの移行により、メモリ割り当てとGC圧力が低減される見込みです。詳細なベンチマーク結果の記載はありません。

関連Issue

#95882

その他

  • 内部実装の最適化であり、公開APIへの影響はありません
  • テスト追加により生成コード品質の検証体制が強化されています

#125526 Sync shared HPack/QPack changes from aspnetcore

  • 作成者: @Copilot
  • 作成日時: 2026年03月13日 16:51:40(UTC)
  • マージ日時: 2026年03月16日 16:58:02(UTC)
  • ラベル: area-System.Net.Http

概要

Huffman符号化された文字列がデコード時に著しく膨張する場合(例:10バイト→16バイト)に、デコード後のヘッダー長が設定された制限を超える可能性がある脆弱性を修正しました。HPackDecoderQPackDecoderでは、エンコード済み文字列長のみを事前チェックしていましたが、デコード後の長さをチェックしていませんでした。デコード後に長さチェックを追加し、制限を超える場合は例外をスローするよう改善しました。

変更内容

  • HPackDecoder.cs: Huffman.Decode実行後にdecodedLength > _maxHeadersLengthのチェックを追加し、HPackDecodingExceptionをスロー。非Huffmanパスで事前チェックが十分であることをDebug.Assertで確認。
  • QPackDecoder.cs: HPackDecoderと同様にデコード後の長さチェック処理を追加し、QPackDecodingExceptionをスロー。
  • テスト追加(HPackDecoderTest.cs): HuffmanDecodedHeaderName_ExceedsLimitAfterDecoding_ThrowsHuffmanDecodedHeaderValue_ExceedsLimitAfterDecoding_Throwsの2つのテストケースを追加。maxHeadersLength: 10で10バイトのHuffmanペイロード(16バイトにデコード)をテスト。
  • テスト追加(QPackDecoderTest.cs): 同様に2つのテストケースを追加。

パフォーマンスへの影響

影響なし(セキュリティ検証ロジックの追加のため、わずかな処理増加あり)

関連Issue

dotnet/aspnetcore#18943

その他

本修正はaspnetcore側での変更をdotnet/runtimeに同期したものです。Huffman符号化によるヘッダー膨張攻撃を防止するセキュリティ修正です。


#125509 [browser] Fix WasmEmitTypeScriptDefinitions making builds non-incremental

  • 作成者: @maraf
  • 作成日時: 2026年03月12日 21:06:10(UTC)
  • マージ日時: 2026年03月16日 16:30:31(UTC)
  • ラベル: arch-wasm area-Build-mono os-browser

概要

WasmEmitTypeScriptDefinitions が有効な場合、ビルド時に dotnet.d.tswwwroot/ にコピーされます。2回目以降のビルドでは、wwwroot の Content グロブがこのファイルを検出し、Static Web Assets マニフェストが再生成されることでビルドが非インクリメンタルになります。本修正は、dotnet.d.ts を評価時の Content から除外することで、SWA パイプラインがグロブを通じてファイルを検出しないようにし、マニフェストの安定性を保ちます。

変更内容

  • Microsoft.NET.Sdk.WebAssembly.Browser.targets: WasmEmitTypeScriptDefinitions が有効な場合、静的な ItemGroupwwwroot\dotnet.d.ts を Content から削除
  • WasmTemplateTests.cs: テストケースの追加(5行)

パフォーマンスへの影響

インクリメンタルビルドの改善。修正前は2回目以降のビルドでマニフェストが不必要に再生成されていましたが、修正後は安定します。

関連Issue

#124729

その他

なし


#125497 JIT: Create suspensions/resumptions separately from processing calls in async transformation

  • 作成者: @jakobbotsch
  • 作成日時: 2026年03月12日 14:37:31(UTC)
  • マージ日時: 2026年03月16日 15:12:53(UTC)
  • ラベル: area-CodeGen-coreclr runtime-async

概要

JIT非同期変換をリファクタリングし、継続情報の収集とサスペンション/レジューム生成を分離しました。この変更により、複数のサスペンションポイント間で継続レイアウトを再利用できるようになり、将来的に単一の継続を割り当てて全ての後続サスペンションで再利用する戦略の実験が可能になります。ローカル変数の割り当て順序が異なる箇所では、スタックフレームエンコーディングに軽微な差異が発生する可能性があります。

変更内容

  • src/coreclr/jit/jitstd/vector.h: const アクセスパターンをサポートするため、jitstd::vector::data() に const オーバーロードを追加
  • src/coreclr/jit/async.h: ContinuationLayoutBuilderAsyncState、および新しい戻り値形状追跡(ReturnTypeInfo/ReturnInfo)を導入し、継続の「必要条件」と「レイアウト/エンコーディング」を分離
  • src/coreclr/jit/async.cpp: サスペンション/レジューム IR 生成を遅延させ(CreateResumptionsAndSuspensions)、ビルダベースのワークフローと状態ごとの「サブレイアウト」メンバーシップチェックを実装

パフォーマンスへの影響

影響なし。リファクタリングは内部実装の再構成であり、ランタイムのパフォーマンス動作に変化をもたらしません。

関連Issue

なし

その他

  • 内部実装の変更であり、公開API への影響はありません
  • Copilot による低信頼度コメント(2件)では、変数名シャドーイングと OSR IL オフセット発行ロジックの一貫性に関する懸念が指摘されています
    • ContinuationLayoutBuilder::Create() 内で ClassLayout* layout; が外側の ContinuationLayout* layout をシャドーイングしており、GC ビットマップ生成に誤りが生じる可能性
    • FillInDataOnSuspension で既計算の subLayout.NeedsOSRILOffset() の代わりにコンパイラフラグを使用しており、将来の変更で乖離する可能性

#125496 [wasm][coreclr] Enable passing coreclr tests

  • 作成者: @radekdoulik
  • 作成日時: 2026年03月12日 14:16:10(UTC)
  • マージ日時: 2026年03月16日 09:51:01(UTC)
  • ラベル: arch-wasm area-Infrastructure-libraries os-browser

概要

WebAssembly(wasm)環境でcoreclrのテストを実行可能にするための変更です。パイプライン設定とテストプロジェクト設定を追加しています。

変更内容

  • eng/pipelines/runtime.yml: パイプライン設定から2行削除
  • src/libraries/tests.proj: 88行のテスト設定を新規追加し、WebAssembly環境でのテスト実行をサポート

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはWebAssemblyターゲット向けのcoreclrテストスイート実行環境の構築に関連する変更であり、テスト基盤の整備が目的と考えられます。


#125418 Fix missing call to write barrier in static constructors of ref structs

  • 作成者: @janvorli
  • 作成日時: 2026年03月10日 22:27:02(UTC)
  • マージ日時: 2026年03月16日 13:23:19(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JITがref structの静的フィールド初期化時に書き込みバリア(write barrier)の呼び出しを誤って省略していた問題を修正しました。GCヒープに存在する静的フィールドに対してJIT_ByRefWriteBarrierが呼び出されていなかったため、メモリ破損につながる可能性がありました。この問題は.NET 10のPR #111733で導入されました。

変更内容

  • src/coreclr/jit/importer.cpp: JITインポーターロジックを更新し、GTF_IND_TGT_NOT_HEAPフラグをインスタンスフィールドのみに限定しました。ref structの静的フィールドは「ヒープ上にない」と誤分類されないようにしました。
  • src/tests/JIT/Regression/JitBlue/Runtime_125169/Runtime_125169.cs: ref structの静的フィールド初期化とGCを組み合わせた新しい回帰テストを追加しました。DOTNET_HeapVerify=1で実行すると致命的エラーが発生します。
  • src/tests/JIT/Regression/Regression_ro_2.csproj: 新規回帰テストをプロジェクトに追加しました。

パフォーマンスへの影響

影響なし(バグ修正のため、パフォーマンスではなく正確性が対象です)

関連Issue

#125169#111733

その他

この修正は**内部実装(JITコンパイラ)**に関わるバグ修正であり、公開APIレベルでの破壊的変更はありません。ただし、既存コードが誤った動作に依存していた場合、修正後に不安定性が顕在化する可能性があります。


#125384 Initialize WebProxy credentials from URI UserInfo

  • 作成者: @Copilot
  • 作成日時: 2026年03月10日 13:39:37(UTC)
  • マージ日時: 2026年03月16日 18:16:16(UTC)
  • ラベル: area-System.Net

概要

WebProxyがプロキシURI内に埋め込まれた認証情報(UserInfo)を無視していた問題を修正します。socks5://username:password@host:portのような形式でURI内に指定された認証情報を自動的に抽出し、Credentialsプロパティに設定するようになります。これにより、SOCKS5認証が正常に機能するようになります。

// URIから認証情報が自動的に抽出される
handler.Proxy = new WebProxy("socks5://username:password@host:1080");
// handler.Proxy.Credentials は自動設定される

// Addressセッターでも動作
var proxy = new WebProxy();
proxy.Address = new Uri("socks5://username:password@host:1080");
// proxy.Credentials は自動設定される

// 明示的な認証情報が優先される
handler.Proxy = new WebProxy("socks5://username:password@host:1080");
handler.Proxy.Credentials = new NetworkCredential("other", "creds"); // こちらが優先

変更内容

  • WebProxy.cs: AddressプロパティセッターでUri.UserInfoからNetworkCredentialを抽出するロジックを追加。Uri.UnescapeDataStringを使用してパーセントデコーディングに対応。C# fieldキーワードを使用して暗黙的なバッキングフィールドを活用。コンストラクターは認証情報抽出をセッターに委譲し、明示的なCredentialsパラメータが優先される仕様。GetCredentialsFromUriヘルパーメソッド追加。
  • WebProxy.csproj: System.Runtime.InteropServicesプロジェクト参照を追加(NetworkCredential内部で使用されるSecureStringに必要)
  • WebProxyTest.cs: 23個の新規テストケース追加(コンストラクタ/セッターパス、URL エンコード文字、明示的認証情報の優先順位、null/userinfo未指定のエッジケースをカバー)
  • すべてのコンストラクタとAddressプロパティに、自動認証情報抽出動作を説明するXMLドキュメント<remarks>を追加

パフォーマンスへの影響

影響なし

関連Issue

#125341

その他

  • 公開APIに対する破壊的変更なし
  • Addressプロパティセッターの動作が拡張される(後方互換性あり)
  • libcurlなどの業界標準ライブラリと同様の動作に統一される

#125293 Fix GCHandle double-free race in WinHttpRequestState

  • 作成者: @EgorBo
  • 作成日時: 2026年03月07日 18:39:59(UTC)
  • マージ日時: 2026年03月16日 23:14:03(UTC)
  • ラベル: area-System.Net.Http

概要

WinHttpRequestStateでのGCHandleのダブルフリー競合状態を修正しました。単なるvolatile boolでは、disposeチェックと設定が原子的ではないため、複数スレッドからの同時アクセス時にGCHandleが二重解放される可能性がありました。

変更内容

  • src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpRequestState.cs: volatile bool _disposedフラグを使用した単純な二重チェックロック的な実装から、より堅牢な同期メカニズムに変更。フラグチェックと設定の間の競合状態を排除し、GCHandleの安全な解放を保証します。

パフォーマンスへの影響

影響なし(同期メカニズムの変更は、エラーパスの稀な処理のみに関わるため、通常の使用時のパフォーマンスへの影響は無視できるレベル)

関連Issue

#125293

その他

この修正はSystem.Net.Http.WinHttpHandlerライブラリ内部実装の改善で、スレッドセーフ性に関するマルチスレッド環境でのバグ修正です。GCHandle二重解放はクラッシュやメモリ破損を引き起こす深刻な問題であるため、重要な修正です。


#125219 JIT: Preference SDSU intervals away from killed registers

  • 作成者: @jakobbotsch
  • 作成日時: 2026年03月05日 12:49:15(UTC)
  • マージ日時: 2026年03月16日 12:19:20(UTC)
  • ラベル: area-CodeGen-coreclr

概要

JIT の線形スキャンレジスタアロケーション (LSRA) において、単一定義・単一使用 (SDSU) の一時的なインターバルを、消費側ノードで殺されるレジスタから遠ざけるようにする優先度ロジックを復活させました。これにより #125214 の変更による回帰を解決し、レジスタスピルの削減とコード品質の向上を実現しています。

サンプルコード(生成アセンブリの改善例):

-       sub      rsp, 40        // より大きなスタック調整
-       xor      eax, eax
-       mov      qword ptr [rsp+0x20], rax
+       push     rbx            // レジスタ保存による効率化
+       sub      rsp, 32

変更内容

  • lsrabuild.cpp: resolveConflictingDefAndUse 関数の紛争追跡ロジックを見直し、ケース #5 が再度到達可能に。ケース #3 の固定レジスタ処理も調整。updateIntervalPreferencesForKill ヘルパーメソッドを新規追加し、ライブローカル変数と処理中 (defList) の非ローカルインターバルの両方に対して殺害駆動型のレジスタ優先度更新を適用。
  • lsra.h: updateIntervalPreferencesForKill ヘルパーの宣言を追加。

パフォーマンスへの影響

改善あり。提供例では以下の改善が確認できます:

  • コードサイズ: 48 → 39 バイト (19% 削減)
  • プロローグサイズ: 11 → 5 バイト (55% 削減)
  • PerfScore 全体: 14.25 → 13.00 (9% 改善)

スタック割り当ての削減とレジスタ利用の最適化により、メモリアクセスが削減され実行速度が向上。

関連Issue

#81242#125214

その他

Copilot レビュアーからの指摘により、ケース #4 の固定レジスタ不変性に関する潜在的な問題が報告されています。複数レジスタ割り当てシナリオで isFixedRegRef フラグの処理が不正な動作を引き起こす可能性があり、追加の検証または条件付きクリアが必要な可能性があります。


#125152 CodeQL ilasm fixes

  • 作成者: @dhartglassMSFT
  • 作成日時: 2026年03月03日 23:10:44(UTC)
  • マージ日時: 2026年03月16日 17:39:07(UTC)
  • ラベル: area-ILTools-coreclr

概要

CoreCLR ilasm ツールにおけるCodeQL静的解析の警告を修正するPR。ループカウンター型の誤りと、UTF-16文字列の不正なアライメントアクセスの2つの問題を解決します。

変更内容

  • src/coreclr/ilasm/writer.cpp: メタデータストリームを走査する際のループインデックス型を符号付きから符号なし16ビット整数に変更し、型の安全性を向上させました。
  • src/coreclr/ilasm/grammar_after.cpp: SymW関数でのWCHAR*ポインタのアライメント問題を修正。memcpy経由での読み取りを採用し、アライメント制約の追加・奇数バイトアドレスの検証を実装しました。
  • src/coreclr/ilasm/asmparse.h: Unicode解析ヘルパーのアライメント処理を調整。

パフォーマンスへの影響

影響なし

関連Issue

#125152

その他

  • 本修正は静的解析器(CodeQL)の警告対応であり、セキュリティ脆弱性の直接的な修正ではありません
  • MapViewOfFileを指すポインターの不正なキャスト(CHAR*→WCHAR*)は解析器の観点では安全ですが、アライメント制約と確認処理を追加することで警告を抑止しました
  • 関数ポインタ経由での呼び出しに対応するため、型の再定義ではなく明示的な警告抑止と検証ロジックを採用しています

#125096 [release/8.0-staging] Update dependencies from dotnet/runtime-assets

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年03月03日 02:02:36(UTC)
  • マージ日時: 2026年03月16日 23:10:51(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

dotnet/runtime-assets リポジトリの依存関係を更新するPRです。release/8.0-staging ブランチにおいて、複数のテストデータとランタイム関連パッケージをバージョン 8.0.0-beta.25625.3 から 8.0.0-beta.26153.1 に更新しています。

変更内容

  • eng/Version.Details.xml: 依存関係の詳細情報を28行更新(追加28行、削除28行)
  • eng/Versions.props: バージョン定義を14行更新(追加14行、削除14行)

更新されたパッケージ:

  • Microsoft.DotNet.CilStrip.Sources
  • System.ComponentModel.TypeConverter.TestData
  • System.Data.Common.TestData
  • System.Drawing.Common.TestData
  • System.Formats.Tar.TestData
  • System.IO.Compression.TestData
  • System.IO.Packaging.TestData
  • System.Net.TestData
  • System.Private.Runtime.UnicodeData
  • System.Runtime.Numerics.TestData
  • System.Runtime.TimeZoneData
  • System.Security.Cryptography.X509Certificates.TestData
  • System.Text.RegularExpressions.TestData
  • System.Windows.Extensions.TestData

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • このPRは dotnet-maestro[bot] による自動化された依存関係更新です
  • ビルドID: 20260303.1(2026年3月3日 UTC)
  • dotnet/runtime-assets のコミット: 5d4912b6997bc8f15c9d75f0ec51cfd22295ef90

#125095 [release/8.0-staging] Update dependencies from dotnet/icu

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年03月03日 02:02:33(UTC)
  • マージ日時: 2026年03月16日 23:17:46(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

dotnet/icu リポジトリの依存関係を更新するPRです。Microsoft.NETCore.Runtime.ICU.Transport パッケージをバージョン 8.0.0-rtm.25625.2 から 8.0.0-rtm.26152.3 に更新しています。これは .NET 8.0 リリース ブランチ向けの自動依存関係更新です。

変更内容

  • eng/Version.Details.xml: Microsoft.NETCore.Runtime.ICU.Transport の参照バージョンを更新(8.0.0-rtm.25625.2 → 8.0.0-rtm.26152.3)
  • eng/Versions.props: 対応するバージョン情報を更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 自動化ツール(dotnet-maestro[bot])により実行された依存関係更新
  • dotnet/icu リポジトリの build 304028 に基づく(2026年3月2日時点)
  • dotnet/release/8.0 ブランチからの更新

#124965 Include propertyName in KeyNotFoundException thrown by JsonElement.GetProperty

  • 作成者: @Copilot
  • 作成日時: 2026年02月27日 12:39:21(UTC)
  • マージ日時: 2026年03月16日 11:17:59(UTC)
  • ラベル: area-System.Text.Json

概要

JsonElement.GetPropertyKeyNotFoundException をスロー時に、プロパティ名を例外メッセージに含めるように改善しました。チェーンメソッド呼び出しで失敗時に、どのプロパティが原因かを特定できるようになります。

// Before: メッセージにプロパティ名がない
// The given key was not present in the dictionary.

// After: プロパティ名が含まれる
// The given key 'dateRange' was not present in the dictionary.

変更内容

  • JsonElement.cs: 3つの GetProperty オーバーロード(stringReadOnlySpan<char>ReadOnlySpan<byte>)すべてで、既存の Arg_KeyNotFoundWithKey リソース文字列を使用して例外メッセージにプロパティ名を含めるよう修正
    • string 版:プロパティ名をそのまま使用
    • ReadOnlySpan<char> 版:.ToString() で変換
    • ReadOnlySpan<byte> 版:Encoding.UTF8.GetString でデコード
  • JsonDocumentTests.cs: TryGetProperty_NoProperty テストを更新し、3つのオーバーロード全体で例外メッセージにプロパティ名が含まれることをアサート

パフォーマンスへの影響

影響なし(例外スロー時のみメッセージ生成)

関連Issue

#124956

その他

公開APIの例外メッセージ改善のため、破壊的変更なし。診断性向上による改善。


#124801 Decouple ILC from ManagedAssemblyToLink

  • 作成者: @Copilot
  • 作成日時: 2026年02月24日 16:58:36(UTC)
  • マージ日時: 2026年03月16日 18:12:50(UTC)
  • ラベル: linkable-framework area-Tools-ILLink

概要

NativeAOTのILLink準備処理(_ComputeManagedAssemblyForILLink)がComputeIlcCompileInputsの副作用に依存していた結合関係を解除します。@(ManagedBinary)に依存するのではなく、@(IntermediateAssembly)を使用することで、ILLinkの準備フェーズがComputeIlcCompileInputsの実行順序に依存しなくなり、インクリメンタルビルド時の問題を解決します。

変更内容

  • Microsoft.NET.ILLink.targets: 新しい_PrepareTrimConfigurationターゲットを導入し、トリミング設定を一元化。_ComputeManagedAssemblyToLinkがこのターゲットに依存するよう変更
  • Microsoft.NETCore.Native.targets: _ComputeManagedAssemblyForILLinkの実装を更新。@(ManagedBinary)から@(IntermediateAssembly)に切り替え。PrepareForILLinkへの依存関係を削除
  • Microsoft.NETCore.Native.Publish.targets: ILLink周辺のターゲット実行順序を再編成。ILCの管理入力をResolvedFileToPublishPostprocessAssembly=true)経由で計算
  • ComputeManagedAssembliesToCompileToNative.cs: ランタイムパックファイルと衛星アセンブリの処理に焦点を当てるよう出力ロジックを簡潔化

パフォーマンスへの影響

影響なし

関連Issue

#124800

その他

この変更により、RunILLink=trueを設定するカスタムパイプライン(例:.NET for Androidなど)が、PrepareForILLinkILLinkComputeIlcCompileInputsより前に実行することが可能になります。これまでは逆順に依存していたため、インクリメンタルビルド時にプロジェクトアセンブリへの変更がILLinkに検出されず、トリミングがスキップされていました。


#124777 [release/8.0] Update dependencies from dotnet/cecil

  • 作成者: @dotnet-maestro[bot]
  • 作成日時: 2026年02月24日 02:01:58(UTC)
  • マージ日時: 2026年03月16日 23:22:54(UTC)
  • ラベル: Servicing-approved area-codeflow

概要

dotnet/cecilの依存パッケージを更新するPull Requestです。Microsoft.DotNet.Cecilをバージョン0.11.4-alpha.25614.2から0.11.4-alpha.26158.1に更新しています。

変更内容

  • eng/Version.Details.xml: Microsoft.DotNet.Cecilのバージョン情報を更新(+2/-2行)
  • eng/Versions.props: バージョン定義を更新(+1/-1行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはdotnet-maestro[bot]による自動化された依存関係更新です。release/8.0ブランチに対する更新となります。


#124728 Use PF_LINK on SunOS

  • 作成者: @gwr
  • 作成日時: 2026年02月22日 16:38:14(UTC)
  • マージ日時: 2026年03月16日 10:58:04(UTC)
  • ラベル: area-System.Net.Sockets os-SunOS community-contribution

概要

SunOS(Illumos)プラットフォームでのネットワーキング実装を改善するPR。SunOSはAF_LINKAF_PACKETの両方を定義していますが、AF_LINKを優先することで、システムプライベートヘッダーへのアクセスが不要になります。これにより、クロスコンパイル時のヘッダーコピー処理が簡略化されます。

変更内容

  • pal_interfaceaddresses.c: AF_LINKに関連するプラットフォーム固有の実装追加(25行)
  • pal_maphardwaretype.c: SunOS向けのハードウェアタイプマッピング実装追加(7行)
  • pal_networking.c: AF_LINKベースのネットワーキング処理実装(20行)
  • pal_networking.h: プリプロセッサマクロ定義追加(1行)

これらの変更は、SunOS/Illumos上でのSystem.Nativeライブラリのネットワーク機能実装をAF_PACKETからAF_LINKに切り替えるものです。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更は内部実装(ネイティブPAL層)の修正であり、公開APIには影響ありません。SunOS/Illumos環境でのビルド構成を簡素化する目的の変更です。


#124611 NativeAOT: Use lib prefix by default on Unix for native library outputs

  • 作成者: @Copilot
  • 作成日時: 2026年02月19日 18:38:08(UTC)
  • マージ日時: 2026年03月16日 19:01:59(UTC)
  • ラベル: breaking-change area-NativeAOT-coreclr

概要

NativeAOT で Unix プラットフォーム上のネイティブライブラリ出力にデフォルトで lib プレフィックス(例:libfoo.solibfoo.dyliblibfoo.a)を適用するようにしました。従来は内部プロパティ _UseNativeLibPrefix を明示的に設定する必要がありました。公開プロパティ UseNativeLibPrefix で無効化できます。

<!-- オプトアウト設定 -->
<UseNativeLibPrefix>false</UseNativeLibPrefix>

変更内容

  • Microsoft.NETCore.Native.targets: _UseNativeLibPrefix == 'true' から UseNativeLibPrefix != 'false' に変更、デフォルトで Windows 以外の非実行形式出力に有効
  • Microsoft.NETCore.Native.Publish.targets: シンボルファイルパス(ソース/ターゲット/相対パス)すべてに $(NativeBinaryPrefix) を含める
  • Microsoft.NETCore.Native.Unix.targets: Apple プラットフォームの SharedLibraryInstallName$(NativeBinaryPrefix) を含める
  • native-library.targets: strip パスと入出力参照に $(NativeBinaryPrefix) を含める
  • tests.android.targets: 冗長となった _UseNativeLibPrefix 設定を削除
  • 既存テストプロジェクト(SharedLibrary、CustomMainWithStubExe、mscordaccore_universal)では新しいデフォルト動作から オプトアウト

パフォーマンスへの影響

影響なし

関連Issue

#124610

その他

  • MSBuild プロパティの変更のみで、公開 API サーフェスへの変更なし
  • 破壊的変更:Unix 上の既存 NativeAOT ライブラリが lib プレフィックスで出力されるようになるため、プレフィックスなしを期待するプロジェクトは UseNativeLibPrefix=false で対応が必要
  • Android NativeAOT テスト基盤は既存動作から変更なし

#124482 Fix UdpClient.EnableBroadcast not preventing broadcast sends

  • 作成者: @matantsach
  • 作成日時: 2026年02月16日 21:34:41(UTC)
  • マージ日時: 2026年03月16日 21:48:42(UTC)
  • ラベル: area-System.Net.Sockets community-contribution

概要

UdpClient.CheckForBroadcast()がユーザーの明示的な設定を無視してEnableBroadcast = falseの場合でもブロードキャスト送信時に自動的にソケットオプションを有効化していた問題を修正します。修正後は、ユーザーがEnableBroadcastを明示的に設定した場合はその選択を尊重し、設定していない場合は従来通りの自動有効化動作を保つ後方互換的な実装です。

変更内容

  • UDPClient.cs: _isBroadcastSetByUserフィールドを追加してユーザーによる明示的なEnableBroadcast設定の有無を追跡
  • UDPClient.cs: CheckForBroadcast()メソッドを修正し、ユーザーが明示的に設定した場合は自動有効化をスキップ
  • UdpClientTest.cs: 3つのテストケースを追加
    • EnableBroadcast_ExplicitlyDisabled_NotAutoEnabled: 明示的無効化時の自動有効化防止を検証
    • EnableBroadcast_ExplicitlyEnabledThenDisabled_NotAutoEnabled: 有効→無効の切り替え時の動作を検証
    • EnableBroadcast_NotExplicitlySet_AutoEnabled: ユーザー未設定時の後方互換性を検証

パフォーマンスへの影響

影響なし

関連Issue

#118055

その他

  • 実装上の注記:既存の_isBroadcastフラグと同様に、Clientプロパティでソケットが置き換わった際に_isBroadcastSetByUserフラグはリセットされない設計となっており、一貫性を保つための仕様です。ソケット置き換え時の状態リセットについては将来の改善として検討対象に挙げられています。

#124428 Fix XmlReader ArgumentOutOfRangeException for malformed UTF-8 in XML …

  • 作成者: @lufen
  • 作成日時: 2026年02月14日 19:38:01(UTC)
  • マージ日時: 2026年03月16日 01:57:01(UTC)
  • ラベル: area-System.Xml community-contribution

概要

XmlReader で UTF-8 が不正な XML 宣言を処理する際の ArgumentOutOfRangeException を修正しました。SafeAsciiDecoder 使用時の UnDecodeChars() メソッドにおいて、非ASCII文字(例:バイト0xBFから生成されるU+00BF)が UTF-8 では2バイト以上になることを考慮せず、bytePos が bytesUsed を超過してしまう問題を解決しました。修正後は、SafeAsciiDecoder を検出して charPos を直接利用し、ターゲットエンコーディングのバイト数が一致することを検証。不一致の場合は XmlExceptionXml_InvalidCharInThisEncoding で投げ、不正なバイトを ParsingState を破損させる前に検出します。

変更内容

  • XmlTextReaderImpl.cs: SafeAsciiDecoder での不正なバイト処理を修正。UnDecodeChars() メソッドで SafeAsciiDecoder を検出し、charPos の直接利用とバイト数検証ロジックを追加
  • ReaderEncodingTests.cs: UTF-8 が不正な XML 宣言を含むテストケースを新規追加(41行追加)

パフォーマンスへの影響

影響なし

関連Issue

#113061

その他

この修正は System.Private.Xml ライブラリの内部実装に関わるもので、XML 宣言内の不正な UTF-8 シーケンスが適切に検出・報告されるようになります。既存の公開API に対する破壊的変更はありません。


目次