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.91k stars 785 forks source link

2017 Status and Roadmap for F# and the Visual F# Tools #2400

Closed cartermp closed 7 years ago

cartermp commented 7 years ago

Current Status of F# and the Visual F# Tools per VS2017 RTM

Immediate Roadmap for 2017

  1. Bug fixes

    • Fixing tooling regressions in VS 2017 tooling
    • Fixing serious bugs in new features in VS 2017
    • Fixing serious bugs in the compiler
  2. Stability

    • It’s crucially important that we get our tooling stability up to spec. Many new features were introduced, but we didn’t increase our test coverage by much.
    • There is currently a bug on our side which prevents the Connected Services node in VS 2017 from working with F# projects.
    • Performance and memory-consumption issues
      • There were regressions here introduced in VS 2017 compared with VS 2015. It will be an ongoing battle to improve this, but we’ve already seen big improvements from Don just recently.
    • Build/Rebuild/Clean and Text Search do not work if Lightweight Solution Load is turned on. We’ll work with the team that owns this to get this fixed.
  3. Migrate the OSS Build to the latest .NET CLI and MSBuild and use the Multilingual App Toolkit (MAT) for localization builds

    • Migrating OSS Build to latest .NET CLI and MSBuild is necessary for .NET Core 2.0 support, which is in turn necessary to get Type Providers, Quotation support, and #r support in F# for .NET Core
    • Using the MAT will also bring down our internal build times for signed binaries tremendously
  4. Support generating signed VSIXs of the latest master build, pushed directly to MyGet

    • This will enable people to get on a “Fast track” for F# tooling in VS 2017, test out brand-new features, and provide feedback early on
    • The artifacts produced will come with the assumption that people know they won’t be as well-tested and may introduce regressions
  5. Project System support for .NET Core and .NET Standard projects in F#

    • Ability to load MSBuild 15-based .fsproj projects
    • Add gestures for cross-platform builds, publish, and adding package references
    • Consideration: Roslyn Project System
      • Add F# support to the new project system that C# and VB use for .NET Core/Standard projects
      • Remove our own project system entirely, making us “first-class” in that regard
      • This is pending an investigation into the work involved
  6. Full FSI support on .NET Core 2.0

    • Properly handle the model for how .dlls are laid out on disk with .NET Core, thus fixing #r
    • Establish a good working model for how to do the above
    • Prompt to re-load an FSI session when #r’ing an assembly that targets a higher target than what FSI was launched with?
      • Error message asking user to re-load FSI manually?
      • Try to re-target and re-reference everything on the fly?
  7. Full support for F# on .NET Core 2.0 and .NET Standard 2.0

    • Type Providers and Code Quotations
    • This also takes a dependency on RefEmit. We’ll need to investigate this further, since it’s currently not on the .NET Core 2.0 roadmap
  8. Build a Contract .dll between Roslyn and F# to remove our use of InternalsVisibleTo

    • This will allow Roslyn to determine when they break us if they make any breaking changes to their APIs
    • This will be a big improvement over the current situation, where we must manually check this
  9. OSS Engineering Efficiency and Build needs some improvements

    • The .NET CLI does not use project.json anymore, but our OSS Build still relies on that
    • The .NET CLI uses MSBuild 15 and PackageReferences, which we need to support
    • Open Source Localization is needed to simplify our localization process and more easy leverage the OSS community
      • Using the Multilingual App Toolkit is a way to improve our internal process and reduce build times

In accordance with the above, what follows is where we expect work will come from. In the case of the OSS Community, while we don't assume work will be done for us, we anticipate continuing to receive high-quality contributions which we will gladly accept.

@KevinRansom

@brettfo

@cartermp

@dsyme and the F# OSS Community

Roslyn Team