From 79e2179dc3fafa9f0cf28dc090fdf2fb68d67591 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Nov 2026 22:27:29 +0000 Subject: [PATCH 1/2] chore(main): release 2.0.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ version.txt | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) 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..6621317 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.0.0](https://github.com/Frognar/dotMaybe/compare/v2.0.0-beta.2...v2.0.0) (2026-11-12) + + +### 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 From d901758816fab34b1c3cc13797b3b23de61416d1 Mon Sep 17 00:00:00 2001 From: Sebastian Przyszlak Date: Thu, 12 Nov 2026 23:33:26 +0100 Subject: [PATCH 2/2] Update CHANGELOG for version 2.0.0 release Added detailed highlights and performance improvements for version 2.0.0. --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6621317..ae3d257 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ ## [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