diff --git a/CHANGELOG.md b/CHANGELOG.md index 515f83b98..ce6c94d63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,39 @@ +## 0.9.11 + +Released on 2025-11-20. + +### Python + +- Add CPython 3.15.0a2 + +See the [`python-build-standalone` release notes](https://github.com/astral-sh/python-build-standalone/releases/tag/20251120) for details. + +### Enhancements + +- Add SBOM support to `uv export` ([#16523](https://github.com/astral-sh/uv/pull/16523)) +- Publish to `crates.io` ([#16770](https://github.com/astral-sh/uv/pull/16770)) + +### Preview features + +- Add `uv workspace list --paths` ([#16776](https://github.com/astral-sh/uv/pull/16776)) +- Fix the preview warning on `uv workspace dir` ([#16775](https://github.com/astral-sh/uv/pull/16775)) + +### Bug fixes + +- Fix `uv init` author serialization via `toml_edit` inline tables ([#16778](https://github.com/astral-sh/uv/pull/16778)) +- Fix status messages without TTY ([#16785](https://github.com/astral-sh/uv/pull/16785)) +- Preserve end-of-line comment whitespace when editing `pyproject.toml` ([#16734](https://github.com/astral-sh/uv/pull/16734)) +- Disable `always-authenticate` when running under Dependabot ([#16773](https://github.com/astral-sh/uv/pull/16773)) + +### Documentation + +- Document the new behavior for free-threaded python versions ([#16781](https://github.com/astral-sh/uv/pull/16781)) +- Improve note about build system in publish guide ([#16788](https://github.com/astral-sh/uv/pull/16788)) +- Move do not upload publish note out of the guide into concepts ([#16789](https://github.com/astral-sh/uv/pull/16789)) + ## 0.9.10 Released on 2025-11-17. @@ -283,25 +316,25 @@ There are no breaking changes to [`uv_build`](https://docs.astral.sh/uv/concepts ### Breaking changes - **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](https://github.com/astral-sh/uv/pull/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](https://github.com/astral-sh/uv/pull/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](https://hub.docker.com/_/python). 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](https://github.com/astral-sh/uv/pull/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 `/dist/` rather than `/child/dist/`. ### Python diff --git a/Cargo.lock b/Cargo.lock index 5ee5acbb7..1630d1ee9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5376,7 +5376,7 @@ dependencies = [ [[package]] name = "uv" -version = "0.9.10" +version = "0.9.11" dependencies = [ "anstream", "anyhow", @@ -5588,7 +5588,7 @@ dependencies = [ [[package]] name = "uv-build" -version = "0.9.10" +version = "0.9.11" dependencies = [ "anstream", "anyhow", @@ -6888,7 +6888,7 @@ dependencies = [ [[package]] name = "uv-version" -version = "0.9.10" +version = "0.9.11" [[package]] name = "uv-virtualenv" diff --git a/Cargo.toml b/Cargo.toml index 4b818a2d5..2acac1924 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,7 +71,7 @@ uv-tool = { version = "0.0.1", path = "crates/uv-tool" } uv-torch = { version = "0.0.1", path = "crates/uv-torch" } uv-trampoline-builder = { version = "0.0.1", path = "crates/uv-trampoline-builder" } uv-types = { version = "0.0.1", path = "crates/uv-types" } -uv-version = { version = "0.9.10", path = "crates/uv-version" } +uv-version = { version = "0.9.11", path = "crates/uv-version" } uv-virtualenv = { version = "0.0.1", path = "crates/uv-virtualenv" } uv-warnings = { version = "0.0.1", path = "crates/uv-warnings" } uv-workspace = { version = "0.0.1", path = "crates/uv-workspace" } diff --git a/crates/uv-build/Cargo.toml b/crates/uv-build/Cargo.toml index 5726d2ba8..c3729b6c3 100644 --- a/crates/uv-build/Cargo.toml +++ b/crates/uv-build/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "uv-build" -version = "0.9.10" +version = "0.9.11" description = "A Python build backend" edition = { workspace = true } rust-version = { workspace = true } diff --git a/crates/uv-build/pyproject.toml b/crates/uv-build/pyproject.toml index 01714254d..d870ead7f 100644 --- a/crates/uv-build/pyproject.toml +++ b/crates/uv-build/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uv-build" -version = "0.9.10" +version = "0.9.11" description = "The uv build backend" authors = [{ name = "Astral Software Inc.", email = "hey@astral.sh" }] requires-python = ">=3.8" diff --git a/crates/uv-static/src/env_vars.rs b/crates/uv-static/src/env_vars.rs index db1024431..8f57d9565 100644 --- a/crates/uv-static/src/env_vars.rs +++ b/crates/uv-static/src/env_vars.rs @@ -663,7 +663,7 @@ impl EnvVars { pub const CONDA_ROOT: &'static str = "_CONDA_ROOT"; /// Used to determine if we're running in Dependabot. - #[attr_added_in("next release")] + #[attr_added_in("0.9.11")] pub const DEPENDABOT: &'static str = "DEPENDABOT"; /// If set to `1` before a virtual environment is activated, then the diff --git a/crates/uv-version/Cargo.toml b/crates/uv-version/Cargo.toml index 1cfbd13f5..2112ad07f 100644 --- a/crates/uv-version/Cargo.toml +++ b/crates/uv-version/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "uv-version" -version = "0.9.10" +version = "0.9.11" description = "This is a component crate of uv" edition = { workspace = true } rust-version = { workspace = true } diff --git a/crates/uv/Cargo.toml b/crates/uv/Cargo.toml index 2faed176c..ecfd1eb13 100644 --- a/crates/uv/Cargo.toml +++ b/crates/uv/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "uv" -version = "0.9.10" +version = "0.9.11" description = "A Python package and project manager" edition = { workspace = true } rust-version = { workspace = true } diff --git a/docs/concepts/build-backend.md b/docs/concepts/build-backend.md index 51729d968..11c19cad9 100644 --- a/docs/concepts/build-backend.md +++ b/docs/concepts/build-backend.md @@ -31,7 +31,7 @@ To use uv as a build backend in an existing project, add `uv_build` to the ```toml title="pyproject.toml" [build-system] -requires = ["uv_build>=0.9.10,<0.10.0"] +requires = ["uv_build>=0.9.11,<0.10.0"] build-backend = "uv_build" ``` diff --git a/docs/concepts/projects/init.md b/docs/concepts/projects/init.md index 83f56a364..46bccafa4 100644 --- a/docs/concepts/projects/init.md +++ b/docs/concepts/projects/init.md @@ -113,7 +113,7 @@ dependencies = [] example-pkg = "example_pkg:main" [build-system] -requires = ["uv_build>=0.9.10,<0.10.0"] +requires = ["uv_build>=0.9.11,<0.10.0"] build-backend = "uv_build" ``` @@ -136,7 +136,7 @@ dependencies = [] example-pkg = "example_pkg:main" [build-system] -requires = ["uv_build>=0.9.10,<0.10.0"] +requires = ["uv_build>=0.9.11,<0.10.0"] build-backend = "uv_build" ``` @@ -197,7 +197,7 @@ requires-python = ">=3.11" dependencies = [] [build-system] -requires = ["uv_build>=0.9.10,<0.10.0"] +requires = ["uv_build>=0.9.11,<0.10.0"] build-backend = "uv_build" ``` diff --git a/docs/concepts/projects/workspaces.md b/docs/concepts/projects/workspaces.md index d1615d185..a62ff4d77 100644 --- a/docs/concepts/projects/workspaces.md +++ b/docs/concepts/projects/workspaces.md @@ -75,7 +75,7 @@ bird-feeder = { workspace = true } members = ["packages/*"] [build-system] -requires = ["uv_build>=0.9.10,<0.10.0"] +requires = ["uv_build>=0.9.11,<0.10.0"] build-backend = "uv_build" ``` @@ -106,7 +106,7 @@ tqdm = { git = "https://github.com/tqdm/tqdm" } members = ["packages/*"] [build-system] -requires = ["uv_build>=0.9.10,<0.10.0"] +requires = ["uv_build>=0.9.11,<0.10.0"] build-backend = "uv_build" ``` @@ -188,7 +188,7 @@ dependencies = ["bird-feeder", "tqdm>=4,<5"] bird-feeder = { path = "packages/bird-feeder" } [build-system] -requires = ["uv_build>=0.9.10,<0.10.0"] +requires = ["uv_build>=0.9.11,<0.10.0"] build-backend = "uv_build" ``` diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index 4ab337500..dc1778f82 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -25,7 +25,7 @@ uv provides a standalone installer to download and install uv: Request a specific version by including it in the URL: ```console - $ curl -LsSf https://astral.sh/uv/0.9.10/install.sh | sh + $ curl -LsSf https://astral.sh/uv/0.9.11/install.sh | sh ``` === "Windows" @@ -41,7 +41,7 @@ uv provides a standalone installer to download and install uv: Request a specific version by including it in the URL: ```pwsh-session - PS> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/0.9.10/install.ps1 | iex" + PS> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/0.9.11/install.ps1 | iex" ``` !!! tip diff --git a/docs/guides/integration/aws-lambda.md b/docs/guides/integration/aws-lambda.md index d4fe78251..1bed4eaeb 100644 --- a/docs/guides/integration/aws-lambda.md +++ b/docs/guides/integration/aws-lambda.md @@ -92,7 +92,7 @@ the second stage, we'll copy this directory over to the final image, omitting th other unnecessary files. ```dockerfile title="Dockerfile" -FROM ghcr.io/astral-sh/uv:0.9.10 AS uv +FROM ghcr.io/astral-sh/uv:0.9.11 AS uv # First, bundle the dependencies into the task root. FROM public.ecr.aws/lambda/python:3.13 AS builder @@ -334,7 +334,7 @@ And confirm that opening http://127.0.0.1:8000/ in a web browser displays, "Hell Finally, we'll update the Dockerfile to include the local library in the deployment package: ```dockerfile title="Dockerfile" -FROM ghcr.io/astral-sh/uv:0.9.10 AS uv +FROM ghcr.io/astral-sh/uv:0.9.11 AS uv # First, bundle the dependencies into the task root. FROM public.ecr.aws/lambda/python:3.13 AS builder diff --git a/docs/guides/integration/docker.md b/docs/guides/integration/docker.md index 71668e5c4..c9678b031 100644 --- a/docs/guides/integration/docker.md +++ b/docs/guides/integration/docker.md @@ -31,7 +31,7 @@ $ docker run --rm -it ghcr.io/astral-sh/uv:debian uv --help The following distroless images are available: - `ghcr.io/astral-sh/uv:latest` -- `ghcr.io/astral-sh/uv:{major}.{minor}.{patch}`, e.g., `ghcr.io/astral-sh/uv:0.9.10` +- `ghcr.io/astral-sh/uv:{major}.{minor}.{patch}`, e.g., `ghcr.io/astral-sh/uv:0.9.11` - `ghcr.io/astral-sh/uv:{major}.{minor}`, e.g., `ghcr.io/astral-sh/uv:0.8` (the latest patch version) @@ -95,7 +95,7 @@ And the following derived images are available: As with the distroless image, each derived image is published with uv version tags as `ghcr.io/astral-sh/uv:{major}.{minor}.{patch}-{base}` and -`ghcr.io/astral-sh/uv:{major}.{minor}-{base}`, e.g., `ghcr.io/astral-sh/uv:0.9.10-alpine`. +`ghcr.io/astral-sh/uv:{major}.{minor}-{base}`, e.g., `ghcr.io/astral-sh/uv:0.9.11-alpine`. In addition, starting with `0.8` each derived image also sets `UV_TOOL_BIN_DIR` to `/usr/local/bin` to allow `uv tool install` to work as expected with the default user. @@ -136,7 +136,7 @@ Note this requires `curl` to be available. In either case, it is best practice to pin to a specific uv version, e.g., with: ```dockerfile -COPY --from=ghcr.io/astral-sh/uv:0.9.10 /uv /uvx /bin/ +COPY --from=ghcr.io/astral-sh/uv:0.9.11 /uv /uvx /bin/ ``` !!! tip @@ -154,7 +154,7 @@ COPY --from=ghcr.io/astral-sh/uv:0.9.10 /uv /uvx /bin/ Or, with the installer: ```dockerfile -ADD https://astral.sh/uv/0.9.10/install.sh /uv-installer.sh +ADD https://astral.sh/uv/0.9.11/install.sh /uv-installer.sh ``` ### Installing a project @@ -590,5 +590,5 @@ Verified OK !!! tip These examples use `latest`, but best practice is to verify the attestation for a specific - version tag, e.g., `ghcr.io/astral-sh/uv:0.9.10`, or (even better) the specific image digest, + version tag, e.g., `ghcr.io/astral-sh/uv:0.9.11`, or (even better) the specific image digest, such as `ghcr.io/astral-sh/uv:0.5.27@sha256:5adf09a5a526f380237408032a9308000d14d5947eafa687ad6c6a2476787b4f`. diff --git a/docs/guides/integration/github.md b/docs/guides/integration/github.md index 461de313b..cce459da5 100644 --- a/docs/guides/integration/github.md +++ b/docs/guides/integration/github.md @@ -47,7 +47,7 @@ jobs: uses: astral-sh/setup-uv@v6 with: # Install a specific version of uv. - version: "0.9.10" + version: "0.9.11" ``` ## Setting up Python diff --git a/docs/guides/integration/pre-commit.md b/docs/guides/integration/pre-commit.md index d12b2def4..cfc06fd25 100644 --- a/docs/guides/integration/pre-commit.md +++ b/docs/guides/integration/pre-commit.md @@ -19,7 +19,7 @@ To make sure your `uv.lock` file is up to date even if your `pyproject.toml` fil repos: - repo: https://github.com/astral-sh/uv-pre-commit # uv version. - rev: 0.9.10 + rev: 0.9.11 hooks: - id: uv-lock ``` @@ -30,7 +30,7 @@ To keep a `requirements.txt` file in sync with your `uv.lock` file: repos: - repo: https://github.com/astral-sh/uv-pre-commit # uv version. - rev: 0.9.10 + rev: 0.9.11 hooks: - id: uv-export ``` @@ -41,7 +41,7 @@ To compile requirements files: repos: - repo: https://github.com/astral-sh/uv-pre-commit # uv version. - rev: 0.9.10 + rev: 0.9.11 hooks: # Compile requirements - id: pip-compile @@ -54,7 +54,7 @@ To compile alternative requirements files, modify `args` and `files`: repos: - repo: https://github.com/astral-sh/uv-pre-commit # uv version. - rev: 0.9.10 + rev: 0.9.11 hooks: # Compile requirements - id: pip-compile @@ -68,7 +68,7 @@ To run the hook over multiple files at the same time, add additional entries: repos: - repo: https://github.com/astral-sh/uv-pre-commit # uv version. - rev: 0.9.10 + rev: 0.9.11 hooks: # Compile requirements - id: pip-compile diff --git a/docs/reference/environment.md b/docs/reference/environment.md index bb1a3272d..48303978f 100644 --- a/docs/reference/environment.md +++ b/docs/reference/environment.md @@ -792,7 +792,7 @@ Used to determine the name of the active Conda environment. Used to detect the path of an active Conda environment. ### `DEPENDABOT` -added in `next release` +added in `0.9.11` Used to determine if we're running in Dependabot. diff --git a/pyproject.toml b/pyproject.toml index 959b59596..3e0d9efe1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "uv" -version = "0.9.10" +version = "0.9.11" description = "An extremely fast Python package and project manager, written in Rust." authors = [{ name = "Astral Software Inc.", email = "hey@astral.sh" }] requires-python = ">=3.8" diff --git a/scripts/bump-workspace-crate-versions.py b/scripts/bump-workspace-crate-versions.py index e2be0a862..776d38970 100644 --- a/scripts/bump-workspace-crate-versions.py +++ b/scripts/bump-workspace-crate-versions.py @@ -6,7 +6,7 @@ # root `Cargo.toml` to match. # /// script -# requires-python = ">=3.14" +# requires-python = ">=3.13" # dependencies = [] # ///