Build a complete bytecode virtual machine from scratch. Design an instruction set, implement a stack-based interpreter, add control flow, functions, closures, a compiler, GC, JIT, and coroutines.