サーバー上で (安全でない) クライアント コードをシミュレートしたいのですが、そのための適切な言語を探しています。シミュレーションに使用するのと同じ言語でクライアントに書いてもらいたいと思います。
- 安全性が最大の関心事です
- できればよく知られた言語 (クライアントが構文を習得しやすい)
- サンドボックスで使用可能な言語機能を簡単に無効化/有効化できる必要があります
- 実際にコードを段階的にシミュレートできればプラスになります
理想的には、単純にいくつかのインターフェイスを作成 (および公開) し、クライアント コードをロードして、インターフェイスと慎重に選択した標準 API のサブセットのみを使用できるようにすることで、そのコードをシミュレートします。
このシミュレーション中に、クライアント コードが使用するリソース (時間とメモリ) を制限できるはずです。ボーナスは、コードを段階的にシミュレートできれば、常に決定論的なソリューションを返すことができるということです。
パフォーマンスは実際には問題ではありません。アイデアは、クライアントが小さなゲーム/パズル用のカスタム AI を作成できるようにすることです。ゲームは (サーバー上で) シミュレートされ、結果がユーザーに返されます。
もともと私は、パーサーとエバリュエーターを含む外部 DSL を自分で構築することを考えていましたが、おそらくすぐに使用できるソリューションがそこにあるのでしょうか?