You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make interval::request(0) a no-op — it arms the timer without demand and fire() underflows demand_ to SIZE_MAX, so the operator emits forever
(op/interval.cpp).
Honour from_external in stream_bridge_sub::do_dispose — deliver on_error(sec::disposed), else release_later(); today the observer gets no
terminal event and is never released (detail/stream_bridge.cpp:142).
Specify the request(0) contract on subscription::request and apply it
uniformly — it aborts ucast/mcast under runtime checks, underflows interval, and is forwarded blindly by zip_with. Specify demand overflow
behavior at the same time.
Make zip_with credit each input only up to demand_ - buf.size()
instead of forwarding the full demand to all inputs (op/zip_with.hpp:89).
Document that publish gates upstream credit on its slowest subscriber,
and consider an opt-in overflow policy for slow subscribers
(op/publish.hpp:143).
Document and test buffer's deferral of terminal events while a partial
batch is pending (op/buffer.hpp).
Documentation — manual/core/DataFlows.rst
Specify the backpressure contract: who calls request, whether request(0) is legal, whether demand saturates, how lossy operators spend
demand, and how cancel differs from an external dispose.
Replace dispose with cancel in the subscription description.
Correct the merge concurrency default — eight applies only to the
zero-argument form; the variadic form uses sizeof...(Inputs) + 1.
Fix the "Prefix and Tail" section to describe prefix_and_tail, and note
that it emits nothing when the source ends before n items.
Replace the stale names callable_source and limit_step with gen::from_callable and step::take.
Classify the APIs as hot, cold, connectable, single-subscribe or
replaying (multicaster, from_resource, cache, publish, ref_count).
Document the surprising terminal semantics of element_at, to_vector, on_error_return, on_error_return_item and reduce.
Cover the missing APIs: the source factories, zip_with, combine_latest, the multicasting and connectable APIs, cache, single, retry, on_error_resume_next, the do_on_* hooks, the bridging and actor
integration APIs, and the steps in flow/byte.hpp and flow/string.hpp.
Documentation — Doxygen
Fix from_container and from_callable, which claim to emit ascending
values (observable_builder.hpp).
Fix the prediate typo in filter and take_while
(observable_decl.hpp).
Fix generation and transformation, described as blueprints for an
observer instead of an observable (fwd.hpp).
Replace the copy-pasted op::never class comments on op::retry and op::on_backpressure_buffer.
Tests
prefix_and_tail: what a tail subscriber sees when the prefix
subscription is disposed externally.
Bugs
interval::request(0)a no-op — it arms the timer without demand andfire()underflowsdemand_toSIZE_MAX, so the operator emits forever(
op/interval.cpp).from_externalinstream_bridge_sub::do_dispose— deliveron_error(sec::disposed), elserelease_later(); today the observer gets noterminal event and is never released (
detail/stream_bridge.cpp:142).request(0)contract onsubscription::requestand apply ituniformly — it aborts
ucast/mcastunder runtime checks, underflowsinterval, and is forwarded blindly byzip_with. Specify demand overflowbehavior at the same time.
zip_withcredit each input only up todemand_ - buf.size()instead of forwarding the full demand to all inputs (
op/zip_with.hpp:89).publishgates upstream credit on its slowest subscriber,and consider an opt-in overflow policy for slow subscribers
(
op/publish.hpp:143).buffer's deferral of terminal events while a partialbatch is pending (
op/buffer.hpp).Documentation —
manual/core/DataFlows.rstrequest, whetherrequest(0)is legal, whether demand saturates, how lossy operators spenddemand, and how
canceldiffers from an externaldispose.disposewithcancelin thesubscriptiondescription.mergeconcurrency default — eight applies only to thezero-argument form; the variadic form uses
sizeof...(Inputs) + 1.prefix_and_tail, and notethat it emits nothing when the source ends before
nitems.callable_sourceandlimit_stepwithgen::from_callableandstep::take.replaying (
multicaster,from_resource,cache,publish,ref_count).element_at,to_vector,on_error_return,on_error_return_itemandreduce.zip_with,combine_latest, the multicasting and connectable APIs,cache,single,retry,on_error_resume_next, thedo_on_*hooks, the bridging and actorintegration APIs, and the steps in
flow/byte.hppandflow/string.hpp.Documentation — Doxygen
from_containerandfrom_callable, which claim to emit ascendingvalues (
observable_builder.hpp).prediatetypo infilterandtake_while(
observable_decl.hpp).generationandtransformation, described as blueprints for anobserver instead of an observable (
fwd.hpp).op::neverclass comments onop::retryandop::on_backpressure_buffer.Tests
prefix_and_tail: what a tail subscriber sees when the prefixsubscription is disposed externally.
request(n).