Repository navigation
Documentation: Funcky.Async and IAsyncEnumerable chapter - #1025
Merged
Merged
Conversation
Covers where the async APIs live (Funcky on .NET 10, Funcky.Async on older targets, type forwards on net10.0), the .NET 10 naming of the asynchronous operators with (item, cancellationToken) delegates, the lazy and terminal operator families, the migration from the obsolete …Await names with the Funcky.Analyzers 2.1.0 CS0618 code fix, AsyncSequence, RetryAsync and awaiting Option<Task<T>>. Links the chapter from the sequence and IEnumerable extensions chapters. Closes #1018 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved documentation errors misstate retargeting compatibility, async-void exception behavior, and supported APIs, and include a broken Memoize link.
5 open issues
What changed in this PR
Adds an async API chapter to the mdBook, addressing #1018 with guidance on package selection, async operators, and migration from obsolete overloads.
Changes:
- Documents framework-specific packaging, callback conventions, and solution-wide migration.
- Covers
AsyncSequence, asynchronous retry helpers, and awaitingOptionvalues. - Adds navigation and cross-links from existing enumerable and sequence documentation.
| File | Description |
|---|---|
Documentation/src/SUMMARY.md |
Adds the async chapter to book navigation. |
Documentation/src/sequence/sequence.md |
Expands async constructor guidance and links to the chapter. |
Documentation/src/enumerable-extensions/enumerable-extensions.md |
Links async counterpart guidance to the new chapter. |
Documentation/src/async.md |
Introduces async API documentation and migration examples. |
Review effort: Balanced
Retargeting from Funcky.Async to .NET 10 keeps the package reference working but is not source compatible: AdjacentGroupBy yields IGrouping instead of IAsyncGrouping and Chunk(size) is the base class library's, yielding arrays. An async void lambda does not swallow exceptions, it posts them to the synchronization context or crashes the process. Materialize is a terminal MaterializeAsync on IAsyncEnumerable. The Either and Result partitions do take delegates, synchronous ones. The Memoize link points at the chapter that includes the fragment. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
JudoJosef
approved these changes
Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Adds
Documentation/src/async.mdto the mdBook and links it fromSUMMARY.md(after the IEnumerable Extensions chapter), from the Sequence constructors chapter and from the IEnumerable Extensions landing page.The chapter covers:
Funckyon .NET 10 and newer, inFuncky.Asyncon older frameworks, and that thenet10.0asset ofFuncky.Asynconly forwards toFuncky, so the reference can be dropped;System.Linq.AsyncEnumerablevocabulary, one name per operator with an(item, cancellationToken)delegate, and how to discard the token with(item, _) => …;AdjacentGroupBy,Chunk,ExclusiveScan,InclusiveScan,Inspect,WhereSelect) and the terminal aggregations (AverageOrNoneAsync,FirstOrNoneAsync,LastOrNoneAsync,SingleOrNoneAsync,MaxOrNoneAsync,MinOrNoneAsync,NoneAsync,PartitionAsync) with their delegate shapes;…Await/…AwaitWithCancellation/…AwaitAsync/…AwaitWithCancellationAsyncoverloads (obsolete since 3.8.0, removed in 4.0.0, Remove the obsolete Await/AwaitWithCancellation async operators #981): apply the Funcky.Analyzers 2.1.0 code fix for CS0618 solution-wide, what the fix does with method groups and delegate values, and which calls it leaves alone;AsyncSequence,RetryAsync/RetryAwaitAsync, and awaitingOption<Task<T>>/Option<ValueTask<T>>includingConfigureAwait.Every name and overload was checked against the sources in
Funcky/Extensions/AsyncEnumerableExtensions,Funcky/AsyncSequence,Funcky/FunctionalandFuncky/Monads/Option.Closes #1018
🤖 Generated with Claude Code