Mica is a systems programming language with clean, structured syntax and explicit control over the machine. This glossary defines the core terms used across the compiler — the language, the memory model, concurrency, the pipeline, the backend, the platform, and the tooling — so that writing and discussion about Mica stays precise.

These English terms are the canonical ones: the compiler’s keywords, error messages, and identifiers use them. A German edition translates and explains the same terms for German-speaking readers. This is a living document.


1 · Language and type system

TermMeaning
compilerTranslates Mica source all the way down to native machine code.
systems programming languageA language with direct, visible control over memory and the machine.
statementAn executable step of the program (assignment, loop, and so on).
expressionA computation that yields a value.
declarationThe introduction of a name (constant, variable, type, function).
recordA composite type made of named fields.
fieldA named member of a record.
arrayAn indexed collection of like elements of fixed size.
setA mathematical set over an ordinal type; membership rather than bit masks.
enumerationA distinct type with named, ordered values.
subrangeA type whose values are restricted to an interval.
generic / type parameterA procedure or function parameterized over a type.
capability constraintThe requirement a type parameter must meet, named by capability words (ordered, numeric, equality, …).
ordinal typeA type with a finite, ordered, countable set of values.
domain (of a type)The set of valid values of a type, with a lower and an upper bound.
lower / upper boundThe smallest / largest value of a domain.
pointerRefers to a value at a memory address.
to dereferenceRead or write the value a pointer refers to.
address-ofTake the address of a variable.
nilAn assignable, comparable pointer value that refers to nothing.
short-circuit evaluationThe right side of and/or is evaluated only when needed.
checked arithmeticA mode that detects and reports integer overflow at run time.
overflowA result outside the representable range.
signed / unsignedInteger types with / without a sign.
floating-pointReal numbers per IEEE 754.
booleanThe type with the values false and true.
stringA sequence of characters; UTF-32 by default in Mica.
code pointA single Unicode character (32 bits).
vector / matrixThe math value types with shape in the type: vector[N] of T, matrix[R, C] of T; a product whose dimensions cannot meet is refused at compile time.
dynamic arrayThe growable array under the value rule: Append and Length, and an assignment that copies — no callee can grow the caller’s list.
spanThe borrowed view over a sequence: formed at a visible Span, never outliving the storage it names.
sequence familiesThe four shapes a run of elements comes in — fixed array, vector and matrix, dynamic array, span — under one reader vocabulary.
wide integerThe fixed-width family past 64 bits, int[N] / uint[N], published as int128 through uint256; converts only through the 64-bit bridge.
bigintThe unbounded integer of the integers unit: verb arithmetic, no promotion, no cast.
residencyWhere a tensor’s storage lives: on gpu keeps the type and moves the value device-side; crossings are the visible ToDevice / ToHost.

2 · Memory safety and the heap

The heart of Mica: heap memory safety is proven at compile time by flow analysis — no garbage collection, no borrow checker, and no lifetime annotations.

TermMeaning
heapMemory for dynamically requested values with a free lifetime.
allocationRequesting a cell on the heap (new).
to free / releaseMake a cell available again (dispose).
obligationEvery allocation creates an obligation that must be discharged on every path.
to discharge (an obligation)Satisfy an obligation — via dispose, by binding it to an owner, or by returning the pointer.
contractThe rule that every obligation must be discharged on every path; otherwise the program does not compile.
ownerEvery allocation has exactly one owner at any moment; the owner’s end of life frees the memory.
ownershipResponsibility for freeing a cell.
owner-boundAn allocation whose release is bound to its owner’s end of life.
lifetimeThe span over which a cell may be used validly.
lifetime classOne of four classifications of each allocation site (see the next four rows).
transferredThe obligation leaves the function through the return value; the caller carries it onward.
manual-verifiedA dispose discharges the obligation on every tracked path — provably leak-free.
manual-unverifiedThe pointer escapes the analysis; the obligation is named but not enforced.
regionA per-owner arena: filled linearly, released in bulk when the owner exits.
region allocatorThe allocator that implements a region: bump-allocate within it, then reclaim the whole region at once at the owner’s exit.
region-based memory managementRequesting memory in blocks and releasing it together rather than cell by cell.
obligation analysisThe dataflow analysis that classifies each allocation site and proves leaks.
garbage collectionA runtime technique that reclaims unreachable memory automatically — deliberately not used by Mica.
borrow checkerRust’s type-based lifetime checking — replaced in Mica by flow analysis.
memory leakMemory that is allocated but never freed.
silent leakAn unnoticed leak; in Mica, a fully-tracked leak is not expressible.
use-after-freeThe erroneous access to already-freed memory.
double-freeErroneously freeing the same cell twice.
dangling pointerA pointer to memory that is no longer valid.
deferRun a statement when the function exits — a cleanup guard.
escapeA pointer leaves the part of the program the analysis can follow.
provenanceWhether a pointer is Mica-owned or foreign (from C); disposing a foreign pointer is a compile error.
memory narrationThe compiler’s per-allocation report: the owner, the proven lifetime class, and the chosen allocator.
allocatorThe component that actually provides heap memory.
bump allocator / arenaAllocates by advancing a pointer; releases in bulk.
fixed arenaA statically budgeted memory area with no operating-system heap behind it — for embedded targets.
plug-inAn interchangeable allocator behind a fixed interface.
compile-time / runtimeDuring translation / during execution.
memory classThe link-time choice of where memory comes from: the hosted heap or a fixed arena — the same source serves both.
fixed arenaOne fixed block serving every allocation, with a budget that fails loudly at a named line instead of growing.

