HN🔥 89
💬 27

【革命】Node.jsアプリをWebAssemblyサンドボックスで動かす「Edge.js」が登場!

syrusakbary
3か月前

ディスカッション (9件)

1
syrusakbary
3か月前

HNのみんな、こんにちは!WasmerのSyrusです。Node.jsをエッジ環境で動かそうと試行錯誤した末、数週間でEdge.jsを構築しました。このプロジェクトではAIとCodexをフル活用したおかげで、開発期間を1年以上短縮できました。

今回の発表の要点は以下の通りです。

  • --safeモードではWebAssemblyを使用して動作
  • Node.jsと完全互換(非VMモジュールの仕様テストを全てパス)
  • プラグ可能なJSエンジンアーキテクチャを採用:V8、Javascript、SpiderMonkey、QuickJS、Hermesなどに対応

質問があれば何でも答えるので気軽に聞いてね!

2
alex_reg
3か月前

ちょっとややこしいね。

ざっくり言うと:

  • JSエンジン相互運用のための標準化されたAPIを使ったNode.jsのリファクタリング
  • Wasmer CLIとの統合により、JSはV8で動かしつつ、それ以外はWebAssemblyで実行される

面白いアイデアだ。JSのサンドボックス化をかなり軽量に実現できるかもしれないね。

3
willquack
3か月前

素晴らしいプロジェクト!

素朴な質問なんだけど、WebContainersみたいにブラウザのJSエンジンとwasm環境を使ってフロントエンドで動かしたりできる?fsをメモリ内だけにしたり、forkのような機能を無効にすればWeb上で「Node.js」を動かすこともできそうで楽しそう。

4
MillionOClock
3か月前

すごく興味深い!これはどのプラットフォームで動くの?もしiOSで動かせるとしたら、ファイルシステムやネットワークへのアクセス制限はどう処理するんだろう?既に何らかの仕組みがあるのか、それともアクションごとにカスタムハンドラを追加するのは簡単かな?

5
pscanf
3か月前

かなりクールなプロジェクトだね!

JSエンジンをプラグインできる点について質問なんだけど、今ElectronアプリでLLMが生成したコードを実行するのにQuickJSを使ってるんだ。Edge.jsを使えば、理論上はElectronのV8を利用して「Electron内でサンドボックス化された」実行環境を作れるようになるかな?

6
2001zhaozhao
3か月前

へぇ。これってWebアプリでユーザーが生成したJSを安全にサンドボックス化する手段になり得るかな?

7
pacman1337
3か月前

ユースケースがよく分からないな。安全じゃないNode.jsコードを実行したい人向けなのかな?Lambdaみたいなクラウドプロバイダー向けか、あるいは個人のPCでAIコーディング用?クラウドで使うならFirecrackerの方がいい気がするし、Firecrackerならどんな言語でも動くのに、これはNode.js限定で用途が狭い気がするんだけど。

個人のPCなら、Dockerの起動時間を気にしてる人が多いのかな?でもそれはインスタンスを立ち上げて複数のジョブを回すようにすれば解消できるツールの問題のような気もするし。

何か見落としてるかな?これが他に比べて決定的に有利になる実際のユースケースって何だろう?

8
robjam
3か月前

うわっ、Wasm (WASIX) 上のNode APIか!ずっと考えてたんだけど、SQLiteやPostgresにしか依存しないNuxtやNextみたいなWebアプリのデプロイやパッケージングの単位として、Wasm(WASIやCOMじゃなくて純粋なWasm)を使えないかなとずっと思ってるんだ。少し見当違いな質問かもしれないけど、Edge.jsを使えばCaddyのプラグインと連携して、Wasmからアプリを配信できるようになる?

Extismというプロジェクトは知っていてElixirで触ったこともあるけど、趣味のプロジェクトをたくさんやるために、運用の複雑さを最小限にしたCF Workersのような開発者体験(DX)を探してるんだ。