© Excellent backgrounds/Shutterstock.com
Neue Version 1.0 von Rust

Alte Liebe rostet nicht


Alte Liebe nicht, aber manchmal eine junge. Die Sprache Rust hat am 15. Mai die Version 1.0 erreicht und kann damit nicht gerade von einem hohen Alter sprechen. In Jahren ausgedrückt sind es sechs, die der Mozilla-Mitarbeiter Graydon Hoare und sein Team in die Entwicklung ihrer Alternative zu C und C++ gesteckt haben.

Ursprünglich wirkte Graydon Hoare in C++-Projekten mit; Performance, Speicherverwaltung und die Erzeugung von Binärprogrammen waren die Motivation. Jedoch lernte er hier gerade bei der Entwicklung nebenläufiger Programme die größten Schwächen kennen. Hier ist insbesondere die Speicherverwaltung zu nennen. So kommen ungültige oder nicht gesetzte Pointer zum Einsatz, Speicher wird reserviert, aber nicht freigegeben, Schreibvorgänge halten sich nicht an die für sie vorgesehenen Grenzen, Variablen werden trotz vorgesehener Unveränderlichkeit doch neu geschrieben und zwischen nebenläufigen Bestandteilen des Programms kommt es zu Race Conditions. Hieraus entstand dann der Wunsch nach einer zu C- und C++-ähnlichen Programmiersprache, ergänzt um moderne Sprachkonstrukte und einer sicheren Speicherverwaltung auf der Basis des Ownerships.

Die Sprache selbst 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.

Funktionen werden ähnlich wie in Go über ein Schlüsselwort deklariert und eventuelle Rückgabewerte folgen nach den Argumenten. Gleiches gilt für die Deklaration von Variablen. Dies unterscheidet sich von C und ist eher mit Go vergleichbar. Das Beispiel in Listing 1 zeigt bei der Konstanten who, dass eine Typenangabe nicht zwingend notwendig ist. Vielmehr wird der Typ hier aus der Zuweisung abgeleitet. Das Beispiel count zeigt hingegen, wie der implizite Typ überschrieben werden kann. Die beiden Deklarationen unterscheiden sich zudem im Schlüsselwort mut. Es steht für *mutabl...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang