场景:在 Java 或 Python 等字节码虚拟机中运行的程序想要评估(通过即时编译为字节码然后运行)其代码是从外部自动生成或提供的函数。
棘手的一点是函数的代码是不可信的——它可能是由遗传编程等随机方法生成的,甚至是由对手提供的。因此,希望强制它表现为纯函数——它可以返回一个值,但它可能没有任何副作用,即它可能不会以任何方式改变程序的任何现有数据。
另一个棘手的问题是该函数可能有合法需要调用程序的某些现有函数。其中一些函数可能有副作用,但只要它们被可疑函数调用,就应该防止它们实际上产生任何持久的影响。
此外,最好不要对可疑函数的编码风格施加任何限制,例如,它可以自由地对它自己创建的任何数据结构执行破坏性更新,只需要它的整体效果是纯函数式的。
此外,解决方案最好具有相当低的开销,因为这可能需要进行数十亿次;例如,最好避免为每个这样的功能派生一个全新的虚拟机。
这不一定必须在 Java 或 Python 等现有虚拟机中才能实现;如果有必要围绕这个用例设计一个虚拟机,那就这样吧。
对于这个问题,是否有任何已知的解决方案(或非解决方案,即已知不起作用的东西)?