herzlichen Dank für diese sehr gut verständliche und ausführliche Erläuterung! Mir stellt sich nun nur noch die Frage, ob ich meine JS-Projekte in Zukunft "vorkompiliert" nach WASM anbieten kann, oder ob für "echtes JavaScript" nach wie vor der Weg über den JIT-Compiler laufen muss.
Nein, das wird mit uneingeschränktem JavaScript nicht möglich sein. Es gibt dynamische Features, die ein komplettes Kompilieren technisch unmöglich machen. Es wäre aber denkbar Compiler zu bauen, die nur eine bestimmte Teilmenge von JavaScript akzeptieren und so eingeschränkte Programme nach WebAssembly übersetzen. Die rein funktionale Teilmenge von JS, die ich in meiner Bachelor-Arbeit entwickelt habe, wäre dafür geeignet. Allerdings erst, wenn WebAssembly eine Schnittstelle zur GC erhalten hat. Das soll nicht heißen, dass ich vorhabe so einen Compiler auch zu bauen :P
Es wird aber möglich sein aus einem JavaScript-Programm ein WebAssembly-Unterprogramm aufzurufen und umgekehrt. Auf diese Weise wird auch das go'old JavaScript von den Performance-Steigerungen profitieren können.
Die andere gute Nachricht ist, dass JavaScript-Engines auch heute schon Byte-Code-Caching und optimistische Übersetzungenverfahren anwenden, die darauf abzielen den Laufzeit-Overhead der JIT-Kompilierung zu minimieren.