我想在我的服务器上模拟(不安全的)客户端代码,我正在寻找一种合适的语言来做到这一点。我更喜欢让客户用我将用来模拟的相同语言编写。
- 安全是首要问题
- 最好是众所周知的语言(便于客户学习语法)
- 应该很容易禁用/启用沙箱中可用的语言功能
- 如果我可以逐步模拟代码,那将是一个加号
理想情况下,我会简单地构建一些接口(并发布这些接口),加载客户端代码,并通过允许它仅使用我的接口 + 我精心选择的标准 API 的子集来模拟该代码。
在此模拟期间,我应该能够限制客户端代码使用的资源(时间和内存)。如果我可以逐步模拟代码,那么我总是可以返回一个确定性的解决方案。
性能并不是真正的问题。这个想法是允许客户为小型游戏/拼图编写自定义 AI。游戏将被模拟(在服务器上!)并将结果返回给用户。
最初我想自己构建一个外部 DSL,包括解析器和评估器,但也许有一个现成的解决方案?