Das Rust-Team hat am 29. März 2018 Rust 1.25.0 veröffentlicht. Die stabile Ausgabe wechselt von LLVM 4 auf LLVM 6 und erweitert die Syntax für Importe. Die Release Notes zu Version 1.25.0 dokumentieren außerdem Änderungen an Bibliotheken, Cargo und der Kompatibilität.
Importgruppen und Ausrichtung von Strukturen
Verschachtelte Importgruppen fassen mehrere use-Anweisungen zusammen. Gemeinsame Pfade müssen dadurch nicht wiederholt werden. Das nun stabile Attribut #[repr(align(x))] legt die Ausrichtung von Strukturen fest. Es betrifft das Speicherlayout, nicht automatisch die Ausführungsgeschwindigkeit des Programms.
Die Bibliothek ergänzt std::ptr::NonNull<T>. Dieser Zeigertyp ist nicht null und kann beim Aufbau eigener Datenstrukturen mit unsicherem Code verwendet werden. Er ist keine allgemeine Garantie sicherer Speicherzugriffe. Duration steht nun auch in libcore bereit; mehrere Konstruktoren können in konstanten Ausdrücken genutzt werden.
Cargo ändert die Vorlage für neue Projekte
cargo new erstellt ohne weitere Option ein Binärprojekt statt einer Bibliothek. Mit --lib bleibt die Bibliotheksvorlage verfügbar. Paketnamen mit dem Präfix rust- oder dem Suffix -rs werden nicht mehr automatisch umbenannt. Diese Vorgaben betreffen neu angelegte Projekte, nicht eine automatische Umwandlung bestehender Bibliotheken.
Die Release Notes nennen zudem korrigierte Fälle überlappender Borrows bei Indexoperationen und den entfernten, bereits veralteten instabilen Attributnamen #[simd]. Beim Aktualisieren einer Werkzeugkette sind deshalb auch Kompatibilitätsänderungen zu prüfen.
Die zugrunde liegende Compiler-Infrastruktur LLVM 6.0 war bereits Anfang März erschienen. Rust beschreibt den Wechsel als weiteren Schritt Richtung AVR-Unterstützung, nicht als vollständige AVR-Freigabe. Dieser Beitrag dokumentiert Rust 1.25 von 2018 und ist keine aktuelle Update-Empfehlung.

