Language Specifications
The ARO language is documented through 10 comprehensive specifications that cover everything from core syntax to native compilation.
Reading Order
For newcomers to ARO, we recommend reading the specifications in order. Each builds on concepts from the previous ones.
Language Specifications
These 10 documents define the complete ARO language.
| # | Specification | Topics |
|---|---|---|
| 1 | Language Fundamentals | Core syntax, literals, expressions, variable scoping |
| 2 | Control Flow | When guards, match expressions, iteration, collections |
| 3 | Type System | Types, OpenAPI integration, contract-first APIs |
| 4 | Actions | Action roles, 50 built-in actions, custom extensions |
| 5 | Application Architecture | App structure, lifecycle, concurrency model |
| 6 | Error Philosophy | "Code is the error message" approach |
| 7 | Events & Reactive | Event dispatch, state machines, repositories |
| 8 | I/O Services | HTTP server/client, file system, sockets |
| 9 | Native Compilation | LLVM code generation, aro build command |
| 10 | Advanced Features | Regular expressions, date/time, system exec |
Future Features
These features are planned but not yet implemented.
| Feature | Description | Status |
|---|---|---|
| Domain Modeling | DDD patterns: entities, value objects, aggregates | Planned |
| Testing Framework | BDD-style testing with Given/When/Then | Planned |
| Interoperability | Foreign function interface, database integration | Planned |
| Query Language | SQL-like queries and aggregations | Planned |
| Standard Library | Core utilities and common functions | Planned |
| IDE Integration | Enhanced editor support | Planned |
| Language Server Protocol | LSP implementation for IDE features | Planned |
Legacy Proposals
The original evolution proposals are preserved in the legacy folder for historical reference. These have been superseded by the consolidated specifications above.
Contributing
Want to propose a new feature? Open an issue on GitHub with your idea and we'll discuss whether it should become a formal specification.