Lua im Browser dank VM in VM
Kommentare

Lua ist eine kleine, zwanzig Jahre alte Scriptsprache, die in ihren Eckdaten stark an JavaScript erinnert. Etliche Programme wurden mit ihrer Hilfe gescriptet, und wer ihre Syntax kennt, der will das zwei

Lua ist eine kleine, zwanzig Jahre alte Scriptsprache, die in ihren Eckdaten stark an JavaScript erinnert. Etliche Programme wurden mit ihrer Hilfe gescriptet, und wer ihre Syntax kennt, der will das zwei Jahre jüngere JavaScript am liebsten verbannen. Zu schade also, dass moderne Webbrowser nach wie vor keine andere Scriptsprache beherrschen (zumindest nicht einheitlich).

Doch wo eine Tür sich schließt, da öffnet sich ein Fenster. Und dieses sehen viele Entwickler in asm.js: Nämliches JavaScript-Subset und der zugehörige Compiler Emscripten verwandeln immer mehr Sprachen in Echtzeit in browserkompatibles JavaScript. Mozilla-Entwickler und Emscripten-Autor Alon Zakai wusste, dass die C-Implementierung für Emscripten bereits sehr weit fortgeschritten ist. Und er wusste, dass Lua in C geschrieben ist und in einer eigenen Virtual Machine läuft. Also vereinte er beide Lösungen und bot damit eine großartige Alternative zu bisherigen Ansätzen, Lua in den Browser zu bringen: Er kompiliert die Lua-VM mit Emscripten in JS, womit sie in der JS-VM des Browsers lauffähig wird.

Alternative Ansätze beinhalten entweder einen Lua-zu-JS-Compiler, oder einen Rewrite der Lua-VM in JavaScript. An beiden Ansätzen wird derzeit in diversen Projekten gearbeitet, wie Zakai im Blog erläutert. Doch eigentlich könne man mit oben erwähnter Lösung viel schneller zum Ziel kommen, wie sich der Mozilla-Entwickler dachte. Freilich ist dieser Lösungsansatz besonders naheliegend für Mozilla-Mitarbeiter, da der Firefox der erste Browser mit voller Optimierung für asm.js ist, und er mit der verschachtelten VM-Lösung im Vergleich zur Konkurrenz noch am schnellsten abschneidet (ein Benchmark-Durchlauf bei uns mit FF 21 vs. Chrome 28 konnte das bestätitgen).

Wer sich ein Bild von der Lua-VM machen möchte, der kann auf der Demo-Seite munter Code einfügen. Freilich liegt die 200 Kilobytes umfassende Bibliothek auf GitHub unter MIT-Lizenz zum Forken bereit.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -