Releases: astral-sh/uv
0.6.2
Release Notes
Enhancements
- Add support for constraining build dependencies with
tool.uv.build-constraint-dependencies
(#11585) - Sort dependency group keys when adding new group (#11591)
Performance
- Use an
Arc
for index URLs (#11586)
Bug fixes
- Allow use of x86-64 Python on ARM Windows (#11625)
- Fix an issue where conflict markers could instigate a very large lock file (#11293)
- Fix duplicate packages with multiple conflicting extras declared (#11513)
- Respect color settings for log messages (#11604)
- Eagerly reject unsupported Git schemes (#11514)
Documentation
- Add documentation for specifying Python versions in tool commands (#11598)
Install uv 0.6.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.2/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.6.2/uv-installer.ps1 | iex"
Download uv 0.6.2
0.6.1
Release Notes
Enhancements
- Allow users to mark platforms as "required" for wheel coverage (#10067)
- Warn for builds in non-build and workspace root pyproject.toml (#11394)
Bug fixes
- Add
--all
touvx --reinstall
message (#11535) - Fallback to
GET
on HTTP 400 when attempting to use range requests for wheel download (#11539) - Prefer local variants in preference selection (#11546)
- Respect verbatim executable name in
uvx
(#11524)
Documentation
Install uv 0.6.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.1/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.6.1/uv-installer.ps1 | iex"
Download uv 0.6.1
0.6.0
Release Notes
There have been 31 releases and 1135 pull requests since 0.5.0, our last release with breaking changes. As before, we've accumulated various changes that improve correctness and user experience, but could break some workflows. This release contains those changes; many have been marked as breaking out of an abundance of caution. We expect most users to be able to upgrade without making changes.
Breaking changes
-
Create
main.py
instead ofhello.py
inuv init
(#10369)Previously,
uv init
created ahello.py
sample file. Now,uv init
will createmain.py
instead — which aligns with expectations from user feedback. The--bare
option can be used to avoid creating the file altogether. -
Respect
UV_PYTHON
inuv python install
(#11487)Previously,
uv python install
did not read this environment variable; now it does. We believe this matches user expectations, however, this will take priority over.python-version
files which could be considered breaking. -
Set
UV
to the uv executable path (#11326)When uv spawns a subprocess, it will now have the
UV
environment variable set to theuv
binary path. This change is breaking if you are setting theUV
environment variable yourself, as we will overwrite its value.Additionally, this change requires marking the uv Rust entrypoint (
uv::main
) asunsafe
to avoid unsoundness — this is only relevant if you are invoking uv using Rust. See the Rust documentation for details about the safety of updating a process' environment. -
Error on non-existent extras, e.g., in
uv sync
(#11426)Previously, uv would silently ignore non-existent extras requested on the command-line (e.g., via
uv sync --extra foo
). This is generally correct behavior when resolving requests for package extras, because an extra may be present on one compatible version of a package but not another. However, this flexibility doesn't need to apply to the local project and it's less surprising to error here. -
Error on missing dependency groups when
--frozen
is provided (#11499)Previously, uv would not validate that the requested dependency groups were present in the lockfile when the
--frozen
flag was used. Now, an error will be raised if a requested dependency group is not present. -
Change
-p
to a--python
alias inuv pip compile
(#11486)In
uv pip compile
,-p
was an alias for--python-version
while everywhere else in uv's interface it is an alias for--python
. Additionally,uv pip compile
did not respect theUV_PYTHON
environment variable. Now, the semantics of this flag have been updated for parity with the rest of the CLI.However,
--python-version
is unique: if we cannot find an interpreter with the given version, we will not fail. Instead, we'll use an alternative interpreter and override its version tags with the requested version during package resolution. This behavior is retained here for backwards compatibility,--python <version>
/-p <version>
will not fail if the version cannot be found. However, if a specific interpreter is requested, e.g., with--python <path>
or--python pypy
, and cannot be found — uv will exit with an error.The breaking changes here are that
UV_PYTHON
is respected and--python <version>
will no longer fail if the version cannot be found. -
Bump
alpine
default tag to 3.21 for derived Docker images (#11157)Alpine 3.21 was released in Dec 2024 and is used in the official Alpine-based Python images. Our
uv:python3.x-alpine
images have been using 3.21 since uv v0.5.8. However, now the theuv:alpine
image will use 3.21 instead of 3.20 anduv:alpine3.20
will no longer be updated. -
Use files instead of junctions on Windows (#11269)
Previously, we used junctions for atomic replacement of cache entries on Windows. Now, we use a file with a pointer to the cache entry instead. This resolves various edge-case behaviors with junctions. These files are only intended to be consumed by uv and the cache version has been bumped. We do not think this change will affect workflows.
Stabilizations
-
uv publish
is no longer in preview (#11032)This does not come with any behavior changes. You will no longer see an experimental warning when using
uv publish
. See the linked pull request for a report on the stabilization.
Enhancements
- Support
--active
for PEP 723 script environments (#11433) - Add
revision
to the lockfile to allow backwards-compatible metadata changes (#11500)
Bug fixes
- Avoid reading metadata from
.egg-info
files (#11395) - Include archive bucket version in archive pointers (#11306)
- Omit lockfile version when additional fields are dynamic (#11468)
- Respect executable name in
uvx --from tool@latest
(#11465)
Install uv 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.0/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.6.0/uv-installer.ps1 | iex"
Download uv 0.6.0
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-aarch64-pc-windows-msvc.zip | ARM64 Windows | 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-unk... |
0.5.31
Release Notes
Enhancements
- Add
uv sync --script
(#11361) - Allow PEP 508 requirements in tool requests (#11337)
- Allow source distributions to produce wheels with
+local
suffixes (#11429) - Bring parity to
uvx
anduv tool install
requests (#11345) - Use a stable directory for local, remote, and stdin script virtual environments (#11347, #11364)
- Detect infinite recursion in
uv run
(#11386)
Python
The managed Python distributions have been updated, including:
- CPython 3.14.0a5, which includes a new tail calling interpreter for a significant performance improvement
- The bundled OpenSSL version was updated from 3.0.15 to 3.0.16 which fixes a security advisory
See the python-build-standalone
release notes for more details.
Bug fixes
- Fix cross-drive script installation (#11167)
- Add indexes in priority order (#11451)
- Allow
--python <dir>
requests to match existing environments ifsys.executable
is the same file (#11290) - Avoid comparing to system site packages in
--dry-run
mode (#11427) - Prefer running executables in the environment with
<name>
over<name>/__main__.py
(#11431) - Retry local clones without hardlinks if they fail (#11421)
Documentation
- Update alternative-indexes.md to use
UV_INDEX
instead ofUV_EXTRA_INDEX_URL
(#11381) - Update scripts guide to include using package indexes (#11443)
Install uv 0.5.31
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.31/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.31/uv-installer.ps1 | iex"
Download uv 0.5.31
0.5.30
Release Notes
Python
The managed PyPy distributions have been updated for PyPy v7.3.18, which includes:
- PyPy3.10, which updates the standard library from Python 3.10.14 to 3.10.19
- PyPy3.11, which adds beta support for Python 3.11.11
See the PyPy release for more details.
Enhancements
Configuration
- Add
NO_BINARY
andNO_BINARY_PACKAGE
environment variables (#11399)
Performance
- Avoid re-cloning name when populating ambiguous set (#11401)
- Optimize flattening in large workspaces (#11313)
Bug fixes
- Allow dynamic packages to be overloaded (#11400)
- Fix credential caching for index roots when URL ends in
simple/
(#11336) - Fix marker merging for requirements.txt for psycopg (#11298)
- Set 777 permissions on locked files (#11328)
- Support extras in
@
requests for tools (#11335) - Upgrade
astral-tokio-tar
to v0.5.1 (#11359) - Avoid missing logging for no-op upgrade events (#11301)
- Use refined specifiers when logging narrowed Python range (#11334)
- Don't use popup-generating
eprintln
in trampoline warnings (#11295) - Patch pkg-config files to be relocatable (#11291)
- Fix a case of duplicate
torch
packages when using conflicting extras (#11323)
Documentation
- Add docs for
uv tool install --editable
(#11280) - Fix broken anchors in README and docs index (#11338)
Install uv 0.5.30
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.30/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.30/uv-installer.ps1 | iex"
Download uv 0.5.30
0.5.29
Release Notes
Enhancements
- Add
--bare
option touv init
(#11192) - Add support for respecting
VIRTUAL_ENV
in project commands via--active
(#11189) - Allow the project
VIRTUAL_ENV
warning to be silenced with--no-active
(#11251)
Python
The managed Python distributions have been updated, including:
- CPython 3.12.9
- CPython 3.13.2
- pkg-config files are now relocatable
See the python-build-standalone
release notes for more details.
Bug fixes
- Always use base Python discovery logic for cached environments (#11254)
- Use a flock to avoid concurrent initialization of project environments (#11259)
- Fix handling of
--all-groups
and--no-default-groups
flags (#11224)
Documentation
- Minor touchups to the Docker provenance docs (#11252)
- Move content from the
mkdocs.public.yml
into the template (#11246)
Install uv 0.5.29
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.29/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.29/uv-installer.ps1 | iex"
Download uv 0.5.29
0.5.28
Release Notes
Bug fixes
- Allow discovering virtual environments from the first interpreter found on the
PATH
(#11218) - Clear ephemeral overlays when running tools (#11141)
- Disable SSL in Git commands for
--allow-insecure-host
(#11210) - Fix hardlinks in tar unpacking (#11221)
- Set base executable when returning virtual environment (#11209)
- Use base Python for cached environments (#11208)
Documentation
- Add documentation on verifying Docker image attestations (#11140)
- Add
last updated
to documentation (#11164)
Install uv 0.5.28
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.28/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.28/uv-installer.ps1 | iex"
Download uv 0.5.28
0.5.27
Release Notes
Enhancements
- Avoid setting permissions during tar extraction (#11191)
- Remove warnings for missing lower bounds (#11195)
- Update PubGrub to set-based outdated priority tracking (#11169)
- Improve error messages for
uv pip install
with--extra
or--all-extras
and invalid sources (#11193) - Sign Docker images using GitHub attestations (#8685)
Preview features
- Don't expand self-referential extras in the build backend (#11142)
Performance
- Filter discovered Python executables by source before querying (#11143)
- Optimize exclusion computation for markers (#11158)
- Use Astral-maintained
tokio-tar
fork (#11174) - Remove unneeded
.clone()
(#11127)
Bug fixes
- Fix relative paths in bytecode compilation (#11177)
- Percent-decode URLs in canonical comparisons (#11088)
- Respect concurrency limits in parallel index fetch (#11182)
- Use wire JSON schema for conflict items (#11196)
- Use explicit
_GLibCVersion
tuple in uv-python crate (#11122)
Documentation
- Add Git SHA locking behavior to docs (#11125)
- Add best-practice flags to
pip install
example in troubleshooting guide (#11194) - Set
VIRTUAL_ENV
in Jupyter kernels (#11155) - Add instructions for deactivating an environment (#11200)
Install uv 0.5.27
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.27/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.27/uv-installer.ps1 | iex"
Download uv 0.5.27
0.5.26
Release Notes
Enhancements
- Add support for
uvx python
(#11076) - Allow
--no-dev --invert
inuv tree
(#11068) - Update
uv python install --reinstall
to reinstall all previous versions (#11072) - Consistently write log messages with capitalized first word (#11111)
- Suggest
--build-backend
when--backend
is passed touv init
(#10958) - Improve retry trace message (#11108)
Performance
- Remove unnecessary UTF-8 conversion in hash parsing (#11110)
Bug fixes
- Ignore non-hash fragments in HTML API responses (#11107)
- Avoid resolving symbolic links when querying Python interpreters (#11083)
- Avoid sharing state between universal and non-universal resolves (#11051)
- Error when
--script
is passing a non-PEP 723 script (#11118) - Make metadata deserialization failures non-fatal in the cache (#11105)
- Mark metadata as dynamic when reading from built wheel cache (#11046)
- Propagate credentials for
<index>/simple
to<index>/...
endpoints (#11074) - Fix conflicting extra bug during
uv sync
(#11075)
Documentation
- Add PyTorch XPU instructions to the PyTorch guide (#11109)
- Add docs for signal handling (#11041)
- Explain build frontend vs. build backend (#11094)
- Fix formatting of
RUST_LOG
documentation (#10053) - Fix typo in
--no-deps
description (#11073) - Reflow CLI documentation comments (#11040)
- Shorten "Using existing Python versions" nav item so it fits on one line (#11077)
- Some minor touch-ups to the Python install guide (#11116)
- Update Dependabot tracking issue link (#11054)
- Update documentation for running in a container (#11052)
- Upgrade PyTorch version in documentation (#11114)
- Use
sys_platform
in lieu ofplatform_system
in PyTorch docs (#11113) - Use positive (rather than negative) markers in PyTorch examples (#11112)
- Fix unnecessary backslashes in brackets (#11059)
- Suggest setting copy link mode in GitLab integration guide (#11067)
Install uv 0.5.26
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.26/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.26/uv-installer.ps1 | iex"
Download uv 0.5.26
0.5.25
Release Notes
Enhancements
- Allow installation of manylinux wheels on loongarch64 (#10927)
- Allow optional
=
for editables inrequirements.txt
(#10954) - Add Windows aarch64 to the release binaries (#10885)
Bug fixes
- Use spec-compliant (
128+n
) exit codes foruv run
anduv tool run
on Unix (#10781) - Fix best-interpreter lookups when there is an invalid interpreter in the
PATH
(#11030) - Guard against concurrent cache writes on Windows (#11007)
- Prioritize package preferences with greater package versions (#10963)
- Reject
--editable
flag on non-directory requirements (#10994) - Respect
--no-sources
foruv pip install
workspace discovery (#11003) - Set
JEMALLOC_SYS_WITH_LG_PAGE=16
in ARM Docker builds (#10943) - Update
riscv64
Python downloads to allow install onriscv64gc
(#10937) - Fix file persist retries on Windows (#11008)
- Fix incorrect error message when specifying
tool.uv.sources.(package).workspace
with other options (#11013) - Improve SIGINT handling in
uv run
(#11009)
Documentation
- Add
SECURITY
policy (#11035) - Add
Requires-Python
upper bound behavior to the docs (#10964) - Add a troubleshooting section and reproducible example guide (#10947)
- Add documentation for
uv add -r
(#10926) - Amend
requires-python
rules in resolver documentation (#10993) - Reference workspaces in
--no-sources
documentation (#10995) - Update documentation for activating virtual environments in different shell (#11000)
- Add Docker SHA pinning tip (#10955)
Install uv 0.5.25
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.25/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.25/uv-installer.ps1 | iex"