Urbit for Developers: Glossary

Key Points

Hoon Basics: Runes | Basic Programs
  • Mars (Urbit) is hermetically sealed from Earth except for system calls.

  • Hoon structures all programs as binary trees of Nock.

  • The %clay vane acts as a file system for Urbit.

Hoon Basics: Data Structures
  • All types in Urbit are unsigned integers @ud.

  • Molds provide a structured type system for Hoon.

  • All data in Hoon are binary trees; thus, common patterns arise again and again.

Hoon Basics: Subject-Oriented Programming
  • Generators are Dojo’s way of importing simple standalone programs.

  • The subject consists of the context and arguments to a program.

Hoon Basics: Libraries
  • Libraries are code which can be built and included in the subject of downstream code.

Hoon Basics: Advanced Data Structures
  • Doors generalize the notion of a gate to a gate-factory.

  • Units, sets, maps, jars, and jugs provide a principled way to access and operate on data.

Arvo: Kernel Structure
  • Arvo is an event processor or state machine.

  • Events are well-defined single operations on the system state.

  • The binary executable is separated into king and serf, the system state, an event log and runtime support.

Arvo: Vane Roles
  • Vanes communicate by means of events.

  • %ames provides network communications including peer-to-peer events.

  • %clay instruments a typed version-controlled filesystem.

  • %eyre and %iris together offer client and server operations.

  • %khan is the external control plane.

Arvo: API & Scrying
  • The main data operations in Urbit are: pokes, scries, and subscriptions.

  • A poke is like an HTTP PUT request for data.

  • A scry is like an HTTP GET retrievel of data.

  • A subscription is a reactive request for data updates.

`%gall`: A Minimal Working Example
  • A %gall app expects certain arms to be present to handle and emit events.

`%gall`: Adding Functionality
  • A %gall app can be outfitted with a helper core to provide necessary operations.

`%gall`: Interfacing with a Client
  • A %gall app can talk to a user interface client.

`%gall`: Constructing an App
  • A %gall app can be readily produced to a standard of operability.

`%gall`: Releasing an App
  • The Urbit software distribution service affords a straightforward way to deploy, update, and remove %gall apps.

Next Steps
  • The Urbit software distribution service affords a straightforward way to deploy, update, and remove %gall apps.

Glossary

FIXME