Erlang/OTP 21.1

This release of Erlang/OTP can be built from source or installed using pre-built packages for your OS or third-party tools (such as kerl or asdf).

docker run -it erlang:21.1

Highlights #

OTP-15133
Application(s):
ssh
Related Id(s):
OTP-15240

The key exchange methods 'curve25519-sha256@libssh.org', 'curve25519-sha256' and 'curve448-sha512' are implemented. The last two are defined in https://tools.ietf.org/html/draft-ietf-curdle-ssh-curves

They all depends on that OpenSSL 1.1.1 or higher is used as cryptolib.

OTP-15134
Application(s):
crypto, public_key

The typing in the CRYPTO and PUBLIC_KEY applications are reworked and a few mistakes are corrected.

The documentation is now generated from the typing and some clarifications are made.

A new chapter on Algorithm Details such as key sizes and availability is added to the CRYPTO User's Guide.

OTP-15145
Application(s):
erts, kernel
Related Id(s):
ERIERL-187

The socket options recvtos, recvttl, recvtclass and pktoptions have been implemented in the socket modules. See the documentation for the gen_tcp, gen_udp and inet modules. Note that support for these in the runtime system is platform dependent. Especially for pktoptions which is very Linux specific and obsoleted by the RFCs that defined it.

OTP-15209
Application(s):
ssh
Related Id(s):
OTP-15164

The cipher 'chacha20-poly1305@openssh.com' is now supported if OpenSSL 1.1.1 or higher is used as cryptolib.

asn1-5.0.7 #

The asn1-5.0.7 application can be applied independently of other applications on a full OTP 21 installation.

OTP-14440
Application(s):
asn1
Related Id(s):
ERIERL-220

A bug in ASN.1 BER decoding has been fixed. When decoding a recursively enclosed term the length was not propagated to that term decoding, so if the length of the enclosed term was longer than the enclosing that error was not detected.

A hard coded C stack limitation for decoding recursive ASN.1 terms has been introduced. This is currently set to 8 kWords giving a nesting depth of about 1000 levels. Deeper terms can not be decoded, which should not be much of a real world limitation.

Full runtime dependencies of asn1-5.0.7: erts-7.0, kernel-3.0, stdlib-2.0

common_test-1.16.1 #

The common_test-1.16.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15307
Application(s):
common_test

The Logger handler cth_log_redirect earlier called the report callback (report_cb) before calling the logger formatter. In some cases this would fail, since cth_log_redirect could not handle report callbacks with two arguments. This is now corrected, so only the formatter will call the report callback.

Full runtime dependencies of common_test-1.16.1: 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.2.5 #

The compiler-7.2.5 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15186
Application(s):
compiler
Related Id(s):
ERL-665

Fixed a bug that prevented certain variable-sized binary comprehensions from compiling.

OTP-15188
Application(s):
compiler
Related Id(s):
ERL-658

When compiling from Core Erlang, funs created in certain expressions that were only used for their side-effects were subtly broken.

OTP-15218
Application(s):
compiler
Related Id(s):
ERL-684

There could be an internal consistency failure when a receive was nested in a try/catch.

OTP-15219
Application(s):
compiler
Related Id(s):
ERL-689

In rare circumstances, the matched out tail of a binary could be the entire original binary.

OTP-15227
Application(s):
compiler
Related Id(s):
ERL-699

When is_map_key/2 was used in a guard together with the not/1 or or/2 operators, the error behavior could be wrong when is_map_key/2 was passed a non-map as the second argument.

In rare circumstances, compiling code that uses is_map_key/2 could cause an internal consistency check failure.

OTP-15235
Application(s):
compiler
Related Id(s):
ERL-703

The compiler could crash when compiling a function with multiple receives in multiple clauses.

Full runtime dependencies of compiler-7.2.5: crypto-3.6, erts-9.0, hipe-3.12, kernel-4.0, stdlib-2.5

