Menü
Developer

Emscripten erhält neues LLVM-Backend

Im Master Branch des Projekts zum Umwandeln von C/C++-Code in JavaScript steht mit fastcomp ein neues LLVM-Backend zur Verfügung, dass deutlich schneller als der alte Compiler sein soll.

vorlesen Drucken Kommentare lesen

Entwickler Alon Zakai hat auf der Mailing-Liste des Emscripten-Projekts die Übernahme des neuen LLVM-Backends fastcomp in den Master Branch bekannt gegeben. Das Backend ist wohl schon seit einiger Zeit fertig, man wollte allerdings zunächst Reaktionen abwarten und Tests durchführen. Da diese nun für alle Plattformen erfolgreich waren, steht fastcomp Nutzern des Projekts jetzt offiziell zur Verfügung.

Es soll als neuer Compiler-Kern für Emscripten dienen und den alten JavaScript-Compiler ablösen. Letzterer ließ viele verschiedenen Modi zur Codegenerierung zu, fastcomp konzentriert sich aufgrund der guten Erfahrungen mit asm.js allerdings auf diese Variante zum Erstellen von Quelltexten. Das Backend soll in vielen Fällen mindestens viermal so schnell wie der alte Compiler arbeiten und zudem besseren Code erzeugen.

Der alte JavaScript-Compiler ist zwar noch vorhanden und lässt sich weiter verwenden, die Entwickler raten allerdings davon ab. Alle wichtigen Features, sofern sie nicht asm.js-inkompatibel (wie Embind), als veraltet markiert oder für eine Neuimplementierung eingeplant sind, sollten bereits für fastcomp zur Verfügung stehen. Möchten Nutzer dennoch mit der alten Variante arbeiten, sollten sie für den Build EMCC_FAST_COMPILER=0 emcc [..] angeben. Welcher Compiler zum Einsatz kommt, lässt sich an der Debug-Ausgabe erkennen.

Der Nachteil des neuen Backends ist, dass sich nun keine herkömmliche LLVM-Version mehr nutzen lässt und stattdessen der Fork des Projekts zum Einsatz kommen muss. Die Entwickler hoffen allerdings darauf, dass dieser Zustand temporärer Natur ist, und das entwickelte Backend seinen Weg in die offizielle LLVM-Variante findet. In der Bekanntmachung macht Zakai zudem darauf aufmerksam, dass Emscripten-Nutzer nun darauf achten müssen, dass alle Repositories (Emscripten, LLVM, Clang) die selbe Versionsnummer haben und aus einem Zweig stammen (nicht Master mit Incoming verwenden). Emscripten-Anwender, die einen SDK Build nutzen, müssen bis zum nächsten Update auf fastcomp warten. Es wird wahrscheinlich erst mit etwas Abstand veröffentlicht, um weitere Rückmeldungen abzuwarten.

Emscripten lässt sich zum Umwandeln von C/C++-Code in JavaScript verwenden und kam im Zusammenspiel mit asm.js schon beispielhaft für die Portierung der Spiel-Engine Unreal Engine 3 zum Einsatz. asm.js erlangte zudem letztes Jahr als Optimierungsmaßnahme in Firefox 22 Bekanntheit. Die Untermenge von JavaScript eliminiert verlangsamende Eigenheiten der Sprache wie die automatische Garbage Collection und nähert sich so dem Modell von C/C++ an. (jul)