注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #127018 JIT: Fix loongarch64 Windows build
- #127009 Fix TimeZoneInfo.ConvertTime producing wrong results near DateTime.MinValue/MaxValue
- #127000 [release/8.0-staging] [QUIC] Update MsQuic
- #126999 [release/9.0-staging] [QUIC] Update MsQuic
- #126987 Add ProcessOutputLine struct and Process.ReadAllLinesAsync
- #126986 Revert "Bump serialize-javascript and @rollup/plugin-terser" #126217
- #126984 Fix AV in GetObjectFields when enumerating fields on dynamic Continuations
- #126965 Raise minimum CircularBufferBuckets capacity from 1 to 2
- #126962 Remove obsolete DacDbi APIs and simplify RCW cached type query path
- #126961 Update issue-triage area-label heuristics for assembly loading, host, and interop
- #126957 Apply mitigations to System.Security.Cryptography.Xml components
- #126945 [QUIC] Update MsQuic to 2.5.7
- #126942 Add Process.ReadAllTextAsync and ReadAllBytesAsync
- #126939 [release/10.0] JIT: Handle writes to promoted locals in
AliasSet::AddNode - #126938 [LoongArch64] Initialize emitter::getInsExecutionCharacteristics() to support perfscore.
- #126929 fix for largepages with agressive decommit logic
- #126881 Remove DomainAssembly and other multi-appdomain dead code
- #126824 [release/10.0] Fix native AOT outerloops
- #126817 [release/10.0] Fix Native AOT-incompatible reflection in CalendarTestBase
- #126815 [release/10.0] Fix native AOT outerloops
- #126772 [RyuJIT] Make the mis-sized struct return logic only apply to return values that are structs
- #126771 Add an in-memory LDAP server to power S.DS.Protocols tests
- #126704 CoreCLR: Add missing null guard
- #126622 [Runtime Async] Reuse ValueTaskSourceNotifier instance
- #126595 [cDAC] Implement SetJITCompilerFlags for cDAC
- #126568 [main] Update dependencies from dotnet/xharness
- #126519 ILLink: Don't preserve forwarder assemblies referenced by link-action root assemblies
- #126322 [release/8.0-staging] Update dependencies from dotnet/xharness
- #126091 Add low-cost instrumented version of RuntimeAsyncTask::DispatchContinuations reclaiming lost performance.
- #125809 Add ci-pipeline-monitor Copilot CLI skill
- #123145 Add span-based Deflate, ZLib and GZip encoder/decoder APIs
- #122649 Accelerate
Halfwith FP16 ISA - #122391 [release/10.0] [browser] Generate boot config with hash field instead of integrity
- #120769 Support EVP_MAC for HMAC
#127018 JIT: Fix loongarch64 Windows build
- 作成者: @jakobbotsch
- 作成日時: 2026年04月16日 17:32:03(UTC)
- マージ日時: 2026年04月16日 17:48:50(UTC)
- ラベル: area-CodeGen-coreclr
概要
#126938で導入されたLoongArch64 JIT パフォーマンススコア計算のWindows ビルド破損を修正します。insMemoryAccessKindに誤ったレイテンシ値が割り当てられていた問題を、正しいメモリアクセス種別の値に修正しました。
変更内容
- src/coreclr/jit/emitloongarch64.cpp
insMemoryAccessKindの不正な割り当てを修正(2箇所)PERFSCORE_LATENCY_RD_STACK(レイテンシ値)からPERFSCORE_MEMORY_READ(メモリアクセス種別値)に変更
パフォーマンスへの影響
影響なし(ビルド破損の修正のため、実行時パフォーマンスは変わりません)
関連Issue
その他
LoongArch64 JITコンパイラのPerf Score計算処理における型安全性の問題を解決しています。内部実装(JITコンパイラ)の修正で、公開APIへの影響はありません。
#127009 Fix TimeZoneInfo.ConvertTime producing wrong results near DateTime.MinValue/MaxValue
- 作成者: @tarekgh
- 作成日時: 2026年04月16日 16:00:54(UTC)
- マージ日時: 2026年04月16日 23:07:05(UTC)
- ラベル: area-System.DateTime
概要
TimeZoneInfo.ConvertTimeがDateTime.MinValue/DateTime.MaxValue近傍の日時を正のオフセット/負のオフセットの時間帯間で変換する際に誤った結果を返していた問題を修正しました。
根本原因は、中間のUTC値が負のティック数(DateTimeの範囲外)になる場合、SafeCreateDateTimeFromTicksがそれをDateTime.MinValue(ティック数=0)にクランプしていたため、その後に宛先オフセットを加算すると精度が失われていたことです。修正により、TryLocalToUtcが生のティック数を返すように変更し、ConvertTimeが中間段階のクランプを避けて最終結果を計算するようにしました。
変更内容
- TimeZoneInfo.Cache.cs:
TryLocalToUtcの戻り値を、クランプされたDateTimeから生のlong utcTicksに変更。オフセット参照テーブル検索時のみクランプされたUTCDateTimeを使用。 - TimeZoneInfo.cs:
ConvertTimeの実装を変更し、生のUTC ティック値から最終的なローカルティック値を計算(utcTicks + destOffset.Ticks)。 - TimeZoneInfoTests.cs: カスタム固定オフセット時間帯を使用して、
DateTime.MinValue近傍(正のオフセット)とDateTime.MaxValue近傍(負のオフセット)の7つの新しい回帰テストを追加。
パフォーマンスへの影響
ローカルベンチマークにより、パフォーマンス低下なし。
関連Issue
その他
全68,715件以上のSystem.Runtime.Testsがすべてパスし、失敗件数ゼロを確認済みです。修正は公開APITimeZoneInfo.ConvertTimeの動作に影響しますが、破壊的変更ではなく、誤った動作を正す修正です。
#127000 [release/8.0-staging] [QUIC] Update MsQuic
- 作成者: @ManickaP
- 作成日時: 2026年04月16日 12:18:15(UTC)
- マージ日時: 2026年04月16日 16:34:56(UTC)
- ラベル: Servicing-approved area-System.Net.Quic
概要
release/8.0-stagingブランチにおいて、System.Net.Quicが依存するWindows用MsQuic (SChannel) NuGetパッケージをバージョン2.4.16から2.4.18にマイナーバージョンアップします。本変更はdotnet/runtime#126945の同等パッチです。
変更内容
- eng/Versions.props:
MicrosoftNativeQuicMsQuicSchannelVersionを2.4.18に更新(1行追加、1行削除)
パフォーマンスへの影響
影響なし
関連Issue
#126945(親PR)
その他
- 顧客影響: 内部で検出
- リグレッション: なし
- リスク評価: 低(プロダクトコード変更なし、MsQuicライブラリのマイナーバージョンアップのみ)
- テスト: 標準CI
#126999 [release/9.0-staging] [QUIC] Update MsQuic
- 作成者: @ManickaP
- 作成日時: 2026年04月16日 12:16:34(UTC)
- マージ日時: 2026年04月16日 16:35:48(UTC)
- ラベル: Servicing-approved area-System.Net.Quic
概要
release/9.0-stagingブランチにおいて、MsQuic(Schannel)ライブラリのバージョンを2.4.8から2.4.18にアップデートするマイナーバージョン更新です。プロダクトコードの変更はなく、外部ライブラリの依存バージョン更新のみとなります。
変更内容
- eng/Versions.props:
MicrosoftNativeQuicMsQuicSchannelVersionを2.4.8から2.4.18に更新
パフォーマンスへの影響
影響なし(ライブラリのマイナーバージョン更新のため)
関連Issue
#126945(mainブランチ向けの同等のPR)
その他
- リスク評価: Low(プロダクトコードの変更がなく、MsQuicライブラリのマイナーバージョン更新のみ)
- 内部で検出された変更
- 標準CIによるテスト実施
- 回帰なし
#126987 Add ProcessOutputLine struct and Process.ReadAllLinesAsync
- 作成者: @Copilot
- 作成日時: 2026年04月16日 08:05:30(UTC)
- マージ日時: 2026年04月16日 22:11:58(UTC)
- ラベル: area-System.Diagnostics.Process
概要
System.Diagnostics.Processに行単位のストリーミング出力APIを追加します。新しいProcessOutputLine値型とProcess.ReadAllLinesAsyncメソッドにより、標準出力と標準エラーを非同期的にインターリーブして反復処理できるようになります。
using Process process = Process.Start(startInfo);
await foreach (ProcessOutputLine line in process.ReadAllLinesAsync())
{
if (line.StandardError)
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(line.Content);
Console.ResetColor();
}
変更内容
- ProcessOutputLine.cs — 公開
readonly structとして新規追加。Content(文字列)とStandardError(真偽値)プロパティを持つ。contentがnullの場合はArgumentNullExceptionをスロー - Process.Multiplexing.cs —
ReadAllLinesAsyncの実装(IAsyncEnumerable<ProcessOutputLine>)。容量0のChannel<ProcessOutputLine>(ランデブー)を使用して2つのReadLineAsyncタスク(stdout/stderr)をマルチプレックス。WaitToReadAsync/TryReadループで効率的に消費。早期終了時(await foreach中断)はCancellationTokenSourceでキャンセル、両リーダータスク完了を待機後にCTSを破棄 - System.Diagnostics.Process.cs(ref) —
ProcessOutputLineとReadAllLinesAsyncの公開API定義を追加 - ProcessStreamingTests.cs — 11個のテストメソッド(17ケース)。パラメータ検証、リダイレクト/モード検証、インターリーブ読み込み、大容量出力、キャンセル処理、プロパティ検証、早期終了時のクリーンアップを検証
- csproj更新 — 新規ソース/テストファイルを登録、
System.Threading.Channelsプロジェクト参照を追加
パフォーマンスへの影響
影響なし。容量0のChannelによるランデブー動作により効率的なマルチプレックスが実現され、余分なバッファリングなしでstdout/stderrを同時処理します。
関連Issue
#125838(承認済みAPI仕様)
その他
なし
#126986 Revert "Bump serialize-javascript and @rollup/plugin-terser" #126217
- 作成者: @pavelsavara
- 作成日時: 2026年04月16日 06:44:19(UTC)
- マージ日時: 2026年04月16日 06:48:00(UTC)
- ラベル: arch-wasm area-Infrastructure-coreclr os-browser
概要
前回のコミット(fa5f840e)で導入されたserialize-javascriptと@rollup/plugin-terserのバージョンアップを元に戻すリバート変更です。アップデート後のビルドが失敗していた問題(crypto is not definedエラー)を解決するためのリバートです。
変更内容
src/native/package.json: serialize-javascriptと@rollup/plugin-terserのバージョンを前のバージョンに戻すsrc/native/package-lock.json: 依存関係ツリーを前の状態に復元
パフォーマンスへの影響
影響なし
関連Issue
その他
ビルド時にNode.jsのcryptoモジュール呼び出しでReferenceErrorが発生していました。この問題はPull Request #126217のコメントで報告されています。
#126984 Fix AV in GetObjectFields when enumerating fields on dynamic Continuations
- 作成者: @tommcdon
- 作成日時: 2026年04月16日 03:26:05(UTC)
- マージ日時: 2026年04月16日 14:37:27(UTC)
- ラベル: area-Diagnostics-coreclr runtime-async
概要
CoreCLR DAC デバッグインターフェイスの GetObjectFields メソッドで、実行時に動的に生成される Continuation サブタイプのフィールド列挙時にアクセス違反が発生していた問題を修正します。TypeHandle を UpCastTypeIfNeeded() でアップキャストしてから ApproxFieldDescIterator を構築することで、動的に生成されたタイプを基底クラスに正規化し、AV を回避します。
変更内容
- src/coreclr/debug/daccess/dacdbiimpl.cpp:
DacDbiInterfaceImpl::GetObjectFieldsメソッド内で、ApproxFieldDescIterator構築前にTypeHandleに対してUpCastTypeIfNeeded()を呼び出すロジックを追加しました(+2 行)。この変更により、動的に生成された Continuation タイプが確実に基底クラスに解決されるようになります。
パフォーマンスへの影響
影響なし
関連Issue
その他
本修正はランタイムのデバッガ実装(DAC - Debugging Assistance Component)の内部実装に限定された変更であり、公開 API には影響しません。主にデバッグシナリオにおける非同期 Continuation オブジェクトのフィールド検査時の安定性向上です。
#126965 Raise minimum CircularBufferBuckets capacity from 1 to 2
- 作成者: @tarekgh
- 作成日時: 2026年04月15日 18:39:54(UTC)
- マージ日時: 2026年04月16日 01:34:46(UTC)
- ラベル: area-System.Diagnostics.Metric
概要
CircularBufferBucketsの最小容量制限を1から2に引き上げ、防御的なバグ修正を実施します。capacity == 1かつインデックス範囲が負から非負にまたがる場合(例:begin = -1, end = 0)にCalculateScaleReductionが無限ループする潜在的な脆弱性を事前に防ぎます。現在の使用箇所では既にminBuckets >= 2が強制されており、この変更により将来のコーラーが誤ってこの問題をトリガーできないようにします。
変更内容
CircularBufferBuckets.cs: コンストラクタのガード条件をcapacity < 1からcapacity < 2に変更し、エラーメッセージを更新Base2ExponentialHistogramAggregatorTests.cs: 無効な容量値(0, 1, -1)を検証するCircularBufferBucketsRejectsInvalidCapacity(Theory)とCircularBufferBucketsAcceptsCapacityOfTwoテストを追加
パフォーマンスへの影響
影響なし
関連Issue
open-telemetry/opentelemetry-dotnet#7078
その他
現在のコード実装では既にDebug.Assert(capacity >= 2)がチェックされており、且つ唯一のコーラー(Base2ExponentialHistogramAggregator)がMinBucketsを通じてmaxBuckets >= 2を強制しているため、この変更は理論的には到達不可能なコードパスを保護する防御的変更です。
#126962 Remove obsolete DacDbi APIs and simplify RCW cached type query path
- 作成者: @Copilot
- 作成日時: 2026年04月15日 18:02:57(UTC)
- マージ日時: 2026年04月16日 02:05:53(UTC)
- ラベル: area-Diagnostics-coreclr
概要
obsolete(廃止予定)なIDacDbiInterface APIを削除し、RCW キャッシュ型クエリパスを簡素化するリファクタリング。具体的にはNGEN/ReJit/従来のRCWインターフェース型列挙に関連する未使用APIを削除し、不要なDAC呼び出しを回避します。
変更内容
- COM IDL・ネイティブヘッダ:
dacdbi.idl、dacdbiinterface.hから廃止予定メソッドを削除 - ネイティブ実装:
dacdbiimpl.cpp/hから対応する廃止メソッド実装を削除 - マネージドCOM相互運用:
IDacDbiInterface.cs、DacDbiImpl.csから廃止メソッドを削除 - RCWキャッシュ型クエリ簡素化:
divalue.cppのCordbObjectValue::GetCachedInterfaceTypesを直接空の列挙子を返すように変更(従来の"常に空"動作に合わせた) - NGENサポート削除:
process.cppのGetDesiredNGENCompilerFlagsをCORDBG_E_NGEN_NOT_SUPPORTEDを直接返すように簡素化 - テスト削除:
EnableNGENPolicyの戻り値検証テストを削除
パフォーマンスへの影響
DAC(デバッグアクセスコンポーネント)への不要な呼び出しが削除されるため、デバッガのRCWインターフェース型クエリ時のオーバーヘッド削減が期待できますが、具体的なベンチマーク値は提供されていません。
関連Issue
なし
その他
このPRは廃止予定APIのクリーンアップであるため、破壊的変更です。これらのAPIに依存する外部ツール(NGEN政策設定やRCWインターフェース型列挙機能を使用していたデバッガ)への影響が考えられます。
#126961 Update issue-triage area-label heuristics for assembly loading, host, and interop
- 作成者: @Copilot
- 作成日時: 2026年04月15日 17:59:11(UTC)
- マージ日時: 2026年04月16日 17:20:17(UTC)
- ラベル: area-Interop-coreclr
概要
Issue トリアージの自動ラベル付けヒューリスティックを更新し、アセンブリ読み込み、ホスト、および相互運用性に関するIssueを正しいarea-*ラベルへルーティングするようにしました。マークダウンのみの変更です。
変更内容
.github/skills/issue-triage/references/area-label-heuristics.mdの更新:System.Runtime.InteropServices、P/Invoke、marshalling →area-System.Runtime.InteropServicesに再マッピング- Assembly loading、AssemblyLoadContext →
area-assemblyloadingに割り当て - Host関連(
Host、dotnet実行可能ファイル、hostfxr、hostpolicy、Host model) →area-Hostに割り当て - Interop runtime関連(Interop、COM、P/Invoke、marshalling(runtime部分)) →
area-Interop-coreclrに割り当て
パフォーマンスへの影響
影響なし(トリアージメタデータの更新のため)
関連Issue
なし
その他
- 変更はマークダウンのみでコード変更を含まないため、CodeQL分析対象外
- Code Reviewで指摘事項なし
- PR検証チェックすべてパス
#126957 Apply mitigations to System.Security.Cryptography.Xml components
- 作成者: @eiriktsarpalis
- 作成日時: 2026年04月15日 17:24:02(UTC)
- マージ日時: 2026年04月16日 17:12:06(UTC)
- ラベル: area-System.Security
概要
System.Security.Cryptography.Xmlコンポーネントに対して、悪意のある深くネストされたXML構造やXML爆弾攻撃に対する防御を強化する変更です。複数の再帰的コード経路に設定可能な再帰深度制限(デフォルト64)を導入し、EncryptedXmlで危険な変換アルゴリズムをデフォルトで無効化します。
変更内容
- LocalAppContextSwitches.cs: 新しいAppContext設定
DangerousMaxRecursionDepth(デフォルト64、0は無制限)と、危険な変換を許可するスイッチを追加 - EncryptedType.cs/EncryptedData.cs/EncryptedKey.cs:
LoadXmlメソッドで再帰深度のカウント・検証機能を追加 - XmlDecryptionTransform.cs: 再帰処理をキューベースの反復処理に改善し、最大深度を強制
- CanonicalizationDispatcher.cs: 正規化時に再帰深度チェックを追加
- KeyInfo.cs:
LoadXml周辺で再帰深度アカウンティングを追加 - EncryptedXml.cs:
CipherReference処理で安全な変換アルゴリズムのホワイトリストを導入し、デフォルトで危険な変換を拒否 - テスト: 深度制限のカバレッジを追加し、RemoteExecutor検証テストと新しい組み込みXMLサンプル(EncryptedXmlSample4.xml)を実装
パフォーマンスへの影響
影響なし。導入された深度チェックはガード句として機能し、正常なXML処理では追加のオーバーヘッドは最小限です。
関連Issue
なし
その他
- 互換性: この変更は公開APIではなく、既存の動作に対する防御的な制限です。デフォルトで危険な変換を無効化しますが、AppContext スイッチで従来の動作にオプトアウト可能です
- セキュリティ: XML爆弾(billion laughs attack)や再帰的な
EncryptedData構造を含むDoS攻撃を軽減します - 深度超過時は新しいエラーメッセージリソースを使用して例外をスロー
#126945 [QUIC] Update MsQuic to 2.5.7
- 作成者: @ManickaP
- 作成日時: 2026年04月15日 11:22:07(UTC)
- マージ日時: 2026年04月16日 10:14:49(UTC)
- ラベル: area-System.Net.Quic
概要
System.Net.Quic が使用する MsQuic (Schannel) パッケージのバージョンを 2.4.16 から 2.5.7 に更新します。この変更により、ランタイムと関連テストが MsQuic 2.5.7 を使用するようになります。
変更内容
eng/Versions.props:MicrosoftNativeQuicMsQuicSchannelVersionを 2.5.7 に更新
パフォーマンスへの影響
記載なし
関連Issue
なし
その他
なし
#126942 Add Process.ReadAllTextAsync and ReadAllBytesAsync
- 作成者: @Copilot
- 作成日時: 2026年04月15日 10:05:40(UTC)
- マージ日時: 2026年04月16日 06:20:40(UTC)
- ラベル: area-System.Diagnostics.Process
概要
System.Diagnostics.Processに非同期API ReadAllTextAsync(CancellationToken)とReadAllBytesAsync(CancellationToken)を追加し、stdoutとstderrの完全な非同期多重読み取りを実現します。新しいAPIはストリームベースの非同期読み取りを使用した多重化ヘルパーで実装されています。
変更内容
- Process.Multiplexing.cs: 新しい
ReadAllTextAsync/ReadAllBytesAsyncAPIと、単一ストリームをプールされたバッファに読み込むReadPipeToBufferAsync(Stream, CancellationToken)非同期ヘルパー、2つのタスクを並列実行するReadAllBytesIntoRentedArraysAsyncヘルパーを実装(+156行) - Process.Multiplexing.Windows.cs / Process.Multiplexing.Unix.cs: OS固有の
GetSafeHandleFromStreamReaderヘルパーに分割してリファクタリング。同期パスをAsSpan()で簡略化 - ProcessMultiplexingTests.cs: 既存テストに
useAsyncパラメータを追加して同期/非同期両系統をカバー。キャンセレーション処理と複数例外ハンドリングのテストを追加(+248行) - System.Diagnostics.Process.cs (参照アセンブリ): 新しい非同期APIのシグネチャを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- ビルド検証: 成功(エラー0、警告0)
- テスト検証: 467テスト実行、全てパス、5スキップ
- 実装では
Task.WhenAllで両ストリームの並列読み取りを実現。失敗時にはバッファをプールに返却、成功時にはArraySegmentで所有権を譲渡。両タスク失敗時はAggregateExceptionで複数例外をサーフェス
#126939 [release/10.0] JIT: Handle writes to promoted locals in AliasSet::AddNode
- 作成者: @github-actions[bot]
- 作成日時: 2026年04月15日 08:21:46(UTC)
- マージ日時: 2026年04月16日 01:26:39(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
JITコンパイラが昇格ローカル変数への書き込みを不正に並べ替える問題を修正しました。arm64の隣接ストア最適化で露顕した不具合ですが、共通ヘルパー関数の問題であるため全ターゲットに影響する可能性があります。AliasSet::AddNode関数で並べ替え合法性の判定ロジックを強化しています。
変更内容
- src/coreclr/jit/sideeffects.cpp: 昇格ローカル変数への書き込みを検出し、不正な並べ替えを防止するロジックを追加(13行)
- src/tests/JIT/Regression/JitBlue/Runtime_126414/: 回帰テストケースを追加(C#テストプログラムとプロジェクトファイル)
パフォーマンスへの影響
影響なし(修正により不正な最適化が阻止されることで、正確性が向上)
関連Issue
その他
- .NET 10のarm64隣接ストア最適化により露顕した回帰バグの修正です
- release/10.0ブランチへのバックポートです
- 修正リスクは低く、並べ替え合法性判定の厳密化により問題を解決しています
- 顧客報告による修正です
#126938 [LoongArch64] Initialize emitter::getInsExecutionCharacteristics() to support perfscore.
- 作成者: @LuckyXu-HF
- 作成日時: 2026年04月15日 07:40:46(UTC)
- マージ日時: 2026年04月16日 10:46:07(UTC)
- ラベル: area-CodeGen-coreclr community-contribution arch-loongarch64
概要
LoongArch64アーキテクチャにおいて、JITコンパイラのemitter::getInsExecutionCharacteristics()メソッドを実装し、命令のレイテンシとスループット情報に基づくパフォーマンススコア(perfscore)の計算をサポートします。3A6000プロセッサの命令レイテンシおよびスループットベンチマークデータに基づいています。
変更内容
- emitloongarch64.cpp:
getInsExecutionCharacteristics()メソッドの実装を追加し、LoongArch64命令セット全体の命令特性(レイテンシ、スループット、実行ポート情報)を定義(+1069行) - instrsloongarch64.h: 命令定義ファイルの更新・整理(+103/-79行)
パフォーマンスへの影響
直接的なランタイムパフォーマンスへの影響はありません。本変更はJITコンパイラの最適化フェーズにおいて、命令スケジューリングとコスト計算の精度向上を可能にするもので、コード生成品質の改善につながる可能性があります。
関連Issue
なし
その他
- 本実装はLoongArch64アーキテクチャ固有の機能です
- 命令レイテンシデータはLoongArch 3A6000プロセッサに基づいています
- JITコンパイラの内部実装(public APIではなく内部コンポーネント)の拡張です
#126929 fix for largepages with agressive decommit logic
- 作成者: @mangod9
- 作成日時: 2026年04月15日 01:09:23(UTC)
- マージ日時: 2026年04月16日 00:05:06(UTC)
- ラベル: area-GC-coreclr
概要
GCLargePages が有効な場合に、誘発された Aggressive GC でのデコミット処理がメモリを実際には解放しないながらも GC ブックキーピングを更新する問題を修正します。影響を受けたメモリを明示的にクリアして、古い参照が後で観察されないようにします。
変更内容
- src/coreclr/gc/memory.cpp:
gc_heap::distribute_free_regionsの誘発 Aggressive パスで、通常は OS によってデコミット/ゼロ化されるリージョン末尾を明示的にクリアする処理を追加。 - src/coreclr/gc/gcpriv.h / src/coreclr/gc/regions_segments.cpp: 関連する小規模な変更。
- クリア処理は
use_large_pages_pでゲートされており、ラージページのみでvirtual_decommitが no-op になる場合に限定されます。
パフォーマンスへの影響
影響なし(デバッグ用途の明示的メモリクリアのため、通常シナリオでは有効化されないラージページ機能に限定)
関連Issue
その他
この修正は GC ヒープの破損シナリオを解決するもので、ラージページとアグレッシブなデコミット処理を組み合わせた特定の環境での実行時の安定性向上に寄与します。
#126881 Remove DomainAssembly and other multi-appdomain dead code
- 作成者: @rcj1
- 作成日時: 2026年04月14日 14:54:06(UTC)
- マージ日時: 2026年04月16日 20:15:00(UTC)
- ラベル: area-VM-coreclr
概要
AppDomain廃止に伴い、マルチAppDomain対応のレガシーコード(DomainAssembly型、関連するDAC/DBIインターフェース、デバッガー実装)を削除し、単一AppDomainモデルに統一するランタイムとデバッグAPI層の大規模リファクタリングです。DomainAssemblyを削除してAssembly/Moduleで直接管理するよう簡素化し、デバッガーとDAC/DBIレイヤーの契約を更新します。
変更内容
- コア削除:
DomainAssembly型定義と実装、関連するヘッダー/CMakeビルド定義の完全削除 - ランタイム層:
Assembly/Module周辺のAPI更新(LoaderAllocatorのDomainAssemblyIterator→AssemblyIterator変更、AppDomainのDomainAssemblyList→AssemblyList変更、デバッガー通知署名のAssembly*への統一) - デバッガー層: IPC構造体とDAC/DBIインターフェース(
dacdbi.idl)をVMPTR_DomainAssembly→VMPTR_Assemblyに変更、右側(Cordb*)キャッシュ/列挙ロジックの簡素化 - フレーム型削除: AppDomain遷移フレーム型の削除(
frameinfo.cpp/frameinfo.h、shimstackwalk.cpp) - ドキュメント更新: マルチAppDomain関連の記述削除、コメント更新(
code-versioning.mdでドメイン別バージョニング削除、図の更新) - 内部実装:
IsAssemblyFullyTrustedメソッド削除、デバッガー通知とモジュール解決のAssemblyベース実装への統一
パフォーマンスへの影響
改善見込み:
DomainAssemblyラッパー層を削除したことによるメモリ削減(特にデバッガーが保持するキャッシュ構造の簡素化)- レイヤー間の間接参照削減(ベンチマーク結果は提供されていません)
実装上の注意: Loader.GetModuleHandles()内でArray要素の逆参照処理に潜在的な問題指摘あり(Copilot指摘)
関連Issue
その他
- 79/82ファイル中77ファイルがCopilotレビュー完了
- diagnosticstestsで動作確認済み
- 破壊的変更:
DomainAssembly関連の公開API削除(Module::Get/SetDomainAssembly、DAC/DBI内のDomainAssembly型など)、ただし主に内部デバッガーAPI層の変更 - Copilotが
Loader_1.csのGetModuleHandles()メソッド実装に懸念指摘(Array要素値の直接使用が必要の可能性)
#126824 [release/10.0] Fix native AOT outerloops
- 作成者: @github-actions[bot]
- 作成日時: 2026年04月13日 03:22:43(UTC)
- マージ日時: 2026年04月16日 15:22:03(UTC)
- ラベル: Servicing-approved area-Infrastructure-libraries
概要
Native AOTの大規模実行ファイルに関連するAppleリンカーの問題を修正するため、outerloopテストの設定を調整するバックポート。内部で発見されたテスト問題への対応。
変更内容
- src/libraries/tests.proj: outerloopテスト関連の設定を4行追加修正
パフォーマンスへの影響
影響なし(テストのみの変更)
関連Issue
#122213(元のPR)
その他
- 変更タイプ: バグ修正(テスト設定)
- リスクレベル: 低(テストのみの変更)
- 対象バージョン: .NET 10.0(release/10.0ブランチへのバックポート)
- 回帰: なし
- 関連者: @MichalStrehovsky、@jkotas
#126817 [release/10.0] Fix Native AOT-incompatible reflection in CalendarTestBase
- 作成者: @Copilot
- 作成日時: 2026年04月13日 00:58:37(UTC)
- マージ日時: 2026年04月16日 22:33:04(UTC)
- ラベル: Servicing-approved area-System.Globalization
概要
PR #122373で導入されたNativeAOT非互換なリフレクションコードをテストから削除し、Native AOTテストの互換性を復旧するテスト専用の修正です。日本語カレンダーテストの基盤クラス(CalendarTestBase)でICU固有のJapaneseCalendar最小サポート日付(エラティック)を計算する際のリフレクション使用方法をNativeAOT対応にリファクタリングします。
変更内容
- src/libraries/System.Runtime/tests/System.Globalization.Calendars.Tests/System/Globalization/CalendarTestBase.cs: リフレクションパターンの修正(+3/-3行、計6行の変更)
- トリミング/NativeAOT非互換なリフレクション使用パターンを、AOT対応の方法に変更
パフォーマンスへの影響
影響なし(テスト専用の変更)
関連Issue
その他
- 変更内容は
release/10.0ブランチ向けのバックポートです - テスト専用の変更であるため、リスクレベルは低い
- Outerloopテストで検証済み
- 内部で検出された問題対応です
#126815 [release/10.0] Fix native AOT outerloops
- 作成者: @github-actions[bot]
- 作成日時: 2026年04月13日 00:31:22(UTC)
- マージ日時: 2026年04月16日 15:22:55(UTC)
- ラベル: Servicing-approved area-NativeAOT-coreclr
概要
native AOT環境で失敗していたouterloopテストを修正するバックポート。release/10.0ブランチに#119312の修正内容をポートしており、テストのみの変更です。
変更内容
src/tests/Regressions/coreclr/GitHub_116953/test116953.cs: native AOT環境で不適切だったテスト条件を修正(1行変更)
パフォーマンスへの影響
影響なし
関連Issue
その他
- テスト専用の変更のため、ランタイムやコンパイラ動作への影響はありません
- リスクレベル:Low
- outerloopテスト実行時の失敗を解決するもので、以前のバックポート時にテスト修正が含まれていなかった問題の対応です
#126772 [RyuJIT] Make the mis-sized struct return logic only apply to return values that are structs
- 作成者: @kg
- 作成日時: 2026年04月10日 22:26:25(UTC)
- マージ日時: 2026年04月16日 23:51:47(UTC)
- ラベル: area-CodeGen-coreclr
概要
RyuJITのWASM コードジェン中で、構造体戻り値のtype erasure時にアサーション失敗を引き起こしていた問題を修正しています。mis-sized struct return処理を、実際に戻り値ノードがTYP_STRUCT型の場合のみに限定することで、非構造体型の値を構造体型テンポラリに不正に変換する処理を防ぎます。修正前はGT_IND(ubyte型)をTYP_STRUCT型のローカル変数に格納しようとしていたため失敗していました。
変更内容
- src/coreclr/jit/lower.cpp: mis-sized struct return時の「spill to temp local」ワークアラウンドに対して、戻り値ノードが実際に
TYP_STRUCT型である場合のみ適用するガード条件を追加。また、非構造体型のGT_INDを構造体型テンポラリに格納するためにReplaceWithLclVarを呼び出すことを防止(+21/-4)。
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このアサーション失敗はWASM SPC(Single-Method Static Precompilation)コンパイル時にSystem.Nullableの型変換演算子をコンパイルする際に発生していました。修正後、型がerasureされた戻り値に対してはCASTでのゼロ拡張処理が適用される設計に変更されています。
#126771 Add an in-memory LDAP server to power S.DS.Protocols tests
- 作成者: @bartonjs
- 作成日時: 2026年04月10日 21:50:59(UTC)
- マージ日時: 2026年04月16日 23:30:27(UTC)
- ラベル: area-System.DirectoryServices
概要
System.DirectoryServices.Protocolsテストの実行を外部LDAPサーバーに依存しないようにするため、LDAP、LDAP+STARTTLS、LDAPSをサポートする簡易的なインメモリLDAPサーバーを追加しました。既存テストで検証されていた機能に限定した実装となっており、必要に応じて機能拡張が可能です。
変更内容
- LdapTestServer.cs (
+414行):インメモリディレクトリの状態管理、リスナーのライフサイクル、基本的なCRUD/検索ヘルパー機能を実装 - LdapTestServer.Protocol.cs (
+926行):LDAPメッセージフレーミング、プロトコル操作のパース、レスポンス生成(STARTTLS/LDAPS対応)、BER/ASN.1エンコーディング/デコーディングを実装 - DirectoryServicesProtocolsTests.cs (
+646行):既存テストを共有の「Core」ヘルパーに統合し、ローカルサーバー対応のテストとLDAPS/STARTTLS用の証明書コールバックテストを追加 - System.DirectoryServices.Protocols.Tests.csproj (
+4行):新しいサーバーソースをコンパイル対象に追加し、ASN.1と証明書読み込みに必要な.NET Frameworkプロジェクト参照を追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
これはテストインフラストラクチャの改善であり、パブリックAPIや実行時動作に変更はありません。テストの独立性向上とCI環境での実行安定性が向上します。
#126704 CoreCLR: Add missing null guard
- 作成者: @trungnt2910
- 作成日時: 2026年04月09日 12:36:57(UTC)
- マージ日時: 2026年04月16日 17:11:36(UTC)
- ラベル: area-GC-coreclr community-contribution
概要
GCC Release ビルドでの CoreCLR Unix cgroup メモリ使用量コードの失敗を修正しています。asprintf に null 文字列を渡すことによる -Werror=format-overflow= エラーを防ぐため、s_memory_cgroup_path が null の場合の早期リターンガードを追加しました。
変更内容
- src/coreclr/gc/unix/cgroup.cpp:
GetCGroupMemoryUsage関数に null ガードを追加。s_memory_cgroup_pathが null の場合に早期リターンする処理を追加 - src/mono/mono/utils/mono-cgroup.c: 同様の null ガード処理を追加
パフォーマンスへの影響
影響なし(コンパイルエラー修正のための防御的コード追加)
関連Issue
その他
このPRは GCC Release ビルドで発生していたコンパイラエラーを修正するもので、破壊的変更や互換性への影響はありません。
#126622 [Runtime Async] Reuse ValueTaskSourceNotifier instance
- 作成者: @VSadov
- 作成日時: 2026年04月07日 23:40:54(UTC)
- マージ日時: 2026年04月16日 17:09:12(UTC)
- ラベル: area-VM-coreclr runtime-async
概要
ValueTaskがIValueTaskSourceで一時停止するたびに新しいValueTaskSourceNotifierラッパーオブジェクトを割り当てていた問題を解決します。スレッドローカルキャッシュされたValueTaskSourceNotifierインスタンスを再利用することで、await時の割り当てを削減します。
変更内容
- src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/ValueTask.cs:
[ThreadStatic]キャッシュされた再利用可能なValueTaskSourceNotifierを導入。AsTaskOrNotifierメソッドを更新して、IValueTaskSourceを基盤とするValueTaskに対してキャッシュされた通知オブジェクトを返すように変更。 - src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/AsyncHelpers.CoreCLR.cs: ランタイム非同期の一時停止状態の管理を新しい
ValueTaskSourceNotifier型を参照/キャストするように更新(削除されたインターフェースを置き換え)。
パフォーマンスへの影響
GC圧力の軽減。ValueTaskがIValueTaskSourceで一時停止するたびの割り当てを削減できます。ただし、具体的なベンチマーク数値は提供されていません。
関連Issue
なし
その他
内部実装の変更であり、公開APIへの影響はありません。ランタイムの非同期実装(CoreCLR)に直接関連する変更です。
#126595 [cDAC] Implement SetJITCompilerFlags for cDAC
- 作成者: @barosiak
- 作成日時: 2026年04月07日 01:20:22(UTC)
- マージ日時: 2026年04月16日 18:13:58(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Common Data Access Component)で IXCLRDataModule2.SetJITCompilerFlags を実装し、Loaderコントラクトの「デバッガー情報ビット」経由でモジュールのトランジェントフラグを更新できるようにしました。これにより、デバッガはJITコンパイラフラグを動的に制御できます。
変更内容
- ClrDataModule.cs -
SetJITCompilerFlags実装。Loaderコントラクトのデバッガー情報ビット経由でフラグを更新 - ILoader.cs / Loader_1.cs -
GetDebuggerInfoBitsとSetDebuggerInfoBitsコントラクトメソッド追加。ターゲットメモリへの直接読み書きに対応 - IXCLRData.cs -
DebuggerAssemblyControlFlags列挙型追加(cordbpriv.hを反映) - EEConfig.cs / Module.cs - デバッガー制御フラグ関連の定数・データ型定義
- テストインフラ - ターゲットメモリ書き込み対応(TestPlaceholderTarget.cs)、デバッガービット操作テスト追加(LoaderTests.cs)
- ドキュメント - Loader.md にコントラクト仕様を記載
- ネイティブ側 - ceeload.h / cordbpriv.h にcDACコントラクト依存関係を明記
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- この実装は内部コントラクト層(cDAC)の拡張であり、公開API変更ではありません
- デバッガー機能のサポート強化であり、ランタイムの標準実行パスには影響しません
- ネイティブ側(ceeload.h / cordbpriv.h)の既存定数を参照・マイグレーションしており、相互依存性を適切に記載しています
#126568 [main] Update dependencies from dotnet/xharness
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年04月06日 05:01:45(UTC)
- マージ日時: 2026年04月16日 10:31:42(UTC)
- ラベル: area-codeflow
概要
dotnet/xharnessの依存パッケージを更新するPull Requestです。Microsoft.DotNet.XHarness.CLI、Microsoft.DotNet.XHarness.TestRunners.Common、Microsoft.DotNet.XHarness.TestRunners.Xunitを11.0.0-prerelease.26174.1から11.0.0-prerelease.26204.1にアップデートしています。
変更内容
.config/dotnet-tools.json: ツール設定の更新(+1/-1)eng/Version.Details.props: バージョン詳細プロパティの更新(+3/-3)eng/Version.Details.xml: バージョン詳細XMLの更新(+6/-6)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
自動依存関係更新(dotnet-maestroによる)。このアップデートはテストハーネス関連のツールとランナーの内部実装の改善を含みます。
#126519 ILLink: Don't preserve forwarder assemblies referenced by link-action root assemblies
- 作成者: @Copilot
- 作成日時: 2026年04月03日 21:52:23(UTC)
- マージ日時: 2026年04月16日 16:11:33(UTC)
- ラベル: linkable-framework area-Tools-ILLink
概要
ILLinkの型フォワーダー処理を改善し、linkアクション(トリミング対象)でルート化されたアセンブリが、参照先のフォワーダーアセンブリを不必要に保持しないようにしました。SweepStep.AssemblyReferencesCorrectorが型参照を実装アセンブリに直接書き直すため、フォワーダーアセンブリの保持は不要です。この修正により、トリミングされた出力のサイズが削減されます。
変更内容
MarkStep.cs:
MarkEntireAssemblyからTypeReferenceMarker.MarkTypeReferencesの呼び出しを削除し、MarkAssemblyのcopy/save分岐内でのみ直接呼び出すように変更(TypeReferenceMarkerは本来copy/saveアセンブリ向け)- 新メソッド
MarkExportedTypesを追加:すべてのルートアセンブリのExportedTypeエントリをマーク(ただしフォワーダーアセンブリは保持しない) TypeReferenceMarker.ProcessExportedType:各エクスポート型に対してMarkForwardedScopeを呼び出し(copy/saveのみで実行)CreateTypeReferenceForExportedTypeTarget:ネストされたエクスポート型を正しく処理するプライベートヘルパーメソッドを追加
テストケース追加:
UsedForwarderIsRemovedWhenReferencedByRootedAssembly.cs:リグレッションテスト。ルート化されたアセンブリ(-a test, link)が参照するフォワーダー(Forwarder.dll)が削除され、参照が書き直されることを検証RootedForwarderWithExportedTypesIsHandled.cs:ルート化されたフォワーダーアセンブリ(-a Forwarder, link)自体のエクスポート型エントリが正しく保持されることを検証
パフォーマンスへの影響
トリミング済み出力のサイズが削減されます。-aフラグでルート化されたlinkアクションアセンブリが参照するフォワーダーアセンブリが不必要に保持されなくなるため。既存のベンチマーク結果は提供されていません。
関連Issue
その他
- 既存の44個の
TypeForwardingテストと49個のLinkXmlテストはすべてパス - リスク評価:低。
TypeReferenceMarker.MarkTypeReferencesは本来の使用場所(copy/save分岐)のみで実行され、MarkEntireAssemblyは関心の分離により型と属性のマーキングに専念 - エクスポート型エントリのマーキングはすべてのルートアセンブリで実行され、フォワーダーアセンブリ保持(
MarkForwardedScope)はcopy/saveアセンブリのみに限定
#126322 [release/8.0-staging] Update dependencies from dotnet/xharness
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年03月30日 16:09:47(UTC)
- マージ日時: 2026年04月16日 08:08:28(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/xharnessの依存関係を更新するPull Requestです。Microsoft.DotNet.XHarness.CLI、Microsoft.DotNet.XHarness.TestRunners.Common、Microsoft.DotNet.XHarness.TestRunners.Xunitが8.0.0-prerelease.25516.2から11.0.0-prerelease.26180.1にバージョンアップされています。これに伴い、WASM関連のテストランナーやビルドスクリプト、バージョン情報などが更新されています。
変更内容
- バージョン管理: eng/Version.Details.xml、eng/Versions.props、.config/dotnet-tools.jsonを更新してXHarnessバージョンを11.0.0-prerelease.26180.1に引き上げ
- WASM テストランナー: src/libraries/Common/tests/WasmTestRunner/WasmTestRunner.cs、src/tests/Common/XHarnessRunnerLibrary/GeneratedTestRunner.csに新しいロジックを追加
- WASM ビルド・ランタイム: src/mono/wasm/runtime/loader/run.tsやtest-main.jsでWASM実行環境の改善を実施
- ビルド設定: src/mono/wasm/symbolicator/WasmSymbolicator.csproj、src/tests/Common/helixpublishwitharcade.projの設定を更新
- テスト関連: Wasm.Build.Tests関連ファイルを調整
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このプルリクエストはdotnet-maestro[bot]による自動化された依存関係更新です。release/8.0-stagingブランチへの変更であり、XHarnessツールチェーンの更新に伴うWASM関連の下流変更を含みます。
#126091 Add low-cost instrumented version of RuntimeAsyncTask::DispatchContinuations reclaiming lost performance.
- 作成者: @lateralusX
- 作成日時: 2026年03月25日 13:51:05(UTC)
- マージ日時: 2026年04月16日 10:17:16(UTC)
- ラベル: area-System.Runtime runtime-async
概要
PR #123727で導入されたRuntimeAsyncTask::DispatchContinuationsのデバッガ/TPLインストルメンテーション追加による約7%のパフォーマンス低下を回復するため、インストルメンテーション版と非インストルメンテーション版を分離しました。DispatchContinuationsを2つのメソッド(通常版と計測版)に分割し、メソッド開始時と継続完了後に静的フラグをチェックして必要に応じてインストルメンテーション版に切り替える仕組みを実装しています。
変更内容
- AsyncHelpers.CoreCLR.cs:
DispatchContinuationsを通常版とInstrumentedDispatchContinuationsに分割。フラグチェックによる動的な計測版への切り替え機構を追加 - AsyncInstrumentation.cs(新規): ランタイム非同期処理用の中央集約インストルメンテーション管理型を新規作成
- Task.cs: ランタイム非同期タイムスタンプのチェーン伝播と例外/アンワインドクリーンアップの後処理APIを追加
- TplEventSource.cs: TPL EventSourceの有効/無効フラグ変更時にランタイム非同期インストルメンテーションフラグを更新
- RuntimeAsyncTests.cs: タイムスタンプクリーンアップ、デバッガデタッチ、継続タイムスタンプ可視性、TPLイベントなど計測動作の検証テストを大幅追加
パフォーマンスへの影響
ベンチマーク結果(Windows x64):
- 総バイト数(S.P.C): +16 KB(デュプリケーション由来)
- JIT生成サイズ(非計測版): 1778 B → 1399 B(-379 B、-21%)
- ベンチマーク実行時間: 337ms → 362ms → 最終実装で約7%のパフォーマンス低下を回復
非計測版では全インストルメンテーション処理が除去され、実行時オーバーヘッドが大幅削減。IsSupportedフラグで保護された計測版コードパスはトリミング対象となり、削除可能です。
関連Issue
その他
- メソッド開始時と継続完了後のフラグチェックは軽量(静的変数のフラグロード&チェック)で、ランタイム非同期分岐コスト最小化
- 非計測版では計測コード完全除外により、デバッガやTPLイベントソース有効化までは純粋なオーバーヘッドなし
- 将来の非同期プロファイラインストルメンテーション追加に対応可能な拡張性を確保
- デバッガインストルメンテーション最適化により、継続チェーン処理シナリオでのロック削減を実装
#125809 Add ci-pipeline-monitor Copilot CLI skill
- 作成者: @JulieLeeMSFT
- 作成日時: 2026年03月19日 23:53:59(UTC)
- マージ日時: 2026年04月16日 17:47:28(UTC)
- ラベル: area-skills
概要
Azure DevOps CI パイプラインの監視、テスト失敗の分類、週次レポート生成を自動化する ci-pipeline-monitor Copilot CLI スキルを追加しました。現在は20以上のJITパイプラインを監視していますが、今後他のパイプラインへの拡張を予定しています。
変更内容
Python スクリプト(内部実装): 5つのスクリプトで以下を実装
setup_and_fetch_builds.py: SQLite DBスキーマ作成およびAzDO Builds APIから最新ビルド結果を取得extract_failed_tests.py: AzDO Test Results APIでテスト失敗情報を抽出しtest_resultsテーブルに挿入fetch_helix_logs.py: Helix コンソールログをダウンロードしexit_code/console_log_pathを更新generate_report.py: DBコンテンツからマークダウンレポートを生成validate_results.py: DB/レポート/ログの整合性検証およびGitHub検索による「NEW」失敗の確認
ドキュメント・テンプレート(内部実装): スキル定義、レポート/デバッグログテンプレート、トリアージワークフロー、検証チェック、エラー抽出ルールを定義
設定ファイル: 監視対象パイプラインリスト(
pipelines.md)、生成成果物の.gitignore設定
パフォーマンスへの影響
影響なし(開発支援ツールの追加で、ランタイム・コンパイラ・公開APIには影響なし)
関連Issue
なし
その他
- このPRは dotnet/runtime リポジトリの開発インフラ向けの変更であり、.NETランタイム本体の機能変更ではありません
- スキルの展開後、監視範囲を20以上のJITパイプラインから他のパイプラインへ拡張予定です
#123145 Add span-based Deflate, ZLib and GZip encoder/decoder APIs
- 作成者: @iremyux
- 作成日時: 2026年01月13日 18:46:21(UTC)
- マージ日時: 2026年04月16日 17:33:05(UTC)
- ラベル: area-System.IO.Compression
概要
Deflate、ZLib、GZipの圧縮・解凍について、Spanベースのストリームレスな新しいAPIを追加します。BrotliEncoder/BrotliDecoderのパターンに従い、DeflateEncoder/DeflateDecoder、ZLibEncoder/ZLibDecoder、GZipEncoder/GZipDecoderクラスを導入。インスタンスベースのAPI(Compress()、Decompress()、Flush())とスタティックのワンショットAPI(TryCompress()、TryDecompress())、およびGetMaxCompressedLength()を提供します。
変更内容
- ネイティブ相互運用: zlibの
compressBound関数をラップするpal_zlib.c/.hを新規追加、P/Invoke宣言をInterop.zlib.csに追加 - コアエンコーダ/デコーダ:
DeflateEncoder.cs(圧縮レベル・戦略の設定可能)とDeflateDecoder.csを実装 - フォーマット固有ラッパー:
ZLibEncoder/Decoder(ヘッダ/チェックサム付き)とGZipEncoder/Decoder(ヘッダ/トレーラ付き)を実装 - API表面:
System.IO.Compressionの参照アセンブリに新しいパブリックAPI定義を追加 - テスト:
DeflateEncoderDecoderTests.cs、ZLibEncoderDecoderTests.cs、GZipEncoderDecoderTests.csなどで基本機能、ラウンドトリップ、相互運用性をカバー - 既存機能強化:
ZLibCompressionOptions.csを拡張し、CompressionFormat.csを新規追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- 新しいエンコーダ/デコーダクラスはライブラリの公開API(public)として追加されます
- 既存のStream系API(
DeflateStream、GZipStream、ZLibStream)の破壊的変更はなし - ネイティブ関数エクスポート用に
.defファイルと_unixexports.srcを更新 - Zstandard関連のテストでハードコードされた値が32ビットプラットフォームで失敗する可能性あり(レビューコメント参照)
#122649 Accelerate Half with FP16 ISA
- 作成者: @anthonycanino
- 作成日時: 2025年12月18日 20:45:27(UTC)
- マージ日時: 2026年04月16日 16:01:21(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
System.Half型をFP16 ISA(AVX10v1)で加速するためのドラフトPR。JITに新しいTYP_HALF型を導入し、System.Halfの演算・変換・プロパティをAVX10v1スカラー命令にマッピングする。x86/x64アーキテクチャにおいて、Half値をXMM浮動小数点レジスタで受け渡しするABI変更を含む。
変更内容
コアJIT型システム:
TYP_HALF型を新規追加(typelist.h、vartype.h)。SIMD型のように扱われるが、プリミティブとしても動作float16_ttypedef定義(float16.h)とValue Numbering対応(valuenum.cpp/h、valuenumfuncs.h)
System.Half API マーキング:
System.Halfメンバーを[Intrinsic]でマーク(System.Private.CoreLib/System/Half.cs)し、JIT認識を有効化
ABI・呼び出し規約の更新:
HalfをFPレジスタで受け渡すようVM・JITコンポーネントを更新(callingconvention.h、callhelpers.cpp、invokeutil.cpp、class.cpp)- x64 Windowsでの
Halfのレジスタ渡し対応(reflectioninvocation.cpp、profiler.cpp、abi.cpp)
JITコンパイラ側:
System.Half演算をAVX10v1スカラー命令に展開(importercalls.cpp- 588行の大幅追加)- 型正規化を拡張してネイティブ2バイト構造体を
TYP_HALFにマッピング(compiler.cpp、simd.cpp) - HW intrinsics テーブルに
TYP_HALFスロット追加(hwintrinsic.h/cpp、hwintrinsiclistxarch.h) - AVX10v1範囲・EVEX前置マップ対応(
emitxarch.cpp、instrsxarch.h) - LSR・レジスタ割り当て・構造体プロモーションロジックを更新
エンコーディング・デバッグ情報:
vmovsh命令(2バイトFP16ロード/ストア/コピー)のサポート(instr.cpp)- スコープ情報でのロケーション表現拡張(
scopeinfo.cpp) - ユーティリティ関数
convertDoubleToFloat16()を追加(utils.cpp)
パフォーマンスへの影響
提供情報に基づく直接的なベンチマーク結果は記載されていません。ただし変更内容から以下が予想されます:
Half演算がネイティブFP16命令で実行されることで、ソフトウェアフォールバックと比べ大幅な高速化が期待されるTYP_HALFをvarTypeIsAcceleratedで認識することで、型正規化・レジスタ割り当てが効率化- AVX10v1命令のパフォーマンススコアリング定数追加(
emit.h)で、最適化パス精度向上
関連Issue
#122391 [release/10.0] [browser] Generate boot config with hash field instead of integrity
- 作成者: @maraf
- 作成日時: 2025年12月10日 16:34:49(UTC)
- マージ日時: 2026年04月16日 03:49:44(UTC)
- ラベル: Servicing-approved arch-wasm area-Build-mono os-browser
概要
WebAssembly boot configurationの生成時に、キャッシュ検証メカニズムとして使用されるintegrity属性が不足していた問題を修正するバックポート。boot config内のアセット定義で、integrityフィールドを正しくhashフィールドにリネームします。この修正により、WebAssemblyリソースリクエストの整合性チェックが適切に機能するようになります。
変更内容
- BootJsonData.cs:
WasmAsset、GeneralAsset、VfsAssetデータコントラクトクラスのintegrityプロパティをhashにリネーム - BootJsonBuilderHelper.cs: アセットオブジェクト構築時のプロパティ割り当てを
integrityからhashに更新 - ModuleConfigTests.cs: 非.js/非.jsonアセットに対してhash値が設定されていることを検証するテストケースを追加
- main.js: 読み込まれたすべてのアセットのintegrity値をログ出力する"AssetIntegrity"テストケースを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
- 回帰: #116300による回帰
- リスク評価: 低。変更は生成されるフィールド名を不正な値から正しい値へ修正するのみ。コンテンツはランタイムパックから埋め込まれるため、stale cacheによる不整合の余地がない
- テスト: 自動テスト・手動テスト両方で検証済み
#120769 Support EVP_MAC for HMAC
- 作成者: @vcsjones
- 作成日時: 2025年10月15日 20:56:23(UTC)
- マージ日時: 2026年04月16日 18:07:59(UTC)
- ラベル: area-System.Security
概要
OpenSSL 3.0以降でHMAC実装をEVP_MAC APIに移行し、非推奨となったHMAC APIの使用を廃止します。古いOpenSSLバージョンとの互換性を維持しながら、OpenSSL 3.0のネイティブAPIを活用します。
変更内容
- pal_hmac.h/c:
DN_MAC_CTXラッパー構造体を導入し、従来のHMAC_CTXとEVP_MAC_CTXの両方に対応。OpenSSLバージョンに応じた実行時パス分岐を実装。OpenSSL 3.0.0-3.0.2の既存キーでのEVP_MAC_init失敗に対する回避策を含む - osslcompat_30.h: EVP_MAC互換性の定数
OSSL_MAC_PARAM_DIGESTとEVP_MD_get0_name関数宣言を追加 - opensslshim.h:
CRYPTO_clear_free、CRYPTO_zalloc、EVP_MD_get0_nameなど新しいOpenSSL関数を登録 - IncrementalHashTests.cs: 空キーでのHMAC複製動作の検証テストを追加
パフォーマンスへの影響
影響なし
関連Issue
その他
本PRは#118856の後続版です。OpenSSL 3.0での非推奨APIの廃止に対応するもので、公開API自体の変更ではなく、内部的なネイティブバインディングの実装改善になります。