Elixir v1.10.4 released

Release: https://github.com/elixir-lang/elixir/releases/tag/v1.10.4

1. Bug fixes


  • [Kernel] Fix a bug where custom types were printed as built-in types
  • [Kernel] Don’t add compile-time dependency on defdelegate
  • [Kernel] Add line numbers to warnings on deprecated imports
  • [Kernel] Report the correct line number when raising inside a macro
  • [Task] Include callers in translated Logger metadata for Task
  • [Task] Fix Task PID and caller in Task Supervisor reports


  • [ExUnit.Formatter] Avoid crashes when diffing guards when the pattern does not match
  • [ExUnit.Formatter] Also blame exceptions that come from linked and trapped exits


  • [IEx.Helpers] Do not crash when printing a type that cannot be code formatted


  • [mix app.start] Fix reading .app file located in archives (.ez files)
  • [mix local.hex] Provide more guidance when Hex can’t be installed
  • [mix release] Properly encode config in releases


  • Precompiled.zip SHA1: 5b400c829c4f239ac89a7eb97aac642b961f38fd
  • Precompiled.zip SHA512: 9727ae96d187d8b64e471ff0bb5694fcd1009cdcfd8b91a6b78b7542bb71fca59869d8440bb66a2523a6fec025f1d23394e7578674b942274c52b44e19ba2d43
  • Docs.zip SHA1: 178f08724c63496878b6e427467f650f03cd978c
  • Docs.zip SHA512: cefaf0371a9751d37d6d1181f910a23d6cc627f7b77fe7fa1b303a9b4769d1fb2a9bbeea54566109fa5acf8e0455a5a44cb3ac9ccb9e968d92610b869d15d27c

Have fun!


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?

Hmm … I have already installed it without any problem. Please recheck it. :slight_smile:

I did it about 10 times :003: 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. :frowning:

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 :077:

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


I can confirm that there’s no 1.10.4-otp-23 on Hex yet. @josevalim who should we we discuss this issue with?

I think the issue is here in the mapping of OTP versions and Elixir precompiled builds in the Bob builder: https://github.com/hexpm/bob/blob/acd0d66213066e9b42f318b0da0818c01bb11c34/lib/bob/job/build_elixir.ex#L61

That said I thought I remember an earlier Elixir 1.10.x which was incompatible with OTP-23 and don’t know enough about that to make a simple PR.

1 Like

@josevalim described it here:

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.

Source: Elixir v1.11 will be released in October 2020

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"]
  # …
1 Like