aboutsummaryrefslogblamecommitdiffstats
path: root/release-notes/OTP-18.0.README.txt
blob: 6ca39f13b61015b4d3adba538ea91453d7c8daba (plain) (tree)
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640







































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































                                                                              
Major release  : otp_src_18
Build date     : 2015-06-24

18 is a major new release of Erlang/OTP.
You can download the full source distribution from

  http://www.erlang.org/download/otp_src_18.0.tar.gz
  http://www.erlang.org/download/otp_src_18.0.readme (this file)

Note: To unpack the TAR archive you need a GNU TAR compatible program.

For installation instructions please read the README that is part of
the distribution.

The Windows binary distribution can be downloaded from

  http://www.erlang.org/download/otp_win32_18.0.exe
  http://www.erlang.org/download/otp_win64_18.0.exe


On-line documentation can be found at http://www.erlang.org/doc/.
You can also download the complete HTML documentation or the Unix manual files

  http://www.erlang.org/download/otp_doc_html_18.0.tar.gz
  http://www.erlang.org/download/otp_doc_man_18.0.tar.gz

We also want to thank those that sent us patches, suggestions and bug reports,

The OTP Team

--- HIGHLIGHTS ----------------------------------------------------------

   OTP-11997  == erts ==

	      The time functionality of Erlang has been extended. This both
	      includes a new API for time, as well as time warp modes which
	      alters the behavior of the system when system time changes.
	      You are strongly encouraged to use the new API instead of the
	      old API based on erlang:now/0. erlang:now/0 has been
	      deprecated since it is and forever will be a scalability
	      bottleneck. For more information see the Time and Time
	      Correction chapter of the ERTS User's Guide.

	      Besides the API changes and time warp modes a lot of
	      scalability and performance improvements regarding time
	      management has been made internally in the runtime system.
	      Examples of such improvements are scheduler specific timer
	      wheels, scheduler specific BIF timer management, parallel
	      retrieval of monotonic time and system time on systems with
	      primitives that are not buggy.

   OTP-12029  == ssh ==

	      A new option 'preferred_algorithms' is available for
	      ssh:daemon and ssh:connect.

	      This option defines the algorithms presented to the peer in
	      the algorithm negotiation phase of the ssh protocol. 

	      The default list can be obtained from the new function
	      ssh:default_algorithms/0.

   OTP-12218  == compiler debugger stdlib ==

	      Support variables as Map keys in expressions and patterns

	      Erlang will accept any expression as keys in Map expressions
	      and it will accept literals or bound variables as keys in Map
	      patterns.

   OTP-12309  == erts stdlib ==

	      New function ets:take/2. Works the same as ets:delete/2 but
	      also returns the deleted object(s).

   OTP-12585  == erts ==

	      Use persistent hashmaps for large Maps

	      Maps will use a persistent hashmap implementation when the
	      number of pairs in a Map becomes sufficiently large. The
	      change will occur when a Map reaches 33 pairs in size but
	      this limit might change in the future.

	      The most significant impact for the user by this change is
	      speed, and to a lesser degree memory consumption and
	      introspection of Maps. Memory consumption size is probalistic
	      but lesser than gb_trees or dict for instance. Any other
	      impacts will be transparent for the user except for the
	      following changes.

	      Semantics of Maps have changed in two incompatible ways
	      compared to the experimental implementation in OTP 17:

	      -- Hashing of maps is done different by erlang:phash2/1,2,
	      erlang:phash/1 and erlang:hash/2.

	      -- Comparing two maps with ==, /=, =<, <, >= and >, is done
	      different if the keys contain floating point numbers.

   OTP-12650  == erts ==

	      Optimization of timers internally in the VM. This include
	      process timers (receive ... after), port timers
	      (driver_set_timer()) as well as BIF timers
	      (erlang:send_after()/erlang:start_timer()).

	      Each scheduler thread now has its own lock-free timer service
	      instead of one locked central service. This dramatically
	      improves performance of timer management on systems with a
	      large amount of schedulers and timers.

	      The timer service internal data structure has also been
	      optimized to be able to handle more timers than before. That
	      is, each timer service is by its self able to handle more
	      timers without dramatic performance loss than the old
	      centralized timer service.

	      The API of BIF timers has also been extended. Timeout values
	      are for example no longer limited to 32-bit integers. For
	      more information see the documentation of
	      erlang:start_timer/4, erlang:send_after/4,
	      erlang:cancel_timer/2, and erlang:read_timer/2.

	      Characteristics impact: Calls to the synchronous versions of
	      erlang:cancel_timer(), and erlang:read_timer() may take
	      substantially longer time to complete than before. This occur
	      when the timer that is accessed is managed by a remote
	      scheduler. You typically want to use the new asynchronous
	      option in order to avoid blocking the calling process.

   OTP-12854  == otp ==

	      Change license text from Erlang Public License to Apache
	      Public License v2

--- POTENTIAL INCOMPATIBILITIES -----------------------------------------

   OTP-11905  == erts ==

	      Fix issuing with spaces and quoting in the arguments when
	      using erlang:open_port spawn_executable on windows. The
	      behavior now mimics how unix works. This change implies a
	      backwards incompatibility for how spawn_executable works on
	      windows.

   OTP-11940  == erts ==

	      Add md5 and module entries to ?MODULE:module_info/0/1 and
	      remove obsolete entry 'import'.

   OTP-12099  == erts ==

	      erlang:function_exported(M, F, A) will now return true if
	      M:F/A refers to a BIF.

   OTP-12100  == compiler ==

	      The deprecated 'asm' option has been removed.

   OTP-12240  == erts kernel ssh ==

	      The internal group to user_drv protocol has been changed to
	      be synchronous in order to guarantee that output sent to a
	      process implementing the user_drv protocol is printed before
	      replying. This protocol is used by the standard_output device
	      and the ssh application when acting as a client. 

	      This change changes the previous unlimited buffer when
	      printing to standard_io and other devices that end up in
	      user_drv to 1KB.

   OTP-12292  == erts ==

	      The notice that a crashdump has been written has been moved
	      to be printed before the crashdump is generated instead of
	      afterwords. The wording of the notice has also been changed.

   OTP-12585  == erts ==

	      Use persistent hashmaps for large Maps

	      Maps will use a persistent hashmap implementation when the
	      number of pairs in a Map becomes sufficiently large. The
	      change will occur when a Map reaches 33 pairs in size but
	      this limit might change in the future.

	      The most significant impact for the user by this change is
	      speed, and to a lesser degree memory consumption and
	      introspection of Maps. Memory consumption size is probalistic
	      but lesser than gb_trees or dict for instance. Any other
	      impacts will be transparent for the user except for the
	      following changes.

	      Semantics of Maps have changed in two incompatible ways
	      compared to the experimental implementation in OTP 17:

	      -- Hashing of maps is done different by erlang:phash2/1,2,
	      erlang:phash/1 and erlang:hash/2.

	      -- Comparing two maps with ==, /=, =<, <, >= and >, is done
	      different if the keys contain floating point numbers.

   OTP-12610  == erts ==

	      Scalability improvement for erlang:make_ref/0, and other
	      functionality that create references. Each scheduler now
	      manage its own set of references. By this no communication at
	      all is needed when creating references.

	      Previous implementation generated a strictly monotonically
	      increasing sequence of references corresponding to creation
	      time on the runtime system instance. This is not the case
	      with current implementation. You can only expect reference to
	      be unique. The Erlang/OTP documentation has never mentioned
	      anything else but the uniqueness property, so this change is
	      fully compatible. The only reason we've marked this as a
	      potential incompatibility is since an early draft for an
	      Erlang specification mentions strict monotonicity as a
	      property.

	      If you need to create data with a strict monotonicity
	      property use erlang:unique_integer([monotonic]). Do not use
	      the deprecated erlang:now().

