SPLASH 2021
Sun 17 - Fri 22 October 2021 Chicago, Illinois, United States
Tue 19 Oct 2021 10:00 - 10:20 at Zurich G - Session 1 Chair(s): Stefan Marr

WebAssembly is a novel safe virtual machine instruction set supported by all major browsers. Its main strengths are safety, portability, compact code representation and fast code execution. These properties also make it an attractive target for execution on small embedded devices. In recent years we have seen several virtual machines such as WARDuino, wasm-micro-runtime and WASM3 supporting WebAssembly on a wide range of embedded devices. Unfortunately the WebAssembly instruction set does not lend itself to implementing IOT communication. In particular there are no instructions in the VM to interrupt code. On embedded devices, interrupts are a fundamental building block of responsive applications.

In this paper we propose the inclusion of a set of IOT primitives which allows WebAssembly to support both synchronous and asynchronous communication primitives. To support the latter, we extended the VM with a lightweight interruption mechanism. We have formalized our extensions and implemented our extension in the WARDuino VM to support both HTTP and MQTT. An example IOT application written in Rust and compiled to WebAssembly running on an ESP32 shows that our extensions are stable and perform well over several testing days.

Tue 19 Oct

Displayed time zone: Central Time (US & Canada) change