コードの一部をオンザフライでリロードできるようにする JIT 実行を主な対象とする、GIL を使用しない LLVM ベースの言語はありますか?
1 つのクラスを再コンパイルするように、プログラム全体を停止せずに再ロードします。
誰もそれを試しましたか?
clangでそれを行う機会はありますか(確かに、開発者は多くの注意、制限、および手動の状態処理を行っています)?
これは素晴らしいアイデアだと思います。この機能とどのように連携させたいかについて考えたことはありますか?
obj1 = Foo()
compiler.Recompile(Foo, '/some/path/myapp/newsrc/foo.blah');
obj2 = Foo()
// Would this be True?
type(obj1) == type(obj2)
再コンパイルによって既存のインスタンスが変更されないことを期待していると思いますか? これは、同じプロトタイプを保持する限り、関数の方が簡単に思えますが、クラスで行うと面倒になりそうです。
また、糸通しはどうするのですか?
Thread.start(wait 1; bar();); // bar is a function
compiler.Recompile(bar, '/some/path/myapp/newsrc/bar.blah');
スレッドで、再コンパイル中に「bar」の呼び出しを開始するとしましょう。再コンパイルが完了するまで呼び出しをブロックしてから、新しい関数を呼び出しますか? コンパイルが完了するまで、古い関数はまだ存在しますか? 関数ポインタがある場合、再コンパイル後、それはどこを指すのでしょうか? 元の機能へ、それとも新しい機能へ?
これをまっすぐに実装する方法について考えている人はいますか?
どうやら、それはまだ存在していません。
うーん、頭のてっぺんから何も考えられない。私が考えることができる唯一の主要な製品はJRebelですが、それは Java 用です。