Skip to content

Commit 2357fb0

Browse files
authored
Rollup merge of #142828 - Mark-Simulacrum:relnotes, r=Mark-Simulacrum
1.88.0 release notes r? cuviper
2 parents 9b6665f + 43084f8 commit 2357fb0

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed

RELEASES.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,103 @@
1+
Version 1.88.0 (2025-06-26)
2+
==========================
3+
4+
<a id="1.88.0-Language"></a>
5+
6+
Language
7+
--------
8+
- [Stabilize `#![feature(let_chains)]` in the 2024 edition.](https://github.com/rust-lang/rust/pull/132833)
9+
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.
10+
- [Stabilize `#![feature(naked_functions)]`.](https://github.com/rust-lang/rust/pull/134213)
11+
Naked functions allow writing functions with no compiler-generated epilogue and prologue, allowing full control over the generated assembly for a particular function.
12+
- [Stabilize `#![feature(cfg_boolean_literals)]`.](https://github.com/rust-lang/rust/pull/138632)
13+
This allows using boolean literals as `cfg` predicates, e.g. `#[cfg(true)]` and `#[cfg(false)]`.
14+
- [Fully de-stabilize the `#[bench]` attribute](https://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.
15+
- [Add warn-by-default `dangerous_implicit_autorefs` lint against implicit autoref of raw pointer dereference.](https://github.com/rust-lang/rust/pull/123239)
16+
The lint [will be bumped to deny-by-default](https://github.com/rust-lang/rust/pull/141661) in the next version of Rust.
17+
- [Add `invalid_null_arguments` lint to prevent invalid usage of null pointers.](https://github.com/rust-lang/rust/pull/119220)
18+
This lint is uplifted from `clippy::invalid_null_ptr_usage`.
19+
- [Change trait impl candidate preference for builtin impls and trivial where-clauses.](https://github.com/rust-lang/rust/pull/138176)
20+
- [Check types of generic const parameter defaults](https://github.com/rust-lang/rust/pull/139646)
21+
22+
<a id="1.88.0-Compiler"></a>
23+
24+
Compiler
25+
--------
26+
- [Stabilize `-Cdwarf-version` for selecting the version of DWARF debug information to generate.](https://github.com/rust-lang/rust/pull/136926)
27+
28+
29+
<a id="1.88.0-Platform-Support"></a>
30+
31+
Platform Support
32+
----------------
33+
- [Demote `i686-pc-windows-gnu` to Tier 2.](https://blog.rust-lang.org/2025/05/26/demoting-i686-pc-windows-gnu/)
34+
35+
36+
Refer to Rust's [platform support page][platform-support-doc]
37+
for more information on Rust's tiered platform support.
38+
39+
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
40+
41+
<a id="1.88.0-Libraries"></a>
42+
43+
Libraries
44+
---------
45+
- [Remove backticks from `#[should_panic]` test failure message.](https://github.com/rust-lang/rust/pull/136160)
46+
- [Guarantee that `[T; N]::from_fn` is generated in order of increasing indices.](https://github.com/rust-lang/rust/pull/139099), for those passing it a stateful closure.
47+
- [The libtest flag `--nocapture` is deprecated in favor of the more consistent `--no-capture` flag.](https://github.com/rust-lang/rust/pull/139224)
48+
- [Guarantee that `{float}::NAN` is a quiet NaN.](https://github.com/rust-lang/rust/pull/139483)
49+
50+
51+
<a id="1.88.0-Stabilized-APIs"></a>
52+
53+
Stabilized APIs
54+
---------------
55+
56+
- [`Cell::update`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.update)
57+
- [`impl Default for *const T`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*const+T)
58+
- [`impl Default for *mut T`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#impl-Default-for-*mut+T)
59+
- [`HashMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.extract_if)
60+
- [`HashSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.extract_if)
61+
- [`proc_macro::Span::line`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.line)
62+
- [`proc_macro::Span::column`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.column)
63+
- [`proc_macro::Span::start`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.start)
64+
- [`proc_macro::Span::end`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.end)
65+
- [`proc_macro::Span::file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.file)
66+
- [`proc_macro::Span::local_file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.local_file)
67+
68+
These previously stable APIs are now stable in const contexts:
69+
70+
- [`NonNull<T>::replace`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.replace)
71+
- [`<*mut T>::replace`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.replace)
72+
- [`std::ptr::swap_nonoverlapping`](https://github.com/rust-lang/rust/pull/137280)
73+
- [`Cell::{replace, get, get_mut, from_mut, as_slice_of_cells}`](https://github.com/rust-lang/rust/pull/137928)
74+
75+
76+
<a id="1.88.0-Cargo"></a>
77+
78+
Cargo
79+
-----
80+
- [Stabilize automatic garbage collection.](https://github.com/rust-lang/cargo/pull/14287/)
81+
- [use `zlib-rs` for gzip compression in rust code](https://github.com/rust-lang/cargo/pull/15417/)
82+
83+
<a id="1.88.0-Rustdoc"></a>
84+
85+
Rustdoc
86+
-----
87+
- [Doctests can be ignored based on target names using `ignore-*` attributes.](https://github.com/rust-lang/rust/pull/137096)
88+
- [Stabilize the `--test-runtool` and `--test-runtool-arg` CLI options to specify a program (like qemu) and its arguments to run a doctest.](https://github.com/rust-lang/rust/pull/137096)
89+
90+
<a id="1.88.0-Compatibility-Notes"></a>
91+
92+
Compatibility Notes
93+
-------------------
94+
- [Finish changing the internal representation of pasted tokens](https://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.
95+
- [Fully de-stabilize the `#[bench]` attribute](https://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.
96+
- [Fix borrow checking some always-true patterns.](https://github.com/rust-lang/rust/pull/139042)
97+
The borrow checker was overly permissive in some cases, allowing programs that shouldn't have compiled.
98+
- [Update the minimum external LLVM to 19.](https://github.com/rust-lang/rust/pull/139275)
99+
- [Make it a hard error to use a vector type with a non-Rust ABI without enabling the required target feature.](https://github.com/rust-lang/rust/pull/139309)
100+
1101
Version 1.87.0 (2025-05-15)
2102
==========================
3103

0 commit comments

Comments
 (0)