modus
Menu

Glossary

Status: draft 2, 2026-11-09. The owner accepted the terms on 2026-11-09, with "module" in place of "unit". "Person" is provisional.

This file is the one place that defines the terms of the project. Each concept has one term. Documents, code and conversation use that term and no synonym. The "Do not use" column lists the words that this term replaces. References such as (P10) point to a property in PROPERTIES.md.

Code

TermDefinitionDo not use
ModuleThe one format of compiled code. A module is position-independent, exports functions, and is identified by the hash of its content. A library and an executable are both modules (P10)unit, library, executable, binary, package, DLL, shared object. "Kernel module" names the Linux concept only
ExportA function that a module makes callable from outside the modulesymbol, entry
ImportA reference from one module to another module by content hash, with the exports that it usesdependency, link
CommandAn export that a person can call from the console. A command is not a separate kind of thing (P19)CLI program, tool, script
Module metadataThe description of a module: segments, imports, exports with the type of each parameter and result, origin, debug information (P12)headers, manifest, symbol table
Flat tableAn array of fixed-size records at a known offset. The form of the module metadata inside a module. The loader reads this form (P12, P13)section, blob
ReplacementA record {hash, hash} that the starter of a program gives to the loader: where a module imports the first module, the loader loads the second one, after it checked that the descriptions of the used exports are equaloverride, shim, LD_PRELOAD, DLL redirection
Replacement tableThe replacements of the machine. The root service holds it, and gives its records to the loader of each program that it starts. A program that loads modules reads it with a grant Read. A program cannot change it: a program with the role Replace asks the root serviceoverride list, LD_PRELOAD, redirection table
LoaderThe user-space code that builds a program from a module and its importslinker, dynamic linker
Prepared moduleThe memory objects that hold the segments of a module that do not change after the load, copied from the file, in two parts: the code (the segments that the loader never writes, the same at each base) and the fixed part (the segments that are read-only after the load, rebased and bound for one base and one binding). The program that starts programs keeps them in a table, by the hash of the module, while a program maps themshared library, image cache, page cache
Shared codeThe pages of a prepared module that each program of the module maps without Write: its code, its constants, and its data that is read-only after the rebase. Each program has its own copy of the writable segmentstext segment, shared object
Slot8 bytes of data of a module that the loader writes with the address of one export of an import. A call to another module is one indirect call through a slotGOT entry, import address, stub
Load sourceWhat a loader can read: the files that the program was granted, each named by its hash, and the replacements that the starter of the program gives. The loader finds an import only there (P20)search path, library path, module store (for this)
Module spaceThe modules that a loader put in one program. Each module is in it one time: two modules that import a third one call the same copy. A module leaves when no module of the space and no load of the caller uses itlink map, address space (for this)
Load errorThe record of a load that failed (module.Load_Error): the stage, the module that was being loaded, the import, a replacement on the path, the export, and the two descriptions that differ. The caller owns it. Zero is no error. It is the error record of the loader, larger because it holds namesexception, errno, error message
Stop reportThe record that the kernel keeps of a program that stopped on a fault: the stop code, the instruction, the address, the module record of the module that ran, and the stack trace. The holder of the program handle reads itcore dump, crash report, signal info
Error recordThe record that a call that failed gives back to its caller (errors.Error_Record, 56 bytes, seven Integer fields): the error kind, the unit, the operation or export, the number of the argument, the value that it had, the limit, and what the system found. A kernel operation gives it in its completion record, and so does a ring of a service (the values of a completion whose status is not 0); an export writes it at an address that the caller gives. It holds values only. Zero is no error (MODULE_CONTRACT.md, section 8)errno, exception, error code, detail record, error message
Error detailOne thing that a call that failed has to say, as one record of the error form of the call: an error record for an export, a load error for the loader. A call gives its error details in a table of error details that the caller gives; the error record of the call is the first error detail (MODULE_CONTRACT.md, section 8, "The table of error details")sub-error, cause, inner error, error list, diagnostic
Table of error detailsAn optional Append table parameter of error details, in memory of the caller: the last parameter of an export that has an error record, with the record of the error record. With no table (nil) the call gives its error record only; the count of the table is the count of all the error details, also those that did not fiterror list, error buffer, error stack, error chain
Error kindWhat an error record says is wrong: an empty argument, a handle that was revoked, a budget that cannot pay, ... (errors.Kind). The documentation of an export names the kinds that it giveserror code, errno value, exception type
Frame pointerThe register rbp of a function: the address of the frame of the function on the stack, where the frame pointer and the return address of its caller are. Each module keeps it (rule 8 of MODULE_CONTRACT.md)base pointer, frame record
Stack traceThe return addresses of the calls that led to the instruction of a fault, from the frame pointers, each with the module record that holds it. Part of a stop reportbacktrace, call stack (for this), unwind
Module recordWhat the kernel keeps of one module in a program: its addresses, its hash, and the hash that a replacement put it in place of. The loader writes it; the kernel does not read the module. The module records of a program that runs are its identitylink map entry, loaded image list
TableRecords of one record description that follow each other in memory, and their count. A Table result is written by the callee in memory of the caller, with the count of the full table (P12, P19). The console holds a table as one valuelist, array (for this), result set, rowset, data frame
Table parameterA parameter of an export of the type Table: a table of records of one description in memory of the caller, with a direction. The callee works in that memory in a direct call; an isolated call carries the records in the call region or in a lent memory object (MODULE_CONTRACT.md, "Tables and bytes as parameters")array argument, buffer argument, list parameter
BytesA parameter type: bytes with no description (not only UTF-8), in memory of the caller, with a direction. It is a table parameter whose record is one byte. A Text is the read-only form for a personblob, buffer, byte array, binary
DirectionWhat the callee does with the memory of a table parameter or of a Bytes parameter: Read (it reads the count records), Change (it reads and writes the count records, the count stays), Append (it writes after the count, and gives the new count). The rights of a lent memory object are the direction: Read, or Read and Writemode, access, in/out, intent
Table placeThe record of 24 bytes {address, count, capacity} in memory of the caller that names the memory of a table parameter or of a Bytes parameter in a direct call; the callee receives its address. Count and capacity are in records (in bytes for Bytes)descriptor, span, fat pointer, buffer record (for this)
Information functionA function that reads the flat tables of modules, the module records of the kernel or the replacement table, and fills a table in memory of the caller (support/information). It allocates nothing and keeps no state (P12)query, reflection API, introspection
CatalogThe input of an information function: the modules that a program can see, and the replacements of the machine. Today: the boot image that the program was granted, and the records of the replacement tableregistry, repository, package database, index
ProblemThe error value that a reader of input that nobody checked gives for a rule that the input breaks: the kind, where (the table and the record of a module, or the layer of a frame), the byte, the bad value and its limit. An information function gives one for a module (information.Problem); the network service gives one for a frame (datagram.Problem)exception, errno, error code
Boot imageThe one block of data that the boot program loads with the kernel. It holds the modules of the first programs, each with its nameinitrd, ramdisk
Position-independentCode that runs correctly at any address with no change to its bytesrelocatable, PIC, PIE
Scalar formThe form of a procedure that computes one value with one instruction, in the general registers. It is the reference of each vector form of the same procedure, and the code of a target with no vectors (docs/SIMD.md)plain C version, fallback (for this), slow path
Vector formA form of a procedure that computes several values with one instruction, in the 128-bit registers of SSE2, and gives the same bytes as its scalar form for every input (docs/SIMD.md)SIMD version, kernel (for this), fast path, intrinsics version

Running code

