10The Urbit interpreter is built on a Nock runtime system written
11in C, `u3`. This section is a relatively complete description.
13You should keep reading if (a) you're planning to work on the
14Urbit interpreter; (b) you're a language implementation geek; or
15(c) you don't really understand anything until you've seen the
18## u3: Noun processing in C
20`u3` is the C library that makes Urbit work. If it wasn't called
21`u3`, it might be called `libnoun` - it's a library for making
24What's a noun? A noun is either a cell or an atom. A cell is an
25ordered pair of any two nouns. An atom is an unsigned integer of
28To the C programmer, this is not a terribly complicated data
29structure, so why do you need a library for it?
31One: nouns have a well-defined computation kernel, Nock, whose
32spec fits on a page and gzips to 340 bytes. But the only
33arithmetic operation in Nock is increment. So it's nontrivial
34to compute both efficiently and correctly.
36Two: `u3` is designed to be a "solid-state interpreter," ie, a
37single-level store which is transparently snapshotted. This
38implies a specialized memory-management model, etc, etc.
40(Does `u3` depend on the higher levels of Urbit, Arvo and Hoon?
41Yes and no. `u3` expects you to load something shaped like an
42Arvo kernel, and use it as an event-processing function. But you
43don't need to use this feature if you don't want, and your kernel
44doesn't have to be Arvo proper - just Arvo-compatible. Think of
45`u3` as the BIOS and Arvo as the boot kernel. And there are no
46dependencies at all between Hoon the language and `u3`.)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list