Skip to content

First stable release

Choose a tag to compare

@GianfriAur GianfriAur released this 09 Sep 07:44
· 32 commits to master since this release
f5a47db

The consolidation milestone (see ROADMAP.md); still in progress. What's landed so far:

Added

  • The native extensions refined for a stable 1.0 API. A consistency pass across gpio, sys,
    mem, store, wifi and s3_onboard_rgb: every function now carries typed arginfo (argument and
    return types, so reflection and type coercion work properly, including wifi_scan()'s array|false
    and the nullable ?string/?int returns), and every extension exposes a <name>_available() probe.
    Verified on ESP32-S3 hardware (an ext-selftest example exercises the whole
    surface). Builds across every PHP version (8.3–8.5).
  • New sys extension: system and runtime. Timing (sys_delay(), sys_uptime_ms(),
    sys_micros()), control (sys_restart(), sys_reset_reason()), chip/board identity
    (sys_chip_model(), sys_cpu_freq_mhz(), sys_mac(), sys_idf_version()), and memory
    introspection (sys_psram_free(), sys_heap_free(), …, absorbed from the former baremetal_utility).
    Always compiled in. delay() is a plain alias of sys_delay() (the Arduino idiom); the unprefixed
    psram_* / heap_* names are kept as deprecated aliases of the sys_* memory functions.
  • The test CI is complete. The GitHub Actions pipeline (introduced in 0.18.0) is now finished and
    exercised across the full matrix: manifest checks on every PHP version, and base-firmware builds on
    the default version × every board, every version × one board per family, and two extreme configs
    (a minimal build and a "fat" one with the heavy extensions on). Every build is gated by the per-board
    image-size budget, with the PHP source and ccache cached between runs.
  • QEMU smoke test (gating). The image now boots under Espressif's QEMU, headless, and the job
    asserts the PHP <ver> on ESP32-S3 banner on the serial output -- so a boot regression (PSRAM not
    coming up, the engine not starting) fails CI without hardware. ci/run-qemu.sh switches the S3
    console to UART0 (QEMU doesn't expose USB-Serial-JTAG on -serial), merges the flash from the build's
    flasher_args.json, and runs qemu-system-xtensa. S3 only (no P4 in QEMU yet).