crypto-4.3.3 #

The crypto-4.3.3 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15212
Application(s):
crypto
Related Id(s):
ERL-675 , PR1899 , PR838

The RSA options rsa_mgf1_md, rsa_oaep_md, and rsa_oaep_label were always disabled. They will now be enabled when a suitable cryptolib is used.

They are still experimental and may change without prior notice.

OTP-15283
Application(s):
crypto

The ciphers aes_ige256 and blowfish_cbc had naming issues in crypto:next_iv/2.

OTP-15303
Application(s):
crypto

the RSA_SSLV23_PADDING is disabled if LibreSSL is used as cryptlib. This is due to compilation problems.

This will be investigated further in the future.

OTP-14717
Application(s):
crypto
Related Id(s):
OTP-15244

The supported named elliptic curves are now reported in crypto:supports/0 in a new entry tagged by 'curves'.

The function crypto:ec_curves/0 is kept for compatibility.

OTP-15134
Application(s):
crypto, public_key

*** HIGHLIGHT ***

The typing in the CRYPTO and PUBLIC_KEY applications are reworked and a few mistakes are corrected.

The documentation is now generated from the typing and some clarifications are made.

A new chapter on Algorithm Details such as key sizes and availability is added to the CRYPTO User's Guide.

OTP-15153
Application(s):
crypto

Support for SHA3 both as a separate hash and in HMAC is now available if OpenSSL 1.1.1 or higher is used as cryptolib.

Available lengths are reported in the 'hashs' entry in crypto:supports/0 as sha3_*.

OTP-15164
Application(s):
crypto
Related Id(s):
OTP-15209

The mac algorithm poly1305 and the cipher algorithm chacha20 are now supported if OpenSSL 1.1.1 or higher is used as cryptolib.

OTP-15240
Application(s):
crypto
Related Id(s):
OTP-15133

The key exchange Edward curves x25519 and x448 are now supported if OpenSSL 1.1.1 or higher is used as cryptolib.

OTP-15260
Application(s):
crypto

The supported RSA options for sign/verify and encrypt/decrypt are now reported in crypto:supports/0 in a new entry tagged by 'rsa_opts'.

The exakt set is still experimental and may change without prior notice.

OTP-15286
Application(s):
crypto

The cipher aes_ccm is added.

Full runtime dependencies of crypto-4.3.3: erts-9.0, kernel-5.3, stdlib-3.4

debugger-4.2.6 #

The debugger-4.2.6 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of debugger-4.2.6: compiler-5.0, erts-9.0, kernel-5.3, stdlib-3.4, wx-1.2

dialyzer-3.3.1 #

The dialyzer-3.3.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15268
Application(s):
dialyzer
Related Id(s):
ERL-680

Optimize Dialyzer's handling of left-associative use of andalso and orelse in guards.

Full runtime dependencies of dialyzer-3.3.1: compiler-7.0, erts-9.0, hipe-3.16.1, kernel-5.3, stdlib-3.4, syntax_tools-2.0, wx-1.2

diameter-2.1.6 #

The diameter-2.1.6 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15198
Application(s):
diameter
Related Id(s):
ERIERL-213

Fix function_clause when sending an outgoing request after DPA has been sent in response to an incoming DPR. The caused the diameter_peer_fsm gen_server associated with the peer connection to fail, which could then result in the transport connection being reset before the peer closed it upon reception of DPA.

Full runtime dependencies of diameter-2.1.6: erts-10.0, kernel-3.2, ssl-9.0, stdlib-2.4

edoc-0.9.4 #

The edoc-0.9.4 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of edoc-0.9.4: erts-6.0, inets-5.10, kernel-3.0, stdlib-2.5, syntax_tools-1.6.14, xmerl-1.3.7

eldap-1.2.5 #

The eldap-1.2.5 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of eldap-1.2.5: asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-2.0

erl_docgen-0.8.1 #

