The std::simd module provides a safe, portable API for SIMD. Together with the multiversion crate it allows for SIMD that works from a single source file on every platform, and entirely in safe code!
The drawback is that it is nightly-only, and still technically unstable despite not having changed in quite some time. It would be great to add support for it and expose this as an opt-in feature, e.g. nightly-portable-simd. This would let your crate support SIMD on a lot more platforms (Aarch64, WASM, etc) and allow people on nightly channel to use a fast implementation without unsafe code.
The
std::simdmodule provides a safe, portable API for SIMD. Together with themultiversioncrate it allows for SIMD that works from a single source file on every platform, and entirely in safe code!The drawback is that it is nightly-only, and still technically unstable despite not having changed in quite some time. It would be great to add support for it and expose this as an opt-in feature, e.g.
nightly-portable-simd. This would let your crate support SIMD on a lot more platforms (Aarch64, WASM, etc) and allow people on nightly channel to use a fast implementation without unsafe code.