--- otp -----------------------------------------------------------------

   OTP-11306  The type identifier() is documented in the reference manual,
	      in section Types and Function Specifications.

   OTP-12854  Change license text from Erlang Public License to Apache
	      Public License v2

--- asn1-4.0 ------------------------------------------------------------

   OTP-12395  Many bugs have been eliminated in the the ASN.1 compiler so
	      that it can now successfully compile many more ASN.1
	      specifications. Error messages have also been improved.

   OTP-12765  The documentation for asn1ct:test/1,2,3 and asn1ct:value/2
	      has been updated with information about the limitations of
	      the functions.

--- common_test-1.11 ----------------------------------------------------

   OTP-10446  Earlier there was no way to add optional parameters like
	      default-operation to an edit-config request sent with
	      ct_netconfc:edit_config/3,4, you had to use
	      ct_netconfc:send_rpc/2,3. For simplicity and completion, a
	      new optional argument, OptParams, is now added to the
	      edit_config function.

   OTP-10816  The status of an aborted test due to test suite compilation
	      error has changed from 'auto_skipped' to 'failed'. This
	      affects both the textual log file, event handling and CT hook
	      callbacks. The logging of compilation failures has also been
	      improved, especially in the case of multiple test suites
	      failing compilation.

   OTP-11962  When running OTP tests using the ts interface, it is now
	      possible to specify so called test categories per OTP
	      application. A test category is represented by a CT test
	      specification and defines an arbitrary subset of existing
	      test suites, groups and cases. Examples of test categories
	      are 'smoke' (smoke tests) and 'bench' (benchmarks). (Call
	      ts:help() for more info). Also, functions for reading terms
	      from the current test specification during test,
	      ct:get_testspec_terms/0 and ct:get_testspec_terms/1, have
	      been implemented.

   OTP-12421  Obsolete scripts and make file operations have been removed
	      and the installation chapter in the Common Test User's Guide
	      has been updated.

   OTP-12678  The 'keep_alive' interval has been reduced to 8 seconds,
	      which is two seconds shorter than the default 'idle_timeout'
	      value for ct_telnet:expect/3. This way, the telnet server
	      receives a NOP message (which might trigger an action) before
	      the operation times out. Also the TCP option 'nodelay' has
	      been enabled per default for all telnet connections, in order
	      to reduce the risk for communication timeouts.

   OTP-12684  When the ct_run program is executed without any flags, "-dir
	      ." is now used as default start flag. Similarly, the option
	      {dir,"."} is used by ct:run_test/1 if called with an empty
	      list. Also, the help text (ct_run -help) has been updated, as
	      well as the Running Tests chapter in the Common Test User's
	      Guide.

   OTP-12740  The Test Server source code parser (erl2html2) failed to
	      handle the macro tuple in the syntax tree returned by
	      epp_dodger. This error has been corrected.

   OTP-12809  New options to make it possible to specify ssh_port in a
	      .spec file: [{node_start, [{ssh_port, 9999}]}].

	      And also to specify additional ssh options like paths to
	      public-key files: [{node_start, [{ssh_opts, [{user_dir,
	      "/home/shrek/e2/"}]}]}].

--- compiler-6.0 --------------------------------------------------------

   OTP-11978  The cerl and cerl_trees modules in the compiler application
	      are now documented.

   OTP-12100  The deprecated 'asm' option has been removed.

   OTP-12218  Support variables as Map keys in expressions and patterns

	      Erlang will accept any expression as keys in Map expressions
	      and it will accept literals or bound variables as keys in Map
	      patterns.

   OTP-12253  Infer Map type information in beam_type compiler optimization
	      pass.

   OTP-12393  Compiler optimizations have been improved.

   OTP-12453  The compiler optimizes away building of terms that are never
	      actually used. As a result, the compiler in OTP 18 may
	      produce more warnings for terms that are built but not used
	      than the compiler in OTP 17.

   OTP-12497  Five undocumented functions in the module core_lib have been
	      deprecated and will be removed in the next major release. The
	      functions are: get_anno/{1,2}, is_literal/1,
	      is_literal_list/1, and literal_value. Use the appropriate
	      functions in the cerl module instead.

   OTP-12515  Using a map could incorrectly suppress warnings for unused
	      variables.

   OTP-12723  The compiler now properly reports unknown parse transforms.
	      That is, undef exceptions coming from the parse transform
	      itself is reported differently from the absence of the parse
	      transform.

   OTP-12758  Allow for 'creation of sub binary delayed' optimization if
	      maps instructions are in a clause.

   OTP-12774  Change some internal data structures to Maps in order to
	      speed up compilation time. Measured speed up is around
	      10%-15%.

   OTP-12844  Fix beam_bool pass for Maps instruction get_map_elements

	      Before beam_split the get_map_elements instruction is still
	      in blocks and the helper function in beam_jump did not
	      reflect this.

--- cosEvent-2.2 --------------------------------------------------------

   OTP-12687  Remove the usage of erlang:now() from all Corba applications
	      and use the new rand module instead of random.

--- cosEventDomain-1.2 --------------------------------------------------

   OTP-12687  Remove the usage of erlang:now() from all Corba applications
	      and use the new rand module instead of random.

--- cosFileTransfer-1.2 -------------------------------------------------

   OTP-12687  Remove the usage of erlang:now() from all Corba applications
	      and use the new rand module instead of random.

--- cosNotification-1.2 -------------------------------------------------

   OTP-12687  Remove the usage of erlang:now() from all Corba applications
	      and use the new rand module instead of random.

--- cosProperty-1.2 -----------------------------------------------------

   OTP-12687  Remove the usage of erlang:now() from all Corba applications
	      and use the new rand module instead of random.

--- cosTime-1.2 ---------------------------------------------------------

   OTP-12687  Remove the usage of erlang:now() from all Corba applications
	      and use the new rand module instead of random.

--- cosTransactions-1.3 -------------------------------------------------

   OTP-12687  Remove the usage of erlang:now() from all Corba applications
	      and use the new rand module instead of random.

--- crypto-3.6 ----------------------------------------------------------

   OTP-12380  Use the EVP API for AES-CBC crypto to enables the use of
	      hardware acceleration for AES-CBC crypto on newer Intel CPUs
	      (AES-NI), among other platforms.

   OTP-12394  Enhance crypto:generate_key to calculate ECC public keys from
	      private key.

   OTP-12403  Add AES ECB block encryption.

   OTP-12733  Fix bug in crypto:generate_key for ecdh that could cause VM
	      crash for faulty input.

--- debugger-4.1 --------------------------------------------------------

   OTP-12218  Support variables as Map keys in expressions and patterns

	      Erlang will accept any expression as keys in Map expressions
	      and it will accept literals or bound variables as keys in Map
	      patterns.

