dotnet / fsharp

The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
https://dotnet.microsoft.com/languages/fsharp
MIT License
3.92k stars 786 forks source link

F# and Visual F# Tools announcement for June #3298

Closed cartermp closed 7 years ago

cartermp commented 7 years ago

Hey folks,

Sorry for no announcement within the actual month of June. There still wasn't a lot of clarity on our end about what exactly would ship in each concrete asset (.NET Core, and VS tools) and when that would be. There's more clarity now. Here's a high level overview.

What's new?

Quite a few things are new. The major focus area for the team has been .NET Core 2.0.

Barring any unforeseen, super critical issues, F# will ship alongside C# on .NET Core 2.0 on day 1. .NET Core 2.0 support is quite stable now. The bulk of the work was in moving F# in-band with the .NET Core SDK so that we would be built and tested directly alongside C# and VB. There were also some bugs fixed, and we do daily scenario validation with each new build of the SDK and CLI.

There are still remaining issues to work out - Type Providers, Code Quotations, and FSI support - but F# support is stable enough now to the point where these can be looked and delivered after the initial release of .NET Core 2.0 and .NET Standard 2.0.

We also are completing work to enable F# to be built from source on .NET Core. This works on macOS today, and is being validated on Linux distributions. When you download the .NET Core sources at release, you will be able to build them all from source, including F#.

We also worked with the community in establishing a plan for publishing FSharp.Core under the FSharp.Core NuGet package. You'll notice that the owners of this package are "F# Software Foundation, Microsoft". This is intentional. This is a first step in longer-tail efforts to work more with the community and make sure that both Microsoft and the FSSF/F# community are seen as delivering F#. We still haven't figured out what all of that means. But we want to avoid a world where Microsoft and the FSSF/F# community deliver different things to accomplish the same goals. We think .NET Core is a good place to kick that off.

Additionally, the VS 2017 Updates milestone has moved from 5% complete to 74% complete over the course of ~4 months. And this is with many, many more issues added to that milestone in that time frame. These are a mix of bugs, feature requests, and augmentations. The majority of this movement has come from the F# community. To those who made this happen, thank you. You're an incredible group of people.

Finally, VS 2017 Update 3 will feature the first bits enabling F# support for .NET Core in Visual Studio. There is one remaining work item for us to do in our language service. We are doing it this week. Once it's finished, we believe that it will be a good experience overall. In addition to .NET Core support, this will be using the new project system that the .NET IDE team is building. They have built out almost all of the support, and are dedicated to continuing work there to support F#. You can track issues related to this work here. We're very, very excited about this work. This project system is an upgrade to the F# project system in nearly every conceivable way: project load times, reliability, maintenance cost, and much more. Our long-term goal is to move F# entirely over to that project system so that we can finally be rid of the current F#-only project system. We don't have a timeline for this yet, but this is a top-of-mind item for us.

Here are some additional things accomplished:

What work is remaining?

As mentioned above, there is still remaining work. Here's a re-stated overview.

If you wish to try out some preview bits and report issues, here's how:

  1. Install VS 2017 preview with F# and .NET Core support if you're interested in using VS.
  2. Install the CLI and SDK from this link: https://github.com/dotnet/cli/tree/release/2.0.0#installers-and-binaries

The second step is critically important, as there are numerous issues fixed in that branch.

And just to clarify, there is currently no affinity between .NET Core versions and VS Preview or VS 2017 versions. .NET Core 2.0 is currently entirely out of band with VS 2017. There are no current plans to make .NET Core ship in the same "package" as VS 2017. As .NET Core 2.0 updates (and F# support for it also updates), you can simply update .NET Core on your machine. There is no need to wait for a VS update to see bug fixes or improvements in this area.

Additionally, there are three major long-tail efforts that we've planned. We have not "costed" this work yet, as we're head's down for .NET Core 2.0 support, but these are top-of-mind things that we want to see accomplished.

  1. Infrastructure improvements so that we can remove our internal copy of this repository for localization purposes. We'll move to a newer localization toolkit, and eventually build F# tooling in VS as a part of the same build that Roslyn does. This will free up a nontrivial amount of our time.
  2. Moving F# entirely off of its own project system and onto the .NET Project System. Our current project system isn't very pretty. It's a bit of a hornet's nest when you want to make any changes, with small improvements in one area causing a catastrophic failure in others. It has performance issues that many people suffer from. And finally, it's awfully difficult code to comprehend. Being able to rid ourselves of this baggage to move to a modern project system owned by experts in this space is going to be a huge improvement for F#. We're very, very motivated to make this change.
  3. All the remaining work in this issue. This unification of assets will allow us to make cross-platform work easier across all the different places F# exists in an editor. It will also allow us to work on infrastructure to the point where we could consider moving the F# compiler itself out of this repository. This is something we'd like to see happen, but there is currently no good infrastructure or testing in place to enable this in a safe way. The linked issue tracks work needed to move F# in that direction.

So, how about some dates?

No dates at this time. Sorry! Things are very, very tight right now for F#, .NET, and VS 2017. You can try out preview builds to assess F# and .NET Core today. Much of you have been doing this already, including reporting critical bugs that have since been fixed. Thank you for this. As stated earlier, we do daily validation of scenarios, but the more eyes that can look at stuff, the better things will be. Thanks!

buvinghausen commented 7 years ago

Thanks for the clarifications @cartermp & @dsyme

I will implement the workaround to get the type provider working with the dotnet cli as an interim step to FSharp.Data being released on .netstandard2.0

Thanks for all the efforts they are very appreciated this is an exciting time for the platform and I cannot wait for F# to be a full blown first class citizen across the board.

dsyme commented 7 years ago

@buvinghausen Thanks for the encouragement Brian!

There will be a lot of work to do to keep improving out .NET Core/.NET SDK story and help bring community projects across to the SDK, the community would love to have your help where you can :)

cartermp commented 7 years ago

Closing old discussion.