Erlang/OTP 18

这个版本的 Erlang/OTP 可以通过源代码构建,或者使用适用于您操作系统的预构建软件包或第三方工具(例如 kerlasdf)安装。

docker run -it erlang:18

亮点

  • 从 18.0 版本开始,Erlang/OTP 使用 APL 2.0(Apache 公共许可证)发布
  • erts: 扩展了时间功能。这包括一个新的时间 API,以及在系统时间更改时会改变行为的“时间扭曲”模式。强烈建议您使用新的 API,而不是基于 erlang:now/0 的旧 API。erlang:now/0 已被弃用,因为它是一个可扩展性瓶颈。有关更多信息,请参阅 ERTS 用户指南的时间和时间校正章节。这里有一个链接
  • erts: 除了 API 更改和时间扭曲模式之外,在时间管理方面还进行了许多可扩展性和性能改进。例如:
    • 调度器特定的定时器轮,
    • 调度器特定的 BIF 定时器管理,
    • 在支持的操作系统上并行检索单调时间和系统时间。
  • erts: 之前引入的“急切检查 I/O”功能现在默认启用。
  • erts/compiler:增强了对 map 的支持。大型 map 内部使用 HAMT(哈希数组映射树)表示,这使得它们更高效。现在还支持变量作为 map 键。
  • dialyzer:可以使用 -dialyzer() 属性通过指定函数或警告选项来抑制模块中的警告。它也可以用来请求模块中的警告。
  • ssl:由于 Poodle 漏洞,移除了对 SSL-3.0 的默认支持,并为 TLS-1.0 添加了填充检查。
  • ssl:移除了对 RC4 密码套件的默认支持,因为它们被认为太弱。
  • stdlib:允许将 map 用于 supervisor 标志和子进程规范
  • stdlib:ets 中的新函数
    • take/2. 其作用与 ets:delete/2 相同,但也返回删除的对象。
    • 带默认对象参数的 ets:update_counter/4
  • kernel,stdlib,sasl: 引入了一种机制,用于限制内置错误日志事件生成的文本量。它对于限制日志文件的大小和用于生成日志文件的 CPU 时间非常有用。(18.1)
    此机制是实验性的,可能会根据反馈进行更改。请参阅 Kernel 应用程序中的配置参数 error_logger_format_depth。
  • ssl:为会话缓存添加可配置的上限。(18.2)