TermDefinitionDo not use
ProgramA running module with its own address space and its own handle tableprocess, task, application, app
ThreadOne flow of execution inside a program: a register state and a kernel ring. The threads of a program share its memory and its handlesfiber, task
Thread recordThe record that a thread can read about itself: its own address, the parameter of its entry, its number, its event word. The gs register of the thread holds its addressthread-local storage, TLS, TEB
Word waitA thread waits while a 32-bit word of memory holds a value. Another thread changes the word, then wakes the threads that wait on itfutex
LockOne word of memory that one thread holds at a time. A thread enters the kernel only to wait for itmutex, critical section, semaphore
Event wordA word of the thread record. The kernel adds 1 to it when an interrupt of the program arrives, when a held program stops, and when another thread of the program ends. A thread waits on it with the word waitsignal, notification
ProcessorOne unit of the machine that executes instructions. A machine has several. Each one runs one thread at a timecore, CPU, hart
Processor recordThe record that the kernel keeps for one processor: its kernel stack, its current thread, its page tableper-CPU data
Switch of threadsThe moment when a processor leaves one thread (a wait, the end of a time slice, a preemption, a stop) and takes another one, or the same one again, from a run queue (schedule). The kernel saves the extended state of the thread that it leaves and restores the extended state of the thread that it takes there, and nowhere elsecontext switch, task switch
Extended stateThe registers of a thread that are not general registers and that the processor saves and restores as a block: the x87 registers, the SSE registers and MXCSR, and, when the kernel enables them, the AVX and AVX-512 registers (docs/ARCHITECTURE.md, "The extended state of the processor")FPU state, floating-point state, vector state, XSAVE state
State componentOne part of the extended state that one bit of the register XCR0 enables and that the processor saves as one unit: x87, SSE, AVX (the high halves of the ymm registers), and the three parts of AVX-512 (the opmask registers, the high halves of zmm0 to zmm15, and zmm16 to zmm31)XSAVE feature, xfeature
Extended state areaThe memory where the kernel saves the extended state of one thread: a fixed field of 2688 bytes, aligned on 64 bytes, in the entry of the thread in the thread table of the kernel. The area is complete while the thread is on no processor; while the thread runs, its state is in the registers. Only the kernel reads and writes it; no program maps itFPU area, XSAVE area, save area
Usable instruction setA group of instructions of the processor (SSE4.2, AVX2, AVX-512 F, BMI2, ...) that the processor has and whose registers the kernel saves. A program reads the set once with support/instruction_sets, from CPUID and XCR0, with no kernel operation. An instruction of a set that is not usable stops the program (invalid opcode)CPU feature, ISA extension
Start stateThe content of the extended state area of a new thread: the x87 control word 0x037F, MXCSR 0x1F80, every register zero, and a header that says that only the x87 and SSE components are in the areainit state (for this), initial FPU state
StageOne part of the start of the machine, with a start time and a duration: the firmware, two of the boot program, four of the kernelphase
Step of the startOne point on the path of the start that the boot display shows (bootscreen.Step): ten points, from the firmware to the desktop. The program that draws says which step the machine does now. A step has no time: a stage is a part with a measured timephase, progress
CardThe frame of one subject in a display: a title in its accent, a caption that names its record, and its content (docs/DESIGN.md)panel, box, widget
TileA rectangle that stands for one thing of a set, with its name inside; its width can be a size (docs/DESIGN.md)chip, badge
AccentThe color of the concept that a card is about (docs/DESIGN.md)theme color
Boot recordThe record that the kernel keeps of how the machine started (Boot_Report): the stages, the memory ranges of the firmware, the firmware, the framebufferboot log, dmesg
Guard pageA page of addresses with no memory, next to a stack: a use of it is a page fault, not a write on other memoryred zone, canary
Direct mapThe part of the kernel half of the addresses that shows all physical memory. It is never executablephysmap, identity map
RunPages that follow each other in a page table with one protection (Mapping_Run)extent, VMA
Self testA boot of the machine where the kernel does one thing that its page tables must refuse, to prove that the processor refuses itnegative test, lkdtm
Log recordOne entry of the log: a number, a time, a program, a thread, a level, a channel and a text (Log_Record). The kernel sets all but the last threelog line, message
Cut markThe end of a text that a place of a fixed size could not hold: the start of the text, after a whole character, then "... and N bytes more", where N counts each byte that the place does not hold (contract:cut_mark). The one form of a cut text in the system: a text is written whole, cut with this mark, or refused; never cut in silenceellipsis, truncation, "..." (alone)
ChannelThe short name that a program gives to a log record, to group records of one subjectfacility, tag, category, logger
LevelHow much a log record matters: Info, Debug, Warning or Errorseverity, priority
Lock of the kernelA word that one processor holds at a time, to change one kind of kernel data. Each kind has a place in the lock order (ARCHITECTURE.md, "Locks of the kernel"). Not the lock of a program, which is a word of the programspinlock, mutex (for this)
Lock orderThe order of the kinds of locks of the kernel: control, program, origin, region, frame, cache, log, wait, run. A processor takes a lock only if it holds no lock of a later kind, so no deadlock existslock hierarchy, lock ranking
Control lockThe one lock of the kernel for the paths that cross programs or end objects that several programs name: start, stop, give to another program, revoke. Not on the paths of the work of a programbig kernel lock, giant lock, kernel lock
Program lockThe lock of one program: its handles, its mappings and its page tableaddress space lock, mmap lock
Frame lockThe lock of the page frames, the reserved pages, the pages of the budgets and the slots of the memory objectszone lock, page allocator lock
Run queueThe threads that are ready and that no processor runs, of one processor: its home threads. Its run lock protects it and the scheduling state of these threadsrunqueue, ready list
StrategyThe rule that orders the ready threads of each run queue: a table of six functions of the kernel (ready, pick, tick, stopping, wake preemption, move) over fixed fields of the thread record and of the run queue. The machine has one strategy at a time: round robin, fair or EEVDF. A program with the right Schedule on the machine changes it while the system runs (Strategy_Set, docs/SCHEDULING.md)scheduler class, policy, scheduling algorithm, governor
TurnThe time that a thread runs on a processor from its pick to the moment when it leaves: it waits, its budget has no time, or its strategy ends the turnquantum, timeslice (for this)
Time sliceThe longest turn under each strategy: 10 ticks. At its end the processor passes through the balance between the processors. Under round robin each turn has this lengthquantum
WeightA number from 1 to 1024 of a thread: its share of a processor against the other threads of its queue, under a strategy with weights. 0 at the creation is 1024, the full weight. A program can only lower it (P20)priority, nice value, shares
Virtual timeThe run time of a thread in weighted cycles: a run of c cycles adds c * 1024 / weight. The strategies with weights run the thread whose virtual time is least, or eligiblevruntime, virtual runtime
Queue clockThe virtual time of a run queue that never goes back: the least virtual time of its ready threads, as the kernel last saw it. A thread that wakes or moves is placed against itmin_vruntime
LagUnder EEVDF: the average virtual time of the queue minus the virtual time of a thread: what the thread is owed. It is kept across a wait, within a bounddebt, credit
EligibleUnder EEVDF: a thread whose lag is zero or more. Only an eligible thread can be picked, when one existsrunnable (for this)
RequestThe processor time that a thread asks for at each turn under EEVDF, in microseconds: 1 to 100 000, 0 is 3000. It sets the virtual deadline, not the shareslice (for this), quantum
Virtual deadlineUnder EEVDF: the virtual time of a thread plus its request in weighted cycles. Among the eligible threads, the one with the earliest virtual deadline runsdeadline (alone: the deadline of a wait)
Wake preemptionThe end of the turn of the thread that runs on a processor because a thread that woke must run first, by the rule of the strategy. On another processor, the waker sends an interruptwakeup preemption, preempt-on-wake
SpinnerA thread of the program scheduler that computes with no end, and counts its workbusy loop, hog, load generator
SerialA number of a slot of a kernel table (a thread, a program, a memory object) that changes for each new object in the slot. A path that names a slot across a wait for a lock checks it: the slot can hold another object after the waitgeneration (for handles only), epoch, version
Wait tableThe threads that wait on words, in buckets chosen by the physical address of the word, each with a wait lockfutex hash table
LockerA program that the program locks starts several times. It works only on its own objects, so a locker waits for another one only when the kernel makes it wait. The measures of the locks of the kernel count what the lockers doload generator, stress worker
Frame cacheThe stack of at most 256 free page frames of one processor, in its processor record, with its cache lock. A page on first use takes its frame there; the end of a memory object puts its frames there; the stack takes and gives frames to the frame table by batches of 128, under the frame lockper-CPU page list, magazine, pcp list
Cache lockThe lock of the frame cache of one processor. Its processor takes it at each take and each put; another processor takes it only to read or empty the stack. It comes after the frame lock in the lock orderper-CPU lock
Lock countWhat the kernel counts for one kind of lock, on all the processors: the times that a processor took it, and the times that it had to wait for it (Lock_Count in System_Report)lock statistics, contention counter
Thread areaThe memory that the kernel makes for one thread: the thread record, then the kernel ring of the thread
ServiceA program that other programs call through rings. A service has no special privilegedaemon, server, driver
Device serviceA service that owns the queues of one device class (P7)driver
Input serviceThe device service of the keyboard and the mouse. It sends key and pointer events to the compositorinput driver
Root serviceThe first program. It receives every handle that exists at boot and gives them outinit, PID 1, system manager
ContextThe one typed record that a program receives when it starts: arguments, granted handles, rings. It is defined by the system, not by a language (P19)argv, argc, environment, arguments
KernelThe code that runs with processor privilege. It holds five systems: handle table, memory, scheduler, rings and wait, device grantcore, supervisor
Kernel operationOne request that a program makes to the kernel (P1)system call, syscall
Boot programThe UEFI program that loads and measures the system, then starts the kernel (P17)boot loader, bootloader
Fixed rangeAn address and a span of the address space of a program where the system places one mapping that it gives: the settings page, a glyph cache, the date page, the files of a module. Each is one member of the enumeration Fixed_Range of contract/fixed_addresses, one slot of the band from BAND_START, so no two overlap; a mapping that a program places by its own choice is outside the band, from OWN_CHOICE_STARTwell-known address, fixed mapping
Mapped rangesThe fixed ranges that the starter of a program mapped for it: a set of bits, bit n for the member n of Fixed_Range, in the value 20 of its context (fixed_addresses.ranges_mapped). A program reads nothing at a range whose bit is clearmapping flags, present mask

