Erlang/OTP 20.0-rc1 可供测试

2017年5月5日 · 作者:Kenneth Lundin

OTP 20 候选版本 1 #

这是 2017 年 6 月 OTP 20 发布之前的两个候选版本中的第一个。

此版本的目的是让您作为用户试用它,并给我们反馈,如果某些内容没有按预期工作。可能是错误、意外的不兼容性、负面方向上的特性重大变化等。

Erlang/OTP 20.0 是一个新的主要版本,具有新功能、相当多的(特性)改进以及一些不兼容之处。 

以下是一些最重要的更新

潜在的不兼容性 #

  • ERTS
  • 非 SMP Erlang VM 已被弃用,并且默认情况下不构建
  • 删除已弃用的 erlang:hash/2
  • 使用 scheduler_wall_time 的 erlang:statistics/1 现在还包括有关脏 CPU 调度程序的信息。
  • 在 OTP 19.1 中引入的新清除策略是强制性的,并且对于持有 fun 的进程略微不兼容,请参阅 erlang:check_process_code/3
  • 不再支持 NIF 库重新加载。
  • Asn1:已删除已弃用的模块和函数(asn1rtasn1ct:encode/3decode/3
  • Ssh:在调用启动守护程序时,仅客户端选项现在将失败

亮点 #

Erts: #

  • 在具有 SMP 支持的 VM 上启用并支持脏调度程序。
  • 支持“脏”BIF 和“脏”GC。
  • 用于控制次要或主要 GC 的 erlang:garbage_collect/2
  • 发送消息时不再复制 Erlang 字面量。
  • 改进了大型 ETS 表的性能,> 256 个条目(ordered_set 除外)
  • erlang:system_info/1 atom_count 和 atom_limit
  • 通过在 GC 期间将子二进制转换为堆二进制来减少内存压力
  • enif_select,将外部事件映射到消息

编译器:#

  • 改进了复杂 guard 的代码生成。
  • 重复相同 map 键的警告。 #{'a'=>1, 'b'=>2, 'a'=>3} 将警告重复的键 a
  • 默认情况下,现在使用 export_all 时会发出警告。可以禁用
  • 优化了 map 的模式匹配
  • 新的选项 deterministic,用于省略 BEAM 文件中源路径 + 选项信息。
  • 原子现在可以包含任意 Unicode 字符。
  • compile:file/2 有一个选项可以在 BEAM 文件中包含额外的块。

其他杂项应用程序 #

  • 优化了未命名的 ets 表
  • 一个新的事件管理器,用于处理 Erlang 中的 OS 信号子集
  • 优化了集合 add_element、del_element 和 union
  • 添加了 rand:jump/0-1
  • gen_server 崩溃时,将打印客户端的堆栈跟踪,以方便调试。
  • take/2 已添加到 dictorddictgb_trees
  • take_any/2 已添加到 gb_trees
  • 使用 Unicode 支持显著更新的字符串模块
  • erl_tar 支持长路径名和新的文件格式
  • Dtls:记录的 API,实验性
  • SSH:提高安全性,删除和添加算法
  • 新的 math:fmod/2

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

可以在此处获取 Windows 的预构建版本:https://erlang.ac.cn/download/otp_win32_20.0-rc1.exe https://erlang.ac.cn/download/otp_win64_20.0-rc1.exe

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

感谢所有贡献者。