Programmiersprachen: Rust 1.36 bringt weitere Stabilisierungen
Das jüngste Release der Programmiersprache bietet zahlreiche Verbesserungen, unter anderem stabile Versionen verschiedener APIs und Funktionen.
Das Team hinter der ursprünglich von Mozilla ins Leben gerufenen Programmiersprache hat Version 1.36 von Rust vorgelegt. Zu den Highlights des neuen Release zählt die Stabilisierung des Future
-Traits. Das Rust-Team hofft, damit endlich die Voraussetzung geschaffen zu haben, wichtigen Crates, Librarys sowie dem gesamten Rust-Ökosystem ausreichend Zeit für die Vorbereitung auf async / .await
zu verschaffen.
Stabiler alloc
-Crate
Stabil ist in der neuen Version auch der alloc
-Crate, der nun jene Teile von std
zur Verfügung stellt, die von Global Allocator wie Vec<T>
abhängen. Die betreffenden Teile reextrahiert std
nun bei Bedarf. Bisher enthielt die Standard-Library von Rust die Crates std
, core
und proc_macro
, wobei core
Kernfunktionen wie Iterator
und Copy
bereitstellt und in #![no_std]
-Umgebungen genutzt werden konnte, da es keine Anforderungen voraussetzt. std
unterdessen stellt Types wie Box<T>
und OS-Funktionen bereit, erfordert im Gegenzug aber einen Global Allocator und andere OS-Fähigkeiten.
Vorläufig können #![no_std]
-Binaries alloc
nur in Verbindung mit einem Nigthly-Release von Rust verwenden. In den stabilen Rust-Versionen müssen Entwickler noch auf #![no_std]
-Library-Crates zurückgreifen.
Compiler-Probleme vermeiden
Um die bisher gängige Verwendung von mem::uninitialized
zur Umgehung der Initialisierungstests von Rust zu unterbinden, hat das Rust-Team den Type MaybeUninit<T>
stabilisiert. So sollen Missinterpretationen des Compilers bezüglich der Initialisierung des Type T vermieden werden. Ab Rust 1.38 soll die Funktion mem::uninitialized
deprecated werden. Weitere Details zu nicht initialisiertem Speicher und MaybeUninit<T>
enthält der Blogpost von Alexis Beingessner.
Die Ankündigung zu Rust 1.36 im offiziellen Rust-Blog liefert weitere Details zu den Neuerungen der Programmiersprache – darunter auch die neue Implementierung von HashMap<K, V>
sowie die --offline
-Unterstützung in Cargo. Eine vollständige Übersicht der Änderungen und Stabilisierungsmaßnahmen finden sich in den Release Notes. Eine Dokumentation, der Sourcecode für den Compiler sowie die Standardbibliothek liegen im Repository auf GitHub parat. Wer Rust installieren möchte, kann das passende Werkzeug von der Tools-Seite nutzen.
(map)