Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/llaisdy/beam_languages
Languages, and about languages, on the BEAM
https://github.com/llaisdy/beam_languages
Last synced: about 1 month ago
JSON representation
Languages, and about languages, on the BEAM
- Host: GitHub
- URL: https://github.com/llaisdy/beam_languages
- Owner: llaisdy
- Created: 2015-11-03T23:33:33.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-06-04T10:45:16.000Z (over 2 years ago)
- Last Synced: 2024-06-12T08:56:00.025Z (6 months ago)
- Size: 74.2 KB
- Stars: 731
- Watchers: 41
- Forks: 44
- Open Issues: 1
-
Metadata Files:
- Readme: README.org
Awesome Lists containing this project
- awesome-ccamel - llaisdy/beam_languages - Languages, and about languages, on the BEAM (Misc)
README
* Languages, and about languages, on the BEAM
** Contents :TOC:
- [[#languages-and-about-languages-on-the-beam][Languages, and about languages, on the BEAM]]
- [[#overview][Overview]]
- [[#34-languages-on-the-beam][34 Languages on the BEAM]]
- [[#about-languages][About Languages]]
- [[#about-the-beam][About the BEAM]]
- [[#erlang-and-types][Erlang and Types]]** Overview
This document is intended to list (a) languages implemented to run on the BEAM, the Erlang virtual machine, and (b) documents (articles & presentations) about the hows and whys of writing languages to run on the BEAM.
For the moment, and for want of a better name, I call such languages "BEAM languages" (although I have heard that there are other Erlang VMs, ...).
I would like the document to be comprehensive, or at least "representative". If I have missed a BEAM language, some noteworthy discussion about a BEAM language, or documentation about implementing languages targetting the BEAM, please let me know through the usual channels (issues, forks, PRs, tweets, emails, etc.).
Thank you.
** 34 Languages on the BEAM
First Erlang itself,
then the 5 [[#lisps][Lisp-influenced]] languages,
then the 15 [[#statically-typed-languages][statically-typed]] languages,
then the 13 [[#etc][others]]. Including Erlang,
that's 34 languages in all.*** erlang itself
- http://www.erlang.org/
- https://github.com/erlang/otp*** lisps
**** clojerl (2015+)clojerl - Clojure for the Erlang VM
- http://clojerl.org/
- http://try.clojerl.online/
- https://github.com/clojerl/clojerl**** joxa (2011+)
- http://joxa.org/
- https://github.com/joxa/joxa
- https://joxa.readthedocs.org/***** Differences Between Joxa and LFE
- Eric Merritt
- 2012/02/21
- http://blog.ericbmerritt.com/2012/02/21/differences-between-joxa-and-lfe.html***** Joxa: A Full Featured Lisp on the Erlang VM
- Eric Merritt
- 2012/08/22
- https://vimeo.com/49116180**** kapok (2015-2018)
- https://github.com/kapok-lang/kapok
**** lfe (2008+)
- http://lfe.io/
- https://github.com/rvirding/lfe**** 'the concurrent schemer' (2013-2014)
- http://the-concurrent-schemer.github.io/scm-doc/
- https://github.com/the-concurrent-schemer/scm*** statically-typed languages
**** alpaca (2016+)- https://github.com/alpaca-lang/alpaca
**** caramel (2020?+)
An Erlang backend to the OCaml compiler
- https://caramel.run/
- https://github.com/AbstractMachinesLab/caramel**** cuneiform (2013+)
- https://cuneiform-lang.org
- https://github.com/joergen7/cuneiform
- https://en.wikipedia.org/wiki/Cuneiform_(programming_language)**** elchemy (2017+)
An Elm syntax front-end for Elixir (i.e., converts Elm-style input language into Elixir source code).
- https://wende.github.io/elchemy/
- https://github.com/wende/elchemy**** eml (2012)
"eml - Erlang flavored by Some ML"
- https://github.com/etnt/eml
**** fez (2017+)
fez - fsharp to core erlang compiler experiment
- https://github.com/kjnilsson/fez
**** fika (2020)
A statically typed functional programming language for the web
- https://github.com/fika-lang/fika
**** gleam (2016+)
gleam - "A statically typed language for the Erlang VM"
- https://gleam.run
- https://github.com/gleam-lang/gleam**** hamler (2020)
Haskell-style functional programming language running on Erlang VM.
- https://github.com/hamler-lang/hamler
- https://hamler-lang.org/**** haskerl et al. (1993-2014)
- https://github.com/etnt/Haskerl
- The Haskerl Index ::
http://www.dcs.gla.ac.uk/~partain/haskerl.html- Yhc/Erlang/Proof of concept ::
https://wiki.haskell.org/Yhc/Erlang/Proof_of_concept**** idris-erlang (2014-17)
- https://github.com/lenary/idris-erlang
This is an Idris package (therefore requiring Haskell and Idris) which compiles Idris source code into erlang source code.
**** idris2-erlang (2020+)
An Erlang code generator for Idris 2 (eg compiles Idris 2 programs to Erlang source code or to BEAM).
- https://github.com/chrrasmussen/Idris2-Erlang
**** purerl (2016+)
Erlang backend for PureScript
- https://github.com/purerl/purerl
- https://purerl.fun/- Introducing PureScript Erlang ::
http://nwolverson.uk/devlog/2016/08/01/introducing-purescript-erlang.html**** rufus (2018+)
"A general-purpose programming language for the BEAM"
- https://github.com/rufus-lang/rufus
There's website source, but no website. Some docs, eg here:
- https://github.com/rufus-lang/rufus/blob/main/rufus-lang.org/public/doc/spec.md
Looks like it's implemented in erlang too!
**** sesterl (2020+)
A "Session-Typed Erlang", an ML-inspired statically-typed Erlang
- https://github.com/gfngfn/Sesterl
- [[https://github.com/gfngfn/the_sesterl_book][The Sesterl Book]]
- [[https://blog.michallepicki.com/notes-on-using-sesterl.html][Notes on using Sesterl]]
- [[https://github.com/gfngfn/game_tianjiupai][Sample game reference based on Elm and Sesterl]]*** etc
**** efene (2009+)- http://efene.org/
- https://github.com/efene/efene**** elixir (2011+)
- http://elixir-lang.org/
- https://github.com/elixir-lang/elixir**** ephp (2013+)
An erlang interpreter for PHP
- https://github.com/bragful/ephp
Presumably as used by [[https://bragful.com][Bragful]] --- "A resilient and scalable PHP".
**** erl2 (2012)
- https://github.com/joearms/erl2
- Announcement and ensuing discussion on erlang-questions ::
http://erlang.org/pipermail/erlang-questions/2012-February/064687.html- "A Few Improvements to Erlang" (EUC 2012) ::
http://www.erlang-factory.com/conference/ErlangUserConference2012/speakers/joearmstrong- A blog post about the above presentation in Chinese ::
http://www.cnblogs.com/me-sa/archive/2012/06/06/2538941.html**** erlog (2008-2018)
- https://github.com/rvirding/erlog
***** Backtracking in Erlang, part 1 - control
- Robert Virding
- 2009/03/18
- http://rvirding.blogspot.co.uk/2009/03/backtracking-in-erlang-part-1-control.html**** erlyjs (2008-2013)
The original repo (on Google Code) no longer exists, but there are several forks, e.g.:
- https://github.com/KlausTrainer/erlyjs
A couple of blog posts from 2008 (the second is by the original developer of erlyjs):
- ErlyJS: JavaScript on Erlang ::
http://ajaxian.com/archives/erlyjs-javascript-on-erlang- ErlyJS - translating Javascript to Erlang ::
http://rsaccon.blogspot.co.uk/2008/02/erlyjs-translating-javascript-to-erlang.html**** ffe: Forth-flavoured Erlang (2014-2016)
- https://github.com/tonyrog/ffe
**** interfix (2015)
- https://github.com/marianoguerra/interfix
**** luerl (2012+)
- https://github.com/rvirding/luerl
**** OTPCL (2017+)
Open Telecom Platform Command Language: "a scripting language designed to integrate with and extend applications written in BEAM-based languages"
- https://otpcl.github.io/
- https://github.com/otpcl/otpcl**** reia (-2012)
- http://reia-lang.org/
- https://github.com/tarcieri/reia**** template_compiler (2016-)
This compiler is a complete rewrite of the Erlang Django (ErlyDTL) template language fork used in Zotonic. In contrast with ErlyDTL
the template_compiler generates small Erlang modules which are shared between different templates and sites.- https://github.com/zotonic/template_compiler
- https://test.zotonic.com/page/1352/templates**** xerl (2013)
- https://github.com/extend/xerl
Five web articles in 2013 starting with:
- Xerl: empty modules (2013/01/30) ::
http://ninenines.eu/articles/xerl-0.1-empty-modules/** About Languages
*** Implementing languages on the BEAM (4)
(video)
- Robert Virding & Mariano Guerra
- 2018/05/17 (Erlang Solutions Webinar)
- https://www.youtube.com/watch?v=0MTiqI9v-ck*** Implementing languages on the BEAM (3)
(video)
- Robert Virding & Mariano Guerra
- 2018/03/06 (CodeBEAM SF)
- https://www.youtube.com/watch?v=lkAbwmn5Rv8*** Efene and the BEAM Community
(slides & video)
- Mariano Guerra
- 2017/06/06 (EUC)
- http://www.erlang-factory.com/euc2017/mariano-guerra*** How BEAMs are made
Slides with link to github repo
- Mariano Guerra
- 2016/10 (BEAM BA Meetup)
- http://marianoguerra.org/talks/beamba-buenos-aires-meetup/#/how-beams-are-made*** Eric Merritt, Erlang and distributed systems expert, gives his views on BEAM languages, Hindley–Milner type systems and new technologies
(article/interview, with links to podcast & video)
- Federico Carrone
- 2015/08/11
- https://medium.com/this-is-not-a-monad-tutorial/eric-merritt-erlang-and-distributed-systems-expert-gives-his-views-on-beam-languages-hindley-a09b15f53a2f*** Create Your Own Language: How to implement a language on top of Erlang Virtual Machine (BEAM)
(slides)
- Hamidreza Soleimani
- 2015/08/06
- https://www.slideshare.net/hamidreza-s/create-your-own-language*** Implementing Languages on the BEAM (2)
(slides & video)
- Robert Virding
- 2014/11/04 (Codemesh 2014)
- http://www.codemesh.io/codemesh2014/robert-virding*** Implementing Languages on the BEAM (1)
(video)
- Robert Virding
- 2014/10/29 (London Erlang UG)
- https://www.youtube.com/watch?v=qm0mbQbc9Kc*** Erlang, LFE, Joxa and Elixir: Established and Emerging Languages in the Erlang Ecosystem
(slides)
- Brian Troutwine
- 2014/07/23
- http://www.slideshare.net/BrianTroutwine1/erlang-lfe-elixir-and-joxa-oscon-2014** About the BEAM
*** The BEAM Book
A description of the Erlang Runtime System ERTS and the virtual Machine BEAM
https://github.com/happi/theBeamBook*** The BEAM Toolbox
A list of tools and libraries that are useful for BEAM languages like efene, erlang, LFE and Elixir projects.
http://efene.org/toolbox.html** Erlang and Types
These first two papers are linked from Philip Wadler's erlang page: http://homepages.inf.ed.ac.uk/wadler/topics/erlang.html
*** A practical subtyping system for Erlang (1997)
(paper)
- Simon Marlow & Philip Wadler
- 1997
- http://homepages.inf.ed.ac.uk/wadler/papers/erlang/erlang.pdf*** The great type hope (2002)
(slides)
- Philip Wadler
- 2002
- http://homepages.inf.ed.ac.uk/wadler/papers/erlang/erlang-slides.pdf*** Pure Type System for Erlang (2014+)
- Namdak Tonpa
- 2013
- Paper: http://aip.scitation.org/doi/pdf/10.1063/1.5045439
- Code: https://github.com/groupoid/pure*** Gradualizer: A Gradual Type System for Erlang (2018+)
A gradual typing system and static code analysis tool for Erlang.
- https://github.com/josefs/Gradualizer
The type system is based on "Gradual Typing for Functional Languages" (Siek & Taha, 2006) (see doc/GTLC.hs):
- http://scheme2006.cs.uchicago.edu/13-siek.pdf.
*** ErlT - experimental erlang dialect (2021)
Facebook's abandoned project to add first-class support for static typing to erlang. Github repo archived and read-only.
- https://github.com/WhatsApp/erlt
*** Bidirectional typing for Erlang (2021)
Erlang Type Checker Prototype Based on Bidirectional Typechecking.
- Nithin Vadukkumchery Rajendrakumar, Annette Bieniusa
- Paper: https://dl.acm.org/doi/10.1145/3471871.3472966
- Video: https://youtube.com/watch?v=MAerjPQUKQQ
- Code: https://github.com/vrnithinkumar/ETC