Kamm, Matteo and Marti, Mike (2018) JavaScript to WebAssembly Cross Compiler. Student Research Project thesis, HSR Hochschule für Technik Rapperswil.
HS 2018 2019-SA-EP-Kamm-Marti-JS to WebAssembly Cross-Compilation.pdf - Supplemental Material
Download (541kB) | Preview
Abstract
Moderne Webbrowser unterstützen die Ausführung des binären WebAssembly Formats, das eine hohe Performance sowie geringere Fluktuationen der Programmlaufzeiten zwischen den Browsern ermöglicht.
Verschiedene Compiler erlauben bereits heute das Übersetzen der Programmiersprachen C, C++ sowie Rust zu WebAssembly. Da diese Sprachen nicht im Browser ausgeführt werden können, sind solche Compiler nur ahead-of-time nutzbar. Für eine just-in-time Kompilation im Browser müsste der Compiler in JavaScript implementiert werden. JavaScript Code könnte dann durch eine Übersetzung direkt beim Client im Browser beschleunigt werden.
Damit die Ausführung ohne weitere Tools im Browser lauffähig ist, wurde der Transpiler in TypeScript geschrieben. Der Transpiler kann über eine dokumentierte Schnittstelle angesprochen werden. Übersetzt wird ein stark typisiertes und für rechenintensive Aufgaben ausgelegtes Subset von JavaScript. Anschliessend wird das WebAssembly über ein Call-Wrapper aufgerufen. Für das Erstellen des abstrakten Syntaxbaums wurde BabelJS verwendet. Das Generieren des binären WebAssemblies wird von Binaryen übernommen.
Das Resultat ist ein schlanker und performanter Transpiler, der JavaScript zu WebAssembly übersetzt. Der Endnutzer benötigt für die Ausführung des Transpilers lediglich einen Browser und keine weiteren Programme. Die Transpilierung zu WebAssembly konnte trotz zusätzlicher Transpilationszeit in einigen Fällen eine schnellere Ausführung erzielen. Die Arbeit hat gezeigt, dass die WebAssembly Infrastruktur noch Verbesserungspotential aufweist. Es könnte beispielsweise noch mehr optimiert und dadurch die Laufzeit verbessert werden.
Item Type: | Thesis (Student Research Project) |
---|---|
Subjects: | Area of Application > Development Tools Technologies > Programming Languages > Java Script Technologies > Web |
Divisions: | Bachelor of Science FHO in Informatik > Student Research Project |
Depositing User: | OST Deposit User |
Contributors: | Contribution Name Email Thesis advisor Bläser, Luc UNSPECIFIED |
Date Deposited: | 26 Mar 2019 06:46 |
Last Modified: | 26 Mar 2019 06:46 |
URI: | https://eprints.ost.ch/id/eprint/738 |