---
url: /glossary.md
description: >-
  Definitions for every technical term used across the Luau course, each linked
  to its teaching page.
---

# Glossary

*Written: {{ $frontmatter.date }}*

Short definitions for terms used across the course. Each term links to the page that teaches it where one exists.

**AnchorPoint**: A Vector2 from `0, 0` to `1, 1` picking which point of a GuiObject sits at its Position. See [UI and input](roblox-fundamentals/ui-and-input.md).

**Annotation**: A type label you write on a variable, parameter, or return, such as `x: number`. See [annotations](strict-typing/annotations-and-inference.md).

**API**: The named operations something offers. A ModuleScript's API is the table it returns.

**Argument**: A value you pass to a function call. Parameters receive them.

**Array**: A table used with consecutive integer keys starting at 1. See [tables](programming-fundamentals/tables-part-1.md).

**Assertion**: A check that stops the program with an error when it fails, via `assert`.

**Attribute (Luau)**: A `@name` tag before a function that adjusts compiling or analysis, such as `@native`. Distinct from Instance attributes.

**Attribute (Instance)**: Custom data attached to an Instance in Studio, replicated to clients. See [DataModel](roblox-fundamentals/datamodel-and-instances.md).

**BindableEvent**: A same-side Engine event for script-to-script signals without crossing the network.

**Bootstrap**: The small entry script that wires a project together and starts everything in order, with no game logic of its own.

**Callback**: A function you hand to other code so it can call you back later, such as an event connection.

**Cast**: An assertion between related types with `::`. See [casts](strict-typing/casts-and-assertions.md).

**Client**: A player's device and its copy of the experience. Never trusted with authority. See [client-server](roblox-fundamentals/remotes-and-networking.md).

**Closure**: A function that remembers variables from the scope where it was defined. See [scope](programming-fundamentals/functions-and-scope.md).

**Comm**: The codebase's networking package: the server binds functions and signals, the client uses them, instead of hand-built remotes.

**ContextActionService**: Binds one named action across keyboard, gamepad, and touch, with an automatic touch button. See [UI and input](roblox-fundamentals/ui-and-input.md).

**Controller**: A client-side module owning rendering and input intent for one feature. See [patterns](intermediate/patterns-and-boundaries.md).

**DataModel**: The tree of Instances that makes up a place. See [DataModel](roblox-fundamentals/datamodel-and-instances.md).

**DataStore**: Roblox cloud key-value storage for persistence. See [state and data](intermediate/state-and-data.md).

**Deprecated**: Still present but officially discouraged, with a replacement named in the [deprecated inventory](https://create.roblox.com/docs/reference/engine/deprecated.md).

**Dictionary**: A table used with non-sequential keys.

**Discriminated union**: A union whose members carry a tag field so branches can narrow on it. See [narrowing](strict-typing/narrowing-and-guards.md).

**Engine**: The Roblox runtime itself: Instances, services, physics, replication.

**Event**: An object you connect functions to with `:Connect()`; the functions run when the event fires.

**Exhaustiveness**: Handling every member of a union so the leftover branch is `never`.

**Freeze**: `table.freeze` makes a table read-only permanently. Shared modules return frozen tables.

**Generic**: A function or alias parameterized by types, such as `f<T>`. See [generics](strict-typing/generics.md).

**Humanoid**: The object inside a character Model driving health, movement, and life state. See [players](roblox-fundamentals/players-and-characters.md).

**Inference**: Types the checker figures out without annotations. See [annotations](strict-typing/annotations-and-inference.md).

**Instance**: One node in the DataModel, such as a Part or Script. Everything visible or runnable descends from it.

**Intersection**: A type satisfying two types at once, written `A & B`.

**Janitor**: The codebase's cleanup package: one object collects connections and threads, then releases them together.

**Lint**: Automated style/correctness checks without running code (Selene). Distinct from formatting (StyLua) and type checking.

**LocalScript**: A script that runs on the client only, in client containers. See [execution](roblox-fundamentals/scripts-and-execution.md).

**Lune**: A standalone Luau runtime for running scripts outside Studio. See [testing](tooling/testing.md).

**MarketplaceService**: Sells developer products and passes; receipts validate on the server only. See [server authority](roblox-fundamentals/server-authority.md).

**MemoryStore**: Fast temporary cross-server storage with expiry, for queues and matchmaking rather than saves.

**MicroProfiler**: The frame-time profiler: orange bands are simulation work, blue bands are rendering. See [performance](advanced/performance.md).

**Metatable**: A table that customizes another table's behavior through metamethods. See [metatables](luau-basics/metatables-and-oop.md).

**Metamethod**: A double-underscore hook such as `__index` or `__call`.

**ModuleScript**: A script that runs when required and returns one value, cached per side. See [modules](luau-basics/modules-and-require.md).

**Narrowing**: The checker shrinking a broad type after a check. See [narrowing](strict-typing/narrowing-and-guards.md).

**never**: The bottom type, inhabited by nothing; marks unreachable branches. See [type system](strict-typing/subtyping-and-compatibility.md).

**Optional**: A type that includes `nil`, written `T?`.

**OrderedDataStore**: A DataStore that keeps integer values sorted for leaderboards, with sorted paging.

**Pack (type)**: A reusable group of types for variadic positions, such as `T...`. See [packs](strict-typing/type-packs-and-variadics.md).

**Parameter**: A named placeholder in a function definition. Arguments fill them.

**PlayerGui**: Each player's personal UI container; StarterGui copies land here on spawn. See [UI and input](roblox-fundamentals/ui-and-input.md).

**Parent**: The Instance a thing lives under. Assigned last when constructing Instances.

**pcall**: Protected call: runs a function, returns success plus result instead of erroring. Mandatory around DataStore calls.

**ProcessReceipt**: The server callback that grants developer-product purchases; only it proves payment. See [server authority](roblox-fundamentals/server-authority.md).

**ProfileStore**: The community session-locking data package this course mirrors conceptually. See [state and data](intermediate/state-and-data.md).

**Promise**: A chaining async package; the course prefers task pipelines and covers it as an alternative. See [packages](advanced/packages.md).

**Realm**: Which side may load a package: shared (`Packages`) or server-only (`ServerPackages`).

**Remote**: A RemoteEvent or RemoteFunction crossing the client-server boundary. See [remotes](roblox-fundamentals/remotes-and-networking.md).

**Replication**: The Engine copying state from server to clients.

**Require**: Loading a ModuleScript's return value with `require()`.

**Ripple**: A tweening package alternative to raw TweenService. See [packages](advanced/packages.md).

**RunContext**: A property deciding whether a Script runs on server or client.

**ScreenGui**: The root container for 2D interface screens. See [UI and input](roblox-fundamentals/ui-and-input.md).

**Script**: A script running on the server (or per RunContext), in server containers.

**Sealed table**: A table whose shape is fully known, allowing width subtyping. See [subtyping](strict-typing/subtyping-and-compatibility.md).

**Selene**: The Luau linter for correctness checks without running code. See [format, lint](tooling/format-lint-version-control.md).

**Server**: The authoritative host of an experience. See [server authority](roblox-fundamentals/server-authority.md).

**Service (codebase)**: A server-side module owning one feature's state and validation. See [patterns](intermediate/patterns-and-boundaries.md).

**Service (Engine)**: A singleton object obtained with `game:GetService`, such as Players or Workspace.

**Shared module**: A pure frozen module both sides may require: config, ids, types, constants only.

**Signal**: The codebase's same-side event package.

**Singleton type**: A type with exactly one value, such as `true` or `"ready"`.

**Solver**: The part of Luau that checks types. See [solver](strict-typing/solver-and-migration.md).

**Strict mode**: `--!strict`: the checker verifies everything. See [modes](strict-typing/modes.md).

**StarterGui**: The edit-time UI container replicated into each PlayerGui on spawn. See [UI and input](roblox-fundamentals/ui-and-input.md).

**Streaming**: Instance streaming sends nearby content first so large places load fast.

**StyLua**: The deterministic Luau formatter. See [format, lint](tooling/format-lint-version-control.md).

**Suppression**: The solver's internal cascading-diagnostic behavior (not a user per-line silencer; [lints](https://luau.org/lint/) suppress with `--!nolint NAME` at the file top, and the type checker disables only via `--!nocheck`, fix the root type error).

**task library**: The modern scheduling API: `task.wait/spawn/delay/defer`. See [task](roblox-fundamentals/task-and-async.md).

**TestEZ**: The archived BDD test library, cited as legacy only. See [testing](tooling/testing.md).

**Truthiness**: Only `nil` and `false` count as false; `0` and `""` count as true.

**TweenService**: Animates property values over time with easing. See [services](roblox-fundamentals/services-and-events.md).

**Type function**: Luau code that computes types, running inside the new solver. See [type functions](rfcs/type-functions.md).

**UDim2**: A 2D position or size pairing scale with pixels. See [UI and input](roblox-fundamentals/ui-and-input.md).

**Union**: A value of one type or another, written `A | B`.

**unknown**: The top type: everything inhabits it, so you must narrow before use. See [narrowing](strict-typing/narrowing-and-guards.md).

**Unsealed table**: A table still under construction during inference. See [subtyping](strict-typing/subtyping-and-compatibility.md).

**Upvalue**: A local from an outer scope captured by a closure.

**UserInputService**: Raw keyboard, mouse, touch, and gamepad input on the client. See [UI and input](roblox-fundamentals/ui-and-input.md).

**Variadic**: A function taking any number of trailing arguments via `...`.

**Wally**: The Luau package manager: `wally.toml` declares, `wally.lock` pins, `wally install` fetches.

**Rojo**: Filesystem-first Roblox workflow: edit in an editor, sync into Studio, build places from the command line.

**Yield**: Pausing a thread until something resumes it, such as `task.wait()` or a RemoteFunction response.
