A Rubyist from Fukuoka. An Infrastructure Engineer at Mirrativ, Inc.(a live-streaming platform in Japan). Loves Ruby, mruby, Rust, eBPF, WASM, LLVM, MP4 Media File Format and other binaries. A speaker of Several RubyKaigis, a RubyKaigi 2019 Local Organizer, and a co-translator of o'reilly's "Learning eBPF" (Japanese edition).

An mruby for WebAssembly

The author is developing "mruby/edge", a specialized Ruby runtime for WebAssembly (WASM).

One of the reasons the author started to build a new runtime is that he aimed to create a smaller wasm binary than CRuby's, which is 18 MB (observed from 3.3.0 build). A reduction in binary size addresses the diverse use cases of WASM.

Additionally, mruby/edge associates Ruby methods with corresponding WASM-exported functions. This is in contrast to the implementations of Ruby.wasm and mruby-wasmized-by-emscripten, which only support top-level script execution.

To accomplish these objectives, the author decided to build a VM from scratch, utilizing mruby's elegant bytecode spec for its instruction set. This places mruby/edge within the “mruby family” as a new member.

The talk will cover its internal technologies, challenges, mruby VM and WASM insights, and future prospects, including support for WASM Component Model in mruby/edge.