Access

TermDefinitionDo not use
HandleAn index and a generation in the handle table of a program. It names one object with a set of rights. Handle 0 names no object (P2)file descriptor, capability, token, reference
Memory objectPages that the kernel names by handle. Each page has a page frame, or gets one at its first use. Programs map it; two programs that map the same one share itregion, shared memory segment, buffer
Page on first useA page of a memory object that gets its page frame at the first read or write, by a program (a page fault) or by the kernel. The frame is all zero. The budget paid for the page when the memory object was createdlazy allocation, demand paging, demand-zero page
Uncommitted objectA memory object made with the flag Uncommitted: its budget pays only its frame list; each page is paid when it is committed. Its mapping holds a range of addresses with no memory behind itreserved object, reservation, VirtualAlloc(MEM_RESERVE), mmap(PROT_NONE)
Committed pageA page of a memory object that its budget paid for: it gets a frame at its first use. Each page of an object that is not uncommitted is committedcommitted memory
DecommitThe act of Memory_Commit with the flag Decommit: the pages of an uncommitted object are no longer paid; their frames and their pages return at once; the addresses stay reserved, and a page committed again is zeromadvise(DONTNEED), VirtualFree(MEM_DECOMMIT), discard
Page protectionWhat a page of a mapping lets a program do: read, read and write, read and execute, or nothing (No_Access). Memory_Protect can only take away what the mapping hasmprotect, page rights
Shoot-downThe step where each other processor that uses the page table of a program forgets its old translations (processor_sync), after the kernel cleared or reduced page table entriesTLB flush, TLB shootdown (for this)
Large pageA page of 2 MiB: one entry of the second level of a page table. Only for an object made with Large_Pageshuge page, superpage
Fault ringA ring where the kernel writes a fault of a thread of a program, for another thread that commits or protects and lets it continue (designed, not built)signal, SIGSEGV handler, userfaultfd, exception handler
Reserved pageA page that a budget paid for and that has no page frame yet. The kernel keeps one free frame for each reserved page, so an access never fails for lack of memoryovercommit
Frame listThe record of the page frames of one memory object: in the kernel record of the object for at most 4 pages, else in list pages that the budget pays forpage list, radix tree
RightOne permitted kind of operation on the object of a handle. The rights are Give, Read, Write, Execute, Control, Inspect, Devices, Stop, Spend, Physical, Schedule and Commit (pay pages of an object that the budget already pays for, and nothing else). A grant can remove rights and cannot add onepermission, privilege, mode
BudgetAn object that holds pages, programs and threads, and that has two limits: processor time and log records. It pays for each object that a program creates. A program moves a part of its budget to a new budget. What ends returns to the budget that paid (P20)quota, limit, cgroup, job
LimitA property of a budget for time: the microseconds of processor time, or the log records, that the budget can use in each second. A limit holds for the budget and for each budget that came from it. A limit does not move as pages do: a new budget has a limit that is not above the limit of the budget that it came from (P20)quota, cap, bandwidth, rate limit
PeriodThe 100 ms in which the kernel applies the processor limit of a budget. A thread of a budget that used its part of the period does not run until the next periodwindow, slice
GrantThe act that gives a handle to a program, and the record of that act. A grant is visible and can be revoked (P20)permission, authorization, consent
HoldingA handle or a mapping of a program: one thing that the program has of an object (P2)reference, capability
OriginThe handle that a holding came from. A handle that Handle_Give made came from the handle that was given. A mapping came from the memory handle that was mapped. A holding that the kernel made has no origin. When a handle closes, what came from it comes from its own originparent, derivation, delegation chain
RevocationThe act that ends each holding that came from a handle, in one program or in each program (the kernel operation Handle_Revoke). The handle stays. The program that lost a holding cannot refuse (P2, P20)recall, invalidation
Lent handleA handle that a caller gives for the time of one call. The caller makes a copy of its handle with the rights of the description, gives a handle that comes from the copy, and revokes the copy after the callborrowed handle, loan
Ambient accessAccess that a program has because it runs, and not because it received a handle. The system has none (P20)ambient authority
SandboxThe state of every program: it can reach only the objects of its handles (P2)jail, container
PrincipalA key pair and the root handles that the key unlocks: documents, grant records, settings. The kernel does not know it. Principal 0 is the machine (P21)user, account, owner, root, administrator, executor
SessionThe tree of programs that started from the root handles of one principal (P21)login, user session
PersonA human who acts in a session. The word has no meaning to the system; it is used only to describe actions at the desktop, such as "the person chooses a document"user

Communication

