All projectsDynamic language · 02

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

  1. 01

    Intentional conversions

    Incompatible values are not silently converted; programs must express that intent.

  2. 02

    Invariants beside the data

    Structural contracts can be declared alongside the model that must preserve them.

  3. 03

    More than one target

    The project maintains a Rust bytecode VM and a backend that emits JavaScript.

03

A static sample

First output

Static example from Aipo documentationaipo
io.println("Hello from Aipo!")

This block is a code sample only. This page does not compile or run Aipo in the browser.