Erlang/OTP 20.0-rc2 可供测试

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

OTP 20 Release Candidate 2 #

这是 OTP 20 发布之前的第二个也是最后一个候选版本。此版本的目的是让你们用户试用,并向我们反馈是否有任何未按预期工作的情况。可能是错误、意外的不兼容、负面方向上的重大特性变更等。

与第一个候选版本相比,只有一些小的更改,其中一些列在下面

  • erts: ./configure --enable-lock-counter 将启用构建一个额外的仿真器,该仿真器支持锁计数。(该选项之前就存在,但会在正在构建的默认仿真器中启用锁计数。)要启动锁计数仿真器,请使用 erl -emu_type lcnt
  • kernel: 为了改进代码升级期间的特性(这可能会产生大量消息),向 code_server 进程添加了进程标志 message_queue_data = off_heap

以下是 OTP 20 中一些最重要的更新(与 RC1 中相同)

潜在的不兼容性 #

  • 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:已删除已弃用的模块和函数 (asn1rt, asn1ct: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,将外部事件映射到消息

编译器: #

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

其他杂项应用程序 #

  • 优化了未命名的 ets 表
  • 一个新的事件管理器,用于处理 Erlang 中的一部分操作系统信号
  • 优化了集合 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-rc2.readme

Windows 的每个构建版本可以在这里获取:https://erlang.ac.cn/download/otp_win32_20.0-rc2.exe https://erlang.ac.cn/download/otp_win64_20.0-rc2.exe

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

感谢所有贡献者。