--- dialyzer-2.8 --------------------------------------------------------

   OTP-10280  The -dialyzer() attribute can be used for suppressing
	      warnings in a module by specifying functions or warning
	      options. It can also be used for requesting warnings in a
	      module.

   OTP-11445  The pre-defined types array(), dict(), digraph(), gb_set(),
	      gb_tree(), queue(), set(), and tid() have been removed.

   OTP-11851  A few type names that have been used for representing certain
	      predefined types can now be used for user-defined types. This
	      affects the types product/_, union/_, and range/2 as well as
	      tuple/N (N > 0), map/N (N > 0), atom/1, integer/1, binary/2,
	      record/_, and 'fun'/_. A consequence is that, for example, it
	      is no longer possible to refer to a record type with
	      record(r); instead the usual record notation, #r{}, is to be
	      used.

   OTP-11861  When implementing user-defined behaviours it is now possible
	      to specify optional callback functions. See OTP Design
	      Principles User's Guide, Sys and Proc_Lib, User-Defined
	      Behaviours, for details.

   OTP-12350  The translation of Erlang forms to the type representation
	      used by Dialyzer has been improved in several ways. The most
	      important change is that deeply nested records can be
	      handled.

   OTP-12493  Fix a bug that could cause bogus warnings for opaque types.

	      In Erlang/OTP 18 two parameterized types declared in the same
	      module always result in a contradiction (none()) when
	      combined outside of the module where they are declared,
	      unless they have the same number of parameters.

	      The behaviour is different from Erlang/OTP 17 where, for
	      instance, dict:dict() and dict:dict(_, _), which are both
	      opaque, can be combined outside of the dict module.

	      In Erlang/OTP 18, dict:dict() and dict:dict(_, _) can still
	      be combined outside of the dict module. That has been made
	      possible by not declaring dict:dict() as opaque.

   OTP-12637  Update the PLT properly when a module is changed. (Thanks to
	      James Fish for the bug report, and to Stavros Aronis for
	      fixing the bug.)

   OTP-12682  Add two options to the Dialyzer: no_missing_calls suppresses
	      warnings about calls to missing or unexported functions;
	      unknown lets warnings about unknown functions or types affect
	      the exit status. See also dialyzer(3).

   OTP-12725  An argument of '*'/2 is not constraind if the other operand
	      can be zero.

   OTP-12750  Mention the option check_plt among the dialyzer:gui()
	      options. (Thanks to James Fish.)

   OTP-12779  By default, dialyzer will now cache native versions of
	      dialyzer modules to avoid having to re-compile them each time
	      dialyzer is started. Caching can be disabled using the option
	      --no_native_cache.

   OTP-12826  Fix a bug which could cause an infinite loop in Dialyzer.

--- diameter-1.10 -------------------------------------------------------

   OTP-12721  Fix decode of Grouped AVPs containing errors.

	      RFC 6733 says this of Failed-AVP in 7.5:

	      -- 

	      In the case where the offending AVP is embedded within a
	      Grouped AVP, the Failed-AVP MAY contain the grouped AVP,
	      which in turn contains the single offending AVP. The same
	      method MAY be employed if the grouped AVP itself is embedded
	      in yet another grouped AVP and so on. In this case, the
	      Failed-AVP MAY contain the grouped AVP hierarchy up to the
	      single offending AVP. This enables the recipient to detect
	      the location of the offending AVP when embedded in a group.

	      It says this of DIAMETER_INVALID_AVP_LENGTH in 7.1.5:

	      -- 

	      The request contained an AVP with an invalid length. A
	      Diameter message indicating this error MUST include the
	      offending AVPs within a Failed-AVP AVP. In cases where the
	      erroneous AVP length value exceeds the message length or is
	      less than the minimum AVP header length, it is sufficient to
	      include the offending AVP header and a zero filled payload of
	      the minimum required length for the payloads data type. If
	      the AVP is a Grouped AVP, the Grouped AVP header with an
	      empty payload would be sufficient to indicate the offending
	      AVP. In the case where the offending AVP header cannot be
	      fully decoded when the AVP length is less than the minimum
	      AVP header length, it is sufficient to include an offending
	      AVP header that is formulated by padding the incomplete AVP
	      header with zero up to the minimum AVP header length.

	      The AVPs placed in the errors field of a diameter_packet
	      record are intended to be appropriate for inclusion in a
	      Failed-AVP, but neither of the above paragraphs has been
	      followed in the Grouped case: the entire faulty AVP
	      (non-faulty components and all) has been included. This made
	      it difficult to identify the actual faulty AVP in all but
	      simple cases.

	      The decode is now adapted to the RFC, and implements the
	      suggested single faulty AVP, nested in as many Grouped
	      containers as required.

   OTP-12768  Fix SCTP problems on Solaris.

	      The allocation of association ids in Solaris was in conflict
	      with an assumption made in diameter_sctp, resulting in
	      failures when accepting multiple peer connections.

   OTP-12845  Change license text from Erlang Public License to Apache
	      Public License v2

   OTP-12851  Fix start order of alternate transports.

	      A transport configured with diameter:add_transport/2 can be
	      passed multiple transport_module/transport_config tuples in
	      order to specify alternate configuration, modules being
	      attempted in order until one succeeds. This is primarily for
	      the connecting case; for example, to allow a transport to be
	      configured to first attempt connection over SCTP, and then
	      TCP in case SCTP fails. Multiple module tuples can be paired
	      with a single config tuple, but in this case the start order
	      was reversed relative to the order in which the modules were
	      specifed.

--- edoc-0.7.17 ---------------------------------------------------------

   OTP-12431  Remove functionality related to packages

--- eldap-1.2 -----------------------------------------------------------

   OTP-12282  Support added for LDAP Password Modify Extended Operation
	      (RFC 3062). Thanks to danielwhite.

--- erl_docgen-0.4 ------------------------------------------------------

   OTP-12722  Add possibility to add extra information on documentation
	      front pages.

--- erl_interface-3.8 ---------------------------------------------------

   OTP-12801  Do not accept Nan and Infinity values

	      Erlang does not accept these values, so we return an error in
	      the C interface rather than letting them through to the
	      Erlang VM, which rejects the message with a somewhat cryptic
	      "bad external term".

