forked from erlang/otp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
notes.xml
7410 lines (7183 loc) · 269 KB
/
notes.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="latin1" ?>
<!DOCTYPE chapter SYSTEM "chapter.dtd">
<chapter>
<header>
<copyright>
<year>2004</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
The contents of this file are subject to the Erlang Public License,
Version 1.1, (the "License"); you may not use this file except in
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
</legalnotice>
<title>ERTS Release Notes</title>
<prepared>otp_appnotes</prepared>
<docno>nil</docno>
<date>nil</date>
<rev>nil</rev>
<file>notes.xml</file>
</header>
<p>This document describes the changes made to the ERTS application.</p>
<section><title>Erts 5.8.3</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
The scroll wheel now scrolls the werl window on Windows.</p>
<p>
Own Id: OTP-8985</p>
</item>
<item>
<p>
Some malformed distribution messages could cause VM to
crash, this is now corrected.</p>
<p>
Own Id: OTP-8993</p>
</item>
<item>
<p>
The OS function getifaddrs() can return NULL in some
address fields for e.g PPP and tunnel devices which
caused the emulator to segfault. This bug has now been
corrected.</p>
<p>
Own Id: OTP-8996</p>
</item>
<item>
<p>
The expression <<A:0>> would always produce
an empty binary, even if <c>A</c> was not an integer.
Corrected to cause a <c>badarg</c> exception if the type
of <c>A</c> is invalid. (Thanks to Zvi.)</p>
<p>
Own Id: OTP-8997</p>
</item>
<item>
<p>
A bug that potentially could cause an emulator crash when
deleting an ETS-table has been fixed. A resource leak
when hitting the maximum amount of ETS-tables allowed has
also been fixed.</p>
<p>
Own Id: OTP-8999</p>
</item>
<item>
<p>
A bug in the <c>exit/2</c> BIF could potentially cause an
emulator crash.</p>
<p>
Own Id: OTP-9005</p>
</item>
<item>
<p>
Due to a bug in glibc the runtime system could abort
while trying to destroy a mutex. The runtime system will
now issue a warning instead of aborting.</p>
<p>
Own Id: OTP-9009</p>
</item>
<item>
<p>
A bug in epmd could create strange behaviour when
listen() calls failed. This is now corrected thanks to
Steve Vinoski.</p>
<p>
Own Id: OTP-9024</p>
</item>
<item>
<p>When setting file_info the win32_driver will now
correctly set access and modified time. Previously these
entities were swapped.</p>
<p>
Own Id: OTP-9046</p>
</item>
<item>
<p>
Setting scheduler bind type to <c>unbound</c> failed if
binding of schedulers wasn't supported, or if CPU
topology wasn't present. This even though the
documentation stated that it is possible to set the bind
type to <c>unbound</c>.</p>
<p>
Own Id: OTP-9056 Aux Id: Seq11779 </p>
</item>
<item>
<p>Two problems were fixed in crash dump: The time left
for timers are now shown as unsigned integers and the
contents of ordered_set ETS tables is no longer
included.</p>
<p>
Own Id: OTP-9057</p>
</item>
<item>
<p>
The VM could fail to set IP_TOS and SO_PRIORITY in
certain situations, either because sockets were supplied
as open file descriptors, or because SO_PRIORITY by
default was set higher than the user can explicitly set
it to. Those situations are now handled.</p>
<p>
Own Id: OTP-9069</p>
</item>
<item>
<p>
Wx on MacOS X generated complains on stderr about certain
cocoa functions not beeing called from the "Main thread".
This is now corrected.</p>
<p>
Own Id: OTP-9081</p>
</item>
<item>
<p>
Fix a couple typos in driver_entry(3) (thanks to Tuncer
Ayaz).</p>
<p>
Own Id: OTP-9085</p>
</item>
<item>
<p>
Mention that "-detached" implies "-noinput"</p>
<p>
Clarify that specifying "-noinput" is unnecessary if the
"-detached" flag is given. (thanks to Holger Weiß)</p>
<p>
Own Id: OTP-9086</p>
</item>
<item>
<p>
A potential problem (found by code inspection) when
calling a fun whose code was not loaded has been fixed.</p>
<p>
Own Id: OTP-9095</p>
</item>
<item>
<p>
The emulator could get into a state where it didn't check
for I/O.</p>
<p>
Own Id: OTP-9105 Aux Id: Seq11798 </p>
</item>
<item>
<p>
Attempting to create binaries exceeding 2Gb (using for
example <c>term_to_binary/1</c>) would crash the emulator
with an attempt to allocate huge amounts of memory.
(Thanks to Jon Meredith.)</p>
<p>
Own Id: OTP-9117</p>
</item>
<item>
<p>
Fix erlang:hibernate/3 on HiPE enabled emulator (Thanks
to Paul Guyot)</p>
<p>
Own Id: OTP-9125</p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>From this release, the previously experimental
halfword emulator is now official. It can be enabled by
giving the <c>--enable-halfword-emulator</c> option to
the <c>configure</c> script.</p>
<p>The halfword emulator is a 64-bit application, but
uses halfwords (32-bit words) for all data in Erlang
processes, therefore using less memory and being faster
than the standard 64-bit emulator. The total size of all
BEAM code and all process data for all processes is
limited to 4Gb, but ETS tables and off-heap binaries are
only limited by the amount of available memory.</p>
<p>
Own Id: OTP-8941</p>
</item>
<item>
<p>
32-bit atomic memory operations have been introduced
internally in the run time system, and are now used where
appropriate. There were previously only atomic memory
operations of word size available. The 32-bit atomic
memory operations slightly reduce memory consumption, and
slightly improve performance on 64-bit runtime systems.</p>
<p>
Own Id: OTP-8974</p>
</item>
<item>
<p>
Performance enhancements for looking up timer-entries and
removing timers from the wheel.</p>
<p>
Own Id: OTP-8990</p>
</item>
<item>
<p>
Write accesses to ETS tables have been optimized by
reducing the amount of atomic memory operations needed
during a write access.</p>
<p>
Own Id: OTP-9000</p>
</item>
<item>
<p>
Strange C coding in the VM made the -D_FORTIFY_SOURCE
option to gcc-4.5 react badly. The code is now cleaned up
so that it's accepted by gcc-4.5.</p>
<p>
Own Id: OTP-9025</p>
</item>
<item>
<p>
The memory footprint for loaded code has been somewhat
reduced (especially in the 64-bit BEAM machine).</p>
<p>
Own Id: OTP-9030</p>
</item>
<item>
<p>
The maximum number of allowed arguments for an Erlang
function has been lowered from 256 to 255, so that the
number of arguments can now fit in a byte.</p>
<p>
Own Id: OTP-9049</p>
</item>
<item>
<p>
Dependency generation for Makefiles has been added to the
compiler and erlc. See the manual pages for
<c>compile</c> and <c>erlc</c>. (Thanks to Jean-Sebastien
Pedron.)</p>
<p>
Own Id: OTP-9065</p>
</item>
</list>
</section>
</section>
<section><title>Erts 5.8.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p> Fix format_man_pages so it handles all man sections
and remove warnings/errors in various man pages. </p>
<p>
Own Id: OTP-8600</p>
</item>
<item>
<p>
The <c>configure</c> command line argument <seealso
marker="doc/installation_guide:INSTALL#How-to-Build-and-Install-ErlangOTP_A-Closer-Look-at-the-individual-Steps_Configuring">--enable-ethread-pre-pentium4-compatibility</seealso>
had no effect. This option is now also automatically
enabled if required on the build machine.</p>
<p>
Own Id: OTP-8847</p>
</item>
<item>
<p>
Windows 2003 and Windows XP pre SP3 would sometimes not
start the Erlang R14B VM at all due to a bug in the cpu
topology detection. The bug affects Windows only, no
other platform is even remotely affected. The bug is now
corrected.</p>
<p>
Own Id: OTP-8876</p>
</item>
<item>
<p>
The HiPE run-time in the 64-bit emulator could do a
64-bit write to a 32-bit struct field. It happened to be
harmless on Intel/AMD processors. Corrected. (Thanks to
Mikael Pettersson.)</p>
<p>
Own Id: OTP-8877</p>
</item>
<item>
<p>
A bug in <seealso
marker="erl_driver#erl_drv_tsd_get">erl_drv_tsd_get()</seealso>
and <seealso
marker="erl_nif#enif_tsd_get">enif_tsd_get()</seealso>
could cause an emulator crash. These functions are
currently not used in OTP. That is, the crash only occur
on systems with user implemented NIF libraries, or
drivers that use one of these functions.</p>
<p>
Own Id: OTP-8889</p>
</item>
<item>
<p>
Calling <c>erlang:system_info({cpu_topology,
CpuTopologyType})</c> with another <c>CpuTopologyType</c>
element than one of the documented atoms <c>defined</c>,
<c>detected</c>, or <c>used</c> caused an emulator crash.
(Thanks to Paul Guyot)</p>
<p>
Own Id: OTP-8914</p>
</item>
<item>
<p>
The ERTS internal rwlock implementation could get into an
inconsistent state. This bug was very seldom triggered,
but could be during heavy contention. The bug was
introduced in R14B (erts-5.8.1).</p>
<p>
The bug was most likely to be triggered when using the
<c>read_concurrency</c> option on an ETS table that was
frequently accessed from multiple processes doing lots of
writes and reads. That is, in a situation where you
typically don't want to use the <c>read_concurrency</c>
option in the first place.</p>
<p>
Own Id: OTP-8925 Aux Id: OTP-8544 </p>
</item>
<item>
<p>
Tracing to port could cause an emulator crash when
unloading the trace driver.</p>
<p>
Own Id: OTP-8932</p>
</item>
<item>
<p>
Removed use of CancelIoEx on Windows that had been shown
to cause problems with some drivers.</p>
<p>
Own Id: OTP-8937</p>
</item>
<item>
<p>
The fallback implementation used when no native atomic
implementation was found did not compile. (Thanks to
Patrick Baggett, and Tuncer Ayaz)</p>
<p>
Own Id: OTP-8944</p>
</item>
<item>
<p>
Some integer values used during load balancing could
under rare circumstances wrap causing a load unbalance
between schedulers.</p>
<p>
Own Id: OTP-8950</p>
</item>
<item>
<p>
The windows VM now correctly handles appending to large
files (> 4GB).</p>
<p>
Own Id: OTP-8958</p>
</item>
<item>
<p>
Name resolving of IPv6 addresses has been implemented for
Windows versions that support it. The use of ancient
resolver flags (AI_V4MAPPED | AI_ADDRCONFIG) to the
getaddrinfo() function has been removed since e.g FreeBSD
regard mapped IPv4 addresses to be a security problem and
the semantics of the address configured flag is
uncertain.</p>
<p>
Own Id: OTP-8969</p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>
The help texts produced by the <c>configure</c> scripts
in the top directory and in the erts directory have been
aligned and cleaned up.</p>
<p>
Own Id: OTP-8859</p>
</item>
<item>
<p>
When the runtime system had fewer schedulers than logical
processors, the system could get an unnecessarily large
amount reader groups.</p>
<p>
Own Id: OTP-8861</p>
</item>
<item>
<p>
<c>run_rel</c> has been updated to support Solaris's
/dev/ptmx device and to load the necessary STREAMS
modules so that <c>to_erl</c> can provide terminal echo
of keyboard input. (Thanks to Ryan Tilder.)</p>
<p>
Own Id: OTP-8878</p>
</item>
<item>
<p>
The Erlang VM now supports Unicode filenames. The feature
is turned on by default on systems where Unicode
filenames are mandatory (Windows and MacOSX), but can be
enabled on other systems with the '+fnu' emulator option.
Enabling the Unicode filename feature on systems where it
is not default is however considered experimental and not
to be used for production. Together with the Unicode file
name support, the concept of "raw filenames" is
introduced, which means filenames provided without
implicit unicode encoding translation. Raw filenames are
provided as binaries, not lists. For further information,
see stdlib users guide and the chapter about using
Unicode in Erlang. Also see the file module manual page.</p>
<p>
*** POTENTIAL INCOMPATIBILITY ***</p>
<p>
Own Id: OTP-8887</p>
</item>
<item>
<p>Buffer overflows have been prevented in <c>erlc</c>,
<c>dialyzer</c>, <c>typer</c>, <c>run_test</c>,
<c>heart</c>, <c>escript</c>, and <c>erlexec</c>.</p>
(Thanks to Michael Santos.)
<p>
Own Id: OTP-8892</p>
</item>
<item>
<p>
The runtime system is now less eager to suspend processes
sending messages over the distribution. The default value
of the distribution buffer busy limit has also been
increased from 128 KB to 1 MB. This in order to improve
throughput.</p>
<p>
Own Id: OTP-8901</p>
</item>
<item>
<p>
The distribution buffer busy limit can now be configured
at system startup. For more information see the
documentation of the <c>erl</c> <seealso
marker="erl#+zdbbl">+zdbbl</seealso> command line flag.
(Thanks to Scott Lystig Fritchie)</p>
<p>
Own Id: OTP-8912</p>
</item>
<item>
<p>
The inet driver internal buffer stack implementation has
been rewritten in order to reduce lock contention.</p>
<p>
Own Id: OTP-8916</p>
</item>
<item>
<p>
New ETS option <c>compressed</c>, to enable a more
compact storage format at the expence of heavier table
operations. For test and evaluation, <c>erl +ec</c> can
be used to force compression on all ETS tables.</p>
<p>
Own Id: OTP-8922 Aux Id: seq11658 </p>
</item>
<item>
<p>
There is now a new function inet:getifaddrs/0 modeled
after C library function getifaddrs() on BSD and LInux
that reports existing interfaces and their addresses on
the host. This replaces the undocumented and unsupported
inet:getiflist/0 and inet:ifget/2.</p>
<p>
Own Id: OTP-8926</p>
</item>
<item>
<p>
Support for detection of CPU topology and binding of
schedulers on FreeBSD 8 have been added. (Thanks to Paul
Guyot)</p>
<p>
Own Id: OTP-8939</p>
</item>
<item>
<p>
Several bugs related to hibernate/3 and HiPE have been
corrected. (Thanks to Paul Guyot.)</p>
<p>
Own Id: OTP-8952</p>
</item>
<item>
<p>
Support for soft and hard links on Windows versions and
filesystems that support them is added.</p>
<p>
Own Id: OTP-8955</p>
</item>
<item>
<p>
The win32 virtual machine is now linked large address
aware. his allows the Erlang VM to use up to 3 gigs of
address space on Windows instead of the default of 2
gigs.</p>
<p>
Own Id: OTP-8956</p>
</item>
</list>
</section>
</section>
<section><title>Erts 5.8.1.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p> Fix that the documentation top index generator can
handle an Ericsson internal application group. </p>
<p>
Own Id: OTP-8875</p>
</item>
<item>
<p>In embedded mode, on_load handlers that called
<c>code:priv_dir/1</c> or other functions in <c>code</c>
would hang the system. Since the <c>crypto</c>
application now contains an on_loader handler that calls
<c>code:priv_dir/1</c>, including the <c>crypto</c>
application in the boot file would prevent the system
from starting.</p>
<p>Also extended the <c>-init_debug</c> option to print
information about on_load handlers being run to
facilitate debugging.</p>
<p>
Own Id: OTP-8902 Aux Id: seq11703 </p>
</item>
</list>
</section>
</section>
<section><title>Erts 5.8.1.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
Windows 2003 and Windows XP pre SP3 would sometimes not
start the Erlang R14B VM at all due to a bug in the cpu
topology detection. The bug affects Windows only, no
other platform is even remotely affected. The bug is now
corrected.</p>
<p>
Own Id: OTP-8876</p>
</item>
</list>
</section>
</section>
<section><title>Erts 5.8.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
Very small floating point numbers generated errors when
converting from list to float in some versions of the VM,
this is now corrected so that i.e.
list_to_float("1.0e-324"). returns 0.0 in all versions of
Erlang.</p>
<p>
Own Id: OTP-7178</p>
</item>
<item>
<p>
Windows Vista and Windows 7 file system virtualization,
which makes "old style" windows programs execute in a
file system sandbox, was previously unintentionally
turned on for the Erlang VM. This is now corrected so
that i.e. writes to C:\Program Files\. without
administrator privileges will fail.</p>
<p>
Own Id: OTP-7405</p>
</item>
<item>
<p>
Fix faulty 64-bit integer term output from drivers. Large
64-bits integers did not generate correct bignums and
could even cause emulator crash. Only affects drivers
using ERL_DRV_INT64 or ERL_DRV_UINT64, introduced in
R13B03.</p>
<p>
Own Id: OTP-8716</p>
</item>
<item>
<p>
Fixed: inet:setopts(S, [{linger,{true,2}}]) returned
{error,einval} for SCTP sockets. The inet_drv had a bug
when checking the option size.</p>
<p>
Own Id: OTP-8726 Aux Id: seq11617 </p>
</item>
<item>
<p>Fix libm linking with --as-needed flag
<p>
When building with "--as-needed" linker flags on Linux
the build will fail. This has now been fixed.</p>
<p>
(Thanks to Christian Faulhammer)</p></p>
<p>
Own Id: OTP-8728</p>
</item>
<item>
<p>
gen_udp:connect/3 was broken for SCTP enabled builds. It
did not detect remote end errors as it should.</p>
<p>
Own Id: OTP-8729</p>
</item>
<item>
<p>Reduce the risk of integer wrapping in bin vheap size
counting.</p> <p>The vheap size series will now use the
golden ratio instead of doubling and fibonacci
sequences.</p>
<p>
Own Id: OTP-8730</p>
</item>
<item>
<p>
ETS ordered_set containing <c>[]</c> as key could cause
strange thing to happen, like an infinite hanging
<c>ets:select</c>.</p>
<p>
Own Id: OTP-8732</p>
</item>
<item>
<p>reference() has been substituted for ref() in the
documentation.</p>
<p>
Own Id: OTP-8733</p>
</item>
<item>
<p>
When a native compiled module called a not loaded
non-native compiled module that had an on_load function,
the export entries were trashed after code loading so on
the next call from the native compiled module to the
non-native compiled the emulator crashed. This bug has
now been fixed.</p>
<p>
Own Id: OTP-8736</p>
</item>
<item>
<p>
HiPE-enabled Erlang VMs running on BSD systems sometimes
generated messages like "Yikes! erts_alloc() returned
misaligned address 0x8016a512c". Fixed. (Thanks to Mikael
Pettersson.)</p>
<p>
Own Id: OTP-8769</p>
</item>
<item>
<p>
A race condition in <c>erts_poll()</c> could cause delay
of poll for I/O.</p>
<p>
Own Id: OTP-8773</p>
</item>
<item>
<p>
Removed some potential vulnerabilities from the Erlang
Port Mapper Daemon (epmd) and straightened up access
control. Also removed hazardous interfaces allowing
anyone on a machine to forcefully unregister other nodes.
This means that the ei_unregister/erl_unregister
interfaces in erl_interface is rendered not only error
prone and mystifying as before, but totally ineffective.
The old behaviour of unchecked node unregistering can be
restored if needed, see epmd documentation for details.</p>
<p>
*** POTENTIAL INCOMPATIBILITY ***</p>
<p>
Own Id: OTP-8780</p>
</item>
<item>
<p> Building in a source tree without prebuilt platform
independent build results failed on the SSL examples
when: </p> <list><item> cross building. This has been
solved by not building the SSL examples during a cross
build. </item><item> building on Windows. </item></list>
<p>
Own Id: OTP-8791</p>
</item>
<item>
<p>
inet:getsockopt for SCTP sctp_default_send_param had a
bug to not initialize required feilds causing random
answers. It is now corrected.</p>
<p>
Own Id: OTP-8795 Aux Id: seq11655 </p>
</item>
<item>
<p>
The hipe_bifs:get_hrvtime/0 BIF now always returns a real
value even if the "perfctr" Linux kernel extension is not
available. It used to return a dummy value. (Thanks to
Mikael Pettersson.)</p>
<p>
Own Id: OTP-8798</p>
</item>
<item>
<p>
Calling a native-code compiled module with an
<c>on_load</c> function could cause a crash. (Thanks to
Mikael Pettersson.)</p>
<p>
Own Id: OTP-8799</p>
</item>
<item>
<p>The emulator could crash while writing a crash dump if
native-compiled modules had been loaded. (Thanks to Paul
Guyot.)</p>
<p>
Own Id: OTP-8801</p>
</item>
<item>
<p>
The garbage collector could crash if invoked from
native-compiled code after a call to a BIF. (Thanks to
Paul Guyot.)</p>
<p>
Own Id: OTP-8821</p>
</item>
<item>
<p>
A rare memory leak in binary:matches is removed</p>
<p>
Own Id: OTP-8823</p>
</item>
<item>
<p>For a socket in the HTTP packet mode, the return value
from <c>gen_tcp:recv/2,3</c> if there is an error in the
header will be <c>{ok,{http_error,String}}</c> instead of
<c>{error,{http_error,String}}</c> to be consistent with
<c>ssl:recv/2,3</c>.</p>
<p>
*** POTENTIAL INCOMPATIBILITY ***</p>
<p>
Own Id: OTP-8831</p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>
ets:select_reverse/{1,2,3} are now documented.</p>
<p>
Own Id: OTP-7863</p>
</item>
<item>
<p>
External format of integers changed to make full use of
all 32 bits of INTEGER_EXT. This is a compatible change
as old code can read full 32-bit integers but only
produce 28-bit integers as INTEGER_EXT.</p>
<p>
Own Id: OTP-8540 Aux Id: seq11534 </p>
</item>
<item>
<p>
Large parts of the <c>ethread</c> library have been
rewritten. The <c>ethread</c> library is an Erlang
runtime system internal, portable thread library used by
the runtime system itself.</p>
<p>
Most notable improvement is a reader optimized rwlock
implementation which dramatically improve the performance
of read-lock/read-unlock operations on multi processor
systems by avoiding ping-ponging of the rwlock cache
lines. The reader optimized rwlock implementation is used
by miscellaneous rwlocks in the runtime system that are
known to be read-locked frequently, and can be enabled on
ETS tables by passing the <seealso
marker="stdlib:ets#new_2_read_concurrency">{read_concurrency,
true}</seealso> option upon table creation. See the
documentation of <seealso
marker="stdlib:ets#new/2">ets:new/2</seealso> for more
information. The reader optimized rwlock implementation
can be fine tuned when starting the runtime system. For
more information, see the documentation of the <seealso
marker="erts:erl#+rg">+rg</seealso> command line argument
of <c>erl</c>.</p>
<p>
There is also a new implementation of rwlocks that is not
optimized for readers. Both implementations interleaves
readers and writers during contention as opposed to,
e.g., the NPTL (Linux) pthread rwlock implementation
which use either a reader or writer preferred strategy.
The reader/writer preferred strategy is problematic since
it starves threads doing the non-preferred operation.</p>
<p>
The new rwlock implementations in general performs better
in ERTS than common pthread implementations. However, in
some extremely heavily contended cases this is not the
case. Such heavy contention can more or less only appear
on ETS tables. This when multiple processes do very large
amounts of write locked operations simultaneously on the
same table. Such use of ETS is bad regardless of rwlock
implementation, will never scale, and is something we
strongly advise against.</p>
<p>
The new rwlock implementations depend on atomic
operations. If no native atomic implementation is found,
a fallback solution will be used. Using the fallback
implies a performance degradation. That is, it is more
important now than before to build OTP with a native
atomic implementation.</p>
<p>
The <c>ethread</c> library contains native atomic
implementations for, x86 (32 and 64 bit), powerpc (32
bit), sparc V9 (32 and 64 bit), and tilera (32 bit). On
other hardware gcc's builtin support for atomic memory
access will be used if such exists. If no such support is
found, <c>configure</c> will warn about no atomic
implementation available.</p>
<p>
The <c>ethread</c> library can now also use the
<c>libatomic_ops</c> library for atomic memory accesses.
This makes it possible for the Erlang runtime system to
utilize optimized native atomic operations on more
platforms than before. If <c>configure</c> warns about no
atomic implementation available, try using the
<c>libatomic_ops</c> library. Use the <seealso
marker="doc/installation_guide:INSTALL#How-to-Build-and-Install-ErlangOTP_A-Closer-Look-at-the-individual-Steps_Configuring">--with-libatomic_ops=PATH</seealso>
<c>configure</c> command line argument when specifying
where the <c>libatomic_ops</c> installation is located.
The <c>libatomic_ops</c> library can be downloaded from:
<url
href="http://www.hpl.hp.com/research/linux/atomic_ops/">http://www.hpl.hp.com/research/linux/atomic_ops/</url></p>
<p>
The changed API of the <c>ethread</c> library has also
caused modifications in the Erlang runtime system.
Preparations for the to come "delayed deallocation"
feature has also been done since it depends on the
<c>ethread</c> library.</p>
<p>
<em>Note</em>: When building for x86, the <c>ethread</c>
library will now use instructions that first appeared on
the pentium 4 processor. If you want the runtime system
to be compatible with older processors (back to 486) you
need to pass the <seealso
marker="doc/installation_guide:INSTALL#How-to-Build-and-Install-ErlangOTP_A-Closer-Look-at-the-individual-Steps_Configuring">--enable-ethread-pre-pentium4-compatibility</seealso>
<c>configure</c> command line argument when configuring
the system.</p>
<p>
Own Id: OTP-8544</p>
</item>
<item>
<p>
erlang:localtime_to_universaltime({{2008, 8, 1}, {0, 0,
0}},true) when TZ=UTC now behaves consistently on all
Unix platforms.</p>
<p>
The problem fixed was originally reported by Paul Guyot
on erlang-bugs mailing list:</p>
<p>
http://www.erlang.org/pipermail/erlang-bugs/2008-November/001077.html</p>
<p>
Own Id: OTP-8580</p>
</item>
<item>
<p>
Optimization reducing memory consumption by two words per
ETS object.</p>
<p>
Own Id: OTP-8737</p>
</item>
<item>
<p>
Fixes for unsupported halfword-emulator</p>
<p>
Own Id: OTP-8745</p>
</item>
<item>
<p>
NIF 64-bit integer support; <c>enif_get_int64</c>,
<c>enif_get_uint64</c>, <c>enif_make_int64</c>,
<c>enif_make_uint64</c>.</p>
<p>
Own Id: OTP-8746</p>
</item>
<item>
<p>
Alignment of trailing data in messages has been adjusted.
This in order to be able to pass data of any type as
trailing data in the future.</p>
<p>
Own Id: OTP-8754</p>
</item>
<item>
<p>
The obsolete/driver.h header file has been removed. It
has been obsolete and deprecated since R8B. Drivers that
still include obsolete/driver.h must be updated to
include erl_driver.h.</p>
<p>
*** POTENTIAL INCOMPATIBILITY ***</p>
<p>
Own Id: OTP-8758</p>
</item>
<item>
<p>
Added erlang:system_info(build_type) which makes it
easier to chose drivers, NIF libraries, etc based on
build type of the runtime system.</p>
<p>
The NIF library for crypto can now be built for valgrind
and/or debug as separate NIF libraries that will be
automatically loaded if the runtime system has been built
with a matching build type.</p>
<p>
Own Id: OTP-8760</p>
</item>
<item>
<p>
Further lessened the memory requirements of ETS objects.</p>
<p>
Own Id: OTP-8762</p>
</item>
<item>
<p>The broken elib_malloc alternate memory allocator has
been removed. <c>erlang:system_info(elib_malloc)</c> will
always return <c>false</c>, and in R15,
<c>erlang:system_info(elib_malloc)</c> will fail with a
<c>badarg</c> exception.</p>
<p>
Own Id: OTP-8764</p>
</item>
<item>
<p>
Calling <c>erlang:system_info/1</c> with the new argument
<c>update_cpu_info</c> will make the runtime system
reread and update the internally stored CPU information.
For more information see the documentation of <seealso
marker="erlang#update_cpu_info">erlang:system_info(update_cpu_info)</seealso>.</p>
<p>
The CPU topology is now automatically detected on Windows
systems with less than 33 logical processors. The runtime
system will now, also on Windows, by default bind
schedulers to logical processors using the
<c>default_bind</c> bind type if the amount of schedulers
is at least equal to the amount of logical processors
configured, binding of schedulers is supported, and a CPU
topology is available at startup.</p>
<p>
Own Id: OTP-8765</p>
</item>
<item>
<p>
The SMP ERTS internal child waiter thread used on Linux
system with NPTL was unintentionally disabled during
cross compilation rewrites (OTP-8323 in R13B03). It has
now been re-enabled. Enabling it again gives a slight
performance improvement.</p>
<p>
Own Id: OTP-8774</p>
</item>
<item>
<p>