About

Synopsis

A forum for developers of and researchers of low-level languages to exchange thoughts, projects, updates, and questions.

Schedule

Biweekly, alternating between Monday at 12pm ET and Friday at 4pm ET.

See Dates
Subscribe

Want to Present?

E-mail the director with your topic!

Next Presentation

Monday, December 7th at 12pm ET

An Indexed Type System for Fast and Safe WebAssembly

Adam Geller—University of British Columbia

Often in low-level languages (i.e., assembly languages), potentially expensive run-time mechanisms are used to catch unsafe behavior. The lack of abstractions in low-level languages can make reasoning about unsafe behavior difficult, as every aspect of a program (e.g., state) has to be dealt with explicitly. Expressive type systems can statically ensure complex safety properties of programs. We present the Wasm-prechk language, an assembly language based on WebAssembly. Wasm-prechk is equipped with a type system that allows expressing simple constraints over program values to ensure the same level of safety as WebAssembly while justifying the static elimination of run-time checks.

History

Interface Types Introduction and Update

Luke Wagner—Fastly

The presentation will recap the motivation and requirements for the Interface Types proposal as well as the design space considered. The presentation will then walk through some details of the recently updated proposal and end with a description of the next planned steps.

Wasm/k: Delimited Continuations for WebAssembly

Donald Pinckney—University of Massachusetts, Amherst

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. Current compilers are forced to produce poor WebAssembly code in order to implement certain high-level language features such as green threads because WebAssembly disallows stack manipulation. We address this shortcoming by introducing Wasm/k, a small extension to WebAssembly that adds support for delimited continuations while retaining the speed and safety of WebAssembly. We have implemented Wasm/k in the Wasmtime runtime, and we provide case studies of how to implement various high-level language features (including green threads) using Wasm/k.

Decomposing C++ Modules for Fast Load Times

Thomas Lively—Google

Even with streaming baseline compilers, downloading and compiling large WebAssembly modules can significantly lengthen application startup time on the Web. One potential solution is to automatically split modules so that only the code needed at startup is initially downloaded, compiled, and run while the rest of the code is downloaded and compiled in the background. This talk will describe how module splitting could be implemented and how it might fit into Emscripten and other WebAssembly toolchains, as well as discuss open questions on how best to decompose modules.