# Appendix F: Glossary

> Appendix F: the technical terms used in this book, each in one sentence, with the chapter that explains it.

Canonical: https://alice-lang.org/documentation/learn/glossary/

[Documentation index](https://alice-lang.org/documentation/llms.txt) · [Complete book](https://alice-lang.org/llms-full.txt)

The first time a chapter uses one of these terms, the word links here. Each entry gives the meaning in one sentence and the chapter that explains it.

## A

### Actor

A component with private state that changes it only by handling messages, one at a time. See [15. Async code and actors](https://alice-lang.org/documentation/learn/async.md).

### Arena

A large block of memory from which many small values are allocated and freed together. See [Appendix E: Coming in 1.0](https://alice-lang.org/documentation/learn/coming-in-1-0.md).

## B

### Block

A piece of code in braces or do...end that you hand to a method, which calls it. See [4. Collections](https://alice-lang.org/documentation/learn/collections.md).

### Borrow

Lending an array to a method that promises only to read it and not to keep it. See [9. Ownership and memory](https://alice-lang.org/documentation/learn/ownership.md).

## C

### Capability security

A design where code gets authority only through the values it is given, never by name. See [10. Safety as compile errors](https://alice-lang.org/documentation/learn/safety.md).

### Channel

A queue that carries values from producer threads to consumer threads. See [15. Async code and actors](https://alice-lang.org/documentation/learn/async.md).

### Counterexample

The exact input for which a rule returns false or raises. See [13. Rules and proofs](https://alice-lang.org/documentation/learn/proofs.md).

## D

### Data race

Two threads accessing the same data at the same time, at least one of them writing. See [10. Safety as compile errors](https://alice-lang.org/documentation/learn/safety.md).

### Domain

The finite set of values a rule variable takes, such as x in 0..100. See [13. Rules and proofs](https://alice-lang.org/documentation/learn/proofs.md).

## E

### Exhaustiveness

The check that a case over an enum handles every variant. See [7. Sum types and pattern matching](https://alice-lang.org/documentation/learn/sum-types.md).

## F

### Fork

Running two independent calls at the same time on different cores, then joining their results. See [11. Parallelism without threads](https://alice-lang.org/documentation/learn/parallelism.md).

### Fusion

Compiling a chain such as map, select and sum into one loop with no temporary arrays. See [4. Collections](https://alice-lang.org/documentation/learn/collections.md).

## G

### Garbage collector

The part of .NET that finds objects no longer in use and frees their memory. See [9. Ownership and memory](https://alice-lang.org/documentation/learn/ownership.md).

### Guard clause

An early exit such as return unless x, after which x is known not to be nil. See [2. A guessing game](https://alice-lang.org/documentation/learn/guessing-game.md).

## H

### Heredoc

A multi-line string literal written between <<\~NAME and a line containing NAME. See [5. Strings and text](https://alice-lang.org/documentation/learn/strings.md).

## I

### Immutable

Not changeable after creation; changing it means making a new value. See [5. Strings and text](https://alice-lang.org/documentation/learn/strings.md).

### Inference

The compiler working out a type, or a property such as purity, without you writing it. See [3. Common programming concepts](https://alice-lang.org/documentation/learn/common-concepts.md).

### Interpolation

Inserting the value of an expression into a string with #{...}. See [1.2 Hello, Alice!](https://alice-lang.org/documentation/learn/first-program.md).

## K

### Kernel

The body of a loop compiled to run on the GPU, one thread per iteration. See [16. The GPU](https://alice-lang.org/documentation/learn/gpu.md).

## L

### Lambda

A function value written ->(x : T) { ... } that can be stored and passed around. See [14. Using .NET](https://alice-lang.org/documentation/learn/dotnet.md).

### Lane

One of the slots of a SIMD vector register; one instruction works on all lanes at once. See [12. Performance](https://alice-lang.org/documentation/learn/performance.md).

### Leaf

A call deep in a recursion tree; Alice runs those as plain calls instead of forking. See [11. Parallelism without threads](https://alice-lang.org/documentation/learn/parallelism.md).

## M

### Mixin

A module whose methods are copied into every class that includes it. See [6. Structs, records, classes and modules](https://alice-lang.org/documentation/learn/types.md).

### Move

Handing an owned array to another variable or method; the old name may not be used after it. See [9. Ownership and memory](https://alice-lang.org/documentation/learn/ownership.md).

## N

### NativeAOT

.NET compiling a whole program ahead of time into one native executable. See [18. Projects and packaging](https://alice-lang.org/documentation/learn/packaging.md).

### Nil safety

The rule that only T? types may hold nil, and must be checked before use. See [3. Common programming concepts](https://alice-lang.org/documentation/learn/common-concepts.md).

## O

### Owned

An array that has exactly one reference, so its buffer can be reused instead of collected. See [9. Ownership and memory](https://alice-lang.org/documentation/learn/ownership.md).

## P

### Pooled

Taken from and returned to a per-thread pool of buffers instead of allocated each time. See [9. Ownership and memory](https://alice-lang.org/documentation/learn/ownership.md).

### Pure

Computing only from its arguments: no output, no writes to outside state. See [10. Safety as compile errors](https://alice-lang.org/documentation/learn/safety.md).

## R

### Record

A type declared in one line with named, read-only fields and value equality. See [6. Structs, records, classes and modules](https://alice-lang.org/documentation/learn/types.md).

### Reduction

Combining many values into one, such as a sum, in a loop that may run in parallel. See [11. Parallelism without threads](https://alice-lang.org/documentation/learn/parallelism.md).

### Rule

A pure Boolean method over finite domains that alice prove checks for every input. See [13. Rules and proofs](https://alice-lang.org/documentation/learn/proofs.md).

## S

### Sendable

A value that may cross between actors because nobody can change it afterwards. See [15. Async code and actors](https://alice-lang.org/documentation/learn/async.md).

### SIMD

Single instruction, multiple data: one CPU instruction that works on several numbers at once. See [12. Performance](https://alice-lang.org/documentation/learn/performance.md).

### SMT solver

A program that proves or refutes logical formulas, used by alice prove --smt. See [13. Rules and proofs](https://alice-lang.org/documentation/learn/proofs.md).

### Strict mode

A setting in which every expression must have a static type, or the build fails. See [10. Safety as compile errors](https://alice-lang.org/documentation/learn/safety.md).

### Sum type

A type whose values are one of several shapes, each with its own fields. See [7. Sum types and pattern matching](https://alice-lang.org/documentation/learn/sum-types.md).

### Supervisor

An object that restarts crashed actors with a fresh state. See [15. Async code and actors](https://alice-lang.org/documentation/learn/async.md).

## V

### Variant

One of the shapes of an enum or sum type, such as Shape::Circle. See [7. Sum types and pattern matching](https://alice-lang.org/documentation/learn/sum-types.md).

## W

### Workspace

A directory of Alice packages that are built together. See [18. Projects and packaging](https://alice-lang.org/documentation/learn/packaging.md).

## Continue reading

- Previous: [Appendix E: Coming in 1.0](https://alice-lang.org/documentation/learn/coming-in-1-0.md)
- Next: [Programs, files, and names](https://alice-lang.org/documentation/language/programs.md)
