The BEAM is fascinating for many reasons, including being register-based.
I really just wish the BEAM was portable in the way the JVM is. The BEAM hooks into so many system libraries, you must compile it on every flavor of linux instead of just unpacking a tarball.
This means you either must use your distro package manager’s version, or compile from scratch. If you want to control the exact version that’s being used across your team (via asdf or similar), this practically means you’ll end up compiling the BEAM over and over…
It would be nice for BEAM based applications to compile standalone executables.
The standard Windows and macOS builds are already portable too.
The BEAM start scripts are very convoluted though, which I think is why tools like burrito take the approach of using self-extracting archives. Yoshie was looking at making a true single-file executable with her static Linux build, she spoke about it at her CodeBEAM Europe lightning talk this year.
It really is! If we can make this dependable and maintained for the long-term it would make getting started with BEAM languages much smoother. Currently installing Erlang on Linux is one of the things that people get stuck with.