Echo is a compiled language implemented in Rust. It uses a single LLVM backend and a Rust-owned runtime for both AOT native binaries and in-process JIT execution.
The command-line entrypoint is xo.
Echo is early-stage software. The workspace is scaffolded for full vertical slices (frontend → semantics → IR → codegen → runtime → CLI). Language features are implemented incrementally with focused proofs.
Keyword-free, statement-led core — see docs/syntax.md.
| Tree | Role |
|---|---|
examples/misc/ |
Tiny xo run demos (print, loops, lists, result) |
examples/app/ |
HTTP demo + kitchen-sink surface |
examples/algos/ |
Classic algorithms (factorial, sort, primes, …) |
std/ |
Standard library Echo sources (IO, TCP, HTTP stubs) |
cargo build -p xo
./target/debug/xo run examples/misc/hello.echo
./target/debug/xo run examples/misc/sum_list.echo ; echo exit:$?
./target/debug/xo check examples/app/surface.echoTrack discussion in docs/roadmap.md.
| Doc | Role |
|---|---|
AGENTS.md |
Workflow and invariants for humans/agents |
docs/README.md |
Full docs map |
docs/architecture.md |
Pipeline and crate ownership |
docs/glossary.md |
Shared vocabulary |
docs/development-speed.md |
Local tools and gate |
docs/adr/ |
Architecture decisions |
Layer specs (docs/syntax.md, docs/parser.md, …) accumulate rules as each
layer lands.
See docs/architecture.md for crate ownership and the
compilation pipeline.
- Frontend:
echo_source,echo_diagnostics,echo_syntax,echo_lexer,echo_ast,echo_parser,echo_semantics - IR and backend:
echo_hir,echo_mir,echo_codegen,echo_codegen_abi,echo_runtime,echo_std - Project tooling:
echo_index,echo_resolver,echo_fingerprint,echo_cache,echo_build,echo_reflection,echo_lsp - CLI:
xo
- Rust with edition 2024 support
- LLVM 22 when codegen is active (inkwell)
clangandmoldfor native link speedsccachefor compile cachingcargo-nextestandjustfor the local gate
See docs/development-speed.md for setup and the
edit/test loop.
cargo check --workspace
scripts/gate changed --list
scripts/gate changed
scripts/gate workspace
just toolsCLI surface (commands land as the language grows):
cargo run -p xo -- --help
cargo run -p xo -- lex <file>
cargo run -p xo -- ast <file>
cargo run -p xo -- ir <file>
cargo run -p xo -- run [--jit] <file>
cargo run -p xo -- build <file> -o <out>The public site lives in www/ (Vite, React, Tailwind). Minimal content, same
layout and style as the product site.
npm --prefix www install
npm --prefix www run dev
npm --prefix www run lint
npm --prefix www run format
npm --prefix www run build
# or
just web-dev
just web-build
scripts/gate webMIT (to be added with the first release commit if not present).