Directly compiling Scheme to WebAssembly: lambdas, recursion, iteration
spritely.institute
spritely.institute
There was something about a distributed debugger [1]. Also look at a talk about Goblins itself [2].
[1]: https://spritely.institute/news/introducing-a-distributed-de...
[2]: https://invidious.baczek.me/watch?v=VyTlQ0zwIAM (VyTlQ0zwIAM)
Not everything has to be overtly adopted to be worth doing.
Historically, when someone makes some advancement that doesn't lead to adoption, it seems often because:
* there's no follow-through to production-grade (maybe the norm with PL dissertations, if the next job isn't industry and directly involving that same platform);
* the market applicability is too niche/nonexistent, at least at the time (e.g., someday people will realize better DSLs were figured out a long time ago); or
* didn't promote it well enough.
For some reason, Google was working on a Scheme WASM compiler, which they got self-hosting. It was then abandoned. I don't really know what they were trying to accomplish with that project.
https://github.com/schism-lang/schism
Previous discussion with comments by the author, https://news.ycombinator.com/item?id=16488605
I did some search and didn't find any recent statement on that.
The list of these kinds of edge cases is long so it probably winds up being easier to try to just run a library to see if it works. I doubt anyone has done a systematic survey.
I once ported a library I wrote in Racket from Racket to GNU Guile. Since I made use of Racket's for loop forms, I had to rewrite those parts using different constructs like named let in GNU Guile. That was most of the work. I also had to changed how it makes use of multiple cores (places -> futures), but that is to be expected, I guess.
As others have stated, it depends on the code you are porting. If you do not have many dependencies and made a choice to use mostly standard Scheme constructs, you will have not much of a problem to port it to another Scheme.
BiwaScheme: https://www.biwascheme.org/
Advantages: written in JavaScript, with excellent JS interop. Project has some history.
Disadvantages: slower than S7 (though still plenty fast for many uses), less-complete (e.g., no syntax-rules or syntax-case, though it does have its own define-macro).
S7 Scheme: https://cm-gitlab.stanford.edu/bil/s7
Written in C, but can be transpiled to WASM (see https://github.com/actonDev/s7-playground/ )
Advantages: This project also has some history. Considerably faster than BiwaScheme.
Disadvantages: JS interop is clumsier (basically the same issues as JS interop with any WASM code... this could probably be mitigated considerably if someone wanted to take the time).