我希望在服务器上模拟(不安全的)客户端代码,并寻找一种适合的语言来实现。最好能够让客户端使用与我用于模拟的相同语言编写。
- 安全性是首要考虑因素
- 最好是众所周知的语言(易于客户端学习语法)
- 应该很容易禁用/启用沙盒中可用的语言功能
- 如果我能够逐步模拟代码,那就更好了
理想情况下,我只需构建几个接口(并发布这些接口),加载客户端代码,并通过允许其仅使用我的接口+我精心选择的标准API子集来模拟该代码。
在这个模拟过程中,我应该能够限制客户端代码使用的资源(时间和内存)。如果我能够逐步模拟代码,那就更好了,这样我就可以始终返回确定性解决方案。
性能真的不是问题。想法是允许客户为小游戏/难题编写自定义AI。游戏将在服务器上模拟,并将结果返回给用户。
最初,我考虑自己构建外部DSL,包括解析器和评估器,但也许有现成的解决方案?