Targets | Program

A Program module is defined once, in a single declarative form, and the compiler renders it into idiomatic source for each target language, and back into Program itself. Write the logic once; ship it everywhere.

Every module is stored in a canonical command form. Each target is a small render plugin that walks that form and emits natural code for its language: types, modules and functions mapped to the idioms a native developer would reach for. The shape never changes between targets; only the punctuation does.

Pick a target to see the same counter program rendered into it.

Plain, dependency-free JavaScript for the browser.

The same JavaScript output, with Program's types carried through as TypeScript types.

Flutter and cross-platform apps, with Program's types mapped onto Dart's.

Native Apple platforms: iOS, macOS and the rest of the family.

Back-end services and command-line tools, rendered with Go generics.

Systems and back-end code, with ownership-aware closures.

Low-level, allocation-explicit native code.

The canonical command form every module is stored in, the interchange the other targets render from.

A GLSL shader target also exists for graphics-only programs (it has no concept of a UI counter, so it is not shown here).

Recommended articles