Releases: pivovarit/parallel-collectors
3.3.0
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
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
What’s Changed
- Control parallelism on a separate virtual thread (#872) @pivovarit
- Reject invalid Executor's RejectedExecutionHandlers (#873) @pivovarit
- Add ExecutorPollutionTest (#874) @pivovarit
- Add streaming tests for immediate processing start (#871) @pivovarit
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
What’s Changed
- Control max parallelism on a dedicated thread (#875) @pivovarit
Contributors
Special thanks to all external contributors! 👏
3.0.0
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
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
- @armandino made their first contribution in #748
Full Changelog: 2.5.0...2.6.0
2.5.0
What’s Changed
- Improve BatchingSpliterator implementation (#571) @pivovarit
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
- Bump actions/cache from v2 to v2.1.4 (#577) @dependabot
- Bump junit.version from 5.7.0 to 5.7.1 (#576) @dependabot
- Bump archunit-junit5-engine from 0.15.0 to 0.16.0 (#575) @dependabot
- Bump archunit-junit5-api from 0.15.0 to 0.16.0 (#574) @dependabot
- Bump assertj-core from 3.18.1 to 3.19.0 (#573) @dependabot
- Bump pitest-maven from 1.6.1 to 1.6.2 (#568) @dependabot
- Bump release-drafter/release-drafter from v5.12.1 to v5.13.0 (#567) @dependabot
- Bump archunit-junit5-engine from 0.14.1 to 0.15.0 (#564) @dependabot
- Bump archunit-junit5-api from 0.14.1 to 0.15.0 (#565) @dependabot
- Bump jmh.version from 1.26 to 1.27 (#563) @dependabot
- Bump pitest-maven from 1.5.2 to 1.6.1 (#562) @dependabot
2.4.1
What’s Changed
Features & Enhancements
- Add project metadata to MANIFEST.MF (#522) @pivovarit
Fixes
- Remove unwanted JMH artifacts from the release jar (#524) @pivovarit
Dependencies
- Bump assertj-core from 3.18.0 to 3.18.1 (#551) @dependabot
- Bump assertj-core from 3.17.2 to 3.18.0 (#547) @dependabot
- Bump release-drafter/release-drafter from v5.12.0 to v5.12.1 (#528) @dependabot
- Bump release-drafter/release-drafter from v5.11.0 to v5.12.0 (#527) @dependabot
- Bump maven-jar-plugin from 2.4 to 3.2.0 (#525) @dependabot
- Bump jmh.version from 1.25.2 to 1.26 (#520) @dependabot
Contributors
@dependabot, @dependabot[bot] and @pivovarit
Special thanks to all external contributors! 👏
2.4.0
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
What’s Changed
- Interruption needs to be handled through the exception handling mechanism (#480) @pivovarit
- Don't restore interruption flag (#478) @pivovarit
- Wait for a successful dispatch of the Poison Pill (#476) @pivovarit
- Use Stream.builder in AsyncParallelCollector (#475) @pivovarit
- Remove unused import (#474) @pivovarit
- Bump junit.version from 5.6.0 to 5.6.1 (#473) @dependabot-preview
- Replace ArrayList usages (#472) @pivovarit
- Replace ArrayList usages with Stream.Builder (#471) @pivovarit
- Use Stream.builder instead of ArrayList (#470) @pivovarit
- Use Stream.builder instead of ArrayList (#467) @pivovarit
- Deprecate API methods with implicit parallelism resolution (#466) @pivovarit