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:已删除已弃用的模块和函数(
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,将外部事件映射到消息
编译器:#
- 改进了复杂 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
已添加到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-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/
感谢所有贡献者。