OS / platform targets
Where a pxx binary runs — the operating-system / runtime environment, distinct from the CPU it's compiled for.
| Platform | Status | Notes |
|---|---|---|
| Linux (ELF), any distro* | Full | Primary target across every CPU arch; static and libc-free by default. |
| Bare metal (ESP) | Full | --esp-profile=bare: a self-contained ELF linked at the SoC SRAM map — own startup, no ESP-IDF, no FreeRTOS, no external linker. The full managed runtime (64 KiB heap, ref-counted AnsiString, exceptions) fits in ~20–26 KB of code. |
| ESP-IDF component | Full | --emit-obj: a relocatable object exporting app_main, called by ESP-IDF's startup task. FreeRTOS, Wi-Fi and the vendor peripheral drivers stay available at link time. |
| BSD (variants) | Maybe planned | Same static/syscall approach should port; not yet on the roadmap. |
| macOS | Not planned | No Mac workstation here to build and test on — open for another developer to pick up. |
| Windows | Not planned | No Windows workstation here to build and test on — open for another developer to pick up. |
* Any Linux distribution, regardless of its userland: pxx needs no GNU/userland tooling to compile itself — it emits static, libc-free binaries directly. The surrounding make/bash/python scripts are convenience for the test harness and dev workflow, not a requirement to produce the compiler.
ESP32 — between CPU and OS
ESP32 straddles both axes: two CPU variants (RISC-V ESP32-C3 — full; Xtensa ESP32-S2/S3 — partial) × two integration modes:
- Bare metal — pxx owns the whole image and lowers straight to the chip, no vendor toolchain in the loop. But it's bare in every sense: no network, no driver stack, IO is your own MMIO writes — more a proof of reach than a practical app platform. This is the mode the project's gate exercises, booting images under Espressif QEMU and diffing UART output against a desktop oracle.
- ESP-IDF component — the practical path, and here pxx is not the whole
toolchain: it emits a relocatable object (
app_main), and ESP-IDF's own C compiler and linker build and link it against FreeRTOS, Wi-Fi and the vendor drivers. pxx contributes the object; Espressif's toolchain produces the final firmware.
See ESP32 / microcontrollers and the CPU targets page for the per-chip breakdown.