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