Skip to content

Releases: erlang/otp

OTP 23.3.4.14

03 May 07:22
Compare
Choose a tag to compare
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

03 May 07:33
Compare
Choose a tag to compare
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

13 Apr 11:12
Compare
Choose a tag to compare
 ---------------------------------------------------------------------
 --- 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...
Read more

OTP 24.3.3

29 Mar 14:28
Compare
Choose a tag to compare
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

29 Mar 14:44
Compare
Choose a tag to compare
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

29 Mar 15:29
Compare
Choose a tag to compare
 ---------------------------------------------------------------------
 --- 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

24 Mar 11:16
Compare
Choose a tag to compare
OTP 25.0-rc2 Pre-release
Pre-release

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 and groups_from_list/3 in the maps 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) to erlc as well as with directives in the file. Similar options
    can be used to erl for enabling/disabling features
    allowed at runtime. The new maybe expression EEP-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
    and gdb, 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 flag message_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
    functions erlang: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 and unquote/1 functions in
    the uri_string module - a replacement for the deprecated functions http_uri:encode
    and http_uri:decode.

  • The new module peer supersedes the slave 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
    the kernel configuration parameter prevent_overlapping_partitions to false.
    Doing this will retain the same behavior as in OTP 24 and earlier.

  • 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.

  • 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.

Compiler

  • The maybe ... end construction as 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
    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}, where ActualValue 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 by erlang: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 and extra_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, and erlang:raise/3. Because of that, Dialyzer
    can potentially generate new warnings. In particular,
    functions that use erlang:raise/3 could now need a spec
    with a no_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

24 Mar 12:45
Compare
Choose a tag to compare
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 ...
Read more

OTP 24.3.2

16 Mar 18:07
Compare
Choose a tag to compare
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

15 Mar 15:50
Compare
Choose a tag to compare
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


 ---------------------------------------------------------------------
 ---------------------------------------------------------------------
 ---------------------------------------------------------------------