Show HN: Common Lisp running natively over WebAssembly for the first time
97 points| metagame | 3 years ago |soi-disant.srht.site
This is significant as it's the first time Common Lisp in particular has ever been hosted on it; wasm has a few poor decisions in its design that make it less-than-conducive to being a target for Common Lisp, and a lot of the more interesting implementations require an implementation to already be on the platform for bootstrapping purposes.
My previous attempts using other implementations haven't gone so well, despite throwing a lot of time at it (as an example, I have a fork of Eclipse Common Lisp, a defunct implementation from the 1990s, sitting on my disk with a few hundred lines of changes that I finally got to successfully compile and run a handful of very basic expressions, but it blows up when you try and define anything). In comparison, I was pleasantly surprised by how little I had to do, even though I did end up scrapping loads of lines of my own changes to npt in the process as I got a handle on how to make it work acceptably.
The Emscripten toolchain and I don't get along, partially because I don't like inlining ECMAScript into my C and vice-versa, so it's little more than a neat little demo right now.
You can load slightly more complex programs into it by hijacking the "imp" ECMAScript function every few hundred milliseconds with strings containing complete forms (this is essentially a batch processor, so there's no interactivity that allows it to wait while you decide what the rest of a form should be). Only one at a time, though. It's not that fancy.
If you mess up at all, even just a little error, it will crash. This is by design; I disabled the debugger. It's a giant hack, and the hack I eventually decided on left it impossible to have a debugging experience, with the benefit of getting to use a closer-to-unmodified npt.
This could be more useful, if I spent more time on it, but it's more fun if it's just a demo. I hope you enjoy the toy I made for you.
https://en.wikipedia.org/wiki/Batch_processing
If you don't know what forms are in the context of Common Lisp:
http://www.lispworks.com/documentation/HyperSpec/Body/03_aba...
http://www.lispworks.com/documentation/HyperSpec/Body/26_glo...
aidenn0|3 years ago
[edit]
Just tried again today and Firefox gets to a REPL in about 3.5 minutes, while chromium is still right about 1 minute.
1: https://abcl.org/
2: https://plasma-umass.org/doppio-demo/
metagame|3 years ago
Unfortunately, a JVM on wasm would be quite difficult for the same reason that Lisp over wasm is quite difficult (I had actually looked for wasm JVMs before trying anything). I had no idea there was a JS JVM implementation! That's very cool.
gumby|3 years ago
> …wasm has a few poor decisions in its design that make it less-than-conducive to being a target for Common Lisp…
Could you say a bit more about those design decisions?
miloignis|3 years ago
You know, I wonder how seriously I could be taken if I duck-taped a wasm-capable browser together out of Servo and Wasmtime to make a second implementation and push it forwards...
moonchild|3 years ago
mbrock|3 years ago
metagame|3 years ago
I think that the people who responded to you covered much of it, but you can find more by doing a web search for it. I'd find you links myself, but it's early in the morning and I'm a little tired.
catchclose8919|3 years ago
I know that even the language itself is kind of the opposite of "beautiful", but the way all docs, blogs, websites etc. look ...seriously, is this intended to scare away any aesthetically sensitive people? Programming languages are about aesthetics too, and Lisp at its core (not CL ofc) is absolutely beautiful!
dang|3 years ago
https://news.ycombinator.com/newsguidelines.html
Your comment particularly broke the Show HN guidelines:
https://news.ycombinator.com/showhn.html
christophilus|3 years ago
emacsperson|3 years ago
coryrc|3 years ago
jhgb|3 years ago
What? It looks perfectly fine on my monochromatic Genera monitor!
Jokes aside, Firefox's reader view makes it only marginally more readable. I wonder if it took the author extra effort to make it look like that, and whether there's a better page sanifier than the reader view.
sj4nz|3 years ago
dtagames|3 years ago
I think this aspect of ignoring UIs and aesthetics has seriously held back CL.
brokenkebab2|3 years ago
stareatgoats|3 years ago
hexo|3 years ago
mpfundstein|3 years ago
unknown|3 years ago
[deleted]
kotborealis|3 years ago
rsstack|3 years ago
unknown|3 years ago
[deleted]
unknown|3 years ago
[deleted]
FraaJad|3 years ago
I'm thankful it is a simple HTML page that could be easily formatted using browser-built-in tools.
ngcc_hk|3 years ago
I lost … perhaps I expect a REPL or … anyway not good to sell CL-webassembly I think.
unknown|3 years ago
[deleted]
ngcc_hk|3 years ago
dang|3 years ago
https://news.ycombinator.com/newsguidelines.html
metagame|3 years ago
unknown|3 years ago
[deleted]
Existenceblinks|3 years ago
metagame|3 years ago
unknown|3 years ago
[deleted]