Skip to content

Commit 1159e78

Browse files
committed
Auto merge of #146543 - Mark-Simulacrum:stable-next, r=Mark-Simulacrum
[stable] 1.90.0 stable release https://forge.rust-lang.org/release/process.html#stable-pr r? `@Mark-Simulacrum`
2 parents 67cb8e0 + 9b9cd6c commit 1159e78

File tree

2 files changed

+265
-2
lines changed

2 files changed

+265
-2
lines changed

RELEASES.md

Lines changed: 264 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,266 @@
1+
Version 1.90 (2025-09-18)
2+
==========================
3+
4+
<a id="1.90-Language"></a>
5+
6+
Language
7+
--------
8+
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint](https://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:
9+
1. `unknown_diagnostic_attributes`: unknown to the current compiler
10+
2. `misplaced_diagnostic_attributes`: placed on the wrong item
11+
3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
12+
4. `malformed_diagnostic_format_literals`: malformed format string literal
13+
- [Allow constants whose final value has references to mutable/external memory, but reject such constants as patterns](https://github.com/rust-lang/rust/pull/140942)
14+
- [Allow volatile access to non-Rust memory, including address 0](https://github.com/rust-lang/rust/pull/141260)
15+
16+
17+
<a id="1.90-Compiler"></a>
18+
19+
Compiler
20+
--------
21+
- [Use `lld` by default on `x86_64-unknown-linux-gnu`](https://github.com/rust-lang/rust/pull/140525).
22+
- [Tier 3 `musl` targets now link dynamically by default](https://github.com/rust-lang/rust/pull/144410). Affected targets:
23+
- `mips64-unknown-linux-muslabi64`
24+
- `powerpc64-unknown-linux-musl`
25+
- `powerpc-unknown-linux-musl`
26+
- `powerpc-unknown-linux-muslspe`
27+
- `riscv32gc-unknown-linux-musl`
28+
- `s390x-unknown-linux-musl`
29+
- `thumbv7neon-unknown-linux-musleabihf`
30+
31+
32+
<a id="1.90-Platform-Support"></a>
33+
34+
Platform Support
35+
----------------
36+
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools](https://github.com/rust-lang/rust/pull/145252)
37+
38+
39+
Refer to Rust's [platform support page][platform-support-doc]
40+
for more information on Rust's tiered platform support.
41+
42+
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
43+
44+
<a id="1.90-Libraries"></a>
45+
46+
Libraries
47+
---------
48+
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`](https://github.com/rust-lang/rust/issues/126043)
49+
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`](https://github.com/rust-lang/rust/pull/137268)
50+
- [Remove some unsized tuple impls since unsized tuples can't be constructed](https://github.com/rust-lang/rust/pull/138340)
51+
- [Set `MSG_NOSIGNAL` for `UnixStream`](https://github.com/rust-lang/rust/pull/140005)
52+
- [`proc_macro::Ident::new` now supports `$crate`.](https://github.com/rust-lang/rust/pull/141996)
53+
- [Guarantee the pointer returned from `Thread::into_raw` has at least 8 bytes of alignment](https://github.com/rust-lang/rust/pull/143859)
54+
55+
56+
<a id="1.90-Stabilized-APIs"></a>
57+
58+
Stabilized APIs
59+
---------------
60+
61+
- [`u{n}::checked_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
62+
- [`u{n}::overflowing_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
63+
- [`u{n}::saturating_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
64+
- [`u{n}::wrapping_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
65+
- [`impl Copy for IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
66+
- [`impl Hash for IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
67+
- [`impl PartialEq<&CStr> for CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
68+
- [`impl PartialEq<CString> for CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
69+
- [`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)
70+
- [`impl PartialEq<&CStr> for CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
71+
- [`impl PartialEq<CStr> for CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
72+
- [`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)
73+
- [`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)
74+
- [`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)
75+
- [`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)
76+
77+
78+
These previously stable APIs are now stable in const contexts:
79+
80+
- [`<[T]>::reverse`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
81+
- [`f32::floor`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
82+
- [`f32::ceil`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
83+
- [`f32::trunc`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
84+
- [`f32::fract`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
85+
- [`f32::round`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
86+
- [`f32::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
87+
- [`f64::floor`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
88+
- [`f64::ceil`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
89+
- [`f64::trunc`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
90+
- [`f64::fract`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
91+
- [`f64::round`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
92+
- [`f64::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
93+
94+
95+
<a id="1.90-Cargo"></a>
96+
97+
Cargo
98+
-----
99+
- [Add `http.proxy-cainfo` config for proxy certs](https://github.com/rust-lang/cargo/pull/15374/)
100+
- [Use `gix` for `cargo package`](https://github.com/rust-lang/cargo/pull/15534/)
101+
- [feat(publish): Stabilize multi-package publishing](https://github.com/rust-lang/cargo/pull/15636/)
102+
103+
<a id="1.90-Rustdoc"></a>
104+
105+
Rustdoc
106+
-----
107+
- [Add ways to collapse all impl blocks](https://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
108+
- [Display unsafe attributes with `unsafe()` wrappers](https://github.com/rust-lang/rust/pull/143662)
109+
110+
111+
<a id="1.90-Compatibility-Notes"></a>
112+
113+
Compatibility Notes
114+
-------------------
115+
- [Use `lld` by default on `x86_64-unknown-linux-gnu`](https://github.com/rust-lang/rust/pull/140525).
116+
See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
117+
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()` internally as promised in the docs instead of always being empty](https://github.com/rust-lang/rust/pull/140985)
118+
- [Set `MSG_NOSIGNAL` for `UnixStream`](https://github.com/rust-lang/rust/pull/140005)
119+
This may change program behavior but results in the same behavior as other primitives (e.g., stdout, network sockets).
120+
Programs relying on signals to terminate them should update handling of sockets to handle errors on write by exiting.
121+
- [On Unix `std::env::home_dir` will use the fallback if the `HOME` environment variable is empty](https://github.com/rust-lang/rust/pull/141840)
122+
- We now [reject unsupported `extern "{abi}"`s consistently in all positions](https://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.
123+
- [const-eval: error when initializing a static writes to that static](https://github.com/rust-lang/rust/pull/143084)
124+
- [Check that the `proc_macro_derive` macro has correct arguments when applied to the crate root](https://github.com/rust-lang/rust/pull/143607)
125+
126+
127+
Version 1.89.0 (2025-08-07)
128+
==========================
129+
130+
<a id="1.89.0-Language"></a>
131+
132+
Language
133+
--------
134+
- [Stabilize explicitly inferred const arguments (`feature(generic_arg_infer)`)](https://github.com/rust-lang/rust/pull/141610)
135+
- [Add a warn-by-default `mismatched_lifetime_syntaxes` lint.](https://github.com/rust-lang/rust/pull/138677)
136+
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.
137+
This lint supersedes the warn-by-default `elided_named_lifetimes` lint.
138+
- [Expand `unpredictable_function_pointer_comparisons` to also lint on function pointer comparisons in external macros](https://github.com/rust-lang/rust/pull/134536)
139+
- [Make the `dangerous_implicit_autorefs` lint deny-by-default](https://github.com/rust-lang/rust/pull/141661)
140+
- [Stabilize the avx512 target features](https://github.com/rust-lang/rust/pull/138940)
141+
- [Stabilize `kl` and `widekl` target features for x86](https://github.com/rust-lang/rust/pull/140766)
142+
- [Stabilize `sha512`, `sm3` and `sm4` target features for x86](https://github.com/rust-lang/rust/pull/140767)
143+
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`, `lbt`, `lsx`, and `lvz`](https://github.com/rust-lang/rust/pull/135015)
144+
- [Remove `i128` and `u128` from `improper_ctypes_definitions`](https://github.com/rust-lang/rust/pull/137306)
145+
- [Stabilize `repr128` (`#[repr(u128)]`, `#[repr(i128)]`)](https://github.com/rust-lang/rust/pull/138285)
146+
- [Allow `#![doc(test(attr(..)))]` everywhere](https://github.com/rust-lang/rust/pull/140560)
147+
- [Extend temporary lifetime extension to also go through tuple struct and tuple variant constructors](https://github.com/rust-lang/rust/pull/140593)
148+
- [`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/)
149+
150+
<a id="1.89.0-Compiler"></a>
151+
152+
Compiler
153+
--------
154+
- [Default to non-leaf frame pointers on aarch64-linux](https://github.com/rust-lang/rust/pull/140832)
155+
- [Enable non-leaf frame pointers for Arm64EC Windows](https://github.com/rust-lang/rust/pull/140862)
156+
- [Set Apple frame pointers by architecture](https://github.com/rust-lang/rust/pull/141797)
157+
158+
159+
<a id="1.89.0-Platform-Support"></a>
160+
161+
Platform Support
162+
----------------
163+
- [Add new Tier-3 targets `loongarch32-unknown-none` and `loongarch32-unknown-none-softfloat`](https://github.com/rust-lang/rust/pull/142053)
164+
- [`x86_64-apple-darwin` is in the process of being demoted to Tier 2 with host tools](https://github.com/rust-lang/rfcs/pull/3841)
165+
166+
Refer to Rust's [platform support page][platform-support-doc]
167+
for more information on Rust's tiered platform support.
168+
169+
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
170+
171+
<a id="1.89.0-Libraries"></a>
172+
173+
Libraries
174+
---------
175+
- [Specify the base path for `file!`](https://github.com/rust-lang/rust/pull/134442)
176+
- [Allow storing `format_args!()` in a variable](https://github.com/rust-lang/rust/pull/140748)
177+
- [Add `#[must_use]` to `[T; N]::map`](https://github.com/rust-lang/rust/pull/140957)
178+
- [Implement `DerefMut` for `Lazy{Cell,Lock}`](https://github.com/rust-lang/rust/pull/129334)
179+
- [Implement `Default` for `array::IntoIter`](https://github.com/rust-lang/rust/pull/141574)
180+
- [Implement `Clone` for `slice::ChunkBy`](https://github.com/rust-lang/rust/pull/138016)
181+
- [Implement `io::Seek` for `io::Take`](https://github.com/rust-lang/rust/pull/138023)
182+
183+
184+
<a id="1.89.0-Stabilized-APIs"></a>
185+
186+
Stabilized APIs
187+
---------------
188+
189+
- [`NonZero<char>`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
190+
- Many intrinsics for x86, not enumerated here
191+
- [AVX512 intrinsics](https://github.com/rust-lang/rust/issues/111137)
192+
- [`SHA512`, `SM3` and `SM4` intrinsics](https://github.com/rust-lang/rust/issues/126624)
193+
- [`File::lock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
194+
- [`File::lock_shared`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
195+
- [`File::try_lock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
196+
- [`File::try_lock_shared`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
197+
- [`File::unlock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
198+
- [`NonNull::from_ref`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
199+
- [`NonNull::from_mut`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
200+
- [`NonNull::without_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
201+
- [`NonNull::with_exposed_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
202+
- [`NonNull::expose_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
203+
- [`OsString::leak`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
204+
- [`PathBuf::leak`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
205+
- [`Result::flatten`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
206+
- [`std::os::linux::net::TcpStreamExt::quickack`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
207+
- [`std::os::linux::net::TcpStreamExt::set_quickack`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)
208+
209+
These previously stable APIs are now stable in const contexts:
210+
211+
- [`<[T; N]>::as_mut_slice`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
212+
- [`<[u8]>::eq_ignore_ascii_case`](https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
213+
- [`str::eq_ignore_ascii_case`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)
214+
215+
216+
<a id="1.89.0-Cargo"></a>
217+
218+
Cargo
219+
-----
220+
- [`cargo fix` and `cargo clippy --fix` now default to the same Cargo target selection as other build commands.](https://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.
221+
- [Stabilize doctest-xcompile.](https://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.
222+
223+
224+
<a id="1.89.0-Rustdoc"></a>
225+
226+
Rustdoc
227+
-----
228+
- [On mobile, make the sidebar full width and linewrap](https://github.com/rust-lang/rust/pull/139831). This makes long section and item names much easier to deal with on mobile.
229+
230+
231+
<a id="1.89.0-Compatibility-Notes"></a>
232+
233+
Compatibility Notes
234+
-------------------
235+
- [Make `missing_fragment_specifier` an unconditional error](https://github.com/rust-lang/rust/pull/128425)
236+
- [Enabling the `neon` target feature on `aarch64-unknown-none-softfloat` causes a warning](https://github.com/rust-lang/rust/pull/135160) because mixing code with and without that target feature is not properly supported by LLVM
237+
- [Sized Hierarchy: Part I](https://github.com/rust-lang/rust/pull/137944)
238+
- 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://github.com/rust-lang/rust/pull/137944#issuecomment-2912207485) for a code example.
239+
- The warn-by-default `elided_named_lifetimes` lint is [superseded by the warn-by-default `mismatched_lifetime_syntaxes` lint.](https://github.com/rust-lang/rust/pull/138677)
240+
- [Error on recursive opaque types earlier in the type checker](https://github.com/rust-lang/rust/pull/139419)
241+
- [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://github.com/rust-lang/rust/pull/139635)
242+
- [The deprecated accidentally-stable `std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now proper intrinsics](https://github.com/rust-lang/rust/pull/139916). There are no debug assertions guarding against UB, and they cannot be coerced to function pointers.
243+
- [Remove long-deprecated `std::intrinsics::drop_in_place`](https://github.com/rust-lang/rust/pull/140151)
244+
- [Make well-formedness predicates no longer coinductive](https://github.com/rust-lang/rust/pull/140208)
245+
- [Remove hack when checking impl method compatibility](https://github.com/rust-lang/rust/pull/140557)
246+
- [Remove unnecessary type inference due to built-in trait object impls](https://github.com/rust-lang/rust/pull/141352)
247+
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32 targets](https://github.com/rust-lang/rust/pull/141435)
248+
- [Future incompatibility warnings relating to the never type (`!`) are now reported in dependencies](https://github.com/rust-lang/rust/pull/141937)
249+
- [Ensure `std::ptr::copy_*` intrinsics also perform the static self-init checks](https://github.com/rust-lang/rust/pull/142575)
250+
- [`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/)
251+
252+
<a id="1.89.0-Internal-Changes"></a>
253+
254+
Internal Changes
255+
----------------
256+
257+
These changes do not affect any public interfaces of Rust, but they represent
258+
significant improvements to the performance or internals of rustc and related
259+
tools.
260+
261+
- [Correctly un-remap compiler sources paths with the `rustc-dev` component](https://github.com/rust-lang/rust/pull/142377)
262+
263+
1264
Version 1.88.0 (2025-06-26)
2265
==========================
3266

@@ -1641,7 +1904,7 @@ Language
16411904
- [Undeprecate lint `unstable_features` and make use of it in the compiler.](https://github.com/rust-lang/rust/pull/118639/)
16421905
- [Make inductive cycles in coherence ambiguous always.](https://github.com/rust-lang/rust/pull/118649/)
16431906
- [Get rid of type-driven traversal in const-eval interning](https://github.com/rust-lang/rust/pull/119044/),
1644-
only as a [future compatiblity lint](https://github.com/rust-lang/rust/pull/122204) for now.
1907+
only as a [future compatibility lint](https://github.com/rust-lang/rust/pull/122204) for now.
16451908
- [Deny braced macro invocations in let-else.](https://github.com/rust-lang/rust/pull/119062/)
16461909
16471910
<a id="1.77.0-Compiler"></a>

src/ci/channel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
beta
1+
stable

0 commit comments

Comments
 (0)