An implementation of the Urbit runtime
Go to file
Midlyx Hatrys 45b28a49ed add a devshell for NixOS
Bazel on NixOS is problematic -- it's packaged, but not patched to
actually _work_ outside of FHS environments.

Vere build system presents an additional accidental hurdle: it expects
the musl-cross-make toolchain to be under /usr/local/<target> and uses
sudo to install it there, as one does.  Unfortunately NixOS nerfs sudo
in user namespaces (which are used to implement FHS environments) for
security reasons, making it impossible to install the toolchain the
normal way.

So in order to restore the ability to build Vere under NixOS without
resorting to containers (which is unsporting), this commit adds a
flake, which defines a devshell, which provides the toolchain and all
the other needed tools.  So one can "nix develop", go get
coffee (first invocation may take 15 minutes or so, subsequent ones
will be instant until next nix store GC), and then "bazel build
:urbit" etc.
2023-03-01 09:50:14 +02:00
.github build: upload soon and edge tags to dockerhub (#258) 2023-02-28 16:25:05 -06:00
bazel patch secp256k1 to make sure it's libtoolized 2023-03-01 09:50:14 +02:00
doc/spec Remove lingering artifacts from old build system (#144) 2023-02-01 15:18:23 -05:00
docker build: upload soon and edge tags to dockerhub (#258) 2023-02-28 16:25:05 -06:00
pkg Pointer Compression to enable 8G Loom (#164) 2023-02-28 15:56:25 -05:00
.bazelrc c3_dessert -- debug assert (breakpoint trap) 2023-02-17 14:43:32 -05:00
.gitignore .gitignore ignore tag files 2023-02-17 14:43:32 -05:00
BUILD.bazel address peter's comments 2023-02-09 12:05:41 -05:00
CONTRIBUTING.md generate compile_commands.json for use by language servers like clangd (#196) 2023-02-10 06:28:43 -08: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 Add debug configuration to build system (#142) 2023-02-01 11:16:44 -05:00
LICENSE.txt Restore toplevel LICENSE.txt file. 2020-01-28 13:24:39 -08:00
MAINTAINERS.md docs: improve version bump instructions for release days 2023-02-21 14:58:14 -05:00
PACE Improve versioning scheme for soon and edge trains (#96) 2023-01-11 15:13:18 -05:00
README.md Build with musl instead of glibc on Linux (#27) 2023-01-09 13:54:11 -05:00
VERSION bump version to v2.0 2023-02-28 16:29:49 -06:00
WORKSPACE.bazel patch secp256k1 to make sure it's libtoolized 2023-03-01 09:50:14 +02: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.