From 80578f2af12ba1c2c71ac1313b89128e9442a5bf Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 4 Dec 2023 11:51:51 +0100 Subject: [PATCH 01/18] Move version-specific file into single CHANGELOG file. --- .../FSharp.Compiler.Service/8.0.200.md | 2 -- .../FSharp.Compiler.Service/CHANGELOG.md | 24 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) delete mode 100644 docs/release-notes/FSharp.Compiler.Service/8.0.200.md create mode 100644 docs/release-notes/FSharp.Compiler.Service/CHANGELOG.md diff --git a/docs/release-notes/FSharp.Compiler.Service/8.0.200.md b/docs/release-notes/FSharp.Compiler.Service/8.0.200.md deleted file mode 100644 index c0d199a7864..00000000000 --- a/docs/release-notes/FSharp.Compiler.Service/8.0.200.md +++ /dev/null @@ -1,2 +0,0 @@ -- Miscellaneous fixes to parens analysis - https://github.com/dotnet/fsharp/pull/16262 -- Fixes #16359 - correctly handle imports with 0 length public key tokens - https://github.com/dotnet/fsharp/pull/16363 \ No newline at end of file diff --git a/docs/release-notes/FSharp.Compiler.Service/CHANGELOG.md b/docs/release-notes/FSharp.Compiler.Service/CHANGELOG.md new file mode 100644 index 00000000000..8cabd8f46b7 --- /dev/null +++ b/docs/release-notes/FSharp.Compiler.Service/CHANGELOG.md @@ -0,0 +1,24 @@ +--- +category: Release Notes +categoryindex: 600 +index: 1 +title: FSharp.Compiler.Service +--- + +# FSharp.Compiler.Service + +These release notes aim to follow the principles of [KeepAChangelog](https://keepachangelog.com/). +Each entry takes an end-user centric perspective. + +## Unreleased + +### Fixes + +* Miscellaneous fixes to parentheses analysis. ([PR #16262](https://github.com/dotnet/fsharp/pull/16262)) +* Correctly handle assembly imports with public key token of 0 length. ([Issue #16359](https://github.com/dotnet/fsharp/issues/16359), [PR #16363](https://github.com/dotnet/fsharp/pull/16363)) + +## 43.8.100 - 2023-11-14 + +### Fixed + +* Include the `get,set` keywords in the range of `SynMemberDefn.AutoProperty`. ([PR #15835](https://github.com/dotnet/fsharp/pull/15835)) \ No newline at end of file From 55ee0c82eb2b0212352a48fe6e97d8d42834d2d9 Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 4 Dec 2023 11:52:14 +0100 Subject: [PATCH 02/18] Override main menu width from theme. --- docs/content/fsdocs-theme.css | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/content/fsdocs-theme.css diff --git a/docs/content/fsdocs-theme.css b/docs/content/fsdocs-theme.css new file mode 100644 index 00000000000..78b11777baf --- /dev/null +++ b/docs/content/fsdocs-theme.css @@ -0,0 +1,3 @@ +:root { + --main-menu-width: 300px; +} From 06e8874fd778eeaad0bb1c535da518fd711c7b1d Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 4 Dec 2023 14:52:23 +0100 Subject: [PATCH 03/18] Propose keep a changelog format. --- docs/release-notes/About.md | 30 +++++++++++++++++++ ...HANGELOG.md => FSharp.Compiler.Service.md} | 5 +--- docs/release-notes/FSharp.Core.md | 19 ++++++++++++ docs/release-notes/FSharp.Core/8.0.200.md | 1 - docs/release-notes/Language.md | 19 ++++++++++++ docs/release-notes/Language/preview.md | 1 - 6 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 docs/release-notes/About.md rename docs/release-notes/{FSharp.Compiler.Service/CHANGELOG.md => FSharp.Compiler.Service.md} (79%) create mode 100644 docs/release-notes/FSharp.Core.md delete mode 100644 docs/release-notes/FSharp.Core/8.0.200.md create mode 100644 docs/release-notes/Language.md delete mode 100644 docs/release-notes/Language/preview.md diff --git a/docs/release-notes/About.md b/docs/release-notes/About.md new file mode 100644 index 00000000000..a01775d5b62 --- /dev/null +++ b/docs/release-notes/About.md @@ -0,0 +1,30 @@ +--- +category: Release Notes +categoryindex: 600 +index: 1 +title: About +--- + +# About + +The release notes for the [F\# language](./Language.md), [FSharp.Core](./FSharp.Core.md) and [FSharp.Compiler.Service](./FSharp.Compiler.Service.md) are based on the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format. +The target audience these release notes are the respective end-users. + +## Writing a changelog entry + +In order to keep the change logs consistent the following format was proposed for each entry: + +```md +* . ([PR #16106](https://github.com/dotnet/fsharp/pull/16106)) +``` + +Some tips: + +* Use valid [Markdown](https://www.markdownguide.org/). +* Use `*` as bullet point symbol. We don't want to mix `*` and `-`. +* Start your description with a capital and end the sentence with a dot. +* **Always** include a link to your pull request before the closing `)`, `([PR #16106](https://github.com/dotnet/fsharp/pull/16106))`. +* If possible, include a link to an issue on `dotnet/fsharp` use `[Issue #16359](https://github.com/dotnet/fsharp/issues/16359)` before the link to the pull request. +* If possible, include a link to a language suggestion from `dotnet/fsharp` use `[Language suggestion #721](https://github.com/fsharp/fslang-suggestions/issues/721)` before the link to the pull request. +* Choose the right section for your type of change. (`## Added`, `## Changed`, `## Deprecated`, `## Removed`, `## Fixed` or `## Security`). +* Ensure you description makes it clear what the change is about. The reader should be informed on a high level without needing to click through the pull request link and find out in the code what actually changed. diff --git a/docs/release-notes/FSharp.Compiler.Service/CHANGELOG.md b/docs/release-notes/FSharp.Compiler.Service.md similarity index 79% rename from docs/release-notes/FSharp.Compiler.Service/CHANGELOG.md rename to docs/release-notes/FSharp.Compiler.Service.md index 8cabd8f46b7..ba242711904 100644 --- a/docs/release-notes/FSharp.Compiler.Service/CHANGELOG.md +++ b/docs/release-notes/FSharp.Compiler.Service.md @@ -1,15 +1,12 @@ --- category: Release Notes categoryindex: 600 -index: 1 +index: 4 title: FSharp.Compiler.Service --- # FSharp.Compiler.Service -These release notes aim to follow the principles of [KeepAChangelog](https://keepachangelog.com/). -Each entry takes an end-user centric perspective. - ## Unreleased ### Fixes diff --git a/docs/release-notes/FSharp.Core.md b/docs/release-notes/FSharp.Core.md new file mode 100644 index 00000000000..0119abf44e7 --- /dev/null +++ b/docs/release-notes/FSharp.Core.md @@ -0,0 +1,19 @@ +--- +category: Release Notes +categoryindex: 600 +index: 3 +title: FSharp.Core +--- + +# FSharp.Core + +## Unreleased + +### Added + +* More inlines for Result module. ([PR #16106](https://github.com/dotnet/fsharp/pull/16106)) + +## 8.0.100 - 2023-11-14 + +### Added +* `TailCallAttribute` ([Language suggestion #721](https://github.com/fsharp/fslang-suggestions/issues/721), [PR #15503](https://github.com/dotnet/fsharp/pull/15503)) \ No newline at end of file diff --git a/docs/release-notes/FSharp.Core/8.0.200.md b/docs/release-notes/FSharp.Core/8.0.200.md deleted file mode 100644 index 8bed6454108..00000000000 --- a/docs/release-notes/FSharp.Core/8.0.200.md +++ /dev/null @@ -1 +0,0 @@ -- More inlines for Result module - https://github.com/dotnet/fsharp/pull/16106 \ No newline at end of file diff --git a/docs/release-notes/Language.md b/docs/release-notes/Language.md new file mode 100644 index 00000000000..2c1d30b16ec --- /dev/null +++ b/docs/release-notes/Language.md @@ -0,0 +1,19 @@ +--- +category: Release Notes +categoryindex: 600 +index: 2 +title: F# Language +--- + +# F\# Language + +## Unreleased + +## Added +* Better generic unmanaged structs handling. ([Language suggestion #692](https://github.com/fsharp/fslang-suggestions/issues/692), [PR #12154](https://github.com/dotnet/fsharp/pull/12154)) +* Bidirectional F#/C# interop for 'unmanaged' constraint. ([PR #12154](https://github.com/dotnet/fsharp/pull/12154)) + +## 8.0.0 - 2023-11-14 + +### Added +* `while!` ([Language suggestion #1038](https://github.com/fsharp/fslang-suggestions/issues/1038), [PR #14238](https://github.com/dotnet/fsharp/pull/14238)) \ No newline at end of file diff --git a/docs/release-notes/Language/preview.md b/docs/release-notes/Language/preview.md deleted file mode 100644 index 7d9996a870e..00000000000 --- a/docs/release-notes/Language/preview.md +++ /dev/null @@ -1 +0,0 @@ -- Feature: Better unmanaged structs handling - https://github.com/dotnet/fsharp/pull/12154 \ No newline at end of file From be9dc2b6e93850ef121edde7e90473a038bc2d6d Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 4 Dec 2023 14:52:34 +0100 Subject: [PATCH 04/18] Add missing favicon. --- docs/img/favicon.ico | Bin 0 -> 107697 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/img/favicon.ico diff --git a/docs/img/favicon.ico b/docs/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ad06a8a28037228e4e1f8f5f5d242a1974f2d25d GIT binary patch literal 107697 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 Date: Mon, 4 Dec 2023 15:05:57 +0100 Subject: [PATCH 05/18] Update release notes check. --- .github/workflows/check_release_notes.yml | 42 +++-------------------- 1 file changed, 4 insertions(+), 38 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 14b3c85ca51..1ab68195911 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -50,45 +50,11 @@ jobs: echo "Opt out of release notes: $OPT_OUT_RELEASE_NOTES" - # Parse version from eng/Versions.props - # For FSarp.Core: - # 8 - # 0 - # 100 - # For FCS: - # FCSMajorVersion>43 - # 8 - # $(FSBuildVersion) - # For VS: - # 17 - # 8 - - _fs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) - _fs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) - _fs_build_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) - _fcs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) - _fcs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) - _fcs_build_version=$_fs_build_version - _vs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) - _vs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) - - FSHARP_CORE_VERSION="$_fs_major_version.$_fs_minor_version.$_fs_build_version" - FCS_VERSION="$_fcs_major_version.$_fcs_minor_version.$_fcs_build_version" - VISUAL_STUDIO_VERSION="$_vs_major_version.$_vs_minor_version" - - echo "Found F# version: ${FSHARP_CORE_VERSION}" - echo "Found FCS version: ${FCS_VERSION}" - echo "Found Visual Studio version: ${VISUAL_STUDIO_VERSION}" - - [[ "$FSHARP_CORE_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo " Invalid FSharp.Core Version parsed"; exit 1) - [[ "$FCS_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo " Invalid FCS Version parsed"; exit 1) - [[ "$VISUAL_STUDIO_VERSION" =~ ^[0-9]+\.[0-9]+$ ]] || (echo " Invalid Visual Studio Version parsed"; exit 1) - _release_notes_base_path='docs/release-notes' - _fsharp_core_release_notes_path="${_release_notes_base_path}/FSharp.Core/${FSHARP_CORE_VERSION}.md" - _fsharp_compiler_release_notes_path="${_release_notes_base_path}/FSharp.Compiler.Service/${FSHARP_CORE_VERSION}.md" - _fsharp_language_release_notes_path="${_release_notes_base_path}/Language/preview.md" - _fsharp_vs_release_notes_path="${_release_notes_base_path}/VisualStudio/${VISUAL_STUDIO_VERSION}.md" + _fsharp_core_release_notes_path="${_release_notes_base_path}/FSharp.Core.md" + _fsharp_compiler_release_notes_path="${_release_notes_base_path}/FSharp.Compiler.Service.md" + _fsharp_language_release_notes_path="${_release_notes_base_path}/Language.md" + _fsharp_vs_release_notes_path="${_release_notes_base_path}/VisualStudio.md" readonly paths=( "src/FSharp.Core|${_fsharp_core_release_notes_path}" From 28d917d8c900d9d46fd1877bc2ed395e9fd906a2 Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 4 Dec 2023 15:11:08 +0100 Subject: [PATCH 06/18] Fix language header. --- docs/release-notes/Language.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/Language.md b/docs/release-notes/Language.md index 2c1d30b16ec..6f60c64e4ae 100644 --- a/docs/release-notes/Language.md +++ b/docs/release-notes/Language.md @@ -9,11 +9,13 @@ title: F# Language ## Unreleased -## Added +### Added + * Better generic unmanaged structs handling. ([Language suggestion #692](https://github.com/fsharp/fslang-suggestions/issues/692), [PR #12154](https://github.com/dotnet/fsharp/pull/12154)) * Bidirectional F#/C# interop for 'unmanaged' constraint. ([PR #12154](https://github.com/dotnet/fsharp/pull/12154)) ## 8.0.0 - 2023-11-14 ### Added + * `while!` ([Language suggestion #1038](https://github.com/fsharp/fslang-suggestions/issues/1038), [PR #14238](https://github.com/dotnet/fsharp/pull/14238)) \ No newline at end of file From c682759ce3232b3fdd3c960b05133eb1f4d5a5ec Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 14:58:36 +0100 Subject: [PATCH 07/18] Restore original version files. Move files to excluded docs folder. Compose single release file for FCS. --- .github/workflows/check_release_notes.yml | 42 +++++++++- .../.FSharp.Compiler.Service/8.0.100.md | 3 + .../8.0.200.md} | 19 +---- docs/release-notes/.FSharp.Core/8.0.200.md | 3 + docs/release-notes/.Language/preview.md | 4 + .../release-notes/FSharp.Compiler.Service.fsx | 81 +++++++++++++++++++ .../{FSharp.Core.md => FSharp.Core.fsx} | 0 .../{Language.md => Language.fsx} | 0 scripts/CheckReleaseNotes.fsx | 3 + 9 files changed, 133 insertions(+), 22 deletions(-) create mode 100644 docs/release-notes/.FSharp.Compiler.Service/8.0.100.md rename docs/release-notes/{FSharp.Compiler.Service.md => .FSharp.Compiler.Service/8.0.200.md} (50%) create mode 100644 docs/release-notes/.FSharp.Core/8.0.200.md create mode 100644 docs/release-notes/.Language/preview.md create mode 100644 docs/release-notes/FSharp.Compiler.Service.fsx rename docs/release-notes/{FSharp.Core.md => FSharp.Core.fsx} (100%) rename docs/release-notes/{Language.md => Language.fsx} (100%) create mode 100644 scripts/CheckReleaseNotes.fsx diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 1ab68195911..14b3c85ca51 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -50,11 +50,45 @@ jobs: echo "Opt out of release notes: $OPT_OUT_RELEASE_NOTES" + # Parse version from eng/Versions.props + # For FSarp.Core: + # 8 + # 0 + # 100 + # For FCS: + # FCSMajorVersion>43 + # 8 + # $(FSBuildVersion) + # For VS: + # 17 + # 8 + + _fs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fs_build_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fcs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fcs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _fcs_build_version=$_fs_build_version + _vs_major_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + _vs_minor_version=$(grep -oPm1 "(?<=)[^<]+" eng/Versions.props) + + FSHARP_CORE_VERSION="$_fs_major_version.$_fs_minor_version.$_fs_build_version" + FCS_VERSION="$_fcs_major_version.$_fcs_minor_version.$_fcs_build_version" + VISUAL_STUDIO_VERSION="$_vs_major_version.$_vs_minor_version" + + echo "Found F# version: ${FSHARP_CORE_VERSION}" + echo "Found FCS version: ${FCS_VERSION}" + echo "Found Visual Studio version: ${VISUAL_STUDIO_VERSION}" + + [[ "$FSHARP_CORE_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo " Invalid FSharp.Core Version parsed"; exit 1) + [[ "$FCS_VERSION" =~ ^[0-9]+\.[0-9]+.[0-9]+$ ]] || (echo " Invalid FCS Version parsed"; exit 1) + [[ "$VISUAL_STUDIO_VERSION" =~ ^[0-9]+\.[0-9]+$ ]] || (echo " Invalid Visual Studio Version parsed"; exit 1) + _release_notes_base_path='docs/release-notes' - _fsharp_core_release_notes_path="${_release_notes_base_path}/FSharp.Core.md" - _fsharp_compiler_release_notes_path="${_release_notes_base_path}/FSharp.Compiler.Service.md" - _fsharp_language_release_notes_path="${_release_notes_base_path}/Language.md" - _fsharp_vs_release_notes_path="${_release_notes_base_path}/VisualStudio.md" + _fsharp_core_release_notes_path="${_release_notes_base_path}/FSharp.Core/${FSHARP_CORE_VERSION}.md" + _fsharp_compiler_release_notes_path="${_release_notes_base_path}/FSharp.Compiler.Service/${FSHARP_CORE_VERSION}.md" + _fsharp_language_release_notes_path="${_release_notes_base_path}/Language/preview.md" + _fsharp_vs_release_notes_path="${_release_notes_base_path}/VisualStudio/${VISUAL_STUDIO_VERSION}.md" readonly paths=( "src/FSharp.Core|${_fsharp_core_release_notes_path}" diff --git a/docs/release-notes/.FSharp.Compiler.Service/8.0.100.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.100.md new file mode 100644 index 00000000000..a1bc082b81c --- /dev/null +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.100.md @@ -0,0 +1,3 @@ +### Fixed + +* Include the `get,set` keywords in the range of `SynMemberDefn.AutoProperty`. ([PR #15835](https://github.com/dotnet/fsharp/pull/15835)) \ No newline at end of file diff --git a/docs/release-notes/FSharp.Compiler.Service.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.200.md similarity index 50% rename from docs/release-notes/FSharp.Compiler.Service.md rename to docs/release-notes/.FSharp.Compiler.Service/8.0.200.md index ba242711904..cab2a1a9c4a 100644 --- a/docs/release-notes/FSharp.Compiler.Service.md +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.200.md @@ -1,21 +1,4 @@ ---- -category: Release Notes -categoryindex: 600 -index: 4 -title: FSharp.Compiler.Service ---- - -# FSharp.Compiler.Service - -## Unreleased - -### Fixes +### Fixed * Miscellaneous fixes to parentheses analysis. ([PR #16262](https://github.com/dotnet/fsharp/pull/16262)) * Correctly handle assembly imports with public key token of 0 length. ([Issue #16359](https://github.com/dotnet/fsharp/issues/16359), [PR #16363](https://github.com/dotnet/fsharp/pull/16363)) - -## 43.8.100 - 2023-11-14 - -### Fixed - -* Include the `get,set` keywords in the range of `SynMemberDefn.AutoProperty`. ([PR #15835](https://github.com/dotnet/fsharp/pull/15835)) \ No newline at end of file diff --git a/docs/release-notes/.FSharp.Core/8.0.200.md b/docs/release-notes/.FSharp.Core/8.0.200.md new file mode 100644 index 00000000000..e927a03a062 --- /dev/null +++ b/docs/release-notes/.FSharp.Core/8.0.200.md @@ -0,0 +1,3 @@ +### Added + +* More inlines for Result module. ([PR #16106](https://github.com/dotnet/fsharp/pull/16106)) diff --git a/docs/release-notes/.Language/preview.md b/docs/release-notes/.Language/preview.md new file mode 100644 index 00000000000..177436a2b43 --- /dev/null +++ b/docs/release-notes/.Language/preview.md @@ -0,0 +1,4 @@ +### Added + +* Better generic unmanaged structs handling. ([Language suggestion #692](https://github.com/fsharp/fslang-suggestions/issues/692), [PR #12154](https://github.com/dotnet/fsharp/pull/12154)) +* Bidirectional F#/C# interop for 'unmanaged' constraint. ([PR #12154](https://github.com/dotnet/fsharp/pull/12154)) \ No newline at end of file diff --git a/docs/release-notes/FSharp.Compiler.Service.fsx b/docs/release-notes/FSharp.Compiler.Service.fsx new file mode 100644 index 00000000000..9235915db0e --- /dev/null +++ b/docs/release-notes/FSharp.Compiler.Service.fsx @@ -0,0 +1,81 @@ +(** --- +category: Release Notes +categoryindex: 600 +index: 4 +title: FSharp.Compiler.Service +--- + +# FSharp.Compiler.Service +*) +(*** hide ***) +#r "nuget: Markdig, 0.33.0" +#r "nuget: FsHttp, 12.1.0" + +open System.IO +open System.Xml.Linq +open System.Xml.XPath +open System.Text.RegularExpressions +open Markdig +open FsHttp + +let path = Path.Combine(__SOURCE_DIRECTORY__, ".FSharp.Compiler.Service") +let versionProps = Path.Combine(__SOURCE_DIRECTORY__, "../../eng/Versions.props") +let versionPropsDoc = XDocument.Load(versionProps) +let fcsMajorVersion = versionPropsDoc.XPathSelectElement("//FCSMajorVersion").Value + +// Find all published version on NuGet +let availableNugetVersions: Set = + http { GET $"https://api.nuget.org/v3-flatcontainer/fsharp.compiler.service/index.json" } + |> Request.send + |> Response.deserializeJson<{| versions: string array |}> + |> fun json -> Set.ofArray json.versions + +/// Try and find the publish date on NuGet +let tryGetReleaseDate version = + http { GET $"https://api.nuget.org/v3/registration5-gz-semver2/fsharp.compiler.service/%s{version}.json" } + |> Request.send + |> Response.deserializeJson<{| published: string |}> + |> fun json -> + if System.String.IsNullOrWhiteSpace json.published then + None + else + Some(json.published.Split('T').[0]) + +/// In order for the heading to appear in the page content menu in fsdocs, +/// they need to follow a specific HTML structure. +let transformH3 (version: string) (input: string) = + let pattern = "

