Skip to content

Fix broken cross-platform CI builds - #12

Merged
espmaniac merged 9 commits into
mainfrom
agent/fix-ci-dependencies
Aug 12, 2026
Merged

Fix broken cross-platform CI builds#12
espmaniac merged 9 commits into
mainfrom
agent/fix-ci-dependencies

Conversation

@espmaniac

@espmaniac espmaniac commented Aug 11, 2026

Copy link
Copy Markdown
Member

Summary

  • pin vshymanskyy/uvwasi to commit 0820128569533c855d60c0f6382acbb14aa62ad2
  • pass the correctly typed function name to v_FindFunction() in C++ builds
  • expand SnapshotGetModule() into an unambiguous loop for strict RISC-V GCC
  • make runtime snapshots optional through d_m3HasSnapshot=0 or BUILD_SNAPSHOT=OFF
  • make fuel/resume optional through d_m3HasFuel=0, while keeping it enabled by default everywhere except the flash-constrained ATmega1284P example
  • use AVR call-prologue sharing and linker relaxation for the ATmega1284P build
  • keep the shared, flash-saving fuel dispatcher unchanged when fuel is enabled
  • give nested wasm3 self-hosting tests enough VM stack to report guest stack overflow correctly
  • skip Particle cloud builds cleanly when PARTICLE_TOKEN is unavailable
  • validate CoreMark with deterministic component CRCs, independent of runner speed and iteration count

Root causes

The original 50-job matrix had 15 failures:

  • eleven uvwasi-dependent jobs requested the removed master branch and stopped during configuration
  • two maintenance C++ jobs rejected a void * argument passed to a const char * parameter
  • Sipeed MAIX promoted ambiguous loop indentation to an error
  • ATmega1284P exceeded flash by 3860 bytes

Follow-up runs exposed additional latent problems:

  • PlatformIO application flags did not reliably reach wasm3 library sources, so feature defaults belong in m3_config.h
  • snapshot code was not the AVR overflow source: LTO was already discarding its unused API; fuel/resume and repeated AVR prologues needed their own size controls
  • nested wasm3 has two VM stack layers; the previous 2 MiB outer stack was exhausted before the inner VM could return the expected stack overflow trap
  • the push-only Particle job attempted to authenticate with an empty secret
  • CoreMark's final CRC changes with its iteration count even though the deterministic list, matrix, and state CRCs remain correct

Validation

  • configured and built with BUILD_WASI=uvwasi against the pinned dependency
  • configured and built with strict misleading-indentation diagnostics
  • configured, built, and tested with BUILD_SNAPSHOT=OFF
  • passed the generated fuel regression test with fuel enabled
  • passed 17,863/17,863 WebAssembly spec assertions with fuel both enabled and compiled out
  • passed all seven fast WASI applications with fuel compiled out
  • passed the complete nested/self-hosted WebAssembly spec suite: 17,863/17,863
  • passed all seven fast WASI applications through nested wasm3, including both smallpt variants
  • passed all 12 full local WASI application tests, including CoreMark
  • verified ATmega1284P defaults are explicitly overrideable and other targets retain fuel and snapshots
  • parsed the updated GitHub Actions workflow successfully
  • measured a 2856-byte native text reduction with fuel compiled out and 2936 bytes with snapshots compiled out
  • GitHub Actions run c_operations needs to be cleaned up wasm3/wasm3#63 completed successfully, including ATmega1284P, ESP8266, RISC-V, self-hosted WASI, C++, and macOS/uvwasi

@espmaniac espmaniac changed the title Fix uvwasi and RISC-V CI builds Fix broken cross-platform CI builds Aug 11, 2026
@espmaniac
espmaniac marked this pull request as ready for review August 11, 2026 20:32
@espmaniac
espmaniac merged commit 16b0092 into main Aug 12, 2026
100 checks passed
@espmaniac
espmaniac deleted the agent/fix-ci-dependencies branch August 12, 2026 06:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant