场景:运行在像Java或Python这样的字节码虚拟机中的程序想要评估(通过编译运行中的字节码然后运行)一个函数,该函数的代码是由外部自动生成或提供的。细粒度沙盒
棘手的问题是函数的代码是不可信的 - 它可能是由遗传编程等随机方法产生的,甚至是由对手提供的。因此需要强制执行它作为纯函数 - 它可以返回一个值,但它可能没有任何副作用,即它可能不会以任何方式更改程序的任何现有数据。
另一个棘手的问题是该函数可能需要调用某些程序的现有函数;其中一些功能可能有副作用,但只要被嫌疑功能调用,这些功能应该被阻止实际发生持久效果。
此外,优选的是不对可疑功能的编码风格施加约束,例如,它可以自由地对它自己创建的任何数据结构执行破坏性更新,只需要它的整体效果是纯粹的功能。
此外,优选该解决方案具有合理的低开销,因为这可能需要进行数十亿次;例如,避免为每个这样的功能分配一个全新的虚拟机会更好。
这不一定非得在现有的虚拟机如Java或Python中可行;如果有必要围绕这个用例设计一个虚拟机,那就这样吧。
这个问题是否有任何已知的解决方案(或非解决方案,即已知不可行的解决方案)?