2 ms·
For some time I've been fascinated by the codebase of a small WAT compiler written in JavaScript. https://github.com/stagas/wat-compiler/blob/main/story.txt ht
by lioeters 3y ago
For some time I've been fascinated by the codebase of a small WAT compiler written in JavaScript.
https://github.com/stagas/wat-compiler/blob/main/story.txt https://github.com/stagas/wat-compiler/blob/main/story.txt
And I mean "small" as a real complement to how readable and compact the entire compiler is. It's been a great way to appreciate the design of the WASM text format and WASM overall. It's not a Lisp but has a similar feel to it.
I've been meaning to get more fluent at writing WAT directly, not for any practical purpose but just for pleasure of it. I could see myself gradually building up some abstractions to help me deveolp larger programs, perhaps a slightly higher-level language.
- danielvaughn 3y agoVery cool. You might be interested in AssemblyScript, if you haven't heard of them before. They did something very similar: https://www.assemblyscript.org/ https://www.assemblyscript.org/
- lioeters 3y agoAh yes, I'd love to get more familiar with AssemblyScript too. One thing I like about the afore-mentioned WAT compiler though, is that it's simple to run in the browser, which the AssemblyScript compiler doesn't support, if I understand correctly. That characteristic of the compiler would be useful if I want to build a higher-level language on top of it, for example with a web playground (code editor and runtime).
- circuit10 3y agoThe AssemblyScript compiler runs in a browser too, that’s how the demo on the homepage works
- lioeters 3y agoThanks for mentioning it, I dug into the website of AssemblyScript and found that the compiler does indeed run in the browser. The demo loads a web-build like: <script src="https://cdn.jsdelivr.net/npm/assemblyscript@latest/dist/web.js"></script> <script type="module"> import asc from "assemblyscript/asc"; And how they compile AssemblyScript to WAT/WASM/JS: https://github.com/AssemblyScript/website/blob/main/src/.vuepress/public/editor.html#L842-L868 https://github.com/AssemblyScript/website/blob/main/src/.vue... Here's how the compiler is built to target the web. https://github.com/AssemblyScript/assemblyscript/blob/main/scripts/build-web.js https://github.com/AssemblyScript/assemblyscript/blob/main/s... How fun! This inspires me to explore further what I could build with it.