0.9.0
Breaking Changes📦 uvView on GitHub →
⚠ 6 breaking✨ 7 features🐛 5 fixes🔧 6 symbols
Summary
uv 0.9.0 switches the default Python version to 3.14, updates Docker images, and adds free‑threaded interpreter support, while fixing several build and upgrade bugs.
⚠️ Breaking Changes
- Default Python version changed from 3.13 to 3.14; if no version is pinned uv will now download and use Python 3.14, which may break scripts that assume 3.13. Pin the desired version via a .python-version file or explicit version argument to avoid the change.
- Free‑threaded Python 3.14+ interpreters are now accepted without the previous "3.14t" opt‑in flag; the GIL‑enabled build is still preferred. Adjust any tooling that relied on the explicit opt‑in flag.
- Docker image tags for Python 3.14 no longer include the "-rc" suffix (e.g., python:3.14-alpine instead of python:3.14-rc-alpine). Update CI/CD pipelines that reference the old tags.
- The uv:alpine Docker image now uses Alpine 3.22 instead of 3.21. Pull the new image tag or use uv:alpine3.21 to retain the previous base.
- The uv:debian and uv:debian-slim Docker images now use Debian 13 "Trixie" instead of Debian 12 "Bookworm". Use uv:bookworm or uv:bookworm-slim to keep the older base.
- When a trailing '/' is supplied to `uv build` in a workspace, the output path is now correctly resolved to <workspace root>/dist/ instead of a nested child directory.
Migration Steps
- If you rely on a specific Python version, pin it in a .python-version file or pass the version explicitly to uv commands.
- Update any CI/CD scripts that reference Python 3.14 Docker images with the "-rc" suffix to the new stable tags.
- If you need the previous Alpine 3.21 base, switch to the image tag `uv:alpine3.21`.
- If you need the previous Debian 12 base, switch to the image tags `uv:bookworm` or `uv:bookworm-slim`.
- Review build scripts that invoke `uv build` with a trailing slash; the output location has changed but the command now works as intended.
✨ New Features
- Added support for CPython 3.14.0.
- Added support for CPython 3.13.8.
- Free‑threaded Python 3.14+ can be used without explicit opt‑in.
- Docker images now reference stable Python 3.14 tags (no "-rc" suffix).
- Alpine Docker image upgraded to Alpine 3.22.
- Debian Docker images upgraded to Debian 13 "Trixie".
- Enhanced dependency resolver: no longer warns when a dependency is constrained by another dependency.
🐛 Bug Fixes
- Fixed `uv python upgrade / install` output when a request results in a no‑op.
- Added a pinned‑version hint when `uv tool upgrade` cannot move the tool.
- Blocked pre‑release versions from being selected in `uv python upgrade` requests.
- Corrected replacement of installed binaries when upgrading from a pre‑release to a stable Python version.
- Fixed incorrect output path for `uv build` when the input path ends with a trailing '/'.
🔧 Affected Symbols
uv.python.installuv.venvuvxuv.builduv.tool.upgradeDocker image tags (uv:alpine, uv:debian, uv:debian-slim)