Skip to content

Releases: pivovarit/parallel-collectors

3.3.0

07 May 20:09
Compare
Choose a tag to compare

This release focused on performance, correctness, and flexibility. Most notable changes:

  • enhanced type variance support
  • introduced new API methods that allow for custom Executors with unbounded parallelism
  • aligned the async collector’s behavior with the rest of the library
  • ensured correct ordering in the batching stream collector and preventing out-of-bounds access in the batching spliterator.

Internally, we’ve moved to an Option-based configuration model, and even fixed a small but annoying CSS issue in the mutation testing results page.

That new configuration model is likely to make its way to public API in the next minor release. You can see it in action in ParallelCollectors class:

return collecting(mapper,
  batched(),
  executor(executor),
  parallelism(parallelism));

What's Changed

  • Use Function<? super T, R> to maximize variance support by @pivovarit in #1023
  • Use Function<? super T, ? extends R> to maximize variance support (covariance) by @pivovarit in #1024
  • Add new API methods supporting custom Executors with unbounded parallelism by @pivovarit in #919
  • Validate Executors when used with unbounded Dispatcher and batching collectors by @pivovarit in #932
  • Align behaviour of async colllector with other implementations by @pivovarit in #936
  • Fix ParallelCollectors.Batching.parallelToStream enforcing the original ordering by @pivovarit in #1029
  • Fix missing CSS in mutation testing results page by @pivovarit in #967
  • Introduce Option-based configuration internally by @pivovarit in #1020
  • Faster async Collector by @pivovarit in #1025
  • Fallback to SyncCollector when parallel streaming with parallelism of one by @pivovarit in #1035
  • Fallback to AsyncCollector when calling parallel() with parallelism of one by @pivovarit in #1036
  • Ensure BatchingSpliterator doesn't go out of bounds by @pivovarit in #1044

Full Changelog: 3.2.0...parallel-collectors-3.3.0

3.2.0

17 Aug 08:25
Compare
Choose a tag to compare

