Releases: erlang/otp
OTP 24.3
---------------------------------------------------------------------
--- HIGHLIGHTS ------------------------------------------------------
---------------------------------------------------------------------
OTP-17455 Application(s): erts, kernel
Related Id(s): GH-4852
Add support for using socket:sockaddr_in() and
socket:sockaddr_in6() when using gen_sctp, gen_tcp and
gen_udp. This will make it possible to use Link Local
IPv6 addresses.
OTP-17812 Application(s): crypto
Related Id(s): OTP-16282, OTP-16646
The crypto app in OTP can since OTP-24.2 be compiled,
linked and used with the new OpenSSL 3.0 cryptolib.
The crypto app has 3.0 support has been improved, but
is still *not recommended* for other usages than
experiments and alpha testing. There are not yet any
guaranties that it works, not even together with other
OTP applications like for example SSL and SSH, although
there are no known errors.
Since the previous release, OTP-24.2, the following
improvements have been done:
- It has been tested during nearly every nightly test
on the OTP lab
- The hash algorithms md4 and ripemd160 have been
enabled with OpenSSL 3.0.
- The ciphers blowfish_cbc, blowfish_ecb, des_cbc,
des_cfb, des_ecb, rc2_cbc and rc4 have been enabled
with OpenSSL 3.0.
Disabled or unsupported with OpenSSL 3.0 are still:
- ENGINE support
- FIPS mode
- Other providers than the built-in ones
- Compiling and linking with OpenSSL 3.0 cryptolib in
compatibility modes (for example to behave as 1.1.1)
and, the ciphers blowfish_cfb64 and blowfish_ofb64 are
not supported and will not be either.
Deprecated functions in the OpenSSL 3.0 cryptolib must
not be disabled as OTP/crypto still uses some of the
deprecated API functions. The gcc flag
-Wno-deprecated-declarations is set to prevent
deprecation warnings to be printed when compiling.
OTP-17843 Application(s): erts, kernel
Related Id(s): ERIERL-732, PR-5611
By default global does not take any actions to restore
a fully connected network when connections are lost due
to network issues. This is problematic for all
applications expecting a fully connected network to be
provided, such as for example mnesia, but also for
global itself. A network of overlapping partitions
might cause the internal state of global to become
inconsistent. Such an inconsistency can remain even
after such partitions have been brought together to
form a fully connected network again. The effect on
other applications that expects that a fully connected
network is maintained may vary, but they might
misbehave in very subtle hard to detect ways during
such a partitioning.
In order to prevent such issues, we have introduced a
prevent overlapping partitions fix which can be enabled
using the prevent_overlapping_partitions kernel(6)
parameter. When this fix has been enabled, global will
actively disconnect from nodes that reports that they
have lost connections to other nodes. This will cause
fully connected partitions to form instead of leaving
the network in a state with overlapping partitions.
Note that this fix has to be enabled on all nodes in
the network in order to work properly. Since this quite
substantially changes the behavior, this fix is
currently disabled by default. Since you might get hard
to detect issues without this fix you are, however,
strongly advised to enable this fix in order to avoid
issues such as the ones described above. As of OTP 25
this fix will become enabled by default.
---------------------------------------------------------------------
--- POTENTIAL INCOMPATIBILITIES -------------------------------------
---------------------------------------------------------------------
OTP-17928 Application(s): ssh
Related Id(s): PR-5679
Improper tag for private ED keys when encoding with
ssh:encode/2.
The tuple had ed_priv as first element, but should have
had ed_pri. This is now corrected.
OTP 24.2.2
Patch Package: OTP 24.2.2
Git Tag: OTP-24.2.2
Date: 2022-02-25
Trouble Report Id: OTP-17850, OTP-17922
Seq num: ERIERL-743, ERIERL-764
System: OTP
Release: 24
Application: inets-7.5.1, ssh-4.13.1
Predecessor: OTP 24.2.1
Check out the git tag OTP-24.2.2, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- inets-7.5.1 -----------------------------------------------------
---------------------------------------------------------------------
The inets-7.5.1 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17922 Application(s): inets
Related Id(s): ERIERL-743
Avoid intermediate ungraceful shutdown of the HTTP
server.
Full runtime dependencies of inets-7.5.1: erts-6.0, kernel-3.0,
mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5
---------------------------------------------------------------------
--- ssh-4.13.1 ------------------------------------------------------
---------------------------------------------------------------------
The ssh-4.13.1 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17850 Application(s): ssh
Related Id(s): ERIERL-764
The ssh sever parallel_login option was missing in
OTP-24
Full runtime dependencies of ssh-4.13.1: crypto-5.0, erts-9.0,
kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 25.0-rc1
Erlang/OTP 25.0-rc1 is the first release candidate of three before the OTP 25.0 release.
The intention with this release is to get feedback from our users. All feedback is welcome, even if it is only to say that it works for you.
We encourage users to try it out and give us feedback either by creating an issue here https://github.com/erlang/otp/issues or by posting to Erlangforums or the mailing list [email protected].
All artifacts for the release can be downloaded from the Erlang/OTP Github release and you can view the new documentation at https://erlang.org/documentation/doc-13.0-rc1/doc/. You can also install the latest release using kerl like this: kerl build 25.0-rc1 25.0-rc1
.
Erlang/OTP 25 is a new major release with new features, improvements as well as a few incompatibilities. Some of the new features are highlighted below.
Many thanks to all contributors!
Below are some highlights of the release:
Highlights
erts & jit
- The JIT now works for 64-bit ARM processors.
- The JIT now does type-based optimizations based on type
information in the BEAM files. - Improved the JIT's support for external tools like
perf
andgdb
, allowing them to show line numbers and even
the original Erlang source code when that can be found.
erts, stdlib, kernel
-
Users can now configure ETS tables with the
{write_concurrency, auto}
option. This option forces
tables to automatically change the number of locks that
are used at run-time depending on how much concurrency
is detected. The{decentralized_counters, true}
option
is enabled by default when{write_concurrency, auto}
is
active.Benchmark results comparing this option with the other
ETS optimization options are available here:
benchmarks. -
To enable more optimizations, BEAM files compiled with
OTP 21 and earlier cannot be loaded in OTP 25. -
The signal queue of a process with
the process flagmessage_queue_data=off_heap
has been optimized to
allow parallel reception of signals from multiple processes.
This can improve performance when many processes are sending in parallel to
one process. See benchmark. -
The Erlang installation directory is now relocatable on
the file system given that the paths in the
installation's RELEASES file are paths that are
relative to the installations root directory. -
A new option called
short
has been added to the
functionserlang:float_to_list/2
and
erlang:float_to_binary/2
. This option creates the
shortest correctly rounded string representation of the
given float that can be converted back to the same
float again. -
Introduction of
quote/1
andunquote/1
functions in
theuri_string
module - a replacement for the deprecated functionshttp_uri:encode
andhttp_uri:decode
. -
The new module
peer
supersedes theslave
module. The
slave
module is now deprecated and will be removed in OTP 27. -
global
will now by default prevent
overlapping partitions due to network issues. This is done by
actively disconnecting from nodes that reports that
they have lost connections to other nodes. This will
cause fully connected partitions to form instead of
leaving the network in a state with overlapping
partitions.It is possible to turn off the new behavior by setting the
thekernel
configuration parameterprevent_overlapping_partitions
tofalse
.
Doing this will retain the same behavior as in OTP 24 and earlier. -
The
format_status/2
callback forgen_server
,gen_statem
andgen_event
has been deprecated in favor of the new
format_status/1
callback.The new callback adds the possibility to limit and
change many more things than the just the state. -
The
timer
module has been modernized and made more
efficient, which makes the timer server less
susceptible to being overloaded. Thetimer:sleep/1
function now accepts an arbitrarily large integer.
Compiler
-
The
maybe ... end
construction as proposed inEEP-49
has been implemented. It can simplify complex code
where otherwise deeply nested cases would have to be
used.To enable
maybe
, give the option{enable_feature,maybe_expr}
to
the compiler. The exact option to use will change in a coming release candidate and then it will also be possible to
use from inside the module being compiled. -
When a record matching or record update fails, a
{badrecord, ExpectedRecordTag}
exception used to be
raised. In this release, the exception has been changed
to{badrecord, ActualValue}
, whereActualValue
is the
value that was found instead of the expected record. -
Add compile attribute
-nifs()
to empower compiler and loader with
information about which functions may be overridden as NIFs byerlang:load_nif/2
. -
Improved and more detailed error messages when binary construction with the
binary syntax fails.
This applies both for error messages in the shell and for
erl_error:format_exception/3,4
.
Crypto
- Add
crypto:hash_equals/2
which is a constant time comparision of hashvalues.
Dialyzer
- Optimize operations in the
erl_types
module. Parallelize the Dialyzer pass remote. - Added the
missing_return
andextra_return
options to
raise warnings when specifications differ from inferred
types. These are similar to, but not quite as verbose
as overspecs and underspecs. - Dialyzer now better understands the types for
min/2
,
max/2
, anderlang:raise/3
. Because of that, Dialyzer
can potentially generate new warnings. In particular,
functions that useerlang:raise/3
could now need a spec
with ano_return()
return type to avoid an unwanted
warning.
Misc
- A new DEVELOPMENT HOWTO guide has been added that
describes how to build and test Erlang/OTP when fixing
bugs or developing new functionality. - Testing has been
added to the Github actions run for each opened PR so
that more bugs are caught earlier when bug fixes and
new features are proposed.
For more details about new features and potential incompatibilities see
OTP 23.3.4.11
Patch Package: OTP 23.3.4.11
Git Tag: OTP-23.3.4.11
Date: 2022-01-26
Trouble Report Id: OTP-17835, OTP-17871
Seq num: ERIERL-721
System: OTP
Release: 23
Application: erts-11.2.2.10, ssh-4.11.1.5
Predecessor: OTP 23.3.4.10
Check out the git tag OTP-23.3.4.11, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- erts-11.2.2.10 --------------------------------------------------
---------------------------------------------------------------------
The erts-11.2.2.10 application can be applied independently of other
applications on a full OTP 23 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17871 Application(s): erts
Related Id(s): PR-5612
Fix GC emulator crash when spawn_request was used when
message tracing was enabled.
Full runtime dependencies of erts-11.2.2.10: kernel-7.0, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- ssh-4.11.1.5 ----------------------------------------------------
---------------------------------------------------------------------
The ssh-4.11.1.5 application can be applied independently of other
applications on a full OTP 23 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17835 Application(s): ssh
Related Id(s): ERIERL-721
Fixed problem with blocked server after multiple
restarts. Applies to daemons with options
{parallel_login,true} and also {max_sessions, int()>0}.
Full runtime dependencies of ssh-4.11.1.5: crypto-4.6.4, erts-9.0,
kernel-5.3, public_key-1.6.1, stdlib-3.4.1
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 24.2.1
Patch Package: OTP 24.2.1
Git Tag: OTP-24.2.1
Date: 2022-01-25
Trouble Report Id: OTP-17794, OTP-17827, OTP-17829, OTP-17831,
OTP-17871, OTP-17879
Seq num: ERIERL-708, GH-4450, GH-5341, GH-5527,
GH-5624
System: OTP
Release: 24
Application: erts-12.2.1, ssl-10.6.1
Predecessor: OTP 24.2
Check out the git tag OTP-24.2.1, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- erts-12.2.1 -----------------------------------------------------
---------------------------------------------------------------------
The erts-12.2.1 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17827 Application(s): erts
Related Id(s): GH-5527
Fixed a memory leak in file:read_file_info/2 and
file:read_file/1 on Windows.
OTP-17871 Application(s): erts
Related Id(s): PR-5612
Fix GC emulator crash when spawn_request was used when
message tracing was enabled.
Full runtime dependencies of erts-12.2.1: kernel-8.0, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- ssl-10.6.1 ------------------------------------------------------
---------------------------------------------------------------------
Note! The ssl-10.6.1 application *cannot* be applied independently of
other applications on an arbitrary OTP 24 installation.
On a full OTP 24 installation, also the following runtime
dependency has to be satisfied:
-- public_key-1.11.3 (first satisfied in OTP 24.1.2)
--- Fixed Bugs and Malfunctions ---
OTP-17794 Application(s): ssl
Related Id(s): GH-4450, GH-5341
Improve SNI (server name indication) handling so that
protocol version can be selected with regards to SNI.
Also, make sure that ssl:connection_information/1
returns the correct SNI value.
OTP-17829 Application(s): ssl
Related Id(s): ERIERL-708
Fixed cipher suite listing functions so that the
listing of all cipher suites will be complete. Another
fix for cipher suite handling in OTP-24.1 accidentally
excludes a few cipher suites from the listing of all
cipher suites.
OTP-17879 Application(s): ssl
Related Id(s): GH-5624
Reenable legacy cipher suite
TLS_RSA_WITH_3DES_EDE_CBC_SHA for explicit
configuration in TLS-1.2, not supported by default.
--- Improvements and New Features ---
OTP-17831 Application(s): ssl
Avoid unnecessary logs by better adjusting the
tls_sender process to the new supervisor structure in
OTP-24.2
Full runtime dependencies of ssl-10.6.1: crypto-5.0, erts-10.0,
inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1,
stdlib-3.12
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 23.3.4.10
Patch Package: OTP 23.3.4.10
Git Tag: OTP-23.3.4.10
Date: 2021-12-21
Trouble Report Id: OTP-17796, OTP-17827
Seq num: ERIERL-729, GH-5527
System: OTP
Release: 23
Application: erts-11.2.2.9
Predecessor: OTP 23.3.4.9
Check out the git tag OTP-23.3.4.10, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- HIGHLIGHTS ------------------------------------------------------
---------------------------------------------------------------------
OTP-17796 Application(s): erts
Related Id(s): ERIERL-729, PR-5473
Responsiveness of processes executing on normal or low
priority could suffer due to code purging or literal
area removal on systems with a huge amount of
processes. This since during these operations all
processes on the system were scheduled for execution at
once.
This problem has been fixed by introducing a limit on
outstanding purge and copy literal requests in the
system. By default this limit is set to twice the
amount of schedulers on the system. This will ensure
that schedulers will have enough work scheduled to
perform these operations as quickly as possible at the
same time as other work will be interleaved to a much
higher degree. Performance of these operations will
however be somewhat degraded due to the overhead of
enforcing this limit compared to when using a very
large limit.
This limit can be set by passing the +zosrl command
line argument to erl, or by calling
erlang:system_flag(outstanding_system_requests_limit,
NewLimit).
---------------------------------------------------------------------
--- erts-11.2.2.9 ---------------------------------------------------
---------------------------------------------------------------------
The erts-11.2.2.9 application can be applied independently of other
applications on a full OTP 23 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17827 Application(s): erts
Related Id(s): GH-5527
Fixed a memory leak in file:read_file_info/2 and
file:read_file/1 on Windows.
--- Improvements and New Features ---
OTP-17796 Application(s): erts
Related Id(s): ERIERL-729, PR-5473
*** HIGHLIGHT ***
Responsiveness of processes executing on normal or low
priority could suffer due to code purging or literal
area removal on systems with a huge amount of
processes. This since during these operations all
processes on the system were scheduled for execution at
once.
This problem has been fixed by introducing a limit on
outstanding purge and copy literal requests in the
system. By default this limit is set to twice the
amount of schedulers on the system. This will ensure
that schedulers will have enough work scheduled to
perform these operations as quickly as possible at the
same time as other work will be interleaved to a much
higher degree. Performance of these operations will
however be somewhat degraded due to the overhead of
enforcing this limit compared to when using a very
large limit.
This limit can be set by passing the +zosrl command
line argument to erl, or by calling
erlang:system_flag(outstanding_system_requests_limit,
NewLimit).
Full runtime dependencies of erts-11.2.2.9: kernel-7.0, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 22.3.4.24
---------------------------------------------------------------------
--- HIGHLIGHTS ------------------------------------------------------
---------------------------------------------------------------------
OTP-17796 Application(s): erts
Related Id(s): ERIERL-729, PR-5473
Responsiveness of processes executing on normal or low
priority could suffer due to code purging or literal
area removal on systems with a huge amount of
processes. This since during these operations all
processes on the system were scheduled for execution at
once.
This problem has been fixed by introducing a limit on
outstanding purge and copy literal requests in the
system. By default this limit is set to twice the
amount of schedulers on the system. This will ensure
that schedulers will have enough work scheduled to
perform these operations as quickly as possible at the
same time as other work will be interleaved to a much
higher degree. Performance of these operations will
however be somewhat degraded due to the overhead of
enforcing this limit compared to when using a very
large limit.
This limit can be set by passing the +zosrl command
line argument to erl, or by calling
erlang:system_flag(outstanding_system_requests_limit,
NewLimit).
---------------------------------------------------------------------
--- erts-10.7.2.16 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-10.7.2.16 application *cannot* be applied
independently of other applications on an arbitrary OTP 22
installation.
On a full OTP 22 installation, also the following runtime
dependency has to be satisfied:
-- kernel-6.5.1 (first satisfied in OTP 22.2)
OTP 24.2
Erlang/OTP 24.2 is the second maintenance patch release for OTP 24, with mostly
bug fixes as well as a few improvements.
Below are some highlights of the release:
Highlights
-
crypto: The
crypto
app in OTP can now be compiled, linked and
used with the newOpenSSL 3.0
cryptolib. It has not yet been extensively tested,
so only recommended for experiments and alpha testing in this release.
There are not yet any guaranties that it works, not even together with other
OTP applications like for example SSL and SSH, although
there are no known errors. -
erts: An option for enabling dirty scheduler specific
allocator instances has been introduced. By default
such allocator instances are disabled. For more
information see the documentation of the+Mdai
argument
to theerl
command -
erl_docgen, erts: All predefined types have been added to the
erlang
module together with documentation.
Any reference to a predefined type now links to that
documentation so that the user can view it. -
erts: Responsiveness of processes executing on normal or low
priority could suffer due to code purging or literal
area removal on systems with a huge amount of
processes. This since during these operations all
processes on the system were scheduled for execution at
once. The new solution is to limit the number of outstanding
purge and copy requests to 2 times the number of schedulers as default
For more details about the new features and potential incompatibilities see
https://erlang.org/download/OTP-24.2.README
Online documentation can be browsed here:
https://www.erlang.org/docs/24/
The Erlang/OTP source can also be found at GitHub on the official Erlang repository,
https://github.com/erlang/otp
OTP
Patch Package: OTP 24.1.7
Git Tag: OTP-24.1.7
Date: 2021-11-22
Trouble Report Id: OTP-17764
Seq num: ERIERL-726
System: OTP
Release: 24
Application: ssh-4.12.5
Predecessor: OTP 24.1.6
Check out the git tag OTP-24.1.7, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- ssh-4.12.5 ------------------------------------------------------
---------------------------------------------------------------------
The ssh-4.12.5 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17764 Application(s): ssh
Related Id(s): ERIERL-726
Fixed a race condition in the acceptor loop: if a
client disconnected immediately after the tcp connect,
the server could cease handling connection on that
address:port.
Full runtime dependencies of ssh-4.12.5: crypto-5.0, erts-9.0,
kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 24.1.6
Patch Package: OTP 24.1.6
Git Tag: OTP-24.1.6
Date: 2021-11-18
Trouble Report Id: OTP-17756, OTP-17757
Seq num: GH-5352, GH-5383
System: OTP
Release: 24
Application: ssl-10.5.3
Predecessor: OTP 24.1.5
Check out the git tag OTP-24.1.6, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- ssl-10.5.3 ------------------------------------------------------
---------------------------------------------------------------------
Note! The ssl-10.5.3 application *cannot* be applied independently of
other applications on an arbitrary OTP 24 installation.
On a full OTP 24 installation, also the following runtime
dependency has to be satisfied:
-- public_key-1.11.3 (first satisfied in OTP 24.1.2)
--- Fixed Bugs and Malfunctions ---
OTP-17756 Application(s): ssl
Related Id(s): GH-5383, PR-5397
Correct typo of ECC curve name in signature algorithm
handling. Will make the signature algorithm
ecdsa_secp521r1_sha512 succeed.
OTP-17757 Application(s): ssl
Related Id(s): GH-5352, PR-5395
Suppress authenticity warning when option verify_none
is explicitly supplied.
Full runtime dependencies of ssl-10.5.3: crypto-5.0, erts-10.0,
inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1,
stdlib-3.12
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------