Erlang/OTP R16B Brings Improved Parallelism

by Jeff Martin on Mar 07, 2013 |

Erlang is a general purpose functional programming language with an emphasis on supporting concurrency and real-time distributed systems. Last week saw the release of Erlang R16B, bringing several improvements that bring increased parallelization to various areas of the language's virtual machine.

Erlang is used in several different projects, including distributed databases, communication systems, web servers, and high-frequency trading platforms on Wall Street. Prominent projects or companies using Erlang include GitHub, high-frequency trading, and multiplayer gaming servers (i.e.: Call of Duty).

This new release of Erlang has an extensive list of changes in its release notes, and there are several items to highlight among the improvements. The first is that Erlang virtual machine has improved its internal handling of processes. This allows for parallel reads and writes, which benefits performance by reducing contention during the spawning and terminating of processes.

Port handling has been greatly improved to allow for parallel reads and writes in this area. This is combined with Erlang's new ability to dynamically allocate ports and the raise of the default port limit to 65,536 from 1023. Programmer's should note that one result of the new system is that signals are now truly asynchronously delivered. Previously signals may have had a specific delivery order, but that order can no longer be assumed or relied on. As a result, "...this may cause Erlang programs that have made false assumptions about signal delivery order to fail even though they previously succeeded."

The Erlang Run-Time System (ERTS) has been improved to support loading code in a non-blocking manner. Previously a single thread model was used to load Erlang modules, which halted the VM during the loading process. In this release Erlang supports non-blocking operations so that the code can be loaded without stopping code execution. This should improve the performance of the VM when running on an SMP system during the loading of new modules.

The new release supports Windows with precompiled binaries for both 32 and 64 bit platforms. Other platforms are supported via their appropriate package managers. The source code can be browsed on GitHub. (R16B Source archives are also ready for download.)

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

General Feedback
Marketing and all content copyright © 2006-2016 C4Media Inc. hosted at Contegix, the best ISP we've ever worked with.
Privacy policy

We notice you're using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.