uv 0.13.1
Remember when setting up a Python environment meant a virtualenv shell script, a long pip resolve, and a prayer? uv 0.13.1, released on October 14, 2026, arrives barely a week after 0.13.0 and reads less like a milestone than like maintenance on a machine that now runs itself. That is the story of this project: what began in 2022 as an experiment in writing a package installer in Rust is now the tool that most of the new Python projects I see are built with.
What Changed
This is a patch release, so there are no breaking changes and no default-behavior flips. The work splits into three buckets: a handful of resolution and checking refinements, a heavy round of concurrency hardening, and ordinary performance cleanup.
- Requires-Python upper bounds ignored in strict checks.
uv pip checkanduv pip install --strictnow skipRequires-Pythonupper bounds, matching what the resolver already does. Distributions that pin something like<3.14stop producing spurious failures. - Missing trusted hashes reported. Resolution errors now say which trusted hashes are absent instead of leaving you to guess.
- Linux SPARC support. uv falls back gracefully when filesystem cloning and detailed cache accounting are unavailable on the platform.
- CPython 3.16.0a1 added. The first alpha of the next Python release can be installed with
uv python install 3.16.0a1for early testing. - Preview feature: tool install locks and upgrades. With
tool-install-locksenabled,uv tool upgradecan upgrade installed tools properly instead of being blocked. - Preview feature: PEP 825 variant labels. The new
wheel-variantsflag adds preliminary parsing support for variant labels in wheel filenames. - Smaller and faster internals. The binary got smaller through several rounds of dead-code removal, Simple API parsing is faster, and package metadata parsing overhead is lower.
- Python 3.15-based Docker images under stable tags. The official uv container images built on Python 3.15 now publish to stable tags rather than preview-only ones.
The Concurrency Work Is the Real Story
Read the bug fix list closely and a theme appears. Most of 0.13.1 is about what happens when several uv processes touch the same machine at the same time, which is exactly the situation a CI matrix or a build server creates.
- Uninstalls can no longer delete unrelated files. Removing a tool or a managed Python installation is now scoped to its own storage directory.
- Lockfiles are written atomically from a reader's perspective. Concurrent readers no longer observe partially written lockfiles, Python version files, or managed Python sysconfig files.
- Real and symlinked paths are serialized together. Two project commands reaching the same environment through different paths now take the same lock instead of racing.
- Races with
uv cache cleanno longer fail installs. Installs, syncs, and environment creation survive a cache clean running in parallel. - Tool installations cannot corrupt a shared environment. A race that appeared while the last tool was being uninstalled from a shared environment is closed.
- Upgrade settings persist. Changed upgrade settings are saved even when
uv tool upgradeends up leaving the tool version unchanged.
Distribution and Interpreter Fixes
Source distributions containing hard links or unusually long tar user and group names work again, which reverses a regression introduced by the stricter tar backend that shipped in 0.13.0. Device files and FIFOs used as the output target of uv pip compile or uv export are preserved rather than replaced with a regular file. sys._base_executable is detected correctly for environments created from symlinked interpreters, and environments with Git dependencies pinned to full commit hashes are reused without a second resolve.
How to Upgrade
Upgrade through whatever channel installed uv in the first place: the standalone installer, uv self update, pipx, Homebrew, or the Windows installer script. There are no migration steps this time. If you build your project with uv_build, it is still worth checking that your [build-system] upper bound allows the 0.13 series.
What's Next
Two preview features graduated in 0.13.0, and 0.13.1 keeps polishing the same areas behind flags. Build dependency hashing and variant wheel parsing are the obvious candidates for the next graduation, and the concurrency fixes suggest the team is now optimizing for the CI use case rather than the single-developer laptop.