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 extend SIMD support to platforms not yet covered by intrinsics, such as WASM, and would allow people on nightly channel to use an implementation without unsafe code.
The
std::simd
module provides a safe, portable API for SIMD. Together with themultiversion
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 extend SIMD support to platforms not yet covered by intrinsics, such as WASM, and would allow people on nightly channel to use an implementation without unsafe code.