Skip to main content

Module stamp

Module stamp 

Source
Expand description

The stamp of a message: the multiset of timestamps affixed to it.

Each message in timely dataflow carries a stamp: a multiset of timestamps, such that the message may only result in downstream work at times greater or equal to some element. Like postage, the stamp records the capabilities under which the message travels. Multiplicities are significant, as the message is accounted once per element in progress tracking; the order of elements is not, and is maintained sorted so that equal stamps are structurally equal. The common case is a singleton stamp, corresponding to the classic “one capability per message” design, and is represented inline without allocation. Stamps may contain multiple elements (e.g. a batch of updates stamped with its lower antichain, as in differential dataflow) or no elements at all (data that makes no progress claims, and which may be delivered after the frontier has passed all times in its payload).

Stamp maintains its elements sorted by Ord, so that equal stamps are structurally equal and stamps can be used as grouping and sorting keys. Stamps built by insertion are minimal (an antichain), but stamps that have crossed a scope boundary may contain comparable or duplicate elements: the stamp is the multiset of pointstamps at which the message is accounted, and boundary maps must preserve counts element-wise (see Stamp::map_pointwise).

Structs§

Stamp
A multiset of timestamps affixed to a message, stored sorted.
StampContainer
Derived columnar container for a struct.
StampReference
Derived columnar reference for a struct.