This is cool! But this suffers from multiple translations:
actual_cpu(browser_sandbox(wasm(x86_emulator(python_interpret(python source)))))
Is there some way to do a more direct JIT in wasm? Or maybe just a normal python interpreter written in wasm? Or would that not be faster?
The point of this technology is generality. It is theoretically possible, given enough work, run Python directly in Wasm. The effort would be, though, Python specific and you would need to start from scratch for every single language.
CheerpX allows running unmodified X86 programs, it does not matter if it's Python or something else. It does not even have to be a REPL, for that matter. We use this tech in production to run the legacy Flash plugin, for example: https://leaningtech.com/cheerpx-for-flash/
> given enough work, run Python directly in Wasm
It is already possible! See https://github.com/pyodide/pyodide