Uh oh!
There was an error while loading. Please reload this page.
Add a System.Runtime.Experimental package so users can still use the generic math preview - #55678
Conversation
…generic math preview This reverts commit f6eb259.
ghost
commented
Jul 14, 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. |
I've marked this draft as we will need to version the experimental package "higher" than the regular package and am still trying to determine the appropriate way to do that. |
Uh oh!
There was an error while loading. Please reload this page.
ericstj
commented
Jul 14, 2021
I think we should just compute a new FileVersion as a transformation of the existing one. Similar to what we do here except for$(FileVersion), perhaps parsing like runtime/eng/versioning.targets Lines 175 to 178 in 57bfe47 I believe that is set as part of the https://github.com/dotnet/arcade/blob/e7ede87875f41a9b3df898ae08da5ebc96e24f56/src/Microsoft.DotNet.Arcade.Sdk/tools/Version.targets#L14 So we'd need to run a target after that. |
tannergooding
commented
Jul 14, 2021
Do we need to also update the File/Informational versions or is simply marking this as |
ericstj
commented
Jul 14, 2021
We shouldn't change |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
davidwrighton
left a comment
There was a problem hiding this comment.
This looks good to me. This was a fantastic turnaround on getting all of this put together.
Uh oh!
There was an error while loading. Please reload this page.
lambdageek
left a comment
There was a problem hiding this comment.
Mono "change" LGTM.
Just so I'm clear on how this will work: the real runtime S.P.C is built with the generic math types defined. But the normal System.Runtime ref assembly will not have the extra interfaces. So a normal C# (or C++/CLI) build will only look at the non-experimental ref assembly and everything will work as before -System.Int32 is the same plain old type it is today. At execution time the new interfaces will be there, but we assume C++/CLI apps will not notice or care. Is that right?
tannergooding
commented
Jul 15, 2021
Yes. Corelib and the System.Runtime implementation (which only contains type forwards) both contain all the new interfaces/methods. The ref assembly however is missing them which will allow incompatible tools (such as C++/CLI) to continue working by default. We then have an additional |
There was a problem hiding this comment.
I don't believe its meant to ever change. The project was largely copied identically from the main System.Runtime and new property/items are under their own groups.
There was a problem hiding this comment.
It's meant to change whenever we change the assembly file format (like we did now for the static virtual methods). It would tell the old tools that the file is not compatible.
We haven't been changing the version despite doing breaking changes to the format in the hopes that things will "just work" for tools that don't know what the new things are. It sometimes works and sometimes it leads to obscure failure modes (like now for the C++ compiler in the presence of static virtuals).
Uh oh!
There was an error while loading. Please reload this page.
5f6742f to
88a4ed8Comparetannergooding
commented
Jul 15, 2021
5bbebbf to
790a726Compare790a726 to
a91ea5cCompareghost
commented
Jul 15, 2021
Hello @tannergooding! Because this pull request has the p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me ( |
tannergooding
commented
Jul 15, 2021
@lambdageek, there appears to be some WASM failures but AFAICT all the tests should be disabled. Any pointers? |
tannergooding
commented
Jul 15, 2021
lambdageek
commented
Jul 15, 2021
f621131 to
0ab5f2dComparejeffhandley
commented
Jul 16, 2021
Post-merge question (I was offline yesterday afternoon and today): Should the package instead be named |
tannergooding
commented
Jul 16, 2021
We have existing tooling and infrastructure around packages and assemblies named |
jeffhandley
commented
Jul 16, 2021
Ah; got it. Thanks! |
hez2010
commented
Jul 16, 2021
Will |
tannergooding
commented
Jul 16, 2021
That isn't currently planned. |
This re-enables the generic math feature by providing a System.Runtime.Experimental package so it can still be used/referenced via explicit opt-in without disrupting other tools/compilers, such as C++/CLI.
CC. @jeffhandley, @ericstj, @ViktorHofer, @terrajobst, @davidwrighton, @MadsTorgersen