Lumen - Bringing the BEAM to WebAssembly and Beyond

Lumen is a new compiler and runtime for BEAM languages (currently Erlang and Elixir) that supports targeting environments that were previously unsupported or infeasible for the BEAM virtual machine, e.g. WebAssembly, bare metal embedded hardware and more.

To best support these new targets, Lumen takes an alternative implementation approach compared to the BEAM. Rather than being constructed as a compiler that produces bytecode which is then executed by a virtual machine, Lumen is instead an ahead-of-time compiler that produces native code in the form of a standalone executable. It builds on the capabilities and ecosystem provided by the Rust and LLVM toolchains and makes it possible to apply BEAM languages to domains that were previously inaccessible.

The beta release of Lumen in late August 2019 provided an early preview of the new compiler, with primary support for WebAssembly, as well as secondary support for x86_64. This talk will share more about Lumen, where it is currently, and what the team has planned for it in the near future and beyond.

THIS TALK IN THREE WORDS

BEAM

WebAssembly

Compilers

OBJECTIVES

The talk will be a mix of high-level and technical topics. Starting with a quick intro on what Lumen is, with a quick demonstration of how it works, before moving on to talk about why the team built it, how it is designed, and where they plan to take it in the future.

Paul also plans to share pointers on how to get involved and answer any questions if there is time. 

TARGET AUDIENCE

Everyone with an interest in the BEAM or compilers.