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/3
和decode/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
添加到dict
、orddict
和gb_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/
感谢所有贡献者。