Skip to content

Make Funcky.Async coexist with the async APIs integrated into Funcky - #886

Merged
FreeApophis merged 1 commit into
mainfrom
funcky-async-net10-forwards
Oct 2, 2026
Merged

FreeApophis merged 1 commit into
mainfrom
funcky-async-net10-forwards

Conversation

@FreeApophis

Copy link
Copy Markdown
Member

Summary

Funcky 3.6.0 moved the async APIs into the Funcky package on .NET 10 (where System.Linq.AsyncEnumerable is part of the BCL), while Funcky.Async kept shipping the same types for older frameworks. A project referencing both packages on net10.0 therefore failed with CS0433 (ambiguous types), and the changelog claimed the package no longer existed.

  • Add a net10.0 target to Funcky.Async that contains only type forwards to Funcky and no System.Linq.Async dependency. Older targets are unchanged and keep the full implementation.
  • Record the two intentional API differences between the net9.0 and net10.0 assets (Chunk(int) overload, IAsyncGrouping return type of AdjacentGroupBy) in CompatibilitySuppressions.xml and the changelog.
  • Back-port the cancellation fix for Interleave and Merge (previously only in Funcky, Propagate cancellation token in async Merge #880) to Funcky.Async and add tests for it in both test suites.
  • Fix the changelog, README, package readme and a doc comment that claimed the Funcky.Async package no longer exists.
  • Bump Funcky to 3.6.1 and Funcky.Async to 1.5.0.

Verification

  • dotnet pack Funcky.Async -c Release -p:TreatWarningsAsErrors=true: clean; package validation follows the type forwards and only reports the two suppressed, documented differences.
  • The packed nuspec has a net10.0 dependency group containing only Funcky.
  • A scratch net10.0 console app referencing both Funcky and Funcky.Async compiles and runs AsyncSequence, Chunk, FirstOrNoneAsync, the Option<Task<T>> awaiter, AsyncFunctional.RetryAsync and IAsyncBuffer.
  • Funcky.Async.Test: 325 passed on net9.0 and on net8.0 with System.Linq.Async 5.0.0.
  • Funcky.Test (net10.0) async Interleave/Merge tests: 22 passed.
  • Full solution build in Release with warnings as errors succeeds (apart from the pre-existing NU1901 audit warning in Funcky.Analyzers.Test).

🤖 Generated with Claude Code

Funcky 3.6.0 moved the async APIs into the Funcky package on .NET 10
(where System.Linq.AsyncEnumerable is part of the BCL), while Funcky.Async
kept shipping the same types for older frameworks. A project referencing
both packages on net10.0 therefore failed with CS0433 (ambiguous types).

* Add a net10.0 target to Funcky.Async that contains only type forwards to
  Funcky and no System.Linq.Async dependency. Older targets are unchanged.
* Record the two intentional API differences between the net9.0 and net10.0
  assets (Chunk(int) overload, IAsyncGrouping return type of AdjacentGroupBy)
  in CompatibilitySuppressions.xml and the changelog.
* Back-port the cancellation fix for Interleave and Merge (previously only
  in Funcky) to Funcky.Async and add tests for it.
* Fix the changelog, README, package readme and a doc comment that claimed
  the Funcky.Async package no longer exists.
* Bump Funcky to 3.6.1 and Funcky.Async to 1.5.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@FreeApophis
FreeApophis merged commit 297cb7a into main Oct 2, 2026
9 checks passed
@FreeApophis
FreeApophis deleted the funcky-async-net10-forwards branch October 2, 2026 14:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants