The source code is parsed to an AST, which is then executed. It began with a Java-Applet. When WebAssembly appeared, I ported it to C++ with a JS/HTML interface and added graphics. Recently I converted the C++ part to C, which halved the size of the wasm file.