【发布时间】:2010-02-12 22:53:48
【问题描述】:
我有一种临时情况,即在一个节点上编译的梁文件 在另一个节点上执行。 Beam 文件是否可移植?
Erlang 发行版的版本需要多接近?
【问题讨论】:
我有一种临时情况,即在一个节点上编译的梁文件 在另一个节点上执行。 Beam 文件是否可移植?
Erlang 发行版的版本需要多接近?
【问题讨论】:
Beam 文件可以跨节点移植,因为它们是由 Erlang VM 解释的字节码,与 Java 的工作方式相同。例外情况是,如果它们是为本地优化(+native)而编译的,在这种情况下,它们显然不是很便携,除了可能在 Windows 机器之间。 (两年后编辑:还有具有相同硬件和软件设置的机器,就像您在电信使用 erlang 时可能会发现的那样)
版本方面,很明显您不应该使用最旧版本不支持的功能。只要功能受支持,即使版本差距很大,它也应该可以工作。
另请注意,某些模块可能在早期版本中是实验性的,因此它们的功能可能会产生略微不同的结果。
【讨论】:
Beam 文件应该可以跨节点移植。如果节点运行不同版本的 Erlang VM,那么您可能会遇到麻烦。特别要警惕的特性包括参数化模块的使用和 -extends() 模块属性。如果其中一台机器正在运行通过包管理器(即 apt)安装的 VM,则它可能是旧的。我过去遇到困难的一个模块是正则表达式模块re。
【讨论】: