Skip to content
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

Prepare to ship fcs 38.0.1 #10592

Merged
merged 12 commits into from
Dec 4, 2020
Merged
12 changes: 10 additions & 2 deletions INTERNAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,21 @@ it's a good idea to check the previous link for any old or stalled insertions in
## Less interesting links

[FSharp.Core (Official NuGet Release)](https://dev.azure.com/dnceng/internal/_release?_a=releases&definitionId=72).
Uploads the final FSharp.Core package from the specified build to NuGet. This should only be run when we know for
Uploads the final `FSharp.Core` package from the specified build to NuGet. This should only be run when we know for
certain which build produced the final offical package.

[FSharp.Core (Preview NuGet Release)](https://dev.azure.com/dnceng/internal/_release?_a=releases&definitionId=92).
Uploads the preview FSharp.Core.5.0.0-beta.* package from the specified build to NuGet. This should be run every time
Uploads the preview `FSharp.Core.*-beta.*` package from the specified build to NuGet. This should be run every time
a new SDK preview is released.

[FCS (Official NuGet Release)](https://dev.azure.com/dnceng/internal/_release?view=mine&_a=releases&definitionId=99).
Uploads the final `FSharp.Compiler.Service` package from the specified build to NuGet. Only builds from the `release/fcs`
branch can be selected. This should only be run when we're fairly certain that the package is complete.

[FCS (Preview NuGet Release)](https://dev.azure.com/dnceng/internal/_release?view=mine&_a=releases&definitionId=98).
Uploads the preview `FSharp.Compiler.Service.*-beta.*` package from the specified build to NuGet. Only builds from the
`main` branch can be selected. This can be run whenever we think we're ready to preview a new FCS build.

[Nightly VSIX (main) uploader](https://dev.azure.com/dnceng/internal/_release?_a=releases&definitionId=70). Uploads
a package from every build of `main` to the [Nightly VSIX feed](README.md#using-nightly-releases-in-visual-studio).

Expand Down
4 changes: 2 additions & 2 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
<FSCoreVersionPrefix>$(FSMajorVersion).$(FSMinorVersion).$(FSBuildVersion)</FSCoreVersionPrefix>
<FSCoreVersion>$(FSMajorVersion).$(FSMinorVersion).$(FSBuildVersion).$(FSRevisionVersion)</FSCoreVersion>
<FCSMajorVersion>38</FCSMajorVersion>
<FCSMinorVersion>$(FSMinorVersion)</FCSMinorVersion>
<FCSBuildVersion>$(FSBuildVersion)</FCSBuildVersion>
<FCSMinorVersion>0</FCSMinorVersion>
<FCSBuildVersion>1</FCSBuildVersion>
<FCSRevisionVersion>$(FSRevisionVersion)</FCSRevisionVersion>
<FSharpCompilerServicePackageVersion>$(FCSMajorVersion).$(FCSMinorVersion).$(FCSBuildVersion)</FSharpCompilerServicePackageVersion>
<FSharpCompilerServiceReleaseNotesVersion>$(FCSMajorVersion)-$(FCSMinorVersion)-$(FCSBuildVersion)</FSharpCompilerServiceReleaseNotesVersion>
Expand Down
218 changes: 152 additions & 66 deletions src/fsharp/DotNetFrameworkDependencies.fs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies
location

let inline ifEmptyUse alternative filename = if String.IsNullOrWhiteSpace filename then alternative else filename

let getFSharpCoreLibraryName = "FSharp.Core"
let getFsiLibraryName = "FSharp.Compiler.Interactive.Settings"
let getDefaultFSharpCoreLocation = Path.Combine(fSharpCompilerLocation, getFSharpCoreLibraryName + ".dll")
Expand Down Expand Up @@ -62,15 +62,27 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies
// packs\Microsoft.NETCore.App.Ref\sdk-version\netcoreappn.n
// we will rely on the sdk-version match on the two paths to ensure that we get the product that ships with the
// version of the runtime we are executing on
// Use the reference assemblies for the highest netcoreapp tfm that we find in that location.
// Use the reference assemblies for the highest netcoreapp tfm that we find in that location that is
// lower than or equal to the implementation version.
let zeroVersion = Version("0.0.0.0")
let version, frameworkRefsPackDirectoryRoot =
try
let version = DirectoryInfo(implementationAssemblyDir).Name
let computeVersion version =
match Version.TryParse(version) with
| true, v -> v
| false, _ -> zeroVersion

let version = computeVersion (DirectoryInfo(implementationAssemblyDir).Name)
let microsoftNETCoreAppRef = Path.Combine(implementationAssemblyDir, "../../../packs/Microsoft.NETCore.App.Ref")
if Directory.Exists(microsoftNETCoreAppRef) then
Some version, Some microsoftNETCoreAppRef
let directory = DirectoryInfo(microsoftNETCoreAppRef).GetDirectories()
|> Array.map (fun di -> computeVersion di.Name)
|> Array.sort
|> Array.filter(fun v -> v <= version)
|> Array.last
Some (directory.ToString()), Some microsoftNETCoreAppRef
else
Some version, None
None, None
with | _ -> None, None

// Tries to figure out the tfm for the compiler instance.
Expand Down Expand Up @@ -369,91 +381,132 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies
// referenced from TcGlobals must be listed here.
let systemAssemblies =
HashSet [
// NOTE: duplicates are ok in this list

// .NET Framework list
yield "mscorlib"
yield "netstandard"
yield "System.Runtime"
yield getFSharpCoreLibraryName

yield "System"
yield "System.Xml"
yield "System.Runtime.Remoting"
yield "System.Runtime.Serialization.Formatters.Soap"
yield "System.Data"
yield "System.Deployment"
yield "System.Design"
yield "System.Messaging"
yield "System.Drawing"
yield "System.Net"
yield "System.Web"
yield "System.Web.Services"
yield "System.Windows.Forms"
yield "System.Core"
yield "System.Runtime"
yield "System.Observable"
yield "System.Numerics"
yield "System.ValueTuple"

// Additions for coreclr and portable profiles
yield "System.Collections"
yield "System.Collections.Concurrent"
yield "System.Console"
yield "System.Diagnostics.Debug"
yield "System.Diagnostics.Tools"
yield "System.Globalization"
yield "System.IO"
yield "System.Linq"
yield "System.Linq.Expressions"
yield "System.Linq.Queryable"
yield "System.Net.Requests"
yield "System.Reflection"
yield "System.Reflection.Emit"
yield "System.Reflection.Emit.ILGeneration"
yield "System.Reflection.Extensions"
yield "System.Resources.ResourceManager"
yield "System.Runtime.Extensions"
yield "System.Runtime.InteropServices"
yield "System.Runtime.InteropServices.PInvoke"
yield "System.Runtime.Numerics"
yield "System.Text.Encoding"
yield "System.Text.Encoding.Extensions"
yield "System.Text.RegularExpressions"
yield "System.Threading"
yield "System.Threading.Tasks"
yield "System.Threading.Tasks.Parallel"
yield "System.Threading.Thread"
yield "System.Threading.ThreadPool"
yield "System.Threading.Timer"

yield getFSharpCoreLibraryName
yield "FSharp.Compiler.Interactive.Settings"
yield "Microsoft.Win32.Registry"
yield "System.Diagnostics.Tracing"
yield "System.Globalization.Calendars"
yield "System.Reflection.Primitives"
yield "System.Runtime.Handles"
yield "Microsoft.CSharp"
yield "Microsoft.VisualBasic"
yield "Microsoft.VisualBasic.Core"
yield "Microsoft.Win32.Primitives"
yield "System.IO.FileSystem"
yield "System.Net.Primitives"
yield "System.Net.Sockets"
yield "System.Private.Uri"
yield "Microsoft.Win32.Registry"
yield "System.AppContext"
yield "System.Buffers"
yield "System.Collections"
yield "System.Collections.Concurrent"
yield "System.Collections.Immutable"
yield "System.Collections.NonGeneric"
yield "System.Collections.Specialized"
yield "System.ComponentModel"
yield "System.ComponentModel.Annotations"
yield "System.ComponentModel.DataAnnotations"
yield "System.ComponentModel.EventBasedAsync"
yield "System.ComponentModel.Primitives"
yield "System.ComponentModel.TypeConverter"
yield "System.Configuration"
yield "System.Console"
yield "System.Core"
yield "System.Data"
yield "System.Data.Common"
yield "System.Data.DataSetExtensions"
yield "System.Deployment"
yield "System.Design"
yield "System.Diagnostics.Contracts"
yield "System.Diagnostics.Debug"
yield "System.Diagnostics.DiagnosticSource"
yield "System.Diagnostics.FileVersionInfo"
yield "System.Diagnostics.Process"
yield "System.Diagnostics.StackTrace"
yield "System.Diagnostics.TextWriterTraceListener"
yield "System.Diagnostics.Tools"
yield "System.Diagnostics.TraceSource"
yield "System.Diagnostics.Tracing"
yield "System.Drawing"
yield "System.Drawing.Primitives"
yield "System.Dynamic.Runtime"
yield "System.Formats.Asn1"
yield "System.Globalization"
yield "System.Globalization.Calendars"
yield "System.Globalization.Extensions"
yield "System.IO"
yield "System.IO.Compression"
yield "System.IO.Compression.Brotli"
yield "System.IO.Compression.FileSystem"
yield "System.IO.Compression.ZipFile"
yield "System.IO.FileSystem"
yield "System.IO.FileSystem.DriveInfo"
yield "System.IO.FileSystem.Primitives"
yield "System.IO.FileSystem.Watcher"
yield "System.IO.IsolatedStorage"
yield "System.IO.MemoryMappedFiles"
yield "System.IO.Pipes"
yield "System.IO.UnmanagedMemoryStream"
yield "System.Linq"
yield "System.Linq.Expressions"
yield "System.Linq.Expressions"
yield "System.Linq.Parallel"
yield "System.Linq.Queryable"
yield "System.Memory"
yield "System.Messaging"
yield "System.Net"
yield "System.Net.Http"
yield "System.Net.Http.Json"
yield "System.Net.HttpListener"
yield "System.Net.Mail"
yield "System.Net.NameResolution"
yield "System.Net.NetworkInformation"
yield "System.Net.Ping"
yield "System.Net.Primitives"
yield "System.Net.Requests"
yield "System.Net.Security"
yield "System.Net.ServicePoint"
yield "System.Net.Sockets"
yield "System.Net.WebClient"
yield "System.Net.WebHeaderCollection"
yield "System.Net.WebProxy"
yield "System.Net.WebSockets"
yield "System.Net.WebSockets.Client"
yield "System.Numerics"
yield "System.Numerics.Vectors"
yield "System.ObjectModel"
yield "System.Observable"
yield "System.Private.Uri"
yield "System.Reflection"
yield "System.Reflection.DispatchProxy"
yield "System.Reflection.Emit"
yield "System.Reflection.Emit.ILGeneration"
yield "System.Reflection.Emit.Lightweight"
yield "System.Reflection.Extensions"
yield "System.Reflection.Metadata"
yield "System.Reflection.Primitives"
yield "System.Reflection.TypeExtensions"
yield "System.Resources.Reader"
yield "System.Resources.ResourceManager"
yield "System.Resources.Writer"
yield "System.Runtime"
yield "System.Runtime.CompilerServices.Unsafe"
yield "System.Runtime.CompilerServices.VisualC"
yield "System.Runtime.Extensions"
yield "System.Runtime.Handles"
yield "System.Runtime.InteropServices"
yield "System.Runtime.InteropServices.PInvoke"
yield "System.Runtime.InteropServices.RuntimeInformation"
yield "System.Runtime.InteropServices.WindowsRuntime"
yield "System.Runtime.Intrinsics"
yield "System.Runtime.Loader"
yield "System.Runtime.Numerics"
yield "System.Runtime.Remoting"
yield "System.Runtime.Serialization"
yield "System.Runtime.Serialization.Formatters"
yield "System.Runtime.Serialization.Formatters.Soap"
yield "System.Runtime.Serialization.Json"
yield "System.Runtime.Serialization.Primitives"
yield "System.Runtime.Serialization.Xml"
yield "System.Security"
yield "System.Security.Claims"
yield "System.Security.Cryptography.Algorithms"
yield "System.Security.Cryptography.Cng"
Expand All @@ -464,10 +517,43 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies
yield "System.Security.Cryptography.X509Certificates"
yield "System.Security.Principal"
yield "System.Security.Principal.Windows"
yield "System.Security.SecureString"
yield "System.ServiceModel.Web"
yield "System.ServiceProcess"
yield "System.Text.Encoding"
yield "System.Text.Encoding.CodePages"
yield "System.Text.Encoding.Extensions"
yield "System.Text.Encodings.Web"
yield "System.Text.Json"
yield "System.Text.RegularExpressions"
yield "System.Threading"
yield "System.Threading.Channels"
yield "System.Threading.Overlapped"
yield "System.Threading.Tasks"
yield "System.Threading.Tasks.Dataflow"
yield "System.Threading.Tasks.Extensions"
yield "System.Threading.Tasks.Parallel"
yield "System.Threading.Thread"
yield "System.Threading.ThreadPool"
yield "System.Threading.Timer"
yield "System.Transactions"
yield "System.Transactions.Local"
yield "System.ValueTuple"
yield "System.Web"
yield "System.Web.HttpUtility"
yield "System.Web.Services"
yield "System.Windows"
yield "System.Windows.Forms"
yield "System.Xml"
yield "System.Xml.Linq"
yield "System.Xml.ReaderWriter"
yield "System.Xml.Serialization"
yield "System.Xml.XDocument"
yield "System.Xml.XmlDocument"
yield "System.Xml.XmlSerializer"
yield "System.Xml.XPath"
yield "System.Xml.XPath.XDocument"
yield "WindowsBase"
]

// The set of references entered into the TcConfigBuilder for scripts prior to computing the load closure.
Expand Down
31 changes: 27 additions & 4 deletions src/fsharp/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,36 @@
<PackageDescription>The F# Compiler Services package For F# $(FSLanguageVersion) exposes additional functionality for implementing F# language bindings, additional tools based on the compiler or refactoring tools. The package also includes F# interactive service that can be used for embedding F# scripting into your applications. Contains code from the F# Software Foundation.</PackageDescription>
<PackageReleaseNotes>/blob/main/release-notes.md#FSharp-Compiler-Service-$(FSharpCompilerServiceReleaseNotesVersion)</PackageReleaseNotes>
<PackageTags>F#, fsharp, interactive, compiler, editor</PackageTags>
<PackageIconFullPath>$(MSBuildThisFileDirectory)logo.png</PackageIconFullPath>
</PropertyGroup>

<ItemGroup>
<NuspecProperty Include="FSharpCoreVersion=$(FSCorePackageVersion)" Condition="'$(VersionSuffix)'==''" />
<NuspecProperty Include="FSharpCoreVersion=$(FSCorePackageVersion)-$(VersionSuffix)" Condition="'$(VersionSuffix)'!=''" />
<NuspecProperty Include="TargetFramework=$(TargetFramework)" />
<NuspecProperty Include="FSharpCorePackageVersion=$(FSCorePackageVersion)" Condition="'$(VersionSuffix)'==''" />
<NuspecProperty Include="FSharpCorePackageVersion=$(FSCorePackageVersion)-$(VersionSuffix)" Condition="'$(VersionSuffix)'!=''" />
<NuspecProperty Include="MicrosoftBuildFrameworkPackageVersion=$(MicrosoftBuildFrameworkVersion)" />
<NuspecProperty Include="MicrosoftBuildTasksCorePackageVersion=$(MicrosoftBuildTasksCoreVersion)" />
<NuspecProperty Include="MicrosoftBuildUtilitiesCorePackageVersion=$(MicrosoftBuildUtilitiesCoreVersion)" />
<NuspecProperty Include="SystemBuffersPackageVersion=$(SystemBuffersVersion)" />
<NuspecProperty Include="SystemCollectionsImmutablePackageVersion=$(SystemCollectionsImmutableVersion)" />
<NuspecProperty Include="SystemDiagnosticsProcessPackageVersion=$(SystemDiagnosticsProcessVersion)" />
<NuspecProperty Include="SystemDiagnosticsTraceSourcePackageVersion=$(SystemDiagnosticsTraceSourceVersion)" />
<NuspecProperty Include="SystemLinqExpressionsPackageVersion=$(SystemLinqExpressionsVersion)" />
<NuspecProperty Include="SystemLinqQueryablePackageVersion=$(SystemLinqQueryableVersion)" />
<NuspecProperty Include="SystemMemoryPackageVersion=$(SystemMemoryVersion)" />
<NuspecProperty Include="SystemNetRequestsPackageVersion=$(SystemNetRequestsVersion)" />
<NuspecProperty Include="SystemNetSecurityPackageVersion=$(SystemNetSecurityVersion)" />
<NuspecProperty Include="SystemReflectionEmitPackageVersion=$(SystemReflectionEmitVersion)" />
<NuspecProperty Include="SystemReflectionMetadataPackageVersion=$(SystemReflectionMetadataVersion)" />
<NuspecProperty Include="SystemReflectionTypeExtensionsPackageVersion=$(SystemReflectionTypeExtensionsVersion)" />
<NuspecProperty Include="SystemRuntimePackageVersion=$(SystemRuntimeVersion)" />
<NuspecProperty Include="SystemRuntimeInteropServicesPackageVersion=$(SystemRuntimeInteropServicesVersion)" />
<NuspecProperty Include="SystemRuntimeLoaderPackageVersion=$(SystemRuntimeLoaderVersion)" />
<NuspecProperty Include="SystemSecurityClaimsPackageVersion=$(SystemSecurityClaimsVersion)" />
<NuspecProperty Include="SystemSecurityCryptographyAlgorithmsPackageVersion=$(SystemSecurityCryptographyAlgorithmsVersion)" />
<NuspecProperty Include="SystemSecurityPrincipalPackageVersion=$(SystemSecurityPrincipalVersion)" />
<NuspecProperty Include="SystemThreadingTasksParallelPackageVersion=$(SystemThreadingTasksParallelVersion)" />
<NuspecProperty Include="SystemThreadingThreadPackageVersion=$(SystemThreadingThreadVersion)" />
<NuspecProperty Include="SystemThreadingThreadPoolPackageVersion=$(SystemThreadingThreadPoolVersion)" />
</ItemGroup>

<ItemGroup>
Expand All @@ -44,7 +68,6 @@
</ItemGroup>

<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)..\misc\logo.png" Pack="true" Visible="false" PackagePath="" />
<EmbeddedText Include="..\FSComp.txt">
<Link>FSComp.txt</Link>
</EmbeddedText>
Expand Down
Loading