vstroebel / jpeg-encoder

JPEG encoder written in Rust
Apache License 2.0
21 stars 4 forks source link

Opt-in `std::simd` support #12

Open Shnatsel opened 2 months ago

Shnatsel commented 2 months ago

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.

vstroebel commented 2 days ago

Adding support for std::simd has been on my todo list for some time, too. I've create a WIP branch and pull request (#13) which only contains an optimized RGB to YCbCr function yet.