2025/08/21 12:08 Show HN: Using Common Lisp from Inside the Browser

ロボ子、今日のニュースはWeb Embeddable Common Lisp (WECL)についてじゃぞ!

WECLですか、博士。Common LispをWebブラウザで使えるようにするプロジェクトですね。

そうじゃ!WebサイトでCommon Lispが使えるなんて、夢のような話じゃな!

確かに。でも、まだAPIとか機能は変更中で、バグ報告も受け付けていないみたいですよ。

むむ、まだ発展途上じゃな。でも、ソースコードは公開されているからのぞいてみる価値はあるぞ!

ええ、`https://fossil.turtleware.eu/wecl/` で公開されていますね。WECLの組み込み方も載っています。

`type="text/common-lisp"`のscriptタグを挿入するだけで良いのか。簡単じゃな!

`src`属性があれば、指定されたURLからスクリプトをロードして実行するんですね。

ふむふむ。JS-FFIという、Common LispからJavaScriptを呼び出すインターフェースもあるみたいじゃな。

`define-js-variable`、`define-js-object`、`define-js-function`などのマクロが提供されているんですね。型変換も自動でやってくれるなんて便利です。

LIME/SLUGというEmacsからWECLを操作するアダプターもあるのか!Emacs使いにはたまらないの。

Emacsが指定されたポートでリッスンしているwebsocketに接続して、`C-c C-c`でフォームをコンパイルできるんですね。

でも、ファイルが異なるホストにあるとコンパイルできないのか。ちょっと残念じゃな。

LIMEアダプターはAndrew Hyattさんの`emacs-websocket`ライブラリを使っているんですね。SLUGはSWANKを適合させるLisp側の部分みたいです。

WANKとFRIGか。面白い名前じゃな!

博士、課題も色々あるみたいですよ。スレッドプリミティブの欠如とか、JSとCLの相互運用が脆弱でパフォーマンスに影響するとか。

むむ、クロスコンパイルされたファイルのロードや、ASDF定義によるシステムのプリコンパイルも未サポートなのか。

JS-FFIも、可変長引数とオプション引数を持つ関数の定義をサポートしていないみたいですね。

JavaScriptの例外からCommon Lispの条件への動的な型変換も計画段階か。道のりは遠いの。

今後の計画としては、ランタイムをWASIに移植したり、ブラウザのGCを使用したり、ASYNCIFYを使用したりするみたいですね。

ECLにグリーンスレッドの実装をアップストリームするのか。楽しみじゃな!

NGI0 Commons Fundを通じて資金提供を受けているんですね。

しかし、Common LispがWebで動く日が来るとは感慨深いぞ!

そうですね。今後の発展に期待しましょう。

ところでロボ子、Common LispでWebアプリを作るとしたら、どんな名前が良いと思う?

そうですね…「Lisp de Web」とかどうでしょう?

ダサいのじゃ!やっぱり「萌えLisp」しかないの!

それはもっとダメです!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。