Fearless SIMD 1.0 traz SIMD estável e seguro ao Rust
O Fearless SIMD 1.0, lançado em 21 de setembro, dá ao Rust SIMD seguro do SSE2 ao AVX-512, NEON e WebAssembly, com uma API estável e 3 anos de correções de segurança.
3 min de leitura

Em números
- 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
O Fearless SIMD, uma biblioteca Rust para escrever código numérico rápido sem blocos unsafe, chegou à versão 1.0 em 21 de setembro de 2026. A versão congela sua API, então o código escrito hoje com ela deve continuar compilando. Isso importa porque mais de 1.000 crates Rust já dependem dela, diretamente ou por meio de outras bibliotecas.
O projeto Linebender anunciou o lançamento em seu blog em 22 de setembro. A versão também aparece no docs.rs, o site de documentação do Rust, com data de 21 de setembro.
O que é SIMD e por que o Rust o torna difícil
SIMD significa "single instruction, multiple data" (uma instrução, múltiplos dados). Um processador moderno pode somar, comparar ou multiplicar vários números com uma única instrução, em vez de um de cada vez. Código de gráficos, áudio, compressão e imagem depende disso para ganhar velocidade.
No Rust, o caminho direto para essas instruções são os "intrinsics". São funções que correspondem diretamente a uma instrução do processador. A maioria é marcada como unsafe. Chamar uma delas num processador que não tem a instrução pode travar o programa. O Rust pede ao programador que prometa, manualmente, que a verificação foi feita.
Cada família de processadores também tem seu próprio conjunto de instruções. Código escrito para o AVX-512 da Intel não faz nada num celular Arm. Dar suporte a vários chips geralmente significa escrever a mesma rotina várias vezes.
O que o Fearless SIMD faz
A biblioteca envolve os dois problemas em código seguro. Seu README descreve "uma forma de usar SIMD com segurança, tanto por meio de intrinsics quanto de abstrações seguras, contendo ela mesma notavelmente pouco código inseguro."
Ela oferece quatro abordagens, segundo o post da Linebender:
- Autovetorização: ajudar o compilador a transformar loops comuns em código SIMD.
- Multiversioning: compilar várias cópias de uma função para chips diferentes e escolher a certa quando o programa roda.
- Operações portáveis: um conjunto de tipos vetoriais que funciona em todos os processadores suportados.
- Intrinsics de plataforma: acesso direto às instruções próprias de um chip, sem
unsafe.
Esse último ponto é o que a Linebender enfatiza. "Graças ao acesso seguro aos intrinsics, não há teto de desempenho", diz o post.
| Item | Detalhe |
|---|---|
| Versão | 1.0.0, 21 de setembro de 2026 |
| Intel e AMD | Do SSE2 ao AVX-512 |
| Arm | NEON |
| Navegadores | WebAssembly SIMD |
| Outros chips | Alternativa escalar |
| Rust mínimo | 1.89 |
| Dependências | Nenhuma no crate principal |
| Licença | Apache-2.0 ou MIT |
Um crate complementar opcional, fearless_simd_macros, adiciona um atributo #[simd]. O post do blog diz sobre ele: "Coloque-o em qualquer função SIMD e simplesmente funciona."
O que mudou na 1.0
O projeto começou como protótipo em 2018, há oito anos, segundo a Linebender. A versão 1.0 traz algumas últimas mudanças incompatíveis antes do congelamento, segundo o repositório no GitHub:
witness()passa a se chamartoken()e vai para um novo supertraitExtractToken.SimdBase::NeSimdMask::Npassam a se chamarLEN.as_arrayagora retorna uma referência em vez de uma cópia.- Novas operações de aritmética saturada e contagem de bits.
- Novas reduções:
reduce_min,reduce_max,reduce_sumereduce_product. - Novas operações de multiplicação-adição fundida.
O repositório também estabelece uma promessa de suporte. A versão 1.0 mais recente para cada versão mínima do Rust recebe correções de segurança por pelo menos 3 anos depois do lançamento dessa versão do Rust. Versões futuras podem elevar a versão mínima do Rust em atualizações menores.
O que isso significa para desenvolvedores
Se você usa um crate que inclui o Fearless SIMD, verifique se ele já migrou para a 1.0. As renomeações acima vão quebrar código que chamava witness(), usava N ou contava com as_array retornando uma cópia. São correções mecânicas, mas são erros de compilação até você fazê-las.
Se você mantém código SIMD unsafe escrito à mão, este é um bom momento para compará-lo com a biblioteca. O principal ganho é um único caminho de código para x86, Arm e WebAssembly em vez de três. Faça benchmark dos seus próprios loops críticos antes e depois. A afirmação do projeto de que não há teto de desempenho vale ser testada com os seus dados.
Para autores de bibliotecas, a API estável e a janela de segurança tornam o Fearless SIMD mais seguro de expor numa interface pública. Antes da 1.0, uma mudança incompatível de uma dependência virava a sua mudança incompatível. Observe o piso do Rust 1.89 e verifique se ele atende ao compilador mais antigo que seus usuários usam.
Fontes
- Fearless SIMD v1.0 is here - Linebender
- linebender/fearless_simd - GitHub
- fearless_simd 1.0.0 documentation - docs.rs
Artigos relacionados

Go 1.27: o pacote simd traz SIMD portátil e emulado
O pacote experimental simd do Go 1.27 executa um único caminho de código vetorial em AVX-512, NEON, wasm e RISC-V, e o emula onde falta SIMD em hardware.

Rust alerta mantenedores sobre falsas chamadas de emprego
A equipe de segurança do Rust diz que atacantes marcam videochamadas com donos de crates sob falsas ofertas de trabalho e depois pedem a instalação de um codec.

Rustls 0.23.45 corrige falha de TLS 1.3 aberta desde 2024
As versões 0.23.13 a 0.23.44 aceitavam mensagens de aperto de mão TLS 1.3 no nível de criptografia errado, um bug introduzido em setembro de 2024.