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 [@​ohadravid](https://redirect.github.com/ohadravid ) in
[#​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
[#​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
[@​dependabot](https://redirect.github.com/dependabot )\[bot] in
[#​128](https://redirect.github.com/ohadravid/wmi-rs/pull/128 )
- Update CI images by
[@​ohadravid](https://redirect.github.com/ohadravid ) in
[#​135](https://redirect.github.com/ohadravid/wmi-rs/pull/135 )
- chore(deps): update windows requirement from 0.61 to 0.62 by
[@​dependabot](https://redirect.github.com/dependabot )\[bot] in
[#​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
[@​hatch15](https://redirect.github.com/hatch15 ) in
[#​127](https://redirect.github.com/ohadravid/wmi-rs/pull/127 )
#### New Contributors
- [@​hatch15](https://redirect.github.com/hatch15 ) made their
first contribution in
[#​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
[@​samin-cf](https://redirect.github.com/samin-cf ) in
[#​125](https://redirect.github.com/ohadravid/wmi-rs/pull/125 ) and
[@​ohadravid](https://redirect.github.com/ohadravid ) in
[#​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
[@​vpopescu](https://redirect.github.com/vpopescu ) in
[#​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
[#​124](https://redirect.github.com/ohadravid/wmi-rs/pull/124 )
- `SafeArrayAccessor::new` now accepts a `NonNull<SAFEARRAY>` instead of
a reference, in
[#​124](https://redirect.github.com/ohadravid/wmi-rs/pull/124 )
#### New Contributors
- [@​vpopescu](https://redirect.github.com/vpopescu ) made their
first contribution in
[#​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 )
[#​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.
[#​16369](https://redirect.github.com/rust-lang/cargo/pull/16369 )
[#​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.
[#​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
([#​164](https://redirect.github.com/cargo-bins/reflink-copy/pull/164 ))
##### Other
- Bump actions/checkout from 5 to 6
([#​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 `astral-sh/versions` 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
[@​eifinger](https://redirect.github.com/eifinger )
([#​794](https://redirect.github.com/astral-sh/setup-uv/issues/794 ))
#### 🚀 Enhancements
- Use astral-sh/versions as primary version provider
[@​eifinger](https://redirect.github.com/eifinger )
([#​802](https://redirect.github.com/astral-sh/setup-uv/issues/802 ))
#### 📚 Documentation
- docs: add cross-client dependabot rollup skill
[@​eifinger](https://redirect.github.com/eifinger )
([#​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 [@​luhenry](https://redirect.github.com/luhenry ) for
adding support for riscv64 arch
##### 🚀 Enhancements
- Add riscv64 architecture support to platform detection
[@​luhenry](https://redirect.github.com/luhenry )
([#​791](https://redirect.github.com/astral-sh/setup-uv/issues/791 ))
##### 🧰 Maintenance
- Delete .github/workflows/dependabot-build.yml
[@​eifinger](https://redirect.github.com/eifinger )
([#​789](https://redirect.github.com/astral-sh/setup-uv/issues/789 ))
- Harden Dependabot build workflow
[@​eifinger](https://redirect.github.com/eifinger )
([#​788](https://redirect.github.com/astral-sh/setup-uv/issues/788 ))
- Fix: check PR author instead of event sender for Dependabot detection
[@​eifinger-bot](https://redirect.github.com/eifinger-bot )
([#​787](https://redirect.github.com/astral-sh/setup-uv/issues/787 ))
- chore: update known checksums for 0.10.9
@​[github-actions\[bot\]](https://redirect.github.com/apps/github-actions )
([#​783](https://redirect.github.com/astral-sh/setup-uv/issues/783 ))
- Add workflow to auto-build dist on Dependabot PRs
[@​eifinger-bot](https://redirect.github.com/eifinger-bot )
([#​782](https://redirect.github.com/astral-sh/setup-uv/issues/782 ))
- chore: update known checksums for 0.10.8
@​[github-actions\[bot\]](https://redirect.github.com/apps/github-actions )
([#​779](https://redirect.github.com/astral-sh/setup-uv/issues/779 ))
- chore: update known checksums for 0.10.7
@​[github-actions\[bot\]](https://redirect.github.com/apps/github-actions )
([#​775](https://redirect.github.com/astral-sh/setup-uv/issues/775 ))
##### ⬆️ Dependency updates
- chore(deps): bump versions
[@​eifinger](https://redirect.github.com/eifinger )
([#​792](https://redirect.github.com/astral-sh/setup-uv/issues/792 ))
- Bump actions/setup-node from 6.2.0 to 6.3.0
@​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot )
([#​790](https://redirect.github.com/astral-sh/setup-uv/issues/790 ))
- Bump eifinger/actionlint-action from 1.10.0 to 1.10.1
@​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot )
([#​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