The erl_docgen-0.8.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-14406
Application(s):
erl_docgen

Indexing for the online search function has been corrected for CREF documents.

Full runtime dependencies of erl_docgen-0.8.1: edoc-0.7.13, erts-9.0, stdlib-3.4, xmerl-1.3.7

erl_interface-3.10.4 #

The erl_interface-3.10.4 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15161
Application(s):
erl_interface
Related Id(s):
ERIERL-191

Make ei_connect and friends also accept state ok_simultaneous during handshake, which means the other node has initiated a connection setup that will be cancelled in favor of this connection.

OTP-15171
Application(s):
erl_interface

Fixed bug in ei_receive_msg, ei_xreceive_msg, ei_receive_msg_tmo and ei_xreceive_msg_tmo. The x->index was set to entire buffer size instead of the number of bytes actually received.

OTP-15191
Application(s):
erl_interface

Fixed bug in ei_connect_init which could be provoked if called by concurrent threads. ei_connect_init called posix interface gethostbyname which is documented as not thread safe.

OTP-15277
Application(s):
erl_interface
Related Id(s):
PR-1929

Fixed bug in erl_compare_ext() ignoring the tail of lists of otherwise equal content. Example: [a | b] and [a | c] compared equal and {[a], b} and {[a], c} compared equal.

erts-10.1 #

Note! The erts-10.1 application can *not* be applied independently of other applications on an arbitrary OTP 21 installation. On a full OTP 21 installation, also the following runtime dependency has to be satisfied: -- kernel-6.1 (first satisfied in OTP 21.1)

OTP-15038
Application(s):
erts
Related Id(s):
ERL-602

Fix the seq_trace token to not be cleared when a process receives messages sent by erts. Some examples of when this could happen is all port BIFs, i.e. open_port, port_command etc etc.

Fix so that messages sent by nifs can be traced using normal and seq_trace tracing.

OTP-15180
Application(s):
erts
Related Id(s):
ERL-648

Fixed specs and documentation for process_info item monitored_by to include port identifiers and nif resources as possible types.

OTP-15181
Application(s):
erts

Fix bug in generation of erl_crash.dump, which could cause VM to crash.

Bug exist since erts-9.2 (OTP-20.2).

OTP-15205
Application(s):
erts

Fix bug where ctrl-break or ctrl-c would not trigger the break mode properly on Windows. This bug was introduced in erts-10.0 (OTP-21).

OTP-15206
Application(s):
erts

Fix a performance bug for reception of UDP packages, where a memory buffer would be reallocated when it should not have been.

Introduce a limit on the maximum automatic increase of the UDP user-space buffer to the theoretical max of the network PATH, i.e. 65535.

OTP-15208
Application(s):
erts
Related Id(s):
ERL-677 , PR-1897

Fix alignment of erts allocator state internally in erts. With the improper alignment the emulator would refuse to start when compiled with clang on 32-bit systems.

OTP-15210
Application(s):
erts

Fix bug where too many concurrent calls to erlang:open_port({spawn,"cmd"},...) would result in the emulator terminating with the reason "Failed to write to erl_child_setup: ". After this fix the open_port call will throw an emfile exception instead.

OTP-15217
Application(s):
erts

Upgraded the ERTS internal PCRE library from version 8.41 to version 8.42. See http://pcre.org/original/changelog.txt for information about changes made to PCRE. This library implements major parts of the re regular expressions module.

OTP-15236
Application(s):
erts
Related Id(s):
ERL-692

Fix open_port({fd,X,Y}, ...) to release the file descriptors from the pollset when closing the port. Without this fix the same file descriptor number could not be reused when doing multiple open_port and port_close sequences.

OTP-15276
Application(s):
erts
Related Id(s):
PR-1920

Fixed bug in float_to_list/2 and float_to_binary/2 with options [{decimals,0},compact] causing totally wrong results. Bug exists since OTP-21.0.

