Сценарий: программа, работающая в виртуальной машине с байт-кодом, такой как Java или Python, хочет оценить (путем компиляции на лету байт-код и затем запустить) функцию, код которой был автоматически сгенерирован или предоставлен извне.
Хитрость заключается в том, что код функции не является доверенным - он может быть сгенерирован стохастическим методом, таким как генетическое программирование, или даже предоставлен противником. Поэтому желательно, чтобы он вел себя как чистая функция - он может возвращать значение, но у него не может быть никаких побочных эффектов, то есть он не может каким-либо образом изменять какие-либо из существующих данных программы.
Еще один хитрый момент заключается в том, что функция может иметь законную необходимость вызывать некоторые из существующих функций программы; Некоторые из этих функций могут иметь побочные эффекты, но их следует избегать, если они будут вызываться подозрительной функцией.
Кроме того, предпочтительно, чтобы никакие ограничения не накладывались на стиль кодирования подозрительной функции, например он может выполнять разрушительные обновления для любых структур данных, которые он создает сам, только его общий эффект должен быть чисто функциональным.
Кроме того, предпочтительно, чтобы решение имело достаточно низкие накладные расходы, потому что это, возможно, должно быть сделано миллиарды раз; было бы лучше, например, избегать форка целой новой виртуальной машины для каждой такой функции.
Это не обязательно должно быть выполнимо в существующей виртуальной машине, такой как Java или Python; если для этого варианта использования необходимо создать виртуальную машину, пусть будет так.
Существуют ли уже известные решения (или нерешения, то есть вещи, которые, как известно, не работают) для этой проблемы?