-
Notifications
You must be signed in to change notification settings - Fork 826
simplify defines and move FCS to .NET Standard 2.0 #4368
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
Conversation
This also changes the build of the .NET Standard version of FCS (FSharp.Compiler.Service.dll) to be a .NET Standard 2.0 component. As a result, tools build using that version of FCS will support type provider loading. The .NET 4.5 build of FCS already supported this. |
I may as well note that there are still differences between the FCS .NET Standard 2.0 and FCS .NET Framework 4.5 components. Notably, the defines in FSharp.Compiler.Service.fsproj. These should, I think, now more clearly correspond to the same features that are no longer available in the .NET SDK F# compiler, and indicates that we could eventually build the .NET SDK compiler replacing FSharp.Compiler.Private.fsproj by the .NET Standard 2.0 FSharp.Compiler.Service.dll. The differences are:
@KevinRansom I know you've known all this stuff for a long time, but it's the first time I've seen the differences so clearly in the context of FCS (moving FCS to .NET Standard 2.0 removes a lot of the FX_NO_XYZ's....). It's reassuring we're converging here |
@KevinRansom @brettfo After this I can confidently say that it will be a huge win to move the whole compiler codebase to .NET Standard 2.0 and new-style SDK project files. The amount of FX_NO_XYZ we can flush will be very large, and everything will become much, much clearer. |
@dotnet-bot test Ubuntu14.04 Release_fcs Build please |
Moving to .NET SDK project files is causing problems on Ubuntu 14.04 because of the versions of Mono there, which is Unfortunately I can't find how to easily specify/control the version of Mono on the Jenkins CI system. (On Travis it's very simple to specify the version of Mono!) It's possible that moving to CI Ubuntu 16.04 will help, or else we will need to package-upgrade Mono to latest |
@dotnet-bot test ci please |
1 similar comment
@dotnet-bot test ci please |
@dotnet-bot test ci please |
@dotnet-bot test Windows_NT Debug_default Build please |
@dotnet-bot Test Windows_NT Release_ci_part4 Build please |
@dotnet-bot test this please |
@dotnet-bot test this please |
OK, this is FINALLY ready to merge. |
Since this is nearly all related to FCS I will merge it now |
Based on a few review comments in Don't hide exceptions on the async cancellation-path #3257 (comment) it's time to cleanup our defines and flush some last remains of Portable etc. out of the codebase. Removes about 400 lines of dead code and defines. Mostly this is straight-forward deletions. At a couple of points I clarified whether
DOTNETCORE
orcoreclr
meansnetstandard1.6
ornetcoreapp1.0
ornetcoreapp2.0
In this PR the COMPILER conditional now means specifically "are we compiling the core compiler component, i.e. FSharp.Compiler.Private.dll, or FSharp.Compiler.Service.dll, or fsc-proto.exe". This helps us simplify FX_NO_LOADER
This PR also moces FCS to .NET Standard 2.0. This was a bigger deal than I thought since it required moving to .NET SDK project files under fcs... in order to make the nuget packages (the nuget package merge tool we were using only supports .NET Standard 1.x). Anyway, that work had to be done sometime and it simplifies a lot of things, now removing 1300 lines of dead project files and several directories as well.
The PR also enables a lot more testing of the .NET Standard 2.0 FCS running as a .NET Core App 2.0. Only a subset of the tests were done previously.