Skip to content

Versioning plan for F# in VS 15.6 and moving forward #4113

@cartermp

Description

@cartermp

See https://github.com/fsharp/fslang-design/blob/master/tooling/FST-1004-versioning-plan.md


This is a more detailed breakdown and tracking issue for #4112.

We have strong motivation to decouple versioning of the F# compiler and tools from the F# language and core library. We also wish to keep the F# language and F# Core library coupled in version numbers. The reasoning is as follows:

  • The F# major language version number will change more and more slowly over time. Proposed and approved new features still fit snugly in the minor version number.
  • The F# minor language version is expected to change, but not as often as tooling and SDK versions.
  • Decoupling the FSharp.Compiler.Service version from the language version has proven to be a good thing, as it has allowed the adoption of SemVer and rapid iteration. A similar model can be applied for the F# compiler and tooling.
  • Coupling the compiler version with the language version is not always done in other languages (e.g., C#), and such decoupling hasn't been a problem.

Here's what it should look like:

Visual Studio version 15.5 (current) 15.6 15.7 vNext
F# language version 4.1 4.1 4.4 4.x
FSharp.Core version 4.4.1.0 4.4.3.x 4.4.4.x 4.4.x.y
FSharp.Core NuGet package version 4.2.x 4.3.x 4.4.x 4.x.y
F# compiler banner F# Compiler 4.1 F# Compiler 10.x.y for F# 4.1 F# Compiler 11.x.y for F# 4.4 F# Compiler XX.y.z for F# 4.x
VS product Name Visual F# 4.1 Visual F# 10.x.y for F# 4.1 Visual F# 11.x.y for F# 4.4 Visual F# XX.y.z for F# 4.x
VS product details Microsoft Visual F# 4.1 Microsoft Visual F# 10.x.y for F# 4.1 Microsoft Visual F# 11.x.y for F# 4.4 Microsoft Visual F# XX.y.z for F# 4.x
F# SDK version 4.1 10.x 11.x ZZ.x
F# Compiler .dll version 4.4.1.0 10.x.y.z 11.x.y.z WW.x.y.z
FSharp.Compiler.Tools version 4.1.x 10.x.y for F# 4.1 11.x.y for F# 4.4 XX.y.z for F# 4.x
VS Assembly versions 15.4.x.y 15.6.x.y 15.7.x.y vNext.x.y

You'll note a few things:

  • There will be no F# 4.2 or F# 4.3 language version - it will skip to F# 4.4. This is because it will bring the F# language, FSharp.Core, and FSharp.Core NuGet package back into sync.
  • The Compiler and SDK version will start at 10.x.y, and so on. This is to ensure that the F# language version will never catch up, and lets us start on the path of SemVer.
  • Visual Studio assembly versions will match the VS release. It should be plainly obvious if an assembly is a part of Visual Studio this way.
  • FSharp.Compiler.Service is not a part of this plan. Given that it has already been on this separate versioning path, and may need to version independently of the assets Microsoft produces for a number of reasons, we intend on keeping it as-is.

We believe that this will make versioning a bit more sane moving forward, as it gives us the ability to rev tooling at a faster pace than the language, while also laying out a plan to align F# language versions, FSharp.Core versions, and FSharp.Core NuGet package versions.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions