Vault 资讯瀑布官方2026.10.10 03:49 UTC+8

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_64 Python 安装,因为原生 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 venv can still use an installed Python 3.14. If no suitable interpreter is installed and automatic downloads are enabled, commands such as uv venv and uvx python can 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, use uv python pin 3.14 to record the version in .python-version.

  • Honor --require-hashes in included constraints files (#22275)

    Previously, uv ignored --require-hashes in constraints files included with -c from 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-hashes directive 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_64 Python 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-bit x86.

    You can opt out of this behavior by setting UV_PYTHON_ARCH=x86_64 or requesting an explicit architecture, e.g., cpython-3.14-windows-x86_64. If you are using setup-uv, you can set python-arch: x86_64 instead.

  • Reject editable requirements in included constraints files (#22282)

    Previously, uv silently ignored editable (-e) requirements in constraints files included with -c from 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.py and _virtualenv.pth into every new virtual environment to prevent distutils configuration from changing installation paths. Now, like virtualenv 21.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-patch preview feature.

  • Treat requirement-file option values as single paths (#22290)

    Previously, uv split values passed to --constraint, --override, --exclude, and --build-constraint on 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, and UV_BUILD_CONSTRAINT remain supported.

  • Use tar-codec for tar archives by default (#22094)

    Previously, uv used astral-tokio-tar to extract tar archives, build source distributions with uv_build, and read their metadata for uv publish. Now, uv uses tar-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_build can 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-codec preview feature.

  • Reject uv build --clear output directories that contain a build source (#22276)

    Previously, uv build --clear could 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

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

FilePlatformChecksum
uv-aarch64-apple-darwin.tar.gzApple Silicon macOSchecksum
uv-x86_64-apple-darwin.tar.gzIntel macOSchecksum
uv-aarch64-pc-windows-msvc.zipARM64 Windowschecksum
uv-i686-pc-windows-msvc.zipx86 Windowschecksum
uv-x86_64-pc-windows-msvc.zipx64 Windowschecksum
uv-aarch64-unknown-linux-gnu.tar.gzARM64 Linuxchecksum
uv-i686-unknown-linux-gnu.tar.gzx86 Linuxchecksum
uv-powerpc64le-unknown-linux-gnu.tar.gzPPC64LE Linuxchecksum
uv-riscv64gc-unknown-linux-gnu.tar.gzRISCV Linuxchecksum
uv-s390x-unknown-linux-gnu.tar.gzS390x Linuxchecksum
uv-x86_64-unknown-linux-gnu.tar.gzx64 Linuxchecksum
uv-armv7-unknown-linux-gnueabihf.tar.gzARMv7 Linuxchecksum
uv-aarch64-unknown-linux-musl.tar.gzARM64 MUSL Linuxchecksum
uv-i686-unknown-linux-musl.tar.gzx86 MUSL Linuxchecksum
uv-riscv64gc-unknown-linux-musl.tar.gzRISCV MUSL Linuxchecksum
uv-x86_64-unknown-linux-musl.tar.gzx64 MUSL Linuxchecksum
uv-arm-unknown-linux-musleabihf.tar.gzARMv6 MUSL Linux (Hardfloat)checksum
uv-armv7-unknown-linux-musleabihf.tar.gzARMv7 MUSL Linuxchecksum

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>
查看原始发布
astral-sh/uv 发布 0.13.0 — Vault2077