Darüber hinaus bringt die neue Sprachversion auch die weitere Stabilisierung verschiedener Library-Funktionen und -Methoden mit sich, außerdem wird derzeit verstärkt an der Implementierung eines neuen Build-Systems gearbeitet, das in Rust geschrieben ist und auf Cargo basiert. Im Rust-Blog hat das Entwickler-Team die Highlights der neuen Sprachversion vorgestellt.
Neue Features in Rust 1.8
Vor allem über zwei neue Features dürfen sich Entwickler freuen: So können ab Rust 1.8 verschiedene „operator equals“-Operatoren wie zum Beispiel +=
und -=
mit verschiedenen Eigenschaften überladen werden. Wie bei anderen Operator-Eigenschaften auch erlauben zugehörige Typen die Nutzung verschiedener Typen auf beiden Seiten des Operators. Im Detail sieht die Neuerung, die im zugehörigen RFC nochmals ausführlich beschrieben wird, folgendermaßen aus:
use std::ops::AddAssign; #[derive(Debug)] struct Count { value: i32, } impl AddAssign for Count { fn add_assign(&mut self, other: Count) { self.value += other.value; } } fn main() { let mut c1 = Count { value: 1 }; let c2 = Count { value: 5 }; c1 += c2; println!("{:?}", c1); }
Neu ist auch, dass ein struct
ohne Inhalt in Rust 1.8 nun auch mit geschweiften Klammern definiert werden kann; zuvor löste diese Darstellung einen Deklarations-Fehler aus. Ursprünglich sollte der Verzicht auf geschweifte Klammern für mehr Konsistenz mit anderen leeren Declarations sorgen; seit Rust 1.0 ist das jedoch nicht mehr nötig, weil es keine Parsing-Ambiguität mehr gibt. Außerdem wird Entwicklern, die zwischen leeren und ausgefüllten Versionen eines struct
s wechseln, dadurch die Arbeit erleichtert.
Updates für Cargo
Neben den oben genannten neuen Features bringt Rust 1.8 auch einige Updates für Cargo mit sich. So kann cargo init
nun etwa dazu genutzt werden, ein Cargo-Projekt direkt im aktuellen Arbeitsdirectory zu starten, anstatt wie bisher ein neues Subdirectory zu erstellen. Außerdem wurde mit cargo metadata
ein neuer Subbefehl zum Abrufen von Metadaten eines Projekts implementiert.
Und apropos Cargo: In Rust 1.8 wurde Support für ein neues, auf Cargo basierendes und in Rust geschriebenes Build-System implementiert, das künftig make
zum Erstellen von Rust-Programmen ersetzen soll. Noch befindet sich das neue Build-System allerdings im Anfangsstadium der Entwicklung und ist noch nicht als Default vorgesehen. Mehr Informationen dazu bietet die entsprechende GitHub-Issue.
Alle Neuerungen in Rust 1.8 sind zudem in den vollständigen Release Notes zusammengefasst; die neue Version steht auf der Projektwebsite zur Installation bereit.
Efficient Transformers
Christoph Henkelmann, DIVISIO
Enhancing Page Visits by Topic Prediction
Dieter Jordens, Continuum Consulting NV
Machine Learning on Edge using TensorFlow
Håkan Silfvernagel, Miles AS
Aufmacherbild: Rusted metal texture von Shutterstock / Urheberrecht: Ensuper