Also in Rust 1.82, aarch64-apple-darwin for macOS on 64-bit Arm CPUs now is a tier 1 Rust target, backed by the highest guarantee of working properly. Every change in the Rust repository must pass full tests on every tier 1 target before it can be merged. This target had been introduced as tier 2 in Rust 1.49, making it available in rustup
. The new milestone puts the aarch64-apple-darwin target on par with the 64-bit Arm Linux and x86 macOS, Linux, and Windows targets. Additionally, targets for Mac Catalyst, an Apple technology for running iOS applications natively on the Mac, now are tier 2.
Rust 1.82 follows the September 5 release of Rust 1.81, which stabilized the Error
trait in the Rust core library. Elsewhere in Rust 1.82:
- Rust now supports the
use<../>
syntax within certain impl Trait
bounds to control which generic lifetime parameters are captured. Return-positionimpl Trait
(RPIT) types in Rust capture certain generic parameters. Capturing a generic parameter allows the parameter to be used in the hidden type. That, in turn, affects borrow checking. - Native syntax for creating a raw pointer is featured.
- It is the responsibility of persons writing the
extern
block to ensure that all signatures contained within it are correct; thus, developers now can write unsafeextern
. A benefit of this is that items within an unsafeextern
block can be marked as safe to use. - Some Rust attributes, such as
no-mangle
, can be used to cause undefined behavior without any unsafe block. If this were regular code, it would be required that these be placed in anunsafe {}
block, but so far, attributes have not had comparable syntax. To reflect that these attributes can undermine Rust safety guarantees, these now are considered “unsafe” and should be written as follows:#unsafe(no_mangle)] pub fn my global_function (){}
- Patterns that match empty types now can be omitted.
- Rust 1.82 standardizes on a set of rules for how
NaN
(not a number) values behave. - The
const
assembly operand now offers a way to use integers as immediates without first storing them in a register.