Pull Request on 2026年05月20日

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

注意点

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


目次

  1. #128395 Don't pessimize available registers for key GT_INTRINSIC
  2. #128381 [release/8.0-staging] Fix loop hoist memory-dependence tracking
  3. #128379 Clarify Marshal AccessViolationException compatibility comments
  4. #128368 Reject negative PAX size values when reading TAR headers
  5. #128367 Fix Windows Tar Paths
  6. #128364 Fix MarshalAs IID parameter index parsing
  7. #128350 Remove unnecessary delayfree from xarch FMA and TERNLOG instructions
  8. #128349 Fix ILLink testing to run with asserts enabled
  9. #128347 Make EventSourceLoggerTest serialization trim safe
  10. #128342 [release/10.0] Fix heap_segment_used watermark after compaction
  11. #128323 Allow continuations to have no ExecutionContext
  12. #128274 JIT: Rename fields in indirect call transformer
  13. #128271 Remove -Wno-unused-function -Wno-tautological-compare -Wno-unused-value for clrjit projects
  14. #128261 Update EmsdkPackageVersion to use version from dependency flow
  15. #128232 Globally enable linker dead-code elimination on Unix
  16. #128221 [cDAC] Copy all debuggee project-reference DLLs/PDBs into Helix symbols dir
  17. #128199 Remove obsolete ARMV7L CMake defines
  18. #128198 Correct keyed-service probing for built-in DI services
  19. #128072 Avoid recursive FileSystemWatcher when not required in PhysicalFilesWatcher
  20. #128068 [Android] Fall back to 'localhost' when *.localhost resolves to only non-loopback addresses
  21. #127929 ci-pipeline-monitor issue filing script
  22. #127915 JIT: Transform 'SELECT(cond, cns, cns)' to 'cns'
  23. #127503 Add configurable VariableNameTransformation to EnvironmentVariables config
  24. #125298 JIT: Add debug consistency checks for GT_RETURN nodes

#128395 Don't pessimize available registers for key GT_INTRINSIC

概要

xarch JITにおいて、GT_INTRINSICで表現されるSystem.Math組み込み関数がEVEXレジスタを利用できるよう、不必要なレジスタ制限を削除しました。また、Math.AbsをSIMDノード経由で表現するよう改善し、マスクのCSE機会を増やしています。

変更内容

  • lsraxarch.cpp: GT_INTRINSIC数学組み込み関数のLSRA候補マスクからEVEX非互換のマスキングと内部レジスタ処理を削除し、完全なEVEXレジスタセットの利用を可能に
  • lowerxarch.cpp: 数学組み込み関数のコンテインメントロジックを期待されるサブセットに厳密化(アサーション追加)
  • importercalls.cpp: Math.AbsをSIMDベースの展開として導入(スカラー作成→SIMD abs→スカラー抽出チェーン)
  • gentree.cpp: xarch上のMath.AbsのGT_INTRINSICコスト計算を削除
  • emit.h/emit.cpp: 未使用のemitBlkConstヘルパー関数を削除
  • codegenxarch.cpp: GT_INTRINSIC Absコード生成を削除し、ビットマスク定数を常にemitSimd16Constで統一

パフォーマンスへの影響

  • EVEXレジスタの完全利用により、レジスタ割り当ての柔軟性が向上
  • Math.AbsのSIMD表現化により、マスク定数に対するCSE最適化の機会が増加
  • 不要なマスキング処理の削除によるわずかな高速化が期待される

関連Issue

なし

その他

このPRは、EVEX拡張命令セット対応プロセッサ(AVX-512など)を活用する際の最適化改善です。内部実装の変更であり、公開APIへの影響はありません。


#128381 [release/8.0-staging] Fix loop hoist memory-dependence tracking

概要

ループ不変式コード移動(LICM)の際にメモリ依存性の追跡に誤りがあり、ループ不変ではない式が誤ってループ外にホイストされてしまう問題を修正しました。これは無声の不正な機械語コード生成につながる可能性があります。問題は二重ループ構造で、値番号付けは不変だがメモリ依存性がある式が内側ループの下にある場合に発生します。

