gpt4 book ai didi

jit - 寻找基于 LLVM 的语言,该语言允许即时重新加载部分二进制文件

转载 作者:行者123 更新时间:2023-12-04 15:48:51 25 4
gpt4 key购买 nike

是否有任何基于 LLVM 的无 GIL 语言,主要针对 JIT 执行,允许动态重新加载部分代码?

就像重新编译 1 个类,并在不停止整个程序的情况下重新加载它。

有人试过吗?

有没有机会用 clang 做到这一点(当然,有很多开发人员谨慎、限制和手动状态处理)?

最佳答案

我认为这是一个炸药的想法,也是我很想拥有的一个功能!您是否考虑过您希望如何与该功能交互?

obj1 = Foo()
compiler.Recompile(Foo, '/some/path/myapp/newsrc/foo.blah');
obj2 = Foo()
// Would this be True?
type(obj1) == type(obj2)

我假设您希望现有实例通过重新编译保持不变?
这似乎使用函数会更容易,只要它们保持相同的原型(prototype),但使用类似乎会变得困惑。

另外,线程怎么办?
Thread.start(wait 1; bar(););  // bar is a function
compiler.Recompile(bar, '/some/path/myapp/newsrc/bar.blah');

假设在我们的线程中,我们在重新编译期间开始调用“bar”。调用是否会阻塞,直到重新编译完成然后调用新函数?在编译完成之前旧功能是否仍然存在?如果我们有一个函数指针,在重新编译之后,它指向哪里呢?原功能还是新功能?

有没有人对如何以一种严格的方式实现这一点有任何想法?

关于jit - 寻找基于 LLVM 的语言,该语言允许即时重新加载部分二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3562029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com