uv が wheel cache で「同じファイルを一度だけ持つ」ようにした話
Rust で書かれた Python パッケージマネージャー `uv` に、キャッシュの中身をファイル単位で重複排除する変更が入った。見た目は地味だが、配布物の置き場をかなり節約できるうえ、インストール時の体感速度を大きく壊していないのが面白い。しかも対象は、単に「同じ wheel を別の場所から落としたとき」ではない。wheel の中に入っている個々のファイルまで踏み込んでいる。キャッシュの設計を少しだけ賢くする、というより、かなり本気で整理し直した内容だ。 元記事は、`astral-sh/uv` の pull request #21327 について説明している。`uv` ではすでに content-addressed caching、つまり内容でキャッシュを識別する仕組みを wheel 単位では使っていた。たとえば同じ wheel を別の配布元から2回ダウンロードしても、キャッシュ上は同じものとして扱える。ただし、それはあくまで wheel 全体の話で、中に入っているファイル同士、あるいは別 wheel にまたがる同じ内容のファイルまでは重複排除されていなかった。 この PR ではそ
papoo.work