変更内容

  • src/coreclr/jit/optimizer.cpp: optRecordLoopMemoryDependenceを修正し、更新ループの親チェーンを辿ってコンシューマループを囲む祖先ループを見つけてから依存性を破棄するようにしました。これにより、ネストされたループ間でのメモリ依存性の正確な追跡が可能になります。
  • src/tests/JIT/Regression/JitBlue/Runtime_122057/Runtime_122057.cs: 報告されたシナリオをカバーする回帰テストを追加しました。チェックサムベースの検証を含む縮小再現ケースです。
  • src/tests/JIT/Regression/JitBlue/Runtime_122057/Runtime_122057.csproj: テストプロジェクト設定を追加し、DOTNET_TieredCompilation=0でFullOptsを強制しています。

パフォーマンスへの影響

影響なし。本修正はJITの最適化をより保守的にするもので、ベンチマークテスト(SPMI)において9.0版修正とこの修正の両方で差分なしが確認されています。

関連Issue

#122057

その他

  • 本PRはマニュアルバックポートで、9.0では既に修正済み(やや異なる形式)です
  • 顧客報告の問題でしたが、Fuzzlynによって発見されました
  • リスク評価:低。SPMI差分なし、ライブラリへの影響なし

#128379 Clarify Marshal AccessViolationException compatibility comments

概要

Marshal interop ヘルパーの AccessViolationException に関するコメントを明確化するドキュメント更新。従来の誤解を招く表現を修正し、互換性動作を正確に説明するよう改善しました。

変更内容

  • Marshal.cs(3ファイル): AccessViolationException の説明コメントを修正
    • 誤解を招く「任意のAVでAccessViolationExceptionがスロー可能」という表現を削除
    • null/near-nullポインタ逆参照による NullReferenceException が AccessViolationException に変換されることを明確化
    • 廃止予定のオブジェクトベースヘルパーがnull入力で AccessViolationException をスローするのは互換性動作であることを明記

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

このPRはGitHub Copilotにより自動生成されたものです。コメントの精確性向上を目的とした内部実装に限定した変更であり、公開APIの動作や互換性に変更はありません。


#128368 Reject negative PAX size values when reading TAR headers

概要

TAR アーカイブ解析時の PAX 拡張属性の検証を強化。PAX メタデータから読み込まれるサイズ値が負の値である場合、InvalidDataException をスローするように変更。これにより、不正な TAR アーカイブが受け入れられるのを防ぎます。

変更内容

  • src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Read.cs
    • TarHeader.Read() メソッド内で、PAX 拡張属性の "size" フィールドに対する負の値チェックを追加
    • 負のサイズ値が検出された場合、InvalidDataException をスロー
    • 既存の他のサイズフィールド(ヘッダーサイズ、GNU sparse realsize など)の負の値チェックと整合性を確保

パフォーマンスへの影響

影響なし(検証ロジック追加のみ)

関連Issue

なし

その他

この変更は、TAR ライブラリ内のサイズ検証を統一化し、不正なメタデータからの予期しない動作やセキュリティリスクを軽減します。内部実装の変更で、公開 API の互換性への影響はありません。


#128367 Fix Windows Tar Paths

概要

Windows環境でのTarファイル処理におけるシンボリックリンク関連のバグを修正します。System.Formats.Tarライブラリの内部実装を改善し、Windows固有のパス処理問題に対応しています。

変更内容

  • TarEntry.cs: Windowsシンボリックリンク処理に関する修正を追加(7行追加)
  • TarFile.ExtractToDirectory.File.Tests.Windows.cs: Windows環境でのシンボリックリンク抽出動作を検証するテストケースを追加(19行追加)

パフォーマンスへの影響

影響なし

関連Issue

#128367

その他

  • 変更は公開APIではなく内部実装の修正です
  • Windows固有のバグ修正のため、プラットフォーム間での互換性への懸念はありません
  • テストが追加されているため、回帰防止が図られています

#128364 Fix MarshalAs IID parameter index parsing

  • 作成者: @Copilot
  • 作成日時: 2026年05月19日 12:29:10(UTC)
  • マージ日時: 2026年05月20日 13:06:49(UTC)
  • ラベル: area-NativeAOT-coreclr

概要

NativeAOT実行時にCOMインターフェースパラメータのMarshalAsメタデータ内のIidParameterIndexの解析に失敗し、marshaldescriptorブロブに未読バイトが残ってアサーション例外が発生する問題を修正します。パーサーがIUnknown、IDispatch、Interface型に対するオプショナルなIidParameterIndexペイロードを適切に消費するようにします。

