Skip to content

Improve FCS docs - #20508

Merged
T-Gro merged 4 commits into
dotnet:mainfrom
nojaf:some-docs-fixes
Sep 10, 2026
Merged

T-Gro merged 4 commits into
dotnet:mainfrom
nojaf:some-docs-fixes

Conversation

@nojaf

@nojaf nojaf commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Hello @T-Gro, sorry for ignoring the PR template. I'm gonna yap a bit.
This is PR purely about the docs over at https://fsharp.github.io/fsharp-compiler-docs/

So, earlier today I fixed the GitHub Action that automatically publishes these (see fsharp/fsharp-compiler-docs#1018)

And I noticed a few small things I wanted to fix in this PR:

  • Some fsx scripts were broken due to API changes.
  • The release notes pages did not quite show the NuGet packages linked to the notes. I improved that and did some tweaks to the ordering so latest stuff is shown first:
image image

And some newer pages like the postmortems and LSP did not have frontmatter and did not end up in their own section. I changed that (and updated the skill as well)

image image

I also bumped the fsdocs-tool to 23.alpha.1, I'm not sure if you need anything on MS side to allow that tool version to be used. But really, it is worth it:

image

In docs/release-notes/.aux/Common.fsx I also bumped some NuGet package versions. Not sure if that part matters much for this repo.

I hope this works for you.

The literate scripts under docs/fcs no longer compiled against the
current FSharp.Compiler.Service, so the published tutorial pages
rendered compiler errors instead of output. fsdocs 23 surfaces script
evaluation failures rather than discarding them, which made this visible.

- tokenizer.fsx: FSharpSourceTokenizer takes three arguments now, drop
  the trailing None and describe the language version argument.
- editor.fsx: FSharpMethodGroupItemParameter.Display is a RichText, so
  read its Text instead of enumerating tagged parts.
- typedtree.fsx: annotate the input as string to disambiguate the new
  File.WriteAllText(string, ReadOnlySpan<char>) overload.
- untypedtree.fsx: SynExpr.LetOrUse is a SynLetOrUse record and
  SynModuleDecl.Let gained a trivia field.
- untypedtree-apis.fsx: SynComponentInfo lost its longId field in
  dotnet#19602, use the LongIdent compatibility member.
The release notes pages derived the package version from the notes
file name, which no longer holds. FSharp.Compiler.Service bumps its
minor version independently of the F# version (43.12.100 is F# 11.0.100
while 43.12.204 is F# 10.0.204), and FSharp.Core 10.0.2xx and 10.0.3xx
shipped as 10.1.x. Recent headings therefore named versions that do not
exist and showed as unreleased.

Each package on NuGet is now matched to its notes file through the
source commit recorded in its nuspec: eng/Versions.props at that commit
(under src/fsharp for VMR builds) gives the exact F# version. The
heading shows the first package that shipped for the notes, with a
badge per servicing rebuild, and the page is ordered by package version.

Also:
- Sort versions numerically instead of as strings, so 10.x and 11.x no
  longer sort below 9.x. The Language page had a broken comparer that
  threw on three-part versions and rendered nothing.
- Distinguish unlisted packages, which NuGet reports with a 1900-01-01
  publish date, from ones that are not on NuGet at all.
- Silence FsHttp request logging and bump Markdig and FsHttp.
Twelve pages had no fsdocs front matter, so the published site listed
them in an unnamed "Other" group at the bottom of the navigation.

The postmortems get their own "Postmortems" category, with the README as
the overview. The remaining pages join the existing categories: the
equality optimizations, regression testing, LabelOps, perf archive and
SRTP guide under Compiler Internals, the LSP proposal under Language
Service Internals, reflection-free printing under FSharp.Core and the
pending breaking changes under Release Notes.

The postmortem skill now tells the agent to emit that front matter, and
the postmortems README no longer links to ../../.github, which cannot
resolve on the site.

The "running the documentation locally" guide is rewritten for the
build.fsx pipeline in fsharp-compiler-docs and its FSHARP_REPO variable,
and documents how fsdocs watch caches pages and why edits to the
release-notes markdown are not picked up.
@github-actions

github-actions Bot commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Release notes required, but author opted out

Warning

Author opted out of release notes, check is disabled for this pull request.
cc @dotnet/fsharp-team-msft

@nojaf nojaf added the NO_RELEASE_NOTES Label for pull requests which signals, that user opted-out of providing release notes label Sep 10, 2026
@github-actions github-actions Bot added the ⚠️ Affects-Agent-Config Tooling check: PR modifies AI agent instructions or workflows label Sep 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Tooling Safety Check — Affects-Agent-Config
Affects-Agent-Config: modifies .github skill guidance for agents.

Generated by PR Tooling Safety Check · gpt56 997.5K · ◷

@T-Gro

T-Gro commented Sep 10, 2026

Copy link
Copy Markdown
Member

A nice package of cleanups and improvements, thank you 👍 !

@github-project-automation github-project-automation Bot moved this from New to In Progress in F# Compiler and Tooling Sep 10, 2026
@T-Gro
T-Gro merged commit 48b860e into dotnet:main Sep 10, 2026
6 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in F# Compiler and Tooling Sep 10, 2026
@nojaf
nojaf deleted the some-docs-fixes branch September 10, 2026 09:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⚠️ Affects-Agent-Config Tooling check: PR modifies AI agent instructions or workflows NO_RELEASE_NOTES Label for pull requests which signals, that user opted-out of providing release notes

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants