Pull Request on 2026年03月13日

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

注意点

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



#125515 JIT: Bump JIT-EE GUID after removal of hardware intrinsics

  • 作成者: @jakobbotsch
  • 作成日時: 2026年03月13日 08:42:44(UTC)
  • マージ日時: 2026年03月13日 13:12:14(UTC)
  • ラベル: area-CodeGen-coreclr

概要

PR #124033のハードウェアイントリンシック削除に伴うJIT-EE GUID(JIT/EE インターフェースバージョン)の更新です。JIT CI環境で、JITと前バージョンのBCL/SPMI collectionsとの互換性チェックが失敗していたため、JITEEVersionIdentifierを新しいGUID値にバンプすることで互換性検証をリセットし、JIT CIのブロッキングを解除します。

変更内容

  • src/coreclr/inc/jiteeversionguid.h:JIT/EE インターフェースバージョン識別子(JITEEVersionIdentifier)を新しいGUID値に更新
    • 5行削除、5行追加(合計10行変更)

パフォーマンスへの影響

影響なし

関連Issue

#124033(ハードウェアイントリンシック削除)

その他

  • JIT/EE GUID値の変更は、JITコンパイラとランタイム間のインターフェース互換性チェック用の内部バージョニング機構です
  • この変更は、JIT CIにおけるクロスコンポーネント版マッチング検証を再度有効にするための純粋なバージョン管理更新です
  • ユーザーコードへの直接的な影響はありません

#125503 [tvOS] Skip symlink and named pipe tests that fail on iOS/tvOS

  • 作成者: @Copilot
  • 作成日時: 2026年03月12日 16:36:48(UTC)
  • マージ日時: 2026年03月13日 12:17:31(UTC)
  • ラベル: area-System.IO

概要

tvOSおよびiOSでシンボリックリンク作成と名前付きパイプ(mkfifo)がサポートされていないため、これらのテストを条件付きでスキップするように修正します。tvOS/arm64 CI環境での継続的なテスト失敗を解決します。

変更内容

SafeFileHandle/GetFileType.Unix.cs:

  • GetFileType_SymbolicLink: [Fact] から [ConditionalFact(typeof(MountHelper), nameof(MountHelper.CanCreateSymbolicLinks))] に変更 — シンボリックリンク作成が不許可なプラットフォーム(tvOS、非特権環境)でテストをスキップ
  • GetFileType_NamedPipe: [SkipOnPlatform(TestPlatforms.iOS | TestPlatforms.tvOS, "iOS/tvOS blocks binding to UNIX sockets")] を追加 — 同一テストアセンブリの DevicesPipesAndSockets.cs における NamedPipe_ReadWrite の既存スキップパターンに統一

パフォーマンスへの影響

影響なし

関連Issue

#125490

その他

  • テストのみの修正で、プロダクトコードへの変更なし
  • MountHelper.CanCreateSymbolicLinks はシンボリックリンク関連テスト全体で既に広く使用されている確立されたパターン
  • tvOSでこれらのテストは過去一度も成功していないため、リグレッションはなし
  • 最小限のリスク — テスト変更のみで、プラットフォーム固有の既知制限に対応

#125502 Remove redundant NULL check for pDir in ClrDataAccess::GetMetaDataFileInfoFromPEFile

  • 作成者: @Copilot
  • 作成日時: 2026年03月12日 16:31:03(UTC)
  • マージ日時: 2026年03月13日 06:13:21(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

ClrDataAccess::GetMetaDataFileInfoFromPEFileのデッドコードを削除するPRです。pDirNULLで初期化された直後にif (pDir == NULL || pDir->Size == 0)でチェックされており、常に真となるため、このチェック全体が不要でした。SVACE静的解析ツールで検出されました。

変更内容

  • src/coreclr/debug/daccess/daccess.cpp
    • 未使用のIMAGE_DATA_DIRECTORY *pDirローカル変数を削除
    • 常に真となるif (pDir == NULL || pDir->Size == 0)条件を削除し、ロジックをフラット化
    • pDir->Sizelayout->GetCorHeader()->MetaData.Sizeにインライン化
    • 実装の簡潔化により、mdImage取得後に直接MetaData.Sizeを参照するように変更

パフォーマンスへの影響

影響なし。デッドコードの削除のため、セマンティック動作の変化はありません。

関連Issue

#125477

その他

  • 変更は内部実装(daccess - Debug Access Component)に限定されており、公開APIへの影響はありません
  • 破壊的変更なし
  • 生成コード行数:変更前+12/-17

#125488 Add curl retry flags to wasi-sdk Linux download

  • 作成者: @steveisok
  • 作成日時: 2026年03月12日 12:21:57(UTC)
  • マージ日時: 2026年03月13日 16:46:04(UTC)
  • ラベル: area-Infrastructure

概要

Linux/macOS環境におけるWASI SDK ダウンロードの信頼性向上を目的とした変更です。従来、Linux の curl コマンドには再試行ロジックがなく、一時的なGitHubダウンロード失敗(レート制限、ネットワーク問題、不完全な転送)により暗号的な tar エラーでビルドが失敗していました。Windows用の download-wasi-sdk.ps1 と同様に、再試行機能を追加して堅牢性を高めます。

curl --silent --show-error --fail --retry 3 --retry-delay 5 -L -o wasi-sdk-25.0.tar.gz <url>

変更内容

  • eng/AcquireWasiSdk.targets: Linux/macOS環境での curl コマンドに以下のフラグを追加
    • --show-error: エラー情報を表示
    • --fail: HTTPエラー時に失敗扱いにする
    • --retry 3: 最大3回の再試行
    • --retry-delay 5: 再試行間に5秒の待機

パフォーマンスへの影響

影響なし(一時的な失敗時のみ再試行によるレイテンシが追加される)

関連Issue

なし

その他

Windows用ダウンロードスクリプト(最大8回再試行)との挙動統一を図る変更。実際のビルド失敗(build 2924549)の後、コード変更なしの再実行で成功しており、一時的なダウンロード問題の発生が確認されています。


#125470 Enable the crypto shim to build against OpenSSL 4.0-alpha1 headers

  • 作成者: @bartonjs
  • 作成日時: 2026年03月12日 01:27:38(UTC)
  • マージ日時: 2026年03月13日 22:36:15(UTC)
  • ラベル: area-System.Security

概要

OpenSSL 4.0-alpha1対応のため、ネイティブ暗号シムをビルド可能にする変更です。主な課題はASN1_STRING型の不透明化と、APIの戻り値にconstポインタが増えたこと。ASN1_STRINGフィールドへの直接アクセスをアクセッサAPI(ASN1_STRING_lengthASN1_STRING_get0_data)に置き換え、const戻り値に対応するためOSSL4CONSTマクロを導入しています。

変更内容

  • opensslshim.h: OpenSSL 4版管理定数(OPENSSL_VERSION_4_0_RTM)と条件付きOSSL4CONSTマクロを追加。OpenSSL 4ではエンジンヘッダを除外
  • osslcompat_40.h: OpenSSL 4互換性ヘッダを新規作成
  • openssl.c: ASN1_STRING直接フィールドアクセスをアクセッサAPI呼び出しに変更。ローカル変数をconst化対応
  • pal_x509.h/pal_x509.c: シム署名をconstポインタ戻り値に更新
  • pal_ssl.c: 自己署名証明書作成時にX509名ポインタのミューテーション回避のため名前を複製
  • verify-so.sh: スクリプト調整

すべて内部実装(System.Security.Cryptographyのネイティブシム層)の変更で、公開APIへの互換性への影響はありません。

パフォーマンスへの影響

影響なし(互換性向上のための変更であり、パフォーマンス関連の改善や低下なし)

関連Issue

なし

その他

コード内で複数のレビュアーからの指摘あり。Copilotのレビューでは、一部のシム関数のパラメータもconst対応が必要との指摘、およびASN1_STRING_get0_dataがNULLを返す可能性がある点でのmemcpy_sの安全性確認の指摘があります。


#125467 [manual] Merge release/9.0-staging to release/9.0

  • 作成者: @jozkee
  • 作成日時: 2026年03月12日 00:00:25(UTC)
  • マージ日時: 2026年03月13日 16:12:05(UTC)
  • ラベル: NO-SQUASH Servicing-approved linkable-framework area-codeflow

概要

release/9.0-stagingブランチからrelease/9.0ブランチへのマージPRです。ツールチェーン/依存関係のバージョン更新、COSE暗号化メッセージのデコーディング・署名機能の改善、ランタイムおよびテストの調整が含まれています。

変更内容

依存関係・ツールチェーン更新

  • global.json: Arcade/Helix/SharedFramework SDKバージョン更新
  • eng/Versions.props: Roslyn、Arcade、xharness、Cecil、emsdk、LLVM/JITツール等の複数の依存関係バージョン更新
  • eng/Version.Details.xml: ピン留めされた依存関係バージョンとSHA更新
  • eng/SourceBuildPrebuiltBaseline.xml: source-buildベースラインにRoslyn依存パッケージの無視パターン追加
  • NuGet.config: emsdk フィードエントリをコミットベースキーに更新
  • .config/dotnet-tools.json: xharness CLIツールバージョン更新
  • eng/common/core-templates/job/source-build.yml: source-buildプール イメージ名更新

COSE暗号化機能改善

  • System.Net.WebSockets: WebSocket閉鎖時の例外処理改善(Strings.resx、ManagedWebSocket.cs)
  • WebSocketテスト追加

ランタイム・テスト調整

  • sgen-cardtable.c: カード表スキャン開始アドレスをカード境界に整列
  • System.Text.RegularExpressions: トップレベルステートメント シナリオの期待値文字列更新
  • System.Runtime.InteropServices: テストベースライン内の余分な空行削除(複数ファイル)
  • illink: コンパイラ生成コード動作の更新に対応したUnexpectedWarningアノテーション有効化、Roslyンパッケージプロパティ更新

パフォーマンスへの影響

カード表スキャンアドレスの整列により、ガベージコレクション中のスキャン処理が最適化される可能性がありますが、具体的な数値は提供されていません。

関連Issue

なし

その他

Copilotコードレビューで低信頼度のコメント1件あり: CoseMessageTests.DecodeSign1.cs内で「detached + indefinite length」テストケースが誤った定義を使用している可能性が指摘されています。


#125466 [manual] Merge release/8.0-staging to release/8.0

  • 作成者: @jozkee
  • 作成日時: 2026年03月11日 23:58:09(UTC)
  • マージ日時: 2026年03月13日 16:12:27(UTC)
  • ラベル: NO-SQUASH Servicing-approved area-codeflow

概要

release/8.0-stagingからrelease/8.0への手動マージです。ビルドインフラストラクチャとツールセットの更新(Arcade、SDK pins、パイプラインプール/イメージ、内部フィード エンドポイント)、およびmacOSでのクラッシュに関するテスト隔離が含まれます。

変更内容

  • SDK/ツール版版: global.jsonでピン留めされた.NET SDKおよびmsbuild-sdksバージョンを更新
  • ビルドインフラ更新: VS2019からVS2022へのプールイメージアップグレード、Azure Linux イメージ更新、内部ランタイム フィード エンドポイントをhttps://ci.dot.netに統一
  • PowerShell強化: Invoke-WebRequest-UseBasicParsingフラグを追加(eng/common/tools.ps1、post-build関連、Maestro API、nuget.exeダウンロード)、VS要件解析の堅牢化
  • テスト隔離: macOSでのUnixプロキシ認証情報テストクラッシュに対応し、ActiveIssueを追加(HttpClientHandlerTest.DefaultProxyCredentials.cs)
  • その他: Arcade/Helixおよびhotreload-utils依存関係バージョン/SHAの更新、Source Index jobの条件をmain参照のみに限定、内部Linux イメージを1es-mariner-2からbuild.azurelinux.3.amd64に更新、WebSocketsと暗号化関連リソースの更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このマージは主にビルドインフラとツール依存関係の定期的なアップデートであり、機能面への直接的な変更は含まれません。PowerShellスクリプトの-UseBasicParsing追加は、TLS設定の互換性向上を目的とした標準的な強化措置です。


#125403 Fix Tensor stride computation for single-element (length <= 1) tensors

  • 作成者: @Copilot
  • 作成日時: 2026年03月10日 20:31:43(UTC)
  • マージ日時: 2026年03月13日 01:37:52(UTC)
  • ラベル: area-System.Numerics.Tensors

概要

単一要素(length <= 1)のテンソルにおいてstrideの計算が誤っていた問題を修正。TensorShape.Createの2つのショートカットオーバーロードが、stride 0を使用すべき場合に hardcode された strides: [1] を使用していたため、単一要素テンソルの作成と操作が失敗していました。

// 修正前:stride = 1(誤り)
var src = Tensor.Create([1.0]);
var dst = Tensor.CreateFromShapeUninitialized<double>(src.Lengths);
src.CopyTo(dst);  // 例外発生

// 修正後:stride = 0(正常)で動作

変更内容

  • TensorShape.csTensorShape.Create<T>(T[]? array)TensorShape.Create<T>(ref readonly T, nint, bool) を修正。linearLength <= 1 の場合、stride を 0 に設定し IsBroadcast フラグを追加。Tensor.Create(T[]), TensorSpan<T>(T[]), ReadOnlyTensorSpan<T>(T[]), TensorSpan<T>(Span<T>), ReadOnlyTensorSpan<T>(ReadOnlySpan<T>) に影響。
  • TensorSpanTests.cs / ReadOnlyTensorSpanTests.cs — 既存テストを修正。空配列でのstride期待値を 1 から 0 に変更。
  • TensorTests.cs — 新規リグレッション テスト TensorCreateSingleElementTests を追加。Create, CreateFromShape, CreateFromShapeUninitialized(明示的strides 有無)、CopyTo、span ベースの構築をカバー。

パフォーマンスへの影響

影響なし

関連Issue

#125366

その他

この修正は内部実装(TensorShape)の修正で、公開API の仕様が変わります。stride の自動計算ロジックがようやく shortcut パスでも正しく適用されるようになり、単一要素テンソルの互換性が確保されます。


#125373 [wasm] Restore net472 multi-targeting for WasmAppBuilder; fix Type.IsFunctionPointer compile break

  • 作成者: @Copilot
  • 作成日時: 2026年03月10日 11:39:37(UTC)
  • マージ日時: 2026年03月13日 00:09:33(UTC)
  • ラベル: area-Build-mono

概要

WasmAppBuilder タスク プロジェクトの net472 マルチ ターゲットが PR #122007 で誤って削除されたことを復元し、CoreCLR PInvoke ジェネレータで .NET 7+ API の Type.IsFunctionPointer を直接使用することによるコンパイル エラーを修正します。Visual Studio などのフルフレームワーク MSBuild ホストでのビルドが必要です。

変更内容

  • WasmAppBuilder.csproj — マルチ ターゲットを復元(<TargetFrameworks>$(NetCoreAppToolCurrent);$(NetFrameworkToolCurrent))し、以下を復元:

    • <Nullable>enable</Nullable> を復元
    • フレームワークごとの NoWarn 条件(.NETFramework では CA1050/CS8604/CS8602、非 .NETFramework では CA1050/CA1850
    • .NETFramework コンパイル インクルード(IsExternalInit.csNullableAttributes.cs)を復元
    • Microsoft.Build.Tasks.Core パッケージ参照をフレームワークごとに分割(IsTargetFrameworkCompatible ガード付き)
    • GetFilesToPackage ターゲットを明示的なパス付きで復元
    • UsingTask$(OutputPath)$(NetCoreAppToolCurrent)\WasmAppBuilder.dll に指定
  • coreclr/PInvokeTableGenerator.csType.IsFunctionPointer の直接使用をリフレクションベースのヘルパーに置き換え(mono/PInvokeTableGenerator.cs の既存ヘルパーと同じパターン):

    public static bool IsFunctionPointer(Type type)
    {
        object? bIsFunctionPointer = type.GetType().GetProperty("IsFunctionPointer")?.GetValue(type);
        return (bIsFunctionPointer is bool b) && b;
    }
    

    PickCTypeNameForUnknownTypeIsBlittableUncached で使用

  • coreclr/SignatureMapper.cst.IsFunctionPointerPInvokeTableGenerator.IsFunctionPointer(t) で置き換え

パフォーマンスへの影響

影響なし

関連Issue

#122007

その他

リフレクションを使用したヘルパーにより、net472 以上のランタイムでも動作は変わりません(リフレクションは同じプロパティを解決します)。公開 API の Type.IsFunctionPointer を避けることで、下位フレームワーク版での互換性を確保しています。


#125365 Simplify ILLink/ILC root assembly handling: TrimmerRootAssembly assembly names only

  • 作成者: @Copilot
  • 作成日時: 2026年03月10日 05:26:50(UTC)
  • マージ日時: 2026年03月13日 16:41:15(UTC)
  • ラベル: area-AssemblyLoader-coreclr linkable-framework

概要

ILLink/ILC のルートアセンブリ指定をファイルパスからアセンブリ名のみに統一し、インクリメンタルビルドのギャップを解消します。従来、TrimmerRootAssembly と illink の -a フラグはファイルパスを受け入れていたため、ビルド入力として宣言されていないファイルをリンカーが読み込む可能性がありました。本変更により、MSBuild ターゲットと ILLink/ILC の動作を一貫させ、アセンブリ名(拡張子なし)のみを使用するようにします。

変更内容

ILLink コアロジック(内部実装)

  • Driver.cs: -a フラグの File.Exists() 事前チェック削除、アセンブリ名のみ受け入れ
  • RootAssemblyInputStep.cs: ファイルパスベースの読み込み処理を削除、LoadAssemblyFile()LoadAssemblyByName() に改名、Context.TryResolve() による解決に統一

MSBuild ターゲット(公開API/統合)

  • Microsoft.NET.ILLink.targets: TrimmerRootAssembly をフルパスではなく %(Filename) (拡張子なし)で設定
  • Microsoft.NETCore.Native.targets: パス→名前変換の複雑な二段階パターン削除、TrimmerRootAssembly を名前として直接使用
  • BrowserWasmApp.targetsAppleBuild.LocalBuild.targetseng/illink.targets: アセンブリ名(拡張子なし)を使用するよう条件変更
  • sfx-finish.projoob-trim.proj: AssemblyPaths(パス)と RootAssemblyNames(名前)を分離

テストインフラ(内部実装)

  • TrimmingArgumentBuilder.cs: -a 引数作成時に Path.GetFileNameWithoutExtension() で拡張子削除
  • TestCaseMetadataProvider.cs: 相対パス展開を -a から -reference(検索ディレクトリ)に移行
  • 21 のテストケースを更新、[SetupLinkerArgument("-a", ...)] でアセンブリ名(拡張子なし)に統一
  • RootLibraryVisibleForwardersWithoutReference.cs: 解決可能にするため -reference 引数を明示的に追加

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 破壊的変更あり: TrimmerRootAssembly にファイルパスを指定していたユーザー(非公開API)はアセンブリ名に変更が必要
  • リスク低: 変更は ILLink/ILC 統合とテストインフラに限定され、アセンブリ解決ロジック自体は不変。ILC が既に必要としていた形式に統一
  • テスト結果: 377 個の ILLink テストケース(Mono.Linker.Tests)と 108 個の ILLink.Tasks.Tests すべてが成功

#125253 Fix RhpThrowImpl on ARM32

  • 作成者: @eduardo-vp
  • 作成日時: 2026年03月06日 01:05:42(UTC)
  • マージ日時: 2026年03月13日 02:15:26(UTC)
  • ラベル: area-System.Diagnostics

概要

ARM32プラットフォームのRhpThrowImpl関数で、例外スロー処理の際に呼び出し元保存レジスタの保存が不完全だった問題を修正しました。INLINE_GETTHREAD呼び出し前にr0だけでなくr2(例外種別を格納)も保存する必要があります。併せてARM上のスタックトレーステスト(ToString_Async)の隔離を解除しました。

変更内容

  • src/coreclr/nativeaot/Runtime/arm/ExceptionHandling.S: RhpThrowImplでレジスタr2の保存処理を追加(+3/-1)
  • src/libraries/System.Diagnostics.StackTrace/tests/StackTraceTests.cs: ToString_AsyncテストからARM固有の[ActiveIssue]属性を削除(+0/-1)

パフォーマンスへの影響

影響なし

関連Issue

#123979

その他

本修正はNativeAOT(ARM32)ランタイムの例外ハンドリング実装に関わる内部コードの修正です。破壊的変更なし。


#125161 [cDAC] Implement GetCurrentExceptionState on IXCLRDataTask

  • 作成者: @barosiak
  • 作成日時: 2026年03月04日 01:43:59(UTC)
  • マージ日時: 2026年03月13日 22:35:51(UTC)
  • ラベル: area-Diagnostics-coreclr

概要

cDAC(Common Data Access Component)のIXCLRDataTaskGetCurrentExceptionStateメソッドを実装し、IXCLRDataExceptionState COM クラスであるClrDataExceptionStateを新規実装しました。Thread契約にGetCurrentExceptionHandleを追加して、アクティブな例外ハンドルを特定し、GetFlagsGetPreviousGetStringGetTaskRequestなどのメソッドをネイティブ cDAC実装で提供します。レガシーDAC実装との互換性検証も含まれています。

変更内容

  • 新規ファイル

    • ClrDataExceptionState.cs: IXCLRDataExceptionStateを実装する[GeneratedComClass]で、例外状態の取得メソッドを提供
    • ClrDataExceptionStateTests.cs: IXCLRDataExceptionState全メソッドの単体テスト(430行)
  • 修正ファイル

    • IThread.cs / Thread_1.cs: GetCurrentExceptionHandle(TargetPointer)をThread契約に追加
    • IException.cs / Exception_1.cs: GetNestedExceptionInfoを拡張してthrownObjectHandle出力パラメータを追加
    • ClrDataTask.cs: GetCurrentExceptionStateメソッド実装で、Thread/Exception契約を使用してCOM形式のClrDataExceptionStateをビルド・返却
    • SOSDacImpl.cs: 更新されたGetNestedExceptionInfoシグネチャへの対応
    • Exception.md / Thread.md: 契約ドキュメント更新
    • ThreadTests.cs: ネストされた例外、単一例外、例外なしシナリオをカバーするテスト追加(113行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 16個の新規単体テストが全て合格し、既存テストのリグレッションなし
  • #if DEBUG検証により、レガシーDAC実装に対する動作一致性確認が実装内に組み込まれている(互換性維持)
  • UEWatsonBucketTrackerBucketsはオプション/Windows専用として契約ドキュメントで明記

#125125 [HTTP] Stress fix for the new Windows VM

  • 作成者: @ManickaP
  • 作成日時: 2026年03月03日 14:56:39(UTC)
  • マージ日時: 2026年03月13日 09:08:23(UTC)
  • ラベル: area-Build-mono

概要

新しいWindows VM イメージの Docker コマンド仕様変更に対応するストレステスト修正。Dockerfile がビルドコンテキスト内に存在する必要があり、docker composedocker-compose に変更されたことに対応しています。

変更内容

  • eng/docker/build-docker-sdk.ps1: Docker SDK イメージビルドスクリプトの修正(+4/-7)
  • eng/pipelines/libraries/stress/http.yml: HTTP ストレステストパイプライン設定の更新(+3/-3)
  • eng/pipelines/libraries/stress/ssl.yml: SSL ストレステストパイプライン設定の更新(+1/-1)
  • src/libraries/Common/tests/System/Net/StressTests/run-docker-compose.ps1: Docker Compose 実行スクリプトの修正(+4/-4)

主な変更はビルドコンテキストの対応と docker-compose コマンドへの統一。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • Copilot による概要ではPowerShell スクリプトトレース有効化が言及されていますが、作成者の説明ではビルドコンテキストと Docker コマンド仕様の変更が主な対応内容とされています
  • Windows VM イメージの更新に伴う互換性対応

#125122 Support reload in ChainedConfigurationSource

  • 作成者: @martincostello
  • 作成日時: 2026年03月03日 14:49:49(UTC)
  • マージ日時: 2026年03月13日 10:30:25(UTC)
  • ラベル: area-Extensions-Configuration community-contribution

概要

ChainedConfigurationSourceでリロード機能のサポートを追加しました。複数の設定ソースを鎖状に組み合わせる場合、基盤となる設定ソースの変更を検出して自動的に設定を再読み込みできるようになります。

変更内容

  • ChainedConfigurationProvider.cs: リロード機能の実装を追加(+19行)
    • チェーン内の設定ソースの変更を監視し、変更があればリロードをトリガーする実装
  • ChainedConfigurationProviderTests.cs: リロード機能の包括的なテストを追加(+123行)
    • チェーン内の複数ソースからのリロード動作を検証するテストケース群

パフォーマンスへの影響

影響なし

関連Issue

#58683

その他

なし


#124904 [browser][coreCLR] Loading WebCIL - 2nd attempt

  • 作成者: @pavelsavara
  • 作成日時: 2026年02月26日 14:56:26(UTC)
  • マージ日時: 2026年03月13日 15:40:22(UTC)
  • ラベル: arch-wasm area-AssemblyLoader-coreclr os-browser

概要

CoreCLRランタイムがWebcilコンテナ形式をネイティブサポートするようになり、Browser/WASMビルドで.wasm形式のアセンブリを直接読み込めるようになりました。これまでMonoランタイムのみが対応していた機能で、CoreCLRでも同じレベルのサポートを実現します。

変更内容

  • WebcilDecoder実装webcildecoder.hwebcildecoder.cpp):Webcilコンテナ形式を読み込むスタンドアロンリーダーを新規実装。RVA/オフセット変換、CORヘッダ解決、メタデータアクセス、セクション検証、ILメソッド確認、デバッグディレクトリサポートに対応
  • PEImageLayout構造リファクタリングpeimagelayout.h/cpp/inl):継承から合成パターンに変更。PEDecoderWebcilDecoderImageFormat判別子で管理し、約160個の転送メソッドでいずれかのデコーダへディスパッチ
  • PEDecoder APIの分割pedecoder.h):PEImageLayoutで必要な公開メソッドは公開のまま、PE内部ヘルパー(GetHeadersGetDirectoryEntryなど)はfriend class PEImageLayoutのプライベートセクションに移動
  • cDAC対応Loader_1.csdatadescriptor.inc):PEImageLayoutFormatフィールドを追加、Webcilフォーマット検出時にセクションテーブルを直接読み込む
  • HasHeaders()抽象化HasNTHeaders()からHasHeaders()へ移行し、フォーマットに応じて動作を分岐(peimage.cpppeassembly.cppなど複数箇所)
  • ビルド設定変更WasmEnableWebcil=falseのオーバーライドを削除(WasmApp.InTree.propstests.browser.targets)、MSBuildプロパティ名を統一(WebCil*Webcil*
  • 機械型対応IMAGE_FILE_MACHINE_UNKNOWN(Webcilの機械型)をILのみのバリデーション時に受け入れるよう更新

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 互換性への影響:破壊的変更ではなく、既存のPEフォーマット処理と並行してWebcilサポートを追加するもの。ただし、PEDecoderの公開APIが変更されており、直接使用している外部コードは影響を受ける可能性がある
  • 内部実装の変更PEImageLayoutPEDecoderの継承から合成に変更されたため、キャスト依存のコードは修正が必要
  • デバッガ/診断ツール対応debugdebugger.cppPEDecoder*からPEImageLayout*に切り替え、フォーマット非依存なGetDirectoryEntryDataを使用

#124863 Propagate BackgroundService exceptions from the host

  • 作成者: @svick
  • 作成日時: 2026年02月25日 16:50:29(UTC)
  • マージ日時: 2026年03月13日 10:06:51(UTC)
  • ラベル: breaking-change area-Extensions-Hosting

概要

BackgroundServiceが例外で失敗しBackgroundServiceExceptionBehavior.StopHost(デフォルト)が設定されている場合、デフォルトホストのIHost.RunAsync()/StopAsync()から例外をスローするように変更しました。これにより、バックグラウンドサービスの失敗がホストレベルで適切に伝播され、終了コードに反映されるようになります。

変更内容

  • Host.cs: RunAsync()StopAsync()でバックグラウンドサービスの例外をキャッチして再スローする処理を追加
  • ApplicationLifetime.cs: ライフタイム管理の内部実装を整理
  • IApplicationLifetime.cs / IHostApplicationLifetime.cs: 公開APIの定義を調整
  • テスト: 従来のBackgroundServiceExceptionBehaviorTests.csを廃止し、新規にBackgroundServiceExceptionTests.cs(314行)とHostTests.csの例外伝播テストを追加

パフォーマンスへの影響

影響なし

関連Issue

#67146

その他

破壊的変更: バックグラウンドサービスで例外が発生した場合、これまではホストが成功の終了コード(0)で終了していましたが、今後は例外がスローされ0以外の終了コードになります。既存コードで例外スローを想定していない場合は対応が必要です。


#124326 Fix CallSiteFactoryResolvesIEnumerableOfOpenGenericServiceAfterResolvingClosedImplementation test for issue #57333

  • 作成者: @Copilot
  • 作成日時: 2026年02月12日 09:00:51(UTC)
  • マージ日時: 2026年03月13日 11:31:57(UTC)
  • ラベル: area-Extensions-DependencyInjection

概要

Issue #57333で報告された、閉じたジェネリック登録(IService<T> -> Impl)とオープンジェネリック登録(IService<> -> GenericImpl<>)を混合する際のGetServices<T>()の不一致な解決を検証するテストを修正しました。テスト自体にセットアップの問題があったもので、DI実装のバグではありません。

変更内容

  • CallSiteTests.cs: CallSiteFactoryResolvesIEnumerableOfOpenGenericServiceAfterResolvingClosedImplementationテストを修正
    • テスト型をIFakeOpenGenericService<int>からIFakeOpenGenericService<string>(参照型)に変更
    • FakeStringServiceクラスを追加してIFakeOpenGenericService<string>を実装
    • FakeOpenGenericService<TVal>の必須のコンストラクタパラメータを提供するため、descriptors.AddSingleton<string>("Foo")を登録
    • [ActiveIssue("https://github.com/dotnet/runtime/issues/57333")]属性を削除

パフォーマンスへの影響

影響なし

関連Issue

#57333

その他

このPRは実装コードの変更は含みません。テストのセットアップ問題の修正のみで、DI容器がオープンジェネリックとクローズドジェネリックの混合シナリオを正しく処理することを確認しています。


#123662 [release/8.0-staging] Deny unmasked frame receive for WebSocket Server

  • 作成者: @liveans
  • 作成日時: 2026年01月27日 10:30:19(UTC)
  • マージ日時: 2026年03月13日 01:43:35(UTC)
  • ラベル: Servicing-approved area-System.Net

概要

RFC 6455準拠を強化するため、WebSocketサーバーがマスク処理されていないフレーム受信を拒否するようにしました。非準拠クライアントからのマスク処理されていないフレームのみが影響を受け、準拠クライアントへの動作変更はありません。

変更内容

  • System.Net.WebSockets/src/System/Net/WebSockets/ManagedWebSocket.cs: マスク処理されていないフレームの受信を拒否するロジックを追加(+5行)
  • System.Net.WebSockets/src/Resources/Strings.resx: エラーメッセージ文字列を追加(+3行)
  • System.Net.WebSockets/tests/WebSocketTests.cs: マスク処理されていないフレームの拒否動作を検証するテストを追加(+15行)

変更範囲は内部実装(ManagedWebSocket)に限定されており、公開APIへの影響はありません。

パフォーマンスへの影響

影響なし

関連Issue

#123485(オリジナルPR)

その他

  • release/8.0-stagingへのバックポート
  • リスク評価:低(RFC非準拠クライアントのみが影響)
  • テスト:手動検証および自動テスト実施済み

#123661 [release/9.0-staging] Deny unmasked frame receive for WebSocket Server

  • 作成者: @github-actions[bot]
  • 作成日時: 2026年01月27日 10:01:34(UTC)
  • マージ日時: 2026年03月13日 00:30:51(UTC)
  • ラベル: Servicing-approved area-System.Net

概要

RFC 6455準拠性向上のため、WebSocketサーバーが非準拠クライアントから送信されるマスク済みでないフレーム(unmasked frames)の受信を拒否するようにしました。RFC 6455では、クライアント→サーバー通信のすべてのフレームにマスキングを要求しています。準拠したクライアントに対する動作変更はありません。

変更内容

  • System.Net.WebSockets/Resources/Strings.resx: エラーメッセージリソースを追加(3行追加)
  • System.Net.WebSockets/ManagedWebSocket.cs: マスク済みでないフレームの検証ロジックを追加(5行追加)
  • WebSocketTests.cs: マスク済みでないフレーム受信拒否の動作確認テストを追加(14行追加)

パフォーマンスへの影響

影響なし

関連Issue

#123485(本体変更のバックポート元)

その他

  • このPRはrelease/9.0-stagingブランチへのバックポート(#123485を基にしたもの)
  • リスク評価:低 - 変更はRFC非準拠のクライアントのみに影響
  • テスト実施:手動検証 + 自動テスト済み
  • リグレッションなし

目次