31
31
<p>This document describes the changes made to the ERTS application.</p>
33
<section><title>Erts 5.7.5</title>
35
<section><title>Fixed Bugs and Malfunctions</title>
39
Fix <c>binary_to_term</c> crash on compressed term with
40
corrupt size field.</p>
46
Processes and/or ports could get stuck on a blocked
47
scheduler when <c>erlang:system_flag(multi_scheduling,
48
block)</c> was used.</p>
50
Processes and/or ports could get stuck on an offline
51
scheduler when schedulers online were reduced using
52
<c>erlang:system_flag(schedulers_online,
53
SchedulersOnline)</c>.</p>
58
<p>Building on Windows will now work if the paths to
59
<c>mc.exe</c> and <c>rc.exe</c> contain spaces. The
60
README.win32 file has been updated with some information
61
about building using Visual Studio 2008. (Thanks to
68
EPMD now correctly handles the extra data field which can
69
be given in the ALIVE2_REQ request and retrieved in the
70
PORT2_RESP response. (Thanks to Klas Johansson.)</p>
76
The configure test for reliable floating point exceptions
77
has been update to work on modern versions of Mac OS X.
78
(Thanks to Trannie Carter.)</p>
84
ERTS makefiles used to detect the use of a gcc C compiler
85
by checking if CC equaled gcc. That is, the makefiles
86
failed to detect gcc C compilers with other command line
87
names than gcc. `configure' now substitute GCC into the
88
makefiles. If CC is a gcc C compiler, GCC will have the
89
value yes. (Thanks to Jean-S�bastien P�dron)</p>
95
ETS bug causing the <c>memory</c> counter from
96
<c>ets:info</c> for ordered_set's to sometimes get out of
97
synch and absurdly high.</p>
99
Own Id: OTP-8377 Aux Id: seq11442 </p>
103
Immediately repeated multi-scheduling block/unblock
104
cycles using <c>erlang:system_flag(multi_scheduling,
105
block | unblock)</c> could deadlock the runtime system.</p>
110
<p>A number of bugs concerning re and unicode are
112
<p>re:compile no longer looses unicode option, which also
113
fixes bug in re:split.</p>
114
<p>re:replace now handles unicode charlist replacement
116
<p>re:replace now handles unicode RE charlist argument
118
<p>re:replace now handles binary unicode output correctly
119
when nothing is replaced.</p>
120
<p>Most code, testcases and error isolation done by Rory
127
The loading of native code was not properly atomic in the
128
SMP emulator, which could cause crashes. Also a per-MFA
129
information table for the native code has now been
130
protected with a lock since it turns that it could be
131
accessed concurrently in the SMP emulator. (Thanks to
132
Mikael Pettersson.)</p>
138
Fix processes in exiting status that are about to be
139
scheduled, to not be allowed to garbage collect.</p>
144
<p>Removed bogus "\011" character sequence in
151
The resolver routines failed to look up the own node name
152
as hostname, if the OS native resolver was erroneously
153
configured, bug reported by Yogish Baliga, now fixed.</p>
155
The resolver routines now tries to parse the hostname as
156
an IP string as most OS resolvers do, unless the native
157
resolver is used.</p>
159
The DNS resolver inet_res and file resolver inet_hosts
160
now do not read OS configuration files until they are
161
needed. Since the native resolver is default, in most
162
cases they are never needed.</p>
164
The DNS resolver's automatic updating of OS configuration
165
file data (/etc/resolv.conf) now uses the 'domain'
166
keyword as default search domain if there is no 'search'
169
Own Id: OTP-8426 Aux Id: OTP-8381 </p>
173
The re module: A regular expression with an option change
174
at the start of a pattern that had top-level alternatives
175
could cause overwriting and/or a crash. (Thanks to
182
Harmless buffer overflow by one byte in asn1 and
191
<section><title>Improvements and New Features</title>
195
Improved GC performance after BIF/NIF call when a lot of
196
heap fragments was created. This will mainly benefit NIFs
197
that return large compound terms.</p>
202
<p>Incompatible changes in the experimental NIF
203
feature.</p> <list><item> Changed the NIF function
204
prototypes in order to allow more than 3 function
205
arguments. </item><item> <c>enif_get_data</c> renamed as
206
<c>enif_priv_data</c>. </item><item>
207
<c>enif_make_string</c> got a third argument for
208
character encoding. </item><item> The return value of
209
<c>erlang:load_nif/2</c> on error changed. </item></list>
210
<p>Read more in the documentation of <c>erl_nif</c> and
211
<c>erlang:load_nif/2</c></p>.
213
*** POTENTIAL INCOMPATIBILITY ***</p>
218
<p>Cross compilation improvements and other build system
220
<p>Most notable:</p> <list><item> Lots of cross
221
compilation improvements. The old cross compilation
222
support was more or less non-existing as well as broken.
223
Please, note that the cross compilation support should
224
still be considered as experimental. Also note that old
225
cross compilation configurations cannot be used without
226
modifications. For more information on cross compiling
227
Erlang/OTP see the <c>$ERL_TOP/INSTALL-CROSS.md</c> file.
228
</item><item> Support for staged install using <url
229
href="http://www.gnu.org/prep/standards/html_node/DESTDIR.html">DESTDIR</url>.
230
The old broken <c>INSTALL_PREFIX</c> has also been fixed.
231
For more information see the <c>$ERL_TOP/INSTALL.md</c>
232
file. </item><item> Documentation of the <c>release</c>
233
target of the top <c>Makefile</c>. For more information
234
see the <c>$ERL_TOP/INSTALL.md</c> file. </item><item>
235
<c>make install</c> now by default creates relative
236
symbolic links instead of absolute ones. For more
237
information see the <c>$ERL_TOP/INSTALL.md</c> file.
238
</item><item> <c>$ERL_TOP/configure --help=recursive</c>
239
now works and prints help for all applications with
240
<c>configure</c> scripts. </item><item> Doing <c>make
241
install</c>, or <c>make release</c> directly after
242
<c>make all</c> no longer triggers miscellaneous
243
rebuilds. </item><item> Existing bootstrap system is now
244
used when doing <c>make install</c>, or <c>make
245
release</c> without a preceding <c>make all</c>.
246
</item><item> The <c>crypto</c> and <c>ssl</c>
247
applications use the same runtime library path when
248
dynamically linking against <c>libssl.so</c> and
249
<c>libcrypto.so</c>. The runtime library search path has
250
also been extended. </item><item> The <c>configure</c>
251
scripts of <c>erl_interface</c> and <c>odbc</c> now
252
search for thread libraries and thread library quirks the
253
same way as <c>erts</c> do. </item><item> The
254
<c>configure</c> script of the <c>odbc</c> application
255
now also looks for odbc libraries in <c>lib64</c> and
256
<c>lib/64</c> directories when building on a 64-bit
257
system. </item><item> The <c>config.h.in</c> file in the
258
<c>erl_interface</c> application is now automatically
259
generated in instead of statically updated which reduces
260
the risk of <c>configure</c> tests without any effect.
262
<p>(Thanks to Henrik Riomar for suggestions and
264
<p>(Thanks to Winston Smith for the AVR32-Linux cross
265
configuration and testing)</p>
267
*** POTENTIAL INCOMPATIBILITY ***</p>
272
<p>NIF improvements:</p> <list><item> Driver API for
273
multi-threading made available for NIFs. </item><item>
274
Support for mempory managed (garbage collected) resource
275
objects. A way to pass "pointers" to native data
276
structures between C and Erlang in a safe way.
277
</item><item> Support for references, floats and term
278
comparison. </item><item> Various new functions, like
279
<c>enif_inspect_iolist_as_binary</c>,
280
<c>enif_make_sub_binary</c>, <c>enif_get_string</c>,
281
<c>enif_get_atom</c>, <c>enif_make_tuple_from_array</c>,
282
<c>enif_make_list_from_array</c>,
283
<c>enif_make_existing_atom</c>. </item></list>
289
Minor alignment adjustments of scheduler specific data.</p>
294
<p>The documentation is now possible to build in an open
295
source environment after a number of bugs are fixed and
296
some features are added in the documentation build
298
<p>- The arity calculation is updated.</p>
299
<p>- The module prefix used in the function names for
300
bif's are removed in the generated links so the links
302
"http://www.erlang.org/doc/man/erlang.html#append_element-2"
304
"http://www.erlang.org/doc/man/erlang.html#erlang:append_element-2".</p>
305
<p>- Enhanced the menu positioning in the html
306
documentation when a new page is loaded.</p>
307
<p>- A number of corrections in the generation of man
308
pages (thanks to Sergei Golovan)</p>
309
<p>- The legal notice is taken from the xml book file so
310
OTP's build process can be used for non OTP
317
There is new <c>erlang:binary_to_term/2</c> BIF that
318
takes an option list. The option <c>safe</c> can be used
319
to prevent creation of resources that are not garbage
320
collected (such as atoms). (Thanks to Jayson Vantuyl.)</p>
326
The default settings for garbage collection of binaries
327
has been adjusted to be less aggressive than in R13B03.
328
It is now also possible configure the settings for binary
329
GC. See the documentation for <c>spawn_opt/2-5</c>,
330
<c>erlang:system_info/1</c>, <c>erlang:system_flag/2</c>,
331
<c>process_flag/2-3</c>, <c>erlang:trace/3</c>, and the
332
documenation for <c>erl</c> for the new command line
333
options <c>+hms</c> and <c>+hmbs</c>.</p>
339
A bug causing memory corruption in re:run() has been
340
corrected. (Thanks to Yamashina Hio.)</p>
346
The <c>-Werror</c> option for <c>erlc</c> and the
347
compiler option <c>warnings_as_errors</c> will cause
348
warnings to be treated as errors. (Thanks to Christopher
355
Explicit top directories in archive files are now
358
For example, if an archive (app-vsn.ez) just contains an
359
app-vsn/ebin/mod.beam file, the file info for the app-vsn
360
and app-vsn/ebin directories are faked using the file
361
info from the archive file as origin. The virtual
362
direcories can also be listed. For short, the top
363
directories are virtual if they does not exist.</p>
369
An unnecessary lock operation in os:timestamp/0 has been
370
eliminated, making it slightly more efficient. (Thanks to
371
Jonas Falkevik and Tuncer Ayaz.)</p>
377
There is a new <c>+t</c> emulator option for changing the
378
maximum number of atoms. (Thanks to Julien Barbot.)</p>
384
Fixed numerous compiler warnings generated by gcc 4.4.1
385
and tile-cc 2.0.1.78377 when compiling the runtime
392
<c>configure</c> learned the option
393
<c>--enable-m32-build</c> to force the building of a
394
32-bit run-time on systems where the default C compiler
395
generates 64-bit executables by default.</p>
401
HiPE now works in the 64-bit emulator on Mac OS X.
402
(Thanks to Geoff Cant.)</p>
408
Improved handling of symbolic links to escripts</p>
414
Add lock profiling tool.</p>
416
The Lock profiling tool, lcnt, can make use of the
417
internal lock statistics when the runtime system is built
418
with this feature enabled.</p>
420
This provides a mechanism to examine potential lock
421
bottlenecks within the runtime itself.</p>
423
- Add erts_debug:lock_counters({copy_save, bool()}). This
424
option enables or disables statistics saving for
425
destroyed processes and ets-tables. Enabling this might
426
consume a lot of memory.</p>
428
- Add id-numbering for lock classes which is otherwise
435
Removed spurious options to the emulator from escript.</p>
441
Minor documentation fixes. Mainly anchor adjustments.</p>
33
450
<section><title>Erts 5.7.4</title>
35
452
<section><title>Fixed Bugs and Malfunctions</title>