Erts Release Notes
Erts 5.0.1 (R7B)
Improvements and new features
-
A new better and more portable hash BIF, erlang:phash/2, has been
introduced. The dets module will use the erlang:phash/2
for newly created tables. To rebuild an old table and start to use the
new hash BIF, give the {repair,force} option to dets:open_file/2.
See the documentation.
Own Id: OTP-3397
-
The
-detached
flag has been documented in the erl
man page. Some other minor documenation errors were also
corrected.
Own Id: OTP-3686
-
Function c:memory/[0,1] added. It can be used to
retrieve current memory allocation status,
see the documentation of the c module.
Own Id: OTP-3698
Erts 5.0 (R7A)
Known problems
-
System enters unstable state if epmd crashes
Own Id: OTP-1067
Aux Id: tir-f-054
Fixed errors and malfunctions
-
Windows: Some scrollbar problems in Werl were fixed.
Own Id: OTP-3560
-
The BIFs split_binary/2 and binary_to_list/3 did not
accept positions greater than 134217727 (128Mb - 1).
This has been corrected.
Own Id: OTP-3594
-
Calling binary_to_term/1 on a term which contains
several funs could cause an emulator crasch.
This has been corrected.
Own Id: OTP-3644
Improvements and new features
-
We have made several changes to the garbage collector
and internal memory allocation routines to reduce
memory consumption and memory fragmentation.
Also, the compiler now makes sure that references
to any data that will not be used again will be killed,
so that the garbage collector can discard it as soon
as possible.
(Thanks to Claes Wickstrom at Bluetail who suggested
most of the changes to the garbage collector.)
Own Id: OTP-2375
Aux Id: seq 816, HA81951
-
There now exists syntax for constructing and matching
binaries. For more infomation, see Extensions to Erlang.
Also, the handling of small binaries (up to 64 bytes) has
been optimised, as well as splitting of binaries.
Own Id: OTP-3376
-
The maximum number of ports that can be opened
using
erlang:open_port/2
can now be configured
using the environment variable ERL_MAX_PORTS
.
By default, the maximum number of ports is 1024.
Note that the default value of 1024 in rare
cases may be lower than the default value in
previous releases (it used to be the maximum number
of file descriptors for the current process on Unix).
(*** INCOMPATIBILITY with R6 ***)
Own Id: OTP-3494
-
The new BIF
erlang:read_timer/1
returns the remaining time
(in ms) for a timer started by start_timer/3
or
send_after/3
.
Own Id: OTP-3495
-
Call tracing is greatly improved. It is now possible to
trace local function calls (and calls to local functions)
set up with the erlang:trace_pattern BIF. Trace compilation
for local call is no longer needed.
Own Id: OTP-3518
-
There is now support for operating system threads in
drivers. The file driver has been modified to make use
of this, which means that lengthy file operations no longer
cause everything on the node to pause. Currently only
supported on Solaris and Windows. The number of threads in the
thread pool can be set with the emulator system flag
-A
. The default number of threads is 0, which means
that this feature is turned off. The number of threads
in a node can be obtained by the call
erlang:info(thread_pool_size)
.
Own Id: OTP-3599
-
The BIF erlang:monitor(process, Proc) has been extended
to accept named processes, local and remote.
See the documentation for erlang:monitor/2 and
erlang:demonitor/1.
Own Id: OTP-3657
-
The inet driver (inet_drv, i.e the driver for
(TCP&UDP)/IP) and a lot of supporting Erlang
code in the application kernel, has been replaced.
The new code, courtesy of Tony Rogvall,
eliminates one data relay process per socket
and thereby gives a throughput boost.
Own Id: OTP-3661
-
Thanks to the HiPE project at Uppsala University,
the Erlang emulator now uses a 2 bit tag scheme
internally. This change is not visible at the language
level, but it means that the Erlang emulator can
now address the entire 4Gb address space (OTP R6
could only address 1Gb).
Own Id: OTP-3667
-
The
erlang:info/1
and erlang:system_info/1
BIFs have been
merged into one. The recommended way to use the combined
BIF is by the name erlang:system_info/1
, but
erlang:info/1
will also work.
Own Id: OTP-3669
-
In Unix, there was once a problem running the erlang emulator
as part of a pipeline or with redirected input and/or output.
An earlier OTP release introduced the infamous "cat process"
which partly solved the problem, but introduced its own new
problems. In this version, the internal cat process has been
removed in favour of a cleaner solution without any unpleasant
side-effects.
Own Id: OTP-3671
-
The beam emulator now uses the C library function
call poll() instead of select() on Unix systems that
support this, e.g Solaris. On those systems
the datatype fd_set no longer limits the number
of fildescriptor.
Own Id: OTP-3673
-
New socket options for TCP/IP sockets:
'tpkt' and 'line'. See the documentation for
inet:setopts/2.
Own Id: OTP-3674
-
Most of the previously undocumented BIFs in the
erlang
module have been documented. Still undocumented are BIFs
which are of no use in applications, for instance the set
of BIFs used to implement the distribution protocol.
The newly documented BIFs are:
append_element/2
,
bump_reductions/1
,
display/1
,
function_exported/3
,
garbage_collect/0,1
,
is_builtin/3
,
loaded/0
,
make_tuple/2
,
md5/1
,
md5_final/1
,
md5_init/1
,
md5_update/2
,
port_close/1
,
port_command/2
,
port_connect/2
,
port_control/3
,
port_to_list/1
,
ref_to_list/1
,
system_info/1
, and
yield/0
.
Own Id: OTP-3675
-
The new BIF term_to_binary/2 can be used for automatically
compressing the external representation of an Erlang term.
The binary_to_term/1 BIF in R7 automatically recognises
and decompresses such compressed terms.
Own Id: OTP-3676
There are also release notes for older versions.