Dynamic language with optional contracts
Aipo.
Aipo is a general-purpose, dynamically and strongly typed language with support for contracts and invariants. Its Rust toolchain includes a bytecode VM and a JavaScript backend.
01
The question
Why it exists
Aipo explores how to keep the flexibility of a dynamic language without hiding type mismatches, and how to bring contracts closer to the code they protect.
02
A few coordinates
Design principles
- 01
Intentional conversions
Incompatible values are not silently converted; programs must express that intent.
- 02
Invariants beside the data
Structural contracts can be declared alongside the model that must preserve them.
- 03
More than one target
The project maintains a Rust bytecode VM and a backend that emits JavaScript.
03
A static sample
First output
io.println("Hello from Aipo!")This block is a code sample only. This page does not compile or run Aipo in the browser.