-
Notifications
You must be signed in to change notification settings - Fork 310
Expand file tree
/
Copy path_index.json
More file actions
55 lines (55 loc) · 5.07 KB
/
Copy path_index.json
File metadata and controls
55 lines (55 loc) · 5.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
"title": "",
"subtitle": "A small, prototype-based programming language — now targeting WASM/WASI.",
"topTitle": "Io",
"content": [
{
"type": "ContentText",
"title": "About",
"body": "<p>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).</p><p>Its guiding design principle is simplicity and power through conceptual unification — a handful of primitives stand in for features most languages keep separate:</p><table><thead><tr><th>concept</th><th>unifies</th></tr></thead><tbody><tr><td>scopable blocks</td><td>functions, methods, closures</td></tr><tr><td>prototypes</td><td>objects, classes, namespaces, locals</td></tr><tr><td>messages</td><td>operators, calls, assigns, var access</td></tr></tbody></table><p>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.</p>"
},
{
"type": "ContentText",
"title": "Key Features",
"body": "<ul><li><strong>Minimal Syntax</strong> — Expressions only. No keywords, no statements, no special forms. Every expression is a message send, including assignment, operators, and control flow.</li><li><strong>Prototype-Based Objects</strong> — No classes. New objects are clones of existing ones, slots are created on write, and any object can be used as a prototype for any other.</li><li><strong>Differential Inheritance</strong> — Clones inherit by reference until a slot is assigned, so most objects carry only the deltas that distinguish them from their parents.</li><li><strong>Multiple Inheritance</strong> — Every object has a list of protos; lookup is depth-first with runtime loop detection.</li><li><strong>Messages as Code</strong> — Messages form trees that can be inspected and rewritten at runtime. Argument evaluation can be deferred, so <code>if</code>, <code>while</code>, and <code>for</code> are implementable in Io itself.</li><li><strong>Runtime Introspection</strong> — Slots, protos, message trees, and block source code are all inspectable and modifiable at runtime.</li><li><strong>Actors and Futures</strong> — Any object can receive <code>asyncSend</code> or <code>futureSend</code> messages and run its own coroutine. Futures are transparent (they become their result) and detect deadlocks automatically.</li><li><strong>Coroutines Everywhere</strong> — Concurrency uses cooperative user-level coroutines rather than OS threads, scaling to thousands of active tasks without thread-level overhead.</li><li><strong>First-Class Continuations</strong> — the VM is callcc-capable: the current computation can be captured as a first-class value and later resumed, stored, or serialized.</li><li><strong>Unified Sequences</strong> — Strings, buffers, and numeric vectors share one <code>Sequence</code> primitive, with multiple item types, text encodings, and SIMD acceleration on float vectors.</li><li><strong>WASM/WASI Target</strong> — The default build produces a single WebAssembly module that runs under wasmtime, Node.js, or in browsers, with full access to the DOM when hosted in a page.</li><li><strong>Io↔JS Bridge</strong> — Host integration on the browser target is bidirectional: Io can call JavaScript functions and JavaScript can call Io methods, replacing the native-addon model of earlier Io releases.</li><li><strong>Embeddable Core</strong> — The VM ships as a single WebAssembly module under a BSD license, embeddable in any WASM host — browsers, Node.js, or native apps via wasmtime or wasmer.</li></ul>"
},
{
"type": "ContentCards",
"columns": 2,
"items": [
{
"title": "Live Interpreter",
"href": "repl/index.html",
"subtitle": "Try Io right now — the full VM compiled to WebAssembly, running in your browser."
},
{
"title": "Documentation",
"href": "docs/index.html",
"subtitle": "Guides, tutorial, language reference, and design notes."
},
"FAQ",
{
"title": "Links",
"href": "Links/index.html",
"subtitle": "Books, tutorials, articles, papers, tools, and community resources."
},
"Timeline",
"Release Notes",
{
"title": "Performance",
"href": "bench/index.html",
"subtitle": "Benchmark results tracked over time — interpreter ops, shootout programs, and SIMD throughput."
},
{
"title": "GitHub Repository",
"href": "https://github.com/IoLanguage/io",
"subtitle": "Source code, issues, and contributions."
}
]
},
{
"type": "ContentText",
"body": "<p>For AI agents: <a href=\"llms.txt\">llms.txt</a> (curated index) and <a href=\"llms-full.txt\">llms-full.txt</a> (full content).</p>"
}
]
}