--- erts-7.0 ------------------------------------------------------------

   OTP-11905  Fix issuing with spaces and quoting in the arguments when
	      using erlang:open_port spawn_executable on windows. The
	      behavior now mimics how unix works. This change implies a
	      backwards incompatibility for how spawn_executable works on
	      windows.

   OTP-11939  Fix global call trace when hipe compiled code call beam
	      compiled functions. Tracing of beam functions should now
	      alway work regardless who the caller is.

   OTP-11940  Add md5 and module entries to ?MODULE:module_info/0/1 and
	      remove obsolete entry 'import'.

   OTP-11941  Debug function erlang:display/1 shows content of binaries and
	      bitstrings, not only the length.

   OTP-11974  Correct cache alignment for ETS write_concurrency locks to
	      improve performance by reduced false sharing. May increase
	      memory footprint for tables with write_concurrency.

   OTP-11997  The time functionality of Erlang has been extended. This both
	      includes a new API for time, as well as time warp modes which
	      alters the behavior of the system when system time changes.
	      You are strongly encouraged to use the new API instead of the
	      old API based on erlang:now/0. erlang:now/0 has been
	      deprecated since it is and forever will be a scalability
	      bottleneck. For more information see the Time and Time
	      Correction chapter of the ERTS User's Guide.

	      Besides the API changes and time warp modes a lot of
	      scalability and performance improvements regarding time
	      management has been made internally in the runtime system.
	      Examples of such improvements are scheduler specific timer
	      wheels, scheduler specific BIF timer management, parallel
	      retrieval of monotonic time and system time on systems with
	      primitives that are not buggy.

   OTP-12099  erlang:function_exported(M, F, A) will now return true if
	      M:F/A refers to a BIF.

   OTP-12151  New BIF: erlang:get_keys/0, lists all keys associated with
	      the process dictionary. Note: erlang:get_keys/0 is
	      auto-imported.

   OTP-12232  Make distributed send of large messages yield to improve
	      real-time characteristics.

   OTP-12236  Use high accuracy poll timeouts

	      Where available, use poll/select API's that can handle time
	      resolutions less than 1ms. In the cases where such API's are
	      not available the timeout is rounded up to the nearest ms.

   OTP-12239  All possibly blocking operations in the fd/spawn and terminal
	      driver have been converted to non-blocking operations. Before
	      this fix it was possible for the VM to be blocked for a long
	      time if the entity consuming stdout/stderr did not consume it
	      fast enough.

   OTP-12240  The internal group to user_drv protocol has been changed to
	      be synchronous in order to guarantee that output sent to a
	      process implementing the user_drv protocol is printed before
	      replying. This protocol is used by the standard_output device
	      and the ssh application when acting as a client. 

	      This change changes the previous unlimited buffer when
	      printing to standard_io and other devices that end up in
	      user_drv to 1KB.

   OTP-12254  The previously introduced "eager check I/O" feature is now
	      enabled by default.

	      Eager check I/O can be disabled using the erl command line
	      argument: +secio false

	      Characteristics impact compared to previous default:

	      -- Lower latency and smoother management of externally
	      triggered I/O operations.

	      -- A slightly reduced priority of externally triggered I/O
	      operations.

   OTP-12270  Properly support maps in match_specs

   OTP-12292  The notice that a crashdump has been written has been moved
	      to be printed before the crashdump is generated instead of
	      afterwords. The wording of the notice has also been changed.

   OTP-12309  New function ets:take/2. Works the same as ets:delete/2 but
	      also returns the deleted object(s).

   OTP-12366  Tracing with cpu_timestamp option has been enabled on Linux.

   OTP-12376  ets:info/1,2 now contains information about whether
	      write_concurrency or read_concurrency is enabled.

   OTP-12377  Crashdumps have been expanded to include:

	      -- Stack trace of currently running process (including
	      processes that are being garbage collected)

	      -- Data about the state of the erts schedulers

	      -- Extended statistics about ets tables of the types; set,
	      bag or dublicate_bag.

	      -- All configurable options for ets tables

	      For more detailed information see How to interpret the Erlang
	      crash dumps in the ERTS User's Guide.

   OTP-12383  Improved usage of gcc's builtins for atomic memory access.
	      These are used when no other implementation of atomic memory
	      operations is available. For example, when compiling for ARM
	      when libatomic_ops is not available.

	      The largest improvement will be seen when compiling with a
	      gcc with support for the __atomic_* builtins (using a gcc of
	      at least version 4.7), but also when only the legacy __sync_*
	      builtins are available (using a gcc of at least version 4.1)
	      an improvement can be seen.

	      For more information see the "Atomic Memory Operations and
	      the VM" section of $ERL_TOP/HOWTO/INSTALL.md.

   OTP-12411  Introduce math:log2/1 function to math module.

   OTP-12492  The documentation of the Abstract Format (in the ERTS User's
	      Guide) has been updated with types and specification. (Thanks
	      to Anthony Ramine.)

	      The explicit representation of parentheses used in types of
	      the abstract format has been removed. Instead the new
	      functions erl_parse:type_inop_prec() and
	      erl_parse:type_preop_prec() can be used for inserting
	      parentheses where needed.

   OTP-12508  Remove perfctr support

	      Development of perfctr in the linux kernel ceased in 2010.
	      The perfctr support code in the Erlang VM is thus effectively
	      dead code and therefor removed.

   OTP-12548  zlib:inflateChunk/2 has been added. It works like
	      zlib:inflate/2, but decompresses no more data than will fit
	      in the buffer configured by zlib:setBufSize/2.

   OTP-12554  Add missing overhead for offheap binaries created from
	      external format. This fix can improve the garbage collection
	      of large binaries originating from binary_to_term or messages
	      from remote nodes.

   OTP-12555  Use linear search for small select_val arrays

   OTP-12563  New BIF ets:update_counter/4 with a default object as
	      argument, which will be inserted in the table if the key was
	      not found.

   OTP-12584  Export missing types from zlib module

   OTP-12585  Use persistent hashmaps for large Maps

	      Maps will use a persistent hashmap implementation when the
	      number of pairs in a Map becomes sufficiently large. The
	      change will occur when a Map reaches 33 pairs in size but
	      this limit might change in the future.

	      The most significant impact for the user by this change is
	      speed, and to a lesser degree memory consumption and
	      introspection of Maps. Memory consumption size is probalistic
	      but lesser than gb_trees or dict for instance. Any other
	      impacts will be transparent for the user except for the
	      following changes.

	      Semantics of Maps have changed in two incompatible ways
	      compared to the experimental implementation in OTP 17:

	      -- Hashing of maps is done different by erlang:phash2/1,2,
	      erlang:phash/1 and erlang:hash/2.

	      -- Comparing two maps with ==, /=, =<, <, >= and >, is done
	      different if the keys contain floating point numbers.

   OTP-12610  Scalability improvement for erlang:make_ref/0, and other
	      functionality that create references. Each scheduler now
	      manage its own set of references. By this no communication at
	      all is needed when creating references.

	      Previous implementation generated a strictly monotonically
	      increasing sequence of references corresponding to creation
	      time on the runtime system instance. This is not the case
	      with current implementation. You can only expect reference to
	      be unique. The Erlang/OTP documentation has never mentioned
	      anything else but the uniqueness property, so this change is
	      fully compatible. The only reason we've marked this as a
	      potential incompatibility is since an early draft for an
	      Erlang specification mentions strict monotonicity as a
	      property.

	      If you need to create data with a strict monotonicity
	      property use erlang:unique_integer([monotonic]). Do not use
	      the deprecated erlang:now().

   OTP-12613  Enable different abort signal from heart

	      By using environment variable HEART_KILL_SIGNAL, heart can
	      now use a different signal to kill the old running Erlang.

	      By default the signal is SIGKILL but SIGABRT may also be used
	      by setting environment variable: HEART_KILL_SIGNAL=SIGABRT

   OTP-12641  Ensure hashing of zero is consistent

	      Erlang treats positive and negative zero as equal: 

	      true = 0.0 =:= 0.0/-1

	      However, Erlangs hash functions: hash, phash and phash2 did
	      not reflect this behaviour. The hash values produced by the
	      different hash functions would not be identical for positive
	      and negative zero.

	      This change ensures that hash value of positive zero is
	      always produced regardless of the signedness of the zero
	      float, i.e.,

	      true = erlang:phash2(0.0) =:= erlang:phash2(0.0/-1)

   OTP-12646  Update autconf to latest version 2015-03-04

   OTP-12650  Optimization of timers internally in the VM. This include
	      process timers (receive ... after), port timers
	      (driver_set_timer()) as well as BIF timers
	      (erlang:send_after()/erlang:start_timer()).

	      Each scheduler thread now has its own lock-free timer service
	      instead of one locked central service. This dramatically
	      improves performance of timer management on systems with a
	      large amount of schedulers and timers.

	      The timer service internal data structure has also been
	      optimized to be able to handle more timers than before. That
	      is, each timer service is by its self able to handle more
	      timers without dramatic performance loss than the old
	      centralized timer service.

	      The API of BIF timers has also been extended. Timeout values
	      are for example no longer limited to 32-bit integers. For
	      more information see the documentation of
	      erlang:start_timer/4, erlang:send_after/4,
	      erlang:cancel_timer/2, and erlang:read_timer/2.

	      Characteristics impact: Calls to the synchronous versions of
	      erlang:cancel_timer(), and erlang:read_timer() may take
	      substantially longer time to complete than before. This occur
	      when the timer that is accessed is managed by a remote
	      scheduler. You typically want to use the new asynchronous
	      option in order to avoid blocking the calling process.

   OTP-12655  Ensure NIF term creation disallows illegal floating point
	      values and too long atoms. Such values will cause a NIF to
	      throw badarg exception when it returns.

   OTP-12656  Fixed building of Map results from match_specs

	      A faulty "box-value" entered into the heap which could cause
	      a segmentation fault in the garbage collector if it was
	      written on a heap fragment.

   OTP-12667  Fix hipe bug when matching a "writable" binary. The bug has
	      been seen to sometimes cause a failed binary matching of a
	      correct utf8 character, but other symptoms are also possible.

   OTP-12685  Keep dirty schedulers from waking other schedulers.

   OTP-12690  Specialize instructions from common assembler patterns

	      Specialize common instructions of rem, band, minus and plus
	      in the beam loader. This will reduce the number of fetches
	      and thus lessen the instruction dispatch pressure during
	      runtime and speed up those operations in some common cases.

	      Specialize move patterns from x-registers to the stack with a
	      new move_window instruction. This change will reduce
	      instruction dispatch pressure.

   OTP-12693  Fix cross compilation for Android.

   OTP-12706  Fix incorrect use of autoconf macro AC_EGREP_CPP, which could
	      cause faulty configuration if run from a path containing the
	      string 'yes'.

   OTP-12715  Minimal Java version is now 1.6

   OTP-12717  Disable floating point exceptions if the VM is compiled by
	      clang/llvm. This is a known long-standing problem in
	      clang/llvm.

   OTP-12720  Fix bug in file:sendfile for FreeBSD causing not the entire
	      file to be sent.

   OTP-12735  Send format and args on process exit to error_logger

	      Previously, the emulator would generate a whole string with
	      values and call the error_logger passing "~s~n". This changes
	      it to a format string containing ~p with the respective
	      values as arguments.

   OTP-12751  Fix the broken Android support in erl_child_setup.c

   OTP-12755  Map error logger warnings to warning messages by default.

   OTP-12761  Configure architecture ppc64le architecture as a ppc64

   OTP-12766  Faulty statistics reported by the fix_alloc allocator.

   OTP-12770  Add function enif_raise_exception to allow a NIF to raise an
	      error exception with any type of reason.

   OTP-12771  Fix two erts_snprintf() calls to correct sizes.

	      - run_erl.c (ose): Use the size of the signal type, not its
	      pointer. - erl_node_tables.c: Use the size of the _BUFFER in
	      erts_snprintf() to make sure we can use the full space.

   OTP-12777  Optimized node table statistics retrieval.

   OTP-12781  Map beam error logger warnings to warning messages by
	      default. Previously these messages were mapped to the error
	      channel by default.

   OTP-12797  gen_tcp:shutdown/2 is now asynchronous

	      This solves the following problems with the old
	      implementation:

	      It doesn't block when the TCP peer is idle or slow. This is
	      the expected behaviour when shutdown() is called: the caller
	      needs to be able to continue reading from the socket, not be
	      prevented from doing so.

	      It doesn't truncate the output. The current version of
	      gen_tcp:shutdown/2 will truncate any outbound data in the
	      driver queue after about 10 seconds if the TCP peer is idle
	      of slow. Worse yet, it doesn't even inform anyone that the
	      data has been truncated: 'ok' is returned to the caller; and
	      a FIN rather than an RST is sent to the TCP peer.

   OTP-12802  Introduced delayed node table GC. This in order to avoid
	      oscillation of entries in and out of the tables. The
	      oscillation caused unnecessary lock contention on the table
	      locks. The delay length can be set by passing the +zdntgc
	      command line argument.

	      Characteristics impact: The tables can grow to very large
	      sizes with unused entries if the node is get huge amounts of
	      short lived connections from other nodes. This problem can be
	      alleviated by shortening the length of the delay using the
	      +zdntgc command line argument.

   OTP-12812  Delayed memory allocations could be delayed an unnecessarily
	      long time.

   OTP-12817  Make sure that timeouts on a pool of acceptors are released
	      in the correct order.

   OTP-12820  Fix segmentation fault in module_info for deleted modules

   OTP-12821  Fix garbage collection of literals in code purge

	      During code purging and check_process_code, the checking of
	      the binary reference embedded in the match binary state was
	      omitted for the tracing tests. This would cause the binary
	      match state to reference deallocated memory.

   OTP-12840  A bug has been corrected for gen_tcp:close so when
	      {linger,{true,0}} is in effect it does not wait for data in
	      the driver queue to transfer out before closing the port. Bug
	      fix by Rory Byrne.

   OTP-12842  Improved implementation of erlang:statistics(io) in order to
	      reduce contention between schedulers.

	      Characteristics impact: The actual call to
	      erlang:statistics(io) takes longer time to complete, but the
	      overall impact on the system is improved.

   OTP-12843  There are many cases where user code needs to be able to
	      distinguish between a socket that was closed normally and one
	      that was aborted. Setting the option {show_econnreset, true}
	      enables the user to receive ECONNRESET errors on both active
	      and passive sockets.

   OTP-12849  Do not preallocate too large event pool

	      A default pool size of 4000 is too excessive for the common
	      case. This corresponds directly to the number of threads in
	      the system. Change ERTS_TS_EV_ALLOC_DEFAULT_POOL_SIZE to
	      2048. Change ERTS_TS_EV_ALLOC_POOL_SIZE to 32.

   OTP-12855  The documentation of the driver callback start() erroneously
	      stated that a return value of ERL_DRV_ERROR_ERRNO caused the
	      error value to be passed via erl_errno when it should have
	      been errno.

