Inital Release: OTP 23.0
Git Tag: OTP-23.0
Date: 2020-04-22
Trouble Report Id: OTP-10278, OTP-11688, OTP-13450, OTP-13812,
OTP-14708, OTP-14734, OTP-14790, OTP-15077,
OTP-15232, OTP-15247, OTP-15251, OTP-15299,
OTP-15434, OTP-15517, OTP-15589, OTP-15603,
OTP-15618, OTP-15695, OTP-15744, OTP-15812,
OTP-15835, OTP-15837, OTP-15840, OTP-15842,
OTP-15866, OTP-15868, OTP-15915, OTP-15925,
OTP-15948, OTP-15950, OTP-15956, OTP-15967,
OTP-15995, OTP-15998, OTP-15999, OTP-16005,
OTP-16007, OTP-16008, OTP-16014, OTP-16026,
OTP-16029, OTP-16055, OTP-16072, OTP-16073,
OTP-16105, OTP-16120, OTP-16127, OTP-16128,
OTP-16148, OTP-16155, OTP-16160, OTP-16168,
OTP-16171, OTP-16189, OTP-16210, OTP-16214,
OTP-16215, OTP-16222, OTP-16229, OTP-16232,
OTP-16237, OTP-16244, OTP-16250, OTP-16251,
OTP-16252, OTP-16260, OTP-16264, OTP-16270,
OTP-16273, OTP-16275, OTP-16276, OTP-16283,
OTP-16284, OTP-16289, OTP-16312, OTP-16327,
OTP-16328, OTP-16329, OTP-16345, OTP-16346,
OTP-16347, OTP-16362, OTP-16363, OTP-16367,
OTP-16368, OTP-16369, OTP-16370, OTP-16386,
OTP-16391, OTP-16394, OTP-16395, OTP-16398,
OTP-16400, OTP-16402, OTP-16406, OTP-16419,
OTP-16429, OTP-16431, OTP-16432, OTP-16453,
OTP-16454, OTP-16455, OTP-16463, OTP-16469,
OTP-16470, OTP-16478, OTP-16480, OTP-16482,
OTP-16483, OTP-16484, OTP-16487, OTP-16489,
OTP-16490, OTP-16492, OTP-16494, OTP-16495,
OTP-16496, OTP-16497, OTP-16499, OTP-16500,
OTP-16501, OTP-16502, OTP-16503, OTP-16504,
OTP-16505, OTP-16506, OTP-16508, OTP-16509,
OTP-16510, OTP-16511, OTP-16512, OTP-16513,
OTP-16516, OTP-16519, OTP-16521, OTP-16523,
OTP-16530, OTP-16531, OTP-16533, OTP-16540,
OTP-16541, OTP-16543, OTP-16544, OTP-16545,
OTP-16549, OTP-16551, OTP-16552, OTP-16554,
OTP-16561, OTP-16562, OTP-16563, OTP-16570,
OTP-16571, OTP-16573, OTP-16576, OTP-16579,
OTP-16583, OTP-16594, OTP-16607, OTP-16615,
OTP-16616, OTP-16617
Seq num: ERIERL-402, ERIERL-477, ERL-1002, ERL-1003,
ERL-1051, ERL-1053, ERL-1057, ERL-1058,
ERL-1115, ERL-1134, ERL-1150, ERL-1154,
ERL-1168, ERL-1178, ERL-1186, ERL-1189,
ERL-1196, ERL-1208, ERL-303, ERL-496,
ERL-560, ERL-592, ERL-700, ERL-708, ERL-716,
ERL-825, ERL-927, ERL-991
System: OTP
Release: 23
Application: asn1-5.0.12, common_test-1.19, compiler-7.6,
crypto-4.7, debugger-5.0, dialyzer-4.2,
edoc-0.12, erl_docgen-1.0, erl_interface-4.0,
erts-11.0, eunit-2.5, hipe-4.0, inets-7.2,
jinterface-1.11, kernel-7.0, megaco-3.19,
mnesia-4.17, observer-2.9.4, odbc-2.13,
os_mon-2.5.2, parsetools-2.2, public_key-1.8,
runtime_tools-1.15, sasl-3.5, snmp-5.6,
ssh-4.10, ssl-10.0, stdlib-3.13,
syntax_tools-2.3, tools-3.4, wx-1.9.1,
xmerl-1.3.25
Predecessor: OTP
Check out the git tag OTP-23.0, and build a full OTP system including
documentation.
---------------------------------------------------------------------
--- HIGHLIGHTS ------------------------------------------------------
---------------------------------------------------------------------
OTP-13450 Application(s): kernel
Related Id(s): OTP-15251
*** POTENTIAL INCOMPATIBILITY ***
A new module erpc has been introduced in the kernel
application. The erpc module implements an enhanced
subset of the operations provided by the rpc module.
Enhanced in the sense that it makes it possible to
distinguish between returned value, raised exceptions,
and other errors. erpc also has better performance and
scalability than the original rpc implementation. This
by utilizing the newly introduced spawn_request() BIF.
Also the rpc module benefits from these improvements by
utilizing erpc when it is possible.
This change has been marked as a potential
incompatibility since rpc:block_call() now only is
guaranteed to block other block_call() operations. The
documentation previously claimed that it would block
all rpc operations. This has however never been the
case. It previously did not block node-local
block_call() operations.
OTP-14708 Application(s): compiler, debugger, erts
EEP-52 has been implemented.
In binary matching, the size of the segment to be
matched is now allowed to be a guard expression, and
similarly in map matching the keys can now be guard
expressions. See the Erlang Reference Manual and
Programming Examples for more details.
Language compilers or code generators that generate
Core Erlang code may need to be updated to be
compatible with the compiler in OTP 23. For more
details, see the section Backwards Compatibility in EEP
52.
OTP-15251 Application(s): erts
Improvements of distributed spawn operations. These
include both scalability and performance improvements
as well as new functionality.
New functionality:
-- A distributed spawn_monitor() BIF.
-- Support for monitor option in the distributed
spawn_opt() BIF.
-- New spawn_request() BIFs for asynchronous spawn of
processes. spawn_request() supports all options that
spawn_opt() support plus a few more.
OTP-15434 Application(s): ssh
OpenSSH 6.5 introduced a new file representation of
keys called openssh-key-v1.
OTP/SSH had an experimental implementation of this
format. That implementation is now improved and
supported with the exception of handling encrypted
keys.
OTP-15589 Application(s): ssl
Improve interoperability by implementing the middlebox
compatiblity mode.
The middlebox compatibility mode makes the TLS 1.3
handshake look more like a TLS 1.2 handshake and
increases the chance of successfully establishing TLS
1.3 connections through legacy middleboxes.
OTP-15744 Application(s): erts, stdlib
Related Id(s): OTP-15623, PR-2229
Improved ETS scalability of concurrent calls that
change the size of a table, like ets:insert/2 and
ets:delete/2.
This performance feature was implemented for
ordered_set in OTP 22.0 and does now apply for all ETS
table types.
The improved scalability may come at the cost of longer
latency of ets:info(T,size) and ets:info(T,memory). A
new table option decentralized_counters has therefore
been added. It is default true for ordered_set with
write_concurrency enabled and default false for all
other table types.
OTP-15998 Application(s): ssh
Related Id(s): PR-2368, PR-2376
TCP/IP port forwarding, a.k.a tunneling a.k.a
tcp-forward/direct-tcp is implemented. In the OpenSSH
client, this corresponds to the options -L and -R.
The client or server listens to a specified socket, and
when something connects to it with TCP/IP, that
connection is forwarded in an encrypted tunnel to the
peer. The peer then connects to a predefined IP/port
pair and then acts as a proxy.
See the manual, ssh:tcpip_tunnel_to_server/6 and
ssh:tcpip_tunnel_from_server/6.
The functionality is disabled per default but can be
enabled when starting a daemon.
OTP-16007 Application(s): compiler
Related Id(s): PR-2324
Allow underscores in numeric literals to improve
readability. Examples: 123_456_789, 16#1234_ABCD.
OTP-16214 Application(s): compiler
Related Id(s): PR-2460
Improved the type optimization pass' inference of types
that depend on themselves, giving us more accurate
types and letting us track the content types of lists.
OTP-16222 Application(s): stdlib
New functions have been added to c(3) for printing
embedded documentation for Erlang modules. The
functions are:
-- h/1,2,3 -- Print the documentation for a
Module:Function/Arity.
-- ht/1,2,3 -- Print the type documentation for a
Module:Type/Arity.
The embedded documentation is created when building the
Erlang/OTP documentation.
OTP-16232 Application(s): crypto
As announced in OTP 22.0, a New API was introduced in
CRYPTO. See the New and Old API chapter in the CRYPTO
User's Guide for more information and suggested
replacement functions.
The Old API is now deprecated in OTP-23.0 and will be
removed in OTP-24.0.
This deprecation includes cipher names. See the section
Retired cipher names in the crypto User's Guide,
chapter The Old API.
OTP-16250 Application(s): erts, kernel
The possibility to run Erlang distribution without
relying on EPMD has been extended. To achieve this a
couple of new options to the inet distribution has been
added.
-- -dist_listen false -- Setup the distribution
channel, but do not listen for incoming connection.
This is useful when you want to use the current node to
interact with another node on the same machine without
it joining the entire cluster.
-- -erl_epmd_port Port -- Configure a default port that
the built-in EPMD client should return. This allows the
local node to know the port to connect to for any other
node in the cluster.
The erl_epmd callback API has also been extended to
allow returning -1 as the creation which means that a
random creation will be created by the node.
In addition a new callback function called
listen_port_please has been added that allows the
callback to return which listen port the distribution
should use. This can be used instead of
inet_dist_listen_min/max if the listen port is to be
fetched from an external service.
OTP-16260 Application(s): kernel
Related Id(s): OTP-15403
A first EXPERIMENTAL module that is a socket backend to
gen_tcp and inet has been implemented. Others will
follow. Feedback will be appreciated.
OTP-16406 Application(s): erl_docgen, otp
Embedded documentation (also known as Documentation
Chunks) is now also available in the form of files
according to EEP-48. The Documentation Chunks are
produced by default when building the other Erlang/OTP
documentation. If you want to only build the embedded
documentation you can pass the DOC_TARGETS=chunks
environment variable to make.
OTP-16453 Application(s): kernel
Related Id(s): PR-2524
A new implementation of distributed named process
groups has been introduced. It is available in the pg
module.
Note that this pg module only has the name in common
with the experimental pg module that was present in
stdlib up until OTP 17.
Thanks to Maxim Fedorov for the implementation.
OTP-16484 Application(s): debugger, erts, hipe
*** POTENTIAL INCOMPATIBILITY ***
The deprecated erlang:get_stacktrace/0 BIF now returns
an empty list instead of a stacktrace. To retrieve the
stacktrace, use the extended try/catch syntax that was
introduced in OTP 21. erlang:get_stacktrace/0 is
scheduled for removal in OTP 24.
OTP-16501 Application(s): stdlib
Related Id(s): ERL-708, OTP-16222, OTP-16406,
OTP-16494, OTP-16499, OTP-16500, PR-2545
Module and function auto-completion in the shell now
looks at all available modules instead of only those
loaded. A module is considered available if it either
is loaded already or would be loaded if called.
The auto-completion has also been expanded to work in
the new h/1,2,3 function in c(3).
OTP-16506 Application(s): ssh
The default known_hosts file handling is improved to
include ports.
The handling of the contents in that file is updated to
support the full syntax, with exception of 1) the
wildcard '?', 2) wildcards in canonical names and 3)
the option '@cert-authority'
OTP-16513 Application(s): ssh
The ssh agent is now implemented in the ssh_agent key
callback module.
Enable with the the option {key_cb, {ssh_agent, []}} in
for example ssh:connect/3.
See the ssh_agent manual for details.
OTP-16540 Application(s): ssh
Algorithm configuration could now be done in a .config
file.
This is useful for example to enable an algorithm that
is disabled by default. It could now be enabled in an
.config-file without changing the code,
See the SSH User's Guide chapter "Configuration in
SSH".
---------------------------------------------------------------------
--- POTENTIAL INCOMPATIBILITIES -------------------------------------
---------------------------------------------------------------------
OTP-13450 Application(s): kernel
Related Id(s): OTP-15251
*** HIGHLIGHT ***
A new module erpc has been introduced in the kernel
application. The erpc module implements an enhanced
subset of the operations provided by the rpc module.
Enhanced in the sense that it makes it possible to
distinguish between returned value, raised exceptions,
and other errors. erpc also has better performance and
scalability than the original rpc implementation. This
by utilizing the newly introduced spawn_request() BIF.
Also the rpc module benefits from these improvements by
utilizing erpc when it is possible.
This change has been marked as a potential
incompatibility since rpc:block_call() now only is
guaranteed to block other block_call() operations. The
documentation previously claimed that it would block
all rpc operations. This has however never been the
case. It previously did not block node-local
block_call() operations.
OTP-14790 Application(s): ssl
Drop support for SSL-3.0. Support for this legacy TLS
version has not been enabled by default since OTP 19.
Now all code to support it has been removed, that is
SSL-3.0 protocol version can not be used and is
considered invalid.
OTP-16168 Application(s): erts
Related Id(s): ERL-1053
erlang:decode_packet with type set to httph no longer
accepts http headers that have whitespaces in between
the header name and the colon. That is:
Content-Type : text/html
is no longer allowed. This has been changed to conform
with RFC 7230 and thus protect against http desync
attacks.
OTP-16215 Application(s): erts
Removed the scheduler_poll and async I/O dtrace and
LTTng trace probes.
OTP-16244 Application(s): erts
Related Id(s): ERL-1051
Fix the quoting rules in erl -args_file, ERL_FLAGS,
ERL_AFLAGS and ERL_ZFLAGS to work as unix sh quoting.
This bug fix can make previous configuration options to
erl passed through ERL_FLAGS, ERL_AFLAGS, ERL_ZFLAGS or
-args_file not be interpreted in the same way as before
the fix.
OTP-16328 Application(s): erl_interface
As announced in OTP 22.0, the deprecated parts of
erl_interface have now been removed (essentially all C
functions with prefix erl_).
OTP-16329 Application(s): erl_interface, erts, otp
Related Id(s): OTP-15621
As announced in OTP 22.0, the previously existing
limited support for VxWorks has now been removed.
OTP-16400 Application(s): ssl
This change adds TLS-1.3 to the list of default
supported versions. That is, TLS-1.3 and TLS-1.2 are
configured when ssl option 'versions' is not explicitly
set.
OTP-16455 Application(s): kernel
The pg2 module has been deprecated. It has also been
scheduled for removal in OTP 24.
You are advised to replace the usage of pg2 with the
newly introduced pg module. pg has a similar API, but
with a more scalable implementation.
OTP-16484 Application(s): debugger, erts, hipe
*** HIGHLIGHT ***
The deprecated erlang:get_stacktrace/0 BIF now returns
an empty list instead of a stacktrace. To retrieve the
stacktrace, use the extended try/catch syntax that was
introduced in OTP 21. erlang:get_stacktrace/0 is
scheduled for removal in OTP 24.
OTP-16495 Application(s): kernel
As of OTP 23, the distributed disk_log feature has been
deprecated. It has also been scheduled for removal in
OTP 24.
OTP-16502 Application(s): kernel
code:lib_dir/1 has been fixed to also return the lib
dir for erts.
This is been marked as an incompatibility for any
application that depended on {error,bad_name} to be
returned for erts.
OTP-16503 Application(s): erl_docgen
The seealso tag has been replaced with type aware tags
instead. The new tags are:
seemfa|seeerl|seetype|seeapp|seecom|seecref|seefile|seeguide.
fsdescription has been added for adding a title to
groups of functions, for instance Module Callbacks.
The dtds of all documentation files have been trimmed
from all unused or rarely-used tags.
Unused dtds have been removed.
OTP-16509 Application(s): ssh
The key-exchange algorithms
'diffie-hellman-group14-sha1' and
'diffie-hellman-group-exchange-sha1' are disabled per
default. The reason is that SHA1 now is considered
insecure.
They can be enabled if needed, see SSH (App).
OTP-16510 Application(s): ssh
The public key algorithm 'ssh-dss' is disabled per
default. The reason is that it is now considered as
insecure.
It can be enabled if needed, see SSH (App).
OTP-16511 Application(s): ssh
The public key 'ssh-rsa' is now considered as insecure
because of its usage of SHA1.
It is therefore deprecated and will no longer be
enabled per default in OTP-24.0.
---------------------------------------------------------------------
--- OTP-23.0 --------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16394 Application(s): otp
Related Id(s): PR-2450
The Android cross-compilation support has been updated
to support Android 4.1 and 5.0.
--- Improvements and New Features ---
OTP-15812 Application(s): otp
Add new "make test" target for simplified test
execution. Read more in HOWTO/TESTING.md.
OTP-15915 Application(s): otp
Added make dialyzer to top-level makefile and each
application.
OTP-16264 Application(s): otp
Updated the Android build instructions
OTP-16329 Application(s): erl_interface, erts, otp
Related Id(s): OTP-15621
*** POTENTIAL INCOMPATIBILITY ***
As announced in OTP 22.0, the previously existing
limited support for VxWorks has now been removed.
OTP-16406 Application(s): erl_docgen, otp
*** HIGHLIGHT ***
Embedded documentation (also known as Documentation
Chunks) is now also available in the form of files
according to EEP-48. The Documentation Chunks are
produced by default when building the other Erlang/OTP
documentation. If you want to only build the embedded
documentation you can pass the DOC_TARGETS=chunks
environment variable to make.
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
OTP-16551 Application(s): otp
Starting from OTP 23, the pages in the documentation
for which functions that are deprecated and scheduled
for removal are now up to date.
---------------------------------------------------------------------
--- asn1-5.0.12 -----------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16490 Application(s): asn1
Adhere to the ASN.1 specification for hstring &
bstring lexical items. That is they may include white
space.
--- Improvements and New Features ---
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
OTP-16554 Application(s): asn1
Related Id(s): ERL-1189
Improve handling of ellipsis in a CHOICE
Full runtime dependencies of asn1-5.0.12: erts-7.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- common_test-1.19 ------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16029 Application(s): common_test
Related Id(s): PR-2145
The function ct_property_test:init_tool/1 is added for
the cases when the user does not want ct_property_test
to compile properties. init_tool/1 can be used to set
the property_test_tool config value.
OTP-16273 Application(s): common_test
The built-in Common Test Hook, cth_log_redirect, has
been updated to use the system default Logger handler's
configuration instead of its own. See the section on
Built-in Hooks in the Common Test User's Guide.
OTP-16346 Application(s): common_test, public_key, snmp, ssh,
ssl
Calls of deprecated functions in the Old Crypto API are
replaced by calls of their substitutions.
Full runtime dependencies of common_test-1.19: 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-7.6 ----------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-15837 Application(s): compiler, erts
erlang:fun_info(fun foo/1, name/1) used to return a
function name based on the name of the function that
fun foo/1 was used in. The name returned is now
-fun.foo/1-.
OTP-16516 Application(s): compiler, stdlib
Initialization of record fields using _ is no longer
allowed if the number of affected fields is zero.
--- Improvements and New Features ---
OTP-14708 Application(s): compiler, debugger, erts
*** HIGHLIGHT ***
EEP-52 has been implemented.
In binary matching, the size of the segment to be
matched is now allowed to be a guard expression, and
similarly in map matching the keys can now be guard
expressions. See the Erlang Reference Manual and
Programming Examples for more details.
Language compilers or code generators that generate
Core Erlang code may need to be updated to be
compatible with the compiler in OTP 23. For more
details, see the section Backwards Compatibility in EEP
52.
OTP-16007 Application(s): compiler
Related Id(s): PR-2324
*** HIGHLIGHT ***
Allow underscores in numeric literals to improve
readability. Examples: 123_456_789, 16#1234_ABCD.
OTP-16214 Application(s): compiler
Related Id(s): PR-2460
*** HIGHLIGHT ***
Improved the type optimization pass' inference of types
that depend on themselves, giving us more accurate
types and letting us track the content types of lists.
OTP-16367 Application(s): compiler
Related Id(s): OTP-15251
Support message queue optimization also for references
returned from the new spawn_request() BIFs.
OTP-16429 Application(s): compiler, stdlib
Related Id(s): ERL-303
The compiler will now raise a warning when inlining is
used in modules that load NIFs.
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
OTP-16505 Application(s): compiler
Related Id(s): ERL-1178
Line information was sometimes incorrect for
floating-point math exceptions.
OTP-16523 Application(s): compiler
Related Id(s): ERL-1058
The debug_info option can now be specified in
-compile() attributes.
OTP-16543 Application(s): compiler, erts
Related Id(s): ERL-1186
Reduced the resource usage of erlc in parallel builds
(e.g. make -j128).
Full runtime dependencies of compiler-7.6: crypto-3.6, erts-11.0,
hipe-3.12, kernel-7.0, stdlib-3.13
---------------------------------------------------------------------
--- crypto-4.7 ------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16579 Application(s): crypto
Related Id(s): ERL-825
Crypto reported unsupported elliptic curves as
supported on e.g Fedora distros.
--- Improvements and New Features ---
OTP-15967 Application(s): crypto
Related Id(s): PR-2329
Support for ed25519 and ed448 added to
crypto:generate_key.
OTP-16160 Application(s): crypto
The new crypto functions api (crypto_init,
crypto_update and crypto_one_time) has been updated.
There is now a function crypto_final/1 and a
possibility to set options in crypto_init/3 and
crypto_init/4. See the manual for details.
OTP-16232 Application(s): crypto
*** HIGHLIGHT ***
As announced in OTP 22.0, a New API was introduced in
CRYPTO. See the New and Old API chapter in the CRYPTO
User's Guide for more information and suggested
replacement functions.
The Old API is now deprecated in OTP-23.0 and will be
removed in OTP-24.0.
This deprecation includes cipher names. See the section
Retired cipher names in the crypto User's Guide,
chapter The Old API.
OTP-16369 Application(s): crypto
Related Id(s): PR-2474
Fix C-compilation without deprecated OpenSSL cryptolib
APIs
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
OTP-16583 Application(s): crypto
Added missing 'eddh' to crypto:supports(public_keys).
Full runtime dependencies of crypto-4.7: erts-9.0, kernel-5.3,
stdlib-3.4
---------------------------------------------------------------------
--- debugger-5.0 ----------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-14708 Application(s): compiler, debugger, erts
*** HIGHLIGHT ***
EEP-52 has been implemented.
In binary matching, the size of the segment to be
matched is now allowed to be a guard expression, and
similarly in map matching the keys can now be guard
expressions. See the Erlang Reference Manual and
Programming Examples for more details.
Language compilers or code generators that generate
Core Erlang code may need to be updated to be
compatible with the compiler in OTP 23. For more
details, see the section Backwards Compatibility in EEP
52.
OTP-16484 Application(s): debugger, erts, hipe
*** HIGHLIGHT ***
*** POTENTIAL INCOMPATIBILITY ***
The deprecated erlang:get_stacktrace/0 BIF now returns
an empty list instead of a stacktrace. To retrieve the
stacktrace, use the extended try/catch syntax that was
introduced in OTP 21. erlang:get_stacktrace/0 is
scheduled for removal in OTP 24.
Full runtime dependencies of debugger-5.0: compiler-5.0, erts-9.0,
kernel-5.3, stdlib-3.4, wx-1.2
---------------------------------------------------------------------
--- dialyzer-4.2 ----------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16055 Application(s): dialyzer
Related Id(s): ERL-1002
Improve handling of maps:remove/2.
Full runtime dependencies of dialyzer-4.2: compiler-7.0, erts-9.0,
hipe-3.16.1, kernel-5.3, stdlib-3.4, syntax_tools-2.0, wx-1.2
---------------------------------------------------------------------
--- edoc-0.12 -------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-15999 Application(s): edoc
Related Id(s): PR-2317
Remove Inets dependency from EDoc.
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
Full runtime dependencies of edoc-0.12: erts-6.0, kernel-3.0,
stdlib-2.5, syntax_tools-1.6.14, xmerl-1.3.7
---------------------------------------------------------------------
--- erl_docgen-1.0 --------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16406 Application(s): erl_docgen, otp
*** HIGHLIGHT ***
Embedded documentation (also known as Documentation
Chunks) is now also available in the form of files
according to EEP-48. The Documentation Chunks are
produced by default when building the other Erlang/OTP
documentation. If you want to only build the embedded
documentation you can pass the DOC_TARGETS=chunks
environment variable to make.
OTP-16497 Application(s): erl_docgen
Minor DTD additions.
OTP-16503 Application(s): erl_docgen
*** POTENTIAL INCOMPATIBILITY ***
The seealso tag has been replaced with type aware tags
instead. The new tags are:
seemfa|seeerl|seetype|seeapp|seecom|seecref|seefile|seeguide.
fsdescription has been added for adding a title to
groups of functions, for instance Module Callbacks.
The dtds of all documentation files have been trimmed
from all unused or rarely-used tags.
Unused dtds have been removed.
Full runtime dependencies of erl_docgen-1.0: edoc-0.7.13, erts-9.0,
stdlib-3.4, xmerl-1.3.7
---------------------------------------------------------------------
--- erl_interface-4.0 -----------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-13812 Application(s): erl_interface, kernel
A client node can receive its node name dynamically
from the node that it first connects to. This featured
can by used by
-- starting with erl -dist_listen false -sname
undefined
-- erl_interface functions ei_connect_init and friends
-- erl_call -R
OTP-15603 Application(s): erl_interface, erts, jinterface
Increased size of node incarnation numbers (aka
"creation"), from 2 bits to 32 bits. This will reduce
the risk of pids/ports/refs, from different node
incarnation with the same name, being mixed up.
OTP-15866 Application(s): erl_interface, erts
Related Id(s): PR-2110
Fix various build issues when compiling Erlang/OTP to
the IBM AIX platform.
OTP-16229 Application(s): erl_interface, jinterface, kernel
Improved node connection setup handshake protocol. Made
possible to agree on protocol version without
dependence on epmd or other prior knowledge of peer
node version. Also added exchange of node incarnation
("creation") values and expanded the distribution
capability flag field from 32 to 64 bits.
OTP-16251 Application(s): erl_interface
New erl_call option -address [Host]:Port to connect
directly to a node without being dependent on epmd to
resolve the node name.
OTP-16328 Application(s): erl_interface
*** POTENTIAL INCOMPATIBILITY ***
As announced in OTP 22.0, the deprecated parts of
erl_interface have now been removed (essentially all C
functions with prefix erl_).
OTP-16329 Application(s): erl_interface, erts, otp
Related Id(s): OTP-15621
*** POTENTIAL INCOMPATIBILITY ***
As announced in OTP 22.0, the previously existing
limited support for VxWorks has now been removed.
OTP-16496 Application(s): erl_interface
Related Id(s): OTP-16251
New function ei_connect_host_port and friends to allow
node connection without being dependent on epmd for
node name resolution.
OTP-16594 Application(s): erl_interface
A new function ei_decode_iodata() has been added.
--- 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. In order to fix this, a binary
incompatible change in the API is needed. This API
change is planned for OTP 24.
---------------------------------------------------------------------
--- erts-11.0 -------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-14734 Application(s): erts
Related Id(s): ERL-496
BIFs now behave like ordinary functions with regard to
tracing, allowing call_count tracing and fixing a few
bugs where return trace messages were lost when BIFs
tail-called themselves or other functions ("trapping").
OTP-15837 Application(s): compiler, erts
erlang:fun_info(fun foo/1, name/1) used to return a
function name based on the name of the function that
fun foo/1 was used in. The name returned is now
-fun.foo/1-.
OTP-16155 Application(s): erts
Related Id(s): PR-2408
file:allocate/3 will now update the file size on all
platforms.
OTP-16168 Application(s): erts
Related Id(s): ERL-1053
*** POTENTIAL INCOMPATIBILITY ***
erlang:decode_packet with type set to httph no longer
accepts http headers that have whitespaces in between
the header name and the colon. That is:
Content-Type : text/html
is no longer allowed. This has been changed to conform
with RFC 7230 and thus protect against http desync
attacks.
OTP-16244 Application(s): erts
Related Id(s): ERL-1051
*** POTENTIAL INCOMPATIBILITY ***
Fix the quoting rules in erl -args_file, ERL_FLAGS,
ERL_AFLAGS and ERL_ZFLAGS to work as unix sh quoting.
This bug fix can make previous configuration options to
erl passed through ERL_FLAGS, ERL_AFLAGS, ERL_ZFLAGS or
-args_file not be interpreted in the same way as before
the fix.
OTP-16284 Application(s): erts, kernel
Fix the Erlang distribution to handle the scenario when
a node connects that can handle message fragmentation
but can not handle the atom cache. This bug only
affects users that have implemented a custom
distribution carrier. It has been present since OTP-21.
The DFLAG_FRAGMENT distribution flag was added to the
set of flags that can be rejected by a distribution
implementation.
OTP-16431 Application(s): erts, stdlib
Related Id(s): ERL-592
Compiling a match specification with excessive nesting
caused the runtime system to crash due to scheduler
stack exhaustion. Instead of crashing the runtime
system, effected functions will now raise a
system_limit error exception in this situation.
OTP-16478 Application(s): erts
Related Id(s): ERL-1115
Fixed a bug that prevented Erlang from being started on
Windows if it were installed on certain paths.
OTP-16521 Application(s): erts
Related Id(s): ERL-716
Fix bug on Windows causing bad performance when
standard input is closed, especially if the VM is only
assigned one CPU core. Could be provoked for example by
starting erl or escript via function os:cmd/1. Could be
avoided with command line option -noinput.
The bad performance was caused by an io thread spinning
indefinitely.
OTP-16571 Application(s): erts
Fixed a bug on Unix platforms that would cause
file:read_file_info/1 to return incorrect results if
the emulator's effective user or group id differed from
its actual ones.
OTP-16576 Application(s): erts
Related Id(s): ERL-1208
socket: Compile problems on Android when
PACKET_FASTROUTE and PACKET_USER are both defined and
has the same value. Use of PACKET_FASTROUTE has been
removed as it may be unused and also only for none
user-land.
--- Improvements and New Features ---
OTP-10278 Application(s): erts
Improved concurrency of erlang:load_nif/2 as it does no
longer block other schedulers from executing during
initial load of a NIF library.
OTP-14708 Application(s): compiler, debugger, erts
*** HIGHLIGHT ***
EEP-52 has been implemented.
In binary matching, the size of the segment to be
matched is now allowed to be a guard expression, and
similarly in map matching the keys can now be guard
expressions. See the Erlang Reference Manual and
Programming Examples for more details.
Language compilers or code generators that generate
Core Erlang code may need to be updated to be
compatible with the compiler in OTP 23. For more
details, see the section Backwards Compatibility in EEP
52.
OTP-15077 Application(s): erts
Internally in BEAM, handling of continuation pointers
has been simplified. This change is not user-visible,
except when examing a process stack in the crashdump
viewer. The continuation pointer for a function will
now be stored below the y(0) for that function.
OTP-15232 Application(s): erts
Related Id(s): ERL-700
seq_trace tokens are now propagated to spawned
processes.
OTP-15251 Application(s): erts
*** HIGHLIGHT ***
Improvements of distributed spawn operations. These
include both scalability and performance improvements
as well as new functionality.
New functionality:
-- A distributed spawn_monitor() BIF.
-- Support for monitor option in the distributed
spawn_opt() BIF.
-- New spawn_request() BIFs for asynchronous spawn of
processes. spawn_request() supports all options that
spawn_opt() support plus a few more.
OTP-15517 Application(s): erts
Related Id(s): ERL-560
Make ets:insert/2 and ets:insert_new/2 yield scheduler
execution on long lists of records to insert.
OTP-15603 Application(s): erl_interface, erts, jinterface
Increased size of node incarnation numbers (aka
"creation"), from 2 bits to 32 bits. This will reduce
the risk of pids/ports/refs, from different node
incarnation with the same name, being mixed up.
OTP-15618 Application(s): erts
The runtime system can now encode Erlang terms to the
Erlang external term format as I/O vectors. The main
benefit of this is that reference counted binaries can
be referred to directly instead of copied into a new
binary.
The default Erlang distribution over TCP will always
utilize this. Alternate distribution implementations
utilizing a port as distribution controller will
utilize this if the driver implements the outputv
callback. Alternate Erlang distribution implementations
utilizing a process as distribution controller will
utilize this if I/O vectors are utilized by the
functionality that processes the data returned from
erlang:dist_ctrl_get_data().
The return type for data returned by
erlang:dist_ctrl_get_data() has been changed from
iodata() to iovec(). Note that iovec() data is valid
iodata() so old implementations using
erlang:dist_ctrl_get_data() do not need to be changed,
but may benefit from being changed depending on usage
scenario.
The new BIFs term_to_iovec/1 and term_to_iovec/2 have
been introduced. These work exactly as term_to_binary()
with the corresponding arity except the return type.
OTP-15744 Application(s): erts, stdlib
Related Id(s): OTP-15623, PR-2229
*** HIGHLIGHT ***
Improved ETS scalability of concurrent calls that
change the size of a table, like ets:insert/2 and
ets:delete/2.
This performance feature was implemented for
ordered_set in OTP 22.0 and does now apply for all ETS
table types.
The improved scalability may come at the cost of longer
latency of ets:info(T,size) and ets:info(T,memory). A
new table option decentralized_counters has therefore
been added. It is default true for ordered_set with
write_concurrency enabled and default false for all
other table types.
OTP-15835 Application(s): erts, kernel
Related Id(s): PR-2212
Directories can now be opened by file:open/2 when
passing the directory option.
OTP-15840 Application(s): erts
Add Hygon Dhyana as known processor to enable support
for atomic operations.
OTP-15842 Application(s): erts
Related Id(s): PR-2182
Make erlang:phash2 functions consume reductions
proportional to the size of the input term and yield
scheduler when reductions are depleted.
OTP-15866 Application(s): erl_interface, erts
Related Id(s): PR-2110
Fix various build issues when compiling Erlang/OTP to
the IBM AIX platform.
OTP-15868 Application(s): erts
Add configure options --enable-pie and --disable-pie to
control the build of position independent executables.
OTP-15956 Application(s): erts, kernel
Related Id(s): PR-2231
file:read_file_info/2 can now be used on opened files
and directories.
OTP-15995 Application(s): erts
Related Id(s): PR-2358
Add arity-1 versions of atom_to_binary, binary_to_atom
and binary_to_existing_atom, all with utf8 as default
encoding.
OTP-16014 Application(s): erts
Related Id(s): PR-2345
Optimized the erts internal hash table implementation
for faster lookups. The internal hash is used for
things like; the process registry, executing
erlang:apply/2, executing M:func(test), and more.
OTP-16105 Application(s): erts
Related Id(s): ERL-927
CPU quotas are now taken into account when deciding the
default number of online schedulers, improving
performance in container environments where quotas are
applied, such as docker with the --cpus flag.
OTP-16148 Application(s): erts, kernel
Related Id(s): PR-2373
The -config option to erl now can take multiple config
files without repeating the -config option. Example:
erl -config sys local
OTP-16215 Application(s): erts
*** POTENTIAL INCOMPATIBILITY ***
Removed the scheduler_poll and async I/O dtrace and
LTTng trace probes.
OTP-16237 Application(s): erts
Related Id(s): PR-2389
Optimized persistent_term:put/2 and erase/1 to consume
less CPU in many cases.
OTP-16250 Application(s): erts, kernel
*** HIGHLIGHT ***
The possibility to run Erlang distribution without
relying on EPMD has been extended. To achieve this a
couple of new options to the inet distribution has been
added.
-- -dist_listen false -- Setup the distribution
channel, but do not listen for incoming connection.
This is useful when you want to use the current node to
interact with another node on the same machine without
it joining the entire cluster.
-- -erl_epmd_port Port -- Configure a default port that
the built-in EPMD client should return. This allows the
local node to know the port to connect to for any other
node in the cluster.
The erl_epmd callback API has also been extended to
allow returning -1 as the creation which means that a
random creation will be created by the node.
In addition a new callback function called
listen_port_please has been added that allows the
callback to return which listen port the distribution
should use. This can be used instead of
inet_dist_listen_min/max if the listen port is to be
fetched from an external service.
OTP-16270 Application(s): erts
On systems without closefrom(), such as Linux,
iterating over all possible file descriptors and
calling close() for each is inefficient. This is
markedly so when the maximum number of file descriptors
has been tuned to a large number.
Instead, in erl_child_setup, walk the open descriptors
under /dev/fd and close only those which are open.
This optimization affects the CPU usage of starting a
new Erlang instance.
OTP-16283 Application(s): erts
Related Id(s): PR-2441
Optimized maps:merge/2 for trivial cases of an empty
map(s) or same map.
OTP-16312 Application(s): erts, kernel
The new experimental socket module has been moved to
the Kernel application.
OTP-16327 Application(s): erts, runtime_tools, tools
Improved the presentation of allocations and carriers
in the instrument module.
OTP-16329 Application(s): erl_interface, erts, otp
Related Id(s): OTP-15621
*** POTENTIAL INCOMPATIBILITY ***
As announced in OTP 22.0, the previously existing
limited support for VxWorks has now been removed.
OTP-16347 Application(s): erts
Related Id(s): PR-2466
The return value when using the httph and httph_bin
option to erlang:decode_packet/3 and inet:setopts/2 has
been changed to also include the original header
unmodified. See erlang:decode_packet/3. Example:
> erlang:decode_packet(httph_bin,<<"HELLO:
hi\r\n\r\n">>,[]).
{ok,{http_header,0,<<"Hello">>,<<"HELLO">>,<<"hi">>},<<"\r\n">>}
OTP-16362 Application(s): erts
Ensure net_kernel:monitor_nodes/1 sends nodedown
messages of a failed connection before nodeup messages
of a reestablished connection toward the same node.
OTP-16370 Application(s): erts, kernel
Related Id(s): OTP-15232, OTP-15251
Update of sequential tracing to also support other
information transfers than message passing.
OTP-16398 Application(s): erts
Related Id(s): ERL-1154
socket: It is now possible to create a socket from an
already existing file descriptor.
OTP-16432 Application(s): erts
socket: The socket:supports/1 function now also report
if netns is supported or not.
OTP-16454 Application(s): erts
=:= has been optimized to return false immediately when
comparing two maps of different sizes.
OTP-16482 Application(s): erts
Changed the behaviour of passing the erl command line
argument +A 0 to silently imply +A 1. That is, it will
no longer be possible to completely disable the async
thread pool. Disabling of the async thread pool has
since OTP 21 had no benefits; only lots of drawbacks.
OTP-16484 Application(s): debugger, erts, hipe
*** HIGHLIGHT ***
*** POTENTIAL INCOMPATIBILITY ***
The deprecated erlang:get_stacktrace/0 BIF now returns
an empty list instead of a stacktrace. To retrieve the
stacktrace, use the extended try/catch syntax that was
introduced in OTP 21. erlang:get_stacktrace/0 is
scheduled for removal in OTP 24.
OTP-16492 Application(s): erts
Related Id(s): PR-2461
init:restart/1 has been introduced. init:restart/1 can
be utilized for changing the code loading mode during a
restart.
OTP-16530 Application(s): erts, kernel
Related Id(s): OTP-16464
Improve configure for the net nif, which should
increase portability.
OTP-16543 Application(s): compiler, erts
Related Id(s): ERL-1186
Reduced the resource usage of erlc in parallel builds
(e.g. make -j128).
OTP-16615 Application(s): erts
Fix a buffer overflow bug that caused EPMD to consume
100% CPU after many nodes had been connected on the
same time on NetBSD.
OTP-16616 Application(s): erts
erl -remsh now uses the dynamic node names feature by
default. See the erl documentation for details.
Full runtime dependencies of erts-11.0: kernel-7.0, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- eunit-2.5 -------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-15950 Application(s): eunit
Related Id(s): ERL-991, PR-2316
Let eunit_surefire skip invalid XML 1.0 characters.
OTP-16275 Application(s): eunit
Related Id(s): PR-2424
Add new macro ?capturedOutput for enabling to write
test cases that verify data printed to standard out
OTP-16549 Application(s): eunit
Related Id(s): PR-2532
Add option to limit print depth of exceptions generated
by eunit test suites.
Full runtime dependencies of eunit-2.5: erts-9.0, kernel-5.3,
stdlib-3.4
---------------------------------------------------------------------
--- hipe-4.0 --------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16470 Application(s): hipe
Fixed a rare miss-compilation of tuple matching.
--- Improvements and New Features ---
OTP-16484 Application(s): debugger, erts, hipe
*** HIGHLIGHT ***
*** POTENTIAL INCOMPATIBILITY ***
The deprecated erlang:get_stacktrace/0 BIF now returns
an empty list instead of a stacktrace. To retrieve the
stacktrace, use the extended try/catch syntax that was
introduced in OTP 21. erlang:get_stacktrace/0 is
scheduled for removal in OTP 24.
Full runtime dependencies of hipe-4.0: compiler-5.0, erts-9.3,
kernel-5.3, stdlib-3.4, syntax_tools-1.6.14
---------------------------------------------------------------------
--- inets-7.2 -------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16252 Application(s): inets
Remove support for deprecated functionality. Support
for mod_esi eval scheme, mod_htacess, mod_browser,
apache config files and deprecated httpd_conf functions
are dropped. Module http_uri is deprecated.
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
Full runtime dependencies of inets-7.2: erts-6.0, kernel-3.0,
mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5
---------------------------------------------------------------------
--- jinterface-1.11 -------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-15603 Application(s): erl_interface, erts, jinterface
Increased size of node incarnation numbers (aka
"creation"), from 2 bits to 32 bits. This will reduce
the risk of pids/ports/refs, from different node
incarnation with the same name, being mixed up.
OTP-16229 Application(s): erl_interface, jinterface, kernel
Improved node connection setup handshake protocol. Made
possible to agree on protocol version without
dependence on epmd or other prior knowledge of peer
node version. Also added exchange of node incarnation
("creation") values and expanded the distribution
capability flag field from 32 to 64 bits.
---------------------------------------------------------------------
--- kernel-7.0 ------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16008 Application(s): kernel
Related Id(s): PR-2302
Fix race condition during shutdown when shell_history
is enabled. The race condition would trigger crashes in
disk_log.
OTP-16284 Application(s): erts, kernel
Fix the Erlang distribution to handle the scenario when
a node connects that can handle message fragmentation
but can not handle the atom cache. This bug only
affects users that have implemented a custom
distribution carrier. It has been present since OTP-21.
The DFLAG_FRAGMENT distribution flag was added to the
set of flags that can be rejected by a distribution
implementation.
OTP-16395 Application(s): kernel
Related Id(s): PR-2444
Fix bug where a binary was not allowed to be the format
string in calls to logger:log.
OTP-16489 Application(s): kernel
Related Id(s): ERL-1134
Fix bug where logger would end up in an infinite loop
when trying to log the crash of a handler or formatter.
OTP-16502 Application(s): kernel
*** POTENTIAL INCOMPATIBILITY ***
code:lib_dir/1 has been fixed to also return the lib
dir for erts.
This is been marked as an incompatibility for any
application that depended on {error,bad_name} to be
returned for erts.
OTP-16504 Application(s): kernel
Related Id(s): PR-2328
The application stop/1 callback was not called if the
application master of the application terminated.
--- Improvements and New Features ---
OTP-13450 Application(s): kernel
Related Id(s): OTP-15251
*** HIGHLIGHT ***
*** POTENTIAL INCOMPATIBILITY ***
A new module erpc has been introduced in the kernel
application. The erpc module implements an enhanced
subset of the operations provided by the rpc module.
Enhanced in the sense that it makes it possible to
distinguish between returned value, raised exceptions,
and other errors. erpc also has better performance and
scalability than the original rpc implementation. This
by utilizing the newly introduced spawn_request() BIF.
Also the rpc module benefits from these improvements by
utilizing erpc when it is possible.
This change has been marked as a potential
incompatibility since rpc:block_call() now only is
guaranteed to block other block_call() operations. The
documentation previously claimed that it would block
all rpc operations. This has however never been the
case. It previously did not block node-local
block_call() operations.
OTP-13812 Application(s): erl_interface, kernel
A client node can receive its node name dynamically
from the node that it first connects to. This featured
can by used by
-- starting with erl -dist_listen false -sname
undefined
-- erl_interface functions ei_connect_init and friends
-- erl_call -R
OTP-15299 Application(s): kernel, stdlib
Improved the printout of single line logger events for
most of the OTP behaviours in STDLIB and Kernel. This
includes proc_lib, gen_server, gen_event, gen_statem,
gen_fsm, supervisor, supervisor_bridge and application.
Improved the chars_limit and depth handling in proc_lib
and when formatting of exceptions.
OTP-15695 Application(s): kernel, mnesia, parsetools, sasl,
snmp, stdlib
Remove usage and documentation of old requests of the
I/O-protocol.
OTP-15835 Application(s): erts, kernel
Related Id(s): PR-2212
Directories can now be opened by file:open/2 when
passing the directory option.
OTP-15948 Application(s): kernel
Related Id(s): PR-2356
The check of whether to log or not based on the log
level in logger has been optimized by using
persistent_term to store the log level.
OTP-15956 Application(s): erts, kernel
Related Id(s): PR-2231
file:read_file_info/2 can now be used on opened files
and directories.
OTP-16148 Application(s): erts, kernel
Related Id(s): PR-2373
The -config option to erl now can take multiple config
files without repeating the -config option. Example:
erl -config sys local
OTP-16229 Application(s): erl_interface, jinterface, kernel
Improved node connection setup handshake protocol. Made
possible to agree on protocol version without
dependence on epmd or other prior knowledge of peer
node version. Also added exchange of node incarnation
("creation") values and expanded the distribution
capability flag field from 32 to 64 bits.
OTP-16250 Application(s): erts, kernel
*** HIGHLIGHT ***
The possibility to run Erlang distribution without
relying on EPMD has been extended. To achieve this a
couple of new options to the inet distribution has been
added.
-- -dist_listen false -- Setup the distribution
channel, but do not listen for incoming connection.
This is useful when you want to use the current node to
interact with another node on the same machine without
it joining the entire cluster.
-- -erl_epmd_port Port -- Configure a default port that
the built-in EPMD client should return. This allows the
local node to know the port to connect to for any other
node in the cluster.
The erl_epmd callback API has also been extended to
allow returning -1 as the creation which means that a
random creation will be created by the node.
In addition a new callback function called
listen_port_please has been added that allows the
callback to return which listen port the distribution
should use. This can be used instead of
inet_dist_listen_min/max if the listen port is to be
fetched from an external service.
OTP-16260 Application(s): kernel
Related Id(s): OTP-15403
*** HIGHLIGHT ***
A first EXPERIMENTAL module that is a socket backend to
gen_tcp and inet has been implemented. Others will
follow. Feedback will be appreciated.
OTP-16312 Application(s): erts, kernel
The new experimental socket module has been moved to
the Kernel application.
OTP-16345 Application(s): kernel
Replace usage of deprecated function in the group
module.
OTP-16368 Application(s): kernel, observer, runtime_tools,
stdlib, tools
Related Id(s): OTP-15251
Minor updates due to the new spawn improvements made.
OTP-16370 Application(s): erts, kernel
Related Id(s): OTP-15232, OTP-15251
Update of sequential tracing to also support other
information transfers than message passing.
OTP-16402 Application(s): kernel
code:module_status/1 now accepts a list of modules.
code:module_status/0, which returns the statuses for
all loaded modules, has been added.
OTP-16419 Application(s): kernel
filelib:wildcard/1,2 is now twice as fast when a double
star (**) is part of the pattern.
OTP-16453 Application(s): kernel
Related Id(s): PR-2524
*** HIGHLIGHT ***
A new implementation of distributed named process
groups has been introduced. It is available in the pg
module.
Note that this pg module only has the name in common
with the experimental pg module that was present in
stdlib up until OTP 17.
Thanks to Maxim Fedorov for the implementation.
OTP-16455 Application(s): kernel
*** POTENTIAL INCOMPATIBILITY ***
The pg2 module has been deprecated. It has also been
scheduled for removal in OTP 24.
You are advised to replace the usage of pg2 with the
newly introduced pg module. pg has a similar API, but
with a more scalable implementation.
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
OTP-16487 Application(s): kernel
Related Id(s): PR-2516
The internal hosts file resolver cache inet_hosts has
been rewritten to behave better when the hosts file
changes. For example the cache is updated per entry
instead of cleared and reloaded so lookups do not
temporarily fail during reloading, and; when multiple
processes simultaneously request reload these are now
folded into one instead of all done in sequence.
Reported and first solution suggestion by Maxim
Fedorov.
OTP-16494 Application(s): kernel
Add code:all_available/0 that can be used to get all
available modules.
OTP-16495 Application(s): kernel
*** POTENTIAL INCOMPATIBILITY ***
As of OTP 23, the distributed disk_log feature has been
deprecated. It has also been scheduled for removal in
OTP 24.
OTP-16499 Application(s): kernel
Add the function code:fetch_docs/1 for fetching
embedded documentation for aa Erlang module.
OTP-16530 Application(s): erts, kernel
Related Id(s): OTP-16464
Improve configure for the net nif, which should
increase portability.
OTP-16563 Application(s): kernel
Related Id(s): PR-2523
Allow using custom IO devices in logger_std_h.
OTP-16570 Application(s): kernel
Related Id(s): PR-2565
Added file:del_dir_r/1 which deletes a directory
together with all of its contents, similar to rm -rf on
Unix systems.
Full runtime dependencies of kernel-7.0: erts-11.0, sasl-3.0,
stdlib-3.13
---------------------------------------------------------------------
--- megaco-3.19 -----------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
OTP-16531 Application(s): megaco
The preliminary version 3 codec(s) prev3a, prev3b and
prev3c has been deprecated and will be *removed* in OTP
24. The encoding config option 'version3' will continue
to work until OTP 24.
Full runtime dependencies of megaco-3.19: 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.17 -----------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16072 Application(s): mnesia
Related Id(s): PR-2320
Make mnesia:create_table/2 return correct badarg value.
--- Improvements and New Features ---
OTP-15695 Application(s): kernel, mnesia, parsetools, sasl,
snmp, stdlib
Remove usage and documentation of old requests of the
I/O-protocol.
OTP-16189 Application(s): mnesia
Avoid using rpc calls to do table reads, which will
reduce the load on rpc server and improve performance.
Full runtime dependencies of mnesia-4.17: erts-9.0, kernel-5.3,
stdlib-3.4
---------------------------------------------------------------------
--- observer-2.9.4 --------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16368 Application(s): kernel, observer, runtime_tools,
stdlib, tools
Related Id(s): OTP-15251
Minor updates due to the new spawn improvements made.
Full runtime dependencies of observer-2.9.4: erts-11.0, et-1.5,
kernel-7.0, runtime_tools-1.8.14, stdlib-3.13, wx-1.2
---------------------------------------------------------------------
--- odbc-2.13 -------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16544 Application(s): odbc
Related Id(s): OTP-16328
Rewrite due to the removal of erl_interface legacy
functions.
Full runtime dependencies of odbc-2.13: erts-6.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- os_mon-2.5.2 ----------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
Full runtime dependencies of os_mon-2.5.2: erts-6.0, kernel-3.0,
sasl-2.4, stdlib-2.0
---------------------------------------------------------------------
--- parsetools-2.2 --------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-15695 Application(s): kernel, mnesia, parsetools, sasl,
snmp, stdlib
Remove usage and documentation of old requests of the
I/O-protocol.
Full runtime dependencies of parsetools-2.2: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
--- public_key-1.8 --------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-15247 Application(s): public_key, ssl
Added support for RSA-PSS signature schemes
OTP-16346 Application(s): common_test, public_key, snmp, ssh,
ssl
Calls of deprecated functions in the Old Crypto API are
replaced by calls of their substitutions.
Full runtime dependencies of public_key-1.8: asn1-3.0, crypto-3.8,
erts-6.0, kernel-3.0, stdlib-3.5
---------------------------------------------------------------------
--- runtime_tools-1.15 ----------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16327 Application(s): erts, runtime_tools, tools
Improved the presentation of allocations and carriers
in the instrument module.
OTP-16368 Application(s): kernel, observer, runtime_tools,
stdlib, tools
Related Id(s): OTP-15251
Minor updates due to the new spawn improvements made.
Full runtime dependencies of runtime_tools-1.15: erts-11.0,
kernel-7.0, mnesia-4.12, stdlib-3.13
---------------------------------------------------------------------
--- sasl-3.5 --------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-15695 Application(s): kernel, mnesia, parsetools, sasl,
snmp, stdlib
Remove usage and documentation of old requests of the
I/O-protocol.
OTP-16561 Application(s): sasl
Related Id(s): PR-2420
systools:make_script/2 now accepts the name of the boot
file to create, it is not restricted to only
RelName.boot or start.boot.
systools:make_tar/2 now accepts the option extra_files
to add any extra non release related files to the tar
file.
Full runtime dependencies of sasl-3.5: erts-10.2, kernel-5.3,
stdlib-3.4, tools-2.6.14
---------------------------------------------------------------------
--- snmp-5.6 --------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16541 Application(s): snmp
Related Id(s): #2544
For manager, fix PrivParams for SNMPv3 USM with AES
privacy; * In `snmp_usm:do_decrypt/3`, pass full
UsmSecParams to `snmp_usm:try_decrypt/5` as expected by
AES clause. * Change `snmpm_usm:aes_encrypt/3` to use
EngineBoots and EngineTime as cached by
`snmpm_config:get_usm_eboots/1` and
`snmpm_config:get_usm_etime/1` instead of
`snmpm_config:get_engine_boots/0` and
`snmpm_config:get_engine_time/0`. This ensures correct
msgPrivacyParameters are sent when AES is used. * Add
test `snmp.snmp_manager_SUITE.usm_priv_aes/1` to avoid
regression.
OTP-16552 Application(s): snmp
Related Id(s): ERL-1196
Invalid character in (manager) usm config entry
generator function.
--- Improvements and New Features ---
OTP-15695 Application(s): kernel, mnesia, parsetools, sasl,
snmp, stdlib
Remove usage and documentation of old requests of the
I/O-protocol.
OTP-16346 Application(s): common_test, public_key, snmp, ssh,
ssl
Calls of deprecated functions in the Old Crypto API are
replaced by calls of their substitutions.
OTP-16463 Application(s): snmp
Finalize deprecation. Already deprecated functions has
a "remove version 24" set and "new" functions added to
list of deprecated functions.
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
Full runtime dependencies of snmp-5.6: crypto-3.3, erts-6.0,
kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5
---------------------------------------------------------------------
--- ssh-4.10 --------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16363 Application(s): ssh
Fix error in ssh_sftpd typespec.
--- Improvements and New Features ---
OTP-11688 Application(s): ssh
Related Id(s): OTP-12699
The plug-in file ssh_file.erl, that is responsible for
default file handling, is re-factored, optimized and
re-written.
OTP-15434 Application(s): ssh
*** HIGHLIGHT ***
OpenSSH 6.5 introduced a new file representation of
keys called openssh-key-v1.
OTP/SSH had an experimental implementation of this
format. That implementation is now improved and
supported with the exception of handling encrypted
keys.
OTP-15998 Application(s): ssh
Related Id(s): PR-2368, PR-2376
*** HIGHLIGHT ***
TCP/IP port forwarding, a.k.a tunneling a.k.a
tcp-forward/direct-tcp is implemented. In the OpenSSH
client, this corresponds to the options -L and -R.
The client or server listens to a specified socket, and
when something connects to it with TCP/IP, that
connection is forwarded in an encrypted tunnel to the
peer. The peer then connects to a predefined IP/port
pair and then acts as a proxy.
See the manual, ssh:tcpip_tunnel_to_server/6 and
ssh:tcpip_tunnel_from_server/6.
The functionality is disabled per default but can be
enabled when starting a daemon.
OTP-16026 Application(s): ssh
Related Id(s): (OTP-15998), PR-2368
The client-side of the supervisor tree (under sshc_sup)
was previously not complete; the channel handling
processes were handled with links but had no
supervisors.
This is now corrected with a client-side supervisor
tree under sshc_sup, similar to the server-side
supervisor tree under sshd_sup.
OTP-16289 Application(s): ssh
Related Id(s): PR-2448
The extension [email protected] is added to the
ssh/sftp rename operation.
OTP-16346 Application(s): common_test, public_key, snmp, ssh,
ssl
Calls of deprecated functions in the Old Crypto API are
replaced by calls of their substitutions.
OTP-16506 Application(s): ssh
*** HIGHLIGHT ***
The default known_hosts file handling is improved to
include ports.
The handling of the contents in that file is updated to
support the full syntax, with exception of 1) the
wildcard '?', 2) wildcards in canonical names and 3)
the option '@cert-authority'
OTP-16508 Application(s): ssh
The MAC (Message Authorization Code) algorithms
-- [email protected]
-- [email protected]
-- [email protected]
are implemented.
OTP-16509 Application(s): ssh
*** POTENTIAL INCOMPATIBILITY ***
The key-exchange algorithms
'diffie-hellman-group14-sha1' and
'diffie-hellman-group-exchange-sha1' are disabled per
default. The reason is that SHA1 now is considered
insecure.
They can be enabled if needed, see SSH (App).
OTP-16510 Application(s): ssh
*** POTENTIAL INCOMPATIBILITY ***
The public key algorithm 'ssh-dss' is disabled per
default. The reason is that it is now considered as
insecure.
It can be enabled if needed, see SSH (App).
OTP-16511 Application(s): ssh
*** POTENTIAL INCOMPATIBILITY ***
The public key 'ssh-rsa' is now considered as insecure
because of its usage of SHA1.
It is therefore deprecated and will no longer be
enabled per default in OTP-24.0.
OTP-16512 Application(s): ssh
An option optimize (optimize_key_lookup) is introduced
for the file interface ssh_file.erl
The option enables the user to select between the
default handling which is fast but memory consuming vs
memory efficient but not as fast. The effect might be
observable only for large files.
See the manual for ssh_file:is_host_key/5 and
ssh_file:is_auth_key/3.
OTP-16513 Application(s): ssh
*** HIGHLIGHT ***
The ssh agent is now implemented in the ssh_agent key
callback module.
Enable with the the option {key_cb, {ssh_agent, []}} in
for example ssh:connect/3.
See the ssh_agent manual for details.
OTP-16540 Application(s): ssh
*** HIGHLIGHT ***
Algorithm configuration could now be done in a .config
file.
This is useful for example to enable an algorithm that
is disabled by default. It could now be enabled in an
.config-file without changing the code,
See the SSH User's Guide chapter "Configuration in
SSH".
Full runtime dependencies of ssh-4.10: crypto-4.6.4, erts-9.0,
kernel-5.3, public_key-1.6.1, stdlib-3.4.1
---------------------------------------------------------------------
--- ssl-10.0 --------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16562 Application(s): ssl
Related Id(s): ERL-1168
Fix a bug that causes cross-build failure.
This change excludes the ssl.d dependency file from the
source tar balls.
OTP-16573 Application(s): ssl
Related Id(s): ERIERL-477
Correct translation of OpenSSL legacy names for two
legacy cipher suites
--- Improvements and New Features ---
OTP-14790 Application(s): ssl
*** POTENTIAL INCOMPATIBILITY ***
Drop support for SSL-3.0. Support for this legacy TLS
version has not been enabled by default since OTP 19.
Now all code to support it has been removed, that is
SSL-3.0 protocol version can not be used and is
considered invalid.
OTP-15247 Application(s): public_key, ssl
Added support for RSA-PSS signature schemes
OTP-15589 Application(s): ssl
*** HIGHLIGHT ***
Improve interoperability by implementing the middlebox
compatiblity mode.
The middlebox compatibility mode makes the TLS 1.3
handshake look more like a TLS 1.2 handshake and
increases the chance of successfully establishing TLS
1.3 connections through legacy middleboxes.
OTP-16127 Application(s): ssl
Related Id(s): OTP-15618
Utilize new properties of erlang:dist_ctrl_get_data()
for performance improvement of Erlang distribution over
TLS.
OTP-16346 Application(s): common_test, public_key, snmp, ssh,
ssl
Calls of deprecated functions in the Old Crypto API are
replaced by calls of their substitutions.
OTP-16391 Application(s): ssl
Implement cipher suite TLS_AES_128_CCM_8_SHA256.
OTP-16400 Application(s): ssl
*** POTENTIAL INCOMPATIBILITY ***
This change adds TLS-1.3 to the list of default
supported versions. That is, TLS-1.3 and TLS-1.2 are
configured when ssl option 'versions' is not explicitly
set.
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
OTP-16519 Application(s): ssl
Extended ssl:versions so that it lists supported,
available and implemented TLS/DTLS versions.
OTP-16533 Application(s): ssl
Avoid DoS attack against stateful session_tickets by
making session ticket ids unpredictable.
Full runtime dependencies of ssl-10.0: crypto-4.2, erts-10.0,
inets-5.10.7, kernel-6.0, public_key-1.8, stdlib-3.5
---------------------------------------------------------------------
--- stdlib-3.13 -----------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16431 Application(s): erts, stdlib
Related Id(s): ERL-592
Compiling a match specification with excessive nesting
caused the runtime system to crash due to scheduler
stack exhaustion. Instead of crashing the runtime
system, effected functions will now raise a
system_limit error exception in this situation.
OTP-16516 Application(s): compiler, stdlib
Initialization of record fields using _ is no longer
allowed if the number of affected fields is zero.
OTP-16545 Application(s): stdlib
Fix bugs in eval_bits.
--- Improvements and New Features ---
OTP-15299 Application(s): kernel, stdlib
Improved the printout of single line logger events for
most of the OTP behaviours in STDLIB and Kernel. This
includes proc_lib, gen_server, gen_event, gen_statem,
gen_fsm, supervisor, supervisor_bridge and application.
Improved the chars_limit and depth handling in proc_lib
and when formatting of exceptions.
OTP-15695 Application(s): kernel, mnesia, parsetools, sasl,
snmp, stdlib
Remove usage and documentation of old requests of the
I/O-protocol.
OTP-15744 Application(s): erts, stdlib
Related Id(s): OTP-15623, PR-2229
*** HIGHLIGHT ***
Improved ETS scalability of concurrent calls that
change the size of a table, like ets:insert/2 and
ets:delete/2.
This performance feature was implemented for
ordered_set in OTP 22.0 and does now apply for all ETS
table types.
The improved scalability may come at the cost of longer
latency of ets:info(T,size) and ets:info(T,memory). A
new table option decentralized_counters has therefore
been added. It is default true for ordered_set with
write_concurrency enabled and default false for all
other table types.
OTP-16005 Application(s): stdlib
Related Id(s): ERL-1003, ERL-1150
Handle Unicode filenames in the zip module.
OTP-16073 Application(s): stdlib
Related Id(s): PR-2339
Unicode support was updated to the Unicode 12.1
standard.
OTP-16120 Application(s): stdlib
Related Id(s): ERIERL-402, PR-2427
All of the modules proc_lib, gen_server, gen_statem,
and gen_event have been extended with a start_monitor()
function. For more information, see the documentation
of start_monitor() for these modules.
OTP-16128 Application(s): stdlib, tools
Related Id(s): OTP-15618
Updates for new erlang:term_to_iovec() BIF.
OTP-16171 Application(s): stdlib
Related Id(s): ERL-1057
Documented a quirk regarding extraction from file
descriptors in erl_tar.
OTP-16210 Application(s): stdlib
Related Id(s): PR-2411
Added ok as return value to gen_server:reply/2
OTP-16222 Application(s): stdlib
*** HIGHLIGHT ***
New functions have been added to c(3) for printing
embedded documentation for Erlang modules. The
functions are:
-- h/1,2,3 -- Print the documentation for a
Module:Function/Arity.
-- ht/1,2,3 -- Print the type documentation for a
Module:Type/Arity.
The embedded documentation is created when building the
Erlang/OTP documentation.
OTP-16276 Application(s): stdlib
Related Id(s): PR-2443
Add indent and linewidth to the options of the erl_pp
module's functions.
OTP-16368 Application(s): kernel, observer, runtime_tools,
stdlib, tools
Related Id(s): OTP-15251
Minor updates due to the new spawn improvements made.
OTP-16429 Application(s): compiler, stdlib
Related Id(s): ERL-303
The compiler will now raise a warning when inlining is
used in modules that load NIFs.
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
OTP-16480 Application(s): stdlib
Extend erl_parse:abstract/1,2 to handle external fun
expressions (fun M:F/A).
OTP-16483 Application(s): stdlib
Related Id(s): PR-2542
Added filelib:safe_relative_path/2 to replace
filename:safe_relative_path/1, which did not safely
handle symbolic links.
filename:safe_relative_path/1 has been deprecated.
OTP-16500 Application(s): stdlib
The module shell_docs has been added. The module
contains functions for rendering, validating and
normalizing embedded documentation.
OTP-16501 Application(s): stdlib
Related Id(s): ERL-708, OTP-16222, OTP-16406,
OTP-16494, OTP-16499, OTP-16500, PR-2545
*** HIGHLIGHT ***
Module and function auto-completion in the shell now
looks at all available modules instead of only those
loaded. A module is considered available if it either
is loaded already or would be loaded if called.
The auto-completion has also been expanded to work in
the new h/1,2,3 function in c(3).
Full runtime dependencies of stdlib-3.13: compiler-5.0, crypto-3.3,
erts-11.0, kernel-7.0, sasl-3.0
---------------------------------------------------------------------
--- syntax_tools-2.3 ------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-15925 Application(s): syntax_tools
Related Id(s): PR-2304
Remove incomplete support for cond expressions.
OTP-16386 Application(s): syntax_tools
Related Id(s): PR-2451
Improved indentation for code generated with
erl_prettypr and tidier.
Full runtime dependencies of syntax_tools-2.3: compiler-7.0,
erts-9.0, kernel-5.0, stdlib-3.4
---------------------------------------------------------------------
--- tools-3.4 -------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16128 Application(s): stdlib, tools
Related Id(s): OTP-15618
Updates for new erlang:term_to_iovec() BIF.
OTP-16327 Application(s): erts, runtime_tools, tools
Improved the presentation of allocations and carriers
in the instrument module.
OTP-16368 Application(s): kernel, observer, runtime_tools,
stdlib, tools
Related Id(s): OTP-15251
Minor updates due to the new spawn improvements made.
Full runtime dependencies of tools-3.4: compiler-5.0, erts-11.0,
erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4
---------------------------------------------------------------------
--- wx-1.9.1 --------------------------------------------------------
---------------------------------------------------------------------
--- Improvements and New Features ---
OTP-16469 Application(s): asn1, compiler, crypto, edoc, inets,
kernel, megaco, os_mon, otp, snmp, ssl, stdlib, wx
Refactored the internal handling of deprecated and
removed functions.
Full runtime dependencies of wx-1.9.1: erts-6.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- xmerl-1.3.25 ----------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-16617 Application(s): xmerl
Fix a bug that the function name didn't get normalized
in some case which left white spaces in links.
Full runtime dependencies of xmerl-1.3.25: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------