Erlang OTP 22.0-rc2 開放測試!
2019 年 3 月 27 日 · 作者:Henrik Nord
OTP 22 Release Candidate 2 #
這是 OTP 22 發布前的三個候選版本中的第二個。
此版本的目的是收集使用者的回饋。歡迎所有回饋,即使只是告訴我們它對您有效,因為這讓我們知道候選版本經過了一些測試。
Erlang/OTP 22 是一個新的主要版本,包含新功能和改進,以及不相容性。
潛在的不相容性 #
- gen_* 行為:如果伺服器透過
sys:log/2,3
啟用最後 N 條訊息的記錄,則此記錄將包含在終止報告中。 - reltool:現在可以在 reltool 發布特定配置格式的 rel 元組中包含一個新元素 Opts:
{rel, Name, Vsn, RelApps, Opts}
。 - 所有由
erlang:list_to_pid
和類似函數建立的外部 pid/port/ref 現在與來自該節點的任何其他具有相同編號的 pid/port/ref 比較相等。 - 舊的傳統
erl_interface
函式庫自 OTP 22 起已棄用,將在 OTP 23 中移除。這不適用於ei
函式庫。 - VxWorks 自 OTP 22 起已棄用,將在 OTP 23 中移除。
候選版本 2 中的其他重點 #
- 透過
socket
模組提供簡單的 socket API。這是一個低階 API,不取代gen_[tcp|udp|sctp]
。它的目的是最終取代 inet 驅動程式。它還提供了一個基本的 API,有助於實現 TCP、UDP 和 SCTP 以外的其他協定。已知問題是:不支援 Windows 作業系統(目前),有少量的 term 洩漏。此功能在 OTP 22 中將被歸類為實驗性功能。 - ssl:基本的 TLS 1.3 伺服器支援,用於實驗性用途。
- 在 OTP 22 中,HiPE(原生程式碼編譯器)功能不完整。原因是 HiPE 原生程式碼編譯器不支援用於二進位匹配的新 BEAM 指令。如果使用
+native
選項調用erlc
,並且使用了任何新的二進位匹配指令,編譯器將發出警告並產生不包含原生程式碼的 BEAM 檔案。 - erts:新增了 NIF 函數
enif_term_type
,該函數透過傳回給定 term 的類型,有助於避免冗長的enif_is_xyz
序列。這對於序列化 term 的 NIF(例如 JSON 編碼器)特別有幫助,可以提高效能和可讀性。 - crypto:新的
hash_info/1
和cipher_info/1
函數會傳回包含引數中雜湊或密碼資訊的映射。
候選版本 1 中的重點 #
Erts: #
- 支援 Erlang 分散協定,將大型訊號的酬載分割成多個片段。
- ETS 選項 write_concurrency 現在也影響並提高了 ordered_set 表的可擴展性。
- length/1 BIF 過去用於一次計算清單的長度而不會產生讓步,即使清單非常長。現在,當使用長清單呼叫時,它會產生讓步。
- 引入了一個新的(仍然是實驗性的)模組
socket
。它實作為 NIF,其理念是盡可能「接近」作業系統層級的 socket 介面。
編譯器: #
- 編譯器已重寫為內部使用基於靜態單賦值 (SSA) 的中間表示。新的中間表示使更多的最佳化成為可能。* 二進位匹配最佳化現在比以前適用於更多情況。
- 類型最佳化現在應用於跨本地函數呼叫,並且會移除比以前更多的冗餘類型測試。
- 可以在原始程式碼檔案中提供的所有編譯器選項,現在都可以在 erlc 命令列的選項清單中提供。
標準函式庫: #
- Cover 現在使用 counters 模組而不是 ets 來更新計數器。新的函數 cover:local_only/0 允許在受限但更快的本機模式下執行 Cover。速度的提高將根據正在進行 cover 編譯的程式碼類型而有所不同,例如,使用新的 Cover 時,編譯器測試套件的執行速度會快兩倍以上。
- SSL 現在使用新的記錄器 API,包括記錄層級和詳細的偵錯記錄。
如需更多詳細資訊,請參閱 https://erlang.dev.org.tw/download/otp_src_22.0-rc2.readme
可以在此處取得 Windows 的預先建置版本:https://erlang.dev.org.tw/download/otp_win32_22.0-rc2.exe https://erlang.dev.org.tw/download/otp_win64_22.0-rc2.exe
可以在此處瀏覽線上文件:https://erlang.dev.org.tw/documentation/doc-11.0-rc2/doc
Erlang/OTP 原始碼也可以在官方 Erlang 儲存庫的 GitHub 上找到
感謝您的所有貢獻!