Then came the experiment: .
The first test was a superflat world with 64 villagers. On the JS backend, frame rate dropped to 15 FPS with major GC spikes every 5 seconds. On Wasm GC? A steady 45 FPS. No visible hitches. The collector ran concurrently, reclaiming entire chunks of blocks and entity pathfinding data without stopping the world — in both senses.
This was Eaglercraft.
WebAssembly Garbage Collection is a new proposal that allows compiled languages (Java, C#, Kotlin) to manage memory using the browser’s built-in GC, rather than emulating it in JavaScript or manually managing linear memory. For Eaglercraft, this was revolutionary.
But it wasn't magic. Wasm GC lacked finalizers, so native resources (like WebGL textures) still needed manual cleanup. The class hierarchy of Minecraft — TileEntity subclasses, IRecipe types — all required precise casting support. And the biggest hurdle: reflection. Minecraft 1.12’s ObfuscationReflectionHelper and dynamic proxies broke. Alex had to write a custom transformation pass at compile time to replace reflective calls with direct Wasm GC casts. eaglercraft 1.12 wasm gc
Alex recompiled the 1.12 client using a custom TeaVM fork targeting Wasm GC. Instead of outputting JavaScript heap management, every object allocation, every new BlockPos() , every HashMap of entities — all became Wasm GC structs and arrays, traced and collected by the browser’s optimized garbage collector.
Here’s an informative story about and its experimental Wasm GC backend. In a dimly lit server room, a developer named Alex stared at a browser tab. Running Minecraft 1.12.2 — complete with Forge mods, redstone contraptions, and shaders — inside a vanilla browser. No plugins. No native code. Just JavaScript and WebAssembly. Then came the experiment:
After weeks of patching, a breakthrough: the first stable 1.12.2 survival world running entirely in Wasm GC mode. Chunk loading was snappy. Entity AI computed faster. And the memory footprint? Down 30% — because Wasm GC structs are far more compact than JS objects.
We've got answers.