Jake Teton‑Landis

Perfection enthusiast and byte crasftsman in San Francisco, CA. Interested in systems, developer productivity, and design.

GithubTwitterLinkedIn

2020

quickjs-emscripten

DocsGithub Project HomeNPM

quickjs-emscripten is a Typescript/Javascript library around a WebAssembly build of QuickJS, an javascript engine written by Fabrice Bellard and Charlie Gordon.

QuickJS is a small and embeddable Javascript engine. It supports the ES2020 specification including modules, asynchronous generators, proxies and BigInt.

The quickjs-emscripten library allows you to use QuickJS to:

  • Safely evaluate untrusted Javascript (up to ES2020).
  • Create and manipulate values inside the QuickJS runtime.
  • Expose host (native Javascript) functions to the QuickJS runtime.

I was inspired to write the library by Figma's [blog post][figma] on their plugin system. And, I wanted to build some familiarity with the Emscripten ecosystem.

Learn more about the project from the README.

Demo

The form below will evaluate ES2020 inside a QuickJS virtual machine. Go ahead and kick the tires. You won't be able to access browser APIs or affect this page's contents because the VM is totally isolated.

If you want to build with quickjs-emscripten, head over to Github or NPM to get started.

QuickJS Evaluator