30
30
<p>This document describes the changes made to the ERTS application.</p>
32
<section><title>Erts 5.7.2</title>
34
<section><title>Fixed Bugs and Malfunctions</title>
38
Crash dumps should now cause less problems for the
39
crashdump_viewer application. (For processes where arity
40
was non-zero, the arguments are now longer printed - they
41
used to be printed in a format that was not parseable.)</p>
43
Own Id: OTP-7472 Aux Id: seq11019, 11292 </p>
47
Processes could potentially get stuck on an offline
54
<c>binary_to_atom/2</c> and
55
<c>binary_to_existing_atom/2</c> could leak memory if
56
they caused a <c>badarg</c> exception.</p>
62
A process could under very rare circumstances erroneously
69
Load balancing between schedulers could under rare
70
circumstances cause an emulator crash.</p>
76
<c>erlang:memory(processes_used)</c> always returned
77
<c>0</c> instead of the correct value. (Thanks to Geoff
86
<section><title>Improvements and New Features</title>
90
Major improvements of the Erlang distribution for Erlang
91
runtime systems with SMP support. Previously distribution
92
port locks were heavily contended, and all encoding and
93
decoding for a specific distribution channel had to be
94
done in sequence. Lock contention due to the distribution
95
is now negligible and both encoding and decoding of
96
Erlang messages can be done in parallel.</p>
98
The old atom cache protocol used by the Erlang
99
distribution has been dropped since it effectively
100
prevented all parallel encoding and decoding of messages
101
passed over the same distribution channel.</p>
103
A new atom cache protocol has been introduced which
104
isolates atom cache accesses and makes parallel encoding
105
and decoding of messages passed over the same
106
distribution channel possible. The new atom cache
107
protocol also use an atom cache size 8 times larger than
108
before. The new atom cache protocol is documented in the
109
ERTS users guide.</p>
111
Erlang messages received via the distribution are now
112
decoded by the receiving Erlang processes without holding
113
any distribution channel specific locks. Erlang messages
114
and signals sent over the distribution are as before
115
encoded by the sending Erlang process, but now without
116
holding any distribution channel specific locks during
117
the encoding. That is, both encoding and decoding can be
118
and are done in parallel regardless of distribution
121
The part that cannot be parallelized is the atom cache
122
updates. Atom cache updates are therefore now scheduled
123
on the distribution port. Since it is only one entity per
124
distribution channel doing this work there is no lock
125
contention due to the atom cache updates.</p>
127
The new runtime system does not understand the old atom
128
cache protocol. New and old runtime systems can however
129
still communicate, but no atom cache will be used.</p>
135
Fixed a bug that caused error logging from
136
<c>driver_select</c> sometimes with additional symptoms
137
such as failing IP communications or even an emulator
140
Own Id: OTP-7898 Aux Id: seq11304 </p>
144
Improved SMP concurrency for ETS tables. Several mutating
145
operations can now be performed truly concurrent on
146
different records of the same table. To support this, the
147
table has to be created with option
148
<c>write_concurrency</c>, as it is achieved at the
149
expense of some execution and memory overhead.
150
<c>ets:select</c> and <c>select_count</c> has also been
151
improved for all tables to not aquire exclusive table
152
lock during the iteration.</p>
158
erl (that is erl.exe and dyn_erl) and erlexec has been
159
made more dynamic so no hard coded paths needs to added
160
at installation time to erl (that is erl.ini and erl).
161
Reltool will make use of this in a future release.</p>
167
Added functionality to get higher resolution timestamp
168
from system. The erlang:now function returns a timestamp
169
that's not always consistent with the actual operating
170
system time (due to resilience against large time changes
171
in the operating system). The function os:timestamp/0 is
172
added to get a similar timestamp as the one being
173
returned by erlang:now, but untouched by Erlangs time
174
correcting and smoothing algorithms. The timestamp
175
returned by os:timestamp is always consistent with the
176
operating systems view of time, like the calendar
177
functions for getting wall clock time, but with higher
178
resolution. Example of usage can be found in the os
185
Two new options are added to open_port - spawn_executable
186
which runs external executables in a controlled way, and
187
spawn_driver which only opens port to loaded Erlang
188
drivers. See the erlang manual page for details.</p>
194
New functionality in ETS to transfer the ownership of a
195
table. A table can either change owner be declaring an
196
"heir", another process that will inherit the table if
197
the owner terminates. A table can also change owner by
198
calling a new function <c>ets:give_away</c>.</p>
204
Updates to Tilera build environment.</p>
210
A stack trace was unnecessarily saved during process
217
User defined CPU topology and scheduler bind type can now
218
be set from the command line when starting an emulator.
219
For more information see the documentation of the
220
<c>+sct</c>, and the <c>+sbt</c> emulator flags in the
221
<c>erl(1)</c> documentation.</p>
223
The CPU topologies returned from
224
<c>erlang:system_info/1</c> and
225
<c>erlang:system_flag/2</c> now always contain the
226
<c>processor</c> level, also when not strictly necessary.</p>
232
Various fixes in ETS: <c>ets:first</c> could return a
233
deleted key in a fixated table. <c>ets:lookup</c> could
234
return objects out of order if a deleted object was
235
re-inserted into a fixed bag. <c>ets:delete_object</c>
236
could fail to delete duplicate objects in a
32
246
<section><title>Erts 5.7.1</title>
34
248
<section><title>Fixed Bugs and Malfunctions</title>