注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #122896 Fix IL2062 trim analysis warning with C# 14 compiler in CompilerGeneratedCodeAccessedViaReflection test
- #122894 Use Array.Copy in Match.AddMatch
- #122892 Avoid double lookup in regex's HashtableExtensions
- #122877 Update cryptography tests for Windows 7 removal.
- #122876 Fix assertion failure in ILDasm with -METADATA=RAW flag
- #122872 Remove FEATURE_EH_WINDOWS_X86 and all non-funclet EH code from JIT
- #122865 JIT: Detect degenerate switches in switch recognition
- #122850 Fix regression introduced by recent PR
- #122849 Fix TagList.CopyTo to not throw when TagList is empty
- #122820 Skip empty sections when calculating a R2R PE file layout
- #122813 Assume hash handles are always reusable in HashProviderCng.
- [#122801 browser][coreCLR] JS modules consistency via gitHash
- #122740 Fix JsonSourceGenerator verbatim identifier handling in property initializers
- #122727 Handle more async nodes on community platforms
- #122686 [release/10.0] Fix UInt128 to double conversion for values >= 2^104
- #122677 Avoid temporary List allocation with HTTP/3 trailers
- #122645 Update HybridGlobalization error messages to remove obsolete guidance
- #122627 Wasm various fixes
- #122620 [clr-interp] Tweak GC reporting
- #122490 JIT: Zero continuation return after profiler leave callback
- #122314 Merge CoreMangLib test suite
#122896 Fix IL2062 trim analysis warning with C# 14 compiler in CompilerGeneratedCodeAccessedViaReflection test
- 作成者: @Copilot
- 作成日時: 2026年01月05日 19:35:58(UTC)
- マージ日時: 2026年01月05日 19:44:23(UTC)
- ラベル: linkable-framework
概要
Roslyn 4.14.0によるC# 14コンパイラの導入に伴い、イテレータステートマシンのコード生成が変更され、IL2062トリミング分析警告が発生するようになりました。テストのIteratorWithIntegerDataflow()メソッドで、コメントアウトされていた[UnexpectedWarning("IL2062", ...)]属性をコメント解除し、この警告が期待される動作であることを示すテスト修正です。
変更内容
- ファイル:
src/tools/illink/test/Mono.Linker.Tests.Cases/DataFlow/CompilerGeneratedCodeAccessedViaReflection.cs - 変更:
IteratorWithIntegerDataflow()メソッドの[UnexpectedWarning("IL2062", ...)]属性を1行コメント解除(+1/-1) - C# 14コンパイラにおけるイテレータ状態機械の予期された動作変更に対応
パフォーマンスへの影響
影響なし。テスト期待値のみの変更であり、製品コードの動作には影響しません。
関連Issue
- #110553(C# 14コンパイラによるコード生成の動作変更に関する既知の問題)
その他
- テスト専用の変更で顧客への影響なし
- リスクは最小限(単一行の修正で、既知でドキュメント化された動作変更に対応)
- 回帰なし(コンパイラ更新による予期された結果であり、製品回帰ではない)
#122894 Use Array.Copy in Match.AddMatch
- 作成者: @stephentoub
- 作成日時: 2026年01月05日 19:18:30(UTC)
- マージ日時: 2026年01月05日 21:30:56(UTC)
- ラベル: area-System.Text.RegularExpressions
概要
System.Text.RegularExpressionsのMatch.AddMatchメソッドで、手動のループ処理をArray.Copyに置き換えることで、コードの簡潔化とパフォーマンス向上を実現した変更です。正規表現マッチング時の配列コピー処理を最適化しています。
変更内容
- ファイル:
src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Match.cs- 変更行数: +1行/-4行(計5行の変更)
Match.AddMatchメソッド内で、要素をループで個別コピーしていた処理をArray.Copyの一括コピーに変更
パフォーマンスへの影響
改善あり
Array.Copyはネイティブレベルで最適化された実装であり、ループによる個別コピーよりも高速です- 特に大量のマッチが発生する場合に効果が期待できます
- メモリ操作の効率化により、GCプレッシャーの軽減も期待可能です
関連Issue
なし
その他
- シンプルな最適化パターンで、正規表現ライブラリの内部処理の効率向上を目指しています
Array.Copyを使用することで、BCL(Base Class Library)の標準的な最適化手法を活用しています- レビュアーは自動レビューボットであり、マイナーな改善変更と考えられます
#122892 Avoid double lookup in regex's HashtableExtensions
- 作成者: @stephentoub
- 作成日時: 2026年01月05日 19:10:28(UTC)
- マージ日時: 2026年01月05日 21:29:08(UTC)
- ラベル: area-System.Text.RegularExpressions
概要
正規表現のHashtableExtensionsにおいて、Hashtableへのダブルルックアップを回避する最適化が実施されました。同じキーに対する重複した検索操作を1回に削減し、パフォーマンスを向上させています。
変更内容
- ファイル:
src/libraries/System.Text.RegularExpressions/src/System/Collections/HashtableExtensions.cs - 変更箇所: 4行追加、4行削除(合計8行)
- 主な変更: Hashtableのキー検索時に、
ContainsKeyと続くthis[key]のダブルルックアップをTryGetValueメソッド活用により1回に統合
パフォーマンスへの影響
改善: ダブルルックアップの排除により、正規表現処理時のHashtableアクセスコストが削減されます。特に大量の正規表現マッチング処理では、この最適化による効果が積み重なり、全体的なパフォーマンス向上につながります。
関連Issue
なし
その他
- 正規表現エンジンの内部最適化であり、外部APIには影響なし
- 小規模な変更ですが、正規表現処理の高頻度な内部呼び出しが多く含まれるため、システム全体でのパフォーマンス改善効果が期待できます
#122877 Update cryptography tests for Windows 7 removal.
- 作成者: @vcsjones
- 作成日時: 2026年01月05日 16:05:07(UTC)
- マージ日時: 2026年01月05日 19:55:43(UTC)
- ラベル: area-System.Security
概要
Windows 7のサポート終了に伴い、暗号化関連のテストコードを更新するPull Requestです。Windows 7専用の条件付きテストを削除し、Windows 7以外の環境での実行条件を簡素化しました。テストロジック自体の変更ではなく、プラットフォーム依存の条件分岐を整理する内容です。
変更内容
- AES関連テスト:AesCipherOneShotTests.cs、AesCipherTests.cs、AesContractTests.cs、AesModeTests.csでWindows 7関連の条件を削除
- DES関連テスト:DESCipherOneShotTests.cs、DESCipherTests.cs、DESContractTests.csでWindows 7の条件付きテスト削除と条件を簡素化
- TripleDES関連テスト:TripleDESCipherTests.cs、TripleDESContractTests.csの条件を更新
- その他:X500DistinguishedNameTests.cs、RijndaelTests.cs、DefaultDSAProvider.csなどで同様の条件削除
- 変更方法:ホワイトスペース変更を無視して確認することが推奨されています
パフォーマンスへの影響
影響なし。テストコード自体のロジック変更ではなく、実行条件の整理のみです。
関連Issue
なし。(Pull Requestタイトルに#122877と記載されていますが、具体的な関連IssueURL情報は記載されていません)
その他
- テストのみの変更で、System.Securityの本体コードへの影響はありません
- レビュアーはcopilot-pull-request-reviewer[bot]とjkotasで、作成者vcsjoneがマージしています
- 既知の失敗はSystem.Security外にあるため、マージに問題がないと判断されています
#122876 Fix assertion failure in ILDasm with -METADATA=RAW flag
- 作成者: @Copilot
- 作成日時: 2026年01月05日 14:51:00(UTC)
- マージ日時: 2026年01月05日 18:16:25(UTC)
- ラベル: area-ILTools-coreclr
概要
ILDasm で -METADATA=RAW フラグを使用した際にアサーション失敗で クラッシュする問題を修正。ELEMENT_TYPE_CMOD_INTERNAL がメタデータ情報用の配列に不足していたため、メタデータ検査が機能しない状態でした。修正では g_szMapElementType と g_szMapUndecorateType 配列に「CMOD_INTERNAL」エントリを追加し、ELEMENT_TYPE_MAX 値との一致を確保しました。
変更内容
- src/coreclr/tools/metainfo/mdinfo.cpp :
g_szMapElementTypeとg_szMapUndecorateType配列に"CMOD_INTERNAL"エントリを追加(2行追加) - src/coreclr/pal/inc/pal_assert.h : アサーションロジック調整(4行変更)
パフォーマンスへの影響
影響なし
関連Issue
dotnet/runtime #122875
その他
- リグレッション内容 :
ELEMENT_TYPE_CMOD_INTERNALは PR #106424 でcorhdr.hに追加されましたが、対応する配列エントリが同期されていませんでした - リスク評価 : 低(2行の単純な配列要素追加のみ、ロジック変更なし)
- 影響範囲 : ILDasm で
-METADATA=RAWを使用するメタデータ検査ワークフローユーザー全体
#122872 Remove FEATURE_EH_WINDOWS_X86 and all non-funclet EH code from JIT
- 作成者: @filipnavara
- 作成日時: 2026年01月05日 13:42:33(UTC)
- マージ日時: 2026年01月05日 23:46:44(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
このPRはx86プラットフォーム向けの非funclet例外処理(EH)コードとFEATURE_EH_WINDOWS_X86フラグを削除するもの。.NET Runtimeは現在funcletベースの例外処理に統一され、レガシーな非funclet実装は不要になったため、コードベースを簡潔化する変更。複数のJITコンパイラファイルから条件分岐とレガシーロジックを削除し、保守性を向上させる。
変更内容
- JIT例外処理関連: jiteh.cpp/h、importer.cpp、compiler.cpp/hから非funclet関連コード削除
- コード生成: codegenxarch.cpp(194行削除)、fgehopt.cpp(231行削除)で例外処理プロローグ/エピローグ生成ロジック簡潔化
- フローグラフ分析: fgbasic.cpp、fgdiagnostic.cpで例外ハンドラ関連の複雑な分析ロジック削除
- スコープ情報: scopeinfo.cpp、gcencode.cpp、gcinfo.cppで例外スコープ処理の簡潔化
- その他: 非funclet対応の構造体定義、AST操作、デバッグ情報処理から条件分岐削除
パフォーマンスへの影響
改善点:
- コード削除による実行ファイルサイズの軽微な削減
- 例外処理生成ロジック単純化による(JIT)コンパイル時間の若干の短縮
懸念点: 影響なし。Funclet EHはx64/ARM64で実績のある実装のため、動作パフォーマンスへの負の影響なし。
関連Issue
なし
その他
このPRはx86プラットフォームのサポート終了に向けた段階的な整理の一環と考えられる。Funclet EHへの完全統一により、例外処理関連の複雑な条件分岐が大幅に削減され、将来の保守性が向上する。
#122865 JIT: Detect degenerate switches in switch recognition
- 作成者: @jakobbotsch
- 作成日時: 2026年01月05日 10:46:14(UTC)
- マージ日時: 2026年01月05日 15:58:13(UTC)
- ラベル: area-CodeGen-coreclr
概要
JITのswitch認識機能において、すべてのsuccessorが同じブロックを対象とする退化したswitch文を検出して処理するバグ修正。issue #121691を解決するもので、switchrecognition.cpp に最小限の変更(2行追加、1行削除)が加えられている。
変更内容
- src/coreclr/jit/switchrecognition.cpp
- 退化したswitch文(すべての分岐先が同じブロック)の検出ロジックを追加
- switch文の認識処理でエッジケースを適切に処理
パフォーマンスへの影響
影響なし。この修正は既存の後段のflowgraph最適化によってswitch文が削除されるまでの間、不正な処理が行われないようにするもの。実コードでも発生しうる問題の早期検出である。
関連Issue
#121691
その他
- コメントでjakobbotschが「実際のコード内でも発生する」と述べており、単なるストレステスト時のアーティファクトではない
- 後段の最適化パスでswitch文全体が削除されるため、より複雑な処理は不要と判断されている
#122850 Fix regression introduced by recent PR
- 作成者: @jkotas
- 作成日時: 2026年01月04日 07:03:39(UTC)
- マージ日時: 2026年01月05日 07:09:27(UTC)
- ラベル: area-NativeAOT-coreclr
概要
PR #122850で導入された回帰を修正するPRです。NativeAOTランタイムのTypecast.cs内のアサーション条件を緩和し、外部ループテストで発生していたアサーション失敗エラーを解決します。具体的には、elementTypeの検証条件を見直し、より広い範囲の要素型を許容するようにしています。
変更内容
- ファイル:
src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/TypeCast.cs- アサーション条件を緩和(+2行、-1行の変更)
- elementType >= EETypeElementType.Boolean && elementType <= EETypeElementType.Doubleという制限を拡大
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRは外部ループテストで報告されたアサーション失敗に対応するもので、具体的なテスト失敗例が確認されています(Azure DevOps ビルドログ参照)。jkotasによるレビューと修正であり、NativeAOT関連のメンテナーが監視しています。
#122849 Fix TagList.CopyTo to not throw when TagList is empty
- 作成者: @Copilot
- 作成日時: 2026年01月04日 04:35:00(UTC)
- マージ日時: 2026年01月05日 20:34:44(UTC)
- ラベル: area-System.Diagnostics.Activity
概要
空のTagListに対してCopyTo(array, arrayIndex)を呼び出すとArgumentOutOfRangeExceptionが発生する問題を修正しました。空のTagListの場合、コピー対象がないためarrayIndex == array.Lengthを許可し、ActivityTagsCollectionと一貫した動作にしました。LINQ のToArray()も正常に動作するようになります。
var emptyArray = new KeyValuePair<string, object>[0];
var tagList = new TagList();
tagList.CopyTo(emptyArray, 0); // 修正前: 例外発生、修正後: 正常に動作
変更内容
- TagList.netcore.cs:
CopyToメソッドの検証ロジックを修正。arrayIndexの妥当性チェックを空チェックの前に移動し、array.Length == 0の場合でもarrayIndex == 0を許可 - TagList.netfx.cs: netcoreと同じ修正を適用
- TagListTests.cs: 以下のテストを追加
- 空のTagListでの
CopyTo動作確認(配列サイズ別) - 無効な
arrayIndex値(負数、配列長超過)で例外が発生することを確認 ICollection<T>.CopyToのカバレッジ拡張
- 空のTagListでの
- XML文書のタイプ修正("greater that" → "greater than")
パフォーマンスへの影響
影響なし。空のケースの検証ロジック順序変更のみで、実行時性能への影響はありません。
関連Issue
dotnet/runtime#122848
その他
- .NET 9以降ではNuGetパッケージの手動編集が不要になりました
- 変更は.NET 8以前で必要な場合に対応
- リスク評価: 低。空のケースのみに影響し、既存コレクション型の動作に合わせた一貫性向上です
#122820 Skip empty sections when calculating a R2R PE file layout
- 作成者: @davidnguyen-tech
- 作成日時: 2026年01月02日 15:51:56(UTC)
- マージ日時: 2026年01月05日 16:28:21(UTC)
- ラベル: area-crossgen2-coreclr
概要
R2R PE ファイルのレイアウト計算時に空のセクションをスキップするよう PEObjectWriter を改善しました。非Windows プラットフォームで空のセクションに対して不要な 64 kB パディングが割り当てられていた問題を解決し、PE ファイルサイズを大幅に削減します。
変更内容
- ファイル:
src/coreclr/tools/Common/Compiler/ObjectWriter/PEObjectWriter.cs(+14/-2) - 主な変更:
LayoutSectionsメソッドを修正し、空のセクションに対する仮想アドレス (VA) 割り当てをスキップするように実装しました - 空のセクション前の 64 kB パディング割り当てを削除
パフォーマンスへの影響
大幅な改善が確認されました
System.Web.dll を Composite R2R にコンパイルした結果(Linux & Mac):
- main ブランチ: 918 kB → 本PR適用後: 600 kB(約35%削減)
- PR #122511 ブランチ: 262 kB → 両PR適用: 70 kB(約73%削減)
PE ファイルサイズの著しい圧縮により、配布ファイルサイズが減少し、メモリ使用量も改善されます。
関連Issue
なし
その他
本変更は PR #122511 から独立しており、併用することでさらなる最適化効果が期待できます。非Windows プラットフォーム(Linux、macOS)での R2R コンパイル時に特に効果的です。
#122813 Assume hash handles are always reusable in HashProviderCng.
- 作成者: @vcsjones
- 作成日時: 2026年01月01日 03:47:25(UTC)
- マージ日時: 2026年01月05日 22:50:47(UTC)
- ラベル: area-System.Security
概要
HashProviderCngクラスにおいて、Windows 7のサポート終了に伴い、BCRYPT_HASH_REUSABLE_FLAGが常にサポートされていると仮定するように変更されました。これまでWindows 7の非互換性に対応するためのコードが存在していましたが、それらの条件分岐が不要になったため削除されています。
変更内容
- ファイル:
src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashProviderCng.cs- 追加: 8行
- 削除: 33行
- 総行数: 41行
主な変更内容:
- Windows 7互換性チェック用のロジックを削除
- BCRYPT_HASH_REUSABLE_FLAGの無条件サポートを前提とする実装に簡潔化
- ハッシュプロバイダーの初期化処理がシンプル化
パフォーマンスへの影響
改善: 不要な条件分岐が削除されることで、ハッシュプロバイダーの初期化時に若干のオーバーヘッド削減が期待されます。ただし、大幅なパフォーマンス改善ではなく、主な目的はコードの簡潔化です。
関連Issue
#71075
その他
このPull Requestは、.NET Runtimeの最小サポート対象OSからWindows 7を除外する大規模な取り組みの一部です。同様の理由で、他のコンポーネントでもWindows 7固有のコード削除が進行している可能性があります。
#122801 [browser][coreCLR] JS modules consistency via gitHash
- 作成者: @pavelsavara
- 作成日時: 2025年12月31日 14:01:28(UTC)
- マージ日時: 2026年01月05日 14:47:26(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
ブラウザ環境(WASM)で動作するJavaScript モジュールにgitHashを埋め込み、起動時に一貫性をチェックする機能を追加しました。HTTPキャッシュやビルドフォルダに矛盾したバージョンのJSファイルが存在する場合、早期に失敗させることで デバッグを容易にします。
変更内容
- libCorerun.extpost.js: gitHash埋め込み対応
- browserhost/host/index.ts: gitHash検証ロジック追加(5行)
- System.Native.Browser関連: 3つのTypeScriptファイルに検証処理を実装
- diagnostics/index.ts(10行)
- native/index.ts(12行)
- utils/index.ts(10行)
- footer.js(gitHash埋め込み)
- System.Runtime.InteropServices.JavaScript.Native関連: 4つのファイルを更新
- interop/index.ts(検証ロジック12行)
- native/index.ts(11行)
- native/cross-linked.ts(3行)
- footer.js(gitHash埋め込み)
パフォーマンスへの影響
起動時にgitHash検証を実行するため、わずかなオーバーヘッドが発生します。ただし、不整合の早期検出により長時間のデバッグを防げるため、実運用では利益があります。
関連Issue
なし
その他
WASM環境特有の問題(複数バージョンのJSモジュールが同時に読み込まれるケース)に対する防御機構です。開発時およびCI/CDパイプラインで、ビルドアーティファクトの一貫性を保証する上で有効です。
#122740 Fix JsonSourceGenerator verbatim identifier handling in property initializers
- 作成者: @Copilot
- 作成日時: 2025年12月26日 02:26:29(UTC)
- マージ日時: 2026年01月05日 21:26:02(UTC)
- ラベル: area-System.Text.Json
概要
JsonSourceGeneratorがinit-onlyプロパティのコード生成時に、C#の予約キーワードを使用したプロパティ名の前置@記号を削除していた問題を修正しました。例えば@elseというプロパティがelseとして生成され、コンパイルエラーになっていました。
class MyClass { public string @else { get; init; } }
[JsonSerializable(typeof(MyClass))]
partial class Ctx : JsonSerializerContext;
上記コードでnew MyClass(){ @else = ... }ではなくnew MyClass(){ else = ... }と誤って生成されていました。
変更内容
src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs
PropertyInitializerGenerationSpec.Nameの設定をMemberNameからNameSpecifiedInSourceCodeに変更(1行修正)- 予約キーワードを含む識別子の正しい処理を実現
src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs
- 新テスト
InitOnlyPropertyWithReservedKeywordName_CompilesSuccessfullyを追加(23行) - 予約キーワードを使用したinit-onlyプロパティが正常にコンパイルされることを検証
- 新テスト
パフォーマンスへの影響
影響なし。単一行の変更で、既に他の箇所で使用されている同じプロパティを利用しています。
関連Issue
#122732
その他
- 本修正は長年存在していたバグの解決です(回帰ではない)
- リスク評価:低。変更範囲が限定的で、生成されたプロパティ初期化子の名前にのみ影響
- 全153個のソースジェネレータユニットテストがnet11.0でRoslyn 4.4および3.11の両方で合格
- .NET 9以降、NuGetパッケージのcsprojによる手動編集は不要
#122727 Handle more async nodes on community platforms
- 作成者: @am11
- 作成日時: 2025年12月24日 23:58:38(UTC)
- マージ日時: 2026年01月05日 09:21:58(UTC)
- ラベル: area-CodeGen-coreclr community-contribution arch-loongarch64 arch-riscv
概要
LoongArch64およびRISCV64プラットフォームにおいて、非同期ノード(async nodes)の処理を追加するパッチです。NativeAOTでELF/Mach-O形式を出力する際に必要な機能を実装しており、コミュニティプラットフォーム向けの対応となります。各プラットフォームのコード生成部に8行ずつ追加されています。
変更内容
src/coreclr/jit/codegenloongarch64.cpp (+8行)
- LoongArch64プラットフォームにおける非同期ノード処理を実装
src/coreclr/jit/codegenriscv64.cpp (+8行)
- RISCV64プラットフォームにおける非同期ノード処理を実装
両ファイルに同様の変更が加えられており、プラットフォーム固有のコード生成ロジックが補完されています。
パフォーマンスへの影響
影響なし(実装補完であり、既存の処理フローに追加される機能)
関連Issue
- #121871 - 非x64 64ビットプラットフォームのテスト実施に関する課題
その他
- 本変更はNativeAOT専用です(ELF/Mach-O出力時のみ対応)
- レビュワーのjakobbotschより、CoreCLRではテスト可能であることが指摘されており、現在のテストブロックはNativeAOTの新規サポート機能に関連しています
- コミュニティプラットフォーム(LoongArch64、RISCV64)での動作確認が今後の課題となります
#122686 [release/10.0] Fix UInt128 to double conversion for values >= 2^104
- 作成者: @github-actions[bot]
- 作成日時: 2025年12月21日 10:58:40(UTC)
- マージ日時: 2026年01月05日 17:57:49(UTC)
- ラベル: Servicing-approved area-System.Numerics
概要
UInt128からdoubleへの変換で、288から2104の範囲の値が不正な結果を返す不具合を修正するバックポート。シフト演算の論理エラー(24ビット右シフトすべき箇所が40ビット右シフトになっていた)が原因。UInt128は比較的使用頻度が低い型ですが、正確な型変換は重要です。
変更内容
System/UInt128.cs: シフト演算の修正(2行変更)
- 誤り:
64 - 40 == 24のシフト処理 - 修正:
64 - 24 == 40の正しいシフト処理
- 誤り:
テストの追加:
- Int128Tests.cs: 29行追加
- UInt128Tests.cs: 21行追加
- 変換シナリオの検証テストを包含
パフォーマンスへの影響
影響なし。ロジック修正のため、パフォーマンス上の変化はありません。
関連Issue
#122203 - 顧客報告による不正な変換結果の問題
その他
- 回帰ではなく、UInt128実装時からの既存バグ
- 低リスク変更として評価済み
- 本修正は#122534のrelease/10.0ブランチへのバックポート
- テクニカルレビュー前のアプローバル状況
#122677 Avoid temporary List allocation with HTTP/3 trailers
- 作成者: @MihaZupan
- 作成日時: 2025年12月20日 15:55:53(UTC)
- マージ日時: 2026年01月05日 14:51:13(UTC)
- ラベル: area-System.Net.Http
概要
HTTP/3のトレーラーハンドリングにおいて、不要な一時的なList割り当てを削除する最適化です。ヘッダーデータを最終的なコレクションに直接書き込むことで、メモリ効率を改善しています。この手法はHTTP/2で既に実装されている同じパターンに統一しています。
変更内容
- ファイル:
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http3RequestStream.cs - 変更量: 14行(+5行、-9行)
- 主な変更: HTTP/3トレーラー処理時の一時的なList割り当てを排除し、最終的なヘッダーコレクションに直接書き込むように変更
パフォーマンスへの影響
改善: メモリ割り当て削減により以下の効果が期待できます:
- ガベージコレクション圧力の軽減
- HTTP/3通信時のメモリ使用量削減
- トレーラー処理のスループット向上
関連Issue
なし
その他
- HTTP/2での実装パターンに統一することで、コードの保守性と一貫性が向上します
- .NET NCL(Network Class Libraries)チームへの自動タグ付けが行われています
#122645 Update HybridGlobalization error messages to remove obsolete guidance
- 作成者: @Copilot
- 作成日時: 2025年12月18日 16:43:06(UTC)
- マージ日時: 2026年01月05日 19:56:21(UTC)
- ラベル: area-System.Globalization
概要
HybridGlobalization機能のエラーメッセージを更新するPRです。Apple モバイルプラットフォームではHybridGlobalizationが無効化できなくなったため、ユーザーに誤解を招く「無効化してより大きなICUバンドルを読み込む」というガイダンスを削除し、より正確な説明に置き換えました。6つのエラーメッセージが対象です。
変更内容
- ファイル:
src/libraries/System.Private.CoreLib/src/Resources/Strings.resx - 変更内容: 6つのHybridGlobalization関連エラーメッセージを更新
PlatformNotSupported_HybridGlobalizationWithCompareOptionsPlatformNotSupported_HybridGlobalizationWithMixedCompositionsPlatformNotSupported_HybridGlobalizationWithCompareOptionsForCulturePlatformNotSupported_HybridGlobalizationWithMatchLengthPlatformNotSupported_HybridGlobalizationPlatformNotSupportedWithReason_HybridGlobalization
- 修正内容: 「無効化してICUバンドルを読み込め」という古い案内を削除、「HybridGlobalization=trueの場合」から「Apple モバイルプラットフォーム上」という明確な表現に変更
パフォーマンスへの影響
影響なし。文字列定義のみの変更で、動作には影響しません。
関連Issue
#122645
その他
- ビルド成功確認済み、古いテキストの残存がないことを検証済み
- リスク評価は低(文字列変更のみで動作に影響なし)
- Apple モバイルプラットフォーム(iOS/tvOS)を使用する開発者は、例外メッセージから正確な情報が得られるようになります
#122627 Wasm various fixes
- 作成者: @AndyAyersMS
- 作成日時: 2025年12月18日 00:39:06(UTC)
- マージ日時: 2026年01月05日 21:37:41(UTC)
- ラベル: arch-wasm area-CodeGen-coreclr
概要
WebAssembly(Wasm)ターゲット向けのJITコンパイラで、x86クロスコンパイルMCHリプレイ中に発生していた複数の未実装(NYI)エラーと他の問題を修正するPRです。主にフローグラフ処理、値の番号付け、下位レベルコード生成で改善が加えられています。
変更内容
- fgwasm.cpp (+37/-10): Wasmフローグラフの処理ロジック改善
- gentree.h (+1/-1): 木構造ノードの定義微調整
- lower.cpp (+29/-9): 下位レベルコード生成の例外処理改善
- morph.cpp (+26/-14): 木構造の変形ロジック最適化
- valuenum.cpp (+1/-1): 値の番号付けロジック微調整
修正対象は主に以下のアサーション失敗:
abiInfo.NumSegments == 1(ABI情報処理)varTypeIsI(genActualType(indir->Addr()))(32ビットターゲットでの64ビット整数処理)- Wasm長定数の処理(
IsCnsIntOrI()の動作)
パフォーマンスへの影響
影響なし。本PRは正確性(correctness)に焦点を当てており、成功率の向上よりもアサーション失敗の大規模な仕分けと根本原因の特定が目的です。著者は除算の最適化(マジックシフト処理)など、コードサイズ増加とEngineの最適化考慮を含めた設計検討の必要性を指摘しています。
関連Issue
なし
その他
- PR実行時にiOS環境での関連しない失敗(デバイスインストール周り)が発生
- Wasmでは「レジスタ」と「スタック」の概念しかなく、スタック上の引数表現ができない設計的課題が存在
- 今後
GT_CNS_LNGの削除やスタック渡し引数の説明方法改善などの根本的設計見直しが示唆されている
#122620 [clr-interp] Tweak GC reporting
- 作成者: @davidwrighton
- 作成日時: 2025年12月17日 21:28:57(UTC)
- マージ日時: 2026年01月05日 18:25:31(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
インタープリタの呼び出し規約におけるガベージコレクション(GC)レポート時の二重報告問題を修正しています。callee のスタック空間を指すポインタの保守的な報告を削除することで、過度な保守的レポートを減らします。IL スタック上に保持されたオブジェクト参照は引き続き保守的に報告されます。
変更内容
src/coreclr/vm/gcinfodecoder.cpp (+33/-1)
- callee のスタック空間を指す保守的なポインタの二重報告を防ぐロジック追加
- GC レポート時の判定条件を強化
src/tests/GC/API/GC/Collect0.cs (+1/-0)
- インタープリタでテスト無効化フラグを追加
src/tests/GC/API/GC/Collect0.csproj (+1/-0)
- テスト設定調整
パフォーマンスへの影響
改善あり - 過度な保守的ポインタレポートを削減することで、GC の処理量削減につながり、特にインタープリタモードでのメモリ管理効率が向上する可能性があります。ただし定量的なベンチマーク結果は記載されていません。
関連Issue
なし
その他
本修正で完全には対応していない制限があります:C# コンパイラが IL スタック上にオブジェクト参照を保持するパターンを生成する場合、その値は引き続き保守的に報告されます(Collect0 テストケースがこれに該当)。このため、該当テストはインタープリタモードでは無効化されています。
#122490 JIT: Zero continuation return after profiler leave callback
- 作成者: @jakobbotsch
- 作成日時: 2025年12月12日 11:46:51(UTC)
- マージ日時: 2026年01月05日 10:03:48(UTC)
- ラベル: area-CodeGen-coreclr
概要
非同期テストとプロファイラのleaveコールバックが組み合わさった場合に、標準リターン時に非同期継続を適切にゼロ化していなかった問題を修正。#122195で導入された非同期テストが他のストレス設定と組み合わせて実行される際に、leave callbacksの出力時に非同期継続の適切なクリアが行われていないことが判明し、本PRで対応。
変更内容
- src/coreclr/jit/codegencommon.cpp (+7/-10, 計17行)
- プロファイラのleaveコールバック実行後の標準リターン処理において、非同期継続(async continuation)を適切にゼロ化するロジックを追加・修正
- 既存コードの冗長部分を整理
パフォーマンスへの影響
影響なし。本変更は正確性の問題(バグ修正)であり、パフォーマンス最適化ではない。
関連Issue
- #122195: 非同期テストの導入
- #122475: 修正対象のissue
その他
- 変更は非常に限定的(codegencommon.cpp のみ)
- レビュアーはJIT貢献者向けにレビュー依頼中
- プロファイラ機能とasync処理の相互作用に関わるため、プロファイラを使用する環境でのテスト結果は重要
#122314 Merge CoreMangLib test suite
- 作成者: @jkoritzinsky
- 作成日時: 2025年12月08日 22:27:32(UTC)
- マージ日時: 2026年01月05日 22:23:59(UTC)
- ラベル: test-enhancement area-Infrastructure
概要
CoreMangLibテストスイートを統合し、56個の個別csprojファイルを削除してテストプロジェクト構造を簡素化しています。複数の独立したテストプロジェクトを1つのプロジェクトに統合することで、ビルドとメンテナンスの効率を向上させています。
変更内容
- 削除されたcsprojファイル: 56個の個別テストプロジェクトファイルを削除
- Delegate関連テスト(CombineImpl、Equals、GetHashCode、Remove等)
- Enum IConvertible関連テスト(ToInt64、ToSingle、ToType等)
- MulticastDelegate関連テスト(CombineImpl、Equals、GetHashCode、GetInvocationList)
- Interlocked関連テスト(Add、CompareExchange、Decrement、Exchange、Increment)
- Type関連テスト(Equals、GetHashCode、GetType、GetTypeFromHandle、ToString)
- Marshal SafeHandle関連テスト
- Span、Reflection.Emit関連テスト
- 統合されたテストファイル: 個別のcsファイルにマーキング追加(
+1/-0パターン) - メインプロジェクトファイル: CoreMangLib.csprojに統合テスト記述追加
- コード調整: 統合に伴い一部テストコードの修正(OpenDelegate.cs、RefStructWithSpan.cs等)
パフォーマンスへの影響
影響なし。この変更はテストプロジェクト構造の最適化で、テスト実行パフォーマンスには影響しません。むしろビルド時間の削減が期待されます。
関連Issue
#122314
その他
- レビュアーはcopilot-pull-request-reviewer[bot]が自動対応
- 外側のループテスト失敗はこの変更と無関係で、別途追跡予定
- iOS環境でのタイムアウト問題により一部テストが実施されていない状況