あるノードでコンパイルされたビーム ファイルが別のノードで実行される一時的な状況があります。Beam ファイルは移植可能ですか?
Erlang ディストリビューションのバージョンはどれくらい近い必要がありますか?
Beam ファイルは、Java が動作するのと同じように Erlang VM によって解釈されるバイトコードであるため、ノード間で移植可能です。例外は、ネイティブ最適化 (+native) 用にコンパイルされている場合です。この場合、おそらく Windows マシン間を除いて、明らかにあまり移植性がありません。(2 年後に編集: erlang の電気通信での使用に見られるように、同一のハードウェアとソフトウェアのセットアップを持つマシンも)
バージョンに関しては、最も古いバージョンがサポートしていない機能を使用すべきではないことは明らかです。機能がサポートされている限り、バージョン ギャップが大きくても動作するはずです。
一部のモジュールは以前のバージョンでは実験的であった可能性があるため、それらの機能の結果がわずかに異なる可能性があることにも注意してください。
Beam ファイルは、ノード間でかなり移植可能でなければなりません。ノードが異なるバージョンの Erlang VM を実行している場合、問題が発生する可能性があります。特に注意すべき機能には、パラメーター化されたモジュールの使用と -extends() モジュール属性が含まれます。マシンの 1 つがパッケージ マネージャー (apt など) を介してインストールされた VM を実行している場合、それはおそらく古いものです。過去に苦労したモジュールの 1 つは、正規表現モジュールですre
。