TermDefinitionDo not use
RingA pair of queues in shared memory between two programs, or between a program and the kernel: one for command records, one for completion records (P4, P6)pipe, socket, channel, port, message queue
CapacityThe count of records of each queue of a ring: a power of two, chosen when the ring is created, never changed after. It comes from the size of the memory of the ringbuffer size, queue depth, backlog
TerminalA program that shows the text records of one other program, keeps its lines, and gives the keys of the person to it. The root service starts a program and its terminal, and gives the terminal ring and the text region to the two. The kernel has no such conceptTTY, pty, terminal emulator, standard output, standard input
Shared queueOne queue of records in shared memory that several threads write and several threads read, with no lock. Each record has a turn word that says if a writer or a reader can use it. Use a ring for one writer and one readerMPMC queue, channel, work queue, mailbox
EventA count in memory that several threads wait on. A thread adds 1 to it and wakes all the threads that waitcondition variable, semaphore, signal, barrier
Source libraryA named folder of source packages that a module compiles in. An import names the library and the package: contract:ring. The project has two: contract (what two parties agree on; no kernel operation) and support (what a program compiles in to use the contracts). A source library is not a module: it has no file and no hash of its owncollection, SDK, libc, static library
DocumentationThe text that a module carries in its file for a person: one line that says what the module is, a text for the module, and a text for each export. The build tool takes it from the source. With the description of each export, it is all that a person needs to use the moduleman page, help file, docstring, README
Time pageOne page that the kernel writes and that each program can only read, at a fixed address. It holds the milliseconds since boot. A program reads the time with one load from memory, with no kernel entryvDSO, vsyscall, clock system call
Real-time clockThe clock of the machine that keeps the date when the machine is off (on a PC: the CMOS clock, ports 0x70 and 0x71). The program date reads it at its start and each 10 sRTC (in text), hardware clock, BIOS clock
DateThe count of milliseconds since 1970-01-01 00:00:00 UTC. Leap seconds are not counted: a day has 86400 secondstimestamp, wall clock, epoch time, Unix time (in text)
Date pageOne page that the root service creates and maps read-only into each program that it starts. The program date writes there the date of the time 0 of the system, so a program reads the date with no kernel entry: that date plus the milliseconds of the time pagewall-clock page, vDSO, clock page
Terminal ringThe ring between a program and its terminal. In the command queue, a record from the program has a kind (text, status, clear, edit line, hint line, completion list), a count of bytes and a style. It has no place on the screen. In the completion queue, a record from the terminal is a key recordescape sequence, control character, stream
Key recordA record from a terminal to its program: the code of one key that the person pressed, its character, and the modifiers that the person held (Shift, Control)standard input, character device, raw mode, cooked mode
Edit lineThe one line that a program changes: the line of input of the person with a cursor, or a line that says what the program does now. The program sends its text and the place of the cursor; the terminal shows it after the last line. The program owns the editingline discipline, readline, cursor addressing, prompt
Line editorThe procedures of support/line_editor that change an edit line with keys: the caret, a character at the caret, Backspace, Delete. They have no state of their own: the line is a record of the programreadline, line discipline
Hint lineOne dim line that a program shows under its edit line: the signature of the call at the caret, or how to use the list that is open. It has a long form and a short form; the terminal shows the long one when it fits in its columns. The terminal draws it in the free row. A new one replaces the one beforetooltip, status (for this), echo area
Free rowThe row of the view of a terminal under the edit line, that the terminal keeps free at all times: the hint line is drawn in it, so the text does not move when a hint comes or goesspacer, padding line
Completion listThe names that can take the place of the name at the caret, best first, with one chosen row. The program gives the rows; its terminal draws them over its text, at the edit linedropdown, popup, autocomplete menu, suggestions
Fuzzy matchA match where the characters of a query appear in a name in their order, with gaps allowed, lower and upper case equal. A score orders the names that match (docs/CONSOLE.md, section 3)fuzzy search, subsequence search, filter (for this)
Line historyThe lines that the person entered in the console, in a ring of bytes in its memory, the newest firsthistory (alone), scrollback, command log
Line history fileThe line history as bytes, kept in the history store: a version, the lines, a BLAKE3 hash (support/line_editor/history_file.odin). A file that fails a check gives an empty historyhistory dump, .bash_history
Text regionThe shared memory beside a terminal ring where the program writes the bytes of its text, in order. A record gives only a count of bytes: the terminal keeps its own placescrollback (for this), pipe buffer
RunBytes of text that have one style. A line is a list of runsspan, segment, chunk
StyleWhat a run is, and how to show it: a tone, flags (end of the line, own color, reverse) and a colorattribute, SGR, escape code
ToneWhat a run of text means: plain, dim, good, warning, bad, accent, number. The terminal chooses the color of each tonecolor code, severity (for text)
StatusOne line that a program replaces at any time, with a value and a total. The terminal shows it out of the lines: no line is drawn againprogress bar hack, carriage return
Direct callA call of an export in the address space of the caller. The arguments are in registers (the call form)in-process call, local call
Isolated callA call of an export of a module that runs in another program. The arguments travel in a ring (P19)remote call, RPC, IPC call
Record descriptionThe part of the description of a module that gives the name, the size and the fields of one record that an export receives or gives. A field is an Integer, a Handle, or a Text of a fixed size. Two record descriptions that are equal name the same record, in one module or in twostruct type, schema, class
Lent handleA handle that the caller of an export gives for the time of one call. The description of the export names the rights that the export needs. In an isolated call, the receiver has a copy with these rights only, and closes it when the export returns. The caller keeps its handleborrowed handle, passed capability, inherited descriptor
Call hostThe program that loads one module and executes the isolated calls of its exports. It has no handle but its call ring, its call region, its budget and the logworker, helper process, server
Call ringThe ring between a caller and a call host. One command record is one isolated callchannel, pipe
Call regionThe memory object that a caller and a call host share. The caller writes the argument record and the bytes of its slices in itshared buffer, arena
ConnectionOne call ring and one call region between one caller and one service that serves its own exports. The root service makes it and ends itsession, socket, channel
Service ringThe ring between the root service and a service that serves its own exports. One command record names one connection that starts or endscontrol channel, accept queue
Argument recordThe record that holds the arguments of one isolated call: one field per parameter, in order. It is derived from the description of the exportmessage, payload, marshalled arguments
Kernel ringThe ring between a program and the kernel. Each kernel operation is a command record in it (P1)system call table
RecordA fixed-layout block of bytes with typed fields. An all-zero record is valid (P13)struct, message, packet, object
Command recordA record that asks the other side of a ring for one operationrequest, message, call
Completion recordA record that reports the result of one command recordresponse, reply, event
Device queueThe queue that a device defines for its own commands, for example a virtio queue. The kernel maps it into one program (P5)ring (reserved for program-to-program)
Zero is initialization (ZII)The rule that all-zero bytes are a valid value with a defined meaning, for every record of the system (P13)default constructor

Devices

TermDefinitionDo not use
Physical addressThe number that the memory and the devices use for a byte of memory, before the page tables. A program uses virtual addresses only; a device uses physical addresses onlyreal address, bus address
Device memoryA memory object over the registers of a device: physical addresses that are not memory of the kernel. A mapping of it uses no cache. The root service makes it with the right DevicesMMIO region, BAR mapping
Message interruptAn interrupt that a device sends as a write of a value to an address of the interrupt controller of a processor (MSI-X). The kernel gives each one a vector of its own, and an Interrupt objectMSI, vector
BusThe PCI bus of the machine: each device has a place on it (bus, device, function) and a configuration. Only the root service reads and writes the configurationPCI tree
DiskA device that keeps blocks when the machine stops. The machine of the test has three: the boot volume, the data disk, and the disk of the measuresdrive, volume (except the boot volume), LUN
Block4096 bytes of a disk, at a number from 0. The unit of the block contractsector, page (for a disk)
Block serviceThe device service of one disk. It serves read, write and flush of blocks to one client, through a block ring (contract/block)disk driver, block layer
Block ringThe ring between a block service and its client. One command record is one request; many are in flight; a completion has the tag of its command and a statusI/O queue, submission queue
Data regionThe memory object of the client of a block service where the device reads and writes the bytes of the blocks, with no copy. It is contiguous (Memory_Create with Contiguous). A request names a place in it, never an addressDMA buffer, bounce buffer
Data diskThe disk of the storage servicedata drive, home disk
Disk of the measuresA disk that holds no data that a program keeps: the program disk measures the block service on itscratch disk, test disk
Network deviceA device that sends and receives frames on a link. The machine of the test has one virtio network device at the place 18 of the busNIC, network card, network adapter
FrameOne Ethernet frame: from the destination hardware address to the end of the data, with no check sequence. 1514 bytes at mostpacket (for this), datagram (for this), message
Hardware addressThe 6 bytes that name a network device on its linkMAC address, physical address (for this)
Frame serviceThe device service of one network device. It sends and receives frames for one client, through a frame ring (contract/frame). It does not read a frameNIC driver, network driver
Frame ringThe ring between a frame service and its client. One command record is the Send of one frame, or a Receive: a place for one frame that arrives. Many are in flightTX queue, RX queue, descriptor ring (for this)
Frame regionThe memory of the client of a frame service where the device reads and writes the frames, with no copy. It is contiguous. A request names a place in it, never an addressDMA buffer, skb, mbuf
VirtioThe standard of devices in shared queues that the first machine uses (P7). support/virtio holds what each device service of a virtio device does the same wayparavirtual device

Network

