Weakening web assembly

13Citations
Citations of this article
27Readers
Mendeley users who have this article in their library.

Abstract

WebAssembly (Wasm) is a safe, portable virtual instruction set that can be hosted in a wide range of environments, such as aWeb browser. It is a low-level language whose instructions are intended to compile directly to bare hardware. While the initial version of Wasm focussed on single-threaded computation, a recent proposal extends it with low-level support for multiple threads and atomic instructions for synchronised access to shared memory. To support the correct compilation of concurrent programs, it is necessary to give a suitable specification of its memory model. Wasm's language definition is based on a fully formalised specification that carefully avoids undefined behaviour. We present a substantial extension to this semantics, incorporating a relaxed memory model, along with a few proposed operational extensions. Wasm's memory model is unique in that its linear address space can be dynamically grown during execution, while all accesses are bounds-checked. This leads to the novel problem of specifying how observations about the size of the memory can propagate between threads. We argue that, considering desirable compilation schemes, we cannot give a sequentially consistent semantics to memory growth. We showthat our model guarantees Sequential Consistency of Data-Race-Free programs (SC-DRF). However, becauseWasm is to run on theWeb, we must also consider interoperability of its model with that of JavaScript. We show, by counter-example, that JavaScript's memory model is not SC-DRF, in contrast to what is claimed in its specification. We propose two axiomatic conditions that should be added to the JavaScript model to correct this difference. We also describe a prototype SMT-based litmus tool which acts as an oracle for our axiomatic model, visualising its behaviours, including memory resizing.

Cite

CITATION STYLE

APA

Watt, C., Rossberg, A., & Pichon-Pharabod, J. (2019). Weakening web assembly. Proceedings of the ACM on Programming Languages, 3(OOPSLA). https://doi.org/10.1145/3360559

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