NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #343 most downloaded on Packagist
Asynchronous iterators and operators.
Last release 2 months ago
26 Jul 2026
Release timing varies
gaps range from 1 weeks to 1.1 years
Nearly every release is documented
notes for 10 of 10 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
17 releases · first in 2021
One column per quarter.
Fixed consuming a value from the concurrent iterator returned from Pipeline::generate() if consumption of the prior emitted value was cancelled in the
Pipeline::generate() if consumption of the prior emitted value was cancelled in the same event-loop tickQueue when the consume disposes of the concurrent iteratorFull Changelog: v1.2.6...v1.2.7
Fixed incorrect position value returned from the concurrent iterator from a Queue when multiple consumers are waiting for a value and one of those wai
Queue when multiple consumers are waiting for a value and one of those waiting in the middle of the waiting list is cancelled (#23, thanks to @wtsergo)Full Changelog: v1.2.5...v1.2.6
Fixed early disposal of iterator created with Pipeline::generate()
Pipeline::generate()isComplete() on iterator returned from Pipeline::concat()Full Changelog: v1.2.4...v1.2.5
Return static in methods that return self<T> by @vudaltsov in #24
self<T> by @vudaltsov in #24#[Override] attributesFull Changelog: v1.2.3...v1.2.4
Fixed failing any pending value consumption when a Queue is disposed (regression in 1.2.2 ).
Queue is disposed (regression in 1.2.2).Full Changelog: v1.2.2...v1.2.3
Fixed clearing back-pressure if a Queue was completed while containing emitted values which had not been consumed, then the consumer explicitly dispos
Queue was completed while containing emitted values which had not been consumed, then the consumer explicitly disposed (called ConcurrentIterator::dispose()) of the associated iterator without consuming those values. Prior, the futures were not properly resolved with a DisposedException, but now will resolve as expected.Full Changelog: v1.2.1...v1.2.2
Fix a potential race condition when using a Queue to create a ConcurrentIterator . An Error with message "Must call suspend() before calling throw()"
Queue to create a ConcurrentIterator. An Error with message "Must call suspend() before calling throw()" was thrown when a Cancellation provided to ConcurrentIterator::continue() was cancelled and the underlying Queue instance was simultaneously completed. See #22.Full Changelog: v1.2.0...v1.2.1
Added Pipeline::buffer() , which provides control of the number of values buffered by the pipeline before back-pressure is applied to the data source
Pipeline::buffer(), which provides control of the number of values buffered by the pipeline before back-pressure is applied to the data source by @trowski in #21Full Changelog: v1.1.0...v1.2.0
Added Pipeline::merge() which combines multiple iterators, emitting a value whenever any iterator emits a value.
Pipeline::merge() which combines multiple iterators, emitting a value whenever any iterator emits a value.Pipeline::take() not completing until a value beyond the given count was emitted. The pipeline now completes immediately after emitting the last view.ConcurrentIterator as covariant.Marked ConcurrentArrayIterator , ConcurrentChainedIterator , and ConcurrentIterableIterator as @internal . Instead of these classes, use Pipeline::fro
Initial stable release 🎉
ConcurrentArrayIterator, ConcurrentChainedIterator, and ConcurrentIterableIterator as @internal. Instead of these classes, use Pipeline::fromIterable() or Pipeline::concat()Pipeline::concat() now accepts an array of any iterable, not only other Pipeline objectsNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →