Rust 1.92 enables unwind tables by default, refines lints & attribute checks, and more
Rust 1.92 ships as the latest version of the general-purpose programming language, introducing key changes for developers. Notably, unwind tables are now emitted by default even when the -Cpanic=abort flag is set, ensuring backtraces reliably function in panic-abort scenarios. Users who do not want unwind tables can now explicitly disable them with -Cforce-unwind-tables=no.
Following ongoing improvements to the type system, this release continues stabilization efforts for the never type. Two future compatibility lints, never_type_fallback_flowing_into_unsafe and dependency_on_unit_never_type_fallback, are now deny-by-default, meaning any violations will result in compilation errors rather than warnings or silent allowance.
On the linting front, the unused_must_use lint no longer warns when functions return a Result or a ControlFlow, such as Result. This reflects the fact that these error types cannot actually occur, reducing unnecessary checks during development.
These core updates are accompanied by wide-ranging changes to Rust's built-in attribute handling. The compiler now processes attributes more strictly and reports clearer, more consistent diagnostics. For example, incorrect macro_export arguments in dependencies are upgraded to deny-by-default lints, making such issues more visible during compilation.