Change8

Migrating to Rust Language 1.93.0

Version 1.93.0 introduces 3 breaking changes. This guide details how to update your code.

Released: 1/22/2026

3
Breaking Changes
3
Migration Steps
33
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

`is_s390x_feature_detected!``Copy` trait`Clone::clone``-Cjump-tables``-Zno-jump-tables``Copy` trait specialization`BTree::append``vec::IntoIter<T>``[MaybeUninit<T>]::assume_init_drop``[MaybeUninit<T>]::assume_init_ref``[MaybeUninit<T>]::assume_init_mut``[MaybeUninit<T>]::write_copy_of_slice``[MaybeUninit<T>]::write_clone_of_slice``String::into_raw_parts``Vec::into_raw_parts``iN::unchecked_neg``iN::unchecked_shl``iN::unchecked_shr``uN::unchecked_shl``uN::unchecked_shr``[T]::as_array``[T]::as_array_mut``*const [T]::as_array``*mut [T]::as_array_mut``VecDeque::pop_front_if``VecDeque::pop_back_if``Duration::from_nanos_u128``char::MAX_LEN_UTF8``char::MAX_LEN_UTF16``std::fmt::from_fn``std::fmt::FromFn``#[test]` attribute`offset_of!` macro

Breaking Changes

Issue #1

Stop internally using `specialization` on the `Copy` trait because it is unsound with lifetime dependent `Copy` implementations. This may cause performance regressions as some standard library APIs might now call `Clone::clone` instead of bitwise copies.

Issue #2

The `#[test]` attribute is no longer ignored when applied to trait methods or types, resulting in an error instead. This might cause errors when generating rustdoc.

Issue #3

Cargo now sets the `CARGO_CFG_DEBUG_ASSERTIONS` environment variable in more situations, causing crates depending on `static-init` versions 1.0.1 to 1.0.3 to fail compilation with "failed to resolve: use of unresolved module or unlinked crate `parking_lot`".

Migration Steps

  1. 1
    If linking C/C++ object files with Rust objects compiled with `panic=unwind` on Emscripten, pass `-fwasm-exceptions` to the linker.
  2. 2
    Review usage of the `#[test]` attribute on trait methods or types, as it will now cause errors.
  3. 3
    If using `static-init` versions 1.0.1 to 1.0.3, update them to resolve compilation failures related to `CARGO_CFG_DEBUG_ASSERTIONS` changes.

Release Summary

This release stabilizes several language features, introduces new stabilized APIs for slices, strings, and collections, and updates compiler flags and platform support. It also includes important compatibility changes regarding the `#[test]` attribute enforcement and changes in Cargo's environment variable setting.

Need More Details?

View the full release notes and all changes for Rust Language 1.93.0.

View Full Changelog