The command line
Read out of the usage block in src/rust-compiler/main.rs, so this cannot list a command the compiler does not have. Two of them exist nowhere else in programming: burxt review, which answers what a change did to what a program promises, and burxt mcp-schema, which derives an MCP tool schema from the preconditions so the two cannot drift. Both are explained in Tools and agents.
| Command | Takes | What it does |
|---|---|---|
burxt check |
<file.bx> |
parse and typecheck only |
burxt lsp |
— | language server over stdio |
burxt fetch |
— | get the dependencies, write burxt.lock |
burxt where |
<import> |
where a package import lands on disk |
burxt build |
<file.bx> [link args...] |
compile to a native executable |
burxt run |
<file.bx> [link args] [-- program args] |
compile then run |
burxt emit-ir |
<file.bx> [--target ...] |
print LLVM IR |
burxt fmt |
<file.bx>... |
set indentation, in place |
burxt layout |
<file.bx> |
print class layouts |
burxt explain |
memory <file.bx> |
what each function builds |
burxt review |
<old.bx> <new.bx> |
what changed about what it PROMISES |
burxt mcp-schema |
<file.bx> |
the MCP tool manifest, from the preconditions |
Flags
Scraped from the same usage block. Flags may be written before or after the file, so burxt build -O0 -g pay.bx -o pay and burxt build pay.bx -O0 -g -o pay are the same command.
| Flag | What it does |
|---|---|
-o <path> |
where to write the executable (default ./ |
-g |
emit DWARF debug info: a line table, and every parameter and let with its name, type and stack slot. A debugger can then stop on a line and read a local — which is the alternative to inserting a print, and a print MOVES THE STACK and can change the answer. Off by default: debug info carries absolute paths and a producer string, so it would make the emitted IR differ between machines. |
-O0 |
do not optimise. Independent of -g on purpose: -O2 -g is for a crash report from the field, -O0 -g is for stepping. Use both to follow a program statement by statement. |
--target <triple> |
build for another machine, e.g. aarch64-apple-darwin. Emits an OBJECT and stops: linking needs that target’s libc and linker, so it is left to that target’s toolchain. The emitted IR is identical for every target, which is what makes the decimal answers identical too. |
Everything after a bare -- goes to the PROGRAM — burxt run parse.bx -- document.bmx — which is the only way to hand a compiled program an argument, and os_args() in lib/os.bx reads them without the program’s own name in front. Arguments after the source file that are not flags go to the linker unchanged, so burxt run pay.bx cside.o -lm links the C you call.