注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #122927 Fix browser build
- #122918 Replace a couple of Hashtables in CoreLib with ConcurrentDictionary
- #122914 Delete references to deleted PAL tests
- #122913 Remove non-deterministic Image base comment from ildasm output
- #122908 Fix WASM exception propagation through native runtime
- #122905 Remove now obsolete POPFRAMES
- #122904 Restore SuppressGCTransition handling
- #122902 JIT: SpanHelpers.Fill may escape its last argument
- #122901 Remove com.apple.security.cs.debugger entitlement from dotnet muxer and apphosts
- #122899 Add JsonSerializerDefaults.Strict support to JsonSourceGenerationOptionsAttribute constructor
- #122888 Update branding to 9.0.13
- #122887 Update branding to 8.0.24
- #122885 Change TypeMapLazyDictionary to use direct cast instead of 'as' operator for RuntimeAssembly
- #122884 Cleanup Win7 and earlier compatibility from CoreCLR
- #122873 JIT: Fix alignment for custom layouts with GC refs in them
- [#122871 browser][coreCLR] inline dotnetAssert.fastCheck
- #122869 JIT: Disallow tailcall stress in async methods
- #122866 JIT: Look harder for async calls in ASYNC_CONTINUATION lowering
- #122831 Fix: Socket.SendFile throws when Blocking=false
- [#122814 browser][coreCLR] rollup improvements
- #122784 Fix some memory leaks in mono
- #122754 Fix UnsafeAccessor signature for byref struct this
- #122726 [ThreadPool] Scalability Experiments follow up. Part1
- #122656 [clr-interp] Fix some interop suite issues
- #122654 [release/8.0-staging] Update OpenSSL dependency for openSUSE and SLES
- #122428 [clr-interp] Adjust timeout on NativeRuntimeEventSourceTest
- #121672 JIT: Support async contexts for OSR/EnC
#122927 Fix browser build
- 作成者: @radekdoulik
- 作成日時: 2026年01月06日 17:10:18(UTC)
- マージ日時: 2026年01月06日 20:22:17(UTC)
- ラベル: area-System.Threading
概要
Browser向けのビルドで発生していたコンパイルエラーを修正するPull Requestです。ThreadPool.Browser.Threads.csファイルの13行目と14行目に構文エラーが発生していたため、コメント行と閉じ括弧の配置を修正しました。2行の変更でビルド失敗を解決しています。
変更内容
- ファイル:
src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPool.Browser.Threads.cs- 変更行数: +2行/-1行(合計3行)
- 修正内容: コンパイルエラーCS1696(single-line comment or end-of-lineの期待エラー)とCS1513(}の期待エラー)を解決
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- このPRはビルドエラーの修正のため、機能追加や仕様変更を含みません
- レビュアーのコメント(/ba-g ci timeouts)から、CIのタイムアウト関連の再実行が行われた可能性があります
- area-owners.mdに従い、@mangod9に通知されています
#122918 Replace a couple of Hashtables in CoreLib with ConcurrentDictionary
- 作成者: @stephentoub
- 作成日時: 2026年01月06日 15:09:29(UTC)
- マージ日時: 2026年01月06日 17:58:24(UTC)
- ラベル: area-System.Globalization
概要
CoreLibの複数の箇所でHashtableをConcurrentDictionaryに置き換える変更。キーと値のボックス化を回避し、型安全性を向上させ、コード行数を削減することで、メンテナンス性とパフォーマンスを改善する改革的な変更です。
変更内容
- System/CurrentSystemTimeZone.cs: Hashtableの使用を廃止し、ConcurrentDictionaryに置き換え(削減: 16行)
- System/Text/EncodingTable.cs: Hashtableの使用を廃止し、ConcurrentDictionaryに置き換え(削減: 11行)
パフォーマンスへの影響
改善点:
- ボックス化の削減により、メモリ割り当てが減少
- ConcurrentDictionaryはジェネリック型安全で、キャストが不要になり、実行時パフォーマンスが向上
- より効率的なメモリレイアウトにより、GC圧力が低下
関連Issue
なし
その他
- 全体で27行のコード削減を実現
- System.Globalizationエリアオーナーがサブスクライバーとして登録されており、レビュー対象
- dotnet/area-system-globalization配下のコード改善として位置付けられています
#122914 Delete references to deleted PAL tests
- 作成者: @jkotas
- 作成日時: 2026年01月06日 06:32:58(UTC)
- マージ日時: 2026年01月06日 16:59:15(UTC)
- ラベル: area-PAL-coreclr
概要
PALテストスイートから削除されたテストの参照を設定ファイルから削除するハウスキーピング作業です。compilableTests.txtとpaltestlist.txtから不要になったテストエントリを削除し、テストスイートの整合性を保つことが目的です。
変更内容
- src/coreclr/pal/tests/palsuite/compilableTests.txt: 3行削除(不要なテストコンパイル参照を削除)
- src/coreclr/pal/tests/palsuite/paltestlist.txt: 2行削除(不要なテストリスト参照を削除)
変更内容としては、既に削除されたPALテストに対する参照が設定ファイルに残っていたものを整理しました。
パフォーマンスへの影響
影響なし
テストスイートの参照削除のため、パフォーマンスへの直接的な影響はありませんが、不要な参照が減ることでテストスキャンやビルド時の処理が軽微に改善される可能性があります。
関連Issue
なし
その他
このPRはcoreclr outerlooopテストの失敗を修正するための変更です。コメント履歴から、Helixテスト環境でPALTestsの実行に失敗していたため、削除済みテストの参照を整理することで問題を解決しています。
#122913 Remove non-deterministic Image base comment from ildasm output
- 作成者: @Copilot
- 作成日時: 2026年01月06日 03:43:56(UTC)
- マージ日時: 2026年01月06日 19:53:50(UTC)
- ラベル: 指定なし
概要
ildasm出力に含まれていた非決定的な「Image base:」コメント行を削除しました。このコメントはPEイメージのランタイムロードアドレスを表示していましたが、実行ごと、特にASLR環境では値が変動するため、出力の再現性が損なわれていました。dasm.cppの2行(6652-6653行目)を削除することで、ildasm出力を決定的かつ一貫性のあるものにします。
変更内容
- src/coreclr/ildasm/dasm.cpp:
// Image base:コメント行の出力処理を削除(3行削除)- ランタイムがPEイメージをロードしたメモリアドレスの出力を削除
- プラットフォーム間の出力形式の不一致(Windowsと Linux の
%pフォーマット差異)も解決
パフォーマンスへの影響
影響なし。出力行を削除するのみで機能的な変更なし。
関連Issue
- dotnet/runtime#122912: ILDASM on linux prints
// Image base: 0x0x(duplicate 0x) - dotnet/runtime#121686: 類似の修正事例
その他
背景: 元のIssueではLinux/WSL環境で%pフォーマット指定子による重複0xプレフィックスの問題が報告されていましたが、根本的な解決として非決定的な情報を出力すること自体を廃止しました。この変更により、異なるプラットフォーム間やビルド間でのIL出力の差分比較が容易になり、自動テストやCI/CDパイプラインでの使用に適したツールになります。
#122908 Fix WASM exception propagation through native runtime
- 作成者: @janvorli
- 作成日時: 2026年01月06日 00:55:40(UTC)
- マージ日時: 2026年01月06日 13:27:56(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
WASMプラットフォームにおけるマネージ例外のネイティブフレームへの伝播を修正するPRです。UNINSTALL_MANAGED_EXCEPTION_DISPATCHER_EX内で例外を無視するように改善し、ターゲットフレームに到達するまで例外を保持します。WASMではスタック巻き戻しが他のプラットフォームと異なるため、この対応が必要です。また、PAL_SEHExceptionクラスから廃止ビットも削除されています。
変更内容
- src/coreclr/pal/inc/pal.h (+7/-17): PAL_SEHExceptionクラスの廃止メンバーを削除
- src/coreclr/vm/excep.cpp (+34/-3): WASM上での例外伝播ロジックを強化し、ターゲットフレーム到達まで例外を保持する処理を追加
- src/coreclr/vm/excep.h (+1/-1): 例外処理関連の定義を更新
- src/coreclr/vm/exceptionhandling.cpp (+1/-1): 例外ハンドリングの微調整
- src/coreclr/vm/exceptmacros.h (+5/-5): マクロ定義の最適化
パフォーマンスへの影響
影響なし。本変更は例外処理の正確性を向上させるものであり、通常パスのパフォーマンスには影響しません。
関連Issue
#122462
その他
このPRはWASM特有の制約(スタック巻き戻しができない)に対応したものです。クロスプラットフォーム互換性を保ちながらWASMの例外処理を改善しています。
#122905 Remove now obsolete POPFRAMES
- 作成者: @janvorli
- 作成日時: 2026年01月05日 23:41:08(UTC)
- マージ日時: 2026年01月06日 03:27:10(UTC)
- ラベル: area-ExceptionHandling-coreclr
概要
FEATURE_EH_FUNCLETSの削除に伴い、不要になったPOPFRAMESスタックウォークオプションを完全に削除するPR。STACKWALKER_MAY_POP_FRAMESifdefの下のコードも合わせて除去され、不要な機能が整理される。
変更内容
- src/coreclr/vm/stackwalk.cpp: 150行のコード削除、4行の追加。
POPFRAMES関連のロジックとSTACKWALKER_MAY_POP_FRAMESifdef下の処理を完全削除 - src/coreclr/vm/threads.h: 2行削除、2行追加。関連するスタックウォーク機能の定義を整理
パフォーマンスへの影響
影響なし。本変更は不要なコードの除去のため、実行時パフォーマンスには直接的な影響はありません。ただし、コードベースのメンテナンスが簡素化されます。
関連Issue
なし
その他
- 本変更は
FEATURE_EH_FUNCLETS削除後の技術債処理として位置付けられる - レビュアーのコメント「/ba-g DeadLetter」は処理完了を示す
#122904 Restore SuppressGCTransition handling
- 作成者: @jkoritzinsky
- 作成日時: 2026年01月05日 23:29:57(UTC)
- マージ日時: 2026年01月06日 03:28:48(UTC)
- ラベル: area-crossgen2-coreclr
概要
このPull Requestは、issue #122762で報告されたSuppressGCTransition属性の処理に関する問題を修正します。アンマネージ呼び出し規約の処理において、SuppressGCTransitionハンドリングの復元を行う変更です。
変更内容
- ファイル:
src/coreclr/tools/Common/TypeSystem/Interop/UnmanagedCallingConventions.cs- 3行追加、3行削除(合計6行の変更)
SuppressGCTransition属性に関する処理ロジックの復元
パフォーマンスへの影響
影響なし
関連Issue
- #122762(このPRで修正される主要なissue)
その他
- レビュワー: jkotas、copilot-pull-request-reviewer[bot]
- 最新コメント(2026-01-06)では
/ba-g deadletterコマンドが実行されており、ビルド関連の処理が行われている模様です - アンマネージ相互運用性(P/Invoke)に関連する重要な修正であり、GC遷移の抑制に関する機能の正常性に影響する可能性があります
#122902 JIT: SpanHelpers.Fill may escape its last argument
- 作成者: @AndyAyersMS
- 作成日時: 2026年01月05日 22:35:20(UTC)
- マージ日時: 2026年01月06日 15:31:44(UTC)
- ラベル: area-CodeGen-coreclr
概要
JIT最適化におけるSpanHelpers.Fillメソッドが最後の引数をエスケープする可能性がある問題を修正しました。Fillメソッドが汎用型で参照型の値を許可するため、GCリファレンスの処理で問題が発生していました。オブジェクトのスタック割り当て最適化時にこの引数が不正にエスケープされるのを防止します。
変更内容
src/coreclr/jit/objectalloc.cpp (+9/-1)
- SpanHelpers.Fillメソッドの呼び出し時に最後の引数のエスケープ判定を追加
src/tests/JIT/opt/ObjectStackAllocation/Runtime_122879.cs (+39/-0)
- 回帰テストケースを追加し、この問題を検証
src/tests/JIT/opt/ObjectStackAllocation/Runtime_122879.csproj (+9/-0)
- テストプロジェクト設定ファイルを追加
パフォーマンスへの影響
影響なし(修正により不正な最適化を防止するため、パフォーマンスが改善または維持される)
関連Issue
#122879
その他
- .NET 10へのバックポートが予定されています
- レビュアーからMEMSETヘルパー呼び出しについても同様の対応が必要かどうかの質問が挙げられています(Fillが汎用型で参照型値を許可する場合のみ対応が必要)
- 本修正はJIT貢献者コミュニティへ通知されています
#122901 Remove com.apple.security.cs.debugger entitlement from dotnet muxer and apphosts
- 作成者: @Copilot
- 作成日時: 2026年01月05日 21:39:57(UTC)
- マージ日時: 2026年01月06日 23:39:32(UTC)
- ラベル: 指定なし
概要
macOS上でdotnetミューラー、apphost、singlefilehostおよびcorerunからcom.apple.security.cs.debuggerエンタイトルメントを削除するPRです。このエンタイトルメントはデバッガ用であり、ミューラーには不要です。デバッガは独自のapphostを使用し、独自のエンタイトルメントを設定すべきです。createdumpはptrace APIを使用するため、そのエンタイトルメントは保持されます。
変更内容
- eng/native/entitlements.plist (-2行)
com.apple.security.cs.debuggerエンタイトルメント定義を削除- createdump-entitlements.plistは変更なし(debuggerエンタイトルメント保持)
パフォーマンスへの影響
影響なし。エンタイトルメント削除であるため、パフォーマンスに直接的な影響はありません。むしろセキュリティ向上により、不要なmacOSセキュリティプロンプトが削除される可能性があります。
関連Issue
なし
その他
レビュー時の懸念点として挙げられた項目:
- F5デバッグとダンプ収集機能の動作検証が必要
- レビュワーのhoyosjs、WardenGnawはオフライン議論でデバッガ側で独自のエンタイトルメント設定を行うことで合意
セキュリティ考慮: 本変更により、デバッグ目的でない標準的なdotnetツール実行時に、不要なセキュリティプロンプトがトリガーされる可能性が低減されます。
#122899 Add JsonSerializerDefaults.Strict support to JsonSourceGenerationOptionsAttribute constructor
- 作成者: @Copilot
- 作成日時: 2026年01月05日 21:18:23(UTC)
- マージ日時: 2026年01月06日 20:02:24(UTC)
- ラベル: 指定なし
概要
JsonSourceGenerationOptionsAttributeコンストラクタがJsonSerializerDefaults.Strictに対応していないため、ArgumentOutOfRangeExceptionが発生していた問題を修正。JsonSerializerOptionsコンストラクタと同期させ、Strictモード用の4つのプロパティ設定を追加しました。
[JsonSourceGenerationOptions(JsonSerializerDefaults.Strict)]
[JsonSerializable(typeof(Example))]
internal partial class SourceGenerationContext : JsonSerializerContext;
変更内容
JsonSourceGenerationOptionsAttribute.cs:
JsonSerializerDefaults.Strictケースの処理を追加UnmappedMemberHandling = JsonUnmappedMemberHandling.DisallowAllowDuplicateProperties = falseRespectNullableAnnotations = trueRespectRequiredConstructorParameters = true
JsonSourceGenerationOptionsTests.cs: 属性コンストラクタの初期化検証テストを3つ追加
- General、Web、Strictの各
JsonSerializerDefaults値に対するテスト
- General、Web、Strictの各
パフォーマンスへの影響
影響なし。単一のelse if分岐追加で、既存コードパスに変更なし。
関連Issue
#122757
その他
- .NET 10 Preview 6で導入された
JsonSerializerDefaults.Strictの属性コンストラクタ対応が初期実装で漏れていたもの - 既存の7つのテストを含め、全10テストが成功
- リスク最小限の修正で、属性コンストラクタと
JsonSerializerOptionsコンストラクタの同期を確保
#122888 Update branding to 9.0.13
- 作成者: @vseanreesermsft
- 作成日時: 2026年01月05日 18:33:30(UTC)
- マージ日時: 2026年01月06日 20:50:53(UTC)
- ラベル: Servicing-approved area-Infrastructure
概要
.NET Runtime 9.0.13のブランディング更新を行うPull Requestです。eng/Versions.propsファイル内のバージョン情報を更新し、リリース準備のための変更を実施しています。説明文の詳細はありませんが、バージョン番号の更新が主な内容となっています。
変更内容
- eng/Versions.props: 2行追加、2行削除(計4行の変更)
- .NET 9.0.13のバージョン情報を更新
- ビルドプロパティ内のバージョン関連の値を修正
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- レビュアーのコメントによると、一部のテスト失敗(SVE_r::JIT.HardwareIntrinsics.Arm._Sve関連)はインフラストラクチャの問題およびこのPRと無関係の既知の稀な失敗です
- Runtime Infrastructure領域のサブスクライバーがタグ付けされています
- 承認状況は良好で、無関係な失敗であることが確認されています
#122887 Update branding to 8.0.24
- 作成者: @vseanreesermsft
- 作成日時: 2026年01月05日 18:32:45(UTC)
- マージ日時: 2026年01月06日 19:14:29(UTC)
- ラベル: Servicing-approved area-Infrastructure
概要
.NET Runtime 8.0.24へのブランディング更新を行うPull Requestです。バージョン情報を含む設定ファイルが更新されました。説明文は記載されていません。
変更内容
- eng/Versions.props: バージョン関連の設定が更新されました(+2行/-2行の変更)
- .NET Runtime 8.0.24へのバージョン番号更新と関連する設定値の変更
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- レビュアーのコメントにて、release/8.0-stagingブランチの関連PRで発生している未解決のビルドエラーが存在することが報告されています(PR #122396との共通エラー)
- このPRはブランディング・バージョン更新のみであり、機能的な変更は含まれていません
- 本番リリースに向けたメンテナンス作業の一環と考えられます
#122885 Change TypeMapLazyDictionary to use direct cast instead of 'as' operator for RuntimeAssembly
- 作成者: @Copilot
- 作成日時: 2026年01月05日 18:22:24(UTC)
- マージ日時: 2026年01月06日 05:04:59(UTC)
- ラベル: 指定なし
概要
TypeMapLazyDictionary.CreateMaps()メソッドにおいて、as演算子を使用した型キャストをC#の直接キャスト構文に変更するコード品質改善です。Assembly.Load()とAssembly.GetEntryAssembly()の戻り値をRuntimeAssemblyに変換する際、型不一致が発生した場合に暗黙的にnullを返すのではなく、明示的にInvalidCastExceptionを発生させることで、より厳格な型安全性を実現します。
変更内容
- ファイル:
src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/TypeMapLazyDictionary.cs - 変更内容:
as RuntimeAssembly→(RuntimeAssembly?)への変更(2箇所)Assembly.Load()の結果をキャストAssembly.GetEntryAssembly()の結果をキャスト
// 変更前
var assembly = Assembly.Load(assemblyName) as RuntimeAssembly;
// 変更後
var assembly = (RuntimeAssembly?)Assembly.Load(assemblyName);
パフォーマンスへの影響
影響なし。同じ型変換セマンティクスで、有効な入力に対しては完全に同じ動作です。
関連Issue
なし
その他
- テスト: 既存のSystem.Runtime.InteropServices テストスイート(2547テスト)で検証済み
- リスク: 低。最小限の変更で、ランタイム環境では常に
RuntimeAssemblyが返されるべきため、型不一致は予期しない異常系とみなされます - 客顧への影響: なし(内部コード品質改善)
#122884 Cleanup Win7 and earlier compatibility from CoreCLR
- 作成者: @jkoritzinsky
- 作成日時: 2026年01月05日 18:17:09(UTC)
- マージ日時: 2026年01月06日 21:16:01(UTC)
- ラベル: area-VM-coreclr
概要
Windows 7以前の互換性コードをCoreClrから削除するクリーンアップです。.NETランタイムは現在Windows 8以降のみサポートしているため、古いOSの互換性処理が不要になりました。WinRT APIとversion.dllの遅延ロード処理も削除され、/DEPENDENTLOADFLAG:0x800フラグにより依存関係が確実にSystem32から読み込まれるようになっています。
変更内容
- src/coreclr/inc/ostype.h: Windows 7以前の互換性定義を削除(43行削除)
- src/coreclr/utilcode/util_nodependencies.cpp: 古いOS向けのユーティリティコード削除(35行削除)
- src/native/libs/Common/delayloadhook_windows.cpp: version.dllの遅延ロードフック削除(25行削除)
- src/coreclr/dlls/mscoree/CMakeLists.txt、coreclr/CMakeLists.txt: ビルド設定の簡素化(WinRT関連の遅延ロード設定削除)
- src/native/corehost/apphost/static/CMakeLists.txt: AppHost向けビルド設定の最適化
- src/coreclr/vm/threads.cpp: スレッド管理コードの簡潔化
パフォーマンスへの影響
影響なし。ただし、遅延ロード処理の削除により初期化時のオーバーヘッドがわずかに削減される可能性があります。
関連Issue
なし
その他
本PR修正の一部はPR #122907で既にCopilotにより実施されています。このクリーンアップにより、コードベースの保守性が向上し、サポート対象外のプラットフォーム固有のレガシーコードが削除されます。
#122873 JIT: Fix alignment for custom layouts with GC refs in them
- 作成者: @jakobbotsch
- 作成日時: 2026年01月05日 14:03:43(UTC)
- マージ日時: 2026年01月06日 16:17:15(UTC)
- ラベル: area-CodeGen-coreclr runtime-async
概要
JITコンパイラにおいて、GCリファレンスを含むカスタムレイアウト構造体のアライメント処理に関するバグ修正です。Issue #122859を解決するもので、async.cppの1行を修正しています。GCポインタを含むカスタムレイアウトに対して、ポインタサイズへの適切なアライメント処理を確保するための変更です。
変更内容
- src/coreclr/jit/async.cpp (+1/-1)
- カスタムレイアウト構造体のアライメント計算処理を修正
- GCリファレンスを含む場合のアライメント値を調整
パフォーマンスへの影響
影響なし
この修正はアライメントの正確性を確保するための小規模な修正であり、パフォーマンス面での改善または低下は想定されていません。むしろ、メモリレイアウトの正確性により、潜在的な不正なメモリアクセスを防止します。
関連Issue
- Issue #122859(修正対象のバグレポート)
その他
- コメント内では、カスタムレイアウトの「自然なアライメント」の定義についての議論がされています
- メタデータベースの構造体とカスタムレイアウトのアライメント戦略の違いについて検討がなされており、今後のポテンシャルな改善の可能性が示唆されています
- バックエンドがメモリロード/ストア時にアライメント情報を活用する方法についても検討対象となっています
#122871 [browser][coreCLR] inline dotnetAssert.fastCheck
- 作成者: @pavelsavara
- 作成日時: 2026年01月05日 13:05:04(UTC)
- マージ日時: 2026年01月06日 18:30:21(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
ブラウザ環境でのCoreCLR実装において、dotnetAssert.fastCheckの呼び出しをインライン化し、失敗しない場合の文字列フォーマットとクロージャ割り当てを削減するパフォーマンス最適化。従来の関数呼び出しから直接的なif文での例外スローに変更。
// 変更前
dotnetAssert.fastCheck(Number.isSafeInteger(value), () => `Value is not an integer: ${value} (${typeof (value)})`);
// 変更後
if (!(Number.isSafeInteger(value))) throw new Error(`Assert failed: Value is not an integer: ${value} (${typeof (value)})`);
変更内容
- src/native/corehost/browserhost/loader/index.ts: アサーション呼び出しのインライン化(3行追加、1行削除)
- src/native/corehost/browserhost/loader/logging.ts: ロギング関連のアサーション最適化(10行追加、3行削除)
- src/native/libs/Common/JavaScript/cross-module/index.ts: クロスモジュール機能のインライン化(12行追加、11行削除)
- src/native/libs/System.Native.Browser/utils/memory.ts: メモリ管理ユーティリティの最適化(9行追加、9行削除)
- src/native/rollup.config.*.js: ビルド設定ファイルの更新・拡張(複数ファイルで定義追加)
パフォーマンスへの影響
改善点:
- アサーション失敗が発生しない通常時のパス において、文字列テンプレート補間のコストを完全に削減
- クロージャオブジェクトの割り当てを排除し、メモリ圧力を軽減
- ブラウザ環境での軽量化に寄与し、初期ロード時間を短縮
関連Issue
- #122934(フォローアップとしてJS/TSユニットテストの追加検討)
その他
作成者はこの変更の後続として、アサーション機能が正常に動作することを保証するための専用テスト(Wasmプラットフォーム関連テスト等)の追加を提案。現在、その実装方法の検討が進行中。
#122869 JIT: Disallow tailcall stress in async methods
- 作成者: @jakobbotsch
- 作成日時: 2026年01月05日 12:36:57(UTC)
- マージ日時: 2026年01月06日 12:59:22(UTC)
- ラベル: area-CodeGen-coreclr
概要
async メソッドからの明示的なテールコールは許可されていないため、テールコール ストレスを有効にすることは意味がありません。有効化すると、GT_RETURN ノードの作成をスキップする可能性があり、async 変換で予期しない IR の変更が発生します。このプルリクエストはテールコール ストレスを async メソッドで禁止する修正を実施しています。
変更内容
- src/coreclr/jit/compiler.h (+2/-1)
- async メソッドにおけるテールコール ストレス機能の無効化ロジックを追加
- JIT コンパイラのヘッダーファイルに制御フローの判定条件を追加
パフォーマンスへの影響
影響なし。この変更は async メソッドのコンパイル時にテールコール ストレスによるコード変換を防ぐことで、IR 生成の予期しない動作を防ぐものです。むしろ async メソッドの正確性を確保します。
関連Issue
#122632
その他
- async メソッドではC# 言語仕様上、explicit tailcall(
tail.IL 命令)が許可されていません - テールコール ストレス機能がこの制約を無視していたことが問題でした
- async 変換処理が想定する IR 構造を保証する重要な修正です
#122866 JIT: Look harder for async calls in ASYNC_CONTINUATION lowering
- 作成者: @jakobbotsch
- 作成日時: 2026年01月05日 11:50:01(UTC)
- マージ日時: 2026年01月06日 14:06:33(UTC)
- ラベル: area-CodeGen-coreclr runtime-async
概要
AsyncHelpers.AsyncCallContinuationイントリンシックを明示的に使用する場合、JITのASYNC_CONTINUATIONノードが非同期呼び出しの直後に線形順序で配置される必要があります。しかし、呼び出し結果のstlocがヘルパー呼び出しに変換される場合など、中間に他の処理が挿入されることがあります。本修正では、前の非同期呼び出しをより確実に探索し、他の非非同期呼び出しをスキップできるようにしました。
変更内容
- src/coreclr/jit/lower.cpp:
ASYNC_CONTINUATIONノードの前にある非同期呼び出しを探索するロジックを改善(+1/-2行の変更)
パフォーマンスへの影響
影響なし。本修正は非同期メソッドの呼び出しパターンに対する正確性の向上を目的としており、パフォーマンスクリティカルなパスではありません。
関連Issue
#122582
その他
iOS向けのビルド検証が実施されています。JITコンパイラの低い最適化レベルでの変更であり、複雑な非同期呼び出しパターンでのバグ修正です。
#122831 Fix: Socket.SendFile throws when Blocking=false
- 作成者: @laveeshb
- 作成日時: 2026年01月03日 05:40:37(UTC)
- マージ日時: 2026年01月06日 06:40:47(UTC)
- ラベル: area-System.Net.Sockets community-contribution
概要
Socket.SendFileがBlocking=falseの場合、プラットフォーム固有の未定義動作を引き起こす問題を修正しました。Windowsではブロックされ、Linuxではデータが部分的に送信される可能性があります。修正では、ブロッキングモード非対応時にInvalidOperationExceptionをスローするバリデーションを追加しています。
変更内容
- Socket.cs:
SendFileメソッドの開始時にブロッキングモード確認ロジックを追加(+7行) - SendFile.cs: 両方の
SendFileオーバーロードを対象としたNonBlocking_ThrowsInvalidOperationExceptionテストを追加(+12行) - 既存161個のSendFileテストは全て通過
パフォーマンスへの影響
影響なし。(バリデーションチェックは実行時のオーバーヘッドは最小限)
関連Issue
その他
重要な破壊的変更: 非ブロッキングソケットでSendFileを呼び出していたコードは例外がスローされるようになります。ただしこれは意図的な設計で、以前の未定義動作(Linuxでのサイレントデータ喪失など)よりも明示的に失敗する方が安全です。CIテストも合格しており、レビュワーにより承認・マージされています。
#122814 [browser][coreCLR] rollup improvements
- 作成者: @pavelsavara
- 作成日時: 2026年01月01日 16:56:28(UTC)
- マージ日時: 2026年01月06日 11:05:27(UTC)
- ラベル: arch-wasm area-Host os-browser
概要
ブラウザホスト向けのTypeScript/rollup構成を改善するPRです。グローバル宣言の可視性問題を解決するため、_ems_ヘルパーを導入して擬似モジュール化し、TypeScriptの型安全性向上とモジュール間の循環依存を修正。CIでリリース/ミニファイJS生成も実装。
変更内容
- 新規ファイル追加:
ems-ambient/index.ts- エムスクリプテン環境向けの型定義を集約 - グローバル宣言の改善:
_ems_ヘルパーと新rollupプラグイン(emsAmbient)により、グローバル宣言を疑似モジュール化 - エクスポート名変更:
cross→_ems_ambient_へ統一 - 型定義移動:
VoidPtrNull、CharPtrNull、NativePointerNullの整理 - 依存関係修正:
loadBootResourceCallbackの循環依存を解決 - rollup設定簡素化: 不要な
onwarnフィルタを削除 - TypeScript設定: CIでミニファイされたJSファイル生成を実装
- 対象ファイル: corehost/browserhost、System.Native.Browser、System.Runtime.InteropServices.JavaScript.Nativeなど約30ファイルを修正
パフォーマンスへの影響
影響なし。機能的な改善とコード品質向上が主目的で、エグゼキューション性能への直接的な変更はありません。ビルド時のミニファイプロセス改善により、CI/CDの出力最適化は期待されます。
関連Issue
なし
その他
このPRは特にブラウザ環境でのWebAssembly/.NET相互運用を扱う開発者に有用です。TypeScriptのモジュール境界が明確になることで、ems-ambientモジュール内の型定義がより適切にスコープされ、IDE補完やエラー検出の精度が向上します。
#122784 Fix some memory leaks in mono
- 作成者: @tpa95
- 作成日時: 2025年12月30日 13:02:20(UTC)
- マージ日時: 2026年01月06日 08:25:32(UTC)
- ラベル: area-VM-meta-mono community-contribution
概要
Linux Verification Center(SVACE)の静的解析により検出されたMonoランタイムのメモリリーク問題を修正するPull Requestです。関数の早期リターン時にメモリが適切に解放されていなかった問題を複数のファイルで対処しています。
変更内容
src/mono/mono/metadata/class-init.c (+11/-11)
- クラス初期化処理でのメモリリーク修正
src/mono/mono/metadata/custom-attrs.c (+10/-10)
- カスタム属性処理でのメモリリーク修正
src/mono/mono/mini/aot-compiler.c (+3/-1)
- AOTコンパイラのメモリリーク修正
src/mono/mono/mini/aot-runtime.c (+4/-0)
- AOTランタイムのメモリリーク修正
パフォーマンスへの影響
影響なし。本修正はメモリリークの解放処理の追加であり、パフォーマンスの低下は想定されません。むしろ長時間実行時のメモリ効率が向上します。
関連Issue
なし
その他
- 報告者:Pavel Tikhomirov(Linux Verification Center)
- 所属組織:Gazinformservice
- 静的解析ツール「SVACE」により検出された脆弱性の修正であり、信頼性向上に貢献しています
#122754 Fix UnsafeAccessor signature for byref struct this
- 作成者: @hez2010
- 作成日時: 2025年12月27日 18:20:50(UTC)
- マージ日時: 2026年01月06日 19:52:44(UTC)
- ラベル: area-System.Runtime.CompilerServices community-contribution
概要
UnsafeAccessorで構造体のインスタンスメソッドを呼び出す際、暗黙的なthis引数がbyrefで表現されていました。署名生成時にこのbyref署名をターゲット型署名として使用していたため、ランタイムがnullのMethodTableでジェネリックコンテキストを解決し、クラッシュが発生する問題を修正しました。修正内容は、ターゲット型署名からbyrefを削除し、基礎となる要素型Tを使用するようにしています。
変更内容
- src/coreclr/vm/unsafeaccessors.cpp (+17/-0): byref署名のストリップ処理を追加し、ターゲット型を正しく処理
- src/coreclr/vm/genericdict.cpp (+6/-1): ジェネリック辞書関連の修正
- src/tests/baseservices/compilerservices/UnsafeAccessors/UnsafeAccessorsTests.Generics.cs (+102/-1): byref構造体に対するジェネリックテストケースを追加
パフォーマンスへの影響
影響なし。これは正確性の修正であり、署名処理の最適化ではありません。
関連Issue
#122678(関連するクラッシュ問題)
その他
- NativeAOT向けのouterloopテストが実行済み
- 複数のレビュアーによる承認を経た修正で、特にジェネリック型を含む構造体での
UnsafeAccessor使用時の安定性が向上します
#122726 [ThreadPool] Scalability Experiments follow up. Part1
- 作成者: @VSadov
- 作成日時: 2025年12月24日 20:41:26(UTC)
- マージ日時: 2026年01月06日 13:29:03(UTC)
- ラベル: area-System.Threading
概要
スケーラビリティ実験の推奨に基づくスレッドプール最適化の第1弾。ワークアイテムの投入と実行のオーバーヘッドを削減し、不要なスレッド起動を防ぎ、同期プリミティブを改善することで、タスク処理効率を向上させる。
変更内容
- Backoff.cs: 新規追加、バックオフメカニズムの実装
- LowLevelLifoSemaphore.cs: スピナーカウント追跡の廃止、Sleep処理の削除、スピン時間の短縮(wait/wake遅延範囲内)
- PortableThreadPool.WorkerThread.cs: ワーカースレッドの起動ロジック最適化、不要なフェンス削減
- ThreadPoolWorkQueue.cs: ワークキュー関連の最小限の変更
- PortableThreadPool.cs及び関連ファイル: ハートビート報告を分配量単位で実施、スレッド要求を1度に1つに制限、キューに仕事がある証拠に基づいた条件付きスレッド追加要求
パフォーマンスへの影響
- タスク処理スループット: QUWI Queue Localテストで大幅改善(深度32以上で3~5倍の向上)
- ASP.NET Core JSON ベンチマーク: Linux/Windows両プラットフォームで約1%のスループット改善、レイテンシは同等
- 微小タスク実行: ワークアイテムあたりのオーバーヘッド削減により、#121887のリグレッション一部補完
- 懸念: 実際のワークロードでは改善幅は微小タスク特性に依存
関連Issue
- #122186 (スレッドプールリグレッション報告)
- #121887 (先行変更によるリグレッション)
その他
- LIFO セマフォのスピナーカウント廃止により、実行時の同期判定が簡潔化
- 動的なスレッド目標変更(HillClimb等)時のみ例外的に追加起動が発生
- マイクロベンチマークでの高い改善率は、実際の複雑なワークロードでは期待値が異なる可能性がある点に注意
#122656 [clr-interp] Fix some interop suite issues
- 作成者: @davidwrighton
- 作成日時: 2025年12月19日 01:31:51(UTC)
- マージ日時: 2026年01月06日 21:06:37(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
インタープリタサポート環境でのInterop スイートの複数の問題を修正するPull Requestです。主な修正内容は、IsBuiltInComEnabled のプラットフォーム検出の改善と、最適化されたデリゲートコンストラクタの使用です。[UnmanagedCallersOnly]属性でマークされた関数へのデリゲート作成時の問題を回避し、同時にコンパイラの改善を実現しています。
変更内容
- src/coreclr/interpreter/compiler.cpp (+288/-96): インタープリタコンパイラの主要な修正。デリゲート作成の最適化処理とプラットフォーム検出ロジックの改善
- src/coreclr/interpreter/compiler.h (+8/-0): ヘッダファイルへの定義追加
- src/tests/Common/CoreCLRTestLibrary/PlatformDetection.cs (+1/-1): IsBuiltInComEnabled検出のプラットフォーム判定修正
- src/tests/Interop/PInvoke/SafeHandles/InvalidSafeHandleMarshallingTests.cs (+1/-0): テストケースの追加
パフォーマンスへの影響
影響なし。本修正はInterop スイートの正確性を向上させるための機能修正であり、パフォーマンスへの直接的な影響は不明記。デリゲートコンストラクタの最適化により、わずかな最適化効果が期待できる可能性があります。
関連Issue
なし
その他
レビュー過程でAaronRobinsonMSFTとjkoritzinskyに対し、最適化デリゲートコンストラクタ内の[UnmanagedCallersOnly]属性チェックの必要性についての技術的な質問がなされています。テストスイートの修正により、将来的なインタープリタベースのInterop処理の安定性向上を目指しています。
#122654 [release/8.0-staging] Update OpenSSL dependency for openSUSE and SLES
- 作成者: @NikolaMilosavljevic
- 作成日時: 2025年12月18日 23:41:00(UTC)
- マージ日時: 2026年01月06日 18:45:05(UTC)
- ラベル: Servicing-approved area-Setup
概要
OpenSSL依存関係をopenSUSEおよびSLES向けに更新するPR。libopenssl1からlibopenssl3への切り替えを実施。libopenssl3は対象となるすべてのディストリビューションリリースでデフォルトでサポート・インストールされており、openSUSE Tumbleweelではこれが唯一の利用可能なバージョンとなるため、この更新が必要。
変更内容
- dotnet-runtime-deps-opensuse.42.proj: OpenSSL依存関係を
libopenssl1からlibopenssl3に更新(1行追加、1行削除) - dotnet-runtime-deps-sles.12.proj: OpenSSL依存関係を
libopenssl1からlibopenssl3に更新(1行追加、1行削除)
両ファイルともほぼ同一の変更内容。
パフォーマンスへの影響
影響なし
関連Issue
- #122653
その他
- 次回のサービシングリリースでの出荷予定
- PR作成者がマージ権限の確認中でコメント内で協力者(jkoritzinsky、richlander他)に承認を依頼中
- テスト実行時にOSX環境でのテスト失敗が発生しているが、これはPR内容と無関係で他のPRでも同様の問題が発生している旨が報告されている
#122428 [clr-interp] Adjust timeout on NativeRuntimeEventSourceTest
- 作成者: @davidwrighton
- 作成日時: 2025年12月11日 02:06:07(UTC)
- マージ日時: 2026年01月06日 18:11:53(UTC)
- ラベル: area-Tracing-coreclr area-CodeGen-Interpreter-coreclr
概要
NativeRuntimeEventSourceTestのタイムアウト値が5秒から45秒に変更されました。既存のタイムアウトが短すぎて、テスト実行時に不安定な結果が生じていたため、より余裕のある値に調整されています。これはランタイムイベントソースのトレーシングテストの安定性向上を目的とした変更です。
変更内容
- ファイル:
src/tests/tracing/runtimeeventsource/NativeRuntimeEventSourceTest.cs - 変更: タイムアウト値を5秒から45秒に修正(1行変更)
パフォーマンスへの影響
影響なし。本変更はテストのタイムアウト待機時間の延長であり、テスト自体の実行速度には影響しません。むしろタイムアウトエラーによるテスト失敗を減らし、テスト結果の安定性が向上します。
関連Issue
なし
その他
本変更はNativeRuntimeEventSourceTestの安定性向上を目的としており、特にCI/CD環境で遅延が発生する場合のテスト失敗を防ぐものと考えられます。area-ownersによる監視が設定されており、tracing領域の保守者による確認が予定されています。
#121672 JIT: Support async contexts for OSR/EnC
- 作成者: @jakobbotsch
- 作成日時: 2025年11月15日 22:42:08(UTC)
- マージ日時: 2026年01月06日 16:17:58(UTC)
- ラベル: area-CodeGen-coreclr runtime-async
概要
非同期メソッドの実行コンテキスト状態をOSR(On-Stack Replacement)とEnC(Edit and Continue)トランジション中に正しく復元するための対応です。非同期メソッドの本体周囲に保存されるコンテキスト状態が、コード更新や最適化時に失われないようにします。
変更内容
JIT側の変更
async.cpp: 非同期コンテキスト処理の改善compiler.cpp/compiler.h: OSR/EnC対応のコンパイラ処理追加- 複数アーキテクチャ対応: ARM、ARM64、LoongArch64、RISC-V、x86向けのコード生成更新
lclvars.cpp: ローカル変数管理で特殊なコンテキスト変数の処理(114行追加)patchpointinfo.h: パッチポイント情報に新フィールド追加
VM側の変更
eetwain.cpp、gc_unwind_x86.inl: ガベージコレクション情報の更新
テスト
execution-context.cs: 非同期実行コンテキストの統合テスト追加
ドキュメント
clr-abi.md: ABI設計ドキュメントの更新
パフォーマンスへの影響
影響なし。このPRは状態管理の正確性を確保する修正で、パフォーマンス特性には変更ありません。
関連Issue
なし
その他
- JIT32 GC情報の変更回避のため、
GetSizeOfFrameHeaderForEnCをMethodDesc::RequiresAsyncContextSaveAndRestoreベースに改良 - マージ前に有効化されたテストのリバートが必要
- x86プラットフォームで追加対応が必要なx86関数がある(レビューコメント参照)
- VM/JIT両チームによるレビュー完了済み