trunc(F)
where F
is a float such
that the expected result is 2^27, instead returned -2^27. Also
round(134217727.5)
gave an erroneous answer.
demonitor/1
was used on a monitor for a process on
another node (for example, using gen_server
calls), not
all associated allocated memory was freed, causing a memory leak of
some 20 bytes each time. This has been fixed.
erlang:demonitor/1
was called in order to demonitor a
process on another node, at the same time as the node went down, Erlang
could sometimes crash. This has been fixed.
B1 = <<73>>, B2 = <<0>>,
<<B1:6/binary-unit:1,B2:2/binary-unit:1>>
.
binary_to_term
on binaries (for example
list_to_binary([131,111,255,255,255,0])
not corresponding
to a term could crash Erlang.
The old
runtime_tools
, kernel
and erts
:
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. {is_seq_trace}
and
{get_seq_trace}
has been added to test and read the
sequential trace token in match specs. {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. {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. 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.
{return_trace}
destroys the tail recursiveness of
the traced function has been pointed out.
-extra
has been introduced,
which causes all following arguments to remain uninterpreted by Erlang;
the arguments are included in the list returned by
init:get_plain_arguments/0
.
The current version of sl_alloc uses the system call mmap() (on platforms where mmap() exists) in order to allocate large blocks (just as dlmalloc) and uses the standard malloc implementation for small blocks.
Maximum number of mmapped blocks and the threshold which is used to determine if a block should be mmapped can be adjusted, see "System Flags" in erl(1).
sl_alloc can be disabled. The standard malloc
implementation will in this case be used instead, see "System Flags" in
erl(1).
(Own Id: OTP-4075)
(Aux Id: SEQ-7057,)
./configure
--enable-hipe
when building.) If the runtime-system is
hipe-enabled, a module can be native-code compiled like this: c(Module, [native|OtherOptions])
.
Compiling in
this way, the beam file will contain both standard beam byte-code and
the native code. If loaded on a hipe-enabled system the native code
will be loaded; otherwise the beam-code will be loaded.
HiPE is
supported for Ultra Sparc and Intel Pentium.
(Own Id: OTP-4153)