Commit Graph

8699 Commits

Author SHA1 Message Date
konsti de2071881e Run benchmarks in offline mode (#18487)
Currently, we have the simulated benchmarks on codspeed turned of, they
flake to much
(https://codspeed.io/astral-sh/uv/benchmarks/crates/uv-bench/benches/uv.rs::uv::resolve_warm_airflow::resolve_warm_airflow?runnerMode=Simulation&period=1m),
while the walltime benchmarks are kinda stable.

<img width="1819" height="996" alt="image"
src="https://github.com/user-attachments/assets/ffd7b5b5-3bf9-427b-92dc-0bb4fbfbb3d0"
/>

<img width="1819" height="955" alt="image"
src="https://github.com/user-attachments/assets/8d1a7519-4214-4564-b7a5-c899bff4f7b4"
/>

Looking into two of these spurious regressions, we see that they occur
in the network code, and that the CI runs for them took >10min, while
regularly runs take <10min.

*
https://codspeed.io/astral-sh/uv/runs/compare/699738846a7b43e19b4d2e67..699778f1f92bec70ac9b3024?uri=crates%2Fuv-bench%2Fbenches%2Fuv.rs%3A%3Auv%3A%3Aresolve_warm_airflow%3A%3Aresolve_warm_airflow&runnerMode=Simulation
*
https://github.com/astral-sh/uv/actions/runs/22199337000/job/64207958534
*
https://codspeed.io/astral-sh/uv/runs/compare/699caa16bfa44e7f9c0b44c5..699cc8e475e640df09b7f01f?uri=crates%2Fuv-bench%2Fbenches%2Fuv.rs%3A%3Auv%3A%3Aresolve_warm_airflow%3A%3Aresolve_warm_airflow&runnerMode=Simulation
*
https://github.com/astral-sh/uv/actions/runs/22325481213/job/64594783994

<img width="1819" height="973" alt="image"
src="https://github.com/user-attachments/assets/e5c7c260-3a93-4e25-bc00-fdf045edc098"
/>

uv caches PyPI responses for 10min, after that, it has to make
revalidation request. If the build takes >7min, and we prime the caches
before the build, the most likely explanation is that these runs have to
make revalidation requests. This is not a problem for walltime
benchmarks, which run multiple times, where revalidation requests in one
run are just an outlier that gets ignored overall.

The fix is that the benchmark itself primes the cache, and then runs in
offline mode. We keep the cache priming in the GitHub action before the
benchmark builds for the sake of the job logs, while we need the priming
inside the bench for running `cargo bench` locally without extra setup.
Running the benches themselves with an offline client make uv ignore the
10min threshold.
2026-03-16 15:14:54 -05:00
Zanie Blue add312b679 Allow --project to refer to a pyproject.toml directly and reduce to a warning on other files (#18513)
Closes https://github.com/astral-sh/uv/issues/18508

This unintentionally regressed in
https://github.com/astral-sh/uv/pull/17714 as it appeared that
`--project <file>` always failed but it actually succeeds if the file is
has an ancestor directory with a `pyproject.toml`.

This also removes the warning for `--project [path/]pyproject.toml` as I
think that's a fine use-case.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-16 15:14:31 -05:00
renovate[bot] ebdd2bf4b9 Update zizmorcore/zizmor-action action to v0.5.2 (#18496) 2026-03-16 14:44:10 -04:00
renovate[bot] 6bde8a4e63 Update taiki-e/install-action action to v2.68.25 (#18495) 2026-03-16 14:43:54 -04:00
renovate[bot] 8f9dff80a5 Update Rust crate jiff to v0.2.23 (#18491)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [jiff](https://redirect.github.com/BurntSushi/jiff) |
workspace.dependencies | patch | `0.2.22` → `0.2.23` |

---

### Release Notes

<details>
<summary>BurntSushi/jiff (jiff)</summary>

###
[`v0.2.23`](https://redirect.github.com/BurntSushi/jiff/blob/HEAD/CHANGELOG.md#0223-2026-03-03)

[Compare
Source](https://redirect.github.com/BurntSushi/jiff/compare/0.2.22...0.2.23)

\===================
This release updates Jiff's bundled copy of the \[IANA Time Zone
Database]
to `2026a`. See the [`2026a` release announcement] for more details.

[`2026a` release announcement]:
https://lists.iana.org/hyperkitty/list/tz-announce@iana.org/thread/ASPLBE3A4BAEXIOQ3KZ6EJSJWBU6L53G/

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), 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:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 18:43:43 +00:00
renovate[bot] 7514a0e0d7 Update Rust crate cargo-util to v0.2.27 (#18490) 2026-03-16 14:42:42 -04:00
renovate[bot] d52c38980f Update dependency astral-sh/uv to v0.10.10 (#18489) 2026-03-16 14:41:43 -04:00
renovate[bot] 59123af42a Update CodSpeedHQ/action action to v4.11.1 (#18488) 2026-03-16 14:41:37 -04:00
renovate[bot] 2204837912 Update Rust crate quote to v1.0.45 (#18492) 2026-03-16 14:39:28 -04:00
renovate[bot] 58f1387b44 Update Rust crate rustix to v1.1.4 (#18493) 2026-03-16 14:36:47 -04:00
renovate[bot] fc9b8fdb39 Update Rust crate which to v8.0.2 (#18494) 2026-03-16 14:36:10 -04:00
renovate[bot] df1c310d7c Update Rust crate tokio to v1.50.0 (#18498) 2026-03-16 14:35:53 -04:00
renovate[bot] 321c374479 Update Rust crate uuid to v1.22.0 (#18499) 2026-03-16 14:35:45 -04:00
Zanie Blue a2ae16190e Upgrade transitive Rust dependencies (#18483)
These are not managed by Renovate.

I wrote a script to do this, which I may commit separately. I used an
LLM to review each changelog for relevant changes as well as each diff
for malicious content.
2026-03-16 13:29:13 -05:00
renovate[bot] 24d81d2bf4 Update astral-sh/setup-uv action to v7.6.0 (#18515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 17:19:45 +00:00
Charlie Marsh 7b6a5159f1 Make resolver dependency edges source-aware across forks (#18435)
## Summary

This is a non-behavior-changing refactor that puts direct source
information on individual `PubGrubDependency` edges. The resulting code
is, in my opinion, a bit simpler with clearer abstractions and more
consistent handling.
2026-03-16 08:19:00 -04:00
Charlie Marsh 99de5322c5 Enforce available distributions for supported environments (#18451)
## Summary

A revival of https://github.com/astral-sh/uv/pull/17118. We now enforce
that builds are available for all supported environments in addition to
required environments.

Closes https://github.com/astral-sh/uv/issues/17067.

Closes https://github.com/astral-sh/uv/issues/17060.
2026-03-16 07:56:21 -04:00
Zsolt Dollenstein 5606d963fc Fetch Ruff release metadata from an Astral mirror (#18358) 2026-03-16 10:50:39 +00:00
Tom Nijhof f8bd28ac4b Use PEP 639 license metadata for uv itself (#16477)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

In [pep 639](https://peps.python.org/pep-0639/) the classifier for
licenses gets deprecated in favor of the license field.
The benefits for UV:
- Clear that you can pick a license, not have to have both
- Clear it is version 2 for the Apache license

https://peps.python.org/pep-0639/

## Test Plan

Builds, works.
If the license shows up in pypi.org with the SPDX operator, it works
2026-03-15 21:34:35 +00:00
Inada Naoki efdf905f82 Add missing -o requirements.txt in uv pip compile example (#12308)
## Summary

`uv pip compile` doesn't produce `requirements.txt` without `-o
requirements.txt` option.
2026-03-15 21:34:14 +00:00
konsti 5f77df89fb Improve distribution id performance (#18486)
Improve the performance for https://github.com/astral-sh/uv/pull/18373.

```
$ hyperfine --warmup 3 --runs 30 \
    '/tmp/uv-0-baseline lock --project /home/konsti/projects/airflow' \
    '/tmp/uv-1-or-insert-with lock --project /home/konsti/projects/airflow' \
    '/tmp/uv-2-single-lookup lock --project /home/konsti/projects/airflow' \

Benchmark 1: /tmp/uv-0-baseline lock --project /home/konsti/projects/airflow
Time (mean ± σ):     147.1 ms ±  10.1 ms    [User: 108.4 ms, System: 23.6 ms]
Range (min … max):   130.5 ms … 165.9 ms    30 runs

Benchmark 2: /tmp/uv-1-or-insert-with lock --project /home/konsti/projects/airflow
Time (mean ± σ):     141.3 ms ±   7.3 ms    [User: 106.3 ms, System: 21.3 ms]
Range (min … max):   131.5 ms … 160.6 ms    30 runs

Benchmark 3: /tmp/uv-2-single-lookup lock --project /home/konsti/projects/airflow
Time (mean ± σ):     139.6 ms ±   7.3 ms    [User: 104.7 ms, System: 21.8 ms]
Range (min … max):   128.3 ms … 160.9 ms    30 runs

Summary
/tmp/uv-2-single-lookup lock --project /home/konsti/projects/airflow ran
 1.01 ± 0.07 times faster than /tmp/uv-1-or-insert-with lock --project /home/konsti/projects/airflow
 1.05 ± 0.09 times faster than /tmp/uv-0-baseline lock --project /home/konsti/projects/airflow
```
2026-03-15 20:29:04 +01:00
Zanie Blue ea786e5b17 Link to the AI policy in the contributing guide (#18448) 2026-03-15 07:43:01 -05:00
Zanie Blue 34f967310f Add an integration test for Intel conda (#18461)
Reproduces #14267 — see
https://github.com/astral-sh/uv/actions/runs/23076175099/job/67037153580

Which is resolved by https://github.com/astral-sh/uv/pull/18452 — see
https://github.com/astral-sh/uv/actions/runs/23090030294/job/67074278041
2026-03-14 17:57:49 +00:00
Zanie Blue fe5ca6ca80 Disable SYSTEM_VERSION_COMPAT when querying interpreters on macOS (#18452)
Closes https://github.com/astral-sh/uv/issues/14267
Replaces https://github.com/astral-sh/uv/pull/18436 — adding my review
because I cannot push there
Replaces https://github.com/astral-sh/uv/pull/18416

---------

Co-authored-by: Ed Schofield <ed@pythoncharmers.com>
2026-03-14 12:45:37 -05:00
Zanie Blue 0507193eb6 Pin termux test packages to improve job stability (#18480)
I'm seeing this flake when the package index is partially changed. I'm
_hoping_ this resolve that issue?

See
https://github.com/astral-sh/uv/actions/runs/23090030294/job/67073331237?pr=18461
for example

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2026-03-14 10:22:36 -05:00
Zanie Blue a5d82ab430 Link to organization security policy (#18449) 2026-03-14 10:13:54 -05:00
Tomasz Kramkowski 08abfdbb81 Use settings::resolve_preview for project validation (#18447)
## Summary

The affected code was manually implementing part of the full logic which
was already available in `settings::resolve_preview` so this PR just
makes the project validation code use this function instead.

## Test Plan

Existing test coverage.
2026-03-14 14:20:45 +00:00
Charlie Marsh 45ea4dd4ec Fix uv sync --active recreating active environments when UV_PYTHON_INSTALL_DIR is relative (#18398)
## Summary

We need to normalize any relative managed-Python install roots before
checking whether the active environment’s interpreter is uv-managed, so
that `sync --active` reuses the environment.

Closes https://github.com/astral-sh/uv/issues/16631.
2026-03-13 18:47:53 -05:00
Zanie Blue 1375fdb70d Upgrade rmp -> 0.8.15 dropping paste (#18466)
Resolves
https://scout.docker.com/vulnerabilities/id/RUSTSEC-2024-0436?s=rustsec&n=paste&t=cargo&vr=%3E%3D0.0.0-0
2026-03-13 18:12:06 -05:00
Zanie Blue d04f25d1b7 Create release branch and commit automatically (#18456) 2026-03-13 18:10:24 -05:00
Zanie Blue 9753c0991b Run the integration tests on changes (#18465) 2026-03-13 17:45:24 -05:00
renovate[bot] 9dba9c7007 Update Rust crate nix to 0.31.2 (#17934) 2026-03-13 21:04:00 +00:00
konsti d64ffcb37e Update uds_windows to v1.2.0 (#18463) 2026-03-13 20:52:04 +00:00
renovate[bot] 8337ffaffd Update Rust crate wmi to 0.18.3 (#17602)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [wmi](https://redirect.github.com/ohadravid/wmi-rs) |
workspace.dependencies | minor | `0.16.0` → `0.18.0` |

---

### Release Notes

<details>
<summary>ohadravid/wmi-rs (wmi)</summary>

###
[`v0.18.0`](https://redirect.github.com/ohadravid/wmi-rs/releases/tag/v0.18.0)

[Compare
Source](https://redirect.github.com/ohadravid/wmi-rs/compare/v0.17.3...v0.18.0)

#### What's Changed

- Remove `COMLibrary` and let `WMIConnection` initialize COM if needed
by [@&#8203;ohadravid](https://redirect.github.com/ohadravid) in
[#&#8203;137](https://redirect.github.com/ohadravid/wmi-rs/pull/137)
You can now call `WMIConnection::new()` and let the crate handle the
initialization internally.
Note: COM will NOT be uninitialized when the connection is dropped
(similar to <=0.17 versions, which didn't uninitialize COM on drop since
[#&#8203;53](https://redirect.github.com/ohadravid/wmi-rs/issues/53)).
If this is not what you want, then you must initialize COM yourself
**before** creating the connection. See the docs for more.
- Update the crate to Rust 2024 edition

**Full Changelog**:
<https://github.com/ohadravid/wmi-rs/compare/v0.17.3...v0.18.0>

###
[`v0.17.3`](https://redirect.github.com/ohadravid/wmi-rs/releases/tag/v0.17.3)

[Compare
Source](https://redirect.github.com/ohadravid/wmi-rs/compare/v0.17.2...v0.17.3)

#### What's Changed

- chore(deps): update criterion requirement from 0.5 to 0.6 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;128](https://redirect.github.com/ohadravid/wmi-rs/pull/128)
- Update CI images by
[@&#8203;ohadravid](https://redirect.github.com/ohadravid) in
[#&#8203;135](https://redirect.github.com/ohadravid/wmi-rs/pull/135)
- chore(deps): update windows requirement from 0.61 to 0.62 by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;134](https://redirect.github.com/ohadravid/wmi-rs/pull/134)

**Full Changelog**:
<https://github.com/ohadravid/wmi-rs/compare/v0.17.2...v0.17.3>

###
[`v0.17.2`](https://redirect.github.com/ohadravid/wmi-rs/releases/tag/v0.17.2)

[Compare
Source](https://redirect.github.com/ohadravid/wmi-rs/compare/v0.17.1...v0.17.2)

#### What's Changed

- feat(remote\_connection): added with\_credentials() by
[@&#8203;hatch15](https://redirect.github.com/hatch15) in
[#&#8203;127](https://redirect.github.com/ohadravid/wmi-rs/pull/127)

#### New Contributors

- [@&#8203;hatch15](https://redirect.github.com/hatch15) made their
first contribution in
[#&#8203;127](https://redirect.github.com/ohadravid/wmi-rs/pull/127)

**Full Changelog**:
<https://github.com/ohadravid/wmi-rs/compare/v0.17.1...v0.17.2>

###
[`v0.17.1`](https://redirect.github.com/ohadravid/wmi-rs/releases/tag/v0.17.1)

[Compare
Source](https://redirect.github.com/ohadravid/wmi-rs/compare/v0.17.0...v0.17.1)

#### What's Changed

- Support arrays of IUnknown pointers by
[@&#8203;samin-cf](https://redirect.github.com/samin-cf) in
[#&#8203;125](https://redirect.github.com/ohadravid/wmi-rs/pull/125) and
[@&#8203;ohadravid](https://redirect.github.com/ohadravid) in
[#&#8203;126](https://redirect.github.com/ohadravid/wmi-rs/pull/126)

**Full Changelog**:
<https://github.com/ohadravid/wmi-rs/compare/v0.17.0...v0.17.1>

###
[`v0.17.0`](https://redirect.github.com/ohadravid/wmi-rs/releases/tag/v0.17.0)

[Compare
Source](https://redirect.github.com/ohadravid/wmi-rs/compare/v0.16.0...v0.17.0)

#### What's Changed

- Added support for Option by
[@&#8203;vpopescu](https://redirect.github.com/vpopescu) in
[#&#8203;122](https://redirect.github.com/ohadravid/wmi-rs/pull/122)

#### Breaking Changes

- Fixed conversions from Rust types to WMI types (so, only when used for
method calling or using put\_property), which were incorrect in a few
cases (notably, u32s and u16s were not converted correctly), and added
some missing conversions, in
[#&#8203;124](https://redirect.github.com/ohadravid/wmi-rs/pull/124)
- `SafeArrayAccessor::new` now accepts a `NonNull<SAFEARRAY>` instead of
a reference, in
[#&#8203;124](https://redirect.github.com/ohadravid/wmi-rs/pull/124)

#### New Contributors

- [@&#8203;vpopescu](https://redirect.github.com/vpopescu) made their
first contribution in
[#&#8203;122](https://redirect.github.com/ohadravid/wmi-rs/pull/122)

**Full Changelog**:
<https://github.com/ohadravid/wmi-rs/compare/v0.16.0...v0.17.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

---------

Co-authored-by: konstin <konstin@mailbox.org>
Co-authored-by: Zanie Blue <contact@zanie.dev>
2026-03-13 20:32:00 +00:00
konsti cb109d4808 Update codspeed crates to v4.4.1 (#18462)
The latest version fixed the repository URL.
2026-03-13 20:23:51 +00:00
Zanie Blue 91b73925e2 Run macOS tests whenever we build release binaries (#18458) 2026-03-13 19:47:01 +00:00
Zanie Blue 8c730aaad6 Bump version to 0.10.10 (#18455) 2026-03-13 14:35:08 -05:00
Zanie Blue f190514288 Improve error handling for platform detection in Python downloads (#18453)
I noticed this weird error chain in
https://github.com/astral-sh/uv/issues/8635#issuecomment-4055185865

```
error: Failed to parse request part 
    Caused by: Could not read ELF interpreter from any of the following paths: /bin/sh, /usr/bin/env, /bin/dash, /bin/ls
```

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-13 19:11:05 +00:00
renovate[bot] 3f03c64a0a Update Rust to v1.94.0 (#18442)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rust](https://redirect.github.com/rust-lang/rust) | minor | `1.93` →
`1.94.0` |

---

### Release Notes

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

###
[`v1.94.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1940-2026-03-05)

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

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

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

## Language

- [Impls and impl items inherit `dead_code` lint level of the
corresponding traits and trait
items](https://redirect.github.com/rust-lang/rust/pull/144113)
- [Stabilize additional 29 RISC-V target features including large
portions of the RVA22U64 / RVA23U64
profiles](https://redirect.github.com/rust-lang/rust/pull/145948)
- [Add warn-by-default `unused_visibilities` lint for visibility on
`const _`
declarations](https://redirect.github.com/rust-lang/rust/pull/147136)
- [Update to Unicode
17](https://redirect.github.com/rust-lang/rust/pull/148321)
- [Avoid incorrect lifetime errors for
closures](https://redirect.github.com/rust-lang/rust/pull/148329)

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

## Platform Support

- [Add `riscv64im-unknown-none-elf` as a tier 3
target](https://redirect.github.com/rust-lang/rust/pull/148790)

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.94.0-Libraries"></a>

## Libraries

- [Relax `T: Ord` bound for some `BinaryHeap<T>`
methods.](https://redirect.github.com/rust-lang/rust/pull/149408)

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

## Stabilized APIs

-
[`<[T]>::array_windows`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.array_windows)
-
[`<[T]>::element_offset`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.element_offset)
-
[`LazyCell::get`](https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#method.get)
-
[`LazyCell::get_mut`](https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#method.get_mut)
-
[`LazyCell::force_mut`](https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#method.force_mut)
-
[`LazyLock::get`](https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#method.get)
-
[`LazyLock::get_mut`](https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#method.get_mut)
-
[`LazyLock::force_mut`](https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#method.force_mut)
- [`impl TryFrom<char> for
usize`](https://doc.rust-lang.org/stable/std/convert/trait.TryFrom.html#impl-TryFrom%3Cchar%3E-for-usize)
-
[`std::iter::Peekable::next_if_map`](https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if_map)
-
[`std::iter::Peekable::next_if_map_mut`](https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if_map_mut)
- [x86 `avx512fp16`
intrinsics](https://redirect.github.com/rust-lang/rust/issues/127213)
  (excluding those that depend directly on the unstable `f16` type)
- [AArch64 NEON fp16
intrinsics](https://redirect.github.com/rust-lang/rust/issues/136306)
  (excluding those that depend directly on the unstable `f16` type)
-
[`f32::consts::EULER_GAMMA`](https://doc.rust-lang.org/stable/std/f32/consts/constant.EULER_GAMMA.html)
-
[`f64::consts::EULER_GAMMA`](https://doc.rust-lang.org/stable/std/f64/consts/constant.EULER_GAMMA.html)
-
[`f32::consts::GOLDEN_RATIO`](https://doc.rust-lang.org/stable/std/f32/consts/constant.GOLDEN_RATIO.html)
-
[`f64::consts::GOLDEN_RATIO`](https://doc.rust-lang.org/stable/std/f64/consts/constant.GOLDEN_RATIO.html)

These previously stable APIs are now stable in const contexts:

-
[`f32::mul_add`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.mul_add)
-
[`f64::mul_add`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.mul_add)

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

## Cargo

- Stabilize the config include key. The top-level include config key
allows loading additional config files, enabling better organization,
sharing, and management of Cargo configurations across projects and
environments.
[docs](https://doc.rust-lang.org/nightly/cargo/reference/config.html#including-extra-configuration-files)
[#&#8203;16284](https://redirect.github.com/rust-lang/cargo/pull/16284)
- Stabilize the pubtime field in registry index. This records when a
crate version was published and enables time-based dependency resolution
in the future. Note that crates.io will gradually backfill existing
packages when a new version is published. Not all crates have pubtime
yet.
[#&#8203;16369](https://redirect.github.com/rust-lang/cargo/pull/16369)
[#&#8203;16372](https://redirect.github.com/rust-lang/cargo/pull/16372)
- Cargo now parses [TOML v1.1](https://toml.io/en/v1.1.0) for manifests
and configuration files. Note that using these features in Cargo.toml
will raise your development MSRV, but the published manifest remains
compatible with older parsers.
[#&#8203;16415](https://redirect.github.com/rust-lang/cargo/pull/16415)
- [Make `CARGO_BIN_EXE_<crate>` available at runtime
](https://redirect.github.com/rust-lang/cargo/pull/16421/)

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

## Compatibility Notes

- [Forbid freely casting lifetime bounds of
`dyn`-types](https://redirect.github.com/rust-lang/rust/pull/136776)
- [Make closure capturing have consistent and correct behaviour around
patterns](https://redirect.github.com/rust-lang/rust/pull/138961)
Some finer details of how precise closure captures get affected by
pattern matching have been changed. In some cases, this can cause a
non-move closure that was previously capturing an entire variable by
move, to now capture only part of that variable by move, and other parts
by borrow. This can cause the borrow checker to complain where it
previously didn't, or cause `Drop` to run at a different point in time.
- [Standard library macros are now imported via prelude, not via
injected
`#[macro_use]`](https://redirect.github.com/rust-lang/rust/pull/139493)
  This will raise an error if macros of the same name are glob imported.
For example if a crate defines their own `matches` macro and then glob
imports that,
it's now ambiguous whether the custom or standard library `matches` is
meant and
  an explicit import of the name is required to resolve the ambiguity.
One exception is `core::panic` and `std::panic`, if their import is
ambiguous
a new warning
([`ambiguous_panic_imports`](https://redirect.github.com/rust-lang/rust/issues/147319))
is raised.
This may raise a new warning
([`ambiguous_panic_imports`](https://redirect.github.com/rust-lang/rust/issues/147319))
on `#![no_std]` code glob importing the std crate.
Both `core::panic!` and `std::panic!` are then in scope and which is
used is ambiguous.
- [Don't strip shebang in expression-context
`include!(…)`s](https://redirect.github.com/rust-lang/rust/pull/146377)
This can cause previously working includes to no longer compile if they
included files which started with a shebang.
- [Ambiguous glob reexports are now also visible
cross-crate](https://redirect.github.com/rust-lang/rust/pull/147984)
This unifies behavior between local and cross-crate errors on these
exports, which may introduce new ambiguity errors.
- [Don't normalize where-clauses before checking
well-formedness](https://redirect.github.com/rust-lang/rust/pull/148477)
- [Introduce a future compatibility warning on codegen attributes on
body-free trait
methods](https://redirect.github.com/rust-lang/rust/pull/148756)
  These attributes currently have no effect in this position.
- [On Windows `std::time::SystemTime::checked_sub_duration` will return
`None` for times before the Windows epoch
(1/1/1601)](https://redirect.github.com/rust-lang/rust/pull/148825)
- [Lifetime identifiers such as `'a` are now NFC
normalized](https://redirect.github.com/rust-lang/rust/pull/149192).
- [Overhaul filename handling for cross-compiler
consistency](https://redirect.github.com/rust-lang/rust/pull/149709)
Any paths emitted by compiler now always respect the relative-ness of
the paths and `--remap-path-prefix` given originally.
One side-effect of this change is that paths emitted for local crates in
Cargo (path dependencies and workspace members) are no longer absolute
but relative when emitted as part of a diagnostic in a downstream crate.

<a id="1.94.0-Internal-Changes"></a>

## Internal Changes

These changes do not affect any public interfaces of Rust, but they
represent
significant improvements to the performance or internals of rustc and
related
tools.

- [Switch to `annotate-snippets` for error
emission](https://redirect.github.com/rust-lang/rust/pull/150032)
  This should preserve mostly the same outputs in rustc error messages.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), 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:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
2026-03-13 13:59:55 -05:00
Zanie Blue 078feb7474 Remove the repository code of conduct in favor of the organization one (#18450)
This roughly appears to be working per
https://github.com/astral-sh/uv/tree/zb/coc-org?tab=coc-ov-file
2026-03-13 13:47:46 -05:00
Charlie Marsh 3db30e048d Filter out unsupported environment wheels (#18445)
## Summary

The issue here is that once conflicts are introduced, the markers in the
lockfile get too complicated for our basic environment checks. We should
_also_ filter by supported environments here.

Closes https://github.com/astral-sh/uv/issues/18428.
2026-03-13 14:46:27 -04:00
Tomasz Kramkowski eec8048a0b Preserve absolute/relative paths in lockfiles (#18176)
## Summary

Attempt to track and preserve relative/absolute paths when read from files.

File URLs are treated as absolute. Synthetic VerbatimUrls shouldn't have
a `given`, and are treated as relative.

This means that paths passed as absolute will be output as absolute,
although they may get normalized. Paths passed as relative will be
output as relative but they may be relative to a different location (so
that they continue to work going forwards). Previously in various places
we'd either make things absolute unconditionally or relative
unconditionally.

Cases which should now be fixed:

- uv.lock - Path dependencies, indexes, and find-links were always
converted to relative paths.
- pylock.toml export (from_resolution path) - Paths were always
relativized. Now preserves the user's original format.
- pylock.toml export (from_lock path) - Relative paths from the lock
file were being converted to absolute paths. Now uses the path exactly
as stored in the lock file.

Also noteworthy is the bugfix for a windows misbehaviour. See the commit
message for some more information.

Note: For now the `uv add` side of this has been split off as a breaking change.

## Test Plan

Added missing tests, updated existing.

I believe all the changed tests are all now correct and were previously
demonstrating buggy behaviour. Well, at least if you are on board with
the idea that we should keep relative paths relative and absolute paths
and / file URLs absolute.

## Related Issues/PRs

* Closes https://github.com/astral-sh/uv/issues/15055
* Closes https://github.com/astral-sh/uv/issues/16602
* Closes https://github.com/astral-sh/uv/issues/16514
* Closes https://github.com/astral-sh/uv/pull/15870
2026-03-13 17:42:03 +00:00
Zanie Blue 9fa25fb25a Improve output for apply-ci-snapshots.sh (#18444) 2026-03-13 10:06:14 -05:00
William Woodruff 7319e4699c Remove overloaded use of 'audit' (#18427)
## Summary

Once `uv audit` lands, this will be pretty confusing to users IMO.

I've changed it to "Checked" to demo-run the changes, but I'd definitely
appreciate opinions on a better term for this (scanned? validated?)

## Test Plan

Bumped so many snapshots.

---------

Signed-off-by: William Woodruff <william@astral.sh>
2026-03-13 23:17:06 +09:00
William Woodruff e979ed7a03 Reject invalid classifiers, warn on license classifiers (#18419)
## Summary

This makes two changes to our handling of trove classifiers in uv's
build backend:

1. We now reject malformed trove classifiers. I've done this by adding a
`Classifier` newtype that parses and rejects anything that _looks_ wrong
(there's no formal grammar for classifiers, so this is a pretty
primitive check, but it should be enough to preempt most common user
errors). We don't use an allowlist at the moment, although in principle
we could do that as well/instead.
2. We now emit a user warning on any license classifiers, since these
have been deprecated since PEP 639 was accepted. I've added this within
`PyProjectToml::license_metadata` since in the future we'll also want to
produce a hard error when license classifiers are present _and_
new-style structured license metadata is also present. That change will
require a breaking release however.

Closes https://github.com/astral-sh/uv/issues/16354.

## Test Plan

I've added some new unit tests for this, plus an integration test for
the user warning.

---------

Signed-off-by: William Woodruff <william@astral.sh>
2026-03-13 22:56:23 +09:00
Henry Schreiner 6541b475b9 chore: update versions in new project init (#18417)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

This updates the versions a bit in the new project init.
Scikit-build-core updated to 0.12+, pybind11 updated to 3+ (which allows
a small simplification), and PyO3 updated to 0.28.2+ (which is what I
was running into, it was on an old version).

I also wanted to update the gitignore, as it's missing a bunch of things
for Maturin (like `target/*` and `*.so`!), but I guess that's somewhere
else.

---------

Co-authored-by: konstin <konstin@mailbox.org>
2026-03-13 13:50:51 +00:00
renovate[bot] 8b299789d2 Update Rust crate reflink-copy to v0.1.29 (#18441)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [reflink-copy](https://redirect.github.com/cargo-bins/reflink-copy) |
workspace.dependencies | patch | `0.1.28` → `0.1.29` |

---

### Release Notes

<details>
<summary>cargo-bins/reflink-copy (reflink-copy)</summary>

###
[`v0.1.29`](https://redirect.github.com/cargo-bins/reflink-copy/blob/HEAD/CHANGELOG.md#0129---2026-03-04)

[Compare
Source](https://redirect.github.com/cargo-bins/reflink-copy/compare/v0.1.28...v0.1.29)

##### Fixed

- exclude sparc/sparc64 from linux reflink path
([#&#8203;164](https://redirect.github.com/cargo-bins/reflink-copy/pull/164))

##### Other

- Bump actions/checkout from 5 to 6
([#&#8203;148](https://redirect.github.com/cargo-bins/reflink-copy/pull/148))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), 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:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 08:33:09 -05:00
Zanie Blue dfc866c2da Use mktemp -d in apply-ci-snapshots.sh (#18439)
https://github.com/astral-sh/uv/pull/18424#discussion_r2928468965
2026-03-13 08:32:40 -05:00
konsti 5ede7030cf Warn if --project directory does not exist (#17714)
For #17093

Errors if `--project` points to a file, as this already errors on Linux.

---------

Co-authored-by: ddoemonn <ozergokalpsezer@gmail.com>
2026-03-13 12:26:33 +00:00
renovate[bot] afd816f3cd Update astral-sh/setup-uv action to v7.5.0 (#18432)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [astral-sh/setup-uv](https://redirect.github.com/astral-sh/setup-uv) |
action | minor | `v7.3.1` → `v7.5.0` |

---

### Release Notes

<details>
<summary>astral-sh/setup-uv (astral-sh/setup-uv)</summary>

###
[`v7.5.0`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v7.5.0):
🌈 Use &#x60;astral-sh/versions&#x60; as version provider

[Compare
Source](https://redirect.github.com/astral-sh/setup-uv/compare/v7.4.0...v7.5.0)

### No more rate-limits

This release addresses a long-standing source of timeouts and rate-limit
failures in setup-uv.

Previously, the action resolved version identifiers like 0.5.x by
iterating over available uv releases via the GitHub API to find the best
match. In contrast, latest and exact versions such as 0.5.0 skipped
version resolution entirely and downloaded uv directly.

The `manifest-file` input was an earlier attempt to improve this. It
allows providing an url to a file that lists available versions,
checksums, and even custom download URLs. The action also shipped with
such a manifest.
However, because that bundled file could become outdated whenever new uv
releases were published, the action still had to fall back to the GitHub
API in many cases.

This release solves the problem by sourcing version data from Astral’s
versions repository via the raw content endpoint:


<https://raw.githubusercontent.com/astral-sh/versions/refs/heads/main/v1/uv.ndjson>

By using the raw endpoint instead of the GitHub API, version resolution
no longer depends on API authentication and is much less likely to run
into rate limits or timeouts.

***

> \[!TIP]
> The next section is only interesting for users of the `manifest-file`
input

The `manifest-file` input lets you override that source with your own
URL, for example to test custom uv builds or alternate download
locations.

The manifest file must be in NDJSON format, where each line is a JSON
object representing a version and its artifacts. For example:

```json
{"version":"0.10.7","artifacts":[{"platform":"x86_64-unknown-linux-gnu","variant":"default","url":"https://example.com/uv-x86_64-unknown-linux-gnu.tar.gz","archive_format":"tar.gz","sha256":"..."}]}
{"version":"0.10.6","artifacts":[{"platform":"x86_64-unknown-linux-gnu","variant":"default","url":"https://example.com/uv-x86_64-unknown-linux-gnu.tar.gz","archive_format":"tar.gz","sha256":"..."}]}
```

> \[!WARNING]\
> The old format still works but is deprecated. A warning will be logged
when you use it.

#### Changes

- docs: replace copilot instructions with AGENTS.md
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;794](https://redirect.github.com/astral-sh/setup-uv/issues/794))

#### 🚀 Enhancements

- Use astral-sh/versions as primary version provider
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;802](https://redirect.github.com/astral-sh/setup-uv/issues/802))

#### 📚 Documentation

- docs: add cross-client dependabot rollup skill
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;793](https://redirect.github.com/astral-sh/setup-uv/issues/793))

###
[`v7.4.0`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v7.4.0):
🌈 Add riscv64 architecture support to platform detection

[Compare
Source](https://redirect.github.com/astral-sh/setup-uv/compare/v7.3.1...v7.4.0)

##### Changes

Thank you [@&#8203;luhenry](https://redirect.github.com/luhenry) for
adding support for riscv64 arch

##### 🚀 Enhancements

- Add riscv64 architecture support to platform detection
[@&#8203;luhenry](https://redirect.github.com/luhenry)
([#&#8203;791](https://redirect.github.com/astral-sh/setup-uv/issues/791))

##### 🧰 Maintenance

- Delete .github/workflows/dependabot-build.yml
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;789](https://redirect.github.com/astral-sh/setup-uv/issues/789))
- Harden Dependabot build workflow
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;788](https://redirect.github.com/astral-sh/setup-uv/issues/788))
- Fix: check PR author instead of event sender for Dependabot detection
[@&#8203;eifinger-bot](https://redirect.github.com/eifinger-bot)
([#&#8203;787](https://redirect.github.com/astral-sh/setup-uv/issues/787))
- chore: update known checksums for 0.10.9
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;783](https://redirect.github.com/astral-sh/setup-uv/issues/783))
- Add workflow to auto-build dist on Dependabot PRs
[@&#8203;eifinger-bot](https://redirect.github.com/eifinger-bot)
([#&#8203;782](https://redirect.github.com/astral-sh/setup-uv/issues/782))
- chore: update known checksums for 0.10.8
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;779](https://redirect.github.com/astral-sh/setup-uv/issues/779))
- chore: update known checksums for 0.10.7
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;775](https://redirect.github.com/astral-sh/setup-uv/issues/775))

##### ⬆️ Dependency updates

- chore(deps): bump versions
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;792](https://redirect.github.com/astral-sh/setup-uv/issues/792))
- Bump actions/setup-node from 6.2.0 to 6.3.0
@&#8203;[dependabot\[bot\]](https://redirect.github.com/apps/dependabot)
([#&#8203;790](https://redirect.github.com/astral-sh/setup-uv/issues/790))
- Bump eifinger/actionlint-action from 1.10.0 to 1.10.1
@&#8203;[dependabot\[bot\]](https://redirect.github.com/apps/dependabot)
([#&#8203;778](https://redirect.github.com/astral-sh/setup-uv/issues/778))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), 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:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 07:51:23 +00:00