tristan

tristan

Rebar3 Core Team

BEAMup - a new way to install Elixir, Erlang, Gleam, and more components to come

First announced on the Erlang Forum, BEAMup is a tool for installing a managing the active instance of BEAM languages. It has support for Erlang, Elixir and Gleam on Linux, Mac and Windows – probably works on BSD if built from source?

Things that works (ok, “work”, I actually need to add tests too!):

  • Build Erlang from a Github releases
  • Install Elixir and Gleam from a binary release
  • Install Erlang from a binary release on Windows
  • Set global default of Elixir, Erlang and Gleam to use
  • Set a per-directory version of Elixir, Erlang or Gleam to use

Future plans include:

  • Binary install of Erlang on Mac and Linux
  • Source installation for Elixir and Gleam
  • Building from source based on a git branch (or really any git reference) instead of just GitHub releases
  • BEAMUp binaries for Linux ARM
  • Component installation for things like rebar3 (I guess you have mix for that already :slight_smile: and language servers
  • Checks that the Elixir install you are running is compatible with the Erlang version that is active.

It is still in the early stages so some commands are still missing.

I’ll end with a question, if you have any thoughts on support for installing builds for other hosts let me know on this issue, Support “cross-compilation” of Releases? · Issue #16 · tsloughter/beamup · GitHub. I thought this might be useful for embedded folks.

Most Liked

tristan

tristan

Rebar3 Core Team

Good question! I don’t believe asdf and mise for Erlang work on Windows. Support for binary installs is unique too, I think. Plus, the eventual support for components – though maybe mise that could be added too, I know I use it for Go and install stuff for Go through it.

Not an answer but I’ll note that beamup has a long lineage going back over a decade. Starting with erln8 and then erlup when erln8 became unmaintained.

Its existence really boils down to that many years ago I wanted an Erlang installer that used links instead of environment variables like kerl and I wanted to learn Rust. Then when the name beamup came up I had to pounce on that, haha, and add support for other languages. Support for Windows came because it felt like something missing and could help the community and make this a viable tool to be promoted by Gleam.

I know where asdf and mise are for sure better: they are tested and mise has better Rust code :slight_smile:

dimitarvp

dimitarvp

This is great and I am sure it will find its audience!

For those of us who use asdf or mise, what is beamup doing better than them?

cmo

cmo

vfox is a cross platform version manager.

tristan

tristan

Rebar3 Core Team

Now on Linux, thanks to GitHub - gleam-community/erlang-linux-builds , you can install compiled builds of Erlang with beamup install erlang <TAG>. These are statically built so have caveats (see the repo’s README for more), the biggest one being NIFs don’t work. So you’ll likely want to instead do beamup install erlang --libc glibc erlang latest (or --libc musl) which fetches a build that will dynamically link to glibc or musl.

Also, I never replied that ELP was added, you can install ELP with beamup component install elp latest

dimitarvp

dimitarvp

Ah, that by itself is a very strong reason. Thanks for following up.

Sorry, what kind of components do you mean? The only association that springs to mind is rustup’s component subcommand where you can e.g. add source code to an existing Rust installation, or extra compiler tooling f.ex. WASM support.

Where Next?

Popular in Discussions Top

bartblast
StackOverflow Survey results for 2025 have been published: Gleam - 2nd most admired language Elixir - 3rd most admired language Phoenix...
New
AstonJ
Phil just posted this on EFS: …interesting that some of the key updates to JavaScript appear heavily influenced by (or blatantly copied...
New
dimitarvp
Hello, I am looking to more closely understand the advantages of the Repo.transact pattern and the quoted disadvantages of Ecto.Multi. ...
New
garrison
The Elixir ecosystem is one of our biggest strengths, and the BEAM really lends itself to native implementations (e.g. Cachex over Redis,...
New
ivanminutillo
Bonfire is an open source framework for building modular federated digital spaces. It’s built entirely with Elixir, including LiveView (a...
New
AstonJ
Have you changed the way you learn? Maybe you started off using docs and tutorials and are now an avid book reader or course watcher? Or ...
New
stevensonmt
Has anyone else ever wanted to merge two maps, but have the resulting map only include keys common to both maps? I think of it as analogo...
New
AstonJ
@Garrison’s comment in another thread reminded me of this post by Joe: With the big five exerting more control than ever, new (AI) play...
New
dogweather
I’ve been brainstorming about ways to solve the N-dimensional code organization problem, and am thinking about developing a Smalltalk-lik...
New
dogweather
I realized I could really use something like this in my Phoenix project: I asked Claude 4 Sonnet if a port exists - it said no, and ga...
New

Other popular topics Top

vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
yawaramin
In the Dialyzer docs ( http://erlang.org/doc/man/dialyzer.html#requesting-or-suppressing-warnings-in-source-files ), there is a way to tu...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
beno
I will often find my self writing things similar to: case some_value do nil -&gt; something() "" -&gt; something() _ -&gt; someth...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

We're in Beta

About us Mission Statement