Grundlagenarbeit für den Compiler

Trust in Rust: Mozillas Systemsprache erscheint in Version 1.11

Hartmut Schlosser

www.rust-lang.org

Eine Systemsprache mit dem Fokus auf Sicherheit, Geschwindigkeit und Nebenläufigkeit: So beschreibt Mozilla seine junge Programmiersprache Rust. Erschienen ist jetzt die Version 1.11. Wir schauen uns an, in welche Richtung die Rust-Entwicklung zeigt.

Rust-Steckbrief

Rust ist als Systemsprache konzipiert, die als Konkurrent für C und C++ – aber auch zu Googles Go – gesehen werden kann. Die Syntax ist stark an C angelehnt, enthält aber moderne Konstrukte, um invalide Speicherzugriffe zu verhindern und Multicore-Architekturen besser zu unterstützen.

Zu den Charakteristika der Sprache gehören Pattern Matching und algebraische Datentypen (enums), Typeninferenz, Higher-order Functions (Closures), Generics und Polymorphismus in Form von Java-artigen Interfaces in Kombination mit Haskell-artigen Typen-Klassen (traits).

Aktuelles Release: Rust 1.11

Besonderes Augenmerk wurde in Rust 1.11 auf den Compiler gelegt. So hat das Team die Grundlagen geschaffen, um das neue sogenannte MIR Backend per Default zu aktivieren. Dabei geht es darum, Funktionen von Rust automatisch zum LLVM In-Memory Compiler IR zu übersetzen, anstatt das alte AST Backend zu nutzen.

Begonnen haben zudem die Arbeiten an der inkrementellen Kompilierung – vorerst  allerdings mit dem Ziel, .o-Dateien wiederverwenden zu können. Im incr.-Mode werden die .o Files im temporären Verzeichnis gespeichert und von dort zurückgeholt, wenn sie noch gültig sind. Weitere Verbesserungen des incr.-Compiler-Modus dürfen in kommenden Releases erwartet werden.

Neuer Crate-Typ

In Rust gibt es sogenannte Crates. Diese sind mit Bibliotheken oder Paketen in anderen Sprachen gleichzusetzen. In der vorherigen Rust-Version 1.10 wurde der neue Crate-Typ cdylib eingeführt, mit dem das dynamische Bibliotheksformat dylib für das Schreiben einer dynamischen Bibliothek in einem Rust-Projekt reserviert wurde.

Wurde cdylib in Rust 1.10 lediglich vom Compiler unterstützt, ist es in Rust 1.11 nun auch im Paket-Management-Tool Cargo verfügbar. Mit Cargo können Crates mit anderen zusammengeführt und kombiniert werden. Zudem wurden im Cargo-Tool weitere Detail-Verbesserungen vorgenommen, etwa der Farbsupport für Windows-Konsolen und die Ausgabe von Warnungen bei Build-Skripten.

Hintergrund

Bereits zehn Jahre ist es her, seit bei Mozilla der Wunsch nach einer Alternative zu C und C++ geboren wurde. Hauptzielgruppe des Projektes waren von Anfang an jene Entwickler, die von C und C++ enttäuscht waren, wie Chefentwickler Graydon Hoare damals in einem Interview mit InfoQ feststellte. Die Motivation für Rust liegt für ihn auf der Hand:

A lot of obvious good ideas, known and loved in other languages, haven’t made it into widely-used systems languages, or are deployed in languages that have very poor (unsafe, concurrency-hostile) memory models.

— Graydon Hoare

Voriges Jahr hat die “Multiparadigmensprache”, welche von Graydon Hoare und seinem Team entwickelt wurde, mit Version 1.0 die Kinderschuhe abgelegt. Durch leichtgewichtige Tasks wird die bereits von Sprachen wie Erlang unterstützte Nebenläufigkeit realisiert. Der eigene Compiler, rustc, ist seit 2011 für die Kompilierung von Rust-Programmen verfügbar und wurde selbst in Rust geschrieben.

JAXenter-Autor Frank Müller ordnet die Sprache zwischen C und Googles Sprache Go ein:

Mueller_Frank_1-200x300-87x130Rust 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.

Rust 1.11 Download

Eine vollständig Übersicht aller Neuerungen in Rust 1.11 bietet die Release-Ankündigung. Das Rust-Team hebt dort hervor, dass über 1100 Patches in diese Version eingeflossen sind, die von 126 Committern beigesteuert wurden – ein Zeichen für das große Engagement der Community rund um Rustlang.

Installieren kann man Rust 1.11 in Linux (.tar.gz), Mac (.pkg) oder Windows (.msi) Varianten über die Download-Sektion der offiziellen Webseite. Seit Version 1.0 wird im Turnus von sechs Wochen eine neue Version der Programmiersprache veröffentlicht – die nächste Version 1.12 von Rust wird demnach Ende September fällig.

 

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. SEO und KPIs isst er zum Frühstück. Satt machen ihn kreative Aktionen, die den Leser bewegen. @hschlosser
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: