-
Notifications
You must be signed in to change notification settings - Fork 831
Versioning Redux #4112
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
Versioning Redux #4112
Conversation
| "4.3.1.0", "4.4.3.0", ["3.3.1.0"; "2.3.5.1"; "3.78.3.1"; "3.259.3.1"; "4.3.1.0"] | ||
| "4.4.0.0", "4.4.3.0", ["3.47.4.0"; "3.78.4.0"; "3.259.4.0"; "4.4.0.0"] | ||
| "4.4.1.0", "4.4.3.0", ["3.47.41.0"; "3.78.41.0"; "3.259.41.0"; "4.4.0.0"; "4.4.3.0"] | ||
| "4.4.1.0", "4.4.3.0", ["3.47.41.0"; "3.78.41.0"; "3.259.41.0"; "4.4.1.0"; "4.4.3.0"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
4.4.0.0 should be in this list
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should there be a separate line for 4.4.3.0 in this table?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No to both ...
The correct binding redirects for 4.4.0.0 are produced by this line:
"4.4.0.0", "4.4.3.0", ["3.47.4.0"; "3.78.4.0"; "3.259.4.0"; "4.4.0.0"]
I think the "4.4.1.0" is not needed and the orginal "4.4.0.0" was redundent. I will check it out.
Nope I was wrong, the 4.4.0.0 was redundant but the 4.1.0.0 was needed.
The 4.4.1.0 was needed:
Here is the list of redirects:
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="2.0.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="2.3.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="2.3.5.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.0.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.3.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.3.1.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="2.3.5.1" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.78.3.1" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.259.3.1" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.3.1.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.47.4.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.78.4.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.259.4.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.4.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.47.41.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.78.41.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.259.41.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.4.1.0" newVersion="4.4.3.0" />
</dependentAssembly>
| </trans-unit> | ||
| <trans-unit id="9002"> | ||
| <source>Microsoft Visual F# 4.3</source> | ||
| <source>Microsoft Visual F# 10.1 for F# 4.1</source> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps the text Visual F# 10.1 should be universally replaced by Visual F# Tools 10.1 just to clarify?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That table doesn't work quite the way you think it does:
this is the list of redirects it will produce:
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="2.0.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="2.3.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="2.3.5.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.0.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.3.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.3.1.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="2.3.5.1" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.78.3.1" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.259.3.1" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.3.1.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.47.4.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.78.4.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.259.4.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.4.0.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.47.41.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.78.41.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="3.259.41.0" newVersion="4.4.3.0" />
<bindingRedirect oldVersion="4.4.1.0" newVersion="4.4.3.0" />
</dependentAssembly>
Note that 4.0 will correctly be redirected:
There is no reason for a 4.3 line, because there are no portable profiles.Sure I can update the text to Visual F# Tools 10.1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, thanks!
|
@dotnet-bot test Ubuntu14.04 Release_fcs Build please |
43a7061 to
e2ff731
Compare
|
This is the documented plan, as of our discussions last Friday: fsharp/fslang-design#249 Is your PR implementing this? |
|
@cartermp yep |
| FSharp.Compiler.Service.netstandard/pplex.fs | ||
| FSharp.Compiler.Service.netstandard/pppars.fs | ||
| FSharp.Compiler.Service.netstandard/pppars.fsi | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
|
Barring any huge objections from @dsyme, this is indeed what we'll want. This discussion should be where we chat about FSharp.Core evolution and how it versions as well, which is orthagonal to this PR: fsharp/fslang-design#250 |
…nto versioningredux
…nto versioningredux
|
@KevinRansom @cartermp Thanks for this, I'm happy :) |
Following the last versioning PR, it became clear that people have learned to apply a strong correlation between the Compiler Version and the F# Language Version.
I.e.
F# Compiler version 3.0 == F# Language 3.0
ditto for 3.1, 4.0 and 4.1
We have decided that we need to break this correlation, since we will be revving the F# language slower than other parts of the Tooling.
To this end we are changing the way we version assemblies and packages.
Assemblies that form part of the integral VS tooling will version to match the VS release they are in:
Ie. FSharp.ProjectSystem.FSharp. FSharp.Editor.dll
Will have the version: 15.6.0.0, 15.7.0.0 etc ...
The tooling will now start from 10.1.0 ... 10.2.0 etc .... far enough away from the F# Language version and the VS tooling versions to not be associated with it.
The Language and FSharp.Core will continue with the 4.4 ... 5.0 branding etc. It will be possible for FSharp.Core to add APIs and there not be a corresponding Language release. We wish to maintain the correlation in FSharp.Core versioning with the Language because of the coupling between the compiler and FSharp.Core.
FSharp.Core will be revved to 4.4.3.0 and the nuget package will be 4.3.0
Fsc and Fsi will display it's version like this:
I think this simplifies our versioning story, and helps you to understand the distinctions in how we version various parts of the toolset.