Zum Inhalt springen

Fearless SIMD 1.0 bringt stabiles, sicheres SIMD nach Rust

Fearless SIMD 1.0 erschien am 21. September und bringt Rust sicheres SIMD von SSE2 bis AVX-512, NEON und WebAssembly, mit stabiler API und 3 Jahren Sicherheitsupdates.

Von Tech AI Wire Team

3 Min. Lesezeit

XLinkedIn
Das Repository linebender/fearless_simd auf GitHub, das die Version fearless_simd-v1.0.0 als neueste Veröffentlichung anzeigt.

Die Zahlen

crates that depend on it indirectly
1,000+
crates that use it directly
30
minimum Rust version
1.89
of security backports promised
3 years

Fearless SIMD, eine Rust-Bibliothek für schnellen Rechencode ohne unsafe-Blöcke, hat am 21. September 2026 Version 1.0 erreicht. Die Veröffentlichung friert die API ein. Code, der heute dagegen geschrieben wird, sollte also weiter kompilieren. Das ist wichtig, denn mehr als 1.000 Rust-Crates hängen bereits davon ab, direkt oder über andere Bibliotheken.

Das Linebender-Projekt kündigte die Veröffentlichung am 22. September in seinem Blog an. Die Version ist auch auf docs.rs gelistet, dem Dokumentations-Host für Rust, mit dem Datum 21. September.

Was SIMD ist und warum Rust es schwer macht

SIMD steht für "single instruction, multiple data". Ein moderner Prozessor kann mit einer Anweisung mehrere Zahlen addieren, vergleichen oder multiplizieren, statt eine nach der anderen. Grafik-, Audio-, Kompressions- und Bildcode setzen dafür stark auf SIMD.

In Rust führt der direkte Weg zu diesen Anweisungen über "Intrinsics". Das sind Funktionen, die direkt einer Prozessoranweisung entsprechen. Die meisten sind als unsafe markiert. Ruft man eine davon auf einem Prozessor ohne diese Anweisung auf, kann das Programm abstürzen. Rust verlangt vom Programmierer, von Hand zuzusichern, dass die Prüfung erfolgt ist.

Jede Prozessorfamilie hat zudem ihren eigenen Befehlssatz. Code für Intels AVX-512 tut auf einem Arm-Smartphone nichts. Wer mehrere Chips unterstützen will, schreibt dieselbe Routine meist mehrfach.

Was Fearless SIMD leistet

Die Bibliothek verpackt beide Probleme in sicheren Code. Ihre README beschreibt "einen Weg, SIMD sicher zu nutzen, sowohl über Intrinsics als auch über sichere Abstraktionen, während sie selbst bemerkenswert wenig unsicheren Code enthält."

Laut dem Beitrag von Linebender bietet sie vier Ansätze:

  • Autovektorisierung: dem Compiler helfen, gewöhnliche Schleifen in SIMD-Code zu verwandeln.
  • Multiversioning: mehrere Kopien einer Funktion für verschiedene Chips bauen und zur Laufzeit die passende wählen.
  • Portable Operationen: ein Satz Vektortypen, der auf jedem unterstützten Prozessor funktioniert.
  • Plattform-Intrinsics: direkter Zugriff auf die eigenen Anweisungen eines Chips, ohne unsafe.

Den letzten Punkt betont Linebender besonders. "Dank sicherem Zugriff auf Intrinsics gibt es keine Leistungsobergrenze", heißt es im Beitrag.

PunktDetail
Version1.0.0, 21. September 2026
Intel und AMDSSE2 bis AVX-512
ArmNEON
BrowserWebAssembly SIMD
Andere ChipsSkalarer Fallback
Minimale Rust-Version1.89
AbhängigkeitenKeine im Kern-Crate
LizenzApache-2.0 oder MIT

Ein optionales Begleit-Crate, fearless_simd_macros, fügt ein #[simd]-Attribut hinzu. Der Blogbeitrag sagt dazu: "Setzen Sie es auf eine beliebige SIMD-Funktion, und es funktioniert einfach."

Was sich in 1.0 geändert hat

Das Projekt begann laut Linebender 2018 als Prototyp, vor acht Jahren. Laut GitHub-Repository enthält die Version 1.0 vor dem Einfrieren einige letzte inkompatible Änderungen:

  • witness() heißt jetzt token() und wandert in einen neuen Supertrait ExtractToken.
  • SimdBase::N und SimdMask::N heißen jetzt LEN.
  • as_array gibt jetzt eine Referenz statt einer Kopie zurück.
  • Neue Operationen für sättigende Arithmetik und Bitzählung.
  • Neue Reduktionen: reduce_min, reduce_max, reduce_sum und reduce_product.
  • Neue Fused-Multiply-Add-Operationen.

Das Repository gibt außerdem ein Support-Versprechen. Die jeweils neueste 1.0-Version für jede minimale Rust-Version erhält Sicherheitskorrekturen für mindestens 3 Jahre nach Erscheinen dieser Rust-Version. Künftige Versionen können die minimale Rust-Version in Minor-Updates anheben.

Was das für Entwickler bedeutet

Wenn Sie ein Crate nutzen, das Fearless SIMD einbindet, prüfen Sie, ob es auf 1.0 umgestiegen ist. Die obigen Umbenennungen brechen Code, der witness() aufrief, N nutzte oder sich darauf verließ, dass as_array eine Kopie liefert. Es sind mechanische Korrekturen, aber bis dahin sind es Kompilierfehler.

Wenn Sie handgeschriebenen unsafe-SIMD-Code pflegen, ist jetzt ein guter Moment, ihn mit der Bibliothek zu vergleichen. Der Hauptgewinn ist ein Codepfad für x86, Arm und WebAssembly statt drei. Messen Sie Ihre eigenen heißen Schleifen vorher und nachher. Die Behauptung des Projekts, es gebe keine Leistungsobergrenze, sollten Sie mit Ihren Daten testen.

Für Bibliotheksautoren machen die stabile API und das Sicherheitsfenster Fearless SIMD sicherer für eine öffentliche Schnittstelle. Vor 1.0 wurde eine inkompatible Änderung einer Abhängigkeit zu Ihrer eigenen. Beachten Sie die Untergrenze Rust 1.89 und prüfen Sie, ob sie zum ältesten Compiler Ihrer Nutzer passt.

Quellen

  1. Fearless SIMD v1.0 is here - Linebender
  2. linebender/fearless_simd - GitHub
  3. fearless_simd 1.0.0 documentation - docs.rs

Ähnliche Artikel