HTTP/web apps
-
Urbit OS defines the API interface/path where messages/
pokesare sent to a global log and then dispatched to relevant apps. -
Responses are streamed from paths in the app (are these
wires?), which can be subscribed to.
Hoon
Strictly-typed, functional language. Compiles itself to Nock
Nock
Data model is simple: every piece of data is a Noun: an atom or cell.
- atom: any unsigned integer
- cell: ordered pair of nouns
Vere
Urbit VM and Nock runtime. Written in C.
Makes the Unix system calls. Also delivers encoded external events to Arvo.
Keeps an event log of everything in your urbits. Recovery by entire playback.
Not strictly necessary, Urbit could potentially be used on bare metal.
Zuse, Lull
standard libraries. data store/structures and transformation concerns.
Arvo
The OS. Written in Hoon. event handler. doesn’t do much but route things around and ensure consistency.
Purely deterministic. in: (input event + state) –> out: (output events, new state)
Events are stored in history. a linked list of nouns from first to last. This is in fact the formal state of Arvo state.
Arvo states essentially encapsulate all of the OS state in its data.
An event
formally: an event in the event log. not everything is an event.
an event can consist of any number of “moves” (kernel-level actions).
They are atomic.
Effects of an event are calculated, then persisted to the event log, and only then is the state changed.
we track where an event came from, where it’s going (and sometimes if we have to send something back). on a wire.
duct - chain of events. +$ duct (list wire).
Vanes:
The modules of the Arvo operating system
Ames
Networking, p2p, Identity
Behn
Timer events for vanes
Clay
Filesystem and build system
Marks
TK
Dill
Terminal driver
Eyre
HTTP server
Gall
Application sandbox/manager
Userspace vane
gall-guide [[_index-app-school-live]]❌
Iris
HTTP client
Jael
Key storage (public and private)