Erlang OTP 22.0-rc3 可供测试!
2019年4月24日 · 作者:Henrik Nord
这是 OTP 22.0 的第三个候选版本 #
Erlang/OTP 22 是一个新的主要版本,具有新特性和改进,以及不兼容之处。
此版本没有主要亮点,因为主要重点是错误修复和润色。
请查阅readme文件,了解该版本的详细变更日志。
此版本的目的是获取我们用户的反馈。欢迎所有反馈,即使只是说它对您有效,因为它可以让我们知道该候选版本经过了一些测试。
候选版本 2 中的亮点 #
潜在的不兼容性 #
- gen_* 行为:如果通过
sys:log/2,3
激活了服务器最近 N 条消息的日志记录,则此日志将包含在终止报告中。 - reltool:现在可以在 reltool 版本特定配置格式的 rel 元组中包含一个新元素 Opts:
{rel, Name, Vsn, RelApps, Opts}
。 - 由
erlang:list_to_pid
和类似函数创建的所有外部 pid/端口/引用现在与来自该节点的任何其他具有相同编号的 pid/端口/引用进行比较时都相等。 - 旧的传统
erl_interface
库从 OTP 22 开始已弃用,并将在 OTP 23 中删除。这不适用于ei
库。 - VxWorks 从 OTP 22 开始已弃用,并将在 OTP 23 中删除。
候选版本 2 中的其他亮点 #
- 通过
socket
模块提供了一个简单的套接字 API。这是一个低级 API,它不替换gen_[tcp|udp|sctp]
。它的目的是最终取代 inet 驱动程序。它还提供了一个基本 API,有助于实现 TCP、UDP 和 SCTP 以外的其他协议。已知的问题是:不支持 Windows 操作系统(目前),存在少量术语泄漏。此功能在 OTP 22 中将被归类为实验性功能。 - ssl:基本支持 TLS 1.3 服务器以供实验使用。
- 在 OTP 22 中,HiPE(本机代码编译器)不是完全功能性的。原因是用于二进制匹配的新 BEAM 指令,HiPE 本机代码编译器不支持这些指令。如果使用
+native
选项调用erlc
,并且如果使用了任何新的二进制匹配指令,编译器将发出警告并生成一个没有本机代码的 BEAM 文件。 - erts:添加了 NIF 函数
enif_term_type
,该函数通过返回给定术语的类型,有助于避免冗长的enif_is_xyz
序列。这对于序列化术语的 NIF(例如 JSON 编码器)特别有用,它可以提高性能和可读性。 - crypto:新的
hash_info/1
和cipher_info/1
函数返回带有参数中哈希或密码信息的映射。
候选版本 1 中的亮点 #
Erts: #
- 支持 Erlang 分发协议,将大型信号的有效负载拆分为多个片段。
- ETS 选项 write_concurrency 现在也影响并提高了 ordered_set 表的可扩展性。
- 用于计算列表长度的 length/1 BIF 过去会一次性计算列表的长度,而不会产生任何影响,即使列表很长也是如此。现在,当使用长列表调用时,它会产生影响。
- 引入了一个新的(仍处于实验阶段的)模块
socket
。它被实现为一个 NIF,并且想法是它应该“尽可能接近”操作系统级别的套接字接口。
编译器: #
- 编译器已重写为在内部使用基于静态单赋值 (SSA) 的中间表示。新的中间表示使得更多的优化成为可能。 * 二进制匹配优化现在比以前在更多情况下适用。
- 类型优化现在跨本地函数调用应用,并将删除比以前更多的冗余类型测试。
- 可以在源文件中给出的所有编译器选项现在都可以在 erlc 的命令行上的选项列表中给出。
标准库: #
- Cover 现在使用 counters 模块而不是 ets 来更新计数器。新函数 cover:local_only/0 允许在受限制但更快的本地模式下运行 Cover。速度的提高将取决于被覆盖编译的代码类型,例如,使用新的 Cover,编译器测试套件的运行速度快了两倍以上。
- SSL 现在使用新的 logger API,包括日志级别和详细的调试日志。
有关更多详细信息,请参阅 https://erlang.ac.cn/download/otp_src_22.0-rc3.readme
可以在此处获取 Windows 的预构建版本: https://erlang.ac.cn/download/otp_win32_22.0-rc3.exe https://erlang.ac.cn/download/otp_win64_22.0-rc3.exe
可以在此处浏览在线文档: https://erlang.ac.cn/documentation/doc-11.0-rc3/doc
Erlang/OTP 源代码也可以在 GitHub 上的官方 Erlang 存储库中找到
感谢您的所有贡献!