変更内容

  • EcmaSignatureParser.cs: ParseMarshalAsDescriptor()メソッドを修正し、COM インターフェース型(IUnknown、IDispatch、Interface)に対するオプショナルな圧縮整数ペイロード(IidParameterIndex)を消費するロジックを追加
  • MarshalUtilsTests.cs: [MarshalAs(..., IidParameterIndex = 0)]属性を含むメソッドのコンパイルをテストし、descriptorが正常に解析される回帰テストを追加
  • Platform.cs: CoreTestAssemblyのMarshalAsAttributeスタブを更新し、テストコードでIidParameterIndex名前付き引数をサポート
  • Marshalling.cs: IUnknown/IDispatch/Interface型に対してMarshalAs(..., IidParameterIndex = 0)を使用するテストメソッドを追加

パフォーマンスへの影響

影響なし

関連Issue

#128364

その他

  • この変更はNativeAOT向けの内部実装の修正で、公開APIへの影響はありません
  • 破壊的変更ではなく、既存の動作を維持しながら未読バイトの問題を解決します
  • NativeAOT outerloopのテスト失敗を修正します

#128350 Remove unnecessary delayfree from xarch FMA and TERNLOG instructions

概要

xarch JITコンパイラのFMA(積和演算)およびAVX-512 TernaryLogic命令について、不要な遅延フリー(delay-free)マーキングを削除する変更です。これらの命令は完全に並べ替え可能(fully reorderable)であるため、特殊なシナリオを除いて遅延フリー制約は不要です。

変更内容

  • lsraxarch.cpp: AVX2/AVX512 FMA命令のLSRA(ローカルスケジュール登録割り当て)を簡略化し、CopyUpperBits意味論で必要な場合にのみ遅延フリー制約を使用するように変更。NI_AVX512_TernaryLogicで制御バイトが即値の場合に専用LSRA経路を追加。
  • hwintrinsiccodegenxarch.cpp: TernaryLogicターゲットレジスタがオペランドと重複する場合に制御バイトを書き換えるロジックを追加(38行追加)。

パフォーマンスへの影響

遅延フリー制約の削除により、レジスタアロケーション時の制約が緩和され、より効率的なコード生成が期待されます。ただし、具体的なベンチマーク数値は提供されていません。

関連Issue

#62215

その他

内部実装(JITコンパイラの命令スケジューリング)への変更であり、公開APIへの影響はありません。互換性への影響もありません。


#128349 Fix ILLink testing to run with asserts enabled

  • 作成者: @Copilot
  • 作成日時: 2026年05月19日 00:33:17(UTC)
  • マージ日時: 2026年05月20日 22:42:09(UTC)
  • ラベル: area-Tools-ILLink

概要

ILLink単体テストおよびトリミングテストの実行時に、Debug構成のツールを使用するようにAzure Pipelines定義を修正します。これにより、ILLink内部のアサーション(assert)を有効にしてテストを実行できるようになります。

変更内容

  • eng/pipelines/runtime-linker-tests.yml: /p:ToolsConfiguration=Debug パラメータをILLinkテストジョブのビルドおよびテスト呼び出しに追加
  • トリミングテスト実行時にも同パラメータをextraTestArgs経由で渡し、Debug構成のツールを使用するよう統一
  • パイプライン全体はRelease構成のままで、ILLinkツールのみDebug構成で実行

パフォーマンスへの影響

Debug構成のツールを使用するため、ILLinkの実行速度がやや低下する可能性があります。ただし、この変更はテスト実行時のみ適用されるため、本番環境のビルドパフォーマンスへの影響はありません。

関連Issue

なし

その他

この変更により、ILLink内部のデバッグアサーション(例外や検証)が有効化され、より厳密なテスト実行が可能になります。アサーション違反を検出することで、ILLinkの動作の不正を早期に発見できます。


#128347 Make EventSourceLoggerTest serialization trim safe

概要

EventSourceLoggerTestのTrim/AOT安全性を実現するため、JsonConvert.SerializeObjectによる複雑なペイロードのシリアライゼーションをJsonTextWriterベースの手動実装に置き換えました。これにより反射ベースのJSON生成を排除し、IL2026抑制を削除できます。

変更内容

  • EventSourceLoggerTest.cs: JsonConvert.SerializeObjectの呼び出しをJsonTextWriterを使用した手動シリアライゼーションロジックに置き換え。辞書、キー/値シーケンス、配列、プリミティブ値、列挙型、nullに対応した実装を追加(+91/-20)
  • LoggingEventSource.cs: 軽微な変更(+1/-0)
  • Microsoft.Extensions.Logging.EventSource.Tests.csproj: AOT分析器の除外設定を削除(-2行)。これまではIL2026抑制によりトリムセーフティ解析をバイパスしていたが、今回の変更で不要に

