starting

the source this artifact was built from

load a mod

A fresh interpreter each time — nothing else on the page stops.

load another build of it

Three builds of demo.web, from the three sources shown on the left. Each loads into a fresh interpreter: the code changes, frame starts again, and visit does not — that counter goes through remember/save, which is host-side state rather than interpreter memory.

On the desktop this is a swap and frame keeps counting too. That path is wired up here and does not work in this browser build — swapHot reports success and the previous body goes on running — so the page does not claim it. The measurement is in boot.js.

linear memory

This gauge used to be a fuel gauge. The JavaScript backend's storage for value aggregates is a bump pointer, and the runtime never rewound it — so every frame of interpreted work spent a little of a 1 GiB ceiling and the page had to be reloaded. Measured: 627 MB gone after four minutes at 10 fps.

A bump pointer that models a C stack is a thing you can pop. boot.js now takes a mark before update and drawGui and releases it after, and refuses the release whenever the interpreter's own heap grew above that mark. Same four minutes, same number of frames: 7 MB. The gauge is left here because a flat line is the evidence.

What is still not freed is a retired interpreter: loading another mod leaves the previous one's state behind, about 1.3 MB of it — 18 loads measured 25 MB. That is hundreds of loads from the ceiling rather than a handful, so the page no longer treats it as a budget, but it is not nothing and it is not fixed.

host