[release/9.0-preview7] Mark the new tensor APIs as experimental for .NET 9 #105378
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport of #105268 to release/9.0-preview7
/cc @tannergooding
Customer Impact
Expanding .NET to provide built-in types for exchanging tensor data across libraries and allowing accelerated handling for core operations is an important but large undertaking. The work done in .NET 9 currently encompasses 8 types and nearly 600 new public APIs, many of which are generic and can support arbitrary T or T constrained to one of the generic math interfaces (see https://learn.microsoft.com/en-us/dotnet/standard/generics/math).
Due to the size of this work and the recognized importance of it to the long term growth of the .NET ecosystem, it has been decided to mark these new APIs as
[Experimental]
(see https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.codeanalysis.experimentalattribute) for .NET 9 and to plan on supporting them officially in .NET 10 instead. This is not being done due to a lack of confidence in the direction we're going, but rather is explictly being done to allow time for additional feedback from the community and important libraries in the .NET ecosystem that plan on taking advantage of the provided functionality. It also gives us additional time to coordinate with improvements to the C# language to ensure a great end-to-end experience.Regression
This is net new surface area in .NET 9 that we are opting to ship as experimental this release.
Testing
It was validated that other consumers of the API surface correctly see the expected diagnostic ID indicating these APIs are experimental
Risk
Low.
This is net new surface area in .NET 9 and so has never shipped as "production ready". However, it is worth noting this is the first time the dotnet/runtime repo has used the
ExperimentalAttribute
ourselves so there is minimal risk added for experiencing the end-to-end. Other repos (such as Azure and ASP.NET) have already used this attribute themselves.If anyone outside of the dotnet/runtime repo has already taken a dependency on the API’s, they will have to suppress the diagnostic ID or mark their own APIs as experimental.