(.*?)

" + + let replacement = + $"

$1

" + + Regex.Replace(input, pattern, replacement) + +Directory.EnumerateFiles(path, "*.md") +|> Seq.sortByDescending Path.GetFileNameWithoutExtension +|> Seq.map (fun file -> + let versionInFileName = Path.GetFileNameWithoutExtension(file) + // Example: 8.0.200 + let versionParts = versionInFileName.Split '.' + + let version = $"%s{fcsMajorVersion}.%s{versionParts.[0]}.%s{versionParts.[2]}" + // TODO: Can we determine if the current version is in code freeze based on the Version.props info? + let title = + if not (availableNugetVersions.Contains version) then + $"%s{version} - Unreleased" + else + match tryGetReleaseDate version with + | None -> $"%s{version} - Unreleased" + | Some d -> $"%s{version} - %s{d}" + + let nugetBadge = + if not (availableNugetVersions.Contains version) then + System.String.Empty + else + $"\"Nuget\"" + + let content = File.ReadAllText file |> Markdown.ToHtml |> transformH3 version + + $"""

%s{title}

%s{nugetBadge}%s{content}""") +|> String.concat "\n" +(*** include-it-raw ***) diff --git a/docs/release-notes/FSharp.Core.md b/docs/release-notes/FSharp.Core.fsx similarity index 100% rename from docs/release-notes/FSharp.Core.md rename to docs/release-notes/FSharp.Core.fsx diff --git a/docs/release-notes/Language.md b/docs/release-notes/Language.fsx similarity index 100% rename from docs/release-notes/Language.md rename to docs/release-notes/Language.fsx diff --git a/scripts/CheckReleaseNotes.fsx b/scripts/CheckReleaseNotes.fsx new file mode 100644 index 00000000000..4f967bc02a8 --- /dev/null +++ b/scripts/CheckReleaseNotes.fsx @@ -0,0 +1,3 @@ +open System + +let GITHUB_REPOSITORY = Environment.GetEnvironmentVariable "GITHUB_REPOSITORY" From f30507b05b20057caf43142562d98c28247fab56 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 15:15:26 +0100 Subject: [PATCH 08/18] Remove unused script. --- scripts/CheckReleaseNotes.fsx | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 scripts/CheckReleaseNotes.fsx diff --git a/scripts/CheckReleaseNotes.fsx b/scripts/CheckReleaseNotes.fsx deleted file mode 100644 index 4f967bc02a8..00000000000 --- a/scripts/CheckReleaseNotes.fsx +++ /dev/null @@ -1,3 +0,0 @@ -open System - -let GITHUB_REPOSITORY = Environment.GetEnvironmentVariable "GITHUB_REPOSITORY" From ae631276bf9405808339c9a1a54b0857d42dfb74 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 15:16:48 +0100 Subject: [PATCH 09/18] Compose single release overview for FSharp.Core. --- docs/release-notes/.aux/Common.fsx | 49 +++++++++++++++++ .../release-notes/FSharp.Compiler.Service.fsx | 52 ++++--------------- docs/release-notes/FSharp.Core.fsx | 37 ++++++++++--- 3 files changed, 88 insertions(+), 50 deletions(-) create mode 100644 docs/release-notes/.aux/Common.fsx diff --git a/docs/release-notes/.aux/Common.fsx b/docs/release-notes/.aux/Common.fsx new file mode 100644 index 00000000000..ec9bd35101c --- /dev/null +++ b/docs/release-notes/.aux/Common.fsx @@ -0,0 +1,49 @@ +#r "nuget: Markdig, 0.33.0" +#r "nuget: FsHttp, 12.1.0" + +open System.IO +open System.Xml.Linq +open System.Text.RegularExpressions +open FsHttp + +let versionProps = Path.Combine(__SOURCE_DIRECTORY__, "../../../eng/Versions.props") +let versionPropsDoc = XDocument.Load(versionProps) + +/// Find all published versions of a package on NuGet +let getAvailableNuGetVersions (packageName: string) : Set = + let packageName = packageName.ToLowerInvariant() + + http { GET $"https://api.nuget.org/v3-flatcontainer/%s{packageName}/index.json" } + |> Request.send + |> Response.deserializeJson<{| versions: string array |}> + |> fun json -> Set.ofArray json.versions + +/// Try and find the publish date on NuGet +let tryGetReleaseDate (packageName: string) (version: string) : string option = + let packageName = packageName.ToLowerInvariant() + + http { GET $"https://api.nuget.org/v3/registration5-gz-semver2/%s{packageName}/%s{version}.json" } + |> Request.send + |> Response.deserializeJson<{| published: string |}> + |> fun json -> + if System.String.IsNullOrWhiteSpace json.published then + None + else + Some(json.published.Split('T').[0]) + +/// In order for the heading to appear in the page content menu in fsdocs, +/// they need to follow a specific HTML structure. +let transformH3 (version: string) (input: string) : string = + let pattern = "

