Menü

Programmiersprache Rust 1.37 bringt Feinschliff für die Syntax und den Paketmanager

Die Programmiersprache erweitert das Verwenden von Typvarianten und ermöglicht das Festlegen eines Standard-Binary für Cargo-Projekte.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 10 Beiträge
Von

Nachdem sich Rust 1.36 vor allem auf Stabilisierungen konzentriert hatte, bringt Version 1.37 der Programmiersprache einige, wenn auch kleinere, syntaktische Neuerungen. Nennenswert ist unter anderem die Abfrage der Varianten von Typen durch direkte Referenzierung und die Möglichkeit, namenlose Konstanten in Makros zu verwenden. Der Paketmanager Cargo ermöglicht nun das Festlegen eines Standard-Binaries und kann alle Dependencies eines Projekts in ein eigenes Verzeichnis entpacken.

Eine syntaktische Neuerung betrifft den Zugriff auf die enum-Varianten von Typen. Entwickler können sie nun für Abfragen verwenden, um beispielsweise zu erkennen, ob ein Element vom Typ Option die Variante Some(T) aufweist und einen Wert enthält, oder None, also keinen Wert darstellt. Rust 1.37 erlaubt somit die Abfrage auf folgende Art:

fn increment_or_zero(x: ByteOption) -> u8 {
match x {
ByteOption::Some(y) => y + 1,
ByteOption::None => 0,
}
}

Ebenso sind Abfragen über enum-Varianten von self erlaubt. Sie weisen dieselbe Syntax auf: Self::Variant.

Ebenfalls neu ist die Option, Konstanten zu verwenden, die keinen Namen besitzen. Stattdessen steht der Unterstrich _ als Bezeichner im Code. Die Neuerung dient vor allem der statischen Analyse, bei der sie Namenskonflikte beziehungsweise das erzwungene Verwenden von Dummy-Namen verhindert. Das Rust-Team verwendet die Neuerung bereits für den rustc-Compiler im Makro static_assert_size.

Cargo, der Paketmanager von Rust, erlaubt nun die Angabe eines Standard-Binaries. Entwickler mussten bisher für Pakete, die mehr als ein Binary enthalten, manuell das passende über den Parameter --bin beim Start über cargo run auswählen. Über die in Rust 1.37 eingeführte Option default-run in der Cargo.toml-Datei lässt sich ein Standard-Binary für cargo run angeben. Entwickler können jedoch weiterhin über die --bin-Option ein anderes ausführen.

Außerdem ist der Befehl cargo vendor kein separates Crate (Rust-Paket) mehr, sondern direkt in Cargo implementiert. Der Befehl lädt alle Dependencies eines Projekts nach und entpackt sie in das Verzeichnis vendor. Wie bei den unbenannten Makros ist der rustc-Compiler ein Vorreiter für den Einsatz des Befehls. Er nutzt ihn, um alle Dependencies in Tarballs zum Release auszuliefern.

Zu den weiteren nennenswerten Neuerungen gehört, dass der rustc-Compiler nun die profilgestützte Optimierung (Profile-guided Optimization, PGO) erlaubt. Das bedeutet, dass er die Optimierung basierend auf den Ergebnissen eines Profiler-Tools statt einer Code-Analyse vornimmt. Zum Aktivieren dienen die neuen Compiler-Flags -C profile-generate und -C profile-use zum Erstellen beziehungsweise Nutzen eines Profils.

Weitere Details zu Rust 1.37 wie die Stabilisierungen für die Standard-Libraries lassen sich dem Rust-Blog entnehmen. Eine vollständige Übersicht der Änderungen und Stabilisierungsmaßnahmen sind in den Release Notes aufgeführt. Auf der Tools-Seite findet sich ein Installationswerkzeug für Rust. Das Repository auf GitHub enthält zudem unter anderem den Sourcecode für den Compiler und die Standardbibliothek sowie eine Dokumentation.

Siehe dazu auf heise Developer:

(rme)