The Birth & Death of JavaScript wasn't talking about WASM, it was talking about Asm.js, which crucially differs from WASM by being a backwards-compatible subset of JavaScript amenable to JIT compilation. The goals of these standards look similar if all you care about is transpiling c and running it on a browser, but Asm.js worked everywhere from day zero modulo performance; WASM continues to be a moving target.
This isn't quite a standards conforming Scheme just yet.
On the other hand, Hoot supports WASM-GC on release [0], and has had wasm support for a few years now. (Though Safari support has been a pain point - they've found a few bugs in WebKit's wasm support.)
Just eyeballing it really quickly, it doesn’t look like it’s got the built-ins you’d want to quickly built a REPL (i.e. read or eval). It’s not really Scheme, yet.
It’s written in C, so you could compile that to wasm and then compile & run all inside the browser (I guess, assuming wasm is cool with that sort of thing, not a wasm guy here).
You can do that kind of JIT code generation with WASM but you need to compile a separate module and load and link things up in JS (doable but not technically within pure WASM, so it won’t work in standalone runtimes)
In case you are interested I wrote a minimal OOP runtime in wasm-gc (using wasm text format) here: https://marianoguerra.org/posts/bootstrap-post-collapse-oop-...
I also wrote a forth in wasm by hand here: https://github.com/marianoguerra/ricardo-forth
And a wasm compiler that fits in a tweet: https://wasmgroundup.com/blog/wasm-compiler-in-a-tweet/
I'm also the co-author of a book that shows you how to write a compiler that targets wasm for a small languaje using js: https://wasmgroundup.com/
Here's a direct link to the wasm text format for the OOP and forth implementations:
- https://github.com/marianoguerra/mclulang/blob/main/wat/fatt...
- https://github.com/marianoguerra/ricardo-forth/blob/master/s...
The Birth & Death of JavaScript wasn't talking about WASM, it was talking about Asm.js, which crucially differs from WASM by being a backwards-compatible subset of JavaScript amenable to JIT compilation. The goals of these standards look similar if all you care about is transpiling c and running it on a browser, but Asm.js worked everywhere from day zero modulo performance; WASM continues to be a moving target.
Related: Guile Hoot is a Scheme to Wasm compiler written in Scheme.
https://spritely.institute/hoot/
Can it be used as a interpreter once compiled to not need a compiler?
This isn't quite a standards conforming Scheme just yet.
On the other hand, Hoot supports WASM-GC on release [0], and has had wasm support for a few years now. (Though Safari support has been a pain point - they've found a few bugs in WebKit's wasm support.)
[0] https://spritely.institute/news/hoot-0-6-1-released.html
Just eyeballing it really quickly, it doesn’t look like it’s got the built-ins you’d want to quickly built a REPL (i.e. read or eval). It’s not really Scheme, yet.
It’s written in C, so you could compile that to wasm and then compile & run all inside the browser (I guess, assuming wasm is cool with that sort of thing, not a wasm guy here).
You can do that kind of JIT code generation with WASM but you need to compile a separate module and load and link things up in JS (doable but not technically within pure WASM, so it won’t work in standalone runtimes)
With call/cc ??