Suche
Rust 1.15 bringt endlich das langerwartete Feature Custom Derive

Rust 1.15 – neue Features und bessere Performance

Christoph Ebert

© Shutterstock/Brais Seara

Das Rust-Team bleibt im Zeitplan und veröffentlicht im Sechswochentakt neue Versionen der Systemsprache. Rust 1.15 bringt unter anderem das lang erwartete Feature Custom Derive sowie 1.443 Patches und Performance-Verbesserungen.

Das Rust-Core-Team hat die Bereitstellung von Rust 1.15 bekanntgegeben. Das als Systemsprache konzipierte Rust, potenzieller Konkurrent für C und C++, aber auch für Googles Go, vereint Ansätze aus verschiedenen Programmierparadigmen. Vor allem wird aber Mozillas kommende Browser-Engine Servo damit entwickelt.

Nachdem vor sechs Wochen Rust 1.14 erschienen ist, ist ab sofort Rust 1.15 verfügbar – und hat stolze 1.443 Patches im Gepäck.

Rust 1.15 – die Highlights

Die neue Rust-Version bringt endlich das langerwartete Feature Custom Derive. Schon immer konnte man Traits automatisch mithilfe des Attributs derive implementieren:

Rust 1.15 custom derive 1

(Bild: blog.rust-lang.org)

Custom Derive

Der Debug Trait wurde dann für Pet implementiert, mit viel weniger Boilerplate. Das funktionierte allerdings nur für Traits, die als Teil der Standardbibliothek verfügbar waren. In Rust 1.15 lässt sich dieser Prozess jetzt customizen. Das heißt: Will man sein Pet in JSON umwandeln, ist das jetzt so einfach wie das Hinzufügen des Serde-Frameworks zur Cargo.html:

(Bild: blog.rust-lang.org)

(Bild: blog.rust-lang.org)

So sieht es aus, wenn ein weiterer Trait zu eurer Pet hinzugefügt wird:

(Bild: blog.rust-lang.org)

(Bild: blog.rust-lang.org)

So erhält man den folgenden Output:

(Bild: blog.rust-lang.org)

(Bild: blog.rust-lang.org)

Weitere Verbesserungen

Das Build-System für Rust wurde in Rust neu geschrieben, und zwar mithilfe von Cargo. Dieses Build-System ist jetzt das Default-Build-System.
Außerdem besitzt Rust nun Tier-3-Support für folgende Prozessorarchitekturen: i686-unknown-openbsd, MSP430 und ARMv5TE. Dazu gesellen sich eine Reihe von Compiler-Performance-Verbesserungen und ?Sized kann ab sofort in where Klauseln genutzt werden.

Mehr Stabilität für Bibliotheken

Der slice::sort Algorithmus wurde neu geschrieben und soll nun deutlich schneller sein, da es sich ab sofort um einen „hybrid merge sort“ handelt. Ebenfalls merklich schneller: chars().count(), chars().last() und char_indices().last().

Cargo-Features

Cargo gibt ab sofort eine Warnung aus, wenn man eine Datei namens build.rs im Top Level eines Packages hat, aber keine build = "build.rs" Annotation. Dies geschieht in Erwartung der Annahme, dass build.rs im Top Level immer ein Build-Script ist, bleibt aber vorerst aus Kompatibilitätsgründen eine Warnung.

Darüber hinaus haben Cargo-Build-Scripts mit diesem Release während des Builds keinen Zugriff mehr auf die OUT_DIR Umgebungsvariable via env!("OUT_DIR"). Stattdessen sollten die Scripts die Variable in der Runtime mit std::env überprüfen. Dass der Wert zur Laufzeit gesetzt wurde, war ein Bug und falsch beim Cross-Compiling. Das Rust-Team rät dazu, zu kontrollieren, was die Packages machen und gegebenenfalls für die Nutzung von std::env zu aktualisieren

Last, but not least: Der cargo test Befehl unterstützt nun ein --all Flag (hilfreich, wenn man einen Workspace hat) und Rust kompiliert nun statisch gegen die MSVC CRT auf Windows und Link OpenSSL auf Mac OS X.

Alles Details zu Rust 1.15 finden sich in den Release Notes auf GitHub.

Verwandte Themen:

Geschrieben von
Christoph Ebert
Christoph Ebert
Christoph Ebert stieß im Juli 2011 zum Online-Team von Software & Support Media. Als Redakteur kümmert er sich um das Portfolio von entwickler.press und ist verantwortlich für das Entwickler Magazin und entwickler.de. Davor betreute er die Portale WebMagazin.de, CreateOrDie.de und mobile360.de. Vor seiner Zeit in Frankfurt arbeitete der studierte Amerikanist und Tech-Geek als Redakteur für ein Heimkinofachmagazin im Süden Deutschlands.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.