pcbjam/scripts
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Viktor Vaczi a4ad69412e fix(wasm): bind dynCall_* to real DYNCALLS=1 exports; refactor shim into files
The shim bound bare dynCall_* names to JS getWasmTableEntry() calls, bypassing
the asyncify-instrumented dynCall_* wasm trampolines that -sDYNCALLS=1 provides.
That broke Asyncify unwind/rewind through indirect calls -> "indirect call
signature mismatch" (caught every frame in Firefox; fatal renderer crash in
Chrome). Bind the bare names to wasmExports["dynCall_<sig>"] instead.

Result: the PCBnew "select draw lines" e2e is green in Firefox (tool selects and
draws, zero page errors). Dropped the fiber-stabilization block, the shipped
diagnostic block, and the exportCallStack JS hack (all compensated for the wrong
binding); shim shrank 521 -> ~250 lines.

- scripts/common/inject-dyncall-shims.sh: orchestrator only; injected JS extracted
  to scripts/common/shims/
- scripts/common/shims/dyncall-binding.js.tmpl: per-signature binding template
- scripts/common/shims/handlesleep.js: nested-Asyncify handleSleep fix (#9153)
- scripts/common/shims/diagnostics.js: logging-only, opt-in via SHIM_DIAGNOSTICS=1
- tests/package.json: add test:kicad:firefox / test:kicad:chrome scripts

Known issue (tracked separately): Chrome still renderer-crashes on the first
coroutine resume. Asyncify.doRewind replays the deep main-context call stack and
exceeds V8's execution-stack limit (Firefox tolerates the same wasm). Proper fix
is JSPI.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 15:07:10 +02:00
..
common fix(wasm): bind dynCall_* to real DYNCALLS=1 exports; refactor shim into files 2026-05-25 15:07:10 +02:00
config Add autom4te wrapper to keep submodules clean 2025-12-27 09:21:31 +01:00
deps Remove .git from meson subprojects to keep IDE clean 2025-12-27 09:37:20 +01:00
kicad feat(webgl): Migrate to pure WebGL 2.0 and fix GL canvas layering 2026-03-20 12:38:24 +01:00
build-gal-native-test.sh feat(webgl): Add GAL native test harness for visual regression testing 2026-01-07 09:42:31 +01:00
build-gal-webgl-test.sh fix(wasm): Fix asyncify rewind with asyncify-aware dynCall shims 2026-03-13 12:26:48 +01:00
build-wasm-test.sh fix(build): Source env.sh in build-wasm-test.sh for Python 3.10+ 2026-01-10 21:24:51 +01:00
build-wxuniversal-wasm.sh fix(wasm): Fix asyncify rewind with asyncify-aware dynCall shims 2026-03-13 12:26:48 +01:00
compare-screenshots.sh Add baseline screenshots and visual regression testing 2025-11-29 19:55:12 +01:00
create-feature-patches.sh Add feature branch patch management system 2026-01-06 16:17:52 +01:00
kicad-diff-stats.sh Reduce KiCad fork divergence with CMake cleanup 2026-01-05 14:03:03 +01:00
setup-emsdk.sh fix(wasm): Fix asyncify rewind with asyncify-aware dynCall shims 2026-03-13 12:26:48 +01:00
test-gal-regression.sh refactor(webgl): Move WebGL GAL from test harness to KiCad source tree 2026-01-10 13:15:58 +01:00
test-gal-webgl.sh refactor(webgl): Move WebGL GAL from test harness to KiCad source tree 2026-01-10 13:15:58 +01:00
update-baseline-screenshots.sh Fix Asyncify and improve build process 2025-12-14 11:59:50 +01:00