Skip to content

Commit

Permalink
Update release notes.
Browse files Browse the repository at this point in the history
  • Loading branch information
kurtschelfthout committed Sep 5, 2021
1 parent d6f3442 commit d86f04d
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions FsCheck Release Notes.md
Original file line number Diff line number Diff line change
@@ -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<T>` 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<T>`. Removed the overloads of `Zip` with arity 3. Changed the return type of methods that returned `IList<T>` previously to `List<T>`. 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<list<int>>`.
* 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<list<int>>`.

* 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<int[]>()`.
* 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<int[]>()`.

* 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.

Expand Down

0 comments on commit d86f04d

Please sign in to comment.