OTP-15278
Application(s):
erts

Fixed bug in erlang:memory causing ets to report too much. This small false memory leak (16 bytes each time) can only happen when a specific race condition occurs between scheduler threads on a table with option write_concurrency.

OTP-15282
Application(s):
erts

Minor configure test fixes

OTP-15297
Application(s):
erts, kernel
Related Id(s):
OTP-15279 , OTP-15280

Improved robustness of distribution connection setup. In OTP-21.0 a truly asynchronous connection setup was introduced. This is further improvement on that work to make the emulator more robust and also be able to recover in cases when involved Erlang processes misbehave.

OTP-15145
Application(s):
erts, kernel
Related Id(s):
ERIERL-187

*** HIGHLIGHT ***

The socket options recvtos, recvttl, recvtclass and pktoptions have been implemented in the socket modules. See the documentation for the gen_tcp, gen_udp and inet modules. Note that support for these in the runtime system is platform dependent. Especially for pktoptions which is very Linux specific and obsoleted by the RFCs that defined it.

Full runtime dependencies of erts-10.1: kernel-6.1, sasl-3.0.1, stdlib-3.5

et-1.6.3 #

The et-1.6.3 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of et-1.6.3: erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2

eunit-2.3.7 #

The eunit-2.3.7 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of eunit-2.3.7: erts-9.0, kernel-5.3, stdlib-3.4

ftp-1.0.1 #

The ftp-1.0.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of ftp-1.0.1: erts-7.0, kernel-6.0, stdlib-3.5

hipe-3.18.1 #

The hipe-3.18.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of hipe-3.18.1: compiler-5.0, erts-9.3, kernel-5.3, stdlib-3.4, syntax_tools-1.6.14

inets-7.0.2 #

The inets-7.0.2 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15192
Application(s):
inets

Enhance error handling, that is mod_get will return 403 if a path is a directory and not a file.

OTP-15241
Application(s):
inets

Do not use chunked-encoding with 1xx, 204 and 304 responses when using mod_esi. Old behavior was not compliant with HTTP/1.1 RFC and could cause clients to hang when they received 1xx, 204 or 304 responses that included an empty chunked-encoded body.

OTP-15242
Application(s):
inets

Add robust handling of chunked-encoded HTTP responses with an empty body (1xx, 204, 304). Old behavior could cause the client to hang when connecting to a faulty server implementation.

Full runtime dependencies of inets-7.0.2: erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5

jinterface-1.9.1 #

The jinterface-1.9.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

kernel-6.1 #

Note! The kernel-6.1 application can *not* be applied independently of other applications on an arbitrary OTP 21 installation. On a full OTP 21 installation, also the following runtime dependency has to be satisfied: -- erts-10.1 (first satisfied in OTP 21.1)

OTP-15143
Application(s):
kernel

The values all and none are documented as valid value for the Kernel configuration parameter logger_level, but would cause a crash during node start. This is now corrected.

OTP-15162
Application(s):
kernel
Related Id(s):
ERIERL-191

Fix some potential buggy behavior in how ticks are sent on inter node distribution connections. Tick is now sent to c-node even if there are unsent buffered data, as c-nodes need ticks in order to send reply ticks. The amount of sent data was also calculated wrongly when ticks were suppressed due to unsent buffered data.

OTP-15170
Application(s):
kernel

Non semantic change in dist_util.erl to silence dialyzer warning.

OTP-15182
Application(s):
kernel
Related Id(s):
ERL-643

Fixed net_kernel:connect_node(node()) to return true (and do nothing) as it always has before OTP-21.0. Also documented this successful "self connect" as the expected behavior.

OTP-15228
Application(s):
kernel

The single_line option on logger_formatter would in some cases add an unwanted comma after the association arrows in a map. This is now corrected.

OTP-15297
Application(s):
erts, kernel
Related Id(s):
OTP-15279 , OTP-15280

