The art of writing interpreters in Wasm

Wasm offers “near-native performance” compared to native code, and in many cases that is true. But the claim mostly applies to statically typed languages. If you try to run a dynamic language, such as JavaScript or Python, the results can be surprising. Can we implement a JavaScript interpreter directly in Wasm and make it run with something close to “near-native” performance…

Notes on CoW mappings

Hello, hackers! I’m currently working on a cool project: Fast isolate cloning. In short, it’s a new V8 feature that quickly instantiates fresh isolates by cloning existing ones. While developing it, I explored and tested several strategies for maintaining and cleaning copy-on-wri…

Multi-cage mode and multiple sandboxes

Multi-cage mode and multiple sandboxes Hello colleagues, recently I’ve been working on some interesting parts of V8 and I want to announce this work to the public because it could be useful for deno, node, and other folks who are working with V8 embedding. Pointer compression pro…

Optimization of Wasm’s indirect calls for SpiderMonkey

Hello hackers, part of last year and part of this year I was working on some cool optimization for Wasm call_indirect instruction in SpiderMonkey and recently it was finally landed. So, grab some food and let me share this story with you.

Adventures in porting SpiderMonkey to the WASI WebAssembly platform

Hello hackers, today we are about to go on a trip into the world of C++ and WebAssembly. Recently I have been lucky enough to participate in porting such a big and complex codebase as SpiderMonkey to the WASI platform. I want to share with you some of that experience.