Skip to content

refactor!: remove result-discarding InParallelAsync overloads and polish packaging#373

Merged
thomhurst merged 2 commits into
mainfrom
refactor/v4-prerelease-polish
Jul 22, 2026
Merged

refactor!: remove result-discarding InParallelAsync overloads and polish packaging#373
thomhurst merged 2 commits into
mainfrom
refactor/v4-prerelease-polish

Conversation

@thomhurst

Copy link
Copy Markdown
Owner

Summary

Pre-4.0 API/packaging polish from the final release review:

  • Remove the result-selector InParallelAsync overloads (Func<TSource, Task<TResult>> x2 and Func<TSource, TResult>). They returned a plain Task and silently discarded every result. Results belong to SelectAsync(...).ProcessInParallel(...); existing calls passing result-returning delegates still compile against the surviving Func<TSource, Task> / Action<TSource> overloads with identical behaviour. PublicAPI.Shipped.txt trimmed to match (v4 surface is unreleased) and a migration bullet added to the README.
  • XML docs for all remaining ParallelExtensions members and a rewrite of the non-generic IAsyncProcessor docs from legacy /** */ blocks to /// style matching IAsyncProcessor<TOutput>.
  • NuGet package icon (new icon.png, packed via PackageIcon).
  • Refreshed package description to cover IAsyncEnumerable streaming, timed rate limiting, and the fluent API.

Test plan

  • dotnet build clean (0 errors; RS0016/RS0017 public-API analyzers stay as errors)
  • dotnet test — 1716/1716 pass on net8.0, net9.0, net10.0
  • dotnet pack -c Release succeeds; verified icon.png and README.md land in the nupkg root

…ish packaging

The Func<TSource, Task<TResult>> and Func<TSource, TResult> overloads
returned plain Task and silently dropped every result. Callers that
want results already have SelectAsync(...).ProcessInParallel(...);
result-returning delegates still bind to the surviving Func<TSource,
Task> and Action<TSource> overloads with identical behaviour.

Also: XML docs for ParallelExtensions and IAsyncProcessor, NuGet
package icon, refreshed package description covering IAsyncEnumerable
streaming and timed rate limiting.
@greptile-apps

greptile-apps Bot commented Jul 22, 2026

Copy link
Copy Markdown

Greptile Summary

This PR prepares the public API and package for the v4 release. The main changes are:

  • Removes result-discarding InParallelAsync overloads.
  • Updates the public API manifest and migration guidance.
  • Adds XML documentation for the remaining parallel APIs and IAsyncProcessor.
  • Adds a NuGet package icon and refreshes the package description.

Confidence Score: 5/5

This looks safe to merge.

  • The migration guidance now describes the source compatibility limits.
  • The cancellation documentation matches the intended fault-precedence contract.
  • No blocking issue remains within the follow-up scope.

Important Files Changed

Filename Overview
EnumerableAsyncProcessor/Extensions/ParallelExtensions.cs Removes the result-selector overloads and documents the remaining parallel-processing API.
README.md Updates the v4 migration notes for removed overloads and delegate compatibility.
EnumerableAsyncProcessor/PublicAPI.Shipped.txt Removes the deleted overloads from the tracked public API.
EnumerableAsyncProcessor/EnumerableAsyncProcessor.csproj Adds package icon metadata, includes the icon in the package, and refreshes the description.
EnumerableAsyncProcessor/Interfaces/IAsyncProcessor.cs Rewrites the interface documentation using standard XML comments.

Reviews (2): Last reviewed commit: "docs: correct InParallelAsync migration ..." | Re-trigger Greptile

Comment thread README.md Outdated
Comment thread EnumerableAsyncProcessor/Extensions/ParallelExtensions.cs Outdated
Async value-returning lambdas and explicitly typed result delegates do
not bind to the surviving overloads, and item faults take precedence
over cancellation on the returned task.
@thomhurst

Copy link
Copy Markdown
Owner Author

Both review comments addressed:

  • P1 (source compatibility): README migration bullet rewritten — non-async lambdas returning Task<T> still bind to Func<TSource, Task>, but async value-returning lambdas and explicitly typed result delegates must be rewritten to discard the result.
  • P2 (faults vs cancellation): XML doc on the cancellationToken parameters now states that item failures take precedence over cancellation on the returned task.

@thomhurst
thomhurst enabled auto-merge (squash) July 22, 2026 00:06
@thomhurst
thomhurst merged commit 1c74be7 into main Jul 22, 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