Aela Programming Language
Aela is a safety critical systems programming language for domains like aircraft, vehicles, medical devices, factories and government systems, but it works just as well for general-purpose software, such as tools, servers and libraries, on Linux, macOS, Windows and bare metal.
What Aela Does
-
01
Proofs in the Compiler
Write what a function needs and what it promises with
#requiresand#ensures, and what a loop keeps true with#invariant.aec --verifyproves them, and proves that every sum, index and cast stays in range. You need no other tool. -
02
Nothing Hidden
No exceptions, no unwinding, no operator overloading and no implicit conversions. Every failure a function can return is in its signature, and the caller must handle it. Every place where async code can pause is marked with
await. -
03
A Toolchain You Can Check
The compiler is written in Aela, with no C and no LLVM, and writes plain assembly. It is built from a seed of 8,600 lines of assembly. Each release is built two separate ways, and both must give the same result. Every program records what built it (
aec provenance). -
04
Memory Safety Without Lifetimes
Every reference names the variable it borrows from. The compiler uses that to stop dangling references, use after move, and two writers changing the same data. You never write lifetimes in your code.
-
05
From Servers to Bare Metal
Linux, macOS and Windows on x86-64 and AArch64, plus bare-metal AArch64. For bare metal, a module that needs an operating system is refused when you compile. A target can set flash and RAM budgets, and the build fails if the program is over them.
-
06
Small Language
Aela has one clear way to do most things, so there are fewer patterns to learn. No macros, no inheritance and no overloading. Code reads the same from one author to the next.
More About the Language
-
Checked arithmetic
Overflow, division by zero and indexing past the end stop the program instead of corrupting data. If you want numbers to wrap around, you say so with
+%,-%and*%. -
Types that know values
A type can limit its values, like
{ p: i64 where p <= 100 }, or carry a size, likeBuf(N). Then the compiler can prove an index is safe and skip the check at run time. -
Regions and arenas
Inside a
reserveblock, allocate as much as you like. Everything is freed at once when the block ends. The compiler makes sure nothing outlives the block. There is no garbage collector and no manual free. -
Async and parallel tasks
asyncandawaitare part of the language. The compiler proves that parallel tasks cannot race, and every task you start must be awaited or detached. When async code fails, the report shows the chain of tasks that were waiting on it. -
Large standard library
HTTP and TLS, JSON, regular expressions, compression, crypto, a terminal UI kit and more. It works on bare metal, inside a C program, and on Linux, macOS and Windows.
-
C when you need it
Call C functions with
extern fn, and say what they touch, so the race checks cover them too. Aela code can also run inside a C program.
Aela 3.0.0 — Community Edition
The compiler, the runtime and the standard library, under the MIT license. To build programs you only need an assembler and a linker: as and ld on Linux, clang on macOS, or LLVM's clang and lld-link on Windows, where aec writes the assembly and you link it.
Each package has a SHA256SUMS file and a signature, which you can check with ssh-keygen -Y verify -n aela-release. The assembly package has the compiler for every target as source code, so you can build it yourself instead of trusting our binary.
The Zap Editor, built in Aela.
What Aela Is Not
-
Not Rust
Aela looks superficially like Rust, but it is a different language. Rust code and habits do not carry over.
aec fixrewrites common ones. -
Not for 32-bit chips
The compiler makes 64-bit code only: x86-64 and AArch64. Small 32-bit microcontrollers are not supported.
-
Not a timing tool
The build checks a program's flash and RAM against its budgets. Stack, heap and CPU time are not measured yet, and there is no worst-case timing analysis.