Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Aura

Aura

Aura is a gradually-typed programming language that transpiles to Python. It pairs a clean, unambiguous syntax with the entire Python ecosystem: first-class PyPI interop, a standard library, native threads and coroutines, and post-quantum cryptography.

CI Release PyPI Python License: MIT

Status: alpha (0.1.0a13). The syntax is standardized and frozen for the alpha series; see the grammar and the changelog.


Table of contents

Installation

pip install aura-language            # from PyPI

Or from a checkout:

git clone https://github.com/JoaoValentimTheo/aura-lang.git
cd aura-lang
pip install .
aura run examples/hello.aura

Optional post-quantum backend (recommended for real secrets):

pip install "aura-language[pqc]"     # adds cryptography>=44 (ML-KEM/ML-DSA)

Requires Python 3.10+. The runtime has no mandatory third-party dependencies (on 3.10, tomli is installed automatically for reading aura.toml).

Quick start

aura init myapp
aura run myapp/src/main.aura

From a source checkout without installing:

python3 main.py run examples/hello.aura

The smallest Aura program:

def main() {
  print("Hello, Aura!")
}

The language

Aura has exactly one spelling per construct — no synonyms. The full grammar lives in docs/GRAMMAR.md.

// Bindings. `let` is immutable; `mut` opts in.
let name = "Aura"
let mut count = 0

// Functions and generics.
def max[T](a: T, b: T) -> T {
  return a > b ? a : b
}

// Pattern matching with guards.
match command {
  case "quit" { return }
  case n if n > 100 { print("big") }
  case _ { print("other") }
}

Key rules:

  • let/const are immutable; let mut (or mut) is required to reassign.
  • Types are optional and checked before execution by aura check.
  • none is the null literal, not/and/or are the logical operators.
  • Only def declares functions, only new declares constructors, and only extends declares inheritance.

Classes

Fields can be declared in the class header, which builds the constructor and generates accessors:

class User(private name: str, mut age: int = 0, public id: int = 0) {
  public def greet() -> str {
    return "hi " + self.get_name()
  }
}

let u = User("ana", 30)
print(u.get_name())    // ana
u.set_age(31)          // setter exists because `age` is `mut`
print(u.id)            // 0      — public field, direct access

Inheritance uses extends, and a subclass header declares only its own fields:

class Admin extends User(email: str) { }

let a = Admin(email: "a@x.com", name: "bob")
print(a.get_email())

Concurrency

import stdlib.threading as threading

def main() {
  let results = threading.map_concurrent(
    (n) => n * n,
    [1, 2, 3, 4],
  )
  print(results)
}

Async is native too, including file and HTTP helpers that do not block the loop:

import stdlib.io as io
import stdlib.http as http

async def main() {
  await io.write_async("out.txt", "hello\n")
  let text = await io.read_async("out.txt")
  let response = await http.aget("https://example.com")
  print(text.trim())
  print(response.status)
}

Cryptography

stdlib.crypto provides hashing, HMAC, HKDF, and post-quantum primitives (ML-KEM / ML-DSA). Install the [pqc] extra for the production backend.

import stdlib.crypto as crypto

def main() {
  let key = crypto.random_bytes(32)
  let tag = crypto.hmac_sha3_256(key, "authenticated")

  let kp = crypto.kem_keypair()
  let envelope = crypto.kem_encapsulate(kp.public_key)
  let shared = crypto.kem_decapsulate(kp.secret_key, envelope.ciphertext)
  print(shared == envelope.shared_secret)
}

The pure-Python reference backend is not cryptographically secure and reports production = false. Use the [pqc] extra for real secrets.

See examples/crypto.aura.

Python interop

Any PyPI package is one import away, and the python bridge reaches anything else.

import os
import math
import json as json

import python

def main() {
  print(math.sqrt(144.0))
  let payload = json.dumps({"name": "aura", "ok": true})
  print(payload)
  print(python.is_instance(payload, str))
}

