This is the index for the language guides. For normative rules, always prefer RFC-001 and RFC-002.
Hello shape
package main
fun main() {
println("Hello, Aura")
}Every file lives in a package. Programs enter at fun main().
Topic guides
| Guide | What you learn |
|---|---|
| Types & nullability | Scalars, T vs T?, flow narrowing |
| Classes, structs & interfaces | Reference vs value types, generics |
| Control flow & errors | if/for/match, Result, throw/catch |
| Arrays | Array<T>, push/pop, iteration, Int·String HOF |
| Syntax cheatsheet | Compact lookup (lambdas, String, process I/O) |
| Standard library | std.io, std.assert, std.collections, prelude |
What works in the compiler today
These topics match in-tree behavior (corpus + CLI), not only Accepted RFCs:
- Packages, functions, locals, expressions
- Nullability flow, force-unwrap
!!, coalesce?:, safe call?. - Classes (GC), structs (value), interfaces (
class C : I), monomorphized generics (incl. generic iface/class implements) - Enums +
match,Result throw/try/catch/finally;ifas expressionArray<T>(+clone, nested free), ranges,for-in(array / string bytes / Iterable)- String
+,"hi ${name}"interpolation (idents),substring(start, end)(exclusive end; UTF-8 byte indices) - Other String helpers:
len,isEmpty,charAt,startsWith/contains/endsWith,indexOf,split,trim/trimStart/trimEnd,toInt(): Int? typealiases, top-levelconst,istype test- Expression-body functions
fun f(): T = expr - First-class functions / lambdas:
(x: T) => expr, block body, fun type(T) -> U - Captures: outer
valofInt/Bool/String/ class / Array; outervarofInt/Boolby ref (no nested Fun orvarString/class/Array yet) - Multi-file packages, imports, path deps;
aura new/init/version aura run/testpass-through after--;aura test+@teststd.ioconsole + file + argv / stdin / exit /tryReadFile;std.assertstd.collectionsMap/Set/HashMap/HashMapStr/Iterable + Int·String HOF +join- Dogfood CLI:
examples/wc(args + String tools)
Still design-first (limited or deferred in code)
- Remaining lambda captures (nested Fun;
varString/class/Array) — see repo debts - Full task / async surface (RFC-003, RFC-006)
- Macros / plugins (RFC-010)
- Reflection (RFC-009)
- LLVM backend as default (RFC-004 — C backend is what runs now)
- Registry fetch / semver (RFC-005 — path deps + lock schema only)
- Generic
HashMap<K,V>(concrete String→Int and String→String only)
See the roadmap map for a per-RFC table.
Next
- Getting started if you have not run hello yet
- Types & nullability
- Syntax cheatsheet when you need a quick lookup