Erlang/OTP R16B 带来改进的并行

  • Jeff Martin
  • 臧秀涛

2013 年 3 月 8 日

话题:Erlang语言 & 开发

Erlang 是一门通用的函数式编程语言,强调对并发和实时分布式系统的支持。 上周发布的 Erlang R16B 带来了一些改进,这些改进增强了语言虚拟机在很多方面的并行能力。

Erlang 在很多不同项目中都有应用,包括分布式数据库、通信系统、Web 服务器和华尔街的高频交易平台等。使用 Erlang 的知名项目或公司有GitHub、高频交易和多人游戏服务器(即使命召唤)。

该版本在其发布说明中列出了大量修改,有些改进是应该重点强调的。第一, Erlang 虚拟机改进了进程的内部处理,支持并行读写,通过减少进程创建和终止期间的竞争提高了性能。

端口处理也有极大改进,支持并行读写。这结合了 Erlang 动态分配端口的新功能以及默认端口限制从 1024 到 65 536 的提升。程序员应该注意一下,信号现在是真正异步交付的,这是新系统的成果之一。以前,信号可能会有一个特定的交付顺序,但现在不能再假设或依赖其顺序了。因此,“……这带来的问题是,如果 Erlang 程序错误地假设了信号交付顺序,即便之前是成功的,现在也可能会失败”。

Erlang 运行时系统(ERTS)也有所改进,以支持以非阻塞方式加载代码。之前是采用的单线程模型来加载 Erlang 模块,在加载过程中会挂起虚拟机。新版本的 Erlang 支持非阻塞操作,所以可以在不停止执行的情况下加载代码。这将改进虚拟机运行在 SMP 系统上时加载新模块的性能。

新版本提供了支持 Windows 的 32 位和 64 位预编译二进制文件。对其他平台也通过相应的包管理器提供了支持。源代码可以在 GitHub 上浏览。(R16B 源代码归档文件也可下载。)

查看英文原文:Erlang/OTP R16B Brings Improved Parallelism

Erlang语言 & 开发