パフォーマンスへの影響

影響なし。手動シリアライゼーションはテストコンテキスト内でのみ使用されるため、本番コードのパフォーマンスに変化なし

関連Issue

#73438

その他

この変更により、Microsoft.Extensions.Logging.EventSourceライブラリはTrim/AOT安全性を確保し、エディターの警告や解析ツールでトリムセーフティ関連の警告が発生しなくなります


#128342 [release/10.0] Fix heap_segment_used watermark after compaction

概要

GC regions + large pages有効時のメモリ破損バグを修正するバックポート。コンパクション後にheap_segment_usedウォーターマークが古い値のままだと、decommit_regionが不足した範囲しかクリアせず、ダーティメモリが再利用されてヒープ破損/クラッシュが発生する問題に対応しています。

変更内容

src/coreclr/gc/gc.cpp

  • compact_phase(regions mode)で、コンパクション後に各リージョンのheap_segment_usedをmax(used, plan_allocated)で更新。対象は非難世代と1世代上のものです。
  • decommit_heap_segment(regions mode)で、large pages有効時はデコミットをスキップ。large pageのデコミットはno-opになるため、不正な「論理デコミット」動作を回避します。

パフォーマンスへの影響

影響なし。本修正は正確性向上であり、パフォーマンス改善ではありません。むしろ回避の対象は間違った動作による潜在的なパフォーマンス低下(メモリリーク/再利用)です。

関連Issue

#128217

その他

  • 回帰度:高。GC regions有効化時に導入された不具合
  • 顧客報告:あり(カスタマーの再現アプリでテスト済み)
  • リスク:低。ウォーターマーク管理を追加するのみで、変更範囲は限定的
  • テスト:CI、カスタマー提供の再現アプリ、GCテストで検証済み
  • 内部実装の修正(publicなAPIに対する破壊的変更なし)

#128323 Allow continuations to have no ExecutionContext

概要

ValueTaskContinuationが ExecutionContext の保存・復元を不要とするよう最適化しました。将来的には JIT がコンテキスト参照がないことを証明した場合、continuations が保存・復元をスキップできるようにする基盤を整備しています。

変更内容

  • AsyncHelpers.CoreCLR.cs: ValueTaskContinuation の実装を修正し、ExecutionContext 関連の処理を最適化(+19/-16)
  • AsyncHelpers.ValueTaskContinuation.cs: ExecutionContext の保存・復元ロジックを削除(-9)

パフォーマンスへの影響

ValueTaskContinuationでのコンテキスト保存・復元処理が削除されるため、allocation 削減と実行速度向上が期待されます。

関連Issue

#128323

その他

この変更は内部実装(System.Runtime.CompilerServicesの非公開 API)の最適化であり、公開 API の互換性には影響ありません。


#128274 JIT: Rename fields in indirect call transformer

概要

CoreCLR JITのIndirectCallTransformer実装内部フィールドをリネームするリファクタリングです。主にコンパイラとトランスフォーマー関連のフィールドにm_プリフィックスを付与し、命名規則の一貫性を向上させました。また複数のメンバーをコンストラクタ初期化からクラス内デフォルト初期化に変更しています。

変更内容

  • src/coreclr/jit/indirectcalltransformer.cpp:内部フィールドのm_プリフィックス導入(compilerなど複数フィールドをリネーム)
  • メンバー初期化方式の変更(コンストラクタ初期化→クラス内デフォルト初期化)
  • リネーム後のメンバー名を使用した呼び出し箇所の全体更新

パフォーマンスへの影響

影響なし(リファクタリング・命名規則変更のみ)

関連Issue

なし

その他

レビュアー(Copilot)により、コメント内の軽微なタイポ指摘あり:「high-likehood」→「high-likelihood」への修正が推奨されています。


#128271 Remove -Wno-unused-function -Wno-tautological-compare -Wno-unused-value for clrjit projects

  • 作成者: @EgorBo
  • 作成日時: 2026年05月15日 22:54:11(UTC)
  • マージ日時: 2026年05月20日 14:51:56(UTC)
  • ラベル: area-CodeGen-coreclr

概要

