Releases: erlang/otp
OTP 25.3.2.1
Patch Package: OTP 25.3.2.1
Git Tag: OTP-25.3.2.1
Date: 2023-05-30
Trouble Report Id: OTP-18556, OTP-18561, OTP-18569, OTP-18576,
OTP-18593, OTP-18595, OTP-18597
Seq num: ERIERL-944, GH-7252
System: OTP
Release: 25
Application: compiler-8.2.6.1, erts-13.2.2.1,
stdlib-4.3.1.1, xmerl-1.3.31.1
Predecessor: OTP 25.3.2
Check out the git tag OTP-25.3.2.1, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- compiler-8.2.6.1 ------------------------------------------------
---------------------------------------------------------------------
The compiler-8.2.6.1 application can be applied independently of
other applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18576 Application(s): compiler
Fixed a bug where a failing bsl expression in a guard
threw an exception instead of causing the guard to
fail.
OTP-18593 Application(s): compiler
Related Id(s): GH-7252
Complex guard expression using the or operator and
guard BIFs that can fail could sometimes be miscompiled
so that the guard would succeed even if a call to a
guard BIF failed.
Full runtime dependencies of compiler-8.2.6.1: crypto-5.1, erts-13.0,
kernel-8.4, stdlib-4.0
---------------------------------------------------------------------
--- erts-13.2.2.1 ---------------------------------------------------
---------------------------------------------------------------------
Note! The erts-13.2.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-18561 Application(s): erts
Fixed a crash during tracing on certain platforms that
cannot use the machine stack for Erlang code (mainly
OpenBSD and Linux with musl).
OTP-18597 Application(s): erts
Constructing a binary segment not aligned with a byte
boundary, with a size not fitting in 31 bits, and with
a value not fitting in a 64-bit word could crash the
runtime system.
--- Improvements and New Features ---
OTP-18569 Application(s): erts
Further robustify implementation of large maps (> 32
keys). Keys that happen to have same internal 32-bit
hash values are now put in collision nodes which are
traversed with linear search. This removes the demand
for the internal hash function when salted to
eventually produce different hashes for all possible
pairs of unequal terms.
Full runtime dependencies of erts-13.2.2.1: kernel-8.5, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- stdlib-4.3.1.1 --------------------------------------------------
---------------------------------------------------------------------
Note! The stdlib-4.3.1.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)
--- Improvements and New Features ---
OTP-18556 Application(s): stdlib
Static supervisors are very idle processes after they
have started so they will now be hibernated after start
to improve resource management.
Full runtime dependencies of stdlib-4.3.1.1: compiler-5.0,
crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0
---------------------------------------------------------------------
--- xmerl-1.3.31.1 --------------------------------------------------
---------------------------------------------------------------------
The xmerl-1.3.31.1 application can be applied independently of other
applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18595 Application(s): xmerl
Related Id(s): ERIERL-944
New options to xmerl_scan and xmerl_sax_parser so one
can limit the behaviour of the parsers to avoid some
XML security issues.
xmerl_scan gets one new option:
-- {allow_entities, Boolean} -- Gives the possibility
to disallow entities by setting this option to false
(true is default)
xmerl_sax_parser gets the following options:
-- disallow_entities -- Don't allow entities in
document
-- {entity_recurse_limit, N} -- Set a limit on entity
recursion depth (default is 3)
-- {external_entities, AllowedType} -- Specify which
types of external entities that are allowed, this also
affect external DTD's. The types are all(default), file
and none
-- {fail_undeclared_ref, Boolean} -- Sets the behavior
for undeclared references due to an external file is
not parsed (true is default)
The old option skip_external_dtd is still valid and the
same as {external_entities, none} and
{fail_undeclared_ref, false} but just affects DTD's and
not other external references.
Full runtime dependencies of xmerl-1.3.31.1: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 24.3.4.12
Patch Package: OTP 24.3.4.12
Git Tag: OTP-24.3.4.12
Date: 2023-05-30
Trouble Report Id: OTP-18556, OTP-18560, OTP-18569, OTP-18570,
OTP-18593, OTP-18595, OTP-18597
Seq num: ERIERL-944, GH-7252
System: OTP
Release: 24
Application: compiler-8.1.1.4, erts-12.3.2.12,
stdlib-3.17.2.3, xmerl-1.3.28.1
Predecessor: OTP 24.3.4.11
Check out the git tag OTP-24.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.
---------------------------------------------------------------------
--- compiler-8.1.1.4 ------------------------------------------------
---------------------------------------------------------------------
The compiler-8.1.1.4 application can be applied independently of
other applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18593 Application(s): compiler
Related Id(s): GH-7252
Complex guard expression using the or operator and
guard BIFs that can fail could sometimes be miscompiled
so that the guard would succeed even if a call to a
guard BIF failed.
Full runtime dependencies of compiler-8.1.1.4: crypto-3.6, erts-11.0,
kernel-7.0, stdlib-3.13
---------------------------------------------------------------------
--- erts-12.3.2.12 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-12.3.2.12 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-18560 Application(s): erts
In rare circumstances, bit syntax matching of an
invalid code point for a utf32 would crash the runtime
system.
OTP-18570 Application(s): erts
Related Id(s): PR-7190
If a runtime system which was starting the distribution
already had existing pids, ports, or references
referring to a node with the same nodename/creation
pair that the runtime system was about to use, these
already existing pids, ports, or references would not
work as expected in various situations after the node
had gone alive. This could only occur if the runtime
system was communicated such pids, ports, or references
prior to the distribution was started. That is, it was
extremely unlikely to happen unless the distribution
was started dynamically and was even then very unlikely
to happen. The runtime system now checks for already
existing pids, ports, and references with the same
nodename/creation pair that it is about to use. If such
are found another creation will be chosen in order to
avoid these issues.
OTP-18597 Application(s): erts
Constructing a binary segment not aligned with a byte
boundary, with a size not fitting in 31 bits, and with
a value not fitting in a 64-bit word could crash the
runtime system.
--- Improvements and New Features ---
OTP-18569 Application(s): erts
Further robustify implementation of large maps (> 32
keys). Keys that happen to have same internal 32-bit
hash values are now put in collision nodes which are
traversed with linear search. This removes the demand
for the internal hash function when salted to
eventually produce different hashes for all possible
pairs of unequal terms.
Full runtime dependencies of erts-12.3.2.12: kernel-8.3, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- stdlib-3.17.2.3 -------------------------------------------------
---------------------------------------------------------------------
The stdlib-3.17.2.3 application can be applied independently of other
applications on a full OTP 24 installation.
--- Improvements and New Features ---
OTP-18556 Application(s): stdlib
Static supervisors are very idle processes after they
have started so they will now be hibernated after start
to improve resource management.
Full runtime dependencies of stdlib-3.17.2.3: compiler-5.0,
crypto-3.3, erts-12.0, kernel-7.0, sasl-3.0
---------------------------------------------------------------------
--- xmerl-1.3.28.1 --------------------------------------------------
---------------------------------------------------------------------
The xmerl-1.3.28.1 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18595 Application(s): xmerl
Related Id(s): ERIERL-944
New options to xmerl_scan and xmerl_sax_parser so one
can limit the behaviour of the parsers to avoid some
XML security issues.
xmerl_scan gets one new option:
-- {allow_entities, Boolean} -- Gives the possibility
to disallow entities by setting this option to false
(true is default)
xmerl_sax_parser gets the following options:
-- disallow_entities -- Don't allow entities in
document
-- {entity_recurse_limit, N} -- Set a limit on entity
recursion depth (default is 3)
-- {external_entities, AllowedType} -- Specify which
types of external entities that are allowed, this also
affect external DTD's. The types are all(default), file
and none
-- {fail_undeclared_ref, Boolean} -- Sets the behavior
for undeclared references due to an external file is
not parsed (true is default)
The old option skip_external_dtd is still valid and the
same as {external_entities, none} and
{fail_undeclared_ref, false} but just affects DTD's and
not other external references.
Full runtime dependencies of xmerl-1.3.28.1: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 26.0
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 withenumerate/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 functionproc_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 thatwerl.exe
is just a symlink toerl.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 bymaps:to_list/1
andmaps: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 modifiersk
andK
for the format string inio: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 functionsenif_make_new_atom
,enif_make_new_atom_len
andenif_get_string_length
. -
The BIFs
min/2
andmax/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 ofgen_server:send_request/3
,gen_server:wait_response/2
, and similar functions. -
New trace feature
call_memory
. Similar tocall_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
andexclusiveaddruse
. -
Fix so that
-fno-omit-frame-pointer
is applied to all of the Erlang VM when using the JIT so that tools, such asperf
, 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 theCRC32
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 toverify_peer
.
Note that this makes it mandatory to also supply trusted CA certificates or explicitly setverify
toverify_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
andDSA
algorithms are no longer among the default values. -
Add encoding and decoding of
use_srtp
hello extension to facilitate forDTLS
users to implementSRTP
functionality.
For more details about new features and potential incompatibilities see the readme
Many thanks to all contributors!
OTP 25.3.2
Patch Package: OTP 25.3.2
Git Tag: OTP-25.3.2
Date: 2023-05-05
Trouble Report Id: OTP-18559, OTP-18565, OTP-18570
Seq num: ERIERL-942, GH-7147
System: OTP
Release: 25
Application: compiler-8.2.6, erts-13.2.2, os_mon-2.8.2
Predecessor: OTP 25.3.1
Check out the git tag OTP-25.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.
---------------------------------------------------------------------
--- compiler-8.2.6 --------------------------------------------------
---------------------------------------------------------------------
The compiler-8.2.6 application can be applied independently of other
applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18565 Application(s): compiler
Related Id(s): GH-7147
Fixed type handling bugs that could cause an internal
error in the compiler for correct code.
Full runtime dependencies of compiler-8.2.6: crypto-5.1, erts-13.0,
kernel-8.4, stdlib-4.0
---------------------------------------------------------------------
--- erts-13.2.2 -----------------------------------------------------
---------------------------------------------------------------------
Note! The erts-13.2.2 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-18570 Application(s): erts
Related Id(s): PR-7190
If a runtime system which was starting the distribution
already had existing pids, ports, or references
referring to a node with the same nodename/creation
pair that the runtime system was about to use, these
already existing pids, ports, or references would not
work as expected in various situations after the node
had gone alive. This could only occur if the runtime
system was communicated such pids, ports, or references
prior to the distribution was started. That is, it was
extremely unlikely to happen unless the distribution
was started dynamically and was even then very unlikely
to happen. The runtime system now checks for already
existing pids, ports, and references with the same
nodename/creation pair that it is about to use. If such
are found another creation will be chosen in order to
avoid these issues.
Full runtime dependencies of erts-13.2.2: kernel-8.5, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- os_mon-2.8.2 ----------------------------------------------------
---------------------------------------------------------------------
The os_mon-2.8.2 application can be applied independently of other
applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18559 Application(s): os_mon
Related Id(s): ERIERL-942
Avoid error report from failing erlang:port_close at
shutdown of cpu_sup and memsup. Bug exists since OTP
25.3 (os_mon-2.8.1).
Full runtime dependencies of os_mon-2.8.2: erts-6.0, kernel-3.0,
sasl-2.4, stdlib-3.4
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 25.3.1
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
Patch Package: OTP 24.3.4.11
Git Tag: OTP-24.3.4.11
Date: 2023-04-21
Trouble Report Id: OTP-18243, OTP-18343, OTP-18525, OTP-18545,
OTP-18550, OTP-18557
Seq num: ERIERL-928, ERIERL-937, GH-6247, GH-6496
System: OTP
Release: 24
Application: erts-12.3.2.11, inets-7.5.3.4, ssl-10.7.3.7
Predecessor: OTP 24.3.4.10
Check out the git tag OTP-24.3.4.11, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- erts-12.3.2.11 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-12.3.2.11 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-18243 Application(s): erts
Related Id(s): GH-6247, PR-6258
Fix bug sometimes causing emulator crash at node
shutdown when there are pending connections. Only seen
when running duel distribution protocols, inet_drv and
inet_tls_dist.
OTP-18343 Application(s): erts
Related Id(s): GH-6496
Fix bug in binary_to_term (and distributed receive)
when decoding a large map (>32 keys) with unsorted
small maps (<= 32) as keys of the large map.
This was only a problem if the term was encoded by
erl_interface, jinterface or otherwise, as the VM
itself always encodes small maps with sorted keys.
The "binary_to_term" would appear as successful but the
created large map was internally inconsistent. The
smaller key-maps could not be found with maps:get and
friends. Other operations such as map compare and merge
could probably also give incorrect results.
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-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.
Full runtime dependencies of erts-12.3.2.11: kernel-8.3, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- inets-7.5.3.4 ---------------------------------------------------
---------------------------------------------------------------------
The inets-7.5.3.4 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
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-7.5.3.4: erts-6.0, kernel-3.0,
mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5
---------------------------------------------------------------------
--- ssl-10.7.3.7 ----------------------------------------------------
---------------------------------------------------------------------
Note! The ssl-10.7.3.7 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:
-- public_key-1.11.3 (first satisfied in OTP 24.1.2)
-- stdlib-3.17.2.1 (first satisfied in OTP 24.3.4.5)
--- Fixed Bugs and Malfunctions ---
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.7.3.7: 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.17.2.1
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 26.0-rc3
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 functionproc_lib:init_fail/2,3
, or
exits, to indicate failure. All OTP behaviours have
been fixed to do this.
Dialyzer
- Added the new built-in type
dynamic()
introduced in EEP 61, PR introducing EEP 61 improving support for gradual type checkers.
SSL
- Change the client default
verify
option toverify_peer
.
Note that this makes it mandatory to also supply trusted CA certificates or explicitly set
verify
toverify_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 thaterl.exe
has the same
functionality as a normal Unix shell and thatwerl.exe
is just a
symlink toerl.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 bymaps:to_list/1
andmaps: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 modifiersk
andK
for the format
string inio: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 functionsenif_make_new_atom
,
enif_make_new_atom_len
andenif_get_string_length
. -
The BIFs
min/2
andmax/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 tocall_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
andexclusiveaddruse
. -
Fix so that
-fno-omit-frame-pointer
is applied to all
of the Erlang VM when using the JIT so that tools, such
asperf
, 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
andDSA
algorithms are no longer among the default values. -
Add encoding and decoding of
use_srtp
hello extension
to facilitate forDTLS
users to implementSRTP
functionality.
For more details about new features and potential incompatibilities see the readme
OTP 26.0-rc2
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 functionproc_lib:init_fail/2,3
, or
exits, to indicate failure. All OTP behaviours have
been fixed to do this.
Dialyzer
- Added the new built-in type
dynamic()
introduced in EEP 61, PR introducing EEP 61 improving support for gradual type checkers.
SSL
- Change the client default
verify
option toverify_peer
.
Note that this makes it mandatory to also supply trusted CA certificates or explicitly set
verify
toverify_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 thaterl.exe
has the same
functionality as a normal Unix shell and thatwerl.exe
is just a
symlink toerl.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 bymaps:to_list/1
andmaps: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 modifiersk
andK
for the format
string inio: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 functionsenif_make_new_atom
,
enif_make_new_atom_len
andenif_get_string_length
. -
The BIFs
min/2
andmax/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 tocall_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
andexclusiveaddruse
. -
Fix so that
-fno-omit-frame-pointer
is applied to all
of the Erlang VM when using the JIT so that tools, such
asperf
, 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
andDSA
algorithms are no longer among the default values. -
Add encoding and decoding of
use_srtp
hello extension
to facilitate forDTLS
users to implementSRTP
functionality.
For more details about new features and potential incompatibilities see the readme
OTP 24.3.4.10
Patch Package: OTP 24.3.4.10
Git Tag: OTP-24.3.4.10
Date: 2023-03-17
Trouble Report Id: OTP-18422, OTP-18496, OTP-18509
Seq num: ERIERL-873, GH-6947
System: OTP
Release: 24
Application: erts-12.3.2.10, inets-7.5.3.3, snmp-5.12.0.3
Predecessor: OTP 24.3.4.9
Check out the git tag OTP-24.3.4.10, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- erts-12.3.2.10 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-12.3.2.10 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-18496 Application(s): erts
Related Id(s): GH-6947, PR-6953
Active process aliases of a process at its termination
leaked memory.
Full runtime dependencies of erts-12.3.2.10: kernel-8.3, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- inets-7.5.3.3 ---------------------------------------------------
---------------------------------------------------------------------
The inets-7.5.3.3 application can be applied independently of other
applications on a full OTP 24 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.
Full runtime dependencies of inets-7.5.3.3: erts-6.0, kernel-3.0,
mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5
---------------------------------------------------------------------
--- snmp-5.12.0.3 ---------------------------------------------------
---------------------------------------------------------------------
The snmp-5.12.0.3 application can be applied independently of other
applications on a full OTP 24 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.12.0.3: crypto-3.3, erts-12.0,
kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 25.3
---------------------------------------------------------------------
--- 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 --------------------------------------------------------
---------------------------------------------------------------------