У меня есть временная ситуация, когда файлы луча, скомпилированные на одном node выполняются на другом node. Являются ли файлы пучков переносимыми?
Насколько близки должны быть версии дистрибутивов Erlang?
У меня есть временная ситуация, когда файлы луча, скомпилированные на одном node выполняются на другом node. Являются ли файлы пучков переносимыми?
Насколько близки должны быть версии дистрибутивов Erlang?
Бук файлы переносятся через узлы, так как они байт-код, который интерпретируется виртуальной машиной Erlang, так же, как работает Java. Исключение составляет если они скомпилированы для собственной оптимизации (+ native), и в этом случае они явно не очень переносимы, за исключением, возможно, между машинами Windows. (редактировать два года спустя: также машины, которые имеют идентичные аппаратные и программные настройки, как вы могли бы найти в телекоммуникационных целях erlang)
Версия мудрая, очевидно, что вы не должны использовать функции, которые самая старая версия не поддерживает. Пока функции поддерживаются, он должен работать, даже если разрыв в версии большой.
Отметим также, что некоторые модули, возможно, были экспериментальными в более ранних версиях, поэтому их функции могли иметь несколько разные результаты.
Бук файлы должны быть достаточно переносимыми по узлам. Если узлы работают с разными версиями виртуальной машины Erlang, у вас могут возникнуть проблемы. К особенностям, к которым следует относиться особенно осторожно, относятся использование параметризованных модулей и атрибут модуля -extends(). Если на одной из машин установлена виртуальная машина, которая была установлена с помощью диспетчера пакетов (например, apt), она, вероятно, старая. Один модуль, с которым мне было трудно в прошлом, это модуль регулярных выражений re
.