Releases: erlang/otp
OTP 23.3.4.14
Patch Package: OTP 23.3.4.14
Git Tag: OTP-23.3.4.14
Date: 2022-05-03
Trouble Report Id: OTP-17970, OTP-18027, OTP-18065, OTP-18075,
OTP-18076, OTP-18077, OTP-18082
Seq num: ERIERL-802, GH-5876, GH-5908
System: OTP
Release: 23
Application: compiler-7.6.9.2, erts-11.2.2.13
Predecessor: OTP 23.3.4.13
Check out the git tag OTP-23.3.4.14, 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.
---------------------------------------------------------------------
--- compiler-7.6.9.2 ------------------------------------------------
---------------------------------------------------------------------
The compiler-7.6.9.2 application can be applied independently of
other applications on a full OTP 23 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18082 Application(s): compiler
In rare circumstances, the compiler would mistakenly
assume that a call to setelement/3 would always fail
and remove all code following the call.
Full runtime dependencies of compiler-7.6.9.2: crypto-3.6, erts-11.0,
hipe-3.12, kernel-7.0, stdlib-3.13
---------------------------------------------------------------------
--- erts-11.2.2.13 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-11.2.2.13 application *cannot* be applied
independently of other applications on an arbitrary OTP 23
installation.
On a full OTP 23 installation, also the following runtime
dependency has to be satisfied:
-- kernel-7.3.1.5 (first satisfied in OTP 23.3.4.12)
--- Fixed Bugs and Malfunctions ---
OTP-17970 Application(s): erts
Related Id(s): PR-5762
Let EPMD tolerate failure when binding to IPv4/IPv6
loopback intefaces in addition to user-supplied
addresses via ERL_EPMD_ADDRESS or the -address option.
This can happen, for example, if the host system has
ipv6 disabled via the disable_ipv6 sysctl.
OTP-18027 Application(s): erts
Fixed a rare bug in binary_to_term/1,
enif_make_map_from_arrays, erl_drv_send_term, and
Erlang distribution that could crash the emulator.
OTP-18065 Application(s): erts
Related Id(s): GH-5908
Fixed a rare race in persistent_term:get/1,2 that could
cause it to return the value of another key.
OTP-18075 Application(s): erts
Related Id(s): PR-5927
Fix bug where the process message queue was left in an
inconsistent state when changing from on_heap to
off_heap message queue data causing the GC to segfault.
OTP-18076 Application(s): erts
Related Id(s): ERIERL-802, PR-5905
Fix functions that convert universal to localtime (such
as erlang:localtime/0 and
erlang:universaltime_to_localtime/1) to fetch the
correct localtime if it is changed after the start of
the VM.
OTP-18077 Application(s): erts
Related Id(s): GH-5876, PR-5892
Fix memory leak when a process doing a distributed
fragmented send is sent an exit signal. Before this fix
the receiving node would be left with an incomplete
message that would remain until the nodes were
disconnected. The bug has existed since Erlang/OTP 21.
Full runtime dependencies of erts-11.2.2.13: kernel-7.3.1.5,
sasl-3.3, stdlib-3.13
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 22.3.4.26
Patch Package: OTP 22.3.4.26
Git Tag: OTP-22.3.4.26
Date: 2022-05-03
Trouble Report Id: OTP-18075, OTP-18076, OTP-18077
Seq num: ERIERL-802, GH-5876
System: OTP
Release: 22
Application: erts-10.7.2.18
Predecessor: OTP 22.3.4.25
Check out the git tag OTP-22.3.4.26, 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-10.7.2.18 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-10.7.2.18 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.2.5 (first satisfied in OTP 22.3.4.25)
--- Fixed Bugs and Malfunctions ---
OTP-18075 Application(s): erts
Related Id(s): PR-5927
Fix bug where the process message queue was left in an
inconsistent state when changing from on_heap to
off_heap message queue data causing the GC to segfault.
OTP-18076 Application(s): erts
Related Id(s): ERIERL-802, PR-5905
Fix functions that convert universal to localtime (such
as erlang:localtime/0 and
erlang:universaltime_to_localtime/1) to fetch the
correct localtime if it is changed after the start of
the VM.
OTP-18077 Application(s): erts
Related Id(s): GH-5876, PR-5892
Fix memory leak when a process doing a distributed
fragmented send is sent an exit signal. Before this fix
the receiving node would be left with an incomplete
message that would remain until the nodes were
disconnected. The bug has existed since Erlang/OTP 21.
Full runtime dependencies of erts-10.7.2.18: kernel-6.5.2.5,
sasl-3.3, stdlib-3.5
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 25.0-rc3
---------------------------------------------------------------------
--- HIGHLIGHTS ------------------------------------------------------
---------------------------------------------------------------------
OTP-15991 Application(s): erts, stdlib
Related Id(s): PR-5208
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:
https://erlang.org/bench/ets_bench_result_lock_config.html
OTP-16702 Application(s): compiler, erts
To enable more optimizations, BEAM files compiled with
OTP 21 and earlier cannot be loaded in OTP 25.
OTP-16982 Application(s): erts
Related Id(s): PR-5020
The signal queue of a process with
message_queue_data=off_heap* has been optimized to
allow parallel reception of signals from multiple
processes.
This is possible to do as Erlang only guarantees that
signals (i.e., message signals and non-message signals)
sent from a single process to another process are
ordered in send order. However, there are no ordering
guarantees for signals sent from different processes to
a particular process. Therefore, several processes can
send signals in parallel to a specific process without
synchronizing with each other. However, such signal
sending was previously always serialized as the senders
had to acquire the lock for the outer signal queue of
the receiving process. This parallel signal sending
optimization yields much better scalability for signal
sending than what was previously possible, see
https://erlang.org/bench/sigq_bench_result.html for
benchmark results.
* Information about how to enable the
message_queue_data=off_heap setting can be found in the
documentation of the function erlang:process_flag/2.
OTP-17119 Application(s): erts
Related Id(s): PR-4869
The JIT now works for 64-bit ARM processors.
OTP-17151 Application(s): compiler, erts
Related Id(s): ERIERL-590, PR-5479
Added support for the compile attribute -nifs() to
empower compiler and loader with information about
which functions may be overridden as NIFs by
erlang:load_nif/2. It is recommended to use this
attribute in all modules that load NIF libraries.
OTP-17351 Application(s): stdlib
Related Id(s): GH-4673, PR-4952
The format_status/2 callback for gen_server, gen_statem
and gen_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, such
as the last received message, the reason for
terminating and more events specific to each type of
behavior. See the respective modules documentation for
more details.
OTP-17481 Application(s): stdlib
Related Id(s): PR-4811
The timer module has been modernized and made more
efficient, which makes the timer server less
susceptible to being overloaded. The timer:sleep/1
function now accepts an arbitrarily large integer.
OTP-17504 Application(s): compiler, erts
Related Id(s): GH-4971, PR-5281, PR-5752
When binary construction using the binary syntax fails,
the error message printed in the shell and by
erl_error:format_exception/3,4 will contain more
detailed information about what went wrong.
OTP-17684 Application(s): compiler, erts
Related Id(s): PR-5316, PR-5664
The Erlang compiler now includes type information in
BEAM files, and the JIT can now use that type
information to do optimizations such as eliminating or
simplifying type tests.
OTP-17705 Application(s): compiler
Related Id(s): PR-5411
The maybe ... end construction proposed in EEP-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 erlc or add -feature(enable, maybe_expr).
inside the module.
OTP-17710 Application(s): otp
Related Id(s): PR-5597
A new DEVELOPMENT how-to guide has been added that
describes how to build and test Erlang/OTP when fixing
bugs or developing new functionality.
The makefile system has been extended to make it easier
to run tests at different granulates directly from the
command line. This new functionality is described in
the development how-to.
Using the extended makefile system, 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.
OTP-17720 Application(s): common_test, kernel, stdlib
Related Id(s): PR-5162
The new module peer supersedes the slave module. The
slave module is now deprecated and will be removed in
OTP 27.
peer contains an extended and more robust API for
starting erlang nodes.
OTP-17784 Application(s): kernel, stdlib
Related Id(s): PR-5792
In order to make it easier for the user to manage
multiple outstanding asynchronous call requests, new
functionality utilizing request identifier collections
have been introduced in erpc, gen_server, gen_statem,
and gen_event.
OTP-17841 Application(s): compiler, erts
Related Id(s): PR-5694
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}, where ActualValue is the
actual that was found instead of the expected record.
OTP-17911 Application(s): kernel
Related Id(s): OTP-17843, PR-5611, PR-5687
*** POTENTIAL INCOMPATIBILITY ***
As of OTP 25, global will by default prevent
overlapping partitions due to network issues 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.
Prevention of overlapping partitions can be disabled
using the prevent_overlapping_partitions kernel(6)
parameter, making global behave like it used to do.
This is, however, 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. Since you
might get hard to detect issues without this fix, you
are strongly advised not to disable this fix. Also note
that this fix has to be enabled on all nodes in the
network in order to work properly.
OTP-17953 Application(s): stdlib
Related Id(s): PR-5621
Added filelib:ensure_path/1 that ensures that all
directories for the given path exists (unlike
filelib:ensure_dir/1, which will not create the last
segment of the path).
OTP-17969 Application(s): stdlib
Related Id(s): PR-5588
The functions groups_from_list/2 and groups_from_list/3
have been added to the maps module.
OTP-17977 Application(s): stdlib
Related Id(s): GH-5606, PR-5766
The functions uniq/1 and uniq/2 for removing duplicates
have been added to the lists module.
OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools
Added support for selectable features as described in
EEP-60. Features can be enabled/disabled during
compilation with options (ordinary and +term) to erlc
as we...
OTP 24.3.3
Patch Package: OTP 24.3.3
Git Tag: OTP-24.3.3
Date: 2022-03-29
Trouble Report Id: OTP-17973, OTP-17978, OTP-17982, OTP-17987,
OTP-17989, OTP-17993, OTP-17994, OTP-17995,
OTP-17998
Seq num: ERIERL-767, ERIERL-772, GH-5554, GH-5758,
GH-5781
System: OTP
Release: 24
Application: erl_interface-5.2.2, erts-12.3.1, ftp-1.1.1,
mnesia-4.20.3, observer-2.11.1, ssl-10.7.2,
wx-2.1.3
Predecessor: OTP 24.3.2
Check out the git tag OTP-24.3.3, 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.
---------------------------------------------------------------------
--- erl_interface-5.2.2 ---------------------------------------------
---------------------------------------------------------------------
The erl_interface-5.2.2 application can be applied independently of
other applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17987 Application(s): erl_interface
Related Id(s): GH-5781, PR-5787
Avoid attempt build dynamic libs if config option
--enable-ei-dynamic-lib is not given.
---------------------------------------------------------------------
--- erts-12.3.1 -----------------------------------------------------
---------------------------------------------------------------------
Note! The erts-12.3.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:
-- kernel-8.3 (first satisfied in OTP 24.3)
--- Fixed Bugs and Malfunctions ---
OTP-17978 Application(s): erts
Related Id(s): OTP-17958
erlang:open_port({spawn, _},_) has been fixed on
Windows to handle whitespace characters in the path
correctly.
This could, for example, cause execution of the
resolver helper program inet_gethost to fail and
instead possibly execute a different program.
OTP-17993 Application(s): erts
Related Id(s): PR-5806
Fix race condition when creating crash dump that could
cause multiple threads to race when writing the initial
information in a crash dump.
The race condition was introduced in erts-12.2
(Erlang/OTP 24.2).
OTP-17998 Application(s): erts
Related Id(s): GH-5554, PR-5825
Fix Erlang monotonic time on MacOS. Previously used OS
monotonic time primitive on MacOS is buggy and will not
be used anymore. It has been replaced with usage of
another OS monotonic time primitive that does not
appear to be buggy.
Full runtime dependencies of erts-12.3.1: kernel-8.3, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- ftp-1.1.1 -------------------------------------------------------
---------------------------------------------------------------------
The ftp-1.1.1 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17989 Application(s): ftp
Related Id(s): ERIERL-767
An unexpected timeout message on the FTP control
channel was observed in a real system and could not be
associated with anything that was expected to happen,
so we will ignore but info log such unexpected
messages.
Full runtime dependencies of ftp-1.1.1: erts-7.0, kernel-6.0,
runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
---------------------------------------------------------------------
--- mnesia-4.20.3 ---------------------------------------------------
---------------------------------------------------------------------
The mnesia-4.20.3 application can be applied independently of other
applications on a full OTP 24 installation.
--- Improvements and New Features ---
OTP-17973 Application(s): mnesia
Related Id(s): ERIERL-772
Optimize locker to handle many read locks on the same
record.
Full runtime dependencies of mnesia-4.20.3: erts-9.0, kernel-5.3,
stdlib-3.4
---------------------------------------------------------------------
--- observer-2.11.1 -------------------------------------------------
---------------------------------------------------------------------
Note! The observer-2.11.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
dependencies have to be satisfied:
-- kernel-8.1 (first satisfied in OTP 24.1)
-- runtime_tools-1.17 (first satisfied in OTP 24.1)
--- Fixed Bugs and Malfunctions ---
OTP-17995 Application(s): observer
Related Id(s): PR-5804
Fixed node information lookup for remote process
identifiers in crashdump_viewer.
Full runtime dependencies of observer-2.11.1: erts-11.0, et-1.5,
kernel-8.1, runtime_tools-1.17, stdlib-3.13, wx-1.2
---------------------------------------------------------------------
--- ssl-10.7.2 ------------------------------------------------------
---------------------------------------------------------------------
Note! The ssl-10.7.2 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-17994 Application(s): ssl
With this change, potential hanging of pre TLS1.3
client receiving OSCP staple message is avoided.
Full runtime dependencies of ssl-10.7.2: 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
---------------------------------------------------------------------
--- wx-2.1.3 --------------------------------------------------------
---------------------------------------------------------------------
The wx-2.1.3 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17982 Application(s): wx
Related Id(s): GH-5758
Fixed a bug in callback handling which could lead to a
unresponsive gui.
Full runtime dependencies of wx-2.1.3: erts-6.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 23.3.4.13
Patch Package: OTP 23.3.4.13
Git Tag: OTP-23.3.4.13
Date: 2022-03-29
Trouble Report Id: OTP-17998
Seq num: GH-5554
System: OTP
Release: 23
Application: erts-11.2.2.12
Predecessor: OTP 23.3.4.12
Check out the git tag OTP-23.3.4.13, 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.12 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-11.2.2.12 application *cannot* be applied
independently of other applications on an arbitrary OTP 23
installation.
On a full OTP 23 installation, also the following runtime
dependency has to be satisfied:
-- kernel-7.3.1.5 (first satisfied in OTP 23.3.4.12)
--- Fixed Bugs and Malfunctions ---
OTP-17998 Application(s): erts
Related Id(s): GH-5554, PR-5825
Fix Erlang monotonic time on MacOS. Previously used OS
monotonic time primitive on MacOS is buggy and will not
be used anymore. It has been replaced with usage of
another OS monotonic time primitive that does not
appear to be buggy.
Full runtime dependencies of erts-11.2.2.12: kernel-7.3.1.5,
sasl-3.3, stdlib-3.13
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 22.3.4.25
---------------------------------------------------------------------
--- HIGHLIGHTS ------------------------------------------------------
---------------------------------------------------------------------
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.
---------------------------------------------------------------------
--- common_test-1.18.2.2 --------------------------------------------
---------------------------------------------------------------------
The common_test-1.18.2.2 application can be applied independently of
other applications on a full OTP 22 installation.
OTP 25.0-rc2
Erlang/OTP 25-rc2 is the second 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-rc2/doc/.
You can also install the latest release using kerl like this: kerl build 25.0-rc2 25.0-rc2
.
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 rc2
stdlib
- New function
filelib:ensure_path/1
will ensure that all directories for the given path exists - New functions
groups_from_list/2
andgroups_from_list/3
in themaps
module - New functions
uniq/1
uniq/2
in the lists module
compiler, kernel, stdlib, syntax_tools
- Added support for selectable features as described in
EEP-60
. Features can be enabled/disabled during compilation with options (ordinary and +term) toerlc
as well as with directives in the file. Similar options
can be used toerl
for enabling/disabling features
allowed at runtime. The newmaybe
expressionEEP-49
is fully supported as the feature maybe_expr.
Highlights rc1
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.12
Patch Package: OTP 23.3.4.12
Git Tag: OTP-23.3.4.12
Date: 2022-03-24
Trouble Report Id: OTP-17843, OTP-17887, OTP-17888, OTP-17904,
OTP-17905, OTP-17979
Seq num: ERIERL-732, ERIERL-750, ERIERL-757,
ERIERL-780
System: OTP
Release: 23
Application: common_test-1.20.2.3, erts-11.2.2.11,
jinterface-1.11.1.1, kernel-7.3.1.5
Predecessor: OTP 23.3.4.11
Check out the git tag OTP-23.3.4.12, 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-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.
---------------------------------------------------------------------
--- common_test-1.20.2.3 --------------------------------------------
---------------------------------------------------------------------
The common_test-1.20.2.3 application can be applied independently of
other applications on a full OTP 23 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17888 Application(s): common_test
OTP internal test fix.
Full runtime dependencies of common_test-1.20.2.3: compiler-6.0,
crypto-3.6, debugger-4.1, erts-7.0, ftp-1.0.0, inets-6.0, kernel-4.0,
observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0,
stdlib-3.5, syntax_tools-1.7, tools-2.8, xmerl-1.3.8
---------------------------------------------------------------------
--- erts-11.2.2.11 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-11.2.2.11 application *cannot* be applied
independently of other applications on an arbitrary OTP 23
installation.
On a full OTP 23 installation, also the following runtime
dependency has to be satisfied:
-- kernel-7.3.1.5 (first satisfied in OTP 23.3.4.12)
--- Fixed Bugs and Malfunctions ---
OTP-17843 Application(s): erts, kernel
Related Id(s): ERIERL-732, PR-5611
*** HIGHLIGHT ***
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.
OTP-17904 Application(s): erts
Related Id(s): ERIERL-757
Fix memory leak when tracing on running on a process
that only handle system tasks or non-message signals
(for example process_info requests).
Full runtime dependencies of erts-11.2.2.11: kernel-7.3.1.5,
sasl-3.3, stdlib-3.13
---------------------------------------------------------------------
--- jinterface-1.11.1.1 ---------------------------------------------
---------------------------------------------------------------------
The jinterface-1.11.1.1 application can be applied independently of
other applications on a full OTP 23 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17887 Application(s): jinterface
Related Id(s): ERIERL-750, PR-5640
Fix bug in OtpOutputStream.write_pid/4 and write_ref/3
causing faulty encodig. Bug exists since OTP 23.0.
---------------------------------------------------------------------
--- kernel-7.3.1.5 --------------------------------------------------
---------------------------------------------------------------------
Note! The kernel-7.3.1.5 application *cannot* be applied
independently of other applications on an arbitrary OTP 23
installation.
On a full OTP 23 installation, also the following runtime
dependency has to be satisfied:
-- erts-11.2.2.11 (first satisfied in OTP 23.3.4.12)
--- Fixed Bugs and Malfunctions ---
OTP-17843 Application(s): erts, kernel
Related Id(s): ERIERL-732, PR-5611
*** HIGHLIGHT ***
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 ...
OTP 24.3.2
Patch Package: OTP 24.3.2
Git Tag: OTP-24.3.2
Date: 2022-03-16
Trouble Report Id: OTP-17975, OTP-17979, OTP-17981
Seq num: ERIERL-780
System: OTP
Release: 24
Application: erl_interface-5.2.1, kernel-8.3.1
Predecessor: OTP 24.3.1
Check out the git tag OTP-24.3.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.
---------------------------------------------------------------------
--- erl_interface-5.2.1 ---------------------------------------------
---------------------------------------------------------------------
The erl_interface-5.2.1 application can be applied independently of
other applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17975 Application(s): erl_interface
Related Id(s): PR-5763
Fix compile error regarding gethostbyaddr_r on Android.
Error introduced in OTP 24.3.
---------------------------------------------------------------------
--- kernel-8.3.1 ----------------------------------------------------
---------------------------------------------------------------------
Note! The kernel-8.3.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:
-- erts-12.3 (first satisfied in OTP 24.3)
--- Fixed Bugs and Malfunctions ---
OTP-17979 Application(s): kernel
Related Id(s): ERIERL-780
Fix failed accepted connection setup after previous
established connection from same node closed down
silently.
OTP-17981 Application(s): kernel
Related Id(s): PR-5791
Fixed a problem where typing Ctrl-R in the shell could
hang if there were some problem with the history log
file.
Full runtime dependencies of kernel-8.3.1: crypto-5.0, erts-12.3,
sasl-3.0, stdlib-3.13
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 24.3.1
Patch Package: OTP 24.3.1
Git Tag: OTP-24.3.1
Date: 2022-03-15
Trouble Report Id: OTP-17963, OTP-17971
Seq num: GH-5764, GH-5783
System: OTP
Release: 24
Application: dialyzer-4.4.4, ssl-10.7.1
Predecessor: OTP 24.3
Check out the git tag OTP-24.3.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.
---------------------------------------------------------------------
--- dialyzer-4.4.4 --------------------------------------------------
---------------------------------------------------------------------
The dialyzer-4.4.4 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-17963 Application(s): dialyzer
Related Id(s): GH-5764
There could be spurious warnings for unknown types when
a type was a subtype of an existing type that was a
subtype of an unknown type.
Full runtime dependencies of dialyzer-4.4.4: compiler-7.0, erts-9.0,
kernel-5.3, stdlib-3.4, syntax_tools-2.0, wx-1.2
---------------------------------------------------------------------
--- ssl-10.7.1 ------------------------------------------------------
---------------------------------------------------------------------
Note! The ssl-10.7.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-17971 Application(s): ssl
Related Id(s): GH-5783
Client certification could fail for TLS-1.3 servers
that did not include the certificat_authorties
extension in its certificate request message.
Full runtime dependencies of ssl-10.7.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
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------