This document describes the major new features of and changes to version R8B of Erlang/OTP. For more detailed information, please refer to the release notes for the respective applications.
The major focus of the development of OTP R8B has been:
Improving the characteristics for huge systems and systems with high demands regarding soft real time characteristics. The work here is mainly concentrated on multithreaded I/O, memory handling and improvements in disk and ram based tables and Mnesia.
Introducing the important new application Megaco/H.248 as part of OTP.
Also improving the on-line documentation by adding a permuted index and reducing the number of levels.
Added a web based user interface.
New option per_bin which makes the encode/decode functions use binaries and the bit syntax instead of lists. The use of binaries will be the default solution in forthcoming versions.
Now supporting the most common use of Information Objects according to X.681 for both BER and PER (aligned).
The new option ber_bin which uses binaries in the encode/decode functions is now officially supported. It is recommended to use ber_bin instead of ber, the use of binaries will be the default in forthcoming versions.
In combination with the BER encoding rules now the DER (Distinguished Encoding Rules) is supported. The DER encoding rules is defined as a number of restrictions to the BER encoding rules and is used mainly by the X.500 directory standards.
Various improvements, can now be run as a port program or port driver.
New examples, for example accessing data through ActiveX Data Objects (ADO).
Various code optimizations, especially records are handled better.
Floating point arithmetic is faster.
A more powerful inliner is added.
New syntax for setting all remaining fields in a record to the same
value. This is useful when creating a wildcard record which for
example is used as input to
mnesia:match. The following
statement sets field a to
Val and all other fields to
This is very practical for records with many fields.
Improved handling of list comprehensions resulting in faster execution.
New logical operators
The boolean operators
not can now be used in guards.
This version is a completely new version of the cosEvent application; older versions were not compliant with the OMG specification. The 'look and feel' has been changed to be more uniform with the other COS services.
An Erlang implementation of the OMG CORBA FileTransfer service.
Note: The OMG CosFileTransfer specification have not been finalized yet. Hence, the API may be changed in the future.
An Erlang implementation of the OMG CORBA Property service.
No changes since OTP R7B01.
Now uses debug information from the beam files instead of compiling
the modules to be debugged. This means that the modules must have
been compiled with the option
Improved multithreaded I/O.
Improved inet_driver (IP).
Improved memory management on Unix (using mmap) gives less memory fragmentation.
Improved diagnostic BIF's retrieving memory information.
Improved floating point arithmetic.
Support for scatter/gather I/O in the file driver to improve performance.
Improvements of the file drivers real-time characteristics for the single threaded case (default) when reading/writing very large blocks.
ei now can be used stand-alone, without
support from the old library
ei library is reentrant and makes it possible to have
for example multiple ei-nodes on VxWorks (which means multiple IC
generated nodes too).
erl_interface API library is now obsolete and
should not be used in new development, altough it is retained for
backward compatibility reasons.
No changes since OTP R7B01.
Some internal modules and processes in GS were prefixed with
gtk. This prefix has been changed to
not to clash with modules that interface to the graphical toolkit Gtk.
Added support for erlang::binary in compiler and C backends.
Multiple backend option for faster compilation. Makes it possible to generate code with several different backends in one compiler run.
No changes since R7B01.
Hidden Erlang nodes and hidden global groups have been introduced.
This makes it possible to establish hidden connections between
Erlang nodes. See
The distribution mechanisms are generally improved to meet demands for larger networks of distributed Erlang nodes.
The inet, inet_tcp and inet_udp components are further improved and optimized.
The global name service is faster.
A framework for building applications on top of the Megaco/H.248 protocol. Megaco/H.248 is a protocol for control of elements in a physically decomposed multimedia gateway, enabling separation of call control from media conversion. A Media Gateway Controller (MGC) controls one or more Media Gateways (MG).
The semantics of the protocol has jointly been defined by two standardization bodies: IETF which calls the protocol Megaco, and ITU which calls the protocol H.248.
This application has been removed.
No changes since R7B01.
The implementation for tables with property disc_copies is significantly improved and does not use Dets anymore. This will improve overall system performance.
The improvements in Dets will yield an improvement on the disc_only_copies storage type.
[dirty_]select/[2|3] is implemented which should decrease
the need to use Mnemosyne and
match_object. By use of
select the search performance is improved. The data
returned from a search with
select can be taylored by
the user. See ERTS User's Guide for syntax of match expressions.
Synced transactions have been implemented, this kind of transactions
do not increase the performance but have a better behaviour from a
system perspective. A node B cannot be overloaded by running fast
transactions on node A and you cannot overload disk_log as you can
with the normal
Old dependencies, workarounds and support for old Erlang/OTP release will be removed.
The application has been rewritten. The main change is that allocation and deallocation of memory is now handled by the application.
ODBC also need handlers for communication with the database. These handlers are now allocated by application.
New interface functions have been added which replace the old ones. The old interface functions are retained for backwards compatibility but may be removed in the future. For more information, see the ODBC Reference Manual.
The overhead for Inter-ORB communication has been reduced significantly compared with the first R7B version (3.1.8). As a part of this work the memory usage has also been reduced.
memsup and disksup are improved to give faster responses and generate less overhead.
Now works on Linux and FreeBSD.
No changes since R7B01.
Tracing is generally improved and bugfixed, see
The report browser (
rb) no longer ignores faulty events
- it prints the raw terms instead. It also presents user-generated
info_report events more
systools_make uses Xref instead of Exref for cross
reference checks. The format of the warnings for undefined functions
has been changed.
Ets and Dets now includes more powerful alternatives to
(d)ets:match_delete/2 calls. The new matching
alternatives are called
The new calls
(d)ets:match/3 and corresponding
select calls make it possible
to fetch smaller chunks of matching objects for processing instead of
always retrieving all matching objects at the same time.
(d)ets:member/2 makes it possible to look
for a key in an Ets table without retrieving the whole object.
(d)ets:insert/2 now also accepts a list of objects to be
inserted in one call.
Furthermore the following
(d)ets calls are added:
See the documentation for details.
Dets is much improved in terms of speed, resource consumption and works better together with multithreaded I/O.
Improved performance, especially when using multithreaded I/O.
Coast was much too slow and inefficient, especially for large modules. Also, it was discovered that Coast in some cases returned erroneous values.
Consequently, Coast has been discontinued and is replaced with a new tool Cover with similar interface and functionality. Refer to the Tools User's Guide and Reference Manual for more information about Cover.
Added a web based user interface to Cover.
Xref represents unresolved calls with calls where the module,
the function or the number of arguments are atoms and integers that
are unlikely to occur in an Erlang system. Calls to
erlang:apply/2 and the like are included among
the external calls. This is in contrast to R7 where calls to apply
and spawn were used for representing unresolved calls.
A new profiling tool Fprof which measures how time is used in your Erlang programs. Uses trace to file to minimize performance impact, and displays time for calling and called functions.
A framework for web based tools.