Claude

← AI Reviews
Io

Claude Fable 5.2 · 2026-11-12

Elegant, tiny, deeply reflective prototype language worth studying and experimenting with, but too immature and niche for production dependence.

This review is based only on the project's own documentation as supplied. I could not run code, and the benchmark page, GitHub repository and bridge docs were not in the bundle. Comparisons with other languages draw on my general knowledge, not the site.

What it is

Io is a small, dynamic, prototype-based language created by Steve Dekorte in 2002. It has three core ideas:

  • Everything is a message send. There are no keywords or statements; assignment, operators and control flow are all messages.
  • Objects are clones of other objects. There are no classes; inheritance is differential and each object can have several prototypes.
  • Code is a live message tree. Programs can inspect and rewrite it at runtime, and arguments can be left unevaluated, so if and for behave like ordinary methods.

Concurrency uses actors and transparent futures on cooperative coroutines. The VM is about 25k lines of portable C under a BSD license.

In early 2026 the project was substantially rebuilt. A heap-allocated "stackless" evaluator replaced the recursive one, and WebAssembly/WASI became the default and only build target on master. A bidirectional Io↔JavaScript bridge replaced native addons.

Strengths

  • Conceptual economy. The whole syntax fits on a page, and the unification of blocks, prototypes and messages is coherent. Few languages are as good for learning how object systems and evaluators work.
  • Metaprogramming and reflection. Lazy arguments, call sender, forward, and inspectable slots and methods make DSLs and custom control flow cheap.
  • A capable evaluator design. Heap frames give the VM tail-call optimisation and recursion bounded by heap rather than the C stack. They also give O(1) coroutine switches with no assembly, resumable exceptions (signal/withHandler), walkable frames and serialisable continuations.
  • Pleasant concurrency model. There is no async/await "colouring"; any object can be an actor, and futures detect deadlocks.
  • Portability and sandboxing. One WASM module runs under wasmtime, Node and browsers, with capability-based access. A Sandbox object adds message-count and time limits.
  • Candid engineering notes. The performance and exceptions design documents state costs and gaps plainly.

Weaknesses and risks

  • Maturity. The FAQ calls the WASM target and stackless evaluator "not yet well tested" and "early-access", yet they are the only target on master. Native builds are frozen at a tag, with ongoing work on a separate branch. The test suite is small for a rewritten VM (roughly 250 Io tests plus 30 C tests).
  • Performance. It is a tree-walking interpreter with heap-boxed numbers, no bytecode and no JIT. The reported fib(30) time of 1.77s is, by my estimate, several times slower than CPython. The speed-up plans are unbuilt proposals.
  • Concurrency limits. Execution is single-threaded and cooperative, with no parallelism. Under the current WASI target, the docs admit one coroutine blocking on I/O stalls every actor; the fix awaits WASI 0.3 support.
  • Ecosystem reset. The addon system, DynLib and the Eerie package manager were removed. The standard library reference now covers only core, files, dates and testing. "Access to npm" works only on JS hosts through the bridge.
  • Thin browser interop. The DOM page lists no event listeners, a 256-result cap, 64KB string transfers and inline styles only. That sits oddly with the home page's "full access to the DOM".
  • Documentation quality. The Guide has broken rendering (@@@PRE@@@ placeholders, truncated code blocks) and examples dating from 2006. Pages contradict each other:
    • callcc is described as reachable by reflection, but elsewhere as compiled out by default.
    • The Coroutine reference still says "C-stack based".
    • "a13" asNumber returns nil on one page and nan on another.
    • Networking wrappers are described but absent from the reference.
    • Reference entries are one-line stubs in this bundle.
  • Project risk. It appears to be largely a single-maintainer project with a small community, and most linked articles are years old. Versioning is date-based with no stated compatibility policy. The roadmap also contemplates a second, pure-JavaScript VM, which could split effort.

Who should use it

  • People who study or teach language design, and anyone who wants to learn prototypes, message passing and actors.
  • Developers prototyping DSLs or experimenting with continuations, condition systems or migratable computation.
  • Hobbyists who want a small scriptable VM in a browser or WASM host and can tolerate breakage.

Who shouldn't

  • Teams that need production stability, long-term support, libraries, tooling or easy hiring.
  • Anyone with CPU-bound, parallel or I/O-heavy server workloads.
  • Existing users who depend on native addons or C embedding; they should stay on the native tag or branch.

Compared with alternatives

AlternativeWhere it beats IoWhere Io is better
LuaMature, fast, proven for embedding, large user baseMore uniform object model, deeper reflection, built-in actors
JavaScriptUbiquitous, JIT-compiled, vast ecosystemSimpler and more consistent; lazy arguments, coroutines without colouring
Smalltalk (Pharo) / SelfMature live environments and toolingSmaller, file-based, easier to embed
Scheme / Racket / Common LispMature macros, continuations and condition systems; compilersObject-centric message syntax; restarts are still only a proposal in Io
Erlang / ElixirPre-emptive, parallel, fault-tolerant actorsLighter weight; transparent futures
Python / RubyEcosystem, documentation, communityMinimalism and malleability

Io's distinctive value is its ideas and its unusually inspectable runtime, not its practicality. For most real work one of the alternatives is the safer choice.

Details

Model: Claude Fable 5.2 (claude-fable-5-2)

Reviewed: 2026-11-12

Build stamp it quoted: Io · 2026-09-01 · 5cdf0fca

The prompt:

Read https://iolanguage.org/llms.txt and the pages it links. Ignore the "AI Reviews" section. Evaluate Io: what it is, its strengths, its weaknesses and risks, who should and shouldn't use it, and how it compares to alternatives.

Start your answer with these two lines:
Build stamp: <the site build stamp you saw, quoted exactly, or "none">
Verdict: <your verdict in one sentence of at most 20 words>
Then write the review in Markdown.

Generated by Claude Fable 5.2 on 2026-11-12; not an endorsement by Anthropic.