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; -i writes in place, -o <file> writes to a file
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 (--venv to set up .venv)
aura venv [action] Manage .venv: init, info, shell, remove
aura add <pkg> Add a dependency (-D for dev, --no-install)
aura remove <pkg> Remove a dependency (--uninstall too)
aura install Install everything declared in aura.toml
aura deps List dependencies (--lock writes aura.lock)
aura doctor Check Python, venv, and installed 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.

Projects and dependencies

Aura projects are self-contained: aura init writes an aura.toml, aura venv creates the environment, and aura add records and installs dependencies.

aura init myapp --venv          # aura.toml + src/main.aura + .venv
cd myapp
aura add "requests>=2.28"       # runtime dependency
aura add -D pytest              # development dependency
aura deps --lock                # write aura.lock with exact versions
aura doctor                     # verify the environment

aura.toml:

[project]
name = "myapp"
version = "0.1.0"

[dependencies]
requests = ">=2.28"

[dependencies.dev]
pytest = ">=8"

Dependencies install into the project's .venv when it exists, and into the current interpreter otherwise. aura venv shell prints the activation command.

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.0a19

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.0a19
File Size Uploaded
aura_language-0.1.0a19.tar.gz 281.0 kB Details

Built distribution (wheel)

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

Total release size: 487.0 kB

Release files / aura_language-0.1.0a19.tar.gz

Download URL aura_language-0.1.0a19.tar.gz
Size 281.0 kB
Tags Source
SHA-256 checksum
How to use checksums
511c5daaa0a51307770546ac0fcdfb15b357179b952dcfa83e3be86a69d43db1
BLAKE2b-256 checksum
How to use checksums
0326690f3db2ecb4dcc3d78c6c80d1aa1d5033c1e65b3f8b7747daba25020678
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.0a19-py3-none-any.whl

Download URL aura_language-0.1.0a19-py3-none-any.whl
Size 206.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac276e5744e84851eeb6cd4c5218d3bb7c24350c5431787c4611af8e19312375
BLAKE2b-256 checksum
How to use checksums
c0cd84c018cf992947a0b05047d640729c20d9123fce210c8f5aeb4ccff4d12b
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