概要
このドキュメントは、uvのバッファ再利用・キャッシュクリーンアップ・依存関係管理などの最適化PRの詳細とベンチマーク結果をまとめたものです。 主にmacOSとLinux上でのパフォーマンス改善が報告されています。 バージョン0.12.8での主な新機能やバグ修正も記載しています。 内容は技術的な詳細と各種リリースノートを含みます。 依存関係管理や自動アップデートの設定についても触れています。
uv パフォーマンス最適化PRの概要
-
content hashing有効時のバッファ再利用 によるメモリアロケーション削減
- これまでファイルごとに64KiBバッファを新規確保していた仕様を、wheel全体で1つのバッファを使い回す方式に変更
- PyTorch wheelのベンチマークでは、バッファ確保回数が11,120回から1回に減少
- バッファサイズはアクティブwheelごとに64KiBを維持
-
ベンチマーク結果(#21327時点と最適化適用後の比較)
- AnyIO: 110ms → 107ms(-2.6%)
- SymPy: 845ms → 775ms(-8.3%)
- NumPy: 627ms → 567ms(-9.5%)
- PyTorch CPU: 6.50s → 5.99s(-7.8%)
- 14パッケージ環境(並列度4): 6.95s → 6.47s(-7.0%)
- 全672回のインストールで計測、キャッシュ済みインストールやローカルwheelでは変化なし
-
macOS向けキャッシュクリーンアップ高速化
- cache cleanup時、全
files-v0オブジェクトのハードリンク数を個別に取得していた処理を、getattrlistbulkでバッチ取得に最適化 - 87,129個の空ファイルオブジェクト(2ハードリンク/obj, 256 shard)の全走査コマンド実行時間
uv cache clean <package>: 386ms → 105msuv cache clean <10 packages>: 389ms → 104msuv cache prune: 386ms → 101ms
- スキャンはシングルスレッドで実行、削除スループットではなくスキャン速度を計測
- cache cleanup時、全
uv v0.12.8 リリースノート要約
- 機能強化
uv tool upgrade --allで無効なツールディレクトリを警告しつつ有効ツールのみアップグレード
- プレビューフィーチャー
content-addressed-cacheプレビュー: キャッシュ内の同一ファイルを重複排除- content-addressed wheels展開時のハッシュバッファ再利用によるメモリ削減
- macOSでのキャッシュクリーンアップ高速化(ハードリンク数を一括取得)
- パフォーマンス改善
- 複数uvプロセスによる同一リモートwheelの重複ダウンロード・展開防止
- 大規模lockfileからの依存関係グラフ構築の高速化(パッケージインデックス化)
- lockfileトラバーサルの最適化(exports, dependency trees, audits, freshness checksへの拡張)
- マーカーinternerの再利用によるウォーム解決高速化
- バグ修正
- wheelメタデータでのみ発見されたdirect URLのハッシュを
--require-hashes時に信用しない - Azure Storage APIバージョン互換対応、認証リトライ対応
- Azure shared access signature (
sig)クエリパラメータのURL表示からの除去 - ワークスペース検出時、1階層下のworkspace member glob配下プロジェクトを単独プロジェクトとして扱う
- wheelメタデータでのみ発見されたdirect URLのハッシュを
- その他
astral-tokio-tarの0.7.0へのアップデート、ハードリンク抽出時の実サイズ利用
依存関係管理・自動アップデート設定
- Renovate CLIによる依存パッケージの自動管理
ghcr.io/astral-sh/uvのパッチアップデート(0.12.7→0.12.8)- スケジュールや自動マージ設定
- 依存取得エラー時はDependency Dashboard参照を推奨
- PRのrebase/retryも手動で可能
参考リンク・著者情報
- uvリポジトリ
- Renovate CLI
- 著者: Charlie Marsh, Zanie Blue, renovate[bot]