Rust 1.27.0 mit SIMD-Support und überarbeiteter Trait-Syntax

Im neuen Release stecken laut Mitteilung zwei von Entwicklern erwartete große Sprachfeatures. Zum einen sind die SIMD-Grundlagen an Ort und Stelle, zum anderen wurde die verwirrende Trait-Objekt-Syntax korrigiert.

Single Instruction Multiple Data (SIMD) beschleunigt das Addieren von Elementen und steckt als Funktionalität in Compilern wie LLVM. Das neue Modul “std::arch” erlaubt es, diese beschleunigte Addition direkt umzusetzen, ohne auf einen smarten Compiler vertrauen zu müssen. Die Entwickler bezeichnen “std::arch” als recht anspruchsvoll und kniffelig, künftig soll sich über ein Modul “std::simd” auch “High-Level-Zeug” umsetzen lassen.

Im jetzigen Modul darf der Entwickler zwischen verschiedenen Implementierungen wählen und diese von Kriterien abhängig machen. Wie der Blogeintrag demonstriert, lässt sich zum Beispiel über ein Makro “is_x86_feature_detected!” erkennen, ob die CPU AVX2 unterstützt. Tut sie dies, ruft der Code eine entsprechende Funktion auf, die das Feature verwendet, was das Programm deutlich beschleunigt. Andernfalls funktioniert es immerhin noch, kommt aber ein Fallback zum Einsatz.

Traits optimiert

Eine zweite Neuerung betrifft den Umgang mit Traits. Die gewollte Ähnlichkeit eines Traits mit einem Struct erwies sich als recht verwirrend, auch sonst erwies sich die Definition von Traits als nicht immer intuitiv. Die “dyn Trait”-Syntax soll das Problem lösen, der Blogeintrag zählt ein paar Beispiele auf:

Alt => Neu
Box<Foo> => Box<dyn Foo>
&Foo => &dyn Foo
&mut Foo => &mut dyn Foo

Die alte Syntax funktioniert zum Erhalt der Rückwärtskompatibilität weiterhin, die neue soll aber den Code verständlicher machen. Die Entwickler haben einen Linter integriert, um alte Syntax zu prüfen. Künftig soll ein Tool namens Rustfix alten Code-Konstrukte in neue verwandeln. Das Werkzeug sei aber noch in Arbeit.

Neben den beiden großen gibt es einige kleinere Änderungen und Verbesserungen. so lässt sich das “#[must_use]”-Attribut neuerdings auch auf Funktionen anwenden, zuvor klappte das lediglich für Types. Verschiedene Bibliotheken-APIs wurden stabilisiert. Der Paketmanager Cargo kennt nun eine “–target-dir”-Flag und kommt besser mit dem Überprüfen von Beispielcode zurecht. Nicht zuletzt lässt sich die Dokumentation der Webseite zur Programmiersprache nun per Suchfunktion durchforsten, was Entwicklern das Leben erleichtern dürfte.

Ein “rust update stable” bringt Rust-Installationen auf den neuesten Stand. Andernfalls hilft die Installationsanleitung auf der Webseite.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben