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.
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. eaglercraft 1.12 wasm gc
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. The first test was a superflat world with 64 villagers