# Glossary Canonical nomenclature for AILang. Use the **canonical term**; never use a term under **Avoid**. If you need a concept that is not listed here, reuse the closest existing term — do not silently coin a new one. New entries are added only to record nomenclature already in consistent use; see `~/dev/skills/docs/glossary-convention.md`. This file is the source of truth for the project's nomenclature: where any other document (including the design ledger) names a concept differently, the canonical entry and its **Avoid** list win. --- ## Authoring forms and identity ### Form-A **Avoid:** Form A, authoring surface, authoring projection, surface syntax, .ailx The textual authoring projection an LLM author writes, stored in `.ail` files; it round-trips byte-isomorphically to its [[JSON-AST]]. The retired `.ailx` extension named the same form. ### Form-B **Avoid:** Form B, prose projection, prose surface, display projection, human prose The lossy, human-readable prose projection of a module, for display only — there is no Form-B parser, so it is never an authoring surface. ### JSON-AST **Avoid:** canonical JSON, canonical JSON-AST The canonical, hashable, content-addressed structured form of a module, serialised on disk as `.ail.json`. Derived in-process from [[Form-A]] via `ailang_surface::parse`; the two forms are byte-isomorphic. ### round-trip **Avoid:** roundtrip The invariant that parsing [[Form-A]] and printing it back is the identity (`parse ∘ print = id`), which keeps [[Form-A]] and the [[JSON-AST]] byte-isomorphic. ### content-addressed **Avoid:** — Identified by the hash of the [[JSON-AST]], so a symbol can be verified without spending context window reading its body. ## Memory model ### RC **Avoid:** — Reference counting — the canonical and only production allocator (CLI default `--alloc=rc`). Pairs with [[uniqueness]] analysis to elide counts where ownership is provably unique. ### uniqueness **Avoid:** linearity, linear types The static, post-typecheck dataflow analysis proving a value is uniquely owned, so its [[RC]] operations can be elided and in-place reuse is safe. ### mode **Avoid:** ownership mode, uniqueness mode The `own`/`borrow` annotation on a function parameter position declaring how the function consumes that argument. Modes belong to parameter positions, not to types in general. ### clone **Avoid:** RC clone, RC inc The explicit source term (`(clone x)`) that duplicates ownership of a value by incrementing its [[RC]]. ### drop **Avoid:** dec, RC dec The [[RC]] decrement emitted when a value leaves scope, plus the shallow-dec emitted before a tail call. ### escape analysis **Avoid:** — The per-function pre-pass that decides whether an allocation can live on the stack instead of the heap. ### frozen value layout **Avoid:** frozen layout, box layout The pinned in-memory layout of a frozen (immutable, shareable) value, held stable across the [[embedding ABI]]. ### mut-local **Avoid:** mutable variable, mutable local binding, mut variable A mutable local binding (`mut`); mutation is confined to locals, with no mutable variables or assignment across binders. ## Types, classes, dispatch ### typeclass **Avoid:** type class, type-class The narrow, Haskell-lite class system (`ClassDef` / `InstanceDef` declarations) — the sole ad-hoc-polymorphism mechanism. ### monomorphisation **Avoid:** — The sole specialiser: every class method is resolved to a concrete instance body at compile time, so there is no runtime [[method dispatch]]. ### method dispatch **Avoid:** virtual dispatch, dictionary passing, vtable Type-directed resolution of a class method to its instance body; in AILang it is resolved statically by [[monomorphisation]], never by runtime dictionaries or vtables. ### superclass **Avoid:** super-class, parent class A class constraint that another class requires of its instances. ## Effects ### effect set **Avoid:** effect row, effect annotation The explicit set of algebraic effects a function may perform, declared in its type. AILang has no effect-row variables, so the set is closed. ### effect-op **Avoid:** effect op, effect operation A single named operation of an effect (its perform site), whose signature may carry a `borrow`/`own` default. ## Kernel tier and codegen ### kernel-tier **Avoid:** kernel tier The privileged tier of modules (e.g. [[prelude]], `raw_buf`) that may carry [[intrinsic]] bodies and are auto-imported with bare-name visibility. ### prelude **Avoid:** — The [[kernel-tier]] standard module auto-imported into every module. ### intrinsic **Avoid:** compiler-supplied body A function whose body is marked `(intrinsic)` in a [[kernel-tier]] source and is emitted by a codegen [[intercept]] rather than written in AILang. ### intercept **Avoid:** — An entry in the codegen `INTERCEPTS` registry that supplies LLVM IR for an [[intrinsic]]-marked function; the registry and the `(intrinsic)` markers stand in a checked bijection. ### MIR **Avoid:** — The post-[[monomorphisation]] typed intermediate representation (`MirModule`) produced by `lower_to_mir`, sitting between type-checking and codegen. ## Embedding ### embedding ABI **Avoid:** embedding-ABI The stable C ABI for calling compiled AILang from a host language, shipped as a `staticlib`.