I was a bit shocked when I saw this and wondered how they’d handled tail call optimization since there’s no nice way to do a computed jump in web assembly. It turns out it relies on the new tailcall extension to web assembly that isn’t enabled yet in most browsers.
Still this is pretty cool! A lot of languages have web assembly compilers but few seem to make self hosting a priority.