--- et-1.5.1 ------------------------------------------------------------

   OTP-12780  The et application must continue to use erlang:now/0 in order
	      to obtain timestamps that are consistent with timestamps
	      obtained from tracing. The application has been updated to
	      suppress the warning for erlang:now/0.

--- eunit-2.2.10 --------------------------------------------------------

   OTP-11660  The eunit application is now unicode safe.

--- gs-1.6 --------------------------------------------------------------

   OTP-12845  Change license text from Erlang Public License to Apache
	      Public License v2

--- hipe-3.12 -----------------------------------------------------------

   OTP-12666  Fix a minor bug in the handling of opaque types.

   OTP-12667  Fix hipe bug when matching a "writable" binary. The bug has
	      been seen to sometimes cause a failed binary matching of a
	      correct utf8 character, but other symptoms are also possible.

   OTP-12794  Allow use of complete interface of cerl_pmatch module

   OTP-12816  Optimizations and code cleanup in hipe code loader.

--- ic-4.4 --------------------------------------------------------------

   OTP-12845  Change license text from Erlang Public License to Apache
	      Public License v2

--- inets-6.0 -----------------------------------------------------------

   OTP-11845  Fix race condition in httpc. If the socket is closed by the
	      peer do not try to close it again.

   OTP-12156  Remove Server Side Include support from inets, as this is an
	      old technic that has security issues and was not well tested.

   OTP-12362  Avoid process leak by gracefully terminating httpc request
	      handler process when send operation fails.

   OTP-12674  To enable the HTTP server to run in a virtualized
	      environment, where there can be more that one server that has
	      the same ip-address and port, we add a new option profile.

   OTP-12798  Let gen_tcp:controlling_process/2 and inet_sctp:connect/[45]
	      propagate prim_inet:setopt/3 errors instead of having them
	      generate badmatch exceptions.

   OTP-12803  httpc: Fix implementation of gracefull shudown to work as
	      intended for keep alive connections not using pipelining.

   OTP-12822  Correct handling of proxy options when using persistent
	      connections.

