注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #124962 Fix type formatting in logging source generator test
- #124960 Enclose keywords in quotes in logging generator messages, to improve translation quality
- #124957 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2914130
- #124955 [release/11.0-preview2] Revert "Increase number of assertions (GlobalAP) + VN cache (#124132)"
- #124936 Fix copy-paste error in
ischeck for character base64 decoding - #124929 [cDAC] Strip collectible tag bit from RangeSectionFragment.Next pointer
- #124928 Revert "Increase number of assertions (GlobalAP) + VN cache (#124132)"
- #124924 Bump actions/upload-artifact from 6 to 7
- #124922 [cDAC] Add managed definitions for IXCLRData COM interfaces
- #124910 Bump rollup from 4.52.2 to 4.59.0 in /src/mono/browser/runtime
- #124909 [browser][coreCLR] adopt new API for async main
- #124905 [browser] Webcil alignment
- #124892 Convert verbatim string literals to raw string literals in System.Text.Json tests
- #124885 [release/10.0] Source code updates from dotnet/dotnet
- #124882 Cleanup flowgraph files
- #124873 [wasm][coreclr] Fix prestub of methods with IL helper stubs
- #124861 Implement
AsyncHelpers.TailAwaitin the interpreter and use it for instantiating and unboxing stubs on CoreCLR - #124859 [runtime-diagnostics] Workaround for publish test results regression
- #124856 Fix x509-store for illumos
- #124822 Replace GCX_COOP with EBR for EEHashTable bucket reclamation
- #124780 [cDAC] Fix EEClass validation corner case
- #124760 Adding GetHandleEnum and GetHandleEnumForTypes cDAC APIs
- #124685 [Wasm RyuJit] Type Index Relocation Support in Wasm Object Writer
- #124638 Logging source generator: support generic methods (lift SYSLIB1011)
- #124603 [API] RuntimeFeature.IsMultithreadingSupported
- #124409 Vectorize Adler32
- #124396 Backport XML documentation for WebProxy and IWebProxyScript
- #123952 Enable runtime-async feature switch for NativeAOT System.Private.CoreLib
- #123830 Change Interpreter to share code with the JIT and use its CompAllocator
- #123026 Improve System.Reflection.Context.Tests code coverage from ~35% to 87%
#124962 Fix type formatting in logging source generator test
- 作成者: @svick
- 作成日時: 2026年02月27日 12:03:59(UTC)
- マージ日時: 2026年02月27日 14:41:38(UTC)
- ラベル: area-Extensions-Logging
概要
ロギングソースジェネレータのテスト基準値を更新するテスト修正です。先行するPR(#124638と#124589)の関連する変更がテスト実行時に相互に影響を与えたため、生成されたコードの型表示フォーマットを修正し、生成されたシグネチャでglobal::System.Int32の代わりにint C#キーワードを使用するように統一しました。これによりCI失敗を解決しています。
変更内容
- Microsoft.Extensions.Logging.Generators.Tests/Baselines/TestWithRefReadOnlyParam.generated.txt
- 生成されたシグネチャ内の型フォーマット修正(6行変更)
global::System.Int32→intに統一LoggerMessage.Define<>()の呼び出しの型表記を調整
パフォーマンスへの影響
影響なし。これはテストの基準値ファイル更新のみの変更であり、実装コードへの変更は含まれていません。
関連Issue
- #124957(このPRで修正するCI失敗の報告先)
- #124638(ジェネリックメソッドサポート関連のPR)
- #124589(型フォーマット調整関連のPR)
その他
このPRは複数の関連する変更(#124638と#124589)が一緒にテストされなかったため、相互の影響が適切に反映されていなかった問題の修正です。単一の基準値ファイルのみの変更であり、ロジック変更や互換性への影響はありません。
#124960 Enclose keywords in quotes in logging generator messages, to improve translation quality
- 作成者: @svick
- 作成日時: 2026年02月27日 11:53:13(UTC)
- マージ日時: 2026年02月27日 20:21:41(UTC)
- ラベル: area-Extensions-Logging
概要
ロギングジェネレータの診断メッセージにおいて、C#キーワード('out'、'partial'、'void'、'static'、'params'、'scoped'、'ref struct'など)をシングルクォートで囲むことで、翻訳品質の向上を目指すPRです。PR #124957のチェコ語翻訳の品質が低かったため、キーワードを明示的にマークすることで機械翻訳エンジンが翻訳対象外として認識しやすくなります。
変更内容
- Strings.resx: C#キーワードおよびログレベル識別子('Info:'、'Warning:'、'Error:')をシングルクォートで囲む(13行の更新)。また、LoggingMethodHasAllowsRefStructConstraintMessageエントリの順序を.xlfファイルの順序に合わせて修正
- 13言語の.xlfファイル(チェコ語、ドイツ語、スペイン語、フランス語、イタリア語、日本語、韓国語、ポーランド語、ポルトガル語(ブラジル)、ロシア語、トルコ語、簡体字中国語、繁体字中国語): ソース文字列を引用符付きキーワードで更新し、対象翻訳を
needs-review-translationフラグでマーク
パフォーマンスへの影響
影響なし。本変更はリソース文字列の書式変更のみで、ランタイムパフォーマンスや実行速度に影響しません。
関連Issue
#124957(チェコ語翻訳品質の問題)
その他
このPRは、Microsoft.Extensions.Logging.Abstractionsライブラリのロギングジェネレータが出力する診断メッセージの翻訳精度を向上させることを目的としています。キーワードをシングルクォートで囲むことで、翻訳サービスがコード要素として認識し、不適切な翻訳を防ぐことが期待されます。すべての変更ファイルが言語リソース関連のみであるため、機能的な実装変更はなく、ユーザーへの影響は翻訳メッセージの品質向上のみです。
#124957 Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2914130
- 作成者: @dotnet-bot
- 作成日時: 2026年02月27日 10:41:12(UTC)
- マージ日時: 2026年02月27日 14:32:05(UTC)
- ラベル: area-Extensions-Logging
概要
OneLocBuildタスクによる自動チェックイン。Microsoft.Extensions.Logging.Abstractionsライブラリの翻訳ファイル(.xlf形式)を複数言語にわたって更新。翻訳パイプラインから生成されたローカライズされたリソースファイルの同期処理です。
変更内容
- 対象ライブラリ: Microsoft.Extensions.Logging.Abstractions
- 変更ファイル: 言語別翻訳ファイル(XLF形式)
- Strings.cs.xlf(スペイン語)
- Strings.de.xlf(ドイツ語)
- Strings.es.xlf(スペイン語)
- Strings.fr.xlf(フランス語)
- Strings.it.xlf(イタリア語)
- Strings.ja.xlf(日本語)
- Strings.ko.xlf(韓国語)
- Strings.pl.xlf(ポーランド語)
- Strings.pt-BR.xlf(ブラジルポルトガル語)
- Strings.ru.xlf(ロシア語)
- Strings.tr.xlf(トルコ語)
- Strings.zh-Hans.xlf(簡体字中国語)
- Strings.zh-Hant.xlf(繁体字中国語)
各ファイルで5行追加、5行削除(翻訳内容の更新)
パフォーマンスへの影響
影響なし。ローカライズファイルの更新であり、ランタイムパフォーマンスやコンパイル動作に変更はありません。
関連Issue
なし
その他
- このPRは自動化されたOneLocBuildプロセスにより生成
- 翻訳品質に問題がある場合は、https://aka.ms/icxLocBug でレポート可能
- ドキュメント: https://aka.ms/onelocbuild および https://aka.ms/AllAboutLoc
#124955 [release/11.0-preview2] Revert "Increase number of assertions (GlobalAP) + VN cache (#124132)"
- 作成者: @github-actions[bot]
- 作成日時: 2026年02月27日 10:35:59(UTC)
- マージ日時: 2026年02月27日 14:54:45(UTC)
- ラベル: Servicing-approved area-CodeGen-coreclr
概要
JITコンパイル中の過度なメモリ割り当てを引き起こしていた以前の変更(アサーション数の増加とVNキャッシュ関連)をリバートするパッチです。このリバートにより、メモリ使用量の削減が期待できます。
変更内容
- src/coreclr/jit/assertionprop.cpp: グローバルアサーションプロパゲーション関連のコード削除(19行追加、87行削除)
- src/coreclr/jit/compiler.h: コンパイラヘッダの構造体定義削減(1行追加、3行削除)
- src/coreclr/jit/rangecheck.cpp: 軽微な修正(1行追加、1行削除)
パフォーマンスへの影響
改善: JITコンパイル時のメモリ割り当て削減。以前の変更によって過度なメモリ割り当てが発生していたため、このリバートにより内部的なメモリ効率が向上します。具体的な数値は記載されていませんが、回帰バグとして識別されているため、相当な改善が期待されます。
関連Issue
- 原因となったコミット:
92741bebcae5b82cd537979eef962674627e7f89 - 関連PR: #124132(リバート対象)、#124928(親PR)、dotnet/dotnet#4933(外部報告)
その他
- リリースブランチ: release/11.0-preview2へのバックポート
- テスト方法: 手動テスト済み
- リスク度: 低(確定済みの回帰修正のため、以前の機能状態に戻すだけ)
- 影響範囲: .NET 11.0 Preview 2のプレビュー版に限定
#124936 Fix copy-paste error in is check for character base64 decoding
- 作成者: @BrennanConroy
- 作成日時: 2026年02月27日 01:48:41(UTC)
- マージ日時: 2026年02月27日 21:11:14(UTC)
- ラベル: area-System.Buffers
概要
DecodeWithWhiteSpaceBlockwise メソッド内の型チェック(is演算子)にコピーペーストエラーがありました。UTF-16文字(ushort)のBase64デコーディングパスで、Base64DecoderByteのチェックが残されていたため、常に偽となり、不要な追加処理が発生していました。Base64DecoderCharへの修正により、デコーダが正しく識別され、効率的な処理パスが使用されるようになります。
変更内容
- ファイル:
src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Base64Helper/Base64DecoderHelper.csDecodeWithWhiteSpaceBlockwiseメソッド内の型チェックを修正IBase64Decoder<ushort>パスにおいて、is Base64DecoderByte→is Base64DecoderCharに修正(+1/-1)
パフォーマンスへの影響
改善: 軽微なパフォーマンス向上
型チェックが正常に機能することで、DecodeFromメソッド内での不要な分岐処理がスキップされ、UTF-16 Base64デコーディングの処理効率が向上します。ただし、定量的なベンチマーク数値は提供されていません。
関連Issue
なし
その他
- このバグは PR #123151 でのメソッド複製時に導入されたもの
- 修正は最小限の変更(1行)であり、既存の動作は維持されながら型チェックの正確性が確保される
#124929 [cDAC] Strip collectible tag bit from RangeSectionFragment.Next pointer
- 作成者: @max-charlamb
- 作成日時: 2026年02月26日 23:05:50(UTC)
- マージ日時: 2026年02月27日 15:09:54(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Compiled Data Access Component)の RangeSectionFragment.Next ポインタから collectible タグビット(ビット0)を取得する修正です。ネイティブランタイムはこのビットをフラグとして使用していますが、cDAC が未処理のポインタを読み込んでいたため、スタックウォーク中に misaligned メモリアクセスが発生し、VirtualReadException が起こっていました。修正は単純で、ポインタ読み込み時にビット0をマスクするだけです:
Next = target.ReadPointer(address + (ulong)type.Fields[nameof(Next)].Offset) & ~1ul;
変更内容
- RangeSectionFragment.cs:
Nextポインタ読み込み時に& ~1ulでビット0をマスク - ExecutionManagerTests.cs: collectible フラグがセットされた 2-フラグメントチェーンで
Nextポインタを検証する回帰テストGetMethodDesc_CollectibleFragmentNextを追加 - MockDescriptors.ExecutionManager.cs: テスト用の mock descriptor にフラグメントチェーンサポートを追加
- ExecutionManager.md:
RangeSectionFragment.Nextのタグ付きポインタ規約とその取り扱い方法をドキュメント化
パフォーマンスへの影響
影響なし。本修正はデバッグ・診断時のデータ読み込み精度向上であり、ランタイムパフォーマンスには直接の影響なし。スタックウォークの信頼性が向上します。
関連Issue
なし
その他
- cDAC は既に
InteriorMapValue.Addressと初期フラグメントポインタでタグビットを正しくストリップしていたため、本修正は linked-list 走査時の見落とし対応 - 修正なしでは
VirtualReadExceptionが発生するため、collectible アセンブリを含むダンプ解析で診断機能が破損していた - CI ダンプ検証で 15 スレッドすべてがスタックウォーク完了を確認
- 876 個の既存 cDAC ユニットテストすべてがパス
#124928 Revert "Increase number of assertions (GlobalAP) + VN cache (#124132)"
- 作成者: @AndyAyersMS
- 作成日時: 2026年02月26日 22:43:32(UTC)
- マージ日時: 2026年02月27日 02:04:30(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITコンパイル中の過度なメモリ割り当ての問題を解決するため、Value Number (VN) キャッシング機構とグローバルアサーション伝播の最適化を含む前のコミットを元に戻すリバート変更です。IL サイズベースのシンプルなアサーション数ヒューリスティックに復元され、VN キャッシュの複雑な機構が削除されます。
変更内容
- src/coreclr/jit/assertionprop.cpp: VN キャッシング機構 (
optAssertionVNsMap) とその管理ロジックを削除。IL サイズベースのシンプルなアサーション数ヒューリスティック(ルックアップテーブル方式)に復元。VN ベースの早期終了最適化も削除。 - src/coreclr/jit/compiler.h:
optAssertionVNsMapフィールドとoptAssertionHasAssertionsForVNメソッド宣言を削除。 - src/coreclr/jit/rangecheck.cpp:
MergeEdgeAssertions内の VN キャッシュチェックをシンプルなNoVNチェックに復元。
パフォーマンスへの影響
改善: JIT コンパイル時のメモリ割り当てが大幅に削減されます。前のコミットで導入された VN キャッシング機構が過度なメモリ消費を引き起こしていたため、その削除により、特にコンパイル時のメモリ使用効率が向上します。VN ベースの最適化は削除されますが、より単純なヒューリスティックでも十分な実用性があると判断されています。
関連Issue
dotnet/dotnet #4933 (JIT コンパイル中のメモリ割り当て問題)
その他
この変更は破壊的ではなく、内部実装の最適化ロジックの修正です。グローバルアサーション伝播自体の機能は維持されており、単にその最適化戦略がシンプルなものに戻された形です。
#124924 Bump actions/upload-artifact from 6 to 7
- 作成者: @dependabot[bot]
- 作成日時: 2026年02月26日 21:24:16(UTC)
- マージ日時: 2026年02月27日 09:12:33(UTC)
- ラベル: area-codeflow
概要
dotnet/runtimeリポジトリで使用しているGitHub Actions の actions/upload-artifact を v6 から v7 にアップデートする依存関係更新です。v7ではファイルの直接アップロード(非圧縮)とESM形式への対応が追加されています。
変更内容
.github/workflows/aspnetcore-sync.yml: actions/upload-artifact v6 → v7.github/workflows/breaking-change-doc.yml: actions/upload-artifact v6 → v7.github/workflows/jit-format.yml: actions/upload-artifact v6 → v7
計3つのワークフローファイルで使用しているアクションバージョンを更新しています。
パフォーマンスへの影響
影響なし。このPRは開発環境(CI/CDパイプライン)の更新であり、.NETランタイムのビルドやテスト実行のパフォーマンスには直接的な影響を及ぼしません。
関連Issue
なし
その他
- 互換性: v7はメジャーバージョンアップデートですが、既存の使用方法との後方互換性は保持されています。ワークフロー側の設定変更は不要です。
- 新機能: v7では
archive: falseパラメータで単一ファイルを圧縮せずに直接アップロード可能になりました(ただし、本PRではこの新機能は使用していません)。 - モジュール形式: ESM形式への内部実装変更は、ユーザー側への影響はありません。
#124922 [cDAC] Add managed definitions for IXCLRData COM interfaces
- 作成者: @max-charlamb
- 作成日時: 2026年02月26日 21:05:41(UTC)
- マージ日時: 2026年02月27日 17:48:59(UTC)
- ラベル: area-Diagnostics-coreclr
概要
このPRは、xclrdata.idlとclrdata.idlで定義されているIXCLRDataおよびICLRData COM インターフェースの、マネージド[GeneratedComInterface]定義を追加します。デバッガやDiagnosticツール向けのCOM相互運用性を強化し、ネイティブCOMインターフェースへのマネージドアクセスを実現します。
// IXCLRDataAppDomain などのマネージド定義が追加
[GeneratedComInterface]
internal partial interface IXCLRDataAppDomain : IUnknown
{
// インターフェース定義
}
変更内容
IXCLRData.cs (+561行)
- 14個の新規インターフェース定義:
IXCLRDataAppDomain、IXCLRDataAssembly、IXCLRDataTypeDefinition、IXCLRDataMethodDefinition、IXCLRDataValue、IXCLRDataExceptionNotification(v1~v5)、IXCLRDataTarget3、IXCLRLibrarySupport ClrDataMethodDefinitionExtent構造体の追加- 注:varargs および 非HRESULTの戻り値型を使用する
IXCLRDisassemblySupportとIXCLRDataDisplayは[GeneratedComInterface]と互換性がないため除外
- 14個の新規インターフェース定義:
ICLRData.cs (+25行)
ICLRDataTarget2、ICLRDataTarget3インターフェースの追加ICLRDataTarget2.AllocVirtual/FreeVirtualのアドレスパラメータをulongからClrDataAddressに修正(IDLのCLRDATA_ADDRESSに合致)
パフォーマンスへの影響
影響なし。本変更はマネージド定義の追加のみで、ランタイム実行コードには影響しません。
関連Issue
なし
その他
- すべてのGUIDおよびVテーブル順序は、
src/coreclr/inc/xclrdata.idlおよびsrc/coreclr/inc/clrdata.idlに対して検証済み [GeneratedComInterface]属性を使用しており、.NET 8以降の新しいCOM相互運用メカニズムを活用
#124910 Bump rollup from 4.52.2 to 4.59.0 in /src/mono/browser/runtime
- 作成者: @dependabot[bot]
- 作成日時: 2026年02月26日 17:46:23(UTC)
- マージ日時: 2026年02月27日 14:55:33(UTC)
- ラベル: area-Infrastructure javascript dependencies
概要
Mono/WebAssembly ブラウザランタイムの開発依存関係である rollup をバージョン 4.52.2 から 4.59.0 に更新するDependabotによる自動PR。主な改善は、バンドル出力時にディレクトリを超えるパスの検証強化、__NO_SIDE_EFFECTS__ アノテーション機能の拡張、および複数のバグ修正を含みます。
変更内容
- src/mono/browser/runtime/package.json: rollup のバージョンを 4.52.2 から 4.59.0 に更新
- src/mono/browser/runtime/package-lock.json: ロックファイルを更新(138行追加、99行削除)
主な機能追加:
- バンドル生成時に出力ディレクトリ外へのパス出力を検出して例外をスロー(セキュリティ向上)
- 変数宣言内の関数式に対する
__NO_SIDE_EFFECTS__アノテーション対応 - Windows でのヒープ破損問題の修正
- try...catch 内での動的インポートのエクスポート完全包含の修正
パフォーマンスへの影響
4.58.0 に含まれる「コード文字列の不要なクローンの回避」により、バンドル生成時のメモリ効率がわずかに改善される可能性があります。その他パフォーマンス関連の大きな変更は報告されていません。
関連Issue
- rollup#6275: バンドル出力ディレクトリ外へのパス検証
- rollup#6272: NO_SIDE_EFFECTS アノテーション機能拡張
- rollup#6251: Windows ヒープ破損問題修正
- rollup#6254: try...catch 内の動的インポート処理改善
その他
- Dependabot互換性スコア: 本更新は互換性スコアが評価されています
- install スクリプト変更: prepare スクリプトが修正されているため、インストール時の挙動に変更がある可能性があります。
- 本PR は Dependabot による自動更新のため、追加の手動レビューは不要ですが、ビルドテスト実行は推奨されます。
#124909 [browser][coreCLR] adopt new API for async main
- 作成者: @pavelsavara
- 作成日時: 2026年02月26日 17:42:00(UTC)
- マージ日時: 2026年02月27日 11:55:41(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
このPull Requestは、非同期Main()メソッドの処理に関する一時的なコードを削除し、新しいAPIを採用するリファクタリングです。coreCLRのエントリーポイント処理を簡潔にし、System.Runtime.CompilerServices.AsyncHelpersを活用した新しい実装パターンへ移行します。Issue #121064の修正に対応しています。
変更内容
- src/coreclr/vm/assembly.cpp: 非同期Main処理の一時的なコード85行削除、新APIへの統合(+6/-91)
- src/coreclr/vm/corelib.h: 不要な定義を5行削除
- src/coreclr/vm/metasig.h: 関連する4行のシグネチャ定義を削除
- src/coreclr/vm/qcallentrypoints.cpp: 新しいQCall エントリーポイント追加(+1)
- src/coreclr/vm/wasm/entrypoints.h: WebAssembly用エントリーポイント追加(+1)
- src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/AsyncHelpers.Browser.cs: Browser固有の非同期ヘルパー実装追加(+5)
- src/native/libs/System.Native.Browser/native/main.ts: 非同期Main処理のJavaScript実装追加(+11)
- TypeScript型定義とJavaScript相互運用層: Browser環境での非同期実行対応
パフォーマンスへの影響
影響なし。本変更は実装の整理であり、実行時のパフォーマンスには直接的な変化はありません。むしろコードベースの簡潔化により、保守性が向上します。
関連Issue
#121064
その他
- Browser/WebAssembly環境を対象とした変更が中心です
- 新しいAPI採用により、非同期Main処理がより標準化された形式へ統一されます
- TypeScript/JavaScript層での実装追加により、Browser環境での非同期実行がより堅牢になります
#124905 [browser] Webcil alignment
- 作成者: @pavelsavara
- 作成日時: 2026年02月26日 15:38:29(UTC)
- マージ日時: 2026年02月27日 09:00:48(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
Webcilfォーマットの標準化と堅牢性向上を目指すPRです。セクション配置の16バイト境界アライメント、デバッグディレクトリ修正ロジックの改善、ビッグエンディアン環境でのヘッダーパース버그修正、およびAPI命名規約をWebCil*からWebcil*に統一しています。
変更内容
コア機能の改善:
- WebcilConverter.cs: セクションデータを16バイト境界にアライメント、ゼロパディング対応。
TranslateFileOffsetメソッドで各セクションごとのPEファイルオフセット→Webcilオフセット変換、デバッグディレクトリサイズ検証追加 - WebcilReader.cs: ビッグエンディアンプラットフォームで
pe_debug_sizeがpe_debug_rvaに誤割り当てされていたバグ修正、RVA→ファイルオフセット変換時の範囲チェック追加 - WebcilHeader.cs: フィールド名を
snake_case→PascalCaseに統一(ファイル名もWebciHeader.cs→WebcilHeader.csに修正)
API/ビルド統一:
- MSBuildタスク名、プロパティ名、出力アイテム名を
WebCil*→Webcil*に統一 - ドキュメント、テストコード、C実装(webcil-loader.c)のcasing更新
パフォーマンスへの影響
16バイトセクションアライメントにより、WebAssemblyローダーの互換性向上が期待できます。パディング追加によるファイルサイズ増加は軽微(セクションごと最大15バイト)。メモリ或いは実行速度への悪影響は想定されません。
関連Issue
なし
その他
注意点: Copilotレビューで指摘された3点の潜在的な問題:
CopySectionsのパディング計算がint型で実施され、2GB以上の出力ファイルでオーバーフローの可能性TranslateFileOffsetがセクション配列インデックスを順序依存で処理、配列の順序ズレで範囲外エラーのリスクWebcilWasmWrapper.csの例外がException基底クラスで投出、診断性の低下
これらは既存の実装規模では問題ないと思われますが、今後の拡張時に対応推奨。
#124892 Convert verbatim string literals to raw string literals in System.Text.Json tests
- 作成者: @eiriktsarpalis
- 作成日時: 2026年02月26日 12:10:10(UTC)
- マージ日時: 2026年02月27日 10:46:52(UTC)
- ラベル: area-System.Text.Json
概要
System.Text.Json テストスイート全体で、@" 型の冗長な文字列リテラルを C# 12 の raw string literals (""") に変換しました。121個のテストファイル中、2,050個の変換を実施。テストコードのみの変更で、JSON等のテストデータの可読性が大幅に向上します。すべての 58,449 テストが合格済み。
Before/After 例:
// Before
string json = @"{""Name"": ""Angela"", ""Manager"": { ""$ref"": ""1"" }}";
// After
string json = """{"Name": "Angela", "Manager": { "$ref": "1" }}""";
変更内容
- 対象ファイル数: 121 個のテストファイル
- 変換対象:
- 多行の
@"リテラル(すべて変換) - シングルライン
@"のエスケープクォート ("") を含むもの(変換) - JSON 形式のコンテンツ(変換)
InlineData,Assert.Equal/Contains, JSON ビルダーなど
- 多行の
- 非変換:
- 補間文字列 (
$@",@$") - 連結文字列
- エスケープなしの単純なシングルライン
@"リテラル
- 補間文字列 (
- プロダクトコード変更: なし(テストのみ)
パフォーマンスへの影響
影響なし
本変更はテストコードの形式改善のみで、ランタイム動作、コンパイル時間、テスト実行パフォーマンスに対する技術的な影響はありません。Raw string literals と verbatim strings は C# コンパイラで同一にコンパイルされます。
関連Issue
なし
その他
- テスト検証: 3 つのテストプロジェクト(System.Text.Json.Tests、System.Text.Json.SourceGeneration.Tests、Common)全体で 58,449 テストが合格
- コード品質向上: JSON テストデータが実際の JSON 形式のまま記述されるため、クォート重複エスケープ(
""")の混乱が解消され、メンテナンス性が向上 - C# 言語バージョン要件: C# 11 以上対応済み(raw string literals はC# 11 で導入)
#124885 [release/10.0] Source code updates from dotnet/dotnet
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年02月26日 07:24:47(UTC)
- マージ日時: 2026年02月27日 14:29:17(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/dotnetのVMR(Virtual Monolithic Repository)からの定期的なコードフロー更新PR。このPRは2026年2月26日時点のソースコード変更と依存関係の更新を含んでいます。主にRoslyn、NuGet、System.Text.Jsonなどの主要ライブラリの依存関係が複数の関連リポジトリ(Arcade、ASP.NET Core、EFCore、SDK等)から更新されています。
変更内容
- eng/Version.Details.props / .xml: CodeAnalysis(5.0.0-2.26117.115 → 5.0.0-2.26125.123)、DotNet.Arcade.Sdk、Build.Tasks系、NETCore.App.Ref(10.0.4 → 10.0.5)、System.Text.Json等の依存バージョン更新
- global.json: SDKバージョンの更新
- NuGet.config: NuGetフィード設定の更新
- eng/Versions.props: 関連するビルド構成の更新
- eng/common/vmr-sync.ps1/sh: VMR同期スクリプトの改善
- eng/common/tools.ps1/sh: ツール初期化スクリプトの更新
- eng/common/templates/vmr-build-pr.yml: VMRビルドテンプレートの調整
関連リポジトリの更新:Arcade、ASP.NET Core、Command-Line-API、EFCore、Roslyn、Runtime、SDK、SourceLink等
パフォーマンスへの影響
影響なし。このPRは依存関係と設定の更新が主であり、ランタイムパフォーマンスに直接的な影響はありません。ただしSystem.Text.Json(10.0.4 → 10.0.5)の更新に関しては、マイナーバージョン更新のため潜在的な最適化が含まれている可能性があります。
関連Issue
なし
その他
- このPRはdotnet-maestro[bot]による自動化されたコードフロー更新です
- リリースブランチ
release/10.0.1xxベースでの更新 - 複数の関連リポジトリからの同期が含まれており、エコシステム全体の統合更新を表しています
- セキュリティ脆弱性修正やAPI破壊的変更の具体的な詳細は、各リポジトリのコミット履歴を参照する必要があります
#124882 Cleanup flowgraph files
- 作成者: @AndyAyersMS
- 作成日時: 2026年02月26日 02:25:10(UTC)
- マージ日時: 2026年02月27日 22:08:44(UTC)
- ラベル: area-CodeGen-coreclr
概要
dotnet/runtimeのJIT(Just-In-Time)コンパイラのフローグラフ関連ファイルに対するコード品質改善PRです。コメントのタイポ修正、型付けミスの修正、到達不可能なコードの削除、変数シャドーイングの解決など、複数の技術的負債を解消しています。機能的な変更ではなく、コード保守性の向上が主目的です。
変更内容
- fgbasic.cpp: コメント内のタイポを修正(6行変更)
- fgdiagnostic.cpp: 到達不可能なコードを削除、冗長なコードを整理(18行削除)
- fgehopt.cpp: 型付けミスの修正と不要なコード削除(15行追加、12行削除)
- fgflow.cpp: フローグラフ処理の改善(7行追加、1行削除)
- fginline.cpp: インライン化処理の引数チェック論理を修正(8行変更)
- fgopt.cpp: 未使用またはシャドーイングの変数を修正(7行追加、16行削除)
- fgprofile.cpp: プロファイル関連のコード整理(7行追加、14行削除)
- fgprofilesynthesis.cpp: コード品質改善(19行追加、18行削除)
- fgwasm.cpp/fgwasm.h: WASM関連のダングリングBB0問題を修正、変数シャドーイングを解決(15行追加、14行削除)
パフォーマンスへの影響
影響なし。本PRは機能的な変更を含まず、コンパイルパフォーマンスおよび生成コードのパフォーマンスには影響しません。
関連Issue
なし
その他
- Copilot Code Reviewが10個の変更ファイル全てをレビューし、新規コメントなしで承認
- タイポ修正、型安全性改善、コード到達可能性の改善など、コード品質向上に特化したメンテナンスPR
- WASM向けコンパイラのダングリングBB0(Basic Block 0)問題の修正により、WASMコンパイラの正確性を向上
#124873 [wasm][coreclr] Fix prestub of methods with IL helper stubs
- 作成者: @radekdoulik
- 作成日時: 2026年02月25日 21:44:03(UTC)
- マージ日時: 2026年02月27日 11:30:13(UTC)
- ラベル: arch-wasm area-VM-coreclr
概要
WebAssembly(WASM)環境においてILヘルパースタブを持つメソッドのプレスタブ処理を修正しました。Issue #121955で報告された問題に対応するもので、CoreCLRのプレスタブ実装とインタープリタコンパイラの処理の整合性を改善しています。
変更内容
- src/coreclr/vm/prestub.cpp: 8行追加 - ILヘルパースタブを持つメソッドに対するプレスタブ処理を改善
- src/coreclr/interpreter/compiler.cpp: 3行削除 - インタープリタコンパイラの不要な処理を削除
パフォーマンスへの影響
影響なし(修正は機能的な正確性の向上であり、パフォーマンス特性への直接的な改善または悪化は認められません)
関連Issue
#121955
その他
- 本変更はWASM環境でのみ関連する修正です
- プレスタブはメソッドの初回実行時に動的コンパイルをトリガーするメカニズムであり、その正確な動作はメソッド解決とネイティブコード生成の正確性に影響します
- 変更のリスクは限定的(影響範囲がWASM+ILヘルパースタブのシナリオに限定)
#124861 Implement AsyncHelpers.TailAwait in the interpreter and use it for instantiating and unboxing stubs on CoreCLR
- 作成者: @jakobbotsch
- 作成日時: 2026年02月25日 16:11:36(UTC)
- マージ日時: 2026年02月27日 08:49:49(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
CoreCLRの interpreter において AsyncHelpers.TailAwait intrinsic を実装し、instantiating と unboxing stubs で使用するようにしました。これにより不要な continuation の生成が削減され、NativeAOT と同様の最適化が CoreCLR にも適用されます。
// TailAwait は非同期操作を tail call で実行し、
// 追加の continuation 構造なしで awaiter を処理可能にします
変更内容
- compiler.cpp/compiler.h:
AsyncHelpers.TailAwaitの interpreter コンパイル処理を実装(19 行追加) - intops.def:
TailAwait操作コードを新規定義 - intrinsics.cpp:
TailAwaitintrinsic の登録 - corelib.h:
AsyncHelpers.TailAwaitの宣言追加 - interpexec.cpp: interpreter 実行時の
TailAwaitサポート実装(13 行追加) - prestub.cpp: instantiating/unboxing stubs での
TailAwait使用(10 行追加)
パフォーマンスへの影響
改善: instantiating/unboxing stubs での continuation 生成が削減され、メモリ割り当て削減と実行効率が向上します。NativeAOT で既に実装されていた最適化を CoreCLR interpreter にも拡大するため、非同期メソッドのパフォーマンスが向上する見込みです。
関連Issue
なし
その他
変更は既存の NativeAOT 実装に従っており、interpreter と CoreCLR ランタイムの最適化の一貫性を向上させています。Copilot による自動レビューでは問題指摘なし。
#124859 [runtime-diagnostics] Workaround for publish test results regression
- 作成者: @max-charlamb
- 作成日時: 2026年02月25日 16:05:48(UTC)
- マージ日時: 2026年02月27日 15:43:52(UTC)
- ラベル: area-Diagnostics-coreclr
概要
Azure Pipelines のテスト結果公開における回帰問題を回避するため、runtime-diagnostics.yml に対応策を追加しました。テスト結果の公開処理に関連する設定が変更され、パイプラインの動作が改善されています。
変更内容
- eng/pipelines/runtime-diagnostics.yml: 10行追加
- テスト結果公開処理の回帰問題に対する回避策を実装
- パイプラインの診断関連設定に対応策を追加
パフォーマンスへの影響
影響なし (パイプライン設定の調整であり、ランタイムのパフォーマンスへの直接的な影響はありません)
関連Issue
その他
- 本変更は Azure Pipelines タスクの回帰問題に対応するもので、ビルド/テストパイプラインの安定性向上が目的です
runtime-diagnosticsパイプラインに限定された変更となっています
#124856 Fix x509-store for illumos
- 作成者: @gwr
- 作成日時: 2026年02月25日 13:21:41(UTC)
- マージ日時: 2026年02月27日 00:40:31(UTC)
- ラベル: area-System.Security community-contribution
概要
illumos プラットフォームにおいて、X.509 証明書ストアのディレクトリ読み込みでファイル名が 1 文字のみ読み込まれる問題を修正しました。sizeof(d->d_name) の使用を削除し、NAME_MAX または MAXNAMLEN を使用することで、完全なファイル名の読み込みを実現しています。
// illumos では dirent 構造体の d_name フィールドのサイズが固定されておらず、
// sizeof(d->d_name) では正確なバッファサイズが得られない問題がありました
// 修正により NAME_MAX/MAXNAMLEN で適切なバッファサイズを確保
変更内容
- pal_x509.c: X.509 証明書ストア読み込み処理の修正
sizeof(d->d_name)の使用を廃止NAME_MAXまたはMAXNAMLENを使用してファイル名バッファを適切に確保(+16/-3 行)
パフォーマンスへの影響
影響なし。パフォーマンス改善ではなく、illumos プラットフォームにおける機能的な問題修正です。
関連Issue
明記なし
その他
- プラットフォーム固有の問題: この修正は illumos/Solaris プラットフォーム専用です
- 互換性: 既存の他プラットフォーム(Linux、Windows など)への影響はありません
- 重要度: illumos 環境では証明書ストアを使用できない致命的な問題であるため、必須の修正です
#124822 Replace GCX_COOP with EBR for EEHashTable bucket reclamation
- 作成者: @AaronRobinsonMSFT
- 作成日時: 2026年02月24日 21:03:49(UTC)
- マージ日時: 2026年02月27日 01:48:43(UTC)
- ラベル: area-VM-coreclr
概要
EEHashTableのバケット配列解放時にGCX_COOP(協調的GCモード遷移)をEpoch-Based Reclamation(EBR)に置き換え。これにより、GC関連のロック競合を減らし、より安全で効率的なメモリ回収メカニズムを実装します。HashMap同様のパターンに統一しました。
変更内容
- ebr.h/cpp: EBRコレクターの共有インスタンス
g_EbrCollectorを追加し、初期化・クリーンアップロジックを拡張 - eehash.h/cpp:
AllocateEEHashBuckets・FreEEHashBucketsヘルパー関数を新規追加(HashMapパターンに統一) - eehash.inl: GCX_COOP_NO_THREAD_BROKENを削除し、EBRベースの遅延削除ロジックに変更(69行削減)
- syncclean.cpp/hpp:
SyncClean::AddEEHashTableおよび関連クリーンアップインフラを削除 - ceemain.cpp: g_EbrCollector初期化処理を追加
- finalizerthread.cpp: g_EbrCollector クリーンアップ処理を追加
- その他:
VolatilePtr::Store()前の冗長なMemoryBarrier()削除、CrstTypes定義の更新
パフォーマンスへの影響
- 改善点: GCX_COOP遷移による中断が不要になり、バケット配列リサイズ時のGC遅延が軽減される
- メモリ効率: EBRは遅延削除により世代別回収より効率的。古いバケット配列がEBRエポックで安全に回収される
- 懸念点: EBRコレクターの共有インスタンス追加によるメモリオーバーヘッド(微小)
関連Issue
#124307(HashMapのGCX_COOP置き換え)の後続実装
その他
- 互換性: 内部実装変更のため公開API影響なし
- パターン統一: HashMapと同一の
AllocateBuckets/FreeBucketsパターンを採用し、コード保守性向上
#124780 [cDAC] Fix EEClass validation corner case
- 作成者: @max-charlamb
- 作成日時: 2026年02月24日 02:18:39(UTC)
- マージ日時: 2026年02月27日 15:05:39(UTC)
- ラベル: area-Diagnostics-coreclr
概要
cDAC(Compact Diagnostics and Analysis Code)におけるEEClass検証の不具合を修正したPull Requestです。SOSデバッガが無効なメモリアドレスをGetMethodTableDataに渡す際、そのアドレスが偶然MethodTableへのポインタを持つため初期検証をパスしてしまう問題を解決しました。修正後は、EEClass全体が読み取り可能で有効であることを確認してから処理を進めるようになります。
変更内容
- TypeValidation.cs (+34行): EEClass検証ロジックの強化。MethodTableの検証時に、EEClass(Execution Engine Class)が実際に読み取り可能であることを確認する検証ロジックを追加
- MethodTableTests.cs (+112行): EEClass検証のコーナーケースをカバーする単体テストを新規追加
- TestHelpers.cs (+31行): テストヘルパー関数の拡張
- VarargPInvokeDumpTests.cs (+3/-2行): 既存テストの微調整
- Microsoft.Diagnostics.DataContractReader.DumpTests.csproj (+1行): テストプロジェクト参照の追加
パフォーマンスへの影響
影響なし。本修正はデバッガの診断機能に関する検証処理の改善であり、ランタイムのパフォーマンスには直接的な影響を与えません。
関連Issue
なし
その他
- CIテスト失敗の根本原因は、SOSが無効なメモリアドレス(00007ff8e61e7ac8)をGetMethodTableDataに渡していたことです
- エラーコード: cDAC: 80131c49(E_FAIL)、DAC: 80070057(E_INVALIDARG)
- 修正により、無効なメモリ参照を検出してアサーション前に適切なエラーハンドリングが可能になります
#124760 Adding GetHandleEnum and GetHandleEnumForTypes cDAC APIs
- 作成者: @rcj1
- 作成日時: 2026年02月23日 18:56:39(UTC)
- マージ日時: 2026年02月27日 02:43:57(UTC)
- ラベル: area-Diagnostics-coreclr
概要
このPRは、cDAC(Common Data Access Component)APIにGetHandleEnumとGetHandleEnumForTypesという2つの新しいAPIを追加するものです。これらのAPIは、.NETランタイムのハンドルテーブルを列挙するための機能を提供し、診断ツールがGCハンドルやCOMラッパーオブジェクトの情報にアクセスできるようになります。
変更内容
- cDAC APIレイヤー:
IBuiltInCOMインターフェースとBuiltInCOM実装クラスを新規追加し、ハンドル列挙機能を提供 - GCコンポーネント:
gc.hとgcinterface.hにハンドル列挙関連の宣言を追加 - データ構造の拡張:
ComCallWrapper、HandleTable、HandleTableBucket、HandleTableMap、TableSegment、SimpleComCallWrapperなどのデータモデルクラスを追加 - SOSDacインターフェース:
ISOSDacInterface.csとSOSDacImpl.csにGetHandleEnumとGetHandleEnumForTypesメソッドを実装(合計170行以上追加) - ドキュメント:
BuiltInCOM.mdとGC.mdにデータコントラクト仕様を記載
パフォーマンスへの影響
直接的なパフォーマンスへの影響なし。これは診断API追加であり、通常のランタイム実行パスには組み込まれていません。ハンドル列挙はオンデマンドで呼び出される機能です。
関連Issue
Issue #124689(このPRで修正)
その他
- 互換性:新規API追加のため、既存コードへの互換性への影響なし
- APIの性質:内部診断API(cDAC)の拡張であり、公開APIの変更ではない
- テストコード(GCRoots/Program.cs)も更新され、新機能の動作確認が含まれている
#124685 [Wasm RyuJit] Type Index Relocation Support in Wasm Object Writer
- 作成者: @adamperlin
- 作成日時: 2026年02月21日 01:49:47(UTC)
- マージ日時: 2026年02月27日 01:05:07(UTC)
- ラベル: arch-wasm area-crossgen2-coreclr
概要
WebAssemblyのRyuJIT対応において、型インデックスのリロケーション機構を実装しました。WasmTypeNodeシンボルが型情報を管理し、オブジェクトライタがシグネチャに対してモジュール内でのインデックスを割り当て、WASM_TYPE_INDEX_LEBリロケーションを解決します。現在はテスト用にvoid(int, int)シグネチャ(マネージド静的メソッドの低レベル表現)がハードコードされています。
変更内容
- WasmTypeNode.cs: 型ノード定義の更新(33行追加/-30行削除)
- WasmTypes.cs: Wasm型定義の新規ファイル移行(272行追加)
- WasmObjectWriter.cs: 型インデックス割り当てロジック追加(143行追加/-46行削除)
- Relocation.cs:
WASM_TYPE_INDEX_LEBリロケーション型サポート(13行追加/-5行削除) - SectionWriter.cs: セクション書き込み機能拡張(14行追加/-1行削除)
- WasmNative.cs: 型定義のWasmTypes.csへの移行(-150行削除)
- ObjectWriter.cs、CorInfoImpl.cs等: 型参照解決の統合と微調整
パフォーマンスへの影響
影響なし。本変更はWebAssemblyコンパイル時の型シグネチャ管理構造の再編成であり、ランタイム実行時のパフォーマンスには直接的な影響を与えません。
関連Issue
なし
その他
- 互換性: 内部実装の整理であり、公開APIの変更なし
- 今後の作業: JIT側で動的にシグネチャをリクエストする仕組みの実装が予定されていると想定されます
- テスト状況: 現在はハードコードされたシグネチャでインターフェースと解決ロジックのテストが行われています
#124638 Logging source generator: support generic methods (lift SYSLIB1011)
- 作成者: @Copilot
- 作成日時: 2026年02月20日 13:01:59(UTC)
- マージ日時: 2026年02月27日 10:15:02(UTC)
- ラベル: area-Extensions-Logging
概要
LoggerMessage ソースジェネレータが汎用ログメソッドをサポートするようになりました。従来は SYSLIB1011 エラーで拒否されていた汎用メソッドが生成可能に。allows ref struct 制約(C# 13)を持つメソッドのみ SYSLIB1011 が発生します。ボックス化を避けた高性能なログ出力が実現可能です。
// 従来: SYSLIB1011エラー。現在: 動作可能(TCodeはボックス化されない)
[LoggerMessage(0, LogLevel.Trace, "Received {Code} ({Length} bytes)")]
public static partial void PacketReceived<TCode>(ILogger logger, TCode code, int length)
where TCode : struct, Enum;
変更内容
Parser (LoggerMessageGenerator.Parser.cs)
method.Arity > 0の無条件拒否判定を削除LoggerMethodTypeParameter/LoggerMethodTypeParameterSpec型パラメータデータ構造を追加GetTypeParameterConstraintsメソッドで全制約タイプをサポート:class/class?、struct、unmanaged、notnull、基底型、インターフェイス、Nullable制約、new()allows ref struct検出時はSYSLIB1011を発行
Emitter (LoggerMessageGenerator.Emitter.cs)
UseLoggerMessageDefineパスから汎用メソッドを除外(静的デリゲートキャッシュが型パラメータをキャプチャできないため)- 生成状態構造体を汎用化(
__M1Struct<T>など) - 偏関数シグネチャに型パラメータと
where句を出力 GetTypeParameterList/GetTypeConstraintsを廃止し、文字列割り当てを回避
その他
- インクリメンタルキャッシュが型パラメータをラウンドトリップ
- ドキュメント・リソースファイル(16言語対応)を更新
パフォーマンスへの影響
改善点:
- 汎用メソッド経由での値型(struct)ログの場合、ボックス化が完全に回避される
- 文字列割り当て削減:
GetTypeParameterList/GetTypeConstraintsの廃止により、パーサーおよび出力パスでのメモリ割り当て削減 - netstandard2.0 互換性維持:LINQ
Contains()の代わりにIndexOf()を使用
制限:allows ref struct 制約を持つメソッドは引き続き不可(生成構造体が参照struct型フィールドを保持できないため)
関連Issue
#90589(Logging source generator should support generic methods)
その他
SYSLIB1011診断がallows ref struct制約のみに限定され、より正確な警告メッセージに変更- 複数の型パラメータ、複合制約、Nullable制約など全パターンのテストを追加
- 基線テスト(Baselines/TestWithGenericMethods.generated.txt)で生成コード品質を検証
#124603 [API] RuntimeFeature.IsMultithreadingSupported
- 作成者: @pavelsavara
- 作成日時: 2026年02月19日 16:30:03(UTC)
- マージ日時: 2026年02月27日 08:43:00(UTC)
- ラベル: arch-wasm area-System.Threading os-browser
概要
新しいパブリックAPI RuntimeFeature.IsMultithreadingSupported を追加し、ランタイムがマルチスレッド機能をサポートしているかを実行時に判定できるようにしました。これにより、シングルスレッド環境(WebAssemblyなど)での条件分岐が容易になります。
if (RuntimeFeature.IsMultithreadingSupported)
{
// マルチスレッド処理
}
else
{
// シングルスレッド処理
}
変更内容
- RuntimeFeature.cs:
IsMultithreadingSupportedプロパティを新規追加(37行追加) - System.Runtime.cs: パブリックAPI参照を4行追加
- スレッド関連ファイル: マルチスレッド機能チェックの条件分岐をこの新API に統一
- Thread.cs、Task.cs、ThreadPool.cs、Monitor.cs など複数ファイルで既存の環境判定ロジックを置き換え
- JavaScriptテスト: JSExport/JSImportテストでマルチスレッド非サポート環境向けのテスト修正(16行以上)
- PlatformDetection.cs: プラットフォーム検出ロジックを拡張(29行追加)
パフォーマンスへの影響
影響なし。新しいプロパティはコンパイル時に最適化可能なフラグであり、実行時オーバーヘッドを追加しません。条件分岐の統一により、プラットフォーム別のコード分岐がより明確になります。
関連Issue
- #77541(メインの修正対象)
- PR #123329(前提となる変更)
その他
本PRは、WebAssembly(WASM)やシングルスレッド環境でのランタイムサポート整備の一環です。マルチスレッド機能を使用するライブラリやアプリケーションが、実行環境に応じた適切な動作を実装できるようになります。
#124409 Vectorize Adler32
- 作成者: @stephentoub
- 作成日時: 2026年02月13日 23:30:18(UTC)
- マージ日時: 2026年02月27日 00:17:51(UTC)
- ラベル: area-System.IO.Hashing
概要
Adler32ハッシュアルゴリズムの実装をSIMD命令を使用してベクトル化し、パフォーマンスを大幅に向上させました。大量のデータに対するハッシュ計算が高速化されます。
// 従来: スカラー計算による逐次処理
// 新版: SIMD命令による並列化
変更内容
- Adler32.cs: ベクトル化された実装を追加(+295行)。従来のスカラー処理と並列処理の最適なアルゴリズムを組み合わせた実装に変更
- Adler32Tests.cs: ベクトル化実装の正確性を検証するテストケース追加(+125行)
パフォーマンスへの影響
大幅な改善を期待
- SIMD命令(SSE2、AVX2など)による並列処理により、Adler32計算のスループットが向上
- 特に大容量データのハッシュ計算で顕著な性能改善が期待できます
- CPUのベクトル演算ユニットを活用することで、従来のスカラー実装との比較で数倍の高速化が見込まれます
関連Issue
なし
その他
- 複数のレビュアーによる厳密なレビューが実施されており、パフォーマンス最適化の信頼性が確保されています
- System.IO.Hashingライブラリのコア機能の高速化であり、このライブラリを使用するアプリケーション全体のハッシュ処理パフォーマンスに直接的に好影響をもたらします
#124396 Backport XML documentation for WebProxy and IWebProxyScript
- 作成者: @Copilot
- 作成日時: 2026年02月13日 18:18:00(UTC)
- マージ日時: 2026年02月27日 00:00:11(UTC)
- ラベル: area-System.Net
概要
System.Net.WebProxyとIWebProxyScriptに対する包括的なXML documentation(IntelliSense対応のドキュメント)をbackportしました。dotnet-api-docsから移植され、11個のコンストラクタ、6つのプロパティ、3つのメソッドをカバーしています。.NET Framework固有の内容や実装詳細を除外した実用的なドキュメント整備です。
変更内容
- System.Net.WebProxy.csproj -
UseCompilerGeneratedDocXmlFileフラグを削除してコンパイラ生成XMLドキュメント有効化 - WebProxy.cs - 以下のXML docを追加:
- 型レベルドキュメント
- 11個のコンストラクタ(パラメータなし、Uri/文字列ベース、バイパス設定、認証情報対応)
- 6つのプロパティ(Address、BypassProxyOnLocal、BypassList、BypassArrayList、Credentials、UseDefaultCredentials)
- 3つのメソッド(GetProxy、IsBypassed、GetDefaultProxy)
- シリアライズ関連メンバー(SerializationContext対応、PlatformNotSupportedException記載)
- IWebProxyScript.cs - 型レベルおよび全インターフェースメソッド(Close、Load、Run)のXML doc追加
パフォーマンスへの影響
影響なし。XMLドキュメントはコンパイル時に生成され、実行時のパフォーマンスへの悪影響はありません。
関連Issue
#124227(同様のbackport指針に基づく)
その他
- .NET Framework固有の内容(AppDomain参照、プラットフォーム固有動作)を除外
- 自動プロパティ(CredentialsおよびUseDefaultCredentials)から不正確な例外ドキュメント削除
- PlatformNotSupportedExceptionを投げるメンバー(シリアライズメンバー、GetDefaultProxy)に適切な例外ドキュメント追加
- コンストラクタの冗長な説明を削除し、実装詳細ではなくコアAPI動作に焦点
#123952 Enable runtime-async feature switch for NativeAOT System.Private.CoreLib
- 作成者: @Copilot
- 作成日時: 2026年02月03日 18:26:22(UTC)
- マージ日時: 2026年02月27日 08:04:38(UTC)
- ラベル: area-NativeAOT-coreclr runtime-async
概要
NativeAOT対応のSystem.Private.CoreLibでruntime-asyncコンパイラ機能を有効化しました。この機能により、async メソッドがコンパイラ生成のステートマシンではなくランタイムのネイティブ非同期サポートを使用するよう変換され、パフォーマンスが向上します。Preview機能の使用警告(CA2252)はプロジェクトレベルで抑制しています。
// runtime-asyncが有効になると、async メソッドは以下のように変換される
public async Task MyAsyncMethod()
{
await SomeOperation();
}
// → コンパイラがAsyncHelpers.Awaitを注入してランタイムネイティブ非同期に変換
変更内容
- src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj
<Features>$(Features);runtime-async=on</Features>を追加(riscv64/loongarch64を除く)- CA2252警告を抑制(
<NoWarn>$(NoWarn);CA2252</NoWarn>) - 変更行数:+7/-0
パフォーマンスへの影響
改善点:async メソッドがランタイムネイティブ非同期に変換されることで、パフォーマンス向上を期待できます。コンパイラ生成のステートマシンのオーバーヘッドが削減されます。
注記:riscv64/loongarch64アーキテクチャではこの機能が無効化されており、これらのプラットフォームでの互換性が確保されています。
関連Issue
なし
その他
- CA2252抑制がプロジェクトスコープである理由:
runtime-async=onはすべてのasync メソッドに対してAsyncHelpers.Await呼び出しを注入するため、個別メソッドレベルの抑制は実用的でない AsyncHelpers.Awaitメソッドが[RequiresPreviewFeatures]属性でマークされているため警告が発生
#123830 Change Interpreter to share code with the JIT and use its CompAllocator
- 作成者: @davidwrighton
- 作成日時: 2026年01月31日 01:41:03(UTC)
- マージ日時: 2026年02月27日 00:41:03(UTC)
- ラベル: area-CodeGen-coreclr
概要
InterpreterがJITと共有コードを使用するため、JITのCompAllocatorを採用しました。これにより、メモリ割り当てを効率的に管理し、割り当てコストをカテゴリ化・計測できるようになります。新しいjitsharedディレクトリを作成し、InterpreterとJIT間のコード重複を削減します。環境変数DOTNET_JitMemStats=1で統計情報サマリーを、=2でメソッド別データを取得できます。
変更内容
新規ディレクトリ作成:
src/coreclr/jitshared/配下に共有割り当てインフラストラクチャを実装arenaallocator.h: アリーナ割り当て機能compallocator.h: CompAllocator実装histogram.h/cpp: メモリ統計情報の計測機能dumpable.h: 統計ダンプ機能
Interpreter側の変更:
compiler.cpp/h: CompAllocatorを使用した割り当てロジック変更interpalloc.h: 新規 - Interpreter用割り当てラッパーinterpmemkind.h: 新規 - 割り当てカテゴリ定義(Var、Instruction、GC等)- 既存割り当てコードを削除・リファクタリング
JIT側の変更:
alloc.cpp/h: 共有実装に移行、コード大幅削減(-233行)compiler.cpp/hpp: CompAllocator参照を更新
パフォーマンスへの影響
メモリ効率の改善:
- Interpreterのメモリ使用量がJITの約1/10に削減(テスト結果より)
- 2643メソッドで平均16.5KBのメモリ使用(JIT比較時に削減)
- 割り当てカテゴリ別統計により、Var領域が全体の40.76%(最大コスト)と判明
計測結果 (テスト実行時):
// Interpreter統計例
// 合計割り当てメモリ: ~43.7MB (2643メソッド)
// 平均: 16,564 bytes/メソッド
// 最大: 131,072 bytes
// 割り当てカテゴリトップ3:
// - Var: 17.8MB (40.76%)
// - GC: 7.3MB (16.71%)
// - Instruction: 6.2MB (14.22%)
懸念点: 永続メモリ割り当てがAllocMethodData呼び出しに制限され、将来の変更対象となっている点に注意
関連Issue
なし
その他
- 長期的な目標: jitstd、Collections、メソッド命名インフラ等をjitsharedに移動し、JIT/Interpreter間の重複削減を継続
- 統計情報取得: 環境変数設定により、割り当てコストの詳細なプロファイリングが可能になり、最適化の指針を提供
- 互換性: Interpreterの動作は基本的に変わらず、メモリ管理が内部的に改善される形式(破壊的変更なし)
- CMakeLists.txt更新: jitsharedへのパス追加で、InterpreterとJIT両者が
#123026 Improve System.Reflection.Context.Tests code coverage from ~35% to 87%
- 作成者: @Copilot
- 作成日時: 2026年01月09日 05:34:01(UTC)
- マージ日時: 2026年02月27日 03:07:36(UTC)
- ラベル: area-System.Reflection
概要
System.Reflection.Context.Tests のコードカバレッジを約35%から87%に大幅に向上させるPRです。新たに21個のテストファイルを追加し、649個のテストすべてが合格しています。テスト内容は、カスタムタイプ、メソッド、コンストラクタ、イベント、プロパティ、フィールド、パラメータ、モジュール、アセンブリなど、反射コンテキスト機能の各要素を網羅的にテストしています。
変更内容
新規テストファイル (21個, 約5,100行追加)
CustomTypeTests.cs- カスタム型の投影機能テストCustomMethodInfoTests.cs- メソッド情報の操作テストCustomConstructorInfoTests.cs- コンストラクタ情報のテストCustomEventInfoTests.cs- イベント情報のテストCustomParameterInfoTests.cs- パラメータ情報テスト(オプション・out パラメータ含む)ExtendedTypeTests.cs- ジェネリック型、列挙型を含む型操作の包括的テストExtendedPropertyInfoTests.cs,ExtendedFieldInfoTests.cs,ExtendedAssemblyTests.cs- 各リフレクション要素のテストMethodBodyTests.cs- MethodBody、ExceptionHandlingClause、LocalVariableInfo のテストAttributeInheritanceTests.cs- 属性継承動作テスト
テスト品質の改善
- ハッシュコードテストを
Assert.NotEqual(0, hashCode)から冪等性チェック(Assert.Equal(hashCode1, hashCode2))に変更 Assert.NotNull()をAssert.Empty()、Assert.Contains()、Assert.Single()など具体的なアサーションに置き換え- テスト名をテスト対象の振る舞いを明確に記述(例:
ReturnsEmptyForUnattributedField) - トートロジー的アサーション(
Assert.True(b || !b))や無意味なコメント削除
パフォーマンスへの影響
影響なし。テストコードの追加であり、ライブラリのランタイムパフォーマンスに影響しません。
関連Issue
- #26506(原元のissueのリンク)
- #123026(このPR)
その他
カバレッジ達成状況:
- 行カバレッジ:約87%(ベースライン約35%から大幅改善)
- ブランチカバレッジ:約79%(90%目標に対して11%の未達)
- メソッドカバレッジ:約89%
残存ギャップ:ブランチカバレッジは79%で、複雑なメソッド・プロパティ検索ロジック内に未カバレッジが残存
テスト組織:テストを型別の専用ファイルに整理し、ライセンスヘッダーを正しく配置、xUnit パターンを正しく使用