1.81.0

1.81.0 #

  • Released on: 5 September, 2024
  • Branched from master on: 19 July, 2024

Language #

Compiler #

Libraries #

Stabilized APIs #

These APIs are now stable in const contexts:

Cargo #

Compatibility Notes #

  • 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 is being done to enable removing wasm32-wasi in January 2025.

  • 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.

    core::panic::PanicInfo will remain unchanged, however, as this is now a different type.

    The reason is that these types have different roles: std::panic::PanicHookInfo is the argument to the panic hook in std context (where panics can have an arbitrary payload), while core::panic::PanicInfo is the argument to the #[panic_handler] 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().

  • The new sort implementations may panic if a type’s implementation of Ord (or the given comparison function) does not implement a 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.

  • In very rare cases, a change in the internal evaluation order of the trait solver may result in new fatal overflow errors.

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.