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.

Terms in the release notes and the ESP pages

Term Meaning
Nil Python The Python-shaped language PXX compiles ahead of time into a native program, with no interpreter. It is not CPython. pxx is the command; Nil Python is one of the languages it compiles. See Nil Python.
Pin, "pin v450" A numbered compiler build that the project has frozen and named. The docs say which pin a figure was measured with. Reporting bugs shows how to find out which one you have.
Hosted Running as a Linux program, natively or under QEMU user mode, as opposed to on an ESP chip. "Hosted Xtensa" and "hosted riscv32" are Linux builds for the ESP chips' CPUs that the project's tests use to check ESP code under QEMU. See Targets.
Unity build Several C source files compiled as one translation unit, from one file that #includes the others. See A project with several files.
Soft-float Floating point done by integer routines instead of FPU instructions. ESP builds use it, and link the routines in only when a program uses a float. See ESP32: Floating point.
Windowed, call0 The two Xtensa calling conventions (--xtensa-abi=). An ESP-IDF build for a named Xtensa chip, such as --target=esp32s3, is windowed, because ESP-IDF requires it; plain --target=xtensa and --esp-profile=bare use call0. See Command line.
ESP-IDF mode, bare profile The two ways to build for an ESP chip. ESP-IDF mode, the default, emits an object that ESP-IDF links into firmware and runs on real boards. The bare profile (--esp-profile=bare) emits a standalone image that runs under QEMU only. See ESP32: Mode 2.
--platform=esp Selects the ESP platform layer, where FreeRTOS provides tasks rather than processes. An ESP chip name in --target= implies it. See Command line.

Eliah IDE terms

apps/ide/ names its components with a Hebrew scheme; see Examples → The Eliah IDE 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