-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Update Preview/Experimental Attributes in Intrinsics #105579
Update Preview/Experimental Attributes in Intrinsics #105579
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
1 similar comment
This comment was marked as duplicate.
This comment was marked as duplicate.
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics |
The presence of this attribute seems to be how we're communicating it's not actually ready for folks to use, e.g. |
@kunalspathak and @tannergooding indicated in an offline chat last week that we could remove the preview/experimental annotation, but nothing has changed on its performance. Thanks for pointing to that discussion, @stephentoub. @tannergooding, based on that thread, I suggest we retain an annotation on this API, but switch it from |
The consideration here is that Its something that could probably be just called out in the documentation as its not overall different from other cases where alternative patterns or APIs may be better performing. -- For example, using |
That is, I think that overall its fine at this point to remove the attribute We have many cases where a given platform specific intrinsic may be subtly "worse" than using an xplat API (in this case its X86Base.DivRem vs int.DivRem). So while there's more JIT work to be done, the API itself is still considered stable and so continuing to mark it as Experimental or Preview may give a worse impression than simply covering the consideration in docs or with an analyzer (which we have approved, just not yet implemented) That's not a strong preference though, so if anyone want to push back I'm fine with keeping it. I would prefer switching to Experimental though if we do keep any attribute, as that's less strict and easier to document that its just because perf may be suboptimal compared to T.DivRem in some cases |
Is it a lot more work? I don't have a strong opinion about it either, it just seems we marked it as preview/experimental because that work hadn't been done, but now we're removing the attribution without having done the work. In which case I question what changed, e.g. did we change our minds, did enough work happen to make us more comfortable with it, will we always dissuade folks from using the API (in which case maybe it shouldn't have been added publicly in the first place and should possibly be removed), etc. |
More general work has happened and its better than it had been, but its still not "quite there". The work could likely be finished in early .NET 10 if it was scheduled as top down work, rather than being left as "nice to have". I'd be happy with changing it to be |
Thanks @stephentoub and @tannergooding. I'll switch |
This PR includes 4 changes to preview/experimental attributes (each as a separate commit):
Arm.Sve
is switched from[RequiresPreviewFeatures]
to[Experimental]
withSYSLIB5003
SYSLIB5003
instead of fully opting into preview features across the stackX86.AvxVnni
is no longer in preview; the APIs are now stableX86.X86Base.DivRem
is switched from[RequiresPreviewFeatures]
to[Experimental]
withSYSLIB5004
GenericVectorTests
had an unnecessary[RequiresPreviewFeatures]
left from when generic math was preview