Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installation

Fiducia ships two binaries: fic (the compiler) and fire (the project runner). They are not yet published to crates.io — install the pre-built binaries from the website.

Pre-built binaries are published monthly (and on manual dispatch) to fiducia-lang.github.io/releases. Available platforms: linux-x86-64, macos-arm64.

# Download and extract (replace <version> and <platform> accordingly)
curl -fsSL -o fic.tar.gz \
  https://fiducia-lang.github.io/releases/v<version>/fic-<platform>-<version>.tar.gz
tar -xzf fic.tar.gz

# Move to a directory in your PATH (the tarball contains both binaries)
sudo mv fic fire /usr/local/bin/
# Or for user-local installation
mv fic fire ~/.local/bin/

# Verify installation — fic and fire share one toolchain version
fic --version
fire --version

This manual and the language reference are published at fiducia-lang.github.io/docs/manual.

ℹ️ cargo install fic fire will become available once the project is published to crates.io after the language design stabilises.

Building from source

ℹ️ The source repository is private while the language is under development; building from source currently requires collaborator access.

git clone https://github.com/fiducia-lang/fic
cd fic
cargo install --path .       # fic
cargo install --path fire    # fire

The repository also provides a Nix flake (nix develop) that supplies the full toolchain — Rust, the Microkit SDK, and the cross-compiler — with no manual setup. See CONTRIBUTING.md.

Prerequisites for building images

Compiling a project to a bootable image (fire build, fire run, or bare fic — image generation is its default mode) needs the seL4 Microkit SDK and an AArch64 bare-metal cross-compiler.

Microkit SDK

# macOS (Apple Silicon):
curl -fsSL -o microkit-sdk.tar.gz \
  https://github.com/seL4/microkit/releases/download/2.2.0/microkit-sdk-2.2.0-macos-aarch64.tar.gz
# Linux (x86-64):
curl -fsSL -o microkit-sdk.tar.gz \
  https://github.com/seL4/microkit/releases/download/2.2.0/microkit-sdk-2.2.0-linux-x86-64.tar.gz

tar -xzf microkit-sdk.tar.gz

ARM GNU toolchain

# macOS (Apple Silicon):
curl -fsSL -o arm-gnu-toolchain.tar.xz \
  https://developer.arm.com/-/media/Files/downloads/gnu/15.2.rel1/binrel/arm-gnu-toolchain-15.2.rel1-darwin-arm64-aarch64-none-elf.tar.xz
# Linux (x86-64):
curl -fsSL -o arm-gnu-toolchain.tar.xz \
  https://developer.arm.com/-/media/Files/downloads/gnu/15.2.rel1/binrel/arm-gnu-toolchain-15.2.rel1-x86_64-aarch64-none-elf.tar.xz

tar -xJf arm-gnu-toolchain.tar.xz

QEMU (for fire run in QEMU mode)

Install qemu-system-aarch64 from your package manager (brew install qemu, apt install qemu-system-arm, …).

UPPAAL (for fire verify)

fire verify runs the UPPAAL command-line model checker verifyta. Download UPPAAL and either put verifyta on your PATH, set $VERIFYTA, or point to it from fire.toml. UPPAAL requires a (free academic) licence.

Environment variables

VariableNeeded byDescription
MICROKIT_SDKfire build / run, fic image generationPath to the extracted Microkit SDK. Fallback when [run.target] sdk is not set.
GCCfire build / run, fic image generationFull path to the AArch64 cross-compiler binary. Fallback for [run.target] gcc.
LDfire build / run, fic image generationFull path to the AArch64 cross-linker binary. Fallback for [run.target] ld.
VERIFYTAfire verifyPath to the verifyta binary (falls back to PATH).
FIRE_FICfireOverride the path to the fic binary.
# Set once — add to your shell profile
export MICROKIT_SDK=<path-to-microkit-sdk>
export GCC=<path-to-arm-gnu-toolchain>/bin/aarch64-none-elf-gcc
export LD=<path-to-arm-gnu-toolchain>/bin/aarch64-none-elf-ld

Projects can instead pin these per-project in fire.toml’s [run.target] section.