Javy: Creating a toolchain for running JavaScript on WebAssembly
summary
Javy converts JavaScript into tiny WebAssembly modules by embedding QuickJS bytecode, snapshotting the initialized runtime with Wizer, running Binaryen optimizations, and optionally dynamic linking against a shared wasmtime linker provider so per-user instances stay isolated. Input uses wasi stdio and top‑level eval so code must be bundled beforehand. Claim: produced modules shrink to modules <100 KB and hit Shopify constraints (tight size and sub‑5 ms execution) using QuickJS.
AI-written summary · about
chapters (26)
- 0:00Introduction
- 1:00What is Javy
- 2:05How does Javy work
- 3:11Code example
- 3:41Imports
- 4:43Bundled files
- 5:53Why build Javy
- 8:02How we create WebAssembly
- 8:20Quickjs
- 8:31Quickjs Walls
- 9:06IO Code
- 9:35Wazi
- 11:00Wiser
- 11:21Quick JS
- 11:39Context and Value
- 12:45JavaScript APIs
- 13:03Javy Texture
- 15:01Dynamic Linking
- 17:03Export Methods
- 17:59Embedded Linking
- 18:28Code Module
- 19:23Start Function
- 20:47Executing the module
- 22:10Recap
- 23:00Questions
- 23:22Shopify
related talks
34mPractical Polyglot WebAssembly
30mWhy Should You Consider JavaScript on WebAssembly?
30mWhy Should You Consider JavaScript on WebAssembly?
44mJavaScript in WebAssembly? Why and How
50mWebAssembly and the Future of the JVM Ecosystem
13mKeynote: Wasm from the Inside Out: A Journey Through the Impact of WebAssembly in Production
44mWebAssembly and the Future of the JVM Ecosystem
45mJumping Feet-First into JS on Wasm
