Programmiersprachen: Rust bekommt Unions

Mozillas auf Sicherheit und Nebenläufigkeit ausgelegte Programmiersprache Rust hat Version 1.19 erreicht und räumt mit einigen länger bekannten Unzulänglichkeiten auf. Außerdem verbessert sich mit ihr die Kompatibilität zu C.

In Pocket speichern vorlesen Druckansicht 92 Kommentare lesen
Programmiersprachen: Rust bekommt Unions
Lesezeit: 2 Min.
Von
  • Julia Schmidt

Die Entwickler der Systemprogrammiersprache Rust haben Version 1.19 ihres Projekts freigegeben. Es ist das erste Release das den enum ähnelnden Typ union kennt, was die Kompatibilität zu C verbessert. Grund ist, dass entsprechende APIs unions freilegen können, was bedeutet, dass sich nun leichter Wrapper für sie schreiben lassen. Der Unterschied zu enum ist, dass sie keinen Tag besitzen, in dem der zur Laufzeit richtige Zustand hinterlegt ist. Derzeit können unions nur Copy-Typen enthalten und kein Drop implementieren, das soll sich aber bald ändern.

In mit loop markierten Schleifen lässt sich ab Version 1.19 statt

let x;
loop{
x=7;
break;
}

kompakter

let x = loop { break 7; };

schreiben. Außerdem stehen nun die Makros eprint! und eprintln! zur Verfügung, die wie print! und println! agieren, nur dass die Ausgabe auf Standard Error statt den normalen Output umgeleitet wird. Da das -z-Flag unsichere Flags im Compiler erlaubt hat, ist es nicht länger in stabilen und Betaversionen erlaubt; entsprechende Warnungen gab es schon seit April 2016.

Auch bei der Paketverwaltung Cargo gibt es einige Verbesserungen: So checkt das Programm für Arbeiten mit dem crates.io-Index diesen nicht länger aus, was die lokale Größe der Registry und die für einen Klonvorgang nötige Zeit reduziert. Darüber hinaus sind Build-Skripte nun in der Lage, der Umgebung, in der eine Crate kompiliert wird, Umgebungsvariablen hinzuzufügen, und es gibt mit --all ein neues Flag in cargo bench, mit dem sich Benchmarks für alle Member eines Workspace durchführen lassen. Crates entsprechen dem, was in anderen Sprachen beispielsweise unter der Bezeichnung Pakete läuft.

Windows-Nutzer müssen im Übrigen nach dem Update auf die nun freigegebene Version 1.19 nicht länger auf Workarounds bauen, um Rust zum Laufen zu bekommen, da rustc nun weiß, wo die Visual C++ Build Tools für VS 2017 zu finden sind. Eine komplette Liste aller Änderungen ist in den Release Notes zu finden. (jul)