What’s Changed

  • Add handy Collectors for executing jobs on Virtual Threads but with limited parallelism (#879) @pivovarit
  • Retry once when provided Executor rejected (#878) @pivovarit
  • Replace Dispatcher's internal ExecutorService with an inline virtual thread (#877) @pivovarit

Dependencies

  • Bump junit.version from 5.10.3 to 5.11.0 (#900) @dependabot
  • Bump org.codehaus.mojo:exec-maven-plugin from 3.4.0 to 3.4.1 (#899) @dependabot
  • Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.4 to 3.2.5 (#898) @dependabot
  • Bump org.slf4j:slf4j-simple from 2.0.14 to 2.0.16 (#897) @dependabot
  • Bump org.awaitility:awaitility from 4.2.1 to 4.2.2 (#895) @dependabot
  • Bump org.codehaus.mojo:exec-maven-plugin from 3.3.0 to 3.4.0 (#894) @dependabot
  • Bump org.slf4j:slf4j-simple from 2.0.13 to 2.0.14 (#893) @dependabot
  • Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.7.0 to 3.8.0 (#892) @dependabot
  • Bump org.apache.maven.plugins:maven-surefire-plugin from 3.3.0 to 3.3.1 (#890) @dependabot
  • Bump org.assertj:assertj-core from 3.26.0 to 3.26.3 (#889) @dependabot
  • Bump junit.version from 5.10.2 to 5.10.3 (#887) @dependabot
  • Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.1 to 3.4.2 (#886) @dependabot
  • Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.5 to 3.3.0 (#885) @dependabot
  • Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.3 to 3.7.0 (#884) @dependabot
  • Bump org.assertj:assertj-core from 3.25.3 to 3.26.0 (#883) @dependabot
  • Bump org.codehaus.mojo:exec-maven-plugin from 3.2.0 to 3.3.0 (#882) @dependabot
  • Bump org.pitest:pitest-maven from 1.16.0 to 1.16.1 (#880) @dependabot

Contributors

@dependabot, @dependabot[bot] and @pivovarit

Special thanks to all external contributors! 👏

3.1.0

01 May 07:49
Compare
Choose a tag to compare

What’s Changed

Dependencies

  • Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.0 to 3.4.1 (#864) @dependabot
  • Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.3 to 3.2.4 (#865) @dependabot
  • Bump org.apache.maven.plugins:maven-jar-plugin from 3.3.0 to 3.4.0 (#863) @dependabot
  • Bump com.tngtech.archunit:archunit-junit5-api from 1.2.1 to 1.3.0 (#861) @dependabot
  • Bump com.tngtech.archunit:archunit-junit5-engine from 1.2.1 to 1.3.0 (#860) @dependabot
  • Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.2 to 3.2.3 (#859) @dependabot
  • Bump org.slf4j:slf4j-simple from 2.0.12 to 2.0.13 (#862) @dependabot
  • Bump peaceiris/actions-gh-pages from 3.9.3 to 4.0.0 (#857) @dependabot
  • Bump org.pitest:pitest-maven from 1.15.8 to 1.16.0 (#858) @dependabot
  • Bump org.apache.maven.plugins:maven-source-plugin from 3.3.0 to 3.3.1 (#856) @dependabot
  • Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.1 to 3.2.2 (#855) @dependabot
  • Bump actions/cache from 4.0.1 to 4.0.2 (#854) @dependabot
  • Bump org.awaitility:awaitility from 4.2.0 to 4.2.1 (#850) @dependabot
  • Bump org.apache.maven.plugins:maven-compiler-plugin from 3.12.1 to 3.13.0 (#851) @dependabot
  • Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.0 to 3.2.1 (#852) @dependabot
  • Bump org.apache.maven.plugins:maven-gpg-plugin from 3.1.0 to 3.2.0 (#849) @dependabot
  • Bump actions/cache from 4.0.0 to 4.0.1 (#848) @dependabot
  • Bump org.codehaus.mojo:exec-maven-plugin from 3.1.1 to 3.2.0 (#847) @dependabot
  • Bump org.pitest:pitest-maven from 1.15.7 to 1.15.8 (#845) @dependabot
  • Bump org.pitest:pitest-maven from 1.15.6 to 1.15.7 (#844) @dependabot
  • Bump org.slf4j:slf4j-simple from 2.0.11 to 2.0.12 (#843) @dependabot
  • Bump release-drafter/release-drafter from 5.25.0 to 6.0.0 (#840) @dependabot
  • Bump org.assertj:assertj-core from 3.25.2 to 3.25.3 (#842) @dependabot
  • Bump junit.version from 5.10.1 to 5.10.2 (#841) @dependabot

Contributors

@dependabot, @dependabot[bot] and @pivovarit

Special thanks to all external contributors! 👏

2.6.1

01 May 08:26
Compare
Choose a tag to compare

What’s Changed

Contributors

@pivovarit

Special thanks to all external contributors! 👏

3.0.0

30 Jan 19:18
Compare
Choose a tag to compare

What's Changed

  • Default to Virtual Threads thread-per-task executor by @pivovarit in #778
  • Remove deprecated methods for next major release by @pivovarit in #777
  • Limit parallelism at thread-level instead of dispatcher-level by @pivovarit in #784
  • Handle interrupted exception at task level by @pivovarit in #785
  • Handle interruptions using same strategy as any other Dispatcher exception by @pivovarit in #786
  • Replace Collectors#toList with Stream#toList by @pivovarit in #788
  • Define module-info.java by @pivovarit in #790
  • Dispatcher to use caller thread instead of dedicated scheduler thread by @pivovarit in #789
  • Seal CompletionStrategy and reuse instances by @pivovarit in #833

Full Changelog: 2.6.0...3.0.0

2.6.0

27 Jan 17:26
Compare
Choose a tag to compare

What's Changed

  • Dispatcher to use caller thread instead of dedicated scheduler thread by @pivovarit in #822
  • Increase min parallelism level to 4 by @pivovarit in #582
  • Remove redundant javadoc entries by @pivovarit in #581
  • Use List<> instead of Stream.Builder<> as accumulators by @pivovarit in #634
  • Ensure that Dispatcher can't be started more than one time by @pivovarit in #632
  • Remove redundant Dispatcher initialization logic by @pivovarit in #728
  • Removed unused property from pom.xml by @armandino in #748

New Contributors

Full Changelog: 2.5.0...2.6.0

2.5.0

11 Feb 18:39
Compare
Choose a tag to compare

What’s Changed

Features & Enhancements

  • Avoid batching when collection size is equal to parallelism (#561) @pivovarit

Fixes

  • Fix lack of eager consumption for streaming collectors (#578) @pivovarit

Dependencies

2.4.1

22 Nov 19:15
Compare
Choose a tag to compare

What’s Changed

Features & Enhancements

Fixes

  • Remove unwanted JMH artifacts from the release jar (#524) @pivovarit

Dependencies

Contributors

@dependabot, @dependabot[bot] and @pivovarit

Special thanks to all external contributors! 👏

2.4.0

26 Sep 17:19
Compare
Choose a tag to compare

What’s Changed

This release provides improved resource management. ParallelCollectors now create fewer threads and objects.

Features & Enhancements

  • Offload the work to a calling thread when using blocking streaming instead of creating a new thread (#515) @pivovarit
  • Remove redundant intermediate result CompletableFuture (#490) @pivovarit

2.3.3

25 Apr 17:16
Compare
Choose a tag to compare

What’s Changed