amphp/pipeline
Asynchronous iterators and operators.
v1.2.7
45M downloads/mo
#373 most downloaded on Packagist
amphp/pipeline
What this package is like to depend on
Last release 28 days 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
4 releases in the last 12 months
see the full history below
Release timeline
17 releases · Dec 2021 to Jul 2026Releases
latest 17-
v1.2.726 Jul 2026Release notes
Open source →What's Changed
- Fixed consuming a value from the concurrent iterator returned from
Pipeline::generate()if consumption of the prior emitted value was cancelled in the same event-loop tick - Fixed relieving back-pressure from
Queuewhen the consume disposes of the concurrent iterator
Full Changelog: v1.2.6...v1.2.7
- Fixed consuming a value from the concurrent iterator returned from
-
v1.2.627 Jun 2026Release notes
Open source →What's Changed
- Fixed incorrect position value returned from the concurrent iterator from a
Queuewhen 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 incorrect position value returned from the concurrent iterator from a
-
v1.2.527 Jun 2026Release notes
Open source →What's Changed
- Fixed early disposal of iterator created with
Pipeline::generate() - Fixed inverted return value of
isComplete()on iterator returned fromPipeline::concat() - Fixed termination of pipelines when concurrency > 1 when the source throws and another concurrent coroutine already completed the pipeline
- Fixed the call ordering on an initial pipeline operator if the source is async
- Improved the garbage collection speed of concurrent pipelines when terminated early
Full Changelog: v1.2.4...v1.2.5
- Fixed early disposal of iterator created with
-
v1.2.406 May 2026Release notes
Open source →What's Changed
- Return static in methods that return
self<T>by @vudaltsov in #24 - Add
#[Override]attributes
New Contributors
- @vudaltsov made their first contribution in #24
Full Changelog: v1.2.3...v1.2.4
- Return static in methods that return
-
v1.2.316 Mar 2025Release notes
Open source →- Fixed failing any pending value consumption when a
Queueis disposed (regression in1.2.2).
Full Changelog: v1.2.2...v1.2.3
- Fixed failing any pending value consumption when a
-
v1.2.219 Jan 2025Release notes
Open source →What's Changed
- Fixed clearing back-pressure if a
Queuewas completed while containing emitted values which had not been consumed, then the consumer explicitly disposed (calledConcurrentIterator::dispose()) of the associated iterator without consuming those values. Prior, the futures were not properly resolved with aDisposedException, but now will resolve as expected.
Full Changelog: v1.2.1...v1.2.2
- Fixed clearing back-pressure if a
-
v1.2.104 Jul 2024Release notes
Open source →What's Changed
- Fix a potential race condition when using a
Queueto create aConcurrentIterator. AnErrorwith message "Must call suspend() before calling throw()" was thrown when aCancellationprovided toConcurrentIterator::continue()was cancelled and the underlyingQueueinstance was simultaneously completed. See #22.
Full Changelog: v1.2.0...v1.2.1
- Fix a potential race condition when using a
-
v1.2.010 Mar 2024Release notes
Open source →What's Changed
- Added
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 #21
Full Changelog: v1.1.0...v1.2.0
- Added
-
v1.1.023 Dec 2023Release notes
Open source →- Added
Pipeline::merge()which combines multiple iterators, emitting a value whenever any iterator emits a value. - Fixed
Pipeline::take()not completing until a value beyond the given count was emitted. The pipeline now completes immediately after emitting the last view. - Marked the template type of
ConcurrentIteratoras covariant.
- Added
-
v1.0.022 Dec 2022Release notes
Open source →Initial stable release 🎉
Changes from 1.0.0 Beta 7
- Marked
ConcurrentArrayIterator,ConcurrentChainedIterator, andConcurrentIterableIteratoras@internal. Instead of these classes, usePipeline::fromIterable()orPipeline::concat() Pipeline::concat()now accepts an array of anyiterable, not only otherPipelineobjects
- Marked
-
v1.0.0-beta.718 Nov 2022 pre-releaseNothing published for this version
-
v1.0.0-beta.607 Nov 2022 pre-releaseNothing published for this version
-
v1.0.0-beta.508 Apr 2022 pre-releaseNothing published for this version
-
v1.0.0-beta.424 Feb 2022 pre-releaseNothing published for this version
-
v1.0.0-beta.330 Jan 2022 pre-releaseNothing published for this version
-
v1.0.0-beta.210 Dec 2021 pre-releaseNothing published for this version
-
v1.0.0-beta.107 Dec 2021 pre-releaseNothing published for this version