CheerpX: a WebAssembly-based x86 virtual machine in the browser, Yuri Iozzelli
WebAssembly NA2 HN recommenders · recommended in 3 months, 2020–2025
talk · advanced · 2020–2025 on HN
A talk by Yuri Iozzelli at a WebAssembly meetup on CheerpX, an x86 virtual machine running in the browser. It uses a JIT compiler that emits WebAssembly at runtime to run real native applications. It covers the architecture and demos such as porting a multipl…
HN points to it as an impressive look at how far WebAssembly can go, and as the explanation of the architecture behind CheerpX and its Flash support.
Up next
2 mo on HNThe Next Major RTS Will Fail. This Is Why.
GiantGrantGames
2 HN recommender · 2023–2024
3 mo on HNHow We Made MuseScore 4 - Music App Design is Challenging!
Tantacrul
4 HN recommender · 2022–2026
7 mo on HNNaN Gates and Flip FLOPS
suckerpinch
7 HN recommender · 2020–2025
3 mo on HNThe Closest Thing We Have to Alien Technology
Veritasium
5 HN recommender · 2026–2026
9 mo on HN"Turning the database inside out with Apache Samza" by Martin Kleppmann
Strange Loop Conference
9 HN recommender · 2015–2025
2 mo on HNThis Invention Made Disney MILLIONS, but Then They LOST It!
Corridor Crew
2 HN recommender · 2025–2026
5 mo on HNBuilding The World's First Computer - Greeks, Clocks and Rockets - Antikythera Mechanism Episode 1
Clickspring
7 HN recommender · 2018–2024
5 mo on HNEPC2018 | Wave Function Collapse in Bad North | Oskar Stalberg
BUas Games
4 HN recommender · 2020–2024
14 mo on HNWhat the heck is the event loop anyway? | Philip Roberts | JSConf EU
JSConf
16 HN recommender · 2015–2025
13 mo on HNRich Harris - Rethinking reactivity
You Gotta Love Frontend
15 HN recommender · 2019–2026
10 mo on HNCrockford on JavaScript - Volume 1: The Early Years
YUI Library
10 HN recommender · 2013–2022
10 mo on HNRailsConf 2016 - Turbolinks 5: I Can’t Believe It’s Not Native! by Sam Stephenson
Confreaks
6 HN recommender · 2017–2020
6 comments from Hacker News
This company has an x86-to-WASM compiler that lets you execute arbitrary binaries in the browser. Also a JVM to WASM transpiler. There's a fantastic Meetup presentation given by one of them where they show running a C++ multiplayer game with both client AND server running in a browser, using WebRTC as a networking polyfill. Really mindblowing: ▶ this video
5 years ago, I watched a YouTube recording of a meetup talk given by one of the CheerpX engineers: ▶ this video In it, they showed a functional demo of porting an OSS multiplayer C++ game entirely to the browser with WASM. Afterwards, I read some of their engineering content and was blown away. It's been fascinating to watch the CheerpX/CheerpJ progress from afar over the years.
Here's a talk by the team as well: ▶ this video And their website: link This is honestly one of the coolest things I've seen, and given the amount of Flex/Spark software for enterprise out there, it could drastically change the legacy software landscape.
Developer here. CheerpX for Flash runs the Pepper API version of Flash, and you're correct about the license. However, we don't do full Linux emulation just to run Flash - we emulate PPAPI and run the Flash player in an x86 JIT (CheerpX). Yuri talks about CXFF's architecture here: ▶ this video ...but if you wanted full Linux system emulation, we got it! link
It's been on our minds for a while, the major issues with this is that IPC between the app process and WebKit is like 100µs, so having the interpreter run isolated from the app process is hard. Plus loading WASM is not "free" (that is, essentially an instruction cache flush) because you need to generate a bundle that WebKit will then load, which is slow (although there has been work done in this area: ▶ this video ). So even if we did some sort of WASI thing where everything is going on in the browser, there are hurdles to overcome to make this viable. Plus the current interpreter almost certainly leaves performance on the table ;)
At Leaning Technologies, we are working on preserving _all_ flash content by running the original x86 Flash plugin via WebAssembly virtualization (CheerpX). If you want to read more: link link A presentation about the architecture of the system: ▶ this video Feel free to drop me any question: link