clrjit プロジェクトに対して、コンパイラの警告抑制フラグ (-Wno-unused-function, -Wno-tautological-compare, -Wno-unused-value) を削除し、コードの警告を修正する変更。JIT 関連の複数のファイルで未使用の変数・関数や冗長な比較に対する警告を明示的に対応して、コード品質を向上させることが目的。

変更内容

  • CMakeLists.txt: JIT プロジェクト固有の警告抑制フラグを追加(グローバル設定から除外するための準備)
  • emitriscv64.cpp: 未使用関数・変数の削除およびコード整理(27行削除)
  • emitxarch.cpp: 警告対応のための微細な修正
  • gentree.cpp: 未使用変数またはコード最適化
  • hwintrinsic.cpp: 大量の未使用コード削除(40行削除)
  • ifconversion.cpp, importercalls.cpp, lower.cpp, scev.cpp: 各種警告対応の修正

パフォーマンスへの影響

影響なし。本変更はコンパイラ警告への対応であり、実行時の機能・パフォーマンスに変更なし。

関連Issue

#128271

その他

  • 本変更は段階的なアプローチの第一段階であり、作成者の初期案ではネイティブコード全体の警告抑制フラグ削除を計画していたが、差分の大きさを理由に JIT に絞られた
  • -Wno-unused-variable と -Wno-unknown-pragmas については、今後の対応対象として言及されている

#128261 Update EmsdkPackageVersion to use version from dependency flow

  • 作成者: @akoeplinger
  • 作成日時: 2026年05月15日 16:44:06(UTC)
  • マージ日時: 2026年05月20日 16:27:33(UTC)
  • ラベル: area-codeflow

概要

EmsdkPackageVersionのハードコード化された値を廃止し、依存関係フロー(dependency flow)から自動更新されるプロパティ値に変更します。以前のビルド問題の回避策として硬直的に設定されていた値(10.0.0)を、MicrosoftDotNetApiCompatTaskPackageVersionプロパティから動的に取得するようにします。

変更内容

  • eng/Versions.props: EmsdkPackageVersionの定義を変更し、ハードコードされた値(10.0.0)から $(MicrosoftDotNetApiCompatTaskPackageVersion) への参照に更新。依存関係フローを通じた自動更新が可能になるよう対応し、関連するコメントを追加。

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更により、Emscripten SDK バージョンの管理がより自動化・一元化され、将来のバージョン更新時にハードコード値の手動修正が不要になります。


#128232 Globally enable linker dead-code elimination on Unix

  • 作成者: @Copilot
  • 作成日時: 2026年05月14日 22:26:05(UTC)
  • マージ日時: 2026年05月20日 14:32:03(UTC)
  • ラベル: area-Infrastructure

概要

Unix(Linux、macOS、BSD等)プラットフォームにおいて、リンク時のデッドコード排除を全体的に有効化するため、ネイティブビルド設定を更新しました。既に使用されていた -ffunction-sections に加えて -fdata-sections を追加し、リンカフラグ(Apple向けは -Wl,-dead_strip、他のELF形式向けは -Wl,--gc-sections)を Release / Checked / RelWithDebInfo ビルドに設定することで、未参照のコードセクションだけでなくデータセクションも排除できるようにしました。Debug ビルドはシンボル保持とインクリメンタルリンクのため変更を避けています。

変更内容

  • eng/native/configurecompiler.cmake:
    • Unix/WASI コンパイルに -fdata-sections を追加(既存の -ffunction-sections と併用)
    • Apple向けリンカフラグ -Wl,-dead_strip を Release / Checked / RelWithDebInfo に設定
    • その他 Unix(ELF 形式)向けリンカフラグ -Wl,--gc-sections を同じ3つのビルド構成に設定
    • Debug ビルドはサニタイザ対応の既存 -Wl,--no-gc-sections フラグを保持

パフォーマンスへの影響

バイナリサイズの削減。未参照のセクションが排除されることで、特に apphost など依存関係が多いバイナリのサイズ増加を抑制します。

関連Issue

#126367 で apphost が dn-containers リンク依存を取得した際のサイズ増加の問題が顕在化

その他

なし


#128221 [cDAC] Copy all debuggee project-reference DLLs/PDBs into Helix symbols dir

概要

