Update dependency uv to v0.11.6
ℹ️ Note
This PR body was truncated due to platform limits.
This MR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| uv (source, changelog) |
==0.2.33 → ==0.11.6
|
Release Notes
astral-sh/uv (uv)
v0.11.6
Released on 2026-04-09.
This release resolves a low severity security advisory in which wheels with malformed RECORD entries could delete arbitrary files on uninstall. See GHSA-pjjw-68hj-v9mw for details.
Bug fixes
- Do not remove files outside the venv on uninstall (#18942)
- Validate and heal wheel
RECORDduring installation (#18943) - Avoid
uv cache cleanerrors due to Win32 path normalization (#18856)
v0.11.5
Released on 2026-04-08.
Python
- Add CPython 3.13.13, 3.14.4, and 3.15.0a8 (#18908)
Enhancements
- Fix
build_system.requireserror message (#18911) - Remove trailing path separators in path normalization (#18915)
- Improve error messages for unsupported or invalid TLS certificates (#18924)
Preview features
- Add
exclude-newerto[[tool.uv.index]](#18839) -
uv audit: add context/warnings for ignored vulnerabilities (#18905)
Bug fixes
- Normalize persisted fork markers before lock equality checks (#18612)
- Clear junction properly when uninstalling Python versions on Windows (#18815)
- Report error cleanly instead of panicking on TLS certificate error (#18904)
Documentation
- Remove the legacy
PIP_COMPATIBILITY.mdredirect file (#18928) - Fix
uv init example-bare --bareexamples (#18822, #18925)
v0.11.4
Released on 2026-04-07.
Enhancements
- Add support for
--upgrade-group(#18266) - Merge repeated archive URL hashes by version ID (#18841)
- Require all direct URL hash algorithms to match (#18842)
Bug fixes
- Avoid panics in environment finding via cycle detection (#18828)
- Enforce direct URL hashes for
pyproject.tomldependencies (#18786) - Error on
--lockedand--frozenwhen script lockfile is missing (#18832) - Fix
uv exportextra resolution for workspace member and conflicting extras (#18888) - Include conflicts defined in virtual workspace root (#18886)
- Recompute relative
exclude-newervalues duringuv tree --outdated(#18899) - Respect
--exclude-newerinuv tool list --outdated(#18861) - Sort by comparator to break specifier ties (#18850)
- Store relative timestamps in tool receipts (#18901)
- Track newly-activated extras when determining conflicts (#18852)
- Patch
Cargo.lockinuv-buildsource distributions (#18831)
Documentation
- Clarify that
--exclude-newercompares artifact upload times (#18830)
v0.11.3
Released on 2026-04-01.
Enhancements
- Add progress bar for hashing phase in uv publish (#18752)
- Add support for ROCm 7.2 (#18730)
- Emit abi3t tags for every abi3 version (#18777)
- Expand
uv workspace metadatawith dependency information from the lock (#18356) - Implement support for PEP 803 (#18767)
- Pretty-print platform in built wheel errors (#18738)
- Publish installers to
/installers/uv/lateston the mirror (#18725) - Show free-threaded Python in built-wheel errors (#18740)
Preview features
- Add
--ignoreand--ignore-until-fixedtouv audit(#18737)
Bug fixes
- Bump simple API cache (#18797)
- Don't drop
blake2bhashes (#18794) - Handle broken range request implementations (#18780)
- Remove
powerpc64-unknown-linux-gnufrom release build targets (#18800) - Respect dependency metadata overrides in
uv pip check(#18742) - Support debug CPython ABI tags in environment compatibility (#18739)
Documentation
v0.11.2
Released on 2026-03-26.
Enhancements
- Add a dedicated Windows PE editing error (#18710)
- Make
uv self updatefetch the manifest from the mirror first (#18679) - Use uv reqwest client for self update (#17982)
- Show
uv self updatesuccess and failure messages with--quiet(#18645)
Preview features
- Evaluate extras and groups when determining auditable packages (#18511)
Bug fixes
- Skip redundant project configuration parsing for
uv run(#17890)
v0.11.1
Released on 2026-03-24.
Bug fixes
- Add missing hash verification for
riscv64gc-unknown-linux-musl(#18686) - Fallback to direct download when direct URL streaming is unsupported (#18688)
- Revert treating 'Dynamic' values as case-insensitive (#18692)
- Remove torchdata from list of packages to source from the PyTorch index (#18703)
- Special-case
==Python version request ranges (#9697)
Documentation
- Cover
--python <dir>in "Using arbitrary Python environments" (#6457) - Fix version annotations for
PS_MODULE_PATHandUV_WORKING_DIR(#18691)
v0.11.0
Released on 2026-03-23.
Breaking changes
This release includes changes to the networking stack used by uv. While we think that breakage will be rare, it is possible that these changes will result in the rejection of certificates previously trusted by uv so we have marked the change as breaking out of an abundance of caution.
The changes are largely driven by the upgrade of reqwest, which powers uv's HTTP clients, to v0.13 which included some breaking changes to TLS certificate verification.
The following changes are included:
-
rustls-platform-verifieris used instead ofrustls-native-certsandwebpkifor certificate verificationThis change should have no effect unless you are using the
native-tlsoption to enable reading system certificates.rustls-platform-verifierdelegates to the system for certificate validation (e.g.,Security.frameworkon macOS) instead of eagerly loading certificates from the system and verifying them viawebpki. The effects of this change will vary based on the operating system. In general, uv's certificate validation should now be more consistent with browsers and other native applications. However, this is the most likely cause of breaking changes in this release. Some previously failing certificate chains may succeed, and some previously accepted certificate chains may fail. In either case, we expect the validation to be more correct and welcome reports of regressions.In particular, because more responsibility for validating the certificate is transferred to your system's security library, some features like CA constraints or revocation of certificates via OCSP and CRLs may now be used.
This change should improve performance when using system certificate on macOS, as uv no longer needs to load all certificates from the keychain at startup.
-
aws-lcis used instead ofringfor a cryptography backendThere should not be breaking changes from this change. We expect this to expand support for certificate signature algorithms.
-
--native-tlsis deprecated in favor of a new--system-certsflagThe
--native-tlsflag is still usable and has identical behavior to--system-certs.This change was made to reduce confusion about the TLS implementation uv uses. uv always uses
rustlsnotnative-tls. -
Building uv on x86-64 and i686 Windows requires NASM
NASM is required by
aws-lc. If not found on the system, a prebuilt blob provided byaws-lc-syswill be used.If you are not building uv from source, this change has no effect.
See the CONTRIBUTING guide for details.
-
Empty
SSL_CERT_FILEvalues are ignored (for consistency withSSL_CERT_DIR)
See #18550 for details.
Python
- Enable frame pointers for improved profiling on Linux x86-64 and aarch64
See the python-build-standalone release notes for details.
Enhancements
- Treat 'Dynamic' values as case-insensitive (#18669)
- Use a dedicated error for invalid cache control headers (#18657)
- Enable checksum verification in the generated installer script (#18625)
Preview features
- Add
--service-formatand--service-urltouv audit(#18571)
Performance
- Avoid holding flat index lock across indexes (#18659)
Bug fixes
- Find the dynamic linker on the file system when sniffing binaries fails (#18457)
- Fix export of conflicting workspace members with dependencies (#18666)
- Respect installed settings in
uv tool list --outdated(#18586) - Treat paths originating as PEP 508 URLs which contain expanded variables as relative (#18680)
- Fix
uv exportfor workspace member packages with conflicts (#18635) - Continue to alternative authentication providers when the pyx store has no token (#18425)
- Use redacted URLs for log messages in cached client (#18599)
Documentation
- Add details on Linux versions to the platform policy (#18574)
- Clarify
FLASH_ATTENTION_SKIP_CUDA_BUILDguidance forflash-attninstalls (#18473) - Split the dependency bots page into two separate pages (#18597)
- Split the alternative indexes page into separate pages (#18607)
v0.10.12
Released on 2026-03-19.
Python
Enhancements
- Include uv's target triple in version report (#18520)
- Allow comma separated values in
--no-emit-package(#18565)
Preview features
- Show
uv auditin the CLI help (#18540)
Bug fixes
- Improve reporting of managed interpreter symlinks in
uv python list(#18459) - Preserve end-of-line comments on previous entries when removing dependencies (#18557)
- Treat abi3 wheel Python version as a lower bound (#18536)
- Detect hard-float support on aarch64 kernels running armv7 userspace (#18530)
Documentation
- Add Python 3.15 to supported versions (#18552)
- Adjust the PyPy note (#18548)
- Move Pyodide to Tier 2 in the Python support policy (#18561)
- Move Rust and Python version support out of the Platform support policy (#18535)
- Update Docker guide with changes from
uv-docker-example(#18558) - Update the Python version policy (#18559)
v0.10.11
Released on 2026-03-16.
Enhancements
- Fetch Ruff release metadata from an Astral mirror (#18358)
- Use PEP 639 license metadata for uv itself (#16477)
Performance
- Improve distribution id performance (#18486)
Bug fixes
- Allow
--projectto refer to apyproject.tomldirectly and reduce to a warning on other files (#18513) - Disable
SYSTEM_VERSION_COMPATwhen querying interpreters on macOS (#18452) - Enforce available distributions for supported environments (#18451)
- Fix
uv sync --activerecreating active environments whenUV_PYTHON_INSTALL_DIRis relative (#18398)
Documentation
- Add missing
-o requirements.txtinuv pip compileexample (#12308) - Link to organization security policy (#18449)
- Link to the AI policy in the contributing guide (#18448)
v0.10.10
Released on 2026-03-13.
Python
- Add CPython 3.15.0a7 (#18403)
Enhancements
- Add
--outdatedflag touv tool list(#18318) - Add riscv64 musl target to build-release-binaries workflow (#18228)
- Fetch Ruff from an Astral mirror (#18286)
- Improve error handling for platform detection in Python downloads (#18453)
- Warn if
--projectdirectory does not exist (#17714) - Warn when workspace member scripts are skipped due to missing build system (#18389)
- Update build backend versions used in
uv init(#18417) - Log explicit config file path in verbose output (#18353)
- Make
uv cache clearan alias ofuv cache clean(#18420) - Reject invalid classifiers, warn on license classifiers in
uv_build(#18419)
Preview features
- Add links to
uv auditoutput (#18392) - Output/report formatting for
uv audit(#18193) - Switch to batched OSV queries for
uv audit(#18394)
Bug fixes
- Avoid sharing version metadata across indexes (#18373)
- Bump zlib-rs to 0.6.2 to fix panic on decompression of large wheels on Windows (#18362)
- Filter out unsupported environment wheels (#18445)
- Preserve absolute/relative paths in lockfiles (#18176)
- Recreate Python environments under
uv tool install --force(#18399) - Respect timestamp and other cache keys in cached environments (#18396)
- Simplify selected extra markers in
uv export(#18433) - Send pyx mint-token requests with a proper
Content-Type(#18334) - Fix Windows operating system and version reporting (#18383)
Documentation
- Update the platform support policy with a tier 3 section including freebsd and 32-bit windows (#18345)
v0.10.9
Released on 2026-03-06.
Enhancements
- Add
fbgemm-gpu,fbgemm-gpu-genai,torchrec, andtorchtuneto the PyTorch list (#18338) - Add torchcodec to PyTorch List (#18336)
- Log the duration we took before erroring (#18231)
- Warn when using
uv_buildsettings withoutuv_build(#15750) - Add fallback to
/usr/lib/os-releaseon Linux system lookup failure (#18349) - Use
cargo auditableto include SBOM in uv builds (#18276)
Configuration
- Add an environment variable for
UV_VENV_RELOCATABLE(#18331)
Performance
Bug fixes
- Continue on trampoline job assignment failures (#18291)
- Handle the hard link limit gracefully instead of failing (#17699)
- Respect build constraints for workspace members (#18350)
- Revalidate editables and other dependencies in scripts (#18328)
- Support Python 3.13+ on Android (#18301)
- Support
cp3-none-any(#17064) - Skip tool environments with broken links to Python on Windows (#17176)
Documentation
- Add documentation for common marker values (#18327)
- Improve documentation on virtual dependencies (#18346)
v0.10.8
Released on 2026-03-03.
Python
- Add CPython 3.10.20
- Add CPython 3.11.15
- Add CPython 3.12.13
Enhancements
- Add Docker images based on Docker Hardened Images (#18247)
- Add resolver hint when
--exclude-newerfilters out all versions of a package (#18217) - Configure a real retry minimum delay of 1s (#18201)
- Expand
uv_builddirect build compatibility (#17902) - Fetch CPython from an Astral mirror by default (#18207)
- Download uv releases from an Astral mirror in installers by default (#18191)
- Add SBOM attestations to Docker images (#18252)
- Improve hint for installing meson-python when missing as build backend (#15826)
Configuration
- Add
UV_INIT_BAREenvironment variable foruv init(#18210)
Bug fixes
- Prevent
uv tool upgradefrom installing excluded dependencies (#18022) - Promote authentication policy when saving tool receipts (#18246)
- Respect exclusions in scripts (#18269)
- Retain default-branch Git SHAs in
pylock.tomlfiles (#18227) - Skip installed Python check for URL dependencies (#18211)
- Respect constraints during
--upgrade(#18226) - Fix
uv treeorphaned roots and premature deduplication (#17212)
Documentation
- Mention cooldown and tweak inline script metadata in dependency bots documentation (#18230)
- Move cache prune in GitLab to
after_script(#18206)
v0.10.7
Released on 2026-02-27.
Bug fixes
- Fix handling of junctions in Windows Containers on Windows (#18192)
Enhancements
v0.10.6
Released on 2026-02-24.
Bug fixes
- Apply lockfile marker normalization for fork markers (#18116)
- Fix Python version selection for scripts with a
requires-pythonconflicting with.python-version(#18097) - Preserve file permissions when using reflinks on Linux (#18187)
Documentation
- Remove verbose documentation from optional dependencies help text (#18180)
v0.10.5
Released on 2026-02-23.
Enhancements
- Add hint when named index is found in a parent config file (#18087)
- Add warning for
uv lock --frozen(#17859) - Attempt to use reflinks by default on Linux (#18117)
- Fallback to hardlinks after reflink failure before copying (#18104)
- Filter
pylock.tomlwheels by tags andrequires-python(#18081) - Validate wheel filenames are normalized during
uv publish(#17783) - Fix message when
exclude-newerinvalidates the lock file (#18100) - Change the missing files log level to debug (#18075)
Performance
- Improve performance of repeated conflicts with an extra (#18094)
Bug fixes
- Fix
--no-emit-workspacewith--all-packageson single-member workspaces (#18098) - Fix
UV_NO_DEFAULT_GROUPSrejecting truthy values like1(#18057) - Fix iOS detection (#17973)
- Propagate project-level conflicts to package extras (#18096)
- Use a global build concurrency semaphore (#18054)
Documentation
- Update documentation heading for environment variable files (#18122)
- Fix comment about
uv exportformats (#17900) - Make it clear that Windows is supported in user- and system- level configuration docs (#18106)
v0.10.4
Released on 2026-02-17.
Enhancements
- Remove duplicate references to the affected paths when showing
uv pythonerrors (#18008) - Skip discovery of workspace members that contain only git-ignored files, including in sub-directories (#18051)
Bug fixes
- Don't panic when initialising a package at the filesystem root (e.g.
uv init / --name foo) (#17983) - Fix permissions on
wheelandsdistfiles produced by theuv_buildbuild backend (#18020) - Revert locked file change to fix locked files on NFS mounts (#18071)
v0.10.3
Released on 2026-02-16.
Python
- Add CPython 3.15.0a6
Enhancements
- Don't open file locks for writing (#17956)
- Make Windows trampoline error messages consistent with uv proper (#17969)
- Log which preview features are enabled (#17968)
Preview features
- Add support for ruff version constraints and
exclude-newerinuv format(#17651) - Fix script path handling when
target-workspace-discoveryis enabled (#17965) - Use version constraints to select the default ruff version used by
uv format(#17977)
Bug fixes
- Avoid matching managed Python versions by prefixes, e.g. don't match CPython 3.10 when
cpython-3.1is specified (#17972) - Fix handling of
--allow-existingwith minor version links on Windows (#17978) - Fix panic when encountering unmanaged workspace members (#17974)
- Improve accuracy of request timing (#18007)
- Reject
u64::MAXin version segments to prevent overflow (#17985)
Documentation
- Reference Debian Trixie instead of Bookworm (#17991)
v0.10.2
Released on 2026-02-10.
Enhancements
- Deprecate unexpected ZIP compression methods (#17946)
Bug fixes
- Fix
cargo-installfailing due to missinguv-testdependency (#17954)
v0.10.1
Released on 2026-03-19.
Python
Enhancements
- Include uv's target triple in version report (#18520)
- Allow comma separated values in
--no-emit-package(#18565)
Preview features
- Show
uv auditin the CLI help (#18540)
Bug fixes
- Improve reporting of managed interpreter symlinks in
uv python list(#18459) - Preserve end-of-line comments on previous entries when removing dependencies (#18557)
- Treat abi3 wheel Python version as a lower bound (#18536)
- Detect hard-float support on aarch64 kernels running armv7 userspace (#18530)
Documentation
- Add Python 3.15 to supported versions (#18552)
- Adjust the PyPy note (#18548)
- Move Pyodide to Tier 2 in the Python support policy (#18561)
- Move Rust and Python version support out of the Platform support policy (#18535)
- Update Docker guide with changes from
uv-docker-example(#18558) - Update the Python version policy (#18559)
v0.10.0
Since we released uv 0.9.0 in October of 2025, 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.
This release also includes the stabilization of preview features. Python upgrades are now stable, including the uv python upgrade command, uv python install --upgrade, and automatically upgrading Python patch versions in virtual environments when a new version is installed. The add-bounds and extra-build-dependencies settings are now stable. Finally, the uv workspace dir and uv workspace list utilities for writing scripts against workspace members are now stable.
There are no breaking changes to uv_build. If you have an upper bound in your [build-system] table, you should update it, e.g., from <0.10.0 to <0.11.0.
Breaking changes
-
Require
--clearto remove existing virtual environments inuv venv(#17757)Previously,
uv venvwould prompt for confirmation before removing an existing virtual environment in interactive contexts, and remove it without confirmation in non-interactive contexts. Now,uv venvrequires the--clearflag to remove an existing virtual environment. A warning for this change was added in uv 0.8.You can opt out of this behavior by passing the
--clearflag or settingUV_VENV_CLEAR=1. -
Error if multiple indexes include
default = true(#17011)Previously, uv would silently accept multiple indexes with
default = trueand use the first one. Now, uv will error if multiple indexes are marked as the default.You cannot opt out of this behavior. Remove
default = truefrom all but one index. -
Error when an
explicitindex is unnamed (#17777)Explicit indexes can only be used via the
[tool.uv.sources]table, which requires referencing the index by name. Previously, uv would silently accept unnamed explicit indexes, which could never be referenced. Now, uv will error if an explicit index does not have a name.You cannot opt out of this behavior. Add a
nameto the explicit index or remove the entry. -
Install alternative Python executables using their implementation name (#17756, #17760)
Previously,
uv python installwould install PyPy, GraalPy, and Pyodide executables with names likepython3.10into the bin directory. Now, these executables will be named using their implementation name, e.g.,pypy3.10,graalpy3.10, andpyodide3.12, to avoid conflicting with CPython installations.You cannot opt out of this behavior.
-
Respect global Python version pins in
uv tool runanduv tool install(#14112)Previously,
uv tool runanduv tool installdid not respect the global Python version pin (set viauv python pin --global). Now, these commands will use the global Python version when no explicit version is requested.For
uv tool install, if the tool is already installed, the Python version will not change unless--reinstallor--pythonis provided. If the tool was previously installed with an explicit--pythonflag, the global pin will not override it.You can opt out of this behavior by providing an explicit
--pythonflag. -
Remove Debian Bookworm, Alpine 3.21, and Python 3.8 Docker images (#17755)
The Debian Bookworm and Alpine 3.21 images were replaced by Debian Trixie and Alpine 3.22 as defaults in uv 0.9. These older images are now removed. Python 3.8 images are also removed, as Python 3.8 is no longer supported in the Trixie or Alpine base images.
The following image tags are no longer published:
-
uv:bookworm,uv:bookworm-slim uv:alpine3.21uv:python3.8-*
Use
uv:debianoruv:trixieinstead ofuv:bookworm,uv:alpineoruv:alpine3.22instead ofuv:alpine3.21, and a newer Python version instead ofuv:python3.8-*. -
-
Drop PPC64 (big endian) builds (#17626)
uv no longer provides pre-built binaries for PPC64 (big endian). This platform appears to be largely unused and is only supported on a single manylinux version. PPC64LE (little endian) builds are unaffected.
Building uv from source is still supported for this platform.
-
Skip generating
activate.cshfor relocatable virtual environments (#17759)Previously,
uv venv --relocatablewould generate anactivate.cshscript that contained hardcoded paths, making it incompatible with relocation. Now, theactivate.cshscript is not generated for relocatable virtual environments.You cannot opt out of this behavior.
-
Require username when multiple credentials match a URL (#16983)
When using
uv auth loginto store credentials, you can register multiple username and password combinations for the same host. Previously, when uv needed to authenticate and multiple credentials matched the URL (e.g., when retrieving a token withuv auth token), uv would pick the first match. Now, uv will error instead.You cannot opt out of this behavior. Include the username in the request, e.g.,
uv auth token --username foo example.com. -
Avoid invalidating the lockfile versions after an
exclude-newerchange (#17721)Previously, changing the
exclude-newersetting would cause package versions to be upgraded, ignoring the lockfile entirely. Now, uv will only change package versions if they are no longer within theexclude-newerrange.You can restore the previous behavior by using
--upgradeor--upgrade-packageto opt-in to package version changes. -
Upgrade
uv formatto Ruff 0.15.0 (#17838)uv formatnow uses Ruff 0.15.0, which uses the 2026 style guide. See the blog post for details.The formatting of code is likely to change. You can opt out of this behavior by requesting an older Ruff version, e.g.,
uv format --version 0.14.14. -
Update uv crate test features to use
test-as a prefix (#17860)This change only affects redistributors of uv. The Cargo features used to gate test dependencies, e.g.,
pypi, have been renamed with atest-prefix for clarity, e.g.,test-pypi.
Stabilizations
-
uv python upgradeanduv python install --upgrade(#17766)When installing Python versions, an intermediary directory without the patch version attached will be created, and virtual environments will be transparently upgraded to new patch versions.
See the Python version documentation for more details.
-
uv add --boundsand theadd-boundsconfiguration option (#17660)This does not come with any behavior changes. You will no longer see an experimental warning when using
uv add --boundsoradd-boundsin configuration. -
uv workspace listanduv workspace dir(#17768)This does not come with any behavior changes. You will no longer see an experimental warning when using these commands.
-
extra-build-dependencies(#17767)This does not come with any behavior changes. You will no longer see an experimental warning when using
extra-build-dependenciesin configuration.
Enhancements
- Improve ABI tag error message phrasing (#17878)
- Introduce a 10s connect timeout (#17733)
- Allow using
pyx.devas a target inuv authcommands despitePYX_API_URLdiffering (#17856)
Bug fixes
- Support all CPython ABI tag suffixes properly (#17817)
- Add support for detecting PowerShell on Linux and macOS (#17870)
- Retry timeout errors for streams (#17875)
v0.9.30
Release Notes
Released on 2026-02-04.
Python
- Add CPython 3.14.3 and 3.13.12 (#17849)
Enhancements
- Allow comma-separated values for
--extraoption (#17525) - Check all files during a dry-run publish instead of stopping at the first failure (#17785)
- Clarify
UV_HTTP_TIMEOUTerror message (#17493)
Preview features
- Use relocatable virtual environments by default (#17770)
Bug fixes
- Fix deadlock on token refresh in
uv publishwhen using pyx (#17832) - Ignore global Python pins when incompatible with project (#15473)
Install uv 0.9.30
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.30/uv-installer.ps1 | iex"
Download uv 0.9.30
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.29
Release Notes
Released on 2026-02-03.
Python
- Update to Pyodide 0.29.3 (#17730)
Enhancements
- Add wheel-tag-style aliases for manylinux platform names (#17750)
- Hint on
uv version --bump devsimilar to pre-release bumps (#17796) - Improve display of RFC 9457 Problem Detail responses in
uv publishserver errors (#17787) - Improve the wording of publish errors during dry-run (#17782)
- Set backoff to 10 retries (#17816)
- Add properties to synthentic and project roots in Cyclone DX exports (#17820)
- Identify the invidividual clients in
uv publishtrace logs (#17784)
Preview features
- Remove special casing for
baseanddefaultconda environment names (#17758)
Bug fixes
- Fix
PYTHONHOMEinheritance when spawning different Python versions (#17821) - Fix wheel rejections on freethreading+debug builds (#17812)
- Pad with zeros during comparisons in
EqualStarandNotEqualStaroperators (#17751) - Reject unknown field names in conflict declarations (#17727)
- Fix panics in
system-configurationin sandboxes (#17829)
Documentation
- Update pip pre-release compatibility information (#17788)
Security
- Hide a subset of environment variable values in
--help(#17745)
Install uv 0.9.29
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.29/uv-installer.ps1 | iex"
Download uv 0.9.29
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.28
Release Notes
Released on 2026-01-29.
Python
- Update CPython to use OpenSSL 3.5.5 which includes fixes for high severity CVEs (python-build-standalone#960)
Enhancements
- Add support for Pyodide interpreter on Windows (#17658)
- Warn if multiple indexes include
default = true(#17713) - Skip uploads when validation reports 'Already uploaded' (#17412)
Configuration
- Add a reflink alias for the "clone" link mode (#17724)
Bug fixes
- Ensure
uv.exeexits whenuvw.exeoruvx.exeis killed (#17500)
Install uv 0.9.28
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.28/uv-installer.ps1 | iex"
Download uv 0.9.28
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.27
Release Notes
Released on 2026-01-26.
Python
Enhancements
- Add
-tshortform for--targettouv pipsubcommands (#17501) - Add support for ROCm 7.0 and 7.1 accelerator backends (#17681)
- Further improve free-threading ABI incompatibility errors (#17491)
- Implement
uv pip freeze --excludeflag (#17045) - Improve warnings for
--systemand--no-systeminuv venv(#17647) - Make
uv pip compileattempt to download a specified--python-versionif it can. (#17249) - Support Trusted Publishing with pyx (#17438)
- Fix JSON schema for
exclude-newer-package(#17665)
Preview features
- Better detection for conflicting packages (#17623)
- Upgrade based on outdated build versions in
uv python upgrade(#17653)
Bug fixes
- Change chocolatey system test to ensure uv uses the right python (#17533)
- Fix infinite loop when
SSL_CERT_FILEis a directory (#17503)
Documentation
- Add cargo-xwin to the CONTRIBUTING guide (#17507)
- Fix typo in the documentation of UV_PUBLISH_INDEX (#17672)
- Move MSRV to platform support section (#17534)
- Update the testing instructions in the CONTRIBUTING guide (#17528)
- Use
--lockedto installcargo-xwinin guide (#17530) - Warn about PyPy being unmaintained (#17643)
- docs: Correct gitlab-ci.yml to .gitlab-ci.yml (#17682)
Other changes
- Update MSRV to 1.91 (#17677)
Install uv 0.9.27
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.27/uv-installer.ps1 | iex"
Download uv 0.9.27
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.26
Release Notes
Released on 2026-01-15.
Python
- Add CPython 3.15.0a5
Enhancements
- Add a hint to update uv when a managed Python download is not found (#17461)
- Improve cache initialization failure error message (#17469)
- Improve error message for abi3 wheels on free-threaded Python (#17442)
- Add support for
--no-sources-package(#14910)
Preview features
- Add
METADATA.jsonandWHEEL.jsonin uv build backend (#15510) - Add support for GCS request signing (#17474)
- Adjust the process ulimit to the maximum allowed on startup (#17464)
Bug fixes
- Lock to avoid concurrent refresh of pyx tokens (#17479)
Documentation
- Add linting and formatting instructions to the CONTRIBUTING guide (#17470)
- Avoid rendering
pyproject.tomlexamples for more system-level settings (#17462)
Install uv 0.9.26
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.26/uv-installer.ps1 | iex"
Download uv 0.9.26
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.25
Release Notes
Released on 2026-01-13.
Python
- Add CPython 3.15.0a4
- Upgrade Tcl/Tk used by CPython to 9.0
Enhancements
- Add
--compile-bytecodetouv python installanduv python upgradeto compile the standard library (#17088) - Allow disabling
exclude-newerper package (#16854) - Broadcast
WM_SETTINGCHANGEonuv tool update-shell(#17404)
Preview features
- Detect workspace from
uv runtarget (#17423)
Bug fixes
- Avoid unwrapping size for file responses (#17434)
- Use keyring authentication when retrieving
tool@latestversion (#17448) - Use latest Pyodide version for each python version (#17372)
- Improve trampoline file handle closing (#17374)
- Fix error message when installing musl python on armv7 (#17213)
Install uv 0.9.25
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.25/uv-installer.ps1 | iex"
Download uv 0.9.25
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.24
Release Notes
Released on 2026-01-09.
Bug fixes
- Fix handling of
UV_NO_SYNC=1 uv run ...(#17391) - Rebuild dynamic distribution when version changes with
--no-cache(#17387)
Documentation
- Add Rust language classifier (#17389)
Install uv 0.9.24
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.24/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.24/uv-installer.ps1 | iex"
Download uv 0.9.24
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.23
Release Notes
Released on 2026-01-09.
Enhancements
- Only write portable paths in
RECORDfiles (#17339) - Support relative paths in
UV_PYTHON_BIN_DIRandUV_TOOL_BIN_DIR(#17367)
Preview features
- Enable uploads to S3 via pre-signed URLs (#17349)
Configuration
- Allow setting proxy variables via global / user configuration (#16918)
- Manually parse and reconcile Boolean environment variables (#17321)
Bug fixes
- Avoid broken build artifacts on build failure (#17276)
- Fix missing dependencies on synthetic root in SBOM export (#17363)
- Recognize
armv8las an alias forarmv7lin platform tag parsing (#17384) - Fix redaction of a URL in a middleware trace log (#17346)
Documentation
- Add
index.mdsuggestion tollms.txt(#17362) - Clarify that
uv runuses inexact syncing by default (#17366)
Install uv 0.9.23
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.23/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.23/uv-installer.ps1 | iex"
Download uv 0.9.23
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.22
Release Notes
Released on 2026-01-06.
Enhancements
- Use a dedicated error message when lockfile can't be found (#17318)
Bug fixes
- Filter unusable wheels from the lockfile for more architectures (#17317)
- Correctly count retries originating from early middleware errors (#17274)
Documentation
- Clarify requirements file format in docs (#17284)
Install uv 0.9.22
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.22/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.22/uv-installer.ps1 | iex"
Download uv 0.9.22
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.21
Release Notes
Released on 2025-12-30.
Bug fixes
- Fix regression where zstd distribution hashes were not considered valid (#17265)
Documentation
- Fix a typo in the resolution documentation (#17258)
- Fix a typo in
python install --defaultdocumentation (#9826)
Install uv 0.9.21
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.21/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.21/uv-installer.ps1 | iex"
Download uv 0.9.21
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.20
Release Notes
Released on 2025-12-29.
The 0.9.19 release failed to publish to crates.io and GitHub Releases, but was successfully published to PyPI, the GitHub Container Registry, and DockerHub. This is a re-release of 0.9.19, with the internal crate versions incremented to resolve the crates.io publish failure. The changelog entries for 0.9.19 are reproduced here.
Python
- Add CPython 3.15.0a3 (#17165)
Enhancements
- Allow
uv pip compileto install missing python interpreters in cases where it would otherwise fail (#17216) - Avoid creating file contents with
uv init --bare --script(#17162) - Respect
--torch-backendinuv toolcommands (#17117) - Support comma-separated values in
--no-binaryand--only-binary(#17185)
Preview features
- Summarize package changes in
uv syncwith JSON output format (#16981)
Performance
- Avoid two hot
Stringallocations in deserialization (#17221) - Cache NVIDIA-hosted wheels by default (#17164)
Bug fixes
- Avoid enforcing incorrect hash in mixed-hash settings (#17157)
- Fix retry counts in cached client (#17104)
- Respect
UV_PYTHON_DOWNLOAD_MIRRORinuv python list(#16673) - Support remote
pylock.tomlfiles (#17119) - Avoid flagging proxied Git URLs as ambiguous authority (#17234)
- Fix dropped support of
-in pip constraints, overrides, and excludes (#17188)
Install uv 0.9.20
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.20/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.20/uv-installer.ps1 | iex"
Download uv 0.9.20
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.18
Release Notes
Released on 2025-12-16.
Enhancements
- Add value hints to command line arguments to improve shell completion accuracy (#17080)
- Improve error handling in
uv publish(#17096) - Improve rendering of multiline error messages (#17132)
- Support redirects in
uv publish(#17130) - Include Docker images with the alpine version, e.g.,
python3.x-alpine3.23(#17100)
Configuration
- Accept
--torch-backendin[tool.uv](#17116)
Performance
Bug fixes
- Avoid panics due to reads on failed requests (#17098)
- Enforce latest-version in
@latestrequests (#17114) - Explicitly set
EntryTypefor file entries in tar (#17043) - Ignore
pyproject.tomlindex username in lockfile comparison (#16995) - Relax error when using
uv addwithUV_GIT_LFSset (#17127) - Support file locks on ExFAT on macOS (#17115)
- Change schema for
exclude-newerinto optional string (#17121)
Documentation
- Drop arm musl caveat from Docker documentation (#17111)
- Fix version reference in resolver example (#17085)
- Better documentation for
exclude-newer*(#17079)
Install uv 0.9.18
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.18/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.18/uv-installer.ps1 | iex"
Download uv 0.9.18
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.17
Release Notes
Released on 2025-12-09.
Enhancements
- Add
torch-tensorrtandtorchaoto the PyTorch list (#17053) - Add hint for misplaced
--verboseinuv tool run(#17020) - Add support for relative durations in
exclude-newer(a.k.a., dependency cooldowns) (#16814) - Add support for relocatable nushell activation script (#17036)
Bug fixes
- Respect dropped (but explicit) indexes in dependency groups (#17012)
Documentation
- Improve
source-excludereference docs (#16832) - Recommend
UV_NO_DEVin Docker installs (#17030) - Update
UV_VERSIONin docs for GitLab CI/CD (#17040)
Install uv 0.9.17
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.17/uv-installer.ps1 | iex"
Download uv 0.9.17
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.16
Release Notes
Released on 2025-12-06.
Python
- Add CPython 3.14.2
- Add CPython 3.13.11
Enhancements
- Add a 5m default timeout to acquiring file locks to fail faster on deadlock (#16342)
- Add a stub
debugsubcommand touv pipannouncing its intentional absence (#16966) - Add bounds in
uv add --script(#16954) - Add brew specific message for
uv self update(#16838) - Error when built wheel is for the wrong platform (#16074)
- Filter wheels from PEP 751 files based on
--no-binaryet al inuv pip compile(#16956) - Support
--targetand--prefixinuv pip list,uv pip freeze, anduv pip show(#16955) - Tweak language for build backend validation errors (#16720)
- Use explicit credentials cache instead of global static (#16768)
- Enable SIMD in HTML parsing (#17010)
Preview features
- Fix missing preview warning in
uv workspace metadata(#16988) - Add a
uv auth helper --protocol bazelcommand (#16886)
Bug fixes
- Fix Pyston wheel compatibility tags (#16972)
- Allow redundant entries in
tool.uv.build-backend.module-namebut emit warnings (#16928) - Fix infinite loop in non-attribute re-treats during HTML parsing (#17010)
Documentation
- Clarify
--projectflag help text to indicate project discovery (#16965) - Regenerate the crates.io READMEs on release (#16992)
- Update Docker integration guide to prefer
COPYoverADDfor simple cases (#16883) - Update PyTorch documentation to include information about supporting CUDA 13.0.x (#16957)
- Update the versioning policy (#16710)
- Upgrade PyTorch documentation to latest versions (#16970)
Install uv 0.9.16
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.16/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.16/uv-installer.ps1 | iex"
Download uv 0.9.16
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.15
Release Notes
Released on 2025-12-02.
Continuing the unfortunate chain of disrupted releases, this release failed due to an error publishing new PEP 740 attestations to PyPI. The release workflow was re-run after removing the PEP 740 attestations (see #16944) and our GitHub and PyPI artifacts were published as normal, but the crates.io publish completed in the first run and does not match the 0.9.15 tag — instead, the crates were published at commit e7af583. The only difference is the inclusion of #16885.
Python
- Add CPython 3.14.1
- Add CPython 3.13.10
Enhancements
- Add ROCm 6.4 to
--torch-backend=auto(#16919) - Add a Windows manifest to uv binaries (#16894)
- Add LFS toggle to Git sources (#16143)
- Cache source reads during resolution (#16888)
- Allow reading requirements from scripts without an extension (#16923)
- Allow reading requirements from scripts with HTTP(S) paths (#16891)
Configuration
- Add
UV_HIDE_BUILD_OUTPUTto omit build logs (#16885)
Bug fixes
- Fix
uv-trampoline-builderbuilds from crates.io by moving bundled executables (#16922) - Respect
NO_COLORand always show the command as a header when paginguv helpoutput (#16908) - Use
0o666permissions for flock files instead of0o777(#16845) - Revert "Bump
astral-tlto v0.7.10 (#16887)" to narrow down a regression causing hangs in metadata retrieval (#16938)
Documentation
- Link to the uv version in crates.io member READMEs (#16939)
Install uv 0.9.15
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.15/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.15/uv-installer.ps1 | iex"
Download uv 0.9.15
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.14
Release Notes
Released on 2025-12-01.
Performance
- Bump
astral-tlto v0.7.10 to enable SIMD for HTML parsing (#16887)
Bug fixes
- Allow earlier post releases with exclusive ordering (#16881)
- Prefer updating existing
.zshenvover creating a new one intool update-shell(#16866) - Respect
-eflags inuv add(#16882)
Enhancements
- Attach subcommand to User-Agent string (#16837)
- Prefer
UV_WORKING_DIRoverUV_WORKING_DIRECTORYfor consistency (#16884)
Install uv 0.9.14
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.14/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.14/uv-installer.ps1 | iex"
Download uv 0.9.14
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.13
Release Notes
Released on 2025-11-26.
Bug fixes
- Revert "Allow
--with-requirementsto load extensionless inline-metadata scripts" to fix reading of requirements files from streams (#16861) - Validate URL wheel tags against
Requires-Pythonand required environments (#16824)
Documentation
- Drop unpublished crates from the uv crates.io README (#16847)
- Fix the links to uv in crates.io member READMEs (#16848)
Install uv 0.9.13
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.13/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.13/uv-installer.ps1 | iex"
Download uv 0.9.13
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.12
Release Notes
Released on 2025-11-24.
Due to a permission error during publish to crates.io, this release was partially published and manually finished. Consequently, crates.io temporarily did not include all of the artifacts and the GitHub Release was published by a maintainer instead of GitHub Actions. The artifacts from GitHub Actions were used without alteration. The GitHub release attestations for the artifacts are not available for this release.
Enhancements
- Allow
--with-requirementsto load extensionless inline-metadata scripts (#16744) - Collect and upload PEP 740 attestations during
uv publish(#16731) - Prevent
uv exportfrom overwritingpyproject.toml(#16745)
Documentation
- Add a crates.io README for uv (#16809)
- Add documentation for intermediate Docker layers in a workspace (#16787)
- Enumerate workspace members in the uv crate README (#16811)
- Fix documentation links for crates (#16801)
- Generate a crates.io README for uv workspace members (#16812)
- Move the "Export" guide to the projects concept section (#16835)
- Update the cargo install recommendation to use crates (#16800)
- Use the word "internal" in crate descriptions (#16810)
Install uv 0.9.12
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.12/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.12/uv-installer.ps1 | iex"
Download uv 0.9.12
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.11
Release Notes
Released on 2025-11-20.
Due to rate limiting during publish to crates.io, this release was partially published and manually finished. Consequently, crates.io temporarily did not include all of the artifacts and the GitHub Release was published by a maintainer instead of GitHub Actions. The artifacts from GitHub Actions were used without alteration. The GitHub release attestations for the artifacts are not available for this release.
Python
- Add CPython 3.15.0a2
See the python-build-standalone release notes for details.
Enhancements
Preview features
Bug fixes
- Fix
uv initauthor serialization viatoml_editinline tables (#16778) - Fix status messages without TTY (#16785)
- Preserve end-of-line comment whitespace when editing
pyproject.toml(#16734) - Disable
always-authenticatewhen running under Dependabot (#16773)
Documentation
- Document the new behavior for free-threaded python versions (#16781)
- Improve note about build system in publish guide (#16788)
- Move do not upload publish note out of the guide into concepts (#16789)
Install uv 0.9.11
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.11/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.11/uv-installer.ps1 | iex"
Download uv 0.9.11
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.10
Release Notes
Released on 2025-11-17.
Enhancements
- Add support for
SSL_CERT_DIR(#16473) - Enforce UTF‑8-encoded license files during
uv build(#16699) - Error when a
project.license-filesglob matches nothing (#16697) -
pip install --target(andsync) install Python if necessary (#16694) - Account for
python_downloads_json_urlin pre-release Python version warnings (#16737) - Support HTTP/HTTPS URLs in
uv python --python-downloads-json-url(#16542)
Preview features
- Add support for
--upgradeinuv python install(#16676) - Fix handling of
python install --defaultfor pre-release Python versions (#16706) - Add
uv workspace listto list workspace members (#16691)
Bug fixes
- Don't check file URLs for ambiguously parsed credentials (#16759)
Documentation
- Add a "storage" reference document (#15954)
Install uv 0.9.10
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.10/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.10/uv-installer.ps1 | iex"
Download uv 0.9.10
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.9
Release Notes
Released on 2025-11-12.
Deprecations
- Deprecate use of
--projectinuv init(#16674)
Enhancements
- Add iOS support to Python interpreter discovery (#16686)
- Reject ambiguously parsed URLs (#16622)
- Allow explicit values in
uv version --bump(#16555) - Warn on use of managed pre-release Python versions when a stable version is available (#16619)
- Allow signing trampolines on Windows by using
.rcdatato store metadata (#15068) - Add
--only-emit-workspaceand similar variants touv export(#16681)
Preview features
Configuration
- Add
UV_NO_DEFAULT_GROUPSenvironment variable (#16645)
Bug fixes
- Remove
torch-model-archiverandtorch-tb-profilerfrom PyTorch backend (#16655) - Fix Pixi environment detection (#16585)
Documentation
- Fix
CMDpath in FastAPI Dockerfile (#16701)
Install uv 0.9.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.9/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.9/uv-installer.ps1 | iex"
Download uv 0.9.9
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.8
Release Notes
Released on 2025-11-07.
Enhancements
- Accept multiple packages in
uv export(#16603) - Accept multiple packages in
uv sync(#16543) - Add a
uv cache sizecommand (#16032) - Add prerelease guidance for build-system resolution failures (#16550)
- Allow Python requests to include
+gilto require a GIL-enabled interpreter (#16537) - Avoid pluralizing 'retry' for single value (#16535)
- Enable first-class dependency exclusions (#16528)
- Fix inclusive constraints on available package versions in resolver errors (#16629)
- Improve
uv initerror for invalid directory names (#16554) - Show help on
uv build -h(#16632) - Include the Python variant suffix in "Using Python ..." messages (#16536)
- Log most recently modified file for cache-keys (#16338)
- Update Docker builds to use nightly Rust toolchain with musl v1.2.5 (#16584)
Configuration
- Expose
UV_NO_GROUPas an environment variable (#16529) - Add
UV_NO_SOURCESas an environment variable (#15883)
Bug fixes
- Allow
--checkand--lockedto be used together inuv lock(#16538) - Allow for unnormalized names in the METADATA file (#16547) (#16548)
- Fix missing value_type for
default-groupsin schema (#16575) - Respect multi-GPU outputs in
nvidia-smi(#15460) - Fix DNS lookup errors in Docker containers (#8450)
Documentation
Other changes
- Update Rust toolchain to 1.91 and MSRV to 1.89 (#16531)
Install uv 0.9.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.8/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.8/uv-installer.ps1 | iex"
Download uv 0.9.8
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
v0.9.7
Release Notes
Released on 2025-10-30.
Enhancements
- Add Windows x86-32 emulation support to interpreter architecture checks (#13475)
- Improve readability of progress bars (#16509)
Bug fixes
- Drop terminal coloring from
uv auth tokenoutput (#16504) - Don't use UV_LOCKED to enable
--checkflag (#16521)
Install uv 0.9.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.7/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.7/uv-installer.ps1 | iex"
Download uv 0.9.7
v0.9.6
Release Notes
Released on 2025-10-29.
This release contains an upgrade to Astral's fork of async_zip, which addresses potential sources of ZIP parsing differentials between uv and other Python packaging tooling. See GHSA-pqhf-p39g-3x64 for additional details.
Security
- Address ZIP parsing differentials (GHSA-pqhf-p39g-3x64)
Python
- Upgrade GraalPy to 25.0.1 (#16401)
Enhancements
- Add
--cleartouv buildto remove old build artifacts (#16371) - Add
--no-create-gitignoretouv build(#16369) - Do not error when a virtual environment directory cannot be removed due to a busy error (#16394)
- Improve hint on
pip install --systemwhen externally managed (#16392) - Running
uv lock --checkwith outdated lockfile will print that--checkwas passed, instead of--locked(#16322) - Update
uv inittemplate for Maturin (#16449) - Improve ordering of Python sources in logs (#16463)
- Restore DockerHub release images and annotations (#16441)
Bug fixes
- Check for matching Python implementation during
uv python upgrade(#16420) - Deterministically order
--find-linksdistributions (#16446) - Don't panic in
uv export --frozenwhen the lockfile is outdated (#16407) - Fix root of
uv treewhen--packageis used with circular dependencies (#15908) - Show package list with
pip freeze --quiet(#16491) - Limit
uv auth login pyx.devretries to 60s (#16498) - Add an empty group with
uv add --group ... -r ...(#16490)
Documentation
- Update docs for maturin build backend init template (#16469)
- Update docs to reflect previous changes to signal forwarding semantics (#16430)
- Add instructions for installing via MacPorts (#16039)
Install uv 0.9.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.6/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.6/uv-installer.ps1 | iex"
Download uv 0.9.6
v0.9.5
Release Notes
Released on 2025-10-21.
This release contains an upgrade to astral-tokio-tar, which addresses a vulnerability in tar extraction on malformed archives with mismatching size information between the ustar header and PAX extensions. While the astral-tokio-tar advisory has been graded as "high" due its potential broader impact, the specific impact to uv is low due to a lack of novel attacker capability. Specifically, uv only processes tar archives from source distributions, which already possess the capability for full arbitrary code execution by design, meaning that an attacker gains no additional capabilities through astral-tokio-tar.
Regardless, we take the hypothetical risk of parser differentials very seriously. Out of an abundance of caution, we have assigned this upgrade an advisory: https://github.com/astral-sh/uv/security/advisories/GHSA-w476-p2h3-79g9
Security
- Upgrade
astral-tokio-tarto 0.5.6 to address a parsing differential (#16387)
Enhancements
- Add required environment marker example to hint (#16244)
- Fix typo in MissingTopLevel warning (#16351)
- Improve 403 Forbidden error message to indicate package may not exist (#16353)
- Add a hint on
uv pip installfailure if the--systemflag is used to select an externally managed interpreter (#16318)
Bug fixes
- Fix backtick escaping for PowerShell (#16307)
Documentation
Install uv 0.9.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.5/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.5/uv-installer.ps1 | iex"
Download uv 0.9.5
v0.9.4
Release Notes
Released on 2025-10-17.
Enhancements
- Add CUDA 13.0 support (#16321)
- Add auto-detection for Intel GPU on Windows (#16280)
- Implement display of RFC 9457 HTTP error contexts (#16199)
Bug fixes
- Avoid obfuscating pyx tokens in
uv auth tokenoutput (#16345)
Install uv 0.9.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.4/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.4/uv-installer.ps1 | iex"
Download uv 0.9.4
v0.9.3
Release Notes
Released on 2025-10-14.
Python
- Add CPython 3.15.0a1
- Add CPython 3.13.9
Enhancements
- Obfuscate secret token values in logs (#16164)
Bug fixes
- Fix workspace with relative pathing (#16296)
Install uv 0.9.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.3/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.3/uv-installer.ps1 | iex"
Download uv 0.9.3
v0.9.2
Release Notes
Released on 2025-10-10.
Python
- Add CPython 3.9.24.
- Add CPython 3.10.19.
- Add CPython 3.11.14.
- Add CPython 3.12.12.
Enhancements
Documentation
- Add missing "added in" to new environment variables in reference (#16217)
Install uv 0.9.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.2/uv-installer.ps1 | iex"
Download uv 0.9.2
v0.9.1
Release Notes
Released on 2025-10-09.
Enhancements
Configuration
- Add
UV_UPLOAD_HTTP_TIMEOUTand respectUV_HTTP_TIMEOUTin uploads (#16040) - Support
UV_WORKING_DIRECTORYfor setting--directory(#16125)
Bug fixes
- Allow missing
Scriptsdirectory (#16206) - Fix handling of Python requests with pre-releases in ranges (#16208)
- Preserve comments on version bump (#16141)
- Retry all HTTP/2 errors (#16038)
- Treat deleted Windows registry keys as equivalent to missing ones (#16194)
- Ignore pre-release Python versions when a patch version is requested (#16210)
Documentation
- Document why uv discards upper bounds on
requires-python(#15927) - Document uv version environment variables were added in (#15196)
Install uv 0.9.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.1/uv-installer.ps1 | iex"
Download uv 0.9.1
v0.9.0
Release Notes
Released on 2025-10-07.
This breaking release is primarily motivated by the release of Python 3.14, which contains some breaking changes (we recommend reading the "What's new in Python 3.14" page). uv may use Python 3.14 in cases where it previously used 3.13, e.g., if you have not pinned your Python version and do not have any Python versions installed on your machine. While we think this is uncommon, we prefer to be cautious. We've included some additional small changes that could break workflows.
See our Python 3.14 blog post for some discussion of features we're excited about!
There are no breaking changes to uv_build. If you have an upper bound in your [build-system] table, you should update it.
Breaking changes
-
Python 3.14 is now the default stable version
The default Python version has changed from 3.13 to 3.14. This applies to Python version installation when no Python version is requested, e.g.,
uv python install. By default, uv will use the system Python version if present, so this may not cause changes to general use of uv. For example, if Python 3.13 is installed already, thenuv venvwill use that version. If no Python versions are installed on a machine and automatic downloads are enabled, uv will now use 3.14 instead of 3.13, e.g., foruv venvoruvx python. This change will not affect users who are using a.python-versionfile to pin to a specific Python version. -
Allow use of free-threaded variants in Python 3.14+ without explicit opt-in (#16142)
Previously, free-threaded variants of Python were considered experimental and required explicit opt-in (i.e., with
3.14t) for usage. Now uv will allow use of free-threaded Python 3.14+ interpreters without explicit selection. The GIL-enabled build of Python will still be preferred, e.g., when performing an installation withuv python install 3.14. However, e.g., if a free-threaded interpreter comes before a GIL-enabled build on thePATH, it will be used. This change does not apply to free-threaded Python 3.13 interpreters, which will continue to require opt-in. -
Use Python 3.14 stable Docker images (#16150)
Previously, the Python 3.14 images had an
-rcsuffix, e.g.,python:3.14-rc-alpineorpython:3.14-rc-trixie. Now, the-rcsuffix has been removed to match the stable upstream images. The-rcimages tags will no longer be updated. This change should not break existing workflows. -
Upgrade Alpine Docker image to Alpine 3.22
Previously, the
uv:alpineDocker image was based on Alpine 3.21. Now, this image is based on Alpine 3.22. The previous image can be recovered withuv:alpine3.21and will continue to be updated until a future release. -
Upgrade Debian Docker images to Debian 13 "Trixie"
Previously, the
uv:debiananduv:debian-slimDocker images were based on Debian 12 "Bookworm". Now, these images are based on Debian 13 "Trixie". The previous images can be recovered withuv:bookwormanduv:bookworm-slimand will continue to be updated until a future release. -
Fix incorrect output path when a trailing
/is used inuv build(#15133)When using
uv buildin a workspace, the artifacts are intended to be written to adistdirectory in the workspace root. A bug caused workspace root determination to fail when the input path included a trailing/causing thedistdirectory to be placed in the child directory. This bug has been fixed in this release. For example,uv build child/is used, the output path will now be in<workspace root>/dist/rather than<workspace root>/child/dist/.
Python
- Add CPython 3.14.0
- Add CPython 3.13.8
Enhancements
- Don't warn when a dependency is constrained by another dependency (#16149)
Bug fixes
- Fix
uv python upgrade / installoutput when there is a no-op for one request (#16158) - Surface pinned-version hint when
uv tool upgradecan’t move the tool (#16081) - Ban pre-release versions in
uv python upgraderequests (#16160) - Fix
uv python upgradereplacement of installed binaries on pre-release to stable (#16159)
Documentation
- Update
uv pip compileargs inlayout.md(#16155)
Install uv 0.9.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.9.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.9.0/uv-installer.ps1 | iex"
Download uv 0.9.0
v0.8.24
Release Notes
Released on 2025-10-06.
Enhancements
- Emit a message on
cache cleanandprunewhen lock is held (#16138) - Add
--forceflag foruv cache prune(#16137)
Documentation
- Fix example of bumping beta version without patch bump (#16132)
Install uv 0.8.24
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.24/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.24/uv-installer.ps1 | iex"
Download uv 0.8.24
v0.8.23
Release Notes
Released on 2025-10-03.
Enhancements
- Build
s390xon stable Rust compiler version (#16082) - Add
UV_SKIP_WHEEL_FILENAME_CHECKto allow installing invalid wheels (#16046)
Bug fixes
- Avoid rejecting already-installed URL distributions with
--no-sources(#16094) - Confirm that the directory name is a valid Python install key during managed check (#16080)
- Ignore origin when comparing installed tools (#16055)
- Make cache control lookups robust to username (#16088)
- Re-order lock validation checks by severity (#16045)
- Remove tracking of inferred dependency conflicts (#15909)
- Respect
--no-coloron the CLI (#16044) - Deduplicate marker-specific dependencies in
uv pip treeoutput (#16078)
Documentation
- Document transparent x86_64 emulation on aarch64 (#16041)
- Document why we ban URLs from index dependencies (#15929)
- Fix rendering of
_CONDA_ROOTin reference (#16114) - Windows arm64 and Linux RISC-V64 are Tier 2 supported (#16027)
Install uv 0.8.23
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.23/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.23/uv-installer.ps1 | iex"
Download uv 0.8.23
v0.8.22
Release Notes
Released on 2025-09-23.
Python
- Upgrade Pyodide to 0.28.3 (#15999)
Security
- Upgrade
astral-tokio-tarto 0.5.5 which hardens tar archive extraction (#16004)
Install uv 0.8.22
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.22/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.22/uv-installer.ps1 | iex"
Download uv 0.8.22
v0.8.21
Release Notes
+Released on 2025-09-23.
Enhancements
- Refresh lockfile when
--refreshis provided (#15994)
Preview features
Add support for S3 request signing (#15925)
Install uv 0.8.21
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.21/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.21/uv-installer.ps1 | iex"
Download uv 0.8.21
v0.8.20
Release Notes
Released on 2025-09-22.
Enhancements
- Add
--forceflag foruv cache clean(#15992) - Improve resolution errors with proxied packages (#15200)
Preview features
- Allow upgrading pre-release versions of the same minor Python version (#15959)
Bug fixes
- Hide
freethreaded+debugPython downloads inuv python list(#15985) - Retain the cache lock and temporary caches during
uv runanduvx(#15990)
Documentation
- Add
packagelevel conflicts to the conflicting dependencies docs (#15963) - Document pyodide support (#15962)
- Document support for free-threaded and debug Python versions (#15961)
- Expand the contribution docs on issue selection (#15966)
- Tweak title for viewing version in project guide (#15964)
Install uv 0.8.20
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.20/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.20/uv-installer.ps1 | iex"
Download uv 0.8.20
v0.8.19
Release Notes
Released on 2025-09-19.
Python
- Add CPython 3.14.0rc3
- Upgrade OpenSSL to 3.5.3
See the python-build-standalone release notes for more details.
Bug fixes
- Make
uv cache cleanparallel process safe (#15888) - Fix implied
platform_machinemarker forwin_arm64platform tag (#15921)
Install uv 0.8.19
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.19/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.19/uv-installer.ps1 | iex"
Download uv 0.8.19
v0.8.18
Release Notes
Released on 2025-09-17.
Enhancements
- Add PyG packages to torch backend (#15911)
- Add handling for unnamed conda environments in base environment detection (#15681)
- Allow selection of debug build interpreters (#11520)
- Improve
uv initdefaults for native build backend cache keys (#15705) - Error when
pyproject.tomltarget does not exist for dependency groups (#15831) - Infer check URL from publish URL when known (#15886)
- Support Gitlab CI/CD as a trusted publisher (#15583)
- Add GraalPy 25.0.0 with support for Python 3.12 (#15900)
- Add
--no-cleartouv venvto disable removal prompts (#15795) - Add conflict detection between
--only-groupand--extraflags (#15788) - Allow
[project]to be missing from apyproject.toml(#14113) - Always treat conda environments named
baseandrootas base environments (#15682) - Improve log message when direct build for
uv_buildis skipped (#15898) - Log when the cache is disabled (#15828)
- Show pyx organization name after authenticating (#15823)
- Use
_CONDA_ROOTto detect Conda base environments (#15680) - Include blake2b hash in
uv publishupload form (#15794) - Fix misleading debug message when removing environments in
uv sync(#15881)
Deprecations
- Deprecate
tool.uv.dev-dependencies(#15469) - Revert "feat(ci): build loongarch64 binaries in CI (#15387)" (#15820)
Preview features
- Propagate preview flag to client for
native-authfeature (#15872) - Store native credentials for realms with the https scheme stripped (#15879)
- Use the root index URL when retrieving credentials from the native store (#15873)
Bug fixes
- Fix
uv sync --no-sourcesnot switching from editable to registry installations (#15234) - Avoid display of an empty string when a path is the working directory (#15897)
- Allow cached environment reuse with
@latest(#15827) - Allow escaping spaces in --env-file handling (#15815)
- Avoid ANSI codes in debug! messages (#15843)
- Improve BSD tag construction (#15829)
- Include SHA when listing lockfile changes (#15817)
- Invert the logic for determining if a path is a base conda environment (#15679)
- Load credentials for explicit members when lowering (#15844)
- Re-add
tritonas a torch backend package (#15910) - Respect
UV_INSECURE_NO_ZIP_VALIDATION=1in duplicate header errors (#15912)
Documentation
- Add GitHub Actions to PyPI trusted publishing example (#15753)
- Add Coiled integration documentation (#14430)
- Add verbose output to the getting help section (#15915)
- Document
NO_PROXYsupport (#15816) - Document cache-keys for native build backends (#15811)
- Add documentation for dependency group
requires-python(#14282)
Install uv 0.8.18
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.18/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.18/uv-installer.ps1 | iex"
Download uv 0.8.18
v0.8.17
Release Notes
Released on 2025-09-10.
Enhancements
- Improve error message for HTTP validation in auth services (#15768)
- Respect
PYX_API_URLwhen suggestinguv auth loginon 401 (#15774) - Add pyx as a supported PyTorch index URL (#15769)
Bug fixes
- Avoid initiating login flow for invalid API keys (#15773)
- Do not search for a password for requests with a token attached already (#15772)
- Filter pre-release Python versions in
uv init --script(#15747)
Install uv 0.8.17
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.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.8.17/uv-installer.ps1 | iex"
Download uv 0.8.17
v0.8.16
Release Notes
Due to a bug in the release process for the new loongarch64 support (see #15762), this release was partially published and manually finished. Consequently, the uv_build artifacts were uploaded to PyPI with a PAT instead of via OIDC and the GitHub Release was published by a maintainer instead of GitHub Actions. The artifacts from GitHub Actions were used without alteration. The uv artifacts were not affected. There should be no consequences from this; we just want to be transparent about the provenance of the artifacts.
Enhancements
- Allow
--editableto overrideeditable = falseannotations (#15712) - Allow
editable = falsefor workspace sources (#15708) - Show a dedicated error for virtual environments in source trees on build (#15748)
- Support Android platform tags (#15646)
- Support iOS platform tags (#15640)
- Support scripts with inline metadata in
--with-requirementsand--requirements(#12763)
Preview features
Bug fixes
- Avoid erroring when
match-runtimetarget is optional (#15671) - Ban empty usernames and passwords in
uv auth(#15743) - Error early for parent path in build backend (#15733)
- Retry on IO errors during HTTP/2 streaming (#15675)
- Support recursive requirements and constraints inclusion (#15657)
- Use token store credentials for
uv publish(#15759) - Fix virtual environment activation script compatibility with latest nushell (#15272)
- Skip Python interpreters that cannot be queried with permission errors (#15685)
Documentation
- Clarify that
uv authcommands take a URL (#15664) - Improve the CLI help for options that accept requirements files (#15706)
- Adds example for caching for managed Python downloads in Docker builds (#15689)
Install uv 0.8.16
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.16/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.16/uv-installer.ps1 | iex"
Download uv 0.8.16
v0.8.15
Release Notes
Python
- Upgrade SQLite 3.50.4 in CPython builds for CVE-2025-6965 (see also python/cpython#137134)
Enhancements
- Add
uv authcommands for credential management (#15570) - Add pyx support to
uv authcommands (#15636) - Add
uv tree --show-sizesto show package sizes (#15531) - Add
--python-platform riscv64-unknown-linux(#15630) - Add
--python-platformtouv runanduv tool(#15515) - Add
uv publish --dry-run(#15638) - Add zstandard support for wheels (#15645)
- Allow registries to pre-provide core metadata (#15644)
- Retry streaming Python and binary download errors (#15567)
Bug fixes
- Fix settings rendering for
extra-build-dependencies(#15622) - Skip non-existent directories in bytecode compilation (#15608)
Error messages
- Add error trace to invalid package format (#15626)
Install uv 0.8.15
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.15/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.15/uv-installer.ps1 | iex"
Download uv 0.8.15
v0.8.14
Release Notes
Python
- Add managed CPython distributions for aarch64 musl
Enhancements
- Add
--python-platformtouv pip check(#15486) - Add an environment variable for
UV_ISOLATED(#15428) - Add logging to the uv build backend (#15533)
- Allow more trailing null bytes in zip files (#15452)
- Allow pinning managed Python versions to specific build versions (#15314)
- Cache PyTorch wheels by default (#15481)
- Reject already-installed wheels that don't match the target platform (#15484)
- Add
--no-install-localoption touv sync,uv addanduv export(#15328) - Include cycle error message in
uv pipCLI (#15453)
Preview features
- Fix format of
{version}onuv formatfailure (#15527) - Lock during installs in
uv formatto prevent races (#15551) - Respect
--projectinuv format(#15438) - Run
uv formatin the project root (#15440)
Configuration
- Add file-to-CLI overrides for build isolation configuration (#15437)
- Add file-to-CLI overrides for reinstall configuration (#15426)
Performance
- Cache
WHEELandMETADATAreads in installed distributions (#15489)
Bug fixes
- Avoid erroring when creating
venvin current working directory (#15537) - Avoid introducing unnecessary system dependency on CUDA (#15449)
- Clear discovered site packages when creating virtual environment (#15522)
- Read index credentials from the environment during
uv publishchecks (#15545) - Refuse to remove non-virtual environments in
uv venv(#15538) - Stop setting
CLICOLOR_FORCE=1when calling build backends (#15472) - Support file or directory removal for Windows symlinks (#15543)
Documentation
- Fix GitHub guide highlight lines (#15443)
- Move Resolver to new Internals section in the Reference (#15465)
- Split the "Authentication" page into sections (#15575)
- Update uninstall docs to mention
uvw.exeneeds to be removed (#15536)
Install uv 0.8.14
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.14/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.14/uv-installer.ps1 | iex"
Download uv 0.8.14
v0.8.13
Release Notes
Enhancements
- Add
--no-install-*arguments touv add(#15375) - Initialize Git prior to reading author in
uv init(#15377) - Add CUDA 129 to available torch backends (#15416)
- Update Pyodide to 0.28.2 (#15385)
Preview features
- Add an experimental
uv formatcommand (#15017) - Allow version specifiers in
extra-build-dependenciesif match-runtime is explicitlyfalse(#15420)
Bug fixes
- Add
tritontotorch-backendmanifest (#15405) - Avoid panicking when resolver returns stale distributions (#15389)
- Fix
uv_buildwheel hashes (#15400) - Treat
--upgrade-packageon the command-line as overridingupgrade = falsein configuration (#15395) - Restore DockerHub publishing (#15381)
Install uv 0.8.13
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.13/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.13/uv-installer.ps1 | iex"
Download uv 0.8.13
v0.8.12
Release Notes
Python
- Add 3.13.7
- Improve performance of zstd in Python 3.14
See the python-build-standalone release notes for details.
Enhancements
- Add an
aarch64-pc-windows-msvctarget forpython-platform(#15347) - Add fallback parent process detection to
uv tool update-shell(#15356) - Install non-build-isolation packages in a second phase (#15306)
- Add hint when virtual environments are included in source distributions (#15202)
- Add Docker images derived from
buildpack-deps:trixie,debian:trixie-slim,alpine:3.22(#15351)
Bug fixes
- Reject already-installed wheels built with outdated settings (#15289)
- Skip interpreters that are not found on query (#15315)
- Handle dotted package names in script path resolution (#15300)
- Reject
match-runtime = truefor dynamic packages (#15292)
Documentation
- Document improvements to build-isolation setups (#15326)
- Fix reference documentation recommendation to use
uv cache cleaninstead ofclear(#15313)
Install uv 0.8.12
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.12/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.12/uv-installer.ps1 | iex"
Download uv 0.8.12
v0.8.11
Release Notes
Python
- Add Python 3.14.0rc2
- Update Pyodide to 0.28.1
Enhancements
- Add Debian 13 trixie to published Docker images (#15269)
- Add
extra-build-dependencieshint for any missing module on build failure (#15252) - Make 'v' prefix cyan in overlap warnings (#15259)
Bug fixes
- Fix missing uv version in extended Docker image tags (#15263)
- Persist cache info when re-installing cached wheels (#15274)
Rust API
- Allow passing custom
reqwestclients toRegistryClient(#15281)
Install uv 0.8.11
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.11/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.11/uv-installer.ps1 | iex"
Download uv 0.8.11
v0.8.10
Release Notes
Python
- Add support for installing Pyodide versions (#14518)
Enhancements
- Allow Python requests with missing segments, e.g., just
aarch64(#14399)
Preview
- Move warnings for conflicting modules into preview (#15253)
Install uv 0.8.10
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.10/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.10/uv-installer.ps1 | iex"
Download uv 0.8.10
v0.8.9
Release Notes
Enhancements
- Add
--reinstallflag touv python upgrade(#15194)
Bug fixes
- Include build settings in cache key for registry source distribution lookups (#15225)
- Avoid creating bin links on
uv python upgradeif they don't already exist (#15192) - Respect system proxies on macOS and Windows (#15221)
Documentation
- Add the 3.14 classifier (#15187)
Install uv 0.8.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.9/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.9/uv-installer.ps1 | iex"
Download uv 0.8.9
v0.8.8
Release Notes
Bug fixes
- Fix
find_uv_bincompatibility with Python <3.10 (#15177)
Install uv 0.8.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.8/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.8/uv-installer.ps1 | iex"
Download uv 0.8.8
v0.8.7
Release Notes
Python
- On Mac/Linux, libtcl, libtk, and _tkinter are built as separate shared objects, which fixes matplotlib's
tkaggbackend (the default on Linux), Pillow'sPIL.ImageTklibrary, and other extension modules that need to use libtcl/libtk directly. - Tix is no longer provided on Linux. This is a deprecated Tk extension that appears to have been previously broken.
See the python-build-standalone release notes for details.
Enhancements
- Do not update
uv.lockwhen using--isolated(#15154) - Add support for
--prefixand--withinstallations infind_uv_bin(#14184) - Add support for discovering base prefix installations in
find_uv_bin(#14181) - Improve error messages in
find_uv_bin(#14182) - Warn when two packages write to the same module (#13437)
Preview features
- Add support for
package-level conflicts in workspaces (#14906)
Configuration
- Add
UV_DEVandUV_NO_DEVenvironment variables (for--devand--no-dev) (#15010)
Bug fixes
- Fix regression where
--require-hashesapplied to build dependencies inuv pip install(#15153) - Ignore GraalPy devtags (#15013)
- Include all site packages directories in ephemeral environment overlays (#15121)
- Search in the user scheme scripts directory last in
find_uv_bin(#14191)
Documentation
- Add missing periods (
.) to list elements inFeaturesdocs page (#15138)
Install uv 0.8.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.7/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.7/uv-installer.ps1 | iex"
Download uv 0.8.7
v0.8.6
Release Notes
This release contains hardening measures to address differentials in behavior between uv and Python's built-in ZIP parsers (CVE-2025-54368).
Prior to this release, attackers could construct ZIP files that would be extracted differently by pip, uv, and other tools. As a result, ZIPs could be constructed that would be considered harmless by (e.g.) scanners, but contain a malicious payload when extracted by uv. As of v0.8.6, uv now applies additional checks to reject such ZIPs.
Thanks to a triage effort with the Python Security Response Team and PyPI maintainers, we were able to determine that these differentials were not exploited via PyPI during the time they were present. The PyPI team has also implemented similar checks and now guards against these parsing differentials on upload.
Although the practical risk of exploitation is low, we take the hypothetical risk of parser differentials very seriously. Out of an abundance of caution, we have assigned this advisory a CVE identifier and have given it a "moderate" severity suggestion.
These changes have been validated against the top 15,000 PyPI packages; however, it's plausible that a non-malicious ZIP could be falsely rejected with this additional hardening. As an escape hatch, users who do encounter breaking changes can enable UV_INSECURE_NO_ZIP_VALIDATION to restore the previous behavior. If you encounter such a rejection, please file an issue in uv and to the upstream package.
For additional information, please refer to the following blog posts:
- Astral: uv security advisory: ZIP payload obfuscation
- PyPI: Preventing ZIP parser confusion attacks on Python package installers
Security
- Harden ZIP streaming to reject repeated entries and other malformed ZIP files (#15136)
Python
- Add CPython 3.13.6
Configuration
- Add support for per-project build-time environment variables (#15095)
Bug fixes
- Avoid invalid simplification with conflict markers (#15041)
- Respect
UV_HTTP_RETRIESinuv publish(#15106) - Support
UV_NO_EDITABLEwhere--no-editableis supported (#15107) - Upgrade
cargo-distto addUV_INSTALLER_URLto PowerShell installer (#15114) - Upgrade
h2again to avoidtoo_many_internal_resetserrors (#15111) - Consider
pythonwwhen copying entry points in uv run (#15134)
Documentation
- Ensure symlink warning is shown (#15126)
Install uv 0.8.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.6/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.6/uv-installer.ps1 | iex"
Download uv 0.8.6
v0.8.5
Release Notes
Enhancements
- Enable
uv runwith a GitHub Gist (#15058) - Improve HTTP response caching log messages (#15067)
- Show wheel tag hints in install plan (#15066)
- Support installing additional executables in
uv tool install(#14014)
Preview features
- Enable extra build dependencies to 'match runtime' versions (#15036)
- Remove duplicate
extra-build-dependencieswarnings foruv pip(#15088) - Use "option" instead of "setting" in
pylockwarning (#15089) - Respect extra build requires when reading from wheel cache (#15030)
- Preserve lowered extra build dependencies (#15038)
Bug fixes
- Add Python versions to markers implied from wheels (#14913)
- Ensure consistent indentation when adding dependencies (#14991)
- Fix handling of
python-preference = systemwhen managed interpreters are on the PATH (#15059) - Fix symlink preservation in virtual environment creation (#14933)
- Gracefully handle entrypoint permission errors (#15026)
- Include wheel hashes from local Simple indexes (#14993)
- Prefer system Python installations over managed ones when
--systemis used (#15061) - Remove retry wrapper when matching on error kind (#14996)
- Revert
h2upgrade (#15079)
Documentation
- Improve visibility of copy and line separator in dark mode (#14987)
Install uv 0.8.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.5/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.5/uv-installer.ps1 | iex"
Download uv 0.8.5
v0.8.4
Release Notes
Enhancements
- Improve styling of warning cause chains (#14934)
- Extend wheel filtering to Android tags (#14977)
- Perform wheel lockfile filtering based on platform and OS intersection (#14976)
- Clarify messaging when a new resolution needs to be performed (#14938)
Preview features
- Add support for extending package's build dependencies with
extra-build-dependencies(#14735) - Split preview mode into separate feature flags (#14823)
Configuration
- Add support for package specific
exclude-newerdates viaexclude-newer-package(#14489)
Bug fixes
- Avoid invalidating lockfile when path or workspace dependencies define explicit indexes (#14876)
- Copy entrypoints that have a shebang that differs in
pythonvspython3(#14970) - Fix incorrect file permissions in wheel packages (#14930)
- Update validation for
environmentsandrequired-environmentsinuv.toml(#14905)
Documentation
- Show
uv_buildin projects documentation (#14968) - Add
UV_prefix to installer environment variables (#14964) - Un-hide
uvfrom--build-backendoptions (#14939) - Update documentation for preview flags (#14902)
Install uv 0.8.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.4/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.4/uv-installer.ps1 | iex"
Download uv 0.8.4
v0.8.3
Release Notes
Python
- Add CPython 3.14.0rc1
See the python-build-standalone release notes for more details.
Enhancements
Bug fixes
- Avoid writing redacted credentials to tool receipt (#14855)
- Respect
--withversions over base environment versions (#14863) - Respect credentials from all defined indexes (#14858)
- Fix missed stabilization of removal of registry entry during Python uninstall (#14859)
- Improve concurrency safety of Python downloads into cache (#14846)
Documentation
- Fix typos in
uv_buildreference documentation (#14853) - Move the "Cargo" install method further down in docs (#14842)
Install uv 0.8.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.3/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.8.3/uv-installer.ps1 | iex"
Download uv 0.8.3
v0.8.2
Release Notes
Enhancements
- Add derivation chains for dependency errors (#14824)
Configuration
- Add
UV_INIT_BUILD_BACKEND(#14821)
Bug fixes
- Avoid reading files in the environment bin that are not entrypoints (#14830)
- Avoid removing empty directories when constructing virtual environments (#14822)
- Preserve index URL priority order when writing to pyproject.toml (#14831)
Rust API
- Expose
tls_built_in_root_certsfor client (#14816)
Documentation
- Archive the 0.7.x changelog (#14819)
Install uv 0.8.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.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.8.2/uv-installer.ps1 | iex"
Download uv 0.8.2
v0.8.1
Release Notes
Enhancements
- Add support for
HF_TOKEN(#14797) - Allow
--config-settings-packageto apply configuration settings at the package level (#14573) - Create (e.g.)
python3.13texecutables inuv venv(#14764) - Disallow writing symlinks outside the source distribution target directory (#12259)
- Elide traceback when
python -m uvin interrupted with Ctrl-C on Windows (#14715) - Match
--boundsformatting foruv_buildbounds inuv init(#14731) - Support
extrasanddependency_groupsmarkers in PEP 508 grammar (#14753) - Support
extrasanddependency_groupsmarkers onuv pip installanduv pip sync(#14755) - Add hint to use
uv self versionwhenuv versioncannot find a project (#14738) - Improve error reporting when removing Python versions from the Windows registry (#14722)
- Make warnings about masked
[tool.uv]fields more precise (#14325)
Preview features
- Emit JSON output in
uv syncwith--quiet(#14810)
Bug fixes
- Allow removal of virtual environments with missing interpreters (#14812)
- Apply
Cache-Controloverrides to response, not request headers (#14736) - Copy entry points into ephemeral environments to ensure layers are respected (#14790)
- Workaround Jupyter Lab application directory discovery in ephemeral environments (#14790)
- Enforce
requires-pythoninpylock.toml(#14787) - Fix kebab casing of
READMEvariants in build backend (#14762) - Improve concurrency resilience of removing Python versions from the Windows registry (#14717)
- Retry HTTP requests on invalid data errors (#14703)
- Update virtual environment removal to delete
pyvenv.cfglast (#14808) - Error on unknown fields in
dependency-metadata(#14801)
Documentation
- Recommend installing
setup-uvaftersetup-pythonin Github Actions integration guide (#14741) - Clarify which portions of
requires-pythonbehavior are consistent with pip (#14752)
Install uv 0.8.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.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.8.1/uv-installer.ps1 | iex"
Download uv 0.8.1
v0.8.0
Release Notes
Since we released uv 0.7.0 in April, 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.
This release also includes the stabilization of a couple uv python install features, which have been available under preview since late last year.
Breaking changes
-
Install Python executables into a directory on the
PATH(#14626)uv python installnow installs a versioned Python executable (e.g.,python3.13) into a directory on thePATH(e.g.,~/.local/bin) by default. This behavior has been available under the--previewflag since Oct 2024. This change should not be breaking unless it shadows a Python executable elsewhere on thePATH.To install unversioned executables, i.e.,
python3andpython, use the--defaultflag. The--defaultflag has also been in preview, but is not stabilized in this release.Note that these executables point to the base Python installation and only include the standard library. That means they will not include dependencies from your current project (use
uv run pythoninstead) and you cannot install packages into their environment (useuvx --with <package> pythoninstead).As with tool installation, the target directory respects common variables like
XDG_BIN_HOMEand can be overridden with aUV_PYTHON_BIN_DIRvariable.You can opt out of this behavior with
uv python install --no-binorUV_PYTHON_INSTALL_BIN=0.See the documentation on installing Python executables for more details.
-
Register Python versions with the Windows Registry (#14625)
uv python installnow registers the installed Python version with the Windows Registry as specified by PEP 514. This allows using uv installed Python versions via thepylauncher. This behavior has been available under the--previewflag since Jan 2025. This change should not be breaking, as using the uv Python versions withpyrequires explicit opt in.You can opt out of this behavior with
uv python install --no-registryorUV_PYTHON_INSTALL_REGISTRY=0. -
Prompt before removing an existing directory in
uv venv(#14309)Previously,
uv venvwould remove an existing virtual environment without confirmation. While this is consistent with the behavior of project commands (e.g.,uv sync), it's surprising to users that are using imperative workflows (i.e.,uv pip). Now,uv venvwill prompt for confirmation before removing an existing virtual environment. If not in an interactive context, uv will still remove the virtual environment for backwards compatibility. However, this behavior is likely to change in a future release.The behavior for other commands (e.g.,
uv sync) is unchanged.You can opt out of this behavior by setting
UV_VENV_CLEAR=1or passing the--clearflag. -
Validate that discovered interpreters meet the Python preference (#7934)
uv allows opting out of its managed Python versions with the
--no-managed-pythonandpython-preferenceoptions.Previously, uv would not enforce this option for Python interpreters discovered on the
PATH. For example, if a symlink to a managed Python interpreter was created, uv would allow it to be used even if--no-managed-pythonwas provided. Now, uv ignores Python interpreters that do not match the Python preference unless they are in an active virtual environment or are explicitly requested, e.g., with--python /path/to/python3.13.Similarly, uv would previously not invalidate existing project environments if they did not match the Python preference. Now, uv will invalidate and recreate project environments when the Python preference changes.
You can opt out of this behavior by providing the explicit path to the Python interpreter providing
--managed-python/--no-managed-pythonmatching the interpreter you want. -
Install dependencies without build systems when they are
pathsources (#14413)When working on a project, uv uses the presence of a build system to determine if it should be built and installed into the environment. However, when a project is a dependency of another project, it can be surprising for the dependency to be missing from the environment.
Previously, uv would not build and install dependencies with
pathsources unless they declared a build system or settool.uv.package = true. Now, dependencies withpathsources are built and installed regardless of the presence of a build system. If a build system is not present, thesetuptools.build_meta:__legacy__backend will be used (per PEP 517).You can opt out of this behavior by setting
package = falsein the source declaration, e.g.:[tool.uv.sources] foo = { path = "./foo", package = false }Or, by setting
tool.uv.package = falsein the dependentpyproject.toml.See the documentation on virtual dependencies for details.
-
Install dependencies without build systems when they are workspace members (#14663)
As described above for dependencies with
pathsources, uv previously would not build and install workspace members that did not declare a build system. Now, uv will build and install workspace members that are a dependency of another workspace member regardless of the presence of a build system. The behavior is unchanged for workspace members that are not included in theproject.dependencies,project.optional-dependencies, ordependency-groupstables of another workspace member.You can opt out of this behavior by setting
tool.uv.package = falsein the workspace member'spyproject.toml.See the documentation on virtual dependencies for details.
-
Bump
--python-platform linuxtomanylinux_2_28(#14300)uv allows performing platform-specific resolution for explicit targets and provides short aliases, e.g.,
linux, for common targets.Previously, the default target for
--python-platform linuxwasmanylinux_2_17, which is compatible with most Linux distributions from 2014 or newer. We now default tomanylinux_2_28, which is compatible with most Linux distributions from 2019 or newer. This change follows the lead of other tools, such ascibuildwheel, which changed their default tomanylinux_2_28in Mar 2025.This change only affects users requesting a specific target platform. Otherwise, uv detects the
manylinuxtarget from your local glibc version.You can opt out of this behavior by using
--python-platform x86_64-manylinux_2_17instead. -
Remove
uv versionfallback (#14161)In Apr 2025, uv changed the
uv versioncommand to an interface for viewing and updating the version of the current project. However, when outside a project,uv versionwould continue to display uv's version for backwards compatibility. Now, when used outside of a project,uv versionwill fail.You cannot opt out of this behavior. Use
uv self versioninstead. -
Require
--globalfor removal of the global Python pin (#14169)Previously,
uv python pin --rmwould allow you to remove the global Python pin without opt in. Now, uv requires the--globalflag to remove the global Python pin.You cannot opt out of this behavior. Use the
--globalflag instead. -
Support conflicting editable settings across groups (#14197)
Previously, uv would always treat a package as editable if any requirement requested it as editable. However, this prevented users from declaring
pathsources that toggled theeditablesetting across dependency groups. Now, uv allows declaring differenteditablevalues for conflicting groups. However, if a project includes a path dependency twice, once witheditable = trueand once without any editable annotation, those are now considered conflicting, and uv will exit with an error.You cannot opt out of this behavior. Use consistent
editablesettings or mark groups as conflicting. -
Make
uv_buildthe default build backend inuv init(#14661)The uv build backend (
uv_build) was stabilized in uv 0.7.19. Now, it is the default build backend foruv init --packageanduv init --lib. Previously,hatchlingwas the default build backend. A build backend is still not used without opt-in inuv init, but we expect to change this in a future release.You can opt out of this behavior with
uv init --build-backend hatchling. -
Set default
UV_TOOL_BIN_DIRon Docker images (#13391)Previously,
UV_TOOL_BIN_DIRwas not set in Docker images which meant thatuv tool installdid not install tools into a directory on thePATHwithout additional configuration. Now,UV_TOOL_BIN_DIRis set to/usr/local/binin all Docker derived images.When the default image user is overridden (e.g.
USER <UID>) with a less privileged user, this may causeuv tool installto fail.You can opt out of this behavior by setting an alternative
UV_TOOL_BIN_DIR. -
Update
--checkto return an exit code of 1 (#14167)uv uses an exit code of 1 to indicate a "successful failure" and an exit code of 2 to indicate an "error".
Previously,
uv lock --checkanduv sync --checkwould exit with a code of 2 when the lockfile or environment were outdated. Now, uv will exit with a code of 1.You cannot opt out of this behavior.
-
Use an ephemeral environment for
uv run --withinvocations (#14447)When using
uv run --with, uv layers the requirements requested using--withinto another virtual environment and caches it. Previously, uv would invoke the Python interpreter in this layered environment. However, this allows poisoning the cached environment and introduces race conditions for concurrent invocations. Now, uv will layer another empty virtual environment on top of the cached environment and invoke the Python interpreter there. This should only cause breakage in cases where the environment is being inspected at runtime.You cannot opt out of this behavior.
-
Restructure the
uv venvcommand output and exit codes (#14546)Previously, uv used
mietteto format theuv venvoutput. However, this was inconsistent with most of the uv CLI. Now, the output is a little different and the exit code has switched from 1 to 2 for some error cases.You cannot opt out of this behavior.
-
Default to
--workspacewhen adding subdirectories (#14529)When using
uv addto add a subdirectory in a workspace, uv now defaults to adding the target as a workspace member.You can opt out of this behavior by providing
--no-workspace. -
Add missing validations for disallowed
uv.tomlfields (#14322)uv does not allow some settings in the
uv.toml. Previously, some settings were silently ignored when present in theuv.toml. Now, uv will error.You cannot opt out of this behavior. Use
--no-configor remove the invalid settings.
Configuration
- Add support for toggling Python bin and registry install options via env vars (#14662)
Install uv 0.8.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.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.8.0/uv-installer.ps1 | iex"
Download uv 0.8.0
v0.7.22
Release Notes
Python
- Upgrade GraalPy to 24.2.2
See the GraalPy release notes for more details.
Configuration
- Add
UV_COMPILE_BYTECODE_TIMEOUTenvironment variable (#14369) - Allow users to override index
cache-controlheaders (#14620) - Add
UV_LIBCto override libc selection in multi-libc environment (#14646)
Bug fixes
- Fix
--all-archeswhen paired with--only-downloads(#14629) - Skip Windows Python interpreters that return a broken MSIX package code (#14636)
- Warn on invalid
uv.tomlwhen provided via direct path (#14653) - Improve async signal safety in Windows exception handler (#14619)
Documentation
- Mention the
revisionin the lockfile versioning doc (#14634) - Move "Conflicting dependencies" to the "Resolution" page (#14633)
- Rename "Dependency specifiers" section to exclude PEP 508 reference (#14631)
- Suggest
uv cache cleanprior to--reinstall(#14659)
Preview features
- Make preview Python registration on Windows non-fatal (#14614)
- Update preview installation of Python executables to be non-fatal (#14612)
- Add
uv python update-shell(#14627)
Install uv 0.7.22
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.ps1 | iex"
Download uv 0.7.22
v0.7.21
Release Notes
Python
- Restore the SQLite
fts4,fts5,rtree, andgeopolyextensions on macOS and Linux
See the python-build-standalone release notes for more details.
Enhancements
- Add
--python-platformtouv sync(#14320) - Support pre-releases in
uv version --bump(#13578) - Add
-wshorthand for--with(#14530) - Add an exception handler on Windows to display information on crash (#14582)
- Add hint when Python downloads are disabled (#14522)
- Add
UV_HTTP_RETRIESto customize retry counts (#14544) - Follow leaf symlinks matched by globs in
cache-key(#13438) - Support parent path components (
..) in globs incache-key(#13469) - Improve
cache-keyperformance (#13469)
Preview features
- Add
uv sync --output-format json(#13689)
Bug fixes
- Do not re-resolve with a new Python version in
uv toolif it is incompatible with--python(#14606)
Documentation
- Document how to nest dependency groups with
include-group(#14539) - Fix repeated word in Pyodide doc (#14554)
- Update CONTRIBUTING.md with instructions to format Markdown files via Docker (#14246)
- Fix version number for
setup-python(#14533)
Install uv 0.7.21
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.ps1 | iex"
Download uv 0.7.21
v0.7.20
Release Notes
Python
- Add Python 3.14.0b4
- Add zstd support to Python 3.14 on Unix (it already was available on Windows)
- Add PyPy 7.3.20 (for Python 3.11.13)
See the PyPy and python-build-standalone release notes for more details.
Enhancements
- Add
--workspaceflag touv add(#14496) - Add auto-detection for Intel GPUs (#14386)
- Drop trailing arguments when writing shebangs (#14519)
- Add debug message when skipping Python downloads (#14509)
- Add support for declaring multiple modules in namespace packages (#14460)
Bug fixes
- Revert normalization of trailing slashes on index URLs (#14511)
- Fix forced resolution with all extras in
uv version(#14434) - Fix handling of pre-releases in preferences (#14498)
- Remove transparent variants in
uv-extractto enable retries (#14450)
Rust API
- Add method to get packages involved in a
NoSolutionError(#14457) - Make
ErrorTreeforNoSolutionErrorpublic (#14444)
Documentation
- Finish incomplete sentence in pip migration guide (#14432)
- Remove
cache-dependency-globexamples forsetup-uv(#14493) - Remove
uv pip syncsuggestion withpyproject.toml(#14510) - Update documentation for GitHub to use
setup-uv@v6(#14490)
Install uv 0.7.20
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.20/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.20/uv-installer.ps1 | iex"
Download uv 0.7.20
v0.7.19
Release Notes
The uv build backend is now stable, and considered ready for production use.
The uv build backend is a great choice for pure Python projects. It has reasonable defaults, with the goal of requiring zero configuration for most users, but provides flexible configuration to accommodate most Python project structures. It integrates tightly with uv, to improve messaging and user experience. It validates project metadata and structures, preventing common mistakes. And, finally, it's very fast — uv sync on a new project (from uv init) is 10-30x faster than with other build backends.
To use uv as a build backend in an existing project, add uv_build to the [build-system] section in your pyproject.toml:
[build-system]
requires = ["uv_build>=0.7.19,<0.8.0"]
build-backend = "uv_build"
In a future release, it will replace hatchling as the default in uv init. As before, uv will remain compatible with all standards-compliant build backends.
Python
- Add PGO distributions of Python for aarch64 Linux, which are more optimized for better performance
See the python-build-standalone release for more details.
Enhancements
- Ignore Python patch version for
--universalpip compile (#14405) - Update the tilde version specifier warning to include more context (#14335)
- Clarify behavior and hint on tool install when no executables are available (#14423)
Bug fixes
- Make project and interpreter lock acquisition non-fatal (#14404)
- Includes
sys.prefixin cached environment keys to avoid--withcollisions across projects (#14403)
Documentation
- Add a migration guide from pip to uv projects (#12382)
Install uv 0.7.19
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.19/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.19/uv-installer.ps1 | iex"
Download uv 0.7.19
v0.7.18
Release Notes
Python
-
Added arm64 Windows Python 3.11, 3.12, 3.13, and 3.14
These are not downloaded by default, since x86-64 Python has broader ecosystem support on Windows. However, they can be requested with
cpython-<version>-windows-aarch64.
Enhancements
- Keep track of retries in
ManagedPythonDownload::fetch_with_retry(#14378) - Reuse build (virtual) environments across resolution and installation (#14338)
- Improve trace message for cached Python interpreter query (#14328)
- Use parsed URLs for conflicting URL error message (#14380)
Preview features
- Ignore invalid build backend settings when not building (#14372)
Bug fixes
- Fix equals-star and tilde-equals with
python_versionandpython_full_version(#14271) - Include the canonical path in the interpreter query cache key (#14331)
- Only drop build directories on program exit (#14304)
- Error instead of panic on conflict between global and subcommand flags (#14368)
- Consistently normalize trailing slashes on URLs with no path segments (#14349)
Documentation
- Add instructions for publishing to JFrog's Artifactory (#14253)
- Edits to the build backend documentation (#14376)
Install uv 0.7.18
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.18/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.18/uv-installer.ps1 | iex"
Download uv 0.7.18
v0.7.17
Release Notes
Bug fixes
- Apply build constraints when resolving
--withdependencies (#14340) - Drop trailing slashes when converting index URL from URL (#14346)
- Ignore
UV_PYTHON_CACHE_DIRwhen empty (#14336) - Fix error message ordering for
pyvenv.cfgversion conflict (#14329)
Install uv 0.7.17
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.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.7.17/uv-installer.ps1 | iex"
Download uv 0.7.17
v0.7.16
Release Notes
Python
- Add Python 3.14.0b3
See the python-build-standalone release notes for more details.
Enhancements
- Include path or URL when failing to convert in lockfile (#14292)
- Warn when
~=is used as a Python version specifier without a patch version (#14008)
Preview features
- Ensure preview default Python installs are upgradeable (#14261)
Performance
- Share workspace cache between lock and sync operations (#14321)
Bug fixes
- Allow local indexes to reference remote files (#14294)
- Avoid rendering desugared prefix matches in error messages (#14195)
- Avoid using path URL for workspace Git dependencies in
requirements.txt(#14288) - Normalize index URLs to remove trailing slash (#14245)
- Respect URL-encoded credentials in redirect location (#14315)
- Lock the source tree when running setuptools, to protect concurrent builds (#14174)
Documentation
- Note that GCP Artifact Registry download URLs must have
/simplecomponent (#14251)
Install uv 0.7.16
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.16/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.16/uv-installer.ps1 | iex"
Download uv 0.7.16
v0.7.15
Release Notes
Enhancements
- Consistently use
Ordering::Relaxedfor standalone atomic use cases (#14190) - Warn on ambiguous relative paths for
--index(#14152) - Skip GitHub fast path when rate-limited (#13033)
- Preserve newlines in
schema.jsondescriptions (#13693)
Bug fixes
- Add check for using minor version link when creating a venv on Windows (#14252)
- Strip query parameters when parsing source URL (#14224)
Documentation
- Add a link to PyPI FAQ to clarify what per-project token is (#14242)
Preview features
- Allow symlinks in the build backend (#14212)
Install uv 0.7.15
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.15/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.15/uv-installer.ps1 | iex"
Download uv 0.7.15
v0.7.14
Release Notes
Enhancements
- Add XPU to
--torch-backend(#14172) - Add ROCm backends to
--torch-backend(#14120) - Remove preview label from
--torch-backend(#14119) - Add
[tool.uv.dependency-groups].mygroup.requires-python(#13735) - Add auto-detection for AMD GPUs (#14176)
- Show retries for HTTP status code errors (#13897)
- Support transparent Python patch version upgrades (#13954)
- Warn on empty index directory (#13940)
- Publish to DockerHub (#14088)
Performance
- Make cold resolves about 10% faster (#14035)
Bug fixes
- Don't use walrus operator in interpreter query script (#14108)
- Fix handling of changes to
requires-python(#14076) - Fix implied
platform_machinemarker forwin_amd64platform tag (#14041) - Only update existing symlink directories on preview uninstall (#14179)
- Serialize Python requests for tools as canonicalized strings (#14109)
- Support netrc and same-origin credential propagation on index redirects (#14126)
- Support reading
dependency-groupsfrom pyproject.tomls with no[project](#13742) - Handle an existing shebang in
uv init --script(#14141) - Prevent concurrent updates of the environment in
uv run(#14153) - Filter managed Python distributions by platform before querying when included in request (#13936)
Documentation
- Replace cuda124 with cuda128 (#14168)
- Document the way member sources shadow workspace sources (#14136)
- Sync documented PyTorch integration index for CUDA and ROCm versions from PyTorch website (#14100)
Install uv 0.7.14
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.14/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.14/uv-installer.ps1 | iex"
Download uv 0.7.14
v0.7.13
Release Notes
Python
- Add Python 3.14.0b2
- Add Python 3.13.5
- Fix stability of
uuid.getnodeon 3.13
See the python-build-standalone release notes for more details.
Enhancements
- Download versions in
uv python pinif not found (#13946) - Use TTY detection to determine if SIGINT forwarding is enabled (#13925)
- Avoid fetching an exact, cached Git commit, even if it isn't locked (#13748)
- Add
zstdanddeflatetoAccept-Encoding(#13982) - Build binaries for riscv64 (#12688)
Bug fixes
- Check if relative URL is valid directory before treating as index (#13917)
- Ignore Python discovery errors during
uv python pin(#13944) - Do not allow
uv add --group ... --script(#13997)
Preview changes
- Build backend: Support namespace packages (#13833)
Documentation
- Add 3.14 to the supported platform reference (#13990)
- Add an
llms.txtto uv (#13929) - Add supported macOS version to the platform reference (#13993)
- Update platform support reference to include Python implementation list (#13991)
- Update pytorch.md (#13899)
- Update the CLI help and reference to include references to the Python bin directory (#13978)
Install uv 0.7.13
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.13/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.13/uv-installer.ps1 | iex"
Download uv 0.7.13
v0.7.12
Release Notes
Enhancements
- Add
uv python pin --rmto remove.python-versionpins (#13860) - Don't hint at versions removed by
excluded-newer(#13884) - Add hint to use
tool.uv.environmentson resolution error (#13455) - Add hint to use
tool.uv.required-environmentson resolution error (#13575) - Improve
python pinerror messages (#13862)
Bug fixes
- Lock environments during
uv sync,uv addanduv removeto prevent race conditions (#13869) - Add
--no-editabletouv exportforpylock.toml(#13852)
Documentation
- List
.gitignorein project init files (#13855) - Move the pip interface documentation into the concepts section (#13841)
- Remove the configuration section in favor of concepts / reference (#13842)
- Update Git and GitHub Actions docs to mention
gh auth login(#13850)
Preview
- Fix directory glob traversal fallback preventing exclusion of all files (#13882)
Install uv 0.7.12
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.12/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.12/uv-installer.ps1 | iex"
Download uv 0.7.12
v0.7.11
Release Notes
Python
- Add Python 3.14.0b1
- Add Python 3.13.4
- Add Python 3.12.11
- Add Python 3.11.13
- Add Python 3.10.18
- Add Python 3.9.23
Enhancements
- Add Pyodide support (#12731)
- Better error message for version specifier with missing operator (#13803)
Bug fixes
- Downgrade
reqwestandhyper-utilto resolve connection reset errors over IPv6 (#13835) - Prefer
uv's binary's version when checking if it's up to date (#13840)
Documentation
- Use "terminal driver" instead of "shell" in
SIGINTdocs (#13787)
Install uv 0.7.11
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.11/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.11/uv-installer.ps1 | iex"
Download uv 0.7.11
v0.7.10
Release Notes
Enhancements
- Add
--show-extrastouv tool list(#13783) - Add dynamically generated sysconfig replacement mappings (#13441)
- Add data locations to install wheel logs (#13797)
Bug fixes
- Avoid redaction of placeholder
gitusername when using SSH authentication (#13799) - Propagate credentials to files on devpi indexes ending in
/+simple(#13743) - Restore retention of credentials for direct URLs in
uv export(#13809)
Install uv 0.7.10
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.10/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.10/uv-installer.ps1 | iex"
Download uv 0.7.10
v0.7.9
Release Notes
Python
The changes reverted in 0.7.8 have been restored.
See the
python-build-standalone release notes
for more details.
Enhancements
- Improve obfuscation of credentials in URLs (#13560)
- Allow running non-default Python implementations via
uvx(#13583) - Add
uvwas alias foruvwithout console window on Windows (#11786) - Allow discovery of x86-64 managed Python builds on macOS (#13722)
- Differentiate between implicit vs explicit architecture requests (#13723)
- Implement ordering for Python architectures to prefer native installations (#13709)
- Only show the first match per platform (and architecture) by default in
uv python list(#13721) - Write the path of the parent environment to an
extends-environmentkey in thepyvenv.cfgfile of an ephemeral environment (#13598) - Improve the error message when libc cannot be found, e.g., when using the distroless containers (#13549)
Performance
- Avoid rendering info log level (#13642)
- Improve performance of
uv-pythoncrate's manylinux submodule (#11131) - Optimize
Versiondisplay (#13643) - Reduce number of reference-checks for
uv cache clean(#13669)
Bug fixes
- Avoid reinstalling dependency group members with
--all-packages(#13678) - Don't fail direct URL hash checking with dependency metadata (#13736)
- Exit early on
self updateif global--offlineis set (#13663) - Fix cases where the uv lock is incorrectly marked as out of date (#13635)
- Include pre-release versions in
uv python install --reinstall(#13645) - Set
LC_ALL=Cfor git when checking git worktree (#13637) - Avoid rejecting Windows paths for remote Python download JSON targets (#13625)
Preview
- Add
uv add --boundsto configure version constraints (#12946)
Documentation
- Add documentation about Python versions to Tools concept page (#7673)
- Add example of enabling Dependabot (#13692)
- Fix
exclude-newerdate format for persistent configuration files (#13706) - Quote versions variables in GitLab documentation (#13679)
- Update Dependabot support status (#13690)
- Explicitly specify to add a new repo entry to the repos list item in the
.pre-commit-config.yaml(#10243) - Add integration with marimo guide (#13691)
- Add pronunciation to README (#5336)
Install uv 0.7.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.9/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.9/uv-installer.ps1 | iex"
Download uv 0.7.9
v0.7.8
Release Notes
Python
We are reverting most of our Python changes from uv 0.7.6 and uv 0.7.7 due to
a miscompilation that makes the Python interpreter behave incorrectly, resulting
in spurious type-errors involving str. This issue seems to be isolated to
x86_64 Linux, and affected at least Python 3.12, 3.13, and 3.14.
The following changes that were introduced in those versions of uv are temporarily being reverted while we test and deploy a proper fix for the miscompilation:
- Add Python 3.14 on musl
- free-threaded Python on musl
- Add Python 3.14.0a7
- Statically link
libpythoninto the interpreter on Linux for a significant performance boost
Documentation
- Remove misleading line in pin documentation (#13611)
Install uv 0.7.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.8/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.8/uv-installer.ps1 | iex"
Download uv 0.7.8
v0.7.7
Release Notes
Python
- Work around third-party packages that (incorrectly) assume the interpreter is dynamically linking libpython
- Allow the experimental JIT to be enabled at runtime on Python 3.13 and 3.14 on macOS on aarch64 aka Apple Silicon
See the python-build-standalone release notes for more details.
Bug fixes
- Make
uv versionlock and sync (#13317) - Fix references to
lddin diagnostics to correctly refer told.so(#13552)
Documentation
- Clarify adding SSH Git dependencies (#13534)
Install uv 0.7.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.7/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.7/uv-installer.ps1 | iex"
Download uv 0.7.7
v0.7.6
Release Notes
Python
- Add Python 3.14 on musl
- Add free-threaded Python on musl
- Add Python 3.14.0a7
- Statically link
libpythoninto the interpreter on Linux for a significant performance boost
See the
python-build-standalone release notes
for more details.
Enhancements
- Improve compatibility of
VIRTUAL_ENV_PROMPTvalue (#13501) - Bump MSRV to 1.85 and Edition 2024 (#13516)
Bug fixes
- Respect default extras in uv remove (#13380)
Documentation
- Fix PowerShell code blocks (#13511)
Install uv 0.7.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.6/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.6/uv-installer.ps1 | iex"
Download uv 0.7.6
v0.7.5
Release Notes
Bug fixes
- Support case-sensitive module discovery in the build backend (#13468)
- Bump Simple cache bucket to v16 (#13498)
- Don't error when the script is too short for the buffer (#13488)
- Add missing word in "script not supported" error (#13483)
Install uv 0.7.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.5/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.5/uv-installer.ps1 | iex"
Download uv 0.7.5
v0.7.4
Release Notes
Enhancements
- Add more context to external errors (#13351)
- Align indentation of long arguments (#13394)
- Preserve order of dependencies which are sorted naively (#13334)
- Align progress bars by largest name length (#13266)
- Reinstall local packages in
uv add(#13462) - Rename
--raw-sourcesto--raw(#13348) - Show 'Downgraded' when
self updateis used to install an older version (#13340) - Suggest
uv self updateif required uv version is newer (#13305) - Add 3.14 beta images to uv Docker images (#13390)
- Add comma after "i.e." in Conda environment error (#13423)
- Be more precise in unpinned packages warning (#13426)
- Fix detection of sorted dependencies when include-group is used (#13354)
- Fix display of HTTP responses in trace logs for retry of errors (#13339)
- Log skip reasons during Python installation key interpreter match checks (#13472)
- Redact credentials when displaying URLs (#13333)
Bug fixes
- Avoid erroring on
pylock.tomldependency entries (#13384) - Avoid panics for cannot-be-a-base URLs (#13406)
- Ensure cached realm credentials are applied if no password is found for index URL (#13463)
- Fix
.tgzparsing to respect true extension (#13382) - Fix double self-dependency (#13366)
- Reject
pylock.tomlinuv add -r(#13421) - Retain dot-separated wheel tags during cache prune (#13379)
- Retain trailing comments after PEP 723 metadata block (#13460)
Documentation
Preview features
- Build backend: Normalize glob paths (#13465)
Install uv 0.7.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.4/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.4/uv-installer.ps1 | iex"
Download uv 0.7.4
v0.7.3
Release Notes
Enhancements
- Add
--dry-runsupport touv self update(#9829) - Add
--show-withtouv tool listto list packages included by--with(#13264) - De-duplicate fetched index URLs (#13205)
- Support more zip compression formats: bzip2, lzma, xz, zstd (#13285)
- Add support for downloading GraalPy (#13172)
- Improve error message when a virtual environment Python symlink is broken (#12168)
- Use
fs_errfor paths in symlinking errors (#13303) - Minify and embed managed Python JSON at compile time (#12967)
Preview features
- Build backend: Make preview default and add configuration docs (#12804)
- Build backend: Allow escaping in globs (#13313)
- Build backend: Make builds reproducible across operating systems (#13171)
Configuration
- Add
python-downloads-json-urloption foruv.tomlto configure custom Python installations via JSON URL (#12974)
Bug fixes
- Check nested IO errors for retries (#13260)
- Accept
musllinux_1_0as a valid platform tag (#13289) - Fix discovery of pre-release managed Python versions in range requests (#13330)
- Respect locked script preferences in
uv run --with(#13283) - Retry streaming downloads on broken pipe errors (#13281)
- Treat already-installed base environment packages as preferences in
uv run --with(#13284) - Avoid enumerating sources in errors for path Python requests (#13335)
- Avoid re-creating virtual environment with
--no-sync(#13287)
Documentation
Install uv 0.7.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.3/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.7.3/uv-installer.ps1 | iex"
Download uv 0.7.3
v0.7.2
Release Notes
Enhancements
- Improve trace log for retryable errors (#13228)
- Use "error" instead of "warning" for self-update message (#13229)
- Error when
uv versionis used with project-specific flags but no project is found (#13203)
Bug fixes
- Fix incorrect virtual environment invalidation for pre-release Python versions (#13234)
- Fix patching of
clangin managed Python sysconfig (#13237) - Respect
--projectinuv version(#13230)
Install uv 0.7.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.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.7.2/uv-installer.ps1 | iex"
Download uv 0.7.2
v0.7.1
Release Notes
Enhancement
- Add support for BLAKE2b-256 (#13204)
Bugfix
- Revert fix handling of authentication when encountering redirects (#13215)
Install uv 0.7.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.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.7.1/uv-installer.ps1 | iex"
Download uv 0.7.1
v0.7.0
Release Notes
This release contains various changes that improve correctness and user experience, but could break some workflows; many changes 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
-
Update
uv versionto display and update project versions (#12349)Previously,
uv versiondisplayed uv's version. Now,uv versionwill display or update the project's version. This interface was heavily requested and, after much consideration, we decided that transitioning the top-level command was the best option.Here's a brief example:
$ uv init example Initialized project `example` at `./example` $ cd example $ uv version example 0.1.0 $ uv version --bump major example 0.1.0 => 1.0.0 $ uv version --short 1.0.0If used outside of a project, uv will fallback to showing its own version still:
$ uv version warning: failed to read project: No `pyproject.toml` found in current directory or any parent directory running `uv self version` for compatibility with old `uv version` command. this fallback will be removed soon, pass `--preview` to make this an error. uv 0.7.0 (4433f41c9 2025-04-29)As described in the warning,
--previewcan be used to error instead:$ uv version --preview error: No `pyproject.toml` found in current directory or any parent directoryThe previous functionality of
uv versionwas moved touv self version. -
Avoid fallback to subsequent indexes on authentication failure (#12805)
When using the
first-indexstrategy (the default), uv will stop searching indexes for a package once it is found on a single index. Previously, uv considered a package as "missing" from an index during authentication failures, such as an HTTP 401 or HTTP 403 (normally, missing packages are represented by an HTTP 404). This behavior was motivated by unusual responses from some package indexes, but reduces the safety of uv's index strategy when authentication fails. Now, uv will consider an authentication failure as a stop-point when searching for a package across indexes. Theindex.ignore-error-codesoption can be used to recover the existing behavior, e.g.:[[tool.uv.index]] name = "pytorch" url = "https://download.pytorch.org/whl/cpu" ignore-error-codes = [401, 403]Since PyTorch's indexes always return a HTTP 403 for missing packages, uv special-cases indexes on the
pytorch.orgdomain to ignore that error code by default. -
Require the command in
uvx <name>to be available in the Python environment (#11603)Previously,
uvxwould attempt to execute a command even if it was not provided by a Python package. For example, if we presumefoois an empty Python package which provides no command,uvx foowould invoke thefoocommand on thePATH(if present). Now, uv will error early if thefooexecutable is not provided by the requested Python package. This check is not enforced when--fromis used, so patterns likeuvx --from foo bash -c "..."are still valid. uv also still allowsuvx foowhere thefooexecutable is provided by a dependency offooinstead offooitself, as this is fairly common for packages which depend on a dedicated package for their command-line interface. -
Use index URL instead of package URL for keyring credential lookups (#12651)
When determining credentials for querying a package URL, uv previously sent the full URL to the
keyringcommand. However, some keyring plugins expect to receive the index URL (which is usually a parent of the package URL). Now, uv requests credentials for the index URL instead. This behavior matchespip. -
Remove
--versionfrom subcommands (#13108)Previously, uv allowed the
--versionflag on arbitrary subcommands, e.g.,uv run --version. However, the--versionflag is useful for other operations since uv is a package manager. Consequently, we've removed the--versionflag from subcommands — it is only available asuv --version. -
Omit Python 3.7 downloads from managed versions (#13022)
Python 3.7 is EOL and not formally supported by uv; however, Python 3.7 was previously available for download on a subset of platforms.
-
Reject non-PEP 751 TOML files in install, compile, and export commands (#13120, #13119)
Previously, uv treated arbitrary
.tomlfiles passed to commands (e.g.,uv pip install -r foo.tomloruv pip compile -o foo.toml) asrequirements.txt-formatted files. Now, uv will error instead. If using PEP 751 lockfiles, use the standardized format for custom names instead, e.g.,pylock.foo.toml. -
Ignore arbitrary Python requests in version files (#12909)
uv allows arbitrary strings to be used for Python version requests, in which they are treated as an executable name to search for in the
PATH. However, using this form of request in.python-versionfiles is non-standard and conflicts withpyenv-virtualenvwhich writes environment names to.python-versionfiles. In this release, uv will now ignore requests that are arbitrary strings when found in.python-versionfiles. -
Error on unknown dependency object specifiers (12811)
The
[dependency-groups]entries can include "object specifiers", e.g.set-phasers-to = ...in:[dependency-groups] foo = ["pyparsing"] bar = [{set-phasers-to = "stun"}]However, the only current spec-compliant object specifier is
include-group. Previously, uv would ignore unknown object specifiers. Now, uv will error. -
Make
--frozenand--no-sourcesconflicting options (#12671)Using
--no-sourcesalways requires a new resolution and--frozenwill always fail when used with it. Now, this conflict is encoded in the CLI options for clarity. -
Treat empty
UV_PYTHON_INSTALL_DIRandUV_TOOL_DIRas unset (#12907, #12905)Previously, these variables were treated as set to the current working directory when set to an empty string. Now, uv will ignore these variables when empty. This matches uv's behavior for other environment variables which configure directories.
Enhancements
- Disallow mixing requirements across PyTorch indexes (#13179)
- Add optional managed Python archive download cache (#12175)
- Add
poetry-coreas auv initbuild backend option (#12781) - Show tag hints when failing to find a compatible wheel in
pylock.toml(#13136) - Report Python versions in
pyvenv.cfgversion mismatch (#13027)
Bug fixes
- Avoid erroring on omitted wheel-only packages in
pylock.toml(#13132) - Fix display name for
uvx --version(#13109) - Restore handling of authentication when encountering redirects (#13050)
- Respect build options (
--no-binaryet al) inpylock.toml(#13134) - Use
upload-timerather thanupload_timeinuv.lock(#13176)
Documentation
- Changed
fishcompletions append>>to overwrite>(#13130) - Add
pylock.tomlmentions where relevant (#13115) - Add ROCm example to the PyTorch guide (#13200)
- Upgrade PyTorch guide to CUDA 12.8 and PyTorch 2.7 (#13199)
Install uv 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.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.7.0/uv-installer.ps1 | iex"
Download uv 0.7.0
v0.6.17
Release Notes
Preview features
- Add PyTorch v2.7.0 to GPU backend (#13072)
Bug fixes
- Avoid panic for invalid Python versions (#13077)
- Block scripts from overwriting
python(#13051) - Check distribution names to handle invalid redirects (#12917)
- Check for mismatched package and distribution names on resolver thread (#13088)
- Fix panic with invalid last character in PEP 508 name (#13105)
- Reject
requires-pythoneven if not listed on the index page (#13086)
Install uv 0.6.17
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.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.6.17/uv-installer.ps1 | iex"
Download uv 0.6.17
v0.6.16
Release Notes
Bug fixes
- Revert "Properly handle authentication for 302 redirect URLs" (#13041)
Install uv 0.6.16
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.16/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.16/uv-installer.ps1 | iex"
Download uv 0.6.16
v0.6.15
Release Notes
This release includes preliminary support for the pylock.toml file format, as standardized in PEP 751. pylock.toml is an alternative resolution output format intended to replace requirements.txt (e.g., in the context of uv pip compile, whereby a "locked" requirements.txt file is generated from a set of input requirements). pylock.toml is standardized and tool-agnostic, such that in the future, pylock.toml files generated by uv could be installed by other tools, and vice versa.
As of this release, pylock.toml is supported in the following commands:
- To export a
uv.lockto thepylock.tomlformat, run:uv export -o pylock.toml - To generate a
pylock.tomlfile from a set of requirements, run:uv pip compile -o pylock.toml requirements.in - To install from a
pylock.tomlfile, run:uv pip sync pylock.tomloruv pip install -r pylock.toml
Enhancements
- Add PEP 751 support to
uv pip compile(#13019) - Add
uv exportsupport for PEP 751 (#12955) - Accept
requirements.txt(verbatim) as a format on the CLI (#12957) - Add
UV_NO_EDITABLEenvironment variable to set--no-editableon all invocations (#12773) - Add
pylock.tomltouv pip installanduv pip sync(#12992) - Add a brief sleep before sending
SIGINTto child processes (#13018) - Add upload time to
uv.lock(#12968) - Allow updating Git sources by name (#12897)
- Cache
which gitinuv init(#12893) - Enable
--dry-runwith--locked/--frozenforuv sync(#12778) - Infer output type in
uv export(#12958) - Make
uv initresilient against broken git (#12895) - Respect build constraints for
uv run --withdependencies (#12882) - Split UV_INDEX on all whitespace (#12820)
- Support build constraints in
uv tooland PEP723 scripts. (#12842) - Use suffix from
uvxbinary when searching for uv binary (#12923) - Update version formatting to use cyan color (#12943)
- Add debug logs for version file search (#12951)
- Fix
SourceNotAllowederror message during Python discovery (#13012) - Obfuscate password in credentials debug messages (#12944)
- Obfuscate possible tokens in URL logs (#12969)
- Validate that PEP 751 entries don't include multiple sources (#12993)
Preview features
- Build backend: Add reference docs and schema (#12803)
Bug fixes
- Align supported
config-settingswith example in docs (#12947) - Ensure virtual environment is compatible with interpreter on sync (#12884)
- Fix
PythonDownloadRequestparsing for partial keys (#12925) - Fix pre-release exclusive comparison operator in
uv-pep440(#12836) - Forward additional signals to the child process in
uv run(#13017) - Omit PEP 751 version for source trees (#13030)
- Patch
CCandCCXentries in sysconfig for cross-compiledaarch64Python distributions (#12239) - Properly handle authentication for HTTP 302 redirect URLs (#12920)
- Set 4MB stack size for all threads, introduce
UV_STACK_SIZE(#12839) - Show PyPy downloads during
uv python list(#12915) - Add
subdirectoryto Direct URL for local directories (#12971) - Prefer stable releases over pre-releases in
uv python install(#12194) - Write requested Python variant to pin file in
uv init(#12870)
Documentation
- Fix CLI reference with code block (#12807)
- Fix lockfile note (#12793)
- Fix typo in a reference (#12858)
- Improve docs for
uv python list --only-downloadsand--only-installed(#12916) - Update note on lack of musl distributions to ARM-only (#12825)
- Add section on shebangs for scripts (#11553)
- Display aliases for long and short args in the CLI reference (#12824)
- Fix highlight line in explicit index documentation (#12887)
- Add explicit source (matching PyTorch guide) (#12844)
- Fix link to issue (#12823)
- Fix grammatical error in FastAPI guide (#12908)
- Add
--lockedtouv syncin GitHub Actions guide (#12819) - Improve formatting for
"all"default-groupssetting documentation (#12963) - Replace
--frozenwith--lockedin Docker integration guide (#12818)
Install uv 0.6.15
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.15/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.15/uv-installer.ps1 | iex"
Download uv 0.6.15
v0.6.14
Release Notes
Python versions
The following Python versions have been added:
- CPython 3.13.3
- CPython 3.12.10
- CPython 3.11.12
- CPython 3.10.17
- CPython 3.9.22
See the python-build-standalone release notes for more details.
Enhancements
- Add
uv-buildanduv_buildaliases touv init --build-backend(#12776) - Emit dedicated error message for Conda
environment.ymlfiles (#12669)
Preview features
- Build backend: Check module dir exists for sdist build (#12779)
- Build backend: Fix sdist with long directories (#12764)
Performance
- Avoid querying GitHub on repeated install invocations (#12767)
Bug fixes
- Error when
tool.uv.sourcesis set in system-level configuration file (#12757) - Split workspace members onto their own lines in
uv init(#12756)
Documentation
- Add lockfile note about PEP 751 (#12732)
- Extend the reference documentation for
uv pip sync(#12683) - Fix mismatched pip interface header / nav titles (#12640)
uv 0.6.14
Install uv 0.6.14
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.14/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.14/uv-installer.ps1 | iex"
Download uv 0.6.14
v0.6.13
Release Notes
Enhancements
- Add
--show-versiontouv python find(#12376) - Remove
--no-configwarning fromuv pip compileanduv pip sync(#12642) - Skip repeated directories in
PATHwhen searching for Python interpreters (#12367) - Unset
SCRIPT_PATHin relocatable activation script (#12672) - Add
UV_PYTHON_DOWNLOADS_JSON_URLto set custom managed python sources (#10939) - Reject
pyproject.tomlfiles inuv pip compile -o(#12673) - Respect the
--offlineflag for Git operations (#12619)
Bug fixes
- Warn instead of error if CRC appears to be missing (#12722)
- Avoid infinite loop in
uv exportwith conflicts (#12726)
Rust API
- Update MSRV to 1.84 (#12670)
uv 0.6.13
Install uv 0.6.13
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.13/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.13/uv-installer.ps1 | iex"
Download uv 0.6.13
v0.6.12
Release Notes
Enhancements
- Report the queried executable path in
uv python list(#12628) - Improve archive unpack error messages (#12627)
Bug fixes
- Respect
authenticatewhen usingexplicit = true(#12631) - Normalize extra and group names in
uv addanduv remove(#12586) - Enforce CRC-32 checks when unpacking archives (#12623)
- Fix parsing of
python-platformin settings files (#12592)
Documentation
- Add note about
uv buildtopackage = false(#12608) - Add index fallback note to
authenticate = alwaysdocumentation (#12498) - Fix invalid 'kind' reference in flat index docs (#12583)
uv 0.6.12
Install uv 0.6.12
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.12/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.12/uv-installer.ps1 | iex"
Download uv 0.6.12
v0.6.11
Release Notes
Enhancements
- Add dependents ("via ..." comments) in
uv exportcommand (#12350) - Bump least-recent non-EOL macOS version to 13.0 (#12518)
- Support
--find-links-style "flat" indexes in[[tool.uv.index]](#12407) - Distinguish between
-qand-qq(#12300)
Configuration
- Support
UV_PROJECTenvironment to set project directory. (#12327)
Performance
- Use a boxed slice for various requirement types (#12514)
Bug fixes
- Add a newline after metadata when initializing scripts with other metadata blocks (#12501)
- Avoid writing empty
requires-pythonto script blocks (#12517) - Respect build constraints in
uv sync(#12502) - Respect transitive dependencies in
uv tree --only-group(#12560)
uv 0.6.11
Install uv 0.6.11
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.11/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.11/uv-installer.ps1 | iex"
Download uv 0.6.11
v0.6.10
Release Notes
Enhancements
- Add
uv sync --checkflag (#12342) - Add support for Python version requests in
uv python list(#12375) - Support
.envfiles inuv tool run(#12386) - Support
python find --script(#11891)
Preview features
- Check all compatible torch indexes when
--torch-backendis enabled (#12385)
Performance
Bug fixes
- Allow virtual packages with
--no-build(#12314) - Ignore
--find-linksentries for pinned indexes (#12396) - Omit wheels from lockfile based on
--exclude-newer(#12299) - Retain end-of-line comment position when adding dependency (#12360)
- Omit fragment when querying for wheels in Simple HTML API (#12384)
- Error on missing argument in
requirements.txt(#12354) - Support modules with different casing in build backend (#12240)
- Add authentication policy support for
pipcommands (#12470)
uv 0.6.10
Install uv 0.6.10
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.10/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.10/uv-installer.ps1 | iex"
Download uv 0.6.10
v0.6.9
Release Notes
Enhancements
- Use
keyring --mode credswhenauthenticate = "always"(#12316) - Fail with specific error message when no password is present and
authenticate = "always"(#12313)
Bug fixes
- Add boolish value parser for
UV_MANAGED_PYTHONflags (#12345) - Make deserialization non-fatal when assessing source tree revisions (#12319)
- Use resolver-returned wheel over alternate cached wheel (#12301)
Documentation
- Add experimental
--torch-backendto the PyTorch guide (#12317) - Fix
#keyring-providerreferences in alternative index docs (#12315) - Fix
--directorypath in examples (#12165)
Preview changes
- Automatically infer the PyTorch index via
--torch-backend=auto(#12070)
uv 0.6.9
Install uv 0.6.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.9/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.9/uv-installer.ps1 | iex"
Download uv 0.6.9
v0.6.8
Release Notes
Enhancements
- Add support for enabling all groups by default with
default-groups = "all"(#12289) - Add simpler
--managed-pythonand--no-managed-pythonflags for toggling Python preferences (#12246)
Performance
- Avoid allocations for default cache keys (#12063)
Bug fixes
- Allow local version mismatches when validating lockfile (#12285)
- Allow owned string when deserializing
requires-python(#12278) - Make cache errors non-fatal in
Planner::build(#12281)
uv 0.6.8
Install uv 0.6.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.8/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.8/uv-installer.ps1 | iex"
Download uv 0.6.8
v0.6.7
Release Notes
If encountering inconsistent wheel version errors, see #12254.
Python
- Add CPython 3.14.0a6
- Fix regression where extension modules would use wrong
CXXcompiler on Linux - Enable FTS3 enhanced query syntax for SQLite
See the python-build-standalone release notes for more details.
Enhancements
- Add support for
-cconstraints inuv add(#12209) - Add support for
--globaldefault version inuv python pin(#12115) - Always reinstall local source trees passed to
uv pip install(#12176) - Render token claims on publish permission error (#12135)
- Add pip-compatible
--groupflag touv pip installanduv pip compile(#11686)
Preview features
- Avoid creating duplicate directory entries in built wheels (#12206)
- Allow overriding module names for editable builds (#12137)
Performance
- Avoid replicating core-metadata field on
Filestruct (#12159)
Bug fixes
- Add
srcto default cache keys (#12062) - Discard insufficient fork markers (#10682)
- Ensure
python pin --globalcreates parent directories if missing (#12180) - Fix GraalPy abi tag parsing and discovery (#12154)
- Remove extraneous script packages in
uv sync --script(#12158) - Remove redundant
activate.batoutput (#12160) - Avoid subsequent index hint when no versions are available on the first index (#9332)
- Error on lockfiles with incoherent wheel versions (#12235)
Rust API
- Update
BaseClientBuildto accept custom proxies (#12232)
Documentation
- Make testpypi index explicit in example snippet (#12148)
- Reverse and format the archived changelogs (#12099)
- Use consistent commas around i.e. and e.g. (#12157)
- Fix typos in MRE docs (#12198)
- Fix double space typo (#12171)
uv 0.6.7
Install uv 0.6.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.7/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.7/uv-installer.ps1 | iex"
Download uv 0.6.7
v0.6.6
Release Notes
Python
- Add support for dynamic musl Python distributions on x86-64 Linux (#12121)
- Allow the experimental JIT to be enabled at runtime on Python 3.13 and 3.14 on Linux
- Upgrade the build toolchain to LLVM 20, improving performance
See the python-build-standalone release notes for more details.
Enhancements
- Add
--markerflag touv add(#12012) - Allow overriding module name for uv build backend (#11884)
- Sync latest Python releases (#12120)
- Use 'Upload' instead of 'Download' in publish reporter (#12029)
- Add
[index].authenticateallowing authentication to be required on an index (#11896) - Add support for Windows legacy scripts in
uv tool run(#12079) - Propagate conflicting dependency groups when using
include-group(#12005) - Show ambiguous requirements when
uv addfailed (#12106)
Performance
- Cache workspace discovery (#12096)
- Insert dependencies into fork state prior to fetching metadata (#12057)
- Remove some allocations from
uv-auth(#12077)
Bug fixes
- Avoid considering
PATHupdated when theexportis commented in the shellrc (#12043) - Fix
uv publishretry on network failures (#12041) - Use a sized stream in
uv publishto comply with WSGI PyPI server constraints (#12111) - Fix
uv python install --reinstallwhen the version was not previously installed (#12124)
Preview features
- Fix
uv_buildinvocation (#12058)
Documentation
- Quote versions string in
python-versions.md(#12112) - Fix tool concept page headings (#12053)
- Update the
[index].authenticatedocs (#12102) - Update versioning policy (#11666)
uv 0.6.6
Install uv 0.6.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.6/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.6/uv-installer.ps1 | iex"
Download uv 0.6.6
v0.6.5
Release Notes
Some of the wheels for this build were initially not correctly published to PyPI. The release was temporarily yanked to avoid forcing users to build from source. The wheels were subsequently uploaded and the release was un-yanked.
Enhancements
- Allow
--constraintsand--overridesinuvx(#10207) - Allow overrides in
satisfiescheck foruv tool run(#11994) - Allow users to set
package = trueontool.uv.sources(#12014) - Add support for Windows legacy scripts via
uv run(#11888) - Return error when running uvx with a
.pyscript (#11623) - Warn user on use of
uvx run(#11992)
Configuration
- Add
NO_BUILDandNO_BUILD_PACKAGEenvironment variables (#11968)
Performance
- Allow overrides in all satisfies checks (#11995)
- Respect markers on constraints when validating current environment (#11976)
Bug fixes
- Compare major-minor specifiers when filtering interpreters (#11952)
- Fix system site packages detection default (#11956)
- Invalidate lockfile when empty dependency groups are added or removed (#12010)
- Remove prepended sys.path (#11954)
- Fix PyPy Python version label (#11965)
- Fix error message suggesting
--userinstead of--username(#11947)
Preview
- Move the uv build backend into a separate, minimal
uv_buildpackage (#11446)
Install uv 0.6.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.5/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.5/uv-installer.ps1 | iex"
Download uv 0.6.5
v0.6.4
Release Notes
Enhancements
- Upgrade pypy3.10 to v7.3.19 (#11814)
- Allow configuring log verbosity from the CLI (i.e.,
-vvv) (#11758) - Warn when duplicate index names found in single file (#11824)
Bug fixes
- Always store registry index on resolution packages (#11815)
- Avoid error on relative paths in
uv tool uninstall(#11889) - Avoid silently dropping errors in directory enumeration (#11890)
- Disable interactive git terminal prompts during fetches (#11744)
- Discover Windows registry (PEP 514) Python versions across 32/64-bit (#11801)
- Don't panic on Ctrl-C in confirm prompt (#11706)
- Fix non-directory in workspace on Windows (#11833)
- Make interpreter caching robust to OS upgrades (#11875)
- Respect
include-system-site-packagesin layered environments (#11873) - Suggest
uv tool update-shellin PowerShell (#11846) - Update code page to
65001before setting environment variables in virtual environments (#11831) - Use hash instead of full wheel name in wheels bucket (#11738)
- Fix version string truncation while generating cache_key (#11830)
- Explicitly handle ctrl-c in confirmation prompt instead of using a signal handler (#11897)
Performance
- Avoid cloning to string when creating cache path (#11772)
- Avoid redundant clones in version containment check (#11767)
- Avoid string allocation when enumerating tool names (#11910)
- Avoid using owned
Stringfor package name constructors (#11768) - Avoid using owned
Stringin deserializers (#11764) - Migrate to
zlib-rs(again) (#11894) - Remove unnecessary clones when adding package names (#11771)
- Skip unquote allocation for non-quoted strings (#11813)
- Use
SmallStringfor filenames and URLs (#11765) - Use a Boxed slice for version specifiers (#11766)
- Use matches over contains for extra value parsing (#11770)
Documentation
- Avoid fallback to PyPI in mixed CPU/CUDA example (#11115)
- Docs: Clarify that setting cache-keys overrides defaults (#11895)
- Document our MSRV policy (#11898)
- Fix reference to macOS cache path (#11845)
- Fix typo in
no_default_groupsdocumentation and changelog (#11928) - Update the "Locking and syncing" page (#11647)
- Update alternative indexes documentation to use new interface (#10826)
Install uv 0.6.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.4/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.4/uv-installer.ps1 | iex"
Download uv 0.6.4
v0.6.3
Release Notes
Enhancements
- Allow quotes around command-line options in
requirement.txt files(#11644) - Initialize PEP 723 script in
uv lock --script(#11717)
Configuration
- Accept multiple
.envfiles inUV_ENV_FILE(#11665)
Performance
- Reduce overhead in converting resolutions (#11660)
- Use
SmallStringonHashes(#11756) - Use a
BoxforYankedonFile(#11755) - Use a
SmallStringfor theYankedenum (#11715) - Use boxed slices for hash vector (#11714)
- Use install concurrency for bytecode compilation too (#11615)
Bug fixes
- Avoid installing duplicate dependencies across conflicting groups (#11653)
- Check subdirectory existence after cache heal (#11719)
- Include uppercase platforms for Windows wheels (#11681)
- Respect existing PEP 723 script settings in
uv add(#11716) - Reuse refined interpreter to create tool environment (#11680)
- Skip removed directories during bytecode compilation (#11633)
- Support conflict markers in
uv export(#11643) - Treat lockfile as outdated if (empty) extras are added (#11702)
- Display path separators as backslashes on Windows (#11667)
- Display the built file name instead of the canonicalized name in
uv build(#11593) - Fix message when there are no buildable packages (#11722)
- Re-allow HTTP schemes for Git dependencies (#11687)
Documentation
- Add anchor links to arguments and options in the CLI reference (#11754)
- Add link to environment marker specification (#11748)
- Fix missing a closing bracket in the
cache-keyssetting (#11669) - Remove the last edited date from documentation pages (#11753)
- Fix readme typo (#11742)
Install uv 0.6.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.3/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.3/uv-installer.ps1 | iex"
Download uv 0.6.3
v0.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
Arcfor 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
v0.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
--alltouvx --reinstallmessage (#11535) - Fallback to
GETon 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
- Add documentation for required environments (#11542)
- Note that
main.pyused to behello.py(#11519)
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
v0.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.pyinstead ofhello.pyinuv init(#10369)Previously,
uv initcreated ahello.pysample file. Now,uv initwill createmain.pyinstead — which aligns with expectations from user feedback. The--bareoption can be used to avoid creating the file altogether. -
Respect
UV_PYTHONinuv python install(#11487)Previously,
uv python installdid not read this environment variable; now it does. We believe this matches user expectations, however, this will take priority over.python-versionfiles which could be considered breaking. -
Set
UVto the uv executable path (#11326)When uv spawns a subprocess, it will now have the
UVenvironment variable set to theuvbinary path. This change is breaking if you are setting theUVenvironment variable yourself, as we will overwrite its value.Additionally, this change requires marking the uv Rust entrypoint (
uv::main) asunsafeto 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
--frozenis provided (#11499)Previously, uv would not validate that the requested dependency groups were present in the lockfile when the
--frozenflag was used. Now, an error will be raised if a requested dependency group is not present. -
Change
-pto a--pythonalias inuv pip compile(#11486)In
uv pip compile,-pwas an alias for--python-versionwhile everywhere else in uv's interface it is an alias for--python. Additionally,uv pip compiledid not respect theUV_PYTHONenvironment variable. Now, the semantics of this flag have been updated for parity with the rest of the CLI.However,
--python-versionis 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_PYTHONis respected and--python <version>will no longer fail if the version cannot be found. -
Bump
alpinedefault 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-alpineimages have been using 3.21 since uv v0.5.8. However, now the theuv:alpineimage will use 3.21 instead of 3.20 anduv:alpine3.20will 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 publishis 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
--activefor PEP 723 script environments (#11433) - Add
revisionto the lockfile to allow backwards-compatible metadata changes (#11500)
Bug fixes
- Avoid reading metadata from
.egg-infofiles (#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
v0.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
+localsuffixes (#11429) - Bring parity to
uvxanduv tool installrequests (#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.executableis the same file (#11290) - Avoid comparing to system site packages in
--dry-runmode (#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_INDEXinstead 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
v0.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_BINARYandNO_BINARY_PACKAGEenvironment 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-tarto 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
eprintlnin trampoline warnings (#11295) - Patch pkg-config files to be relocatable (#11291)
- Fix a case of duplicate
torchpackages 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
v0.5.29
Release Notes
Enhancements
- Add
--bareoption touv init(#11192) - Add support for respecting
VIRTUAL_ENVin project commands via--active(#11189) - Allow the project
VIRTUAL_ENVwarning 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-groupsand--no-default-groupsflags (#11224)
Documentation
- Minor touchups to the Docker provenance docs (#11252)
- Move content from the
mkdocs.public.ymlinto 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
v0.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 updatedto 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
v0.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 installwith--extraor--all-extrasand 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-tarfork (#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
_GLibCVersiontuple in uv-python crate (#11122)
Documentation
- Add Git SHA locking behavior to docs (#11125)
- Add best-practice flags to
pip installexample in troubleshooting guide (#11194) - Set
VIRTUAL_ENVin 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
v0.5.26
Release Notes
Enhancements
- Add support for
uvx python(#11076) - Allow
--no-dev --invertinuv tree(#11068) - Update
uv python install --reinstallto reinstall all previous versions (#11072) - Consistently write log messages with capitalized first word (#11111)
- Suggest
--build-backendwhen--backendis 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
--scriptis 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>/simpleto<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_LOGdocumentation (#10053) - Fix typo in
--no-depsdescription (#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_platformin lieu ofplatform_systemin 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
v0.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 runanduv tool runon 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
--editableflag on non-directory requirements (#10994) - Respect
--no-sourcesforuv pip installworkspace discovery (#11003) - Set
JEMALLOC_SYS_WITH_LG_PAGE=16in ARM Docker builds (#10943) - Update
riscv64Python downloads to allow install onriscv64gc(#10937) - Fix file persist retries on Windows (#11008)
- Fix incorrect error message when specifying
tool.uv.sources.(package).workspacewith other options (#11013) - Improve SIGINT handling in
uv run(#11009)
Documentation
- Add
SECURITYpolicy (#11035) - Add
Requires-Pythonupper bound behavior to the docs (#10964) - Add a troubleshooting section and reproducible example guide (#10947)
- Add documentation for
uv add -r(#10926) - Amend
requires-pythonrules in resolver documentation (#10993) - Reference workspaces in
--no-sourcesdocumentation (#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"
Download uv 0.5.25
v0.5.24
Release Notes
Enhancements
- Improve determinism of resolution by always setting package priorities (#10853)
- Upgrade to
cargo-dist0.28.0; improves several installer behaviors (#10884)
Performance
- Remove dependencies clone in resolver (#10880)
- Use Hashbrown's raw entry API to reduce hashes and clone in resolver priority determination (#10881)
Bug fixes
- Allow fallback to Python download on non-critical discovery errors (#10908)
Preview features
- Register managed Python version with the Windows Registry (PEP 514) (#10634)
Documentation
- Improve documentation for some environment variables (#10887)
- Add git subdirectory example (#10894)
Install uv 0.5.24
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.24/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.24/uv-installer.ps1 | iex"
Download uv 0.5.24
| 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 |
v0.5.23
Release Notes
Enhancements
Bug fixes
- Sort extras and groups when comparing lockfile requirements (#10856)
- Include
commit_idandrequested_revisionindirect_url.json(#10862) - Invalidate lockfile when static versions change (#10858)
- Make GitHub fast path errors non-fatal (#10859)
- Remove warnings for
--frozenand--lockedinuv run --script(#10840) - Resolve
find-linkspaths relative to the configuration file (#10827) - Respect visitation order for proxy packages (#10833)
- Treat version mismatch errors as non-fatal in fast paths (#10860)
- Mark
--lockedand--upgradeare conflicting (#10836) - Relax error checking around unconditional enabling of conflicting extras (#10875)
Documentation
Error messages
- Error when workspace contains conflicting Python requirements (#10841)
- Improve uvx error message when uv is missing (#9745)
Install uv 0.5.23
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.23/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.23/uv-installer.ps1 | iex"
Download uv 0.5.23
| 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 |
v0.5.22
Release Notes
Enhancements
- Include version and contact information in GitHub User Agent (#10785)
Performance
- Add fast-path for recursive extras in dynamic validation (#10823)
- Fetch
pyproject.tomlfrom GitHub API (#10765) - Remove allocation in Git SHA truncation (#10801)
- Skip GitHub fast path when full commit is already known (#10800)
Bug fixes
- Add fallback to build backend when
Requires-Distmismatches (#10797) - Avoid deserialization error for paths above the root (#10789)
- Avoid respecting preferences from other indexes (#10782)
- Disable the distutils setuptools shim during interpreter query (#10819)
- Omit variant when detecting compatible Python installs (#10722)
- Remove TOCTOU errors in Git clone (#10758)
- Validate metadata under GitHub fast path (#10796)
- Include conflict markers in fork markers (#10818)
Error messages
- Add tag incompatibility hints to sync failures (#10739)
- Improve log when distutils is missing (#10713)
- Show non-critical Python discovery errors if no other interpreter is found (#10716)
- Use colors for lock errors (#10736)
Documentation
- Add testing instructions to the AWS Lambda guide (#10805)
Install uv 0.5.22
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.22/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.22/uv-installer.ps1 | iex"
Download uv 0.5.22
| 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 |
v0.5.21
Release Notes
Enhancements
- Avoid building dynamic versions when validating lockfile (#10703)
Configuration
- Add
UV_VENV_SEEDenvironment variable (#10715)
Performance
- Store unsupported tags in wheel filename (#10665)
Bug fixes
- Avoid attempting to patch macOS dylib for non-macOS installs (#10721)
- Avoid narrowing
requires-pythonmarker with disjunctions (#10704) - Respect environment variable credentials for indexes outside root (#10688)
- Respect preferences for explicit index dependencies from
requirements.txt(#10690) - Sort preferences by environment, then index (#10700)
- Ignore permission errors when looking for user-level configuration file (#10697)
Documentation
- Add
SyntaxWarningcompatibility note to bytecode compilation docs (#10701) - Add
MACOSX_DEPLOYMENT_TARGETto the--python-platformdocumentation (#10698)
Install uv 0.5.21
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.21/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.21/uv-installer.ps1 | iex"
Download uv 0.5.21
| 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 |
v0.5.20
Release Notes
Bug fixes
- Avoid failing when deserializing unknown tags (#10655)
Install uv 0.5.20
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.20/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.20/uv-installer.ps1 | iex"
Download uv 0.5.20
| 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 |
v0.5.19
Release Notes
Enhancements
- Filter wheels from lockfile based on architecture (#10584)
- Omit dynamic versions from the lockfile (#10622)
- Add support for
pip freeze --path(#10488) - Reduce verbosity of inline-metadata message when using
uv run <script.py>(#10588) - Add opt-in Git LFS support (#10335)
- Recommend
--native-tlson SSL errors (#10605) - Show expected and available ABI tags in resolver errors (#10527)
- Show target Python version in error messages (#10582)
- Add
--output-format=jsonsupport touv python list(#10596)
Python
The managed Python distributions have been updated, including:
- Python 3.14 support on Windows
- Python 3.14.0a4 support
- 64-bit RISC-V Linux support
- Bundled
libeditupdated from2021091-3.1 ->2024080-3.1 - Bundled
tcl/tkupdated from 8.6.12 -> 8.6.14 (for all Python versions on Unix, only for Python 3.14 on Windows)
See the python-build-standalone release notes for more details.
Performance
- Avoid allocating when stripping source distribution extension (#10625)
- Reduce
WheelFilenameto 48 bytes (#10583) - Reduce distribution size to 200 bytes (#10601)
- Remove
import refrom entrypoint wrapper scripts (#10627) - Shrink size of platform tag enum (#10546)
- Use
ArcStrin verbatim URL (#10600) - Use
memchrfor wheel parsing (#10620)
Bug fixes
- Avoid reading symlinks during
uv python installon Windows (#10639) - Correct Pyston tag format (#10580)
- Provide
pyproject.tomlpath for parse errors inuv venv(#10553) - Don't treat
setuptoolsandwheelas seed packages in uv sync on Python 3.12 (#10572) - Fix git-tag cache-key reader in case of slashes (#10467) (#10500)
- Include build tag in rendered wheel filenames (#10599)
- Patch embedded install path for Python dylib on macOS during
python install(#10629) - Read cached registry distributions when
--config-settingsare present (#10578) - Show resolver hints for packages with markers (#10607)
Documentation
- Add meta titles to documents in guides, excluding integration documents (#10539)
- Remove
build-systemfrom example workspace rot (#10636)
Preview features
- Make build backend type annotations more generic (#10549)
Install uv 0.5.19
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.19/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.19/uv-installer.ps1 | iex"
Download uv 0.5.19
| 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 |
v0.5.18
Release Notes
Bug fixes
- Avoid forking for identical markers (#10490)
- Avoid panic in
uv removewhen only comments exist (#10484) - Revert "improve shell compatibility of venv activate scripts (#10397)" (#10497)
Install uv 0.5.18
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.18/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.18/uv-installer.ps1 | iex"
Download uv 0.5.18
| 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 |
v0.5.17
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
--scriptsupport touv exportfor PEP 723 scripts (#10160) - Add
--scriptsupport touv treefor PEP 723 scripts (#10159) - Add
lsalias touv {tool, python, pip} list(#10240) - Allow reading
--with-requirementsfrom stdin inuv addanduv run(#10447) - Warn-and-ignore for unsupported
requirements.txtoptions (#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
ArcStrfor marker values (#10453) - Use
ArcStrfor package, extra, and group names (#10475) - Use
matches!rather thancontainsinrequirements.txtparsing (#10423) - Use faster disjointness check for markers (#10439)
- Pre-compute PEP 508 markers from universal markers (#10472)
Bug fixes
- Fix
UV_FIND_LINKSdelimiter to split on commas (#10477) - Improve
uv tool listoutput when tool environment is broken (#10409) - Only track markers for compatible versions (#10457)
- Respect
requires-pythonwhen installing tools (#10401) - Visit proxy packages eagerly (#10441)
- Improve shell compatibility of
venvactivate scripts (#10397) - Read publish username from URL (#10469)
Documentation
- Add Lambda layer instructions to AWS Lambda guide (#10411)
- Add
uv lock --scriptto 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 |
v0.5.16
Release Notes
Enhancements
- Accept full requirements in
uv remove(#10338)
Performance
- Avoid over-counting versions in batch prefetcher (#10350)
- Deactivate tracing for version-choosing (#10351)
- Force a niche into
VersionSmall(#10385) - Optimize
requirements_for_extra(#10348) - Re-enable
zlib-ngon x86 platforms (#10365) - Re-enable zlib-ng on all platforms (except s390x, PowerPC, and FreeBSD) (#10370)
- Remove
[u64; 4]from small version to moveArcto full version (#10345) - Shrink
Distfrom 352 to 288 bytes (#10389) - Speed up file pins by removing nested hash map (#10346)
- Buffer file reads in
serde_json::from_reader(#10341)
Bug fixes
- Avoid enforcing project-level required version for
uv self(#10374) - Fix Ruff linting warnings from generated template files for extension modules (#10371)
Documentation
- Add AWS Lambda integration guide (#10278)
Install uv 0.5.16
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.16/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.16/uv-installer.ps1 | iex"
Download uv 0.5.16
| 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 |
v0.5.15
Release Notes
Python
The managed Python distributions have been updated, including:
- Python 3.14.0a3 support on macOS and Linux
- Performance improvements
- Fixes to SQLite feature detection
See the python-build-standalone release notes for more details.
Enhancements
- Respect
FORCE_COLORenvironment variable (#10315)
Performance
- Avoid generating unused hashes during
uv lock(#10307) - Visit source distributions before wheels (#10291)
Bug fixes
- Avoid downgrading packages when
--upgradeis provided (#10097) - Extract supported architectures from wheel tags (#10179)
- Redact new index credentials in
uv add(#10329)
Documentation
- Clarify
exclude-neweronly allows full timestamps in settings documentation (#9135) - Tweak script
--no-projectcomment (#10331) - Update copyright year (#10297)
- Add instructinos for installing with Scoop (#10332)
Install uv 0.5.15
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.15/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.15/uv-installer.ps1 | iex"
Download uv 0.5.15
| 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 |
v0.5.14
Release Notes
Enhancements
- Add
--exactflag touv run(#10198) - Add
--outdatedsupport touv pip tree(#10199) - Add a required version setting to uv (#10248)
- Add loongarch64 to supported Python platform tags (#10223)
- Add manylinux2014 aliases for
--python-platform(#10217) - Add support for Python interpreters on ARMv5TE platforms (#10234)
- Add support for optional
--descriptioninuv init(#10209) - Ignore empty or missing hrefs in Simple HTML (#10276)
- Patch pkgconfig files after Python install (#10189)
Performance
- Actually use jemalloc as alternative allocator (#10269)
- Parse URLs lazily in resolver (#10259)
- Use
BTreeMap::rangeto avoid iterating over unnecessary versions (#10266)
Bug fixes
- Accept directories with space names in
uv init(#10246) - Avoid forking on version in non-universal resolutions (#10274)
- Avoid stripping query parameters from URLs (#10253)
- Consider workspace dependencies to be 'direct' (#10197)
- Detect cyclic dependencies during builds (#10258)
- Guard against self-deletion in
uv venvanduv tool(#10206) - Respect static metadata for already-installed distributions (#10242)
Install uv 0.5.14
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.14/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.14/uv-installer.ps1 | iex"
Download uv 0.5.14
| 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 |
v0.5.13
Release Notes
Bug fixes
- Avoid enforcing URL check on initial publish (#10182)
- Fix incorrect mismatched constraints reference (#10184)
- Revert "Update
reqwest(#10178)" (#10187)
Install uv 0.5.13
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.13/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.13/uv-installer.ps1 | iex"
Download uv 0.5.13
| 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](https://github.com/astral-sh/uv/releases |