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.

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.

And the browser’s garbage collector just hummed along, quietly collecting fallen leaves in the background.

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.

This was Eaglercraft.

Eaglercraft - 1.12 Wasm Gc

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.

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

And the browser’s garbage collector just hummed along, quietly collecting fallen leaves in the background. After weeks of patching, a breakthrough: the first stable 1

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. And the memory footprint

This was Eaglercraft.