astral-sh/uv 发布 0.13.0
uv 0.13.0 将 Python 3.15 设为默认稳定版本,并带来多项破坏性变更与缓存格式更新。
中文处理结果
发布说明
发布于 2026-10-09。
uv 0.13.0 将 Python 3.15 设为默认稳定 Python 版本。我们还包含了几项破坏性变更,以提升正确性、性能和兼容性,具体如下。
我们预计大多数用户无需做任何改动即可升级。
虽然不算破坏性变更,但本次发布还更新了许多 uv 缓存条目的格式以提升性能。升级后 uv 可能会重新下载或重新构建依赖,因为早期版本的部分缓存条目无法复用。多个版本的 uv 仍可安全共享同一缓存目录。
uv 构建后端的配置没有破坏性变更。如果你的 [build-system] 表中对 uv_build 设置了上限,请更新以允许 uv_build 0.13,例如 uv_build>=0.13.0,<0.14。
破坏性变更
-
使用 Python 3.15 作为默认稳定版本
默认稳定 Python 版本已从 3.14 变为 3.15。这会影响未请求或未固定版本时的 Python 下载,例如运行
uv python install时。uv 仍会继续使用已存在的兼容 Python 安装。例如,
uv venv仍可使用已安装的 Python 3.14。如果没有安装合适的解释器且启用了自动下载,uv venv和uvx python等命令现在可以下载 Python 3.15。你可以通过显式请求 Python 3.14 来退出此行为,例如
uv venv --python 3.14。对于项目,使用uv python pin 3.14将版本记录到.python-version。 -
在包含的约束文件中遵循
--require-hashes(#22275)此前,uv 会忽略通过 requirements 文件的
-c引入的约束文件中的--require-hashes。现在,uv 会遵循该指令,并要求安装中所有依赖项都提供哈希。此前能成功的安装,如果某个依赖项缺少哈希,现在可能失败。在该指令存在时无法退出。请为依赖项补充缺失的哈希,或者如果本就不打算做哈希校验,则从所包含的约束文件中移除
--require-hashes指令。 -
在 Windows ARM64 上优先使用原生 Python(#22100)
此前,ARM64 构建的 uv 优先使用模拟的
x86_64Python 安装,因为原生 wheel 支持有限。现在,uv 在各 Python 版本上都优先使用原生 ARM64(aarch64)解释器。这跟随了 CPython、官方 Windows Python 安装管理器以及 GitHub 的 actions/setup-python 的类似变更。
当原生解释器不可用时,uv 仍会回退到
x86_64,然后是 32 位x86。
原始正文
astral-sh/uv released 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 | sh
Install 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
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/uv
You 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>