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, 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).

2 · Memory safety and the heap

The heart of Mica 5.0.0: 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.

3 · 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.

4 · 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.

5 · Platform and interoperability

TermMeaning
contractA JSON description of a C library that enables checked calls.
interoperabilityThe smooth interplay of Mica and C code.
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).

6 · 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.

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