The author wanted to learn how to make my own programming language for a really long time, but I could not find the road in the hard theory behind compilers, parsers, ASTs etc… I found the tutorials hard and my attention was not lasting for more than 5 minutes before completely shut down the project.
Some days ago, though, something changed.
I’m currently in love with WebAssembly and had this absurd idea of developing a programming language that compiles to WebAssembly.
I didn’t know how WebAssembly internals worked so it was the perfect stage to learn something new and make a cool project.
What is WebAssembly about
Started doing some research and I found no tutorials except two amazing articles, one was about how to build a compile for a custom programming language that compiles to WebAssembly (exactly what I was looking for), and the other was a series of articles on how to build a Web assembly compiler (exactly what I was looking for, again!)
But here come the problems: the first was written in Typescript and the second in Rust.
How to do WebAssembly with Golang
I wanted to practice Go and I don’t know anything about Rust.
So long story short I studied the theory behind those two amazing articles, WebAssembly specification etc… and I started writing a compiler in Go (i love Go).
I’ve found no articles about writing WebAssembly compilers with Go, so I decided to document the building of Luna so future Gophers that will have my same idea won’t have to struggle as much as I did to find resources.