Aela Programming Language

Aela is a safety-critical language with native formal verification, dependent types, and structured concurrency, engineered for embedded systems and optimized for deterministic, high-assurance software.

6 Reasons to Choose Aela...

1

Eliminate memory-safety risk at the source

Unsafe constructs cannot compile, removing buffer overflows, data races, and use-after-free errors before they can even enter mission software.

2

Guarantee correctness with built-in formal methods

Native formal verification and dependent types enable mathematically provable behavior required for DAL A, SIL 4, and ASIL D-level systems powerd by Z3.

3

High assurance without high complexity

A reduced, Rust-derived surface area makes Aela deterministic, teachable, and engineered specifically for embedded and safety-critical development.

4

Automated certification artifacts, every build

Traceability matrices, test evidence, and verification reports are produced automatically during compilation, cutting documentation work by 60–70%.

5

Accelerate DO-178C, ISO 26262, and IEC 61508 approvals

By eliminating unsafe code and generating compliance artifacts automatically, Aela reduces safety certification timelines from years to months.

6

AI-assisted development and compliance

An integrated AI assistant explains errors, guides proofs, validates requirements, and optimizes performance paths across the entire development lifecycle.

Enter your customer Id to generate a compiler download
Formal Verification Parallelism Dependent Types
fv-kitchen-sink.ae
1 pure fn sum_range ( a : int [ ] , start : int , end : int ) - > result : int {
2 var acc = 0 ;
3 var i = start ;
4 while ( i < end ) {
5 acc = acc + a [ i ] ;
6 i = i + 1 ;
7 }
8 result = acc ;
9 return ;
10 }
11
12 #requires for (let i in 0..std::length(a)) {
13 std : : assert ( a [ i ] > = 0 ) ;
14 }
15 #ensures result == sum_range(a, 0, std::length(a));
16 fn sum ( a : int [ ] ) - > result : int {
17
18 #let originalLength = std::length(a);
19 #let originalArray = a;
20
21 var total = 0 ;
22 var i = 0 ;
23
24 #invariant 0 <= i && i <= originalLength;
25 #invariant total == sum_range(originalArray, 0, i);
26 #variant originalLength - i;
27 while ( i < originalLength ) {
28 total = total + a [ i ] ;
29 i = i + 1 ;
30 }
31
32 result = total ;
33 return ;
34 }
fv-kitchen-sink.ae
1 pure fn sum_range ( a : int [ ] , start : int , end : int ) - > result : int {
2 var acc = 0 ;
3 var i = start ;
4 while ( i < end ) {
5 acc = acc + a [ i ] ;
6 i = i + 1 ;
7 }
8 result = acc ;
9 return ;
10 }
11
12 #requires for (let i in 0..std::length(a)) {
13 std : : assert ( a [ i ] > = 0 ) ;
14 }
15 #ensures result == sum_range(a, 0, std::length(a));
16 fn sum ( a : int [ ] ) - > result : int {
17
18 #let originalLength = std::length(a);
19 #let originalArray = a;
20
21 var total = 0 ;
22 var i = 0 ;
23
24 #invariant 0 <= i && i <= originalLength;
25 #invariant total == sum_range(originalArray, 0, i);
26 #variant originalLength - i;
27 while ( i < originalLength ) {
28 total = total + a [ i ] ;
29 i = i + 1 ;
30 }
31
32 result = total ;
33 return ;
34 }
Formal Verification Parallelism Dependent Types
fv-kitchen-sink.ae
1 pure fn sum_range ( a : int [ ] , start : int , end : int ) - > result : int {
2 var acc = 0 ;
3 var i = start ;
4 while ( i < end ) {
5 acc = acc + a [ i ] ;
6 i = i + 1 ;
7 }
8 result = acc ;
9 return ;
10 }
11
12 #requires for (let i in 0..std::length(a)) {
13 std : : assert ( a [ i ] > = 0 ) ;
14 }
15 #ensures result == sum_range(a, 0, std::length(a));
16 fn sum ( a : int [ ] ) - > result : int {
17
18 #let originalLength = std::length(a);
19 #let originalArray = a;
20
21 var total = 0 ;
22 var i = 0 ;
23
24 #invariant 0 <= i && i <= originalLength;
25 #invariant total == sum_range(originalArray, 0, i);
26 #variant originalLength - i;
27 while ( i < originalLength ) {
28 total = total + a [ i ] ;
29 i = i + 1 ;
30 }
31
32 result = total ;
33 return ;
34 }
fv-kitchen-sink.ae
1 pure fn sum_range ( a : int [ ] , start : int , end : int ) - > result : int {
2 var acc = 0 ;
3 var i = start ;
4 while ( i < end ) {
5 acc = acc + a [ i ] ;
6 i = i + 1 ;
7 }
8 result = acc ;
9 return ;
10 }
11
12 #requires for (let i in 0..std::length(a)) {
13 std : : assert ( a [ i ] > = 0 ) ;
14 }
15 #ensures result == sum_range(a, 0, std::length(a));
16 fn sum ( a : int [ ] ) - > result : int {
17
18 #let originalLength = std::length(a);
19 #let originalArray = a;
20
21 var total = 0 ;
22 var i = 0 ;
23
24 #invariant 0 <= i && i <= originalLength;
25 #invariant total == sum_range(originalArray, 0, i);
26 #variant originalLength - i;
27 while ( i < originalLength ) {
28 total = total + a [ i ] ;
29 i = i + 1 ;
30 }
31
32 result = total ;
33 return ;
34 }

Type Safety

Go beyond checking the shape of your types by establishing powerful compile-time constraints on their potential values.

Formal Verification

Encode mathematical proofs and invariants directly into the type system and close the gap between theoretical proofs and working code.

Small Surface Area

A minimal core with no macros, advanced traits, attributes, or complex metaprogramming reduces the language's surface area and potential complexity.

Designed For Bare Metal

The standard library was designed from the start with MCUs and bare metal in mind, only import what you want.

Fast Compile Times

Leaning on an optimized LLVM, we produce predictable, repeatable, cross-platform output, even fast cold builds.

JIT Enabled Development

An optional Just-In-Time (JIT) development mode provides an edit-and-continue experience, while release mode produces fast and lean final artifacts.

C and C++ BFFs

Integrate seamlessly with existing build tools thanks to a stable C ABI, object file output, and automatic binding via header files.

Structured Concurrency

Built-in async/await syntax powered by LLVM coroutines and an efficient event loop makes concurrent programming safe and easy to reason about.

An Interactive Compiler

The compiler includes a deeply integrated AI that continuously learns from the codebase to provide automated refactoring, bug fixes, and performance optimizations.

"Just works" in your favorite editor.