This guide covers two paths:
- Contributing to the compiler — set up the build environment, build Eter from source, and run the test suite.
- Using the language — run the
etercdriver and explore the language reference.
This section gives you the fastest path from a fresh checkout to a working build. For the full contributor workflow — coding style, formatting, hooks, patch submission — see CONTRIBUTING.md.
- CMake 3.20+, Ninja, a C++17-capable compiler
- LLVM/MLIR 22.x and
lit
Platform-specific installation instructions are in CONTRIBUTING.md § Requirements.
git clone https://github.com/eter-lang/eter
cd eterThe x script at the root handles LLVM path discovery and wraps all common
CMake commands:
./x config # configure (Debug by default)
./x build # compile
./x check-all # run unit tests + lit testsThat's the full cycle. If everything passes you are ready to work.
Non-default LLVM path? Pass
LLVM_PREFIX_PATHbefore the command:LLVM_PREFIX_PATH=/usr/lib/llvm-22 ./x configRun
./x helpfor all available commands.
Generate a .clangd file so your editor finds the right compilation database:
./x create-clangdEnable pre-commit formatting/linting and pre-push build+test checks:
git config core.hooksPath .githooks
chmod +x .githooks/pre-commit .githooks/pre-pushSee CONTRIBUTING.md for:
- manual CMake invocations and advanced build flags
- sanitizers and debug output
- clang-format and clang-tidy usage
- how to write and run tests
- coding style and patch submission guidelines
Eter is in early development. The language design and implementation are subject to significant changes. The compiler is not yet feature-complete.
The primary source of truth for Eter syntax and semantics is the Eter Reference.
The API Reference provides the Doxygen-generated documentation for the compiler's C++ internals, intended for contributors and advanced users.
After building, the eterc driver is available at:
./build/tools/eter/eterc --versionTo enable debug output for a specific subsystem:
./build/tools/eter/eterc --debug-only=driver program.eterDebug output is only available in Debug and RelWithDebInfo builds (the
default when using ./x config).