Я хочу имитировать (небезопасный) клиентский код на моем сервере, и я ищу подходящий язык для этого. Я бы предпочел, чтобы клиенты писали на том же языке, что и для имитации.
- Безопасность является основной задачей
- желательно хорошо известный язык (легко для клиентов изучить синтаксис)
- должно быть легко отключить/включить языковые функции, используемые в песочнице
- будет плюсом, если я смогу реально имитировать код шаг за шагом
В идеале я бы просто построил несколько интерфейсов (и опубликовал их), загрузил код клиентов и смоделировал этот код, разрешив ему использовать только мои интерфейсы + подмножество стандартного API, который я тщательно выбрал.
Во время этого моделирования я должен иметь возможность ограничить ресурсы (время и память), используемые кодом клиентов. Бонус был бы, если бы я мог имитировать код шаг за шагом, таким образом я всегда мог бы вернуть детерминированное решение.
Производительность на самом деле не проблема. Идея состоит в том, чтобы позволить клиентам писать пользовательский ИИ для небольшой игры/головоломки. Игра будет смоделирована (на сервере!), А результат будет возвращен пользователю.
Первоначально я думал о создании внешнего DSL самостоятельно, включая анализатор и оценщик, но, возможно, есть готовое к использованию решение?