A small, prototype-based programming language — now targeting WASM/WASI.
Io is a dynamic, prototype-based language built on a few simple ideas taken from Smalltalk (all values are objects), Self (prototypes, not classes), NewtonScript (differential inheritance), Act1 (actors and futures for concurrency), Lisp (code is a runtime-inspectable message tree), and Lua (small and embeddable).
Io's syntax contains only expressions and all values are objects. Every expression is a message send — including assignment, operators, and control flow — so the core stays tiny, with no keywords, no statements, and no special forms.
The VM is written in portable C and now targets WebAssembly (WASI) by default. The same binary runs under wasmtime, Node.js, or directly in the browser via a bidirectional Io↔JavaScript bridge.
if, while, and for is implementable in Io itself.asyncSend or futureSend messages and run its own coroutine. Futures are transparent (they become their result) and detect deadlocks automatically.Sequence primitive, with multiple item types, text encodings, and SIMD acceleration on float vectors.Guides, tutorial, language reference, and design notes.
View →Io language VM source repository.
View →Common questions about Io — its origins, philosophy, and practical use.
View →Milestones in Io's history, from 2002 to today.
View →For AI agents: llms.txt (curated index) and llms-full.txt (full content).