Fearless SIMD v1.0 : SIMD sans unsafe en Rust

Original : Fearless SIMD v1.0

Pourquoi c'est important

Rend le SIMD haute performance accessible sans expertise en unsafe Rust, abaissant la barrière pour les développeurs systèmes.

Le 22 septembre 2026, Shnatsel annonce Fearless SIMD v1.0, une bibliothèque Rust éliminant le code unsafe des opérations SIMD. Après 8 ans de développement, elle offre autovectorisation, multiversioning et accès sécurisé aux intrinsics, sans compromis sur les performances.

Fearless SIMD v1.0 marque l'aboutissement d'un projet initié il y a huit ans. L'objectif central : rendre le SIMD en Rust aussi sûr que le reste du langage, sans sacrifier la performance.

Sur le plan de la sécurité, la bibliothèque évite l'accumulation de blocs unsafe habituellement présents dans les abstractions SIMD concurrentes (souvent plusieurs milliers de blocs). Deux mécanismes clés permettent cela : la macro kernel! qui s'appuie sur target feature v1.1 du compilateur pour invoquer la plupart des intrinsics sans unsafe, et un module safe transmute inspiré de bytemuck et zerocopy pour les opérations load/store sur pointeurs bruts. Ces deux briques auditables garantissent la sûreté mémoire du reste du code.

Côté performance, la v1.0 propose des variantes « précises » (comportement identique sur toutes les plateformes) et « rapides » (résultat dépendant du matériel) pour les opérations aux cas limites variables comme les swizzles ou le maximum flottant. Le code peut s'exprimer selon la taille vectorielle native du matériel. Des contributions ont également été remontées en amont vers Rust et LLVM.

En parallèle sort fearless_simd_macros v0.1, qui introduit la macro #[simd] : une abstraction non fuiteuse du multiversioning, évitant d'avoir à gérer manuellement #[inline(always)] ou à subir un overhead sur les petites fonctions.

Source

linebender.org — Lire l'original →