Wasm/k: Delimited continuations for WebAssembly

8Citations
Citations of this article
11Readers
Mendeley users who have this article in their library.
Get full text

Abstract

WebAssembly is designed to be an alternative to JavaScript that is a safe, portable, and efficient compilation target for a variety of languages. The performance of high-level languages depends not only on the underlying performance of WebAssembly, but also on the quality of the generated WebAssembly code. In this paper, we identify several features of high-level languages that current approaches can only compile to WebAssembly by generating complex and inefficient code. We argue that these problems could be addressed if WebAssembly natively supported first-class continuations. We then present Wasm/k, which extends WebAssembly with delimited continuations. Wasm/k introduces no new value types, and thus does not require significant changes to the WebAssembly type system (validation). Wasm/k is safe, even in the presence of foreign function calls (e.g., to and from JavaScript). Finally, Wasm/k is amenable to efficient implementation: we implement Wasm/k as a local change to Wasmtime, an existing WebAssembly JIT. We evaluate Wasm/k by implementing C/k, which adds delimited continuations to C/C++. C/k uses Emscripten and its implementation serves as a case study on how to use Wasm/k in a compiler that targets WebAssembly. We present several case studies using C/k, and show that on implementing green threads, it can outperform the state-of-the-art approach Asyncify with an 18% improvement in performance and a 30% improvement in code size.

Cite

CITATION STYLE

APA

Pinckney, D., Guha, A., & Brun, Y. (2020). Wasm/k: Delimited continuations for WebAssembly. In DLS 2020 - Proceedings of the 16th ACM SIGPLAN International Symposium on Dynamic Languages - Co-located with SPLASH 2020 (pp. 16–28). Association for Computing Machinery, Inc. https://doi.org/10.1145/3426422.3426978

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free