Skip to content

@jtobin jtobin released this Jul 22, 2019 · 1085 commits to master since this release

  • Splits the Urbit runtime into separate processes: the Nock runtime and Arvo kernel state in one (the "worker"), and I/O drivers, event dispatch, and persistence in another (the "daemon").

    This architecture provides a number of benefits, namely:

    • Events are now computed and persisted in parallel.
    • The number and scope of operations performed in a durably-checkpointed memory area are limited.

    Perhaps most importantly: this separation allows for alternative Nock runtimes, and the simplicity of the underlying communication protocol is expected to make them straightforward to implement.

  • Adds support for running the full Arvo bootstrap sequence (i.e. Hoon compiles itself and Arvo, Arvo then compiles and installs %zuse and the vanes) from a so-called brass pill.

  • Overhauls the event dispatch and persistence model. Namely:

    • The hand-rolled event log of previous versions has been replaced by LMDB.
    • Invariants for safe event handling have been formalized, and these are strictly and consistently enforced.
    • Writes to the event log are now batched (with computation performed eagerly).
    • The event log has been augmented with a chain of hashes that verify its determinism.
  • Replaces the old HTTP-handling%eyre vane with a pair of leaner, improved ones. HTTP client and server functionality has now been isolated in %iris and %eyre, respectively.

  • Updates the Arvo interface to support a pattern for Urbit applications designed to move beyond chat and long-form discussions. Includes some useful basic introductory apps designed to make the Arvo interface feel more like the computer it actually is.

  • Completely replaces the old Meson-based build system with Nix. Builds are now produced in a totally reproducible and predictable environment, with full cross-compilation functionality available for both Linux and Darwin (macOS). Building and contributing to Urbit now requires only one external dependency: the Nix package manager itself.

  • (Many) miscellaneous smaller improvements.

Assets 2
You can’t perform that action at this time.