Erlang/OTP 20.0-rc1 開放測試

2017年5月5日 · 作者:Kenneth Lundin

OTP 20 發布候選版本 1 #

這是 2017 年 6 月 OTP 20 正式發布前的兩個候選版本中的第一個。

此版本的目的是讓使用者試用,並在發現任何不如預期的情況時給予我們回饋。這可能是一個錯誤、一個意料之外的不相容性、或是一個負面方向的重大特性變更等等。

Erlang/OTP 20.0 是一個新的主要版本,包含新功能、相當多的(特性)改進,以及一些不相容之處。

以下是一些最重要的消息

潛在的不相容性 #

  • ERTS
  • 非 SMP Erlang VM 已被棄用,預設不再建置。
  • 移除已棄用的 erlang:hash/2
  • erlang:statistics/1 搭配 scheduler_wall_time 現在也包含關於 dirty CPU scheduler 的資訊。
  • 在 OTP 19.1 中引入的新的清除策略是強制性的,對於持有 fun 的程序來說略有不相容,請參閱 erlang:check_process_code/3
  • 不再支援 NIF 函式庫重新載入。
  • Asn1:已移除棄用的模組和函式(asn1rtasn1ct:encode/3decode/3
  • Ssh:在呼叫啟動守護進程時,僅限 client 的選項現在會失敗。

重點 #

Erts: #

  • 在支援 SMP 的 VM 上啟用和支援 Dirty schedulers。
  • 支援 "dirty" BIF 和 "dirty" GC。
  • 用於控制 minor 或 major GC 的 erlang:garbage_collect/2
  • 傳送訊息時不再複製 Erlang 字面值。
  • 改善大型 ETS 表格的效能,>256 個條目(ordered_set 除外)
  • erlang:system_info/1 atom_count 和 atom_limit
  • 透過在 GC 期間將子二進制檔轉換為堆二進制檔來減少記憶體壓力
  • enif_select,將外部事件對應到訊息

編譯器: #

  • 改進了複雜 guards 的程式碼產生。
  • 重複的相同映射鍵的警告。 #{'a'=>1, 'b'=>2, 'a'=>3} 將會警告重複的鍵 a
  • 預設情況下,當使用 export_all 時會發出警告。可以停用
  • 優化了映射的模式匹配。
  • 新的選項 deterministic 用於省略 BEAM 檔案中的來源路徑 + 選項資訊。
  • 原子現在可以包含任意的 Unicode 字元。
  • compile:file/2 有一個選項可以在 BEAM 檔案中包含額外的區塊。

其他雜項應用程式 #

  • 優化了未命名的 ets 表格。
  • 一個新的事件管理器,用於處理 Erlang 中的一部分 OS 信號。
  • 優化了集合的 add_elementdel_elementunion
  • 新增了 rand:jump/0-1
  • gen_server 崩潰時,將會列印客戶端的堆疊追蹤,以方便除錯。
  • 已將 take/2 新增至 dictorddictgb_trees
  • 已將 take_any/2 新增至 gb_trees
  • 大幅更新了具有 Unicode 支援的字串模組。
  • erl_tar 支援長路徑名稱和新的檔案格式。
  • Dtls:文件化的 API,實驗性質。
  • SSH:改善安全性,移除和新增演算法。
  • 新的 math:fmod/2

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

適用於 Windows 的預先建置版本可以在這裡取得: https://erlang.dev.org.tw/download/otp_win32_20.0-rc1.exe https://erlang.dev.org.tw/download/otp_win64_20.0-rc1.exe

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

感謝所有貢獻者。