Skip to content

refactor!: remove v3 binary-compatibility shims for TUnit#372

Merged
thomhurst merged 1 commit into
mainfrom
chore/remove-v3-tunit-shims
Jul 21, 2026
Merged

refactor!: remove v3 binary-compatibility shims for TUnit#372
thomhurst merged 1 commit into
mainfrom
chore/remove-v3-tunit-shims

Conversation

@thomhurst

Copy link
Copy Markdown
Owner

Summary

TUnit no longer depends on EnumerableAsyncProcessor, so the v3 binary-compatibility shims kept for TUnit.Engine can go before v4 ships.

  • Remove the redundant ProcessInParallel(int maxConcurrency) shims from ActionAsyncProcessorBuilder, ActionAsyncProcessorBuilder<TOutput>, ItemActionAsyncProcessorBuilder<TInput>, and ItemActionAsyncProcessorBuilder<TInput, TOutput>. Callers passing an int still compile via the implicit conversion to the ProcessInParallel(int?, bool) overload.
  • Remove the obsolete no-selector AsyncEnumerableExtensions.ProcessInParallel<T>(IAsyncEnumerable<T>, CancellationToken) overload, which only collected the stream into a list.
  • Delete V3BinaryCompatibilityTests and the five matching PublicAPI.Shipped.txt entries (v4 is untagged, so this surface was never actually shipped).
  • Drop the TUnit coupling guidance from CLAUDE.md and update the README v3→v4 migration note.

Test plan

  • dotnet build — clean, no new warnings
  • dotnet test — 1716 tests pass across net8.0/net9.0/net10.0; test discovery succeeds, confirming TUnit.Engine no longer binds the removed members

TUnit no longer depends on EnumerableAsyncProcessor, so the members kept
solely so TUnit.Engine (compiled against v3) could bind at runtime are
no longer needed:

- Remove redundant ProcessInParallel(int maxConcurrency) shims from the
  four builder classes; int arguments still resolve to the
  ProcessInParallel(int?, bool) overload.
- Remove the obsolete no-selector
  AsyncEnumerableExtensions.ProcessInParallel<T>(IAsyncEnumerable<T>,
  CancellationToken) collect-only overload.
- Delete V3BinaryCompatibilityTests and the corresponding
  PublicAPI.Shipped.txt entries (v4 is not yet tagged, so the surface
  never shipped).
- Drop the TUnit coupling notes from CLAUDE.md and the README migration
  guide.
@greptile-apps

greptile-apps Bot commented Jul 21, 2026

Copy link
Copy Markdown

Greptile Summary

This PR removes pre-v4 binary-compatibility shims from the public API. The main changes are:

  • Removes four builder ProcessInParallel(int) shims.
  • Removes the no-selector async-enumerable overload.
  • Deletes the compatibility test and matching API entries.
  • Updates TUnit guidance and v4 migration documentation.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.
  • Integer builder calls retain equivalent source behavior through the remaining int? overload.
  • The intentional source-breaking extension removal is documented in the migration guide.
  • Successful test discovery addresses the former TUnit runtime-binding path.

Important Files Changed

Filename Overview
EnumerableAsyncProcessor/Builders/ActionAsyncProcessorBuilder.cs Removes the integer compatibility shim while source calls continue to use the nullable-concurrency overload.
EnumerableAsyncProcessor/Builders/ActionAsyncProcessorBuilder_1.cs Removes the equivalent compatibility shim from the result builder.
EnumerableAsyncProcessor/Builders/ItemActionAsyncProcessorBuilder_1.cs Removes the equivalent compatibility shim from the item-action builder.
EnumerableAsyncProcessor/Builders/ItemActionAsyncProcessorBuilder_2.cs Removes the equivalent compatibility shim from the item-result builder.
EnumerableAsyncProcessor/Extensions/AsyncEnumerableExtensions.cs Removes the obsolete no-selector overload that only collected the stream.
EnumerableAsyncProcessor/PublicAPI.Shipped.txt Removes the five matching entries from the public API baseline.
EnumerableAsyncProcessor.UnitTests/V3BinaryCompatibilityTests.cs Deletes tests for compatibility contracts no longer retained in v4.
README.md Updates the migration guide to document removal of all no-selector overloads.

Reviews (1): Last reviewed commit: "refactor!: remove v3 binary-compatibilit..." | Re-trigger Greptile

@thomhurst
thomhurst enabled auto-merge (squash) July 21, 2026 23:40
@thomhurst
thomhurst merged commit 136b15e into main Jul 21, 2026
5 checks passed
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.

1 participant