-
Notifications
You must be signed in to change notification settings - Fork 48
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
Support for neon on stable rust #84
Conversation
I just updated the ci to to a matrix test also for aarch64, with minimal rustc versions 1.61 with neon, 1.37 without. This of course fails at the moment since 1.61 hasn't been released yet. But once 1.61 is released it should be fine. |
This is close to ready. Just two things left:
|
Nice! I will take a look. Regarding the test failure, I honestly wouldn't be too torn up about just saying that msrv on arm is 1.61 or whatever version we're targeting for neon. Re: docs and readme diverging, imo the readme should be a quick-skim version of what's present in docs.rs. Core features of the library, usage example, crate features, MSRV. And maybe leave the 4-to-5 upgrade guide. I can make an update to that once this PR is in, before I put out the 6.1.0 release |
Just had another idea. When building on arm without the neon feature, there is nothing arm-specific in the code. Same as when building on x86_64 without both the AVX and SSE features. How about keeping 1.37 for non-neon arm and adding a CI job with --no-default-features? |
That’s a great idea, and it’ll add some guaranteed coverage of the scalar
path
…On Tue, Jun 28, 2022 at 3:12 PM Henrik Enquist ***@***.***> wrote:
Just had another idea. When building on arm without the neon feature,
there is nothing arm-specific in the code. Same as when building on x86_64
without both the AVX and SSE features. How about keeping 1.37 for non-neon
arm and adding a CI job with --no-default-features?
—
Reply to this email directly, view it on GitHub
<#84 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAI2M6TFHEHBQ7QAGTT2DDDVRN2DZANCNFSM5S2SBG6Q>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Ok, gonna be taking a look at this now |
One question I have: Should we enable neon compilation by default? If we did, we'd be more consistent with the fact that the rest of them are enabled by default. I can picture users never realizing that they're leaving performance on the table by not knowing that there's a feature flag they can enable. On the other hand, people using rusfft on arm might be annoyed if it suddenly stops compiling, and they have to go in and add a feature flag to get going again. We're following the policy to the letter, so there shouldn't be any uproar, I'm just always squeamish about forcing people to change things on upgrade. Maybe a good compromise is to enable it by default, but put "If the 'neon' feature flag is disabled, the MSRV is 1.37" directly into the build.rs error message, so that at the very least, anyone impacted won't have to do much research? |
Hmm yes you are probably right, if neon isn't enabled by default many will run without it and not realize it. |
Sorry this took so long. I have enabled the neon feature by default, and updated build.rs to give better messages on panics. Compiling on x86_64 with a too old rustc (faked by setting a dummy MSRV of 1.77):
And on aarch64 (again faked with a dummy MSRV):
|
Is there anything more to do here, or could we get this merged? |
There's nothing in the way, I've just been a combination of busy and depressed that's led to me procrastinating on side projects. I will get to this on Monday. |
No problem, don't worry about it! But let me know if there is anything I can do to help, like updating documentation for the next release or stuff like that. |
Mostly doing this to nudge the CI to run again
An early PR to show what I had in mind. Needs some cleanup, and updating of docs.