Erlang/OTP 20.0-rc2 可供測試

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

OTP 20 第二個候選版本 #

這是 OTP 20 版本發布前的第二個候選版本。 此版本的目的是讓使用者嘗試並給予我們回饋,如果有些東西不如預期。可能是個錯誤、意外的不相容、負面方向的重大特性變更等等。

與第一個候選版本相比,只有一些小的變更,其中一些列於下方

  • erts: ./configure --enable-lock-counter 將會啟用建置一個額外的模擬器,該模擬器支援鎖定計數。(此選項先前就存在,但會開啟預設建置的模擬器中的鎖定計數。) 要啟動鎖定計數模擬器,請使用 erl -emu_type lcnt
  • kernel: 在 code_server 程序中新增了程序標誌 message_queue_data = off_heap,以改善程式碼升級期間的特性,因為程式碼升級可能會產生大量訊息。

以下是 OTP 20 中一些最重要的消息 (與 RC1 相同)

潛在的不相容性 #

  • ERTS
  • 非 SMP Erlang VM 已被棄用,預設情況下不會建置
  • 移除已棄用的 erlang:hash/2
  • 使用 scheduler_wall_time 的 erlang:statistics/1 現在也包含關於髒 CPU 排程器的資訊。
  • OTP 19.1 中引入的新清除策略是強制性的,並且對於持有 fun 的程序來說稍微不相容,請參閱 erlang:check_process_code/3
  • 不再支援 NIF 函式庫重新載入。
  • Asn1: 已移除棄用的模組和函式 (asn1rtasn1ct:encode/3decode/3)
  • Ssh:呼叫啟動守護程序的用戶端專用選項現在將會失敗

重點 #

Erts: #

  • 在支援 SMP 的 VM 上啟用並支援髒排程器。
  • 支援 “髒” BIF 和 “髒” GC。
  • 用於控制次要或主要 GC 的 erlang:garbage_collect/2
  • 傳送訊息時不再複製 Erlang 常值。
  • 改進了大型 ETS 表的效能,> 256 個條目 (除了 ordered_set)
  • erlang:system_info/1 atom_count 和 atom_limit
  • 在 GC 期間將子二進制轉換為堆二進制,以減少記憶體壓力
  • enif_select,將外部事件對應到訊息

Compiler: #

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

其他應用程式 #

  • 最佳化了未命名的 ets 表
  • 一個新的事件管理員,用於處理 Erlang 中的 OS 訊號子集
  • 最佳化了集合 add_element、del_element 和 union
  • 新增了 rand:jump/0-1
  • gen_server 崩潰時,將會列印用戶端的堆疊追蹤,以方便除錯。
  • 已將 take/2 新增到 dictorddictgb_trees
  • 已將 take_any/2 新增到 gb_trees
  • 大幅更新了具有 unicode 支援的 string 模組
  • erl_tar 支援長路徑名稱和新的檔案格式
  • Dtls: 已記錄的 API,實驗性
  • SSH:改善安全性,移除和新增演算法
  • 新的 math:fmod/2

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

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

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

感謝所有貢獻者。