BEAM (Erlang virtual machine)
{{Short description|Virtual machine in the Open Telecom Platform}}
{{context|date=June 2018}}
{{Program execution}}
BEAM is the virtual machine at the core of the Erlang Open Telecom Platform (OTP).{{Cite web|url=https://happi.github.io/theBeamBook|title=The Erlang Runtime System|website=happi.github.io|language=en|access-date=2018-05-05}} BEAM is part of the Erlang Run-Time System (ERTS), which compiles Erlang source code into bytecode, which is then executed on the BEAM.{{Cite book|title=Erlang and OTP in action|last=Martin.|first=Logan|date=2011|publisher=Manning Pub|others=Merritt, Eric., Carlsson, Richard.|isbn=9781933988788|location=Stamford, CT|oclc=747046900}}{{Cite news|url=https://www.eliteinfoworld.com/blog/popular-programming-languages-2018/|title=Most Popular Programming Languages of 2018 - Elite Infoworld Blog|date=2018-03-30|access-date=2018-05-08|language=en-US|archive-date=2018-05-09|archive-url=https://web.archive.org/web/20180509080342/https://www.eliteinfoworld.com/blog/popular-programming-languages-2018/|url-status=dead}} BEAM bytecode files have the .beam
file extension.{{Cite book|title=Building web applications with Erlang|last=Zachary.|first=Kessin|date=2012|publisher=O'Reilly|isbn=9781449309961|location=Beijing|oclc=802882644}}
Originally BEAM was short for Bogdan's Erlang Abstract Machine, named after Bogumil "Bogdan" Hausman, who wrote the original version, but the name may also be referred to as Björn's Erlang Abstract Machine, after Björn Gustavsson, who wrote and maintains the current version.{{Cite web|url=https://github.com/erlang/otp/blob/master/erts/AUTHORS|title=erlang/otp|website=GitHub|language=en|access-date=2018-05-06}}{{Cite news|url=https://www.oreilly.com/catalog/errata.csp?isbn=9780596518189|title=Confirmed Errata {{!}} O'Reilly Media|access-date=2018-05-06}} Both developers worked on the system while at Ericsson.{{Cite web|url=https://medium.com/@niamtokik/serialization-series-do-you-speak-erlang-etf-or-bert-part-1-ff70096b50c0|title=Serialization series — Do you speak Erlang ETF or BERT? (part 1)|last=Kerjouan|first=Mathieu|date=2017-07-17|website=Medium|access-date=2018-05-06}}{{Cite web|url=http://www.cs-lab.org/historical_beam_instruction_set.html|title=Erlang BEAM Instruction Set|website=www.cs-lab.org|access-date=2018-05-06}}
The predecessor of the BEAM was JAM (Joe's Abstract Machine), which was the first virtual machine for the Erlang language and was written by Joe Armstrong and Mike Williams in the C language.{{Cite book |last=Armstrong |first=Joe |chapter=A history of Erlang |date=2007-06-09 |title=Proceedings of the third ACM SIGPLAN conference on History of programming languages |chapter-url=https://dl.acm.org/doi/10.1145/1238844.1238850 |series=HOPL III |location=New York, NY, USA |publisher=Association for Computing Machinery |pages=6–1–6–26 |doi=10.1145/1238844.1238850 |isbn=978-1-59593-766-7}}
BEAM languages
Although BEAM was created for Erlang, several other languages have been either created for it or ported to run on it. The most popular of these is Elixir, which had more responses than Erlang itself in a 2023 Stack Overflow developer survey.{{cite web|url=https://survey.stackoverflow.co/2023/#most-popular-technologies-language |website=Stack Overflow |title=Stack Overflow Developer Survey 2023 |access-date=2024-01-09}} Other notable examples include:
- Clojerl,{{cite web |url=https://github.com/clojerl/clojerl |website=GitHub |title=Clojerl |last= Facorro |first=Juan |access-date=2024-01-09}} a port of Clojure to BEAM
- Cuneiform,{{cite web |url=https://www.cuneiform-lang.org/ |website=Cuneiform |title=Cuneiform |access-date=2024-01-09}} a language for large-scale scientific data analysis
- Gleam,{{cite web |url=https://gleam.run |website=Gleam |title=Gleam |access-date=2024-01-09}} a statically typed functional language for BEAM
- LFE,{{cite web |url=https://github.com/lfe/lfe |website=GitHub |title=LFE |access-date=2024-01-09}} Lisp Flavored Erlang, a lisp frontend for the Erlang compiler
- Luerl,{{cite web |url=https://github.com/rvirding/luerl |website=GitHub |title=luerl |access-date=2024-01-09}} Lua on the BEAM, designed and implemented by one of the creators of Erlang
See also
References
{{Reflist}}
External links
- [http://www.erlang.org/ Erlang website]
- [https://web.archive.org/web/20210711004656/http://www.cse.chalmers.se/edu/year/2009/course/TDA381_Concurrent_Programming/ARCHIVE/VT2009/general/languages/armstrong-erlang_history.pdf A History of Erlang]
- [http://www.cs-lab.org/historical_beam_instruction_set.html The Erlang BEAM Virtual Machine Specification, 1997]
- [https://blog.stenmans.org/theBeamBook/ The BEAM Book] by Erik Stenman
- [https://github.com/llaisdy/beam_languages Languages, and about languages, on the BEAM]
{{Authority control}}
Category:Erlang (programming language)