--- jinterface-1.6 ------------------------------------------------------

   OTP-12333  Reformat the sources for JInterface uniformly and according
	      to the standard Java style guidelines. Provide description of
	      the rules applied in Eclipse format (for other editors one
	      can check the settings against these).

	      In short, the formatting style is: * indentation uses only
	      spaces; each level is 4 positions * no trailing whitespace *
	      mostly default Java style formatting (any difference is
	      minor) * always use {} blocks * use 'final' as much as
	      possible

   OTP-12686  Add basic transport factory implementation. This makes
	      possible creating connections between nodes using ssh
	      channels for example.

   OTP-12691  Add Jinterface generic match and bind methods to provide low
	      level interface base methods sufficient for variety of higher
	      level pattern matching/variable binding implementations.

   OTP-12715  Minimal Java version is now 1.6

   OTP-12746  Remove extra @param in javadoc as this gives an error when
	      building the docs in java 1.8

--- kernel-4.0 ----------------------------------------------------------

   OTP-12144  Fix error handling in file:read_line/1 for Unicode contents.

   OTP-12151  New BIF: erlang:get_keys/0, lists all keys associated with
	      the process dictionary. Note: erlang:get_keys/0 is
	      auto-imported.

   OTP-12240  The internal group to user_drv protocol has been changed to
	      be synchronous in order to guarantee that output sent to a
	      process implementing the user_drv protocol is printed before
	      replying. This protocol is used by the standard_output device
	      and the ssh application when acting as a client. 

	      This change changes the previous unlimited buffer when
	      printing to standard_io and other devices that end up in
	      user_drv to 1KB.

   OTP-12342  Introduce os:getenv/2 which is similar to os:getenv/1 but
	      returns the passed default value if the required environment
	      variable is undefined.

   OTP-12564  The inflateInit/2 and deflateInit/6 functions now accepts a
	      WindowBits argument equal to 8 and -8.

   OTP-12673  It is now possible to paste text in JCL mode (using Ctrl-Y)
	      that has been copied in the previous shell session. Also a
	      bug that caused the JCL mode to crash when pasting text has
	      been fixed.

   OTP-12755  Map error logger warnings to warning messages by default.

   OTP-12773  Ensure that each segment of an IPv6 address when parsed from
	      a string has a maximum of 4 hex digits

   OTP-12781  Map beam error logger warnings to warning messages by
	      default. Previously these messages were mapped to the error
	      channel by default.

   OTP-12797  gen_tcp:shutdown/2 is now asynchronous

	      This solves the following problems with the old
	      implementation:

	      It doesn't block when the TCP peer is idle or slow. This is
	      the expected behaviour when shutdown() is called: the caller
	      needs to be able to continue reading from the socket, not be
	      prevented from doing so.

	      It doesn't truncate the output. The current version of
	      gen_tcp:shutdown/2 will truncate any outbound data in the
	      driver queue after about 10 seconds if the TCP peer is idle
	      of slow. Worse yet, it doesn't even inform anyone that the
	      data has been truncated: 'ok' is returned to the caller; and
	      a FIN rather than an RST is sent to the TCP peer.

   OTP-12843  There are many cases where user code needs to be able to
	      distinguish between a socket that was closed normally and one
	      that was aborted. Setting the option {show_econnreset, true}
	      enables the user to receive ECONNRESET errors on both active
	      and passive sockets.

--- megaco-3.18 ---------------------------------------------------------

   OTP-12762  The runtime dependencies in the application resource file
	      have been updated.

--- mnesia-4.13 ---------------------------------------------------------

   OTP-12481  Make Mnesia DCD dump behavior at start up optional, when
	      turned off mnesia loads large disc_copies tables faster.

   OTP-12714  Mnesia's dirty functions did not always exit with {aborted,
	      Reason} as documented when an error occurred.

   OTP-12807  Consider file descriptors limits (emfile) as a fatal error
	      and do not delete log files. Previously the error was seen as
	      a corrupted disk and the log files deleted which caused data
	      loss.

--- observer-2.1 --------------------------------------------------------

   OTP-12363  Added display of new crashdump information available in
	      crashdumps from Erlang/OTP 18.

   OTP-12401  Show run queue status in crashdump viewer.

   OTP-12504  Added the possibility to view sasl log entries for processes.

   OTP-12631  Add memory allocator usage and utilization graphs.

   OTP-12819  Don't refresh observer table view if there was no change

--- odbc-2.11 -----------------------------------------------------------

   OTP-12845  Change license text from Erlang Public License to Apache
	      Public License v2

--- orber-3.8 -----------------------------------------------------------

   OTP-12687  Remove the usage of erlang:now() from all Corba applications
	      and use the new rand module instead of random.

--- os_mon-2.4 ----------------------------------------------------------

   OTP-12730  cpu_sup should use native sysctl/libkvm calls on BSD

	      This avoids forking off with os:cmd every time we just want
	      to collect the load averages. riak does this every second,
	      which results in a lot of unnecessary load.

   OTP-12796  Implement native cpu_sup:util/0,1 for FreeBSD

--- ose-1.1 -------------------------------------------------------------

   OTP-12845  Change license text from Erlang Public License to Apache
	      Public License v2

--- otp_mibs-1.1 --------------------------------------------------------

   OTP-12845  Change license text from Erlang Public License to Apache
	      Public License v2

--- parsetools-2.1 ------------------------------------------------------

   OTP-12271  The new -dialyzer() attribute is used for suppressing
	      Dialyzer warnings in generated code.

--- percept-0.8.11 ------------------------------------------------------

   OTP-12662  Fix http server configuration

--- public_key-1.0 ------------------------------------------------------

   OTP-12110  public_key: Remove legacy switch compact_bit_string

	      E.i bitstrings will not be decode as {Unused, Binary}, they
	      are now Erlang bitstrings.

	      Also the compact_bit_string implies the legacy_erlang_types
	      switch So removing the switch will also make OCTET STRING
	      values be represented as binaries.

	      Undecoded open type will now be wrapped in a asn1_OPENTYPE
	      tuple.

	      This will change some values in records returned by the
	      public_key API making this change a potentiall
	      incompatibility.

--- reltool-0.7 ---------------------------------------------------------

   OTP-12845  Change license text from Erlang Public License to Apache
	      Public License v2

--- runtime_tools-1.9 ---------------------------------------------------

   OTP-12845  Change license text from Erlang Public License to Apache
	      Public License v2

--- sasl-2.5 ------------------------------------------------------------

   OTP-11540  The undocumented upgrade instruction
	      <code>{remove_module,PrePurge,PostPurge,DepMods}</code> is
	      removed. This instruction was added for symmetry reasons in
	      OTP R7B, but was never documented or tested.

	      The existing instruction
	      <code>{add_module,Mod,DepMods}</code> is now documented, and
	      the complementing instruction
	      <code>{delete_module,Mod,DepMods}</code> is added.

   OTP-12778  The sasl_error_logger configuration parameter now supports
	      the value {file,FileName,Modes} which allows the log file to
	      be opened in other mode than write (for example, append
	      mode).

--- snmp-5.2 ------------------------------------------------------------

   OTP-12762  The runtime dependencies in the application resource file
	      have been updated.

