Fearless SIMD 1.0 lleva SIMD estable y seguro a Rust
Fearless SIMD 1.0, publicado el 21 de septiembre, da a Rust SIMD seguro desde SSE2 hasta AVX-512, NEON y WebAssembly, con una API estable y 3 años de parches de seguridad.
3 min de lectura

En cifras
- 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, una biblioteca de Rust para escribir código numérico rápido sin bloques unsafe, alcanzó la versión 1.0 el 21 de septiembre de 2026. La versión congela su API, así que el código escrito hoy con ella debería seguir compilando. Eso importa porque más de 1.000 crates de Rust ya dependen de ella, directamente o a través de otras bibliotecas.
El proyecto Linebender anunció el lanzamiento en su blog el 22 de septiembre. La versión también aparece en docs.rs, el sitio de documentación de Rust, con fecha del 21 de septiembre.
Qué es SIMD y por qué Rust lo complica
SIMD significa "single instruction, multiple data" (una instrucción, múltiples datos). Un procesador moderno puede sumar, comparar o multiplicar varios números con una sola instrucción en lugar de uno a uno. El código de gráficos, audio, compresión e imagen depende de ello para ganar velocidad.
En Rust, la vía directa a esas instrucciones son los "intrinsics". Son funciones que se corresponden directamente con una instrucción del procesador. La mayoría están marcadas como unsafe. Llamar a una en un procesador que no tiene la instrucción puede hacer que el programa falle. Rust pide al programador que prometa, a mano, que la comprobación se hizo.
Además, cada familia de procesadores tiene su propio conjunto de instrucciones. El código escrito para el AVX-512 de Intel no hace nada en un teléfono Arm. Dar soporte a varios chips suele significar escribir la misma rutina varias veces.
Qué hace Fearless SIMD
La biblioteca envuelve ambos problemas en código seguro. Su README describe "una forma de usar SIMD de manera segura, tanto mediante intrinsics como mediante abstracciones seguras, a la vez que contiene notablemente poco código inseguro."
Ofrece cuatro enfoques, según la publicación de Linebender:
- Autovectorización: ayudar al compilador a convertir bucles normales en código SIMD.
- Multiversioning: compilar varias copias de una función para distintos chips y elegir la correcta cuando se ejecuta el programa.
- Operaciones portables: un conjunto de tipos vectoriales que funciona en todos los procesadores compatibles.
- Intrinsics de plataforma: acceso directo a las instrucciones propias de un chip, sin
unsafe.
Ese último punto es el que Linebender destaca. "Gracias al acceso seguro a los intrinsics, no hay techo de rendimiento", dice la publicación.
| Elemento | Detalle |
|---|---|
| Versión | 1.0.0, 21 de septiembre de 2026 |
| Intel y AMD | De SSE2 a AVX-512 |
| Arm | NEON |
| Navegadores | WebAssembly SIMD |
| Otros chips | Alternativa escalar |
| Rust mínimo | 1.89 |
| Dependencias | Ninguna en el crate principal |
| Licencia | Apache-2.0 o MIT |
Un crate complementario opcional, fearless_simd_macros, añade un atributo #[simd]. La publicación del blog dice de él: "Ponlo en cualquier función SIMD y simplemente funciona."
Qué cambió en la 1.0
El proyecto empezó como prototipo en 2018, hace ocho años, según Linebender. La versión 1.0 incluye algunos últimos cambios incompatibles antes de la congelación, según el repositorio de GitHub:
witness()pasa a llamarsetoken()y se traslada a un nuevo supertraitExtractToken.SimdBase::NySimdMask::Npasan a llamarseLEN.as_arrayahora devuelve una referencia en lugar de una copia.- Nuevas operaciones de aritmética saturada y de conteo de bits.
- Nuevas reducciones:
reduce_min,reduce_max,reduce_sumyreduce_product. - Nuevas operaciones de multiplicación-suma fusionada.
El repositorio también fija un compromiso de soporte. La última versión 1.0 para cada versión mínima de Rust recibe parches de seguridad durante al menos 3 años después de que saliera esa versión de Rust. Las futuras versiones podrán subir la versión mínima de Rust en actualizaciones menores.
Qué significa para los desarrolladores
Si usas un crate que incorpora Fearless SIMD, comprueba si ya ha pasado a la 1.0. Los cambios de nombre anteriores romperán el código que llamaba a witness(), usaba N o dependía de que as_array devolviera una copia. Son correcciones mecánicas, pero son errores de compilación hasta que las hagas.
Si mantienes código SIMD unsafe escrito a mano, es un buen momento para compararlo con la biblioteca. La principal ventaja es una sola ruta de código para x86, Arm y WebAssembly en lugar de tres. Mide tus propios bucles críticos antes y después. La afirmación del proyecto de que no hay techo de rendimiento merece probarse con tus datos.
Para los autores de bibliotecas, la API estable y la ventana de seguridad hacen que Fearless SIMD sea más seguro de exponer en una interfaz pública. Antes de la 1.0, un cambio incompatible de una dependencia se convertía en tu cambio incompatible. Ten en cuenta el mínimo de Rust 1.89 y comprueba que encaja con el compilador más antiguo que usan tus usuarios.
Fuentes
- Fearless SIMD v1.0 is here - Linebender
- linebender/fearless_simd - GitHub
- fearless_simd 1.0.0 documentation - docs.rs
Artículos relacionados

Go 1.27: el paquete simd trae SIMD portable y emulado
El paquete experimental simd de Go 1.27 ejecuta una sola ruta de código vectorial en AVX-512, NEON, wasm y RISC-V, y la emula donde falta SIMD por hardware.

Rust advierte a mantenedores sobre falsas videollamadas de empleo
El equipo de seguridad de Rust dice que hay atacantes que agendan videollamadas con dueños de crates bajo falsas ofertas de trabajo y luego piden instalar un códec.

Rustls 0.23.45 corrige un fallo de TLS 1.3 desde 2024
Las versiones 0.23.13 a 0.23.44 aceptaban mensajes de saludo TLS 1.3 en el nivel de cifrado equivocado, un fallo introducido en septiembre de 2024.