You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+67-54Lines changed: 67 additions & 54 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,23 @@
3
3
<!-- prettier-ignore-start -->
4
4
5
5
6
+
## 0.11.1
7
+
8
+
Released on 2026-03-24.
9
+
10
+
### Bug fixes
11
+
12
+
- Add missing hash verification for `riscv64gc-unknown-linux-musl` ([#18686](https://github.com/astral-sh/uv/pull/18686))
13
+
- Fallback to direct download when direct URL streaming is unsupported ([#18688](https://github.com/astral-sh/uv/pull/18688))
14
+
- Revert treating 'Dynamic' values as case-insensitive ([#18692](https://github.com/astral-sh/uv/pull/18692))
15
+
- Remove torchdata from list of packages to source from the PyTorch index ([#18703](https://github.com/astral-sh/uv/pull/18703))
16
+
- Special-case `==` Python version request ranges ([#9697](https://github.com/astral-sh/uv/pull/9697))
17
+
18
+
### Documentation
19
+
20
+
- Cover `--python <dir>` in "Using arbitrary Python environments" ([#6457](https://github.com/astral-sh/uv/pull/6457))
21
+
- Fix version annotations for `PS_MODULE_PATH` and `UV_WORKING_DIR` ([#18691](https://github.com/astral-sh/uv/pull/18691))
22
+
6
23
## 0.11.0
7
24
8
25
Released on 2026-03-23.
@@ -16,33 +33,29 @@ The changes are largely driven by the upgrade of reqwest, which powers uv's HTTP
16
33
The following changes are included:
17
34
18
35
-[`rustls-platform-verifier`](https://github.com/rustls/rustls-platform-verifier) is used instead of [`rustls-native-certs`](https://github.com/rustls/rustls-native-certs) and [`webpki`](https://github.com/rustls/webpki) for certificate verification
19
-
20
-
**This change should have no effect unless you are using the `native-tls` option to enable reading system certificates.**
21
-
22
-
`rustls-platform-verifier` delegates to the system for certificate validation (e.g., `Security.framework` on macOS) instead of eagerly loading certificates from the system and verifying them via `webpki`. The effects of this change will vary based on the operating system. In general, uv's certificate validation should now be more consistent with browsers and other native applications. However, this is the most likely cause of breaking changes in this release. Some previously failing certificate chains may succeed, and some previously accepted certificate chains may fail. In either case, we expect the validation to be more correct and welcome reports of regressions.
23
-
24
-
In particular, because more responsibility for validating the certificate is transferred to your system's security library, some features like [CA constraints](https://support.apple.com/en-us/103255) or [revocation of certificates](https://en.wikipedia.org/wiki/Certificate_revocation) via OCSP and CRLs may now be used.
25
-
26
-
This change should improve performance when using system certificate on macOS, as uv no longer needs to load all certificates from the keychain at startup.
27
-
36
+
37
+
**This change should have no effect unless you are using the `native-tls` option to enable reading system certificates.**
38
+
39
+
`rustls-platform-verifier` delegates to the system for certificate validation (e.g., `Security.framework` on macOS) instead of eagerly loading certificates from the system and verifying them via `webpki`. The effects of this change will vary based on the operating system. In general, uv's certificate validation should now be more consistent with browsers and other native applications. However, this is the most likely cause of breaking changes in this release. Some previously failing certificate chains may succeed, and some previously accepted certificate chains may fail. In either case, we expect the validation to be more correct and welcome reports of regressions.
40
+
41
+
In particular, because more responsibility for validating the certificate is transferred to your system's security library, some features like [CA constraints](https://support.apple.com/en-us/103255) or [revocation of certificates](https://en.wikipedia.org/wiki/Certificate_revocation) via OCSP and CRLs may now be used.
42
+
43
+
This change should improve performance when using system certificate on macOS, as uv no longer needs to load all certificates from the keychain at startup.
28
44
-[`aws-lc`](https://github.com/aws/aws-lc) is used instead of `ring` for a cryptography backend
29
-
30
-
There should not be breaking changes from this change. We expect this to expand support for certificate signature algorithms.
31
-
45
+
46
+
There should not be breaking changes from this change. We expect this to expand support for certificate signature algorithms.
32
47
-`--native-tls` is deprecated in favor of a new `--system-certs` flag
33
-
34
-
The `--native-tls` flag is still usable and has identical behavior to `--system-certs.`
35
-
36
-
This change was made to reduce confusion about the TLS implementation uv uses. uv always uses `rustls` not `native-tls`.
37
-
48
+
49
+
The `--native-tls` flag is still usable and has identical behavior to `--system-certs.`
50
+
51
+
This change was made to reduce confusion about the TLS implementation uv uses. uv always uses `rustls` not `native-tls`.
38
52
- Building uv on x86-64 and i686 Windows requires NASM
39
-
40
-
NASM is required by `aws-lc`. If not found on the system, a prebuilt blob provided by `aws-lc-sys` will be used.
41
-
42
-
If you are not building uv from source, this change has no effect.
43
-
44
-
See the [CONTRIBUTING](https://github.com/astral-sh/uv/blob/b6854d77bfd0cb78157fecaf8b30126c6f16bc11/CONTRIBUTING.md#setup) guide for details.
45
-
53
+
54
+
NASM is required by `aws-lc`. If not found on the system, a prebuilt blob provided by `aws-lc-sys` will be used.
55
+
56
+
If you are not building uv from source, this change has no effect.
57
+
58
+
See the [CONTRIBUTING](https://github.com/astral-sh/uv/blob/b6854d77bfd0cb78157fecaf8b30126c6f16bc11/CONTRIBUTING.md#setup) guide for details.
46
59
- Empty `SSL_CERT_FILE` values are ignored (for consistency with `SSL_CERT_DIR`)
47
60
48
61
See [#18550](https://github.com/astral-sh/uv/pull/18550) for details.
@@ -407,86 +420,86 @@ There are no breaking changes to [`uv_build`](https://docs.astral.sh/uv/concepts
407
420
### Breaking changes
408
421
409
422
-**Require `--clear` to remove existing virtual environments in `uv venv`** ([#17757](https://github.com/astral-sh/uv/pull/17757))
410
-
423
+
411
424
Previously, `uv venv` would prompt for confirmation before removing an existing virtual environment in interactive contexts, and remove it without confirmation in non-interactive contexts. Now, `uv venv` requires the `--clear` flag to remove an existing virtual environment. A warning for this change was added in [uv 0.8](https://github.com/astral-sh/uv/blob/main/changelogs/0.8.x.md#breaking-changes).
412
-
425
+
413
426
You can opt out of this behavior by passing the `--clear` flag or setting `UV_VENV_CLEAR=1`.
414
427
-**Error if multiple indexes include `default = true`** ([#17011](https://github.com/astral-sh/uv/pull/17011))
415
-
428
+
416
429
Previously, uv would silently accept multiple indexes with `default = true` and use the first one. Now, uv will error if multiple indexes are marked as the default.
417
-
430
+
418
431
You cannot opt out of this behavior. Remove `default = true` from all but one index.
419
432
-**Error when an `explicit` index is unnamed** ([#17777](https://github.com/astral-sh/uv/pull/17777))
420
-
433
+
421
434
Explicit indexes can only be used via the `[tool.uv.sources]` table, which requires referencing the index by name. Previously, uv would silently accept unnamed explicit indexes, which could never be referenced. Now, uv will error if an explicit index does not have a name.
422
-
435
+
423
436
You cannot opt out of this behavior. Add a `name` to the explicit index or remove the entry.
424
437
-**Install alternative Python executables using their implementation name** ([#17756](https://github.com/astral-sh/uv/pull/17756), [#17760](https://github.com/astral-sh/uv/pull/17760))
425
-
438
+
426
439
Previously, `uv python install` would install PyPy, GraalPy, and Pyodide executables with names like `python3.10` into the bin directory. Now, these executables will be named using their implementation name, e.g., `pypy3.10`, `graalpy3.10`, and `pyodide3.12`, to avoid conflicting with CPython installations.
427
-
440
+
428
441
You cannot opt out of this behavior.
429
442
-**Respect global Python version pins in `uv tool run` and `uv tool install`** ([#14112](https://github.com/astral-sh/uv/pull/14112))
430
-
443
+
431
444
Previously, `uv tool run` and `uv tool install` did not respect the global Python version pin (set via `uv python pin --global`). Now, these commands will use the global Python version when no explicit version is requested.
432
-
445
+
433
446
For `uv tool install`, if the tool is already installed, the Python version will not change unless `--reinstall` or `--python` is provided. If the tool was previously installed with an explicit `--python` flag, the global pin will not override it.
434
-
447
+
435
448
You can opt out of this behavior by providing an explicit `--python` flag.
The Debian Bookworm and Alpine 3.21 images were replaced by Debian Trixie and Alpine 3.22 as defaults in [uv 0.9](https://github.com/astral-sh/uv/pull/15352). These older images are now removed. Python 3.8 images are also removed, as Python 3.8 is no longer supported in the Trixie or Alpine base images.
439
-
452
+
440
453
The following image tags are no longer published:
441
454
-`uv:bookworm`, `uv:bookworm-slim`
442
455
-`uv:alpine3.21`
443
456
-`uv:python3.8-*`
444
-
457
+
445
458
Use `uv:debian` or `uv:trixie` instead of `uv:bookworm`, `uv:alpine` or `uv:alpine3.22` instead of `uv:alpine3.21`, and a newer Python version instead of `uv:python3.8-*`.
uv no longer provides pre-built binaries for PPC64 (big endian). This platform appears to be largely unused and is only supported on a single manylinux version. PPC64LE (little endian) builds are unaffected.
449
-
462
+
450
463
Building uv from source is still supported for this platform.
451
464
-**Skip generating `activate.csh` for relocatable virtual environments** ([#17759](https://github.com/astral-sh/uv/pull/17759))
452
-
465
+
453
466
Previously, `uv venv --relocatable` would generate an `activate.csh` script that contained hardcoded paths, making it incompatible with relocation. Now, the `activate.csh` script is not generated for relocatable virtual environments.
454
-
467
+
455
468
You cannot opt out of this behavior.
456
469
-**Require username when multiple credentials match a URL** ([#16983](https://github.com/astral-sh/uv/pull/16983))
457
-
470
+
458
471
When using `uv auth login` to store credentials, you can register multiple username and password combinations for the same host. Previously, when uv needed to authenticate and multiple credentials matched the URL (e.g., when retrieving a token with `uv auth token`), uv would pick the first match. Now, uv will error instead.
459
-
472
+
460
473
You cannot opt out of this behavior. Include the username in the request, e.g., `uv auth token --username foo example.com`.
461
474
-**Avoid invalidating the lockfile versions after an `exclude-newer` change** ([#17721](https://github.com/astral-sh/uv/pull/17721))
462
-
475
+
463
476
Previously, changing the `exclude-newer` setting would cause package versions to be upgraded, ignoring the lockfile entirely. Now, uv will only change package versions if they are no longer within the `exclude-newer` range.
464
-
477
+
465
478
You can restore the previous behavior by using `--upgrade` or `--upgrade-package` to opt-in to package version changes.
466
479
-**Upgrade `uv format` to Ruff 0.15.0** ([#17838](https://github.com/astral-sh/uv/pull/17838))
467
-
480
+
468
481
`uv format` now uses [Ruff 0.15.0](https://github.com/astral-sh/ruff/releases/tag/0.15.0), which uses the [2026 style guide](https://astral.sh/blog/ruff-v0.15.0#the-ruff-2026-style-guide). See the blog post for details.
469
-
482
+
470
483
The formatting of code is likely to change. You can opt out of this behavior by requesting an older Ruff version, e.g., `uv format --version 0.14.14`.
471
484
-**Update uv crate test features to use `test-` as a prefix** ([#17860](https://github.com/astral-sh/uv/pull/17860))
472
-
485
+
473
486
This change only affects redistributors of uv. The Cargo features used to gate test dependencies, e.g., `pypi`, have been renamed with a `test-` prefix for clarity, e.g., `test-pypi`.
474
487
475
488
### Stabilizations
476
489
477
490
-**`uv python upgrade` and `uv python install --upgrade`** ([#17766](https://github.com/astral-sh/uv/pull/17766))
478
-
491
+
479
492
When installing Python versions, an [intermediary directory](https://docs.astral.sh/uv/concepts/python-versions/#minor-version-directories) without the patch version attached will be created, and virtual environments will be transparently upgraded to new patch versions.
480
-
493
+
481
494
See the [Python version documentation](https://docs.astral.sh/uv/concepts/python-versions/#upgrading-python-versions) for more details.
482
495
-**`uv add --bounds` and the `add-bounds` configuration option** ([#17660](https://github.com/astral-sh/uv/pull/17660))
483
-
496
+
484
497
This does not come with any behavior changes. You will no longer see an experimental warning when using `uv add --bounds` or `add-bounds` in configuration.
485
498
-**`uv workspace list` and `uv workspace dir`** ([#17768](https://github.com/astral-sh/uv/pull/17768))
486
-
499
+
487
500
This does not come with any behavior changes. You will no longer see an experimental warning when using these commands.
0 commit comments