Uh oh!
There was an error while loading. Please reload this page.
simplify defines and move FCS to .NET Standard 2.0 - #4368
Conversation
dsyme
commented
Feb 21, 2018
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 |
dsyme
commented
Feb 22, 2018
@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. |
dsyme
commented
Feb 22, 2018
@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 |
dsyme
commented
Feb 22, 2018
@dotnet-bot test ci please |
1 similar comment
dsyme
commented
Feb 22, 2018
@dotnet-bot test ci please |
dsyme
commented
Feb 22, 2018
@dotnet-bot test ci please |
dsyme
commented
Feb 22, 2018
@dotnet-bot test Windows_NT Debug_default Build please |
dsyme
commented
Feb 22, 2018
@dotnet-bot Test Windows_NT Release_ci_part4 Build please |
dsyme
commented
Feb 22, 2018
@dotnet-bot test this please |
dsyme
commented
Feb 23, 2018
@dotnet-bot test this please |
dsyme
commented
Feb 23, 2018
OK, this is FINALLY ready to merge. |
dsyme
commented
Feb 23, 2018
Since this is nearly all related to FCS I will merge it now |
* cleanup flags and defines * move fcs to .NET Standard 2.0 * move to .NET SDK project files for FCS * move to ubuntu 16.04 * don't use mono build on jenkins until we know how to get updated mono installed * no op change
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
DOTNETCOREorcoreclrmeansnetstandard1.6ornetcoreapp1.0ornetcoreapp2.0In 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.