(.*?)

" + + let replacement = + $"

$1

" + + Regex.Replace(input, pattern, replacement) + +/// Process all MarkDown files from the given release folder +let processFolder (path: string) (processFile: string -> string) : string = + Directory.EnumerateFiles(path, "*.md") + |> Seq.sortByDescending Path.GetFileNameWithoutExtension + |> Seq.map processFile + |> String.concat "\n" diff --git a/docs/release-notes/FSharp.Compiler.Service.fsx b/docs/release-notes/FSharp.Compiler.Service.fsx index 9235915db0e..fc116d572cf 100644 --- a/docs/release-notes/FSharp.Compiler.Service.fsx +++ b/docs/release-notes/FSharp.Compiler.Service.fsx @@ -8,52 +8,19 @@ title: FSharp.Compiler.Service # FSharp.Compiler.Service *) (*** hide ***) -#r "nuget: Markdig, 0.33.0" -#r "nuget: FsHttp, 12.1.0" +#load "./.aux/Common.fsx" open System.IO -open System.Xml.Linq open System.Xml.XPath -open System.Text.RegularExpressions open Markdig -open FsHttp +open Common let path = Path.Combine(__SOURCE_DIRECTORY__, ".FSharp.Compiler.Service") -let versionProps = Path.Combine(__SOURCE_DIRECTORY__, "../../eng/Versions.props") -let versionPropsDoc = XDocument.Load(versionProps) let fcsMajorVersion = versionPropsDoc.XPathSelectElement("//FCSMajorVersion").Value +let nugetPackage = "FSharp.Compiler.Service" +let availableNuGetVersions = getAvailableNuGetVersions nugetPackage -// Find all published version on NuGet -let availableNugetVersions: Set = - http { GET $"https://api.nuget.org/v3-flatcontainer/fsharp.compiler.service/index.json" } - |> Request.send - |> Response.deserializeJson<{| versions: string array |}> - |> fun json -> Set.ofArray json.versions - -/// Try and find the publish date on NuGet -let tryGetReleaseDate version = - http { GET $"https://api.nuget.org/v3/registration5-gz-semver2/fsharp.compiler.service/%s{version}.json" } - |> Request.send - |> Response.deserializeJson<{| published: string |}> - |> fun json -> - if System.String.IsNullOrWhiteSpace json.published then - None - else - Some(json.published.Split('T').[0]) - -/// In order for the heading to appear in the page content menu in fsdocs, -/// they need to follow a specific HTML structure. -let transformH3 (version: string) (input: string) = - let pattern = "

