Release Notes
This release includes support for generating lockfiles from scripts based on inline metadata, as defined in PEP 723.
By default, scripts remain unlocked, and must be locked explicitly with uv lock --script /path/to/script.py
, which will generate a lockfile adjacent to the script (e.g., script.py.lock
). Once generated, the lockfile will be respected (and updated, if necessary) across uv run --script
, uv add --script
, and uv remove --script
invocations.
This release also includes support for uv export --script
and uv tree --script
. Both commands support PEP 723 scripts with and without accompanying lockfiles.
Enhancements
- Add support for locking PEP 723 scripts (#10135)
- Respect PEP 723 script lockfiles in
uv run
(#10136) - Update PEP 723 lockfile in
uv add --script
(#10145) - Update PEP 723 lockfile in
uv remove --script
(#10162) - Add
--script
support touv export
for PEP 723 scripts (#10160) - Add
--script
support touv tree
for PEP 723 scripts (#10159) - Add
ls
alias touv {tool, python, pip} list
(#10240) - Allow reading
--with-requirements
from stdin inuv add
anduv run
(#10447) - Warn-and-ignore for unsupported
requirements.txt
options (#10420)
Preview features
- Add remaining Python type annotations to build backend (#10434)
Performance
- Avoid allocating for names in the PEP 508 parser (#10476)
- Fetch concurrently for non-first-match index strategies (#10432)
- Remove unnecessary
.to_string()
call (#10419) - Respect sentinels in package prioritization (#10443)
- Use
ArcStr
for marker values (#10453) - Use
ArcStr
for package, extra, and group names (#10475) - Use
matches!
rather thancontains
inrequirements.txt
parsing (#10423) - Use faster disjointness check for markers (#10439)
- Pre-compute PEP 508 markers from universal markers (#10472)
Bug fixes
- Fix
UV_FIND_LINKS
delimiter to split on commas (#10477) - Improve
uv tool list
output when tool environment is broken (#10409) - Only track markers for compatible versions (#10457)
- Respect
requires-python
when installing tools (#10401) - Visit proxy packages eagerly (#10441)
- Improve shell compatibility of
venv
activate scripts (#10397) - Read publish username from URL (#10469)
Documentation
- Add Lambda layer instructions to AWS Lambda guide (#10411)
- Add
uv lock --script
to the docs (#10414) - Use Windows-specific instructions in Jupyter guide (#10446)
Install uv 0.5.17
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.17/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.5.17/uv-installer.ps1 | iex"
Download uv 0.5.17
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |