I’m sitting here, reading a Wikipedia article about Habitat by LukasArts, “the first MMO”, created in 1986 by Randy Farmer and a few others.
The article quotes Randy Farmer’s own words:
Pretty bizarre.
Why am I reading this wiki page and how did I get here? Well, I was looking into this project called Guile Hoot which is a Scheme compiler that targets WebAssembly. It uses the recently added garbage collector extension in WebAssembly without which it was previously very difficult to implement a Lisp-like language (see attempts like Schism).
But anyway. This same Randy Farmer, the author of Habitat, is leading this project, along with some other people, including Robin Templeton. Remember the person who was single-handedly porting Emacs from Emacs Lisp to Guile?
Another bizarre fact is that MetaMask (the Ethereum wallet) is sponsoring this Scheme-in-WebAssembly project. They gave them 250k USDC to essentially port Guile to WebAssembly, and this is just a step in a much larger project and vision. Pretty much like Habitat but in real life. But we’ll talk only about the Scheme thing.
So what is this Guile in WebAssembly all about? The project is called Hoot, its mascot is a pixel-art owl. They aim to support the complete R7RS standard.
To put it to practice, they made a little game called Wireworld with Hoot, utilizing its macro capabilities to generate WebAssembly. They even built a little pipeline to quickly generate and launch wasm files from a Scheme REPL. Mind-blowing power.
By the way, the game is written for WASM-4, a WebAssembly-based “fantasy console”. Essentially, a virtual console inside a WebAssembly virtual machine. I made a game with it too earlier this year. It’s called Seal Adventure, a simple scroller with a generatively generated obstacle course.
So why is this cool?
WebAssembly is awesome on its own for many reasons: