2010-02-12 6 views
14

Ich habe eine temporäre Situation, in der Strahldateien, die auf einem Knoten kompiliert wurden, auf einem anderen Knoten ausgeführt werden. Sind die Strahldateien übertragbar?Wie tragbar sind Erlang Beam-Dateien?

Wie nahe müssen die Versionen der Erlang-Distributionen sein?

Antwort

10

Strahldateien sind über Knoten hinweg portierbar, da sie Bytecode sind, der von der Erlang-VM interpretiert wird, genau wie Java. Die Ausnahme ist, wenn sie für native Optimierung (+ native) kompiliert werden, in diesem Fall sind sie offensichtlich nicht sehr portabel, außer möglicherweise zwischen Windows-Maschinen. (Bearbeiten Sie zwei Jahre später: auch Maschinen, die identische Hardware- und Software-Setups haben, wie Sie es möglicherweise in Telekommunikationsanwendungen von Erlang finden)

Versionsweise ist es offensichtlich, dass Sie keine Funktionen verwenden sollten, die die älteste Version nicht hat Unterstützung. Solange die Features unterstützt werden, sollte es auch funktionieren, wenn die Versionslücke groß ist.

Beachten Sie auch, dass einige Module in früheren Versionen möglicherweise experimentell waren und ihre Funktionen möglicherweise leicht unterschiedliche Ergebnisse hatten.

+0

Danke für Ihre Antwort und Ihre Zeit. Sind irgendwelche Pfadnamen in die Strahldatei "fest codiert"? – DanM

+0

nur wenn Sie Pfadnamen darin angeben. –

7

Strahldateien sollten über Knoten hinweg ziemlich portabel sein. Wenn Knoten verschiedene Versionen der Erlang-VM ausführen, haben Sie möglicherweise Probleme. Zu den besonders zu beachtenden Merkmalen gehören die Verwendung von parametrisierten Modulen und das Modulattribut -extens(). Wenn eine der Maschinen eine VM ausführt, die über einen Paketmanager (d. H. Apt) installiert wurde, ist sie wahrscheinlich alt. Ein Modul, mit dem ich in der Vergangenheit Schwierigkeiten hatte, ist das Modul für den regulären Ausdruck re.