Skip to content

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 21:32
· 38 commits to main since this release
432da41

Added

  • windows and qemu smoke steps in test-upstream-usermodule.yml, closing
    two of record 0079's own "not done here" gaps. build-windows installs wine
    and runs the collected win_amd64 .exe against smoke_test.py unmodified;
    build-qemu installs qemu-system-arm and mpremote, starts qemu itself
    against the collected firmware-<identifier>.elf (qemu's own build target
    is firmware.elf, not micropython.elf like every other port here — the
    first two real CI attempts pointed at the wrong filename by pattern-matching
    the other three steps, and failed with a generic "device busy" message that
    looked like a pty race and then a socket-startup race until qemu.log itself
    was actually read) with its serial port redirected to a local TCP socket, and
    runs mpremote ... run against it over socket://. Both paths (a passing
    script and a deliberately broken one) were verified live against real
    cross-compiled binaries before being wired into CI — rp2's own .uf2 still
    has no smoke test, for the same hardware/emulator reason record 0069 gives.
    Record 0080.
  • A webassembly smoke step in test-upstream-usermodule.yml, running the
    unmodified examples/usercmodule/smoke_test.py under node from mpyhouse/.
    That job stopped at ls before, on the premise that a .wasm does not run on
    this runner -- node is preinstalled there, every consuming repo already runs
    its own wasm tests through it, and this is the check that would have caught the
    collection bug above on the day it landed. Record 0079.
  • Record 0078: handing the repo to an uncontexted reader is the docs test the
    suite cannot be.
    Five rounds of it produced this session's findings, and the
    movement between rounds is the useful part — false user-facing claims, then
    stale docstrings plus two holes in the guards themselves, then source comments
    once the docs were clean, then the guard's own dependence on human memory, then
    (given a task instead of a survey) a silent config footgun no reader would
    ever see. CONTRIBUTING.md carries the procedure and the two things that make
    a round useful: give no hints, and switch from survey to task once surveys
    saturate. CLAUDE.md now also says which docs are machine-checked and which
    are generated, so the next reader does not rediscover that.

Fixed

  • A collected usermod artifact was always exactly one file, and for two ports
    that is not the whole build.
    webassembly collected micropython.mjs
    without micropython.wasm -- the .mjs loads the blob by that literal name,
    so the collected copy aborted with failed to asynchronously prepare wasm: ENOENT ... micropython.wasm, having shipped 217,344 of the 680,703 bytes the
    build actually produced. esp32 collected micropython.bin, the application
    image, never the combined firmware.bin that is the flashable one. Each port
    now declares its own companions (unix_companions(),
    webassembly_companions(), esp32_companions()), which build_one() copies
    beside the primary under their own names -- both are references by exact name
    from inside the primary, so only the primary is safely renameable. Record 0079.
  • unix artifacts shipped 2.0M of the port's own object files.
    ports/unix/build-<identifier>/lib/ is where the port builds its bundled
    libraries (mbedtls/, berkeley-db-1.xx/, littlefs/, oofatfs/), and
    repair_unix_binary() vendors its shared object into that same directory --
    so record 0070's "copy the lib/ beside the binary" copied 94 .o and 94
    .P files along with the 40K libffi.so.6 that is the actual dependency.