|
| 1 | +Version 1.81.0 (2024-09-05) |
| 2 | +========================== |
| 3 | + |
| 4 | +<a id="1.81.0-Language"></a> |
| 5 | + |
| 6 | +Language |
| 7 | +-------- |
| 8 | + |
| 9 | +- [Abort on uncaught panics in `extern "C"` functions.](https://github.com/rust-lang/rust/pull/116088/) |
| 10 | +- [Fix ambiguous cases of multiple `&` in elided self lifetimes.](https://github.com/rust-lang/rust/pull/117967/) |
| 11 | +- [Stabilize `#[expect]` for lints (RFC 2383),](https://github.com/rust-lang/rust/pull/120924/) like `#[allow]` with a warning if the lint is _not_ fulfilled. |
| 12 | +- [Change method resolution to constrain hidden types instead of rejecting method candidates.](https://github.com/rust-lang/rust/pull/123962/) |
| 13 | +- [Bump `elided_lifetimes_in_associated_constant` to deny.](https://github.com/rust-lang/rust/pull/124211/) |
| 14 | +- [`offset_from`: always allow pointers to point to the same address.](https://github.com/rust-lang/rust/pull/124921/) |
| 15 | +- [Allow constraining opaque types during subtyping in the trait system.](https://github.com/rust-lang/rust/pull/125447/) |
| 16 | +- [Allow constraining opaque types during various unsizing casts.](https://github.com/rust-lang/rust/pull/125610/) |
| 17 | +- [Deny keyword lifetimes pre-expansion.](https://github.com/rust-lang/rust/pull/126762/) |
| 18 | + |
| 19 | +<a id="1.81.0-Compiler"></a> |
| 20 | + |
| 21 | +Compiler |
| 22 | +-------- |
| 23 | + |
| 24 | +- [Make casts of pointers to trait objects stricter.](https://github.com/rust-lang/rust/pull/120248/) |
| 25 | +- [Check alias args for well-formedness even if they have escaping bound vars.](https://github.com/rust-lang/rust/pull/123737/) |
| 26 | +- [Deprecate no-op codegen option `-Cinline-threshold=...`.](https://github.com/rust-lang/rust/pull/124712/) |
| 27 | +- [Re-implement a type-size based limit.](https://github.com/rust-lang/rust/pull/125507/) |
| 28 | +- [Properly account for alignment in `transmute` size checks.](https://github.com/rust-lang/rust/pull/125740/) |
| 29 | +- [Remove the `box_pointers` lint.](https://github.com/rust-lang/rust/pull/126018/) |
| 30 | +- [Ensure the interpreter checks bool/char for validity when they are used in a cast.](https://github.com/rust-lang/rust/pull/126265/) |
| 31 | +- [Improve coverage instrumentation for functions containing nested items.](https://github.com/rust-lang/rust/pull/127199/) |
| 32 | +- Target changes: |
| 33 | + - [Add Tier 3 `no_std` Xtensa targets:](https://github.com/rust-lang/rust/pull/125141/) `xtensa-esp32-none-elf`, `xtensa-esp32s2-none-elf`, `xtensa-esp32s3-none-elf` |
| 34 | + - [Add Tier 3 `std` Xtensa targets:](https://github.com/rust-lang/rust/pull/126380/) `xtensa-esp32-espidf`, `xtensa-esp32s2-espidf`, `xtensa-esp32s3-espidf` |
| 35 | + - [Add Tier 3 i686 Redox OS target:](https://github.com/rust-lang/rust/pull/126192/) `i686-unknown-redox` |
| 36 | + - [Promote `arm64ec-pc-windows-msvc` to Tier 2.](https://github.com/rust-lang/rust/pull/126039/) |
| 37 | + - [Promote `wasm32-wasip2` to Tier 2.](https://github.com/rust-lang/rust/pull/126967/) |
| 38 | + - [Promote `loongarch64-unknown-linux-musl` to Tier 2 with host tools.](https://github.com/rust-lang/rust/pull/126298/) |
| 39 | + - [Enable full tools and profiler for LoongArch Linux targets.](https://github.com/rust-lang/rust/pull/127078/) |
| 40 | + - [Unconditionally warn on usage of `wasm32-wasi`.](https://github.com/rust-lang/rust/pull/126662/) (see compatibility note below) |
| 41 | + - Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. |
| 42 | + |
| 43 | +<a id="1.81.0-Libraries"></a> |
| 44 | + |
| 45 | +Libraries |
| 46 | +--------- |
| 47 | + |
| 48 | +- [Split core's `PanicInfo` and std's `PanicInfo`.](https://github.com/rust-lang/rust/pull/115974/) (see compatibility note below) |
| 49 | +- [Generalize `{Rc,Arc}::make_mut()` to unsized types.](https://github.com/rust-lang/rust/pull/116113/) |
| 50 | +- [Replace sort implementations with stable `driftsort` and unstable `ipnsort`.](https://github.com/rust-lang/rust/pull/124032/) All `slice::sort*` and `slice::select_nth*` methods are expected to see significant performance improvements. See the [research project](https://github.com/Voultapher/sort-research-rs) for more details. |
| 51 | +- [Document behavior of `create_dir_all` with respect to empty paths.](https://github.com/rust-lang/rust/pull/125112/) |
| 52 | +- [Fix interleaved output in the default panic hook when multiple threads panic simultaneously.](https://github.com/rust-lang/rust/pull/127397/) |
| 53 | + |
| 54 | +<a id="1.81.0-Stabilized-APIs"></a> |
| 55 | + |
| 56 | +Stabilized APIs |
| 57 | +--------------- |
| 58 | + |
| 59 | +- [`core::error`](https://doc.rust-lang.org/stable/core/error/index.html) |
| 60 | +- [`hint::assert_unchecked`](https://doc.rust-lang.org/stable/core/hint/fn.assert_unchecked.html) |
| 61 | +- [`fs::exists`](https://doc.rust-lang.org/stable/std/fs/fn.exists.html) |
| 62 | +- [`AtomicBool::fetch_not`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.fetch_not) |
| 63 | +- [`Duration::abs_diff`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.abs_diff) |
| 64 | +- [`IoSlice::advance`](https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance) |
| 65 | +- [`IoSlice::advance_slices`](https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance_slices) |
| 66 | +- [`IoSliceMut::advance`](https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance) |
| 67 | +- [`IoSliceMut::advance_slices`](https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance_slices) |
| 68 | +- [`PanicHookInfo`](https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html) |
| 69 | +- [`PanicInfo::message`](https://doc.rust-lang.org/stable/core/panic/struct.PanicInfo.html#method.message) |
| 70 | +- [`PanicMessage`](https://doc.rust-lang.org/stable/core/panic/struct.PanicMessage.html) |
| 71 | + |
| 72 | +These APIs are now stable in const contexts: |
| 73 | + |
| 74 | +- [`char::from_u32_unchecked`](https://doc.rust-lang.org/stable/core/char/fn.from_u32_unchecked.html) (function) |
| 75 | +- [`char::from_u32_unchecked`](https://doc.rust-lang.org/stable/core/primitive.char.html#method.from_u32_unchecked) (method) |
| 76 | +- [`CStr::count_bytes`](https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.count_bytes) |
| 77 | +- [`CStr::from_ptr`](https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.from_ptr) |
| 78 | + |
| 79 | +<a id="1.81.0-Cargo"></a> |
| 80 | + |
| 81 | +Cargo |
| 82 | +----- |
| 83 | + |
| 84 | +- [Generated `.cargo_vcs_info.json` is always included, even when `--allow-dirty` is passed.](https://github.com/rust-lang/cargo/pull/13960/) |
| 85 | +- [Disallow `package.license-file` and `package.readme` pointing to non-existent files during packaging.](https://github.com/rust-lang/cargo/pull/13921/) |
| 86 | +- [Disallow passing `--release`/`--debug` flag along with the `--profile` flag.](https://github.com/rust-lang/cargo/pull/13971/) |
| 87 | +- [Remove `lib.plugin` key support in `Cargo.toml`. Rust plugin support has been deprecated for four years and was removed in 1.75.0.](https://github.com/rust-lang/cargo/pull/13902/) |
| 88 | + |
| 89 | +<a id="1.81.0-Compatibility-Notes"></a> |
| 90 | + |
| 91 | +Compatibility Notes |
| 92 | +------------------- |
| 93 | + |
| 94 | +* Usage of the `wasm32-wasi` target will now issue a compiler warning and request users switch to the `wasm32-wasip1` target instead. Both targets are the same, `wasm32-wasi` is only being renamed, and this [change to the WASI target](https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html) is being done to enable removing `wasm32-wasi` in January 2025. |
| 95 | + |
| 96 | +* We have renamed `std::panic::PanicInfo` to `std::panic::PanicHookInfo`. The old name will continue to work as an alias, but will result in a deprecation warning starting in Rust 1.82.0. |
| 97 | + |
| 98 | + `core::panic::PanicInfo` will remain unchanged, however, as this is now a *different type*. |
| 99 | + |
| 100 | + The reason is that these types have different roles: `std::panic::PanicHookInfo` is the argument to the [panic hook](https://doc.rust-lang.org/stable/std/panic/fn.set_hook.html) in std context (where panics can have an arbitrary payload), while `core::panic::PanicInfo` is the argument to the [`#[panic_handler]`](https://doc.rust-lang.org/nomicon/panic-handler.html) in no_std context (where panics always carry a formatted *message*). Separating these types allows us to add more useful methods to these types, such as `std::panic::PanicHookInfo::payload_as_str()` and `core::panic::PanicInfo::message()`. |
| 101 | + |
| 102 | +* The new sort implementations may panic if a type's implementation of [`Ord`](https://doc.rust-lang.org/std/cmp/trait.Ord.html) (or the given comparison function) does not implement a [total order](https://en.wikipedia.org/wiki/Total_order) as the trait requires. `Ord`'s supertraits (`PartialOrd`, `Eq`, and `PartialEq`) must also be consistent. The previous implementations would not "notice" any problem, but the new implementations have a good chance of detecting inconsistencies, throwing a panic rather than returning knowingly unsorted data. |
| 103 | + |
| 104 | +<a id="1.81.0-Internal-Changes"></a> |
| 105 | + |
| 106 | +Internal Changes |
| 107 | +---------------- |
| 108 | + |
| 109 | +These changes do not affect any public interfaces of Rust, but they represent |
| 110 | +significant improvements to the performance or internals of rustc and related |
| 111 | +tools. |
| 112 | + |
| 113 | +- [Add a Rust-for Linux `auto` CI job to check kernel builds.](https://github.com/rust-lang/rust/pull/125209/) |
| 114 | + |
1 | 115 | Version 1.80.0 (2024-07-25)
|
2 | 116 | ==========================
|
3 | 117 |
|
|
0 commit comments