Source

The public repository is github.com/serjective/aburi.

The local source tree used to prepare this site content is ~/Downloads/compilers/aburi.

Build Workflow

Use an explicit LLVM 18 path when configuring:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DLLVM_DIR=/path/to/llvm-18/lib/cmake/llvm -DABURI_BUILD_PUBLIC_TESTS=ON
cmake --build build
ctest --test-dir build -R public_tests_runtime --output-on-failure

Testing

The public smoke suite lives under public_tests/. The harness compiles each sample with aburi, runs the output program, and expects the success exit code 67.

For targeted debugging, use:

./build/aburi input.c -E
./build/aburi input.c --emit-llvm -o out.ll
./build/aburi input.c -S -o out.s
./build/aburi input.c -c -o out.o

Architecture

The main subsystems are:

  • main.cpp: driver setup and command-line behavior.

  • preprocessor.*: includes, conditional compilation, macro expansion, and tokenization.

  • parser/, collect/, and ast/: parsing, semantic analysis, scope/type handling, and AST ownership.

  • constexpr/: compile-time expression evaluation.

  • ast2llvm/ and abi/: LLVM IR lowering, ABI policy, mangling, vtables, exceptions, and target-specific layout.