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.