This document lists some highlights of Erlang 5.8/OTP R14A (unpatched), compared to the previous version Erlang 5.7.1/OTP R13B, with focus on things not already released as R13B patches.
Note: This document was compiled at the time when R14A was released and does not list any features introduced in R14 patches.
New NIF features
Send messages from a NIF, or from thread created by NIF, to any local process (enif_send)
Store terms between NIF calls (enif_alloc_env, enif_make_copy)
Create binary terms with user defined memory management (enif_make_resource_binary)
Some incompatible changes made to the API. For more information see the warning text in erl_nif(3).
Receive statements that can only read out a newly created reference are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. That optimization will benefit calls to gen_server:call(). (See gen:do_call/4 for an example of a receive statement that will be optimized.)
eprof has been reimplemented with support in the Erlang virtual machine and is now both faster (i.e. slows down the code being measured less) and scales much better. In measurements we saw speed-ups compared to the old eprof ranging from 6 times (for sequential code that only uses one scheduler/core) up to 84 times (for parallel code that uses 8 cores).
Note: The API for the eprof has been cleaned up and extended. See the documentation.
It is now possible for the user to provide specific callback modules that handle test configuration data, so that data on arbitray form can be accessed (e.g. by reading files or by communicating with a configuration server process). Two default callback modules have been introduced in Common Test: ct_config_plain and ct_config_xml. The former is used to handle the traditional Common Test configuration files (with terms on key-value tuple form) and the latter to handle configuration data on XML representation.
The run_test script has been replaced by a program (with the same name) which can be executed without explicit installation. The start flags are the same as for the legacy start script.
The module binary from EEP31 (and EEP9) is implemented.