Skip to content

Commit 2e4dde8

Browse files
authored
Merge pull request #16506 from dotnet/merges/main-to-release/dev17.9
Merge main to release/dev17.9
2 parents 55c2405 + 70e5fbf commit 2e4dde8

File tree

7 files changed

+79
-19
lines changed

7 files changed

+79
-19
lines changed

docs/perf-discussions-archive.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
This is just a typed version of [these notes](https://github.com/dotnet/fsharp/issues/16498), generated during perf discussions on summer of 2023. Can be used as a reference point.
2+
3+
---
4+
5+
# Comparisons
6+
- OCaml
7+
- Scala
8+
- C#
9+
- Rust
10+
11+
# Underlying problems
12+
- LOH allocations
13+
- Build does too much for deltas
14+
- GC Gen 2
15+
16+
# Major problems
17+
- Script start up CLI
18+
- Build on Linux & Mac
19+
- Glitches in test discovery
20+
- Edit & test workflow
21+
- Edit & run workflow
22+
- Edit & check workflow
23+
- Unnecessary rebuilds
24+
25+
# Hosted compiler problems
26+
- Stamp overflow
27+
- Non-deterministic
28+
- Memory leaks
29+
- Infinite loops
30+
- Stay resident compiler
31+
- Permission elevation
32+
33+
# Minor problems
34+
- Benchmarking
35+
- Squigglies
36+
- Colorization
37+
- Debug
38+
- Press dot
39+
40+
# Incremental phases
41+
- Incremental parsing file
42+
- Incremental checking file
43+
- Incremental optimization for deltas
44+
- Cascading DLL builds
45+
- Incremental DLL builds
46+
- Incremental ILxGen for deltas
47+
- Incremental assembly generation
48+
- Incremental PDB generation for deltas
49+
50+
# Community guidelines
51+
- Community leadership
52+
- Community enablement for tool performance
53+
- Performance acceptance criteria
54+
- Performance running
55+
- Docs for tooling performance

docs/release-notes/.FSharp.Compiler.Service/8.0.200.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@
1515
* Parser recovers on unfinished record declarations. ([PR #16357](https://github.com/dotnet/fsharp/pull/16357))
1616
* `MutableKeyword` to [SynFieldTrivia](../reference/fsharp-compiler-syntaxtrivia-synfieldtrivia.html) ([PR #16357](https://github.com/dotnet/fsharp/pull/16357))
1717
* Added support for a new parameterless constructor for `CustomOperationAttribute`, which, when applied, will use method name as keyword for custom operation in computation expression builder. ([PR #16475](https://github.com/dotnet/fsharp/pull/16475), part of implementation for [fslang-suggestions/1250](https://github.com/fsharp/fslang-suggestions/issues/1250))
18+
19+
### Changed
20+
21+
* Speed up unused opens handling for empty results. ([PR #16502](https://github.com/dotnet/fsharp/pull/16502))

eng/Version.Details.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Dependencies>
33
<ProductDependencies>
4-
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="9.0.0-alpha.1.24053.1">
4+
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="9.0.0-alpha.1.24055.1">
55
<Uri>https://github.com/dotnet/source-build-reference-packages</Uri>
6-
<Sha>5f670e45d060b25d5b07646dfcd94eae31893191</Sha>
6+
<Sha>ef691e3c401949dab9986a50d8288a6e489f72bb</Sha>
77
<SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" />
88
</Dependency>
99
<Dependency Name="Microsoft.SourceBuild.Intermediate.msbuild" Version="17.7.0-preview-23217-02">

src/Compiler/Service/ServiceAnalysis.fs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -297,12 +297,19 @@ module UnusedOpens =
297297
/// Async to allow cancellation.
298298
let getUnusedOpens (checkFileResults: FSharpCheckFileResults, getSourceLineStr: int -> string) : Async<range list> =
299299
async {
300-
let! ct = Async.CancellationToken
301-
let symbolUses = checkFileResults.GetAllUsesOfAllSymbolsInFile(ct)
302-
let symbolUses = filterSymbolUses getSourceLineStr symbolUses
303-
let symbolUses = splitSymbolUses symbolUses
304-
let openStatements = getOpenStatements checkFileResults.OpenDeclarations
305-
return! filterOpenStatements symbolUses openStatements
300+
if checkFileResults.OpenDeclarations.Length = 0 then
301+
return []
302+
else
303+
let! ct = Async.CancellationToken
304+
let symbolUses = checkFileResults.GetAllUsesOfAllSymbolsInFile(ct)
305+
let symbolUses = filterSymbolUses getSourceLineStr symbolUses
306+
let symbolUses = splitSymbolUses symbolUses
307+
let openStatements = getOpenStatements checkFileResults.OpenDeclarations
308+
309+
if openStatements.Length = 0 then
310+
return []
311+
else
312+
return! filterOpenStatements symbolUses openStatements
306313
}
307314

308315
module SimplifyNames =

tests/AheadOfTime/Trimming/SelfContained_Trimming_Test/SelfContained_Trimming_Test.fsproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
<TargetFrameworks>net8.0</TargetFrameworks>
66
<LangVersion>preview</LangVersion>
77
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
8-
<DotNetBuildOffline>true</DotNetBuildOffline>
98
</PropertyGroup>
109

1110
<PropertyGroup>

tests/AheadOfTime/Trimming/StaticLinkedFSharpCore_Trimming_Test/StaticLinkedFSharpCore_Trimming_Test.fsproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
<TargetFrameworks>net8.0</TargetFrameworks>
66
<LangVersion>preview</LangVersion>
77
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
8-
<DotNetBuildOffline>true</DotNetBuildOffline>
98
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
109
<OtherFlags>--standalone</OtherFlags>
1110
</PropertyGroup>

tests/benchmarks/FCSBenchmarks/CompilerServiceBenchmarks/BackgroundCompilerBenchmarks.fs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,7 @@ type NoFileSystemCheckerBenchmark() =
152152
let mutable benchmark : ProjectWorkflowBuilder = Unchecked.defaultof<_>
153153

154154
[<ParamsAllValues>]
155-
member val UseGetSource = true with get,set
156-
157-
[<ParamsAllValues>]
158-
member val UseChangeNotifications = true with get,set
155+
member val UseInMemoryDocuments = true with get,set
159156

160157
[<ParamsAllValues>]
161158
member val EmptyCache = true with get,set
@@ -165,8 +162,8 @@ type NoFileSystemCheckerBenchmark() =
165162
benchmark <-
166163
ProjectWorkflowBuilder(
167164
project,
168-
useGetSource = this.UseGetSource,
169-
useChangeNotifications = this.UseChangeNotifications).CreateBenchmarkBuilder()
165+
useGetSource = this.UseInMemoryDocuments,
166+
useChangeNotifications = this.UseInMemoryDocuments).CreateBenchmarkBuilder()
170167

171168
[<IterationSetup>]
172169
member this.EditFirstFile_OnlyInternalChange() =
@@ -178,15 +175,14 @@ type NoFileSystemCheckerBenchmark() =
178175
member this.ExampleWorkflow() =
179176

180177
use _ = Activity.start "Benchmark" [
181-
"UseGetSource", this.UseGetSource.ToString()
182-
"UseChangeNotifications", this.UseChangeNotifications.ToString()
178+
"UseInMemoryDocuments", this.UseInMemoryDocuments.ToString()
183179
]
184180

185181
let first = "File001"
186182
let middle = $"File%03d{size / 2}"
187183
let last = $"File%03d{size}"
188184

189-
if this.UseGetSource && this.UseChangeNotifications then
185+
if this.UseInMemoryDocuments then
190186

191187
benchmark {
192188
updateFile first updatePublicSurface

0 commit comments

Comments
 (0)