Насколько переносимы файлы пучка Erlang?

У меня есть временная ситуация, когда файлы луча, скомпилированные на одном node выполняются на другом node. Являются ли файлы пучков переносимыми?

Насколько близки должны быть версии дистрибутивов Erlang?

Ответы

Ответ 1

Бук файлы переносятся через узлы, так как они байт-код, который интерпретируется виртуальной машиной Erlang, так же, как работает Java. Исключение составляет если они скомпилированы для собственной оптимизации (+ native), и в этом случае они явно не очень переносимы, за исключением, возможно, между машинами Windows. (редактировать два года спустя: также машины, которые имеют идентичные аппаратные и программные настройки, как вы могли бы найти в телекоммуникационных целях erlang)

Версия мудрая, очевидно, что вы не должны использовать функции, которые самая старая версия не поддерживает. Пока функции поддерживаются, он должен работать, даже если разрыв в версии большой.

Отметим также, что некоторые модули, возможно, были экспериментальными в более ранних версиях, поэтому их функции могли иметь несколько разные результаты.

Ответ 2

Бук файлы должны быть достаточно переносимыми по узлам. Если узлы работают с разными версиями виртуальной машины Erlang, у вас могут возникнуть проблемы. К особенностям, к которым следует относиться особенно осторожно, относятся использование параметризованных модулей и атрибут модуля -extends(). Если на одной из машин установлена ​​виртуальная машина, которая была установлена ​​с помощью диспетчера пакетов (например, apt), она, вероятно, старая. Один модуль, с которым мне было трудно в прошлом, это модуль регулярных выражений re.