-
Notifications
You must be signed in to change notification settings - Fork 7
Optionally use wide crate for DCT, which adds support for ARM64, WASM and SSE2 on stable #25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
I like the idea! The main drawback of |
|
Wide is an interesting crate, especially before the stabilization of std::simd. What bothers me about integrating it is the following version policy: Don't get me wrong on this. I understand that creates like wide needs to be a little bit bleeding edge when it comes to rustc and I'm not against bumping requirements. Version 0.7 of jpeg-encoder will increase the MSRV and has some API breaking changes, too. But wide’s current policy is a little bit too broad for me, even for an optional feature. Maybe we could add it as an "experimental" feature. But i'm not sure how this would interact with the "rust-version" in cargo.toml. |
|
MSRV bumps are no longer a concern now that our MSRV is above 1.85. Cargo has shipped the Rust-version aware resolver and made it the default in Rust 1.85. Anyone using Rust 1.85 or later will automatically get the latest |
My concerns are more of social than a technical reason. |
|
People who stay on older Rust compiler (e.g. Linux distributions) are already backporting critical bugfixes by themselves. They already have to do it for the Rust compiler and standard library, after all! Speaking as a former Debian maintainer, Debian already has a sophisticated system of distro-level patches for backporting fixes to the old software versions that they ship. |
|
So one problem is that, within Cargo's view of the universe, when the leading version number is 0 then is just "does semver with two numbers". The positions become But I'm with Shnatsel, people should be using resolver 3. but if you'd like i can make another 1.0 alpha and see if anyone complains again? |
The result is a 50% speedup for non-AVX SSE2 (default for rust x86_64). If compiling for AVX2, the code is about 20% slower than the hand-rolled AVX2 code.
The wide crate already has safe abstractions for most of the common CPU architectures, so this means we support for WASM and ARM64 Neon CPUs.
Wide works on stable.