Erlang OTP 22.0-rc2 可供测试!

2019 年 3 月 27 日 · 作者:Henrik Nord

OTP 22 发布候选版本 2 #

这是在 OTP 22 发布之前的三个计划的发布候选版本中的第二个。

此发布的目的是获取用户的反馈。欢迎所有反馈,即使只是说它对您有效,因为这让我们知道发布候选版本得到了一些测试。

Erlang/OTP 22 是一个新的主要版本,具有新功能和改进,以及不兼容之处。

潜在的不兼容性 #

  • 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(本机代码编译器)功能不完全。其原因是 HiPE 本机代码编译器不支持用于二进制匹配的新 BEAM 指令。如果使用 +native 选项调用 erlc,并且使用了任何新的二进制匹配指令,则编译器将发出警告并生成没有本机代码的 BEAM 文件。
  • erts:添加了 NIF 函数 enif_term_type,通过返回给定术语的类型,帮助避免长序列的 enif_is_xyz。这对于序列化术语的 NIF(例如 JSON 编码器)特别有用,它可以提高性能和可读性。
  • crypto:新的 hash_info/1cipher_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 现在使用新的记录器 API,包括日志级别和详细的调试日志记录。

有关更多详细信息,请参阅 https://erlang.ac.cn/download/otp_src_22.0-rc2.readme

Windows 的预构建版本可以在这里获取:https://erlang.ac.cn/download/otp_win32_22.0-rc2.exe https://erlang.ac.cn/download/otp_win64_22.0-rc2.exe

可以在此处浏览在线文档:https://erlang.ac.cn/documentation/doc-11.0-rc2/doc

Erlang/OTP 源代码也可以在 GitHub 上的官方 Erlang 存储库中找到

https://github.com/erlang/otp

OTP-22.0-rc2

感谢您的所有贡献!