Glossary

Compiler and build terms

Term Meaning
PXX The project name for the compiler and language toolchain.
pascal26 The current compiler executable name under compiler/.
pxx The wrapper created by install.sh; it calls the pinned compiler with library roots.
Pinned compiler The stable compiler selected by stable_linux_amd64/default/pinned.
Self-hosting The compiler is written in its own Pascal dialect and can compile itself.
Fixedpoint The compiler compiles itself, that result compiles it again, and the two binaries are byte-identical — at the default optimisation level. Expanded under Build terms a newcomer meets first.
Direct ELF PXX writes ELF output itself instead of invoking an external assembler or linker.
RTL Runtime library units under lib/rtl.
PCL Component/UI library units under lib/pcl.

Language terms

Term Meaning
Managed string Reference-counted string storage with automatic retain/release.
Dynamic array Heap-backed array sized with SetLength and queried with Length.
RTTI Runtime type information, used by reflection and component streaming work.
Unit Reusable Pascal module imported with uses.
-Fu Command-line option adding a Pascal unit search root.
-I Command-line option adding a C include path and Pascal unit search root.
PXX symbol Conditional-compilation symbol defined by PXX for Pascal input.
FPC symbol Conditional-compilation symbol reserved for real Free Pascal builds.

Cross-language vocabulary

PXX accepts Pascal, C and Nil Python, so its documentation mixes three vocabularies. Most terms have a counterpart in the language you already know, and the mapping is usually more useful than a definition.

Python / Nil Python → Pascal

Python / Nil Python Pascal note
module unit one file, one namespace
import uses but see name resolution
self Self the instance the method was called on
cls Self in a class function short for class — the class, not an instance. The abbreviation exists only because class is a reserved word and cannot be a parameter name.
dunder constructor / operator overload "dunder" = double underscore, as in __init__, __eq__
__init__ constructor
__name__ (on a class) ClassName
__str__ / __repr__ no single Pascal counterpart: str() is for a reader, repr() for a programmer, and they differ for exceptions and containers
decorator (@property) a function wrapping a declaration; PXX accepts a fixed set, not arbitrary ones
list / dict / set dynamic array / — / —
None nil
duck typing binding by whether the member exists rather than by declared type

Pascal → Python / Nil Python

Pascal Python / Nil Python note
unit module
uses import
interface / implementation section Python has no declaration/definition split
RTL the standard library PXX's own, under lib/rtl
managed string str reference-counted, freed automatically
nil None
overload Python resolves one name to one function; Pascal picks by argument types

Build terms a newcomer meets first

Plain-language versions of three terms defined tersely above; the definitions agree, and this is the one to read first if either is new.

Term Meaning
Pinned compiler The blessed stable binary everything else builds with. Libraries and examples are compiled with it rather than with a freshly built compiler, so a broken build in one lane cannot poison another.
Fixedpoint The compiler compiles itself and the result is byte-identical to the binary that produced it — at the default optimisation level. It is the property that proves a compiler can still reproduce itself.
Frontend The part that parses one language. PXX has several (Pascal, C, Nil Python) and they share everything below the parser.
Shim A unit PXX wrote itself that presents a familiar API under the name mimic_<module>, standing in for a package rather than pretending to be it.

Target terms

Term Meaning
Host target The CPU architecture where the compiler binary runs.
Output target The CPU architecture selected with --target= for emitted code.
Cross-compilation Building output for an architecture different from the host.
QEMU user-mode Emulator used to run Linux cross-target binaries during tests.
ESP profile Embedded platform profile selected by --esp-profile=bare.
Object output Relocatable .o output selected by --emit-obj or a .o output name.

Eliah IDE terms

apps/ide/ names its components with a Hebrew scheme; see Examples → Apps for the full table.

Term Meaning
garin Render-agnostic IDE core (editor buffer, project model, form document, builder).
eliah GTK face of the IDE.
ilja ANSI/TUI face of the IDE.
bochan Headless test driver that exercises garin with no GUI/TUI face linked.
eduth Assertion/verdict library bochan reports results to.

Next