Repository navigation
Releases: astral-sh/uv
Release list
0.13.5
Release Notes
Released on 2026-10-21.
Following uv 0.13.4, which removed the affected eMudhra/emSign root from uv's own certificate store, this release updates the latest managed CPython builds for 3.11 and newer to python-build-standalone 20261021, including the CPython 3.15.1, 3.14.9, and 3.13.17 security patch releases. These builds include pip 26.2.2 both preinstalled in the managed interpreter and bundled with ensurepip, which installs pip by default when you run python -m venv. Both copies use certifi 2026.10.19, which removes the same affected root. After upgrading uv, run uv python upgrade to install the updated builds. Virtual environments pinned to an older Python patch version do not switch to the updated interpreter automatically. Upgrade pip separately in existing virtual environments.
Please note upstream CPython 3.9 and 3.10 still bundle pip releases whose certificate bundles trust the affected eMudhra/emSign root. We recommend migrating off of those versions and will no longer be releasing Docker images with uv installed for EOL Python versions.
Enhancements
- Report incompatible self-dependencies directly in resolution errors (#21845)
Python
- Add CPython 3.15.1, 3.14.9, and 3.13.17 (#22802)
Preview features
- Select and rank wheel variants with no required properties or properties from PEP 850 static providers in platform-specific resolutions with
wheel-variants(#22535, #22536, #22687, #22688)
Performance
- Reduce peak memory use when resolving dependencies across multiple environments (#22769, #22770, #22784)
- Speed up exports with complex transitive extras by resolving activation across the dependency graph (#22751)
- Reduce uv's binary size by keeping additional error formatters out of line (#22775)
- Reduce overhead when parsing custom build cache keys (#22749)
Bug fixes
- Lock packages distributed only as Android wheels without a source distribution (#22806)
- Export optional dependencies correctly when transitive extras are activated through different or incompatible environment paths (#22751)
- Reject invalid custom build cache keys instead of silently falling back to the defaults (#22749)
Security
- Reject certificate chains containing compromised eMudhra intermediate keys via
rustls-webpki0.103.16 (#22777) - Stop publishing uv Docker images based on Python 3.9 and 3.10 images that no longer receive upstream updates (#22773)
Install uv 0.13.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.13.5/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.13.5/uv-installer.ps1 | iex"Download uv 0.13.5
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/uvYou 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>0.13.4
Release Notes
Released on 2026-10-20.
This release addresses GHSA-hq85-5cpj-mr62, which involves a root CA whose intermediate on the Web PKI have been compromised. Users are encouraged to upgrade immediately, as well as confirm that all other software that uses bundled CAs is also properly updated.
Preview features
- Validate PEP 825 variant metadata and treat package versions with invalid metadata as unavailable under
wheel-variants(#22512)
Other changes
- Update the bundled Mozilla root certificates via
webpki-root-certs1.0.10 (#22760)
Install uv 0.13.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.13.4/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.13.4/uv-installer.ps1 | iex"Download uv 0.13.4
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/uvYou 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>0.13.3
Release Notes
Released on 2026-10-20.
Performance
- Avoid severe
uv exportslowdowns in dependency graphs with extras (#22750)
Install uv 0.13.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.13.3/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.13.3/uv-installer.ps1 | iex"Download uv 0.13.3
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/uvYou 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>0.13.2
Release Notes
Released on 2026-10-19.
Enhancements
- Report all installed packages in
uv workspace metadata, including packages outside the selected resolution (#22395) - Include supported environment restrictions when exporting
pylock.toml(#22596) - Retry dropped GET and HEAD requests when fetching package and index data (#22672)
- Preserve encoding declarations in wheel data scripts that require shell launchers (#22526)
- Show causes and hints when
uv python find --scriptcannot discover an interpreter, including with-q(#22549) - Print valid ksh activation instructions and support non-relocatable environments under OpenBSD-derived ksh (#22538, #22572)
- Allow PEP 508 direct URLs, including Mercurial and extensionless archive URLs, in uv-build's
[build-system].requiresvalidation (#22577)
Python
- Add PyPy 3.11.17 and 3.12.15 (#22578)
Preview features
Performance
- Avoid exponential work when simplifying, traversing, and exporting complex dependency markers (#22608, #22615, #22651, #22674)
- Reduce the time and memory used to parse and store complex dependency markers (#22675, #22676, #22681)
- Reduce resolver memory use for large dependency graphs, forks, extras, and dependency groups (#22565, #22625)
- Speed up project discovery in large workspaces by caching member names (#22635)
- Reduce uv's binary size and speed up CycloneDX exports (#22431)
- Reduce
uv-buildbinary size, including Linux x86_64 wheels (#22539, #22573) - Reduce allocations when parsing TOML (#22679)
Bug fixes
- Respect
--exclude-newerwhen a newer wheel for the selected source distribution is already cached (#22685) - Prevent URL credentials from leaking through diagnostics or persisted metadata (#22600, #22601, #22617, #22622, #22646)
- Keep separate cache entries for signed
--find-linksURLs that differ only in sensitive query values (#22630) - Honor PEP 751 environment restrictions when installing or syncing from
pylock.toml(#22594) - Use configured credentials before prompting during
uv publish, and avoid prompting when no upload occurs (#22593) - Match recursive build globs against complete file paths and ignore invalid license symlinks (#22581, #22583)
- Return an error for invalid
uv pip compile --python-versionvalues instead of panicking (#22727) - Reject invalid
pylock.tomloutput filenames before resolution instead of panicking (#22725) - Avoid panicking during repeated resolution conflicts involving fixed-priority packages (#22589)
- Create version aliases correctly when installing managed Python into a relative directory (#22547)
- Show incompatibilities from failing
uv pip checkinvocations with-q(#22544) - Treat logically equivalent dependency markers as equal regardless of construction order (#22680)
Rust API
- Require the opt-in
unsafe-urlfeature to use rawurl::UrlAPIs inuv-pep508(#22623)
Documentation
- Clarify credential lookup, environment synchronization, managed Python, and integration guidance (#22542)
Other changes
- Use stable
sh.astral.*signing identifiers for macOS binaries (#22648)
Install uv 0.13.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.13.2/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.13.2/uv-installer.ps1 | iex"Download uv 0.13.2
| File | Platform | Checksum |
|---|---|---|
| uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| uv-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
| uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
| uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
| uv-riscv64gc-unknown-linux-gnu.tar.gz | RISCV 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-riscv64gc-unknown-linux-musl.tar.gz | RISCV MUSL Linux | checksum |
| uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Li... |
0.13.1
Release Notes
Released on 2026-10-14.
Enhancements
- Ignore
Requires-Pythonupper bounds inuv pip checkanduv pip install --strict, consistent with resolution (#22500) - Support Linux SPARC by falling back when filesystem cloning and detailed cache accounting are unavailable (#22463)
- Report missing trusted hashes in resolution errors (#22241)
Python
- Add CPython 3.16.0a1 (#22527)
Preview features
- Allow
uv tool upgradeto upgrade installed tools whentool-install-locksis enabled (#22498) - Add preliminary support for parsing PEP 825 variant labels in wheel filenames with
wheel-variants(#22039)
Performance
- Reduce uv's binary size (#22429, #22430, #22432)
- Speed up Simple API parsing (#22429)
- Reduce package metadata parsing overhead (#22239)
Bug fixes
- Prevent tool and managed Python uninstalls from deleting unrelated files beside their storage directories (#22495)
- Restore support for source distributions containing hard links or full-length tar user or group names (#22516, #22522)
- Preserve device files and FIFOs used as
uv pip compileoruv exportoutput destinations (#22496) - Fix
sys._base_executabledetection for environments created from symlinked interpreters (#22520) - Prevent concurrent readers from observing partially written lockfiles, Python version files, or managed Python sysconfig files (#22399, #22402, #22403)
- Serialize concurrent project commands that reach the same environment through real and symlinked paths (#22390)
- Prevent installs, syncs, and environment creation from failing when they race with
uv cache clean(#22387) - Prevent concurrent tool installations from corrupting an environment when the last tool is uninstalled (#22391)
- Persist changed upgrade settings even when
uv tool upgradeleaves the tool version unchanged (#22499) - Reuse environments with installed Git dependencies pinned to full commit hashes without resolving again (#22464)
Documentation
- Explain how to select an emulated Python interpreter on Windows ARM64 when native wheels are unavailable (#22424)
- Fix the
.netrcformat documentation link (#22514)
Other changes
- Publish Python 3.15-based uv Docker images under stable tags (#22503)
Install uv 0.13.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.13.1/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.13.1/uv-installer.ps1 | iex"Download uv 0.13.1
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/uvYou 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>0.13.0
Release Notes
Released on 2026-10-09.
uv 0.13.0 makes Python 3.15 the default stable Python version. We've also included several breaking changes to improve correctness, performance, and compatibility, described below.
We expect most users to be able to upgrade without making changes.
While not a breaking change, this release also updates the format of many of uv's cache entries to improve performance. uv may download or rebuild dependencies after upgrading, because some cached entries from earlier versions cannot be reused. Multiple versions of uv can still safely share the same cache directory.
There are no breaking changes to the configuration of the uv build backend. If your [build-system] table includes an upper bound on uv_build, update it to allow uv_build 0.13, e.g., uv_build>=0.13.0,<0.14.
Breaking changes
-
Use Python 3.15 as the default stable version
The default stable Python version has changed from 3.14 to 3.15. This affects Python downloads when no version is requested or pinned, e.g., when running
uv python install.uv continues to use compatible Python installations that are already present. For example,
uv venvcan still use an installed Python 3.14. If no suitable interpreter is installed and automatic downloads are enabled, commands such asuv venvanduvx pythoncan now download Python 3.15.You can opt out of this behavior by requesting Python 3.14 explicitly, e.g.,
uv venv --python 3.14. For projects, useuv python pin 3.14to record the version in.python-version. -
Honor
--require-hashesin included constraints files (#22275)Previously, uv ignored
--require-hashesin constraints files included with-cfrom a requirements file. Now, uv honors the directive and requires hashes for all requirements in the installation. Installs that previously succeeded can now fail if a requirement is missing a hash.You cannot opt out while the directive is present. Add the missing hashes to your requirements, or remove the
--require-hashesdirective from the included constraints file if hash checking is not intended. -
Prefer native Python on Windows ARM64 (#22100)
Previously, ARM64 builds of uv preferred emulated
x86_64Python installations because native wheel support was limited. Now, uv prefers native ARM64 (aarch64) interpreters across Python versions.This follows similar changes in CPython, the official Windows Python install manager, and GitHub's actions/setup-python.
When a native interpreter is unavailable, uv continues to fall back to
x86_64, then 32-bitx86.You can opt out of this behavior by setting
UV_PYTHON_ARCH=x86_64or requesting an explicit architecture, e.g.,cpython-3.14-windows-x86_64. If you are usingsetup-uv, you can setpython-arch: x86_64instead. -
Reject editable requirements in included constraints files (#22282)
Previously, uv silently ignored editable (
-e) requirements in constraints files included with-cfrom a requirements file. Now, uv rejects these requirements with an error, matching pip's behavior.You cannot opt out of this behavior. Move editable requirements to a requirements file passed with
-r, or pass them directly with--editable, instead of including them in a constraints file. -
Omit the distutils startup patch on Python 3.10 and later (#22096)
Previously, uv installed
_virtualenv.pyand_virtualenv.pthinto every new virtual environment to prevent distutils configuration from changing installation paths. Now, likevirtualenv21.6.0, uv omits these files on Python 3.10 and later, which already ignore the affected configuration keys. This reduces Python startup overhead. Python 3.9 and earlier retain the patch.You cannot opt out of this behavior. Existing virtual environments are not modified automatically. Recreate an environment with Python 3.10 or later to remove the patch.
This stabilizes the
no-distutils-patchpreview feature. -
Treat requirement-file option values as single paths (#22290)
Previously, uv split values passed to
--constraint,--override,--exclude, and--build-constrainton spaces, even when quoted. Now, each value is treated as a single path, allowing file paths containing spaces.You cannot opt out of this behavior. Repeat the option to provide multiple files. For example, replace
-c "a.txt b.txt"with-c a.txt -c b.txt.Space-separated lists in
UV_CONSTRAINT,UV_OVERRIDE,UV_EXCLUDE, andUV_BUILD_CONSTRAINTremain supported. -
Use
tar-codecfor tar archives by default (#22094)Previously, uv used
astral-tokio-tarto extract tar archives, build source distributions withuv_build, and read their metadata foruv publish. Now, uv usestar-codec, which applies stricter validation when reading archives.uv may now reject archives containing hard links or unsupported tar extensions that previous versions accepted. Source distributions created by
uv_buildcan also have different archive bytes and hashes.You can opt out of this behavior by setting
UV_LEGACY_TAR_BACKEND=1.This stabilizes the
tar-codecpreview feature. -
Reject
uv build --clearoutput directories that contain a build source
(#22276)Previously,
uv build --clearcould delete a project or input source distribution when the
output directory contained the source. Now, uv rejects these output directories, including
equivalent paths reached through symlinks, before clearing any build output.Select an output directory that does not contain any build sources, or omit
--clear.
Python
- Add CPython 3.15.0 (#22400)
Preview features
- Require hashes for build dependencies, including transitive dependencies, with
--require-build-hashes(#21411)
Performance
- Speed up revalidation of cached HTTP responses by avoiding rewrites of unchanged payloads (#22130)
- Reduce allocations when reading cached HTTP responses (#22136)
- Reduce cache storage for HTTP policies and package records (#22135, #22133)
- Reduce allocations for cached source distribution revisions (#22131)
Bug fixes
- Avoid overlong wheel cache lock filenames on Windows (#22134)
Install uv 0.13.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.13.0/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.13.0/uv-installer.ps1 | iex"Download uv 0.13.0
| File | Platform | Checksum |
|---|---|---|
| uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| uv-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
| uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
| uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
| [uv-riscv64gc-unknown-linux-gnu... |
0.12.24
Release Notes
Released on 2026-10-08.
Enhancements
- Remove orphaned temporary build environments with
uv cache prune(#22171) - Accept PEP 508 marker operators directly before grouped expressions (#22309)
- Reject malformed requirements-file options instead of partially parsing or ignoring them (#22317)
- Show underlying filesystem and registry errors when managed Python uninstallation fails (#22362)
- Identify the invalid source URL in Python mirror errors (#22364)
Preview features
- Display preferred advisory IDs in
uv auditreports, prioritizing PYSEC, GHSA, then CVE identifiers (#22292)
Configuration
- Support custom installation mirrors for GraalPy (#22269)
- Support custom installation mirrors for Pyodide (#22271)
- Allow
UV_NO_CACHE=falseto overrideno-cache = truein configuration (#22324) - Report more precise error locations for invalid trusted-host ports and preview-feature list entries (#22144)
Performance
- Speed up later commands after creating an environment by warming its interpreter cache (#21304)
- Reduce code-signature verification work for ARM64 macOS releases with 16 KiB signature pages (#22246)
- Enforce resource limits when parsing package indexes and
--find-linkspages withastral-html(#22203) - Reduce standalone
uv-buildexecutable size by 7.5% by omitting unused Zstandard support (#22242) - Reduce uv's binary size by about 232 KB by simplifying configuration deserialization (#22144)
- Reduce Python download error formatting code size by sharing its formatter (#22141)
Bug fixes
- Verify supplied hashes even when hash presence is disabled with
--no-require-hashesorrequire-hashes = false(#22369) - Honor exact managed Python patch pins when creating script environments instead of following patch upgrades (#22360)
- Prevent dependency overrides and constraints from activating optional dependencies when their extras are not selected (#22237)
- Exclude optional dependencies from exports when their extras are activated only in incompatible environments (#22234)
- Give explicit
uv publish --trusted-publishingvalues precedence over configuration (#22279) - Allow
UV_OFFLINE=falseto overrideoffline = truein configuration (#22283) - Allow
UV_SYSTEM_CERTS=falseto overridesystem-certs = truein configuration (#22291) - Allow
uv auth loginover IPv6 loopback addresses (#22306) - Resolve GitHub dependencies whose Git references contain
#or%characters (#22281) - Recognize existing Pyodide interpreters as satisfying Pyodide Python requests (#22322)
- Preserve JSON output from
uv versionanduv self versionwith a single--quietflag (#22280) - Preserve trailing spaces and tabs in passwords returned by subprocess keyrings (#22284)
- Restore wheel incompatibility hints when
WHEELmetadata contains multiple expandedTag:rows (#22235) - Preserve Windows wheel-script rename errors unless a cross-drive copy fallback applies (#22302)
- Prevent workspace-cache assertion failures after modifying a project at the workspace root (#22236)
- Hide the ignored
--keyring-provideroption fromuv authhelp (#19520) - Report HTTP client setup failures directly when resolving unnamed
uv toolrequirements (#22320)
Documentation
- Update Docker and AWS Lambda examples to cache dependency layers using frozen lockfiles without project manifests (#22172)
- Fix stale links and descriptions in Rust crate documentation (#22311, #22361)
- Fix a typo in the
required-environmentsdocumentation (#22238)
Install uv 0.12.24
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.24/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.24/uv-installer.ps1 | iex"Download uv 0.12.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-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
| uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
| uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
| uv-riscv64gc-unknown-linux-gnu.tar.gz | RISCV 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-riscv64gc-unknown-linux-musl.tar.gz | RISCV MUSL Linux | checksum |
| uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | [checksu... |
0.12.23
Release Notes
Released on 2026-10-03.
Python
- Add CPython 3.15.0rc3 (#22164)
Preview features
- Sync from
uv.lockwithout a workspace manifest usinguv sync --frozenwithfrozen-lockfile(#22018) - Export from
uv.lockwithout a workspace manifest usinguv export --frozenwithfrozen-lockfile(#22007) - Inspect dependency trees from
uv.lockwithout a workspace manifest usinguv tree --frozenwithfrozen-lockfile(#22016) - Inspect workspace metadata and optionally sync its environment from
uv.lockwithout a workspace manifest usinguv workspace metadata --frozenwithfrozen-lockfile(#22017, #22018)
Bug fixes
- Reject alternate sources for workspace members across conflicting dependency selections, avoiding lockfiles that cannot be installed (#22153)
- Allow x86-64 Python interpreters running under emulation on Windows ARM64 to install compatible
win_amd64wheels instead of building from source (#22099)
Install uv 0.12.23
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.23/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.23/uv-installer.ps1 | iex"Download uv 0.12.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/uvYou 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>0.12.22
Release Notes
Released on 2026-10-01.
Python
- Add CPython 3.10.22, 3.11.17, 3.12.15, 3.13.16, and 3.14.8 (#22147)
Enhancements
- Accept uppercase release suffixes in wheel platform tags (#22113)
- Record workspace-member default groups in lockfiles (#22010, #22103)
- Record workspace-member dependency-group Python requirements in lockfiles (#22044, #22103)
- Record default groups for non-project workspace roots in lockfiles (#22104)
- Record dependency-group Python requirements for non-project workspace roots in lockfiles (#22104)
- Format URLs and paths consistently in CLI messages (#21937)
- Hide the unsupported
--offlineoption fromuv publishhelp (#22124)
Preview features
- Honor
--no-default-groupsinuv audit(#22090) - Report a clear error when
uv auditoruv tool auditruns offline and hide the unsupported option from help (#22114)
Configuration
- Add
UV_PYTHON_ARCHto select an interpreter architecture independently of its Python version (#22098)
Performance
- Reduce uv's binary size by compressing embedded Python download metadata (#22126)
Bug fixes
- Verify unchanged requirements against existing lockfile hashes when relocking (#22083)
- Honor dependency-group Python requirements at non-project workspace roots (#22101)
- Use each selected workspace member's recorded default groups during frozen sync (#22015)
- Avoid false entry-point warnings for required workspace members (#22112)
Other changes
- Raise the minimum supported Rust version for building uv to 1.97 and update the toolchain to Rust 1.99 (#22121)
Install uv 0.12.22
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.22/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.22/uv-installer.ps1 | iex"Download uv 0.12.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/uvYou 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>0.12.21
Release Notes
Released on 2026-09-29.
Python
- Update CPython to use OpenSSL 3.5.9 (#22076)
Enhancements
- Omit empty
[manifest]tables from lockfiles that contain only manifest subtables (#22070)
Preview features
- Omit redundant runtime constraints from
uv.lock, including those involving pre-releases, with theresolution-inputspreview feature (#22004, #22068)
Bug fixes
- Prevent
uv python pin --rmfrom removing a global.python-versionsfile without--global(#21992) - Fix installed-package checks incorrectly reporting post-releases as incompatible with exclusive lower bounds on pre-releases (#22049)
Install uv 0.12.21
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.21/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.21/uv-installer.ps1 | iex"Download uv 0.12.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/uvYou 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>