Initial Release | OTP 23.0 |
Git Tag | OTP-23.0 |
Date | 2020-05-13 |
Issue Id |
ERIERL-402
ERIERL-476
ERIERL-477
|
System | OTP |
Release | 23 |
Application |
|
Potential Incompatibilities |
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-15247
-
- Application(s):
- public_key, ssl
Added support for RSA-PSS signature schemes
- 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
-
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
-
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-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-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
*** HIGHLIGHT ***
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-16603
-
- Application(s):
- sasl
systools:make_tar/1,2 now filters out any tools from erts if included in the release tar ball. See the documentation for more details.
- OTP-16630
-
- Application(s):
- erl_interface
The erl_interface registry functionality is deprecated as of OTP 23, and will be removed in OTP 24. Reasonably new gcc compilers will issue deprecation warnings when using this functionality. In order to disable these warnings, define the macro EI_NO_DEPR_WARN.
OTP-23.0 #
- 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.
- 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.13 #
- OTP-16490
-
- Application(s):
- asn1
Adhere to the ASN.1 specification for hstring & bstring lexical items. That is they may include white space.
- 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.13: erts-7.0, kernel-3.0, stdlib-2.0
common_test-1.19 #
- 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 #
- 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.
- 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 #
- OTP-16579
-
- Application(s):
- crypto
- Related Id(s):
- ERL-825
Crypto reported unsupported elliptic curves as supported on e.g Fedora distros.
- 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 #
- 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
edoc-0.12 #
- OTP-15999
-
- Application(s):
- edoc
- Related Id(s):
- PR-2317
Remove Inets dependency from EDoc.
- OTP-16407
-
- Application(s):
- edoc
- Related Id(s):
- PR-2430
Add support for overloaded Erlang specifications.
- 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 #
- 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 #
- OTP-15800
-
- Application(s):
- erl_interface, erts, odbc, os_mon, wx
Fix various compiler warnings on 64-bit Windows.
- OTP-16604
-
- Application(s):
- erl_interface
erl_call will now work properly on systems that cannot resolve their own hostname.
- OTP-16623
-
- Application(s):
- erl_interface
Various bug fixes:
-- Internal error checking in various functions.
-- ei_rpc() accepted any 2-tuple message as an rpc response.
-- ei_decode_ref() now refuse to write outside of allocated memory in case a huge reference is decoded.
-- ei_decode_ei_term() now reports the same term types as ei_get_type().
- 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 -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 number of new functions have been added to the erl_interface API:
-- ei_cmp_pids()
-- ei_cmp_ports()
-- ei_cmp_refs()
-- ei_decode_iodata()
-- ei_make_pid()
-- ei_make_ref()
- OTP-16624
-
- Application(s):
- erl_interface
Added a -timeout option to erl_call.
- OTP-16630
-
- Application(s):
- erl_interface
*** POTENTIAL INCOMPATIBILITY ***
The erl_interface registry functionality is deprecated as of OTP 23, and will be removed in OTP 24. Reasonably new gcc compilers will issue deprecation warnings when using this functionality. In order to disable these warnings, define the macro EI_NO_DEPR_WARN.
- OTP-16633
-
- Application(s):
- erl_interface
Documentation improvements.
- OTP-16607
-
- Application(s):
- erl_interface
- Related Id(s):
- OTP-16608
The ei API for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled.
erts-11.0 #
- 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-15800
-
- Application(s):
- erl_interface, erts, odbc, os_mon, wx
Fix various compiler warnings on 64-bit Windows.
- 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.
- OTP-16596
-
Fixed bug in erl_crash.dump generation that could cause a SEGV core dump if a recently cancelled timer was found.
- 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
-
*** 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
-
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-16535
-
- Application(s):
- erts, kernel
socket: Socket counters and socket global counters are now represented as maps (instead of property lists).
- 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-16550
-
- Application(s):
- erts, kernel
- Related Id(s):
- ERIERL-476
The experimental socket module has gotten restrictions removed so now the 'seqpacket' socket type should work for any communication domain (protocol family) where the OS supports it, typically the Unix Domain.
- OTP-16557
-
- Application(s):
- erts, stdlib
Updated the internal pcre library to 8.44.
- OTP-16601
-
- Application(s):
- erts
- Related Id(s):
- OTP-16577
There is now cost in terms of reductions when copying binary data using the binary syntax.
- OTP-16602
-
- Application(s):
- erts
The executable erl_call is now part of the erts distribution in addition to erl_interface.
- 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.
- OTP-16620
-
- Application(s):
- erts, kernel
socket: By default the socket options rcvtimeo and sndtimeo are now disabled. To enable these, OTP now has to be built with the configure option --enable-esock-rcvsndtimeo
- OTP-16635
-
The environment variable $HOME does no longer have to be set before Erlang can be started.
Full runtime dependencies of erts-11.0: kernel-7.0, sasl-3.3, stdlib-3.13
eunit-2.5 #
- OTP-15950
-
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 #
- OTP-16470
-
- Application(s):
- hipe
Fixed a rare miss-compilation of tuple matching.
- 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 #
- 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 #
- 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 #
- 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.
- OTP-16627
-
- Application(s):
- kernel
- Related Id(s):
- PR-2601
Fix bug in application:loaded_applications/0 that could cause it to fail with badarg if for example a concurrent upgrade/downgrade is running.
- 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 -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
-
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-16535
-
- Application(s):
- erts, kernel
socket: Socket counters and socket global counters are now represented as maps (instead of property lists).
- OTP-16550
-
- Application(s):
- erts, kernel
- Related Id(s):
- ERIERL-476
The experimental socket module has gotten restrictions removed so now the 'seqpacket' socket type should work for any communication domain (protocol family) where the OS supports it, typically the Unix Domain.
- 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.
- OTP-16620
-
- Application(s):
- erts, kernel
socket: By default the socket options rcvtimeo and sndtimeo are now disabled. To enable these, OTP now has to be built with the configure option --enable-esock-rcvsndtimeo
- OTP-16632
-
- Application(s):
- kernel
- Related Id(s):
- ERL-1234
The experimental gen_tcp compatibility code utilizing the socket module could loose buffered data when receiving a specified number of bytes. This bug has been fixed. Reported by Maksim Lapshin on bugs.erlang.org ERL-1234
Full runtime dependencies of kernel-7.0: erts-11.0, sasl-3.0, stdlib-3.13
megaco-3.19 #
- 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 #
- OTP-16072
-
- Application(s):
- mnesia
- Related Id(s):
- PR-2320
Make mnesia:create_table/2 return correct badarg value.
- OTP-16634
-
Fixed a bug where mnesia was sometimes not waiting during start for a commit decision on asymmetric transactions.
- 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
odbc-2.13 #
- OTP-15800
-
- Application(s):
- erl_interface, erts, odbc, os_mon, wx
Fix various compiler warnings on 64-bit Windows.
- 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 #
- OTP-15800
-
- Application(s):
- erl_interface, erts, odbc, os_mon, wx
Fix various compiler warnings on 64-bit Windows.
- 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 #
- 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 #
- OTP-15247
-
- Application(s):
- public_key, ssl
*** HIGHLIGHT ***
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 #
- 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-4.0 #
- 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.
- OTP-16603
-
- Application(s):
- sasl
*** POTENTIAL INCOMPATIBILITY ***
systools:make_tar/1,2 now filters out any tools from erts if included in the release tar ball. See the documentation for more details.
Full runtime dependencies of sasl-4.0: erts-10.2, kernel-5.3, stdlib-3.4, tools-2.6.14
snmp-5.6 #
- 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.
- 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 #
- OTP-16363
-
- Application(s):
- ssh
Fix error in ssh_sftpd typespec.
- 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
-
*** 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 posix-rename@openssh.com 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
-- hmac-sha1-etm@openssh.com
-- hmac-sha2-256-etm@openssh.com
-- hmac-sha2-512-etm@openssh.com
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".
- OTP-16589
-
- Application(s):
- ssh
Documented which gen_tcp socket options can't be used in calls to ssh:connect and ssh:daemon.
- OTP-16622
-
- Application(s):
- ssh
- Related Id(s):
- PR-2604
Added kb_int_fun_4() to the authentication_daemon_options() to enable generating dynamic keyboard-interactive prompts from the user's state returned from the authentication fun pwdfun_4().
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 #
- 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
- OTP-16585
-
- Application(s):
- ssl
Correct documentation for PSK identity and SRP username.
- OTP-16626
-
- Application(s):
- ssl
- Related Id(s):
- ERL-1232
Make sure client hostname check is run when client uses its own verify_fun
- OTP-16638
-
- Application(s):
- ssl
- Related Id(s):
- ERL-1206
Improved signature selection mechanism in TLS 1.3 for increased interoperability.
- 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
*** HIGHLIGHT ***
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
*** HIGHLIGHT ***
*** 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-16532
-
- Application(s):
- ssl
Added new option exclusive for ssl:cipher_suites/2,3
- OTP-16533
-
- Application(s):
- ssl
Avoid DoS attack against stateful session_tickets by making session ticket ids unpredictable.
- OTP-16547
-
- Application(s):
- ssl
- Related Id(s):
- PR-2547
Add support for the max_fragment_length extension (RFC 6066).
- OTP-16584
-
- Application(s):
- ssl
Add srp_username in ssl:connection_info, update the document with types of this function.
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 #
- 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.
- 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
-
*** 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
-
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).
- OTP-16557
-
- Application(s):
- erts, stdlib
Updated the internal pcre library to 8.44.
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 #
- 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 #
- 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 #
- OTP-15800
-
- Application(s):
- erl_interface, erts, odbc, os_mon, wx
Fix various compiler warnings on 64-bit Windows.
- 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 #
- 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