Skip to content

FSharp.Compiler.Service 43.12.201 #850

Open
Numpsy wants to merge 10 commits into
fsprojects:masterfrom
Numpsy:fcs4312
Open

FSharp.Compiler.Service 43.12.201 #850
Numpsy wants to merge 10 commits into
fsprojects:masterfrom
Numpsy:fcs4312

Conversation

@Numpsy

@Numpsy Numpsy commented Mar 15, 2026

Copy link
Copy Markdown
Contributor

This contains the whole of #770, plus an extra commit to update to FCS 43.12.201 (I'm not clear what's going on with the version numbers here)

Needs a review to see if the 'ExpressionUtilities.LetOrUse' helper is the right approach.

| SynExpr.LetOrUse(_, _, bindings, body, _, _) ->
let instanceNames = extraFromBindings bindings List.Empty |> Set.ofList
processLetBinding instanceNames body returnEmptyArray
| SynExpr.LetOrUse letOrUse when not letOrUse.IsBang ->

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is using when because when I tried the active pattern I got error FS3569: The member or function 'processLetBinding' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's what the TailCall attrib is for: so that the compiler makes sure you're using a tail call recursive algorithm. If you mark a func as TailCall without changing the algorithm to be a tail-call-recursive, compilation will fail.

@Numpsy

Numpsy commented Mar 15, 2026

Copy link
Copy Markdown
Contributor Author

Looks like the performance is still bad without #845

@knocte

knocte commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Ok, this version of FCS should contain the fix we need (dotnet/fsharp@89d7886), can you please include a commit to remove this workaround: 755f4d1 ?

Numpsy added 3 commits June 29, 2026 20:13
Most of the changes are down to the LetOrUse changes in
dotnet/fsharp#19090.

The ExpressionUtilities.LetOrUse active pattern was taken
from an implementation detail of that change as well as it
avoids using when clauses in lots of places.
Remove the workaround for
dotnet/fsharp#19118 now that FCS has
been updated to a version containing the fix
@Numpsy Numpsy changed the title [WIP] FSharp.Compiler.Service 43.12.201 FSharp.Compiler.Service 43.12.201 Jun 29, 2026
@Numpsy

Numpsy commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Ok, this version of FCS should contain the fix we need (dotnet/fsharp@89d7886), can you please include a commit to remove this workaround: 755f4d1 ?

Done

@Numpsy Numpsy marked this pull request as ready for review June 29, 2026 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants