Erts Release Notes
Erts 5.0.2
Fixed errors and malfunctions
-
Heart could time out due to system time adjustments. Heart is now modified to
use timestamps unrelated to system dates.
Own Id: OTP-3401
-
The -nohup option didn't work on Windows, causing
erlsrv to fail.
Own Id: OTP-3715
-
zlib in the emulator (used during compress/decompress of
files) did not use the right memory allocation routines on vxworks.
Own Id: OTP-3815
-
Instability problems in the erlang emulator introduced in R7
are now corrected:
*) The R7B01 emulator may now be restarted after halting
without rebooting the VxWorks node.
*) Parallel portprogrm execution no longer may cause memory
access errors in tExecTask.
*) Use of list_to_binary may no longer cause stack overruns
for the emulator.
Own Id: OTP-3819
-
Name clashes between Erlang emulator and erl_interface
on VxWorks removed.
Own Id: OTP-3824
-
A bug in efile_drv that randomly caused memory access
violation when using file:get_cwd() has been fixed.
Own Id: OTP-3832
-
In some cases, the debugger would in a call to undefined
function
erts_debug:apply/4
. This problem has been
corrected.
Own Id: OTP-3845
Aux Id: Seq 5094
-
Running erlang in an console on Windows (erl) no longer causes
output from erlang to be blocked. Using Ctrl-C to
interrupt emulator now works as expected.
Own Id: OTP-3888
Improvements and new features
-
A number of bug fixes and improvements have been done
to applications
runtime_tools
,
kernel
and erts
:
- A read timeout no longer resets the sequential
trace token. This is an incompatibility towards
the previous behaviour. Use
seq_trace:set_token([])
to reset the
sequential trace token.
seq_trace:get_token/0
and
seq_trace:set_token/1
now have compatible
token formats.
dbg:trace_port/2
and
dbg:trace_client/2,3
now supports trace
to and read from a size limited "wrap file set".
dbg:trace_port_control/1
now supports
operation get_listen_port
for the ip
trace driver.
- New match spec functions
{is_seq_trace}
and
{get_seq_trace}
has been added to test
and read the sequential trace token in match specs.
- New match spec functions
{get_tcw}
and
{set_tcw Value}
that reads and sets
a "trace control word" in the node has been added.
The "trace control word" is a word in each
Erlang node of at least 24 bits.
There are also enhancements of BIFs:
erlang:system_info(trace_control_word)
and
erlang:system_flag(trace_control_word, Value)
for the same purpose.
- A new match spec function
{silent, TrueOrFalse}
for setting a
silent call trace flag per process that inhibits
call trace messages, both local and global, has
been added. The BIF
erlang:trace/3
has been extended to
recognize the flag 'silent' to start a call
trace in silent mode.
- Some bugs in the
dbg
module has been
fixed, e.g the 'old_trace_call' flag has been
removed from the 'all' flags list, and the dbg server
no longer hangs if the supplied tracer fails to
start.
- A bug in the emulator that made 'EXIT' messages
from a process involved in a sequential call trace
get overwritten by the sequential trace token
itself has been fixed.
- The documentation regarding the above has
been updated. Especially, the fact that the match spec
function
{return_trace}
destroys the
tail recursiveness of the traced function has been
pointed out.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3747
Aux Id: OTP-3592, OTP-3744
-
The use of the environment variable ERL_GC_TYPE to force
fullsweep garbage collection is no longer supported in R7B,
instead the environment variable ERL_FULLSWEEP_AFTER
can be set to "0" to get the same result.
The misleading README and example start script for VxWorks
are now updated.
Own Id: OTP-3884
Erts 5.0.1
Fixed errors and malfunctions
-
For newer versions of gcc the value of GCCLIB_PATH
was set incorrectly.
Own Id: OTP-3785
-
Loading of dynamic drivers on VxWorks works again.
(erl_ddll:load_driver/2)
Own Id: OTP-3808
Aux Id: Seq 5037
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.