Skip to content

Fix accidentally not emitting overflowing literals lints anymore in patterns - #136393

Merged
bors merged 3 commits into
rust-lang:masterfrom
oli-obk:pattern-type-lit-oflo-checks
Feb 6, 2025
Merged

Fix accidentally not emitting overflowing literals lints anymore in patterns#136393
bors merged 3 commits into
rust-lang:masterfrom
oli-obk:pattern-type-lit-oflo-checks

Conversation

@oli-obk

@oli-obkoli-obk commented Feb 1, 2025

Copy link
Copy Markdown
Contributor

This was regressed in #134228 (not in beta yet).

The issue was that previously we nested hir::Expr inside hir::PatKind::Lit, so it was linted by the expression code.

So now I've set it up for visitors to be able to directly visit literals and get all literals

@rustbot

Copy link
Copy Markdown
Collaborator

r? @chenyukang

rustbot has assigned @chenyukang.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 1, 2025
@rust-log-analyzer

This comment has been minimized.

Comment threadtests/ui/type/pattern_types/overflowing_literals_in_patterns.rs Outdated
@oli-obk
oli-obkforce-pushed the pattern-type-lit-oflo-checks branch 2 times, most recently from 60f4875 to 663191dCompareFebruary 1, 2025 22:16
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred in src/tools/clippy

cc @rust-lang/clippy

@compiler-errors

Copy link
Copy Markdown
Contributor

r? compiler-errors @bors r+ rollup=never

@bors

bors commented Feb 2, 2025

Copy link
Copy Markdown
Collaborator

📌 Commit 663191d has been approved by compiler-errors

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 2, 2025
@oli-obk

Copy link
Copy Markdown
ContributorAuthor

@bors r-

@borsbors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 3, 2025
@oli-obk

Copy link
Copy Markdown
ContributorAuthor

@bors try @rust-timer queue

Let's run perf and rollup if clean

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 3, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 3, 2025
…, r=<try>
Fix accidentally not emitting overflowing literals lints anymore in patterns
This was regressed in rust-lang#134228 (not in beta yet).
The issue was that previously we nested `hir::Expr` inside `hir::PatKind::Lit`, so it was linted by the expression code.
So now I've set it up for visitors to be able to directly visit literals and get all literals
@bors

bors commented Feb 3, 2025

Copy link
Copy Markdown
Collaborator

⌛ Trying commit 663191d with merge 812f026...

@bors

bors commented Feb 3, 2025

Copy link
Copy Markdown
Collaborator

☀️ Try build successful - checks-actions
Build commit: 812f026 (812f0268ec8fd8cf08b806b6e5343daa579f124e)

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (812f026): comparison URL.

Overall result: no relevant changes - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

