Releases: erlang/otp
OTP 25.3.2.13
Patch Package: OTP 25.3.2.13
Git Tag: OTP-25.3.2.13
Date: 2024-07-08
Trouble Report Id: OTP-19057, OTP-19109, OTP-19123, OTP-19140,
OTP-19147, OTP-19154
Seq num: ERIERL-1043, ERIERL-1106, GH-7483, GH-8484,
GH-8613, PR-8345, PR-8546, PR-8619, PR-8627
System: OTP
Release: 25
Application: erts-13.2.2.10, ssh-4.15.3.5, ssl-10.9.1.5
Predecessor: OTP 25.3.2.12
Check out the git tag OTP-25.3.2.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-13.2.2.10 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-13.2.2.10 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-19123 Application(s): erts
Related Id(s): GH-8484, PR-8546
'DOWN' messages originating from a monitored port,
contained the atom process instead of the atom port as
the third element when the exit reason was not an
immediate term.
OTP-19147 Application(s): erts
Related Id(s): ERIERL-1043, ERIERL-1106, PR-8619
When no time warp mode was enabled, a smaller Erlang
monotonic time could be read than a previously read
time, i.e., breaking the monotonic property. The
runtime system will abort when detecting an issue like
this since OTP 24.3.4.17 and OTP 25.0.
Up until OTP 25 no time warp mode is the default. As of
OTP 26 multi time warp mode is the default.
OTP-19154 Application(s): erts
Related Id(s): GH-8613, PR-8627
A scheduler thread could get stuck when deleting a
memory allocator carrier when adjacent carriers were
deleted and/or inserted simultaneously by other
schedulers. This in turn could cause the other
schedulers to get stuck as well.
Full runtime dependencies of erts-13.2.2.10: kernel-8.5, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- ssh-4.15.3.5 ----------------------------------------------------
---------------------------------------------------------------------
The ssh-4.15.3.5 application can be applied independently of other
applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19057 Application(s): ssh
Related Id(s): GH-7483, PR-8345
With this change, ssh client will automatically adjust
transfer window size for commands executed remotely
over SSH.
OTP-19109 Application(s): ssh
Related Id(s): PR-8345
With this change, race condition between connection
closing and automatic window adjustment is fixed.
Full runtime dependencies of ssh-4.15.3.5: crypto-5.0, erts-11.0,
kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
---------------------------------------------------------------------
--- ssl-10.9.1.5 ----------------------------------------------------
---------------------------------------------------------------------
Note! The ssl-10.9.1.5 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-19140 Application(s): ssl
TLS-1.3 negotiation now uses SNI based options
correctly instead of ignoring them.
Full runtime dependencies of ssl-10.9.1.5: 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
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 26.2.5.1
Patch Package: OTP 26.2.5.1
Git Tag: OTP-26.2.5.1
Date: 2024-06-25
Trouble Report Id: OTP-19057, OTP-19063, OTP-19090, OTP-19091,
OTP-19092, OTP-19094, OTP-19100, OTP-19104,
OTP-19107, OTP-19109, OTP-19121, OTP-19123,
OTP-19140
Seq num: ERIERL-870, GH-7483, GH-8376, GH-8482,
GH-8484, GH-8489, OTP-18835, PR-8345,
PR-8399, PR-8508, PR-8546
System: OTP
Release: 26
Application: diameter-2.3.2.1, erts-14.2.5.1,
kernel-9.2.4.1, public_key-1.15.1.1,
ssh-5.1.4.1, ssl-11.1.4.1
Predecessor: OTP 26.2.5
Check out the git tag OTP-26.2.5.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.
---------------------------------------------------------------------
--- diameter-2.3.2.1 ------------------------------------------------
---------------------------------------------------------------------
The diameter-2.3.2.1 application can be applied independently of
other applications on a full OTP 26 installation.
--- Improvements and New Features ---
OTP-19090 Application(s): diameter
Related Id(s): PR-8399
Pick peer can now also handle request of type
#diameter_packet{}.
Full runtime dependencies of diameter-2.3.2.1: erts-10.0, kernel-3.2,
ssl-9.0, stdlib-5.0
---------------------------------------------------------------------
--- erts-14.2.5.1 ---------------------------------------------------
---------------------------------------------------------------------
The erts-14.2.5.1 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19063 Application(s): erts, kernel
Related Id(s): OTP-18835
A call to socket:[recv|recvfrom|recvmsg]/* with Timeout
= 0 on Windows could cause a (case clause) crash if
data is immediately available.
OTP-19121 Application(s): erts
Related Id(s): GH-8484
When a port command crashed in the inet driver during
gen_tcp:send/2, a monitor 'DOWN' message could be left
lingering in the caller's mailbox. This has now been
fixed.
OTP-19123 Application(s): erts
Related Id(s): GH-8484, PR-8546
'DOWN' messages originating from a monitored port,
contained the atom process instead of the atom port as
the third element when the exit reason was not an
immediate term.
Full runtime dependencies of erts-14.2.5.1: kernel-9.0, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- kernel-9.2.4.1 --------------------------------------------------
---------------------------------------------------------------------
The kernel-9.2.4.1 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19063 Application(s): erts, kernel
Related Id(s): OTP-18835
A call to socket:[recv|recvfrom|recvmsg]/* with Timeout
= 0 on Windows could cause a (case clause) crash if
data is immediately available.
OTP-19104 Application(s): kernel
Related Id(s): ERIERL-870
Open a disk_log file and combining head_func with
rotate options did not work.
Full runtime dependencies of kernel-9.2.4.1: crypto-5.0, erts-14.0,
sasl-3.0, stdlib-5.0
---------------------------------------------------------------------
--- public_key-1.15.1.1 ---------------------------------------------
---------------------------------------------------------------------
The public_key-1.15.1.1 application can be applied independently of
other applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19100 Application(s): public_key
Related Id(s): GH-8482, PR-8508
Fix bug in dnsName constraint check, could cause valid
cert to be considered bad during path validation.
Full runtime dependencies of public_key-1.15.1.1: asn1-3.0,
crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
---------------------------------------------------------------------
--- ssh-5.1.4.1 -----------------------------------------------------
---------------------------------------------------------------------
The ssh-5.1.4.1 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19057 Application(s): ssh
Related Id(s): GH-7483, PR-8345
With this change, ssh client will automatically adjust
transfer window size for commands executed remotely
over SSH.
OTP-19109 Application(s): ssh
Related Id(s): PR-8345
With this change, race condition between connection
closing and automatic window adjustment is fixed.
Full runtime dependencies of ssh-5.1.4.1: crypto-5.0, erts-14.0,
kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
stdlib-5.0
---------------------------------------------------------------------
--- ssl-11.1.4.1 ----------------------------------------------------
---------------------------------------------------------------------
The ssl-11.1.4.1 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19094 Application(s): ssl
Related Id(s): GH-8489
Check for TLS-1.3 support should check minimum
requirements.
OTP-19107 Application(s): ssl
Related Id(s): GH-8376
If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2
negotiated convert TLS-1.3 ECDSA schemes to TLS-1.2
hash and signature pairs for increased
interoperability.
OTP-19140 Application(s): ssl
TLS-1.3 negotiation now uses SNI based options
correctly instead of ignoring them.
--- Improvements and New Features ---
OTP-19091 Application(s): ssl
Make it easier to distinguish between a invalid
signature and unsupported signature.
OTP-19092 Application(s): ssl
Related Id(s): GH-8482
Enhance ALERT logs to help understand what causes the
alert.
Full runtime dependencies of ssl-11.1.4.1: crypto-5.0, erts-14.0,
inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
stdlib-4.1
---------------------------------------------------------------------
--- Thanks to -------------------------------------------------------
---------------------------------------------------------------------
Anupama Singh
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 27.0
Erlang/OTP 27 Released
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/doc.
You can also install the latest release using kerl like this:
kerl build 27.0 27.0
The new Erlang/OTP 27 release contains new features, improvements as well as a few incompatibilities. Some of the new features are highlighted below.
Many thanks to all contributors!
Documentation
EEP-59 has been implemented. Documentation attributes in source files can now be used to document functions, types, callbacks, and modules.
The entire Erlang/OTP documentation is now using the new documentation system.
New language features
-
Triple-Quoted Strings has been implemented as per EEP 64 to allow a string to encompass a complete paragraph.
-
Adjacent string literals without intervening white space is now a syntax error, to avoid possible confusion with triple-quoted strings.
-
Sigils on string literals (both ordinary and triple-quoted) have been implemented as per EEP 66. For example,
~"Bjรถrn"
or~b"Bjรถrn"
are now equivalent to<<"Bjรถrn"/utf8>>
.
Compiler and JIT improvements
-
The compiler will now merge consecutive updates of the same record.
-
Safe destructive update of tuples has been implemented in the compiler and runtime system. This allows the VM to update tuples in-place when it is safe to do so, thus improving performance by doing less copying but also by producing less garbage.
-
The
maybe
expression is now enabled by default, eliminating the need for enabling themaybe_expr
feature. -
Native coverage support has been implemented in the JIT. It will automatically be used by the
cover
tool to reduce the execution overhead when running cover-compiled code. There are also new APIs to support native coverage without using thecover
tool. -
The compiler will now raise a warning when updating record/map literals to catch a common mistake. For example, the compiler will now emit a warning for
#r{a=1}#r{b=2}
. -
The order in which the compiler looks up options has changed.
When there is a conflict in the compiler options given in the
-compile()
attribute and options given to the compiler, the options given in the-compile()
attribute overrides the option given to the compiler, which in turn overrides options given in theERL_COMPILER_OPTIONS
environment variable.Example:
If
some_module.erl
has the following attribute:-compile([nowarn_missing_spec]).
and the compiler is invoked like so:
% erlc +warn_missing_spec some_module.erl
no warnings will be issued for functions that do not have any specs.
ERTS
-
The
erl
command now supports the-S
flag, which is similar to the-run
flag, but with some of the rough edges filed off. -
By default, escripts will now be compiled instead of interpreted. That means that the
compiler
application must be installed. -
The existing experimental support for archive files will be changed in a future release. The support for having an archive in an escript will remain, but the support for using archives in a release will either become more limited or completely removed.
As of Erlang/OTP 27, the function
code:lib_dir/2
, the-code_path_choice
flag, and usingerl_prim_loader
for reading members of an archive are deprecated.To remain compatible with future version of Erlang/OTP
escript
scripts that need to retrieve data files from its archive should useescript:extract/2
instead oferl_prim_loader
andcode:lib_dir/2
. -
The default process limit has been raised to
1048576
processes. -
The
erlang:system_monitor/2
functionality is now able to monitor long message queues in the system. -
The obsolete and undocumented support for opening a port to an external resource by passing an atom (or a string) as first argument to
open_port()
, implemented by the vanilla driver, has been removed. This feature has been scheduled for removal in OTP 27 since the release of OTP 26. -
The
pid
field has been removed fromerlang:fun_info/1,2
. -
Multiple trace sessions are now supported.
-
configure
now automatically enables support for year-2038-safe timestamps.By default
configure
scripts used when building OTP will now try to enable support for timestamps that will work after mid-January 2038. This has typically only been an issue on 32-bit platforms. Ifconfigure
cannot figure out how to enable such timestamps, it will abort with an error message. If you want to build the system anyway, knowing that the system will not function properly after mid-January 2038, you can pass the--disable-year2038
option toconfigure
, which will enableconfigure
to continue without support for timestamps after mid-January 2038.'
STDLIB
-
There is a new module json for encoding and decoding JSON.
Both encoding and decoding can be customized. Decoding can be done in a SAX-like fashion and handle multiple documents and streams of data.
The new
json
module is used by thejer
(JSON Encoding Rules) for ASN.1 for encoding and decoding JSON. Thus, there is no longer any need to supply an external JSON library. -
Several new functions that accept funs have been added to module
timer
. -
The functions
is_equal/2
,map/2
, andfiltermap/2
have been added to the modulessets
,ordsets
, andgb_sets
. -
There are new efficient
ets
traversal functions with guaranteed atomicity. For example,ets:next/2
followed byets:lookup/2
can now be replaced withets:next_lookup/1
. -
The new function
ets:update_element/4
is similar toets:update_element/3
, but takes a default tuple as the fourth argument, which will be inserted if no previous record with that key exists. -
binary:replace/3,4
now supports using a fun for supplying the replacement binary. -
The new function
proc_lib:set_label/1
can be used to add a descriptive term to any process that does not have a registered name. The name will
be shown by tools such asc:i/0
andobserver
, and it will be included in crash reports produced by processes usinggen_server
,gen_statem
,gen_event
, andgen_fsm
. -
Added functions to retrieve the next higher or lower key/element from
gb_trees
andgb_sets
, as well as returning iterators that start at given keys/elements.
common_test
-
Calls to
ct:capture_start/0
andct:capture_stop/0
are now synchronous to ensure that all output is captured. -
The default CSS will now include a basic dark mode handling if it is preferred by the browser.
crypto
- The functions
crypto_dyn_iv_init/3
andcrypto_dyn_iv_update/3
that were marked as deprecated in Erlang/OTP 25 have been removed.
dialyzer
- The
--gui
option for Dialyzer has been removed.
ssl
- The
ssl
client can negotiate and handle certificate status request (OCSP stapling support on the client side).
tools
- There is a new tool
tprof
, which combines the functionality ofeprof
andcprof
under one interface. It also adds heap profiling.
xmerl
- As an alternative to
xmerl_xml
, a new export modulexmerl_xml_indent
that provides out-of-the box indented output has been added.
For more details about new features and potential incompatibilities see the README.
OTP 26.2.5
Patch Package: OTP 26.2.5
Git Tag: OTP-26.2.5
Date: 2024-05-02
Trouble Report Id: OTP-19061, OTP-19062, OTP-19065, OTP-19067,
OTP-19068, OTP-19069, OTP-19070, OTP-19071,
OTP-19072, OTP-19076, OTP-19078
Seq num: ERIERL-1073, GH-8356, GH-8383, GH-8385,
OTP-18999, PR-8367, PR-8379, PR-8380,
PR-8391, PR-8422
System: OTP
Release: 26
Application: dialyzer-5.1.3, erts-14.2.5, kernel-9.2.4,
mnesia-4.23.1, ssl-11.1.4, stdlib-5.2.3
Predecessor: OTP 26.2.4
Check out the git tag OTP-26.2.5, 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-19069 Application(s): erts
Added a warning to open_port/2 regarding the BadBatBut
attack affecting Windows.
---------------------------------------------------------------------
--- dialyzer-5.1.3 --------------------------------------------------
---------------------------------------------------------------------
The dialyzer-5.1.3 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19068 Application(s): dialyzer
Related Id(s): GH-8383
Fixed an issue with bitstring type inference on
segments following UTF-8/16/32 segments.
Full runtime dependencies of dialyzer-5.1.3: compiler-8.0, erts-12.0,
kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0
---------------------------------------------------------------------
--- erts-14.2.5 -----------------------------------------------------
---------------------------------------------------------------------
The erts-14.2.5 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19061 Application(s): erts
gen_sctp:send/3,4 now waits for the send to complete
instead of returning an OS result such as
{error,ย ewouldblock}.
OTP-19070 Application(s): erts
Related Id(s): GH-8385
ETS functions did not properly handle keys containing
maps, sometimes matching too many or too few objects.
OTP-19071 Application(s): erts
Related Id(s): PR-8380, OTP-18999
Fix CPU quota determination for cgroups.
The bug was introduced through OTP-18999.
--- Improvements and New Features ---
OTP-19069 Application(s): erts
*** HIGHLIGHT ***
Added a warning to open_port/2 regarding the BadBatBut
attack affecting Windows.
Full runtime dependencies of erts-14.2.5: kernel-9.0, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- kernel-9.2.4 ----------------------------------------------------
---------------------------------------------------------------------
The kernel-9.2.4 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19072 Application(s): kernel, stdlib
Related Id(s): PR-8391
Fix the shell Job Control Mode to not crash when typing
TAB or CTRL+R.
OTP-19078 Application(s): kernel
Related Id(s): PR-8422
Fix calls to blocking application APIs to throw an
exception with reason terminating if called when the
system is terminating.
This is done in order to avoid deadlocks during
shutdown or restart.
Full runtime dependencies of kernel-9.2.4: crypto-5.0, erts-14.0,
sasl-3.0, stdlib-5.0
---------------------------------------------------------------------
--- mnesia-4.23.1 ---------------------------------------------------
---------------------------------------------------------------------
The mnesia-4.23.1 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19076 Application(s): mnesia
Related Id(s): ERIERL-1073
Mnesia could crash during startup if del_table_copy/2
and add_table_copy/3 was invoked when the table was
loading.
Full runtime dependencies of mnesia-4.23.1: erts-9.0, kernel-5.3,
stdlib-5.0
---------------------------------------------------------------------
--- ssl-11.1.4 ------------------------------------------------------
---------------------------------------------------------------------
The ssl-11.1.4 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19065 Application(s): ssl
Related Id(s): GH-8356, PR-8367
Fix certificate authorities check so that CA closest to
peer is not lost. It could manifest itself in a failed
connection as the client failed to realize it had a
valid certificate chain to send to the server.
OTP-19067 Application(s): ssl
Related Id(s): PR-8379
ssl:signature_algs/2 did not list some legacy algorithm
schemes correctly when listing all algorithms
available.
Full runtime dependencies of ssl-11.1.4: crypto-5.0, erts-14.0,
inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
stdlib-4.1
---------------------------------------------------------------------
--- stdlib-5.2.3 ----------------------------------------------------
---------------------------------------------------------------------
The stdlib-5.2.3 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19062 Application(s): stdlib
Fix shell expansion of -type a() :: $a. in the erlang
shell.
OTP-19072 Application(s): kernel, stdlib
Related Id(s): PR-8391
Fix the shell Job Control Mode to not crash when typing
TAB or CTRL+R.
Full runtime dependencies of stdlib-5.2.3: compiler-5.0, crypto-4.5,
erts-13.1, kernel-9.0, sasl-3.0
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 25.3.2.12
Patch Package: OTP 25.3.2.12
Git Tag: OTP-25.3.2.12
Date: 2024-05-02
Trouble Report Id: OTP-19065, OTP-19070, OTP-19071, OTP-19076
Seq num: ERIERL-1073, GH-8356, GH-8385, OTP-18999,
PR-8367, PR-8380
System: OTP
Release: 25
Application: erts-13.2.2.9, mnesia-4.21.4.3, ssl-10.9.1.4
Predecessor: OTP 25.3.2.11
Check out the git tag OTP-25.3.2.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.
---------------------------------------------------------------------
--- erts-13.2.2.9 ---------------------------------------------------
---------------------------------------------------------------------
Note! The erts-13.2.2.9 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-19070 Application(s): erts
Related Id(s): GH-8385
ETS functions did not properly handle keys containing
maps, sometimes matching too many or too few objects.
OTP-19071 Application(s): erts
Related Id(s): PR-8380, OTP-18999
Fix CPU quota determination for cgroups.
The bug was introduced through OTP-18999.
Full runtime dependencies of erts-13.2.2.9: kernel-8.5, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- mnesia-4.21.4.3 -------------------------------------------------
---------------------------------------------------------------------
The mnesia-4.21.4.3 application can be applied independently of other
applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19076 Application(s): mnesia
Related Id(s): ERIERL-1073
Mnesia could crash during startup if del_table_copy/2
and add_table_copy/3 was invoked when the table was
loading.
Full runtime dependencies of mnesia-4.21.4.3: erts-9.0, kernel-5.3,
stdlib-3.4
---------------------------------------------------------------------
--- ssl-10.9.1.4 ----------------------------------------------------
---------------------------------------------------------------------
Note! The ssl-10.9.1.4 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-19065 Application(s): ssl
Related Id(s): GH-8356, PR-8367
Fix certificate authorities check so that CA closest to
peer is not lost. It could manifest itself in a failed
connection as the client failed to realize it had a
valid certificate chain to send to the server.
Full runtime dependencies of ssl-10.9.1.4: 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
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 27.0-rc3
OTP 27.0-rc3
Erlang/OTP 27.0-rc3 is the third and final release candidate before the OTP 27.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 at https://github.com/erlang/otp/issues or by posting to Erlang Forums.
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-15.0-rc3/doc.
You can also install the latest release using kerl like this:
kerl build 27.0-rc3 27.0-rc3.
Erlang/OTP 27 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!
Notable changes in RC3
- The support for multiple trace sessions is now documented and ready for use.
Highlights for RC2
-
There is a new module json for encoding and decoding JSON.
Both encoding and decoding can be customized. Decoding can be done in a SAX-like fashion and handle multiple documents and streams of data.
The new
json
module is used by thejer
(JSON Encoding Rules) for ASN.1 for encoding and decoding JSON. Thus, there is no longer any need to supply an external JSON library.
Other notable changes in RC2
-
The existing experimental support for archive files will be changed in a future release. The support for having an archive in an escript will remain, but the support for using archives in a release will either become more limited or completely removed.
As of Erlang/OTP 27, the function
code:lib_dir/2
, the-code_path_choice
flag, and usingerl_prim_loader
for reading members of an archive are deprecated.To remain compatible with future version of Erlang/OTP
escript
scripts that need to retrieve data files from its archive should useescript:extract/2
instead oferl_prim_loader
andcode:lib_dir/2
. -
The order in which the compiler looks up options has changed.
When there is a conflict in the compiler options given in the
-compile()
attribute and options given to the compiler, the options given in the-compile()
attribute overrides the option given to the compiler, which in turn overrides options given in theERL_COMPILER_OPTIONS
environment variable.Example:
If
some_module.erl
has the following attribute:-compile([nowarn_missing_spec]).
and the compiler is invoked like so:
% erlc +warn_missing_spec some_module.erl
no warnings will be issued for functions that do not have any specs.
-
configure
now automatically enables support for year-2038-safe timestamps.By default
configure
scripts used when building OTP will now try to enable support for timestamps that will work after mid-January
2038. This has typically only been an issue on 32-bit platforms. Ifconfigure
cannot figure out how to enable such timestamps, it will abort with an error message. If you want to build the system anyway, knowing that the system will not function properly after mid-January 2038, you can pass the--disable-year2038
option toconfigure
, which will enableconfigure
to continue without support for timestamps after mid-January 2038.'
Highlights for RC1
Documentation
EEP-59 has been implemented. Documentation attributes in source files can now be used to document functions, types, callbacks, and modules.
The entire Erlang/OTP documentation is now using the new documentation system.
New language features
-
Triple-Quoted Strings has been implemented as per EEP 64 to allow a string to encompass a complete paragraph.
-
Adjacent string literals without intervening white space is now a syntax error, to avoid possible confusion with triple-quoted strings.
-
Sigils on string literals (both ordinary and triple-quoted) have been implemented as per EEP 66. For example,
~"Bjรถrn"
or~b"Bjรถrn"
are now equivalent to<<"Bjรถrn"/utf8>>
.
Compiler and JIT improvements
-
The compiler will now merge consecutive updates of the same record.
-
Safe destructive update of tuples has been implemented in the compiler and runtime system. This allows the VM to update tuples in-place when it is safe to do so, thus improving performance by doing less copying but also by producing less garbage.
-
The
maybe
expression is now enabled by default, eliminating the need for enabling themaybe_expr
feature. -
Native coverage support has been implemented in the JIT. It will automatically be used by the
cover
tool to reduce the execution overhead when running cover-compiled code. There are also new APIs to support native coverage without using thecover
tool. -
The compiler will now raise a warning when updating record/map literals to catch a common mistake. For example, the compiler will now emit a warning for
#r{a=1}#r{b=2}
.
ERTS
-
The
erl
command now supports the-S
flag, which is similar to the-run
flag, but with some of the rough edges filed off. -
By default, escripts will now be compiled instead of interpreted. That means that the
compiler
application must be installed. -
The default process limit has been raised to
1048576
processes. -
The
erlang:system_monitor/2
functionality is now able to monitor long message queues in the system. -
The obsolete and undocumented support for opening a port to an external resource by passing an atom (or a string) as first argument to
open_port()
, implemented by the vanilla driver, has been removed. This feature has been scheduled for removal in OTP 27 since the release of OTP 26. -
The
pid
field has been removed fromerlang:fun_info/1,2
. -
Multiple trace sessions are now supported.
STDLIB
-
Several new functions that accept funs have been added to module
timer
. -
The functions
is_equal/2
,map/2
, andfiltermap/2
have been added to the modulessets
,ordsets
, andgb_sets
. -
There are new efficient
ets
traversal functions with guaranteed atomicity. For example,ets:next/2
followed byets:lookup/2
can now be replaced withets:next_lookup/1
. -
The new function
ets:update_element/4
is similar toets:update_element/3
, but takes a default tuple as the fourth argument, which will be inserted if no previous record with that key exists. -
binary:replace/3,4
now supports using a fun for supplying the replacement binary. -
The new function
proc_lib:set_label/1
can be used to add a descriptive term to any process that does not have a registered name. The name will
be shown by tools such asc:i/0
andobserver
, and it will be included in crash reports produced by processes usinggen_server
,gen_statem
,gen_event
, andgen_fsm
. -
Added functions to retrieve the next higher or lower key/element from
gb_trees
andgb_sets
, as well as returning iterators that start at given keys/elements.
common_test
-
Calls to
ct:capture_start/0
andct:capture_stop/0
are now synchronous to ensure that all output is captured. -
The default CSS will now include a basic dark mode handling if it is preferred by the browser.
crypto
- The functions
crypto_dyn_iv_init/3
andcrypto_dyn_iv_update/3
that were marked as deprecated in Erlang/OTP 25 have been removed.
dialyzer
- The
--gui
option for Dialyzer has been removed.
ssl
- The
ssl
client can negotiate and handle certificate status request (OCSP stapling support on the client side).
tools
- There is a new tool
tprof
, which combines the functionality ofeprof
andcprof
under one interface. It also adds heap profiling.
xmerl
- As an alternative to
xmerl_xml
, a new export modulexmerl_xml_indent
that provides out-of-the box indented output has been added.
For more details about new features and potential incompatibilities see the README.
OTP 26.2.4
Patch Package: OTP 26.2.4
Git Tag: OTP-26.2.4
Date: 2024-04-12
Trouble Report Id: OTP-18958, OTP-18960, OTP-18999, OTP-19013,
OTP-19014, OTP-19015, OTP-19019, OTP-19021,
OTP-19031, OTP-19034, OTP-19035, OTP-19036,
OTP-19037, OTP-19038, OTP-19039, OTP-19040,
OTP-19041, OTP-19043, OTP-19044, OTP-19045,
OTP-19048, OTP-19049, OTP-19056, OTP-19058,
OTP-19059, OTP-19060
Seq num: #8176, ERIERL-1043, ERIERL-1060, ERIERL-682,
GH-7897, GH-7928, GH-7951, GH-7955, GH-8120,
GH-8186, GH-8238, GH-8268, GH-8271, GH-8280,
GH-8291, GH-8316, GH-8338, OTP-17323,
PR-8220, PR-8248, PR-8275, PR-8277, PR-8284,
PR-8297, PR-8312, PR-8342, PR-8343
System: OTP
Release: 26
Application: asn1-5.2.2, common_test-1.26.2,
compiler-8.4.3, crypto-5.4.2, debugger-5.3.4,
diameter-2.3.2, erts-14.2.4, kernel-9.2.3,
ssh-5.1.4, ssl-11.1.3, stdlib-5.2.2
Predecessor: OTP 26.2.3
Check out the git tag OTP-26.2.4, 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.
---------------------------------------------------------------------
--- asn1-5.2.2 ------------------------------------------------------
---------------------------------------------------------------------
The asn1-5.2.2 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19039 Application(s): asn1
Related Id(s): GH-8291, PR-8297
An ASN.1 module that contains named BIT STRING values
would fail to compiled if both the BER and JER
back-ends were enabled.
Full runtime dependencies of asn1-5.2.2: erts-11.0, kernel-7.0,
stdlib-3.13
---------------------------------------------------------------------
--- common_test-1.26.2 ----------------------------------------------
---------------------------------------------------------------------
The common_test-1.26.2 application can be applied independently of
other applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18960 Application(s): common_test
With this change, the last column in common_test
testcase log file is modified to now show the total sum
of each time in the table rows, and Elapsed Time which
is a clock time spent to run above functions. The
Elapsed Time is the same time that was previously a
total.
Full runtime dependencies of common_test-1.26.2: compiler-6.0,
crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4,
observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0,
stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8
---------------------------------------------------------------------
--- compiler-8.4.3 --------------------------------------------------
---------------------------------------------------------------------
The compiler-8.4.3 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19019 Application(s): compiler
In rare circumstances, the compiler code generate
unsafe code for a bit syntax match.
OTP-19035 Application(s): compiler
Related Id(s): GH-8280, PR-8284
In rare circumstances, binary matches that were
supposed to succeed failed.
OTP-19045 Application(s): compiler
Related Id(s): GH-8316
Fixed a bug where a fun's environment could be
overridden by an argument if all of the following
conditions were met:
-- The fun was declared in the module that called it.
-- The fun's target was statically known.
-- The fun was called with a number of extra arguments
equal to the number of environment variables.
Full runtime dependencies of compiler-8.4.3: crypto-5.1, erts-13.0,
kernel-8.4, stdlib-5.0
---------------------------------------------------------------------
--- crypto-5.4.2 ----------------------------------------------------
---------------------------------------------------------------------
The crypto-5.4.2 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19038 Application(s): crypto
Related Id(s): GH-8271, PR-8277
Fix building with --enable-fips with OpenSSL 3 on
MacOS.
Full runtime dependencies of crypto-5.4.2: erts-9.0, kernel-5.3,
stdlib-3.9
---------------------------------------------------------------------
--- debugger-5.3.4 --------------------------------------------------
---------------------------------------------------------------------
The debugger-5.3.4 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18958 Application(s): debugger
Related Id(s): GH-8120, PR-8275
Guards with nested record expression could wrongly
evaluate to false.
Full runtime dependencies of debugger-5.3.4: compiler-8.0, erts-12.0,
kernel-8.0, stdlib-3.15, wx-2.0
---------------------------------------------------------------------
--- diameter-2.3.2 --------------------------------------------------
---------------------------------------------------------------------
The diameter-2.3.2 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19040 Application(s): diameter
Related Id(s): ERIERL-1060
Reduce the impact of calling service_info by not
counting the binaries (on the heap) info, This is done
by introducing an option, bins_info, which controls
this.
Full runtime dependencies of diameter-2.3.2: erts-10.0, kernel-3.2,
ssl-9.0, stdlib-5.0
---------------------------------------------------------------------
--- erts-14.2.4 -----------------------------------------------------
---------------------------------------------------------------------
The erts-14.2.4 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18999 Application(s): erts
Related Id(s): GH-7928
Fixed CPU quota determination for cgroup version 2
OTP-19014 Application(s): erts
Fix faulty reduction counting in exiting process which
could cause it to do unnecessary yielding.
OTP-19015 Application(s): erts
Related Id(s): ERIERL-682
Fix bug in re:run/3 where if an invalid UTF-8 subject
was given, re:run could get stuck in an infinite loop.
Bug was introduced in Erlang/OTP 22.1.
OTP-19021 Application(s): erts
Related Id(s): GH-8238, PR-8248
On AArch64 (ARM64), Erlang code using bit syntax
construction compiled using Erlang/OTP 24 could crash
the runtime system when run in Erlang/OTP 26.2.3.
OTP-19034 Application(s): erts
Calling erlang:trace/3 with first argument one of
ports, processes, existing_ports, existing_processes,
existing or all, could cause emulator crash if a dirty
scheduler was executing a simultaneous trace action.
OTP-19036 Application(s): erts
Related Id(s): GH-8186
Fixed an integer overflow when the monotonic time unit
reported by the operating system was greater than 10
and lower than 100 microseconds.
OTP-19041 Application(s): erts
Fix option reuseaddr for FreeBSD 14
OTP-19043 Application(s): erts
Related Id(s): PR-8342
When a traced process executing on a dirty scheduler
received an exit signal, the dirty scheduler could use
the wrong thread specific data which could lead to a
crash.
OTP-19048 Application(s): erts
Related Id(s): PR-8343
Fixed a more or less harmless bug that caused time
correction of Erlang monotonic time to become slightly
off on Windows platforms when QueryPerformanceCounter()
was used as OS monotonic time source.
erlang:system_info(os_monotonic_time_source) now also
returns information about used resolution which not
always corresponds to the resolution of the OS
monotonic time source.
OTP-19049 Application(s): erts, kernel
Related Id(s): #8176
When using IPv6, classic gen_udp failed to add (group)
membership (drop was used instead).
OTP-19060 A...
OTP 25.3.2.11
Patch Package: OTP 25.3.2.11
Git Tag: OTP-25.3.2.11
Date: 2024-04-12
Trouble Report Id: OTP-18958, OTP-18960, OTP-18999, OTP-19013,
OTP-19014, OTP-19031, OTP-19034, OTP-19036,
OTP-19038, OTP-19040, OTP-19043, OTP-19044,
OTP-19048, OTP-19050, OTP-19058, OTP-19064
Seq num: ERIERL-1043, ERIERL-1060, GH-7897, GH-7928,
GH-8120, GH-8186, GH-8268, GH-8271,
OTP-18990, PR-8220, PR-8275, PR-8277,
PR-8342, PR-8343
System: OTP
Release: 25
Application: common_test-1.24.0.3, crypto-5.1.4.3,
debugger-5.3.1.3, diameter-2.2.7.1,
erts-13.2.2.8, inets-8.3.1.3, kernel-8.5.4.3,
observer-2.14.0.1, os_mon-2.8.2.1,
reltool-0.9.1.1, ssh-4.15.3.4, stdlib-4.3.1.4
Predecessor: OTP 25.3.2.10
Check out the git tag OTP-25.3.2.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.
---------------------------------------------------------------------
--- common_test-1.24.0.3 --------------------------------------------
---------------------------------------------------------------------
The common_test-1.24.0.3 application can be applied independently of
other applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18960 Application(s): common_test
With this change, the last column in common_test
testcase log file is modified to now show the total sum
of each time in the table rows, and Elapsed Time which
is a clock time spent to run above functions. The
Elapsed Time is the same time that was previously a
total.
Full runtime dependencies of common_test-1.24.0.3: compiler-6.0,
crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4,
observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0,
stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8
---------------------------------------------------------------------
--- crypto-5.1.4.3 --------------------------------------------------
---------------------------------------------------------------------
The crypto-5.1.4.3 application can be applied independently of other
applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19038 Application(s): crypto
Related Id(s): GH-8271, PR-8277
Fix building with --enable-fips with OpenSSL 3 on
MacOS.
Full runtime dependencies of crypto-5.1.4.3: erts-9.0, kernel-5.3,
stdlib-3.9
---------------------------------------------------------------------
--- debugger-5.3.1.3 ------------------------------------------------
---------------------------------------------------------------------
The debugger-5.3.1.3 application can be applied independently of
other applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18958 Application(s): debugger
Related Id(s): GH-8120, PR-8275
Guards with nested record expression could wrongly
evaluate to false.
Full runtime dependencies of debugger-5.3.1.3: compiler-8.0,
erts-12.0, kernel-8.0, stdlib-3.15, wx-2.0
---------------------------------------------------------------------
--- diameter-2.2.7.1 ------------------------------------------------
---------------------------------------------------------------------
The diameter-2.2.7.1 application can be applied independently of
other applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19040 Application(s): diameter
Related Id(s): ERIERL-1060
Reduce the impact of calling service_info by not
counting the binaries (on the heap) info, This is done
by introducing an option, bins_info, which controls
this.
Full runtime dependencies of diameter-2.2.7.1: erts-10.0, kernel-3.2,
ssl-9.0, stdlib-3.0
---------------------------------------------------------------------
--- erts-13.2.2.8 ---------------------------------------------------
---------------------------------------------------------------------
Note! The erts-13.2.2.8 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-18999 Application(s): erts
Related Id(s): GH-7928
Fixed CPU quota determination for cgroup version 2
OTP-19014 Application(s): erts
Fix faulty reduction counting in exiting process which
could cause it to do unnecessary yielding.
OTP-19034 Application(s): erts
Calling erlang:trace/3 with first argument one of
ports, processes, existing_ports, existing_processes,
existing or all, could cause emulator crash if a dirty
scheduler was executing a simultaneous trace action.
OTP-19036 Application(s): erts
Related Id(s): GH-8186
Fixed an integer overflow when the monotonic time unit
reported by the operating system was greater than 10
and lower than 100 microseconds.
OTP-19043 Application(s): erts
Related Id(s): PR-8342
When a traced process executing on a dirty scheduler
received an exit signal, the dirty scheduler could use
the wrong thread specific data which could lead to a
crash.
OTP-19048 Application(s): erts
Related Id(s): PR-8343
Fixed a more or less harmless bug that caused time
correction of Erlang monotonic time to become slightly
off on Windows platforms when QueryPerformanceCounter()
was used as OS monotonic time source.
erlang:system_info(os_monotonic_time_source) now also
returns information about used resolution which not
always corresponds to the resolution of the OS
monotonic time source.
--- Improvements and New Features ---
OTP-19044 Application(s): erts
Related Id(s): ERIERL-1043, PR-8342
Checks for monotonicity of monotonic time have been
improved so that Erlang and OS monotonic time are
checked separately.
A new configure argument
--enable-ensure-os-monotonic-time has also been added.
It enables functionality ensuring the monotonicity of
monotonic timestamps delivered by the OS. When a
non-monotonic timestamp is detected, it will be
replaced by the last delivered monotonic timestamp
before being used by Erlang's time functionality. Note
that you do not want to enable this unless the OS
monotonic time source on the system fails to produce
monotonic timestamps. This since ensuring the
monotonicity of OS monotonic timestamps will hurt
scalability and performance of the system.
OTP-19058 Application(s): erts
For severe errors, when the `socket` module terminates
the Erlang VM, now an erl_crash.dump is produced, to
facilitate post mortem debugging.
Full runtime dependencies of erts-13.2.2.8: kernel-8.5, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- inets-8.3.1.3 ---------------------------------------------------
---------------------------------------------------------------------
The inets-8.3.1.3 application can be applied independently of other
applications on a full OTP 25 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19064 Application(s): inets, observer, os_mon, reltool
Fixed runtime dependencies.
Full runtime dependencies of inets-8.3.1.3: erts-13.0, kernel-6.0,
mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0,
stdlib-4.0
---------------------------------------------------------------------
--- kernel-8.5.4.3 --------------------------------------------------
---------------------------------------------------------------------
Note! The kernel-8.5.4.3 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.3 (first satisfied in OTP 25.2)
-- stdlib-4.1.1 (first satisfied in OTP 25.1.1)
--- Fixed Bugs and Malfunctions ---
OTP-19050 Application(s): kernel
Related Id(s): OTP-18990
Fixed gen_udp:open/2 type spec to include already
supported module socket address types.
Full runtime dependencies of kernel-8.5.4.3: crypto-5.0, erts-13.1.3,
sasl-3.0, stdlib-4.1.1
---------------------------------------------------------------------
--- observer-2.14.0.1 -----------------------------------------------
---------------------------------------------------------------------
The observer-2.14.0.1 application can be applied independently of
...
OTP 24.3.4.17
Warning
Until the 10th of May the Erlang/OTP 24.3.4.17 patch had an incorrect prebuilt archive on github (the otp_src_24.3.4.17.tar.gz artifact), which meant that if used it would install OTP 24.3.4.15 and not the intended patch.
Tools such as kerl and by extension asdf use the prebuilt archive, so if you used those to install 24.3.4.17 you will need to rebuild your system to get the correct Erlang version. In order to get the proper version in kerl you need to do kerl cleanup 24.3.4.17
and then re-install it.
The official docker images are unaffected as they build from the git tag.
Patch Package: OTP 24.3.4.17
Git Tag: OTP-24.3.4.17
Date: 2024-04-09
Trouble Report Id: OTP-18960, OTP-18986, OTP-18996, OTP-19002,
OTP-19003, OTP-19006, OTP-19013, OTP-19015,
OTP-19019, OTP-19034, OTP-19036, OTP-19043,
OTP-19044, OTP-19048
Seq num: ERIERL-1041, ERIERL-1043, ERIERL-682,
GH-7897, GH-8186, GH-8187, PR-8173, PR-8174,
PR-8189, PR-8220, PR-8342, PR-8343
System: OTP
Release: 24
Application: common_test-1.22.1.3, compiler-8.1.1.6,
crypto-5.0.6.5, erts-12.3.2.17, ssh-4.13.2.6
Predecessor: OTP 24.3.4.16
Check out the git tag OTP-24.3.4.17, 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.
---------------------------------------------------------------------
--- common_test-1.22.1.3 --------------------------------------------
---------------------------------------------------------------------
The common_test-1.22.1.3 application can be applied independently of
other applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18960 Application(s): common_test
With this change, the last column in common_test
testcase log file is modified to now show the total sum
of each time in the table rows, and Elapsed Time which
is a clock time spent to run above functions. The
Elapsed Time is the same time that was previously a
total.
Full runtime dependencies of common_test-1.22.1.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
---------------------------------------------------------------------
--- compiler-8.1.1.6 ------------------------------------------------
---------------------------------------------------------------------
The compiler-8.1.1.6 application can be applied independently of
other applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-19003 Application(s): compiler
Related Id(s): GH-8187, PR-8189
In rare circumstances, an unsafe optimization could
cause the compiler to generate incorrect code for list
matching.
OTP-19019 Application(s): compiler
In rare circumstances, the compiler code generate
unsafe code for a bit syntax match.
Full runtime dependencies of compiler-8.1.1.6: crypto-3.6, erts-11.0,
kernel-7.0, stdlib-3.13
---------------------------------------------------------------------
--- crypto-5.0.6.5 --------------------------------------------------
---------------------------------------------------------------------
The crypto-5.0.6.5 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18996 Application(s): crypto
Related Id(s): PR-8173, PR-8174
The function crypto:pbkdf2_hmac will no longer block
the main schedulers. If the iteration count or block
size parameters are such that the function is likely to
take a long time to execute, the function will be
scheduled to run on a dirty CPU scheduler.
Full runtime dependencies of crypto-5.0.6.5: erts-9.0, kernel-5.3,
stdlib-3.4
---------------------------------------------------------------------
--- erts-12.3.2.17 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-12.3.2.17 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-19006 Application(s): erts
The code server could be hanging if a module with
on_load function was loaded at the same time as another
module was purged using erlang:purge_module directly.
OTP-19015 Application(s): erts
Related Id(s): ERIERL-682
Fix bug in re:run/3 where if an invalid UTF-8 subject
was given, re:run could get stuck in an infinite loop.
Bug was introduced in Erlang/OTP 22.1.
OTP-19034 Application(s): erts
Calling erlang:trace/3 with first argument one of
ports, processes, existing_ports, existing_processes,
existing or all, could cause emulator crash if a dirty
scheduler was executing a simultaneous trace action.
OTP-19036 Application(s): erts
Related Id(s): GH-8186
Fixed an integer overflow when the monotonic time unit
reported by the operating system was greater than 10
and lower than 100 microseconds.
OTP-19043 Application(s): erts
Related Id(s): PR-8342
When a traced process executing on a dirty scheduler
received an exit signal, the dirty scheduler could use
the wrong thread specific data which could lead to a
crash.
OTP-19048 Application(s): erts
Related Id(s): PR-8343
Fixed a more or less harmless bug that caused time
correction of Erlang monotonic time to become slightly
off on Windows platforms when QueryPerformanceCounter()
was used as OS monotonic time source.
erlang:system_info(os_monotonic_time_source) now also
returns information about used resolution which not
always corresponds to the resolution of the OS
monotonic time source.
--- Improvements and New Features ---
OTP-19044 Application(s): erts
Related Id(s): ERIERL-1043, PR-8342
Checks for monotonicity of monotonic time have been
improved so that Erlang and OS monotonic time are
checked separately.
A new configure argument
--enable-ensure-os-monotonic-time has also been added.
It enables functionality ensuring the monotonicity of
monotonic timestamps delivered by the OS. When a
non-monotonic timestamp is detected, it will be
replaced by the last delivered monotonic timestamp
before being used by Erlang's time functionality. Note
that you do not want to enable this unless the OS
monotonic time source on the system fails to produce
monotonic timestamps. This since ensuring the
monotonicity of OS monotonic timestamps will hurt
scalability and performance of the system.
Full runtime dependencies of erts-12.3.2.17: kernel-8.3, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- ssh-4.13.2.6 ----------------------------------------------------
---------------------------------------------------------------------
The ssh-4.13.2.6 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18986 Application(s): ssh
With this change, more secure algorithms are preferred
by ssh and documentation is updated to reflect that.
OTP-19002 Application(s): ssh
Related Id(s): ERIERL-1041
With this change, KEX strict terminal message is
emitted with debug verbosity.
OTP-19013 Application(s): ssh
Related Id(s): GH-7897, PR-8220
With this change, owner and group file attributes
decoding is fixed and results with value of integer
type.
Full runtime dependencies of ssh-4.13.2.6: crypto-5.0, erts-9.0,
kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP-27.0-rc2
Erlang/OTP 27.0-rc2 is the second release candidate of three before the OTP 27.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 at
https://github.com/erlang/otp/issues or by posting to Erlang Forums.
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-15.0-rc2/doc.
You can also install the latest release using kerl like this:
kerl build 27.0-rc2 27.0-rc2.
Erlang/OTP 27 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!
Highlights for RC2
-
There is a new module json for encoding and decoding JSON.
Both encoding and decoding can be customized. Decoding can be done in a
SAX-like fashion and handle multiple documents and streams of data.The new
json
module is used by thejer
(JSON Encoding Rules) for ASN.1
for encoding and decoding JSON. Thus, there is no longer any need to supply
an external JSON library.
Other notable changes in RC2
-
The existing experimental support for archive files will be changed in a
future release. The support for having an archive in an escript will remain,
but the support for using archives in a release will either become more
limited or completely removed.As of Erlang/OTP 27, the function
code:lib_dir/2
, the-code_path_choice
flag, and usingerl_prim_loader
for reading members of an archive are
deprecated.To remain compatible with future version of Erlang/OTP
escript
scripts that
need to retrieve data files from its archive should useescript:extract/2
instead oferl_prim_loader
andcode:lib_dir/2
. -
The order in which the compiler looks up options has changed.
When there is a conflict in the compiler options given in the
-compile()
attribute and options given to the compiler, the options given in the
-compile()
attribute overrides the option given to the compiler, which in
turn overrides options given in theERL_COMPILER_OPTIONS
environment
variable.Example:
If
some_module.erl
has the following attribute:-compile([nowarn_missing_spec]).
and the compiler is invoked like so:
% erlc +warn_missing_spec some_module.erl
no warnings will be issued for functions that do not have any specs.
-
configure
now automatically enables support for year-2038-safe timestamps.By default
configure
scripts used when building OTP will now try
to enable support for timestamps that will work after mid-January
2038. This has typically only been an issue on 32-bit platforms.If
configure
cannot figure out how to enable such timestamps, it
will abort with an error message. If you want to build the system
anyway, knowing that the system will not function properly after
mid-January 2038, you can pass the--disable-year2038
option to
configure
, which will enableconfigure
to continue without
support for timestamps after mid-January 2038.
Highlights for RC1
Documentation
EEP-59 has been
implemented. Documentation attributes in source files can now be used
to document functions, types, callbacks, and modules.
The entire Erlang/OTP documentation is now using the new documentation
system.
New language features
-
Triple-Quoted Strings has been implemented as per
EEP 64 to allow a string
to encompass a complete paragraph. -
Adjacent string literals without intervening white space is now a syntax
error, to avoid possible confusion with triple-quoted strings. -
Sigils on string literals (both ordinary and triple-quoted) have
been implemented as per
EEP 66. For example,
~"Bjรถrn"
or~b"Bjรถrn"
are now equivalent to<<"Bjรถrn"/utf8>>
.
Compiler and JIT improvements
-
The compiler will now merge consecutive updates of the same record.
-
Safe destructive update of tuples has been implemented in the compiler
and runtime system. This allows the VM to update tuples in-place when it
is safe to do so, thus improving performance by doing less copying but
also by producing less garbage. -
The
maybe
expression is now enabled by default, eliminating the need
for enabling themaybe_expr
feature. -
Native coverage support has been implemented in the JIT. It will
automatically be used by thecover
tool to reduce the execution
overhead when running cover-compiled code. There are also new APIs
to support native coverage without using thecover
tool. -
The compiler will now raise a warning when updating record/map literals
to catch a common mistake. For example, the compiler will now emit a
warning for#r{a=1}#r{b=2}
.
ERTS
-
The
erl
command now supports the-S
flag, which is similar to
the-run
flag, but with some of the rough edges filed off. -
By default, escripts will now be compiled instead of interpreted. That
means that thecompiler
application must be installed. -
The default process limit has been raised to
1048576
processes. -
The
erlang:system_monitor/2
functionality is now able to monitor long
message queues in the system. -
The obsolete and undocumented support for opening a port to an external
resource by passing an atom (or a string) as first argument to
open_port()
, implemented by the vanilla driver,
has been removed. This feature has been scheduled for removal in OTP 27
since the release of OTP 26. -
The
pid
field has been removed fromerlang:fun_info/1,2
. -
Multiple trace sessions are now supported.
STDLIB
-
Several new functions that accept funs have been added to module
timer
. -
The functions
is_equal/2
,map/2
, andfiltermap/2
have been added to
the modulessets
,ordsets
, andgb_sets
. -
There are new efficient
ets
traversal functions with guaranteed atomicity.
For example,ets:next/2
followed byets:lookup/2
can now be replaced
withets:next_lookup/1
. -
The new function
ets:update_element/4
is similar toets:update_element/3
,
but takes a default tuple as the fourth argument, which will be inserted
if no previous record with that key exists. -
binary:replace/3,4
now supports using a fun for supplying the
replacement binary. -
The new function
proc_lib:set_label/1
can be used to add a descriptive
term to any process that does not have a registered name. The name will
be shown by tools such asc:i/0
andobserver
, and it will be included
in crash reports produced by processes usinggen_server
,gen_statem
,
gen_event
, andgen_fsm
. -
Added functions to retrieve the next higher or lower key/element from
gb_trees
andgb_sets
, as well as returning iterators that start at
given keys/elements.
common_test
-
Calls to
ct:capture_start/0
andct:capture_stop/0
are now synchronous to
ensure that all output is captured. -
The default CSS will now include a basic dark mode handling if it is
preferred by the browser.
crypto
- The functions
crypto_dyn_iv_init/3
andcrypto_dyn_iv_update/3
that were marked as deprecated in Erlang/OTP 25 have been removed.
dialyzer
- The
--gui
option for Dialyzer has been removed.
ssl
- The
ssl
client can negotiate and handle certificate status request (OCSP
stapling support on the client side).
tools
- There is a new tool
tprof
, which combines the functionality ofeprof
andcprof
under one interface. It also adds heap profiling.
xmerl
- As an alternative to
xmerl_xml
, a new export modulexmerl_xml_indent
that provides out-of-the box indented output has been added.
For more details about new features and potential incompatibilities see the README.