3 · Concurrency and streams

TermMeaning
taskA concurrent activity started inside a concurrent block, whose end joins every task it started.
task treeThe tree of running tasks, which is the scope tree: a scope that ends takes its tasks with it.
carrierAn operating-system thread carrying tasks; how many is a build flag, and results do not depend on the count.
synchronizedThe one keyword under which shared state may be touched; an unmarked shared touch is a compile-time error.
generatorA body producing values one at a time, suspending between them; its instance can be named, paused, and resumed.
streamThe typed conveyor between producers and consumers: pulled from a generator, or pushed over a bounded ring.
bounded ringThe fixed-capacity buffer behind a pushed stream, where fan-in and fan-out meet without a lock in user code.
selectThe statement that waits on several stream arms at once, with an optional timeout arm.
concurrentThe block that opens a task scope; its end is the join no task escapes.
scheduleThe statement that starts one task inside a concurrent block.
YieldThe cooperative suspension point: the running task offers the scheduler a chance to run its siblings.
cancellationA failing sibling cancels the scope’s survivors; the pending flag is delivered at a suspension point and routes the body onto its early leave, defers included.

4 · The compilation pipeline

TermMeaning
scanner / lexerSplits the source into tokens.
tokenThe smallest meaningful unit of source text.
parserBuilds the syntax tree from the tokens.
recursive descentA readable parsing technique that follows the grammar.
abstract syntax tree (AST)The tree representation of the program after parsing.
semantic analysisChecks names, types, and rules; folds constants.
passA distinct analysis or transformation step.
constant foldingEvaluating constant expressions already at compile time.
loweringConverting to a more machine-near representation.
intermediate representation (IR)A flat form between the syntax tree and machine code.
three-address codeAn IR form with at most three operands per operation.
SpectraMica’s intermediate language: a typed, three-address IR.
monomorphizationHow generics compile: one concrete specialization is generated per distinct set of type arguments.
string fusionA chained concatenation (s1 + s2 + s3) lowered to a single sized allocation, with no intermediate temporaries.
activation record / stack frameThe memory frame of a function call.
static linkThe reference through which a nested function reaches its enclosing scope.
nested functionA function defined inside another.
scopeThe region of the program where a name is visible.

5 · Backend and code generation

TermMeaning
control-flow graph (CFG)The program as basic blocks and the edges between them.
basic blockA straight-line run of instructions with one entry and one exit.
static single assignment (SSA)A form in which every value is assigned exactly once.
dominance / dominatorA block dominates another if every path to it passes through it.
dominance frontierThe places where φ-functions are inserted.
livenessWhich values are still needed at a given point.
live rangeThe span over which a value is live.
reaching definitionsWhich assignments can reach a given point.
dataflow analysisTechniques that compute program properties along the control flow.
inliningSubstituting a small function’s body at the call site.
register allocationAssigning values to machine registers or stack slots.
graph coloringA method of register allocation.
spillMoving a value to the stack for lack of a register.
peephole optimizationLocal improvements over a small window of instructions.
instruction selectionMapping IR operations to machine instructions.
calling conventionThe rules for passing arguments and returns.
ABI (application binary interface)The binary interface that compiled programs adhere to.
executableA runnable program (ELF).
static library / archiveA collection of compiled units meant for linking in.
shared objectA library loadable at run time.
debug information (DWARF)Data that lets debuggers map source, types, and variables.
assembler / linkerThe GNU tools Mica uses to produce the binary.

6 · Platform and the C boundary

TermMeaning
contractA JSON description of a C library that enables checked calls.
C ABIThe calling and layout convention through which Mica and C code link and call each other.
foreign function interface (FFI)Access to other languages’ functions — in Mica, through contracts.
standard libraryThe bundled runtime and I/O essentials.
format stringThe template for input and output; checked at compile time.
type fingerprintA digest that detects type mismatches between compilation units.
cross-compilationBuilding for a target architecture other than the host’s.
targetThe operating system and instruction set being built for.
encodingThe character encoding of the target (UTF-32 or UTF-8).

7 · Tooling and quality

TermMeaning
test harnessThe tool that compiles, runs, and checks every test case.
test caseA single check described by a manifest.
manifestThe description of a test case (sources, expected output).
regression testA test that permanently locks in behavior once achieved.
quality gateAn internal check that controls the compiler’s own transformations.
stress testA test with especially large inputs.
benchmarkA measurement for performance comparison.
retired instructionsMachine instructions actually executed — the deterministic performance metric.
wall-clock timeThe elapsed real time of a run.

8 · Machine learning in the language

TermMeaning
autogradDifferentiation by recording: the program computes forward while the tape transcribes, and one backward walk assigns every knob its blame.
tracked valueThe autograd knob: a pair of a value and its tape node id, declared tracked.
tapeThe recording window: operations on tracked values inside tape … end append to one transcript per program.
Backward / GradientThe reverse walk over a closed tape window, and the read of one knob’s blame after it.
recorded verbA tensor operation that appends its reverse rule to the tape as it runs — Tanh, Softmax, the matrix product, and their family.
device residencyTensor data living on the GPU: placement is a compile-time fact, and an operation that would silently shuttle between host and device does not compile.
layer verbsThe curated device vocabulary — RowSoftmax, LayerNorm, CrossEntropy, AdamStep, TanhMap — running as device kernels behind the same source spelling they have on the host.
formula tierGreek letters, subscript identifiers, and the operators × and · as ordinary Mica spellings, so numeric source reads like the notation it implements.

See also: the German edition and the Simplified Chinese edition of this glossary, and the technical portrait of Mica.