cDAC(Common Data Access Component)のHelix テスト環境において、debuggeeプロジェクトの参照DLLがシンボル検索パスにコピーされていないため、クロスプラットフォームのWindows dumpでメタデータ読み込みが失敗する問題を修正します。従来は<DebuggeeName>.dllのみをコピーしていましたが、ProjectReferenceから生成されたDLL(例:Trampoline.dll)も対象に含めます。

変更内容

  • cdac-dump-helix.proj: ファイルパターンを<DebuggeeName>.dllから*.dllに変更し、debuggee publishフォルダ内のすべてのマネージドDLLをHelix シンボルディレクトリにコピー
  • Windows copyコマンドに/Yフラグを追加して非対話的実行を保証し、ペイロードディレクトリ再利用時のリトライ対応を改善
  • Unix環境でも同様に*.dllおよび*.pdbをコピー(ベストエフォート)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 修正前の動作:VirtualReadException: Failed to read bytes at 0x7ff99f581610のエラーがEcmaMetadata_1.GetMetadataProviderで発生。Windows miniダンプはread-onlyイメージページをキャプチャしないため、ClrMDが再度ディスクからメタデータを読み込もうとして失敗
  • 修正後の動作:ProjectReference由来のDLLもシンボルディレクトリに配置されるため、metadata読み込みが成功
  • Windows x64/arm64環境でのInterpreterStackDumpTestsの3つのテスト失敗を解決(Linux core dumpは従来からファイル基盤マッピングを含むため影響なし)
  • framework-dependent publishのため共有フレームワークへの影響はなし

#128199 Remove obsolete ARMV7L CMake defines

  • 作成者: @Copilot
  • 作成日時: 2026年05月14日 14:41:16(UTC)
  • マージ日時: 2026年05月20日 01:12:21(UTC)
  • ラベル: area-Infrastructure

概要

ARMV7L(32-bit ARM)固有のCMakeプリプロセッサ定義を削除します。廃止予定のホスト/ターゲットプラットフォーム定義を整理し、CMakeビルド構成をシンプル化します。

変更内容

  • eng/native/configureplatform.cmake: ARMV7L固有のCMake定義(12行)を削除
  • src/native/libs/CMakeLists.txt: ARMV7L関連の条件分岐を削除(14行削除、8行追加)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • CMakeビルドシステムの廃止予定コードの整理・削除
  • 破壊的変更なし(ARMV7Lサポート自体の削除ではなく、実装内部のCMake定義の整理)
  • レビュアー: jkotas(リードレビュアー)

#128198 Correct keyed-service probing for built-in DI services

概要

組み込みDIサービス(IServiceProvider、IServiceScopeFactory、IServiceProviderIsService、IServiceProviderIsKeyedService)のキー付きサービス検査動作を修正しました。これらのサービスはnullキーに対してのみ利用可能と扱われるようになり、キー付き解決(keyed resolution)の実際の動作と一致させました。

変更内容

  • CallSiteFactory.cs: 組み込みサービスのフォールバック処理を制限し、serviceKey is nullの場合のみ利用可能と判定するよう修正
  • ServiceProviderIsKeyedServiceSpecificationTests.cs: 4つの組み込みサービス型それぞれについて、理論的なカバレッジを追加。以下の動作を保証:
    • IsKeyedService(type, null) → true
    • IsKeyedService(type, 非nullキー) → false
    • IsKeyedService(type, KeyedService.AnyKey) → false

パフォーマンスへの影響

影響なし

関連Issue

#127537

その他

この変更は公開APIの動作修正です。IServiceProviderIsKeyedServiceインターフェースの呼び出し結果が変わるため、明示的にキー付きサービスとして登録されていない組み込みサービスに対して、null以外のキーでの検査を行っているコードでは動作が変わります。


#128072 Avoid recursive FileSystemWatcher when not required in PhysicalFilesWatcher

概要

PhysicalFilesWatcherでFileSystemWatcherのIncludeSubdirectoriesを無条件に有効化していた問題を修正しました。Linuxでは不要な再帰監視がinotify watch descriptorの過剰消費につながるため、実際にサブディレクトリ参照が必要な場合のみ有効化するよう改善します。これにより、systemdから起動されたアプリケーションなど、ルートが/の場合のパフォーマンス低下を防ぎます。

