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: 增强了对地图的支持。大型地图现在在内部使用 HAMT(哈希数组映射树)表示,这使得它们更加高效。现在也支持变量作为地图键。
  • dialyzer: -dialyzer() 属性可用于通过指定函数或警告选项来抑制模块中的警告。它也可用于请求模块中的警告。
  • ssl: 由于 Poodle 漏洞,已删除对 SSL-3.0 的默认支持,并添加了对 TLS-1.0 的填充检查。
  • ssl: 已删除对 RC4 密码套件的默认支持,因为它们被认为过于弱。
  • stdlib: 允许将地图用于主管标志和子规格
  • stdlib: ets 中的新函数
    • take/2。工作原理与 ets:delete/2 相同,但还会返回已删除的对象。
    • ets:update_counter/4,带有一个默认对象作为参数
  • kernel,stdlib,sasl: 引入了一种机制来限制内置错误记录器事件产生的文本量。这对于限制日志文件的大小和生成日志文件所用的 CPU 时间很有用。(18.1)
    此机制是实验性的,因为它可能会根据反馈进行更改。请参阅内核应用程序中的配置参数 error_logger_format_depth。
  • ssl: 添加会话缓存的可配置上限。(18.2)