シナリオ:JavaやPythonなどのバイトコード仮想マシンで実行されているプログラムが、コードが自動的に生成または外部から提供された関数を(バイトコードにオンザフライでコンパイルして実行することにより)評価したいと考えています。
トリッキーな点は、関数のコードが信頼されていないことです。遺伝的プログラミングのような確率論的方法によって生成された可能性があり、敵から提供された可能性もあります。したがって、純粋関数として動作することを強制することが望まれます。値を返すことはできますが、副作用がない可能性があります。つまり、プログラムの既存のデータを変更することはできません。
もう1つの注意点は、関数がプログラムの既存の関数の一部を呼び出す正当な必要性を持っている可能性があることです。これらの関数の一部には副作用がある可能性がありますが、疑わしい関数によって呼び出されている限り、これらの関数が実際に持続的な効果を発揮しないようにする必要があります。
また、疑わしい関数のコーディングスタイルに制約を課さないことが望ましいです。たとえば、それ自体が作成するデータ構造に対して破壊的な更新を自由に実行できます。純粋に機能するために必要なのは、全体的な効果だけです。
さらに、これは何十億回も実行する必要がある可能性があるため、ソリューションのオーバーヘッドが適度に低いことが望ましいです。たとえば、そのような機能ごとにまったく新しい仮想マシンをフォークする必要がないようにする方がよいでしょう。
これは、JavaやPythonなどの既存の仮想マシンで実行可能である必要はありません。このユースケースを中心に仮想マシンを設計する必要がある場合は、そうしてください。
この問題に対する既知の解決策(または非解決策、つまり機能しないことがわかっているもの)はありますか?