Aura Patterns (AUP)

AUP is a catalog of idiomatic solutions, each with a runnable example in examples/aup/:

Pattern Example
Optional results (T | none) option.aura
Typed error handling error_handling.aura
Builder builder.aura
Strategy strategy.aura
Pipeline pipeline.aura
Memoize / cache memoize.aura
Observer observer.aura
Resource management resource.aura
Worker pool worker_pool.aura
Hybrid post-quantum crypto hybrid_crypto.aura

CLI

Command Purpose
aura run <file> Transpile and execute an Aura file
aura check <file> Type-check and rule-check without running
aura transpile <file> Print the generated Python
aura format <file> Reformat source; -o writes in place
aura lint <file> Style warnings (--allow-warnings to exit 0)
aura test [dir] Run .aura test files
aura repl Interactive REPL
aura init <name> Scaffold a project
aura add <pkg> Add a dependency
aura install Install declared dependencies
aura deps List declared dependencies
aura debug <file> Trace execution / inspect a crash
aura lsp Language server (stdio)
aura version Print or bump the version

Run aura --help or aura <command> --help for details.

REPL

aura repl shares the real parser and every checker (types, structural rules, and mutability), so what you type is validated the way aura check validates it. State persists across lines:

$ aura repl
Aura REPL v0.4 (type ':help' for help, ':q' to quit)
aura> let mut x = 1
aura> x = x + 1
aura> x
2
aura> let y: int = "text"
[E101] Variable 'y': expected Int, got String
aura> :type x
int

Commands: :help, :vars, :type <expr>, :ast <expr>, :load <file>, :run <file>, :py <code>, :history, :reset, :q.

Documentation

Everything lives under docs/. Start with the index or jump straight in:

Document What it covers
docs/README.md Documentation index and recommended reading order
GRAMMAR.md Canonical EBNF grammar (the source of truth for syntax)
LANGUAGE.md Complete language reference (English)
LANGUAGE_PT.md Referência completa da linguagem (Português)
TYPES.md Type system (English)
TYPES_PT.md Sistema de tipos (Português)
ERRORS.md Every diagnostic code (E##/W##)
AUP.md Aura Patterns catalog
DESIGN.md Compiler architecture
COMPLETENESS.md Language coverage and remaining gaps
CHANGELOG.md Release history
examples/ Runnable example programs

Development

git clone https://github.com/JoaoValentimTheo/aura-lang.git
cd aura-lang
pip install -e ".[dev]"

pytest                    # full test suite (coverage floor: 90%)
ruff check aura/          # lint
mypy aura/                # type-check the compiler

See CONTRIBUTING.md for the contribution workflow and SECURITY.md to report a vulnerability.

License

MIT — see LICENSE.

Release files for aura-language 0.1.0a13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aura-language 0.1.0a13
File Size Uploaded
aura_language-0.1.0a13.tar.gz 241.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aura-language 0.1.0a13
File Interpreter ABI Platform
aura_language-0.1.0a13-py3-none-any.whl Python 3 none any Details

Total release size: 419.0 kB

Release files / aura_language-0.1.0a13.tar.gz

Download URL aura_language-0.1.0a13.tar.gz
Size 241.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5f182ce885d933491a6304e86fec8be7819f62b2d93a9e363484a693a44133f1
BLAKE2b-256 checksum
How to use checksums
7b8f8c7b36076122163c3ee93c7910f068c8ff75c8ed6d91d6bd122a20ca5573
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / aura_language-0.1.0a13-py3-none-any.whl

Download URL aura_language-0.1.0a13-py3-none-any.whl
Size 177.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a8442a3ffc56cacff005fee1faad3ef14155571a119e67be0ead33aada54640
BLAKE2b-256 checksum
How to use checksums
80a4389dbb0a3c20cdb05eb213d0d3e0368c34241eb696f6623537eada60f18b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page