uv 0.12.11 перевіряє архіви до збірки та прискорює встановлення Python-пакетів
Новий uv звіряє source archive з uv.lock ще до читання metadata та запуску build backend, а також прискорює локальні wheel і оновлення середовищ.

uv 0.12.11 посилює перевірку ланцюга постачання Python-пакетів і прискорює встановлення wheel у вже створені середовища. Source archive тепер звіряється з хешем у uv.lock до того, як інструмент читає metadata або запускає build backend. Це важливий порядок: потенційно підмінений архів не отримує шанс виконати код збірки до виявлення невідповідності.

Хеш перевіряється до виконання коду
Source distribution часто потребує запуску backend, щоб згенерувати metadata або wheel. Якщо перевіряти цілісність після цього, захист спрацьовує запізно. У 0.12.11 uv спочатку порівнює архів з даними lock-файлу, а вже потім дозволяє подальшу обробку. Реліз також коректно застосовує supplied hashes до registry requirements, зафіксованих через ===, у режимах --verify-hashes і --require-hashes.
Для версій із local suffix інструмент може використати хеш публічної версії, якщо окремого exact hash немає. Команді все одно варто розуміти походження локальної збірки: рівність базової версії не гарантує однаковий вміст.
PEP 751 і pylock.toml
Експорт у pylock.toml тепер генерує відсутні хеші артефактів, щоб файл відповідав PEP 751. Якщо таблиця artifact hash порожня, uv показує попередження; у майбутньому така структура буде відхилена. Це дає командам час виправити pipeline без раптового падіння після наступного оновлення.
Lock-файл приносить користь лише тоді, коли він описує не тільки назви й версії, а точні артефакти. Інакше registry може повернути інший файл із тим самим номером версії, а повторювана збірка перетвориться на припущення.
Чому встановлення стало швидшим
Під час перезапису існуючих файлів uv прибрав створення тимчасової директорії для кожного atomic hard-link, symlink або reflink. При злитті скопійованих wheel з готовим environment замість окремих директорій використовуються сусідні тимчасові файли. Локальні wheel читаються позиційно без спільного lock на ZIP cursor, а ZIP readers і буфери повторно використовуються.
Команда uv pip install --no-deps більше не запускає зайвий resolution та перевірку транзитивних залежностей, якщо запитані пакети вже встановлені. На великих CI-образах дрібні оптимізації складаються у помітне скорочення часу.
Виправлення для Windows і робочих середовищ
- PowerShell-активація virtual environment працює з UNC та WSL paths.
- Пробіли навколо записів у
.python-versionі.python-versionsобрізаються. - Команди
uv add/remove --no-syncтаuv add --frozenне показують недоречне попередження проVIRTUAL_ENV. uv python listпопереджає й продовжує роботу, якщо один interpreter не вдалося опитати.
Як оновлюватися безпечно
Спочатку слід перевірити CI з наявним uv.lock та експортованим pylock.toml. Попередження про порожні hash tables варто виправити одразу. Для приватних source archive потрібно переконатися, що lock-файл містить актуальні хеші, а збірка не покладається на перевипущений файл під тією самою версією.
Практичний висновок: головна зміна uv 0.12.11 — не швидкість, а правильна межа довіри: архів перевіряється до запуску backend. Продуктивні оптимізації роблять цей захист дешевшим для щоденного CI.
Джерело та права
Матеріал є самостійним українським перекладом-переказом офіційних release notes uv 0.12.11, опублікованих 8 вересня 2026 року. Проєкт доступний за подвійною ліцензією MIT або Apache-2.0. Перекладено й адаптовано редакцією «Бібліотеки програміста». Обкладинка створена редакцією за допомогою AI та не входить до першоджерела.
Матеріал перекладено, переказано та доповнено редакцією українською мовою.
Читайте далі — ми вже розбираємо наступну важливу тему.