--- ssh-4.0 -------------------------------------------------------------

   OTP-11697  Better usage of binary matching in ssh_auth.erl and
	      ssh_message.erl

   OTP-12029  A new option 'preferred_algorithms' is available for
	      ssh:daemon and ssh:connect.

	      This option defines the algorithms presented to the peer in
	      the algorithm negotiation phase of the ssh protocol. 

	      The default list can be obtained from the new function
	      ssh:default_algorithms/0.

   OTP-12240  The internal group to user_drv protocol has been changed to
	      be synchronous in order to guarantee that output sent to a
	      process implementing the user_drv protocol is printed before
	      replying. This protocol is used by the standard_output device
	      and the ssh application when acting as a client. 

	      This change changes the previous unlimited buffer when
	      printing to standard_io and other devices that end up in
	      user_drv to 1KB.

   OTP-12648  If ssh_connection:subsystem/4 fails we terminates gracefully.

   OTP-12649  Included test of the 'e' and 'f' parameters in diffie-hellman
	      key exchange as specified in rfc 4253 section 8.

   OTP-12675  To enable the ssh daemon to run in a virtualized environment,
	      where there can be more that one server that has the same
	      ip-address and port, we add a new option profile.

   OTP-12676  Upgrade test suite added.

   OTP-12692  Fixes the bug that once the rekey_limit bytes (by default,
	      1GB) had been transmitted the connection was rekeyed every
	      minute, not after the next transferred 'rekey_limit' chunk.

	      Thanks to Simon Cornish for the report and the fix!

   OTP-12708  Fixes a bug that causes an SFTP connection to always fail
	      when {timeout, Timeout} option is used with
	      ssh_sftp:start_channel.

	      Thanks to Simon Cornish

   OTP-12760  Fix various ssh key exchange problems.

	      Thanks to Simon Cornish

   OTP-12786  Testcase improvements and corrections:

	      * Add testcases for the disconnectfun option on both server
	      and client sides

	      * Timeout testcases adjusted for slow machines where they
	      sometimes failed

   OTP-12788  The options system_dir and user_dir assumes that the value is
	      a path to a directory which is readable. This is now checked
	      early, so ssh:daemon and ssh:connect will fail with an error
	      message immediately.

   OTP-12789  The option disconnectfun can now be used both on the client
	      and server side.

   OTP-12790  A daemon now checks that a client doesn't try to authorize
	      with methods not in the option auth_methods.

   OTP-12811  Disconnectfun now triggers on all disconnects.

   OTP-12813  A new option unknown_msgfun/2 for ssh:connect and ssh:daemon
	      for handling unknown messages. With the option it is possible
	      to intercept before an INFO log message is generated.

	      One usage is to filter out messages that are not wanted in
	      the error logger as info reports. An example of such a
	      message is the 'etimedout' tcp error message that will be
	      received if a connection has keep_alive and the peer is
	      restarted.

--- ssl-7.0 -------------------------------------------------------------

   OTP-10362  Add new API functions to handle CRL-verification

   OTP-12390  Remove default support for SSL-3.0, due to Poodle vunrability
	      in protocol specification.

	      Add padding check for TLS-1.0 to remove Poodle vunrability
	      from TLS 1.0, also add the option padding_check. This option
	      only affects TLS-1.0 connections and if set to false it
	      disables the block cipher padding check to be able to
	      interoperate with legacy software.

	      Remove default support for RC4 cipher suites, as they are
	      consider too weak.

   OTP-12580  Add support for TLS ALPN (Application-Layer Protocol
	      Negotiation) extension.

   OTP-12670  Ignore signature_algorithm (TLS 1.2 extension) sent to TLS
	      1.0 or TLS 1.1 server

   OTP-12736  Add SNI (Server Name Indication) support for the server side.

   OTP-12799  Improve error handling in TLS distribution module to avoid
	      lingering sockets.

   OTP-12815  Add option {client_renegotiation, boolean()} option to the
	      server-side of the SSL application.

   OTP-12829  Gracefully ignore proprietary hash_sign algorithms

--- stdlib-2.5 ----------------------------------------------------------

   OTP-11043  Allow maps for supervisor flags and child specs

	      Earlier, supervisor flags and child specs were given as
	      tuples. While this is kept for backwards compatibility, it is
	      now also allowed to give these parameters as maps, see
	      sup_flags and child_spec.

   OTP-11173  A new system message, terminate, is added. This can be sent
	      with sys:terminate/2,3. If the receiving process handles
	      system messages properly it will terminate shortly after
	      receiving this message.

	      The new function proc_lib:stop/1,3 utilizes this new system
	      message and monitors the receiving process in order to
	      facilitate a synchronous stop mechanism for 'special
	      processes'.

	      proc_lib:stop/1,3 is used by the following functions:

	      -- gen_server:stop/1,3 (new)

	      -- gen_fsm:stop/1,3 (new)

	      -- gen_event:stop/1,3 (modified to be synchronous)

	      -- wx_object:stop/1,3 (new)

   OTP-11907  Remove the pg module, which has been deprecated through
	      OTP-17, is now removed from the STDLIB application. This
	      module has been marked experimental for more than 15 years,
	      and has largely been superseded by the pg2 module from the
	      Kernel application.

   OTP-12151  New BIF: erlang:get_keys/0, lists all keys associated with
	      the process dictionary. Note: erlang:get_keys/0 is
	      auto-imported.

   OTP-12158  Fix handling of single dot in filename:join/2

	      The reference manual says that filename:join(A,B) is
	      equivalent to filename:join([A,B]). In some rare cases this
	      turns out not to be true. For example:

	      filename:join("/a/.","b") -> "/a/./b" vs
	      filename:join(["/a/.","b"]) -> "/a/b".

	      This has been corrected. A single dot is now only kept if it
	      occurs at the very beginning or the very end of the resulting
	      path.

   OTP-12167  Add three new functions to io_lib-- scan_format/2,
	      unscan_format/1, and build_text/1-- which expose the parsed
	      form of the format control sequences to make it possible to
	      easily modify or filter the input to io_lib:format/2. This
	      can e.g. be used in order to replace unbounded-size control
	      sequences like ~w or ~p with corresponding depth-limited ~W
	      and ~P before doing the actual formatting.

   OTP-12183  The undocumented option generic_debug for gen_server has been
	      removed.

   OTP-12186  erl_lint:icrt_export/4 has been rewritten to make the code
	      really follow the scoping rules of Erlang, and not just in
	      most situations by accident.

   OTP-12195  Introduce the erl_anno module, an abstraction of the second
	      element of tokens and tuples in the abstract format.

   OTP-12218  Support variables as Map keys in expressions and patterns

	      Erlang will accept any expression as keys in Map expressions
	      and it will accept literals or bound variables as keys in Map
	      patterns.

   OTP-12257  The last traces of Mnemosyne Rules have been removed.

   OTP-12270  Properly support maps in match_specs

   OTP-12301  Add 'trim_all' option to binary:split/3

	      This option can be set to remove _ALL_ empty parts of the
	      result of a call to binary:split/3.

   OTP-12309  New function ets:take/2. Works the same as ets:delete/2 but
	      also returns the deleted object(s).

   OTP-12376  ets:info/1,2 now contains information about whether
	      write_concurrency or read_concurrency is enabled.

   OTP-12422  string:tokens/2 is somewhat faster, especially if the list of
	      separators only contains one separator character.

   OTP-12492  The documentation of the Abstract Format (in the ERTS User's
	      Guide) has been updated with types and specification. (Thanks
	      to Anthony Ramine.)

	      The explicit representation of parentheses used in types of
	      the abstract format has been removed. Instead the new
	      functions erl_parse:type_inop_prec() and
	      erl_parse:type_preop_prec() can be used for inserting
	      parentheses where needed.

   OTP-12566  Prevent zip:zip_open/[12] from leaking file descriptors if
	      parent process dies.

   OTP-12586  Add a new random number generator, see rand module. It have
	      better characteristics and an improved interface.

   OTP-12651  Correct orddict(3) regarding evaluation order of fold() and
	      map().

   OTP-12657  Correct maps module error exceptions 

	      Bad input to maps module function will now yield the
	      following exceptions:

	      -- {badmap,NotMap} or,

	      -- badarg

   OTP-12673  It is now possible to paste text in JCL mode (using Ctrl-Y)
	      that has been copied in the previous shell session. Also a
	      bug that caused the JCL mode to crash when pasting text has
	      been fixed.

   OTP-12716  filename:split/1 when given an empty binary will now return
	      an empty list, to make it consistent with return value when
	      given an empty list.

   OTP-12737  Add sync option to ets:tab2file/3.

   OTP-12742  Add functions gb_sets:iterator_from() and
	      gb_trees:iterator_from(). (Thanks to Kirill Kinduk.)

   OTP-12745  Add maps:filter/2 to maps module.

   OTP-12752  Add uptime() shell command.

   OTP-12754  Cache nowarn_bif_clash functions in erl_lint.

	      This patch stores nowarn_bif_clash in the lint record. By
	      using erlc +'{eprof,lint_module}' when compiling the erlang
	      parser, we noticed the time spent on nowarn_function/2
	      reduced from 30% to 0.01%.

   OTP-12772  Optimize the Erlang Code Linter by using the cached filename
	      information.

   OTP-12774  Change some internal data structures to Maps in order to
	      speed up compilation time. Measured speed up is around
	      10%-15%.

   OTP-12785  Update orddict to use parameterized types and specs. (Thanks
	      to UENISHI Kota.)

   OTP-12793  If a child of a simple_one_for_one returns ignore from its
	      start function no longer store the child for any restart
	      type. It is not possible to restart or delete the child
	      because the supervisor is a simple_one_for_one.

   OTP-12808  The assert macros in eunit has been moved out to
	      stdlib/include/assert.hrl. This files get included by
	      eunit.hrl. Thus, nothing changes for eunit users, but the
	      asserts can now also be included separately.

   OTP-12814  Make ets:file2tab preserve enabled read_concurrency and
	      write_concurrency options for tables.

   OTP-12841  There are many cases where user code needs to be able to
	      distinguish between a socket that was closed normally and one
	      that was aborted. Setting the option {show_econnreset, true}
	      enables the user to receive ECONNRESET errors on both active
	      and passive sockets.

--- syntax_tools-1.7 ----------------------------------------------------

   OTP-12732  Use the new erl_anno module.

   OTP-12769  The merl module has been added to the syntax_tools
	      application. The Merl library is a simpler way to work with
	      erl_syntax parse trees.

--- test_server-3.9 -----------------------------------------------------

   OTP-10816  The status of an aborted test due to test suite compilation
	      error has changed from 'auto_skipped' to 'failed'. This
	      affects both the textual log file, event handling and CT hook
	      callbacks. The logging of compilation failures has also been
	      improved, especially in the case of multiple test suites
	      failing compilation.

   OTP-10923  The Test Server application has been marked as obsolete and
	      will be removed from OTP in the next major release (OTP
	      19.0).

   OTP-11962  When running OTP tests using the ts interface, it is now
	      possible to specify so called test categories per OTP
	      application. A test category is represented by a CT test
	      specification and defines an arbitrary subset of existing
	      test suites, groups and cases. Examples of test categories
	      are 'smoke' (smoke tests) and 'bench' (benchmarks). (Call
	      ts:help() for more info). Also, functions for reading terms
	      from the current test specification during test,
	      ct:get_testspec_terms/0 and ct:get_testspec_terms/1, have
	      been implemented.

   OTP-12740  The Test Server source code parser (erl2html2) failed to
	      handle the macro tuple in the syntax tree returned by
	      epp_dodger. This error has been corrected.

--- tools-2.8 -----------------------------------------------------------

   OTP-11043  Allow maps for supervisor flags and child specs

	      Earlier, supervisor flags and child specs were given as
	      tuples. While this is kept for backwards compatibility, it is
	      now also allowed to give these parameters as maps, see
	      sup_flags and child_spec.

   OTP-12330  In order to improve performance of the cover tool, new
	      functions are added for cover compilation and analysis on
	      multiple files. This allows for more parallelisation.

	      Some improvements of the data base access is also done in
	      order to improve the performance when analysing and resetting
	      cover data.

	      Minor incompatibility: An error reason from analyse_to_file
	      is changed from no_source_code_found to
	      {no_source_code_found,Module}.

   OTP-12511  Remove Mnemosyne rules support.

   OTP-12681  Add printout of total number of calls and time in eprof

   OTP-12806  Attempting to do a cover analysis when neither source code
	      nor beam file could be found would hang the cover server.
	      Corrected to return a proper error.

--- typer-0.9.9 ---------------------------------------------------------

   OTP-12727  Properly extract annotations from core code.

--- webtool-0.9 ---------------------------------------------------------

   OTP-10922  The Webtool application has been marked as obsolete and will
	      be removed from OTP in the next major release (OTP 19.0).

--- wx-1.4 --------------------------------------------------------------

   OTP-12183  The undocumented option generic_debug for gen_server has been
	      removed.

   OTP-12632  Use wxWidgets-3.0, if found, as default backend on windows.

   OTP-12660  Add missing fields in some events records. May require a
	      recompilation of user applications.

   OTP-12734  Remove raise condition where wx could crash during emulator
	      stoppage.

--- xmerl-1.3.8 ---------------------------------------------------------

   OTP-12689  Remove compiler warnings in xmerl.

--- Open Source Contributors --------------------------------------------

    Alex Wilson, Andras Horvath, Andreas Amsenius, Andreas Schultz, 
    András Veres-Szentkirályi, Anthony Ramine, Breno Leitao, Chris Dituri, 
    Christopher Faulet, Daniel White, David Kubecka, David N. Welton, 
    Derek Brown, Dmitriy Kargapolov, Dmitry Ivanov, Fred Hebert, 
    Holger Weiß, James Fish, Jesper Louis Andersen, Johan Oudinet, 
    Jonas Falkevik, José Valim, Jérôme de Bretagne, Kenji Rikitake, 
    Kirill Zaborsky, Kirilll Zaborsky, Kostis Sagonas, Larry, Leo Liu, 
    Loïc Hoguin, Magnus Henoch, Magnus Ottenklinger, Marc Sugiyama, 
    Martin Hässler, Martin Schürrer, Maxim Mai, Michael Klishin, 
    Mikael Pettersson, Nate Bartley, Nick Mills, Olivier Girondel, 
    Peter Lemenkov, Péter Gömöri, Qijiang Fan, Richard Carlsson, 
    Rory Byrne, Serge Aleynikov, Simon Cornish, Stavros Aronis, 
    Stefan Grundmann, Steve Vinoski, Tom Briden, Tomas Abrahamsson, 
    Tuncer Ayaz, UENISHI Kota, Ulf Wiger, Vlad Dumitrescu, Wasif Malik, 
    Wasif Malik and Johannes Huning, Yoshihiro Tanaka, Yuki Ito, andreaP, 
    beaver, crownedgrouse, jeffweiss, larry, tmanevik, xsipewe, 
    Сергей Прохоров