What does BEAM stand for in iex for the Elixir programming language?
Asked Answered
F

1

14

What do the letters B. E. A. and M. stand for? I recall seeing an explanation of the acronym "BEAM", but I have not managed to find it again.

It comes up in error codes:

➜  gentoo  iex
Erlang/OTP 17 [erts-6.4.1] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false]

Interactive Elixir (1.0.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> import Math

08:05:02.839 [error] Loading of /var/opt/proj/elx/ubuntu/Elixir.Math.beam failed: :badfile

** (CompileError) iex:1: module Math is not loaded and could not be found

08:05:02.846 [error] beam/beam_load.c(1104): Error loading module 'Elixir.Math':
  non-ascii garbage '78705400' instead of chunk type id


    (elixir) src/elixir_exp.erl:123: :elixir_exp.expand/2
iex(1)> 

So, it looks like there's some sort of problem with a .beam file, probably due to my use of vi. (Note to notive Elixir programmers: Do not edit .beam files, it is painful.)

This question explains what the BEAM virtual machine is, but not what the letters stand for. And it seems difficult to find out much about the etymology quick or to the point on Erlang central. Supposedly BEAM is the secret sauce of Erlang and Elixir both.

Fridell answered 5/6, 2015 at 15:15 Comment(1)
// , This was surprisingly difficult to even search for on Google, and it's pretty specific. I'm not sure why the downvotes.Fridell
O
27

It stands for "Bogdan/Björn's Erlang Abstract Machine" - it is just the name of the VM, much like JVM (Java Virtual Machine).

Almost everyone uses "the new BEAM", where BEAM stands for Bogdan/Björn's Erlang Abstract Machine. This is the virtual machine supported in the commercial release.

http://www.erlang.org/faq/implementations.html

The name probably finds its routes from the Warren Abstract Machine - an abstract instruction set for Prolog which you can read about at: http://en.wikipedia.org/wiki/Warren_Abstract_Machine

The WAM influenced JAM (Joe Abstract Machine - named after Joe Armstrong) which was the precursor to BEAM.

You can read more in the "the development of Erlang" article on the Erlang website.

Oidium answered 5/6, 2015 at 15:21 Comment(2)
// , Why does he call it an "Abstract" machine? I mean, who would ever make a virtual machine that was not "Abstract"?Fridell
// , CooI. At the time of posting the question, google.com/?q=erlang+beam+acronym doesn't actually turn up much in the way of specific etymology, and I thought it might be something appropriate for a quick lookup on stackoverflow for the curious.Fridell

© 2022 - 2024 — McMap. All rights reserved.