Improved robustness of distribution connection setup. In OTP-21.0 a truly asynchronous connection setup was introduced. This is further improvement on that work to make the emulator more robust and also be able to recover in cases when involved Erlang processes misbehave.

OTP-15132
Application(s):
kernel

A new macro, ?LOG(Level,...), is added. This is equivalent to the existing ?LOG_<LEVEL>(...) macros.

A new variant of Logger report callback is added, which takes an extra argument containing options for size limiting and line breaks. Module proc_lib in STDLIB uses this for crash reports.

Logger configuration is now checked a bit more for errors.

OTP-15145
Application(s):
erts, kernel
Related Id(s):
ERIERL-187

*** HIGHLIGHT ***

The socket options recvtos, recvttl, recvtclass and pktoptions have been implemented in the socket modules. See the documentation for the gen_tcp, gen_udp and inet modules. Note that support for these in the runtime system is platform dependent. Especially for pktoptions which is very Linux specific and obsoleted by the RFCs that defined it.

OTP-15146
Application(s):
kernel

Add logger:set_application_level/2 for setting the logger level of all modules in one application.

Full runtime dependencies of kernel-6.1: erts-10.1, sasl-3.0, stdlib-3.5

megaco-3.18.4 #

The megaco-3.18.4 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of megaco-3.18.4: 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.15.5 #

The mnesia-4.15.5 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15201
Application(s):
mnesia
Related Id(s):
PR-1881

Fixed type spec for mnesia:change_config/2.

OTP-15221
Application(s):
mnesia
Related Id(s):
ERIERL-217

When master node is set do not force a load from ram_copies replica when there are no available disc_copies, since that would load an empty table. Wait until a disk replica is available or until user explicitly force_loads the table.

OTP-15226
Application(s):
mnesia
Related Id(s):
ERIERL-221

Allow to add replicas even if all other replicas are down when the other replicas are not stored on disk.

OTP-15231
Application(s):
mnesia
Related Id(s):
PR-1858

Fixed mnesia:delete_object/1 bug, where delete_object was deleting the record if it was written in the same transaction even if it was written to a different value.

OTP-15243
Application(s):
mnesia

Fixed a bug where the bag table index data was not deleted when objects were deleted.

Full runtime dependencies of mnesia-4.15.5: erts-9.0, kernel-5.3, stdlib-3.4

observer-2.8.1 #

The observer-2.8.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of observer-2.8.1: erts-7.0, et-1.5, kernel-3.0, runtime_tools-1.8.14, stdlib-3.5, wx-1.2

odbc-2.12.2 #

The odbc-2.12.2 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of odbc-2.12.2: erts-6.0, kernel-3.0, stdlib-2.0

os_mon-2.4.6 #

The os_mon-2.4.6 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of os_mon-2.4.6: erts-6.0, kernel-3.0, mnesia-4.12, otp_mibs-1.0.9, sasl-2.4, snmp-4.25.1, stdlib-2.0

otp_mibs-1.2.1 #

The otp_mibs-1.2.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of otp_mibs-1.2.1: erts-6.0, kernel-3.0, mnesia-4.12, snmp-4.25.1, stdlib-2.0

parsetools-2.1.8 #

The parsetools-2.1.8 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of parsetools-2.1.8: erts-6.0, kernel-3.0, stdlib-2.5

public_key-1.6.2 #

The public_key-1.6.2 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15284
Application(s):
public_key

Removed #DSAPrivateKey{} as acceptable input to public_key:verify/5.

OTP-15134
Application(s):
crypto, public_key

*** HIGHLIGHT ***

The typing in the CRYPTO and PUBLIC_KEY applications are reworked and a few mistakes are corrected.

The documentation is now generated from the typing and some clarifications are made.

A new chapter on Algorithm Details such as key sizes and availability is added to the CRYPTO User's Guide.

