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:
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
:
So sieht es aus, wenn ein weiterer Trait zu eurer Pet hinzugefügt wird:
So erhält man den folgenden Output:
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.