Quick start
Installing
The fastest way to try the language is to install nothing: the playground runs the real compiler in your browser.
For a binary:
cargo install aura-lang
Or download a build for your platform from
Releases — Linux (gnu and
static musl), macOS (Intel and Apple silicon) and Windows, each with a .sha256.
On x86_64 Linux prefer the musl build: it is static, so it has no glibc floor.
In GitHub Actions:
- uses: aura-config/setup-aura@v1
- run: aura check deploy.aura --strict
To build from source instead:
git clone https://github.com/aura-config/aura-lang && cd aura-lang
cargo build --release
# the binary: target/release/aura
Your first manifest
Create hello.aura:
app_name = "hello"
port = 8080
service:
name: app_name
url: "http://localhost:#{port}"
replicas: 2
end
$ aura eval hello.aura
{
"service": {
"name": "hello",
"url": "http://localhost:8080",
"replicas": 2
}
}
Notice that app_name and port — declared with = — did not reach the
JSON: they are private computations. Only properties (name:) and blocks are
exported. The next chapter goes into that.
The three commands you need daily
aura eval app.aura # evaluate → JSON on stdout
aura check app.aura --strict # check without evaluating (a linter; for CI)
aura fmt app.aura # canonicalise the layout
Structure without the pain
Aura has no significant indentation — this is where YAML scar tissue heals.
Structure comes from line breaks and an explicit end:
server:
http:
port: 8080
timeouts:
read: "30s".parse_duration()
end
end
end
Indentation is for humans only. aura fmt canonicalises it automatically and is
guaranteed not to change meaning: the token stream before and after is identical.