Parenscript
parenscript.common-lisp.dev
parenscript.common-lisp.dev
Just write Javascript.
Parenscript is JS with macros written in CL, which is extremely handy for me.
For context "jackdaniel" is Daniel Kochmański, ECL's maintainer, so 4 months ago at least it was planned to be merged for the next release.
Branch is at https://gitlab.com/embeddable-common-lisp/ecl/-/tree/emscrip...
I suspect the work is still ongoing. But maybe not on priority.
This diff from around 3 months ago shows it's likely possible to run it in the browser currently but with a lot of caveats (pretty great nonetheless!).
https://gitlab.com/embeddable-common-lisp/ecl/-/commit/6af4b...
Math envy often means people downplay syntax when discussing programming languages, but the S-expression syntax is why I fell in love with Lisp all over again as a more experienced developer. S-expressions and macro based tooling give me the confidence to refactor in a much more experimental and improvisational manner. I can move logic around or invert the order of calls without having to worry if the change will leave the code in a broken state. Yes, VS and other IDE's offer similar features (especially as they embrace AI) but in my experience they just aren't as powerful, flexible, or--most importantly--reliable as decades old tools that exploits S-expressions.
Parenscript brings this confidence and power to Javascript. And it isn't just syntax. The project goes out of its way to give little "quality of life" semantic boosts like supporting a proper "loop" macro and multiple value return.
I use Parenscript extensively for my hobby projects[^1] and games[^2] and it's been great.
Don't let the slow pace of dev scare you off. It's a cultural difference in the Lisp adjacent communities. There's this radical idea that projects can asymptotically reach "done" because the language is sensibly forward compatible and the projects have clear goals and aren't all agile managed CV-bait nightmares that want to grow into all encompassing "frameworks". At work, I comfortably rely on Common Lisp projects that haven't been touched in more than a decade because they do what they are supposed to regardless of how the calling enviroment around them changes.
[^1]: https://github.com/trevorjay/Jerrica [^2]: https://kittyhawkmontrose.newgrounds.com/games
Asking because the Nyxt browser apparently depends on it.
It moves a bit slowly both because it works right now, and because many features can be implemented as libraries (e.g. someone has an early implementation of tagbody they they recently posted to the mailing list).
It really made web development far less painful for me as well.