Repository navigation
Releases
0.13.7
Release Notes
Released on 2026-11-03.
Preview features
- Add
--output-versiontouv workspace metadatafor requesting a specific schema version (#22958) - Report aliased OSV records as a single vulnerability in
uv audit(#22990)
Bug fixes
- Treat workspace member paths added by
uv initoruv addas literals instead of glob patterns (#23008) - Prevent uv's Windows trampolines from closing handles they did not inherit (#22977)
- Allow
uvxto run tools with CPython builds whose versions contain local identifiers (#23013) - Generate valid module names when
uv initcreates packaged projects whose names start with a digit (#23022) - Preserve comments around existing inline dependency groups when
uv addupdates a group (#23017) - Allow
uv removewith an empty inlinetool.uv.sourcestable (#23012)
Documentation
- Correct the
cache-keysinline table example (#22984)
Install uv 0.13.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.13.7/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.13.7/uv-installer.ps1 | iex"Download uv 0.13.7
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.6
Release Notes
Released on 2026-10-26.
Enhancements
- Accept an empty
UV_RUN_RECURSION_DEPTHas zero and report invalid values consistently (#22814) - Explain how to add project metadata when
uv initfinds apyproject.tomlwithout a[project]table (#22916)
Python
- Add CPython 3.11.18, 3.12.16, 3.13.18, 3.14.10, and 3.15.2 (#22938)
Preview features
- Detect NVIDIA GPU capabilities when selecting compatible wheel variants with
wheel-variants(#22690) - Nest each module's owners in an object in
uv workspace metadataoutput (#22638) - Report the unsupported properties required by an incompatible wheel variant (#22719)
Performance
- Reduce peak memory use when resolving large workspaces (#22860, #22863, #22864, #22866, #22870)
- Reduce peak memory use when locking or upgrading large projects (#22833, #22834)
- Speed up redirected output from
uv exportanduv pip compile(#22840) - Reuse cached or active environments when running PEP 723 scripts without dependencies (#21458)
- Reduce parsing overhead for build dependency and build backend settings (#22848, #22871, #22879, #22884)
- Reduce parsing overhead for project sources and workspace references (#22880, #22883)
- Reduce parsing overhead for cache, exclusion, cutoff, and preview settings (#22876, #22877, #22878, #22887)
- Reduce PyPI metadata parsing overhead (#22874, #22875)
- Speed up parsing tool receipt requirements (#22885)
Bug fixes
- Prevent
uv run --active --scriptanduv sync --active --scriptfrom deleting non-virtual-environment directories (#21464) - Use
AMD64forplatform_machinewhen resolving for x86-64 Windows (#22935) - Preserve free-threaded and other non-default variants in
uv python upgrade(#22836) - Allow
uv init --no-packageanduv init --scriptwhenUV_INIT_BUILD_BACKENDis set (#22907) - Prevent panics when rendering containment markers with local versions (#22815)
Documentation
- Update the Docker guide and reproduction examples to use uv 0.13.5 (#22867)
Install uv 0.13.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.13.6/uv-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.13.6/uv-installer.ps1 | iex"Download uv 0.13.6
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.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>