Erlang/OTP 18.0 正式版发布了,这是一个全新的主要版本,包含全新特性、相当多的改进,以及修复了一些不兼容。
一个不是功能改变但也是这个版本最大变化之一:使用APL 2.0 (Apache Public License)许可证。
此版本的亮点: - 自18.0 Erlang/OTP发布后,开始支持APL 2.0(Apache Public License);
- erts: 扩展time功能,包括一个新的API,以及”time warp” 模式——当系统time变化时随之更改行为;强烈建议使用新的API替代基于
erlang:now/0 的老API。因为erlang:now/0 有扩展瓶颈,已经被弃用了。想要了解更多信息请参见:Time and Time Correction chapter of the ERTS User’s Guide Erlang - erts: 除了API变化,time warp模式做了很多扩展性和性能的改进,以及实现time管理。实例:
- scheduler specific timer wheels;
- scheduler specific BIF timer management;
- parallel retrieval of monotonic time and system time on OS:es that support it。
- erts: 之前推出的”eager check I/O”功能现在是默认启用的;
- erts/compiler: 增强maps支持,大的maps开始使用HAMT (Hash Array Mapped Trie)实现内部显示,从而让他们更加高效。现在也支持map keys变量。
- dialyzer:
-dialyzer() 属性可用于控制警告,面向有特殊功能的组件或警告选项中;它也可以用在组件中来实现请求警告。 - ssl: 移除SSL-3.0的默认支持,以及因为Poodle易损性新增TLS-1.0检测。
- ssl: 移除RC4加密套件的默认支持,因为他们认为这个太弱了。
- stdlib: 允许maps有 supervisor flags和child specs。
- stdlib: 在ets的新特性
- take/2。和
ets:delete/2 的实现类似,但需要回滚删除object(s) 。 ets:update_counter/4 有了默认的对象。
更多细节请参见发布日志:http://www.erlang.org/download/otp_src_18.0.readme
当你使用这个OTP版本进行代码编译时请注意: 由于如果erlang:now 被弃用,你正在使用”warnings as errors”可能会让你停止编译。 你可以通过设置环境变量来实现编译:
export ERL_COMPILER_OPTIONS=nowarn_deprecated_function
你也可以从github.com获得官方Erlang repository的源代码:
Git tag OTP-18.0
你还可以参阅文档:
Erlang/OTP 18
英文原文:Erlang/OTP 18.0 has been released |