Results (primary -2.2%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-2.2%[-2.9%, -1.6%]2
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-2.2%[-2.9%, -1.6%]2

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 779.014s -> 777.526s (-0.19%)
Artifact size: 328.74 MiB -> 328.77 MiB (0.01%)

@rustbotrustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 3, 2025
@oli-obk

Copy link
Copy Markdown
ContributorAuthor

@bors rollup-
@bors r=compiler-errors

@bors

bors commented Feb 5, 2025

Copy link
Copy Markdown
Collaborator

📌 Commit 663191d has been approved by compiler-errors

It is now in the queue for this repository.

@oli-obk
oli-obkforce-pushed the pattern-type-lit-oflo-checks branch from 663191d to 9a2073dCompareFebruary 5, 2025 11:28
@oli-obk

Copy link
Copy Markdown
ContributorAuthor

@bors r=compiler-errors

@bors

bors commented Feb 5, 2025

Copy link
Copy Markdown
Collaborator

📌 Commit 9a2073d has been approved by compiler-errors

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Feb 5, 2025
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Feb 6, 2025
…ks, r=compiler-errors
Fix accidentally not emitting overflowing literals lints anymore in patterns
This was regressed in rust-lang#134228 (not in beta yet).
The issue was that previously we nested `hir::Expr` inside `hir::PatKind::Lit`, so it was linted by the expression code.
So now I've set it up for visitors to be able to directly visit literals and get all literals
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
…kingjubilee
Rollup of 9 pull requests
Successful merges:
- rust-lang#135439 (Make `-O` mean `OptLevel::Aggressive`)
- rust-lang#136193 (Implement pattern type ffi checks)
- rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
- rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
- rust-lang#136315 (Use short ty string for binop and unop errors)
- rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
- rust-lang#136530 (Implement `x perf` directly in bootstrap)
- rust-lang#136580 (Couple of changes to run rustc in miri)
- rust-lang#136589 (Enable "jump to def" feature on rustc docs)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
…iaskrgr
Rollup of 7 pull requests
Successful merges:
- rust-lang#136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
- rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
- rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
- rust-lang#136315 (Use short ty string for binop and unop errors)
- rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
- rust-lang#136435 (Simplify some code for lowering THIR patterns)
- rust-lang#136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
Rollup of 7 pull requests
Successful merges:
- rust-lang#136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
- rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
- rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
- rust-lang#136315 (Use short ty string for binop and unop errors)
- rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
- rust-lang#136435 (Simplify some code for lowering THIR patterns)
- rust-lang#136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)
r? `@ghost`
`@rustbot` modify labels: rollup
try-job: aarch64-gnu-debug
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
…iaskrgr
Rollup of 7 pull requests
Successful merges:
- rust-lang#136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
- rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
- rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
- rust-lang#136315 (Use short ty string for binop and unop errors)
- rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
- rust-lang#136435 (Simplify some code for lowering THIR patterns)
- rust-lang#136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)
r? `@ghost`
`@rustbot` modify labels: rollup
try-job: aarch64-gnu-debug
@bors
bors merged commit 85a9de5 into rust-lang:masterFeb 6, 2025
@rustbotrustbot added this to the 1.86.0 milestone Feb 6, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
…kingjubilee
Rollup of 9 pull requests
Successful merges:
- rust-lang#135439 (Make `-O` mean `OptLevel::Aggressive`)
- rust-lang#136193 (Implement pattern type ffi checks)
- rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
- rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
- rust-lang#136315 (Use short ty string for binop and unop errors)
- rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
- rust-lang#136530 (Implement `x perf` directly in bootstrap)
- rust-lang#136580 (Couple of changes to run rustc in miri)
- rust-lang#136589 (Enable "jump to def" feature on rustc docs)
r? `@ghost`
`@rustbot` modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
Rollup merge of rust-lang#136393 - oli-obk:pattern-type-lit-oflo-checks, r=compiler-errors
Fix accidentally not emitting overflowing literals lints anymore in patterns
This was regressed in rust-lang#134228 (not in beta yet).
The issue was that previously we nested `hir::Expr` inside `hir::PatKind::Lit`, so it was linted by the expression code.
So now I've set it up for visitors to be able to directly visit literals and get all literals
flip1995 pushed a commit to flip1995/rust that referenced this pull request Feb 20, 2025
…ks, r=compiler-errors
Fix accidentally not emitting overflowing literals lints anymore in patterns
This was regressed in rust-lang#134228 (not in beta yet).
The issue was that previously we nested `hir::Expr` inside `hir::PatKind::Lit`, so it was linted by the expression code.
So now I've set it up for visitors to be able to directly visit literals and get all literals
flip1995 pushed a commit to flip1995/rust that referenced this pull request Feb 20, 2025
…iaskrgr
Rollup of 7 pull requests
Successful merges:
- rust-lang#136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
- rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
- rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
- rust-lang#136315 (Use short ty string for binop and unop errors)
- rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
- rust-lang#136435 (Simplify some code for lowering THIR patterns)
- rust-lang#136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)
r? `@ghost`
`@rustbot` modify labels: rollup
try-job: aarch64-gnu-debug
@oli-obk
oli-obk deleted the pattern-type-lit-oflo-checks branch March 2, 2025 18:19
@apiraino

Copy link
Copy Markdown
Contributor

Given this has regressed in #137893 but seems to be an accepted change (comment), I'm going to mark this for the release notes, T-release will decide 🙂

@rustbot label relnotes

@rustbotrustbot added the relnotes Marks issues that should be documented in the release notes of the next release. label Mar 19, 2025
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Apr 9, 2025
Upstream changes relative to 1.85.1:
Version 1.86.0 (2025-04-03)
==========================
Language
--------
- [Stabilize upcasting trait objects to supertraits.]
(rust-lang/rust#134367)
- [Allow safe functions to be marked with the `#[target_feature]` attribute.]
(rust-lang/rust#134090)
- [The `missing_abi` lint now warns-by-default.]
(rust-lang/rust#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`.]
(rust-lang/rust#126604)
- [More pointers are now detected as definitely not-null based on
their alignment in const eval.]
(rust-lang/rust#133700)
- [Empty `repr()` attribute applied to invalid items are now
correctly rejected.]
(rust-lang/rust#133925)
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer
accepted in more places than intended.]
(rust-lang/rust#134276)
Compiler
--------
- [Debug-assert that raw pointers are non-null on access.]
(rust-lang/rust#134424)
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2`
to match Cargo's defaults.]
(rust-lang/rust#135439)
- [Fix emission of `overflowing_literals` under certain macro environments.]
(rust-lang/rust#136393)
Platform Support
----------------
- [Replace `i686-unknown-redox` target with `i586-unknown-redox`.]
(rust-lang/rust#136698)
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.]
(rust-lang/rust#136700)
- New tier 3 targets:
- [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`]
(rust-lang/rust#133631).
For supporting Neutrino QNX 7.1 with `io-socket` network stack.
- [`{aarch64-unknown,x86_64-pc}-nto-qnx800`]
(rust-lang/rust#133631).
For supporting Neutrino QNX 8.0 (`no_std`-only).
- [`{x86_64,i686}-win7-windows-gnu`]
(rust-lang/rust#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`](rust-lang/rust#134740).
- [`x86_64-pc-cygwin`](rust-lang/rust#134999).
- [`{mips,mipsel}-mti-none-elf`]
(rust-lang/rust#135074).
Initial bare-metal support.
- [`m68k-unknown-none-elf`](rust-lang/rust#135085).
- [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and
`thumbv7a-nuttx-{eabi,eabihf}`]
(rust-lang/rust#135757).
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
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]
(rust-lang/rust#134143), allowing users
to examine why the conversion failed.
- [Remove `RustcDecodable` and `RustcEncodable`.]
(rust-lang/rust#134272)
- [Deprecate libtest's `--logfile` option.]
(rust-lang/rust#134283)
- [On recent versions of Windows, `std::fs::remove_file` will now
remove read-only files.]
(rust-lang/rust#134679)
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)
Cargo
-----
- [When merging, replace rather than combine configuration keys
that refer to a program path and its arguments.]
(rust-lang/cargo#15066)
- [Error if both `--package` and `--workspace` are passed but the
requested package is missing.]
(rust-lang/cargo#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.]
(rust-lang/cargo#15057)
- [Simplify the implementation of `SourceID` comparisons.]
(rust-lang/cargo#14980) This may
potentially change behavior if the canonicalized URL compares
differently in alternative registries.
Rustdoc
-----
- [Add a sans-serif font setting.]
(rust-lang/rust#133636)
Compatibility Notes
-------------------
- [The `wasm_c_abi` future compatibility warning is now a hard error.]
(rust-lang/rust#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]`.]
(rust-lang/rust#134300)
- [The future incompatibility lint `cenum_impl_drop_cast` has been
made into a hard error.]
(rust-lang/rust#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.]
(rust-lang/rust#137037) To compile for
pre-SSE2 32-bit x86, use a "i586" target instead.
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.]
(rust-lang/rust#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.
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request May 10, 2025
This MR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [rust](https://github.com/rust-lang/rust) | minor | `1.85.1` -> `1.86.0` |
MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).
**Proposed changes to behavior should be submitted there as MRs.**
---
### Release Notes
<details>
<summary>rust-lang/rust (rust)</summary>
### [`v1.86.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1860-2025-04-03)
[Compare Source](rust-lang/rust@1.85.1...1.86.0)
\==========================
<a id="1.86.0-Language"></a>
## Language
- [Stabilize upcasting trait objects to supertraits.](rust-lang/rust#134367)
- [Allow safe functions to be marked with the `#[target_feature]` attribute.](rust-lang/rust#134090)
- [The `missing_abi` lint now warns-by-default.](rust-lang/rust#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`.](rust-lang/rust#126604)
- [More pointers are now detected as definitely not-null based on their alignment in const eval.](rust-lang/rust#133700)
- [Empty `repr()` attribute applied to invalid items are now correctly rejected.](rust-lang/rust#133925)
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer accepted in more places than intended.](rust-lang/rust#134276)
<a id="1.86.0-Compiler"></a>
## Compiler
- [Debug-assert that raw pointers are non-null on access.](rust-lang/rust#134424)
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2` to match Cargo's defaults.](rust-lang/rust#135439)
- [Fix emission of `overflowing_literals` under certain macro environments.](rust-lang/rust#136393)
<a id="1.86.0-Platform-Support"></a>
## Platform Support
- [Replace `i686-unknown-redox` target with `i586-unknown-redox`.](rust-lang/rust#136698)
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.](rust-lang/rust#136700)
- New tier 3 targets:
- [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`](rust-lang/rust#133631).
For supporting Neutrino QNX 7.1 with `io-socket` network stack.
- [`{aarch64-unknown,x86_64-pc}-nto-qnx800`](rust-lang/rust#133631).
For supporting Neutrino QNX 8.0 (`no_std`-only).
- [`{x86_64,i686}-win7-windows-gnu`](rust-lang/rust#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`](rust-lang/rust#134740).
- [`x86_64-pc-cygwin`](rust-lang/rust#134999).
- [`{mips,mipsel}-mti-none-elf`](rust-lang/rust#135074).
Initial bare-metal support.
- [`m68k-unknown-none-elf`](rust-lang/rust#135085).
- [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and `thumbv7a-nuttx-{eabi,eabihf}`](rust-lang/rust#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](rust-lang/rust#134143), allowing users to examine why the conversion failed.
- [Remove `RustcDecodable` and `RustcEncodable`.](rust-lang/rust#134272)
- [Deprecate libtest's `--logfile` option.](rust-lang/rust#134283)
- [On recent versions of Windows, `std::fs::remove_file` will now remove read-only files.](rust-lang/rust#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.](rust-lang/cargo#15066)
- [Error if both `--package` and `--workspace` are passed but the requested package is missing.](rust-lang/cargo#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.](rust-lang/cargo#15057)
- [Simplify the implementation of `SourceID` comparisons.](rust-lang/cargo#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.](rust-lang/rust#133636)
<a id="1.86.0-Compatibility-Notes"></a>
## Compatibility Notes
- [The `wasm_c_abi` future compatibility warning is now a hard error.](rust-lang/rust#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]`.](rust-lang/rust#134300)
- [The future incompatibility lint `cenum_impl_drop_cast` has been made into a hard error.](rust-lang/rust#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.](rust-lang/rust#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.](rust-lang/rust#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.
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4yIiwidXBkYXRlZEluVmVyIjoiNDAuMTEuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jun 16, 2025
Pkgsrc changes:
* Drop support for building now old 1.76.0 rust natively on 32-bit
NetBSD arm ports, pushing those to use the rust-bin variant instead.
* Use of newer GCC on NetBSD/powerpc turned out to not be required,
given that your kernel and user-land is new enough. >= 10.0 release?
* Checksum updates.
Upstream changes:
Version 1.86.0 (2025-04-03)
==========================
Language
--------
- [Stabilize upcasting trait objects to supertraits.]
(rust-lang/rust#134367)
- [Allow safe functions to be marked with the `#[target_feature]` attribute.]
(rust-lang/rust#134090)
- [The `missing_abi` lint now warns-by-default.]
(rust-lang/rust#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`.]
(rust-lang/rust#126604)
- [More pointers are now detected as definitely not-null based on
their alignment in const eval.]
(rust-lang/rust#133700)
- [Empty `repr()` attribute applied to invalid items are now
correctly rejected.]
(rust-lang/rust#133925)
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer
accepted in more places than intended.]
(rust-lang/rust#134276)
Compiler
--------
- [Debug-assert that raw pointers are non-null on access.]
(rust-lang/rust#134424)
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2`
to match Cargo's defaults.]
(rust-lang/rust#135439)
- [Fix emission of `overflowing_literals` under certain macro environments.]
(rust-lang/rust#136393)
Platform Support
----------------
- [Replace `i686-unknown-redox` target with `i586-unknown-redox`.]
(rust-lang/rust#136698)
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.]
(rust-lang/rust#136700)
- New tier 3 targets:
- [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`]
(rust-lang/rust#133631).
For supporting Neutrino QNX 7.1 with `io-socket` network stack.
- [`{aarch64-unknown,x86_64-pc}-nto-qnx800`]
(rust-lang/rust#133631).
For supporting Neutrino QNX 8.0 (`no_std`-only).
- [`{x86_64,i686}-win7-windows-gnu`]
(rust-lang/rust#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`](rust-lang/rust#134740).
- [`x86_64-pc-cygwin`](rust-lang/rust#134999).
- [`{mips,mipsel}-mti-none-elf`]
(rust-lang/rust#135074).
Initial bare-metal support.
- [`m68k-unknown-none-elf`](rust-lang/rust#135085).
- [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and
`thumbv7a-nuttx-{eabi,eabihf}`]
(rust-lang/rust#135757).
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
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]
(rust-lang/rust#134143), allowing users
to examine why the conversion failed.
- [Remove `RustcDecodable` and `RustcEncodable`.]
(rust-lang/rust#134272)
- [Deprecate libtest's `--logfile` option.]
(rust-lang/rust#134283)
- [On recent versions of Windows, `std::fs::remove_file` will now
remove read-only files.]
(rust-lang/rust#134679)
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)
Cargo
-----
- [When merging, replace rather than combine configuration keys
that refer to a program path and its arguments.]
(rust-lang/cargo#15066)
- [Error if both `--package` and `--workspace` are passed but the
requested package is missing.]
(rust-lang/cargo#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.]
(rust-lang/cargo#15057)
- [Simplify the implementation of `SourceID` comparisons.]
(rust-lang/cargo#14980) This may
potentially change behavior if the canonicalized URL compares
differently in alternative registries.
Rustdoc
-----
- [Add a sans-serif font setting.]
(rust-lang/rust#133636)
Compatibility Notes
-------------------
- [The `wasm_c_abi` future compatibility warning is now a hard error.]
(rust-lang/rust#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]`.]
(rust-lang/rust#134300)
- [The future incompatibility lint `cenum_impl_drop_cast` has been
made into a hard error.]
(rust-lang/rust#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.]
(rust-lang/rust#137037) To compile for
pre-SSE2 32-bit x86, use a "i586" target instead.
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.]
(rust-lang/rust#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.
msk pushed a commit to msk/pkgsrc that referenced this pull request May 11, 2026
Pkgsrc changes:
* Drop support for building now old 1.76.0 rust natively on 32-bit
NetBSD arm ports, pushing those to use the rust-bin variant instead.
* Use of newer GCC on NetBSD/powerpc turned out to not be required,
given that your kernel and user-land is new enough. >= 10.0 release?
* Checksum updates.
Upstream changes:
Version 1.86.0 (2025-04-03)
==========================
Language
--------
- [Stabilize upcasting trait objects to supertraits.]
(rust-lang/rust#134367)
- [Allow safe functions to be marked with the `#[target_feature]` attribute.]
(rust-lang/rust#134090)
- [The `missing_abi` lint now warns-by-default.]
(rust-lang/rust#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`.]
(rust-lang/rust#126604)
- [More pointers are now detected as definitely not-null based on
their alignment in const eval.]
(rust-lang/rust#133700)
- [Empty `repr()` attribute applied to invalid items are now
correctly rejected.]
(rust-lang/rust#133925)
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer
accepted in more places than intended.]
(rust-lang/rust#134276)
Compiler
--------
- [Debug-assert that raw pointers are non-null on access.]
(rust-lang/rust#134424)
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2`
to match Cargo's defaults.]
(rust-lang/rust#135439)
- [Fix emission of `overflowing_literals` under certain macro environments.]
(rust-lang/rust#136393)
Platform Support
----------------
- [Replace `i686-unknown-redox` target with `i586-unknown-redox`.]
(rust-lang/rust#136698)
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.]
(rust-lang/rust#136700)
- New tier 3 targets:
- [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`]
(rust-lang/rust#133631).
For supporting Neutrino QNX 7.1 with `io-socket` network stack.
- [`{aarch64-unknown,x86_64-pc}-nto-qnx800`]
(rust-lang/rust#133631).
For supporting Neutrino QNX 8.0 (`no_std`-only).
- [`{x86_64,i686}-win7-windows-gnu`]
(rust-lang/rust#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`](rust-lang/rust#134740).
- [`x86_64-pc-cygwin`](rust-lang/rust#134999).
- [`{mips,mipsel}-mti-none-elf`]
(rust-lang/rust#135074).
Initial bare-metal support.
- [`m68k-unknown-none-elf`](rust-lang/rust#135085).
- [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and
`thumbv7a-nuttx-{eabi,eabihf}`]
(rust-lang/rust#135757).
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
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]
(rust-lang/rust#134143), allowing users
to examine why the conversion failed.
- [Remove `RustcDecodable` and `RustcEncodable`.]
(rust-lang/rust#134272)
- [Deprecate libtest's `--logfile` option.]
(rust-lang/rust#134283)
- [On recent versions of Windows, `std::fs::remove_file` will now
remove read-only files.]
(rust-lang/rust#134679)
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)
Cargo
-----
- [When merging, replace rather than combine configuration keys
that refer to a program path and its arguments.]
(rust-lang/cargo#15066)
- [Error if both `--package` and `--workspace` are passed but the
requested package is missing.]
(rust-lang/cargo#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.]
(rust-lang/cargo#15057)
- [Simplify the implementation of `SourceID` comparisons.]
(rust-lang/cargo#14980) This may
potentially change behavior if the canonicalized URL compares
differently in alternative registries.
Rustdoc
-----
- [Add a sans-serif font setting.]
(rust-lang/rust#133636)
Compatibility Notes
-------------------
- [The `wasm_c_abi` future compatibility warning is now a hard error.]
(rust-lang/rust#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]`.]
(rust-lang/rust#134300)
- [The future incompatibility lint `cenum_impl_drop_cast` has been
made into a hard error.]
(rust-lang/rust#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.]
(rust-lang/rust#137037) To compile for
pre-SSE2 32-bit x86, use a "i586" target instead.
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.]
(rust-lang/rust#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.
jperkin pushed a commit to TritonDataCenter/pkgsrc that referenced this pull request May 14, 2026
Pkgsrc changes:
* Drop support for building now old 1.76.0 rust natively on 32-bit
NetBSD arm ports, pushing those to use the rust-bin variant instead.
* Use of newer GCC on NetBSD/powerpc turned out to not be required,
given that your kernel and user-land is new enough. >= 10.0 release?
* Checksum updates.
Upstream changes:
Version 1.86.0 (2025-04-03)
==========================
Language
--------
- [Stabilize upcasting trait objects to supertraits.]
(rust-lang/rust#134367)
- [Allow safe functions to be marked with the `#[target_feature]` attribute.]
(rust-lang/rust#134090)
- [The `missing_abi` lint now warns-by-default.]
(rust-lang/rust#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`.]
(rust-lang/rust#126604)
- [More pointers are now detected as definitely not-null based on
their alignment in const eval.]
(rust-lang/rust#133700)
- [Empty `repr()` attribute applied to invalid items are now
correctly rejected.]
(rust-lang/rust#133925)
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer
accepted in more places than intended.]
(rust-lang/rust#134276)
Compiler
--------
- [Debug-assert that raw pointers are non-null on access.]
(rust-lang/rust#134424)
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2`
to match Cargo's defaults.]
(rust-lang/rust#135439)
- [Fix emission of `overflowing_literals` under certain macro environments.]
(rust-lang/rust#136393)
Platform Support
----------------
- [Replace `i686-unknown-redox` target with `i586-unknown-redox`.]
(rust-lang/rust#136698)
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.]
(rust-lang/rust#136700)
- New tier 3 targets:
- [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`]
(rust-lang/rust#133631).
For supporting Neutrino QNX 7.1 with `io-socket` network stack.
- [`{aarch64-unknown,x86_64-pc}-nto-qnx800`]
(rust-lang/rust#133631).
For supporting Neutrino QNX 8.0 (`no_std`-only).
- [`{x86_64,i686}-win7-windows-gnu`]
(rust-lang/rust#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`](rust-lang/rust#134740).
- [`x86_64-pc-cygwin`](rust-lang/rust#134999).
- [`{mips,mipsel}-mti-none-elf`]
(rust-lang/rust#135074).
Initial bare-metal support.
- [`m68k-unknown-none-elf`](rust-lang/rust#135085).
- [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and
`thumbv7a-nuttx-{eabi,eabihf}`]
(rust-lang/rust#135757).
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
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]
(rust-lang/rust#134143), allowing users
to examine why the conversion failed.
- [Remove `RustcDecodable` and `RustcEncodable`.]
(rust-lang/rust#134272)
- [Deprecate libtest's `--logfile` option.]
(rust-lang/rust#134283)
- [On recent versions of Windows, `std::fs::remove_file` will now
remove read-only files.]
(rust-lang/rust#134679)
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)
Cargo
-----
- [When merging, replace rather than combine configuration keys
that refer to a program path and its arguments.]
(rust-lang/cargo#15066)
- [Error if both `--package` and `--workspace` are passed but the
requested package is missing.]
(rust-lang/cargo#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.]
(rust-lang/cargo#15057)
- [Simplify the implementation of `SourceID` comparisons.]
(rust-lang/cargo#14980) This may
potentially change behavior if the canonicalized URL compares
differently in alternative registries.
Rustdoc
-----
- [Add a sans-serif font setting.]
(rust-lang/rust#133636)
Compatibility Notes
-------------------
- [The `wasm_c_abi` future compatibility warning is now a hard error.]
(rust-lang/rust#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]`.]
(rust-lang/rust#134300)
- [The future incompatibility lint `cenum_impl_drop_cast` has been
made into a hard error.]
(rust-lang/rust#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.]
(rust-lang/rust#137037) To compile for
pre-SSE2 32-bit x86, use a "i586" target instead.
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.]
(rust-lang/rust#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.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

relnotesMarks issues that should be documented in the release notes of the next release.S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@oli-obk@rustbot@rust-log-analyzer@compiler-errors@bors@rust-timer@jieyouxu@apiraino@lqd@chenyukang