|
| 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 | + |
1 | 101 | Version 1.87.0 (2025-05-15)
|
2 | 102 | ==========================
|
3 | 103 |
|
|
0 commit comments