I just updated a small project I wrote in elixir almost four years (!) ago. The original project was written with elixir version 0.11.3-beta, the version currently installed on my laptop is 1.3.4 (although 1.4 is already available). The update went very smooth and I would like to document the steps necessary below:
Pipes need parantheses
It is not longer possible to write something like
foo 1 |> bar 2 |> baz 3
As the well written error message states: This "is ambiguous and should be written as":
foo(1) |> bar(2) |> baz(3)
HashDict and HashSet are no more
The modules HashDict (HashDict.new/1 is undefined or private) and HashSet (HashSet.new/1 is undefined or private) are deprecated (and I think they are deprecated since version 1.1). Just replace every HashDict with Map and every HashSet with MapSet. As the APIs are almost the same as before this should work out very well.
This (module Supervisor.Behaviour is not loaded and could not be found) is another no-brainer: Write
use Supervisor # or use GenServer
use Supervisor.Behaviour # or use GenServer.Behaviour
Seems that the function list_to_tuple was removed from the elixir kernel-module (undefined function list_to_tuple/1). Instead just call the function from the erlang stdlib like this:
And except from some warnings this was all for me to move my little toy project from a very old to a new version of elixir. Nice.