613 Commits

Author SHA1 Message Date
Aria Desires 3cdf50e092 Bump version to 0.11.23 (#19927) 2026-06-19 10:42:39 -07:00
Aria Desires 94988e5e08 Bump version to 0.11.22 (#19917) 2026-06-18 15:06:46 -07:00
konsti 3c8f1469d7 Replace dashmap with papaya (#19532)
`DashMap` has a lot of deadlock conditions. Our cases aren't about
performance, but about concurrent access, and deadlocks are a bad
experience for users (aka CI getting stuck for 6h until the hard job
limit kills it).
2026-06-18 10:51:56 +02:00
Zsolt Dollenstein 5aa65dd7ad Bump version to 0.11.21 (#19810) 2026-06-11 17:39:38 +00:00
konsti 9252ba6b52 Bump version to 0.11.20 (#19765)
Released on 2026-06-10.

### Enhancements

- Add `--emit-index-url` and `--emit-find-links` to `uv export`
([#18370](https://github.com/astral-sh/uv/pull/18370))
- Add `--find-links` support for `uv pip list`
([#16103](https://github.com/astral-sh/uv/pull/16103))
- Group executable install errors during `uv python install`
([#19691](https://github.com/astral-sh/uv/pull/19691))
- Use ICF in macOS release builds to reduce binary sizes
([#19615](https://github.com/astral-sh/uv/pull/19615))

### Preview features

- Add initial hidden `uv upgrade` command
([#19678](https://github.com/astral-sh/uv/pull/19678))
- Reject Git revisions in `uv upgrade`
([#19742](https://github.com/astral-sh/uv/pull/19742))

### Configuration

- Recognize `UV_NO_INSTALL_PROJECT`, `UV_NO_INSTALL_WORKSPACE`,
`UV_NO_INSTALL_LOCAL`
([#19323](https://github.com/astral-sh/uv/pull/19323))

### Performance

- Speed up discovery of large workspaces
([#18311](https://github.com/astral-sh/uv/pull/18311))

### Bug fixes

- Allow unknown preview flags with a warning again
([#19669](https://github.com/astral-sh/uv/pull/19669))
- Apply dependency exclusions to direct requirements
([#19699](https://github.com/astral-sh/uv/pull/19699))
- Avoid following external symlinks during cache clean
([#19682](https://github.com/astral-sh/uv/pull/19682))
- Avoid following symlinks during cache prune
([#19543](https://github.com/astral-sh/uv/pull/19543))
- Fix Git cache keys for worktrees and packed refs
([#19706](https://github.com/astral-sh/uv/pull/19706))
- Make resolver error handling iterative to avoid stack overflows
([#19695](https://github.com/astral-sh/uv/pull/19695))
- Pass `VIRTUAL_ENV` through `cygpath` inside `fish` on Windows
([#19703](https://github.com/astral-sh/uv/pull/19703))
- Rebuild explicit local directory tool installs
([#19591](https://github.com/astral-sh/uv/pull/19591))
- Validate egg top-level entries as identifiers
([#19679](https://github.com/astral-sh/uv/pull/19679))

### Documentation

- Document `--find-links` caching behavior
([#19585](https://github.com/astral-sh/uv/pull/19585))
- Add a small section for malware checks
([#19680](https://github.com/astral-sh/uv/pull/19680))
2026-06-10 10:12:23 +02:00
Zanie Blue 7b2cff1c31 Bump version to 0.11.19 (#19668) 2026-06-03 17:06:27 -05:00
Zanie Blue e32666915e Bump version to 0.11.18 (#19639) 2026-06-01 19:05:49 +00:00
William Woodruff 5ba95e006a Fix performance regression in unzip of local wheels (#19637)
## Summary

Closes #19636. Fixes #19635.

## Test Plan

NFC.

Signed-off-by: William Woodruff <william@yossarian.net>
2026-06-01 18:11:15 +00:00
Charlie Marsh 81dabd532d Update Rust toolchain to 1.96 and MSRV to 1.94 (#19600)
## Summary

Update the MSRV to 1.94.0, the pinned Rust toolchain to 1.96.0, and the
trampoline nightly toolchain to remain compatible with the new MSRV.
2026-05-29 09:20:40 +01:00
Aria Desires a33a629d66 Bump version to 0.11.17 (#19599) 2026-05-28 12:58:35 -07:00
Zanie Blue b1e02c5aef Add first-party line wrapping (#17535)
Required for https://github.com/astral-sh/uv/pull/17110 to avoid
regressions where miette previously wrapped lines in error messages.
2026-05-27 13:59:07 -05:00
William Woodruff 135a363678 Bump version to 0.11.16 (#19522)
Signed-off-by: William Woodruff <william@yossarian.net>
2026-05-21 17:21:08 -04:00
Zanie Blue 78d8fe93c7 Refactor hint handling (#18090)
This adds abstractions for handing hints, pulling them out of ad-hoc
addendums to error messages and treating them as a first-class concept
so we can render them more consistently.

The key concepts are:

- `Hints`: a wrapper struct for `Vec<Cow<'a, str>>`
- `Hint`: a trait with `hints(&self) -> Hints<'_>`

Error types now `impl Hint` to provide hints. This means errors need to
carry more information to construct the `Hint` lazily instead of ahead
of time. The majority of refactoring around error types is to support
that change.

When displaying errors, we
[downcast](https://github.com/astral-sh/uv/pull/18090/changes#r2935662966)
to each type known to implement the trait and extract hints. We then
display all the hints after the error chain is complete.

The user-facing affect of this is that hints are now always rendered
outside the error chain.

This is a blocker to #17110 and is pulled out of that project. There is
still some weirdness with miette's `help:` prompts that will be removed
entirely in a following change.

---------

Co-authored-by: Codex <noreply@openai.com>
2026-05-20 10:43:52 -07:00
Charlie Marsh b504d17410 Remove unused reqwest blocking feature (#19484) 2026-05-19 15:21:35 +01:00
Zanie Blue de16a7b1a3 Bump version to 0.11.15 (#19472)
Co-authored-by: Codex <noreply@openai.com>
2026-05-18 12:10:13 -07:00
William Woodruff ebdda47b98 Bump astral-tokio-tar from 0.6.1 to 0.6.2 (#19463)
Signed-off-by: William Woodruff <william@yossarian.net>
2026-05-18 17:15:14 +00:00
konsti c9873e0060 Add TOML v1.1 -> v1.0 backwards compatibility for source distributions (#18741)
[TOML 1.1](https://github.com/toml-lang/toml/releases/tag/1.1.0)
introduces support for new syntax that older tools with only TOML 1.0
support don't understand.

Usually, the user is either in control of which tools need to read the
TOML files or the TOML gets converted before publishing (for wheels:
`pyproject.toml` -> `METADATA`). The specific case where this doesn't
work is when a package manager that only support TOML 1.0 tries to build
the source distribution of a dependency. Build tools need to parse
`pyproject.toml` in source distributions to extract the `[build-system]`
table, and if any other part of the file contains TOML 1.1 syntax, they
fail to build. This generally doesn't trigger backtracking, so the user
is left with a failure when any (transitive) dependency in their
dependency tree has started using a single instance of TOML 1.1. Most
package managers, including pip, are implemented in Python and use
stdlib's tomllib, which only support TOML 1.0 up to including Python
3.14.

To work around this, we do a best-effort rewrite of `pyproject.toml` to
TOML 1.0 during source distribution builds.

This approach is inspired by Cargo, which has been successfully
rewriting published `Cargo.toml`s for many versions. While the `toml`
crate doesn't guarantee this downgrade always works
(https://github.com/toml-rs/toml/issues/1088), this crate is also used
by Cargo, and this best effort rewrite handles the biggest failure case:
Newlines and trailing commas in inline tables. Similarly following
Cargo, we also add a `pyproject.toml.orig` to the source distribution.

https://discuss.python.org/t/adopting-toml-1-1/105624 was inconclusive,
but a best-in-class tool should do this transformation.

---------

Co-authored-by: Tomasz (Tom) Kramkowski <tom@astral.sh>
2026-05-18 13:08:37 +02:00
Charlie Marsh 4da52a35b7 Use async tar crate in uv-build-backend (#19417)
## Summary

The motivation and approach here is identical to #19365, but for tar.
This doesn't have a meaningful effect on build size (since we _only_ use
`tar` in `uv-build` and `astral-tokio-tar` in `uv`), but it does mean we
aren't exposed to CVEs in `tar`.
2026-05-15 17:01:08 -04:00
Charlie Marsh 30a9143a13 Add support for Azure request signing (#19421)
## Summary

This follows the pattern we use for GCS and AWS: set
`UV_AZURE_ENDPOINT_URL`, then we use `AZURE_CLIENT_ID`,
`AZURE_TENANT_ID`, and `AZURE_FEDERATED_TOKEN_FILE` to sign requests to
that endpoint (or the CLI authentication, based on `reqsign`'s default
precedence).

Closes https://github.com/astral-sh/uv/issues/19420.
2026-05-15 20:33:36 +01:00
Charlie Marsh 15689b2a2b Vendor netrc parser crate (#19409)
## Summary

This is a small crate which nothing else in our tree depends on. By
vendoring it, we pull in some fixes that never got released (see
@terror's work from https://github.com/astral-sh/uv/issues/16083), and
we get to remove `thiserror` v1 from our dependency tree.

Closes https://github.com/astral-sh/uv/issues/16083.
2026-05-14 23:46:51 +00:00
Charlie Marsh da8fb4c9ef Update toml-edit to v0.25 (#19405) 2026-05-14 20:39:59 +01:00
Charlie Marsh d2e91ac0a7 Remove wmi dependency (#19387)
## Summary

This is entirely written by Codex, but the intent is to use
~~`windows_registry`~~ the configuration manager APIs (from Win32)
instead of `wmi` for Intel XPU detection. (We _only_ use `wmi` for this
one use-case, which seems not-worth-it.)

---------

Signed-off-by: William Woodruff <william@yossarian.net>
Co-authored-by: William Woodruff <william@yossarian.net>
2026-05-13 15:33:11 -04:00
Charlie Marsh 941142a92b Optimize async wheel ZIP writing (#19383) 2026-05-13 15:03:28 -04:00
Charlie Marsh 9b78b7926f Bump cyclonedx-bom to remove duplicate spdx, base64, and bitflags crates (#19386) 2026-05-13 09:37:18 -04:00
Charlie Marsh 7147eda60f Remove zip crate from dev dependencies (#19384)
## Summary

Disappears from the `Cargo.lock`!
2026-05-12 17:44:29 -04:00
Charlie Marsh 60e45d709a Use the crates.io version of astral_async_zip (#19381)
## Summary

A staged change that I forgot to push prior to
https://github.com/astral-sh/uv/pull/19365.
2026-05-12 20:59:40 +00:00
Charlie Marsh f82a2cf718 Remove usages of zip crate (#19365)
## Summary

Historically, we've relied on both the synchronous `zip` crate and our
own `rs-async-zip` fork. The async variant is used for streaming (i.e.,
unzipping a wheel as it's downloaded), while the sync variant is used to
parallel-unzip local files, which turns out to be very fast.

This PR removes all usages of the `zip` crate (apart from in development
dependencies), in favor of using `rs-async-zip` everywhere. This appears
to both reduce crate size _and_ improve performance while also cutting
off a source of CVEs. (The `rs-async-zip` crate is, of course, also
vulnerable to potential CVEs, but having _two_ crates is strictly
greater exposure for us.)

Per Codex, the parallel unzip is now a bit faster:

```
- 55 KB wheel: async -1.0%
- 393 KB wheel: async -7.8%
- 11.4 MB shellcheck wheel: async -3.8%
- 12.5 MB Ruff wheel: async -9.1%
- 21.3 MB NumPy wheel: async -11.0%
- 66.5 MB pandas wheel: async -4.3%
```

Per Codex, the `uv` and `uv-build` binaries are both smaller:

```
  ┌──────────┬──────────────┬──────────────┬─────────────────────────────────┐
  │ Binary   │         main │       branch │                           delta │
  ├──────────┼──────────────┼──────────────┼─────────────────────────────────┤
  │ uv       │ 16,422,784 B │ 16,274,608 B │ -148,176 B (-144.7 KiB, -0.90%) │
  │ uv-build │  2,683,584 B │  2,652,512 B │   -31,072 B (-30.3 KiB, -1.16%) │
  └──────────┴──────────────┴──────────────┴─────────────────────────────────┘
```

Closes https://github.com/astral-sh/uv/issues/19363.
2026-05-12 16:47:58 -04:00
github-actions[bot] 3fdfdc7d4a Bump version to 0.11.14 (#19377)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
2026-05-12 12:29:37 -05:00
renovate[bot] 81e7f8ccbb Update Rust crate junction to v2 (#19353)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: William Woodruff <william@yossarian.net>
2026-05-11 13:52:12 +00:00
Jonathan J. Helmus 4512a39319 Bump version to 0.11.13 (#19345)
## Summary
Preps 0.11.13.

## Test Plan
NFC
2026-05-10 17:37:45 -07:00
William Woodruff 63c5f57d36 Bump version to 0.11.12 (#19331) 2026-05-08 15:06:22 -07:00
github-actions[bot] ed7b060013 Bump version to 0.11.11 (#19303)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
2026-05-06 12:34:21 -07:00
github-actions[bot] add376fd92 Bump version to 0.11.10 (#19293)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
2026-05-05 12:39:52 -07:00
Zanie Blue 7829a03b6c Bump version to 0.11.9 (#19273) 2026-05-05 05:06:19 +00:00
William Woodruff 449c6c944a Bump rand to 0.9.4 (#19264)
## Summary

See #19259 for context.

## Test Plan

NFC.

Signed-off-by: William Woodruff <william@astral.sh>
2026-05-04 18:04:41 +00:00
William Woodruff 0e69f0c2ad Remove our dependency on nanoid (#19201)
## Summary

This introduces a new workspace member, `uv-fastid`. `uv-fastid`
provides IDs using the same alphabet as nanoid, but with a slightly
smaller token size (16 instead of 21) and fewer knobs for configuration.

In practice it should also be faster, since our IDs are now trivially
copyable + don't require any heap allocations to construct internally.
This is probably not a huge deal in our case anyways (ID generation
isn't exactly dominating our runtime), but it doesn't hurt to have a
fast primitive here.

The two main APIs I've added are `insecure()` and `secure()`, whose
names refer to the kind of PRNG they use internally. Right now we only
use `insecure()`, since we don't actually need a CSPRNG for the uses of
nanoid we're replacing (revision and archive IDs).

Some other notes:

- Arguably we could remove the secure/insecure distinction entirely, and
just keep the CSPRNG path -- with `rand` we have a purely userspace
CSPRNG (seeded from the OS's CSPRNG), so we don't really need `fastrand`
for performance here.
- I'm guilty of using `unsafe` in this, although I think the usage is
demonstrably safe (as long as crate-private invariants are maintained) 🙂
- I think there's no breakage risk with this -- FWICT our only usage of
`nanoid` doesn't make any format assumptions, so switching to a slightly
shorter ID form here shouldn't break anything. Our previous IDs also
aren't part of any public interface AFAICT.

Closes https://github.com/astral-sh/uv/pull/19176.

## Test Plan

Added unit tests to the new `uv-fastid` crate. Our existing tests should
cover this transitively as well.

---------

Signed-off-by: William Woodruff <william@astral.sh>
2026-04-29 15:56:43 +00:00
William Woodruff cd8d9ba760 Bump astral-tokio-tar to 0.6.1 (#19195)
## Summary

Bumps our own astral-tokio-tar dep.

## Test Plan

NFC, existing tests will cover.

Signed-off-by: William Woodruff <william@astral.sh>
2026-04-27 15:27:44 -04:00
Zsolt Dollenstein 0e961dd9a2 Bump version to 0.11.8 (#19184) 2026-04-27 11:40:45 +00:00
Zsolt Dollenstein 51448c2dce Use a single codepath for extracting a .tar.zst wheel (#19144) 2026-04-24 13:16:25 -04:00
William Woodruff 15118d703d Drop whoami dependency (#19132)
## Summary

We were only using this crate in one place, in a Windows-specific test
helper where accessing `%USERNAME%` should work just as well.

(This isn't super critical, but it reduces our dependency footprint
slightly.)

## Test Plan

The existing tests should continue to pass with this change.

Signed-off-by: William Woodruff <william@astral.sh>
2026-04-23 16:26:39 -04:00
renovate[bot] eddd2a8bee Update MSRV to v1.93.0 (#19065)
This PR contains the following updates:

| Package | Update | Change | Pending |
|---|---|---|---|
| [msrv](https://redirect.github.com/rust-lang/rust) | minor | `1.92.0`
→ `1.93.0` | `1.95.0` (+3) |

---

### Release Notes

<details>
<summary>rust-lang/rust (msrv)</summary>

###
[`v1.93.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1930-2026-01-22)

[Compare
Source](https://redirect.github.com/rust-lang/rust/compare/1.92.0...1.93.0)

\==========================

<a id="1.93.0-Language"></a>

## Language

- [Stabilize several s390x `vector`-related target features and the
`is_s390x_feature_detected!`
macro](https://redirect.github.com/rust-lang/rust/pull/145656)
- [Stabilize declaration of C-style variadic functions for the `system`
ABI](https://redirect.github.com/rust-lang/rust/pull/145954)
- [Emit error when using some keyword as a `cfg`
predicate](https://redirect.github.com/rust-lang/rust/pull/146978)
- [Stabilize
`asm_cfg`](https://redirect.github.com/rust-lang/rust/pull/147736)
- [During const-evaluation, support copying pointers
byte-by-byte](https://redirect.github.com/rust-lang/rust/pull/148259)
- [LUB coercions now correctly handle function item types, and functions
with differing
safeties](https://redirect.github.com/rust-lang/rust/pull/148602)
- [Allow `const` items that contain mutable references to `static`
(which is *very* unsafe, but not *always*
UB)](https://redirect.github.com/rust-lang/rust/pull/148746)
- [Add warn-by-default `const_item_interior_mutations` lint to warn
against calls which mutate interior mutable `const`
items](https://redirect.github.com/rust-lang/rust/pull/148407)
- [Add warn-by-default `function_casts_as_integer`
lint](https://redirect.github.com/rust-lang/rust/pull/141470)

<a id="1.93.0-Compiler"></a>

## Compiler

- [Stabilize
`-Cjump-tables=bool`](https://redirect.github.com/rust-lang/rust/pull/145974).
The flag was previously called `-Zno-jump-tables`.

<a id="1.93.0-Platform-Support"></a>

## Platform Support

- [Promote `riscv64a23-unknown-linux-gnu` to Tier 2 (without host
tools)](https://redirect.github.com/rust-lang/rust/pull/148435)

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

[platform-support-doc]:
https://doc.rust-lang.org/rustc/platform-support.html

<a id="1.93.0-Libraries"></a>

## Libraries

- [Stop internally using `specialization` on the `Copy` trait as it is
unsound in the presence of lifetime dependent `Copy` implementations.
This may result in some performance regressions as some standard library
APIs may now call `Clone::clone` instead of performing bitwise
copies](https://redirect.github.com/rust-lang/rust/pull/135634)
- [Allow the global allocator to use thread-local storage and
`std::thread::current()`](https://redirect.github.com/rust-lang/rust/pull/144465)
- [Make `BTree::append` not update existing keys when appending an entry
which already
exists](https://redirect.github.com/rust-lang/rust/pull/145628)
- [Don't require `T: RefUnwindSafe` for `vec::IntoIter<T>:
UnwindSafe`](https://redirect.github.com/rust-lang/rust/pull/145665)

<a id="1.93.0-Stabilized-APIs"></a>

## Stabilized APIs

-
[`<[MaybeUninit<T>]>::assume_init_drop`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.assume_init_drop)
-
[`<[MaybeUninit<T>]>::assume_init_ref`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.assume_init_ref)
-
[`<[MaybeUninit<T>]>::assume_init_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.assume_init_mut)
-
[`<[MaybeUninit<T>]>::write_copy_of_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.write_copy_of_slice)
-
[`<[MaybeUninit<T>]>::write_clone_of_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.write_clone_of_slice)
-
[`String::into_raw_parts`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_raw_parts)
-
[`Vec::into_raw_parts`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.into_raw_parts)
-
[`<iN>::unchecked_neg`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unchecked_neg)
-
[`<iN>::unchecked_shl`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unchecked_shl)
-
[`<iN>::unchecked_shr`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unchecked_shr)
-
[`<uN>::unchecked_shl`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unchecked_shl)
-
[`<uN>::unchecked_shr`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unchecked_shr)
-
[`<[T]>::as_array`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_array)
-
[`<[T]>::as_mut_array`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_mut_array)
- [`<*const
[T]>::as_array`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_array)
- [`<*mut
[T]>::as_mut_array`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_mut_array)
-
[`VecDeque::pop_front_if`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.pop_front_if)
-
[`VecDeque::pop_back_if`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.pop_back_if)
-
[`Duration::from_nanos_u128`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_nanos_u128)
-
[`char::MAX_LEN_UTF8`](https://doc.rust-lang.org/stable/std/primitive.char.html#associatedconstant.MAX_LEN_UTF8)
-
[`char::MAX_LEN_UTF16`](https://doc.rust-lang.org/stable/std/primitive.char.html#associatedconstant.MAX_LEN_UTF16)
-
[`std::fmt::from_fn`](https://doc.rust-lang.org/stable/std/fmt/fn.from_fn.html)
-
[`std::fmt::FromFn`](https://doc.rust-lang.org/stable/std/fmt/struct.FromFn.html)

<a id="1.93.0-Cargo"></a>

## Cargo

- [Enable CARGO\_CFG\_DEBUG\_ASSERTIONS in build scripts based on
profile](https://redirect.github.com/rust-lang/cargo/pull/16160/)
- [In `cargo tree`, support long forms for `--format`
variables](https://redirect.github.com/rust-lang/cargo/pull/16204/)
- [Add `--workspace` to `cargo
clean`](https://redirect.github.com/rust-lang/cargo/pull/16263/)

<a id="1.93.0-Rustdoc"></a>

## Rustdoc

- [Remove
`#![doc(document_private_items)]`](https://redirect.github.com/rust-lang/rust/pull/146495)
- [Include attribute and derive macros in search filters for
"macros"](https://redirect.github.com/rust-lang/rust/pull/148176)
- [Include extern crates in search filters for
`import`](https://redirect.github.com/rust-lang/rust/pull/148301)
- [Validate usage of crate-level doc
attributes](https://redirect.github.com/rust-lang/rust/pull/149197).
This means if any of `html_favicon_url`, `html_logo_url`,
`html_playground_url`, `issue_tracker_base_url`, or `html_no_source`
either has a missing value, an unexpected value, or a value of the wrong
type, rustdoc will emit the deny-by-default lint
`rustdoc::invalid_doc_attributes`.

<a id="1.93.0-Compatibility-Notes"></a>

## Compatibility Notes

- [Introduce `pin_v2` into the builtin attributes
namespace](https://redirect.github.com/rust-lang/rust/pull/139751)
- [Update bundled musl to
1.2.5](https://redirect.github.com/rust-lang/rust/pull/142682)
- [On Emscripten, the unwinding ABI used when compiling with
`panic=unwind` was changed from the JS exception handling ABI to the
wasm exception handling
ABI.](https://redirect.github.com/rust-lang/rust/pull/147224) If linking
C/C++ object files with Rust objects, `-fwasm-exceptions` must be passed
to the linker now. On nightly Rust, it is possible to get the old
behavior with `-Zwasm-emscripten-eh=false -Zbuild-std`, but it will be
removed in a future release.
- The `#[test]` attribute, used to define tests, was previously ignored
in various places where it had no meaning (e.g on trait methods or
types). Putting the `#[test]` attribute in these places is no longer
ignored, and will now result in an error; this may also result in errors
when generating rustdoc. [Error when `test` attribute is applied to
structs](https://redirect.github.com/rust-lang/rust/pull/147841)
- Cargo now sets the `CARGO_CFG_DEBUG_ASSERTIONS` environment variable
in more situations. This will cause crates depending on `static-init`
versions 1.0.1 to 1.0.3 to fail compilation with "failed to resolve: use
of unresolved module or unlinked crate `parking_lot`". See [the linked
issue](https://redirect.github.com/rust-lang/rust/issues/150646#issuecomment-3718964342)
for details.
- [User written types in the `offset_of!` macro are now checked to be
well formed.](https://redirect.github.com/rust-lang/rust/issues/150465/)
- `cargo publish` no longer emits `.crate` files as a final artifact for
user access when the `build.build-dir` config is unset
- [Upgrade the `deref_nullptr` lint from warn-by-default to
deny-by-default](https://redirect.github.com/rust-lang/rust/pull/148122)
- [Add future-incompatibility warning for `...` function parameters
without a pattern outside of `extern`
blocks](https://redirect.github.com/rust-lang/rust/pull/143619)
- [Introduce future-compatibility warning for `repr(C)` enums whose
discriminant values do not fit into a `c_int` or
`c_uint`](https://redirect.github.com/rust-lang/rust/pull/147017)
- [Introduce future-compatibility warning against ignoring `repr(C)`
types as part of
`repr(transparent)`](https://redirect.github.com/rust-lang/rust/pull/147185)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/uv).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjMuOCIsInVwZGF0ZWRJblZlciI6IjQzLjEyMy44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJidWlsZDpza2lwLWRvY2tlciIsImJ1aWxkOnNraXAtcmVsZWFzZSIsImludGVybmFsIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 09:05:58 -05:00
renovate[bot] fcbb510efd Update Rust crate hashbrown to 0.17.0 (#19069) 2026-04-20 14:30:55 -04:00
renovate[bot] 754c5d944c Update Rust crate similar to v3 (#18991)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [similar](https://redirect.github.com/mitsuhiko/similar) |
workspace.dependencies | major | `2.6.0` → `3.0.0` |

---

### Release Notes

<details>
<summary>mitsuhiko/similar (similar)</summary>

###
[`v3.1.0`](https://redirect.github.com/mitsuhiko/similar/blob/HEAD/CHANGELOG.md#310)

[Compare
Source](https://redirect.github.com/mitsuhiko/similar/compare/3.0.0...3.1.0)

- Added `capture_diff_slices_by_key` and
`capture_diff_slices_by_key_deadline`
  as convenience helpers for diffing slices by derived keys.
- Fixed `Compact` emitting inconsistent `DiffOp` cursor positions after
  compaction, which could leave `Delete`/`Insert` operations with stale
  `new_index`/`old_index` values.
- Added explicit lifetime capture (`+ use<...>`) on iterator-returning
APIs to
improve compatibility with Rust 2024 lifetime capture behavior.
[#&#8203;93](https://redirect.github.com/mitsuhiko/similar/issues/93)

###
[`v3.0.0`](https://redirect.github.com/mitsuhiko/similar/blob/HEAD/CHANGELOG.md#300)

[Compare
Source](https://redirect.github.com/mitsuhiko/similar/compare/2.7.0...3.0.0)

- Added a Git-style Histogram diff implementation exposed as
  `Algorithm::Histogram`, including deadline-aware Myers fallback and
  comprehensive regression/behavior tests.
- Raised MSRV to Rust 1.85 and moved the crate to Rust 2024 edition.
- Added a Hunt-style diff implementation exposed as `Algorithm::Hunt`.
- Added configurable inline refinement via `InlineChangeOptions` and
  `InlineChangeMode`, including semantic cleanup and new
`TextDiff::iter_inline_changes_with_options*` methods.
[#&#8203;92](https://redirect.github.com/mitsuhiko/similar/issues/92)
- Added a global disjoint-input fast path in `algorithms::diff_deadline`
  to avoid pathological runtimes on large, fully distinct inputs.
- Improved `Algorithm::Myers` performance on heavily unbalanced diffs to
  avoid pathological slowdowns.
- Added `diff_deadline_raw` entrypoints in the algorithm modules to
bypass
shared heuristics and keep minimal intrinsic trait bounds where needed.
- Added test files in `examples/diffs` that can be used with the some of
the
  examples as input pairs.
- Added `CachedLookup`, a helper for adapting virtual or computed
sequences by
materializing items on first access and then serving borrowed values
through
normal indexing. The `owned-lookup` example demonstrates this approach
for
issue
[#&#8203;33](https://redirect.github.com/mitsuhiko/similar/issues/33).
- Fixed ranged indexing in the classic LCS table algorithm.
- Improved diff compaction to merge adjacent delete hunks across equal
runs.
- Excluded development scripts from published crate contents.
[#&#8203;87](https://redirect.github.com/mitsuhiko/similar/issues/87)
- `TextDiff::from_*` and `TextDiffConfig::diff_*` now accept owned
inputs
(`String`, `Vec<u8>`, `Cow`) in addition to borrowed inputs. This allows
returning text diffs from functions without external owner lifetimes.
[#&#8203;65](https://redirect.github.com/mitsuhiko/similar/issues/65)
- `TextDiff` no longer exposes `old_slices` / `new_slices`.  Use
  `old_len`, `new_len`, `old_slice`, `new_slice`, `iter_old_slices`,
  `iter_new_slices`, `old_lookup`, and `new_lookup` instead.
- `TextDiff::iter_changes` now panics on invalid out-of-bounds `DiffOp`
  ranges instead of silently truncating iteration.
- `utils::diff_lines_inline` now takes `&TextDiff` and options rather
than
  `(Algorithm, old, new, options)`.
- `utils::diff_lines` now avoids a second line-tokenization pass.
- Renamed `get_diff_ratio` to `diff_ratio`.
- Added first-class `no_std + alloc` support with an explicit default
`std`
  feature.
- Added optional `hashbrown` backend for `no_std` map storage
(`default-features = false, features = ["hashbrown"]`), while the
default
  `no_std` backend uses `alloc::collections::BTreeMap`.
- Made core constructors const-ready (`Capture::new`, `Replace::new`,
`NoFinishHook::new`, `InlineChangeOptions::new`, `TextDiff::configure`).

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/uv).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjEyMy44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJidWlsZDpza2lwLWRvY2tlciIsImJ1aWxkOnNraXAtcmVsZWFzZSIsImludGVybmFsIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-19 00:21:24 +02:00
Zanie Blue 9d177269e1 Bump version to 0.11.7 (#19017) 2026-04-15 21:03:37 +00:00
konsti 65950801cc Bump version to 0.11.6 (#18948) 2026-04-09 11:21:12 +00:00
Zanie Blue 95eaa68c8d Bump version to 0.11.5 (#18930) 2026-04-08 15:01:32 -05:00
Zanie Blue f6d67d57c1 Improve certificate loading error messages (#18924)
See https://github.com/astral-sh/uv/issues/18890

Adds special-case validation for `SSL_CERT_FILE` and `SSL_CERT_DIR`
where we actually check if webpki will accept the given certificates
and, if not, emit a better error message about why. This means we
perform eager validation of certificates, parsing them more than once
since reqwest will parse them again on client build. Unfortunately,
there's not a straight-forward way to provide our pre-parsed
certificates to reqwest without doing a lot more work. Nor is there a
clear way to retrieve the parsed certificates on error.

We use https://github.com/rusticata/x509-parser for parsing which seems
reputable.

We may want to _drop_ all invalid certificates instead, but that can be
a future decision and this machinery can be reused for warnings.

Ideally webpki would just have better error messages, but that's a
separate project.
2026-04-08 14:16:25 -05:00
Zanie Blue 3523c23490 Bump version to 0.11.4 (#18909) 2026-04-07 21:25:19 -04:00
Zanie Blue 464a33ca82 Bump version to 0.11.3 (#18805) 2026-04-01 15:52:54 -05:00
konsti 5b369e6370 Handle broken range request implementations (#18780)
This updates async_http_range_reader to v0.11.0 to add the missing range
request bounds validation:
https://github.com/astral-sh/async_http_range_reader/pull/8.

An open question is how we want to behave when the server has an
incorrect range request implementation (while advertising range request
support). In the current implementation, it warns with the index URL, so
that the user is aware that the massive slowdown is caused by a server
advertising broken features.

Also removes a dependency where the corresponding repo was deleted.

Fixes https://github.com/astral-sh/uv/issues/18316
2026-04-01 10:03:31 +00:00