Re:WebAssembly Text Code Samples
by segfaultbuserr on Saturday April 22, 2023 @12:09PM
(#35667980)
> Back to the original goal of this post. While I enjoy writing WAT code, one aspect of the experience that could be improved is documentation. The WASM spec is much more suitable for formal verification than for actual documentation purposes; specifically, it's hard to grep and doesn't provide much in terms of examples. This is alright for a spec, but I couldn't find complementary resources that just show code samples.
I know the pain. One time, I was trying to use an experimental academic research tool. The tool accepts an input file, written in a custom language. The language is fully documented, but the only thing the documentation did was listing the syntax of each command in BNF notation. But at least it had demo code in the repo so you could read code and doc side by side to figure out how the code should look like...
Re:WebAssembly Text Code Samples
by burntcaramel on Saturday April 22, 2023 @07:23PM
(#35671815)
This is fantastic. The specs and the MDN documentation are pretty detailed, but I’ve found I need a fair bit of trial and error to understand some WAT language features.
The loop with a block directly inside is a good regular pattern! I’ll be using that all the time now.
I’ve been writing an Elixir DSL for WAT. Elixir has a powerful macro system, so I can closer to that pseudo C-syntax in this post, plus some other niceties. I plan to open source it as a library soon.
Here are examples I’ve written in it, like an HTML escaper, stateful HTML component, bump allocator, and a few state machines.
Re:WebAssembly Text Code Samples
by Jasper_ on Saturday April 22, 2023 @07:55PM
(#35671986)
At one point I hand-wrote a simple Brainfuck interpreter in both WAT (called WAST at the time...) and asm.js. Both are extremely tedious, but it seems WAT has improved a bit ergonomically since...
I know the pain. One time, I was trying to use an experimental academic research tool. The tool accepts an input file, written in a custom language. The language is fully documented, but the only thing the documentation did was listing the syntax of each command in BNF notation. But at least it had demo code in the repo so you could read code and doc side by side to figure out how the code should look like...
It's also very true that overall the Wasm docs can use some help. Hopefully we will be able to help with it as part of our work in Wasmer :)
What additional samples would you like to see in there?
> Hopefully we will be able to help with it as part of our work
That's great to hear. What are you planning here?
https://developer.mozilla.org/en-US/docs/WebAssembly/Underst...
https://github.com/ffmpegwasm/ffmpeg.wasm
Another is the SQLite WASM project:
https://sqlite.org/wasm/doc/trunk/index.md
Also v86 for x86 machine virtualization in the web browser:
https://github.com/copy/v86
A fun project is WASM-4, for building retro-style games:
https://wasm4.org/
Possibly more interesting projects to be found here:
https://github.com/topics/wasm
https://github.com/mbasso/awesome-wasm
https://duckdb.org/docs/api/wasm/overview.html
https://blog.chromium.org/2019/06/webassembly-brings-google-...
https://discourse.julialang.org/t/inviscid-and-incompressibl...
Draw fluid boundaries with your mouse!
The loop with a block directly inside is a good regular pattern! I’ll be using that all the time now.
I’ve been writing an Elixir DSL for WAT. Elixir has a powerful macro system, so I can closer to that pseudo C-syntax in this post, plus some other niceties. I plan to open source it as a library soon.
Here are examples I’ve written in it, like an HTML escaper, stateful HTML component, bump allocator, and a few state machines.
https://github.com/ComponentsGuide/components_guide/tree/mas...
https://github.com/magcius/bfasm/blob/master/bfasm.js
https://github.com/magcius/bfasm/blob/master/bfwasm.wast