Full runtime dependencies of public_key-1.6.2: asn1-3.0, crypto-3.8, erts-6.0, kernel-3.0, stdlib-3.5

reltool-0.7.7 #

The reltool-0.7.7 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of reltool-0.7.7: erts-7.0, kernel-3.0, sasl-2.4, stdlib-3.4, tools-2.6.14, wx-1.2

runtime_tools-1.13.1 #

The runtime_tools-1.13.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15163
Application(s):
runtime_tools
Related Id(s):
PR-1844

Optimize observer by using new system_info(ets_count) instead of more expensive length(ets:all()).

Full runtime dependencies of runtime_tools-1.13.1: erts-8.0, kernel-5.0, mnesia-4.12, stdlib-3.0

sasl-3.2.1 #

The sasl-3.2.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of sasl-3.2.1: erts-9.0, kernel-5.3, stdlib-3.4, tools-2.6.14

snmp-5.2.12 #

The snmp-5.2.12 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15287
Application(s):
snmp
Related Id(s):
ERIERL-206

Conversion of (agent) Audit Trail Log (ATL) failed due to invalid log entries.

The conversion aborted completely midway because the ATL contained invalid entries. The conversion has been improved so that it now firstly handles encountered errors and write an informative message (into the converted stream) and secondly keeps count of the number of successful or failed entry conversions. See log_to_txt for more info.

The reason the ATL contained invalid entries have also been fixed. The reason was that for some outgoing messages (not response):

-- encrypted (v3 messages)

Was logged "as is" (encrypted) without the info to decrypt, making conversion impossible (which was the reason the log contained bad entries).

-- un-encrypted

Was not logged at all.

OTP-15290
Application(s):
snmp

[compiler] Spurious version message removed. The snmp mib compiler printed an spurious version message if the 'version' option was provided.

Full runtime dependencies of snmp-5.2.12: crypto-3.3, erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5

ssh-4.7.1 #

The ssh-4.7.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15020
Application(s):
ssh

Extended the undocumented ssh_dbg debug module with an api for a circular trace buffer. This makes it easy to record the last low-level events before an error is detected. It is intended for solving difficult errors.

OTP-15133
Application(s):
ssh
Related Id(s):
OTP-15240

*** HIGHLIGHT ***

The key exchange methods 'curve25519-sha256@libssh.org', 'curve25519-sha256' and 'curve448-sha512' are implemented. The last two are defined in https://tools.ietf.org/html/draft-ietf-curdle-ssh-curves

They all depends on that OpenSSL 1.1.1 or higher is used as cryptolib.

OTP-15209
Application(s):
ssh
Related Id(s):
OTP-15164

*** HIGHLIGHT ***

The cipher 'chacha20-poly1305@openssh.com' is now supported if OpenSSL 1.1.1 or higher is used as cryptolib.

Full runtime dependencies of ssh-4.7.1: crypto-4.2, erts-6.0, kernel-3.0, public_key-1.5.2, stdlib-3.3

ssl-9.0.2 #

The ssl-9.0.2 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15122
Application(s):
ssl

Use separate processes for sending and receiving application data for TLS connections to avoid potential deadlock that was most likely to occur when using TLS for Erlang distribution. Note does not change the API.

OTP-15168
Application(s):
ssl

Correct handling of empty server SNI extension

OTP-15172
Application(s):
ssl

Correct PSK cipher suite handling and add selected_cipher_suite to connection information

OTP-15173
Application(s):
ssl

Adopt to the fact that cipher suite sign restriction are relaxed in TLS-1.2

OTP-15174
Application(s):
ssl

Enhance error handling of non existing PEM files

OTP-15216
Application(s):
ssl

Correct close handling of transport accepted sockets in the error state

OTP-15224
Application(s):
ssl

Correct PEM cache to not add references to empty entries when PEM file does not exist.

OTP-15285
Application(s):
ssl

Correct handling of all PSK cipher suites

Before only some PSK suites would be correctly negotiated and most PSK ciphers suites would fail the connection.

OTP-12983
Application(s):
ssl

TLS will now try to order certificate chains if they appear to be unordered. That is prior to TLS 1.3, “certificate_list” ordering was required to be strict, however some implementations already allowed for some flexibility. For maximum compatibility, all implementations SHOULD be prepared to handle potentially extraneous certificates and arbitrary orderings from any TLS version.

OTP-15060
Application(s):
ssl

TLS will now try to reconstructed an incomplete certificate chains from its local CA-database and use that data for the certificate path validation. This especially makes sense for partial chains as then the peer might not send an intermediate CA as it is considered the trusted root in that case.

OTP-15193
Application(s):
ssl

Option keyfile defaults to certfile and should be trumped with key. This failed for engine keys.

OTP-15234
Application(s):
ssl

Error message improvement when own certificate has decoding issues, see also issue ERL-668.

OTP-15281
Application(s):
ssl

Correct dialyzer spec for key option

Full runtime dependencies of ssl-9.0.2: crypto-4.2, erts-10.0, inets-5.10.7, kernel-6.0, public_key-1.5, stdlib-3.5

stdlib-3.6 #

The stdlib-3.6 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15252
Application(s):
stdlib
Related Id(s):
ERL-667

The specs of filename:basedir/2,3 are corrected.

OTP-15253
Application(s):
stdlib
Related Id(s):
ERL-55 , OTP-13229

Let dets:open_file() exit with a badarg message if given a raw file name (a binary).

OTP-15304
Application(s):
stdlib

The Format argument of the formatting functions in modules io and io_lib is accepted even if it is, for example, a list of binaries. This is how it used to be before Erlang/OTP 21.0.

Full runtime dependencies of stdlib-3.6: compiler-5.0, crypto-3.3, erts-10.0, kernel-6.0, sasl-3.0

syntax_tools-2.1.6 #

The syntax_tools-2.1.6 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15207
Application(s):
syntax_tools
Related Id(s):
PR-1888

Fix the TypeName type in erl_syntax_lib.

OTP-15291
Application(s):
syntax_tools
Related Id(s):
ERL-719

Correct unfolding of the stacktrace variable.

OTP-15294
Application(s):
syntax_tools

Correct erl_syntax:revert/1 bug regarding the types map() and tuple().

OTP-15165
Application(s):
syntax_tools
Related Id(s):
PR-1842

Support bitstrings as literals in module erl_syntax.

Full runtime dependencies of syntax_tools-2.1.6: compiler-7.0, erts-9.0, kernel-5.0, stdlib-3.4

tftp-1.0.1 #

The tftp-1.0.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of tftp-1.0.1: kernel-6.0, stdlib-3.5

tools-3.0.1 #

The tools-3.0.1 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15213
Application(s):
tools
Related Id(s):
PR-1807

The HTML pages generated by cover:analyse_to_file/1 and related functions is improved for readability.

OTP-15239
Application(s):
tools
Related Id(s):
PR-1728

Add alignment functionality in emacs.

Full runtime dependencies of tools-3.0.1: compiler-5.0, erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4

wx-1.8.5 #

The wx-1.8.5 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15230
Application(s):
wx
Related Id(s):
PR-1860

Fixed compilation warning on Darwin.

Full runtime dependencies of wx-1.8.5: erts-6.0, kernel-3.0, stdlib-2.0

xmerl-1.3.18 #

The xmerl-1.3.18 application can be applied independently of other applications on a full OTP 21 installation.

OTP-15190
Application(s):
debugger, edoc, eldap, et, eunit, ftp, hipe, jinterface, megaco, observer, odbc, os_mon, otp_mibs, parsetools, reltool, sasl, tftp, xmerl

Improved documentation.

Full runtime dependencies of xmerl-1.3.18: erts-6.0, kernel-3.0, stdlib-2.5