Skip to content

[pull] master from TimelyDataflow:master - #109

Merged
pull[bot] merged 2 commits into
SINHASantos:masterfrom
TimelyDataflow:master
Sep 12, 2026
Merged

pull[bot] merged 2 commits into
SINHASantos:masterfrom
TimelyDataflow:master

Conversation

@pull

@pull pull Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

frankmcsherry and others added 2 commits September 11, 2026 16:13
* InputCapability::time() requires TotalOrder and returns Option

A message's stamp is a multiset of timestamps, and an input capability's
time() used to panic unless the stamp was a singleton. It now exists only for
totally ordered timestamps, where every non-empty stamp has a least element,
and returns Option<&T>: the least element, or None for a message stamped by no
capabilities. retain(port) follows suit, and the Deref to T is removed, so
partially ordered timestamps must read stamp() and forward its elements with
retain_stamp(). Stamp::least() is the underlying accessor.

Operators whose logic reads one time from the capability are bounded by
TotalOrder and drop messages without a time: count/accumulate, aggregate,
state_machine, delay, delay_batch, branch, branch_when, and the inspect_batch
family. A new inspect_stamp observes each container with its stamp for any
timestamp, and inspect is built on it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK

* reclock: stash by stamp, notify at each clock element

Data is released at a clock time once some element of its stamp is less or
equal to it, so reclock needs no TotalOrder bound.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK

* Renames: for_each_stamp, cap, least, retain_least

for_each_time is for_each_stamp: containers are grouped by the stamp of their
message, not by a time, and the closure receives a capability for that stamp.
Closure arguments named `time` are renamed `cap` throughout: they were never a
time. for_each_time remains as a deprecated alias.

InputCapability::time() is least() and retain(port) is retain_least(port): the
names say what is computed (the least element of a totally ordered stamp, or
None for an empty one), and no existing time() or retain() call site silently
inherits new behavior. retain_stamp() is unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK

* Review: inspect is one trait with inspect_core and inspect; reclock discards timeless messages; book

inspect_core observes every container with its stamp and every frontier
change, for any timestamp; inspect observes records. inspect_batch,
inspect_time, inspect_stamp, inspect_container, and the InspectCore trait are
removed: they revealed one time, and are a map inside inspect_core.

reclock discards a message sent under no capabilities, which it could never
release. The book uses for_each_stamp, cap, and retain_least. Stamp::least
explains why it is a reduction and not first().

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…ntrol and Result helpers (#818)

Removed: delay/delay_batch/delay_total, count/accumulate, aggregate,
state_machine, branch, branch_when, reclock, iterator_source
(flow_controlled), and ResultStream. None has a user in differential-dataflow
or Materialize. The first seven key their logic on the capability's time, which
records do not carry; since #813 a message's stamp is a set of times, and
since #817 these operators required a total order. branch_when in particular
routes a whole container by its capability, which is wrong for any stream
whose records carry their own times.

The pingpong example carries a round counter in its data; the loop examples
in the docs and the book terminate by data; the flow-control chapter assigns
timestamps with a small unary operator and delayed capabilities.


Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
@pull pull Bot locked and limited conversation to collaborators Sep 12, 2026
@pull pull Bot added the ⤵️ pull label Sep 12, 2026
@pull
pull Bot merged commit 1eb1e1c into SINHASantos:master Sep 12, 2026
3 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant