Elixir1.0.5 は Erlang18 に未対応ではなかった

というのを初めて知った。

きっかけは、dialyxir を使おうと思ったから。

dialyxir をインストールする時の必ずエラーが発生しインストールに失敗する。 エラーの内容は以下の通り。

  Creating PLT /home/ymmtmsys/.dialyxir_core_18_1.0.5.plt ...
** (FunctionClauseError) no function clause matching in Keyword.get/3
    (elixir) lib/keyword.ex:118: Keyword.get(:no_such_file, :files, nil)
    lib/mix/tasks/dialyzer.plt.ex:132: Mix.Tasks.Dialyzer.Plt.core_plt_contains?/2
    lib/mix/tasks/dialyzer.plt.ex:123: anonymous fn/1 in Mix.Tasks.Dialyzer.Plt.missing_apps/0
    (elixir) lib/enum.ex:662: anonymous fn/3 in Enum.filter/2
    (elixir) lib/enum.ex:1261: Enum."-reduce/3-lists^foldl/2-0-"/3
    (elixir) lib/enum.ex:662: Enum.filter/2
    lib/mix/tasks/dialyzer.plt.ex:106: Mix.Tasks.Dialyzer.Plt.need_add?/0
    lib/mix/tasks/dialyzer.plt.ex:57: Mix.Tasks.Dialyzer.Plt.run/1

:no_such_file ということなのでファイルが存在していなくエラーになっているっぽいが。。。よくわからないのでググってみると こんなissueを発見。そしてコメントに

Elixir does not yet support Erlang 18.

と書かれているのを発見。

...あれ、今まで動いていたから気付いていなかったけど、まだ Erlang18 は対応してないっぽい。

Elixir の github を覗いてみると、確かにv1.2.0でErlan1 18.0に対応するようだ

とりあえず、自分の環境の Erlang のバージョンを下げよう。

追記 (2015/09/15)

インストールに失敗する原因は、Erlang のバージョンではなくメモリ不足によるものだった。 512Mのメモリを積んだVM上でインストールして失敗を繰り返していたたけれど、2Gに増やしたら成功した。 ちなみに1Gでは失敗した。

自分のPCは4GBしか積んでないので、VMに2Gも割けないのでインストールが終わったら通常の512Mに戻した。

追記 (2015/09/29)

https://github.com/elixir-lang/elixir/releases/tag/v1.0.5 を見るとErlang18.0 に対応したと書いてありました。