TermDefinitionDo not use
Network serviceThe one client of the frame service. It speaks Ethernet, ARP, IPv4, ICMP echo and UDP with the protocol library support/network, checks TCP segments against their grant, and gives each program with the grant one endpoint. It keeps no state of a TCP connection. It starts when the first such program startsnetwork stack, TCP/IP stack, netd, network daemon
EndpointWhat a program holds to send and receive datagrams or segments: a datagram ring and a datagram region, with a grant. The grant of a datagram endpoint names one remote, and the network service gives its local UDP port; or it is a listen grant of one local UDP port. A segment endpoint has a client grant or a listen grant. The program does not choose a remote that its grant does not name (P20). With the right Inspect of its grant, it also reads the facts of the network of the machine: the frames that no endpoint owns, the kernel entries of the two servicessocket, port (for this), connection (for this)
DatagramThe data of one UDP datagram and its remote: what a program sends and receives through an endpoint. 1472 bytes at most: one frame, no fragmentpacket, message
RemoteThe IPv4 address and the UDP port or TCP port at the other end of a datagram or of a connectionpeer (for this), destination, host
UDP portThe 16-bit number of UDP that names an endpoint at an address. It is not the Ports object of the kernelport (alone), socket number
TCP portThe 16-bit number of TCP that names one end of a connection at an address. It is not the Ports object of the kernel, and not a UDP portport (alone), socket number
SegmentOne TCP segment: its header, its options and its data, 1480 bytes at most (one frame, no fragment). What a program sends and receives through a segment endpointpacket, TCP packet, message
Segment endpointAn endpoint whose grant has the protocol TCP. The program writes and reads whole segments; the network service writes the IPv4 header and keeps no state of a connectionTCP socket, listening socket
Client grantThe grant of a segment endpoint that reaches one remote, from a block of 64 local TCP ports that the network service choosesoutbound rule, connect permission
Listen grantThe grant of an endpoint that receives on one local TCP or UDP port that the root service names, from any remote, and answers only the admitted remoteslistening socket, bind permission, server socket
Admitted remoteA remote that sent a SYN to the TCP port of a listen grant, or a datagram of 1200 bytes at least to its UDP port. The network service keeps 64 for each listen grant, until the program releases oneconnection tracking entry, conntrack, NAT entry
ConnectionThe state of one TCP connection in the program that owns it: one fixed-size record of the TCP library (tcp.Connection), with a send buffer and a receive buffer of the callersocket, TCB (in this system), session
Web pageAn object of the private store of server that it serves by its name, at /name. A person puts one with server.put from the consolefile (for this), static file, asset
Access recordThe record of one request that server answered: the remote, the method, the target, the status, the bytes and the time. The window shows the last ones, and the log channel requests has one for each requestaccess log line, hit
Connection tableThe records of the connections of one program, the memory of their buffers, and what is common to them: the local address, the listen port, the secret of the initial sequence numbers. tcp.step works on one tablesocket table, connection pool
Datagram ringThe ring between a program and the network service for one endpoint (contract/datagram). A command is a Send, a Receive, or a question (Info, Resolve, Echo, Statistics, Problems)socket, channel
Datagram regionThe memory of an endpoint where the program writes the data of a datagram to send, and where the network service writes the data of a datagram that arrives. The root service makes it with the datagram ringsocket buffer, send buffer, receive buffer
NeighborAn address of the link and its hardware address, that the network service learned from an answer to its own ARP request. The network service keeps 16ARP cache entry, neighbour entry
GatewayThe machine of the link that carries IPv4 packets to other networks: 10.0.2.2 on the first machinerouter, default route
PeerThe part of the kernel tool that is the gateway and the echo server of the network of the test machine, and a TCP client that the tool drives. QEMU gives it each frame as a UDP datagram on the loopback of the host. It reads each frame with its own code. It can drop, reorder and repeat the frames of TCP. It also carries the call requests of the host to the remote service, and their call answers backmock, fake server, simulator
HostThe computer that runs QEMU and the kernel tool. The system does not run on it. For the network of the machine, the host is at the address of the gateway, 10.0.2.2build machine (for this), remote (for this)
Remote serviceThe program remote. It holds one endpoint whose grant names the host, and the connections to the services that the root service lets it call. It receives call requests, makes each one as an isolated call, and sends the call answer. It does not read the descriptions of the exports: it checks places and sizes only (programs/remote, contract/remote)RPC server, debug agent, gdbstub
Call requestOne datagram from the host to the remote service: a fixed header (remote.Request) that names the service, the hash of its module, the export, the places of the result and of the error record, then the bytes of the call region from offset 0RPC request, message, packet
Call answerThe datagrams of the remote service for one call request: each one has a fixed header (remote.Answer) with the status, the integer result and the error record, then a part of the bytes of the resultresponse, reply
Developer toolA program that shows a person how the system runs: what a program holds in memory and how its threads run (docs/TOOLS.md). It reads reports of the kernel with a grant; it changes nothingdebugger (for this), profiler, task manager
SampleOne read of all the reports that a developer tool shows, at one time. The tool takes a sample a few times in one second, and measures its costsnapshot (for this), poll, frame (for this)
Folded gapThe part of the band of an address space between two mappings that has no mapping: the band draws it with a fixed width and lines at an angle, because its size has no measure on the scale of the bandellipsis, break
Near exportThe export of a module with the highest address at or below an address: a reader names the address "module + offset, near name". The module names its exports only, so a function that is not an export has the name of the export before itsymbol (for this), nearest symbol
Confirmed placeA place of the pointer that the test tool read from the compositor (compositor.pointer(), through the remote service) before a press: the tool moves the pointer again until the compositor has it at the place that the step wantspointer sync, warp
Request numberThe number that the host gives to a call request; each datagram of its call answer has it. A call request with the number of the last call answer gets that call answer again: the call does not run two times. 0 is no requestsequence number, request id, transaction id

Storage

TermDefinitionDo not use
ObjectOne named piece of stored data with its versions, held by the storage service and reached by handle (P9)file, blob, inode
VersionThe state of one object at one commit: its bytes, its size, the generation and the time of that commit. Each commit that changes an object keeps the state before it as a version, in the version index of the object. The storage service keeps versions (P9)snapshot (when it means one object), backup, revision, undo step
Current versionThe state of an object that its last commit made: what a read gives. It is not in the version indexhead, working copy, latest revision
Version indexThe blocks of one object that list its versions: an index block, which names leaf blocks, which hold the version entries, the oldest firsthistory file, journal, log
Shared blockA block that two lists or two versions name: an unchanged block of an object, or the blocks of a clone. The storage service counts it one time in the blocks of the storededuplicated block, extent reference
Reference countFor each block in use, the count of what names it: list entries for a block of data, versions and objects for a list. The storage service frees a block when its count goes to 0link count, refcount (in text)
ThinningA commit that removes versions of an object: by the retention rule, or the oldest version of the store when a change does not fit in the limit of the store. Its blocks that no other version names become freegarbage collection, pruning, cleanup, compaction
Retention ruleWhich versions the storage service keeps: each version for 10 minutes, then one for each hour for one day, then one for each daybackup policy, history limit
CloneA new object whose list is the list of another object: the two share each block until one of them changes (P9)copy (for this), hard link, reflink
RestoreA commit that makes a version the current version again. The current version before it becomes a version: nothing is lostrevert, rollback, undo
Time since the formatThe milliseconds of the storage service since the format of the disk: the root block keeps it at each commit. It is the time of a version until the system has a dateuptime, timestamp
SnapshotThe state of a whole private store at one timecheckpoint, backup
Private storeThe set of objects that belongs to one program. No other program sees it (P8, P9)home directory, app data, container
DocumentAn object that belongs to the person and not to one program. The document service grants it (P8)file, user file
Module storeThe set of all modules and system data, each identified by content hash (P11)package store, repository, the Nix store
System descriptionThe list of hashes that defines one version of the whole system (P11)image, generation, manifest, profile
Distinct resultOne content of one output of a build (a module, its LLVM IR, its object, the boot program) among the contents that several builds of the same source gave. One source must give one distinct result for each output (P11). kerneltool repeat counts them, and check and repeat keep each one in build/different_builds/variant (except in the names of the kept files), version
Storage serviceThe service that owns the block device and gives objects, versions and private stores (P9)file system
Root blockThe block of the data disk that names the private stores. The disk has two places for it; the storage service takes the valid one with the highest generationsuperblock, uberblock, meta page
CommitOne change of the stores: the storage service writes new blocks, then a new root block. A commit is on the disk completely or not at alltransaction (for this), save, sync
GenerationThe number of a commit. Each commit has the generation of the one before plus 1. It counts the commits of the whole disk, of each storeepoch, transaction id, version (for this)
History storeThe store of the line history of the console in the storage service, apart from its private store: named after the console with .history, a limit of 4 blocks, and no grant to act for the person. The root service gives the connection to it (Root_Command.Connect_History), with the grant historyshell history file, profile directory
Base of the generationsIn a machine test, the generation of one commit that a step Generation reads from the log: the steps after it name the generations that they wait for as the base and a count ({generation+4}), because other commits (the line history) come beforeoffset, delta
Damaged objectAn object with a block that a valid root block names and that does not have its check. The storage service does not give its bytes; a write or a remove replaces it. A private store with such a table is a damaged storecorrupt file, bad sector
CheckThe first 8 bytes of the BLAKE3 hash of a block, kept in the block that names it. A block that does not have its check is wrong, and the storage service does not use itchecksum, CRC, digest

