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.
3 Min. Lesezeit

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.
| Punkt | Detail |
|---|---|
| Version | 1.0.0, 21. September 2026 |
| Intel und AMD | SSE2 bis AVX-512 |
| Arm | NEON |
| Browser | WebAssembly SIMD |
| Andere Chips | Skalarer Fallback |
| Minimale Rust-Version | 1.89 |
| Abhängigkeiten | Keine im Kern-Crate |
| Lizenz | Apache-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 jetzttoken()und wandert in einen neuen SupertraitExtractToken.SimdBase::NundSimdMask::Nheißen jetztLEN.as_arraygibt 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_sumundreduce_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
- Fearless SIMD v1.0 is here - Linebender
- linebender/fearless_simd - GitHub
- fearless_simd 1.0.0 documentation - docs.rs
Ähnliche Artikel

Go 1.27: das simd-Paket bringt portables, emuliertes SIMD
Das experimentelle simd-Paket in Go 1.27 führt einen Vektor-Codepfad auf AVX-512, NEON, wasm und RISC-V aus und emuliert ihn, wo Hardware-SIMD fehlt.

Rust warnt Maintainer vor gefälschten Job-Videocalls
Rusts Sicherheitsteam meldet: Angreifer vereinbaren unter falschen Jobangeboten Videocalls mit Crate-Ownern und bitten dann um die Installation eines fehlenden Codecs.

Rustls 0.23.45 behebt einen TLS-1.3-Fehler von 2024
Die Versionen 0.23.13 bis 0.23.44 akzeptierten TLS-1.3-Handshake-Nachrichten auf der falschen Verschlüsselungsebene, ein Fehler aus dem September 2024.