Get Started
mu is still evolving, but you can already explore the stage-0 host, run the REPL, inspect bytecode, and contribute to the spec.
Requirements
- Go 1.25+ and Git in your PATH.
Quickstart
- Clone the repository:
git clone https://git.mills.io/prologic/mu.git
cd mu
- Build the host:
go build ./cmd/mu/...
- Run the REPL:
./mu
- Try a hello program:
fn main() {
println("Hello World!")
}
main()
Next steps
- Take the language tour to learn core syntax.
- Read the runtime guide for the VM and native pipeline.
- Explore the standard library modules.
- Dive into the specification for the full contract.
CLI essentials
- Run a file:
./mu hello.mu - Emit assembly:
./mu -S -o hello.ir hello.mu - Emit object file:
./mu -c -o hello.mobj hello.mu - Run an object:
./mu hello.mobj - Native build:
./mu -B -o hello hello.mu - Print final result:
./mu -print-result hello.mu
Tooling helpers
- Format:
./mu -fmt hello.mu(use-wto write) - Static checks:
./mu -check hello.mu - Run mu tests:
./mu -test ./lib
Explore examples
- examples/hello.mu for the canonical entrypoint
- examples/concurrency.mu for tasks and channels
- examples/macro_demo.mu for macros
- examples/ffi.mu for the FFI helper
References
- Repository: git.mills.io/prologic/mu
- Full tutorial: docs/GettingStarted.md
- Language contract: docs/Specification.md
- Compiler/VM details: docs/Implementation.md
Design goals
- Keep the host builtin surface minimal.
- Make the compiler → VM pipeline easy to reason about.
- Move higher-level capabilities into mu itself.