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 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.
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
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.
I mean like rustup’s support for compnents like the LSP server, but also tools like rebar3 – not useful to Elixir users since this is done by mix already. The first I plan to add are rebar3 and the Erlang langauge server ELP.