nova

WebAssembly, running wild in your browser.

Every particle on this page is Rust compiled to WebAssembly, simulated live on your CPU. Move your cursor through it. Click and hold to push back.

Demo 01 · raw number-crunching

Fractal explorer

Every pixel is an escape-time iteration over 64-bit complex numbers — up to fifteen hundred rounds of multiply-add per point, re-run as you move. Drag to pan, scroll to dive; the HUD shows real render times. Try the Burning Ship — the tiny ships along its antenna hide the deepest structure.

you've reached the edge of 64-bit floating point — ~10¹³× zoom

Demo 02 · sandboxed, not slow

Fluid dynamics

A Navier–Stokes solver — the equations behind smoke, ink and weather — integrated in real time on thirty-six thousand cells, every frame, inside the browser sandbox. Drag through it to stir.

drag to stir

What is it

A fourth language for the web

WebAssembly (WASM) is a compact binary instruction format — a portable compilation target that runs alongside JavaScript in every modern browser. Code written in Rust, C, C++, Go, Zig and dozens of other languages compiles down to a small .wasm binary that the browser turns into machine code.

It isn't a plugin and it isn't a sandbox bolted onto the side of the web. It is a W3C standard, shipped everywhere, designed from the first byte for speed, safety and portability.

(module
  (func $step (param $dt f32)
    (local $i i32)
    ;; tight, typed, predictable —
    ;; this is what the browser JITs
    ;; into raw machine code
    ...)
  (export "step" (func $step))
  (memory (export "memory") 17))

Near-native speed

WASM is an ahead-of-time compilation target with a linear memory model — no garbage-collection pauses, no dynamic-type overhead. Tight numeric loops run within a whisker of native code, with SIMD when the math wants it.

Sandboxed by design

Every module runs inside the browser's security sandbox with access to nothing but the memory it owns and the functions you hand it. Native-class compute, web-class safety.

Language-agnostic

One binary format, any source language. This site is Rust, but the same .wasm could come from C++, Go, Zig or C# — and JavaScript calls it all the same way.

Under the hood

Compiled before it finishes downloading

Browsers compile WebAssembly while it streams over the network — by the time the last byte arrives, the module is ready to run. No parse, no warm-up, no interpreter tier. These numbers are live from your visit:

wasm payload, over the wire
fetch + compile + instantiate
3 simulations in that one binary

Why it matters

Ship compute, not infrastructure

Workloads like the ones on this page used to mean native apps or a rack of servers rendering frames on someone else's machine. WebAssembly moves the compute to the edge of all edges — the visitor's own device — with nothing to install, nothing to containerize, and a security model the browser has spent twenty-five years hardening.

The entire engine behind this site is a single small binary, cached like any other asset and started in microseconds. It runs the same on a phone, a laptop, and the Raspberry Pi cluster serving it to you.