Desktop

TermDefinitionDo not use
SurfaceA region of shared memory that one program draws into and the compositor displays (P18)window buffer, framebuffer (reserved for the UEFI one)
PictureOne complete image in the memory of a surface. A surface has one picture or two. With two, the program draws one while the compositor reads the otherback buffer, front buffer, swap chain
CompositorThe service that owns the display, combines surfaces and routes input to the program with focus. In the first milestone it is also the desktop shellwindow manager, display server
Damage rectangleA rectangle of the screen that changed. The compositor draws again only the damage rectangles of a framedirty region, invalid area
Boot displayThe picture of how the machine started, drawn from the boot record and the other records of the kernel. The boot program and the root service draw it on the screen; the program boot draws it in a windowsplash screen, boot log, POST screen
ConsoleA normal program that calls commands in a real programming language (P19). It has a terminal and no surface: it writes text records, and reads key recordsTTY, shell
Desktop shellThe program that starts programs and shows surfaces and grants to the personwindow manager
FocusThe state of the window in front: its program receives the keys, and the pointer events over its surface. Its title bar is blueactive window, keyboard owner
Title barThe top part of the frame of a window: the title and the close button. The title bar of the window that has the focus goes from blue to a darker blue toward the right; the others are quiet (docs/DESIGN.md, section 9)header, caption, decoration
BarThe line at the top of the screen that the compositor draws: the mark of the system, the buttons of the two menus, the key of the launcher, the time since the start. support/bar holds its places and the table of the names of the programstask bar, panel, dock
Bar layoutThe widths of the texts of the bar (programs, windows, the widest name), measured in the font that draws them; the place of each button and of each line of a menu comes from it (bar.Layout). The compositor writes in its log which font it is, and the kernel tool measures the same layout from the same cachebar geometry, bar metrics
Menu of the programsThe menu of the bar with one line for each name of the table bar.names. A press on a line starts the programlauncher, start menu
Menu of the windowsThe menu of the bar with one line for each window. A press on a line brings the window to the front and gives it the focustask bar, window list, switcher
LauncherThe panel in the middle of the screen that the key super opens. The person types a part of a name, and the list has the names of bar.names that contain it, the names that start with it first. Enter starts the chosen program, as the menu of the programs doesrun dialog, command palette, menu of the programs
Interface packagesupport/interface: the code that builds the window of a program as a draw table each frame, lays it out on the grid, takes the pointer and the keys, finds the damage and draws (docs/INTERFACE.md)toolkit, widget library, UI framework
Draw recordOne thing to draw, 40 bytes: a rectangle, a gradient, a run of text or a clip, with its place and its colors (docs/INTERFACE.md, section 2.1)draw command, display list item, primitive
Draw tableThe draw records of one frame of a window, and the bytes of their texts, in the memory of the programdisplay list, command buffer, render tree
Text gridA grid of text cells of a program (a character, reverse, a color), drawn by one draw record; the difference compares its cells and damages only the rows spans that changed (docs/INTERFACE.md, section 2.4)character matrix, screen buffer
Picture recordA draw record that shows the pixels of a picture of the program, with a generation that changes when the pixels changeimage node, bitmap item
Line recordA draw record of a straight line between two points, with a thickness and a color; a line and its reverse are one record (docs/INTERFACE.md, section 2.5)stroke, path, polyline
ElementA part of a window that one call of the interface package draws: a card, a line of a label and a value, a bar, a table, a button, a list with a choice, a text inputwidget, control, component, view
Element identityA number that names one element from one frame to the next, made from a text: the focus and the pointer state follow itid, key, handle (reserved for the kernel)
Interface stateWhat the interface package keeps between frames, in the memory of the program: the element with the focus, the element under the pointer, the pressed element, the order of the focusUI context, retained state
Damage by differenceThe damage rectangles that the interface package finds by a comparison of the draw table of this frame with the draw table of the frame beforedirty tracking, invalidation
PointerThe mark on the screen that the pointing device moves. Its place is a point of the screen: a press acts there. The compositor draws it with the pointer picture of the pointer shape that it chose. Not the caretcursor, mouse cursor, mouse pointer
Pointer shapeWhat the pointer shows, as one name of the system (pointer_pictures.Pointer_Shape): arrow, text, move, wait, ... The compositor chooses it from what is under the pointer; a program asks for one over its own surface (docs/POINTERS.md)cursor type, cursor name, cursor kind
Pointer pictureOne image of one pointer shape at one nominal size, for one frame of an animation: its width, height, hot spot, delay and pixels with premultiplied alphacursor image, sprite, icon
Hot spotThe pixel of a pointer picture that the compositor puts at the place of the pointerclick point, hotspot, anchor
Nominal sizeThe size in pixels that a theme gives to a pointer picture, to choose among its sizes. The width and the height of the picture can differ from itcursor size
Pointer themeThe pointer pictures of each pointer shape, with a name, a license and an attribution. The system has its own theme in the repository; the theme of the owner comes from a build inputcursor theme, icon theme
Pointer theme fileOne pointer theme in the format of the system (contract/pointer_pictures): a header, a table of shapes, a table of pictures, the pixels. A program maps it and reads it with no parse, after one validationcursor file, .cur, Xcursor file (for this)
Pointer manifestA text file of the repository that says how the tool makes a pointer theme file: for each pointer shape, the files of an Xcursor theme or grids of squares, and the adjustments (docs/POINTERS.md, "The manifest")config, recipe, index.theme
Premultiplied alphaA form of a pixel whose red, green and blue are already multiplied by its alpha. A blend is then result = source + destination * (255 - alpha) / 255 for each channelstraight alpha (for this)
ResourceA file of the boot image that is not a module: a pointer theme file or the glyph cache of the vector font. It has a name and the hash of its bytes, in the resource table of the boot image. The root service gives a program a read-only mapping of itasset, data file, blob
CaretThe mark in a text input of the place where the next typed character goes. Not the pointercursor, text cursor, insertion point
PickerThe surface of the document service where the person chooses a document. Its result is a grantfile dialog, powerbox

Text

