BEAM

BEAM — виртуальная машина, на которой исполняется байт-код программ, созданных на языке Erlang.

BEAM является основой платформы OTP и частью ERTS (Erlang Run-Time System). Эта система компилирует исходный код в байт-код, который затем мы можем запустить на BEAM. Файлы байт-кода имеют расширение .beam.

Первой виртуальной машиной для Эрланга была JAM (Joe’s Abstract Machine). Её написал Джо Армстронг. Название BEAM происходит от Bogdan’s Erlang Abstract Machine (Богумил “Богдан” Хаусман написал оригинальную версию BEAM). Сейчас это название также трактуют как Björn’s Erlang Abstract Machine – в честь Бьорна Густавссона, поддерживающего текущую версию.

Английское слово beam имеет много смыслов. В данном контексте, видимо, подразумевается beam как пучок частиц (физика). Судя по всему, это намёк на ключевую особенность Эрланга, в котором очень легко порождать множество параллельных процессов, каждый из которых весьма легковесен.

Одна из ключевых особенностей Erlang/OTP — то, что порождаемые программой параллельные процессы (акторы) не имеют прямого отношения к процессам операционки. Это внутренние процессы для BEAM.

Поддержка многих бифов реализована прямо в BEAM. Например, бифа spawn.

На BEAM запускаются не только Эрланг-программы. Всего для этой виртуальной машины создано как минимум 34 языка. Самым известным, помимо Эрланга, является Elixir.

В стандартной библиотеке есть beam_lib — интерфейс к beam-файлам.


© Алексей Карманов, 2024.