Contributing

An open research project with 2 contributors. Shape the future of AI-optimized intermediate representations.

Philosophy

ARIA is an open research project. The thesis is the north star: AI-optimized IRs are the right abstraction for AI-authored code. Contributions that advance this core argument are prioritized. We value correctness over speed, clarity over cleverness, and working code over plans.

Roadmap

Component Status Notes
Reader / Parser complete EDN-based reader with $/% preprocessing
Type Checker complete Type + effect verification
C Codegen (ARIA-C) complete C99 output, gcc compilation
LLM Generator complete Natural language to ARIA-IR via Claude
JVM Bytecode Backend complete ARIA-JVM: compiles to .class files and runnable JARs. No gcc required -- the JVM installed to run aria-clj is also what runs the output. Bytecode generation via ASM (org.ow2.asm). --backend jvm --emit-class for individual class files, --emit-jar for a runnable JAR with manifest. (intent "...") annotations emitted as @com.ariacompiler.Intent with @Retention(RUNTIME), queryable via reflection -- the runtime foundation for Layer 4. Pointer types modeled via AriaMemory (flat int array heap). All three example programs compile and run. Shipped in PRs #10, #11, #13.
WASM Backend complete WAT codegen, WASI runtime, wat2wasm pipeline. Effect annotations survive through both C and WAT backends. @arkaitz-dev
Comptime complete Two-pass compile-time evaluation, comptime-val, generics via comptime. @arkaitz-dev
Intent Verification complete Layer 4: compile, run, and verify code matches intent via Claude API. Dynamic verification via compile-and-run. Merged in PR #16. Mandatory (intent ...) annotation enforced by the checker on all functions.
Self-Hosting (ariac) complete ariac: ARIA-IR compiler written in ARIA-IR, now structured as 6 modules (~5220 LOC total): types.aria, reader.aria, parser.aria, checker.aria, codegen.aria, main.aria. Compile-time memory safety with 8 detection types. Module import system built in. Compiles itself from its own 6 modules. Shipped in PRs #17, #20. @arkaitz-dev
Module Import System complete (import "math.aria") with qualified access ($module.func). Path resolution relative to importing file. Circular import detection. Export enforcement. Single C output with module__func prefixed names. Closes #4. Shipped in PR #20. @arkaitz-dev
Standard Library planned Built-in primitives beyond arithmetic
Language Spec v1.0 future Formal specification document

How to Contribute

1. Fork and branch

git clone https://github.com/YOUR_USERNAME/aria-clj.git
cd aria-clj
git checkout -b your-feature

2. Run the tests

clj -M:test

All PRs must pass existing tests. New features should include tests.

3. Submit a PR

Open a pull request against main. Describe what you changed and why. Link to a related issue if one exists.

Conventions

Idiomatic Clojure. Prefer pure functions, immutable data, threading macros.
Function-level docstrings. Public functions should have docstrings.
Test coverage expected. New features need tests. Bug fixes need regression tests.
No Leiningen. This project uses deps.edn exclusively.

Good First Issues

Look for issues labeled good first issue on GitHub.

If no labeled issues exist yet, pick something from the roadmap and open a discussion first.

Where to Discuss