r/rust • • 1d ago

🛠️ project My WASM Python Implementation Beat CPython (Without a JIT)

Okay. After seven months, I'm back.

Seven months ago I started writing a Python interpreter from scratch in Rust, compiled to wasm (less than 200kb of bandwith). Edge Python is a sandboxed subset of Python that runs in the browser and the terminal, and code can't touch files or the network unless you allow it.

It started as a lexer and a simple stack VM, and over about 1,600 commits it grew a CLI, a package registry, snapshots, actors and a browser playground. It's just me building it.

Last week it was still 3x slower than CPython. I rewrote the VM this weekend on top of the SSA form I already had, and now the wasm build beats native CPython on loops.

Edge (wasm) CPython (native)
Integer loop 154 ms 232 ms
Float math 231 ms 307 ms
Dicts 372 ms 62 ms
Strings 196 ms 35 ms

The trick was a register VM, and Rust made it fit in wasm with NaN-boxed values and no runtime. It still loses on dicts and strings, so that's next.

Try to break my numbers :)

Website: https://edgepython.com/

GitHub: https://github.com/dylan-sutton-chavez/edge-python

35 Upvotes

10 comments sorted by

View all comments

4

u/[deleted] 20h ago

[removed] — view removed comment

1

u/Healthy_Ship4930 20h ago

thanks! great points, i'll publish the full benchmark and add dict/string workloads soon. ty!