An implementation of the Urbit runtime
Go to file
Pyry Kovanen 6aaa489058
ames: factor out stun implementation and basic de/serialization functions (#662)
This PR factors out a couple small modules from ames, in anticipation of
merging in the directed messaging driver. Built on top of (and
targeting) #639.
2024-07-02 19:39:22 +03:00
.github build: fix docker workflow 2023-11-15 17:03:02 -05:00
bazel ames: add libnatpmp for automatic port forwarding (#593) 2024-05-10 17:00:34 +03:00
doc/spec Rename c3_assert() as u3_assert() 2023-04-25 11:32:21 -04:00
docker Updates to Docker build and README (#336) 2023-04-10 10:54:04 -06:00
pkg ames: factor out stun implementation and basic de/serialization functions (#662) 2024-07-02 19:39:22 +03:00
.bazelrc Refactor the way arguments are passed in bazel, add -flto 2023-06-27 11:03:15 -04:00
.gitignore disk: urbit play with epochs 2023-06-21 11:58:42 -04:00
BUILD.bazel bazel: update clang_version for CI 2024-02-01 17:48:08 +02:00
CONTRIBUTING.md CONTRIBUTING.md: no one other than PR authors should merge generally 2023-03-14 13:42:48 -04:00
flake.lock nix: update flake.lock to fix FHSUserEnv 2023-12-05 07:19:36 -06:00
flake.nix add a devshell for NixOS 2023-03-01 09:50:14 +02:00
INSTALL.md install: add macos lldb guide 2024-04-09 15:29:34 +03:00
LICENSE.txt Restore toplevel LICENSE.txt file. 2020-01-28 13:24:39 -08:00
MAINTAINERS.md ci: support next/kelvin/* binary and version string uploads 2023-03-20 17:41:06 -04:00
PACE Improve versioning scheme for soon and edge trains (#96) 2023-01-11 15:13:18 -05:00
README.md build: fetch urcrypt instead of vendoring it 2023-09-27 11:18:52 -04:00
VERSION Update VERSION to 3.0 2023-09-18 17:00:34 +03:00
WORKSPACE.bazel ames: add libnatpmp for automatic port forwarding (#593) 2024-05-10 17:00:34 +03:00

Urbit Runtime

Urbit is a personal server stack built from scratch. This repository contains Urbit's runtime environment, the lowest layer of the Urbit stack, which includes the Nock virtual machine, I/O drivers, event log, and snapshotting system.

Getting Started

For basic Urbit usage instructions, head over to urbit.org. For a high-level overview of the salient aspects of Urbit's architecture, visit developers.urbit.org. You might also be interested in joining the urbit-dev mailing list.

Packages

Urbit's runtime is broken down into a few separate layers, each of which is defined in its own package:

  • pkg/c3: A set of basic utilities for writing Urbit's style of C.
  • pkg/ent: A cross-platform wrapper for getentropy(2).
  • pkg/ur: An implementation of jam and cue, Urbit's bitwise noun serialization and deserialization algorithms, respectively.
  • pkg/noun: The Nock virtual machine and snapshotting system.
  • pkg/vere: The I/O drivers, event log, and main event loop.

Build

See INSTALL.md.

Contributing

Contributions of any form are more than welcome. Please take a look at our contributing guidelines for details on our git practices, coding styles, how we manage issues, and so on.