THAT ONE WAS ACTUALLY MORE SATISFYING TBH <| sep |> My understanding of a VM is that the semantic of a language should not matter much . You can change a lot at the language level while keeping the same VM , but there are some things that you can ' t change . The Python VM , for instance , executes Python bytecode . Python bytecode has such commands as BUILDTUPLE and CALLFUNCTIONVARKW . If Python 3 had different semantics for how tuples work or how to call functions with a kwargs parameter , then this would be a potentially breaking change , even though the bytecode is compatible . Plus there ' s the runtime . If I tried to mash Java into the dlang runtime , that would produce a world of hurt . In the age of celebration of anything compiling to asm . js , translating Python 2 to 3 should not be an issue . Sure , but part of the goal is to produce understandable code . Do you expect to get that from a system like emscripten ?