uv сокращает кэш wheel-файлов на 10% благодаря дедупликации на уровне файлов
uv: Deduplicate all files in the wheel cache
В uv появилась дедупликация всех файлов в кэше wheel: каждый файл теперь хранится по его BLAKE3-хешу в новом bucket `files-v0`, а hardlink'и обеспечивают доступ из `archive-v0`. Это сокращает кэш примерно на 10% (545 МБ на тестовой машине), при этом замедление холодных установок не превышает 4%, а тёплые установки не замедляются вовсе. Изменение затрагивает все файлы, а не только исполняемые и библиотеки, и не меняет процесс установки.
Мы экономим 545.2 МиБ на моей локальной машине, или около 10% кэша, в обмен на замедление холодных установок менее чем на 4%, что, вероятно, оправдано.
- notatallshaw
Будучи мейнтейнером pip, я давно изучаю компромиссы кэша uv — это самый важный фактор, который делает тёплые установки быстрее в uv, чем в pip. Поскольку pip кэширует исходные дистрибутивы и затем каждый раз распаковывает их, uv кэширует распакованный дистрибутив и использует жёсткие ссылки, если это возможно.
Но у него всегда было две серьёзные проблемы:
1. Нет способа воспроизвести точные дистрибутивы для команды "download" (в uv нет эквивалента "pip download")
2. У людей с большим количеством разных окружений кэш растёт значительно больше, чем у pip
Мне интересно увидеть, хотя бы анекдотически, если это значительно улучшит пункт 2, то, возможно, мы сможем реализовать двухуровневую стратегию кэширования без значительных затрат дискового пространства.
- stephenlf
uv — это основа любой современной Python-библиотеки. Я рад видеть улучшения.
- mark_l_watson
Отличное улучшение. Для меня uv — это «Quicklisp для Python». uv просто позволил мне получать удовольствие от использования Python, как Quicklisp делает Common Lisp более приятным в использовании.
Я всегда был преданным поклонником Lisp, но несколько лет назад, когда я начал использовать uv, я стал воспринимать Python как язык, которым я могу действительно наслаждаться, поэтому я вложил усилия в то, чтобы сделать мою среду разработки на Python почти без трения.
- TacticalCoder
> дедупликация на уровне файлов: каждый файл теперь хранится под его BLAKE3-хэшем
Blake3 — это действительно замечательно быстрый криптографический хэш. Я использую его для своей собственной утилиты "дедупликация / целостность / берсеркер" (которую я сделал ещё до того, как LLM стали мейнстримом).
Если у меня есть файл с именем:
DSC98731-b3-7b39197a22.JPG
то:
- если этот файл не соответствует контрольной сумме 7b39197a22, значит, есть проблема с целостностью файла (это потрясающе, и это уже помогало мне устранять неполадки)
- если у любого другого файла такой же BLAKE3-хэш 7b39197a22, значит, это дубликат
- если эта контрольная сумма 7b39197a22 есть в моей базе данных, "могут происходить разные вещи".
Например, моя БД может сказать: "любой файл с BLAKE3-хэшем 7b39197a22 можно всегда удалять" или "любой файл с BLAKE3-хэшем 887463c09e, если у него общее имя вроде "dscXXXXX", можно всегда переименовывать в "20260722jackJohnAtTheBeach-b3-778463c09e.jpg" (или как вам удобно).
Это действительно здорово (и я знаю, что несколько человек здесь независимо создали похожие схемы), и Blake3 — потрясающий хэш для таких случаев.
- CivBase
Сокращение кэша на 10% в обмен на замедление на 4% не кажется мне очевидно стоящим, особенно когда это приводит к увеличению сложности.
- dboreham
Люди говорят, что uv хорош, потому что он быстрый, но, честно говоря, мне это не важно. Мы перешли на его использование для распространения наших инструментов на Python, потому что он делает очень удобной установку непосредственно из git-репозитория и последующее обновление из того же репозитория. Нет необходимости собирать пакет.
- as1297kj
Какой смысл использовать программное обеспечение для упаковки, принадлежащее ClosedAI?
Люди из Astral уже в комментариях делают заявления в поддержку ИИ-кодинга. Используя uv, вы буквально поддерживаете тех, кто хочет сделать вас безработным ради биржевых опционов.