Renderingen-US

Toolchain

One binary does everything: faber. It bundles the Radix compiler, the Cista package resolver, a formatter, a test runner, and an in-process interpreter. There is no separate build tool to install.

The commands you will actually use#

faber init my-app          # create a package
faber check my-app/        # typecheck, no output written
faber run my-app/          # build if needed, then run
faber run --interpret .    # run in-process, no rustc, ~4 ms
faber test my-app/         # run inline proba suites
faber format my-app/       # format in place
faber explain redde        # what does this keyword do?

check is the one you run constantly — it is the full frontend (parse, resolve, typecheck) with nothing written to disk.

Everything faber exposes#

CommandDoes
initcreate a new package
checksemantic analysis on a file or package
buildcompile and write output for a target
runbuild if needed, then execute
scriptrun source through the interpreter — single file, package, or archive
replinteractive MIR stepper, re-lowering each line
testrun proba cases on the stepper, no Cargo or rustc
formatformat source; --locale renders another reader surface
explainexplain a glyph, keyword, or grammar term
targetslist targets and their current capability notes
installinstall a library package into the Cista store
verifyaspect verification on a single file
emit, lex, parse, hir, mircompiler-phase inspection (aliases for radix)

faber is for packages. radix is the developer tool for single files and compiler-phase inspection — see Inside Radix.

Two ways to run a program#

LaneCommandWhat happensWhen
Compiledfaber runlowers to Rust, invokes rustc, produces a native binaryshipping, benchmarking
Interpretedfaber run --interpretparse → typecheck → MIR, then steps MIR in-processiterating, scripting, tests

Both run the same frontend, so the interpreted lane typechecks exactly as strictly as the compiled one. It just skips code generation and linking.

Where the rest lives#

PageWhat it covers
The faber CLIevery command in depth, plus scripting and the REPL
Compiling and targetsthe HIR/MIR/AIR lanes and what each backend supports
Target matrixgenerated: every corpus term × every backend
Packages with Cistafaber.toml, lockfiles, the package store
Inside Radixcompiler architecture, for people changing it