Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<NoWarn>$(NoWarn);NU1507</NoWarn>
</PropertyGroup>

<!-- net10.0 ships in the FSharp.Core package only; in-repo .NET consumers keep binding netstandard2.1. -->
<!-- In-repo .NET consumers keep binding netstandard2.1. -->
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(Configuration)' != 'Proto'">
<ProjectReference Update="@(ProjectReference)">
<SetTargetFramework Condition="'%(ProjectReference.Filename)' == 'FSharp.Core' and '%(ProjectReference.SetTargetFramework)' == ''">TargetFramework=netstandard2.1</SetTargetFramework>
Expand Down
1 change: 1 addition & 0 deletions docs/release-notes/.FSharp.Compiler.Service/11.0.100.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
* Fix incorrect Debug lowering of inline builders that compose low-level resumable state machines. ([Issue #20466](https://github.com/dotnet/fsharp/issues/20466), [PR #20469](https://github.com/dotnet/fsharp/pull/20469))
* Fix incorrect `StructLayout(Size = 1)` emission for data-less struct unions where the compiler-generated tag field makes the actual runtime size larger. ([PR #19759](https://github.com/dotnet/fsharp/pull/19759))
* Fix FS0750 "This construct may only be used within computation expressions" incorrectly raised for `let!`/`use!`/`do!` appearing in the right-hand side of a plain `let` binding inside a computation expression. The right-hand side is now desugared as a nested computation of the same builder whose result is bound with `let!`, keeping its bindings correctly scoped. ([Issue #19457](https://github.com/dotnet/fsharp/issues/19457), [PR #19868](https://github.com/dotnet/fsharp/pull/19868))
* Fix `use` bindings for `IAsyncDisposable` in `dotnet fsi` task expressions by shipping the `net10.0` FSharp.Core in the SDK toolset. ([Issue #14454](https://github.com/dotnet/fsharp/issues/14454), [PR #20555](https://github.com/dotnet/fsharp/pull/20555))
* Stop leaking a `System.Diagnostics.Metrics.MeterListener` per `Cache` in DEBUG builds. Each cache created a `CacheMetrics.CacheMetricsListener` (which starts a `MeterListener` registered in the process-global metrics registry) and never disposed it, so listeners accumulated for the lifetime of the process. Because every cache hit/miss/add published to all registered listeners, the per-operation cost grew linearly with the number of leaked listeners, so repeated checks (and Debug FCS test runs) slowed down over time. The per-cache `CacheMetricsListener` and the per-instance `cacheId` tag are removed; `DebugDisplay` and tests now read the existing name-aggregated stats populated by the single `ListenToAll` listener, so no per-cache listener is created and no per-operation cost is added. ([PR #19995](https://github.com/dotnet/fsharp/pull/19995))
* Fix state machine lowering dropping the side-effectful receiver of an unused unit-typed member access (e.g. inside `task { (effectful()).UnitProp }`). ([Issue #13099](https://github.com/dotnet/fsharp/issues/13099), [PR #19885](https://github.com/dotnet/fsharp/pull/19885))
* `--deterministic` Release builds now produce byte-identical `FSharp.Compiler.Service.dll` under `--parallelcompilation+` and `--parallelcompilation-`, so it is restored to the determinism gate (now also checked sequential-vs-parallel). Code generation runs the same deferred per-file drain in both modes, with type/member/field emit-order keys and generated names derived from the file being emitted rather than thread-scheduling order. ([Issue #19928](https://github.com/dotnet/fsharp/issues/19928), [PR #19929](https://github.com/dotnet/fsharp/pull/19929))
Expand Down
8 changes: 5 additions & 3 deletions src/Compiler/Driver/CompilerImports.fs
Original file line number Diff line number Diff line change
Expand Up @@ -958,7 +958,6 @@ type TcAssemblyResolutions(tcConfig: TcConfig, results: AssemblyResolution list,

r = assemblyRef)

/// Only used by F# Interactive
member _.TryFindBySimpleAssemblyName simpleAssemName =
results
|> List.tryFind (fun ar ->
Expand Down Expand Up @@ -2803,7 +2802,11 @@ and [<Sealed>] TcImports
// Throw away warnings and errors - this is speculative loading
false

if tryFile (assemblyName + ".dll") then
let dllPath =
tcImports.TryFindExistingFullyQualifiedPathBySimpleAssemblyName assemblyName
|> Option.defaultValue (assemblyName + ".dll")

if tryFile dllPath then
()
else
tryFile (assemblyName + ".exe") |> ignore
Expand All @@ -2818,7 +2821,6 @@ and [<Sealed>] TcImports
| _ -> None
#endif

/// Only used by F# Interactive
member _.TryFindExistingFullyQualifiedPathBySimpleAssemblyName simpleAssemName : string option =
tciLock.AcquireLock(fun tcitok ->
RequireTcImportsLock(tcitok, resolutions)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<NuspecProperty Include="fSharpCompilerServicePackageVersion=$(FSharpCompilerServicePackageVersion)" />
<NuspecProperty Include="artifactsPackagesDir=$(ArtifactsPackagesDir)" />
<NuspecProperty Include="fSharpNetCoreProductTargetFramework=$(FSharpNetCoreProductTargetFramework)" />
<NuspecProperty Include="fSharpCoreShippedNetTargetFramework=$(FSharpCoreShippedNetTargetFramework)" />
<NuspecProperty Include="configuration=$(Configuration)" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@
<!-- assemblies -->
<file src="fsc\$configuration$\$fSharpNetCoreProductTargetFramework$\fsc.dll" target="lib\$fSharpNetCoreProductTargetFramework$" />
<file src="fsi\$configuration$\$fSharpNetCoreProductTargetFramework$\fsi.dll" target="lib\$fSharpNetCoreProductTargetFramework$" />
<file src="FSharp.Core\$configuration$\netstandard2.0\FSharp.Core.dll" target="lib\$fSharpNetCoreProductTargetFramework$" />
<file src="FSharp.Core\$configuration$\netstandard2.0\FSharp.Core.xml" target="lib\$fSharpNetCoreProductTargetFramework$" />
<!-- FSI needs the .NET-only FSharp.Core APIs for IAsyncDisposable support (dotnet/fsharp#14454). -->
<file src="FSharp.Core\$configuration$\$fSharpCoreShippedNetTargetFramework$\FSharp.Core.dll" target="lib\$fSharpNetCoreProductTargetFramework$" />
<file src="FSharp.Core\$configuration$\$fSharpCoreShippedNetTargetFramework$\FSharp.Core.xml" target="lib\$fSharpNetCoreProductTargetFramework$" />
<file src="FSharp.Compiler.Service\$configuration$\netstandard2.0\FSharp.Compiler.Service.dll" target="lib\$fSharpNetCoreProductTargetFramework$" />
<file src="FSharp.Build\$configuration$\netstandard2.0\FSharp.Build.dll" target="lib\$fSharpNetCoreProductTargetFramework$" />
<file src="FSharp.DependencyManager.Nuget\$configuration$\netstandard2.0\FSharp.DependencyManager.Nuget.dll"
Expand All @@ -48,7 +49,7 @@
<file src="$mibcRoot$\**\*.mibc" target="contentFiles\mibc" />

<!-- resources -->
<file src="FSharp.Core\$configuration$\netstandard2.0\**\FSharp.Core.resources.dll"
<file src="FSharp.Core\$configuration$\$fSharpCoreShippedNetTargetFramework$\**\FSharp.Core.resources.dll"
target="lib\$fSharpNetCoreProductTargetFramework$" />
<file src="FSharp.Compiler.Service\$configuration$\netstandard2.0\**\FSharp.Compiler.Service.resources.dll"
target="lib\$fSharpNetCoreProductTargetFramework$" />
Expand Down
Loading