Releases: erlang/otp
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.
OTP 22.3.4.27
Patch Package: OTP 22.3.4.27
Git Tag: OTP-22.3.4.27
Date: 2024-03-18
Trouble Report Id: OTP-18169, OTP-18170, OTP-18175, OTP-18197,
OTP-18258, OTP-18897, OTP-19002
Seq num: ERIERL-1041, GH-6165, GH-6309, PR-6134,
PR-6135, PR-6142, PR-6213, PR-6324
System: OTP
Release: 22
Application: erts-10.7.2.19, ssh-4.9.1.5
Predecessor: OTP 22.3.4.26
Check out the git tag OTP-22.3.4.27, 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.
---------------------------------------------------------------------
--- POTENTIAL INCOMPATIBILITIES -------------------------------------
---------------------------------------------------------------------
OTP-18897 Application(s): ssh
With this change (being response to CVE-2023-48795),
ssh can negotiate "strict KEX" OpenSSH extension with
peers supporting it; also
'[email protected]' algorithm becomes a
less preferred cipher.
If strict KEX availability cannot be ensured on both
connection sides, affected encryption modes(CHACHA and
CBC) can be disabled with standard ssh configuration.
This will provide protection against vulnerability, but
at a cost of affecting interoperability. See
Configuring algorithms in SSH User's Guide.
---------------------------------------------------------------------
--- erts-10.7.2.19 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-10.7.2.19 application *cannot* be applied
independently of other applications on an arbitrary OTP 22
installation.
On a full OTP 22 installation, also the following runtime
dependency has to be satisfied:
-- kernel-6.5.2.5 (first satisfied in OTP 22.3.4.25)
--- Fixed Bugs and Malfunctions ---
OTP-18169 Application(s): erts
Related Id(s): PR-6134
A race could cause process_info(Pid, message_queue_len)
on other processes to return invalid results.
OTP-18170 Application(s): erts
Related Id(s): PR-6135
Fixed reduction counting for handling process system
tasks.
OTP-18175 Application(s): erts
Related Id(s): PR-6142
Priority elevation of terminating processes did not
work which could cause execution of such processes to
be delayed.
OTP-18197 Application(s): erts
Related Id(s): GH-6165, PR-6213
The erlang:monotonic_time/1, erlang:system_time/1,
erlang:time_offset/1, and os:system_time/1 BIFs
erroneously failed when passed the argument native.
OTP-18258 Application(s): erts
Related Id(s): GH-6309, PR-6324
Notifications about available distribution data sent to
distribution controller processes could be lost.
Distribution controller processes can be used when
implementing an alternative distribution carrier. The
default distribution over tcp was not effected and the
bug was also not present on x86/x86_64 platforms.
Full runtime dependencies of erts-10.7.2.19: kernel-6.5.2.5,
sasl-3.3, stdlib-3.5
---------------------------------------------------------------------
--- ssh-4.9.1.5 -----------------------------------------------------
---------------------------------------------------------------------
Note! The ssh-4.9.1.5 application *cannot* be applied independently
of other applications on an arbitrary OTP 22 installation.
On a full OTP 22 installation, also the following runtime
dependency has to be satisfied:
-- crypto-4.6.4 (first satisfied in OTP 22.2.2)
--- Fixed Bugs and Malfunctions ---
OTP-18897 Application(s): ssh
*** POTENTIAL INCOMPATIBILITY ***
With this change (being response to CVE-2023-48795),
ssh can negotiate "strict KEX" OpenSSH extension with
peers supporting it; also
'[email protected]' algorithm becomes a
less preferred cipher.
If strict KEX availability cannot be ensured on both
connection sides, affected encryption modes(CHACHA and
CBC) can be disabled with standard ssh configuration.
This will provide protection against vulnerability, but
at a cost of affecting interoperability. See
Configuring algorithms in SSH User's Guide.
OTP-19002 Application(s): ssh
Related Id(s): ERIERL-1041
With this change, KEX strict terminal message is
emitted with debug verbosity.
Full runtime dependencies of ssh-4.9.1.5: crypto-4.6.4, erts-9.0,
kernel-5.3, public_key-1.6.1, stdlib-3.4.1
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 23.3.4.20
Patch Package: OTP 23.3.4.20
Git Tag: OTP-23.3.4.20
Date: 2024-03-18
Trouble Report Id: OTP-18897, OTP-19002
Seq num: ERIERL-1041
System: OTP
Release: 23
Application: ssh-4.11.1.7
Predecessor: OTP 23.3.4.19
Check out the git tag OTP-23.3.4.20, 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.
---------------------------------------------------------------------
--- POTENTIAL INCOMPATIBILITIES -------------------------------------
---------------------------------------------------------------------
OTP-18897 Application(s): ssh
With this change (being response to CVE-2023-48795),
ssh can negotiate "strict KEX" OpenSSH extension with
peers supporting it; also
'[email protected]' algorithm becomes a
less preferred cipher.
If strict KEX availability cannot be ensured on both
connection sides, affected encryption modes(CHACHA and
CBC) can be disabled with standard ssh configuration.
This will provide protection against vulnerability, but
at a cost of affecting interoperability. See
Configuring algorithms in SSH User's Guide.
---------------------------------------------------------------------
--- ssh-4.11.1.7 ----------------------------------------------------
---------------------------------------------------------------------
The ssh-4.11.1.7 application can be applied independently of other
applications on a full OTP 23 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18897 Application(s): ssh
*** POTENTIAL INCOMPATIBILITY ***
With this change (being response to CVE-2023-48795),
ssh can negotiate "strict KEX" OpenSSH extension with
peers supporting it; also
'[email protected]' algorithm becomes a
less preferred cipher.
If strict KEX availability cannot be ensured on both
connection sides, affected encryption modes(CHACHA and
CBC) can be disabled with standard ssh configuration.
This will provide protection against vulnerability, but
at a cost of affecting interoperability. See
Configuring algorithms in SSH User's Guide.
OTP-19002 Application(s): ssh
Related Id(s): ERIERL-1041
With this change, KEX strict terminal message is
emitted with debug verbosity.
Full runtime dependencies of ssh-4.11.1.7: crypto-4.6.4, erts-9.0,
kernel-5.3, public_key-1.6.1, stdlib-3.4.1
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP 25.3.2.10
Patch Package: OTP 25.3.2.10
Git Tag: OTP-25.3.2.10
Date: 2024-03-13
Trouble Report Id: OTP-18971, OTP-18986, OTP-18996, OTP-19002,
OTP-19003, OTP-19006, OTP-19008, OTP-19015,
OTP-19019
Seq num: ERIERL-1041, ERIERL-682, GH-8044, GH-8119,
GH-8187, PR-8173, PR-8174, PR-8189, PR-8201
System: OTP
Release: 25
Application: compiler-8.2.6.4, crypto-5.1.4.2,
erts-13.2.2.7, ssh-4.15.3.3
Predecessor: OTP 25.3.2.9
Check out the git tag OTP-25.3.2.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.
---------------------------------------------------------------------
--- compiler-8.2.6.4 ------------------------------------------------
---------------------------------------------------------------------
The compiler-8.2.6.4 application can be applied independently of
other applications on a full OTP 25 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.2.6.4: crypto-5.1, erts-13.0,
kernel-8.4, stdlib-4.0
---------------------------------------------------------------------
--- crypto-5.1.4.2 --------------------------------------------------
---------------------------------------------------------------------
The crypto-5.1.4.2 application can be applied independently of other
applications on a full OTP 25 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.1.4.2: erts-9.0, kernel-5.3,
stdlib-3.9
---------------------------------------------------------------------
--- erts-13.2.2.7 ---------------------------------------------------
---------------------------------------------------------------------
Note! The erts-13.2.2.7 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-18971 Application(s): erts
Related Id(s): GH-8044
Fix heap corruption bug that could cause runaway memory
consumption due to circular offheap list at process
exit. Other symptoms may also be possible. Bug exists
since OTP 25.0.
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-19008 Application(s): erts
Related Id(s): GH-8119, PR-8201
A process optimized for parallel signal delivery could
under some circumstances lose wakeup information. That
is, the processes was not woken up to take care of the
signal, so the signal would not be taken care of until
the process was woken by another signal. Only processes
configured with message_queue_data set to off_heap
utilize this optimization.
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.
Full runtime dependencies of erts-13.2.2.7: kernel-8.5, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- ssh-4.15.3.3 ----------------------------------------------------
---------------------------------------------------------------------
The ssh-4.15.3.3 application can be applied independently of other
applications on a full OTP 25 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.
Full runtime dependencies of ssh-4.15.3.3: crypto-5.0, erts-11.0,
kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
OTP-26.2.3
Patch Package: OTP 26.2.3
Git Tag: OTP-26.2.3
Date: 2024-03-07
Trouble Report Id: OTP-18890, OTP-18900, OTP-18906, OTP-18907,
OTP-18909, OTP-18910, OTP-18919, OTP-18921,
OTP-18924, OTP-18926, OTP-18935, OTP-18936,
OTP-18937, OTP-18940, OTP-18948, OTP-18952,
OTP-18953, OTP-18962, OTP-18971, OTP-18974,
OTP-18979, OTP-18982, OTP-18985, OTP-18986,
OTP-18988, OTP-18990, OTP-18991, OTP-18996,
OTP-19002, OTP-19003, OTP-19006, OTP-19007,
OTP-19008, OTP-19009, OTP-19011
Seq num: ERIERL-1041, ERIERL-1049, GH-7911, GH-7924,
GH-7934, GH-7968, GH-8016, GH-8021, GH-8024,
GH-8044, GH-8079, GH-8119, GH-8158, GH-8187,
PR-7750, PR-7930, PR-7932, PR-7933, PR-7945,
PR-7984, PR-8025, PR-8046, PR-8075, PR-8173,
PR-8174, PR-8181, PR-8189, PR-8201
System: OTP
Release: 26
Application: compiler-8.4.2, crypto-5.4.1, erts-14.2.3,
kernel-9.2.2, odbc-2.14.2, public_key-1.15.1,
ssh-5.1.3, ssl-11.1.2, stdlib-5.2.1, wx-2.4.1
Predecessor: OTP 26.2.2
Check out the git tag OTP-26.2.3, and build a full OTP system
including documentation. Apply one or more applications from this
build as patches to your installation using the 'otp_patch_apply'
tool. For information on install requirements, see descriptions for
each application version below.
---------------------------------------------------------------------
--- OTP-26.2.3 ------------------------------------------------------
---------------------------------------------------------------------
--- Fixed Bugs and Malfunctions ---
OTP-18924 Application(s): otp
Quote uninstall path in registry when installing on
windows.
---------------------------------------------------------------------
--- compiler-8.4.2 --------------------------------------------------
---------------------------------------------------------------------
The compiler-8.4.2 application can be applied independently of other
applications on a full OTP 26 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.
--- Improvements and New Features ---
OTP-18936 Application(s): compiler
Fix the compilation server to restart if the
applications in its lib dir changes inbetween erlc
invokations.
Full runtime dependencies of compiler-8.4.2: crypto-5.1, erts-13.0,
kernel-8.4, stdlib-5.0
---------------------------------------------------------------------
--- crypto-5.4.1 ----------------------------------------------------
---------------------------------------------------------------------
The crypto-5.4.1 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18921 Application(s): crypto
Fix compile error when OPENSSL_NO_DES is defined.
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.4.1: erts-9.0, kernel-5.3,
stdlib-3.9
---------------------------------------------------------------------
--- erts-14.2.3 -----------------------------------------------------
---------------------------------------------------------------------
The erts-14.2.3 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18906 Application(s): erts
Related Id(s): PR-7930
Fixed compile warning in erl_nif.c for gcc-13.
OTP-18907 Application(s): erts
Related Id(s): PR-7932
Fix C++ compile error for macros enif_select_read and
friends.
OTP-18940 Application(s): erts
Related Id(s): GH-8024
Fixed a name clash on Solaris that prevented the JIT
from being built.
OTP-18952 Application(s): erts
Related Id(s): PR-8025
Fix termcap detection on solaris.
OTP-18971 Application(s): erts
Related Id(s): GH-8044
Fix heap corruption bug that could cause runaway memory
consumption due to circular offheap list at process
exit. Other symptoms may also be possible. Bug exists
since OTP 25.0.
OTP-18979 Application(s): erts
Do not clear tracing in old module instance if load
fails with 'not_purged'.
OTP-18982 Application(s): erts
When exceeding the `max_heap_size` limit in a garbage
collection initiated by some bit syntax operations, the
process would not always terminate immediately.
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-19008 Application(s): erts
Related Id(s): GH-8119, PR-8201
A process optimized for parallel signal delivery could
under some circumstances lose wakeup information. That
is, the processes was not woken up to take care of the
signal, so the signal would not be taken care of until
the process was woken by another signal. Only processes
configured with message_queue_data set to off_heap
utilize this optimization.
OTP-19009 Application(s): erts
Related Id(s): PR-8181
Fix segfault when generating crashdump containing a fun
places in persistent_term storage.
OTP-19011 Application(s): erts
By default the JIT is disabled on Intel Macs, because
of annoying poups on macOS Sonoma. It is now possible
to explicitly enable the JIT on Intel Macs. Here is
how: ./configure --enable-jit
Full runtime dependencies of erts-14.2.3: kernel-9.0, sasl-3.3,
stdlib-4.1
---------------------------------------------------------------------
--- kernel-9.2.2 ----------------------------------------------------
---------------------------------------------------------------------
The kernel-9.2.2 application can be applied independently of other
applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18910 Application(s): kernel
Related Id(s): GH-7924, PR-7933
Fix performance bug when using io:fread to read from
standard_io. This regression was introduced in OTP
26.0.
OTP-18948 Application(s): kernel
Related Id(s): PR-8046
A bug in the code server could cause it to crash in
some concurrent scenarios. This bug was introduced in
26.1.
OTP-18990 Application(s): kernel
Related Id(s): GH-8158
Fixed gen_udp:open/2 type spec to include already
supported module socket address types.
OTP-19007 Application(s): kernel, ssh
Related Id(s): ERIERL-1049
Fix reading of password for ssh client when in
user_interactive mode.
Full runtime dependencies of kernel-9.2.2: crypto-5.0, erts-14.0,
sasl-3.0, stdlib-5.0
---------------------------------------------------------------------
--- odbc-2.14.2 -----------------------------------------------------
---------------------------------------------------------------------
The odbc-2.14.2 application can be applied independently of other
applications on a full OTP 26 installation.
--- Improvements and New Features ---
OTP-18926 Application(s): odbc
Use spec for API doc
Full runtime dependencies of odbc-2.14.2: erts-6.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- public_key-1.15.1 -----------------------------------------------
---------------------------------------------------------------------
The public_key-1.15.1 application can be applied independently of
other applications on a full OTP 26 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18935 Application(s): public_key
Related Id(s): GH-8021
Hostname prefix with X number of dots should not be
accepted.
Full runtime dependencies of public_key-1.15.1: asn1-3.0, crypto-4.6,
erts-6.0, kernel-3.0, stdlib-3.5
---------------------------------------------------------------------
--- ssh-5.1.3 -------------------------------------------------------
-----...
OTP 27.0-rc1
OTP 27.0-rc1
Erlang/OTP 27.0-rc1 is the first 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-rc1/doc.
You can also install the latest release using kerl like this:
kerl build 27.0-rc1 27.0-rc1.
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
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.
OTP 24.3.4.16
Patch Package: OTP 24.3.4.16
Git Tag: OTP-24.3.4.16
Date: 2024-02-12
Trouble Report Id: OTP-18911, OTP-18932, OTP-18964
Seq num: ERIERL-1023
System: OTP
Release: 24
Application: common_test-1.22.1.2, erts-12.3.2.16,
ssh-4.13.2.5
Predecessor: OTP 24.3.4.15
Check out the git tag OTP-24.3.4.16, 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.2 --------------------------------------------
---------------------------------------------------------------------
The common_test-1.22.1.2 application can be applied independently of
other applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18932 Application(s): common_test
Fix how CT finds Erlang/OTP releases for compatability
testing. This functionality is only used to test
Erlang/OTP.
Full runtime dependencies of common_test-1.22.1.2: compiler-6.0,
crypto-3.6, debugger-4.1, erts-7.0, ftp-1.0.0, inets-6.0, kernel-4.0,
observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0,
stdlib-3.5, syntax_tools-1.7, tools-2.8, xmerl-1.3.8
---------------------------------------------------------------------
--- erts-12.3.2.16 --------------------------------------------------
---------------------------------------------------------------------
Note! The erts-12.3.2.16 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-18911 Application(s): erts
Related Id(s): ERIERL-1023, PR-7983
32-bit runtime systems on most Unix like platforms
could crash if a BIF timer was set with a huge timeout
of more than 68 years into the future. In order for the
crash to occur, the huge timer (at a later time than
when it was set) had to become the nearest active timer
set on the specific scheduler on which it was set. This
could not happen on a system with only one scheduler
since there would always be shorter timers in the
system.
Setting a timer larger than 49 days on Windows could
under rare circumstances cause the timeout to be
delayed.
Full runtime dependencies of erts-12.3.2.16: kernel-8.3, sasl-3.3,
stdlib-3.13
---------------------------------------------------------------------
--- ssh-4.13.2.5 ----------------------------------------------------
---------------------------------------------------------------------
The ssh-4.13.2.5 application can be applied independently of other
applications on a full OTP 24 installation.
--- Fixed Bugs and Malfunctions ---
OTP-18964 Application(s): ssh
With this change, Curve25519 and Curve448 KEX methods
become most preferred (related to RFC8731).
Full runtime dependencies of ssh-4.13.2.5: crypto-5.0, erts-9.0,
kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------