changelogs/0.9.x.md
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.
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, then uv venv will 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., for uv venv or uvx python. This change will not affect users who are
using a .python-version file 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 with uv python install 3.14. However, e.g., if a
free-threaded interpreter comes before a GIL-enabled build on the PATH, 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 -rc suffix, e.g., python:3.14-rc-alpine or
python:3.14-rc-trixie. Now, the -rc suffix has been removed to match the stable
upstream images. The -rc images tags will no longer be
updated. This change should not break existing workflows.
Upgrade Alpine Docker image to Alpine 3.22
Previously, the uv:alpine Docker image was based on Alpine 3.21. Now, this image is based on
Alpine 3.22. The previous image can be recovered with uv:alpine3.21 and will continue to be
updated until a future release.
Upgrade Debian Docker images to Debian 13 "Trixie"
Previously, the uv:debian and uv:debian-slim Docker images were based on Debian 12 "Bookworm".
Now, these images are based on Debian 13 "Trixie". The previous images can be recovered with
uv:bookworm and uv:bookworm-slim and will continue to be updated until a future release.
Fix incorrect output path when a trailing / is used in uv build
(#15133)
When using uv build in a workspace, the artifacts are intended to be written to a dist
directory in the workspace root. A bug caused workspace root determination to fail when the input
path included a trailing / causing the dist directory 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/.
uv python upgrade / install output when there is a no-op for one request
(#16158)uv tool upgrade can’t move the tool
(#16081)uv python upgrade requests
(#16160)uv python upgrade replacement of installed binaries on pre-release to stable
(#16159)uv pip compile args in layout.md (#16155)Released on 2025-10-09.
UV_UPLOAD_HTTP_TIMEOUT and respect UV_HTTP_TIMEOUT in uploads
(#16040)UV_WORKING_DIRECTORY for setting --directory
(#16125)Scripts directory (#16206)requires-python
(#15927)Released on 2025-10-10.
Released on 2025-10-14.
Released on 2025-10-17.
uv auth token output
(#16345)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
astral-tokio-tar to 0.5.6 to address a parsing differential
(#16387)uv pip install failure if the --system flag is used to select an externally
managed interpreter (#16318)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.
--clear to uv build to remove old build artifacts
(#16371)--no-create-gitignore to uv build (#16369)pip install --system when externally managed
(#16392)uv lock --check with outdated lockfile will print that --check was passed, instead of
--locked (#16322)uv init template for Maturin (#16449)uv python upgrade
(#16420)--find-links distributions
(#16446)uv export --frozen when the lockfile is outdated
(#16407)uv tree when --package is used with circular dependencies
(#15908)pip freeze --quiet (#16491)uv auth login pyx.dev retries to 60s
(#16498)uv add --group ... -r ...
(#16490)Released on 2025-10-30.
uv auth token output
(#16504)--check flag
(#16521)Released on 2025-11-07.
uv export (#16603)uv sync (#16543)uv cache size command (#16032)+gil to require a GIL-enabled interpreter
(#16537)uv init error for invalid directory names
(#16554)uv build -h (#16632)UV_NO_GROUP as an environment variable
(#16529)UV_NO_SOURCES as an environment variable
(#15883)--check and --locked to be used together in uv lock
(#16538)default-groups in schema
(#16575)nvidia-smi (#15460)Released on 2025-11-12.
--project in uv init (#16674)uv version --bump
(#16555).rcdata to store metadata
(#15068)--only-emit-workspace and similar variants to uv export
(#16681)UV_NO_DEFAULT_GROUPS environment variable
(#16645)torch-model-archiver and torch-tb-profiler from PyTorch backend
(#16655)CMD path in FastAPI Dockerfile (#16701)Released on 2025-11-17.
SSL_CERT_DIR (#16473)uv build
(#16699)project.license-files glob matches nothing
(#16697)pip install --target (and sync) install Python if necessary
(#16694)python_downloads_json_url in pre-release Python version warnings
(#16737)uv python --python-downloads-json-url
(#16542)--upgrade in uv python install
(#16676)python install --default for pre-release Python versions
(#16706)uv workspace list to list workspace members
(#16691)Released on 2025-11-20.
See the
python-build-standalone release notes
for details.
uv init author serialization via toml_edit inline tables
(#16778)pyproject.toml
(#16734)always-authenticate when running under Dependabot
(#16773)Released on 2025-11-24.
--with-requirements to load extensionless inline-metadata scripts
(#16744)uv publish
(#16731)uv export from overwriting pyproject.toml
(#16745)Released on 2025-11-26.
--with-requirements to load extensionless inline-metadata scripts" to fix reading
of requirements files from streams (#16861)Requires-Python and required environments
(#16824)Released on 2025-12-01.
astral-tl to v0.7.10 to enable SIMD for HTML parsing
(#16887).zshenv over creating a new one in tool update-shell
(#16866)-e flags in uv add (#16882)UV_WORKING_DIR over UV_WORKING_DIRECTORY for consistency
(#16884)Released on 2025-12-02.
--torch-backend=auto (#16919)UV_HIDE_BUILD_OUTPUT to omit build logs
(#16885)uv-trampoline-builder builds from crates.io by moving bundled executables
(#16922)NO_COLOR and always show the command as a header when paging uv help output
(#16908)0o666 permissions for flock files instead of 0o777
(#16845)astral-tl to v0.7.10 (#16887)" to narrow down a regression causing hangs in
metadata retrieval (#16938)Released on 2025-12-06.
debug subcommand to uv pip announcing its intentional absence
(#16966)uv add --script (#16954)uv self update
(#16838)--no-binary et al in uv pip compile
(#16956)--target and --prefix in uv pip list, uv pip freeze, and uv pip show
(#16955)uv workspace metadata
(#16988)uv auth helper --protocol bazel command
(#16886)tool.uv.build-backend.module-name but emit warnings
(#16928)--project flag help text to indicate project discovery
(#16965)COPY over ADD for simple cases
(#16883)Released on 2025-12-09.
torch-tensorrt and torchao to the PyTorch list
(#17053)--verbose in uv tool run
(#17020)exclude-newer (a.k.a., dependency cooldowns)
(#16814)source-exclude reference docs (#16832)UV_NO_DEV in Docker installs (#17030)UV_VERSION in docs for GitLab CI/CD
(#17040)Released on 2025-12-16.
uv publish (#17096)uv publish (#17130)python3.x-alpine3.23
(#17100)--torch-backend in [tool.uv] (#17116)@latest requests
(#17114)EntryType for file entries in tar
(#17043)pyproject.toml index username in lockfile comparison
(#16995)uv add with UV_GIT_LFS set
(#17127)exclude-newer into optional string
(#17121)exclude-newer* (#17079)Released on 2025-12-29.
uv pip compile to install missing python interpreters in cases where it would otherwise
fail (#17216)uv init --bare --script
(#17162)--torch-backend in uv tool commands
(#17117)--no-binary and --only-binary
(#17185)uv sync with JSON output format
(#16981)String allocations in deserialization
(#17221)UV_PYTHON_DOWNLOAD_MIRROR in uv python list
(#16673)pylock.toml files (#17119)- in pip constraints, overrides, and excludes
(#17188)Released on 2025-12-29.
This is a re-release of 0.9.19, with internal crate versions incremented to enable publishing to crates.io.
Released on 2025-12-30.
python install --default documentation
(#9826)Released on 2026-01-06.
Released on 2026-01-09.
RECORD files (#17339)UV_PYTHON_BIN_DIR and UV_TOOL_BIN_DIR
(#17367)armv8l as an alias for armv7l in platform tag parsing
(#17384)index.md suggestion to llms.txt (#17362)uv run uses inexact syncing by default
(#17366)Released on 2026-01-09.
UV_NO_SYNC=1 uv run ... (#17391)--no-cache
(#17387)Released on 2026-01-13.
--compile-bytecode to uv python install and uv python upgrade to compile the standard
library (#17088)exclude-newer per package (#16854)WM_SETTINGCHANGE on uv tool update-shell
(#17404)uv run target (#17423)tool@latest version
(#17448)Released on 2026-01-15.
--no-sources-package (#14910)METADATA.json and WHEEL.json in uv build backend
(#15510)pyproject.toml examples for more system-level settings
(#17462)Released on 2026-01-26.
-t shortform for --target to uv pip subcommands
(#17501)uv pip freeze --exclude flag (#17045)--system and --no-system in uv venv
(#17647)uv pip compile attempt to download a specified --python-version if it can.
(#17249)exclude-newer-package (#17665)uv python upgrade
(#17653)SSL_CERT_FILE is a directory
(#17503)--locked to install cargo-xwin in guide
(#17530)Released on 2026-01-29.
default = true
(#17713)uv.exe exits when uvw.exe or uvx.exe is killed
(#17500)Released on 2026-02-03.
uv version --bump dev similar to pre-release bumps
(#17796)uv publish server errors
(#17787)uv publish trace logs
(#17784)base and default conda environment names
(#17758)PYTHONHOME inheritance when spawning different Python versions
(#17821)EqualStar and NotEqualStar operators
(#17751)system-configuration in sandboxes
(#17829)--help
(#17745)Released on 2026-02-04.
--extra option
(#17525)UV_HTTP_TIMEOUT error message (#17493)