Neue Sprachversion bringt einige neue Features mit sich

Rust 1.8 erschienen: Mozillas Multiparadigmensprache auf dem Vormarsch

Stefanie Schäfers

© Shutterstock/Ensuper

Knapp anderthalb Monate nach der Veröffentlichung der Vorgängerversion Rust 1.7 nun mit Rust 1.8 das nächste Update der Systemprogammiersprache erschienen. Im Fokus des Releases stehen vor allem Bug-Fixes und zahlreiche Verbesserungen, aber auch einige neue Features wurden Rust 1.8 spendiert.

Rust ist eine sogenannte „Multiparadigmensprache“, die von Mozilla ins Leben gerufen wurde. Unterstützt werden sowohl funktionale als auch objektorientierte Programmierweisen. Nebenläufigkeit wird durch leichtgewichtige Tasks realisiert, wie sie beispielsweise in Erlang oder anderen Aktoren-basierten Sprachen anzutreffen sind. Seit 2011 werden Rust-Programme mit dem selbst in Rust geschriebene Compiler rustc kompiliert, welcher wiederum auf LLVM als Backend-Technologie zurückgreift.

Verantwortlich für die Konzepte hinter Rust zeichnet der Mozilla-Mitarbeiter Graydon Hoare und sein Team, denen es 2009 darum ging, eine Alternative zu C und C++ bereit zu stellen. JAXenter-Autor Frank Müller positioniert die Sprache zwischen C und Google Go:

Mueller_Frank_1-200x300-87x130

Frank Müller

Rust ist wie einige andere aktuelle Vertreter eine Multiparadigmensprache mit einer starken Nähe zu C. Hierin finden sich jedoch Funktionen als Datentypen und Closures wieder, Pattern Matching und Makros sind ebenfalls vorhanden. Auch wenn Rust keine Klassen im Sinne der Objektorientierung kennt, so verfügt die Sprache dennoch über die Möglichkeit, Methoden für Typen zu definieren und die Sichtbarkeit zu steuern. Dazu kommen noch Traits und Generics. Für die Nebenläufigkeit setzt Rust jedoch nicht auf die von Erlang und Go bekannten, leichtgewichtigen Green Threads plus Messaging oder Channels für die Kommunikation. Hier kommen native Threads gemeinsam mit Channels und Typen zur Synchronisation in der Standardbibliothek zum Einsatz.

Lesen Sie die vollständige Einführung in Rust im Artikel „Alte Liebe rostet nicht„.

Neue Features in Rust 1.8

Rust 1.8 bringt 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.

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 structs 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.

Aufmacherbild: Rusted metal texture von Shutterstock / Urheberrecht: Ensuper

Verwandte Themen:

Geschrieben von
Stefanie Schäfers
Stefanie Schäfers
Stefanie Schäfers studierte zunächst Anglistik in Marburg und machte anschließend ihren Masterabschluss im Bereich Creative and Cultural Industries an der Glasgow Caledonian University in Glasgow, Schottland. Seit August 2014 ist sie als Redakteurin in der Redaktion des PHP Magazins bei Software & Support Media tätig. Zuvor absolvierte sie bereits mehrere Praktika in Online-Redaktionen und Verlagen.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: