Skip to content

Releases: erlang/otp

OTP 26.0

16 May 08:49
Compare
Choose a tag to compare

Erlang/OTP 26.0 is a new major release with new features, improvements as well as a few incompatibilities.

Below are some of the highlights of the release:

There is also a Blogpost about the highlights.

Highlights

Parsetools

  • Leex has been extended with optional column number support.

Stdlib

  • The family of enumeration functions in module lists has been extended with enumerate/3 that allows a step value to be supplied.
  • Update Unicode to version 15.0.0.
  • proc_lib:start*/* has become synchronous when the started process fails. This requires that a failing process use a new function proc_lib:init_fail/2,3, or exits, to indicate failure. All OTP behaviours have been fixed to do this.

The Shell

There are a lot of new features and improvements in the Erlang shell:

  • auto-complete of variables, record names, record fields names, map keys, function parameter types and filenames.
  • Open external editor in the shell to edit the current expression.
  • defining records (with types), functions, specs and types in the shell.

New terminal

  • The TTY/terminal subsystem has been rewritten. Windows users will notice that erl.exe has the same functionality as a normal Unix shell and that werl.exe is just a symlink to erl.exe. This makes the Windows Erlang terminal experience identical to that of Unix.

Compiler and JIT optimizations:

  • Creation and matching of binaries with segments of fixed sizes have been optimized.

  • Creation and matching of UTF-8 segments have been optimized.

  • Appending to binaries has been optimized.

  • The compiler and JIT now generate better code for creation of small maps where all keys are literals known at compile time.

  • Thanks to the optimizations above the performance of the base64 module has been significantly improved. For example, on an x86_64 system with the JIT both encode and decode are almost three times faster than in Erlang/OTP 25.

Maps

  • Map comprehensions as suggested in EEP 58 has now been implemented.

  • Some map operations have been optimized by changing the internal sort order of atom keys.
    This changes the (undocumented) order of how atom keys in small maps are printed and returned by maps:to_list/1 and maps:next/1. The new order is unpredictable and may change between different invocations of the Erlang VM.

  • Introducing the new function maps:iterator/2 for creating an interator that return the map elements in a deterministic order.
    There are also new modifiers k and K for the format string in io:format() to support printing map elements ordered.

Dialyzer

  • Added the new built-in type dynamic() introduced in EEP 61, PR introducing EEP 61 improving support for gradual type checkers.

  • Dialyzer has a new incremental mode that be invoked by giving the --incremental option when running Dialyzer.
    This new incremental mode is likely to become the default in a future release.

Misc ERTS, Stdlib, Kernel, Compiler

  • Multi time warp mode is now enabled by default.
    This assumes that all code executing on the system is time warp safe.

  • Support for UTF-8 atoms and strings in the NIF
    interface including new functions enif_make_new_atom, enif_make_new_atom_len and enif_get_string_length.

  • The BIFs min/2 and max/2 are now allowed to be used in guards and match specs.

  • Improved the selective receive optimization, which can now be enabled for references returned from other
    functions. This greatly improves the performance of gen_server:send_request/3, gen_server:wait_response/2, and similar functions.

  • New trace feature call_memory. Similar to call_time tracing, but instead of measure accumulated time in traced functions it measures accumulated heap space consumed by traced functions. It can be used to compare how much different functions are contributing to garbage collection being triggered.

  • It is no longer necessary to enable a feature in the runtime system in order to load modules that are using it.
    It is sufficient to enable the feature in the compiler when compiling it.

  • inet:setopts/2 has got 3 new options: reuseport, reuseport_lb and exclusiveaddruse.

  • Fix so that -fno-omit-frame-pointer is applied to all of the Erlang VM when using the JIT so that tools, such as perf, can crawl the process stacks.

  • In the lists module, the zip family of functions now takes options to allow handling lists of different lengths.

  • Added the zip:zip_get_crc32/2 function to retrieve the CRC32 checksum from an opened ZIP archive.
    gen_server optimized by caching callback functions

  • The modules Erlang DNS resolver inet_res and helper modules have been updated for RFC6891; to handle OPT RR with DNSSEC OK (DO) bit.

  • Introduced application:get_supervisor/1.

  • Cache OTP boot code paths, to limit how many folders that are being accessed during a module lookup. Can be disabled with -cache_boot_path false.

SSL

  • Change the client default verify option to verify_peer.
    Note that this makes it mandatory to also supply trusted CA certificates or explicitly set verify to verify_none. This also applies when using the so called anonymous test cipher suites defined in TLS versions pre TLS-1.3.

  • Support for Kernel TLS (kTLS), has been added to the SSL application, for TLS distribution (-proto_dist inet_tls), the SSL option {ktls, true}.

  • Improved error checking and handling of ssl options.

  • Mitigate memory usage from large certificate chains by lowering the maximum handshake size. This should not effect the common cases, if needed it can be configured to a higher value.

  • For security reasons the SHA1 and DSA algorithms are no longer among the default values.

  • Add encoding and decoding of use_srtp hello extension to facilitate for DTLS users to implement SRTP functionality.

For more details about new features and potential incompatibilities see the readme

Many thanks to all contributors!

OTP 25.3.2

05 May 11:05
Compare
Choose a tag to compare
=== OTP-25.3.2 ===

Changed Applications:
- compiler-8.2.6
- erts-13.2.2
- os_mon-2.8.2

Unchanged Applications:
- asn1-5.0.21
- common_test-1.24
- crypto-5.1.4
- debugger-5.3.1
- dialyzer-5.0.5
- diameter-2.2.7
- edoc-1.2
- eldap-1.2.11
- erl_docgen-1.4
- erl_interface-5.3.2
- et-1.6.5
- eunit-2.8.2
- ftp-1.1.4
- inets-8.3.1
- jinterface-1.13.2
- kernel-8.5.4
- megaco-4.4.3
- mnesia-4.21.4
- observer-2.14
- odbc-2.14
- parsetools-2.4.1
- public_key-1.13.3
- reltool-0.9.1
- runtime_tools-1.19
- sasl-4.2
- snmp-5.13.5
- ssh-4.15.3
- ssl-10.9.1
- stdlib-4.3.1
- syntax_tools-3.0.1
- tftp-1.0.4
- tools-3.5.3
- wx-2.2.2
- xmerl-1.3.31

OTP 25.3.1

27 Apr 09:12
Compare
Choose a tag to compare
Patch Package:           OTP 25.3.1
Git Tag:                 OTP-25.3.1
Date:                    2023-04-27
Trouble Report Id:       OTP-18422, OTP-18480, OTP-18489, OTP-18497,
                         OTP-18506, OTP-18509, OTP-18512, OTP-18516,
                         OTP-18519, OTP-18525, OTP-18545, OTP-18550,
                         OTP-18553, OTP-18554, OTP-18555, OTP-18557,
                         OTP-18560, OTP-18563
Seq num:                 ERIERL-873, ERIERL-928, ERIERL-937, GH-6956,
                         GH-6960, GH-6969, GH-7024, GH-7114
System:                  OTP
Release:                 25
Application:             compiler-8.2.5, crypto-5.1.4, eldap-1.2.11,
                         erl_interface-5.3.2, erts-13.2.1,
                         inets-8.3.1, snmp-5.13.5, ssl-10.9.1,
                         stdlib-4.3.1, wx-2.2.2
Predecessor:             OTP 25.3

 Check out the git tag OTP-25.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.

 ---------------------------------------------------------------------
 --- compiler-8.2.5 --------------------------------------------------
 ---------------------------------------------------------------------

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

 --- Fixed Bugs and Malfunctions ---

  OTP-18497    Application(s): compiler
               Related Id(s): GH-6960, PR-6965

               When a map update such as #{}#{key:=value} that should
               fail with an exception was unused, the exception would
               be lost.


  OTP-18516    Application(s): compiler
               Related Id(s): GH-6969

               Fixed bug in the validator that made it reject valid
               code.


 Full runtime dependencies of compiler-8.2.5: crypto-5.1, erts-13.0,
 kernel-8.4, stdlib-4.0


 ---------------------------------------------------------------------
 --- crypto-5.1.4 ----------------------------------------------------
 ---------------------------------------------------------------------

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

 --- Fixed Bugs and Malfunctions ---

  OTP-18555    Application(s): crypto

               With this change, random errors are fixed for
               crypto:generate_key calls with OpenSSL 3.


 Full runtime dependencies of crypto-5.1.4: erts-9.0, kernel-5.3,
 stdlib-3.9


 ---------------------------------------------------------------------
 --- eldap-1.2.11 ----------------------------------------------------
 ---------------------------------------------------------------------

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

 --- Improvements and New Features ---

  OTP-18480    Application(s): eldap

               Added a new function eldap:info/1 that returns the
               socket and the transport protocol for the eldap
               connection.


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


 ---------------------------------------------------------------------
 --- erl_interface-5.3.2 ---------------------------------------------
 ---------------------------------------------------------------------

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

 --- Fixed Bugs and Malfunctions ---

  OTP-18554    Application(s): erl_interface, erts

               Fixed configure tests for a few ARM-specific
               instructions, which prevented the emulator from being
               built on some platforms.


 ---------------------------------------------------------------------
 --- erts-13.2.1 -----------------------------------------------------
 ---------------------------------------------------------------------

 Note! The erts-13.2.1 application *cannot* be applied independently
       of other applications on an arbitrary OTP 25 installation.

       On a full OTP 25 installation, also the following runtime
       dependencies have to be satisfied:
       -- kernel-8.5 (first satisfied in OTP 25.1)
       -- stdlib-4.1 (first satisfied in OTP 25.1)


 --- Fixed Bugs and Malfunctions ---

  OTP-18519    Application(s): erts
               Related Id(s): GH-7024

               Fixed a bug in the loader that prevented certain
               modules compiled with no_ssa_opt from being loaded.


  OTP-18525    Application(s): erts
               Related Id(s): PR-7049

               Implementations of the call() driver callback that
               returned a faulty encoded result could cause a memory
               leak and could cause invalid data on the heap of the
               processes calling erlang:port_call/3.


  OTP-18553    Application(s): erts

               Fixed a memory corruption issue when upgrading code.
               The bug was introduced in OTP 25.3


  OTP-18554    Application(s): erl_interface, erts

               Fixed configure tests for a few ARM-specific
               instructions, which prevented the emulator from being
               built on some platforms.


  OTP-18557    Application(s): erts
               Related Id(s): OTP-18496, PR-7131

               Aliases created in combination with a monitor using the
               {alias, explicit_unalias} option stopped working from
               remote nodes when a 'DOWN' signal had been received due
               to the monitor or if the monitor was removed using the
               erlang:demonitor() BIF.

               This bug was introduced in OTP 24.3.4.10 and OTP 25.3.


  OTP-18560    Application(s): erts

               In rare circumstances, bit syntax matching of an
               invalid code point for a utf32 would crash the runtime
               system.


  OTP-18563    Application(s): erts
               Related Id(s): GH-7114, PR-7159

               Building the runtime system failed when native atomic
               support was missing. Note that execution on such
               systems have only been rudimentary tested.


 Full runtime dependencies of erts-13.2.1: kernel-8.5, sasl-3.3,
 stdlib-4.1


 ---------------------------------------------------------------------
 --- inets-8.3.1 -----------------------------------------------------
 ---------------------------------------------------------------------

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

 --- Fixed Bugs and Malfunctions ---

  OTP-18509    Application(s): inets
               Related Id(s): OTP-18476

               Correct timing related pipelining/keepalive queue bug,
               that could result in unexpected "socket_remotly_closed"
               errors.


  OTP-18545    Application(s): inets
               Related Id(s): ERIERL-928, ERIERL-937, OTP-18509

               With this change, upon remote socket closure current
               request is added to a retried queue (either pipeline or
               keep_alive, but not both).


 Full runtime dependencies of inets-8.3.1: erts-6.0, kernel-6.0,
 mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0,
 stdlib-4.0


 ---------------------------------------------------------------------
 --- snmp-5.13.5 -----------------------------------------------------
 ---------------------------------------------------------------------

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

 --- Improvements and New Features ---

  OTP-18422    Application(s): snmp
               Related Id(s): ERIERL-873

               Attempts to minimize the number of the error reports
               during a failed agent init.


 Full runtime dependencies of snmp-5.13.5: crypto-4.6, erts-12.0,
 kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5


 ---------------------------------------------------------------------
 --- ssl-10.9.1 ------------------------------------------------------
 ---------------------------------------------------------------------

 Note! The ssl-10.9.1 application *cannot* be applied independently of
       other applications on an arbitrary OTP 25 installation.

       On a full OTP 25 installation, also the following runtime
       dependency has to be satisfied:
       -- stdlib-4.1 (first satisfied in OTP 25.1)


 --- Fixed Bugs and Malfunctions ---

  OTP-18489    Application(s): ssl

               With this change, ssl:connection_information/2 returns
               correct keylog data after TLS1.3 key update.


  OTP-18550    Application(s): ssl

               Client signature algorithm list input order is now
               honored again , it was accidently reversed by a
               previous fix.


 Full runtime dependencies of ssl-10.9.1: crypto-5.0, erts-10.0,
 inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1,
 stdlib-4.1


 ---------------------------------------------------------------------
 --- stdlib-4.3.1 ----------------------------------------------------
 ---------------------------------------------------------------------

 Note! The stdlib-4.3.1 application *cannot* be applied independently
       of other applications on an arbitrary OTP 25 installation.

       On a full OTP 25 installation, also the following runtime
       dependencies have to be satisfied:
       -- erts-13.1 (first satisfied in OTP 25.1)
       -- kernel-8.5.1 (first satisfied in OTP 25.1.1)


 --- Fixed Bugs and Malfunctions ---

  OTP-18506    Application(s): stdlib
               Related Id(s): GH-6956

               The type specs in the erl_pa...

OTP 24.3.4.11

21 Apr 09:57
Compare
Choose a tag to compare
=== OTP-24.3.4.11 ===

Changed Applications:
- erts-12.3.2.11
- inets-7.5.3.4
- ssl-10.7.3.7

Unchanged Applications:
- asn1-5.0.18.1
- common_test-1.22.1.1
- compiler-8.1.1.3
- crypto-5.0.6.3
- debugger-5.2.1
- dialyzer-4.4.4.1
- diameter-2.2.5
- edoc-1.1
- eldap-1.2.10
- erl_docgen-1.2.1
- erl_interface-5.2.2
- et-1.6.5
- eunit-2.7
- ftp-1.1.1
- jinterface-1.12.2
- kernel-8.3.2.3
- megaco-4.3
- mnesia-4.20.4.2
- observer-2.11.1
- odbc-2.13.5
- os_mon-2.7.1
- parsetools-2.3.2
- public_key-1.12.0.1
- reltool-0.9
- runtime_tools-1.18
- sasl-4.1.2
- snmp-5.12.0.3
- ssh-4.13.2.2
- stdlib-3.17.2.2
- syntax_tools-2.6
- tftp-1.0.3
- tools-3.5.2
- wx-2.1.4
- xmerl-1.3.28

OTP 26.0-rc3

12 Apr 09:56
Compare
Choose a tag to compare
OTP 26.0-rc3 Pre-release
Pre-release

Erlang/OTP 26.0-rc3 is the third and final release candidate before the OTP 26.0 release.
This release candidate fixes some bugs found in the first two release candidates.

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.

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-14.0-rc3/doc/. You can also install the latest release using kerl like this: kerl build 26.0-rc3 26.0-rc3.

Erlang/OTP 26 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

Parsetools

  • Leex has been extended with optional column number support.

Stdlib

  • The family of enumeration functions in module lists has been extended with
    enumerate/3 that allows a step value to be supplied.
  • Update Unicode to version 15.0.0.
  • proc_lib:start*/* has become synchronous when the
    started process fails. This requires that a failing
    process use a new function proc_lib:init_fail/2,3, or
    exits, to indicate failure. All OTP behaviours have
    been fixed to do this.

Dialyzer

SSL

  • Change the client default verify option to verify_peer.
    Note that this makes it mandatory to also supply trusted CA certificates or explicitly set
    verify to verify_none. This also applies when using the so called
    anonymous test cipher suites defined in TLS versions pre TLS-1.3.

Highlights RC1

The Shell

There are a lot of new features and improvements in the Erlang shell:

  • auto-complete of variables, record names, record fields names, map keys, function parameter types and filenames.
  • Open external editor in the shell to edit
    the current expression.
  • defining records (with types), functions, specs and types in the shell.

New terminal

  • The TTY/terminal subsystem has been rewritten.
    Windows users will notice that erl.exe has the same
    functionality as a normal Unix shell and that werl.exe is just a
    symlink to erl.exe. This makes the Windows Erlang terminal
    experience identical to that of Unix.

Compiler and JIT optimizations:

  • Creation and matching of binaries with segments of fixed sizes have been optimized.

  • Creation and matching of UTF-8 segments have been optimized.

  • Appending to binaries has been optimized.

  • The compiler and JIT now generate better code for creation of small maps where all keys
    are literals known at compile time.

  • Thanks to the optimizations above the performance of the base64 module has been
    significantly improved. For example, on an x86_64 system with the JIT both encode and
    decode are almost three times faster than in Erlang/OTP 25.