(.*?)

" - - let replacement = - $"

$1

" - - Regex.Replace(input, pattern, replacement) - -Directory.EnumerateFiles(path, "*.md") -|> Seq.sortByDescending Path.GetFileNameWithoutExtension -|> Seq.map (fun file -> +processFolder path (fun file -> let versionInFileName = Path.GetFileNameWithoutExtension(file) // Example: 8.0.200 let versionParts = versionInFileName.Split '.' @@ -61,21 +28,20 @@ Directory.EnumerateFiles(path, "*.md") let version = $"%s{fcsMajorVersion}.%s{versionParts.[0]}.%s{versionParts.[2]}" // TODO: Can we determine if the current version is in code freeze based on the Version.props info? let title = - if not (availableNugetVersions.Contains version) then + if not (availableNuGetVersions.Contains version) then $"%s{version} - Unreleased" else - match tryGetReleaseDate version with + match tryGetReleaseDate nugetPackage version with | None -> $"%s{version} - Unreleased" | Some d -> $"%s{version} - %s{d}" let nugetBadge = - if not (availableNugetVersions.Contains version) then + if not (availableNuGetVersions.Contains version) then System.String.Empty else - $"\"Nuget\"" + $"\"Nuget\"" let content = File.ReadAllText file |> Markdown.ToHtml |> transformH3 version $"""

%s{title}

%s{nugetBadge}%s{content}""") -|> String.concat "\n" (*** include-it-raw ***) diff --git a/docs/release-notes/FSharp.Core.fsx b/docs/release-notes/FSharp.Core.fsx index 0119abf44e7..521ef4f630c 100644 --- a/docs/release-notes/FSharp.Core.fsx +++ b/docs/release-notes/FSharp.Core.fsx @@ -1,4 +1,4 @@ ---- +(** --- category: Release Notes categoryindex: 600 index: 3 @@ -6,14 +6,37 @@ title: FSharp.Core --- # FSharp.Core +*) +(*** hide ***) +#load "./.aux/Common.fsx" -## Unreleased +open System.IO +open Markdig +open Common -### Added +let path = Path.Combine(__SOURCE_DIRECTORY__, ".FSharp.Compiler.Service") +let nugetPackage = "FSharp.Core" +let availableNuGetVersions = getAvailableNuGetVersions nugetPackage -* More inlines for Result module. ([PR #16106](https://github.com/dotnet/fsharp/pull/16106)) +processFolder path (fun file -> + let version = Path.GetFileNameWithoutExtension(file) -## 8.0.100 - 2023-11-14 + // TODO: Can we determine if the current version is in code freeze based on the Version.props info? + let title = + if not (availableNuGetVersions.Contains version) then + $"%s{version} - Unreleased" + else + match tryGetReleaseDate nugetPackage version with + | None -> $"%s{version} - Unreleased" + | Some d -> $"%s{version} - %s{d}" -### Added -* `TailCallAttribute` ([Language suggestion #721](https://github.com/fsharp/fslang-suggestions/issues/721), [PR #15503](https://github.com/dotnet/fsharp/pull/15503)) \ No newline at end of file + let nugetBadge = + if not (availableNuGetVersions.Contains version) then + System.String.Empty + else + $"\"Nuget\"" + + let content = File.ReadAllText file |> Markdown.ToHtml |> transformH3 version + + $"""

%s{title}

%s{nugetBadge}%s{content}""") +(*** include-it-raw ***) From 74eddeb485423142b2fa9557e2f713765617d9ce Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 15:27:58 +0100 Subject: [PATCH 10/18] Compose language page. --- docs/release-notes/.Language/8.0.md | 3 +++ docs/release-notes/Language.fsx | 34 ++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 docs/release-notes/.Language/8.0.md diff --git a/docs/release-notes/.Language/8.0.md b/docs/release-notes/.Language/8.0.md new file mode 100644 index 00000000000..ad829f0a6b9 --- /dev/null +++ b/docs/release-notes/.Language/8.0.md @@ -0,0 +1,3 @@ +### Added + +* `while!` ([Language suggestion #1038](https://github.com/fsharp/fslang-suggestions/issues/1038), [PR #14238](https://github.com/dotnet/fsharp/pull/14238)) \ No newline at end of file diff --git a/docs/release-notes/Language.fsx b/docs/release-notes/Language.fsx index 6f60c64e4ae..73c173e7774 100644 --- a/docs/release-notes/Language.fsx +++ b/docs/release-notes/Language.fsx @@ -1,4 +1,4 @@ ---- +(** --- category: Release Notes categoryindex: 600 index: 2 @@ -6,16 +6,30 @@ title: F# Language --- # F\# Language +*) +(*** hide ***) +#load "./.aux/Common.fsx" -## Unreleased +open System.IO +open Markdig +open Common -### Added +let path = Path.Combine(__SOURCE_DIRECTORY__, ".Language") -* Better generic unmanaged structs handling. ([Language suggestion #692](https://github.com/fsharp/fslang-suggestions/issues/692), [PR #12154](https://github.com/dotnet/fsharp/pull/12154)) -* Bidirectional F#/C# interop for 'unmanaged' constraint. ([PR #12154](https://github.com/dotnet/fsharp/pull/12154)) +Directory.EnumerateFiles(path, "*.md") +|> Seq.sortWith (fun a b -> + let a = Path.GetFileNameWithoutExtension a + let b = Path.GetFileNameWithoutExtension b -## 8.0.0 - 2023-11-14 - -### Added - -* `while!` ([Language suggestion #1038](https://github.com/fsharp/fslang-suggestions/issues/1038), [PR #14238](https://github.com/dotnet/fsharp/pull/14238)) \ No newline at end of file + match a, b with + | "preview", "preview" -> 0 + | "preview", _ -> -1 + | _, "preview" -> 1 + | _, _ -> compare (int b) (int a)) +|> Seq.map (fun file -> + let version = Path.GetFileNameWithoutExtension(file) + let version = if version = "preview" then "Preview" else version + let content = File.ReadAllText file |> Markdown.ToHtml |> transformH3 version + $"""

%s{version}

%s{content}""") +|> String.concat "\n" +(*** include-it-raw ***) From 125c79052b8c57c9a1ed2296dc7e0f67eef8ba20 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 15:29:30 +0100 Subject: [PATCH 11/18] Add placeholders for documentation. --- docs/release-notes/About.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/release-notes/About.md b/docs/release-notes/About.md index a01775d5b62..13a1dc8d4e5 100644 --- a/docs/release-notes/About.md +++ b/docs/release-notes/About.md @@ -28,3 +28,13 @@ Some tips: * If possible, include a link to a language suggestion from `dotnet/fsharp` use `[Language suggestion #721](https://github.com/fsharp/fslang-suggestions/issues/721)` before the link to the pull request. * Choose the right section for your type of change. (`## Added`, `## Changed`, `## Deprecated`, `## Removed`, `## Fixed` or `## Security`). * Ensure you description makes it clear what the change is about. The reader should be informed on a high level without needing to click through the pull request link and find out in the code what actually changed. + +## The release process + +### General + +How does it work? Different stages/phases? + +#### FSharp.Compiler.Service + +Perhaps add some specific info if available? \ No newline at end of file From 67a7df7b70670401e37e70d2cc9fec85fc554167 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 15:32:30 +0100 Subject: [PATCH 12/18] Update paths in bash script. --- .github/workflows/check_release_notes.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check_release_notes.yml b/.github/workflows/check_release_notes.yml index 14b3c85ca51..8ffc85d0950 100644 --- a/.github/workflows/check_release_notes.yml +++ b/.github/workflows/check_release_notes.yml @@ -85,10 +85,10 @@ jobs: [[ "$VISUAL_STUDIO_VERSION" =~ ^[0-9]+\.[0-9]+$ ]] || (echo " Invalid Visual Studio Version parsed"; exit 1) _release_notes_base_path='docs/release-notes' - _fsharp_core_release_notes_path="${_release_notes_base_path}/FSharp.Core/${FSHARP_CORE_VERSION}.md" - _fsharp_compiler_release_notes_path="${_release_notes_base_path}/FSharp.Compiler.Service/${FSHARP_CORE_VERSION}.md" - _fsharp_language_release_notes_path="${_release_notes_base_path}/Language/preview.md" - _fsharp_vs_release_notes_path="${_release_notes_base_path}/VisualStudio/${VISUAL_STUDIO_VERSION}.md" + _fsharp_core_release_notes_path="${_release_notes_base_path}/.FSharp.Core/${FSHARP_CORE_VERSION}.md" + _fsharp_compiler_release_notes_path="${_release_notes_base_path}/.FSharp.Compiler.Service/${FSHARP_CORE_VERSION}.md" + _fsharp_language_release_notes_path="${_release_notes_base_path}/.Language/preview.md" + _fsharp_vs_release_notes_path="${_release_notes_base_path}/.VisualStudio/${VISUAL_STUDIO_VERSION}.md" readonly paths=( "src/FSharp.Core|${_fsharp_core_release_notes_path}" From 66c6baedca68aa0edaba0aa48f835b13b0d25f1f Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 16:01:33 +0100 Subject: [PATCH 13/18] Add full example of Issue + PR link and Language suggestion + PR link. --- docs/release-notes/About.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/About.md b/docs/release-notes/About.md index 13a1dc8d4e5..f8347683d41 100644 --- a/docs/release-notes/About.md +++ b/docs/release-notes/About.md @@ -24,8 +24,22 @@ Some tips: * Use `*` as bullet point symbol. We don't want to mix `*` and `-`. * Start your description with a capital and end the sentence with a dot. * **Always** include a link to your pull request before the closing `)`, `([PR #16106](https://github.com/dotnet/fsharp/pull/16106))`. -* If possible, include a link to an issue on `dotnet/fsharp` use `[Issue #16359](https://github.com/dotnet/fsharp/issues/16359)` before the link to the pull request. -* If possible, include a link to a language suggestion from `dotnet/fsharp` use `[Language suggestion #721](https://github.com/fsharp/fslang-suggestions/issues/721)` before the link to the pull request. +* If possible, include a link to an issue on `dotnet/fsharp` use `Issue #number` before the link to the pull request. + +Example: + +```md +* Correctly handle assembly imports with public key token of 0 length. ([Issue #16359](https://github.com/dotnet/fsharp/issues/16359), [PR #16363](https://github.com/dotnet/fsharp/pull/16363)) +``` + +* If possible, include a link to a language suggestion from `dotnet/fsharp` use `Language suggestion #number` before the link to the pull request. + +Example: + +```md +* `while!` ([Language suggestion #1038](https://github.com/fsharp/fslang-suggestions/issues/1038), [PR #14238](https://github.com/dotnet/fsharp/pull/14238)) +``` + * Choose the right section for your type of change. (`## Added`, `## Changed`, `## Deprecated`, `## Removed`, `## Fixed` or `## Security`). * Ensure you description makes it clear what the change is about. The reader should be informed on a high level without needing to click through the pull request link and find out in the code what actually changed. From a6974516a2ff33dd19cda7a9426fd1e92d77fafa Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 16:06:56 +0100 Subject: [PATCH 14/18] Explain people might rewrite your changelog entry. --- docs/release-notes/About.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/About.md b/docs/release-notes/About.md index f8347683d41..ae61126dc48 100644 --- a/docs/release-notes/About.md +++ b/docs/release-notes/About.md @@ -8,7 +8,7 @@ title: About # About The release notes for the [F\# language](./Language.md), [FSharp.Core](./FSharp.Core.md) and [FSharp.Compiler.Service](./FSharp.Compiler.Service.md) are based on the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format. -The target audience these release notes are the respective end-users. +The target audience of these release notes are the respective end-users. ## Writing a changelog entry @@ -41,7 +41,8 @@ Example: ``` * Choose the right section for your type of change. (`## Added`, `## Changed`, `## Deprecated`, `## Removed`, `## Fixed` or `## Security`). -* Ensure you description makes it clear what the change is about. The reader should be informed on a high level without needing to click through the pull request link and find out in the code what actually changed. +* Ensure your description makes it clear what the change is about. The reader should be informed on a high level without needing to click through the pull request link and find out in the code what actually changed. +* Maintainers or other contributors might rewrite your changelog entry in the future. This might be done when multiple pull requests can be consolidated under the same umbrella. ## The release process From 885da17e78a57fc2438946457c9c46f710e935d3 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Dec 2023 16:16:49 +0100 Subject: [PATCH 15/18] Update pull request template. --- .github/PULL_REQUEST_TEMPLATE.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 6642e4b7df6..f3fc39c1ec7 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -9,17 +9,17 @@ Fixes # (issue, if applicable) - [ ] Test cases added - [ ] Performance benchmarks added in case of performance changes - [ ] Release notes entry updated: - > Please make sure to add an entry with short succint description of the change as well as link to this pull request to the respective release notes file, if applicable. + > Please make sure to add an entry with short succinct description of the change as well as link to this pull request to the respective release notes file, if applicable. > > Release notes files: - > - If anything under `src/Compiler` has been changed, please make sure to make an entry in `docs/release-notes/FSharp.Compiler.Service/.md`, where `` is usually "highest" one, e.g. `42.8.200` - > - If language feature was added (i.e. `LanguageFeatures.fsi` was changed), please add it to `docs/releae-notes/Language/preview.md` - > - If a change to `FSharp.Core` was made, please make sure to edit `docs/release-notes/FSharp.Core/.md` where version is "highest" one, e.g. `8.0.200`. + > - If anything under `src/Compiler` has been changed, please make sure to make an entry in `docs/release-notes/.FSharp.Compiler.Service/.md`, where `` is usually "highest" one, e.g. `42.8.200` + > - If language feature was added (i.e. `LanguageFeatures.fsi` was changed), please add it to `docs/releae-notes/.Language/preview.md` + > - If a change to `FSharp.Core` was made, please make sure to edit `docs/release-notes/.FSharp.Core/.md` where version is "highest" one, e.g. `8.0.200`. - > Examples of release notes entries: - > - Respect line limit in quick info popup - https://github.com/dotnet/fsharp/pull/16208 - > - More inlines for Result module - https://github.com/dotnet/fsharp/pull/16106 - > - Miscellaneous fixes to parens analysis - https://github.com/dotnet/fsharp/pull/16262 - > + > Information about the release notes entries format can be found in the [documentation](https://fsharp.github.io/fsharp-compiler-docs/release-notes/About.html). + > Example: + > * More inlines for Result module. ([PR #16106](https://github.com/dotnet/fsharp/pull/16106)) + > * Correctly handle assembly imports with public key token of 0 length. ([Issue #16359](https://github.com/dotnet/fsharp/issues/16359), [PR #16363](https://github.com/dotnet/fsharp/pull/16363)) + > *`while!` ([Language suggestion #1038](https://github.com/fsharp/fslang-suggestions/issues/1038), [PR #14238](https://github.com/dotnet/fsharp/pull/14238)) > **If you believe that release notes are not necessary for this PR, please add `NO_RELEASE_NOTES` label to the pull request.** \ No newline at end of file From 8f4cc2ac7ae82bf5db1243ffefde4793a7ea62f6 Mon Sep 17 00:00:00 2001 From: nojaf Date: Fri, 8 Dec 2023 10:31:01 +0100 Subject: [PATCH 16/18] Multiple PRs in one entry. --- docs/release-notes/About.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/release-notes/About.md b/docs/release-notes/About.md index ae61126dc48..db1f84d5bd0 100644 --- a/docs/release-notes/About.md +++ b/docs/release-notes/About.md @@ -43,6 +43,13 @@ Example: * Choose the right section for your type of change. (`## Added`, `## Changed`, `## Deprecated`, `## Removed`, `## Fixed` or `## Security`). * Ensure your description makes it clear what the change is about. The reader should be informed on a high level without needing to click through the pull request link and find out in the code what actually changed. * Maintainers or other contributors might rewrite your changelog entry in the future. This might be done when multiple pull requests can be consolidated under the same umbrella. +* Related pull requests can be listed in the same entry when it makes sense. + +Example: + +```md +* Miscellaneous fixes to parentheses analysis. ([PR #16262](https://github.com/dotnet/fsharp/pull/16262), [PR #16391](https://github.com/dotnet/fsharp/pull/16391), [PR #16370](https://github.com/dotnet/fsharp/pull/16370)) +``` ## The release process From 80598db02dad329abfd66a23c5a694f6fd394244 Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 11 Dec 2023 15:44:50 +0100 Subject: [PATCH 17/18] Add entry about new error when interfaces with auto properties --- docs/release-notes/.FSharp.Compiler.Service/8.0.200.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/release-notes/.FSharp.Compiler.Service/8.0.200.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.200.md index cab2a1a9c4a..86143dac910 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/8.0.200.md +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.200.md @@ -2,3 +2,6 @@ * Miscellaneous fixes to parentheses analysis. ([PR #16262](https://github.com/dotnet/fsharp/pull/16262)) * Correctly handle assembly imports with public key token of 0 length. ([Issue #16359](https://github.com/dotnet/fsharp/issues/16359), [PR #16363](https://github.com/dotnet/fsharp/pull/16363)) + +### Added +* Raise a new error when interfaces with auto properties are implemented on constructor-less types. ([PR #16352](https://github.com/dotnet/fsharp/pull/16352)) From bebadc384f6a510cb64698c758d5f360bcfcf15b Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 11 Dec 2023 15:47:39 +0100 Subject: [PATCH 18/18] optionally --- docs/release-notes/About.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/About.md b/docs/release-notes/About.md index ae61126dc48..e42f0952ebd 100644 --- a/docs/release-notes/About.md +++ b/docs/release-notes/About.md @@ -24,7 +24,7 @@ Some tips: * Use `*` as bullet point symbol. We don't want to mix `*` and `-`. * Start your description with a capital and end the sentence with a dot. * **Always** include a link to your pull request before the closing `)`, `([PR #16106](https://github.com/dotnet/fsharp/pull/16106))`. -* If possible, include a link to an issue on `dotnet/fsharp` use `Issue #number` before the link to the pull request. +* Optionally, include a link to an issue on `dotnet/fsharp` use `Issue #number` before the link to the pull request. Example: @@ -32,7 +32,7 @@ Example: * Correctly handle assembly imports with public key token of 0 length. ([Issue #16359](https://github.com/dotnet/fsharp/issues/16359), [PR #16363](https://github.com/dotnet/fsharp/pull/16363)) ``` -* If possible, include a link to a language suggestion from `dotnet/fsharp` use `Language suggestion #number` before the link to the pull request. +* Optionally, include a link to a language suggestion from `dotnet/fsharp` use `Language suggestion #number` before the link to the pull request. Example: