Erlang OTP 21.0 已發布

2018年6月20日 · 作者:Henrik Nord

OTP 21 #

Erlang/OTP 21 是一個新的主要版本,具有新功能、改進以及不相容之處。

潛在的不相容性 #

  • 所有的 Corba 應用程式現在都從 OTP 儲存庫中移除
  • 將會建立一個新的 Corba 儲存庫 https://github.com/erlang
  • 新的應用程式 ftp 和 tftp,從 inets 中移出
  • ssl 預設不再支援 3_DES 加密套件或 RSA 金鑰交換加密套件
  • 在原始節點(erl_interface、jinterface 等)上的 erlang:monitor 不再會因 badarg 例外而失敗。相反地,將會建立一個監視器,但它只會監管與節點的連線。

重點 #

 Erts: #

  • 增強的 IO 可擴展性
  • 支援使用分配控制器程序進行替代傳輸、路由等
  • 在 64 位系統上針對 4GB 以下的程式碼使用精簡指令,載入的程式碼記憶體減少 20%
  • 使用 NIF 和「Dirty schedulers」重寫 efile-driver,從而加快檔案操作速度
  • 已移除 non-smp VM
  • 針對可擴展性優化連結和監控
  • os:getenv/putenv 現在在執行緒安全模擬上運作。不再與 libc getenv(3) 同步。需要手動同步。

編譯器:#

  • 其他編譯器優化,包括來自 Elixir 團隊的貢獻,使基準測試提高了 10%
  • 「Tuple calls」已從執行時期系統中移除。
  • 諸如 f({ok, Val}) -> {ok, Val} 之類的程式碼現在會自動重寫為 f({ok, Val} = Tuple) -> Tuple. 這減少了程式碼大小、執行時間,並降低了 GC 的壓力。
  • 來自許多運算子的堆疊追蹤中提供更多資訊
  • erlang:get_stacktrace/0 已棄用,將被 try ... catch C:R:Stacktrace -> ... 取代
  • 使用文字鍵建立小型映射已最佳化。
  • 一個新的預定義巨集 OTP_RELEASE 和預處理器指令 -if-elif

安全性:#

  • SSL 應用程式現在支援 DTLS
  • 增強了透過 TLS 進行分配的支援
  • 從 SSL 和 SSH 的預設值中移除了「不安全」的密碼。
  • 定義了一個新的選項值,以方便實作 exec 伺服器。為了相容性保留了舊的選項,但現在會在 stderror 上產生錯誤。

標準程式庫:#

  • 新的日誌記錄 API,logger
  • 新的 uri_string 模組,用於根據「標準」解析 URI
  • 新函數 lists:search(list,fun/1) -> {ok, Value} false
  • 變更了 .erlang 載入的預設行為。escript、erlc、dialyzer 和 typer 不再載入 .erlang。

更多詳細資訊請參閱 https://erlang.dev.org.tw/download/otp_src_21.0.readme

適用於 Windows 的預建版本可以在這裡取得:https://erlang.dev.org.tw/download/otp_win32_21.0.exe https://erlang.dev.org.tw/download/otp_win64_21.0.exe

可以在這裡瀏覽線上文件:https://erlang.dev.org.tw/documentation/doc-10.0/doc

Erlang/OTP 原始碼也可以在 GitHub 上的官方 Erlang 儲存庫中找到,這裡:OTP-21.0

感謝您的所有貢獻!