WASM matter?
Speaker | Russell Keith-Magee |
---|---|
Time | 2019-08-02 13:30 |
Conference | PyCon Au 2019 |
Talk details | Link |
Web has become more reliant on JavaScript. A lot harder to ignore JavaScript. Users expect rich client side functionality.
Levels of abstraction:
- Machine code
- Assembly code
- Compiled languages
- Interpreted languages
- Just-In-Time compilation. Interpretor has to be ready to do just about anything, because the code can do just about anything. JIT will optimize code at run-time to optimize performance.
Exploiting JIT loopholes
asm.js
100% legal JavaScript code, with weird coding conventions that give low level primitives that directly map to machine code.
wasm
Binary format that optimizes sending asm.js code.
Web Assembly Binary Toolkit
WAT: WebAssembly Text
WASM doesn’t support strings natively. Strings need to be supported with lists.
Emscripten:
- C –> WASM
- Rust –> WASM
Use cases:
- Deploying full application in C to browser. e.g. port Quake to browser. QT support.
- Optimize hot loop.
webassembly.studio
Future
- Python
- Pyodide: C Python source compiled to wasm.
- Downside: big. 3Mb to 12Mb.
- Micropython - on npm. Experimental.
- Betavia 2.0
- Wasmer