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.