Uh oh!
There was an error while loading. Please reload this page.
[release/6.0-preview7] Enable the generic math feature - #55776
Conversation
…generic math preview This reverts commit f6eb259.
ghost
commented
Jul 15, 2021
I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label. |
tannergooding
commented
Jul 15, 2021
CC. @jeffhandley, @ericstj, @ViktorHofer, @terrajobst, @davidwrighton, @MadsTorgersen This is the backport to .NET 6 Preview 7. It missed the cutoff due to a WASM AOT issue (#55767) that had cropped up when it tried to execute the experimental test package. |
tannergooding
commented
Jul 16, 2021
runtime (Libraries Test Run release mono Linux x64 Debug) was a timeout in System.Net.Quic.Functional.Tests and appears unrelated (#55642). CI, for whatever reason, marked the main |
tannergooding
commented
Jul 16, 2021
This was approved by Steve Carroll over tactics e-mail. What's required to get it merged now (branch is protected and restricted to authorized users)? |
danmoseley
commented
Jul 16, 2021
Merged. I'm not quite sure how it works, but I can merge into this branch if it's green, but not otherwise. In that case I ping on the infra channel. |
danmoseley
commented
Jul 16, 2021
@tannergooding it would be good to keep an eye on codeflow and when a P7 installer comes out with this in, do another quick check. |
tannergooding
commented
Jul 16, 2021
Thanks @danmoseley and will do |
Backport of #55678. Issue dotnet/designs#205
Issue Summary
C++/CLI fails to compile any code that utilizes a type implementing an interface with a static abstract member. Since generic math involves implementing interfaces with static abstract members on the primitive types, this impacted nearly every C++/CLI compilation.
This works around the issue by creating a System.Runtime.Experimental package that will override the System.Runtime.dll that ships in box. This experimental reference assembly exposes the generic math methods and interfaces allowing projects to individually opt-in and thus avoids the issue of tooling, such as C++/CLI, encountering the new IL by default.
Customer Impact
Customers will not be able to utilize the generic math preview feature and early feedback of the feature will not be as feasible.
Testing
Manual validation that .NET works with C++/CLI by default and that the functionality is usable from a C# app explicitly referencing the experimental package was done.
Regression?
No. These are net new preview types.
Risk
Low. Product has already undergone decent testing and perf validation. It was pulled out at last minute due to an unforeseen incompatibility with C++/CLI. The C++/CLI team is aware of the problem and will be looking into it further to determine the correct fix.
This functionality exposes a way for the feature to still be useable, via explicit opt-in, without impacting any existing tools that are otherwise not currently compatible.