Erlang 18RC1 发布

jopen 10年前

原文  http://blog.yufeng.info/archives/3193

三月底,官网宣布Erlang 18RC1公测,参看 这里 ,按照惯例Erlang每年会出一个大版本,从R11开始到现在R18,7年时间我从Erlang的发展历程中见证了一个大型系统的演变过程。

Erlang/OTP 18.0-rc1 is available for testing.This is an alpha release, which will be followed by a planned beta release in May and a final OTP 18.0 product release in June 2015.

18.0正式版本6月份会放出, 这个版本很值得期待的内容有以下几点, 参看 News From the OTP TEAM Berlin Erlang Factory Lite 2014

重点需要解决的:

Erlang 18RC1 发布

当期亮点:

Erlang 18RC1 发布

长期的:

Erlang 18RC1 发布

对于这次预发布最大的亮点如下:

Some highlights of the release are:

dialyzer: The -dialyzer() attribute can be used for suppressing warnings in a module by specifying functions or warning options. It can also be used for requesting warnings in a module.erts: The time functionality has been extended. This includes a new API for time, as well as “time warp” modes which alters the behavior when system time changes. You are strongly encouraged to use the new API instead of the old API based on erlang:now/0. erlang:now/0 has been deprecated since it will always be a scalability bottleneck. For more information see the Time and Time Correction chapter of the ERTS User’s Guide. Here is a link http://www.erlang.org/documentation/doc-7.0-rc1/erts-7.0/doc/html/time_correction.html

erts: Beside the API changes and time warp modes a lot of scalability and performance improvements regarding time management has been made. Examples are:

scheduler specific timer wheels,

scheduler specific BIF timer management,

parallel retrieval of monotonic time and system time on OS:es that support it.

erts: The previously introduced “eager check I/O” feature is now enabled by default.

erts/compiler: enhanced support for maps. Big maps new uses a HAMT (Hash Array Mapped Trie) representation internally which makes them more efficient. There is now also support for variables as map keys.

ssl: Remove default support for SSL-3.0 and added padding check for TLS-1.0 due to the Poodle vulnerability.

ssl: Remove default support for RC4 cipher suites, as they are consider too weak.

stdlib: Allow maps for supervisor flags and child specs

其中对定时器的API语义和使用方式做了重新定义,伸缩能力优化做了大量的工作,拆成基于每个调度器的,对于定时器密集型的业务会有很大的性能提升。

具体的参考:Erlang VM Developer Lukas Larsson 做的 演讲

这次解决了定时器的瓶颈,个人最期待的是Multiple poll sets, 这个解决了,性能就完美了!