変更内容

  • PhysicalFilesWatcher.cs: IncludeSubdirectoriesを動的に制御するロジックを追加

    • サブディレクトリ参照の必要性を判定するカウンター機構を実装
    • パターン判定: ファイルパスに/を含む、ワイルドカードに/または**を含む、監視ディレクトリがルートの祖先の場合に有効化
    • TryEnableFileSystemWatcher呼び出し時に状態を再評価し、動的な有効/無効化に対応
  • PhysicalFilesWatcherTests.cs: 新規テストケース追加(134行)

    • 様々なパターンでのIncludeSubdirectoriesの制御動作を検証

パフォーマンスへの影響

  • 改善: Linuxでinotify watch descriptor生成が削減され、特にルート監視時の消費リソースが大幅に削減
  • 効果: デフォルトのホスティング設定(appsettings.jsonのみ監視)では再帰監視が不要となり、無駄な監視を回避
  • 制限回避: inotify watch descriptor上限への到達リスクが軽減

関連Issue

#126708

その他

このPull Requestはcopilotにより作成されました。内部実装の変更であり、公開APIへの互換性への影響はありません。


#128068 [Android] Fall back to 'localhost' when *.localhost resolves to only non-loopback addresses

  • 作成者: @kotlarmilos
  • 作成日時: 2026年05月12日 08:54:31(UTC)
  • マージ日時: 2026年05月20日 13:14:45(UTC)
  • ラベル: area-System.Net

概要

Android(およびiOS/tvOS/MacCatalyst)において、*.localhostサブドメインのDNS解決時にbionic getaddrinfoがループバック以外のアドレス(link-local IPv6やグローバルルーティング可能なIPv6)を返す問題を修正しました。RFC 6761 §6.3に基づき、OSリゾルバーが非ループバックアドレスのみを返す場合に、プレーンなlocalhostへのフォールバック動作を追加実装しました。同期・非同期両方の解決パスで対応しています。

変更内容

  • src/libraries/System.Net.NameResolution/src/System/Net/Dns.cs

    • HasNoLoopbackAddress()ヘルパーメソッドを追加して、結果リストにループバックアドレスが含まれないかチェック
    • 同期解決パスのRFC 6761 §6.3フォールバックロジックを拡張(OSが非ループバックアドレスのみを返す場合にlocalhostへフォールバック)
    • 非同期解決パス(GetAddrInfoAsync完了時)のフォールバックロジックを拡張(IPAddress[]とIPHostEntry両方に対応)
  • テストファイル更新

    • 同じ根本原因をカバーする6つの無効化済みテストを再度有効化
    • GetHostAddressesTest.csおよびGetHostEntryTest.csのテストスキップ条件を解除

パフォーマンスへの影響

影響なし。フォールバック動作はOSリゾルバーの結果が無効な場合の例外処理であり、通常の解決パスのパフォーマンスは変わりません。

関連Issue

#127965
#127953

以下のテストスキップ対応を置き換えます:

その他

なし


#127929 ci-pipeline-monitor issue filing script

  • 作成者: @kg
  • 作成日時: 2026年05月07日 18:43:18(UTC)
  • マージ日時: 2026年05月20日 21:51:50(UTC)
  • ラベル: area-skills

概要

CI パイプラインモニタースキルのデータベース内の失敗情報から GitHub Issue やコメントを自動生成するための Python スクリプトを追加します。デフォルトはドライラン mode で動作し、--go フラグを明示的に渡すことで実際の gh コマンドを実行します。ビルド ID ごとにスタンプファイルを生成して重複コメント投稿を防止します。

変更内容

  • update_github.py: CI パイプラインモニターの SQLite データベース (monitor.db) から失敗情報を読み込み、GitHub Issue 作成・コメント追加用の gh コマンドを生成するスクリプト。Markdown 形式のボディにパイプラインリンク・コンソールログ・ソース情報を含めて構成
  • validate_results.py: 結果検証処理の追加(28 行)
  • .gitignore: スタンプファイルなど 3 項目を追加

パフォーマンスへの影響

影響なし(CI インフラストラクチャの補助スクリプト)

関連Issue

なし

その他

  • 手動トリガーのスクリプトで、エージェントによる自動呼び出しは将来の課題として想定
  • ドライランモードがデフォルトなため、動作確認後に --go を明示的に指定することで実際のコマンド実行が可能
  • 同一ビルド ID に対する重複 Issue/コメント生成を防止する仕組みを実装

#127915 JIT: Transform 'SELECT(cond, cns, cns)' to 'cns'

概要

