diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c4c4fa0..895bf0e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.0.0-beta.2" + ".": "2.0.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 246262d..ae3d257 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,31 @@ # Changelog +## [2.0.0](https://github.com/Frognar/dotMaybe/compare/v2.0.0-beta.2...v2.0.0) (2026-11-12) + +### Highlights + +A ground-up rewrite for .NET 11 and C# 15 unions. The 1.x line is retired. + +- `Maybe` is a C# 15 union with exactly two cases, `T` and `None`: values convert implicitly, a `switch` over + both is exhaustive, and pattern matching works in generic code too. +- No invalid states: `default(Maybe)` is `None`, a `null` never becomes a value, and there is no `.Value` or + any other throwing accessor. +- Functional API: `Match`, `OrDefault`, `Map`, `Bind`, `Filter`, `OrElse`, `Zip`, `Fold`, `Iter`, `Tap`, + `Flatten`, and query syntax (`from`, `where`, `let`, `select`). +- Collections and interop: `Choose`, `Traverse`, `Sequence`, `FirstOrNone`, `SingleOrNone`, `GetValueOrNone`, + `FromNullable`, `ToNullable` and `Maybe.Parse`. +- Ordering like `Option` in F# (`None` first), with no `<`/`>` operators on purpose. +- `System.Text.Json` without configuration: a value is written as itself and `None` as `null`. Works with + source-generated contexts. +- Async: `*Async` counterparts returning `ValueTask`, plus pipelines and query syntax over `Task>` and + `ValueTask>` with a single `await`. +- Zero allocations for value-type `T` (checked on every build); trimming and Native AOT compatible. +- Requires .NET 11. + +### Performance Improvements + +* allocate nothing in async queries with two `from` clauses ([590045a](https://github.com/Frognar/dotMaybe/commit/590045a3c000f49d8969e7c8bbe8c8c018ddd424)) + ## [2.0.0-beta.2](https://github.com/Frognar/dotMaybe/compare/v2.0.0-beta.1...v2.0.0-beta.2) (2026-10-07) diff --git a/version.txt b/version.txt index e2d1981..227cea2 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.0.0-beta.2 +2.0.0