Rust 1.71.0 Programming language update: New features, enhanced efficiency, and improved reliability
The Rust programming language has released its newest update, Rust 1.71.0, focusing on reliability and efficiency. Users can upgrade from a previous version by executing "rustup update stable." Rustup is downloadable from the Rust website, and the detailed release notes for the update can be found on GitHub.
The 1.71.0 version introduces several new features, including the stabilization of the C-unwind ABI and other -unwind suffixed ABI variants. This allows exceptions to cross the ABI boundary without ending the process. Existing ABIs remain the same, but future releases will adjust them to align with the defined behavior. Debugger visualization attributes, #[debug_visualizer(natvis_file = "...")] and #[debug_visualizer(gdb_script_file = "...")], have been stabilized. Natvis descriptions and GDB scripts can now be embedded into Rust libraries to improve debugger output.
For Windows users, the update supports raw-dylib linking, allowing the use of dynamic libraries without needing them during the build process. The new kind="raw-dylib” option for #[link] simplifies crates providing bindings to Windows libraries. The #[link_ordinal] attribute allows binding to symbols provided by DLLs by ordinal rather than by name. Rust 1.71 also updates the musl version to 1.2.3 and stabilizes const-initialized thread locals, improving code generation for thread-local variables.
Numerous APIs are now stabilized, including:
CStr::is_empty BuildHasher::hash_one NonZeroI*::is_positive NonZeroI*::is_negative NonZeroI*::checked_neg NonZeroI*::overflowing_neg NonZeroI*::saturating_neg NonZeroI*::wrapping_neg Neg for NonZeroI* Neg for &NonZeroI* From for (T...) (array to N-tuple for N in 1..=12) From for [T; N] (N-tuple to array for N in 1..=12) windows::io::AsHandle for Box windows::io::AsHandle for Rc windows::io::AsHandle for Arc windows::io::AsSocket for Box windows::io::AsSocket for Rc windows::io::AsSocket for Arc
Certain APIs are also now stable in const contexts, including ::read, ::read_unaligned, ::read, ::read_unaligned, ptr::read, ptr::read_unaligned, and ::split_at. There are a bunch more, but you can check all the list here.