Internals

Build guide

Build targets, feature flags, testing, and how to assemble the dev environment with bundled binaries.

Targets

Command
Output
make build
slim ~2.3 MB WASM, no bundled binaries (default)
make build-full
~68 MB WASM with busybox + node + devenv bundled
make build-busybox
~3.1 MB WASM with just the BusyBox guest baked in
make test
runs the full suite
make serve
build + serve wasm/ on localhost:8080

Sizes

  • ~2.3 MB — the slim default: a bare VM with no bundled binaries.
  • ~3.1 MB — with just the BusyBox guest embedded (make build-busybox).
  • ~68 MB — the legacy all-in-one with BusyBox, Node.js and the dev environment embedded (make build-full).

The dev environment

make build-full expects runners/riscv/images/busybox, runners/riscv/images/node and build/devenv.tar.gz. The devenv archive is produced by the Docker build scripts under build/ and contains the npm / TypeScript toolchain.

bash
# produce the devenv archive, then the fully-bundled build
# (see build/ for the Docker scripts)
make devenv
make build-full

Testing

The suite runs applet differential tests, ELF execution tests, BusyBox smoke tests, the Boa scripting layer, and — with a bundled build — the devenv tool tests.

bash
$ make test
--- ELF Execution Tests ---      6 passed
--- BusyBox Smoke Tests ---     17 passed
--- Devenv Tool Tests ---          skipped (needs a bundled build)
Scripting layer (Boa)             21 passed
============================================
  Results: 55 passed, 0 failed, 1 skipped (56 total)