There doesn’t seem to be Elixir 1.10.4-otp-23 available through asdf yet even though the versions for OTP 21 and OTP 22 are already in place. Any problem with that particular build?
I did it about 10 times and made sure to refresh asdf every time, but when doing asdf list-all elixir I only see 1.10.4-otp-21 and 1.10.4-otp-22. No 23.
Running curl -s https://repo.hex.pm/builds/elixir/builds.txt | grep 'v1.10.4' also doesn’t show 23 in the list.
EDIT: Maybe 1.10.4, without any OTP qualifier at the end of the name, is the OTP 23 variant?
ok, my bad - I have just a script to automatically update Elixir and I did not added a simple check for specific otp version, so I though that it was correct, sorry for that
Anyway you are always able to install it using git reference (1.10.4 tag when current Erlang is set to 23.x).
Hm, can you clarify on that? Not following. I am more interested in a version manager though.
In any case, I am not in a rush but just found it weird that OTP 21 and OTP 22 builds were available practically at the time of the post but OTP 23 is not there so just making sure their build process hasn’t missed it.
At start make sure that asdf current erlang is set to 23.x and then use this command: asdf install elixir ref:v1.10.4. It would compile from source, but in Elixir case is not a really big problem since it does not take much time to compile.
v1.10.4 is Elixir git tag attached to specific commit, you can also use branch name like master (which is automaticcally attached to latest commit in specific branch) or even specify any commit reference (for example to check some PR).
Therefore, Elixir v1.11 will be released in October 2020. If there are any important bug fixes, we will continue releasing patch versions for Elixir v1.10. On that note, the latest Elixir v1.10.3 is already compatible with Erlang/OTP 23.
So we have a problem with missing correct clasule for reference v1.10.4 which means it fallbacks to "v1.10." <> _ which then specifies such otp releases: ["21.3", "22.3"].
@josevalim I would like to suggest using Version.compare/2 which should reduce code. Just for example instead of:
def elixir_to_otp(ref) do
case ref do
"v0" <> _ -> ["17.3"]
"v1.0.0-" <> _ -> ["17.3"]
"v1.0.0" -> ["17.3"]
"v1.0.1" -> ["17.3"]
"v1.0.2" -> ["17.3"]
"v1.0.3" -> ["17.3"]
# …
we could just write code like this one:
def elixir_to_otp("v" <> version) do
cond do
Version.compare(version, "1.0.4") == :lt -> ["17.3"]
# …