Skip to content

Remove Notificator, FrontierNotificator, unary_notify, and binary_notify - #819

Merged
frankmcsherry merged 1 commit into
masterfrom
remove-notificator
Sep 12, 2026
Merged

frankmcsherry merged 1 commit into
masterfrom
remove-notificator

Conversation

@frankmcsherry

Copy link
Copy Markdown
Member

Follow-up to #818. The notificator held one Capability per requested time and handed it back once the input frontiers had passed that time, and unary_notify and binary_notify existed only to supply one.

Why remove it. It is a convenience for the one-capability-per-message world: notify_at takes a single capability, so a message stamped by a set of times cannot be waited on without the caller splitting the set, and the delivery order it promises is the total order of times. After #818 no library operator uses it. Differential-dataflow does not use it (three stale comments mention the pattern over frontier-driven code). Materialize has one use, the top-k intra-time thinning operator, which is the removed aggregate pattern and is already being rewritten because #817 stopped it compiling.

What replaces it. What differential-dataflow has always done: hold capabilities in a map keyed by time, and each invocation check them against the input frontiers. The bfs and barrier examples, the barrier test, the unary_frontier and binary_frontier doctests, and the book's "frontiers" section now do this directly; the book section that introduced the notificator and then re-derived it without one keeps only the direct version, with the explanation folded into its closing paragraph.

Full workspace tests and doctests, including the book, pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK

They held one capability per requested time and delivered it once the input
frontiers passed it: a convenience for the one-capability-per-message world
that no library operator uses since #818, that differential-dataflow does not
use, and whose one downstream user must leave it anyway. An operator that
wants the same holds its capabilities in a map keyed by time and checks them
against the frontiers, which is what the bfs and barrier examples, the
barrier test, the operator doctests, and the book now do directly.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK
@frankmcsherry
frankmcsherry merged commit 4eb3ee0 into master Sep 12, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant