Вопрос

У меня временная ситуация, когда файлы beam, скомпилированные на одном узле выполняются на другом узле.Переносимы ли файлы beam?

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top