forked from erlang/otp
/
notes.xml
2847 lines (2664 loc) · 97.6 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>2011</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>Kernel Release Notes</title>
<prepared></prepared>
<docno></docno>
<date></date>
<rev></rev>
<file>notes.xml</file>
</header>
<p>This document describes the changes made to the Kernel application.</p>
<section><title>Kernel 2.14.5</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
Fix type of Packet arg of gen_tcp:send/2 and
gen_udp:send/4</p>
<p>
The type is marked as a binary() or a string() but in
practice it can be an iodata(). The test suite was
updated to confirm the gen_tcp/2 and gen_udp:send/4
functions accept iodata() (iolists) packets. (Thanks to
Filipe David Manana)</p>
<p>
Own Id: OTP-9514</p>
</item>
<item>
<p> XML files have been corrected. </p>
<p>
Own Id: OTP-9550 Aux Id: OTP-9541 </p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p> The types and specifications of the inet modules have
been improved. </p>
<p>
Own Id: OTP-9260</p>
</item>
<item>
<p> Types and specifications have been added. </p>
<p>
Own Id: OTP-9356</p>
</item>
<item>
<p> Contracts in STDLIB and Kernel have been improved and
type errors have been corrected. </p>
<p>
Own Id: OTP-9485</p>
</item>
<item>
<p> Update documentation and specifications of some of
the zlib functions. </p>
<p>
Own Id: OTP-9506</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.14.4</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
The send_timeout option in gen_tcp did not work properly
in active mode or with {active,once} options. This is now
corrected.</p>
<p>
Own Id: OTP-9145</p>
</item>
<item>
<p>
Fixed various typos across the documentation (Thanks to
Tuncer Ayaz)</p>
<p>
Own Id: OTP-9154</p>
</item>
<item>
<p>
Fix typo in doc of rpc:pmap/3 (Thanks to Ricardo
Catalinas Jiménez)</p>
<p>
Own Id: OTP-9168</p>
</item>
<item>
<p>
A bug in inet_res, the specialized DNS resolver, has been
corrected. A late answer with unfortunate timing could
cause a runtime exception. Some code cleanup and
improvements also tagged along. Thanks to Evegeniy
Khramtsov for a pinpointing bug report and bug fix
testing.</p>
<p>
Own Id: OTP-9221 Aux Id: OTP-8712 </p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p> Types and specifications have been added. </p>
<p>
Own Id: OTP-9268</p>
</item>
<item>
<p> Erlang types and specifications are used for
documentation. </p>
<p>
Own Id: OTP-9272</p>
</item>
<item>
<p> Two opaque types that could cause warnings when
running Dialyzer have been modified. </p>
<p>
Own Id: OTP-9337</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.14.3</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
<c>os:find_executable/{1,2}</c> will no longer return the
path of a directory that happens to be in the PATH.</p>
<p>
Own Id: OTP-8983 Aux Id: seq11749 </p>
</item>
<item>
<p>
Fix -spec for file:write_file/3</p>
<p>
Change type for second parameter from binary() to
iodata(), since the function explicitly takes steps to
accept lists as well as binaries. (thanks to Magnus
Henoch).</p>
<p>
Own Id: OTP-9067</p>
</item>
<item>
<p>
Sanitize the specs of the code module</p>
<p>
After the addition of unicode_binary() to the
file:filename() type, dialyzer started complaining about
erroneous or incomplete specs in some functions of the
'code' module. The culprit was hard-coded information in
erl_bif_types for functions of this module, which were
not updated. Since these functions have proper specs
these days and code duplication (pun intended) is never a
good idea, their type information was removed from
erl_bif_types.</p>
<p>
While doing this, some erroneous comments were fixed in
the code module and also made sure that the code now runs
without dialyzer warnings even when the
-Wunmatched_returns option is used.</p>
<p>
Some cleanups were applied to erl_bif_types too.</p>
<p>
Own Id: OTP-9100</p>
</item>
<item>
<p>
- Add spec for function that does not return - Strenghen
spec - Introduce types to avoid duplication in specs -
Add specs for functions that do not return - Add specs
for behaviour callbacks - Simplify two specs</p>
<p>
Own Id: OTP-9127</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.14.2</title>
<section><title>Improvements and New Features</title>
<list>
<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>
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>
</list>
</section>
</section>
<section><title>Kernel 2.14.1.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<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>Kernel 2.14.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<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>
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>reference() has been substituted for ref() in the
documentation.</p>
<p>
Own Id: OTP-8733</p>
</item>
<item>
<p>A bug introduced in kernel-2.13.5.3 has been fixed. If
running <c>net_kernel:set_net_ticktime/1</c> twice within
the <c>TransitionPerod</c> the second call caused the
net_kernel process to crash with a <c>badmatch</c>.</p>
<p>
Own Id: OTP-8787 Aux Id: seq11657, OTP-8643 </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>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>
Even when configuring erlang with --enable-native-libs,
the native code for modules loaded very early (such as
lists) would not get loaded. This has been corrected.
(Thanks to Paul Guyot.)</p>
<p>
Own Id: OTP-8750</p>
</item>
<item>
<p>
The undocumented function inet:ifget/2 has been improved
to return interface hardware address (MAC) on platforms
supporting getaddrinfo() (such as BSD unixes). Note it
still does not work on all platforms for example not
Windows nor Solaris, so the function is still
undocumented.</p>
<p>
Buffer overflow and field init bugs for inet:ifget/2 and
inet:getservbyname/2 has also been fixed.</p>
<p>
Thanks to Michael Santos.</p>
<p>
Own Id: OTP-8816</p>
</item>
<item>
<p>
As a usability improvement the 'inet6' option to
functions gen_tcp:listen/2, gen_tcp:connect/3-4,
gen_udp:open/2 and gen_sctp:open/1-2 is now implicit if
the address argument or the 'ip' option contain an IPv6
address (8-tuple).</p>
<p>
Own Id: OTP-8822</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.14</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
os:find_executable can now be fed with the complete name
of the executable on Windows and still find it. I.e
os:find_executable("werl.exe") will work as
os:find_executable("werl").</p>
<p>
Own Id: OTP-3626</p>
</item>
<item>
<p>
The shell's line editing has been improved to more
resemble the behaviour of readline and other shells.
(Thanks to Dave Peticolas)</p>
<p>
Own Id: OTP-8635</p>
</item>
<item>
<p>Under certain circumstances the net kernel could hang.
(Thanks to Scott Lystig Fritchie.)</p>
<p>
Own Id: OTP-8643 Aux Id: seq11584 </p>
</item>
<item>
<p>
The kernel DNS resolver was leaking one or two ports if
the DNS reply could not be parsed or if the resolver(s)
caused noconnection type errors. Bug now fixed. A DNS
specification borderline truncated reply triggering the
port leakage bug has also been fixed.</p>
<p>
Own Id: OTP-8652</p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>As of this version, the global name server no longer
supports nodes running Erlang/OTP R11B.</p>
<p>
Own Id: OTP-8527</p>
</item>
<item>
<p>
The file module's functions write,read and read_line now
handles named io_servers like 'standard_io' and
'standard_error' correctly.</p>
<p>
Own Id: OTP-8611</p>
</item>
<item>
<p>
The functions file:advise/4 and file:datasync/1 have been
added. (Thanks to Filipe David Manana.)</p>
<p>
Own Id: OTP-8637</p>
</item>
<item>
<p>When exchanging groups between nodes <c>pg2</c> did
not remove duplicated members. This bug was introduced in
R13B03 (kernel-2.13.4).</p>
<p>
Own Id: OTP-8653</p>
</item>
<item>
<p>
There is a new option 'exclusive' to file:open/2 that
uses the OS O_EXCL flag where supported to open the file
in exclusive mode.</p>
<p>
Own Id: OTP-8670</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13.5.3</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
A bug introduced in Kernel 2.13.5.2 has been fixed.</p>
<p>
Own Id: OTP-8686 Aux Id: OTP-8643</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13.5.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
Under certain circumstances the net kernel could hang.
(Thanks to Scott Lystig Fritchie.)</p>
<p>
Own Id: OTP-8643 Aux Id: seq11584</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13.5.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
A race condition in <c>os:cmd/1</c> could cause the
caller to get stuck in <c>os:cmd/1</c> forever.</p>
<p>
Own Id: OTP-8502</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13.5</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>A race bug affecting <c>pg2:get_local_members/1</c>
has been fixed. The bug was introduced in R13B03.</p>
<p>
Own Id: OTP-8358</p>
</item>
<item>
<p>
The loading of native code was not properly atomic in the
SMP emulator, which could cause crashes. Also a per-MFA
information table for the native code has now been
protected with a lock since it turns that it could be
accessed concurrently in the SMP emulator. (Thanks to
Mikael Pettersson.)</p>
<p>
Own Id: OTP-8397</p>
</item>
<item>
<p>
user.erl (used in oldshell) is updated to handle unicode
in prompt strings (io:get_line/{1,2}). io_lib is also
updated to format prompts with the 't' modifier (i.e. ~ts
instead of ~s).</p>
<p>
Own Id: OTP-8418 Aux Id: OTP-8393 </p>
</item>
<item>
<p>
The resolver routines failed to look up the own node name
as hostname, if the OS native resolver was erroneously
configured, bug reported by Yogish Baliga, now fixed.</p>
<p>
The resolver routines now tries to parse the hostname as
an IP string as most OS resolvers do, unless the native
resolver is used.</p>
<p>
The DNS resolver inet_res and file resolver inet_hosts
now do not read OS configuration files until they are
needed. Since the native resolver is default, in most
cases they are never needed.</p>
<p>
The DNS resolver's automatic updating of OS configuration
file data (/etc/resolv.conf) now uses the 'domain'
keyword as default search domain if there is no 'search'
keyword.</p>
<p>
Own Id: OTP-8426 Aux Id: OTP-8381 </p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>
The expected return value for an on_load function has
been changed. (See the section about code loading in the
Reference manual.)</p>
<p>
*** POTENTIAL INCOMPATIBILITY ***</p>
<p>
Own Id: OTP-8339</p>
</item>
<item>
<p>
Explicit top directories in archive files are now
optional.</p>
<p>
For example, if an archive (app-vsn.ez) just contains an
app-vsn/ebin/mod.beam file, the file info for the app-vsn
and app-vsn/ebin directories are faked using the file
info from the archive file as origin. The virtual
direcories can also be listed. For short, the top
directories are virtual if they does not exist.</p>
<p>
Own Id: OTP-8387</p>
</item>
<item>
<p>
<c>code:clash/0</c> now looks inside archives (.ez
files). (Thanks to Tuncer Ayaz.)</p>
<p>
Own Id: OTP-8413</p>
</item>
<item>
<p>
There are new <c>gen_sctp:connect_init/*</c> functions
that initiate an SCTP connection without blocking for the
result. The result is delivered asynchronously as an
sctp_assoc_change event. (Thanks to Simon Cornish.)</p>
<p>
Own Id: OTP-8414</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13.4</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>A link in <c>pg2(3)</c> has been fixed. (Thanks to
Christophe Romain.)</p>
<p>
Own Id: OTP-8198</p>
</item>
<item>
<p>
A ticker process could potentially be blocked
indefinitely trying to send a tick to a node not
responding. If this happened, the connection would not be
brought down as it should.</p>
<p>
Own Id: OTP-8218</p>
</item>
<item>
<p>A bug in <c>pg2</c> when members who died did not
leave process groups has been fixed. (Thanks to Matthew
Dempsky.)</p>
<p>
Own Id: OTP-8259</p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>
The documentation is now built with open source tools
(xsltproc and fop) that exists on most platforms. One
visible change is that the frames are removed.</p>
<p>
Own Id: OTP-8201</p>
</item>
<item>
<p>
The top directory in archive files does not need to have
a <c>-vsn</c> suffix anymore. For example if the archive
file has the name like <c>mnesia-4.4.7.ez</c> the top
directory in the archive can either be named
<c>mnesia</c> or <c>mnesia-4.4.7</c>. If the archive file
has a name like <c>mnesia.ez</c> the top directory in the
archive must be named <c>mnesia</c> as earlier.</p>
<p>
Own Id: OTP-8266</p>
</item>
<item>
<p>The -on_load() directive can be used to run a function
when a module is loaded. It is documented in the section
about code loading in the Reference Manual.</p>
<p>
Own Id: OTP-8295</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13.3</title>
<section><title>Improvements and New Features</title>
<list>
<item>
<p> The DNS resolver client inet_res has been rewritten,
documented and released. See inet_res(3) and Erts User's
Guide: Inet configuration. </p><p> It can formally not be
incompatible with respect to earlier versions since there
was no earlier official version. However it was used
before and some details have changed. </p><p>
Configuration now initializes from /etc/resolv.conf and
/etc/hosts on all unix platforms regardless of which
distribution mode the node is started in. The directory
(/etc) these files are supposed to reside in can be
changed via an environment variable. These configuration
file locations can also be changed in the inet
configuration. The files are monitored for change and
re-read, which makes a few resolver configuration
variables out of application control. The /etc/hosts
entries have now their own cache table that is shadowed
(with lookup method 'file' is used) by the application
configured host entries. This problem (that inet_res
configuration only worked for distribution mode long
names) was among other reported by Matthew O'Gorman many
moons ago. </p><p> The lookup methods are still 'native'
only per default. Resolver configuration is done on all
Unix platforms just to get a usable configuration for
direct calls to inet_res. </p><p> The functions
<c>inet_res:nslookup/3..5</c> and
<c>inet_res:nnslookup/4..4</c> are no longer recommended
to use, instead use <c>inet_res:lookup/3..5</c> and
<c>inet_res:resolve/3..5</c> which provide clearer
argument types and the possibility to override options in
the call. </p><p> Users of previous unsupported versions
of inet_res have included internal header files to get to
the internal record definitions in order to examine DNS
replies. This is still unsupported and there are access
functions in inet_dns to use instead. These are
documented in inet_res(3). </p><p> Bug fix: a compression
reference loop would make DNS message decoding loop
forever. Problem reported by Florian Weimer. </p><p> Bug
fix and patch suggestion by Sergei Golovan: configuring
IPv6 nameservers did not work. His patch (as he warned)
created many UDP sockets; one per nameserver. This has
been fixed in the released version. </p><p> Improvement:
<c>inet_res</c> is now EDNS0 capable. The current
implementation is simple and does not probe and cache
EDNS info for nameservers, which a fully capable
implementation probably should do. EDNS has to be enabled
via resolver configuration, and if a nameserver replies
that it does not support EDNS, <c>inet_res</c> falls back
to a regular DNS query. </p><p> Improvement: now
<c>inet_res</c> automatically falls back to TCP if it
gets a truncated answer from a nameserver. </p><p>
Warning: some of the ancient and exotic record types
handled by <c>inet_res</c> and <c>inet_dns</c> are not
supported by current versions of BIND, so they could not
be tested after the rewrite, with reasonable effort, e.g
MD, MF, NULL, and SPF. The risk for bugs in these
particular records is still low since their code is
mostly shared with other tested record types. </p>
<p>
*** POTENTIAL INCOMPATIBILITY ***</p>
<p>
Own Id: OTP-7955 Aux Id: OTP-7107 OTP-6852 </p>
</item>
<item>
<p>
A TCP socket with option <c>{packet,4}</c> could crash
the emulator if it received a packet header with a very
large size value (>2Gb). The same bug caused
<c>erlang:decode_packet/3</c> to return faulty values.
(Thanks to Georgos Seganos.)</p>
<p>
Own Id: OTP-8102</p>
</item>
<item>
<p>
The file module has now a read_line/1 function similar to
the io:get_line/2, but with byte oriented semantics. The
function file:read_line/1 works for raw files as well,
but for good performance it is recommended to use it
together with the 'read_ahead' option for raw file
access.</p>
<p>
Own Id: OTP-8108</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
A bug when doing io:get_line (among other calls) from a
file opened with encoding other than latin1, causing
false unicode errors to occur, is now corrected.</p>
<p>
Own Id: OTP-7974</p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>
Added functionality to get higher resolution timestamp
from system. The erlang:now function returns a timestamp
that's not always consistent with the actual operating
system time (due to resilience against large time changes
in the operating system). The function os:timestamp/0 is
added to get a similar timestamp as the one being
returned by erlang:now, but untouched by Erlangs time
correcting and smoothing algorithms. The timestamp
returned by os:timestamp is always consistent with the
operating systems view of time, like the calendar
functions for getting wall clock time, but with higher
resolution. Example of usage can be found in the os
manual page.</p>
<p>
Own Id: OTP-7971</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
Many concurrent calls to <c>os:cmd/1</c> will only block
one scheduler thread at a time, making an smp emulator
more responsive if the OS is slow forking processes.</p>
<p>
Own Id: OTP-7890 Aux Id: seq11219 </p>
</item>
<item>
<p>
Fixed hanging early RPC that did IO operation during node
start.</p>
<p>
Own Id: OTP-7903 Aux Id: seq11224 </p>
</item>
<item>
<p>
The error behavior of gen_tcp and gen_udp has been
corrected. gen_tcp:connect/3,4 and gen_udp:send/4 now
returns {error,eafnosupport} for conflicting destination
address versus socket address family. Other corner cases
for IP address string host names combined with not using
the native (OS) resolver (which is not default) has also
been changed to return {error,nxdomain} instead of
{error,einval}. Those changes just may surprise old
existing code. gen_tcp:listen/2 and gen_udp:open/2 now
fails for conflicting local address versus socket address
family instead of trying to use an erroneous address.
Problem reported by Per Hedeland.</p>
<p>
*** POTENTIAL INCOMPATIBILITY ***</p>
<p>
Own Id: OTP-7929</p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>
Several glitches and performance issues in the Unicode
and I/O-system implementation of R13A have been
corrected.</p>
<p>
Own Id: OTP-7896 Aux Id: OTP-7648 OTP-7887 </p>
</item>
<item>
<p>
The unsupported DNS resolver client inet_res has now been
improved to handle NAPTR queries.</p>
<p>
Own Id: OTP-7925 Aux Id: seq11231 </p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.13</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>
The old Erlang DNS resolver inet_res has been corrected
to handle TXT records with more than one character
string. Patch courtesy of Geoff Cant.</p>
<p>
Own Id: OTP-7588</p>
</item>
<item>
<p>When chunk reading a disk log opened in read_only
mode, bad terms could crash the disk log process.</p>
<p>
Own Id: OTP-7641 Aux Id: seq11090 </p>
</item>
<item>
<p>
<c>gen_tcp:send()</c> did sometimes (only observed on
Solaris) return <c>{error,enotconn}</c> instead of the
expected <c>{error,closed}</c> as the peer socket had
been explicitly closed.</p>
<p>
Own Id: OTP-7647</p>
</item>
<item>
<p>
The gen_sctp option sctp_peer_addr_params,
#sctp_paddrparams{address={IP,Port} was erroneously
decoded in the inet driver. This bug has now been
corrected.</p>
<p>
Own Id: OTP-7755</p>
</item>
</list>
</section>
<section><title>Improvements and New Features</title>
<list>
<item>
<p>
Erlang programs can now access STDERR on platforms where
such a file descriptor is available by using the
io_server 'standard_error', i.e.
io:format(standard_error,"~s~n",[ErrorMessage]),</p>
<p>
Own Id: OTP-6688</p>
</item>
<item>
<p>
The format of the string returned by
<c>erlang:system_info(system_version)</c> (as well as the
first message when Erlang is started) has changed. The
string now contains the both the OTP version number as
well as the erts version number.</p>
<p>
Own Id: OTP-7649</p>
</item>
<item>
<p>As of this version, the global name server no longer
supports nodes running Erlang/OTP R10B.</p>
<p>
Own Id: OTP-7661</p>
</item>
<item>
<p>
A <c>{nodedown, Node}</c> message passed by the
<c>net_kernel:monitor_nodes/X</c> functionality is now
guaranteed to be sent after <c>Node</c> has been removed
from the result returned by <c>erlang:nodes/Y</c>.</p>
<p>
Own Id: OTP-7725</p>
</item>
<item>
<p>The deprecated functions <c>erlang:fault/1</c>,
<c>erlang:fault/2</c>, and <c>file:rawopen/2</c> have
been removed.</p>
<p>
*** POTENTIAL INCOMPATIBILITY ***</p>
<p>
Own Id: OTP-7812</p>
</item>
<item>
<p>
Nodes belonging to different independent clusters can now
co-exist on the same host with the help of a new
environment variable setting ERL_EPMD_PORT.</p>
<p>
Own Id: OTP-7826</p>
</item>
<item>
<p>The copyright notices have been updated.</p>
<p>
Own Id: OTP-7851</p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.12.5.1</title>
<section><title>Fixed Bugs and Malfunctions</title>
<list>
<item>
<p>When chunk reading a disk log opened in read_only
mode, bad terms could crash the disk log process.</p>
<p>
Own Id: OTP-7641 Aux Id: seq11090 </p>
</item>
<item>
<p>
Calling <c>gen_tcp:send()</c> from several processes on
socket with option <c>send_timeout</c> could lead to much
longer timeout than specified. The solution is a new
socket option <c>{send_timeout_close,true}</c> that will
do automatic close on timeout. Subsequent calls to send
will then immediately fail due to the closed connection.</p>
<p>
Own Id: OTP-7731 Aux Id: seq11161 </p>
</item>
</list>
</section>
</section>
<section><title>Kernel 2.12.5</title>