[elixir! #0078] elixir 版本升級的歷程(1.11 -> 1.12)

Ljzn 發表於 2021-10-13

想往常一樣開啟 github,發現我最喜歡的程式語言 elixir 釋出了新的版本。立馬下載安裝,沒想到一執行公司的專案,爆了一堆錯誤。

1

首先看到的是:

warning: ^^^ is deprecated. It is typically used as xor but it has the wrong precedence, use Bitwise.bxor/2 instead

查了一下 Changelog,原來這個函式已經被淘汰了,像提示裡說的那樣改為 Bitwise.bxor/2 就可以了。

2

然後 elixir 1.12 版本修正了一個關於 behaviour 的bug。之前如果某個 callback 的實現函式沒有標註 @impl true 的話是不會有警告的。現在會報:

warning: module attribute @impl was not set for function xxx/2 callback (specified in XXX). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback

我們把 @impl true 在對應函式上面加上就可以了。

3

最後是 format 的變化。在 1.12 版本中不再允許字串轉義中包含換行,例如

"abc#{
d
}e"

在舊版本中是合格的,在新版中則會被強制 format 為:

"abc#{d}e"

end

就這樣,一次愉快的升級就完成了。