Pull Request on 2026年05月24日

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

注意点

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



#128527 Update public-signing.md with NGEN details

  • 作成者: @KirillOsenkov
  • 作成日時: 2026年05月23日 21:50:26(UTC)
  • マージ日時: 2026年05月24日 19:10:18(UTC)
  • ラベル: area-Meta

概要

.NET Frameworkにおけるアセンブリの遅延署名(delay-signed)とパブリック署名(public-signed)に関するNGEN(Native Image Generator)の動作の違いを明確化するドキュメント更新です。NGEN がこれらのアセンブリをどのように処理するかについての既知問題を追加しています。

変更内容

  • docs/project/public-signing.md: 「既知問題」セクションに、NGEN がストロングネーム検証をスキップした場合、遅延署名されたアセンブリはコンパイル可能だが、パブリック署名されたアセンブリはコンパイル不可であることを記載(+2/-1 行)

パフォーマンスへの影響

影響なし(ドキュメント更新のため)

関連Issue

なし

その他

本変更はドキュメントのみの更新であり、ランタイム動作やAPIの変更はありません。NGEN に関連するアセンブリ署名の動作について、開発者向けの重要な情報を提供しています。


#127889 JIT: Avoid TLS access when restoring async contexts

概要

非同期関数の終了時にスレッドローカルストレージ(TLS)アクセスを回避するため、非同期コンテキストの復元パスでキャプチャされたThreadオブジェクトをローカル変数として使用するよう変更しました。JITと言語ランタイムの非同期ヘルパー呼び出し機構を拡張し、同期復元時のTLSアクセスを排除することで、将来的なスレッドアクセスの最適化を可能にします。

変更内容

  • AsyncHelpers.CoreCLR.cs: CaptureContextsに現在のThreadを出力パラメータとして追加、RestoreContextsに入力パラメータとして追加
  • JIT側: 新しい非同期スレッドローカル変数(lvaAsyncThreadObjectVar)を導入し、割り当て・追跡、OSR/パッチポイントオフセットマッピングに対応
  • コード生成: xarch/armarch/arm64/arm向けに保護領域サイズの計算とアサーション更新
  • 非同期処理: async.cppでスレッドローカルをキャプチャ/復元呼び出しに渡し、中断ライブセットから除外
  • インタープリタ: 新しいローカルインデックスを追跡し、非同期ヘルパー呼び出しに統合(現在、引数構築と中断時のベースローカル処理に課題あり)
  • パッチポイント情報: 非同期スレッドローカルのFP相対オフセットとアクセッサを拡張

パフォーマンスへの影響

NativeAOTバイナリサイズで軽微な増加を観測(全体で+0.060%〜-0.008%の範囲)。主な要因は:

  • プロローグスロットの初期化
  • 追加引数の受け渡し

懸念点として、インタープリタ側で非同期ヘルパー呼び出しの引数構築に未解決の問題があります。ただし本変更はTLSアクセス排除による将来的な最適化(Thread参照の最適化)を実現するための基盤として位置付けられています。

関連Issue

なし

その他

  • インタープリタ実装に既知の問題あり:引数パッシングと中断時のベースローカルハンドリング(PR内の保存されたコメント参照)
  • JIT版GUID(jiteeversionguid.h)が更新されており、互換性を考慮した変更

目次