Inital Release: OTP 24.0
Git Tag: OTP-24.0
Date: 2021-05-12
Trouble Report Id: OTP-10391, OTP-13126, OTP-14485, OTP-14601,
OTP-14646, OTP-14647, OTP-14650, OTP-14700,
OTP-14753, OTP-14793, OTP-15107, OTP-15523,
OTP-16226, 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-17062, 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-17132, OTP-17133,
OTP-17140, OTP-17142, OTP-17153, OTP-17154,
OTP-17155, OTP-17156, OTP-17157, OTP-17168,
OTP-17169, OTP-17170, OTP-17171, OTP-17172,
OTP-17175, OTP-17177, OTP-17180, OTP-17181,
OTP-17183, OTP-17186, OTP-17189, OTP-17192,
OTP-17198, OTP-17199, OTP-17201, OTP-17203,
OTP-17206, OTP-17207, OTP-17210, OTP-17213,
OTP-17214, OTP-17216, OTP-17217, OTP-17219,
OTP-17221, OTP-17222, OTP-17226, OTP-17236,
OTP-17243, OTP-17254, OTP-17257, OTP-17259,
OTP-17260, OTP-17262, OTP-17263, OTP-17266,
OTP-17267, OTP-17270, OTP-17272, OTP-17275,
OTP-17276, OTP-17277, OTP-17278, OTP-17284,
OTP-17285, OTP-17286, OTP-17287, OTP-17288,
OTP-17292, OTP-17293, OTP-17294, OTP-17300,
OTP-17301, OTP-17302, OTP-17310, OTP-17312,
OTP-17313, OTP-17314, OTP-17315, OTP-17321,
OTP-17322, OTP-17327, OTP-17329, OTP-17330,
OTP-17334, OTP-17341, OTP-17342, OTP-17343,
OTP-17344, OTP-17352, OTP-17353, OTP-17354,
OTP-17355, OTP-17364, OTP-17368, OTP-17372,
OTP-17373, OTP-17374, OTP-17378, OTP-17384,
OTP-17385, OTP-17387, OTP-17388
Seq num: ERIERL-537, ERIERL-618, ERIERL-619, 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-1418, ERL-1430, ERL-1431, ERL-1450,
ERL-1480, ERL-892, GH-4019, GH-4033, GH-4230,
GH-4360, GH-4469, GH-4473, GH-4493, GH-4525,
GH-4544, GH-4588, GH-4621, GH-4624, GH-4626,
GH-4631, GH-4636, GH-4637, GH-4650, GH-4680,
GH-4725, GH-4800
System: OTP
Release: 24
Application: asn1-5.0.16, common_test-1.20.3,
compiler-8.0, crypto-5.0, debugger-5.1,
dialyzer-4.4, edoc-1.0, erl_docgen-1.1,
erl_interface-5.0, erts-12.0, et-1.6.5,
eunit-2.6.1, ftp-1.1, inets-7.4,
jinterface-1.12, kernel-8.0, megaco-4.0,
mnesia-4.19.1, observer-2.9.6, odbc-2.13.4,
os_mon-2.7, parsetools-2.3, public_key-1.11,
reltool-0.9, runtime_tools-1.16.2, sasl-4.1,
snmp-5.9, ssh-4.12, ssl-10.4, stdlib-3.15,
syntax_tools-2.6, tftp-1.0.3, tools-3.5,
wx-2.0, xmerl-1.3.28
Predecessor: OTP
Check out the git tag OTP-24.0, and build a full OTP system including
documentation.
---------------------------------------------------------------------
--- HIGHLIGHTS ------------------------------------------------------
---------------------------------------------------------------------
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-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
The process alias feature as outlined by EEP 53 has
been introduced. It 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.
The ?NO_APP macro in edoc_doclet.hrl has been
deprecated. Use the atom no_app instead.
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-17142 Application(s): crypto, public_key, ssl
Related Id(s): GH-4637, GH-4650, PR-4756
TLS connections now support EdDSA certificates.
OTP-17213 Application(s): wx
Related Id(s): PR-3027
Added support for wxWebView.
OTP-17226 Application(s): compiler
Related Id(s): GH-4019, PR-4545
The compiler will now inline funs that are used only
once immediately after their definition.
OTP-17334 Application(s): stdlib
Related Id(s): EEP-56, PR-4638
Implementation of EEP 56 in supervisor. It adds the
concept of significant children as well as the
auto_shutdown supervisor flag.
See the supervisor manual page for more information.
---------------------------------------------------------------------
--- 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.
The ?NO_APP macro in edoc_doclet.hrl has been
deprecated. Use the atom no_app instead.
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-17062 Application(s): kernel
Related Id(s): ERIERL-537, ERL-1418, GH-4469
Let disk_log:open/1 change the size if a wrap log is
opened for the first time, that is, the disk log
process does not exist, and the value of option size
does not match the current size of the disk log.
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
OTP-17259 Application(s): ssh
Related Id(s): ERIERL-619, OTP-16511
The RSA SHA1 sign/verify variants are disabled by
default. That is, ssh-rsa is disabled by default as
well as the SHA1 sign/verify with RSA keys from id_rsa
and ssh_host_rsa_key. All SHA2 sign/verify are enabled
by default.
The reason is that SHA1 is now considered easy to
break.
To enable RSA with SHA1, for example for a very old and
unsafe peer, see Example 9 in the User's Guide chapter
Configuring algorithms in SSH.
OTP-17275 Application(s): erts
Related Id(s): PR-4553
The erl command line arguments +Bi, +Bd, and +B
erroneously caused reception of the USR1 signal to
terminate the runtime system without creating a crash
dump. Reception of the USR1 signal now always cause
termination *with* creation of a crash dump, regardless
of command line arguments passed. This bug has existed
at least since OTP R5B.
OTP-17355 Application(s): kernel
Related Id(s): OTP-17154
The return values from module socket functions send(),
sendto(), sendmsg(), sendfile() and recv() has been
changed to return a tuple tagged with select when a
SelectInfo was returned, and not sometimes tagged with
ok.
This is a backwards incompatible change that improves
usability for code using asynchronous operations.
---------------------------------------------------------------------
--- OTP-24.0 --------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-17272 Application(s): otp
Related Id(s): GH-4626, PR-4627
Updated autoconf auxiliary files.
OTP-17278 Application(s): otp
Related Id(s): GH-4621
Do not allow a mandatory application to be disabled
using the configure switch --without-appname.
OTP-17373 Application(s): otp
Related Id(s): PR-4645
A build of OTP configured with --without-jinterface now
builds without complaining about missing jinterface
files.
OTP-17378 Application(s): otp
Related Id(s): PR-4791
The documentation about signaling in Erlang has been
improved in the Processes chapter of the Erlang
Reference Manual.
---------------------------------------------------------------------
--- asn1-5.0.16 -----------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17387 Application(s): asn1
Related Id(s): OTP-17123
Fixed a bug in the asn1 compiler that potentially could
cause it to fail to open a file.
Full runtime dependencies of asn1-5.0.16: erts-7.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- common_test-1.20.3 ----------------------------------------------
---------------------------------------------------------------------
--- 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.
OTP-17385 Application(s): common_test, et, inets, kernel, snmp,
stdlib
Related Id(s): OTP-17123
Fixed warnings in code matching on underscore prefixed
variables.
Full runtime dependencies of common_test-1.20.3: 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
*** HIGHLIGHT ***
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): compiler
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).
OTP-17226 Application(s): compiler
Related Id(s): GH-4019, PR-4545
*** HIGHLIGHT ***
The compiler will now inline funs that are used only
once immediately after their definition.
OTP-17260 Application(s): compiler
It is now possible to disable warnings emitted from the
compiler's optimization passes with the new options
nowarn_opportunistic, nowarn_nomatch, nowarn_ignored,
and nowarn_failed.
OTP-17301 Application(s): compiler, erts
Related Id(s): GH-4636
Introduce new types nonempty_binary() and
nonempty_bitstring().
OTP-17330 Application(s): compiler, stdlib
Add compiler option {nowarn_unused_record,
RecordNames}. Document compiler option
nowarn_unused_type.
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.
OTP-17254 Application(s): crypto, erts
Related Id(s): ERIERL-618, GH-4230
The configure scripts in crypto and erts now fail if a
requested feature cannot be enabled.
Large parts of the configure script of crypto have been
rewritten with various improvements and bug fixes. It
is now better at finding usable OpenSSL libraries, but
will in the following cases fail to detect OpenSSL
libraries where it previously sometimes detected the
libraries by chance:
-- OpenSSL installations with include directory and lib
directory parts installed in different base
directories. In order to detect such installations
after this change, the user must explicitly specify the
locations using the --with-ssl=<path> and the
--with-ssl-incl=<path> configure command line
arguments.
-- When building with old gcc compilers or other
compilers on Debian derivatives with multiarch
directories under the lib directory. In order to detect
such installations after this change, the user must
explicitly specify the multiarch directory name using
the --with-ssl-lib-subdir=lib/<multiarch-dir> configure
command line argument.
OTP-17312 Application(s): crypto
Related Id(s): PR-4723
The value 'none' was missing in the specs of
crypto:sign/4 and crypto:verify/6.
--- 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.
OTP-17142 Application(s): crypto, public_key, ssl
Related Id(s): GH-4637, GH-4650, PR-4756
*** HIGHLIGHT ***
TLS connections now support EdDSA certificates.
OTP-17313 Application(s): crypto
Related Id(s): PR-4686
Add prop_aead attribute to map from
crypto:cipher_info/1.
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.
The ?NO_APP macro in edoc_doclet.hrl has been
deprecated. Use the atom no_app instead.
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
---------------------------------------------------------------------
--- 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.
OTP-17243 Application(s): erl_docgen, ftp, kernel, ssh, ssl,
tftp
Related Id(s): PR-4557
Missing runtime dependencies has been added to this
application.
OTP-17257 Application(s): erl_docgen
Fix bug where see* elements within type/name were
removed when generating html. Bug has been present
since OTP-21.
--- 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,
kernel-8.0, stdlib-3.15, xmerl-1.3.7
---------------------------------------------------------------------
--- erl_interface-5.0 -----------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17132 Application(s): erl_interface, kernel
Two options have been added to erl_call. The
-fetch_stdout option fetches stdout data resulting from
the code invoked by erl_call. The -fetch_stdout option
disables printing of the result term. In order to
implement the first of these two options a new function
called ei_xrpc_from has been added to erl_interface.
For details see the erl_call documentation and
erl_interface documentation.
--- 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.
OTP-17270 Application(s): erl_interface
Related Id(s): OTP-17127
Support the new link protocol in order to be able to
phase out the old link protocol in the future.
erl_interface does not support setting up or removing
links from the erl_interface side, so the bug present
with the old protocol did not effect erl_interface.
This since both participants of a link simultaneously
needed to operate on the link in order to trigger the
bug.
--- 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.
OTP-17254 Application(s): crypto, erts
Related Id(s): ERIERL-618, GH-4230
The configure scripts in crypto and erts now fail if a
requested feature cannot be enabled.
Large parts of the configure script of crypto have been
rewritten with various improvements and bug fixes. It
is now better at finding usable OpenSSL libraries, but
will in the following cases fail to detect OpenSSL
libraries where it previously sometimes detected the
libraries by chance:
-- OpenSSL installations with include directory and lib
directory parts installed in different base
directories. In order to detect such installations
after this change, the user must explicitly specify the
locations using the --with-ssl=<path> and the
--with-ssl-incl=<path> configure command line
arguments.
-- When building with old gcc compilers or other
compilers on Debian derivatives with multiarch
directories under the lib directory. In order to detect
such installations after this change, the user must
explicitly specify the multiarch directory name using
the --with-ssl-lib-subdir=lib/<multiarch-dir> configure
command line argument.
OTP-17275 Application(s): erts
Related Id(s): PR-4553
*** POTENTIAL INCOMPATIBILITY ***
The erl command line arguments +Bi, +Bd, and +B
erroneously caused reception of the USR1 signal to
terminate the runtime system without creating a crash
dump. Reception of the USR1 signal now always cause
termination *with* creation of a crash dump, regardless
of command line arguments passed. This bug has existed
at least since OTP R5B.
OTP-17314 Application(s): erts
Related Id(s): GH-4624, OTP-15926, PR-
Add check to make sure that when passing an option to
erl that requires an argument, but none is given, we
report an error. This fixes a bug introduced in
OTP-22.1 via OTP-15926.
OTP-17329 Application(s): erts
Related Id(s): PR-4730
The "Last calls" section in crash dumps have been
updated to print newlines after each non-function
save_calls state (send, receive, timeout).
OTP-17372 Application(s): erts, kernel
Sockets created with socket:accept not counted
(socket:info/0).
--- 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-14753 Application(s): erts
New functions enif_dynamic_resource_call enables NIFs
to call native code in another NIF module. The call is
done via a resource callback function dyncall supplied
by the user with the new enif_init_resource_type.
OTP-16226 Application(s): erts
Related Id(s): OTP-10391
Runtime support for new improved selective receive
optimization.
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 ***
The process alias feature as outlined by EEP 53 has
been introduced. It 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 +M<S>cp 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 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 Android, 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-17154 Application(s): erts, kernel
Related Id(s): OTP-16749
socket:sendfile/2,3,4,5 has been implemented, for
platforms that support the underlying socket library
call.
OTP-17207 Application(s): compiler, erts
The bit matching and construction syntax now supports
16-bit floats (IEEE 754-2008).
OTP-17285 Application(s): erts
Related Id(s): PR-4651
Add process_flag(fullsweep_after, N) to change
fullsweep_after value in an already spawned process.
OTP-17293 Application(s): erts
Related Id(s): PR-4672
The max_heap_size error report has been updated to
include the message queue size.
OTP-17301 Application(s): compiler, erts
Related Id(s): GH-4636
Introduce new types nonempty_binary() and
nonempty_bitstring().
OTP-17310 Application(s): erts
Related Id(s): PR-4656
Optimize updates of large maps with identical keys and
values. E.g. in the example below the original Map will
be reused as the return of the second update.
1> Map = LargeMap#{ a => b }.
2> Map#{ a := b }.
The same optimization was done for small maps (< 33
keys) in erts-10.4 (OTP 22.0).
OTP-17341 Application(s): erts
Related Id(s): PR-2945
The previously undocumented internal -no_epmd option
has been made documented and public.
OTP-17368 Application(s): erts
Reduce memory carrier super alignment on 64-bit
architectures. In practice allows more fine grained
control over configuration of memory carrier sizes,
from increments of 256kb to 16kb.
Full runtime dependencies of erts-12.0: kernel-8.0, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- et-1.6.5 --------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-17385 Application(s): common_test, et, inets, kernel, snmp,
stdlib
Related Id(s): OTP-17123
Fixed warnings in code matching on underscore prefixed
variables.
Full runtime dependencies of et-1.6.5: erts-9.0, kernel-5.3,
runtime_tools-1.10, stdlib-3.4, wx-1.2
---------------------------------------------------------------------
--- eunit-2.6.1 -----------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17300 Application(s): eunit
Related Id(s): PR-4695
The eunit_surefire report handler has been updated to
automatically create the directories needed to store
the surefire xml file.
Full runtime dependencies of eunit-2.6.1: erts-9.0, kernel-5.3,
stdlib-3.4
---------------------------------------------------------------------
--- 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.
OTP-17243 Application(s): erl_docgen, ftp, kernel, ssh, ssl,
tftp
Related Id(s): PR-4557
Missing runtime dependencies has been added to this
application.
--- 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,
runtime_tools-1.15.1, ssl-10.2, 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.
OTP-17385 Application(s): common_test, et, inets, kernel, snmp,
stdlib
Related Id(s): OTP-17123
Fixed warnings in code matching on underscore prefixed
variables.
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.
OTP-17132 Application(s): erl_interface, kernel
Two options have been added to erl_call. The
-fetch_stdout option fetches stdout data resulting from
the code invoked by erl_call. The -fetch_stdout option
disables printing of the result term. In order to
implement the first of these two options a new function
called ei_xrpc_from has been added to erl_interface.
For details see the erl_call documentation and
erl_interface documentation.
OTP-17243 Application(s): erl_docgen, ftp, kernel, ssh, ssl,
tftp
Related Id(s): PR-4557
Missing runtime dependencies has been added to this
application.
OTP-17262 Application(s): kernel
Related Id(s): GH-4588, OTP-16487, PR-4604
inet:get_rc/0 has been corrected to return host entries
as separate entries instead of (incorrectly) in a list
within the list. This bug was introduced by OTP-16487
in OTP-23.0-rc1.
OTP-17277 Application(s): kernel
The type gen_tcp:option_name() had a duplicate
pktoptions value.
OTP-17286 Application(s): kernel
Related Id(s): PR-4619
Fixed removal of empty groups from internal state in
pg.
OTP-17287 Application(s): kernel
Related Id(s): PR-4581
erl -remsh now prints an error message when it fails to
connect to the remote node.
OTP-17288 Application(s): kernel
Related Id(s): PR-4581
Fix bugs related to corrupt shell history files.
Error messages printed by shell history are now logged
as logger error reports instead of written to standard
error.
OTP-17315 Application(s): kernel
Related Id(s): GH-4626
A logger warning is now issues when too many arguments
are given to -name or -sname. Example: erl -name a b.
OTP-17344 Application(s): kernel
Related Id(s): GH-4631, OTP-12136, OTP-14485, PR-4633
The cache used by inet_res now, again, can handle
multiple IP addresses per domain name, and thus fixes a
bug introduced in PR-3041 (OTP-13126) and PR-2891
(OTP-14485).
OTP-17372 Application(s): erts, kernel
Sockets created with socket:accept not counted
(socket:info/0).
OTP-17374 Application(s): kernel
Related Id(s): GH-4680, OTP-17216, PR-2989, PR-4787
The {fd, Fd} option to gen_tcp:listen/2 did not work
for inet_backend socket, which has been fixed.
--- 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 changed type (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 ***
The process alias feature as outlined by EEP 53 has
been introduced. It 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-17062 Application(s): kernel
Related Id(s): ERIERL-537, ERL-1418, GH-4469
*** POTENTIAL INCOMPATIBILITY ***
Let disk_log:open/1 change the size if a wrap log is
opened for the first time, that is, the disk log
process does not exist, and the value of option size
does not match the current size of the disk log.
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-17154 Application(s): erts, kernel
Related Id(s): OTP-16749
socket:sendfile/2,3,4,5 has been implemented, for
platforms that support the underlying socket library
call.
OTP-17155 Application(s): kernel
Add socket monitor(s) for all types sockets.
OTP-17156 Application(s): kernel
*** POTENTIAL INCOMPATIBILITY ***
Fix various issues with the gen_tcp_socket. Including
documenting some incompatibilities.
OTP-17157 Application(s): kernel
inet:i/0 now also shows existing gen_tcp compatibility
sockets (based on 'socket').
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 selective
receive optimization.
OTP-17203 Application(s): kernel
Related Id(s): OTP-17156
Add utility fiunction inet:info/1 to provide
miscellaneous info about a socket.
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.
OTP-17266 Application(s): kernel
Related Id(s): PR-4564
An option {nxdomain_reply, boolean()} has been
implemented in the DNS resolver inet_res. It is useful
since an nxdomain error from a name server does contain
the SOA record if the domain exists at all. This record
is useful to determine a TTL for negative caching of
the failed entry.
OTP-17284 Application(s): kernel
Related Id(s): PR-4615
Optimized lookup of local processes part of groups in
pg.
OTP-17355 Application(s): kernel
Related Id(s): OTP-17154
*** POTENTIAL INCOMPATIBILITY ***
The return values from module socket functions send(),
sendto(), sendmsg(), sendfile() and recv() has been
changed to return a tuple tagged with select when a
SelectInfo was returned, and not sometimes tagged with
ok.
This is a backwards incompatible change that improves
usability for code using asynchronous operations.
OTP-17385 Application(s): common_test, et, inets, kernel, snmp,
stdlib
Related Id(s): OTP-17123
Fixed warnings in code matching on underscore prefixed
variables.
Full runtime dependencies of kernel-8.0: crypto-5.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.19.1 ---------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17217 Application(s): mnesia
Suppression of deprecation warnings has been added to
the source files of the Mnesia application.
OTP-17294 Application(s): mnesia
Related Id(s): GH-4525, PR-4674
Fixed that the backend plugin initialization is done
only once.
Full runtime dependencies of mnesia-4.19.1: 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.4 -----------------------------------------------------
---------------------------------------------------------------------
--- 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.4: 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
---------------------------------------------------------------------
--- public_key-1.11 -------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-17142 Application(s): crypto, public_key, ssl
Related Id(s): GH-4637, GH-4650, PR-4756
*** HIGHLIGHT ***
TLS connections now support EdDSA certificates.
OTP-17352 Application(s): public_key, ssh
The functions public_key:ssh_encode/2,
public_key:ssh_decode/2,
public_key:ssh_hostkey_fingerprint/1 and
public_key:ssh_hostkey_fingerprint/2 are deprecated.
Replacement functions are available in SSH, see the
Deprecations chapter in the Erlang/OTP documentation.
OTP-17384 Application(s): public_key, ssl
Related Id(s): GH-4800
Enhance documentation and logging of certificate
handling.
Full runtime dependencies of public_key-1.11: asn1-3.0, crypto-3.8,
erts-6.0, kernel-3.0, stdlib-3.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.
OTP-17292 Application(s): reltool, sasl
Related Id(s): PR-4684, PR-4685
Removed timestamps from files generated by sasl and
reltool to enable deterministic builds.
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.16.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.16.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.
OTP-17292 Application(s): reltool, sasl
Related Id(s): PR-4684, PR-4685
Removed timestamps from files generated by sasl and
reltool to enable deterministic builds.
Full runtime dependencies of sasl-4.1: erts-10.2, kernel-5.3,
stdlib-3.4, tools-2.6.14
---------------------------------------------------------------------
--- snmp-5.9 --------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-17049 Application(s): megaco, snmp
Removed deprecated functions marked for removal.
OTP-17354 Application(s): snmp
Removed timestamps from files generated by snmp to
enable deterministic builds.
OTP-17385 Application(s): common_test, et, inets, kernel, snmp,
stdlib
Related Id(s): OTP-17123
Fixed warnings in code matching on underscore prefixed
variables.
Full runtime dependencies of snmp-5.9: crypto-3.3, erts-6.0,
kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5
---------------------------------------------------------------------
--- ssh-4.12 --------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17243 Application(s): erl_docgen, ftp, kernel, ssh, ssl,
tftp
Related Id(s): PR-4557
Missing runtime dependencies has been added to this
application.
OTP-17353 Application(s): ssh
The send window handling is changed to not initialize a
too large window on some occasions.
--- 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.
OTP-17259 Application(s): ssh
Related Id(s): ERIERL-619, OTP-16511
*** POTENTIAL INCOMPATIBILITY ***
The RSA SHA1 sign/verify variants are disabled by
default. That is, ssh-rsa is disabled by default as
well as the SHA1 sign/verify with RSA keys from id_rsa
and ssh_host_rsa_key. All SHA2 sign/verify are enabled
by default.
The reason is that SHA1 is now considered easy to
break.
To enable RSA with SHA1, for example for a very old and
unsafe peer, see Example 9 in the User's Guide chapter
Configuring algorithms in SSH.
OTP-17322 Application(s): ssh
Related Id(s): EEP-56, OTP-17334, PR-4638
Adapt ssh supervisors to the new 'significant' and
'auto_shutdown' flags in supervisor.
OTP-17352 Application(s): public_key, ssh
The functions public_key:ssh_encode/2,
public_key:ssh_decode/2,
public_key:ssh_hostkey_fingerprint/1 and
public_key:ssh_hostkey_fingerprint/2 are deprecated.
Replacement functions are available in SSH, see the
Deprecations chapter in the Erlang/OTP documentation.
Full runtime dependencies of ssh-4.12: crypto-5.0, erts-9.0,
kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
---------------------------------------------------------------------
--- ssl-10.4 --------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17243 Application(s): erl_docgen, ftp, kernel, ssh, ssl,
tftp
Related Id(s): PR-4557
Missing runtime dependencies has been added to this
application.
OTP-17343 Application(s): ssl
TLS handshake should fail if OCSP staple is requested
but missing. Note that OCSP support is still considered
experimental and only partially implemented.
--- 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.
OTP-17142 Application(s): crypto, public_key, ssl
Related Id(s): GH-4637, GH-4650, PR-4756
*** HIGHLIGHT ***
TLS connections now support EdDSA certificates.
OTP-17384 Application(s): public_key, ssl
Related Id(s): GH-4800
Enhance documentation and logging of certificate
handling.
Full runtime dependencies of ssl-10.4: crypto-4.2, erts-10.0,
inets-5.10.7, kernel-6.0, public_key-1.8, runtime_tools-1.15.1,
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.
OTP-17186 Application(s): stdlib
Silence unused_record warnings when using ms_transform.
The parse transform ms_transform replaces records with
tuples, which can cause the Erlang code linter to emit
warnings about unused records.
OTP-17222 Application(s): stdlib
Related Id(s): GH-4544
Documented a deficiency in the re module regarding the
[:ascii:] character class matching Latin-1 characters.
OTP-17342 Application(s): stdlib
Related Id(s): GH-4725, PR-4726
Fixed spec of start functions in generic behaviors.
OTP-17364 Application(s): stdlib
Related Id(s): PR-4747
Supervisors rejected child specs with a shutdown value
of 0.
--- 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 ***
The process alias feature as outlined by EEP 53 has
been introduced. It 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 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-17169 Application(s): stdlib
Related Id(s): PR-2584
Do not pretty-print catch expressions with unnecessary
parentheses. The re-write of the Erlang parser grammar
in PR-2584 implies that parentheses around catch
expressions are in many cases no longer required.
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
OTP-17236 Application(s): stdlib
Related Id(s): PR-3014
Add hex encoding and decoding functions in the binary
module.
OTP-17263 Application(s): stdlib
The undocumented and partially broken ets:filter/3
function has been removed.
OTP-17267 Application(s): stdlib
Add support in shell_docs to display any "text"
documentation format. This means that h(Module) in the
shell now can display the "text/markdown" of Elixir
documentation.
OTP-17276 Application(s): stdlib
Related Id(s): PR-2979
The internal hashing of keys within ETS tables of types
set, bag, duplicate_bag has been salted to diverge from
erlang:phash2. This to avoid bad hashing if phash2 is
used to distribute the keys over separate tables/nodes.
OTP-17327 Application(s): stdlib
Related Id(s): PR-4707
Updated to the Unicode 13.0 specification.
OTP-17330 Application(s): compiler, stdlib
Add compiler option {nowarn_unused_record,
RecordNames}. Document compiler option
nowarn_unused_type.
OTP-17334 Application(s): stdlib
Related Id(s): EEP-56, PR-4638
*** HIGHLIGHT ***
Implementation of EEP 56 in supervisor. It adds the
concept of significant children as well as the
auto_shutdown supervisor flag.
See the supervisor manual page for more information.
OTP-17385 Application(s): common_test, et, inets, kernel, snmp,
stdlib
Related Id(s): OTP-17123
Fixed warnings in code matching on underscore prefixed
variables.
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.6 ------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17302 Application(s): syntax_tools
Related Id(s): PR-4705
The type spec of erl_syntax:function_type/2 has been
fixed.
OTP-17321 Application(s): syntax_tools
Output parentheses around BitStringExpr when
pretty-printing binary comprehensions.
--- 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.6: compiler-7.0,
erts-9.0, kernel-5.0, stdlib-3.4
---------------------------------------------------------------------
--- tftp-1.0.3 ------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17243 Application(s): erl_docgen, ftp, kernel, ssh, ssl,
tftp
Related Id(s): PR-4557
Missing runtime dependencies has been added to this
application.
Full runtime dependencies of tftp-1.0.3: erts-6.0, kernel-6.0,
stdlib-3.5
---------------------------------------------------------------------
--- tools-3.5 -------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17221 Application(s): tools
Related Id(s): PR-4547
For cover-compiled code, the error behaviour of list
and binary comprehensions that used andalso/orelse in
guards could be changed so that a filter that was
supposed be evaluated in guard context was evaluated in
body context. That is, there was a possibility that
comprehensions that did not raise exceptions could
raise exceptions when being run using cover.
--- 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.3.28 ----------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-17388 Application(s): xmerl
Related Id(s): OTP-17123
Fixed a bug that could cause parsing to crash.
Full runtime dependencies of xmerl-1.3.28: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
--- Thanks to -------------------------------------------------------
---------------------------------------------------------------------
Alexander Clouter, Alexander Petrovsky, Andreas Schultz, Bryan
Paxton, Cheng Zhe, Dominic Letz, Eksperimental, Erlend Hamberg,
Filipe Cristovao, Frej Drejhammar, Henrik Lagebrand, Jesper Eskilson,
Jonathan Klabunde Tomer, José Valim, João Henrique Ferreira de
Freitas, Jérôme de Bretagne, Leo Liu, Linus.yuan, Loïc Hoguin, Luca
Favatella, Luis Rascao, Luke Bakken, Maria Scott, Maria-12648430,
Mariano Guerra, Mattias Hansson, Max Nordlund, Maxim Fedorov, Michal
Palka, Michal Piotrowski, Michal Slaski, Michał Muskała, Mikael
Pettersson, Nalin Ranjan, Nelson Vides, Nico Piderman, Oskar, Paulo
F. Oliveira, Philip Kuryloski, Philipp Klaus Krause, Pierre Allix,
Péter Gömöri, Radek Szymczyszyn, Richard Carlsson, Ruud Kamphuis,
Stavros Aronis, Taras Halturin, Thomas Depierre, Tianon Gravi, Tony
Rogvall, Ulf Wiger, Viktor Söderqvist, Wojtek Mach, Zeyu Zhang, ergl,
gearnode, ilya-klyuchnikov, juhlig, lagebr, plan-do-break-fix,
skatepalli, vans163, yfractal, Łukasz Niemier
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------