Skip to content

v3.0.0

Latest

Choose a tag to compare

@BrianPugh BrianPugh released this 09 Jul 22:42

Breaking changes

  • The action now runs on the node24 runtime. GitHub-hosted runners are unaffected; self-hosted runners must be v2.327.1 or newer.
  • The cflags input now applies only to the micropython Unix port build, not to mpy-cross. mpy-cross's fixed feature configuration fails to compile with many otherwise-valid MicroPython feature flags; its meaningful options (target architecture, emitter, optimization level) are runtime CLI flags and are unaffected. CFLAGS_EXTRA is still exported to all subsequent steps of the job.
  • The MicroPython repository is cloned to os.homedir()/micropython instead of a hardcoded /home/runner/micropython. This is unchanged on GitHub-hosted runners; on self-hosted runners, use the MPY_DIR environment variable rather than a hardcoded path.

New features

  • New outputs: cache-hit ('true'/'false') and sha (the resolved MicroPython commit SHA), useful for keying your own caches off the exact MicroPython version.
  • New submodules input (default true): submodules are now initialized even on cache hits, so MPY_DIR works for natmod-style builds on warm runs (previously these passed on the first run and failed on cached re-runs). Set to false to make cached runs ~30 seconds faster if you only need the micropython/mpy-cross binaries.
  • Tag references are fetched with a fast shallow clone; branches and commit SHAs use a full clone so the built interpreter reports an accurate git describe-based version string.

Fixes

  • Git commands are invoked with argument arrays, preventing argument injection via the repository/reference inputs.
  • A cache-save race between concurrent jobs building the same configuration no longer fails an otherwise-successful build.
  • Build parallelism comes from os.cpus() instead of nproc, for self-hosted portability.

Full Changelog: v2...v3.0.0