Skip to content

Conversation

@idg10
Copy link
Collaborator

@idg10 idg10 commented Nov 21, 2025

The initial fix for #2291 created a new problem: any code that continued to use the deprecated methods still available on System.Linq.Async would now expect them to exist on a type called AsyncEnumerableDeprecated. (That's where the reference assembly defines them, in order to avoid defining a duplicate AsyncEnumerable class that would clash with .NET 10's.)

But for binary compatibility with code that has not been compiled against Ix.NET's System.Linq.Async v7, the runtime assembly must continue to provide the whole historical AsyncEnumerable API in a class called AsyncEnumerable.

So the deprecated methods that remain visible in System.Linq.Async now need to appear in two places in the runtime assembly:

  • as members of AsyncEnumerable (for binary compatibility)
  • as members of AsyncEnumerableDeprecated (so that code that choses to ignore deprecation warnings still works)

This adds a code generator that generates AsyncEnumerableDeprecated as a facade in the runtime assembly, forwarding all of the necessary methods to their original AsyncEnumerable counterparts.

@idg10 idg10 added this to the Ix 7.0 milestone Nov 21, 2025
@idg10 idg10 self-assigned this Nov 21, 2025
@idg10 idg10 marked this pull request as ready for review November 21, 2025 12:29
@idg10 idg10 merged commit 4facf8a into main Nov 21, 2025
6 checks passed
@idg10 idg10 deleted the feature/2291-both-ayncenumerables-in-runtime-lib branch November 21, 2025 15:30
hmawhoob-dot pushed a commit to hmawhoob-dot/reactive that referenced this pull request Dec 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants