An implementation of the Urbit runtime
Go to file
Joe Bryan 9fac6236ed
u3: improve snapshot corruption size checks (#468)
These checks were introduced in v2.7, aborting the process if the
snapshot metadata indicated that truncation had occurred. But the check
as written is unnecessarily strict, and also aborts the process if the
snapshot was larger than necessary. This PR prints a warning in that
case and otherwise continues.
2023-06-22 17:01:09 -04:00
.github ci: separate chown calls 2023-06-02 13:19:09 -04:00
bazel jets: add PDJSON as Bazel dependency 2023-04-11 18:03:57 -06: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 u3: delete spurious trailing comma 2023-06-22 16:38:03 -04:00
.bazelrc make U3_SNAPSHOT_VALIDATION a bazel build flag 2023-06-02 11:47:28 -04:00
.gitignore .gitignore ignore tag files 2023-02-17 14:43:32 -05:00
BUILD.bazel build: bump default clang-macos-aarch64 version to 14.0.3 2023-04-11 11:33:11 -04:00
CONTRIBUTING.md CONTRIBUTING.md: no one other than PR authors should merge generally 2023-03-14 13:42:48 -04:00
flake.lock add a devshell for NixOS 2023-03-01 09:50:14 +02:00
flake.nix add a devshell for NixOS 2023-03-01 09:50:14 +02:00
INSTALL.md change copt usage in build configs to per_file_copt 2023-04-04 16:21:00 -04: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 readme: add newline to run ci 2023-05-10 19:08:18 +03:00
VERSION Update VERSION to 2.10 2023-06-08 19:12:25 +03:00
WORKSPACE.bazel build: switch gmp source url 2023-06-20 12:28:22 -04: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/urcrypt: A standardized interface for calling various cryptographic functions used in the Urbit runtime.
  • 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.