Maps

  • Map comprehensions as suggested in EEP 58 has now been
    implemented.

  • Some map operations have been optimized by changing the
    internal sort order of atom keys. This changes the
    (undocumented) order of how atom keys in small maps are
    printed and returned by maps:to_list/1 and maps:next/1.
    The new order is unpredictable and may change between
    different invocations of the Erlang VM.

  • Introducing the new function maps:iterator/2 for creating an interator
    that return the map elements in a deterministic order.
    There are also new modifiers k and K for the format
    string in io:format() to support printing map elements
    ordered.

Dialyzer

  • Dialyzer has a new incremental mode that be invoked by
    giving the --incremental option when running Dialyzer.
    This new incremental mode is likely to become the
    default in a future release.

Misc ERTS, Stdlib, Kernel, Compiler

  • Multi time warp mode is now enabled by default.
    This assumes that all code executing on the system is
    time warp safe.

  • Support for UTF-8 atoms and strings in the NIF
    interface including new functions enif_make_new_atom,
    enif_make_new_atom_len and enif_get_string_length.

  • The BIFs min/2 and max/2 are now allowed to be used in
    guards and match specs.

  • Improved the selective receive optimization, which can
    now be enabled for references returned from other
    functions. This greatly improves the performance of
    gen_server:send_request/3, gen_server:wait_response/2,
    and similar functions.

  • New trace feature call_memory. Similar to call_time
    tracing, but instead of measure accumulated time in
    traced functions it measures accumulated heap space
    consumed by traced functions. It can be used to compare
    how much different functions are contributing to
    garbage collection being triggered.

  • It is no longer necessary to enable a feature in the
    runtime system in order to load modules that are using
    it. It is sufficient to enable the feature in the
    compiler when compiling it.

  • inet:setopts/2 has got 3 new options: reuseport, reuseport_lb and exclusiveaddruse.

  • Fix so that -fno-omit-frame-pointer is applied to all
    of the Erlang VM when using the JIT so that tools, such
    as perf, can crawl the process stacks.

  • In the lists module, the zip family of functions now takes
    options to allow handling lists of different lengths.

  • Added the zip:zip_get_crc32/2 function to retrieve the
    CRC32 checksum from an opened ZIP archive.
    gen_server optimized by caching callback functions

  • The modules Erlang DNS resolver inet_res and helper
    modules have been updated for RFC6891; to handle OPT RR
    with DNSSEC OK (DO) bit.

  • Introduced application:get_supervisor/1.

  • Cache OTP boot code paths, to limit how many folders
    that are being accessed during a module lookup. Can be
    disabled with -cache_boot_path false.

SSL

  • Support for Kernel TLS (kTLS), has been added to the
    SSL application, for TLS distribution (-proto_dist
    inet_tls), the SSL option {ktls, true}.

  • Improved error checking and handling of ssl options.

  • Mitigate memory usage from large certificate chains by
    lowering the maximum handshake size. This should not
    effect the common cases, if needed it can be configured
    to a higher value.

  • For security reasons the SHA1 and DSA
    algorithms are no longer among the default values.

  • Add encoding and decoding of use_srtp hello extension
    to facilitate for DTLS users to implement SRTP
    functionality.

For more details about new features and potential incompatibilities see the readme

OTP 26.0-rc2

22 Mar 10:06
Compare
Choose a tag to compare
OTP 26.0-rc2 Pre-release
Pre-release

Erlang/OTP 26.0-rc2 is the second release candidate of three before the OTP 26.0 release. The release candidate 2 fixes some bugs found in the first release candidate and there are also a few additional features.

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.

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-14.0-rc2/doc/. You can also install the latest release using kerl like this: kerl build 26.0-rc2 26.0-rc2.

Erlang/OTP 26 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

Parsetools

  • Leex has been extended with optional column number support.

Stdlib

  • The family of enumeration functions in module lists has been extended with
    enumerate/3 that allows a step value to be supplied.
  • Update Unicode to version 15.0.0.
  • proc_lib:start*/* has become synchronous when the
    started process fails. This requires that a failing
    process use a new function proc_lib:init_fail/2,3, or
    exits, to indicate failure. All OTP behaviours have
    been fixed to do this.

Dialyzer

SSL

  • Change the client default verify option to verify_peer.
    Note that this makes it mandatory to also supply trusted CA certificates or explicitly set
    verify to verify_none. This also applies when using the so called
    anonymous test cipher suites defined in TLS versions pre TLS-1.3.

Highlights RC1

The Shell

There are a lot of new features and improvements in the Erlang shell:

  • auto-complete of variables, record names, record fields names, map keys, function parameter types and filenames.
  • Open external editor in the shell to edit
    the current expression.
  • defining records (with types), functions, specs and types in the shell.

New terminal

  • The TTY/terminal subsystem has been rewritten.
    Windows users will notice that erl.exe has the same
    functionality as a normal Unix shell and that werl.exe is just a
    symlink to erl.exe. This makes the Windows Erlang terminal
    experience identical to that of Unix.

Compiler and JIT optimizations:

  • Creation and matching of binaries with segments of fixed sizes have been optimized.

  • Creation and matching of UTF-8 segments have been optimized.

  • Appending to binaries has been optimized.

  • The compiler and JIT now generate better code for creation of small maps where all keys
    are literals known at compile time.

  • Thanks to the optimizations above the performance of the base64 module has been
    significantly improved. For example, on an x86_64 system with the JIT both encode and
    decode are almost three times faster than in Erlang/OTP 25.

Maps

  • Map comprehensions as suggested in EEP 58 has now been
    implemented.

  • Some map operations have been optimized by changing the
    internal sort order of atom keys. This changes the
    (undocumented) order of how atom keys in small maps are
    printed and returned by maps:to_list/1 and maps:next/1.
    The new order is unpredictable and may change between
    different invocations of the Erlang VM.

  • Introducing the new function maps:iterator/2 for creating an interator
    that return the map elements in a deterministic order.
    There are also new modifiers k and K for the format
    string in io:format() to support printing map elements
    ordered.

Dialyzer

  • Dialyzer has a new incremental mode that be invoked by
    giving the --incremental option when running Dialyzer.
    This new incremental mode is likely to become the
    default in a future release.

Misc ERTS, Stdlib, Kernel, Compiler

  • Multi time warp mode is now enabled by default.
    This assumes that all code executing on the system is
    time warp safe.

  • Support for UTF-8 atoms and strings in the NIF
    interface including new functions enif_make_new_atom,
    enif_make_new_atom_len and enif_get_string_length.

  • The BIFs min/2 and max/2 are now allowed to be used in
    guards and match specs.

  • Improved the selective receive optimization, which can
    now be enabled for references returned from other
    functions. This greatly improves the performance of
    gen_server:send_request/3, gen_server:wait_response/2,
    and similar functions.

  • New trace feature call_memory. Similar to call_time
    tracing, but instead of measure accumulated time in
    traced functions it measures accumulated heap space
    consumed by traced functions. It can be used to compare
    how much different functions are contributing to
    garbage collection being triggered.

  • It is no longer necessary to enable a feature in the
    runtime system in order to load modules that are using
    it. It is sufficient to enable the feature in the
    compiler when compiling it.

  • inet:setopts/2 has got 3 new options: reuseport, reuseport_lb and exclusiveaddruse.

  • Fix so that -fno-omit-frame-pointer is applied to all
    of the Erlang VM when using the JIT so that tools, such
    as perf, can crawl the process stacks.

  • In the lists module, the zip family of functions now takes
    options to allow handling lists of different lengths.

  • Added the zip:zip_get_crc32/2 function to retrieve the
    CRC32 checksum from an opened ZIP archive.
    gen_server optimized by caching callback functions

  • The modules Erlang DNS resolver inet_res and helper
    modules have been updated for RFC6891; to handle OPT RR
    with DNSSEC OK (DO) bit.

  • Introduced application:get_supervisor/1.

  • Cache OTP boot code paths, to limit how many folders
    that are being accessed during a module lookup. Can be
    disabled with -cache_boot_path false.

SSL

  • Support for Kernel TLS (kTLS), has been added to the
    SSL application, for TLS distribution (-proto_dist
    inet_tls), the SSL option {ktls, true}.

  • Improved error checking and handling of ssl options.

  • Mitigate memory usage from large certificate chains by
    lowering the maximum handshake size. This should not
    effect the common cases, if needed it can be configured
    to a higher value.

  • For security reasons the SHA1 and DSA
    algorithms are no longer among the default values.

  • Add encoding and decoding of use_srtp hello extension
    to facilitate for DTLS users to implement SRTP
    functionality.

For more details about new features and potential incompatibilities see the readme

OTP 24.3.4.10

17 Mar 15:15
Compare
Choose a tag to compare
=== OTP-24.3.4.10 ===

Changed Applications:
- erts-12.3.2.10
- inets-7.5.3.3
- snmp-5.12.0.3

Unchanged Applications:
- asn1-5.0.18.1
- common_test-1.22.1.1
- compiler-8.1.1.3
- crypto-5.0.6.3
- debugger-5.2.1
- dialyzer-4.4.4.1
- diameter-2.2.5
- edoc-1.1
- eldap-1.2.10
- erl_docgen-1.2.1
- erl_interface-5.2.2
- et-1.6.5
- eunit-2.7
- ftp-1.1.1
- jinterface-1.12.2
- kernel-8.3.2.3
- megaco-4.3
- mnesia-4.20.4.2
- observer-2.11.1
- odbc-2.13.5
- os_mon-2.7.1
- parsetools-2.3.2
- public_key-1.12.0.1
- reltool-0.9
- runtime_tools-1.18
- sasl-4.1.2
- ssh-4.13.2.2
- ssl-10.7.3.6
- stdlib-3.17.2.2
- syntax_tools-2.6
- tftp-1.0.3
- tools-3.5.2
- wx-2.1.4
- xmerl-1.3.28

OTP 25.3

08 Mar 11:31
Compare
Choose a tag to compare
 ---------------------------------------------------------------------
 --- HIGHLIGHTS ------------------------------------------------------
 ---------------------------------------------------------------------

  OTP-18374    Application(s): erts
               Related Id(s): PR-6632

               Support for fully asynchronous distributed signaling
               where send operations *never* block. This functionality
               is by default disabled and can be enabled per process.
               For more information see the documentation of
               process_flag(async_dist, Bool).


 ---------------------------------------------------------------------
 --- OTP-25.3 --------------------------------------------------------
 ---------------------------------------------------------------------

OTP 24.3.4.9

23 Feb 10:51
Compare
Choose a tag to compare
=== OTP-24.3.4.9 ===

Changed Applications:
- compiler-8.1.1.3
- erts-12.3.2.9
- inets-7.5.3.2
- ssh-4.13.2.2
- ssl-10.7.3.6

Unchanged Applications:
- asn1-5.0.18.1
- common_test-1.22.1.1
- crypto-5.0.6.3
- debugger-5.2.1
- dialyzer-4.4.4.1
- diameter-2.2.5
- edoc-1.1
- eldap-1.2.10
- erl_docgen-1.2.1
- erl_interface-5.2.2
- et-1.6.5
- eunit-2.7
- ftp-1.1.1
- jinterface-1.12.2
- kernel-8.3.2.3
- megaco-4.3
- mnesia-4.20.4.2
- observer-2.11.1
- odbc-2.13.5
- os_mon-2.7.1
- parsetools-2.3.2
- public_key-1.12.0.1
- reltool-0.9
- runtime_tools-1.18
- sasl-4.1.2
- snmp-5.12.0.2
- stdlib-3.17.2.2
- syntax_tools-2.6
- tftp-1.0.3
- tools-3.5.2
- wx-2.1.4
- xmerl-1.3.28

OTP 25.2.3

17 Feb 10:06
Compare
Choose a tag to compare
=== OTP-25.2.3 ===

Changed Applications:
- erts-13.1.5
- inets-8.2.2
- ssh-4.15.2
- ssl-10.8.7

Unchanged Applications:
- asn1-5.0.21
- common_test-1.23.3
- compiler-8.2.3
- crypto-5.1.2
- debugger-5.3
- dialyzer-5.0.4
- diameter-2.2.7
- edoc-1.2
- eldap-1.2.10
- erl_docgen-1.4
- erl_interface-5.3
- et-1.6.5
- eunit-2.8.1
- ftp-1.1.3
- jinterface-1.13.1
- kernel-8.5.3
- megaco-4.4.2
- mnesia-4.21.3
- observer-2.14
- odbc-2.14
- os_mon-2.8
- parsetools-2.4.1
- public_key-1.13.2
- reltool-0.9
- runtime_tools-1.19
- sasl-4.2
- snmp-5.13.3
- stdlib-4.2
- syntax_tools-3.0
- tftp-1.0.3
- tools-3.5.3
- wx-2.2.1
- xmerl-1.3.30