notes-computer-programming-urbit

notes on http://urbit.org/docs/theory/whitepaper now at https://raw.githubusercontent.com/urbit/docs/3a121b1a47d99b4e56b9de8c814bd6bd2e509bd4/docs/theory/whitepaper.md

see also Nock and Hoon notes.

'operating function'; each node's state should be a function on the history of all messages received. Urbit (Urbit's 'Arvo' component, actually) consumes events and produces actions.

Although Urbit is event-driven, and its components communicate with each other by sending events to each other, each event contains a 'call stack' that provides an chain of addresses to return values. Events/actions are stored as a struct of the form [return_path data] ('ovum...an ovum is a cell [wire card]'). When a function returns a value, it pops the head off of the return path to see who to send the return value to, and then it sends back [tail_return_path return_value]; the receiving function (the caller) now has the return path needed to determine who it should send its own return value to later on. In addition to events, Urbit's various components export a (global, monotonic) namespace (using the 'scry' system). There is also a 'mark' type system, which is like a MIME-type "Marks are like MIME types, if MIME types came with with executable specifications which defined how to validate, convert, diff, and patch content objects.".

The main components of Urbit ('vanes') (that is, main components aside from Nock and Hoon and the overarching framework Arvo), are: