Programmiersprache: Rust 1.27 ist reif für SIMD

Die neue Version von Rust bietet nun grundlegende Unterstützung für den stabilen Einsatz von Single Instruction Multiple Data (SIMD) auf x86-Plattformen.

In Pocket speichern vorlesen Druckansicht
Programmiersprache: Rust 1.26 führt Existential Types ein
Lesezeit: 2 Min.
Von
  • Matthias Parbel

Version 1.27 von Mozillas Programmiersprache Rust ist erschienen. Die wichtigsten Neuerungen im aktuellen Stable Release betreffen das Attribut #[must_use], das sich jetzt auch auf Funktionen anwenden lässt, sowie den Einsatz von Single Instruction Multiple Data (SIMD). Zu Letzterem haben die Entwickler unter anderem die Module std::arch::{x86, x86_64} samt der darin enthaltenen Eigenschaften stabilisiert sowie das neue Makro is_x86_feature_detected! in der Standard-Library ergänzt. Neu ist darüber hinaus das Attribut #[target_feature(enable="")] während die Rust-Macher das cfg-Attribut um target_feature = "" ergänzt haben. Damit soll Rust 1.27 weitgehend reif für die direkte Nutzung von SIMD auf x86- und x86_64-Plattformen sein, sodass Entwickler nicht mehr allein auf die "Intelligenz" eines Compilers wie beispielsweise LLVM angewiesen sind. Ihnen stehen darüber hinaus mehr Optionen für die individuelle Anpassung an verschiedene Kriterien zur Verfügung. Im folgenden Beispiel kommen cfg-Flags für die Auswahl der jeweiligen Zielplattformen zum Einsatz – x86 oder x86_64.

#[cfg(all(any(target_arch = "x86", target_arch = "x86_64"),
target_feature = "avx2"))]
fn foo() {
#[cfg(target_arch = "x86")]
use std::arch::x86::_mm256_add_epi64;
#[cfg(target_arch = "x86_64")]
use std::arch::x86_64::_mm256_add_epi64;

unsafe {
_mm256_add_epi64(...);
}
}

In Version 1.26 die Rust-Entwickler Verbesserungen des match-Binding eingeführt. Kurz vor Veröffentlichung von Rust 1.27 wurde ein damit in Verbindung stehender Fehler bekannt. Dessen Behebung hat es leider nicht mehr in das aktuelle Release geschafft. In der Ankündigung von Rust 1.27 weisen die Entwickler daher explizit daraufhin, dass dieser Bug im Zuge eines Updates 1.27.1 sowie gegebenenfalls auch 1.26.3 behoben werden soll.

Ein vollständiger Überblick aller Neuerungen findet sich in den Release Notes zu Rust 1.27. Wer sich intensiver mit der Programmiersprache beschäftigen will, dem seien die von den Entwicklern verfassten Bücher empfohlen. Neu hinzugekommen ist ein jetzt ein Buch, dass sich detailliert mit dem Einsatz von rustc beschäftigt. (map)