dogweather
How to choose Elixir + Erlang versions to install
I realized that I’m just guessing what all the version numbers mean — and there are a lot of them. I’m not sure if this is documented anywhere. (?) Here’s what I do on MacOS, which seems to work:
- Install
asdf
$ brew install asdf
- Install the asdf plugins for Elixir and Erlang. (Is it necessary to do both? I think so.)
$ asdf plugin add elixir
$ asdf plugin add erlang
- Look at the Elixir versions available:
$ asdf list all elixir
...
1.14.0
1.14.0-otp-23
1.14.0-otp-24
1.14.0-otp-25
1.14.0-rc.0
1.14.0-rc.0-otp-23
1.14.0-rc.0-otp-24
1.14.0-rc.0-otp-25
1.14.0-rc.1
1.14.0-rc.1-otp-23
1.14.0-rc.1-otp-24
1.14.0-rc.1-otp-25
main
main-otp-22
main-otp-23
main-otp-24
main-otp-25
...
- The version
1.14.0-otp-25seems like the most recent production-ready one, so I install that:
$ asdf install elixir 1.14.0-otp-25
- Now I need to find a compatible Erlang version. (Am I correct here?)
$ asdf list all erlang
...
24.3.4.6
25.0-rc1
25.0-rc2
25.0-rc3
25.0
25.0.1
25.0.2
25.0.3
25.0.4
25.1
25.1.1
Cool, the number 25 matches otp-25 from the Elixir package, and although the 25 here theoretically refers to the Erlang version and the other refers just to OTP, I suspect the nomenclature is rather loose. So I install 25.1.1:
$ asdf install erlang 25.1.1
Excellent! I’m almost ready to get to work. I have just one more hour ahead of me:
- Try to write Elixir code in VS Code with the LSP.
- It’s broken. Try to debug my dev env unsuccessfully. Post a forum question. Learn that the LSP has an undocumented dependency on OTP < 25.
- Redo all the above steps with Erlang 24 and Elixir with otp-24.
- Test all of this, and it appears to work: My inference about Erlang 24 = top-24 might be correct.
This is the setup process for new Elixir devs.
Did I miss some docs or sign-posts along the way that would have made this easier?
Marked As Solved
Eiji
Elixir
Ok, let’s describe it step by step:
- Although Elixir projects are not required to follow SemVer, they must follow the format outlined on SemVer 2.0 schema.
x.y.zat the start is the version ofElixir-rc.xis axrelease candidate for said version-otp-xis a precompiledElixirrelease forxmajorErlangversion- The release without
otppart before install needs to be compiled first with already installed and officially supportedErlangversion mainis the name ofgitbranch which means you can test more or less stable new features before they added to an official release
If you want to install latest Elixir together with latest supported Erlang and you are not interested in release candidates as well as unstable main branch then you need to select release with latest x.y.z version of Elixir and latest -otp-x version, currently 1.14.0-otp-25.
Erlang
In Erlang it’s much easier as it does not have a precompilled releases for other languages.
a.bora.b.cora.b.c.dat the start is the version ofErlang- here we do not have padded.0exceptb-rcxis axrelease candidate for said versionmasteris the name ofgitbranch which means you can test more or less stable new features before they added to an officialErlang/OTPreleasemaintandmaint-xare stablegitbranches based on previous work inmaster, see otp/CONTRIBUTING.md for more information
Again if you look for latest stable release for Elixir version -otp-25 you need to select latest a.b or a.b.c or a.b.c.d - currently it’s 25.1.1.
Compile from source
If you want to compile Elixir on your own and you want to know which Erlang versions are supported then you can take a look at other releases or the documentation: Compatibility and Deprecations — Elixir 1.14.0 and Compatibility and Deprecations — Elixir v1.15.0-dev (main branch)
Erlang prebuild releases
There are prebuilt packages for Ubuntu LTS releases, see:
- michallepicki/asdf-erlang-prebuilt-ubuntu-18.04
- michallepicki/asdf-erlang-prebuilt-ubuntu-20.04
- michallepicki/asdf-erlang-prebuilt-ubuntu-22.04
There is also an open issue to officially support prebuilt packages in asdf-erlang repository, see: Support for precompiled binaries? asdf-vm/asdf-erlang#165
That’s all important things about Elixir and Erlang in asdf-based environment. Unfortunately I’m not MacOS user, so I don’t have any information specific to this OS.
Also Liked
cmo
Isn’t it even worse if you want wxwidgets compiled in the asdf version of erlang? I usually use Windows which is just scoop install erlang elixir and was a little frustrated by how much harder it was setting it up with asdf on Linux.
Weren’t the ElixirLS issues with OTP 25 patched recently? It’s been working for me for at least a couple of weeks.
LostKobrakai
It depends on the elixir release, but generally there can be compile time checks in elixir to make use of new OTP features if compiled against a specific version.
By default elixir is compiled with the lowest supported OTP version, so using one compiled with a more recent one might unlock additional optimizations.
axelson
I’d highly recommend not installing asdf via homebrew. I can dredge up the GitHub issues later but it causes many things to break when updating the version of asdf itself.
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








