The island runtime of one session: which islands are mounted, what each one holds and reads, and how a frame is produced.
An island renders when it is new, when its arguments changed, or when a value it read changed. Its children are then reconciled against what it placed: children with unchanged arguments keep their last output, and children it no longer places are unmounted, releasing what they held and unsubscribing from what they read. A frame visits only the islands that need rendering and their ancestors; every other subtree is reused as it is.
Single-threaded: only the session's pump calls in. The session subscribes
once to each source its islands read (co.multiply.tropical.signal). A change marks the
subscription in the session's inbox, from whatever thread made it, and the
pump passes the marked subscriptions to frame!.
The island runtime of one session: which islands are mounted, what each one holds and reads, and how a frame is produced. An island renders when it is new, when its arguments changed, or when a value it read changed. Its children are then reconciled against what it placed: children with unchanged arguments keep their last output, and children it no longer places are unmounted, releasing what they held and unsubscribing from what they read. A frame visits only the islands that need rendering and their ancestors; every other subtree is reused as it is. Single-threaded: only the session's pump calls in. The session subscribes once to each source its islands read (`co.multiply.tropical.signal`). A change marks the subscription in the session's inbox, from whatever thread made it, and the pump passes the marked subscriptions to `frame!`.
(render-counts rt)Island id -> how many times it rendered, over the mounted islands.
Island id -> how many times it rendered, over the mounted islands.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |