Commit Graph
64 Commits
Author SHA1 Message Date
Ed Page 3e98dbeebf chore(ci): Use env instead of templates 2026-03-27 14:34:38 -05:00
Ed Page 4af143d014 chore(ci): Don't persist git credentials by default 2026-03-27 14:34:37 -05:00
renovate[bot] f1f2452ceb chore(deps): Pin dependencies 2026-03-27 19:27:03 +00:00
renovate[bot] 80afe4dbff chore(deps): Update Prek to v0.3.8 (#52)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [prek](https://redirect.github.com/j178/prek) | patch | `0.3.6` →
`0.3.8` |

---

### Release Notes

<details>
<summary>j178/prek (prek)</summary>

###
[`v0.3.8`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#038)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.3.6...v0.3.8)

Released on 2026-03-23.

##### Enhancements

- Add experimental `language: deno` support
([#&#8203;1516](https://redirect.github.com/j178/prek/pull/1516))
- Add `pretty-format-json` as builtin hook
([#&#8203;915](https://redirect.github.com/j178/prek/pull/915))
- Add `check-vcs-permalinks` as builtin hook
([#&#8203;1842](https://redirect.github.com/j178/prek/pull/1842))
- Add `check-illegal-windows-names` as builtin hook
([#&#8203;1841](https://redirect.github.com/j178/prek/pull/1841))
- Add `check-shebang-scripts-are-executable` builtin hook
([#&#8203;1847](https://redirect.github.com/j178/prek/pull/1847))
- Add `destroyed-symlinks` builtin hook
([#&#8203;1851](https://redirect.github.com/j178/prek/pull/1851))
- Add `file-contents-sorter` as builtin hook
([#&#8203;1846](https://redirect.github.com/j178/prek/pull/1846))
- Add `--all` flag to `prek uninstall`
([#&#8203;1817](https://redirect.github.com/j178/prek/pull/1817))
- Improve file pattern parse errors
([#&#8203;1829](https://redirect.github.com/j178/prek/pull/1829))
- Validate `uv` binary after download
([#&#8203;1825](https://redirect.github.com/j178/prek/pull/1825))

##### Bug fixes

- Fix workspace-relative added file paths
([#&#8203;1852](https://redirect.github.com/j178/prek/pull/1852))
- Relax alias-anchor ratio check for check-yaml
([#&#8203;1839](https://redirect.github.com/j178/prek/pull/1839))

##### Contributors

- [@&#8203;j178](https://redirect.github.com/j178)
- [@&#8203;shaanmajid](https://redirect.github.com/shaanmajid)
- [@&#8203;mvanhorn](https://redirect.github.com/mvanhorn)
- [@&#8203;feliblo](https://redirect.github.com/feliblo)
- [@&#8203;Tiryoh](https://redirect.github.com/Tiryoh)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 10:01:47 +00:00
renovate[bot] dee0db54c1 chore(deps): Update Prek to v0.3.6 (#51)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [prek](https://redirect.github.com/j178/prek) | patch | `0.3.5` →
`0.3.6` |

---

### Release Notes

<details>
<summary>j178/prek (prek)</summary>

###
[`v0.3.6`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#036)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.3.5...v0.3.6)

Released on 2026-03-16.

##### Enhancements

- Allow selectors for hook ids containing colons
([#&#8203;1782](https://redirect.github.com/j178/prek/pull/1782))
- Rename `prek install-hooks` to `prek prepare-hooks` and `prek install
--install-hooks` to `prek install --prepare-hooks`
([#&#8203;1766](https://redirect.github.com/j178/prek/pull/1766))
- Retry auth-failed repo clones with terminal prompts enabled
([#&#8203;1761](https://redirect.github.com/j178/prek/pull/1761))

##### Performance

- Optimize `detect_private_key` by chunked reading and using
aho-corasick
([#&#8203;1791](https://redirect.github.com/j178/prek/pull/1791))
- Optimize `fix_byte_order_marker` by shifting file contents in place
([#&#8203;1790](https://redirect.github.com/j178/prek/pull/1790))

##### Bug fixes

- Align stage defaulting behavior with pre-commit
([#&#8203;1788](https://redirect.github.com/j178/prek/pull/1788))
- Make sure child output is drained in the PTY subprocess
([#&#8203;1768](https://redirect.github.com/j178/prek/pull/1768))
- fix(golang): use `GOTOOLCHAIN=local` when probing system go
([#&#8203;1797](https://redirect.github.com/j178/prek/pull/1797))

##### Documentation

- Disambiguate “hook” terminology by renaming "Git hooks" to "Git shims"
([#&#8203;1776](https://redirect.github.com/j178/prek/pull/1776))
- Document compatibility with pre-commit
([#&#8203;1767](https://redirect.github.com/j178/prek/pull/1767))
- Update configuration.md with TOML 1.1 notes
([#&#8203;1764](https://redirect.github.com/j178/prek/pull/1764))

##### Other changes

- Sync latest identify tags
([#&#8203;1798](https://redirect.github.com/j178/prek/pull/1798))

##### Contributors

- [@&#8203;github-actions](https://redirect.github.com/github-actions)
- [@&#8203;j178](https://redirect.github.com/j178)
- [@&#8203;pcastellazzi](https://redirect.github.com/pcastellazzi)
- [@&#8203;deadnews](https://redirect.github.com/deadnews)
-
[@&#8203;copilot-swe-agent](https://redirect.github.com/copilot-swe-agent)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 10:39:52 +00:00
renovate[bot] 5762560415 chore(deps): Update Prek to v0.3.5 (#50)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [prek](https://redirect.github.com/j178/prek) | patch | `0.3.4` →
`0.3.5` |

---

### Release Notes

<details>
<summary>j178/prek (prek)</summary>

###
[`v0.3.5`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#035)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.3.4...v0.3.5)

Released on 2026-03-09.

##### Enhancements

- Add automatic Ruby download support using rv binaries
([#&#8203;1668](https://redirect.github.com/j178/prek/pull/1668))
- Adjust open file limit on process startup
([#&#8203;1705](https://redirect.github.com/j178/prek/pull/1705))
- Allow parallel gem retry
([#&#8203;1732](https://redirect.github.com/j178/prek/pull/1732))
- Enable system-proxy feature on reqwest
([#&#8203;1738](https://redirect.github.com/j178/prek/pull/1738))
- Expose `--git-dir` to force hook installation target
([#&#8203;1723](https://redirect.github.com/j178/prek/pull/1723))
- Pass `--quiet`, `--verbose`, and `--no-progress` through `prek
install` into generated hook scripts
([#&#8203;1753](https://redirect.github.com/j178/prek/pull/1753))
- Respect `core.sharedRepository` for hook permissions
([#&#8203;1755](https://redirect.github.com/j178/prek/pull/1755))
- Support legacy mode hook script
([#&#8203;1706](https://redirect.github.com/j178/prek/pull/1706))
- rust: support `cli:` git dependency 4th segment package disambiguation
([#&#8203;1747](https://redirect.github.com/j178/prek/pull/1747))

##### Bug fixes

- Fix Python `__main__.py` entry
([#&#8203;1741](https://redirect.github.com/j178/prek/pull/1741))
- python: strip `UV_SYSTEM_PYTHON` from `uv venv` and `pip install`
commands
([#&#8203;1756](https://redirect.github.com/j178/prek/pull/1756))

##### Other changes

- Sync latest identify tags
([#&#8203;1733](https://redirect.github.com/j178/prek/pull/1733))

##### Contributors

- [@&#8203;Dev-iL](https://redirect.github.com/Dev-iL)
- [@&#8203;tennox](https://redirect.github.com/tennox)
- [@&#8203;shaanmajid](https://redirect.github.com/shaanmajid)
- [@&#8203;is-alnilam](https://redirect.github.com/is-alnilam)
- [@&#8203;github-actions](https://redirect.github.com/github-actions)
- [@&#8203;j178](https://redirect.github.com/j178)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 12:40:56 +00:00
renovate[bot] 476c955252 chore(deps): Update Rust Stable to v1.94 (#49)
This PR contains the following updates:

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

---

### Release Notes

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

###
[`v1.94`](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.0...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 - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41Ni4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 20:10:25 +00:00
renovate[bot] 096034c719 chore(deps): Update Prek to v0.3.4 (#46)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [prek](https://redirect.github.com/j178/prek) | patch | `0.3.3` →
`0.3.4` |

---

### Release Notes

<details>
<summary>j178/prek (prek)</summary>

###
[`v0.3.4`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#034)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.3.3...v0.3.4)

Released on 2026-02-28.

##### Enhancements

- Allow `pass_filenames` to accept a positive integer
([#&#8203;1698](https://redirect.github.com/j178/prek/pull/1698))
- Install and compile gems in parallel
([#&#8203;1674](https://redirect.github.com/j178/prek/pull/1674))
- Sync identify file-type mappings with pre-commit identify
([#&#8203;1660](https://redirect.github.com/j178/prek/pull/1660))
- Use `--locked` for Rust `cargo install` commands
([#&#8203;1661](https://redirect.github.com/j178/prek/pull/1661))
- Add `PREK_MAX_CONCURRENCY` environment variable for configuring
maximum concurrency
([#&#8203;1697](https://redirect.github.com/j178/prek/pull/1697))
- Add `PREK_LOG_TRUNCATE_LIMIT` environment variable for configuring log
truncation
([#&#8203;1679](https://redirect.github.com/j178/prek/pull/1679))
- Add support for `python -m prek`
([#&#8203;1686](https://redirect.github.com/j178/prek/pull/1686))

##### Bug fixes

- Skip invalid Rust toolchains instead of failing
([#&#8203;1699](https://redirect.github.com/j178/prek/pull/1699))

##### Performance

- Bitset-based TagSet refactor: precompute tag masks and speed up hook
type filtering
([#&#8203;1665](https://redirect.github.com/j178/prek/pull/1665))

##### Documentation

- Document `winget install j178.Prek`
([#&#8203;1670](https://redirect.github.com/j178/prek/pull/1670))

##### Contributors

- [@&#8203;uplsh580](https://redirect.github.com/uplsh580)
- [@&#8203;Svecco](https://redirect.github.com/Svecco)
- [@&#8203;dbast](https://redirect.github.com/dbast)
- [@&#8203;drichardson](https://redirect.github.com/drichardson)
- [@&#8203;JP-Ellis](https://redirect.github.com/JP-Ellis)
- [@&#8203;j178](https://redirect.github.com/j178)
- [@&#8203;is-alnilam](https://redirect.github.com/is-alnilam)
-
[@&#8203;copilot-swe-agent](https://redirect.github.com/copilot-swe-agent)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My40My4yIiwidXBkYXRlZEluVmVyIjoiNDMuNDMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-28 06:02:36 +00:00
renovate[bot] 8485f9d184 chore(deps): Update Prek to v0.3.3 (#45)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [prek](https://redirect.github.com/j178/prek) | minor | `0.2.27` →
`0.3.3` |

---

### Release Notes

<details>
<summary>j178/prek (prek)</summary>

###
[`v0.3.3`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#033)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.3.2...v0.3.3)

Released on 2026-02-15.

##### Enhancements

- Read Python version specifier from hook repo `pyproject.toml`
([#&#8203;1596](https://redirect.github.com/j178/prek/pull/1596))
- Add `#:schema` directives to generated prek.toml
([#&#8203;1597](https://redirect.github.com/j178/prek/pull/1597))
- Add `prek util list-builtins` command
([#&#8203;1600](https://redirect.github.com/j178/prek/pull/1600))
- Expand install source detection to `mise`, `uv tool`, `pipx`, and
`asdf` ([#&#8203;1605](https://redirect.github.com/j178/prek/pull/1605),
[#&#8203;1607](https://redirect.github.com/j178/prek/pull/1607))
- Add progress bar to `cache clean` and show removal summary
([#&#8203;1616](https://redirect.github.com/j178/prek/pull/1616))
- Make `yaml-to-toml` CONFIG argument optional
([#&#8203;1593](https://redirect.github.com/j178/prek/pull/1593))
- `prek uninstall` removes legacy scripts too
([#&#8203;1622](https://redirect.github.com/j178/prek/pull/1622))

##### Bug fixes

- Fix underflow when formatting summary output
([#&#8203;1626](https://redirect.github.com/j178/prek/pull/1626))
- Match `files/exclude` filter against relative path of nested project
([#&#8203;1624](https://redirect.github.com/j178/prek/pull/1624))
- Select `musllinux` wheel tag for uv on musl-based distros
([#&#8203;1628](https://redirect.github.com/j178/prek/pull/1628))

##### Documentation

- Clarify `prek list` description
([#&#8203;1604](https://redirect.github.com/j178/prek/pull/1604))

##### Contributors

- [@&#8203;ichoosetoaccept](https://redirect.github.com/ichoosetoaccept)
- [@&#8203;shaanmajid](https://redirect.github.com/shaanmajid)
- [@&#8203;soraxas](https://redirect.github.com/soraxas)
- [@&#8203;9999years](https://redirect.github.com/9999years)
- [@&#8203;j178](https://redirect.github.com/j178)

###
[`v0.3.2`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#032)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.3.1...v0.3.2)

Released on 2026-02-06.

##### Highlights

- **`prek.toml` is here!**

You can now use `prek.toml` as an alternative to
`.pre-commit-config.yaml` for configuring prek. `prek.toml` mirrors the
structure of `.pre-commit-config.yaml`, but TOML is less error-prone.
Your existing `.pre-commit-config.yaml` will continue to work, but for
new users and new projects, `prek.toml` may make more sense. If you want
to switch, run `prek util yaml-to-toml` to convert YAML configs to
`prek.toml`. See [configuration docs](configuration.md) for details.

  For example, this config:

  ```yaml
  repos:
    - repo: https://github.com/pre-commit/pre-commit-hooks
      rev: v6.0.0
      hooks:
        - id: check-yaml
  ```

  Can be written as `prek.toml` like this:

  ```toml
  [[repos]]
  repo = "https://github.com/pre-commit/pre-commit-hooks"
  rev = "v6.0.0"
  hooks = [ { id = "check-yaml" } ]
  ```

- **`serde-yaml` has been replaced with `serde-saphyr`**

We replaced the long-deprecated `serde-yaml` crate with
[`serde-saphyr`](https://crates.io/crates/serde-saphyr) for YAML
parsing. It is written in safe Rust and has better error messages,
performance, and security. This lets us provide precise location
information for configuration parsing errors, which should make it
easier to fix config issues.

  For example, this invalid config:

  ```yaml
  repos:
    - repo: https://github.com/crate-ci/typos
      hooks:
        - id: typos
  ```

  Before:

  ```console
  $ prek run
  error: Failed to parse `.pre-commit-config.yaml`
    caused by: Invalid remote repo: missing field `rev`
  ```

  Now:

  ```console
  $ prek run
  error: Failed to parse `.pre-commit-config.yaml`
caused by: error: line 2 column 5: missing field `rev` at line 2, column
5
  --> <input>:2:5
    |
  1 | repos:
  2 |   - repo: https://github.com/crate-ci/typos
    |     ^ missing field `rev` at line 2, column 5
  3 |     hooks:
  4 |       - id: typos
    |
  ```

- **`prek util` subcommands**

We added a new `prek util` top-level command for miscellaneous utilities
that don't fit into other categories. The first two utilities are:

- `prek util identify`: shows the identification tags of files that prek
uses for file filtering, which can be useful for debugging and writing
`types/types_or/exclude_types` filters.
- `prek util yaml-to-toml`: converts `.pre-commit-config.yaml` to
`prek.toml`.

We also moved `prek init-template-dir` under `prek util` for better
organization. The old `prek init-template-dir` command is still
available (hidden) as an alias for backward compatibility.

##### Enhancements

- Add `prek util identify` subcommand
([#&#8203;1554](https://redirect.github.com/j178/prek/pull/1554))
- Add `prek util yaml-to-toml` to convert `.pre-commit-config.yaml` to
`prek.toml`
([#&#8203;1584](https://redirect.github.com/j178/prek/pull/1584))
- Detect install source for actionable upgrade hints
([#&#8203;1540](https://redirect.github.com/j178/prek/pull/1540))
- Detect prek installed by the standalone installer
([#&#8203;1545](https://redirect.github.com/j178/prek/pull/1545))
- Implement `serialize_yaml_scalar` using `serde-saphyr`
([#&#8203;1534](https://redirect.github.com/j178/prek/pull/1534))
- Improve max cli arguments length calculation
([#&#8203;1518](https://redirect.github.com/j178/prek/pull/1518))
- Move `identify` and `init-template-dir` under the `prek util`
top-level command
([#&#8203;1574](https://redirect.github.com/j178/prek/pull/1574))
- Replace serde-yaml with serde-saphyr (again)
([#&#8203;1520](https://redirect.github.com/j178/prek/pull/1520))
- Show precise location for config parsing error
([#&#8203;1530](https://redirect.github.com/j178/prek/pull/1530))
- Support `Julia` language
([#&#8203;1519](https://redirect.github.com/j178/prek/pull/1519))
- Support `prek.toml`
([#&#8203;1271](https://redirect.github.com/j178/prek/pull/1271))
- Added `PREK_QUIET` environment variable support
([#&#8203;1513](https://redirect.github.com/j178/prek/pull/1513))
- Remove upper bound constraint of uv version
([#&#8203;1588](https://redirect.github.com/j178/prek/pull/1588))

##### Bug fixes

- Do not make the child a session leader
([#&#8203;1586](https://redirect.github.com/j178/prek/pull/1586))
- Fix FilePattern schema to accept plain strings
([#&#8203;1564](https://redirect.github.com/j178/prek/pull/1564))
- Use semver fallback sort when tag timestamps are equal
([#&#8203;1579](https://redirect.github.com/j178/prek/pull/1579))

##### Documentation

- Add `OpenClaw` to the list of users
([#&#8203;1517](https://redirect.github.com/j178/prek/pull/1517))
- Add `cachix/devenv`, `apache/lucene`, `copper-project/copper-rs` as
projects using prek
([#&#8203;1531](https://redirect.github.com/j178/prek/pull/1531),
[#&#8203;1514](https://redirect.github.com/j178/prek/pull/1514),
[#&#8203;1569](https://redirect.github.com/j178/prek/pull/1569))
- Add document about authoring remote hooks
([#&#8203;1571](https://redirect.github.com/j178/prek/pull/1571))
- Add `llms.txt` generation for LLM-friendly documentation
([#&#8203;1553](https://redirect.github.com/j178/prek/pull/1553))
- Document using `--refresh` to pick up `.prekignore` changes
([#&#8203;1575](https://redirect.github.com/j178/prek/pull/1575))
- Fix PowerShell completion instruction syntax
([#&#8203;1568](https://redirect.github.com/j178/prek/pull/1568))
- Update quick start to use `prek.toml`
([#&#8203;1576](https://redirect.github.com/j178/prek/pull/1576))

##### Other changes

- Include `prek.toml` in run hint for config filename
([#&#8203;1578](https://redirect.github.com/j178/prek/pull/1578))

##### Contributors

- [@&#8203;fatelei](https://redirect.github.com/fatelei)
- [@&#8203;domenkozar](https://redirect.github.com/domenkozar)
- [@&#8203;makeecat](https://redirect.github.com/makeecat)
- [@&#8203;fllesser](https://redirect.github.com/fllesser)
- [@&#8203;j178](https://redirect.github.com/j178)
-
[@&#8203;copilot-swe-agent](https://redirect.github.com/copilot-swe-agent)
- [@&#8203;oopscompiled](https://redirect.github.com/oopscompiled)
- [@&#8203;rmuir](https://redirect.github.com/rmuir)
- [@&#8203;shaanmajid](https://redirect.github.com/shaanmajid)

###
[`v0.3.1`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#031)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.3.0...v0.3.1)

Released on 2026-01-31.

##### Enhancements

- Add `language: swift` support
([#&#8203;1463](https://redirect.github.com/j178/prek/pull/1463))
- Add `language: haskell` support
([#&#8203;1484](https://redirect.github.com/j178/prek/pull/1484))
- Extract go version constraint from `go.mod`
([#&#8203;1457](https://redirect.github.com/j178/prek/pull/1457))
- Warn when config file exists but fails to parse
([#&#8203;1487](https://redirect.github.com/j178/prek/pull/1487))
- Add GitHub artifact attestations to release and build-docker workflow
([#&#8203;1494](https://redirect.github.com/j178/prek/pull/1494),
[#&#8203;1497](https://redirect.github.com/j178/prek/pull/1497))
- Allow `GIT_CONFIG_PARAMETERS` for private repository authentication
([#&#8203;1472](https://redirect.github.com/j178/prek/pull/1472))
- Show progress bar when running builtin hooks
([#&#8203;1504](https://redirect.github.com/j178/prek/pull/1504))

##### Bug fixes

- Cap ARG\_MAX at `1<<19` for safety
([#&#8203;1506](https://redirect.github.com/j178/prek/pull/1506))
- Don't check Python executable path in health check
([#&#8203;1496](https://redirect.github.com/j178/prek/pull/1496))

##### Documentation

- Include `CocoIndex` as a project using prek
([#&#8203;1477](https://redirect.github.com/j178/prek/pull/1477))
- Add commands for artifact verification using GitHub Attestations
([#&#8203;1500](https://redirect.github.com/j178/prek/pull/1500))

##### Contributors

- [@&#8203;halms](https://redirect.github.com/halms)
- [@&#8203;Haleshot](https://redirect.github.com/Haleshot)
- [@&#8203;simono](https://redirect.github.com/simono)
- [@&#8203;tisonkun](https://redirect.github.com/tisonkun)
- [@&#8203;fllesser](https://redirect.github.com/fllesser)
- [@&#8203;j178](https://redirect.github.com/j178)
- [@&#8203;shaanmajid](https://redirect.github.com/shaanmajid)

###
[`v0.3.0`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#030)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.2.30...v0.3.0)

Released on 2026-01-22.

##### Highlights

- `prek cache gc` (also available via `prek gc` for pre-commit
compatibility) is finally here! You can now run `prek cache gc` to clean
up unused repos, hook envs and tool versions from prek cache.
- `language: bun` is now supported, making it possible to write and run
hooks with [Bun](https://bun.sh/).

##### Enhancements

- Implement `prek cache gc`
([#&#8203;1410](https://redirect.github.com/j178/prek/pull/1410))

- Bootstrap tracking configs from workspace cache
([#&#8203;1417](https://redirect.github.com/j178/prek/pull/1417))
- Show total size `prek cache gc` removed
([#&#8203;1418](https://redirect.github.com/j178/prek/pull/1418))
- Show accurate repo and hook details in `prek cache gc -v`
([#&#8203;1420](https://redirect.github.com/j178/prek/pull/1420))
- `prek cache gc` remove specific unused tool versions
([#&#8203;1422](https://redirect.github.com/j178/prek/pull/1422))
- Fix unused tool versions not removed in `prek cache gc`
([#&#8203;1436](https://redirect.github.com/j178/prek/pull/1436))

- Add `language: bun` support
([#&#8203;1411](https://redirect.github.com/j178/prek/pull/1411))

- Use `git ls-remote --tags` to list bun versions
([#&#8203;1439](https://redirect.github.com/j178/prek/pull/1439))

- Accept `--stage` as an alias for `--hook-stage` in `prek run`
([#&#8203;1398](https://redirect.github.com/j178/prek/pull/1398))

- Expand `~` tilde in `PREK_HOME`
([#&#8203;1431](https://redirect.github.com/j178/prek/pull/1431))

- Support refs to trees
([#&#8203;1449](https://redirect.github.com/j178/prek/pull/1449))

##### Bug fixes

- Avoid file lock warning for in-process contention
([#&#8203;1406](https://redirect.github.com/j178/prek/pull/1406))
- Resolve relative repo paths from config file directory
([#&#8203;1443](https://redirect.github.com/j178/prek/pull/1443))
- fix: use `split()` instead of `resolve(None)` for builtin hook
argument parsing
([#&#8203;1415](https://redirect.github.com/j178/prek/pull/1415))

##### Documentation

- Add `simple-icons` and `ast-grep` to the users of prek
([#&#8203;1403](https://redirect.github.com/j178/prek/pull/1403))
- Improve JSON schema for `repo` field
([#&#8203;1432](https://redirect.github.com/j178/prek/pull/1432))
- Improve JSON schema for builtin and meta hooks
([#&#8203;1427](https://redirect.github.com/j178/prek/pull/1427))
- Add pronunciation entry to FAQ
([#&#8203;1442](https://redirect.github.com/j178/prek/pull/1442))
- Add commitizen to the list of projects using prek
([#&#8203;1413](https://redirect.github.com/j178/prek/pull/1413))
- Move docs to zensical
([#&#8203;1421](https://redirect.github.com/j178/prek/pull/1421))

##### Other Changes

- Refactor config layout
([#&#8203;1407](https://redirect.github.com/j178/prek/pull/1407))

##### Contributors

- [@&#8203;shaanmajid](https://redirect.github.com/shaanmajid)
- [@&#8203;KevinGimbel](https://redirect.github.com/KevinGimbel)
- [@&#8203;jtamagnan](https://redirect.github.com/jtamagnan)
-
[@&#8203;jmeickle-theaiinstitute](https://redirect.github.com/jmeickle-theaiinstitute)
- [@&#8203;YazdanRa](https://redirect.github.com/YazdanRa)
- [@&#8203;j178](https://redirect.github.com/j178)
- [@&#8203;mschoettle](https://redirect.github.com/mschoettle)
- [@&#8203;tisonkun](https://redirect.github.com/tisonkun)

###
[`v0.2.30`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#0230)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.2.29...v0.2.30)

Released on 2026-01-18.

##### Enhancements

- Build binaries using minimal-size profile
([#&#8203;1376](https://redirect.github.com/j178/prek/pull/1376))
- Check for duplicate keys in `check-json5` builtin hook
([#&#8203;1387](https://redirect.github.com/j178/prek/pull/1387))
- Preserve quoting style in `auto-update`
([#&#8203;1379](https://redirect.github.com/j178/prek/pull/1379))
- Show warning if file lock acquiring blocks for long time
([#&#8203;1353](https://redirect.github.com/j178/prek/pull/1353))
- Singleflight Python health checks with cached interpreter info
([#&#8203;1381](https://redirect.github.com/j178/prek/pull/1381))

##### Bug fixes

- Do not resolve entry for docker\_image
([#&#8203;1386](https://redirect.github.com/j178/prek/pull/1386))
- Fix command lookup on Windows
([#&#8203;1383](https://redirect.github.com/j178/prek/pull/1383))

##### Documentation

- Document language support details
([#&#8203;1380](https://redirect.github.com/j178/prek/pull/1380))
- Document that `check-json5` now rejects duplicate keys
([#&#8203;1391](https://redirect.github.com/j178/prek/pull/1391))

##### Contributors

- [@&#8203;j178](https://redirect.github.com/j178)

###
[`v0.2.29`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#0229)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.2.28...v0.2.29)

Released on 2026-01-16.

##### Highlights

`files` / `exclude` now support globs (including glob lists), making
config filters much easier to read and maintain than heavily-escaped
regex.

Before (regex):

```yaml
files: "^(src/.*\\.rs$|crates/[^/]+/src/.*\\.rs$)"
```

After (glob list):

```yaml
files:
  glob:
    - src/**/*.rs
    - crates/**/src/**/*.rs
```

##### Enhancements

- Add `check-json5` as builtin hooks
([#&#8203;1367](https://redirect.github.com/j178/prek/pull/1367))
- Add glob list support for file patterns (`files` and `exclude`)
([#&#8203;1197](https://redirect.github.com/j178/prek/pull/1197))

##### Bug fixes

- Fix missing commit hash from version info
([#&#8203;1352](https://redirect.github.com/j178/prek/pull/1352))
- Remove git env vars from `uv pip install` subprocess
([#&#8203;1355](https://redirect.github.com/j178/prek/pull/1355))
- Set `TERM=dumb` under PTY to prevent capability-probe hangs
([#&#8203;1363](https://redirect.github.com/j178/prek/pull/1363))

##### Documentation

- Add `home-assistant/core` to the users of prek
([#&#8203;1350](https://redirect.github.com/j178/prek/pull/1350))
- Document builtin hooks
([#&#8203;1370](https://redirect.github.com/j178/prek/pull/1370))
- Explain project configuration scope
([#&#8203;1373](https://redirect.github.com/j178/prek/pull/1373))

##### Contributors

- [@&#8203;Goldziher](https://redirect.github.com/Goldziher)
- [@&#8203;yihong0618](https://redirect.github.com/yihong0618)
- [@&#8203;j178](https://redirect.github.com/j178)
- [@&#8203;shaanmajid](https://redirect.github.com/shaanmajid)
- [@&#8203;ulgens](https://redirect.github.com/ulgens)

###
[`v0.2.28`](https://redirect.github.com/j178/prek/blob/HEAD/CHANGELOG.md#0228)

[Compare
Source](https://redirect.github.com/j178/prek/compare/v0.2.27...v0.2.28)

Released on 2026-01-13.

##### Enhancements

- Avoid running `git diff` for skipped hooks
([#&#8203;1335](https://redirect.github.com/j178/prek/pull/1335))
- More accurate command line length limit calculation
([#&#8203;1348](https://redirect.github.com/j178/prek/pull/1348))
- Raise platform command line length upper limit
([#&#8203;1347](https://redirect.github.com/j178/prek/pull/1347))
- Use `/bin/sh` in generated git hook scripts
([#&#8203;1333](https://redirect.github.com/j178/prek/pull/1333))

##### Bug fixes

- Avoid rewriting if config is up-to-date
([#&#8203;1346](https://redirect.github.com/j178/prek/pull/1346))

##### Documentation

- Add `ty` to the users of prek
([#&#8203;1342](https://redirect.github.com/j178/prek/pull/1342))
- Add `ruff` to the users of prek
([#&#8203;1334](https://redirect.github.com/j178/prek/pull/1334))
- Complete configuration document
([#&#8203;1338](https://redirect.github.com/j178/prek/pull/1338))
- Document UV environment variable inheritance in prek
([#&#8203;1339](https://redirect.github.com/j178/prek/pull/1339))

##### Contributors

-
[@&#8203;copilot-swe-agent](https://redirect.github.com/copilot-swe-agent)
- [@&#8203;MatthewMckee4](https://redirect.github.com/MatthewMckee4)
- [@&#8203;yihong0618](https://redirect.github.com/yihong0618)
- [@&#8203;j178](https://redirect.github.com/j178)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMi4wIiwidXBkYXRlZEluVmVyIjoiNDMuMjIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-18 16:45:48 +00:00
Ed Page e4f2b351a3 chore(ci): Update action 2026-01-26 16:45:18 -06:00
Ed Page 6d0d36b072 chore(ci): Clean up previous branch in case it was leaked 2026-01-26 12:34:16 -06:00
Ed Page 30b3b14bd6 chore(ci): Fix how rustfmt jobs run 2026-01-26 12:29:03 -06:00
renovate[bot] 24c5c995fa chore(deps): Update Rust Stable to v1.93 (#42)
This PR contains the following updates:

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

---

### Release Notes

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

###
[`v1.93`](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_array_mut`](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_array_mut`](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**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NS4xIiwidXBkYXRlZEluVmVyIjoiNDIuODUuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 18:06:38 +00:00
Ed Page 98ba1ea02e chore(ci): Automatic update from template 2026-01-14 16:03:32 -06:00
Ed Page 5932b20e5c chore(ci): Pin the prek version 2026-01-14 16:03:22 -06:00
Ed Page 16faf2c10d chore(ci): Switch from pre-commit to prek 2026-01-14 16:03:17 -06:00
renovate[bot] f4efb92a38 chore(deps): Update Rust Stable to v1.92 (#36)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [STABLE](https://redirect.github.com/rust-lang/rust) | minor | `1.91`
-> `1.92` |

---

### Release Notes

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

###
[`v1.92`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1920-2025-12-11)

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

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

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

## Language

- [Document `MaybeUninit` representation and
validity](https://redirect.github.com/rust-lang/rust/pull/140463)
- [Allow `&raw [mut | const]` for union field in safe
code](https://redirect.github.com/rust-lang/rust/pull/141469)
- [Prefer item bounds of associated types over where-bounds for
auto-traits and
`Sized`](https://redirect.github.com/rust-lang/rust/pull/144064)
- [Do not materialize `X` in `[X; 0]` when `X` is unsizing a
const](https://redirect.github.com/rust-lang/rust/pull/145277)
- [Support combining `#[track_caller]` and `#[no_mangle]` (requires
every declaration specifying `#[track_caller]` as
well)](https://redirect.github.com/rust-lang/rust/pull/145724)
- [Make never type lints `never_type_fallback_flowing_into_unsafe` and
`dependency_on_unit_never_type_fallback`
deny-by-default](https://redirect.github.com/rust-lang/rust/pull/146167)
- [Allow specifying multiple bounds for same associated item, except in
trait objects](https://redirect.github.com/rust-lang/rust/pull/146593)
- [Slightly strengthen higher-ranked region handling in
coherence](https://redirect.github.com/rust-lang/rust/pull/146725)
- [The `unused_must_use` lint no longer warns on `Result<(),
Uninhabited>` (for instance, `Result<(), !>`), or
`ControlFlow<Uninhabited,
()>`](https://redirect.github.com/rust-lang/rust/pull/147382). This
avoids having to check for an error that can never happen.

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

## Compiler

- [Make `mips64el-unknown-linux-muslabi64` link
dynamically](https://redirect.github.com/rust-lang/rust/pull/146858)
- [Remove current code for embedding command-line args in
PDB](https://redirect.github.com/rust-lang/rust/pull/147022)
Command-line information is typically not needed by debugging tools, and
the removed code
was causing problems for incremental builds even on targets that don't
use PDB debuginfo.

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

## Libraries

- [Specialize `Iterator::eq{_by}` for `TrustedLen`
iterators](https://redirect.github.com/rust-lang/rust/pull/137122)
- [Simplify `Extend` for
tuples](https://redirect.github.com/rust-lang/rust/pull/138799)
- [Added details to `Debug` for
`EncodeWide`](https://redirect.github.com/rust-lang/rust/pull/140153).
-
[`iter::Repeat::last`](https://redirect.github.com/rust-lang/rust/pull/147258)
and [`count`](https://redirect.github.com/rust-lang/rust/pull/146410)
will now panic, rather than looping infinitely.

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

## Stabilized APIs

-
[`NonZero<u{N}>::div_ceil`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.div_ceil)
-
[`Location::file_as_c_str`](https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.file_as_c_str)
-
[`RwLockWriteGuard::downgrade`](https://doc.rust-lang.org/stable/std/sync/struct.RwLockWriteGuard.html#method.downgrade)
-
[`Box::new_zeroed`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.new_zeroed)
-
[`Box::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.new_zeroed_slice)
-
[`Rc::new_zeroed`](https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_zeroed)
-
[`Rc::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_zeroed_slice)
-
[`Arc::new_zeroed`](https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_zeroed)
-
[`Arc::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_zeroed_slice)
-
[`btree_map::Entry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/btree_map/enum.Entry.html#method.insert_entry)
-
[`btree_map::VacantEntry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.VacantEntry.html#method.insert_entry)
- [`impl Extend<proc_macro::Group> for
proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CGroup%3E-for-TokenStream)
- [`impl Extend<proc_macro::Literal> for
proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CLiteral%3E-for-TokenStream)
- [`impl Extend<proc_macro::Punct> for
proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CPunct%3E-for-TokenStream)
- [`impl Extend<proc_macro::Ident> for
proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CIdent%3E-for-TokenStream)

These previously stable APIs are now stable in const contexts:

-
[`<[_]>::rotate_left`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.rotate_left)
-
[`<[_]>::rotate_right`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.rotate_right)

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

## Cargo

- [Added a new
chapter](https://redirect.github.com/rust-lang/cargo/issues/16119) to
the Cargo book, ["Optimizing Build
Performance"](https://doc.rust-lang.org/stable/cargo/guide/build-performance.html).

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

## Rustdoc

- [If a trait item appears in rustdoc search, hide the corresponding
impl items](https://redirect.github.com/rust-lang/rust/pull/145898).
Previously a search for "last" would show both `Iterator::last` as well
as impl methods like `std::vec::IntoIter::last`. Now these impl methods
will be hidden, freeing up space for inherent methods like
`BTreeSet::last`.
- [Relax rules for identifiers in
search](https://redirect.github.com/rust-lang/rust/pull/147860).
Previously you could only search for identifiers that were valid in rust
code, now searches only need to be valid as part of an identifier. For
example, you can now perform a search that starts with a digit.

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

## Compatibility Notes

- [Fix backtraces with `-C panic=abort` on Linux by generating unwind
tables by
default](https://redirect.github.com/rust-lang/rust/pull/143613). Build
with `-C force-unwind-tables=no` to keep omitting unwind tables.

* As part of the larger effort refactoring compiler built-in attributes
and their diagnostics, [the future-compatibility lint
`invalid_macro_export_arguments` is upgraded to deny-by-default and will
be reported in dependencies
too.](https://redirect.github.com/rust-lang/rust/pull/143857)
* [Update the minimum external LLVM to
20](https://redirect.github.com/rust-lang/rust/pull/145071)
* [Prevent downstream `impl DerefMut for
Pin<LocalType>`](https://redirect.github.com/rust-lang/rust/pull/145608)
* [Don't apply temporary lifetime extension rules to the arguments of
non-extended `pin!` and formatting
macros](https://redirect.github.com/rust-lang/rust/pull/145838)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi40Mi4yIiwidXBkYXRlZEluVmVyIjoiNDIuNDIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 18:44:55 +00:00
renovate[bot] 1d7f42967d chore(deps): Update actions/checkout action to v6 2025-12-01 01:30:04 +00:00
Ed Page b0881a6ba0 chore(ci): Give more control over where alt version jobs run 2025-11-13 10:57:21 -06:00
Ed Page ee2eef597d chore(ci): Ensure latest-deps jobs actually uses them 2025-11-13 10:46:26 -06:00
renovate[bot] 3628419d66 chore(deps): Update github/codeql-action action to v4 2025-11-01 01:29:04 +00:00
renovate[bot] 845f4264fd chore(deps): Update Rust Stable to v1.91 (#33)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [STABLE](https://redirect.github.com/rust-lang/rust) | minor | `1.90`
-> `1.91` |

---

### Release Notes

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

###
[`v1.91`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1910-2025-10-30)

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

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

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

## Language

- [Lower pattern bindings in the order they're written and base drop
order on primary bindings'
order](https://redirect.github.com/rust-lang/rust/pull/143764)
- [Stabilize declaration of C-style variadic functions for `sysv64`,
`win64`, `efiapi`, and `aapcs`
ABIs](https://redirect.github.com/rust-lang/rust/pull/144066).
This brings these ABIs in line with the C ABI: variadic functions can be
declared in extern blocks but not defined.
- [Add `dangling_pointers_from_locals` lint to warn against dangling
pointers from local
variables](https://redirect.github.com/rust-lang/rust/pull/144322)
- [Upgrade `semicolon_in_expressions_from_macros` from warn to
deny](https://redirect.github.com/rust-lang/rust/pull/144369)
- [Stabilize LoongArch32 inline
assembly](https://redirect.github.com/rust-lang/rust/pull/144402)
- [Add warn-by-default `integer_to_ptr_transmutes` lint against
integer-to-pointer
transmutes](https://redirect.github.com/rust-lang/rust/pull/144531)
- [Stabilize `sse4a` and `tbm` target
features](https://redirect.github.com/rust-lang/rust/pull/144542)
- [Add `target_env = "macabi"` and `target_env = "sim"`
cfgs](https://redirect.github.com/rust-lang/rust/pull/139451) as
replacements for the `target_abi` cfgs with the same values.

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

## Compiler

- [Don't warn on never-to-any `as` casts as
unreachable](https://redirect.github.com/rust-lang/rust/pull/144804)

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

## Platform Support

- [Promote `aarch64-pc-windows-gnullvm` and `x86_64-pc-windows-gnullvm`
to Tier 2 with host
tools.](https://redirect.github.com/rust-lang/rust/pull/143031)
Note: llvm-tools and MSI installers are missing but will be added in
future releases.
- [Promote `aarch64-pc-windows-msvc` to Tier
1](https://redirect.github.com/rust-lang/rust/pull/145682)

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

## Libraries

- [Print thread ID in panic
message](https://redirect.github.com/rust-lang/rust/pull/115746)
- [Fix overly restrictive lifetime in `core::panic::Location::file`
return type](https://redirect.github.com/rust-lang/rust/pull/132087)
- [Guarantee parameter order for `_by()` variants of `min` / `max`/
`minmax` in
`std::cmp`](https://redirect.github.com/rust-lang/rust/pull/139357)
- [Document assumptions about `Clone` and `Eq`
traits](https://redirect.github.com/rust-lang/rust/pull/144330/)
- [`std::thread`: Return error if setting thread stack size
fails](https://redirect.github.com/rust-lang/rust/pull/144210)
  This used to panic within the standard library.

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

## Stabilized APIs

-
[`Path::file_prefix`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.file_prefix)
-
[`AtomicPtr::fetch_ptr_add`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_add)
-
[`AtomicPtr::fetch_ptr_sub`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_ptr_sub)
-
[`AtomicPtr::fetch_byte_add`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_add)
-
[`AtomicPtr::fetch_byte_sub`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_byte_sub)
-
[`AtomicPtr::fetch_or`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_or)
-
[`AtomicPtr::fetch_and`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_and)
-
[`AtomicPtr::fetch_xor`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.fetch_xor)
-
[`{integer}::strict_add`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_add)
-
[`{integer}::strict_sub`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_sub)
-
[`{integer}::strict_mul`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_mul)
-
[`{integer}::strict_div`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_div)
-
[`{integer}::strict_div_euclid`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_div_euclid)
-
[`{integer}::strict_rem`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_rem)
-
[`{integer}::strict_rem_euclid`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_rem_euclid)
-
[`{integer}::strict_neg`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_neg)
-
[`{integer}::strict_shl`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_shl)
-
[`{integer}::strict_shr`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_shr)
-
[`{integer}::strict_pow`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_pow)
-
[`i{N}::strict_add_unsigned`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_add_unsigned)
-
[`i{N}::strict_sub_unsigned`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_sub_unsigned)
-
[`i{N}::strict_abs`](https://doc.rust-lang.org/stable/std/primitive.i32.html#method.strict_abs)
-
[`u{N}::strict_add_signed`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_add_signed)
-
[`u{N}::strict_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.strict_sub_signed)
-
[`PanicHookInfo::payload_as_str`](https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html#method.payload_as_str)
-
[`core::iter::chain`](https://doc.rust-lang.org/stable/core/iter/fn.chain.html)
-
[`u{N}::checked_signed_diff`](https://doc.rust-lang.org/stable/std/primitive.u16.html#method.checked_signed_diff)
-
[`core::array::repeat`](https://doc.rust-lang.org/stable/core/array/fn.repeat.html)
-
[`PathBuf::add_extension`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.add_extension)
-
[`PathBuf::with_added_extension`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.with_added_extension)
-
[`Duration::from_mins`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_mins)
-
[`Duration::from_hours`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_hours)
- [`impl PartialEq<str> for
PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-PartialEq%3Cstr%3E-for-PathBuf)
- [`impl PartialEq<String> for
PathBuf`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#impl-PartialEq%3CString%3E-for-PathBuf)
- [`impl PartialEq<str> for
Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#impl-PartialEq%3Cstr%3E-for-Path)
- [`impl PartialEq<String> for
Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#impl-PartialEq%3CString%3E-for-Path)
- [`impl PartialEq<PathBuf> for
String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-PartialEq%3CPathBuf%3E-for-String)
- [`impl PartialEq<Path> for
String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-PartialEq%3CPath%3E-for-String)
- [`impl PartialEq<PathBuf> for
str`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-PartialEq%3CPathBuf%3E-for-str)
- [`impl PartialEq<Path> for
str`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-PartialEq%3CPath%3E-for-str)
-
[`Ipv4Addr::from_octets`](https://doc.rust-lang.org/stable/std/net/struct.Ipv4Addr.html#method.from_octets)
-
[`Ipv6Addr::from_octets`](https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.from_octets)
-
[`Ipv6Addr::from_segments`](https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.from_segments)
- [`impl<T> Default for Pin<Box<T>> where Box<T>: Default, T:
?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CBox%3CT%3E%3E)
- [`impl<T> Default for Pin<Rc<T>> where Rc<T>: Default, T:
?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CRc%3CT%3E%3E)
- [`impl<T> Default for Pin<Arc<T>> where Arc<T>: Default, T:
?Sized`](https://doc.rust-lang.org/stable/std/default/trait.Default.html#impl-Default-for-Pin%3CArc%3CT%3E%3E)
-
[`Cell::as_array_of_cells`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.as_array_of_cells)
-
[`u{N}::carrying_add`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_add)
-
[`u{N}::borrowing_sub`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.borrowing_sub)
-
[`u{N}::carrying_mul`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_mul)
-
[`u{N}::carrying_mul_add`](https://doc.rust-lang.org/stable/std/primitive.u64.html#method.carrying_mul_add)
-
[`BTreeMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html#method.extract_if)
-
[`BTreeSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html#method.extract_if)
- [`impl Debug for
windows::ffi::EncodeWide<'_>`](https://doc.rust-lang.org/stable/std/os/windows/ffi/struct.EncodeWide.html#impl-Debug-for-EncodeWide%3C'_%3E)
-
[`str::ceil_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.ceil_char_boundary)
-
[`str::floor_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.floor_char_boundary)
- [`impl Sum for
Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Sum-for-Saturating%3Cu32%3E)
- [`impl Sum<&Self> for
Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Sum%3C%26Saturating%3Cu32%3E%3E-for-Saturating%3Cu32%3E)
- [`impl Product for
Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Product-for-Saturating%3Cu32%3E)
- [`impl Product<&Self> for
Saturating<u{N}>`](https://doc.rust-lang.org/stable/std/num/struct.Saturating.html#impl-Product%3C%26Saturating%3Cu32%3E%3E-for-Saturating%3Cu32%3E)

These previously stable APIs are now stable in const contexts:

- [`<[T;
N]>::each_ref`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_ref)
- [`<[T;
N]>::each_mut`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_mut)
-
[`OsString::new`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.new)
-
[`PathBuf::new`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.new)
-
[`TypeId::of`](https://doc.rust-lang.org/stable/std/any/struct.TypeId.html#method.of)
-
[`ptr::with_exposed_provenance`](https://doc.rust-lang.org/stable/std/ptr/fn.with_exposed_provenance.html)
-
[`ptr::with_exposed_provenance_mut`](https://doc.rust-lang.org/stable/std/ptr/fn.with_exposed_provenance_mut.html)

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

## Cargo

- 🎉 Stabilize `build.build-dir`.
This config sets the directory where intermediate build artifacts are
stored.
These artifacts are produced by Cargo and rustc during the build
process.
End users usually won't need to interact with them, and the layout
inside
`build-dir` is an implementation detail that may change without notice.
([config
doc](https://doc.rust-lang.org/stable/cargo/reference/config.html#buildbuild-dir))
([build cache
doc](https://doc.rust-lang.org/stable/cargo/reference/build-cache.html))
[#&#8203;15833](https://redirect.github.com/rust-lang/cargo/pull/15833)
[#&#8203;15840](https://redirect.github.com/rust-lang/cargo/pull/15840)
- The `--target` flag and the `build.target` configuration can now take
literal
`"host-tuple"` string, which will internally be substituted by the host
  machine's target triple.
[#&#8203;15838](https://redirect.github.com/rust-lang/cargo/pull/15838)
[#&#8203;16003](https://redirect.github.com/rust-lang/cargo/pull/16003)
[#&#8203;16032](https://redirect.github.com/rust-lang/cargo/pull/16032)

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

## Rustdoc

- [In search results, rank doc aliases lower than non-alias items with
the same name](https://redirect.github.com/rust-lang/rust/pull/145100)
- [Raw pointers now work in type-based search like
references](https://redirect.github.com/rust-lang/rust/pull/145731).
This means you can now search for things like `*const u8 ->`, and
additionally functions that take or return raw pointers will now display
their signature properly in search results.

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

## Compatibility Notes

- [Always require coroutine captures to be
drop-live](https://redirect.github.com/rust-lang/rust/pull/144156)
- [Apple: Always pass SDK root when linking with `cc`, and pass it via
`SDKROOT` env
var](https://redirect.github.com/rust-lang/rust/pull/131477). This
should fix linking issues with `rustc` running inside Xcode. Libraries
in `/usr/local/lib` may no longer be linked automatically, if you
develop or use a crate that relies on this, you should explicitly set
`cargo::rustc-link-search=/usr/local/lib` in a `build.rs` script.
- [Relaxed bounds in associated type bound position like in
`TraitRef<AssocTy: ?Sized>` are now correctly
forbidden](https://redirect.github.com/rust-lang/rust/pull/135331)
- [Add unstable `#[sanitize(xyz = "on|off")]` built-in attribute that
shadows procedural macros with the same
name](https://redirect.github.com/rust-lang/rust/pull/142681)
- [Fix the drop checker being more permissive for bindings declared with
let-else](https://redirect.github.com/rust-lang/rust/pull/143028)
- [Be more strict when parsing attributes, erroring on many invalid
attributes](https://redirect.github.com/rust-lang/rust/pull/144689)
- [Error on invalid `#[should_panic]`
attributes](https://redirect.github.com/rust-lang/rust/pull/143808)
- [Error on invalid `#[link]`
attributes](https://redirect.github.com/rust-lang/rust/pull/143193)
- [Mark all deprecation lints in name resolution as deny-by-default and
also report in
dependencies](https://redirect.github.com/rust-lang/rust/pull/143929)
- The lint `semicolon_in_expressions_from_macros`, for `macro_rules!`
macros in expression position that expand to end in a semicolon (`;`),
is now deny-by-default. It was already warn-by-default, and a future
compatibility warning (FCW) that warned even in dependencies. This lint
will become a hard error in the future.
- [Trait impl modifiers (e.g., `unsafe`, `!`, `default`) in inherent
impls are no longer syntactically
valid](https://redirect.github.com/rust-lang/rust/pull/144386)
- [Start reporting future breakage for `ill_formed_attribute_input` in
dependencies](https://redirect.github.com/rust-lang/rust/pull/144544)
- [Restrict the scope of temporaries created by the macros `pin!`,
`format_args!`, `write!`, and `writeln!` in `if let` scrutinees in Rust
Edition 2024.](https://redirect.github.com/rust-lang/rust/pull/145342)
This applies [Rust Edition 2024's `if let` temporary scope
rules](https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html)
to these temporaries, which previously could live past the `if`
expression regardless of Edition.
- [Invalid numeric literal suffixes in tuple indexing, tuple struct
indexing, and struct field name positions are now correctly
rejected](https://redirect.github.com/rust-lang/rust/pull/145463)
- [Closures marked with the keyword `static` are now syntactically
invalid](https://redirect.github.com/rust-lang/rust/pull/145604)
- [Shebangs inside `--cfg` and `--check-cfg` arguments are no longer
allowed](https://redirect.github.com/rust-lang/rust/pull/146211)
- [Add future incompatibility lint for temporary lifetime shortening in
Rust 1.92](https://redirect.github.com/rust-lang/rust/pull/147056)

Cargo compatibility notes:

- `cargo publish` no longer keeps `.crate` tarballs as final build
artifacts
when `build.build-dir` is set. These tarballs were previously included
due to
  an oversight and are now treated as intermediate artifacts.
  To get `.crate` tarballs as final artifacts, use `cargo package`.
In a future version, this change will apply regardless of
`build.build-dir`.
[#&#8203;15910](https://redirect.github.com/rust-lang/cargo/pull/15910)
- Adjust Cargo messages to match rustc diagnostic style.
  This changes some of the terminal colors used by Cargo messages.
[#&#8203;15928](https://redirect.github.com/rust-lang/cargo/pull/15928)
- Tools and projects relying on the
[internal details of Cargo's
`build-dir`](https://doc.rust-lang.org/cargo/reference/build-cache.html)
  may not work for users changing their `build-dir` layout.
  For those doing so, we'd recommend proactively testing these cases
particularly as we are considering changing the default location of the
`build-dir` in the future

([cargo#16147](https://redirect.github.com/rust-lang/cargo/issues/16147)).
  If you can't migrate off of Cargo's internal details,
we'd like to learn more about your use case as we prepare to change the
layout of the `build-dir`

([cargo#15010](https://redirect.github.com/rust-lang/cargo/issues/15010)).

<a id="1.91.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.

- [Update to LLVM
21](https://redirect.github.com/rust-lang/rust/pull/143684)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTkuNCIsInVwZGF0ZWRJblZlciI6IjQxLjE1OS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 01:17:02 +00:00
renovate[bot] 3513a5b182 chore(deps): Update actions/checkout action to v5 2025-10-01 14:50:23 +00:00
renovate[bot] 7a67ba563b chore(deps): Update actions/setup-python action to v6 2025-10-01 03:23:03 +00:00
renovate[bot] 676066ac62 chore(deps): Update Rust Stable to v1.90 (#30)
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs
from Renovate will soon appear from 'Mend'. Learn more
[here](https://redirect.github.com/renovatebot/renovate/discussions/37842).

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [STABLE](https://redirect.github.com/rust-lang/rust) | minor | `1.89`
-> `1.90` |

---

### Release Notes

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

###
[`v1.90`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1900-2025-09-18)

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

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

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

## Language

- [Split up the `unknown_or_malformed_diagnostic_attributes`
lint](https://redirect.github.com/rust-lang/rust/pull/140717). This lint
has been split up into four finer-grained lints, with
`unknown_or_malformed_diagnostic_attributes` now being the lint group
that contains these lints:
  1. `unknown_diagnostic_attributes`: unknown to the current compiler
  2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or
options
4. `malformed_diagnostic_format_literals`: malformed format string
literal
- [Allow constants whose final value has references to mutable/external
memory, but reject such constants as
patterns](https://redirect.github.com/rust-lang/rust/pull/140942)
- [Allow volatile access to non-Rust memory, including address
0](https://redirect.github.com/rust-lang/rust/pull/141260)

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

## Compiler

- [Use `lld` by default on
`x86_64-unknown-linux-gnu`](https://redirect.github.com/rust-lang/rust/pull/140525).
- [Tier 3 `musl` targets now link dynamically by
default](https://redirect.github.com/rust-lang/rust/pull/144410).
Affected targets:
  - `mips64-unknown-linux-muslabi64`
  - `powerpc64-unknown-linux-musl`
  - `powerpc-unknown-linux-musl`
  - `powerpc-unknown-linux-muslspe`
  - `riscv32gc-unknown-linux-musl`
  - `s390x-unknown-linux-musl`
  - `thumbv7neon-unknown-linux-musleabihf`

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

## Platform Support

- [Demote `x86_64-apple-darwin` to Tier 2 with host
tools](https://redirect.github.com/rust-lang/rust/pull/145252)

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

## Libraries

- [Stabilize
`u*::{checked,overflowing,saturating,wrapping}_sub_signed`](https://redirect.github.com/rust-lang/rust/issues/126043)
- [Allow comparisons between `CStr`, `CString`, and
`Cow<CStr>`](https://redirect.github.com/rust-lang/rust/pull/137268)
- [Remove some unsized tuple impls since unsized tuples can't be
constructed](https://redirect.github.com/rust-lang/rust/pull/138340)
- [Set `MSG_NOSIGNAL` for
`UnixStream`](https://redirect.github.com/rust-lang/rust/pull/140005)
- [`proc_macro::Ident::new` now supports
`$crate`.](https://redirect.github.com/rust-lang/rust/pull/141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at least 8
bytes of
alignment](https://redirect.github.com/rust-lang/rust/pull/143859)

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

## Stabilized APIs

-
[`u{n}::checked_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
-
[`u{n}::overflowing_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
-
[`u{n}::saturating_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
-
[`u{n}::wrapping_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for
IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for
IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for
CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for
CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for
CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for
CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for
CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for
CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for
Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for
Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for
Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)

These previously stable APIs are now stable in const contexts:

-
[`<[T]>::reverse`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
-
[`f32::floor`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
-
[`f32::ceil`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
-
[`f32::trunc`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
-
[`f32::fract`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
-
[`f32::round`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
-
[`f32::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
-
[`f64::floor`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
-
[`f64::ceil`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
-
[`f64::trunc`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
-
[`f64::fract`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
-
[`f64::round`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
-
[`f64::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)

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

## Cargo

- [Add `http.proxy-cainfo` config for proxy
certs](https://redirect.github.com/rust-lang/cargo/pull/15374/)
- [Use `gix` for `cargo
package`](https://redirect.github.com/rust-lang/cargo/pull/15534/)
- [feat(publish): Stabilize multi-package
publishing](https://redirect.github.com/rust-lang/cargo/pull/15636/)

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

## Rustdoc

- [Add ways to collapse all impl
blocks](https://redirect.github.com/rust-lang/rust/pull/141663).
Previously the "Summary" button and "-" keyboard shortcut would never
collapse `impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()`
wrappers](https://redirect.github.com/rust-lang/rust/pull/143662)

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

## Compatibility Notes

- [Use `lld` by default on
`x86_64-unknown-linux-gnu`](https://redirect.github.com/rust-lang/rust/pull/140525).
See also
<https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
internally as promised in the docs instead of always being
empty](https://redirect.github.com/rust-lang/rust/pull/140985)
- [Set `MSG_NOSIGNAL` for
`UnixStream`](https://redirect.github.com/rust-lang/rust/pull/140005)
This may change program behavior but results in the same behavior as
other primitives (e.g., stdout, network sockets).
Programs relying on signals to terminate them should update handling of
sockets to handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
environment variable is
empty](https://redirect.github.com/rust-lang/rust/pull/141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
positions](https://redirect.github.com/rust-lang/rust/pull/142134). This
primarily affects the use of implementing traits on an `extern "{abi}"`
function pointer, like `extern "stdcall" fn()`, on a platform that
doesn't support that, like aarch64-unknown-linux-gnu. Direct usage of
these unsupported ABI strings by declaring or defining functions was
already rejected, so this is only a change for consistency.
- [const-eval: error when initializing a static writes to that
static](https://redirect.github.com/rust-lang/rust/pull/143084)
- [Check that the `proc_macro_derive` macro has correct arguments when
applied to the crate
root](https://redirect.github.com/rust-lang/rust/pull/143607)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-18 21:59:04 +00:00
Ed Page 5afd57342b chore(ci): Fix env variable syntax 2025-09-12 16:42:32 -05:00
Ed Page addd8718e9 chore(ci): Reduce cached content 2025-09-10 09:03:26 -05:00
renovate[bot] 5fb0a8e7f3 chore(deps): Update Rust Stable to v1.89 (#29)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [STABLE](https://redirect.github.com/rust-lang/rust) | minor | `1.88`
-> `1.89` |

---

### Release Notes

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

###
[`v1.89`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1890-2025-08-07)

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

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

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

## Language

- [Stabilize explicitly inferred const arguments
(`feature(generic_arg_infer)`)](https://redirect.github.com/rust-lang/rust/pull/141610)
- [Add a warn-by-default `mismatched_lifetime_syntaxes`
lint.](https://redirect.github.com/rust-lang/rust/pull/138677)
This lint detects when the same lifetime is referred to by different
syntax categories between function arguments and return values, which
can be confusing to read, especially in unsafe code.
This lint supersedes the warn-by-default `elided_named_lifetimes` lint.
- [Expand `unpredictable_function_pointer_comparisons` to also lint on
function pointer comparisons in external
macros](https://redirect.github.com/rust-lang/rust/pull/134536)
- [Make the `dangerous_implicit_autorefs` lint
deny-by-default](https://redirect.github.com/rust-lang/rust/pull/141661)
- [Stabilize the avx512 target
features](https://redirect.github.com/rust-lang/rust/pull/138940)
- [Stabilize `kl` and `widekl` target features for
x86](https://redirect.github.com/rust-lang/rust/pull/140766)
- [Stabilize `sha512`, `sm3` and `sm4` target features for
x86](https://redirect.github.com/rust-lang/rust/pull/140767)
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`,
`lbt`, `lsx`, and
`lvz`](https://redirect.github.com/rust-lang/rust/pull/135015)
- [Remove `i128` and `u128` from
`improper_ctypes_definitions`](https://redirect.github.com/rust-lang/rust/pull/137306)
- [Stabilize `repr128` (`#[repr(u128)]`,
`#[repr(i128)]`)](https://redirect.github.com/rust-lang/rust/pull/138285)
- [Allow `#![doc(test(attr(..)))]`
everywhere](https://redirect.github.com/rust-lang/rust/pull/140560)
- [Extend temporary lifetime extension to also go through tuple struct
and tuple variant
constructors](https://redirect.github.com/rust-lang/rust/pull/140593)
- [`extern "C"` functions on the `wasm32-unknown-unknown` target now
have a standards compliant
ABI](https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/)

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

## Compiler

- [Default to non-leaf frame pointers on
aarch64-linux](https://redirect.github.com/rust-lang/rust/pull/140832)
- [Enable non-leaf frame pointers for Arm64EC
Windows](https://redirect.github.com/rust-lang/rust/pull/140862)
- [Set Apple frame pointers by
architecture](https://redirect.github.com/rust-lang/rust/pull/141797)

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

## Platform Support

- [Add new Tier-3 targets `loongarch32-unknown-none` and
`loongarch32-unknown-none-softfloat`](https://redirect.github.com/rust-lang/rust/pull/142053)
- [`x86_64-apple-darwin` is in the process of being demoted to Tier 2
with host tools](https://redirect.github.com/rust-lang/rfcs/pull/3841)

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

## Libraries

- [Specify the base path for
`file!`](https://redirect.github.com/rust-lang/rust/pull/134442)
- [Allow storing `format_args!()` in a
variable](https://redirect.github.com/rust-lang/rust/pull/140748)
- [Add `#[must_use]` to `[T;
N]::map`](https://redirect.github.com/rust-lang/rust/pull/140957)
- [Implement `DerefMut` for
`Lazy{Cell,Lock}`](https://redirect.github.com/rust-lang/rust/pull/129334)
- [Implement `Default` for
`array::IntoIter`](https://redirect.github.com/rust-lang/rust/pull/141574)
- [Implement `Clone` for
`slice::ChunkBy`](https://redirect.github.com/rust-lang/rust/pull/138016)
- [Implement `io::Seek` for
`io::Take`](https://redirect.github.com/rust-lang/rust/pull/138023)

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

## Stabilized APIs

-
[`NonZero<char>`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
- Many intrinsics for x86, not enumerated here
- [AVX512
intrinsics](https://redirect.github.com/rust-lang/rust/issues/111137)
- [`SHA512`, `SM3` and `SM4`
intrinsics](https://redirect.github.com/rust-lang/rust/issues/126624)
-
[`File::lock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
-
[`File::lock_shared`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
-
[`File::try_lock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
-
[`File::try_lock_shared`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
-
[`File::unlock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
-
[`NonNull::from_ref`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
-
[`NonNull::from_mut`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
-
[`NonNull::without_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
-
[`NonNull::with_exposed_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
-
[`NonNull::expose_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
-
[`OsString::leak`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
-
[`PathBuf::leak`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
-
[`Result::flatten`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
-
[`std::os::linux::net::TcpStreamExt::quickack`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
-
[`std::os::linux::net::TcpStreamExt::set_quickack`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)

These previously stable APIs are now stable in const contexts:

- [`<[T;
N]>::as_mut_slice`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
-
[`<[u8]>::eq_ignore_ascii_case`](https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
-
[`str::eq_ignore_ascii_case`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)

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

## Cargo

- [`cargo fix` and `cargo clippy --fix` now default to the same Cargo
target selection as other build
commands.](https://redirect.github.com/rust-lang/cargo/pull/15192/)
Previously it would apply to all targets (like binaries, examples,
tests, etc.). The `--edition` flag still applies to all targets.
- [Stabilize
doctest-xcompile.](https://redirect.github.com/rust-lang/cargo/pull/15462/)
Doctests are now tested when cross-compiling. Just like other tests, it
will use the [`runner`
setting](https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner)
to run the tests. If you need to disable tests for a target, you can use
the [ignore doctest
attribute](https://doc.rust-lang.org/rustdoc/write-documentation/documentation-tests.html#ignoring-targets)
to specify the targets to ignore.

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

## Rustdoc

- [On mobile, make the sidebar full width and
linewrap](https://redirect.github.com/rust-lang/rust/pull/139831). This
makes long section and item names much easier to deal with on mobile.

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

## Compatibility Notes

- [Make `missing_fragment_specifier` an unconditional
error](https://redirect.github.com/rust-lang/rust/pull/128425)
- [Enabling the `neon` target feature on
`aarch64-unknown-none-softfloat` causes a
warning](https://redirect.github.com/rust-lang/rust/pull/135160) because
mixing code with and without that target feature is not properly
supported by LLVM
- [Sized Hierarchy: Part
I](https://redirect.github.com/rust-lang/rust/pull/137944)
- Introduces a small breaking change affecting `?Sized` bounds on impls
on recursive types which contain associated type projections. It is not
expected to affect any existing published crates. Can be fixed by
refactoring the involved types or opting into the `sized_hierarchy`
unstable feature. See the [FCP
report](https://redirect.github.com/rust-lang/rust/pull/137944#issuecomment-2912207485)
for a code example.
- The warn-by-default `elided_named_lifetimes` lint is [superseded by
the warn-by-default `mismatched_lifetime_syntaxes`
lint.](https://redirect.github.com/rust-lang/rust/pull/138677)
- [Error on recursive opaque types earlier in the type
checker](https://redirect.github.com/rust-lang/rust/pull/139419)
- [Type inference side effects from requiring element types of array
repeat expressions are `Copy` are now only available at the end of type
checking](https://redirect.github.com/rust-lang/rust/pull/139635)
- [The deprecated accidentally-stable
`std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now proper
intrinsics](https://redirect.github.com/rust-lang/rust/pull/139916).
There are no debug assertions guarding against UB, and they cannot be
coerced to function pointers.
- [Remove long-deprecated
`std::intrinsics::drop_in_place`](https://redirect.github.com/rust-lang/rust/pull/140151)
- [Make well-formedness predicates no longer
coinductive](https://redirect.github.com/rust-lang/rust/pull/140208)
- [Remove hack when checking impl method
compatibility](https://redirect.github.com/rust-lang/rust/pull/140557)
- [Remove unnecessary type inference due to built-in trait object
impls](https://redirect.github.com/rust-lang/rust/pull/141352)
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32
targets](https://redirect.github.com/rust-lang/rust/pull/141435)
- [Future incompatibility warnings relating to the never type (`!`) are
now reported in
dependencies](https://redirect.github.com/rust-lang/rust/pull/141937)
- [Ensure `std::ptr::copy_*` intrinsics also perform the static
self-init
checks](https://redirect.github.com/rust-lang/rust/pull/142575)
- [`extern "C"` functions on the `wasm32-unknown-unknown` target now
have a standards compliant
ABI](https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/)

<a id="1.89.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.

- [Correctly un-remap compiler sources paths with the `rustc-dev`
component](https://redirect.github.com/rust-lang/rust/pull/142377)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS41MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuNTEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-07 14:28:22 +00:00
renovate[bot] f5d270bf7a chore(deps): Update Rust Stable to v1.88 (#28)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [STABLE](https://redirect.github.com/rust-lang/rust) | minor | `1.87`
-> `1.88` |

---

### Release Notes

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

###
[`v1.88`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1880-2025-06-26)

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

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

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

## Language

- [Stabilize `#![feature(let_chains)]` in the 2024
edition.](https://redirect.github.com/rust-lang/rust/pull/132833)
This feature allows `&&`-chaining `let` statements inside `if` and
`while`, allowing intermixture with boolean expressions. The patterns
inside the `let` sub-expressions can be irrefutable or refutable.
- [Stabilize
`#![feature(naked_functions)]`.](https://redirect.github.com/rust-lang/rust/pull/134213)
Naked functions allow writing functions with no compiler-generated
epilogue and prologue, allowing full control over the generated assembly
for a particular function.
- [Stabilize
`#![feature(cfg_boolean_literals)]`.](https://redirect.github.com/rust-lang/rust/pull/138632)
This allows using boolean literals as `cfg` predicates, e.g.
`#[cfg(true)]` and `#[cfg(false)]`.
- [Fully de-stabilize the `#[bench]`
attribute](https://redirect.github.com/rust-lang/rust/pull/134273).
Usage of `#[bench]` without `#![feature(custom_test_frameworks)]`
already triggered a deny-by-default future-incompatibility lint since
Rust 1.77, but will now become a hard error.
- [Add warn-by-default `dangerous_implicit_autorefs` lint against
implicit autoref of raw pointer
dereference.](https://redirect.github.com/rust-lang/rust/pull/123239)
The lint [will be bumped to
deny-by-default](https://redirect.github.com/rust-lang/rust/pull/141661)
in the next version of Rust.
- [Add `invalid_null_arguments` lint to prevent invalid usage of null
pointers.](https://redirect.github.com/rust-lang/rust/pull/119220)
  This lint is uplifted from `clippy::invalid_null_ptr_usage`.
- [Change trait impl candidate preference for builtin impls and trivial
where-clauses.](https://redirect.github.com/rust-lang/rust/pull/138176)
- [Check types of generic const parameter
defaults](https://redirect.github.com/rust-lang/rust/pull/139646)

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

## Compiler

- [Stabilize `-Cdwarf-version` for selecting the version of DWARF debug
information to
generate.](https://redirect.github.com/rust-lang/rust/pull/136926)

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

## Platform Support

- [Demote `i686-pc-windows-gnu` to Tier
2.](https://blog.rust-lang.org/2025/05/26/demoting-i686-pc-windows-gnu/)

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

## Libraries

- [Remove backticks from `#[should_panic]` test failure
message.](https://redirect.github.com/rust-lang/rust/pull/136160)
- [Guarantee that `[T; N]::from_fn` is generated in order of increasing
indices.](https://redirect.github.com/rust-lang/rust/pull/139099), for
those passing it a stateful closure.
- [The libtest flag `--nocapture` is deprecated in favor of the more
consistent `--no-capture`
flag.](https://redirect.github.com/rust-lang/rust/pull/139224)
- [Guarantee that `{float}::NAN` is a quiet
NaN.](https://redirect.github.com/rust-lang/rust/pull/139483)

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

## Stabilized APIs

-
[`Cell::update`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.update)
- [`impl Default for *const
T`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*const+T)
- [`impl Default for *mut
T`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*mut+T)
-
[`HashMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.extract_if)
-
[`HashSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.extract_if)
-
[`proc_macro::Span::line`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.line)
-
[`proc_macro::Span::column`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.column)
-
[`proc_macro::Span::start`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.start)
-
[`proc_macro::Span::end`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.end)
-
[`proc_macro::Span::file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.file)
-
[`proc_macro::Span::local_file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.local_file)

These previously stable APIs are now stable in const contexts:

-
[`NonNull<T>::replace`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.replace)
- [`<*mut
T>::replace`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.replace)
-
[`std::ptr::swap_nonoverlapping`](https://redirect.github.com/rust-lang/rust/pull/137280)
- [`Cell::{replace, get, get_mut, from_mut,
as_slice_of_cells}`](https://redirect.github.com/rust-lang/rust/pull/137928)

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

## Cargo

- [Stabilize automatic garbage
collection.](https://redirect.github.com/rust-lang/cargo/pull/14287/)
- [use `zlib-rs` for gzip compression in rust
code](https://redirect.github.com/rust-lang/cargo/pull/15417/)

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

## Rustdoc

- [Doctests can be ignored based on target names using `ignore-*`
attributes.](https://redirect.github.com/rust-lang/rust/pull/137096)
- [Stabilize the `--test-runtool` and `--test-runtool-arg` CLI options
to specify a program (like qemu) and its arguments to run a
doctest.](https://redirect.github.com/rust-lang/rust/pull/137096)

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

## Compatibility Notes

- [Finish changing the internal representation of pasted
tokens](https://redirect.github.com/rust-lang/rust/pull/124141). Certain
invalid declarative macros that were previously accepted in obscure
circumstances are now correctly rejected by the compiler. Use of a `tt`
fragment specifier can often fix these macros.
- [Fully de-stabilize the `#[bench]`
attribute](https://redirect.github.com/rust-lang/rust/pull/134273).
Usage of `#[bench]` without `#![feature(custom_test_frameworks)]`
already triggered a deny-by-default future-incompatibility lint since
Rust 1.77, but will now become a hard error.
- [Fix borrow checking some always-true
patterns.](https://redirect.github.com/rust-lang/rust/pull/139042)
The borrow checker was overly permissive in some cases, allowing
programs that shouldn't have compiled.
- [Update the minimum external LLVM to
19.](https://redirect.github.com/rust-lang/rust/pull/139275)
- [Make it a hard error to use a vector type with a non-Rust ABI without
enabling the required target
feature.](https://redirect.github.com/rust-lang/rust/pull/139309)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC42Mi4xIiwidXBkYXRlZEluVmVyIjoiNDAuNjIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-26 20:57:00 +00:00
renovate[bot] b8a7ea49d9 chore(deps): Update Rust Stable to v1.87 (#18)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [STABLE](https://redirect.github.com/rust-lang/rust) | minor | `1.76`
-> `1.87` |

---

### Release Notes

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

###
[`v1.87`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1870-2025-05-15)

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

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

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

## Language

- [Stabilize `asm_goto`
feature](https://redirect.github.com/rust-lang/rust/pull/133870)
- [Allow parsing open beginning ranges (`..EXPR`) after unary operators
`!`, `-`, and
`*`](https://redirect.github.com/rust-lang/rust/pull/134900).
- [Don't require method impls for methods with `Self: Sized` bounds in
`impl`s for unsized
types](https://redirect.github.com/rust-lang/rust/pull/135480)
- [Stabilize `feature(precise_capturing_in_traits)` allowing `use<...>`
bounds on return position `impl Trait` in
`trait`s](https://redirect.github.com/rust-lang/rust/pull/138128)

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

## Compiler

- [x86: make SSE2 required for i686 targets and use it to pass SIMD
types](https://redirect.github.com/rust-lang/rust/pull/135408)

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

## Platform Support

- [Remove `i586-pc-windows-msvc`
target](https://redirect.github.com/rust-lang/rust/pull/137957)

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

## Libraries

- [Stabilize the anonymous pipe
API](https://redirect.github.com/rust-lang/rust/issues/127154)
- [Add support for unbounded left/right shift
operations](https://redirect.github.com/rust-lang/rust/issues/129375)
- [Print pointer metadata in `Debug` impl of raw
pointers](https://redirect.github.com/rust-lang/rust/pull/135080)
- [`Vec::with_capacity` guarantees it allocates with the amount
requested, even if `Vec::capacity` returns a different
number.](https://redirect.github.com/rust-lang/rust/pull/135933)
- Most `std::arch` intrinsics which don't take pointer arguments can now
be called from safe code if the caller has the appropriate target
features already enabled
([https://github.com/rust-lang/stdarch/pull/1714](https://redirect.github.com/rust-lang/stdarch/pull/1714),
[https://github.com/rust-lang/stdarch/pull/1716](https://redirect.github.com/rust-lang/stdarch/pull/1716),
[https://github.com/rust-lang/stdarch/pull/1717](https://redirect.github.com/rust-lang/stdarch/pull/1717))
- [Undeprecate
`env::home_dir`](https://redirect.github.com/rust-lang/rust/pull/137327)
- [Denote `ControlFlow` as
`#[must_use]`](https://redirect.github.com/rust-lang/rust/pull/137449)
- [Macros such as `assert_eq!` and `vec!` now support `const {...}`
expressions](https://redirect.github.com/rust-lang/rust/pull/138162)

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

## Stabilized APIs

-
[`Vec::extract_if`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.extract_if)
-
[`vec::ExtractIf`](https://doc.rust-lang.org/stable/std/vec/struct.ExtractIf.html)
-
[`LinkedList::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.extract_if)
-
[`linked_list::ExtractIf`](https://doc.rust-lang.org/stable/std/collections/linked_list/struct.ExtractIf.html)
-
[`<[T]>::split_off`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off)
-
[`<[T]>::split_off_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_mut)
-
[`<[T]>::split_off_first`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first)
-
[`<[T]>::split_off_first_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first_mut)
-
[`<[T]>::split_off_last`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last)
-
[`<[T]>::split_off_last_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last_mut)
-
[`String::extend_from_within`](https://doc.rust-lang.org/stable/alloc/string/struct.String.html#method.extend_from_within)
-
[`os_str::Display`](https://doc.rust-lang.org/stable/std/ffi/os_str/struct.Display.html)
-
[`OsString::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.display)
-
[`OsStr::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.display)
-   [`io::pipe`](https://doc.rust-lang.org/stable/std/io/fn.pipe.html)
-
[`io::PipeReader`](https://doc.rust-lang.org/stable/std/io/struct.PipeReader.html)
-
[`io::PipeWriter`](https://doc.rust-lang.org/stable/std/io/struct.PipeWriter.html)
- [`impl From<PipeReader> for
OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeReader%3E-for-OwnedHandle)
- [`impl From<PipeWriter> for
OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeWriter%3E-for-OwnedHandle)
- [`impl From<PipeReader> for
Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html)
- [`impl From<PipeWriter> for
Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CPipeWriter%3E-for-Stdio)
- [`impl From<PipeReader> for
OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeReader%3E-for-OwnedFd)
- [`impl From<PipeWriter> for
OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeWriter%3E-for-OwnedFd)
-
[`Box<MaybeUninit<T>>::write`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.write)
- [`impl TryFrom<Vec<u8>> for
String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-TryFrom%3CVec%3Cu8%3E%3E-for-String)
- [`<*const
T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned)
- [`<*const
T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned)
- [`<*mut
T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned-1)
- [`<*mut
T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned-1)
-
[`NonNull::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset_from_unsigned)
-
[`NonNull::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset_from_unsigned)
-
[`<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.cast_signed)
-
[`NonZero::<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_signed-5).
-
[`<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.cast_unsigned).
-
[`NonZero::<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_unsigned-5).
-
[`<uN>::is_multiple_of`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.is_multiple_of)
-
[`<uN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shl)
-
[`<uN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shr)
-
[`<iN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shl)
-
[`<iN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shr)
-
[`<iN>::midpoint`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.midpoint)
-
[`<str>::from_utf8`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8)
-
[`<str>::from_utf8_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_mut)
-
[`<str>::from_utf8_unchecked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_unchecked)
-
[`<str>::from_utf8_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_unchecked_mut)

These previously stable APIs are now stable in const contexts:

-
[`core::str::from_utf8_mut`](https://doc.rust-lang.org/stable/std/str/fn.from_utf8\_mut.html)
-
[`<[T]>::copy_from_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.copy_from_slice)
-
[`SocketAddr::set_ip`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_ip)
-
[`SocketAddr::set_port`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_port),
-
[`SocketAddrV4::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_ip)
-
[`SocketAddrV4::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_port),
-
[`SocketAddrV6::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_ip)
-
[`SocketAddrV6::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_port)
-
[`SocketAddrV6::set_flowinfo`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_flowinfo)
-
[`SocketAddrV6::set_scope_id`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_scope_id)
-
[`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit)
-
[`char::is_whitespace`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_whitespace)
- [`<[[T;
N]]>::as_flattened`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened)
- [`<[[T;
N]]>::as_flattened_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened_mut)
-
[`String::into_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_bytes)
-
[`String::as_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_str)
-
[`String::capacity`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.capacity)
-
[`String::as_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_bytes)
-
[`String::len`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.len)
-
[`String::is_empty`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.is_empty)
-
[`String::as_mut_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_str)
-
[`String::as_mut_vec`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_vec)
-
[`Vec::as_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_ptr)
-
[`Vec::as_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_slice)
-
[`Vec::capacity`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.capacity)
-
[`Vec::len`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.len)
-
[`Vec::is_empty`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.is_empty)
-
[`Vec::as_mut_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_slice)
-
[`Vec::as_mut_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_ptr)

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

## Cargo

- [Add terminal integration via ANSI OSC 9;4
sequences](https://redirect.github.com/rust-lang/cargo/pull/14615/)
- [chore: bump openssl to
v3](https://redirect.github.com/rust-lang/cargo/pull/15232/)
- [feat(package): add --exclude-lockfile
flag](https://redirect.github.com/rust-lang/cargo/pull/15234/)

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

## Compatibility Notes

- [Rust now raises an error for macro invocations inside the
`#![crate_name]`
attribute](https://redirect.github.com/rust-lang/rust/pull/127581)
- [Unstable fields are now always considered to be
inhabited](https://redirect.github.com/rust-lang/rust/pull/133889)
- [Macro arguments of unary operators followed by open beginning ranges
may now be matched
differently](https://redirect.github.com/rust-lang/rust/pull/134900)
- [Make `Debug` impl of raw pointers print metadata if
present](https://redirect.github.com/rust-lang/rust/pull/135080)
- [Warn against function pointers using unsupported ABI strings in
dependencies](https://redirect.github.com/rust-lang/rust/pull/135767)
- [Associated types on `dyn` types are no longer
deduplicated](https://redirect.github.com/rust-lang/rust/pull/136458)
- [Forbid attributes on `..` inside of struct patterns (`let Struct {
#[attribute] .. })
=`](https://redirect.github.com/rust-lang/rust/pull/136490)
- [Make `ptr_cast_add_auto_to_object` lint into hard
error](https://redirect.github.com/rust-lang/rust/pull/136764)
- Many `std::arch` intrinsics are now safe to call in some contexts,
there may now be new `unused_unsafe` warnings in existing codebases.
- [Limit `width` and `precision` formatting options to 16 bits on all
targets](https://redirect.github.com/rust-lang/rust/pull/136932)
- [Turn order dependent trait objects future incompat warning into a
hard error](https://redirect.github.com/rust-lang/rust/pull/136968)
- [Denote `ControlFlow` as
`#[must_use]`](https://redirect.github.com/rust-lang/rust/pull/137449)
- [Windows: The standard library no longer links `advapi32`, except on
win7.](https://redirect.github.com/rust-lang/rust/pull/138233) Code such
as C libraries that were relying on this assumption may need to
explicitly link advapi32.
- [Proc macros can no longer observe expanded `cfg(true)`
attributes.](https://redirect.github.com/rust-lang/rust/pull/138844)
- [Start changing the internal representation of pasted
tokens](https://redirect.github.com/rust-lang/rust/pull/124141). Certain
invalid declarative macros that were previously accepted in obscure
circumstances are now correctly rejected by the compiler. Use of a `tt`
fragment specifier can often fix these macros.
- [Don't allow flattened format_args in
const.](https://redirect.github.com/rust-lang/rust/pull/139624)

<a id="1.87.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.

- [Update to LLVM
20](https://redirect.github.com/rust-lang/rust/pull/135763)

###
[`v1.86`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1860-2025-04-03)

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

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

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

## Language

- [Stabilize upcasting trait objects to
supertraits.](https://redirect.github.com/rust-lang/rust/pull/134367)
- [Allow safe functions to be marked with the `#[target_feature]`
attribute.](https://redirect.github.com/rust-lang/rust/pull/134090)
- [The `missing_abi` lint now
warns-by-default.](https://redirect.github.com/rust-lang/rust/pull/132397)
- Rust now lints about double negations, to catch cases that might have
intended to be a prefix decrement operator (`--x`) as written in other
languages. This was previously a clippy lint, `clippy::double_neg`, and
is [now available directly in Rust as
`double_negations`.](https://redirect.github.com/rust-lang/rust/pull/126604)
- [More pointers are now detected as definitely not-null based on their
alignment in const
eval.](https://redirect.github.com/rust-lang/rust/pull/133700)
- [Empty `repr()` attribute applied to invalid items are now correctly
rejected.](https://redirect.github.com/rust-lang/rust/pull/133925)
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer
accepted in more places than
intended.](https://redirect.github.com/rust-lang/rust/pull/134276)

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

## Compiler

- [Debug-assert that raw pointers are non-null on
access.](https://redirect.github.com/rust-lang/rust/pull/134424)
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2` to
match Cargo's
defaults.](https://redirect.github.com/rust-lang/rust/pull/135439)
- [Fix emission of `overflowing_literals` under certain macro
environments.](https://redirect.github.com/rust-lang/rust/pull/136393)

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

## Platform Support

- [Replace `i686-unknown-redox` target with
`i586-unknown-redox`.](https://redirect.github.com/rust-lang/rust/pull/136698)
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium
4.](https://redirect.github.com/rust-lang/rust/pull/136700)
-   New tier 3 targets:
-
[`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`](https://redirect.github.com/rust-lang/rust/pull/133631).
        For supporting Neutrino QNX 7.1 with `io-socket` network stack.
-
[`{aarch64-unknown,x86_64-pc}-nto-qnx800`](https://redirect.github.com/rust-lang/rust/pull/133631).
        For supporting Neutrino QNX 8.0 (`no_std`-only).
-
[`{x86_64,i686}-win7-windows-gnu`](https://redirect.github.com/rust-lang/rust/pull/134609).
Intended for backwards compatibility with Windows 7.
`{x86_64,i686}-win7-windows-msvc` are the Windows MSVC counterparts that
already exist as Tier 3 targets.
-
[`amdgcn-amd-amdhsa`](https://redirect.github.com/rust-lang/rust/pull/134740).
-
[`x86_64-pc-cygwin`](https://redirect.github.com/rust-lang/rust/pull/134999).
-
[`{mips,mipsel}-mti-none-elf`](https://redirect.github.com/rust-lang/rust/pull/135074).
        Initial bare-metal support.
-
[`m68k-unknown-none-elf`](https://redirect.github.com/rust-lang/rust/pull/135085).
- [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and
`thumbv7a-nuttx-{eabi,eabihf}`](https://redirect.github.com/rust-lang/rust/pull/135757).

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

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

## Libraries

- The type of `FromBytesWithNulError` in
`CStr::from_bytes_with_nul(bytes: &[u8]) -> Result<&Self,
FromBytesWithNulError>` was [changed from an opaque struct to an
enum](https://redirect.github.com/rust-lang/rust/pull/134143), allowing
users to examine why the conversion failed.
- [Remove `RustcDecodable` and
`RustcEncodable`.](https://redirect.github.com/rust-lang/rust/pull/134272)
- [Deprecate libtest's `--logfile`
option.](https://redirect.github.com/rust-lang/rust/pull/134283)
- [On recent versions of Windows, `std::fs::remove_file` will now remove
read-only
files.](https://redirect.github.com/rust-lang/rust/pull/134679)

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

## Stabilized APIs

-
[`{float}::next_down`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_down)
-
[`{float}::next_up`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_up)
-
[`<[_]>::get_disjoint_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_mut)
-
[`<[_]>::get_disjoint_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_unchecked_mut)
-
[`slice::GetDisjointMutError`](https://doc.rust-lang.org/stable/std/slice/enum.GetDisjointMutError.html)
-
[`HashMap::get_disjoint_mut`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_mut)
-
[`HashMap::get_disjoint_unchecked_mut`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_unchecked_mut)
-
[`NonZero::count_ones`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.count_ones)
-
[`Vec::pop_if`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.pop_if)
-
[`sync::Once::wait`](https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait)
-
[`sync::Once::wait_force`](https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait_force)
-
[`sync::OnceLock::wait`](https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html#method.wait)

These APIs are now stable in const contexts:

-
[`hint::black_box`](https://doc.rust-lang.org/stable/std/hint/fn.black_box.html)
-
[`io::Cursor::get_mut`](https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_mut)
-
[`io::Cursor::set_position`](https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.set_position)
-
[`str::is_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.is_char_boundary)
-
[`str::split_at`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at)
-
[`str::split_at_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_checked)
-
[`str::split_at_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut)
-
[`str::split_at_mut_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut_checked)

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

## Cargo

- [When merging, replace rather than combine configuration keys that
refer to a program path and its
arguments.](https://redirect.github.com/rust-lang/cargo/pull/15066/)
- [Error if both `--package` and `--workspace` are passed but the
requested package is
missing.](https://redirect.github.com/rust-lang/cargo/pull/15071/) This
was previously silently ignored, which was considered a bug since
missing packages should be reported.
- [Deprecate the token argument in `cargo login` to avoid shell history
leaks.](https://redirect.github.com/rust-lang/cargo/pull/15057/)
- [Simplify the implementation of `SourceID`
comparisons.](https://redirect.github.com/rust-lang/cargo/pull/14980/)
This may potentially change behavior if the canonicalized URL compares
differently in alternative registries.

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

## Rustdoc

- [Add a sans-serif font
setting.](https://redirect.github.com/rust-lang/rust/pull/133636)

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

## Compatibility Notes

- [The `wasm_c_abi` future compatibility warning is now a hard
error.](https://redirect.github.com/rust-lang/rust/pull/133951)
Users of `wasm-bindgen` should upgrade to at least version 0.2.89,
otherwise compilation will fail.
- [Remove long-deprecated no-op attributes `#![no_start]` and
`#![crate_id]`.](https://redirect.github.com/rust-lang/rust/pull/134300)
- [The future incompatibility lint `cenum_impl_drop_cast` has been made
into a hard
error.](https://redirect.github.com/rust-lang/rust/pull/135964) This
means it is now an error to cast a field-less enum to an integer if the
enum implements `Drop`.
- [SSE2 is now required for "i686" 32-bit x86 hard-float targets;
disabling it causes a warning that will become a hard error
eventually.](https://redirect.github.com/rust-lang/rust/pull/137037)
    To compile for pre-SSE2 32-bit x86, use a "i586" target instead.

<a id="1.86.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.

- [Build the rustc on AArch64 Linux with ThinLTO +
PGO.](https://redirect.github.com/rust-lang/rust/pull/133807)
The ARM 64-bit compiler (AArch64) on Linux is now optimized with ThinLTO
and PGO, similar to the optimizations we have already performed for the
x86-64 compiler on Linux. This should make it up to 30% faster.

###
[`v1.85`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1851-2025-03-18)

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

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

<a id="1.85.1"></a>

- [Fix the doctest-merging feature of the 2024
Edition.](https://redirect.github.com/rust-lang/rust/pull/137899/)
- [Relax some `target_feature` checks when generating
docs.](https://redirect.github.com/rust-lang/rust/pull/137632/)
- [Fix errors in `std::fs::rename` on Windows 10, version
1607.](https://redirect.github.com/rust-lang/rust/pull/137528/)
- [Downgrade bootstrap `cc` to fix custom
targets.](https://redirect.github.com/rust-lang/rust/pull/137460/)
- [Skip submodule updates when building Rust from a source
tarball.](https://redirect.github.com/rust-lang/rust/pull/137338/)

###
[`v1.84`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1841-2025-01-30)

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

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

<a id="1.84.1"></a>

- [Fix ICE 132920 in duplicate-crate
diagnostics.](https://redirect.github.com/rust-lang/rust/pull/133304/)
- [Fix errors for overlapping impls in incremental
rebuilds.](https://redirect.github.com/rust-lang/rust/pull/133828/)
- [Fix slow compilation related to the next-generation trait
solver.](https://redirect.github.com/rust-lang/rust/pull/135618/)
- [Fix debuginfo when LLVM's location discriminator value limit is
exceeded.](https://redirect.github.com/rust-lang/rust/pull/135643/)
-   Fixes for building Rust from source:
- [Only try to distribute `llvm-objcopy` if llvm tools are
enabled.](https://redirect.github.com/rust-lang/rust/pull/134240/)
- [Add Profile Override for Non-Git
Sources.](https://redirect.github.com/rust-lang/rust/pull/135433/)
- [Resolve symlinks of LLVM tool binaries before copying
them.](https://redirect.github.com/rust-lang/rust/pull/135585/)
- [Make it possible to use ci-rustc on tarball
sources.](https://redirect.github.com/rust-lang/rust/pull/135722/)

###
[`v1.83`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1830-2024-11-28)

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

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

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

## Language

- [Stabilize `&mut`, `*mut`, `&Cell`, and `*const Cell` in
const.](https://redirect.github.com/rust-lang/rust/pull/129195)
- [Allow creating references to statics in `const`
initializers.](https://redirect.github.com/rust-lang/rust/pull/129759)
- [Implement raw lifetimes and labels
(`'r#ident`).](https://redirect.github.com/rust-lang/rust/pull/126452)
- [Define behavior when atomic and non-atomic reads
race.](https://redirect.github.com/rust-lang/rust/pull/128778)
- [Non-exhaustive structs may now be
empty.](https://redirect.github.com/rust-lang/rust/pull/128934)
- [Disallow implicit coercions from places of type
`!`](https://redirect.github.com/rust-lang/rust/pull/129392)
- [`const extern` functions can now be defined for other calling
conventions.](https://redirect.github.com/rust-lang/rust/pull/129753)
- [Stabilize `expr_2021` macro fragment specifier in all
editions.](https://redirect.github.com/rust-lang/rust/pull/129972)
- [The `non_local_definitions` lint now fires on less code and warns by
default.](https://redirect.github.com/rust-lang/rust/pull/127117)

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

## Compiler

- [Deprecate unsound `-Csoft-float`
flag.](https://redirect.github.com/rust-lang/rust/pull/129897)
-   Add many new tier 3 targets:
-
[`aarch64_unknown_nto_qnx700`](https://redirect.github.com/rust-lang/rust/pull/127897)
-
[`arm64e-apple-tvos`](https://redirect.github.com/rust-lang/rust/pull/130614)
-
[`armv7-rtems-eabihf`](https://redirect.github.com/rust-lang/rust/pull/127021)
-
[`loongarch64-unknown-linux-ohos`](https://redirect.github.com/rust-lang/rust/pull/130750)
- [`riscv32-wrs-vxworks` and
`riscv64-wrs-vxworks`](https://redirect.github.com/rust-lang/rust/pull/130549)
-
[`riscv32{e|em|emc}-unknown-none-elf`](https://redirect.github.com/rust-lang/rust/pull/130555)
-
[`x86_64-unknown-hurd-gnu`](https://redirect.github.com/rust-lang/rust/pull/128345)
-
[`x86_64-unknown-trusty`](https://redirect.github.com/rust-lang/rust/pull/130453)

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

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

## Libraries

- [Implement `PartialEq` for
`ExitCode`.](https://redirect.github.com/rust-lang/rust/pull/127633)
- [Document that `catch_unwind` can deal with foreign exceptions without
UB, although the exact behavior is
unspecified.](https://redirect.github.com/rust-lang/rust/pull/128321)
- [Implement `Default` for `HashMap`/`HashSet` iterators that don't
already have
it.](https://redirect.github.com/rust-lang/rust/pull/128711)
- [Bump Unicode to version
16.0.0.](https://redirect.github.com/rust-lang/rust/pull/130183)
- [Change documentation of `ptr::add`/`sub` to not claim equivalence
with `offset`.](https://redirect.github.com/rust-lang/rust/pull/130229)

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

## Stabilized APIs

-
[`BufRead::skip_until`](https://doc.rust-lang.org/stable/std/io/trait.BufRead.html#method.skip_until)
-
[`ControlFlow::break_value`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.break_value)
-
[`ControlFlow::continue_value`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.continue_value)
-
[`ControlFlow::map_break`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_break)
-
[`ControlFlow::map_continue`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_continue)
-
[`DebugList::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugList.html#method.finish_non_exhaustive)
-
[`DebugMap::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugMap.html#method.finish_non_exhaustive)
-
[`DebugSet::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugSet.html#method.finish_non_exhaustive)
-
[`DebugTuple::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugTuple.html#method.finish_non_exhaustive)
-
[`ErrorKind::ArgumentListTooLong`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ArgumentListTooLong)
-
[`ErrorKind::Deadlock`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.Deadlock)
-
[`ErrorKind::DirectoryNotEmpty`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.DirectoryNotEmpty)
-
[`ErrorKind::ExecutableFileBusy`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ExecutableFileBusy)
-
[`ErrorKind::FileTooLarge`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.FileTooLarge)
-
[`ErrorKind::HostUnreachable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.HostUnreachable)
-
[`ErrorKind::IsADirectory`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.IsADirectory)
-
[`ErrorKind::NetworkDown`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NetworkDown)
-
[`ErrorKind::NetworkUnreachable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NetworkUnreachable)
-
[`ErrorKind::NotADirectory`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NotADirectory)
-
[`ErrorKind::NotSeekable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NotSeekable)
-
[`ErrorKind::ReadOnlyFilesystem`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ReadOnlyFilesystem)
-
[`ErrorKind::ResourceBusy`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ResourceBusy)
-
[`ErrorKind::StaleNetworkFileHandle`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.StaleNetworkFileHandle)
-
[`ErrorKind::StorageFull`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.StorageFull)
-
[`ErrorKind::TooManyLinks`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.TooManyLinks)
-
[`Option::get_or_insert_default`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.get_or_insert_default)
-
[`Waker::data`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.data)
-
[`Waker::new`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.new)
-
[`Waker::vtable`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.vtable)
-
[`char::MIN`](https://doc.rust-lang.org/stable/core/primitive.char.html#associatedconstant.MIN)
-
[`hash_map::Entry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/hash_map/enum.Entry.html#method.insert_entry)
-
[`hash_map::VacantEntry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/hash_map/struct.VacantEntry.html#method.insert_entry)

These APIs are now stable in const contexts:

-
[`Cell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.Cell.html#method.into_inner)
-
[`Duration::as_secs_f32`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.as_secs_f32)
-
[`Duration::as_secs_f64`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.as_secs_f64)
-
[`Duration::div_duration_f32`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.div_duration_f32)
-
[`Duration::div_duration_f64`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.div_duration_f64)
-
[`MaybeUninit::as_mut_ptr`](https://doc.rust-lang.org/stable/core/mem/union.MaybeUninit.html#method.as_mut_ptr)
-
[`NonNull::as_mut`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.as_mut)
-
[`NonNull::copy_from`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_from)
-
[`NonNull::copy_from_nonoverlapping`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_from_nonoverlapping)
-
[`NonNull::copy_to`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_to)
-
[`NonNull::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_to_nonoverlapping)
-
[`NonNull::slice_from_raw_parts`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.slice_from_raw_parts)
-
[`NonNull::write`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write)
-
[`NonNull::write_bytes`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write_bytes)
-
[`NonNull::write_unaligned`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write_unaligned)
-
[`OnceCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.OnceCell.html#method.into_inner)
-
[`Option::as_mut`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.as_mut)
-
[`Option::expect`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.expect)
-
[`Option::replace`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.replace)
-
[`Option::take`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.take)
-
[`Option::unwrap`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.unwrap)
-
[`Option::unwrap_unchecked`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.unwrap_unchecked)
-
[`Option::<&_>::copied`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.copied)
- [`Option::<&mut
_>::copied`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.copied-1)
-
[`Option::<Option<_>>::flatten`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.flatten)
- [`Option::<Result<_,
_>>::transpose`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.transpose)
-
[`RefCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.RefCell.html#method.into_inner)
-
[`Result::as_mut`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.as_mut)
- [`Result::<&_,
_>::copied`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.copied)
- [`Result::<&mut _,
_>::copied`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.copied-1)
- [`Result::<Option<_>,
_>::transpose`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.transpose)
-
[`UnsafeCell::get_mut`](https://doc.rust-lang.org/stable/core/cell/struct.UnsafeCell.html#method.get_mut)
-
[`UnsafeCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.UnsafeCell.html#method.into_inner)
-
[`array::from_mut`](https://doc.rust-lang.org/stable/core/array/fn.from_mut.html)
-
[`char::encode_utf8`](https://doc.rust-lang.org/stable/core/primitive.char.html#method.encode_utf8)
-
[`{float}::classify`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.classify)
-
[`{float}::is_finite`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_finite)
-
[`{float}::is_infinite`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_infinite)
-
[`{float}::is_nan`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_nan)
-
[`{float}::is_normal`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_normal)
-
[`{float}::is_sign_negative`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_sign_negative)
-
[`{float}::is_sign_positive`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_sign_positive)
-
[`{float}::is_subnormal`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_subnormal)
-
[`{float}::from_bits`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_bits)
-
[`{float}::from_be_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_be_bytes)
-
[`{float}::from_le_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_le_bytes)
-
[`{float}::from_ne_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_ne_bytes)
-
[`{float}::to_bits`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_bits)
-
[`{float}::to_be_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_be_bytes)
-
[`{float}::to_le_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_le_bytes)
-
[`{float}::to_ne_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_ne_bytes)
-
[`mem::replace`](https://doc.rust-lang.org/stable/core/mem/fn.replace.html)
-
[`ptr::replace`](https://doc.rust-lang.org/stable/core/ptr/fn.replace.html)
-
[`ptr::slice_from_raw_parts_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.slice_from_raw_parts_mut.html)
-
[`ptr::write`](https://doc.rust-lang.org/stable/core/ptr/fn.write.html)
-
[`ptr::write_unaligned`](https://doc.rust-lang.org/stable/core/ptr/fn.write_unaligned.html)
- [`<*const
_>::copy_to`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to)
- [`<*const
_>::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to_nonoverlapping)
- [`<*mut
_>::copy_from`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_from)
- [`<*mut
_>::copy_from_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_from_nonoverlapping)
- [`<*mut
_>::copy_to`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to-1)
- [`<*mut
_>::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to_nonoverlapping-1)
- [`<*mut
_>::write`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write)
- [`<*mut
_>::write_bytes`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write_bytes)
- [`<*mut
_>::write_unaligned`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write_unaligned)
-
[`slice::from_mut`](https://doc.rust-lang.org/stable/core/slice/fn.from_mut.html)
-
[`slice::from_raw_parts_mut`](https://doc.rust-lang.org/stable/core/slice/fn.from_raw_parts_mut.html)
-
[`<[_]>::first_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.first_mut)
-
[`<[_]>::last_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_mut)
-
[`<[_]>::first_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.first_chunk_mut)
-
[`<[_]>::last_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_chunk_mut)
-
[`<[_]>::split_at_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut)
-
[`<[_]>::split_at_mut_checked`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_checked)
-
[`<[_]>::split_at_mut_unchecked`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_unchecked)
-
[`<[_]>::split_first_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_first_mut)
-
[`<[_]>::split_last_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_last_mut)
-
[`<[_]>::split_first_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_first_chunk_mut)
-
[`<[_]>::split_last_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_last_chunk_mut)
-
[`str::as_bytes_mut`](https://doc.rust-lang.org/stable/core/primitive.str.html#method.as_bytes_mut)
-
[`str::as_mut_ptr`](https://doc.rust-lang.org/stable/core/primitive.str.html#method.as_mut_ptr)
-
[`str::from_utf8_unchecked_mut`](https://doc.rust-lang.org/stable/core/str/fn.from_utf8\_unchecked_mut.html)

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

## Cargo

- [Introduced a new `CARGO_MANIFEST_PATH` environment variable, similar
to `CARGO_MANIFEST_DIR` but pointing directly to the manifest
file.](https://redirect.github.com/rust-lang/cargo/pull/14404/)
- [Added `package.autolib` to the manifest, allowing `[lib]`
auto-discovery to be
disabled.](https://redirect.github.com/rust-lang/cargo/pull/14591/)
- [Declare support level for each crate in Cargo's Charter / crate
docs.](https://redirect.github.com/rust-lang/cargo/pull/14600/)
- [Declare new Intentional Artifacts as 'small'
changes.](https://redirect.github.com/rust-lang/cargo/pull/14599/)

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

## Rustdoc

- [The sidebar / hamburger menu table of contents now includes the `#
headers` from the main item's doc
comment](https://redirect.github.com/rust-lang/rust/pull/120736). This
is similar to a third-party feature provided by the
rustdoc-search-enhancements browser extension.

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

## Compatibility Notes

- [Warn against function pointers using unsupported ABI
strings.](https://redirect.github.com/rust-lang/rust/pull/128784)
- [Check well-formedness of the source type's signature in fn pointer
casts.](https://redirect.github.com/rust-lang/rust/pull/129021) This
partly closes a soundness hole that comes when casting a function item
to function pointer
- [Use equality instead of subtyping when resolving type dependent
paths.](https://redirect.github.com/rust-lang/rust/pull/129073)
- Linking on macOS now correctly includes Rust's default deployment
target. Due to a linker bug, you might have to pass
`MACOSX_DEPLOYMENT_TARGET` or fix your `#[link]` attributes to point to
the correct frameworks. See
[#&#8203;129369](https://redirect.github.com/rust-lang/rust/pull/129369).
- [Rust will now correctly raise an error for `repr(Rust)` written on
non-`struct`/`enum`/`union` items, since it previous did not have any
effect.](https://redirect.github.com/rust-lang/rust/pull/129422)
- The future incompatibility lint `deprecated_cfg_attr_crate_type_name`
[has been made into a hard
error](https://redirect.github.com/rust-lang/rust/pull/129670). It was
used to deny usage of `#![crate_type]` and `#![crate_name]` attributes
in `#![cfg_attr]`, which required a hack in the compiler to be able to
change the used crate type and crate name after cfg expansion.
Users can use `--crate-type` instead of `#![cfg_attr(..., crate_type =
"...")]` and `--crate-name` instead of `#![cfg_attr(..., crate_name =
"...")]` when running `rustc`/`cargo rustc` on the command line.
Use of those two attributes outside of `#![cfg_attr]` continue to be
fully supported.
- Until now, paths into the sysroot were always prefixed with
`/rustc/$hash` in diagnostics, codegen, backtrace, e.g.

        thread 'main' panicked at 'hello world', map-panic.rs:2:50
        stack backtrace:
           0: std::panicking::begin_panic
at
/rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:616:12
           1: map_panic::main::{{closure}}
                     at ./map-panic.rs:2:50
           2: core::option::Option<T>::map
at
/rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/option.rs:929:29
           3: map_panic::main
                     at ./map-panic.rs:2:30
           4: core::ops::function::FnOnce::call_once
at
/rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a
verbose backtrace.

[RFC 3127
said](https://rust-lang.github.io/rfcs/3127-trim-paths.html#changing-handling-of-sysroot-path-in-rustc)

> We want to change this behaviour such that, when `rust-src` source
files can be discovered, the virtual path is discarded and therefore the
local path will be embedded, unless there is a `--remap-path-prefix`
that causes this local path to be remapped in the usual way.


[#&#8203;129687](https://redirect.github.com/rust-lang/rust/pull/129687)
implements this behaviour, when `rust-src` is present at compile time,
`rustc` replaces `/rustc/$hash` with a real path into the local
`rust-src` component with best effort.
To sanitize this, users must explicitly supply
`--remap-path-prefix=<path to rust-src>=foo` or not have the `rust-src`
component installed.
- The allow-by-default `missing_docs` lint used to disable itself when
invoked through `rustc --test`/`cargo test`, resulting in
`#[expect(missing_docs)]` emitting false positives due to the
expectation being wrongly unfulfilled. This behavior [has now been
removed](https://redirect.github.com/rust-lang/rust/pull/130025), which
allows `#[expect(missing_docs)]` to be fulfilled in all scenarios, but
will also report new `missing_docs` diagnostics for publicly reachable
`#[cfg(test)]` items, [integration
test](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#integration-tests)
crate-level documentation, and publicly reachable items in integration
tests.
- [The `armv8r-none-eabihf` target now uses the Armv8-R required set of
floating-point
features.](https://redirect.github.com/rust-lang/rust/pull/130295)
- [Fix a soundness bug where rustc wouldn't detect unconstrained
higher-ranked lifetimes in a `dyn Trait`'s associated types that occur
due to
supertraits.](https://redirect.github.com/rust-lang/rust/pull/130367)
- [Update the minimum external LLVM version to
18.](https://redirect.github.com/rust-lang/rust/pull/130487)
- [Remove `aarch64-fuchsia` and `x86_64-fuchsia` target aliases in favor
of `aarch64-unknown-fuchsia` and `x86_64-unknown-fuchsia`
respectively.](https://redirect.github.com/rust-lang/rust/pull/130657)
- [The ABI-level exception class of a Rust panic is now encoded with
native-endian bytes, so it is legible in hex
dumps.](https://redirect.github.com/rust-lang/rust/pull/130897)
- [Visual Studio 2013 is no longer supported for MSVC
targets.](https://redirect.github.com/rust-lang/rust/pull/131070)
- [The sysroot no longer contains the `std` dynamic library in its
top-level `lib/`
dir.](https://redirect.github.com/rust-lang/rust/pull/131188)

###
[`v1.82`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1820-2024-10-17)

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

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

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

## Language

- [Don't make statement nonterminals match pattern
nonterminals](https://redirect.github.com/rust-lang/rust/pull/120221/)
- [Patterns matching empty types can now be omitted in common
cases](https://redirect.github.com/rust-lang/rust/pull/122792)
- [Enforce supertrait outlives obligations when using trait
impls](https://redirect.github.com/rust-lang/rust/pull/124336)
- [`addr_of(_mut)!` macros and the newly stabilized `&raw (const|mut)`
are now safe to use with all static
items](https://redirect.github.com/rust-lang/rust/pull/125834)
- [size_of_val_raw: for length 0 this is safe to
call](https://redirect.github.com/rust-lang/rust/pull/126152/)
- [Reorder trait bound modifiers *after* `for<...>` binder in trait
bounds](https://redirect.github.com/rust-lang/rust/pull/127054/)
- [Stabilize `+ use<'lt>` opaque type precise capturing (RFC
3617)](https://redirect.github.com/rust-lang/rust/pull/127672)
- [Stabilize `&raw const` and `&raw mut` operators (RFC
2582)](https://redirect.github.com/rust-lang/rust/pull/127679)
- [Stabilize unsafe extern blocks (RFC
3484)](https://redirect.github.com/rust-lang/rust/pull/127921)
- [Stabilize nested field access in
`offset_of!`](https://redirect.github.com/rust-lang/rust/pull/128284)
- [Do not require `T` to be live when dropping `[T;
0]`](https://redirect.github.com/rust-lang/rust/pull/128438)
- [Stabilize `const` operands in inline
assembly](https://redirect.github.com/rust-lang/rust/pull/128570)
- [Stabilize floating-point arithmetic in `const
fn`](https://redirect.github.com/rust-lang/rust/pull/128596)
- [Stabilize explicit opt-in to unsafe
attributes](https://redirect.github.com/rust-lang/rust/pull/128771)
- [Document NaN bit patterns
guarantees](https://redirect.github.com/rust-lang/rust/pull/129559)

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

## Compiler

- [Promote riscv64gc-unknown-linux-musl to tier
2](https://redirect.github.com/rust-lang/rust/pull/122049)
- [Promote Mac Catalyst targets `aarch64-apple-ios-macabi` and
`x86_64-apple-ios-macabi` to Tier 2, and ship them with
rustup](https://redirect.github.com/rust-lang/rust/pull/126450)
- [Add tier 3 NuttX based targets for RISC-V and
ARM](https://redirect.github.com/rust-lang/rust/pull/127755)
- [Add tier 3 powerpc-unknown-linux-muslspe
target](https://redirect.github.com/rust-lang/rust/pull/127905)
- [Improved diagnostics to explain why a pattern is
unreachable](https://redirect.github.com/rust-lang/rust/pull/128034)
- [The compiler now triggers the unreachable code warning properly for
async functions that don't return/are `->
!`](https://redirect.github.com/rust-lang/rust/pull/128443)
- [Promote `aarch64-apple-darwin` to Tier
1](https://redirect.github.com/rust-lang/rust/pull/128592)
- [Add Trusty OS target `aarch64-unknown-trusty` and
`armv7-unknown-trusty` as tier 3
targets](https://redirect.github.com/rust-lang/rust/pull/129490)
- [Promote `wasm32-wasip2` to Tier
2.](https://redirect.github.com/rust-lang/rust/pull/126967/)

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

## Libraries

- [Generalize `{Rc,Arc}::make_mut()` to `Path`, `OsStr`, and
`CStr`.](https://redirect.github.com/rust-lang/rust/pull/126877)

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

## Stabilized APIs

-
[`std::thread::Builder::spawn_unchecked`](https://doc.rust-lang.org/stable/std/thread/struct.Builder.html#method.spawn_unchecked)
-
[`std::str::CharIndices::offset`](https://doc.rust-lang.org/nightly/std/str/struct.CharIndices.html#method.offset)
-
[`std::option::Option::is_none_or`](https://doc.rust-lang.org/nightly/std/option/enum.Option.html#method.is_none_or)
-
[`[T]::is_sorted`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted)
-
[`[T]::is_sorted_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted_by)
-
[`[T]::is_sorted_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted_by_key)
-
[`Iterator::is_sorted`](https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted)
-
[`Iterator::is_sorted_by`](https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted_by)
-
[`Iterator::is_sorted_by_key`](https://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.is_sorted_by_key)
-
[`std::future::Ready::into_inner`](https://doc.rust-lang.org/nightly/std/future/struct.Ready.html#method.into_inner)
-
[`std::iter::repeat_n`](https://doc.rust-lang.org/nightly/std/iter/fn.repeat_n.html)
- [`impl<T: Clone> DoubleEndedIterator for
Take<Repeat<T>>`](https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-DoubleEndedIterator-for-Take%3CRepeat%3CT%3E%3E)
- [`impl<T: Clone> ExactSizeIterator for
Take<Repeat<T>>`](https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-ExactSizeIterator-for-Take%3CRepeat%3CT%3E%3E)
- [`impl<T: Clone> ExactSizeIterator for
Take<RepeatWith<T>>`](https://doc.rust-lang.org/nightly/std/iter/struct.Take.html#impl-ExactSizeIterator-for-Take%3CRepeatWith%3CF%3E%3E)
- [`impl Default for
std::collections::binary_heap::Iter`](https://doc.rust-lang.org/nightly/std/collections/binary_heap/struct.Iter.html#impl-Default-for-Iter%3C'\_,+T%3E)
- [`impl Default for
std::collections::btree_map::RangeMut`](https://doc.rust-lang.org/nightly/std/collections/btree_map/struct.RangeMut.html#impl-Default-for-RangeMut%3C'\_,+K,+V%3E)
- [`impl Default for
std::collections::btree_map::ValuesMut`](https://doc.rust-lang.org/nightly/std/collections/btree_map/struct.ValuesMut.html#impl-Default-for-ValuesMut%3C'\_,+K,+V%3E)
- [`impl Default for
std::collections::vec_deque::Iter`](https://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.Iter.html#impl-Default-for-Iter%3C'\_,+T%3E)
- [`impl Default for
std::collections::vec_deque::IterMut`](https://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.IterMut.html#impl-Default-for-IterMut%3C'\_,+T%3E)
-
[`Rc<T>::new_uninit`](https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.new_uninit)
-
[`Rc<MaybeUninit<T>>::assume_init`](https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.assume_init)
-
[`Rc<[T]>::new_uninit_slice`](https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.new_uninit_slice)
-
[`Rc<[MaybeUninit<T>]>::assume_init`](https://doc.rust-lang.org/nightly/std/rc/struct.Rc.html#method.assume_init-1)
-
[`Arc<T>::new_uninit`](https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.new_uninit)
-
[`Arc<MaybeUninit<T>>::assume_init`](https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.assume_init)
-
[`Arc<[T]>::new_uninit_slice`](https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.new_uninit_slice)
-
[`Arc<[MaybeUninit<T>]>::assume_init`](https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.assume_init-1)
-
[`Box<T>::new_uninit`](https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.new_uninit)
-
[`Box<MaybeUninit<T>>::assume_init`](https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.assume_init)
-
[`Box<[T]>::new_uninit_slice`](https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.new_uninit_slice)
-
[`Box<[MaybeUninit<T>]>::assume_init`](https://doc.rust-lang.org/nightly/std/boxed/struct.Box.html#method.assume_init-1)
-
[`core::arch::x86_64::_bextri_u64`](https://doc.rust-lang.org/stable/core/arch/x86\_64/fn.\_bextri_u64.html)
-
[`core::arch::x86_64::_bextri_u32`](https://doc.rust-lang.org/stable/core/arch/x86\_64/fn.\_bextri_u32.html)
-
[`core::arch::x86::_mm_broadcastsi128_si256`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm_broadcastsi128\_si256.html)
-
[`core::arch::x86::_mm256_stream_load_si256`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm256\_stream_load_si256.html)
-
[`core::arch::x86::_tzcnt_u16`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_tzcnt_u16.html)
-
[`core::arch::x86::_mm_extracti_si64`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm_extracti_si64.html)
-
[`core::arch::x86::_mm_inserti_si64`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm_inserti_si64.html)
-
[`core::arch::x86::_mm_storeu_si16`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm_storeu_si16.html)
-
[`core::arch::x86::_mm_storeu_si32`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm_storeu_si32.html)
-
[`core::arch::x86::_mm_storeu_si64`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm_storeu_si64.html)
-
[`core::arch::x86::_mm_loadu_si16`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm_loadu_si16.html)
-
[`core::arch::x86::_mm_loadu_si32`](https://doc.rust-lang.org/stable/core/arch/x86/fn.\_mm_loadu_si32.html)
-
[`core::arch::wasm32::u8x16_relaxed_swizzle`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u8x16\_relaxed_swizzle.html)
-
[`core::arch::wasm32::i8x16_relaxed_swizzle`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i8x16\_relaxed_swizzle.html)
-
[`core::arch::wasm32::i32x4_relaxed_trunc_f32x4`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4\_relaxed_trunc_f32x4.html)
-
[`core::arch::wasm32::u32x4_relaxed_trunc_f32x4`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4\_relaxed_trunc_f32x4.html)
-
[`core::arch::wasm32::i32x4_relaxed_trunc_f64x2_zero`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4\_relaxed_trunc_f64x2\_zero.html)
-
[`core::arch::wasm32::u32x4_relaxed_trunc_f64x2_zero`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4\_relaxed_trunc_f64x2\_zero.html)
-
[`core::arch::wasm32::f32x4_relaxed_madd`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4\_relaxed_madd.html)
-
[`core::arch::wasm32::f32x4_relaxed_nmadd`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4\_relaxed_nmadd.html)
-
[`core::arch::wasm32::f64x2_relaxed_madd`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2\_relaxed_madd.html)
-
[`core::arch::wasm32::f64x2_relaxed_nmadd`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f64x2\_relaxed_nmadd.html)
-
[`core::arch::wasm32::i8x16_relaxed_laneselect`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i8x16\_relaxed_laneselect.html)
-
[`core::arch::wasm32::u8x16_relaxed_laneselect`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u8x16\_relaxed_laneselect.html)
-
[`core::arch::wasm32::i16x8_relaxed_laneselect`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i16x8\_relaxed_laneselect.html)
-
[`core::arch::wasm32::u16x8_relaxed_laneselect`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u16x8\_relaxed_laneselect.html)
-
[`core::arch::wasm32::i32x4_relaxed_laneselect`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i32x4\_relaxed_laneselect.html)
-
[`core::arch::wasm32::u32x4_relaxed_laneselect`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u32x4\_relaxed_laneselect.html)
-
[`core::arch::wasm32::i64x2_relaxed_laneselect`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.i64x2\_relaxed_laneselect.html)
-
[`core::arch::wasm32::u64x2_relaxed_laneselect`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.u64x2\_relaxed_laneselect.html)
-
[`core::arch::wasm32::f32x4_relaxed_min`](https://doc.rust-lang.org/nightly/core/arch/wasm32/fn.f32x4\_relaxed_min.htm

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/epage/_rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE4IiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-02 17:31:33 +00:00
Ed Page 97755b3c01 chore(ci): Improve perf at the cost of coverage 2025-04-30 20:07:18 -05:00
Ed Page 06061d8558 chore(ci): Report more results 2025-04-10 11:35:50 -05:00
Ed Page 006f98fb3a chore(ci): Report deprecations in the review 2024-11-18 13:48:49 -06:00
Ed Page 6e193aa09a chore: Ensure pre-commit gets non-system Python
This is needed with the ubuntu-24.04 images so that `setup-python` will
install a version of Python that the pre-commit action can install into.

See pre-commit/action#210 for more of an analysis of this.
2024-09-26 21:10:02 -05:00
renovate[bot] 37cf1085bc chore(deps): Update EmbarkStudios/cargo-deny-action action to v2 2024-09-01 01:02:47 +00:00
Ed Page bdb06a11df chore(ci): Verify version requirements 2024-07-09 11:10:20 -05:00
Ed Page 2a274e149f chore(ci): Auto-update Mac now that latest uses m1 2024-06-21 14:21:41 -04:00
Ed Page ce6badcd18 chore: Fix typo 2024-06-03 10:29:26 -05:00
Ed Page d634de649f chore(ci): Ensure CI job always runs 2024-04-01 11:36:58 -05:00
Ed Page 9258d9af7b chore(ci): More exhaustively check features 2024-03-28 09:57:23 -05:00
Ed Page 92d486c4b0 chore(ci): Speed up lockfile check 2024-03-28 09:53:02 -05:00
Ed Page 9b1b566201 chore(ci): Fix all rust-version-specific checks to stable 2024-03-28 09:51:51 -05:00
Ed Page c8b190be3a chore(ci): Use latest SARIF
Now that we run clippy on stable, we can do this
2024-03-28 09:50:22 -05:00
renovate[bot] 7846c5130e chore(deps): Update pre-commit/action action to v3.0.1 2024-03-01 00:30:14 +00:00
Ed Page c977df5149 chore(ci): Prevent cargo-hack from blowing away our lockfile
See taiki-e/cargo-hack#234
2024-02-20 20:22:05 -06:00
Ed Page 779496bb00 chore(ci): Run the latest clippy 2024-02-15 10:08:37 -06:00
Ed Page 4db293d99b chore(ci): Only verify MSRV for published packages 2024-02-15 09:58:01 -06:00
Ed Page 1313256db3 chore(ci): Use latest for coverage 2024-02-08 09:07:52 -06:00
Ed Page da56001fd6 chore(ci): Gather coverage 2024-02-08 07:48:29 -06:00
Ed Page 9a5af5c8d2 chore(ci): Only check intel mac on schedule 2024-02-08 07:45:48 -06:00