diff --git a/FsCheck Release Notes.md b/FsCheck Release Notes.md index d6d78909..7f8df52d 100644 --- a/FsCheck Release Notes.md +++ b/FsCheck Release Notes.md @@ -1,22 +1,20 @@ -### 3.0.0-beta1 - To be released +### 3.0.0-beta1 - 5 September 2021 -* Backwards incompatible: Refactor and split of the `Gen` API into `FsCheck.FSharp` and `FsCheck.Fluent`. This is a first step in splitting the entire API into a functional (for F# consumers) and fluent (for C# and VB.NET consumer) interface. This should be clearer for both kinds of consumers. - -* Backwards incompatible: Refactor and split of the `Arbitrary` API into `FsCheck.FSharp` and `FsCheck.Fluent`. +* *Backwards incompatible*: Refactor and split of the `Gen` and `Arbitrary` APIs into `FsCheck.FSharp` and `FsCheck.Fluent`. This is a first step in splitting the entire API into a functional (for F# consumers) and fluent (for C# and VB.NET consumers) interface. This should be clearer for both kinds of consumers. * By and large, if you are an F# user, now `open FsCheck.FSharp` in addition to `open FsCheck`. If you are a C# or VB.NET user, add `using FsCheck.Fluent`. -* Backwards incompatible: redesigned API for per-type Arbitrary instance discovery and lookup. There is no longer a global, mutable map of type to Arbitrary instance, instead there are immutable `IArbMap` instances that can be configured and changed via `Config`. +* *Backwards incompatible*: redesigned API for per-type Arbitrary instance discovery and lookup. There is no longer a single global, mutable map of type to Arbitrary instances, instead there are any number of immutable `IArbMap`s that can be configured at your leisure, and set via `Config.WithArbitrary` on the test. -* Detailed changes to `FsCheck.FSharp.Gen`: Added `RequireQualifiedAccess`. Added `apply` and `bind`. Renamed `collect` and `sequence` to `collectToList/Array/Seq` for clarity. Removed `unzip` and `unzip3` - their implementation is problematic, and it's hard to see a use case for them. Removed `subListOfToIlist`, `subListOfArr` - these returned `IList<'T>` types. Untupled rows,cols in `array2DOfDim`. +* Detailed changes to `FsCheck.FSharp.Gen`: Added `RequireQualifiedAccess`. Added `apply` and `bind`. Renamed `collect` and `sequence` to `collect/sequenceToList/Array/Seq` for clarity. Removed `unzip` and `unzip3` - their implementation is problematic, and it's hard to see a use case for them. Removed `subListOfToIlist`, `subListOfArr` - these returned `IList<'T>` types. Untupled `rows,cols` arguments in `array2DOfDim`. * Detailed changes to `FsCheck.Fluent.Gen`: Split into non-extension methods on `Gen` and extension methods on `Gen` type in `GenExtensions`. Removed `Gen.Apply` - not useful without partial application. `Two`, `Three`, `Four` and `Zip` now output ValueTuples, which is idiomatic in modern C#, and are only visible as extension methods on `Gen`. Removed the overloads of `Zip` with arity 3. Changed the return type of methods that returned `IList` previously to `List`. Split the `Sample` method with optional arguments in three overloads, this is better for backwards compatibilty going forward. -* Detaied changes to `FsCheck.FSharp.Arb`: Removed `fromGenShrinkFunc`. Removed `register`, `registerByType`, `from`, `generate` and `shrink` - these are replaced by functions on `ArbMap`, resp. `mergeWith`, `mergeWithType`, `arbitrary` and `generate`. Made `Arb.Default` internal. Default types should now be looked up using `ArbMap`, i.e. `ArbMap.defaults |> ArbMap.arbitrary>`. +* Detailed changes to `FsCheck.FSharp.Arb`: Removed `fromGenShrinkFunc`. Removed `register`, `registerByType`, `from`, `generate` and `shrink` - these are replaced by functions on `ArbMap`, resp. `mergeWith`, `mergeWithType`, `arbitrary` and `generate`. Made `Arb.Default` internal. Default types should now be looked up using `ArbMap`, e.g. `ArbMap.defaults |> ArbMap.arbitrary>`. -* Detailed changes to `FsCheck.Fluent.Arb`: Removed extension method `ToArbitrary` that took an F# function as argument for the shrinker. Renamad `Arb.From` methods to `Arbitrary.From` - C# does not tolerate ambiguity between using two types of the same name in the same namespace. Removed `Register`, `RegisterByType`, `From`, `Generate` and `Shrink` - these are replaced by methods on `ArbMap`, resp. `Merge<'T>`, `Merge`, `ArbFor` and `GeneratorFor`. Made `Arb.Default` internal. Default Arbitrary types should now be looked up using `ArbMap`, i.e. `ArbMap.Default.ArbFor()`. +* Detailed changes to `FsCheck.Fluent.Arb`: Removed extension method `ToArbitrary` that took an F# function as argument for the shrinker. Renamad `Arb.From` methods to `Arbitrary.From` - C# does not tolerate ambiguity between using two types of the same name in the same namespace. Removed `Register`, `RegisterByType`, `From`, `Generate` and `Shrink` - these are replaced by methods on `ArbMap`, resp. `Merge<'T>`, `Merge`, `ArbFor` and `GeneratorFor`. Made `Arb.Default` internal. Default Arbitrary types should now be looked up using `ArbMap`, e.g. `ArbMap.Default.ArbFor()`. -* First pass at improving xml docs for Gen API. +* First pass at improving XML docs for Gen API. * Fixed bug in `try..with` computation expression builder.