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 (recommended)
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 firewill 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
| Variable | Needed by | Description |
|---|---|---|
MICROKIT_SDK | fire build / run, fic image generation | Path to the extracted Microkit SDK. Fallback when [run.target] sdk is not set. |
GCC | fire build / run, fic image generation | Full path to the AArch64 cross-compiler binary. Fallback for [run.target] gcc. |
LD | fire build / run, fic image generation | Full path to the AArch64 cross-linker binary. Fallback for [run.target] ld. |
VERIFYTA | fire verify | Path to the verifyta binary (falls back to PATH). |
FIRE_FIC | fire | Override 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.