TermDefinitionDo not use
FontA set of glyphs of one design, with the measures that place them. The system has two: the vector font of the glyph cache (the default) and Spleen 8x16 (the fallback) (docs/FONTS.md)typeface (for this), font face
GlyphThe form of one character in one fontcharacter (for the form), symbol
OutlineThe closed contours of line segments and quadratic curves that bound a glyph, in units of its font (TrueType glyf)path, vector shape, Bézier
CoverageThe part of a pixel, or of a third of a pixel, that a glyph covers: 0 to 255alpha (for this), opacity, mask
Subpixel bandOne of the three color stripes of a pixel of the screen, red, green and blue, side by side; the vector font has a coverage for each onesubpixel, ClearType, LCD stripe
Grid fitThe move of the baseline, the x-height and the cap height of a font onto whole pixels, so that the tops of the letters are sharp. The system has no other hintinghinting (alone), autohint
Glyph cacheThe glyphs of one font already drawn, for each character 32 to 126 and each scale of the grid: words of coverage, in one file (contract/glyph_cache). The kernel tool makes it at build time; it is a resource of the boot imageatlas, texture cache, glyph bitmap
Proportional cacheA glyph cache with FLAG_PROPORTIONAL: each character has its own advance, each glyph is the box of its ink at each subpixel position, and the cache has the pair adjustments. A cache with no such flag is monospace: one position, each glyph inside its cell, no pair (contract/glyph_cache, validate)proportional font cache
SettingOne choice of the person that changes how the system works for each program: the font, the order of the subpixel bands. The program settings changes itpreference, option, configuration
Settings pageThe one page of the settings of the person (contract/settings): the root service creates it; the program settings writes it; each program with a surface reads itregistry, config file, dconf
Monospace fontA font whose characters all have one advance, so that a text is a row of equal cells: Paper Mono, and Spleen 8x16. The font of the terminal, the console, and each text that a person compares character by character (docs/FONTS.md, section 12.6)fixed-width font (for this), terminal font
Interface fontThe proportional font of the titles, the labels, the buttons, the menus and the bar: B612 (designed, not built; docs/FONTS.md, section 12)UI font, system font (for this), sans
Interface textA text that a table draws in the interface font: the draw record Interface_Text (version 7), whose rectangle holds its ink margin and whose origin is at a third of a pixel. A text of the font of the cells is the record Textproportional text record
Font in useThe font that draws a text of a table: the interface font when the table has it, the setting is the vector font and the text has at most 256 bytes; else the font of the cells. A text is measured in its font in use (interface.font_in_use)effective font
AdvanceThe distance from the origin of a glyph to the origin of the next one, before any pair adjustmentwidth (for this), pitch
Pair adjustmentThe change of the advance that a font gives for one pair of glyphs that follow each other (kern format 0, or a pair lookup of GPOS)kerning pair (for this)
Font featureA named choice of glyph forms that a font offers in its table GSUB, by a tag of four letters: zero (the slashed zero), ss01 (a stylistic set), numr (numerators)OpenType feature (for this), font option
Single substitutionA lookup of the table GSUB that puts one glyph in the place of another (lookup type 1): the feature zero of Paper Mono puts the glyph 304 in the place of the glyph 294 of the character 0glyph swap, alternate
Slashed zeroA zero with a stroke at an angle inside it, so that it does not look like the capital O. The character 0 of the system is the slashed zero of Paper Mono (docs/FONTS.md, section 6)crossed zero, zero with a slash
Text shapingThe step that turns the characters of a text into placed glyphs with a font: here the advances and the pair adjustments only; no ligature, no other script (docs/FONTS.md, section 12.3)layout (for this), typesetting
Placed glyphA record of 16 bytes that text shaping gives for one character: the glyph, its x from the origin of the run and its advance, in 1/64 of a pixelpositioned glyph, glyph run entry
Ink marginHow far the ink of a text of a proportional font can pass the box that its measure gives, on each side: 2 pixels at scale 1 for B612 (graphics.PROPORTIONAL_INK_MARGIN). The damage of a text widens its measured box by itbleed, overhang (for this)
Subpixel positionThe fraction of a pixel where a glyph starts. The glyph cache of a proportional font keeps each glyph at three: 0, 1/3 and 2/3 of a pixelsubpixel offset, bucket
SpacingThe advances of the characters 32 to 126 and the pair adjustments of one font at one scale, in 1/64 of a pixel: the two tables that text shaping reads, from a glyph cache (support/text_shaping, Spacing)metrics (for this), kerning data
Text rangeA record that names one text in a table of bytes by its first byte and its count, with its width, which the measure writes (text_shaping.Text_Range)span (for this), slice
Boot passThe start of the program settings that the root service makes at boot, with no window: it reads the settings kept in its private store, writes the settings page, and stopsinit script, startup hook
Blend tableThe results of the blend in linear light of one text color over one pixel color, for each coverage of each channel, kept in the memory of a program (graphics.Blend_Tables)lookup table (alone), LUT

Randomness

TermDefinitionDo not use
Random seed32 bytes from which a random generator starts. The starter of a program writes the seed of the program in its context values 9 to 12; the root service gathers its own (docs/RANDOMNESS.md)entropy (for this), salt
Random generatorThe record of fixed size in the memory of a program that gives it random bytes: ChaCha20 with fast key erasure (support/random). A draw makes no kernel entry and no callRNG, PRNG, CSPRNG (for this), /dev/urandom
Entropy reportWhat the root service found when it gathered the seed of the system: the sources (rdseed, rdrand, the cycle counter), their good and refused values, and the seed strengthentropy estimate
Seed strengthThe strongest source that gave all its values to the seed of the system: entropy (rdseed), processor (rdrand), or weak (the cycle counter only, counted as 0 bits)security level
Cryptography moduleThe module cryptography: the primitives that the system took from Odin's core:crypto, as exports with the memory of the caller and error records (docs/CRYPTOGRAPHY.md)crypto library, libcrypto
Not authenticThe error kind of a sealed text whose tag, or of a message whose signature, does not verify. The call gives no byteMAC failure, bad tag
Compatibility layerThe packages of support/cryptography that give the code taken from Odin the helpers of its origin, over the primitives of this system (docs/CRYPTOGRAPHY.md)shim, polyfill

QUIC

