Inital Release: OTP 24.0 Git Tag: OTP-24.0 Date: 2021-02-24 Trouble Report Id: OTP-10391, OTP-13126, OTP-14485, OTP-14601, OTP-14646, OTP-14647, OTP-14650, OTP-14700, OTP-14793, OTP-15107, OTP-15523, OTP-16334, OTP-16517, OTP-16560, OTP-16607, OTP-16611, OTP-16653, OTP-16656, OTP-16678, OTP-16686, OTP-16687, OTP-16698, OTP-16703, OTP-16706, OTP-16712, OTP-16718, OTP-16720, OTP-16722, OTP-16723, OTP-16724, OTP-16725, OTP-16749, OTP-16750, OTP-16788, OTP-16793, OTP-16800, OTP-16809, OTP-16811, OTP-16814, OTP-16822, OTP-16824, OTP-16865, OTP-16867, OTP-16877, OTP-16878, OTP-16879, OTP-16880, OTP-16881, OTP-16882, OTP-16883, OTP-16884, OTP-16885, OTP-16898, OTP-16905, OTP-16910, OTP-16926, OTP-16936, OTP-16940, OTP-16943, OTP-16944, OTP-16945, OTP-16947, OTP-16949, OTP-16950, OTP-16952, OTP-16957, OTP-16963, OTP-16964, OTP-16968, OTP-16970, OTP-16971, OTP-16974, OTP-16980, OTP-16981, OTP-16986, OTP-16987, OTP-16995, OTP-17001, OTP-17005, OTP-17007, OTP-17014, OTP-17015, OTP-17020, OTP-17023, OTP-17024, OTP-17028, OTP-17044, OTP-17049, OTP-17051, OTP-17057, OTP-17059, OTP-17077, OTP-17078, OTP-17084, OTP-17092, OTP-17095, OTP-17103, OTP-17104, OTP-17105, OTP-17106, OTP-17117, OTP-17118, OTP-17120, OTP-17121, OTP-17122, OTP-17123, OTP-17131, OTP-17133, OTP-17140, OTP-17153, OTP-17156, OTP-17162, OTP-17166, OTP-17168, OTP-17170, OTP-17171, OTP-17172, OTP-17175, OTP-17177, OTP-17180, OTP-17181, OTP-17183, OTP-17189, OTP-17192, OTP-17198, OTP-17199, OTP-17201, OTP-17206, OTP-17207, OTP-17210, OTP-17213, OTP-17214, OTP-17216, OTP-17217, OTP-17219 Seq num: ERL-1113, ERL-1281, ERL-1308, ERL-1313, ERL-1332, ERL-1335, ERL-1348, ERL-1354, ERL-1367, ERL-1378, ERL-1379, ERL-1380, ERL-1381, ERL-1430, ERL-1431, ERL-1450, ERL-1480, ERL-892, GH-4033, GH-4360, GH-4473, GH-4493 System: OTP Release: 24 Application: asn1-5.1, common_test-1.19.2, compiler-8.0, crypto-5.0, debugger-5.1, dialyzer-4.4, edoc-1.0, eldap-1.2.9, erl_docgen-1.1, erl_interface-5.0, erts-12.0, et-1.7, ftp-1.1, inets-7.4, jinterface-1.12, kernel-8.0, megaco-4.0, mnesia-4.18.2, observer-2.9.6, odbc-2.13.3, os_mon-2.7, parsetools-2.3, reltool-0.9, runtime_tools-1.15.2, sasl-4.1, snmp-5.7.4, ssh-4.11, ssl-10.3, stdlib-3.15, syntax_tools-2.5, tools-3.5, wx-2.0, xmerl-1.4 Predecessor: OTP Check out the git tag OTP-24.0, and build a full OTP system including documentation. --------------------------------------------------------------------- --- HIGHLIGHTS ------------------------------------------------------ --------------------------------------------------------------------- OTP-15523 Application(s): ftp Related Id(s): OTP-15352, PR-1968 Add support for FTPES (explicit FTP over TLS). OTP-16611 Application(s): kernel Related Id(s): OTP-16749 A compatibility adaptor for gen_tcp to use the new socket API has been implemented (gen_tcp_socket). Used when setting the kernel application variable inet_backend = socket. OTP-16686 Application(s): debugger, erts, kernel, stdlib Extended error information for failing BIF calls as proposed in EEP 54 has been implemented. When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail. For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4. There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions. OTP-16706 Application(s): compiler Related Id(s): ERL-1281 Variables bound between the keywords 'try' and 'of' can now be used in the clauses following the 'of' keyword (that is, in the success case when no exception was raised). OTP-16718 Application(s): erts, kernel, stdlib Related Id(s): PR-2735 Process aliases as outlined by EEP 53 has been introduced. Process aliases is introduced in order to provide a lightweight mechanism that can prevent late replies after timeout or connection loss. For more information, see EEP 53 and the documentation of the new alias/1 BIF and the new options to the monitor/3 BIF. The call operation in the framework used by gen_server, gen_statem, and gen_event has been updated to utilize alias in order to prevent late responses. The gen_statem behavior still use a proxy process in the distributed case, since it has always prevented late replies and aliases wont work against pre OTP 24 nodes. The proxy process can be removed in OTP 26. The alias feature also made it possible to introduce new functions similar to the erpc:receive_response() function in the gen behaviors, so the new functions gen_server:receive_response(), gen_statem:receive_response(), gen_event:receive_response() have also been introduced. OTP-16800 Application(s): wx The application has been completely rewritten in order to use wxWidgets version 3 as its base. Add basic documentation generated from the wxWidgets project. OTP-16824 Application(s): compiler Related Id(s): PR-2664, PR-3006 *** POTENTIAL INCOMPATIBILITY *** Compiler warnings and errors now include column numbers in addition to line numbers. When a compiler message is emitted, the source line is printed along with a marker (a ^ character) that indicates the column position of the issue. The option 'brief' removes the printout of the source line. The compiler option {error_location, line | column} has been added. The default value is column. Besides adding column numbers to compilation warnings and errors, the option also determines whether column numbers are included in abstract code. If tools stop working, setting the environment variable ERL_COMPILER_OPTIONS can help (include {error_location, line}). The compiler will now call the function PT:parse_transform_info/0 in parse transforms (if it exists). It can be used by parse transforms to signal that they can only handle line numbers in abstract code. OTP-16885 Application(s): erts Related Id(s): PR-2745 The BeamAsm JIT-compiler has been added to Erlang/OTP. The JIT-compiler is enabled by default on most x86 64-bit platforms that have a C++ compiler that can compile C++17. To verify that a JIT enabled emulator is running you can use erlang:system_info(emu_flavor). For more information see the internal documentation of BeamAsm in erts. OTP-16949 Application(s): edoc Related Id(s): OTP-17192, PR-2803 *** POTENTIAL INCOMPATIBILITY *** EDoc, the Erlang documentation engine, hits version 1.0 with this release, which means a few changes. EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some configuration, community projects can now provide documentation for shell_docs the same way that OTP libraries did since OTP 23.0. The @spec and @type EDoc tags have been deprecated. These are not supported with the new chunk-generating doclet and layout. Moreover, previously when there was a redundant @spec tag and -spec attribute defined for the same function, the @spec tag would take precedence. Now, the -spec attribute takes precedence and is more important. The same is true for redundant @type tags and -type attributes. Warnings are now emitted when such redundant entries are found. See the Doc chunks chapter in the Edoc User's Guide for more details. OTP-16964 Application(s): compiler Generators in list and binary comprehensions will now raise a {bad_generator,Generator} exception if the generator has an incorrect type (instead of raising an ad-hoc badarg or badarih exception). Similarly, when a filter does not evaluate to a boolean, a {bad_filter,Filter} exception will be raised. Some minor bugs in the compilation of binary comprehensions have also been fixed. OTP-16981 Application(s): compiler Related Id(s): ERL-1113 Some compiler warnings, such as the warning for an expression whose result is ignored, could not be suppressed by assigning to a variable beginning with '_', but only by assigning to the anonymous variable ('_'). This has now been changed so that any warning that can be suppressed by assigning to the anonymous variable can also be suppressed by assigning to a variable beginning with '_'. OTP-17044 Application(s): ssl Related Id(s): PR-2654 Make TLS handshakes in Erlang distribution concurrent. OTP-17213 Application(s): wx Related Id(s): PR-3027 Added support for wxWebView. --------------------------------------------------------------------- --- POTENTIAL INCOMPATIBILITIES ------------------------------------- --------------------------------------------------------------------- OTP-15107 Application(s): stdlib Related Id(s): ERL-1381, PR-2813 Time-outs in gen_statem with relative time 0 did not behave quite according to the intended model. This has now been corrected. The correction introduces a small potential incompatibility e.g when combining a state time-out with inserted events, and the inserted event does a state change in the state with the time-out. Before this correction the state time-out could be delivered even after the second state change, but now it is guaranteed that a state time-out is only delivered in the state it was started for, even in this corner case. OTP-16560 Application(s): megaco All the pre-v3 codec(s) (prev3a, prev3b and prev3c) was deprecated in OTP-23.0. They have now been removed. OTP-16656 Application(s): crypto The functions and cipher names that were deprecated in OTP-23.0 are now removed. OTP-16749 Application(s): erts, kernel Related Id(s): OTP-14601 The experimental new socket API has been further developed. Some backwards incompatible changes with respect to OTP 23 have been made. The control message format has been changed so a decoded value is now in the 'value' field instead of in the 'data' field. The 'data' field now always contains binary data. Some type names have been changed regarding message headers and control message headers. socket:bind/2 now returns plain ok instead of {ok, Port} which was only relevant for the inet and inet6 address families and often not interesting. To find out which port was chosen use socket:sockname/1. OTP-16809 Application(s): kernel Related Id(s): ERL-1313 Change the value of the tag head returned by disk_log:info/1 from {ok, Head} to just Head. OTP-16811 Application(s): kernel Remove the support for distributed disk logs. The new function disk_log:all/0 is to be used instead of disk_log:accessible_logs/0. The function disk_log:close/1 is to be used instead of disk_log:lclose/1,2. OTP-16824 Application(s): compiler Related Id(s): PR-2664, PR-3006 *** HIGHLIGHT *** Compiler warnings and errors now include column numbers in addition to line numbers. When a compiler message is emitted, the source line is printed along with a marker (a ^ character) that indicates the column position of the issue. The option 'brief' removes the printout of the source line. The compiler option {error_location, line | column} has been added. The default value is column. Besides adding column numbers to compilation warnings and errors, the option also determines whether column numbers are included in abstract code. If tools stop working, setting the environment variable ERL_COMPILER_OPTIONS can help (include {error_location, line}). The compiler will now call the function PT:parse_transform_info/0 in parse transforms (if it exists). It can be used by parse transforms to signal that they can only handle line numbers in abstract code. OTP-16878 Application(s): erts The code loader has been rewritten in order to be able to load JIT:ed code. As a consequence of this, it is no longer possible to load HiPE code. OTP-16943 Application(s): os_mon Related Id(s): OTP-16906 The temporarily introduced configuration parameter memsup_improved_system_memory_data has been removed. OTP-16945 Application(s): erts Change escripts to output any errors or warnings to standard error instead of standard out. OTP-16949 Application(s): edoc Related Id(s): OTP-17192, PR-2803 *** HIGHLIGHT *** EDoc, the Erlang documentation engine, hits version 1.0 with this release, which means a few changes. EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some configuration, community projects can now provide documentation for shell_docs the same way that OTP libraries did since OTP 23.0. The @spec and @type EDoc tags have been deprecated. These are not supported with the new chunk-generating doclet and layout. Moreover, previously when there was a redundant @spec tag and -spec attribute defined for the same function, the @spec tag would take precedence. Now, the -spec attribute takes precedence and is more important. The same is true for redundant @type tags and -type attributes. Warnings are now emitted when such redundant entries are found. See the Doc chunks chapter in the Edoc User's Guide for more details. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-16968 Application(s): kernel The pg2 module has been removed. OTP-16970 Application(s): erl_interface The registry functionality part of erl_interface has been removed. It was as of OTP 23 deprecated and scheduled for removal in OTP 24. OTP-16971 Application(s): stdlib The filename:src/1 function which was deprecated in OTP 20 has been removed. Use filelib:find_source/1,3 instead. OTP-16974 Application(s): ssl Removed ssl:ssl_accept/1,2,3 and ssl:cipher:suites/0,1 use ssl:handshake/1,2,3 and ssl:cipher_suites/2,3 instead. OTP-16987 Application(s): erts The erlang:monitor_node/2 BIF will now fail with a notalive exception if distribution has not been started on the current node; it used to fail with a badarg exception. OTP-17156 Application(s): kernel Fix various issues with the gen_tcp_socket. Including documenting some incompatibilities. OTP-17216 Application(s): kernel Related Id(s): PR-2989 The behaviour for gen_tcp:connect/3,4 has been changed to not per default bind to an address, which allows the network stack to delay the address and port selection to when the remote address is known. This allows better port re-use, and thus enables far more outgoing connections, since the ephemeral port range no longer has to be a hard limit. There is a theoretical possibility that this behaviour change can affect the set of possible error values, or have other small implications on some platforms. OTP-17219 Application(s): wx Related Id(s): OTP-16800 Due to the support of the new backend versions some API incompatibilities have been introduced. Examples of changes are: wxWindowDC default creators have been removed wxClientDC default creators have been removed wxPaintDC default creators have been removed wxWindow:setVirtualSizeHints() has been deprecated in wxWidgets and removed wxWindow:makeModal() has been deprecated in wxWidgets and removed wxToolBar:add/insertTool without label have been deprecated in wxWidgets and removed wxStyledTextCtrl some functions have changed arguments from boolean to int wxSizerItem:new() Some arguments have become options Removed deprecated wxSizerItem:setWindow() use assignWindow() Removed deprecated wxSizerItem:setSpacer() use assignSpacer() Removed deprecated wxSizerItem:setSpacer() use assignSpacer() Removed deprecated wxSizerItem:setSizer() use assignSizer() wxMenu append/insert/prepend have changed return value and lost IsCheckable argument wxListCtrl:setItem/4 changed return value wxImage:convertToGreyscale() options have changed wxGridSizer:wxGridSizer() options have changed wxGrid API have many changes wxGraphicsRenderer:create*GradientBrush() uses GradientStops now wxGraphicsRenderer:createPen() have been removed wxGraphicsRenderer:create*GradientBrush() uses GradientStops now wxGLCanvas API is incompatible wxFlexGridSizer:wxFlexGridSizer() options have changed wxDisplay:new() options have changed wxCalendarDateAttr:new(ColText [,OptList]) have been removed wxBitmapButton:set/getBitmapSelected() have been removed --------------------------------------------------------------------- --- asn1-5.1 -------------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-17123 Application(s): asn1, compiler, et, xmerl The compiler will now emit warnings when (previously bound) underscore-prefixed variables are matched. Full runtime dependencies of asn1-5.1: erts-7.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- common_test-1.19.2 ---------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-16940 Application(s): common_test Related Id(s): ERL-1335 The option release_shell could crash when used together with the spec option. --- Improvements and New Features --- OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. Full runtime dependencies of common_test-1.19.2: compiler-6.0, crypto-3.6, debugger-4.1, erts-7.0, ftp-1.0.0, inets-6.0, kernel-4.0, observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0, stdlib-3.5, syntax_tools-1.7, tools-2.8, xmerl-1.3.8 --------------------------------------------------------------------- --- compiler-8.0 ---------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-17077 Application(s): compiler, erts, stdlib Related Id(s): ERL-1431, PR-2903, PR-2905, PR-2906 A floating point zero (0.0) can be both positive (+0.0) and negative (-0.0). Multiple bugs in the compiler, runtime system, and STDLIB have been fixed to ensure that the minus sign on 0.0 is not lost. OTP-17104 Application(s): compiler Related Id(s): ERL-1380 A repeated stack trace variable in a try/catch was not rejected. The following example will now cause a compilation error: try E catch _:A:A -> A end. OTP-17118 Application(s): compiler, stdlib Related Id(s): PR-2825 Eliminated a Dialyzer crashed when the -MMD option is used to generate a dependency file and a BEAM file a the same time. OTP-17206 Application(s): compiler When the makedep option was given, the compiler would crash if the dependency output contained non-latin1 characters. The compiler will now output the dependency information encoded in UTF-8 to avoid crashing. --- Improvements and New Features --- OTP-10391 Application(s): compiler Related Id(s): OTP-16226 Selective receive optimization will now be applied much more often. The new recv_opt_info compile flag can be used to print diagnostics relating to this optimization. You can read more about the selective receive optimization in the Efficiency Guide. OTP-16334 Application(s): compiler erlang:throw/1 will no longer build stack traces when we can prove that they will never be inspected. OTP-16706 Application(s): compiler Related Id(s): ERL-1281 *** HIGHLIGHT *** Variables bound between the keywords 'try' and 'of' can now be used in the clauses following the 'of' keyword (that is, in the success case when no exception was raised). OTP-16824 Application(s): compiler Related Id(s): PR-2664, PR-3006 *** HIGHLIGHT *** *** POTENTIAL INCOMPATIBILITY *** Compiler warnings and errors now include column numbers in addition to line numbers. When a compiler message is emitted, the source line is printed along with a marker (a ^ character) that indicates the column position of the issue. The option 'brief' removes the printout of the source line. The compiler option {error_location, line | column} has been added. The default value is column. Besides adding column numbers to compilation warnings and errors, the option also determines whether column numbers are included in abstract code. If tools stop working, setting the environment variable ERL_COMPILER_OPTIONS can help (include {error_location, line}). The compiler will now call the function PT:parse_transform_info/0 in parse transforms (if it exists). It can be used by parse transforms to signal that they can only handle line numbers in abstract code. OTP-16867 Application(s): compiler Related Id(s): ERL-1354 Fixed a performance bug that made functions with lots of try/after blocks slow to compile. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-16964 Application(s): compiler *** HIGHLIGHT *** Generators in list and binary comprehensions will now raise a {bad_generator,Generator} exception if the generator has an incorrect type (instead of raising an ad-hoc badarg or badarih exception). Similarly, when a filter does not evaluate to a boolean, a {bad_filter,Filter} exception will be raised. Some minor bugs in the compilation of binary comprehensions have also been fixed. OTP-16981 Application(s): compiler Related Id(s): ERL-1113 *** HIGHLIGHT *** Some compiler warnings, such as the warning for an expression whose result is ignored, could not be suppressed by assigning to a variable beginning with '_', but only by assigning to the anonymous variable ('_'). This has now been changed so that any warning that can be suppressed by assigning to the anonymous variable can also be suppressed by assigning to a variable beginning with '_'. OTP-17078 Application(s): compiler Related Id(s): ERL-1430, PR-2918 The previously undocumented compiler options warn_missing_spec and warn_missing_spec_all are now documented. OTP-17123 Application(s): asn1, compiler, et, xmerl The compiler will now emit warnings when (previously bound) underscore-prefixed variables are matched. OTP-17168 Application(s): compiler Erlang source files not encoded in utf-8 will no longer be accepted by the compiler unless it contains a "coding: latin-1" comment. OTP-17172 Application(s): compiler New compiler options from_abstr and no_lint have been added. They are useful when implementing other languages running on the BEAM. OTP-17207 Application(s): compiler, erts The bit matching and construction syntax now supports 16-bit floats (IEEE 754-2008). Full runtime dependencies of compiler-8.0: crypto-3.6, erts-11.0, kernel-7.0, stdlib-3.13 --------------------------------------------------------------------- --- crypto-5.0 ------------------------------------------------------ --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-16882 Application(s): crypto Add /usr/local/opt/openssl to the openssl configure search path. This path is where some tools on OS X place openssl. OTP-17105 Application(s): crypto, erts, odbc, wx Related Id(s): PR-2872 Fix compiler warnings produced by the clang compiler. --- Improvements and New Features --- OTP-16656 Application(s): crypto *** POTENTIAL INCOMPATIBILITY *** The functions and cipher names that were deprecated in OTP-23.0 are now removed. OTP-17001 Application(s): crypto Related Id(s): PR-2852 Removed installed directory priv/obj/ containing superfluous object files. Full runtime dependencies of crypto-5.0: erts-9.0, kernel-5.3, stdlib-3.4 --------------------------------------------------------------------- --- debugger-5.1 ---------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16686 Application(s): debugger, erts, kernel, stdlib *** HIGHLIGHT *** Extended error information for failing BIF calls as proposed in EEP 54 has been implemented. When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail. For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4. There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions. Full runtime dependencies of debugger-5.1: compiler-5.0, erts-9.0, kernel-5.3, stdlib-3.4, wx-1.2 --------------------------------------------------------------------- --- dialyzer-4.4 ---------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16883 Application(s): dialyzer Some internal HiPE modules have been moved into the dialyzer application so that dialyzer works when HiPE is disabled. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-16986 Application(s): dialyzer Related Id(s): ERL-1379, ERL-1480, GH-4033 Add warning option no_underspecs. OTP-16995 Application(s): dialyzer Related Id(s): ERL-1348 Report filename and location for warnings returned due to the -Wunknown option. When used from the command-line, one location per file is printed. OTP-17084 Application(s): dialyzer Add types and specifications for documentation. OTP-17177 Application(s): dialyzer Related Id(s): OTP-16824 Add option error_location. The option is recognized if included in the environment variable ERL_COMPILER_OPTIONS. OTP-17183 Application(s): dialyzer Related Id(s): ERL-892, GH-4493 Clarify how to declare records used in match patterns. Full runtime dependencies of dialyzer-4.4: compiler-7.0, erts-9.0, kernel-5.3, stdlib-3.4, syntax_tools-2.0, wx-1.2 --------------------------------------------------------------------- --- edoc-1.0 -------------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-17092 Application(s): edoc Fix so that the edoc_doclet option file_suffix also effects the links emitted into the module index. --- Improvements and New Features --- OTP-16949 Application(s): edoc Related Id(s): OTP-17192, PR-2803 *** HIGHLIGHT *** *** POTENTIAL INCOMPATIBILITY *** EDoc, the Erlang documentation engine, hits version 1.0 with this release, which means a few changes. EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some configuration, community projects can now provide documentation for shell_docs the same way that OTP libraries did since OTP 23.0. The @spec and @type EDoc tags have been deprecated. These are not supported with the new chunk-generating doclet and layout. Moreover, previously when there was a redundant @spec tag and -spec attribute defined for the same function, the @spec tag would take precedence. Now, the -spec attribute takes precedence and is more important. The same is true for redundant @type tags and -type attributes. Warnings are now emitted when such redundant entries are found. See the Doc chunks chapter in the Edoc User's Guide for more details. OTP-17095 Application(s): edoc Related Id(s): PR-2914 Edoc has been updated to use -spec to document its own interface instead of @doc@ tags. Together with this change the inter-application linking for -spec style documentation has been improved. OTP-17153 Application(s): edoc Related Id(s): PR-2674 Allow user defined edoc macros to be functions. Full runtime dependencies of edoc-1.0: erts-6.0, inets-5.10, kernel-3.0, stdlib-3.15, syntax_tools-1.6.14, xmerl-1.3.7 --------------------------------------------------------------------- --- eldap-1.2.9 ----------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-17166 Application(s): eldap Related Id(s): PR-2904 Add ability to specify size limit on ldap requests Full runtime dependencies of eldap-1.2.9: asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-2.0 --------------------------------------------------------------------- --- erl_docgen-1.1 -------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-17122 Application(s): erl_docgen, stdlib Fixed bug in shell_docs and erl_docgen that interpreted em tags as strong. --- Improvements and New Features --- OTP-16877 Application(s): erl_docgen Add support for displaying .svg images. OTP-17192 Application(s): erl_docgen Related Id(s): PR-2803 Updated the way specs are generated after changes in edoc. Full runtime dependencies of erl_docgen-1.1: edoc-1.0, erts-9.0, stdlib-3.15, xmerl-1.3.7 --------------------------------------------------------------------- --- erl_interface-5.0 ----------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16720 Application(s): erl_interface, erts, jinterface Related Id(s): PR-2680 Accept 64-bit process identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit pids in a future OTP release. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-16970 Application(s): erl_interface *** POTENTIAL INCOMPATIBILITY *** The registry functionality part of erl_interface has been removed. It was as of OTP 23 deprecated and scheduled for removal in OTP 24. OTP-17005 Application(s): erl_interface, erts, jinterface, kernel, stdlib Related Id(s): OTP-16718 Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release. OTP-17007 Application(s): erl_interface, erts, jinterface Accept 64-bit port identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit port identifiers in a future OTP release. --- Known Bugs and Problems --- OTP-16607 Application(s): erl_interface Related Id(s): OTP-16608 The ei API for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled. --------------------------------------------------------------------- --- erts-12.0 ------------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-16822 Application(s): erts Related Id(s): PR-2723 file:open/2 now throws an badarg error when opened with both the ram and raw options. OTP-16879 Application(s): erts The estone benchmark has been updated to better reflect changes in the compiler and run-time system. OTP-16880 Application(s): erts Fix profile guided optimization of run-time system when using GCC 7 or later. OTP-16884 Application(s): erts Fix double close of fd when creating crash dump. OTP-17014 Application(s): erts Improve erl error message when unable to open included args_file. OTP-17020 Application(s): erts Remove warning text about the -- operation from documentation The -- operation was optimized in Erlang/OTP 22 so that its worst case complexity is O(N*log(N)), where N is the total size of the input lists. Therefore, the warning in the documentation saying that the time complexity is proportional to length(A)*length(B) is incorrect and is no longer needed. Notice that Erlang/OTP 21 will no longer be supported when Erlang/OTP 24 gets released. OTP-17077 Application(s): compiler, erts, stdlib Related Id(s): ERL-1431, PR-2903, PR-2905, PR-2906 A floating point zero (0.0) can be both positive (+0.0) and negative (-0.0). Multiple bugs in the compiler, runtime system, and STDLIB have been fixed to ensure that the minus sign on 0.0 is not lost. OTP-17105 Application(s): crypto, erts, odbc, wx Related Id(s): PR-2872 Fix compiler warnings produced by the clang compiler. OTP-17131 Application(s): erts Related Id(s): GH-4360, PR-3031 Windows process erl.exe killed if its service process erlsrv.exe terminates. --- Improvements and New Features --- OTP-14601 Application(s): erts, kernel Related Id(s): OTP-16749, PR-2641, PR-2670 The experimental socket module can now use any protocol (by name) the OS supports. Suggested in PR-2641, implemented in PR-2670. OTP-16653 Application(s): erts The deprecated function erlang:get_stacktrace/0 has been removed. Use the new syntax in try/catch to retrieve the stack backtrace. OTP-16678 Application(s): erts, stdlib, syntax_tools, tools Related Id(s): PR-2627 Support for handling abstract code created before OTP R15 has been dropped. OTP-16686 Application(s): debugger, erts, kernel, stdlib *** HIGHLIGHT *** Extended error information for failing BIF calls as proposed in EEP 54 has been implemented. When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail. For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4. There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions. OTP-16687 Application(s): erts Related Id(s): PR-2762, PR-2996 The erlang module documentation has been updated to improve clarity and description of edge cases. OTP-16703 Application(s): erts, kernel Related Id(s): PR-2620 An example implementation of Erlang distribution over UDS using distribution processes has been introduced. Thanks to Jérôme de Bretagne OTP-16712 Application(s): erts Improve code generation when creating funs by adding a new beam instruction make_fun3 that does not do GC and allows for better register allocation. OTP-16718 Application(s): erts, kernel, stdlib Related Id(s): PR-2735 *** HIGHLIGHT *** Process aliases as outlined by EEP 53 has been introduced. Process aliases is introduced in order to provide a lightweight mechanism that can prevent late replies after timeout or connection loss. For more information, see EEP 53 and the documentation of the new alias/1 BIF and the new options to the monitor/3 BIF. The call operation in the framework used by gen_server, gen_statem, and gen_event has been updated to utilize alias in order to prevent late responses. The gen_statem behavior still use a proxy process in the distributed case, since it has always prevented late replies and aliases wont work against pre OTP 24 nodes. The proxy process can be removed in OTP 26. The alias feature also made it possible to introduce new functions similar to the erpc:receive_response() function in the gen behaviors, so the new functions gen_server:receive_response(), gen_statem:receive_response(), gen_event:receive_response() have also been introduced. OTP-16720 Application(s): erl_interface, erts, jinterface Related Id(s): PR-2680 Accept 64-bit process identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit pids in a future OTP release. OTP-16749 Application(s): erts, kernel Related Id(s): OTP-14601 *** POTENTIAL INCOMPATIBILITY *** The experimental new socket API has been further developed. Some backwards incompatible changes with respect to OTP 23 have been made. The control message format has been changed so a decoded value is now in the 'value' field instead of in the 'data' field. The 'data' field now always contains binary data. Some type names have been changed regarding message headers and control message headers. socket:bind/2 now returns plain ok instead of {ok, Port} which was only relevant for the inet and inet6 address families and often not interesting. To find out which port was chosen use socket:sockname/1. OTP-16788 Application(s): erts Remove old unused +MYm and ERL_MALLOC_LIB options. OTP-16814 Application(s): erts Related Id(s): PR-2704 Increase timer resolution on windows. OTP-16878 Application(s): erts *** POTENTIAL INCOMPATIBILITY *** The code loader has been rewritten in order to be able to load JIT:ed code. As a consequence of this, it is no longer possible to load HiPE code. OTP-16881 Application(s): erts Add support in the Erlang/OTP build system to generate a compilation database that can be used by third-party tools (such as irony in Emacs) to compile the erts C and C++ source code. Create the database using make compdb. OTP-16885 Application(s): erts Related Id(s): PR-2745 *** HIGHLIGHT *** The BeamAsm JIT-compiler has been added to Erlang/OTP. The JIT-compiler is enabled by default on most x86 64-bit platforms that have a C++ compiler that can compile C++17. To verify that a JIT enabled emulator is running you can use erlang:system_info(emu_flavor). For more information see the internal documentation of BeamAsm in erts. OTP-16898 Application(s): erts Related Id(s): OTP-16856 By default all ERTS internal memory allocators based on alloc_util will now use their own separate carrier pool for migration of carriers instead of using a node global carrier pool. This was the default behavior between OTP 17 and OTP 21, but changed to use a node global carrier pool as of OTP 22.0. Usage of the node global carrier pool proved troublesome since it had a tendency to spread long lived blocks into allocators with normally short lived blocks causing increased memory fragmentation. The node global carrier pool behavior as well as other behaviors can be configured using the +Mcp command line argument. OTP-16936 Application(s): erts, stdlib Related Id(s): ERL-1367 New functions have been added to the maps module: merge_with/3, intersect/2, intersect_with/3, filtermap/2, from_keys/2, and maps:foreach/2. maps:merge_with/3 is the same as merge/2 but takes an extra fun that is used to combine items with the same key. maps:intersect/2 computes the intersection of two maps. maps:intersect_with/3 is the same as intersect/2 but takes an extra fun that is used to combine intersecting items. maps:filtermap/2 allows filtering and mapping of a map in a single pass. maps:from_keys/2 constructs a map from a list of keys and a single value and can be used to to optimize sets operations such as from_list/1, filter/2, intersection/2, and subtract/2. maps:foreach/2 allows iteration over a map without returning any value. OTP-16945 Application(s): erts *** POTENTIAL INCOMPATIBILITY *** Change escripts to output any errors or warnings to standard error instead of standard out. OTP-16952 Application(s): erts, kernel A new erl parameter for specifying a file descriptor with configuration data has been added. This makes it possible to pass the parameter "-configfd FD" when executing the erl command. When this option is given, the system will try to read and parse configuration parameters from the file descriptor. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-16980 Application(s): erts, stdlib Related Id(s): ERL-1308 The pretty printer for floating point number have been changed to make it easier to see if the integer part of the number has been rounded. After the change the the digit that may have been rounded always appears last or just before the exponent character (e or E). This is accomplished by always printing the number using scientific notation if it is so large that the integer part could be rounded. OTP-16987 Application(s): erts *** POTENTIAL INCOMPATIBILITY *** The erlang:monitor_node/2 BIF will now fail with a notalive exception if distribution has not been started on the current node; it used to fail with a badarg exception. OTP-17005 Application(s): erl_interface, erts, jinterface, kernel, stdlib Related Id(s): OTP-16718 Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release. OTP-17007 Application(s): erl_interface, erts, jinterface Accept 64-bit port identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit port identifiers in a future OTP release. OTP-17028 Application(s): erts One can now pass the ERL_ROOTDIR environment variable to the erl and start scrips. This makes it easier to use Erlang for Android apps. On Andorid, apps don't control where they will be installed. OTP-17057 Application(s): erts, stdlib All long running functions in the maps API are now yielding. In previous releases the functions maps:from_list/1, maps:keys/1 and maps:values/1 did not yield. This could cause unfair scheduling of processes. OTP-17207 Application(s): compiler, erts The bit matching and construction syntax now supports 16-bit floats (IEEE 754-2008). Full runtime dependencies of erts-12.0: kernel-8.0, sasl-3.3, stdlib-3.13 --------------------------------------------------------------------- --- et-1.7 ---------------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-17123 Application(s): asn1, compiler, et, xmerl The compiler will now emit warnings when (previously bound) underscore-prefixed variables are matched. Full runtime dependencies of et-1.7: erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2 --------------------------------------------------------------------- --- ftp-1.1 --------------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-16926 Application(s): ftp Related Id(s): ERL-1450, GH-4473 Use OTP supervisor as intended, avoiding surprising behavior as the killing of the user's process. Also, FTP state handling logic is improved to avoid race conditions that could result in unexpected errors. --- Improvements and New Features --- OTP-15523 Application(s): ftp Related Id(s): OTP-15352, PR-1968 *** HIGHLIGHT *** Add support for FTPES (explicit FTP over TLS). Full runtime dependencies of ftp-1.1: erts-7.0, kernel-6.0, stdlib-3.5 --------------------------------------------------------------------- --- inets-7.4 ------------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16722 Application(s): inets Drop all support for ftp and tftp in inets code. OTP-16723 Application(s): inets Deprecate following functions in httpd_util module: flatlength/1, lhexlist_to_integer/1, integer_to_hexlist/1, strip/1, and suffix/1. OTP-16724 Application(s): inets Remove support of HTTP 0.9 in httpd. OTP-16725 Application(s): inets Remove support of HTTP 0.9 in httpc. Full runtime dependencies of inets-7.4: erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5 --------------------------------------------------------------------- --- jinterface-1.12 ------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16720 Application(s): erl_interface, erts, jinterface Related Id(s): PR-2680 Accept 64-bit process identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit pids in a future OTP release. OTP-17005 Application(s): erl_interface, erts, jinterface, kernel, stdlib Related Id(s): OTP-16718 Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release. OTP-17007 Application(s): erl_interface, erts, jinterface Accept 64-bit port identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit port identifiers in a future OTP release. OTP-17170 Application(s): jinterface Related Id(s): PR-3005 Make OtpErlangExternalFun's fields module, function and arity public. --------------------------------------------------------------------- --- kernel-8.0 ------------------------------------------------------ --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-14700 Application(s): kernel Related Id(s): PR-2848 A bug has been fixed for the internal inet_res resolver cache that handled a resolver configuration file status timer incorrectly and caused performance problems due to many unnecessary file system accesses. OTP-16809 Application(s): kernel Related Id(s): ERL-1313 *** POTENTIAL INCOMPATIBILITY *** Change the value of the tag head returned by disk_log:info/1 from {ok, Head} to just Head. --- Improvements and New Features --- OTP-13126 Application(s): kernel Related Id(s): PR-3041 The cache used by the DNS resolver inet_res has been improved to use ETS lookups instead of server calls. This is a considerable speed improvement for cache hits. OTP-14485 Application(s): kernel Related Id(s): PR-2891 The cache ETS table type for the internal DNS resolver inet_res has been changed type changed (internally) to get better speed and atomicity. OTP-14601 Application(s): erts, kernel Related Id(s): OTP-16749, PR-2641, PR-2670 The experimental socket module can now use any protocol (by name) the OS supports. Suggested in PR-2641, implemented in PR-2670. OTP-16517 Application(s): kernel Related Id(s): PR-2827 The DNS resolver inet_res has been updated to support CAA (RFC 6844) and URI (RFC 7553) records. OTP-16611 Application(s): kernel Related Id(s): OTP-16749 *** HIGHLIGHT *** A compatibility adaptor for gen_tcp to use the new socket API has been implemented (gen_tcp_socket). Used when setting the kernel application variable inet_backend = socket. OTP-16686 Application(s): debugger, erts, kernel, stdlib *** HIGHLIGHT *** Extended error information for failing BIF calls as proposed in EEP 54 has been implemented. When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail. For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4. There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions. OTP-16698 Application(s): kernel Related Id(s): PR-2634 The file server can now be bypassed in file:delete/1,2 with the raw option. OTP-16703 Application(s): erts, kernel Related Id(s): PR-2620 An example implementation of Erlang distribution over UDS using distribution processes has been introduced. Thanks to Jérôme de Bretagne OTP-16718 Application(s): erts, kernel, stdlib Related Id(s): PR-2735 *** HIGHLIGHT *** Process aliases as outlined by EEP 53 has been introduced. Process aliases is introduced in order to provide a lightweight mechanism that can prevent late replies after timeout or connection loss. For more information, see EEP 53 and the documentation of the new alias/1 BIF and the new options to the monitor/3 BIF. The call operation in the framework used by gen_server, gen_statem, and gen_event has been updated to utilize alias in order to prevent late responses. The gen_statem behavior still use a proxy process in the distributed case, since it has always prevented late replies and aliases wont work against pre OTP 24 nodes. The proxy process can be removed in OTP 26. The alias feature also made it possible to introduce new functions similar to the erpc:receive_response() function in the gen behaviors, so the new functions gen_server:receive_response(), gen_statem:receive_response(), gen_event:receive_response() have also been introduced. OTP-16749 Application(s): erts, kernel Related Id(s): OTP-14601 *** POTENTIAL INCOMPATIBILITY *** The experimental new socket API has been further developed. Some backwards incompatible changes with respect to OTP 23 have been made. The control message format has been changed so a decoded value is now in the 'value' field instead of in the 'data' field. The 'data' field now always contains binary data. Some type names have been changed regarding message headers and control message headers. socket:bind/2 now returns plain ok instead of {ok, Port} which was only relevant for the inet and inet6 address families and often not interesting. To find out which port was chosen use socket:sockname/1. OTP-16793 Application(s): kernel Related Id(s): ERL-1332, PR-2740 New function os:env/0 returns all OS environment variables as a list of 2-tuples. OTP-16811 Application(s): kernel *** POTENTIAL INCOMPATIBILITY *** Remove the support for distributed disk logs. The new function disk_log:all/0 is to be used instead of disk_log:accessible_logs/0. The function disk_log:close/1 is to be used instead of disk_log:lclose/1,2. OTP-16947 Application(s): kernel Related Id(s): PR-2781 Expand the spec for erl_epmd:listen_port_please/2 to mirror erl_epmd:port_please/2. OTP-16952 Application(s): erts, kernel A new erl parameter for specifying a file descriptor with configuration data has been added. This makes it possible to pass the parameter "-configfd FD" when executing the erl command. When this option is given, the system will try to read and parse configuration parameters from the file descriptor. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-16968 Application(s): kernel *** POTENTIAL INCOMPATIBILITY *** The pg2 module has been removed. OTP-17005 Application(s): erl_interface, erts, jinterface, kernel, stdlib Related Id(s): OTP-16718 Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release. OTP-17015 Application(s): kernel Allow utf-8 binaries as parts of logger_formatter template. OTP-17103 Application(s): kernel Related Id(s): PR-2949 Allow the shell history of an erlang node to be fetched and stores using a custom callback module. See shell_history configuration parameter in the kernel documentation for more details. OTP-17106 Application(s): kernel Related Id(s): PR-2885 The simple logger (used to log events that happen before kernel has been started) has been improved to print prettier error messages. OTP-17156 Application(s): kernel *** POTENTIAL INCOMPATIBILITY *** Fix various issues with the gen_tcp_socket. Including documenting some incompatibilities. OTP-17181 Application(s): kernel Related Id(s): PR-2457 Added support in logger for setting primary metadata. The primary metadata is passed as a base metadata to all log events in the system. See Metadata in the Logger chapter of the Kernel User's Guide for more details. OTP-17189 Application(s): kernel, reltool, sasl Related Id(s): PR-2675 Recognize new key 'optional_applications' in application resource files. OTP-17198 Application(s): kernel Related Id(s): PR-2721 The Fun's passed to logger:log/2,3,4 can now return metadata that will only be fetched when needed. See logger:log/2,3,4 for more details. OTP-17201 Application(s): kernel Related Id(s): PR-4534 erpc:multicall() has been rewritten to be able to utilize the newly introduced and improved reference/receive optimization. OTP-17216 Application(s): kernel Related Id(s): PR-2989 *** POTENTIAL INCOMPATIBILITY *** The behaviour for gen_tcp:connect/3,4 has been changed to not per default bind to an address, which allows the network stack to delay the address and port selection to when the remote address is known. This allows better port re-use, and thus enables far more outgoing connections, since the ephemeral port range no longer has to be a hard limit. There is a theoretical possibility that this behaviour change can affect the set of possible error values, or have other small implications on some platforms. Full runtime dependencies of kernel-8.0: erts-12.0, sasl-3.0, stdlib-3.13 --------------------------------------------------------------------- --- megaco-4.0 ------------------------------------------------------ --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16560 Application(s): megaco *** POTENTIAL INCOMPATIBILITY *** All the pre-v3 codec(s) (prev3a, prev3b and prev3c) was deprecated in OTP-23.0. They have now been removed. OTP-17049 Application(s): megaco, snmp Removed deprecated functions marked for removal. Full runtime dependencies of megaco-4.0: asn1-3.0, debugger-4.0, erts-7.0, et-1.5, kernel-3.0, runtime_tools-1.8.14, stdlib-2.5 --------------------------------------------------------------------- --- mnesia-4.18.2 --------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-17217 Application(s): mnesia Suppression of deprecation warnings has been added to the source files of the Mnesia application. Full runtime dependencies of mnesia-4.18.2: erts-9.0, kernel-5.3, stdlib-3.4 --------------------------------------------------------------------- --- observer-2.9.6 -------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-17214 Application(s): observer Updated gui parts to work with the new wx version. Full runtime dependencies of observer-2.9.6: erts-11.0, et-1.5, kernel-7.0, runtime_tools-1.8.14, stdlib-3.13, wx-1.2 --------------------------------------------------------------------- --- odbc-2.13.3 ----------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-17105 Application(s): crypto, erts, odbc, wx Related Id(s): PR-2872 Fix compiler warnings produced by the clang compiler. Full runtime dependencies of odbc-2.13.3: erts-6.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- os_mon-2.7 ------------------------------------------------------ --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16943 Application(s): os_mon Related Id(s): OTP-16906 *** POTENTIAL INCOMPATIBILITY *** The temporarily introduced configuration parameter memsup_improved_system_memory_data has been removed. OTP-16944 Application(s): os_mon Related Id(s): PR-2787 Fix disk_sup to also search the system PATH on linux when looking for the df program. Full runtime dependencies of os_mon-2.7: erts-6.0, kernel-3.0, sasl-2.4, stdlib-2.0 --------------------------------------------------------------------- --- parsetools-2.3 -------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16957 Application(s): parsetools, tools Add types and specifications for documentation. OTP-17023 Application(s): parsetools Let Leex and Yecc recognize the environment variable ERL_COMPILER_OPTIONS. Add Yecc option {error_location, column | line}. Full runtime dependencies of parsetools-2.3: erts-6.0, kernel-3.0, stdlib-2.5 --------------------------------------------------------------------- --- reltool-0.9 ----------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-17189 Application(s): kernel, reltool, sasl Related Id(s): PR-2675 Recognize new key 'optional_applications' in application resource files. Full runtime dependencies of reltool-0.9: erts-7.0, kernel-3.0, sasl-2.4, stdlib-3.4, tools-2.6.14, wx-1.2 --------------------------------------------------------------------- --- runtime_tools-1.15.2 -------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. Full runtime dependencies of runtime_tools-1.15.2: erts-11.0, kernel-7.0, mnesia-4.12, stdlib-3.13 --------------------------------------------------------------------- --- sasl-4.1 -------------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-17189 Application(s): kernel, reltool, sasl Related Id(s): PR-2675 Recognize new key 'optional_applications' in application resource files. Full runtime dependencies of sasl-4.1: erts-10.2, kernel-5.3, stdlib-3.4, tools-2.6.14 --------------------------------------------------------------------- --- snmp-5.7.4 ------------------------------------------------------ --------------------------------------------------------------------- --- Improvements and New Features --- OTP-17049 Application(s): megaco, snmp Removed deprecated functions marked for removal. Full runtime dependencies of snmp-5.7.4: crypto-3.3, erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 --------------------------------------------------------------------- --- ssh-4.11 -------------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16750 Application(s): ssh Removed usage of erlang:is_port/1 from the SSH implementation. OTP-17051 Application(s): ssh Internal connection setup refactoring. OTP-17140 Application(s): ssh Refactor SSH fsm into a (hopefully) more comprehensible set of gen_statem callback-files. Full runtime dependencies of ssh-4.11: crypto-4.6.4, erts-9.0, kernel-5.3, public_key-1.6.1, stdlib-3.4.1 --------------------------------------------------------------------- --- ssl-10.3 -------------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16974 Application(s): ssl *** POTENTIAL INCOMPATIBILITY *** Removed ssl:ssl_accept/1,2,3 and ssl:cipher:suites/0,1 use ssl:handshake/1,2,3 and ssl:cipher_suites/2,3 instead. OTP-17044 Application(s): ssl Related Id(s): PR-2654 *** HIGHLIGHT *** Make TLS handshakes in Erlang distribution concurrent. OTP-17117 Application(s): ssl Related Id(s): PR-2933 Randomize internal {active,n} optimization when running Erlang distribution over TLS to spread RAM/CPU spike that may occur when starting up a big cluster. Full runtime dependencies of ssl-10.3: crypto-4.2, erts-10.0, inets-5.10.7, kernel-6.0, public_key-1.8, stdlib-3.12 --------------------------------------------------------------------- --- stdlib-3.15 ----------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-15107 Application(s): stdlib Related Id(s): ERL-1381, PR-2813 *** POTENTIAL INCOMPATIBILITY *** Time-outs in gen_statem with relative time 0 did not behave quite according to the intended model. This has now been corrected. The correction introduces a small potential incompatibility e.g when combining a state time-out with inserted events, and the inserted event does a state change in the state with the time-out. Before this correction the state time-out could be delivered even after the second state change, but now it is guaranteed that a state time-out is only delivered in the state it was started for, even in this corner case. OTP-16865 Application(s): stdlib Fix bugs in erl_eval concerning bitstring comprehensions. OTP-16905 Application(s): stdlib File names that start with a dot (such as ".gitignore" are now treated as file names and not extensions by filename:extension/1 and filename:rootname/1. OTP-16950 Application(s): stdlib Related Id(s): ERL-1378 Fixed a bug where beam_lib:chunks/3 with the allow_missing_chunks option would crash if a named chunk was missing. OTP-17077 Application(s): compiler, erts, stdlib Related Id(s): ERL-1431, PR-2903, PR-2905, PR-2906 A floating point zero (0.0) can be both positive (+0.0) and negative (-0.0). Multiple bugs in the compiler, runtime system, and STDLIB have been fixed to ensure that the minus sign on 0.0 is not lost. OTP-17118 Application(s): compiler, stdlib Related Id(s): PR-2825 Eliminated a Dialyzer crashed when the -MMD option is used to generate a dependency file and a BEAM file a the same time. OTP-17122 Application(s): erl_docgen, stdlib Fixed bug in shell_docs and erl_docgen that interpreted em tags as strong. OTP-17133 Application(s): stdlib On Solaris, the math:acos/1 and math:asin/1 functions would not fail for arguments outside the valid domain. --- Improvements and New Features --- OTP-14646 Application(s): stdlib Related Id(s): PR-2920 In the rand module it is now possible to seed the default algorithm using an algorithm alias: default. Generating pseudo random binaries has been implemented with rand:bytes/1 and rand:bytes_s/2. OTP-14647 Application(s): stdlib Related Id(s): PR-2910 New functions have been added to the proplists module: to_map/1,2 and from_map/1. OTP-14650 Application(s): stdlib Related Id(s): PR-2850 New functions have been added to the queue module: all/2, any/2, delete/2, delete_r/2, delete_with/2, and delete_with_r/2. OTP-14793 Application(s): stdlib Related Id(s): PR-2791 New function have been added to the queue module: fold/2 and filtermap/2. OTP-16678 Application(s): erts, stdlib, syntax_tools, tools Related Id(s): PR-2627 Support for handling abstract code created before OTP R15 has been dropped. OTP-16686 Application(s): debugger, erts, kernel, stdlib *** HIGHLIGHT *** Extended error information for failing BIF calls as proposed in EEP 54 has been implemented. When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail. For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4. There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions. OTP-16718 Application(s): erts, kernel, stdlib Related Id(s): PR-2735 *** HIGHLIGHT *** Process aliases as outlined by EEP 53 has been introduced. Process aliases is introduced in order to provide a lightweight mechanism that can prevent late replies after timeout or connection loss. For more information, see EEP 53 and the documentation of the new alias/1 BIF and the new options to the monitor/3 BIF. The call operation in the framework used by gen_server, gen_statem, and gen_event has been updated to utilize alias in order to prevent late responses. The gen_statem behavior still use a proxy process in the distributed case, since it has always prevented late replies and aliases wont work against pre OTP 24 nodes. The proxy process can be removed in OTP 26. The alias feature also made it possible to introduce new functions similar to the erpc:receive_response() function in the gen behaviors, so the new functions gen_server:receive_response(), gen_statem:receive_response(), gen_event:receive_response() have also been introduced. OTP-16910 Application(s): stdlib Related Id(s): PR-2771 Improved documentation about exit signals emitted when a gen_server terminates. OTP-16936 Application(s): erts, stdlib Related Id(s): ERL-1367 New functions have been added to the maps module: merge_with/3, intersect/2, intersect_with/3, filtermap/2, from_keys/2, and maps:foreach/2. maps:merge_with/3 is the same as merge/2 but takes an extra fun that is used to combine items with the same key. maps:intersect/2 computes the intersection of two maps. maps:intersect_with/3 is the same as intersect/2 but takes an extra fun that is used to combine intersecting items. maps:filtermap/2 allows filtering and mapping of a map in a single pass. maps:from_keys/2 constructs a map from a list of keys and a single value and can be used to to optimize sets operations such as from_list/1, filter/2, intersection/2, and subtract/2. maps:foreach/2 allows iteration over a map without returning any value. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-16971 Application(s): stdlib *** POTENTIAL INCOMPATIBILITY *** The filename:src/1 function which was deprecated in OTP 20 has been removed. Use filelib:find_source/1,3 instead. OTP-16980 Application(s): erts, stdlib Related Id(s): ERL-1308 The pretty printer for floating point number have been changed to make it easier to see if the integer part of the number has been rounded. After the change the the digit that may have been rounded always appears last or just before the exponent character (e or E). This is accomplished by always printing the number using scientific notation if it is so large that the integer part could be rounded. OTP-17005 Application(s): erl_interface, erts, jinterface, kernel, stdlib Related Id(s): OTP-16718 Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release. OTP-17024 Application(s): stdlib Add option location to erl_parse:abstract/2. OTP-17057 Application(s): erts, stdlib All long running functions in the maps API are now yielding. In previous releases the functions maps:from_list/1, maps:keys/1 and maps:values/1 did not yield. This could cause unfair scheduling of processes. OTP-17059 Application(s): stdlib Related Id(s): PR-2864 The sets module now has an optional map-based implementation, as described in EEP 50. To use this implementation, pass the {version,2} option to sets:new/1 or sets:from_list/2. OTP-17120 Application(s): stdlib Added shell_docs:supported_tags/0. This function can be used to retrieve the tags currently supported by shell_docs. OTP-17121 Application(s): stdlib The application/erlang+html documentation storage format used by shell_docs has been updated to include the tags b, strong, h4, h5 and h6. OTP-17171 Application(s): stdlib Related Id(s): PR-3011 Improved explanation of {continue,Continue} in Module:init/1 of the gen_server documentation. OTP-17175 Application(s): stdlib The erl_eval module now accepts a map for keeping track of bindings. Using an orddict for bindings will still work. OTP-17199 Application(s): stdlib Related Id(s): PR-2658 Documented epp:scan_erl_form/1 and added epp:scan_file/2. OTP-17210 Application(s): stdlib The standard floating point printing algorithm used by the io and io_lib modules has been changed from the algorithm described in [1] to the Ryu algorithm [2]. This gives a significant speed improvement for the printing of most floating point numbers and a small memory consumption improvement. [1]: Robert G. Burger and R. Kent Dybvig. 1996. Printing floating-point numbers quickly and accurately. In Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation (PLDI '96). Association for Computing Machinery, New York, NY, USA, 108–116. DOI:https://doi.org/10.1145/231379.231397 [2]: Ulf Adams. 2018. Ryū: fast float-to-string conversion. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2018). Association for Computing Machinery, New York, NY, USA, 270–282. DOI:https://doi.org/10.1145/3192366.3192369 Thanks to Thomas Depierre Full runtime dependencies of stdlib-3.15: compiler-5.0, crypto-3.3, erts-12.0, kernel-7.0, sasl-3.0 --------------------------------------------------------------------- --- syntax_tools-2.5 ------------------------------------------------ --------------------------------------------------------------------- --- Improvements and New Features --- OTP-16678 Application(s): erts, stdlib, syntax_tools, tools Related Id(s): PR-2627 Support for handling abstract code created before OTP R15 has been dropped. OTP-17180 Application(s): syntax_tools The igor and erl_tidy modules have been the removed and are now maintained by their original author Richard Carlsson. They can be found at github.com/richcarl/igor and github.com/richcarl/erl_tidy, respectively. Full runtime dependencies of syntax_tools-2.5: compiler-7.0, erts-9.0, kernel-5.0, stdlib-3.4 --------------------------------------------------------------------- --- tools-3.5 ------------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-17162 Application(s): tools Related Id(s): elixir-lang/elixir#10666 cover would crash when compiling a module having an exported function named clauses. --- Improvements and New Features --- OTP-16678 Application(s): erts, stdlib, syntax_tools, tools Related Id(s): PR-2627 Support for handling abstract code created before OTP R15 has been dropped. OTP-16957 Application(s): parsetools, tools Add types and specifications for documentation. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. Full runtime dependencies of tools-3.5: compiler-5.0, erts-11.0, erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4 --------------------------------------------------------------------- --- wx-2.0 ---------------------------------------------------------- --------------------------------------------------------------------- --- Fixed Bugs and Malfunctions --- OTP-17105 Application(s): crypto, erts, odbc, wx Related Id(s): PR-2872 Fix compiler warnings produced by the clang compiler. --- Improvements and New Features --- OTP-16800 Application(s): wx *** HIGHLIGHT *** The application has been completely rewritten in order to use wxWidgets version 3 as its base. Add basic documentation generated from the wxWidgets project. OTP-16963 Application(s): common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx *** POTENTIAL INCOMPATIBILITY *** The experimental HiPE application has been removed, together with all related functionality in other applications. OTP-17213 Application(s): wx Related Id(s): PR-3027 *** HIGHLIGHT *** Added support for wxWebView. OTP-17219 Application(s): wx Related Id(s): OTP-16800 *** POTENTIAL INCOMPATIBILITY *** Due to the support of the new backend versions some API incompatibilities have been introduced. Examples of changes are: wxWindowDC default creators have been removed wxClientDC default creators have been removed wxPaintDC default creators have been removed wxWindow:setVirtualSizeHints() has been deprecated in wxWidgets and removed wxWindow:makeModal() has been deprecated in wxWidgets and removed wxToolBar:add/insertTool without label have been deprecated in wxWidgets and removed wxStyledTextCtrl some functions have changed arguments from boolean to int wxSizerItem:new() Some arguments have become options Removed deprecated wxSizerItem:setWindow() use assignWindow() Removed deprecated wxSizerItem:setSpacer() use assignSpacer() Removed deprecated wxSizerItem:setSpacer() use assignSpacer() Removed deprecated wxSizerItem:setSizer() use assignSizer() wxMenu append/insert/prepend have changed return value and lost IsCheckable argument wxListCtrl:setItem/4 changed return value wxImage:convertToGreyscale() options have changed wxGridSizer:wxGridSizer() options have changed wxGrid API have many changes wxGraphicsRenderer:create*GradientBrush() uses GradientStops now wxGraphicsRenderer:createPen() have been removed wxGraphicsRenderer:create*GradientBrush() uses GradientStops now wxGLCanvas API is incompatible wxFlexGridSizer:wxFlexGridSizer() options have changed wxDisplay:new() options have changed wxCalendarDateAttr:new(ColText [,OptList]) have been removed wxBitmapButton:set/getBitmapSelected() have been removed Full runtime dependencies of wx-2.0: erts-6.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- xmerl-1.4 ------------------------------------------------------- --------------------------------------------------------------------- --- Improvements and New Features --- OTP-17123 Application(s): asn1, compiler, et, xmerl The compiler will now emit warnings when (previously bound) underscore-prefixed variables are matched. Full runtime dependencies of xmerl-1.4: erts-6.0, kernel-3.0, stdlib-2.5 --------------------------------------------------------------------- --- Thanks to ------------------------------------------------------- --------------------------------------------------------------------- Alexander Clouter, Andrew Shymanel, Bruce Yinhe, Bryan Paxton, Cheng Zhe, Erlend Hamberg, Filipe Cristovao, Frej Drejhammar, Henrik Lagebrand, Jesper Eskilson, José Valim, Jérôme de Bretagne, Linus.yuan, Luca Favatella, Luis Rascao, Luke Bakken, Maria-12648430, Mariano Guerra, Mattias Hansson, Maxim Fedorov, Michał Muskała, Mikael Pettersson, Paulo F. Oliveira, Philip Kuryloski, Philipp Klaus Krause, Pierre Allix, Radek Szymczyszyn, Richard Carlsson, Ruud Kamphuis, Stavros Aronis, Taras Halturin, Thomas Depierre, Tianon Gravi, Viktor Söderqvist, Wojtek Mach, lagebr, vans163, yfractal, Łukasz Niemier --------------------------------------------------------------------- --------------------------------------------------------------------- ---------------------------------------------------------------------