Bringing the web up to speed with WebAssembly

@article{Haas2017BringingTW,
  title={Bringing the web up to speed with WebAssembly},
  author={Andreas Haas and Andreas Rossberg and Derek L. Schuff and Ben L. Titzer and Michael Holman and Dan Gohman and Luke Wagner and Alon Zakai and J. F. Bastien},
  journal={Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation},
  year={2017}
}
The maturation of the Web platform has given rise to sophisticated and demanding Web applications such as interactive 3D visualization, audio and video software, and games. With that, efficiency and security of code on the Web has become more important than ever. Yet JavaScript as the only built-in language of the Web is not well-equipped to meet these requirements, especially as a compilation target. Engineers from the four major browser vendors have risen to the challenge and collaboratively… 

Figures from this paper

Next-generation Web Applications with WebAssembly and TruffleWasm
TLDR
WebAssembly, a binary format compilation target with a low-level assembly-like language used for targeting from other programming languages, is explored within the GraalVM-based ecosystem as well as from performance test results within the academic environment.
Bringing the web up to speed with WebAssembly
TLDR
WebAssembly is the first mainstream language that has been designed with a formal semantics from the start, finally utilizing formal methods that have matured in programming language research over the last four decades.
Bringing WebAssembly up to speed with dynamic linking
TLDR
The use of WebAssembly outside the browser is studied, interested in partitioning WebAssembly applications into modules and linking them during execution allowing reductions in memory consumption, binary size, and compilation and startup time.
Wasmachine: Bring the Edge up to Speed with A WebAssembly OS
TLDR
The Was-machine prototype in the memory-safe programming language Rust is implemented and a performance evaluation shows that WebAssembly applications running in Wasmachine are up to 21% faster than their native counterparts in Linux.
Wasabi: A Framework for Dynamically Analyzing WebAssembly
TLDR
Wasabi is presented, the first general-purpose framework for dynamically analyzing WebAssembly and provides an easy-to-use, high-level API that supports heavyweight dynamic analyses.
Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code
TLDR
Browsix-Wasm is built, a significant extension to Browsix that makes it possible to run unmodified WebAssembly-compiled Unix applications directly inside the browser, and is used to conduct the first large-scale evaluation of the performance of WebAssembly vs. native.
Mind the Gap: Analyzing the Performance of WebAssembly vs. Native Code
TLDR
BROWSIX-WASM is built, a significant extension to BROWSIX that, for the first time, makes it possible to run unmodified WebAssembly-compiled Unix applications directly inside the browser, and is used to conduct the first large-scale evaluation of the performance of WebAssembly vs. native.
Understanding the performance of webassembly applications
TLDR
A systematic study to understand the performance of WebAssembly applications and compare it with JavaScript, showing that WebAssembly compilers are commonly built atop LLVM, where their optimizations often become ineffective for WebAssembly, leading to counter-intuitive results.
Wasm/k: delimited continuations for WebAssembly
TLDR
This paper identifies several features of high-level languages that current approaches can only compile to WebAssembly by generating complex and inefficient code, and argues that these problems could be addressed if WebAssembly natively supported first-class continuations.
Mechanising and verifying the WebAssembly specification
TLDR
This work presents a mechanised Isabelle specification for the WebAssembly language, together with a verified executable interpreter and type checker, and details how work on this proof has exposed several issues with the official WebAssembly specification.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 43 REFERENCES
Bringing the web up to speed with WebAssembly
TLDR
WebAssembly is the first mainstream language that has been designed with a formal semantics from the start, finally utilizing formal methods that have matured in programming language research over the last four decades.
Mechanising and verifying the WebAssembly specification
TLDR
This work presents a mechanised Isabelle specification for the WebAssembly language, together with a verified executable interpreter and type checker, and details how work on this proof has exposed several issues with the official WebAssembly specification.
Java security: from HotJava to Netscape and beyond
TLDR
This work examines the Java language and both the HotJava and Netscape browsers which support it, and finds a significant number of flaws which compromise their security.
Language-independent sandboxing of just-in-time compilation and self-modifying code
TLDR
This paper introduces general mechanisms for safely and efficiently sandboxing software, such as dynamic language runtimes, that make use of advanced, low-level techniques like runtime code modification.
Draining the Swamp: Micro Virtual Machines as Solid Foundation for Language Development
TLDR
The micro virtual machine is proposed, a thin abstraction designed specifically to relieve implementers of managed languages of the most fundamental implementation challenges that currently impede good design.
Emscripten: an LLVM-to-JavaScript compiler
TLDR
This work presents and proves the validity of Emscripten's Relooper algorithm, which recreates high-level loop structures from low-level branching data, and opens up two avenues for running code written in languages other than JavaScript on the web.
An Overview of the Flint/ml Compiler
TLDR
An overview of novel aspects of the FLINT/ML compiler, a high-performance type-directed compiler for SML'97 (extended with higher-order modules), and a preliminary report on the current status of the implementation are given.
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
TLDR
The structure of CIL is described, with a focus on how it disambiguates those features of C that were found to be most confusing for program analysis and transformation, allowing a complete project to be viewed as a single compilation unit.
Secure virtual architecture: a safe execution environment for commodity operating systems
TLDR
An efficient and robust approach to provide a safe execution environment for an entire operating system, such as Linux, and all its applications, by using a novel approach that exploits properties of existing memory pools in the kernel and by preserving the kernel's explicit control over memory.
LLVM: a compilation framework for lifelong program analysis & transformation
  • Chris Lattner, V. Adve
  • Computer Science
    International Symposium on Code Generation and Optimization, 2004. CGO 2004.
  • 2004
TLDR
The design of the LLVM representation and compiler framework is evaluated in three ways: the size and effectiveness of the representation, including the type information it provides; compiler performance for several interprocedural problems; and illustrative examples of the benefits LLVM provides for several challenging compiler problems.
...
1
2
3
4
5
...