TermDefinitionDo not use
Connection identifierThe bytes (0 to 20) by which a QUIC endpoint names a connection in each packet, independent of the addresses (RFC 9000, section 5.1). Each side chooses the identifiers that the other side sends to itconnection ID (in prose), CID
Packet protectionThe AEAD that encrypts the payload of a QUIC packet and authenticates its header, with the key and the iv of one direction of one encryption level (RFC 9001, section 5.3)encryption (for this), record protection
Header protectionThe mask that hides the low bits of the first byte and the packet number of a QUIC packet, made from a sample of the protected payload (RFC 9001, section 5.4)header encryption
Encryption levelOne of the sets of keys of a QUIC connection: Initial (from the connection identifier), Handshake, 0-RTT and 1-RTT (from TLS). Each packet type uses one levelepoch, key phase (for this)
Packet number spaceThe sequence of packet numbers that one encryption level uses (Initial, Handshake, application data); a packet number is unique in its spacesequence number (for this)
Initial packetThe first packets of a QUIC connection, protected with keys that any observer can compute from the connection identifier: they carry the start of the TLS handshakehandshake packet (for this)
Raw public keyA public key that a TLS peer sends in its Certificate message alone, with no certificate around it: the SubjectPublicKeyInfo of the key (RFC 7250). The other side trusts it when it is the key that its caller pinnedself-signed certificate (for this)
Pinned keyThe one public key that the caller of a TLS client gives it as the key of the server: any other key is refusedtrust anchor, root certificate
TranscriptThe handshake messages of TLS, in order, whose hash the key schedule and the Finished messages usehandshake hash (for the bytes)
Key scheduleThe secrets of TLS 1.3, each one from the one before with HKDF and a transcript hash: early, handshake, master, and the traffic secrets of each side (RFC 8446, section 7.1)key derivation (for the whole)
AlertThe reason of a failure of TLS, one byte (RFC 8446, section 6). QUIC sends it as the error code 0x100 + alertTLS error (for this)
FrameOne unit of the payload of a QUIC packet: a type, then its fields (RFC 9000, section 19). A packet carries one frame or moremessage (for this), chunk
Ack-eliciting packetA packet with a frame other than PADDING, ACK and CONNECTION_CLOSE: the peer must acknowledge itreliable packet
Probe timeoutThe time after which a side that has no acknowledgement sends one or two probe packets, from the round-trip time and its variation (RFC 9002, section 6.2). It doubles at each timeout without an acknowledgementretransmission timeout, RTO (for this)
Congestion windowThe most bytes of ack-eliciting packets that a side has in flight. This layer keeps it fixed at 12 000 bytessend window (for this)
QUIC streamOne ordered flow of bytes in each direction inside a QUIC connection, named by a stream identifier (RFC 9000, section 2). A connection carries several at once; the bytes of one never wait for a loss of anotherchannel (for this), substream
Stream recordOne quic.Stream in the table that the caller of a QUIC connection gives: the state and the buffers of one open QUIC stream. Their count bounds the streams that are open at one timestream slot
Limit of streamsThe count of QUIC streams that one side allows the other to open since the start of the connection (MAX_STREAMS). A server of this system raises it by one each time a stream of the client endedstream credit, concurrency limit (for this)
Implicit openThe open of a QUIC stream by a frame of the peer that names it, or a higher stream of the same kind, before the peer sent anything on it (RFC 9000, section 3.2)
Flow control limitThe largest offset of data that a side allows the peer to send, for one stream (MAX_STREAM_DATA) and for the connection (MAX_DATA). Data past it closes the connection with FLOW_CONTROL_ERRORreceive window (for this)
Anti-amplification limitA server that did not validate the address of a client sends at most 3 times the bytes that it received from it (RFC 9000, section 8.1)
Address validationThe proof that a client receives at its address: here, a Handshake packet of the client, which needs the keys of the server's flight
Handshake confirmedThe point after which a side drops its Handshake keys: a server when the handshake completes, a client when HANDSHAKE_DONE comes (RFC 9001, section 4.1.2)handshake done (for the state)
Connection recordOne quic.Connection in a table of a server: all the state of one connection, about 214 KiB, in a mapping of the programsession (for this), socket
Version Negotiation packetThe packet with the version 0 that a server sends to a client whose long header names a version that the server does not speak: it lists the versions that the server speaks (RFC 9000, section 17.2.1)version error
Retry tokenThe value that a server gives in a Retry packet and that a client sends back in its next Initial: it proves that the client receives datagrams at its address. This system seals it with a key of the server, over the address and port of the client, its identifiers and a timecookie (for this), address token (for the token of NEW_TOKEN)
Validated remoteAn admitted remote of a UDP listen grant that the program marked with the command Validate, because it proved its address: the network service then sends to it with no limit of 3 times the bytes that came from ittrusted remote, whitelisted address
Stateless resetA packet that ends a connection whose state a side lost, proven by a token that the side gave before (RFC 9000, section 10.3). Not builtreset (for this)
Handshake deadlineThe time after which a connection whose handshake did not complete ends: 10 s from the start of a client, or from the first authentic Initial at a serverhandshake timeout (for the value)
Packet number floorThe packet number below which a side refuses each packet of a space, because its set of received numbers forgot those rangesreplay window
Idle timeoutThe time with no packet of the peer after which a side ends a connection with no packet: the smaller of the two that the sides give, and 3 probe timeouts at leastkeep-alive
Closing stateThe state of a side that sent CONNECTION_CLOSE: it answers each packet with it, for 3 probe timeouts
Draining stateThe state of a side that received CONNECTION_CLOSE: it sends nothing, for 3 probe timeouts
Transport parametersThe values that each side of QUIC gives the other in the handshake of TLS: its limits, its timeouts, and the connection identifiers that it used (RFC 9000, section 18)settings
Retry packetA packet of a server that asks the client to send its Initial packet again with a token, to prove its address; its integrity tag uses a fixed keyredirect
Table of address budgetsThe table of a QUIC server that holds a budget of Initial checks for each address whose token opened. A place moves to a new address only when its bucket is full again, so the table gives at most the sum of its bucketsaddress cache
Budget of workThe most pieces of one kind of work that a QUIC server does for datagrams of unknown identifiers (Retries, token checks, Initial checks), as a token bucket. Over it, a datagram is dropped before any cryptography. Not a budget of memory of the kernelrate limit (for this), quota
Token bucketA count of units that grows by a rate in each second up to a depth, and from which each piece of work takes one unit: a burst takes the depth, then the rate. The tokens of a bucket are not the tokens of Retryleaky bucket, fixed window
UDP relayThe part of the peer of the tool that carries UDP datagrams between a program of the host, on a socket of the loopback, and the UDP port 4433 of the machine, as frames from 10.0.2.2 with a port for each client of the hostport forward, proxy, hostfwd (for this)

Project

TermDefinitionDo not use
ChangelogThe file CHANGELOG.md: the releases of the system, newest first, in the format of Keep a Changelog 1.1.0. Each entry says what the system does since that release, for a reader of the systemrelease notes (for the file), history, news
ReleaseOne section of the changelog: a release number, a date, and the entries of the changes, in the parts Added, Changed, Deprecated, Removed, Fixed and Security. The merge of step N on master is one releaseversion (a stored object has versions), tag, build
Release numberThe number of a release, <major>.<minor>.<patch>: 0.N.0 for step N, 0.N.1 for a correction after it. RELEASE_NUMBER in contract/release is the newest oneversion number, version
FragmentOne file of changelog.d/ with one change that is not in a release yet: its type and the text of its entry. kerneltool changelog release moves the fragments into a releasechangeset, news file, entry (for the file)
News entryA dated report in prose, for a reader who is not a developer of the system, of one thing that a person can see or use, with its picture and its measured number: one file of news/, never moved or merged (news/README.md). The changelog lists every change for a developer; a news entry reports one thing for a personnews item, post, announcement, blog post, changelog entry
FeedA file of the site in the Atom format (RFC 4287), for a program that follows a site: news.xml has the news entries and releases.xml the releases, newest firstRSS (for these files), stream, channel
Search indexThe file search.json of the site: one entry for each page, and for each row or section of a page that a person looks for (a module, an export, a term, a heading of a guide...), with its title, its page, its id, its kind and a short text. The box of the search in the bar filters it with the fuzzy match of the consolesearch database, catalog, sitemap
MarkThe picture that stands for the system: a heron on a grid of 24 by 24 square cells, each part filled with one gradient. support/mark holds it as data; kerneltool logo writes its files in resources/logo (docs/DESIGN.md, section 11)logo, icon, emblem, mascot
Name of the markThe word "modus" in letters of square cells, 5 columns by 7 rows each, under the heron in the files of the mark that have a namewordmark, logotype
SiteThe documentation of the system as static pages, their style sheet and their pictures, that kerneltool site writes in build/site from the files of the repository and the logs of the machine tests (docs/SITE.md). Its home is the one page that shows the systemwebsite, homepage, landing page
GuideA page of the site made from a document of docs/: how a part of the system is designed, and whyarticle, tutorial (for this)
Reference tableA page of the site that the tool generates from the code or the files that define a thing: what exists in this build, each row with its sourceAPI docs, listing
Module pageA reference table of the site for one module of module_builds: its documentation, its exports as the console prints them, its imports, and for a program its grants and its budgetAPI page, package page
Status pageThe page of the site that gives the state of each property in the words of PROPERTIES.md, the evidence items and the gaps of FIRST_MILESTONE.md that name it, then the gaps and the next steps. What is not done is on it as plainly as what is doneroadmap, progress page, "what runs today"
Site addressThe absolute address where a host serves the site, as https://<host>/<path>: SITE_ADDRESS, or kerneltool site --address for one run. With no site address the pages have relative links only, and the site has no canonical address, no Open Graph, no page graph and no sitemapbase URL, domain (for this), root
Canonical addressThe one absolute address of a page that the page names in its head (<link rel="canonical">): the site address and the path of the page, an index page by its folderpermalink, URL (for this)
Page graphThe JSON-LD of one page: one @graph of schema.org nodes (the site, the system, its source code, the page, its breadcrumbs, and what the page is about), built from the data that the page shows, whose nodes name each other by their @idstructured data (for this), schema, rich snippet
SitemapThe file sitemap.xml of the site: the canonical address of each page, for a search enginesite index, page list
Site menuThe menu of the bar of the site: one details element that holds the sections and the search. Under 720 pixels it is a square button with three lines; on a wide screen it is open and shows as the barburger menu, hamburger, drawer
Site workflowThe workflow of GitHub Actions .github/workflows/site.yml: at each push to master it builds the boot image and the site with kerneltool, then GitHub Pages serves the sitepipeline, CI job, deploy script

Terms that the system does not have

These words name concepts that the system removed. Use them only to describe other systems.

file, path, directory, pipe, socket (as an object), signal, fork, environment variable, argv, standard input and output, user, group, root, installer, driver (in the kernel), system call table, TTY, shell script, save.