# Investigate browser-local WebAssembly constraints Type: research Status: resolved Parent: [Find the ASPL MVP specification](../map.md) ## Question What constraints do current primary WebAssembly and C-to-WebAssembly toolchain documentation impose on compiling the C11 ASPL compiler and register VM for browser-local compilation and execution, especially filesystem behavior, dynamic loading, process APIs, output size, worker use, and isolation? ## Answer Compile the portable C compiler core and register VM ahead of time into one statically linked WebAssembly module, then run it in a dedicated Web Worker. Use in-memory source and bytecode APIs, stay single-threaded, and enforce instruction, memory, output, recursion, and wall-clock limits. The browser build must omit ELF execution, process APIs, and arbitrary C library loading; Emscripten `dlopen` handles WebAssembly side modules, not Linux shared objects. Keep the host import list fixed and small because WebAssembly isolates the module from the browser but does not stop unsafe C code from corrupting other objects inside the module's linear memory. See [Browser-local WebAssembly constraints for the ASPL MVP](../research/03-browser-webassembly-constraints.md) for the cited findings and prototype checks.