Erlang 5.4/OTP R10B
This document describes the major new features of and changes
to Erlang 5.4/OTP R10B, compared to Erlang 5.3/OTP R9C with focus on the major
completely new things which has not already been delivered as patches to R9C. Some of
the new features and changes have
already been delivered as patches to R9C and/or R9B. For Open Source users this
document can also serve as a good approximation to the differences compared to
R9C-2 (corresponding to OTP patchlevel 663).
For more detailed information,
please refer to the release notes for the individual applications.
- A new tutorial "Getting Started With Erlang".
This is a "kick start" tutorial to get you started with Erlang.
Everything in it is true, but only part of the truth. For example, It
will only tell you the simplest form of the syntax, not all esoteric
forms. Together with the Erlang Reference Manual it should be a very
good start for learning Erlang.
ERTS, Erlang emulator
- Process and port
identifiers have been made more unique. Now we use 28 bits for the internal
representation compared to 18 before. This also increases the maximum number
of Erlang processes (the new maximum is 268435456 previously it was 262144).
The new representation of a Pid (process identifier) has impact on
the Erlang distribution protocol. The use of new or old Pid representation
can be controlled with a flag when the Erlang node is started.
- Significantly improved
performance regarding handling of links and monitors in the emulator. This
will have positive impact on performance for a system with many dynamical
processes who are using links. Measurement in a real system is necessary in
order to know exactly how much this improves performance.
- Support for the new
language construct try…catch.
Standard libraries (kernel,
- Query List
Comprehensions QLC which is a very convienient way to perform queries on ets
and mnesia tables. QLC is intended to replace mnemosyne in forthcoming
releases. The use of mnemosyne is already strongly discouraged especially in
time critical applications since it is very resource consuming and cpu
demanding. This is the first version and there will be more optimizations
added in forthcoming releases. There is also additional functionality in
mnesia to support QLC. Note that mnemosyne is still included and works
exactly as before.
- Support for records in
the Erlang Shell. There are commands for reading record definitions from
files and for manipulating record definitions. The record syntax can be used
in the shell and return values are printed as records when possible using
the record definitions known to the shell.
function insert_new/2 in ets and dets. Will only succed if this is the first
insert for a key.
Compiler, Erlang compiler
- The semantics for
boolean operators in guards have been changed to be more consistent.
compiler now warns for more types of suspect code, e.g as expressions that
will fail in runtime (such as atom-42), guards that are always false and
patterns that cannot match.
compilation speed with ERLC (starts as little of the Erlang system as
possible, for example avoiding ‘start_sasl’).
new language construct try…catch is supported.
- New application xmerl
which is a validating XML-parser with many useful features for handling
and transforming XML-data in Erlang. This application was originally created
by Ulf Wiger and has been developed at Sourceforge.net for several years..
It has now been included in the Erlang/OTP distribution and is supported by
the OTP team.
applications edoc and syntax_tools which can be used to
produce documentation of Erlang modules by means of special comments in the
Erlang source code. These applications are originally created by Richard
Carlsson at Uppsala University and are now included in the Erlang/OTP
distribution. The reason for this is to offer one "standardized"
way to document Erlang, where the necessary tools are always available.
and J_interface: Support
for new format of Pid and a compatibility mode so that old format can be
- Mnesia: support
for QLC (the mnesia:table function) otherwise the same as in R9C.
can now handle really large crashdumps without getting problems with that
the Internet browser times out.
now with “Exclude Included Functions” (Important for Basic Test in GSN)
+ proper handling of try…catch.
- Snmp is
restructured internally, now there is a supported SNMP manager and it can
also be run together with the SNMP agent within the same Erlang node. There
are some potential incompatibilities because of this.
- ODBC: There is
now support for multiple result sets.
- IDL compiler (IC):
A new compiler option
c_report has been introduced for C
back-ends (client and server). If that option is set, encoding/decoding
errors will be reported to
stderr. This should make debugging
much easier than before.
- Orber: To avoid malicious attacks, it is now possible to configure
Orber to only accept incoming requests up to a certain size.
- Inets: The http-client is now officially supported and documented.
- Improvements in the emacs-mode for Erlang.