Erlang/OTP 23

這個版本的 Erlang/OTP 可以從原始碼建置,或使用適用於您的作業系統的預建套件或第三方工具(例如 kerlasdf)安裝。

Erlang/OTP 23 重點 部落格文章

docker run -it erlang:23

潛在的不相容性

  • Erlang 執行時系統
    • 已棄用的 erlang:get_stacktrace/0 BIF 現在會返回一個空列表而不是堆疊追蹤。erlang:get_stacktrace/0 預計在 OTP 24 中移除。
  • ssl
    • 完全移除對 SSL 3.0 的支援。
    • TLS 1.3 已新增至預設支援版本清單。
  • erl_interface
    • 移除了 erl_interface 中已棄用的部分 (erl_interface.h 和所有具有 erl_ 前綴的 C 函式)。
  • stdlib
    • 在 OTP-23.2 中,uri_string 中的錯誤修正導致百分比編碼字元的解碼可能與之前不同。

如需完整列表,請參閱OTP 23.0 - 潛在的不相容性

重點

ssh
  • OpenSSH 6.5 引入了一種新的金鑰檔案表示方式,稱為 openssh-key-v1。現在已支援此格式,但不包括處理加密金鑰。
  • 現在可以在 .config 檔案中完成演算法組態。這對於啟用預設情況下停用的演算法非常有用,而無需更改程式碼。
  • 已實作對 TCP/IP 埠轉發(又稱通道或 tcp-forward/direct-tcp)的支援。在 OpenSSH 用戶端中,這對應於 -L 和 -R 選項。
ssl
  • 對中介盒相容模式的支援使 TLS 1.3 交握看起來更像 TLS 1.2 交握,並增加了透過舊式中介盒成功建立 TLS 1.3 連線的機會。
  • 支援使用 Edward 曲線進行金鑰交換,以及在簽名驗證中使用 PSS-RSA 填充。
語言和執行時
  • 在二進制匹配中,要匹配的段的大小現在可以是一個 guard 表達式 (EEP-52)。
  • 使用 map 匹配時,鍵現在可以是 guard 表達式 (EEP-52)。
  • 允許在數值文字中使用底線以提高可讀性。範例:123_456_78916#1234_ABCD
  • shell 中用於顯示 Erlang 模組、函式和類型文件的的新函式。函式如下:
    • h/1,2,3 – 列印 Module:Function/Arity 的文件。
    • ht/1,2,3 – 列印 Module:Type/Arity 的類型文件。
      當建置 Erlang/OTP 文件時,內嵌文件會建立為 docchunk (EEP 48)。
  • 我們的 Windows 套件建置工具鏈已使用新的 C++ 編譯器、Java 編譯器、OpenSSL 程式庫和 wxWidgets 版本進行升級。我們現在使用 WSL(用於建置的 Windows 的 Linux 子系統),這使得處理建置環境更加容易。
網路
  • 已擴展在不依賴 EPMD 的情況下執行 Erlang 分散式運算的選項。為實現此目的,已新增一些 inet 分散式運算的新選項。
    • -dist_listen false 設定分散式通道,但不監聽傳入連線。
    • -erl_epmd_port Port 設定內建 EPMD 用戶端應返回的預設埠。
  • 已實作 gen_tcpinet 的第一個實驗性 socket 後端。gen_udpgen_sctp 將隨後推出。將 {inet_backend, socket} 作為 listen()connect() 的第一個選項可以輕鬆地在現有程式碼中嘗試此選項。
  • 核心中新增了一個名為 erpc 的新模組,該模組實作了 rpc 模組提供的增強子集運算。增強的地方在於它可以區分傳回值、引發的例外和其他錯誤。erpc 也比原始 rpc 實作具有更好的效能和可擴展性。這是透過利用新引入的 spawn_request() BIF 來實現的。rpc 模組也可以在可能的情況下透過利用 erpc 從這些改進中受益。
  • 關於分散式 spawn 運算的可擴展性和效能改進,以及新功能。
  • 引入了一個具有分散式命名處理程序組的新實作的 pg 模組。舊的 pg2 模組已棄用,並預計在 OTP 24 中移除。