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
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.