Pergunta

Eu tenho uma situação temporária em que os arquivos de feixe compilados em um nó são executados em outro nó. Os arquivos do feixe são portáteis?

Quão perto as versões das distribuições de Erlang precisam estar?

Foi útil?

Solução

Os arquivos de feixe são portáteis nos nós, pois são bytecode que são interpretados pela Erlang VM, da mesma maneira que o Java funciona. A exceção é se eles são compilados para otimização nativa (+nativo), caso em que obviamente não são muito portáteis, além de possivelmente entre as máquinas Windows. (Editar dois anos depois: também máquinas com configurações idênticas de hardware e software, como você poderia encontrar nos usos de telecomunicações de Erlang)

Versão em termos de versão, é óbvio que você não deve usar os recursos que a versão mais antiga não suporta. Enquanto os recursos forem suportados, ele deve funcionar mesmo que a lacuna de versão seja grande.

Observe também que alguns módulos podem ter sido experimentais nas versões anteriores e, portanto, suas funções podem ter tido resultados ligeiramente diferentes.

Outras dicas

Os arquivos de feixe devem ser bastante portáteis nos nós. Se os nós estão executando versões diferentes da VM Erlang, você poderá ter problemas. Os recursos a serem especialmente cautelosos incluem o uso de módulos parametrizados e o atributo do módulo -extends (). Se uma das máquinas estiver executando uma VM instalada por meio de um gerenciador de pacotes (ou seja, APT), provavelmente é antigo. Um módulo com o qual tive dificuldade no passado é o módulo de expressão regular re.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top