Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Glossary

One line per term, with a link to where it’s actually taught. Terms are alphabetical. If you meet a word in the docs that isn’t here, that’s a bug in the docs; please add it.

adopt: folding a remote value into a draft without re-sending it. Echoes are ignored, clean fields update, dirty fields win. Reactive state.

arena: a container that owns many values and hands out handles to them. The tool for graphs and cycles. The memory model.

backed enum: an enum whose payload-free variants carry an explicit string or integer — enum Align { Start = "flex-start" }. The variant is that value at run time (no tag, no wrapper), which is why value() costs nothing, parse is offered, and it keys a Map with no derive. Its runtime domain is the host’s, so an exhaustive match traps on a value outside the set. Data and traits, spec §5.2.

binding: a name introduced by let (immutable) or mut (mutable). Values and types.

bound: a requirement on a generic parameter, like T: PartialEq: “any T that can be compared”. Data and traits.

boundary (disposal boundary): a place where a UI subtree can die: a mounted root, a list row, a when/swap body. Each boundary has an owner. Building UI.

claim: any alias into an owner: a view, an arena handle, a loan of a resource. Valid only while the owner’s epoch is unchanged. The memory model.

codec: the wire format both ends of a connection agree on: json_codec() (readable) or binary_codec() (compact). Services & RPC.

context (ambient value): a value carried invisibly to the code that needs it, like the current owner or turn. Established with run, read with get. Functions & closures.

contract check: at connect time, client and server compare a hash of the service’s shape. A stale client fails cleanly instead of corrupting calls. Services & RPC.

copy: what every binding, assignment, argument pass, field store, and return does to a value. The receiver gets its own; the original is untouched. The signature decides: a function returning Inner returns a value even where its body names the receiver’s storage; one returning &mut Inner returns the projection. The memory model, spec §6.1.

derive: an attribute like [derive(PartialEq, Debug)] that generates a trait implementation from a type’s shape. Data and traits.

dirty: a draft whose local value has edits the server hasn’t confirmed yet. Dirty fields ignore adoption; the user’s text wins. Reactive state.

draft: a local-first cell for editing server state: typing updates locally at once, commits in the background, and keeps your text on failure. Reactive state.

drop: destruction. The Drop hook runs at an owner’s scope end; drop(x) moves a value in to destroy it early. Only resources have one. Resources.

echo: your own change arriving back through a mirror. A draft recognizes it and does nothing, so your caret never jumps. Reactive state.

effect: code that runs now and again on every change of a signal, cleaned up automatically by its owner. Reactive state.

entrypoint: fun main in the entry module. It runs automatically; on Node the process exits when it finishes. Async.

epoch: an owner’s abstract version counter. It advances when the owner is rebound, resized, moved, or dropped; a claim is valid only while it has not. The memory model.

extern: a declaration binding a host (JavaScript) function, object, or property so Vilan code can call it. Platforms.

frame: one encoded message on the wire. You only meet it when building custom transports. rpc reference.

handle: a small copyable id into an arena. Storable anywhere a value is, which views are not. The memory model.

lang item: a std declaration the language itself depends on, like Option for ?. or Add for +. Spec appendix.

layer: the platform-specific part of the standard library. Base is everywhere; the browser layer is browser-only; the process layer is server-only. Platforms.

local-first: updating local state immediately and syncing in the background, instead of waiting on the network. What drafts implement. Reactive state.

mirror: an [expose]d server signal that every connected client receives a live copy of. The server writes; every client updates. Services & RPC.

monomorphization: how generics compile: each concrete use gets its own specialized code, so generic dispatch has no runtime cost. Data and traits.

nursery: the structured way to spawn: nursery(body) joins every task spawned in the body’s dynamic extent before returning the body’s value, applies the first-observed error rule, and owns the cancellation signal std IO listens on. Async.

owner: the object that collects subscriptions and disposes them when its subtree dies. Created by the framework at boundaries; you rarely touch one directly. Reactive state.

panic: aborting the program with a message, for states that should be impossible. Expected failures are Results instead. Control flow.

pattern: the shape on the left of a match arm: a variant to match, payloads to bind (Some(let x)), a literal, or _. Control flow.

platform: what a package builds for: Node, Deno, Bun, or the browser. Decides which std layers are importable. Platforms.

prelude: the names available without imports. Two layers: the built-in set the language always has (the primitive types, List, void), and a per-package set named by [package] prelude — std’s base one (print, Option/Some/None, Result/Ok/Err) by default, "std::web" for applications, any module for a custom one, or false for none. A prelude is the weakest scope: declaring or importing one of its names shadows it silently. Spec §4.7.

resource: a value with a single owner that moves instead of copying and is destroyed deterministically after its last use (a Database, an OwnedNursery). Resources.

safe integer: an integer JavaScript’s 64-bit floats represent exactly: anything within ±2^53. Vilan’s i53/u53 are named for this window. Values and types.

service: a server struct whose [rpc] methods clients call and whose [expose]d signals clients mirror. Services & RPC.

signal: a value cell that code can subscribe to. The unit of reactive state. Reactive state.

spawn: starting async work without waiting for it: async expr. Gives you a Task<T>. Async.

subscription: one live “call me on change” registration on a signal. Effects manage theirs through owners; manual sub hands you the object to dispose. Reactive state.

suspension: a point where a function pauses and other code runs: a call to something async, or an explicit await. Views may not be held across one. Async.

task: the handle a spawn yields: eager, opaque, copy-refers-to-the- same-task. A task’s failure is absorbed at the spawn: a later await receives it; an unobserved failure is reported, not crashed on. Async.

trait: a named capability a type can implement, used as a bound on generics. Like an interface, but explicit and compile-time only. Data and traits.

transport: the thing that carries rpc calls: the reconnecting WebSocket in production, http or in-process variants for special cases. rpc reference.

turn: a batch of signal writes that becomes visible at once. Event handlers and rpc handlers each run in one automatically. Reactive state.

value semantics: the rule that data is copied, not shared, unless you use an explicit sharing tool. The memory model.

variant: one case of an enum, possibly carrying data: Shape::Circle(2.0). Data and traits.

view: a short-lived borrow of a place (&x, &mut x) that aliases instead of copying. Can’t be stored, returned into long-lived state, or held across a suspension. The memory model.

wave: one settling of a turn: every affected watcher runs once with the final values. Reactive state.

Wire: the “can travel over the network” capability: scalars, lists and options of Wire types, and anything with [derive(Wire)]. Services & RPC.