Status after the Phase 4 audit (mutability, closures, modules, imports). Percentages estimate how much of a typical developer workflow is supported today, judged against the documented language and the test corpus.
Scoring method: each area is rated by (a) whether the documented behaviour is implemented, (b) whether it is enforced/checked, and (c) whether it is covered by tests. A rating of 100 % means “documented, enforced, tested, and usable in real multi-file projects”. Ratings below 100 % name the concrete gap.
Overall
Dimension
Completeness
Notes
Core language
~95 %
Syntax, types, control flow, functions, OOP, pattern matching, generics checked; escape sequences and slicing fixed
Usable for scripts, services and libraries; remaining gaps listed below
1. Core language
Area
%
Evidence
Remaining gap
Variables & constants
95 %
let/let mut/const enforced by MutabilityChecker; corpus migrated
Exhaustiveness of the checker on exotic assignment forms
Primitive & collection types
100 %
int, float, str, bool, bytes, list/dict/set/tuple
—
Functions
100 %
Defaults, named args, variadics, expression bodies, recursion, multiple returns
—
Lambdas & closures
95 %
Single-expr and block lambdas; captured-locals use nonlocal
Closure analysis is syntactic, not a full scope resolver
Classes & OOP
99 %
Class header fields (class User(private name: str, mut age: int)) driving the constructor and accessors, extends-only inheritance (single/multiple/dotted), @property, @staticmethod, @classmethod, explicit visibility with owner-aware mangling (E307/E308), abstract class + abstract def (E309/E316), one constructor style per class
No metaclasses
Traits / interfaces
98 %
Compile to ABCs; multiple traits via extends A, B; traits extend traits; abstract-method enforcement at compile time
No mixin method-resolution rules
Generics
90 %
Box[T] accepted; unused type parameters flagged; constraints ([T: Bound]) validated (E110); erased at runtime
No type-argument inference
Enums
95 %
Values, auto-numbering, matching on members (Color.RED)
import os, sys, from collections import Counter, from x import a as b
Import PyPI packages
98 %
import requests, pyyaml verified; any installed package works
Import local Aura modules
98 %
Sibling .aura, dotted packages, from pkg.util import x
module { } namespaces
98 %
Private by default, export makes a member public, dotted names nest, state not writable from outside (E303/E308), mangled at runtime
Module facades
95 %
module App { export Components, Utils } re-exports siblings by convention or from "mod"; package entry App/App.aura; E313/E312 — no alias renaming on re-export
Python literals
99 %
Escapes (\n, \t, \uXXXX), raw/bytes, f-strings, triples, numeric forms
Python slicing
98 %
x[start:stop:step] for lists and strings, including [::-1]
Call Python callables
100 %
Native attribute/from imports; lambdas as callbacks
Installable console entry point; clean aura namespace; published as aura-language on PyPI
What a general developer can do today
Install with pip install . and use the aura command (or pip install aura-language once published).
Scaffold a project with aura init, add dependencies with aura add.
Write scripts, CLIs, and multi-file programs with classes, traits, generics, closures, pattern matching, and error handling.
Import Python’s standard library and any installed PyPI package.
Split code across local Aura modules and packages.
Use the stdlib regex, os and http modules, including native *_async file and HTTP helpers for async def code.
Get editor diagnostics, completion, hover, go-to-definition, rename and formatting via aura lsp, and trace programs with aura debug.
What blocks literal “100 %” (ranked)
Aura→Python API — generated code is untyped; no stable way to call Aura libraries from Python with type information.
Type stubs for arbitrary PyPI packages — builtins are typed; third-party APIs remain Any.
Raw networking and streaming async I/O — io and http expose native *_async helpers, but low-level sockets and streaming HTTP are still reached through Python.
LSP depth — diagnostics, hover, completion, symbols, go-to-definition, references, rename and formatting are implemented; workspace-wide refactors across multiple open files are not.
Package ecosystem — published and installable, but no curated registry or version resolver (only the aura.toml manifest).
Everything in the core language, tooling, standard library, Python interop, packaging, CI and dependency management is implemented and tested. Aura is published on PyPI as aura-language, with tag-driven releases that build the wheel/sdist, publish to PyPI and create a GitHub release automatically. The remaining items are ecosystem integrations that depend on external services (PyPI) or on large, separate efforts (full static typing of Python).