Erlang/OTP 27.0 候選版本 1
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/2
、map/2
和filtermap/2
新增至模組sets
、ordsets
和gb_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/0
和observer
之類的工具顯示,並且將包含在使用gen_server
、gen_statem
、gen_event
和gen_fsm
的程序產生的當機報告中。 -
新增從
gb_trees
和gb_sets
檢索下一個較高或較低鍵/元素的函式,以及返回從給定鍵/元素開始的迭代器。
common_test #
-
對
ct:capture_start/0
和ct:capture_stop/0
的呼叫現在是同步的,以確保擷取所有輸出。 -
如果瀏覽器首選,預設 CSS 現在將包含基本的暗模式處理。
crypto #
- 已移除在 Erlang/OTP 25 中標記為已棄用的函式
crypto_dyn_iv_init/3
和crypto_dyn_iv_update/3
。
dialyzer #
- 已移除 Dialyzer 的
--gui
選項。
ssl #
ssl
用戶端可以協商和處理憑證狀態請求(用戶端上的 OCSP Stapling 支援)。
tools #
- 有一個新工具
tprof
,它在一個介面下結合了eprof
和cprof
的功能。 它還新增了堆積分析。
xmerl #
- 作為
xmerl_xml
的替代方案,新增了一個新的匯出模組xmerl_xml_indent
,該模組提供開箱即用的縮排輸出。
有關新功能和潛在不相容性的更多詳細資訊,請參閱 README。