Skip to main content

Module activation

Module activation 

Source
Expand description

The activation runtime for for traversals (SRD 113 §3.4, §3.6, §5).

A TraversalStream dispenses one Activation per tuple of a compiled traversal. An activation is a fresh state over the body’s program, compiled once at parent compile time, with the tuple’s elements and the parent’s cascaded wires bound and every over cursor narrowed. Activation never compiles: the cost of the second activation is the cost of the first minus nothing, because the first did not compile either.

Cycles follow the rule in §3.4: a body with a cursor iterates its narrowest cursor extent, one cycle per ordinal, with the cursor’s ordinal written before each pull; a body without a cursor has one cycle per activation.

Structs§

Activation
One child scope of a traversal: the tuple it was activated for, a fresh kernel over the body’s program, and its cursor slice if the body declares a cursor. The kernel is the interpreter’s by default; TraversalStream::activation_on builds one on any engine behind the Kernel trait (engine parity, step 8).
CursorSlice
The interval of ordinals an activation’s cursor iterates.
TraversalStream
Dispenses activations for one traversal of a kernel.

Functions§

open_traversal
Open traversal against parent’s current values, on any engine (engine parity, step 8): the cascaded wires are snapshotted through the Kernel trait, and the comprehension is evaluated in the body’s scope, the body’s program with those wires bound, where a source or predicate resolves every name it can reference and a tuple’s own elements are layered in front as it is built. Nothing here needs the opening kernel beyond the snapshot.
program_identity
Identity of the program an activation runs over, for callers that want to assert the one-program-per-position property.