Language Specifications
The ARO language is documented through 27 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 27 documents define the complete ARO language.
| # | Specification | Topics |
|---|---|---|
| 0001 | Language Fundamentals | Core syntax, literals, expressions, variable scoping |
| 0002 | Control Flow | When guards, match expressions, iteration, collections |
| 0003 | Type System | Types, OpenAPI integration, contract-first APIs |
| 0004 | Actions | Action roles, 48 built-in actions, custom extensions |
| 0005 | Application Architecture | App structure, lifecycle, concurrency model |
| 0006 | Error Philosophy | "Code is the error message" approach |
| 0007 | Events & Reactive | Event dispatch, state machines, repositories |
| 0008 | I/O Services | HTTP server/client, file system, sockets |
| 0009 | Native Compilation | LLVM code generation, aro build command |
| 0010 | Advanced Features | Regular expressions, date/time, system exec |
| 0014 | Domain Modeling | DDD patterns: entities, value objects, aggregates |
| 0015 | Testing Framework | BDD-style testing with Given/When/Then |
| 0016 | Interoperability | Foreign function interface, plugins, database integration |
| 0018 | Data Pipelines | Filter, Map, Reduce operations on collections |
| 0019 | Standard Library | Primitive types, core utilities |
| 0022 | State Guards | Event handler filtering with field:value syntax |
| 0030 | IDE Integration | Syntax highlighting, editor support |
| 0031 | Context-Aware Formatting | Adaptive output for machine/human/developer |
| 0034 | Language Server Protocol | LSP implementation for IDE features |
| 0035 | Configurable Runtime | Configure action for timeouts and settings |
| 0036 | Extended File Operations | Exists, Stat, Make, Copy, Move actions |
| 0037 | Regex Split | Split action with regex delimiters |
| 0038 | List Element Access | first, last, index, range specifiers |
| 0040 | Format-Aware I/O | Auto format detection for JSON, YAML, CSV, etc. |
| 0041 | Date/Time Ranges | Date arithmetic, ranges, recurrence patterns |
| 0042 | Set Operations | intersect, difference, union on collections |
| 0043 | Sink Syntax | Expressions in result position |
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.