Emscripten ist ein LLVM-zu-Web-Compiler. Emscripten kompiliert LLVM-Assemblercode zu Standard-JavaScript oder zu WebAssembly. Je nach verwendeter Programmiersprache werden bei der Übersetzung verschiedene Ansätze verfolgt. Der Sourcecode wird entweder direkt von LLVM-Bytecode in JavaScript übersetzt (z. B. C++ oder C), oder die Ausführungsumgebung der Programmiersprache wird in JavaScript übersetzt. Die kompilierte Ausführungsumgebung wird dann genutzt um Code der jeweiligen Programmiersprache auszuführen (z. B. CPython)[1]. Emscripten unterstützt eine ganze Reihe von Programmiersprachen[2], der Fokus der Entwickler liegt aber auf der Übersetzung von C und C++.
Ein Beispiel für die Anwendung von Emscripten zeigt die Portierung der Unreal Engine 4 auf JavaScript.[3]
Die erste Stufe des Kompiliervorgangs ist das LLVM-Frontend. Das verwendete LLVM-Frontend übersetzt den Sourcecode der verwendeten Sprache in LLVM-Assemblercode (LLVM Intermediate Representation). Für die Übersetzung von C++-Code kann beispielsweise Clang verwendet werden. Der erzeugte LLVM-Assemblercode wird anschließend von LLVM mit dem entsprechenden Backend in die Zielsprache übersetzt. Normalerweise würde im Backend der ausführbare Assembler-Maschinencode für eine bestimmte Plattform erzeugt. Diese Rolle übernimmt stattdessen der Emscripten-Compiler. Der Emscripten-Compiler übersetzt den erzeugten LLVM-Assemblercode zu einem performant übersetzbarem Subset von JavaScript (asm.js).
Im Gegensatz zur Ausführung nativer Applikationen ist die Ausführungsgeschwindigkeit von Emscripten-generiertem JavaScript-Code deutlich geringer. Dabei spielt auch der verwendete Browser eine große Rolle, je nach Anwendung variiert die Performance stark. Ein optimistischer Richtwert ist eine ca. zweifach längere Ausführungszeit[4][5]. Bei performance-kritischen Anwendungen muss daher auch die Ausführungsumgebung genau spezifiziert werden.
Emscripten ist als freie Software unter zwei verschiedenen Lizenzen verwendbar: MIT-Lizenz und University of Illinois/NCSA Open Source License.
Seit dem 23. Dezember 2014 verwendet das Internet Archive eine Emscripten-konvertierte DOSBox-Emulation für Browser-basierte Präsentation von Tausenden archivierter DOS-Computerspiele,[6][7][8] ausschließlich für Schul- und Forschungszwecke.[9]