The Rust team released on the eve of the last year Rust 1.49. The new version of Rust features 64-bit ARM support and minor language enhancements.
Rust’s union
s can now implement the Drop
trait (whose drop
method is called automatically when an object goes out of scope). Union fields that developers want to manually drop are annotated with a ManuallyDrop<T>
type. The Rust documentation explains:
A union declaration uses the same syntax as a struct declaration, except with
union
in place ofstruct
.
#[repr(C)]
union MyUnion {
f1: u32,
f2: f32,
}
When a union is dropped, it cannot know which of its fields needs to be dropped. For this reason, all union fields must either be of a
Copy
type or of the shapeManuallyDrop<_>
. This ensures that a union does not need to drop anything when it goes out of scope.
One maintainer detailed one benefit of the new language feature:
It’s valuable for correctly implementing “atomic state machine� patterns, common in low-level async code, in which you have a tagged union with an atomically updated tag (with a locked state as well, etc.)
Uninhabited enums (e.g, enum Foo { }
) can now be cast to integers. The change addresses edge cases that appeared in macro code.
Rust developers can also now bind by reference and by move in patterns. A primary use case is to borrow individual components of a type:
fn main() {
#[derive(Debug)]
struct Person {
name: String,
age: u8,
}
let person = Person {
name: String::from("Alice"),
age: 20,
};
let Person { name, ref age } = person;
println!("The person's age is {}", age);
println!("The person's name is {}", name);
println!("The person's age from person struct is {}", person.age);
}
The new version of Rust promotes the aarch64-unknown-linux-gnu
target to Tier 1 support. This means that developers using 64-bit ARM systems with Linux have the assurance that a full test-suite has been run for every change merged into the compiler. Prebuilt binaries are also made available. The team expects that the 64-bit ARM support will benefit workloads spanning from embedded to desktops and servers. The release note explained:
This is an important milestone for the project, since it’s the first time a non-x86 target has reached Tier 1 support: we hope this will pave the way for more targets to reach our highest tier in the future.
The new Rust version also adds Tier 2 support of Apple M1 systems (aarch64-apple-darwin
target) and 64-bit ARM devices running Windows (aarch64-pc-windows-msvc
target).
Developers with a previous version of Rust installed via rustup
can upgrade to Rust 1.49.0 with the following command:
rustup update stable
The detailed release note is available online.
The post Rust 1.49 Released with Tier-1 Support of 64-Bit ARM Linux appeared first on TechFans.