BEAMUp - a new way to install Erlang, Gleam, and more to come

BEAMUp is still early but it works for basic everyday usage so I released and am announcing it, GitHub - tsloughter/beamup: Install and control active BEAM languages. There is an curl | sh installer, or download a binary, or build from source with cargo if you prefer.

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

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

Most important thing that doesn’t work yet that may be a blocker to you trying it is no custom ./configure options to Erlang builds. That is the next thing I’m working on, so hopefully you’ll see a release 0.2.0 when you read this and it’ll be in there.

Other important missing features:

  • Delete an install
  • List installs
  • Build Erlang from branch or tag and use a different repo
  • Install Erlang from binary builds
  • Install/build Elixir
  • Build config profiles

Also to come is “component” installs where it’ll support installing things like rebar3 and elp (ELP - Erlang Language Platform | ELP).

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

Figure I’ll need to answer, ‘why not kerl’, and no, I don’t have a good answer for why I don’t instead add support to kerl for binary installs and installing stuff like Gleam and elp/rebar3 (it seems it does now support installing from a branch or tag? This originally was a feature of erlup different from kerl). Some of those I don’t know that the maintainers would accept, but I also never asked, it’d be cool if they did! I started erlup in part to learn Rust and, honestly, I still can barely make my way around it, so a major part of why BEAMUp exists is simply my goal of learning Rust :slight_smile:

I should note though that BEAMUp does “active version” differently from kerl. It doesn’t rely on your PATH, you don’t need to activate a version. Instead a link from the commands like erl, erlc and gleam is setup which actually runs beamup, beamup looks up the active version based on the global config or the local config and then runs the appropriate executable. This is a hardlink now because I saw that is what rustup does and those work on Windows which I plan to support. I still need to verify if that is the right decision, erlup used a symlink.

14 Likes

Support for running on Windows and installing Erlang and Gleam from their binary releases has been added in v0.3.0 Release 0.3.0 - 2024-08-26 · tsloughter/beamup · GitHub

1 Like

I have an answer for ‘why not kerl’: they actively don’t want any components beyond Erlang/OTP itself. Fair enough, I guess.

@i-am-linja ah, thanks!

Hoping to knockout ELP suport this weekend. Still torn on how/if I tie stuff like this to OTP release or leave it to the user.

But learned that is less important for ELP and more just an Elixir thing to consider so probably won’t slow me down.

1 Like