哪种编程语言允许即时更新任何类?

Bar*_*ter 13 language-features programming-languages

我想知道,是否有任何语言允许您在不重新加载整个应用程序的情况下即时添加/删除/更新任何类?(前提是我可以接受一些不便之处,比如确保目前没有方法运行+一些额外的努力来'迁移'类数据成员).

替换1个文件并在下一个客户端请求中使用的Web应用程序不是我需要的(如Perl,PHP).应用程序必须持续运行,并且具有一些内部状态.

其他要求是

  1. 没有GIL或类似的问题阻止使用SMP
  2. 优选地 - 存在类似JIT的VM(即,性能接近本机代码的情况).理想的解决方案是能够在CLang或任何其他基于LLVM的语言中重新加载模块.这将是完美的.

关于已经做出的答案:

  • .NET/Java不适合 - 它们都有过于笨重的虚拟机,并且应用程序的很大一部分将在Linux上运行.
  • Erlang - 看起来像是可能的,但是我的肉眼很可怕,我只是看不出它的情况,如果是,情况和字符串.此外,我宁愿避免将裸源转移到客户端,编译后的字节码会好得多.

gee*_*aur 15

Erlang旨在支持热代码交换作为其高可用性功能之一.


Ano*_*mie 5

Objective-C可能适合该法案.您可以使用此处记录的函数在运行时添加新类和交换方法实现,如果需要其他实现,您可以在现有类上加载具有其他类或类别的新NSBundle.GNUStep虽然没有实现Apple最近添加的所有语言,但它确实声称实现了这些功能(参见[1][2]).