Replace the legacy Emscripten JS-exceptions model with native wasm-EH (legacy encoding) across the whole build, keeping Asyncify coroutines working via a from-source Binaryen --hoist-cpp-catches pre-pass. Net result: native-EH is the only build mode, the 3D viewer is on by default, and pcbnew shrinks substantially. Highlights: - Binaryen submodule everywhere + --hoist-cpp-catches integration in apply-asyncify; post-link Asyncify covers every app wasm (not just standalone test wasm). - Build deps (incl. OpenCASCADE without OCC_CONVERT_SIGNALS) and all KiCad apps with -fwasm-exceptions; emscripten_sleep added to the post-link asyncify-imports. - libcontext fiber entry wired under native exceptions; while-loop main loop + currData shim injected into all wx apps. - Native-EH collab apply fixed: DEBUG-define the embind TU + match all out-of-CMake C++ TUs' ABI flags to the core, fixing the vtable-layout skew / mis-dispatch. - 3D viewer enabled by default (real raytracer linked, not the stub). - Retire the EH-spike scaffolding; flip the asyncify-races ablation pins to shim-redundancy pins (native-EH stays clean with the legacy shims ablated). - Fix the asyncify-races quiescence check to not require Asyncify.currData==0: under the native-EH per-frame-yield top loop the main stack is asyncify-suspended every frame, so currData legitimately churns (a freed-but-not-yet-nulled buffer, not a leak). Refresh the pcbnew toolbar screenshot baseline for the new kicad. - CI: drop the obsolete binaryen_version input/env (the build uses the binaryen submodule fork's wasm-opt, not a version download); key the wasm-output cache on the binaryen submodule SHA instead. Bumps the wxwidgets + binaryen submodules to their squashed feature commits. Validated green: all 7 apps native-EH (real 3D in pcbnew); KiCad e2e 63/63 Firefox + Chromium (3D viewer renders); wx 336; coroutine 34/34 both engines; asyncify 7/7 both engines. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
21 lines
885 B
Text
21 lines
885 B
Text
# Suspending imports for the post-link Asyncify pass (consumed by apply-asyncify.sh).
|
|
# Binaryen's --asyncify instruments every function that can transitively REACH one of these
|
|
# imports. This is the BOUNDARY list, not a function allowlist — the callers are auto-discovered.
|
|
#
|
|
# We run Asyncify post-link (outside emcc), so emcc's automatic import generation never runs;
|
|
# this file replicates emcc's default async built-ins + our own suspending imports. A superset
|
|
# is safe — binaryen ignores any import the wasm doesn't actually contain.
|
|
#
|
|
# --- Emscripten async built-ins (what emcc auto-adds for the in-link Asyncify) ---
|
|
env.emscripten_sleep
|
|
env.emscripten_scan_registers
|
|
env.emscripten_lazy_load_code
|
|
env.emscripten_wget
|
|
env.emscripten_wget_data
|
|
env.emscripten_idb_*
|
|
#
|
|
# --- Project suspending imports ---
|
|
env.__asyncjs__*
|
|
env.emscripten_fiber_swap
|
|
env.startModal
|
|
env.js_*
|