From 20c29b72d7ba787657b72d833239d393dbecac96 Mon Sep 17 00:00:00 2001 From: Petr Pokorny Date: Wed, 30 Oct 2024 17:12:21 +0100 Subject: [PATCH 01/10] What's new in F# 9 --- docs/fsharp/media/whats-new/fsharp-9/help.png | Bin 0 -> 33494 bytes .../whats-new/fsharp-9/vs-visualizer.gif | Bin 0 -> 217624 bytes docs/fsharp/toc.yml | 2 + docs/fsharp/whats-new/fsharp-9.md | 408 ++++++++++++++++++ 4 files changed, 410 insertions(+) create mode 100644 docs/fsharp/media/whats-new/fsharp-9/help.png create mode 100644 docs/fsharp/media/whats-new/fsharp-9/vs-visualizer.gif create mode 100644 docs/fsharp/whats-new/fsharp-9.md diff --git a/docs/fsharp/media/whats-new/fsharp-9/help.png b/docs/fsharp/media/whats-new/fsharp-9/help.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1b4f20f8a9868a829bb7a29ce17fee5fdd4191 GIT binary patch literal 33494 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 V+aQ#BOuqs?83{%4Dp3Rf{{-)5>p=hj literal 0 HcmV?d00001 diff --git a/docs/fsharp/media/whats-new/fsharp-9/vs-visualizer.gif b/docs/fsharp/media/whats-new/fsharp-9/vs-visualizer.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e1108a8c48fbc2278ebf969374aa97f0e0798dd GIT binary patch literal 217624 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

xV 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 J?(aj=`#(=jL!$ry literal 0 HcmV?d00001 diff --git a/docs/fsharp/toc.yml b/docs/fsharp/toc.yml index 9deb876784f2a..4572ae9e0f489 100644 --- a/docs/fsharp/toc.yml +++ b/docs/fsharp/toc.yml @@ -292,6 +292,8 @@ items: href: tutorials/using-functions.md - name: What's new items: + - name: F# 9 + href: whats-new/fsharp-9.md - name: F# 8 href: whats-new/fsharp-8.md - name: F# 7 diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md new file mode 100644 index 0000000000000..92bee4a98d331 --- /dev/null +++ b/docs/fsharp/whats-new/fsharp-9.md @@ -0,0 +1,408 @@ +--- +title: What's new in F# 9 - F# Guide +description: Find information on the new features available in F# 9. +ms.date: 11/12/2024 +ms.topic: whats-new +--- + +# What's new in F# 9 + +F# 9 introduces a range of enhancements that make your programs safer, more resilient, and performant. This article highlights the major changes in F# 9, developed in the [F#'s open source code repository](https://github.com/dotnet/fsharp). + +You can download the latest .NET SDK from the [.NET downloads page](https://dotnet.microsoft.com/download). + +## F# language changes + +This section describes updates to the language itself, changes you will notice when writing or reading F# code. + +### Nullable reference types + +Although F# is designed to avoid `null`, it can creep in when interfacing with .NET libraries written in C#. F# now provides a type-safe way to deal with reference types that can have `null` as a valid value. + +For more details, watch out for an [upcoming blog post about this feature](https://devblogs.microsoft.com/dotnet/tag/f/). + +Here are some examples: + +

// Declared type at let-binding
+let notAValue: string | null = null
+
+let isAValue: string | null = "hello world"
+
+let isNotAValue2: string = null // gives a nullability warning
+
+let getLength (x: string | null) = x.Length // gives a nullability warning since x is a nullable string
+
+// Parameter to a function
+let len (str: string | null) =
+    match str with
+    | null -> -1
+    | NonNull s -> s.Length  // binds a non-null result
+
+// Parameter to a function
+let len (str: string | null) =
+    let s = nullArgCheck "str" str // Returns a non-null string
+    s.Length  // binds a non-null result
+
+// Declared type at let-binding
+let maybeAValue: string | null = hopefullyGetAString()
+
+// Array type signature
+let f (arr: (string | null)[]) = ()
+
+// Generic code, note 'T must be constrained to be a reference type
+let findOrNull (index: int) (list: 'T list) : 'T | null when 'T : not struct =
+    match List.tryItem index list with
+    | Some item -> item
+    | None -> null
+
+ +### Discriminated union `.Is*` properties + +Discriminated unions now have auto-generated properties for each case, allowing you to check if a value is of a particular case. For example, for the following type: + +
type Contact =
+    | Email of address: string
+    | Phone of countryCode: int * number: string
+
+type Person = { name: string; contact: Contact }
+
+ +Previously, you would have to write something like: + +
let canSendEmailTo person =
+    match person.contact with
+    | Email _ -> true
+    | _ -> false
+
+ +Now, you can instead write: + +
let canSendEmailTo person =
+    person.contact.IsEmail
+
+ +### Partial active patterns can return `bool` instead of `unit option` + +Previously, partial active patterns would return `Some ()` to indicate a match and `None` otherwise. Now, they can also return `bool`. + +For example, the active pattern for the following: +
match key with
+| CaseInsensitive "foo" -> ...
+| CaseInsensitive "bar" -> ...
+
+ +Would previously be written as: +
let (|CaseInsensitive|_|) (pattern: string) (value: string) =
+    if String.Equals(value, pattern, StringComparison.OrdinalIgnoreCase) then
+        Some ()
+    else
+        None
+
+ +Now, you can instead write: + +
let (|CaseInsensitive|_|) (pattern: string) (value: string) =
+    String.Equals(value, pattern, StringComparison.OrdinalIgnoreCase)
+
+ +### Prefer extension methods to intrinsic properties when arguments are provided + +To align with a pattern seen in some .NET libraries, where extension methods are defined with the same names as intrinsic properties of a type, F# will now resolve these extension methods instead of failing the type check. + +Example: + +
type Foo() =
+    member val X : int = 0 with get, set
+
+[<Extension>]
+type FooExt =
+    [<Extension>]
+    static member X (f: Foo, i: int) = f.X <- i; f
+
+let f = Foo()
+
+f.X(1) // We can now call the extension method to set the property and chain further calls
+
+ +### Support for empty-bodied computation expressions + +F# now supports empty [computation expressions](https://learn.microsoft.com/dotnet/fsharp/language-reference/computation-expressions). + +
let xs = seq { } // Empty sequence
+ +
let html =
+    div {
+        p { "Some content." }
+        p { } // Empty paragraph
+    }
+ +Writing an empty computation expression will result in a call to the CE builder's `Zero` method. + +This is a more natural syntax compared to the previously available `builder { () }`. + +### Hash directives are allowed to take non-string arguments + +Hash directives for the compiler previously only allowed string arguments passed in quotes. Now, they can take any type of argument. + +Previously, you had: +
#nowarn "0070"
+#time "on"
+ +Now, you can write: +
#nowarn 0070
+#time on
+ +This also ties into the next two changes. + +### Extended #help directive in fsi to show documentation in the REPL + +The `#help` directive in F# Interactive now shows documentation for a given object or function, which you can now pass without quotes. + +
> #help List.map;;
+
+Description:
+Builds a new collection whose elements are the results of applying the given function
+to each of the elements of the collection.
+
+Parameters:
+- mapping: The function to transform elements from the input list.
+- list: The input list.
+Returns:
+The list of transformed elements.
+
+Examples:
+let inputs = [ "a"; "bbb"; "cc" ]
+
+inputs |> List.map (fun x -> x.Length)
+// Evaluates to [ 1; 3; 2 ]
+
+Full name: Microsoft.FSharp.Collections.ListModule.map
+Assembly: FSharp.Core.dll
+
+ +### Allow #nowarn to support the FS prefix on error codes to disable warnings + +Previously, when you wanted to disable a warning and wrote `#nowarn "FS0057"`, you would get an `Invalid warning number 'FS0057'`. Even though the warning number is correct, it just wasn't supposed to have the `FS` prefix. + +Now, you won't have to spend time figuring that out because the warning numbers are accepted even with the prefix. + +All of these will now work: +
#nowarn 57
+#nowarn 0057
+#nowarn FS0057
+
+#nowarn "57"
+#nowarn "0057"
+#nowarn "FS0057"
+
+ +It's probably a good idea to stick to the same style throughout your project. + +### Warning about TailCall attribute on non-rec functions or let-bound values + +F# will now emit a warning when you put the `[]` attribute somewhere it doesn't belong. While it has no effect on what the code does, it could confuse someone reading it. + +For example, these will now emit a warning: +
[<TailCall>]
+let someNonRecFun x = x + x
+
+[<TailCall>]
+let someX = 23
+
+[<TailCall>]
+let rec someRecLetBoundValue = nameof(someRecLetBoundValue)
+
+ +### Enforce attribute targets + +The compiler now correctly enforces the `AttributeTargets` on let values, functions, union case declarations, implicit constructors, structs, and classes. This can prevent some hard-to-notice bugs, such as forgetting to add the unit argument to an Xunit test. + +Previously, you could have written: + +
[<Fact>]
+let ``this test always fails`` =
+  Assert.True(false)
+
+ +Run the tests with `dotnet test` and they would pass. Since the test function is not actually a function, it is ignored by the test runner. + +Now, with correct attribute enforcement, you will get an `error FS0842: This attribute is not valid for use on this language element`. + +## Updates to the standard library (FSharp.Core) + +### Random functions for collections + +The `List`, `Array`, and `Seq` modules have new functions for random sampling and shuffling. This makes F# easier to use for common data science, machine learning, game development, and other scenarios where randomness is needed. + +All functions have variants using: + +* An implicit thread-safe shared [`Random`](https://learn.microsoft.com/dotnet/api/system.random) instance +* Taking a `Random` instance as an argument +* Taking a custom `randomizer` function, which should return a float value greater than or equal to 0.0 and less than 1.0 + +There are four functions (each with three variants) available: + +#### Shuffle + +The shuffle functions return a new collection of the same type and size, with each item in a randomly mixed position. The chance to end up in any position is weighted evenly on the length of the collection. + +
let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
+let round1Order = allPlayers |> List.randomShuffle // [ "Charlie"; "Dave"; "Alice"; "Bob" ]
+
+ +For arrays, there are also `InPlace` variants that shuffle the array in place. + +#### Choice + +The choice functions return a single random element from the given collection. The random choice is weighted evenly on the size of the collection. + +
let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
+let randomPlayer = allPlayers |> List.randomChoice // "Charlie"
+
+ +#### Choices + +Choices select N elements from the input collection in random order, allowing elements to be selected more than once. + +
let weather = [ "Raining"; "Sunny"; "Snowing"; "Windy" ]
+let forecastForNext3Days = weather |> List.randomChoices 3 // [ "Windy"; "Snowing"; "Windy" ]
+
+ +#### Sample + +Sample selects N elements from the input collection in random order, without allowing elements to be selected more than once. N cannot be greater than the collection length. + +
let foods = [ "Apple"; "Banana"; "Carrot"; "Donut"; "Egg" ]
+let today'sMenu = foods |> List.randomSample 3 // [ "Donut"; "Apple"; "Egg" ]
+
+ +For a full list of functions and their variants, see ([RFC #1135](https://github.com/fsharp/fslang-design/blob/main/RFCs/FS-1135-random-functions-for-collections.md)). + +### Parameterless constructor for `CustomOperationAttribute` + +This makes it easier to create a custom operation for a computation expression builder. It will use the name of the method instead of having to explicitly name it (when in most cases the name matches the method name already). + +
type FooBuilder() =
+    [<CustomOperation>]  // Previously would have to be [<CustomOperation("bar")>]
+    member _.bar(state) = state
+
+ +### C# collection expression support for F# lists and sets + +When using F# lists and sets from C#, you can now use collection expressions to initialize them. + +Instead of: + +
FSharpSet<int> mySet = SetModule.FromArray([1, 2, 3]);
+
+ +You can now write: + +
FSharpSet<int> mySet = [ 1, 2, 3 ];
+
+ +This makes it easier to use the F# immutable collections from C#, for example when you need their structural equality, which `System.Collections.Immutable` collections don't have. + +## Quality of life improvements + +### Parser recovery + +There have been continuous improvements in parser recovery, meaning that tooling (e.g. syntax highlighting) still works with code when you're in the middle of editing it and it may not be syntactically correct at all times. + +For example, the parser will now recover on unfinished `as` patterns, object expressions, enum case declarations, record declarations, complex primary constructor patterns, unresolved long identifiers, empty match clauses, missing union case fields, and missing union case field types. + +### Diagnostics + +Diagnostics, or understanding what the compiler doesn't like about your code, are an important part of the user experience with F#. There are a number of new or improved diagnostic messages or more precise diagnostic locations in F# 9. + +These include: +- Ambiguous override method in object expression +- Abstract members when used in non-abstract classes +- When a property has the same name as a discriminated union case +- Active pattern argument count mismatch +- Unions with duplicated fields +- Using `use!` with `and!` in computation expressions + +There is also a new compile-time error for classes with over 65,520 methods in generated [IL](https://learn.microsoft.com/dotnet/standard/managed-code#intermediate-language--execution). Such classes won't be loadable by the CLR and would result in a runtime error. (Not that you would ever really want to have so many methods, but there have been cases with generated code.) + +### Real visibility + +There is a quirk with how F# generates assemblies that results in private members being written to [IL](https://learn.microsoft.com/dotnet/standard/managed-code#intermediate-language--execution) as internal. This allows inappropriate access to private members from non-F# projects that have access to an F# project via [`InternalsVisibleTo`](https://learn.microsoft.com/dotnet/api/system.runtime.compilerservices.internalsvisibletoattribute). + +Now, there is an opt-in fix for this behavior available via the `--realsig+` compiler flag. Try it in your solution to see if any of your projects depend on this behavior. You can add it to your `.fsproj` files like this: + +
<PropertyGroup>
+    <OtherFlags>--realsig+</OtherFlags>
+</PropertyGroup>
+
+ +## Performance improvements + +### Optimized equality checks + +Equality checks are now faster and allocate less memory. + +For example: + +
[<Struct>]
+type MyId =
+    val Id: int
+    new id = { Id = id }
+
+let ids = Array.init 1000 MyId
+let missingId = MyId -1
+
+// used to box 1000 times, doesn't box anymore
+let _ = ids |> Array.contains missingId
+ +You can read all the details here: [F# Developer Stories: How we’ve finally fixed a 9-year-old performance issue](https://devblogs.microsoft.com/dotnet/fsharp-developer-stories-how-weve-finally-fixed-a-9yearold-performance-issue/). + +### Field sharing for struct discriminated unions + +If fields in multiple cases of a struct discriminated union have the same name and type, they can share the same location, reducing the struct's memory footprint. (Previously, same field names weren't allowed, so there are no issues with binary compatibility.) + +### Integral range optimizations + +The compiler now generates optimized code for more instances of `start..finish` and `start..step..finish` expressions. Previously, these were only optimized when the type was `int`/`int32` and the step was a constant `1` or `-1`. Other integral types and different step values used an inefficient `IEnumerable`-based implementation. Now, all of these are optimized. + +This leads to anywhere from 1.25× up to 8× speed up in loops: + +
for … in start..finish do …
+ +List/array expressions: + +
[start..step..finish]
+ +and comprehensions: + +
[for n in start..finish -> f n]
+ +### Optimized `for x in xs -> …` in list and array comprehensions + +On a related note, comprehensions with `for x in xs -> …` have been optimized for lists and arrays, with notable improvements especially for arrays, with speedups up to 10× and ⅓ to ¼ allocation size. + +## Improvements in tooling + +### Live buffers in Visual Studio + +This previously opt-in feature has been thoroughly tested and is now enabled by default. The background compiler powering the IDE now works with live file buffers, meaning you don't have to save the files to disk to get the changes applied. Previously, this could cause some unexpected behavior. (Most notoriously when you tried to rename a symbol present in a file that had been edited but not saved.) + +### Analyzer and code fix for removing unnecessary parentheses + +Sometimes extra parentheses are used for clarity, but sometimes they are just noise. For the latter case, you now get a code fix in Visual Studio to remove them. + +For example: +
let f (x) = x // -> let f x = x
+let _ = (2 * 2) + 3 // -> let _ = 2 * 2 + 3
+ +### Custom Visualizer support for F# in Visual Studio + +The debugger visualizer in Visual Studio now works with F# projects. + +![debug visualizer](../media/whats-new/fsharp-9/vs-visualizer.gif) + +### Signature tooltips shown mid-pipeline + +Previously, no signature help was offered in a situation like the following, where a function in the middle of a pipeline already had a complex curried parameter (e.g., a lambda) applied to it. Now, the signature tooltip will show up for the next parameter (`state`): + +![tooltip](../media/whats-new/fsharp-9/help.png) \ No newline at end of file From abf85dd11c4dfb8cfd306cf8aa4ed897bd0f41fb Mon Sep 17 00:00:00 2001 From: Petr Pokorny Date: Wed, 30 Oct 2024 17:30:36 +0100 Subject: [PATCH 02/10] change blog-style code blocks to regular --- docs/fsharp/whats-new/fsharp-9.md | 124 ++++++++++++++++++------------ 1 file changed, 74 insertions(+), 50 deletions(-) diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md index 92bee4a98d331..bf739e52b4bd8 100644 --- a/docs/fsharp/whats-new/fsharp-9.md +++ b/docs/fsharp/whats-new/fsharp-9.md @@ -23,7 +23,8 @@ For more details, watch out for an [upcoming blog post about this feature](https Here are some examples: -
// Declared type at let-binding
+```fsharp
+// Declared type at let-binding
 let notAValue: string | null = null
 
 let isAValue: string | null = "hello world"
@@ -54,56 +55,62 @@ let findOrNull (index: int) (list: 'T list) : 'T | null when 'T : not struct =
     match List.tryItem index list with
     | Some item -> item
     | None -> null
-
+``` ### Discriminated union `.Is*` properties Discriminated unions now have auto-generated properties for each case, allowing you to check if a value is of a particular case. For example, for the following type: -
type Contact =
+```fsharp
+type Contact =
     | Email of address: string
     | Phone of countryCode: int * number: string
 
 type Person = { name: string; contact: Contact }
-
+``` Previously, you would have to write something like: -
let canSendEmailTo person =
+```fsharp
+let canSendEmailTo person =
     match person.contact with
     | Email _ -> true
     | _ -> false
-
+``` Now, you can instead write: -
let canSendEmailTo person =
+```fsharp
+let canSendEmailTo person =
     person.contact.IsEmail
-
+``` ### Partial active patterns can return `bool` instead of `unit option` Previously, partial active patterns would return `Some ()` to indicate a match and `None` otherwise. Now, they can also return `bool`. For example, the active pattern for the following: -
match key with
+```fsharp
+match key with
 | CaseInsensitive "foo" -> ...
 | CaseInsensitive "bar" -> ...
-
+``` Would previously be written as: -
let (|CaseInsensitive|_|) (pattern: string) (value: string) =
+```fsharp
+let (|CaseInsensitive|_|) (pattern: string) (value: string) =
     if String.Equals(value, pattern, StringComparison.OrdinalIgnoreCase) then
         Some ()
     else
         None
-
+``` Now, you can instead write: -
let (|CaseInsensitive|_|) (pattern: string) (value: string) =
+```fsharp
+let (|CaseInsensitive|_|) (pattern: string) (value: string) =
     String.Equals(value, pattern, StringComparison.OrdinalIgnoreCase)
-
+``` ### Prefer extension methods to intrinsic properties when arguments are provided @@ -111,7 +118,8 @@ To align with a pattern seen in some .NET libraries, where extension methods are Example: -
type Foo() =
+```fsharp
+type Foo() =
     member val X : int = 0 with get, set
 
 [<Extension>]
@@ -122,19 +130,20 @@ type FooExt =
 let f = Foo()
 
 f.X(1) // We can now call the extension method to set the property and chain further calls
-
+``` ### Support for empty-bodied computation expressions F# now supports empty [computation expressions](https://learn.microsoft.com/dotnet/fsharp/language-reference/computation-expressions). -
let xs = seq { } // Empty sequence
+
let xs = seq { } // Empty sequence```
 
-
let html =
+```fsharp
+let html =
     div {
         p { "Some content." }
         p { } // Empty paragraph
-    }
+ }``` Writing an empty computation expression will result in a call to the CE builder's `Zero` method. @@ -145,12 +154,14 @@ This is a more natural syntax compared to the previously available `builder { () Hash directives for the compiler previously only allowed string arguments passed in quotes. Now, they can take any type of argument. Previously, you had: -
#nowarn "0070"
-#time "on"
+```fsharp +#nowarn "0070" +#time "on"``` Now, you can write: -
#nowarn 0070
-#time on
+```fsharp +#nowarn 0070 +#time on``` This also ties into the next two changes. @@ -178,7 +189,7 @@ inputs |> List.map (fun x -> x.Length) Full name: Microsoft.FSharp.Collections.ListModule.map Assembly: FSharp.Core.dll -
+``` ### Allow #nowarn to support the FS prefix on error codes to disable warnings @@ -187,14 +198,15 @@ Previously, when you wanted to disable a warning and wrote `#nowarn "FS0057"`, y Now, you won't have to spend time figuring that out because the warning numbers are accepted even with the prefix. All of these will now work: -
#nowarn 57
+```fsharp
+#nowarn 57
 #nowarn 0057
 #nowarn FS0057
 
 #nowarn "57"
 #nowarn "0057"
 #nowarn "FS0057"
-
+``` It's probably a good idea to stick to the same style throughout your project. @@ -203,7 +215,8 @@ It's probably a good idea to stick to the same style throughout your project. F# will now emit a warning when you put the `[]` attribute somewhere it doesn't belong. While it has no effect on what the code does, it could confuse someone reading it. For example, these will now emit a warning: -
[<TailCall>]
+```fsharp
+[<TailCall>]
 let someNonRecFun x = x + x
 
 [<TailCall>]
@@ -211,7 +224,7 @@ let someX = 23
 
 [<TailCall>]
 let rec someRecLetBoundValue = nameof(someRecLetBoundValue)
-
+``` ### Enforce attribute targets @@ -219,10 +232,11 @@ The compiler now correctly enforces the `AttributeTargets` on let values, functi Previously, you could have written: -
[<Fact>]
+```fsharp
+[<Fact>]
 let ``this test always fails`` =
   Assert.True(false)
-
+``` Run the tests with `dotnet test` and they would pass. Since the test function is not actually a function, it is ignored by the test runner. @@ -246,9 +260,10 @@ There are four functions (each with three variants) available: The shuffle functions return a new collection of the same type and size, with each item in a randomly mixed position. The chance to end up in any position is weighted evenly on the length of the collection. -
let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
+```fsharp
+let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
 let round1Order = allPlayers |> List.randomShuffle // [ "Charlie"; "Dave"; "Alice"; "Bob" ]
-
+``` For arrays, there are also `InPlace` variants that shuffle the array in place. @@ -256,25 +271,28 @@ For arrays, there are also `InPlace` variants that shuffle the array in place. The choice functions return a single random element from the given collection. The random choice is weighted evenly on the size of the collection. -
let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
+```fsharp
+let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
 let randomPlayer = allPlayers |> List.randomChoice // "Charlie"
-
+``` #### Choices Choices select N elements from the input collection in random order, allowing elements to be selected more than once. -
let weather = [ "Raining"; "Sunny"; "Snowing"; "Windy" ]
+```fsharp
+let weather = [ "Raining"; "Sunny"; "Snowing"; "Windy" ]
 let forecastForNext3Days = weather |> List.randomChoices 3 // [ "Windy"; "Snowing"; "Windy" ]
-
+``` #### Sample Sample selects N elements from the input collection in random order, without allowing elements to be selected more than once. N cannot be greater than the collection length. -
let foods = [ "Apple"; "Banana"; "Carrot"; "Donut"; "Egg" ]
+```fsharp
+let foods = [ "Apple"; "Banana"; "Carrot"; "Donut"; "Egg" ]
 let today'sMenu = foods |> List.randomSample 3 // [ "Donut"; "Apple"; "Egg" ]
-
+``` For a full list of functions and their variants, see ([RFC #1135](https://github.com/fsharp/fslang-design/blob/main/RFCs/FS-1135-random-functions-for-collections.md)). @@ -282,10 +300,11 @@ For a full list of functions and their variants, see ([RFC #1135](https://github This makes it easier to create a custom operation for a computation expression builder. It will use the name of the method instead of having to explicitly name it (when in most cases the name matches the method name already). -
type FooBuilder() =
+```fsharp
+type FooBuilder() =
     [<CustomOperation>]  // Previously would have to be [<CustomOperation("bar")>]
     member _.bar(state) = state
-
+``` ### C# collection expression support for F# lists and sets @@ -294,12 +313,12 @@ When using F# lists and sets from C#, you can now use collection expressions to Instead of:
FSharpSet<int> mySet = SetModule.FromArray([1, 2, 3]);
-
+``` You can now write:
FSharpSet<int> mySet = [ 1, 2, 3 ];
-
+``` This makes it easier to use the F# immutable collections from C#, for example when you need their structural equality, which `System.Collections.Immutable` collections don't have. @@ -334,7 +353,7 @@ Now, there is an opt-in fix for this behavior available via the `--realsig+` com
<PropertyGroup>
     <OtherFlags>--realsig+</OtherFlags>
 </PropertyGroup>
-
+``` ## Performance improvements @@ -344,7 +363,8 @@ Equality checks are now faster and allocate less memory. For example: -
[<Struct>]
+```fsharp
+[<Struct>]
 type MyId =
     val Id: int
     new id = { Id = id }
@@ -353,7 +373,7 @@ let ids = Array.init 1000 MyId
 let missingId = MyId -1
 
 // used to box 1000 times, doesn't box anymore
-let _ = ids |> Array.contains missingId
+let _ = ids |> Array.contains missingId``` You can read all the details here: [F# Developer Stories: How we’ve finally fixed a 9-year-old performance issue](https://devblogs.microsoft.com/dotnet/fsharp-developer-stories-how-weve-finally-fixed-a-9yearold-performance-issue/). @@ -367,15 +387,18 @@ The compiler now generates optimized code for more instances of `start..finish` This leads to anywhere from 1.25× up to 8× speed up in loops: -
for … in start..finish do …
+```fsharp +for … in start..finish do …``` List/array expressions: -
[start..step..finish]
+```fsharp +[start..step..finish]``` and comprehensions: -
[for n in start..finish -> f n]
+```fsharp +[for n in start..finish -> f n]``` ### Optimized `for x in xs -> …` in list and array comprehensions @@ -392,8 +415,9 @@ This previously opt-in feature has been thoroughly tested and is now enabled by Sometimes extra parentheses are used for clarity, but sometimes they are just noise. For the latter case, you now get a code fix in Visual Studio to remove them. For example: -
let f (x) = x // -> let f x = x
-let _ = (2 * 2) + 3 // -> let _ = 2 * 2 + 3
+```fsharp +let f (x) = x // -> let f x = x +let _ = (2 * 2) + 3 // -> let _ = 2 * 2 + 3``` ### Custom Visualizer support for F# in Visual Studio From 0c1ede77624c0f3d1fe28b674ce8a47a66c8a183 Mon Sep 17 00:00:00 2001 From: Petr Pokorny Date: Thu, 31 Oct 2024 12:48:50 +0100 Subject: [PATCH 03/10] Apply suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> --- docs/fsharp/whats-new/fsharp-9.md | 82 +++++++++++++++++-------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md index bf739e52b4bd8..37753094917a7 100644 --- a/docs/fsharp/whats-new/fsharp-9.md +++ b/docs/fsharp/whats-new/fsharp-9.md @@ -69,7 +69,7 @@ type Contact = type Person = { name: string; contact: Contact } ``` -Previously, you would have to write something like: +Previously, you had to write something like: ```fsharp let canSendEmailTo person = @@ -87,7 +87,7 @@ let canSendEmailTo person = ### Partial active patterns can return `bool` instead of `unit option` -Previously, partial active patterns would return `Some ()` to indicate a match and `None` otherwise. Now, they can also return `bool`. +Previously, partial active patterns returned `Some ()` to indicate a match and `None` otherwise. Now, they can also return `bool`. For example, the active pattern for the following: ```fsharp @@ -96,7 +96,8 @@ match key with | CaseInsensitive "bar" -> ... ``` -Would previously be written as: +Was previously written as: + ```fsharp let (|CaseInsensitive|_|) (pattern: string) (value: string) = if String.Equals(value, pattern, StringComparison.OrdinalIgnoreCase) then @@ -114,7 +115,7 @@ let (|CaseInsensitive|_|) (pattern: string) (value: string) = ### Prefer extension methods to intrinsic properties when arguments are provided -To align with a pattern seen in some .NET libraries, where extension methods are defined with the same names as intrinsic properties of a type, F# will now resolve these extension methods instead of failing the type check. +To align with a pattern seen in some .NET libraries, where extension methods are defined with the same names as intrinsic properties of a type, F# now resolves these extension methods instead of failing the type check. Example: @@ -134,7 +135,7 @@ f.X(1) // We can now call the extension method to set the property and chain fur ### Support for empty-bodied computation expressions -F# now supports empty [computation expressions](https://learn.microsoft.com/dotnet/fsharp/language-reference/computation-expressions). +F# now supports empty [computation expressions](../language-reference/computation-expressions.md).
let xs = seq { } // Empty sequence```
 
@@ -208,13 +209,13 @@ All of these will now work:
 #nowarn "FS0057"
 ```
 
-It's probably a good idea to stick to the same style throughout your project.
+It's a good idea to use the same style throughout your project.
 
 ### Warning about TailCall attribute on non-rec functions or let-bound values
 
-F# will now emit a warning when you put the `[]` attribute somewhere it doesn't belong. While it has no effect on what the code does, it could confuse someone reading it.
+F# now emits a warning when you put the `[]` attribute somewhere it doesn't belong. While it has no effect on what the code does, it could confuse someone reading it.
 
-For example, these will now emit a warning:
+For example, these usages will now emit a warning:
 ```fsharp
 [<TailCall>]
 let someNonRecFun x = x + x
@@ -230,7 +231,7 @@ let rec someRecLetBoundValue = nameof(someRecLetBoundValue)
 
 The compiler now correctly enforces the `AttributeTargets` on let values, functions, union case declarations, implicit constructors, structs, and classes. This can prevent some hard-to-notice bugs, such as forgetting to add the unit argument to an Xunit test.
 
-Previously, you could have written:
+Previously, you could write:
 
 ```fsharp
 [<Fact>]
@@ -238,7 +239,7 @@ let ``this test always fails`` =
   Assert.True(false)
 ```
 
-Run the tests with `dotnet test` and they would pass. Since the test function is not actually a function, it is ignored by the test runner.
+When you ran the tests with `dotnet test`, they would pass. Since the test function is not actually a function, it was ignored by the test runner.
 
 Now, with correct attribute enforcement, you will get an `error FS0842: This attribute is not valid for use on this language element`.
 
@@ -248,17 +249,17 @@ Now, with correct attribute enforcement, you will get an `error FS0842: This att
 
 The `List`, `Array`, and `Seq` modules have new functions for random sampling and shuffling. This makes F# easier to use for common data science, machine learning, game development, and other scenarios where randomness is needed.
 
-All functions have variants using:
+All functions have the following variants:
 
-* An implicit thread-safe shared [`Random`](https://learn.microsoft.com/dotnet/api/system.random) instance
-* Taking a `Random` instance as an argument
-* Taking a custom `randomizer` function, which should return a float value greater than or equal to 0.0 and less than 1.0
+* One that uses an implicit, thread-safe, shared  instance
+* One that takes a `Random` instance as an argument
+* One that takes a custom `randomizer` function, which should return a float value greater than or equal to 0.0 and less than 1.0
 
-There are four functions (each with three variants) available:
+There are four functions (each with three variants) available: `Shuffle`, `Choice`, `Choices`, and `Sample`.
 
 #### Shuffle
 
-The shuffle functions return a new collection of the same type and size, with each item in a randomly mixed position. The chance to end up in any position is weighted evenly on the length of the collection.
+The `Shuffle` functions return a new collection of the same type and size, with each item in a randomly mixed position. The chance to end up in any position is weighted evenly on the length of the collection.
 
 ```fsharp
 let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
@@ -269,7 +270,7 @@ For arrays, there are also `InPlace` variants that shuffle the array in place.
 
 #### Choice
 
-The choice functions return a single random element from the given collection. The random choice is weighted evenly on the size of the collection.
+The `Choice` functions return a single random element from the given collection. The random choice is weighted evenly on the size of the collection.
 
 ```fsharp
 let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
@@ -278,7 +279,7 @@ let randomPlayer = allPlayers |> List.randomChoice // "Charlie"
 
 #### Choices
 
-Choices select N elements from the input collection in random order, allowing elements to be selected more than once.
+The `Choices` functions select N elements from the input collection in random order, allowing elements to be selected more than once.
 
 ```fsharp
 let weather = [ "Raining"; "Sunny"; "Snowing"; "Windy" ]
@@ -287,7 +288,7 @@ let forecastForNext3Days = weather |> List.randomChoices 3 // [ "Windy"; "Snowin
 
 #### Sample
 
-Sample selects N elements from the input collection in random order, without allowing elements to be selected more than once. N cannot be greater than the collection length.
+The `Sample` functions select N elements from the input collection in random order, without allowing elements to be selected more than once. N cannot be greater than the collection length.
 
 ```fsharp
 let foods = [ "Apple"; "Banana"; "Carrot"; "Donut"; "Egg" ]
@@ -298,11 +299,11 @@ For a full list of functions and their variants, see ([RFC #1135](https://github
 
 ### Parameterless constructor for `CustomOperationAttribute`
 
-This makes it easier to create a custom operation for a computation expression builder. It will use the name of the method instead of having to explicitly name it (when in most cases the name matches the method name already).
+This constructor makes it easier to create a custom operation for a computation expression builder. It uses the name of the method instead of having to explicitly name it (when in most cases the name matches the method name already).
 
 ```fsharp
 type FooBuilder() =
-    [<CustomOperation>]  // Previously would have to be [<CustomOperation("bar")>]
+    [<CustomOperation>]  // Previously had to be [<CustomOperation("bar")>]
     member _.bar(state) = state
 ```
 
@@ -312,21 +313,23 @@ When using F# lists and sets from C#, you can now use collection expressions to
 
 Instead of:
 
-
FSharpSet<int> mySet = SetModule.FromArray([1, 2, 3]);
+```csharp
+FSharpSet<int> mySet = SetModule.FromArray([1, 2, 3]);
 ```
 
 You can now write:
 
-
FSharpSet<int> mySet = [ 1, 2, 3 ];
+```csharp
+FSharpSet<int> mySet = [ 1, 2, 3 ];
 ```
 
-This makes it easier to use the F# immutable collections from C#, for example when you need their structural equality, which `System.Collections.Immutable` collections don't have.
+Collection expressions make it easier to use the F# immutable collections from C#. You might want to use the F# collections when you need their structural equality, which  collections don't have.
 
 ## Quality of life improvements
 
 ### Parser recovery
 
-There have been continuous improvements in parser recovery, meaning that tooling (e.g. syntax highlighting) still works with code when you're in the middle of editing it and it may not be syntactically correct at all times.
+There have been continuous improvements in parser recovery, meaning that tooling (for example, syntax highlighting) still works with code when you're in the middle of editing it and it might not be syntactically correct at all times.
 
 For example, the parser will now recover on unfinished `as` patterns, object expressions, enum case declarations, record declarations, complex primary constructor patterns, unresolved long identifiers, empty match clauses, missing union case fields, and missing union case field types.
 
@@ -335,22 +338,24 @@ For example, the parser will now recover on unfinished `as` patterns, object exp
 Diagnostics, or understanding what the compiler doesn't like about your code, are an important part of the user experience with F#. There are a number of new or improved diagnostic messages or more precise diagnostic locations in F# 9.
 
 These include:
+
 - Ambiguous override method in object expression
 - Abstract members when used in non-abstract classes
-- When a property has the same name as a discriminated union case
+- Property that has the same name as a discriminated union case
 - Active pattern argument count mismatch
 - Unions with duplicated fields
 - Using `use!` with `and!` in computation expressions
 
-There is also a new compile-time error for classes with over 65,520 methods in generated [IL](https://learn.microsoft.com/dotnet/standard/managed-code#intermediate-language--execution). Such classes won't be loadable by the CLR and would result in a runtime error. (Not that you would ever really want to have so many methods, but there have been cases with generated code.)
+There is also a new compile-time error for classes with over 65,520 methods in generated [IL](../../standard/managed-code.md#intermediate-language--execution). Such classes aren't loadable by the CLR and would result in a run-time error. (Not that you would ever really want to have so many methods, but there have been cases with generated code.)
 
 ### Real visibility
 
-There is a quirk with how F# generates assemblies that results in private members being written to [IL](https://learn.microsoft.com/dotnet/standard/managed-code#intermediate-language--execution) as internal. This allows inappropriate access to private members from non-F# projects that have access to an F# project via [`InternalsVisibleTo`](https://learn.microsoft.com/dotnet/api/system.runtime.compilerservices.internalsvisibletoattribute).
+There is a quirk with how F# generates assemblies that results in private members being written to [IL](../../standard/managed-code.md#intermediate-language--execution) as internal. This allows inappropriate access to private members from non-F# projects that have access to an F# project via [`InternalsVisibleTo`](xref:System.Runtime.CompilerServices.InternalsVisibleToAttribute).
 
 Now, there is an opt-in fix for this behavior available via the `--realsig+` compiler flag. Try it in your solution to see if any of your projects depend on this behavior. You can add it to your `.fsproj` files like this:
 
-
<PropertyGroup>
+```xml
+
     <OtherFlags>--realsig+</OtherFlags>
 </PropertyGroup>
 ```
@@ -373,7 +378,8 @@ let ids = Array.init 1000 MyId
 let missingId = MyId -1
 
 // used to box 1000 times, doesn't box anymore
-let _ = ids |> Array.contains missingId```
+let _ = ids |> Array.contains missingId
+```
 
 You can read all the details here: [F# Developer Stories: How we’ve finally fixed a 9-year-old performance issue](https://devblogs.microsoft.com/dotnet/fsharp-developer-stories-how-weve-finally-fixed-a-9yearold-performance-issue/).
 
@@ -388,17 +394,20 @@ The compiler now generates optimized code for more instances of `start..finish`
 This leads to anywhere from 1.25× up to 8× speed up in loops:
 
 ```fsharp
-for … in start..finish do …```
+for … in start..finish do …
+```
 
 List/array expressions:
 
 ```fsharp
-[start..step..finish]```
+[start..step..finish]
+```
 
 and comprehensions:
 
 ```fsharp
-[for n in start..finish -> f n]```
+[for n in start..finish -> f n]
+```
 
 ### Optimized `for x in xs -> …` in list and array comprehensions
 
@@ -417,9 +426,10 @@ Sometimes extra parentheses are used for clarity, but sometimes they are just no
 For example:
 ```fsharp
 let f (x) = x // -> let f x = x
-let _ = (2 * 2) + 3 // -> let _ = 2 * 2 + 3```
+let _ = (2 * 2) + 3 // -> let _ = 2 * 2 + 3
+```
 
-### Custom Visualizer support for F# in Visual Studio
+### Custom visualizer support for F# in Visual Studio
 
 The debugger visualizer in Visual Studio now works with F# projects.
 
@@ -427,6 +437,6 @@ The debugger visualizer in Visual Studio now works with F# projects.
 
 ### Signature tooltips shown mid-pipeline
 
-Previously, no signature help was offered in a situation like the following, where a function in the middle of a pipeline already had a complex curried parameter (e.g., a lambda) applied to it. Now, the signature tooltip will show up for the next parameter (`state`):
+Previously, no signature help was offered in a situation like the following, where a function in the middle of a pipeline already had a complex curried parameter (for example, a lambda) applied to it. Now, the signature tooltip shows up for the next parameter (`state`):
 
 ![tooltip](../media/whats-new/fsharp-9/help.png)
\ No newline at end of file

From d32919368cb995b9800ffbf40f02902fb6da0ec1 Mon Sep 17 00:00:00 2001
From: Petr Pokorny 
Date: Thu, 31 Oct 2024 12:55:17 +0100
Subject: [PATCH 04/10] Fixed formatting, made language changes H2

---
 docs/fsharp/whats-new/fsharp-9.md | 64 ++++++++++++++++---------------
 1 file changed, 33 insertions(+), 31 deletions(-)

diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md
index 37753094917a7..fe7d736b46ae1 100644
--- a/docs/fsharp/whats-new/fsharp-9.md
+++ b/docs/fsharp/whats-new/fsharp-9.md
@@ -11,11 +11,7 @@ F# 9 introduces a range of enhancements that make your programs safer, more resi
 
 You can download the latest .NET SDK from the [.NET downloads page](https://dotnet.microsoft.com/download).
 
-## F# language changes
-
-This section describes updates to the language itself, changes you will notice when writing or reading F# code.
-
-### Nullable reference types
+## Nullable reference types
 
 Although F# is designed to avoid `null`, it can creep in when interfacing with .NET libraries written in C#. F# now provides a type-safe way to deal with reference types that can have `null` as a valid value.
 
@@ -57,7 +53,7 @@ let findOrNull (index: int) (list: 'T list) : 'T | null when 'T : not struct =
     | None -> null
 ```
 
-### Discriminated union `.Is*` properties
+## Discriminated union `.Is*` properties
 
 Discriminated unions now have auto-generated properties for each case, allowing you to check if a value is of a particular case. For example, for the following type:
 
@@ -85,7 +81,7 @@ let canSendEmailTo person =
     person.contact.IsEmail
 ```
 
-### Partial active patterns can return `bool` instead of `unit option`
+## Partial active patterns can return `bool` instead of `unit option`
 
 Previously, partial active patterns returned `Some ()` to indicate a match and `None` otherwise. Now, they can also return `bool`.
 
@@ -113,7 +109,7 @@ let (|CaseInsensitive|_|) (pattern: string) (value: string) =
     String.Equals(value, pattern, StringComparison.OrdinalIgnoreCase)
 ```
 
-### Prefer extension methods to intrinsic properties when arguments are provided
+## Prefer extension methods to intrinsic properties when arguments are provided
 
 To align with a pattern seen in some .NET libraries, where extension methods are defined with the same names as intrinsic properties of a type, F# now resolves these extension methods instead of failing the type check.
 
@@ -123,9 +119,9 @@ Example:
 type Foo() =
     member val X : int = 0 with get, set
 
-[<Extension>]
+[<Extension>]
 type FooExt =
-    [<Extension>]
+    [<Extension>]
     static member X (f: Foo, i: int) = f.X <- i; f
 
 let f = Foo()
@@ -133,44 +129,50 @@ let f = Foo()
 f.X(1) // We can now call the extension method to set the property and chain further calls
 ```
 
-### Support for empty-bodied computation expressions
+## Support for empty-bodied computation expressions
 
 F# now supports empty [computation expressions](../language-reference/computation-expressions.md).
 
-
let xs = seq { } // Empty sequence```
+```fsharp
+let xs = seq { } // Empty sequence
+```
 
 ```fsharp
 let html =
     div {
         p { "Some content." }
         p { } // Empty paragraph
-    }```
+    }
+```
 
 Writing an empty computation expression will result in a call to the CE builder's `Zero` method.
 
 This is a more natural syntax compared to the previously available `builder { () }`.
 
-### Hash directives are allowed to take non-string arguments
+## Hash directives are allowed to take non-string arguments
 
 Hash directives for the compiler previously only allowed string arguments passed in quotes. Now, they can take any type of argument.
 
 Previously, you had:
 ```fsharp
 #nowarn "0070"
-#time "on"```
+#time "on"
+```
 
 Now, you can write:
 ```fsharp
 #nowarn 0070
-#time on```
+#time on
+```
 
 This also ties into the next two changes.
 
-### Extended #help directive in fsi to show documentation in the REPL
+## Extended #help directive in fsi to show documentation in the REPL
 
 The `#help` directive in F# Interactive now shows documentation for a given object or function, which you can now pass without quotes.
 
-
> #help List.map;;
+```
+> #help List.map;;
 
 Description:
 Builds a new collection whose elements are the results of applying the given function
@@ -192,7 +194,7 @@ Full name: Microsoft.FSharp.Collections.ListModule.map
 Assembly: FSharp.Core.dll
 ```
 
-### Allow #nowarn to support the FS prefix on error codes to disable warnings
+## Allow #nowarn to support the FS prefix on error codes to disable warnings
 
 Previously, when you wanted to disable a warning and wrote `#nowarn "FS0057"`, you would get an `Invalid warning number 'FS0057'`. Even though the warning number is correct, it just wasn't supposed to have the `FS` prefix.
 
@@ -211,30 +213,30 @@ All of these will now work:
 
 It's a good idea to use the same style throughout your project.
 
-### Warning about TailCall attribute on non-rec functions or let-bound values
+## Warning about TailCall attribute on non-rec functions or let-bound values
 
 F# now emits a warning when you put the `[]` attribute somewhere it doesn't belong. While it has no effect on what the code does, it could confuse someone reading it.
 
 For example, these usages will now emit a warning:
 ```fsharp
-[<TailCall>]
+[]
 let someNonRecFun x = x + x
 
-[<TailCall>]
+[]
 let someX = 23
 
-[<TailCall>]
+[]
 let rec someRecLetBoundValue = nameof(someRecLetBoundValue)
 ```
 
-### Enforce attribute targets
+## Enforce attribute targets
 
 The compiler now correctly enforces the `AttributeTargets` on let values, functions, union case declarations, implicit constructors, structs, and classes. This can prevent some hard-to-notice bugs, such as forgetting to add the unit argument to an Xunit test.
 
 Previously, you could write:
 
 ```fsharp
-[<Fact>]
+[]
 let ``this test always fails`` =
   Assert.True(false)
 ```
@@ -303,7 +305,7 @@ This constructor makes it easier to create a custom operation for a computation
 
 ```fsharp
 type FooBuilder() =
-    [<CustomOperation>]  // Previously had to be [<CustomOperation("bar")>]
+    []  // Previously had to be []
     member _.bar(state) = state
 ```
 
@@ -314,13 +316,13 @@ When using F# lists and sets from C#, you can now use collection expressions to
 Instead of:
 
 ```csharp
-FSharpSet<int> mySet = SetModule.FromArray([1, 2, 3]);
+FSharpSet mySet = SetModule.FromArray([1, 2, 3]);
 ```
 
 You can now write:
 
 ```csharp
-FSharpSet<int> mySet = [ 1, 2, 3 ];
+FSharpSet mySet = [ 1, 2, 3 ];
 ```
 
 Collection expressions make it easier to use the F# immutable collections from C#. You might want to use the F# collections when you need their structural equality, which  collections don't have.
@@ -356,8 +358,8 @@ Now, there is an opt-in fix for this behavior available via the `--realsig+` com
 
 ```xml
 
-    <OtherFlags>--realsig+</OtherFlags>
-</PropertyGroup>
+    --realsig+
+
 ```
 
 ## Performance improvements
@@ -369,7 +371,7 @@ Equality checks are now faster and allocate less memory.
 For example:
 
 ```fsharp
-[<Struct>]
+[]
 type MyId =
     val Id: int
     new id = { Id = id }

From 4c5db399cfd226cf413635ff42a855a4e26e1848 Mon Sep 17 00:00:00 2001
From: Petr Pokorny 
Date: Thu, 31 Oct 2024 17:03:52 +0100
Subject: [PATCH 05/10] update

---
 docs/core/whats-new/dotnet-9/overview.md | 20 ++++++++++
 docs/fsharp/whats-new/fsharp-9.md        | 47 ++++++++++++++++++++++--
 2 files changed, 64 insertions(+), 3 deletions(-)

diff --git a/docs/core/whats-new/dotnet-9/overview.md b/docs/core/whats-new/dotnet-9/overview.md
index c59f850a4a36b..cde4456b7ed3d 100644
--- a/docs/core/whats-new/dotnet-9/overview.md
+++ b/docs/core/whats-new/dotnet-9/overview.md
@@ -90,6 +90,26 @@ C# 13 ships with the .NET 9 SDK and includes the following new features:
 
 For more information, see [What's new in C# 13](../../../csharp/whats-new/csharp-13.md).
 
+## F# 9
+
+F# 9 ships with the .NET 9 SDK and includes the following new features:
+
+- Nullable reference types
+- Discriminated union .Is* properties
+- Partial active patterns can return bool instead of unit option
+- Prefer extension methods to intrinsic properties when arguments are provided
+- Support for empty-bodied computation expressions
+- Hash directives are allowed to take non-string arguments
+- Extended #help directive in fsi to show documentation in the REPL
+- Allow #nowarn to support the FS prefix on error codes to disable warnings
+- Warning about TailCall attribute on non-rec functions or let-bound values
+- Enforce attribute targets
+- Random functions for collections
+- C# collection expression support for F# lists and sets
+- Various quality of life, performance and tooling improvements
+
+For more information, see [What's new in F# 9](../../../fsharp/whats-new/fsharp-9.md).
+
 ## Windows Presentation Foundation
 
 Windows Presentation Foundation (WPF) includes support for Windows 11 theming and hyphen-based ligatures. For more information, see [WPF in .NET 9 Preview 4 - Release Notes](https://github.com/dotnet/core/blob/main/release-notes/9.0/preview/preview4/wpf.md).
diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md
index fe7d736b46ae1..5cbfd48664eaf 100644
--- a/docs/fsharp/whats-new/fsharp-9.md
+++ b/docs/fsharp/whats-new/fsharp-9.md
@@ -86,6 +86,7 @@ let canSendEmailTo person =
 Previously, partial active patterns returned `Some ()` to indicate a match and `None` otherwise. Now, they can also return `bool`.
 
 For example, the active pattern for the following:
+
 ```fsharp
 match key with
 | CaseInsensitive "foo" -> ...
@@ -154,12 +155,14 @@ This is a more natural syntax compared to the previously available `builder { ()
 Hash directives for the compiler previously only allowed string arguments passed in quotes. Now, they can take any type of argument.
 
 Previously, you had:
+
 ```fsharp
 #nowarn "0070"
 #time "on"
 ```
 
 Now, you can write:
+
 ```fsharp
 #nowarn 0070
 #time on
@@ -201,6 +204,7 @@ Previously, when you wanted to disable a warning and wrote `#nowarn "FS0057"`, y
 Now, you won't have to spend time figuring that out because the warning numbers are accepted even with the prefix.
 
 All of these will now work:
+
 ```fsharp
 #nowarn 57
 #nowarn 0057
@@ -218,6 +222,7 @@ It's a good idea to use the same style throughout your project.
 F# now emits a warning when you put the `[]` attribute somewhere it doesn't belong. While it has no effect on what the code does, it could confuse someone reading it.
 
 For example, these usages will now emit a warning:
+
 ```fsharp
 []
 let someNonRecFun x = x + x
@@ -268,7 +273,9 @@ let allPlayers = [ "Alice"; "Bob"; "Charlie"; "Dave" ]
 let round1Order = allPlayers |> List.randomShuffle // [ "Charlie"; "Dave"; "Alice"; "Bob" ]
 ```
 
-For arrays, there are also `InPlace` variants that shuffle the array in place.
+For arrays, there are also `InPlace` variants that shuffle the items in the existing array instead of creating a new one.
+
+```fsharp
 
 #### Choice
 
@@ -358,7 +365,7 @@ Now, there is an opt-in fix for this behavior available via the `--realsig+` com
 
 ```xml
 
-    --realsig+
+    true
 
 ```
 
@@ -387,7 +394,40 @@ You can read all the details here: [F# Developer Stories: How we’ve finally fi
 
 ### Field sharing for struct discriminated unions
 
-If fields in multiple cases of a struct discriminated union have the same name and type, they can share the same location, reducing the struct's memory footprint. (Previously, same field names weren't allowed, so there are no issues with binary compatibility.)
+If fields in multiple cases of a struct discriminated union have the same name and type, they can share the same memory location, reducing the struct's memory footprint. (Previously, same field names weren't allowed, so there are no issues with binary compatibility.)
+
+For example:
+
+```fsharp
+[]
+type MyStructDU =
+    | Length of int64
+    | Time of int64
+    | Temperature of int64
+    | Pressure of int64
+    | Abbrev of TypeAbbreviationForInt64
+    | JustPlain of int64
+    | MyUnit of int64
+
+sizeof // 16 bytes
+```
+
+Comparing to previous verion (where you had to use unique field names):
+
+```fsharp
+[]
+type MyStructDU =
+    | Length of length: int64
+    | Time of time: int64
+    | Temperature of temperature: int64
+    | Pressure of pressure: int64
+    | Abbrev of abbrev: TypeAbbreviationForInt64
+    | JustPlain of plain: int64
+    | MyUnit of myUnit: int64
+
+sizeof // 60 bytes
+```
+
 
 ### Integral range optimizations
 
@@ -426,6 +466,7 @@ This previously opt-in feature has been thoroughly tested and is now enabled by
 Sometimes extra parentheses are used for clarity, but sometimes they are just noise. For the latter case, you now get a code fix in Visual Studio to remove them.
 
 For example:
+
 ```fsharp
 let f (x) = x // -> let f x = x
 let _ = (2 * 2) + 3 // -> let _ = 2 * 2 + 3

From 53f7ef1f89d541940de07244a9eef04c7239bfb7 Mon Sep 17 00:00:00 2001
From: Petr Pokorny 
Date: Thu, 31 Oct 2024 17:19:45 +0100
Subject: [PATCH 06/10] update

---
 docs/fsharp/whats-new/fsharp-9.md | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md
index 5cbfd48664eaf..c33817f00e90b 100644
--- a/docs/fsharp/whats-new/fsharp-9.md
+++ b/docs/fsharp/whats-new/fsharp-9.md
@@ -197,6 +197,8 @@ Full name: Microsoft.FSharp.Collections.ListModule.map
 Assembly: FSharp.Core.dll
 ```
 
+See [Enhancing #help in F# Interactive blog post](https://devblogs.microsoft.com/dotnet/enhancing-help-in-fsi/) for more details.
+
 ## Allow #nowarn to support the FS prefix on error codes to disable warnings
 
 Previously, when you wanted to disable a warning and wrote `#nowarn "FS0057"`, you would get an `Invalid warning number 'FS0057'`. Even though the warning number is correct, it just wasn't supposed to have the `FS` prefix.
@@ -390,6 +392,34 @@ let missingId = MyId -1
 let _ = ids |> Array.contains missingId
 ```
 
+#### Benchmark results for affected array functions, applied to a 2-member struct
+
+Before:
+
+| Method                       | Mean        | Error      | Gen0   | Allocated |
+|----------------------------- |------------:|-----------:|-------:|----------:|
+| ArrayContainsExisting        |    15.48 ns |   0.398 ns | 0.0008 |      48 B |
+| ArrayContainsNonexisting     | 5,190.95 ns | 103.533 ns | 0.3891 |   24000 B |
+| ArrayExistsExisting          |    17.97 ns |   0.389 ns | 0.0012 |      72 B |
+| ArrayExistsNonexisting       | 5,316.64 ns | 103.776 ns | 0.3891 |   24024 B |
+| ArrayTryFindExisting         |    24.80 ns |   0.554 ns | 0.0015 |      96 B |
+| ArrayTryFindNonexisting      | 5,139.58 ns | 260.949 ns | 0.3891 |   24024 B |
+| ArrayTryFindIndexExisting    |    15.92 ns |   0.526 ns | 0.0015 |      96 B |
+| ArrayTryFindIndexNonexisting | 4,349.13 ns | 100.750 ns | 0.3891 |   24024 B |
+
+After:
+
+| Method                       | Mean         | Error      | Gen0   | Allocated |
+|----------------------------- |-------------:|-----------:|-------:|----------:|
+| ArrayContainsExisting        |     4.865 ns |  0.3452 ns |      - |         - |
+| ArrayContainsNonexisting     |   766.005 ns | 15.2003 ns |      - |         - |
+| ArrayExistsExisting          |     8.025 ns |  0.1966 ns | 0.0004 |      24 B |
+| ArrayExistsNonexisting       |   834.811 ns | 16.2784 ns |      - |      24 B |
+| ArrayTryFindExisting         |    16.401 ns |  0.3932 ns | 0.0008 |      48 B |
+| ArrayTryFindNonexisting      | 1,140.515 ns | 22.7372 ns |      - |      24 B |
+| ArrayTryFindIndexExisting    |    14.864 ns |  0.3648 ns | 0.0008 |      48 B |
+| ArrayTryFindIndexNonexisting |   990.028 ns | 19.7157 ns |      - |      24 B |
+
 You can read all the details here: [F# Developer Stories: How we’ve finally fixed a 9-year-old performance issue](https://devblogs.microsoft.com/dotnet/fsharp-developer-stories-how-weve-finally-fixed-a-9yearold-performance-issue/).
 
 ### Field sharing for struct discriminated unions

From dee1058d98f2b89cfa0e445aa060c3f89c53403e Mon Sep 17 00:00:00 2001
From: Petr Pokorny 
Date: Thu, 31 Oct 2024 17:21:37 +0100
Subject: [PATCH 07/10] update

---
 docs/core/whats-new/dotnet-9/overview.md | 2 +-
 docs/fsharp/whats-new/fsharp-9.md        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/core/whats-new/dotnet-9/overview.md b/docs/core/whats-new/dotnet-9/overview.md
index cde4456b7ed3d..d02849284e95d 100644
--- a/docs/core/whats-new/dotnet-9/overview.md
+++ b/docs/core/whats-new/dotnet-9/overview.md
@@ -98,7 +98,7 @@ F# 9 ships with the .NET 9 SDK and includes the following new features:
 - Discriminated union .Is* properties
 - Partial active patterns can return bool instead of unit option
 - Prefer extension methods to intrinsic properties when arguments are provided
-- Support for empty-bodied computation expressions
+- Empty-bodied computation expressions
 - Hash directives are allowed to take non-string arguments
 - Extended #help directive in fsi to show documentation in the REPL
 - Allow #nowarn to support the FS prefix on error codes to disable warnings
diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md
index c33817f00e90b..cc8319c02736a 100644
--- a/docs/fsharp/whats-new/fsharp-9.md
+++ b/docs/fsharp/whats-new/fsharp-9.md
@@ -130,7 +130,7 @@ let f = Foo()
 f.X(1) // We can now call the extension method to set the property and chain further calls
 ```
 
-## Support for empty-bodied computation expressions
+## Empty-bodied computation expressions
 
 F# now supports empty [computation expressions](../language-reference/computation-expressions.md).
 

From 9ecbe97dc0efbf8745d9613f9302f3db11f05c27 Mon Sep 17 00:00:00 2001
From: Petr Pokorny 
Date: Fri, 1 Nov 2024 10:05:39 +0100
Subject: [PATCH 08/10] markdown lint

---
 docs/fsharp/whats-new/fsharp-9.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md
index cc8319c02736a..d71703c403f0b 100644
--- a/docs/fsharp/whats-new/fsharp-9.md
+++ b/docs/fsharp/whats-new/fsharp-9.md
@@ -458,7 +458,6 @@ type MyStructDU =
 sizeof // 60 bytes
 ```
 
-
 ### Integral range optimizations
 
 The compiler now generates optimized code for more instances of `start..finish` and `start..step..finish` expressions. Previously, these were only optimized when the type was `int`/`int32` and the step was a constant `1` or `-1`. Other integral types and different step values used an inefficient `IEnumerable`-based implementation. Now, all of these are optimized.
@@ -512,4 +511,4 @@ The debugger visualizer in Visual Studio now works with F# projects.
 
 Previously, no signature help was offered in a situation like the following, where a function in the middle of a pipeline already had a complex curried parameter (for example, a lambda) applied to it. Now, the signature tooltip shows up for the next parameter (`state`):
 
-![tooltip](../media/whats-new/fsharp-9/help.png)
\ No newline at end of file
+![tooltip](../media/whats-new/fsharp-9/help.png)

From 3a6501465accaba23f739c7c4ad1807e5950cb66 Mon Sep 17 00:00:00 2001
From: Petr Pokorny 
Date: Mon, 4 Nov 2024 10:49:56 +0100
Subject: [PATCH 09/10] Apply suggestions from code review

Co-authored-by: Bill Wagner 
---
 docs/core/whats-new/dotnet-9/overview.md |  6 +++---
 docs/fsharp/whats-new/fsharp-9.md        | 11 ++++++-----
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/docs/core/whats-new/dotnet-9/overview.md b/docs/core/whats-new/dotnet-9/overview.md
index d02849284e95d..9625a15d1deb9 100644
--- a/docs/core/whats-new/dotnet-9/overview.md
+++ b/docs/core/whats-new/dotnet-9/overview.md
@@ -100,13 +100,13 @@ F# 9 ships with the .NET 9 SDK and includes the following new features:
 - Prefer extension methods to intrinsic properties when arguments are provided
 - Empty-bodied computation expressions
 - Hash directives are allowed to take non-string arguments
-- Extended #help directive in fsi to show documentation in the REPL
+- Extended #help directive in fsi to show documentation in the read-eval-print loop (REPL)
 - Allow #nowarn to support the FS prefix on error codes to disable warnings
-- Warning about TailCall attribute on non-rec functions or let-bound values
+- Warning about TailCall attribute on non-recursive functions or let-bound values
 - Enforce attribute targets
 - Random functions for collections
 - C# collection expression support for F# lists and sets
-- Various quality of life, performance and tooling improvements
+- Various developer productivity, performance and tooling improvements
 
 For more information, see [What's new in F# 9](../../../fsharp/whats-new/fsharp-9.md).
 
diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md
index d71703c403f0b..95363e0c5aeed 100644
--- a/docs/fsharp/whats-new/fsharp-9.md
+++ b/docs/fsharp/whats-new/fsharp-9.md
@@ -7,7 +7,7 @@ ms.topic: whats-new
 
 # What's new in F# 9
 
-F# 9 introduces a range of enhancements that make your programs safer, more resilient, and performant. This article highlights the major changes in F# 9, developed in the [F#'s open source code repository](https://github.com/dotnet/fsharp).
+F# 9 introduces a range of enhancements that make your programs safer, more resilient, and performant. This article highlights the major changes in F# 9, developed in the [F# open source code repository](https://github.com/dotnet/fsharp).
 
 You can download the latest .NET SDK from the [.NET downloads page](https://dotnet.microsoft.com/download).
 
@@ -219,7 +219,7 @@ All of these will now work:
 
 It's a good idea to use the same style throughout your project.
 
-## Warning about TailCall attribute on non-rec functions or let-bound values
+## Warning about TailCall attribute on non-recursive functions or let-bound values
 
 F# now emits a warning when you put the `[]` attribute somewhere it doesn't belong. While it has no effect on what the code does, it could confuse someone reading it.
 
@@ -336,7 +336,7 @@ FSharpSet mySet = [ 1, 2, 3 ];
 
 Collection expressions make it easier to use the F# immutable collections from C#. You might want to use the F# collections when you need their structural equality, which  collections don't have.
 
-## Quality of life improvements
+## Developer productivity improvements
 
 ### Parser recovery
 
@@ -357,7 +357,7 @@ These include:
 - Unions with duplicated fields
 - Using `use!` with `and!` in computation expressions
 
-There is also a new compile-time error for classes with over 65,520 methods in generated [IL](../../standard/managed-code.md#intermediate-language--execution). Such classes aren't loadable by the CLR and would result in a run-time error. (Not that you would ever really want to have so many methods, but there have been cases with generated code.)
+There is also a new compile-time error for classes with over 65,520 methods in generated [IL](../../standard/managed-code.md#intermediate-language--execution). Such classes aren't loadable by the CLR and result in a run-time error. (You won't author that many methods, but there have been cases with generated code.)
 
 ### Real visibility
 
@@ -509,6 +509,7 @@ The debugger visualizer in Visual Studio now works with F# projects.
 
 ### Signature tooltips shown mid-pipeline
 
-Previously, no signature help was offered in a situation like the following, where a function in the middle of a pipeline already had a complex curried parameter (for example, a lambda) applied to it. Now, the signature tooltip shows up for the next parameter (`state`):
+Previously, signature help wasn't offered in a situation like the following, where a function in the middle of a pipeline already had a complex curried parameter (for example, a lambda) applied to it. Now, the signature tooltip shows up for the next parameter (`state`):
 
 ![tooltip](../media/whats-new/fsharp-9/help.png)
+

From e26076ef17b4771a0e81a1bb835ad70c8b6a4f26 Mon Sep 17 00:00:00 2001
From: Petr Pokorny 
Date: Mon, 4 Nov 2024 10:54:20 +0100
Subject: [PATCH 10/10] suggestions from review

---
 docs/fsharp/whats-new/fsharp-9.md | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/docs/fsharp/whats-new/fsharp-9.md b/docs/fsharp/whats-new/fsharp-9.md
index 95363e0c5aeed..9d558ae010205 100644
--- a/docs/fsharp/whats-new/fsharp-9.md
+++ b/docs/fsharp/whats-new/fsharp-9.md
@@ -9,7 +9,7 @@ ms.topic: whats-new
 
 F# 9 introduces a range of enhancements that make your programs safer, more resilient, and performant. This article highlights the major changes in F# 9, developed in the [F# open source code repository](https://github.com/dotnet/fsharp).
 
-You can download the latest .NET SDK from the [.NET downloads page](https://dotnet.microsoft.com/download).
+F# 9 is available in .NET 9. You can download the latest .NET SDK from the [.NET downloads page](https://dotnet.microsoft.com/download).
 
 ## Nullable reference types
 
@@ -146,7 +146,7 @@ let html =
     }
 ```
 
-Writing an empty computation expression will result in a call to the CE builder's `Zero` method.
+Writing an empty computation expression will result in a call to the computation expression builder's `Zero` method.
 
 This is a more natural syntax compared to the previously available `builder { () }`.
 
@@ -252,7 +252,7 @@ When you ran the tests with `dotnet test`, they would pass. Since the test funct
 
 Now, with correct attribute enforcement, you will get an `error FS0842: This attribute is not valid for use on this language element`.
 
-## Updates to the standard library (FSharp.Core)
+## Updates to the [standard library (FSharp.Core)](https://fsharp.github.io/fsharp-core-docs/)
 
 ### Random functions for collections
 
@@ -512,4 +512,3 @@ The debugger visualizer in Visual Studio now works with F# projects.
 Previously, signature help wasn't offered in a situation like the following, where a function in the middle of a pipeline already had a complex curried parameter (for example, a lambda) applied to it. Now, the signature tooltip shows up for the next parameter (`state`):
 
 ![tooltip](../media/whats-new/fsharp-9/help.png)
-