JavaScript to WebAssembly Cross Compiler

Kamm, Matteo and Marti, Mike (2018) JavaScript to WebAssembly Cross Compiler. Student Research Project thesis, HSR Hochschule für Technik Rapperswil.

[thumbnail of HS 2018 2019-SA-EP-Kamm-Marti-JS to WebAssembly Cross-Compilation.pdf]
Preview
Text
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: HSR 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

Actions (login required)

View Item
View Item