JITコンパイラの条件式最適化を改善し、SELECT(cond, cns, cns)パターン(条件は異なるが真偽両ケースで同じ定数値を返す)を直接その定数値に変換します。これにより、不要な条件分岐と比較演算を削除し、生成されるアセンブリコードを簡潔化します。

例:0.0.Equals(value)のような比較は、条件の結果に関わらず定数を返す場合、その定数に直接置換されます。

変更内容

  • src/coreclr/jit/ifconversion.cpp: SELECT式の最適化ロジックに4行追加。同じ定数値を返すSELECT(cond, cns, cns)パターンを検出し、定数値に直接変換する処理を実装。

パフォーマンスへの影響

改善あり。生成されるアセンブリコードサイズが縮小(提示例では約32バイトから19バイトへ削減)され、不要な分岐とCMOV命令が排除されます。

ベンチマーク(提示例):

  • 基準版:複数のCMOV命令と分岐が含まれる
  • 最適化版:単純な比較命令とMOVZX命令のみで処理完了

関連Issue

なし

その他

  • コメントで「gtFoldExprConditionalでも同様の処理が可能」との記述があり、他の最適化パスとの関連性が存在する可能性があります
  • 内部実装(JIT最適化ロジック)の改善であり、公開APIへの影響はありません

#127503 Add configurable VariableNameTransformation to EnvironmentVariables config

概要

環境変数の設定キー変換をカスタマイズできる機能を追加します。デフォルトではアンダースコア2つ(__)をコロン(:)に変換しますが、新たにVariableNameTransformationデリゲートで任意の変換ロジックを指定できるようになります。また、ドット(.)を含むキーを環境変数から設定する場合用にColonAndDotTransformationプリセットが提供されます。

// アンダースコア3つで`.`、2つで`:`に変換
builder.AddEnvironmentVariables("Logging__", 
    EnvironmentVariablesConfigurationSource.ColonAndDotTransformation);

変更内容

  • EnvironmentVariablesExtensions.cs: AddEnvironmentVariables(string? prefix, Func<string, string>? variableNameTransformation)オーバーロード追加
  • EnvironmentVariablesConfigurationSource.cs:
    • VariableNameTransformationプロパティ(カスタム変換関数の設定用)
    • DefaultTransformationプロパティ(既存の__→:変換)
    • ColonAndDotTransformationプロパティ(___→.、__→:の変換)
  • EnvironmentVariablesConfigurationProvider.cs: 変換ロジックの実装(プレフィックスも変換済み形式で指定)
  • EnvironmentVariablesTest.cs: 13個の新規テストケース(2つの組み込み変換の動作検証、カスタム変換の適用確認、プレフィックス変換の検証など)
  • ref/定義ファイル: 公開API定義の更新

パフォーマンスへの影響

  • ColonAndDotTransformationは.NETではValueStringBuilder + stackalloc char[256]を使用して低レイテンシ処理を実現
  • .NET FrameworkではStringBuilderを使用(条件付きコンパイル#if NETで分岐)
  • 新規パッケージ依存なし
  • デフォルト変換時は既存と同等のパフォーマンス

関連Issue

#125137

その他

  • プレフィックスはアクティブな変換前の形式("Logging__")で指定する必要があります。変換後の形式("Logging:")ではなく、Prefixプロパティのドキュメントおよび関連するオーバーロードで明記されています
  • API設計は既承認のコメントに準拠しています

#125298 JIT: Add debug consistency checks for GT_RETURN nodes

概要

JITコンパイラの中間表現(IR)一貫性チェックを強化し、GT_RETURNノードが正しく配置されていることを検証するデバッグアサーションを追加します。GT_RETURNはBBJ_RETURNブロックにのみ存在し、かつそのブロック内の最後のステートメントである必要があります。

変更内容

  • src/coreclr/jit/fgdiagnostic.cpp: fgDebugCheckStmtsList関数を拡張し、以下の2つのアサーションを追加
    1. BBJ_RETURN以外のブロックはGT_RETURNノードを含まないことを検証
    2. BBJ_RETURNブロック内のGT_RETURNがブロックの最後のステートメントであることを検証

パフォーマンスへの影響

デバッグビルド時のみ有効なチェックのため、リリースビルドのパフォーマンスへの影響なし。デバッグビルド時はIR検証のため若干のオーバーヘッドが増加。

関連Issue

#125072

その他

このアサーションは、PR #125072がマージされた後、理想的には発火しないことが期待されています。IR一貫性の維持に関する防御的プログラミング的なアプローチです。


目次