Current limits
PXX is experimental. This page collects practical limits a user should know before treating a successful compile as a production-ready result.
General use
- Do not use PXX-built programs for security-sensitive, safety-sensitive, financial, legal, medical, infrastructure, or public network-facing workloads.
- The supported surface is what is tested in this repository. Uncovered FPC language or RTL behavior may compile incorrectly or not compile at all.
- Error messages are improving, but some unsupported constructs still fail with compiler-internal wording.
- The runtime reserves a 256 MiB heap arena. The first heap allocation in
any PXX program maps 256 MiB in a single
MAP_PRIVATE|MAP_ANONYMOUSrequest. Pages fault in lazily, so actual use stays small — a string-concatenating test program peaks at 392 KB resident and the compiler at about 15 MB compiling it — but the mapping is requested withoutMAP_NORESERVE, so a small VM, container, or memory-capped environment can refuse it, and the program then exits withpxx: out of memory (heap arena mmap failed)before doing any work. A program that allocates nothing (awritelnof a literal) makes no such request. Measured 2026-09-10 on x86-64 Linux.
Language and compatibility
- PXX does not implement the full Free Pascal language and RTL.
{$mode objfpc}and-Mobjfpcare accepted as compatibility markers, not as a switch to a complete FPC semantic mode.- Some FPC directives are accepted only as comments or compatibility markers.
- Range (
{$R+}), overflow ({$Q+}), and IO ({$I+}) checking are implemented but opt-in per region — the lax default does not check. Many other compile-switch states are still accepted only as inert markers. See directives. - The FPC package ecosystem is not bundled.
Targets
- Linux
x86_64is the primary path. - Linux
i386,aarch64, andarm32are cross-output targets with growing test coverage. riscv32andxtensaare embedded/ESP32-oriented targets. Treat them as active bring-up surfaces rather than stable general-purpose release targets.--shared(.sooutput) is x86-64 only, introduced for and validated with the.asmassembly-source frontend.
Libraries
- Library documentation describes the intended user-facing surface, but the RTL and PCL are still young.
- HTTPS requires a registered TLS backend. The OpenSSL backend is opt-in and
depends on a system
libssl. - Some GUI examples require GTK/OpenGL development libraries and a display server.
Reporting gaps
If a documented example fails against the pinned compiler, file a progress ticket
under devdocs/progress/backlog with the command, source, expected result, and
actual result.