Targets
One source, every target.
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.
How it works
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.
Targets
Pick a target to see the same counter program rendered into it.
JavaScript →
Plain, dependency-free JavaScript for the browser.
TypeScript →
The same JavaScript output, with Program's types carried through as TypeScript types.
Dart →
Flutter and cross-platform apps, with Program's types mapped onto Dart's.
Swift →
Native Apple platforms: iOS, macOS and the rest of the family.
Go →
Back-end services and command-line tools, rendered with Go generics.
Rust →
Systems and back-end code, with ownership-aware closures.
Zig →
Low-level, allocation-explicit native code.
JSON →
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).