Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 19:53
· 23 commits to main since this release
4d509a7

Fixed

  • bin/refresh_toolchain_pins.py --check had been a silent no-op since [0087] landed —
    it read a shared toolchain version straight out of arm_embedded.Dockerfile's own ARG TOOLCHAIN_URL= line, which [0087] deleted the moment the version became a per-row fact
    instead; every check since then exited 0 regardless of what build-platforms.toml actually
    held, confirmed live with a deliberately-broken row that passed clean. Rewritten to read the
    row's own committed gcc field directly; deliberately re-broke the same row to confirm
    --check now catches it (v1.20.0 usermod.mimxrt: pinned 13.3.1 >= ceiling 13) before
    restoring it. [0090].
  • mimxrt's eleven v1.20.0 rows carried a toolchain version (14.2.1-1.1) that violates
    their own >= 13 ceiling
    (sdcard_cmd_set_bus_width(), fixed upstream in v1.21.0) —
    [0087]'s general per-row mechanism never special-cased this one disjoint window, exactly the
    gap [0088] had scoped and left unimplemented. Now 12.3.1-1.2, the newest xpack release
    genuinely below the ceiling, sha256-verified live against the publisher's own sidecar.
    [0088].
  • Every MicroPython tag before v1.20.0 — the nine ABI 5 and ABI 6 identifiers
    (v1.12 through v1.19.1) — had never produced an artifact
    , on any arch, for
    reasons that outlived the gcc 15 diagnostic [0082] bisected. Four separate
    pre-v1.20.0 upstream facts this project had hardcoded the modern shape of:
    mpy-cross links to mpy-cross/mpy-cross, not mpy-cross/build/mpy-cross
    (py/mkrules.mk moved it in v1.20.0, and py/dynruntime.mk's own
    MPY_CROSS = with it); py/persistentcode.h has no MPY_SUB_VERSION, so the
    ABI is the bare "5"/"6"; py/stackctrl.c and mpy-cross/main.c need
    -Wno-error=dangling-pointer and -Wno-error=enum-int-mismatch on top of the
    -Wno-error=unterminated-string-initialization those tags already needed; and
    the example natmod Makefile scoped its object cache by arch but not by tag, so
    one --build 'mpy*-<arch>' linked every tag after the first against the first
    tag's objects. Live-verified on arm_embedded: v1.12, v1.18 and v1.19.1
    build end to end, v1.29.0 unchanged beside them. examples/wasm2mpy's own
    Makefile carried the same arch-but-not-tag object scoping and is fixed with it,
    and so did all three BUILD = .obj/$(ARCH) snippets in README.md — which also
    claimed a header check catches this (it catches the arch axis; the tag axis
    produces a correct arch header and no error) and that MicroPython v1.29.0's own
    BUILD ?= build-$(ARCH) default makes it impossible (that default is arch-scoped,
    never tag-scoped). [0082], [0093].
  • mpy-cross (and, for every port but natmod, the port's own build) failed on every
    MicroPython tag before v1.26.0, on rp2, stm32, samd, nrf, cc3200, renesas-ra,
    mimxrt, esp32, webassembly, windows, and natmod's own arm_embedded/riscv_embedded
    cross arches
    — container_mpy_cross() always builds mpy-cross with the image's own native
    compiler, and every one of these images' native compiler is ubuntu:26.04's own gcc 15, which
    rejects py/emitinlinethumb.c's pre-v1.26.0 string initializers
    (-Werror=unterminated-string-initialization, [0082]) the same way it already broke
    natmod_host/windows's own x64/x86 builds. [0091] threads the tag-keyed relaxation
    already fixed for unix ([0082]) through every other port's own container_mpy_cross() call
    and make invocation. Live-verified: natmod's armv7emsp/rv32imc/rv64imc (CI, run
    33697330722) and, locally, rp2's own full firmware build on v1.20.0 (the one tag needing two
    stacked relaxations at once).
  • windows's own win_arm64 build would have failed the moment [0091]'s fix reached it:
    win_arm64's cross compiler is Clang (llvm-mingw), not GCC, and it rejects
    -Wno-error=dangling-pointer as an unrecognized diagnostic name — a hard `error: unknown