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
'_'
:
#rec{a=Val,_='_'}
This is very practical for records with many fields.
Improved handling of list comprehensions resulting in faster execution.
New logical operators andalso
and orelse
.
The boolean operators and
, or
and
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.
Minor changes.
An Erlang implementation of the OMG CORBA Property service.
Minor changes.
Minor changes.
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 debug_info
set.
Improved multithreaded I/O.
Improved inet_driver (IP).
Named ports.
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.
The library ei
now can be used stand-alone, without
support from the old library erl_interface
.
The ei
library is reentrant and makes it possible to have
for example multiple ei-nodes on VxWorks (which means multiple IC
generated nodes too).
The old 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 gstk
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.
Minor changes.
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 global_group(3)
and erl(1)
.
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 mnesia:transaction/[123]
call.
Old dependencies, workarounds and support for old Erlang/OTP release will be removed.
Minor changes.
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.
Minor changes.
Tracing is generally improved and bugfixed, see dbg(3)
and erlang(3)
.
The report browser (rb
) no longer ignores faulty events
- it prints the raw terms instead. It also presents user-generated
error_report
and info_report
events more
nicely.
systools_make
uses Xref instead of Exref for cross
reference checks. The format of the warnings for undefined functions
has been changed.
Minor changes.
Minor changes.
Ets and Dets now includes more powerful alternatives to
the (d)ets:match/2
, (d)ets:match_object/2
and (d)ets:match_delete/2
calls. The new matching
alternatives are called (d)ets:select/2
and
(d)ets:select_delete/2
.
The new calls (d)ets:match/1
,
(d)ets:match/3
and corresponding
match_object
/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.
The predicate (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:
delete_object
, delete_all_objects
,
from_(d)ets
, to_(d)ets
,
init_table
and ets:test_ms
.
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.
Minor changes.
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.
Minor changes.
A framework for web based tools.