Fix is a prototype distributed operating system running on the Arca research kernel.
Requires Linux x86-64 with x86-64-v3 and XSAVE, Bazelisk, GCC/G++, binutils, CMake, Make,
Clang/libclang, clang-format, clang-tidy, Binaryen 120 (wasm-merge), and Bash.
Set LIBCLANG_PATH or BINDGEN_EXTRA_CLANG_ARGS for nonstandard Clang installations.
git submodule update --init --recursive
bazel query //... --output=label_kind
bazel build //:artifacts
bazel test -- //... -//coupon/...
bazel test //tests:format //tests:lint
bazel run //:format
bazel run //programs/kernel:hello -- Ada
bazel run //programs/arca:add -- tuple:word:2,word:3
bazel run //programs/fix:addblob -- 2u64 3u64
bazel run //fix/runtime:fix -- eval path/to/program.fixArca arguments: word:, blob:, tuple: (comma-separated), elf:<path>,
null. Fix arguments are Fix expressions. _elf targets expose raw artifacts.
The map and curry combinators provide only _elf targets. Test fixtures live
under //tests; SIMD and combinator tests run with bazel test //arca/kernel:tests.
Integration tests for standalone programs can live beside those programs.
Use --config=release for optimized builds.
Userspace targets x86_64-unknown-arca with the x86-64-v3 baseline and System V
calling conventions. Bazel builds core, alloc, and compiler_builtins from
sources matching the pinned Rust compiler. The kernel uses x86_64-unknown-none
with its soft-float ABI.
Format Rust throughout the codebase and C SDK sources:
bazel run //:formatGenerate compile_commands.json for clangd and rust-project.json for rust-analyzer:
bazel run //:lspbazel test //... requires /dev/kvm; without it, use
bazel test //:host_tests. The proof test requires Isabelle2025-2, AFP,
and OCaml:
bazel test --test_tag_filters=proof //coupon:proofSee coupon/proof/README.md for proof setup.
Licensed under LGPL-2.1-or-later.