ErosZy/sablejs

Run user plugins, rules, formulas, and AI-generated JavaScript safely in browsers.

何を解決するか

Sablejsは、組み込みの仮想マシンによるオーバーヘッドなしに、ユーザーが記述したコードまたはAIによって生成されたJavaScriptコードを高速かつ安全に実行する方法を提供します。これは、ソースマップを通じて高いパフォーマンスとデバッグのしやすさを維持しながら、信頼できないコードを安全に実行する(サンドボックス化)という問題を解決します。

仕組み

VMを使用する代わりに、sablejsはゲストJavaScript (ES5.1) をホストJavaScriptにAOT (Ahead-of-Time) コンパイルします。「サンドボックス」モードを使用し、ホストからゲストへプレーンデータを再帰的にコピーすることで、ゲストコード内での変更がホストのオブジェクトグラフに影響を与えないようにします。ホストの関数は「capabilities」としてゲストに公開されます。これは、エラーをサニタイズし、引数や結果をコピーする仲介ラッパーです。

対象者

Node.js、ブラウザ、またはDenoやBunなどの他のJSランタイムにおいて、動的でユーザー提供の、あるいはAI生成のJavaScriptロジック(プラグインシステムやルールエンジンなど)を実行する必要があるアプリケーションを構築している開発者。

ハイライト

  • AOT Compilation: 速度向上のため、ゲストコードをホストJSにコンパイルし、組み込みVM方式を回避します。

  • Secure Sandboxing: デフォルトで、ゲストコードがホストオブジェクトやプラットフォームAPI(windowfsなど)にアクセスすることを防ぎます。

  • Capabilities System: ホストがホスト関数に対して、限定的で制御されたアクセスを明示的に許可することを可能にします。

  • Debuggable: 生成されたコードを元のゲストソースにマッピングするためのSource Map v3を生成します。

  • Worker Isolation: タイムアウトを強制するために、プログラムをWorkerで実行するための組み込みヘルパーが含まれています。

  • High Performance: いくつかのベンチマーク(例:V8 Benchmark Suite 7)において、QuickJS-WASMを上回るパフォーマンスを発揮します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト