Erlang/OTP 27.0 候選版本 1

2024 年 2 月 14 日 · 作者:Björn Gustavsson

OTP 27.0-rc1 #

Erlang/OTP 27.0-rc1 是 OTP 27.0 發布前的三個候選版本中的第一個。

此版本的目的是獲得我們用戶的回饋。 歡迎所有回饋,即使只是說它對您有效也行。 我們鼓勵用戶嘗試並通過在 https://github.com/erlang/otp/issues 創建問題或在 Erlang 論壇發帖來給予我們回饋。

此版本的所有構件都可以從 Erlang/OTP Github 版本下載,您可以在 https://erlang.dev.org.tw/documentation/doc-15.0-rc1/doc 查看新文件。您也可以使用 kerl 安裝最新版本,如下所示

kerl build 27.0-rc1 27.0-rc1.

Erlang/OTP 27 是一個新的主要版本,具有新功能、改進以及一些不相容之處。 下面重點介紹一些新功能。

非常感謝所有貢獻者!

重點 #

文件 #

已實作 EEP-59。 原始程式碼檔案中的文件屬性現在可以用於記錄函式、類型、回呼和模組。

整個 Erlang/OTP 文件現在都使用新的文件系統。

新語言功能 #

  • 已按照 EEP 64 實作三引號字串,以允許字串包含完整段落。

  • 現在,沒有介入空白字元的相鄰字串字面值是語法錯誤,以避免可能與三引號字串混淆。

  • 已按照 EEP 66 實作字串字面值(普通和三引號)上的符號。 例如,~"Björn"~b"Björn" 現在等同於 <<"Björn"/utf8>>

編譯器和 JIT 改進 #

  • 編譯器現在會合併相同記錄的連續更新。

  • 已在編譯器和執行時系統中實作元組的安全破壞性更新。 這允許虛擬機在安全的情況下就地更新元組,從而通過減少複製和產生更少的垃圾來提高效能。

  • maybe 運算式現在預設啟用,無需啟用 maybe_expr 功能。

  • JIT 中已實作原生涵蓋範圍支援。 它將自動被 cover 工具使用,以減少執行涵蓋編譯程式碼時的執行開銷。 還有新的 API 可在不使用 cover 工具的情況下支援原生涵蓋範圍。

  • 編譯器現在會發出更新記錄/地圖字面值的警告,以捕捉常見的錯誤。 例如,編譯器現在會針對 #r{a=1}#r{b=2} 發出警告。

ERTS #

  • erl 命令現在支援 -S 標誌,它與 -run 標誌類似,但具有一些修整過的粗糙邊緣。

  • 預設情況下,escripts 現在將被編譯而不是解釋。 這表示必須安裝 compiler 應用程式。

  • 預設的程序限制已提高到 1048576 個程序。

  • erlang:system_monitor/2 功能現在能夠監視系統中的長訊息佇列。

  • 已移除通過將原子(或字串)作為第一個參數傳遞給 open_port() 來打開與外部資源的連接埠的已過時且未記載的支援,該支援由原始驅動程式實作。 自 OTP 26 版本以來,此功能已排定在 OTP 27 中移除。

  • 已從 erlang:fun_info/1,2 中移除 pid 欄位。

  • 現在支援多個追蹤工作階段。

STDLIB #

  • 已將幾個接受 fun 的新函式新增至模組 timer

  • 已將函式 is_equal/2map/2filtermap/2 新增至模組 setsordsetsgb_sets

  • 有新的有效率的 ets 遍歷函式,並保證原子性。 例如,現在可以使用 ets:next_lookup/1 替換 ets:next/2 後接 ets:lookup/2

  • 新函式 ets:update_element/4 類似於 ets:update_element/3,但採用預設元組作為第四個參數,如果不存在具有該鍵的先前記錄,則將插入該元組。

  • binary:replace/3,4 現在支援使用 fun 來提供取代二進位。

  • 可以使用新函式 proc_lib:set_label/1 將描述性詞彙新增至任何沒有已註冊名稱的程序。 該名稱將由諸如 c:i/0observer 之類的工具顯示,並且將包含在使用 gen_servergen_statemgen_eventgen_fsm 的程序產生的當機報告中。

  • 新增從 gb_treesgb_sets 檢索下一個較高或較低鍵/元素的函式,以及返回從給定鍵/元素開始的迭代器。

common_test #

  • ct:capture_start/0ct:capture_stop/0 的呼叫現在是同步的,以確保擷取所有輸出。

  • 如果瀏覽器首選,預設 CSS 現在將包含基本的暗模式處理。

crypto #

  • 已移除在 Erlang/OTP 25 中標記為已棄用的函式 crypto_dyn_iv_init/3crypto_dyn_iv_update/3

dialyzer #

  • 已移除 Dialyzer 的 --gui 選項。

ssl #

  • ssl 用戶端可以協商和處理憑證狀態請求(用戶端上的 OCSP Stapling 支援)。

tools #

  • 有一個新工具 tprof,它在一個介面下結合了 eprofcprof 的功能。 它還新增了堆積分析。

xmerl #

  • 作為 xmerl_xml 的替代方案,新增了一個新的匯出模組 xmerl_xml_indent,該模組提供開箱即用的縮排輸出。

有關新功能和潛在不相容性的更多詳細資訊,請參閱 README