Erlang/OTP 27.2

This release of Erlang/OTP can be built from source or installed using pre-built packages for your OS or third-party tools (such as kerl, asdf or mise).

docker run -it erlang:27.2

Potential Incompatibilities #

OTP-19158
Application(s):
inets

The HTTP client now correctly takes into account the full_result option when returning an asynchronous request.

OTP-27.2 #

OTP-19338
Related Id(s):

PR-9023

The SECURITY.md file with guidelines for reporting vulnerabilities and security issues has been added to the git repository.

common_test-1.27.5 #

The common_test-1.27.5 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19284
Related Id(s):

ERIERL-1093, PR-8909

Fixed a bug where the sum of testcases’ execution time in HTML logs was sometimes miscalculated, and the table was not fully printed.

Full runtime dependencies of common_test-1.27.5

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.5.4 #

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

OTP-19243
Related Id(s):

GH-8818, PR-8838

Fixed a crash in the common sub-expression elimination pass.

OTP-19270
Related Id(s):

GH-8783, PR-8898

Fixed a bug where bogus code was generated for consecutive calls to erlang:setelement/2, potentially crashing the runtime system.

OTP-19282
Related Id(s):

PR-8907

When the line_coverage option was used, exceptions could show the wrong line for where the exception was raised.

OTP-19309
Related Id(s):

GH-8942, PR-8970

The line_coverage option would be ignored if given in a compile() attribute within a module.

OTP-19331
Related Id(s):

PR-8978

A segment matching a float in a binary generator will now skip any invalid float (such as a NaN) and continue matching the rest of the binary. Before this correction, the comprehension would stop as soon as an invalid float was encountered.

Example:

1> BadFloat = <<-1:64>>.
<<"ÿÿÿÿÿÿÿÿ">>
2> [X || <<X:64/float>> <= <<0.0/float,BadFloat/binary,42.0/float>>].
[0.0,42.0]

Full runtime dependencies of compiler-8.5.4

crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0

crypto-5.5.2 #

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

OTP-19223
Related Id(s):

GH-8769, PR-8800

crypto:strong_rand_bytes/2 fixed to work on Ubuntu pro with installed FIPS support.

OTP-19329
Related Id(s):

GH-8997, PR-9002

Fixed crypto:hash_final/1 for digest types shake128 and shake256 when using OpenSSL 3.4 or newer.

Full runtime dependencies of crypto-5.5.2

erts-9.0, kernel-5.3, stdlib-3.9

debugger-5.5 #

The debugger-5.5 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19322
Related Id(s):

GH-8963, PR-8987

Defining a fun in the shell using the syntax fun Name/Arity would fail. This has been corrected so that the following now works:

1> F = fun is_atom/1.
#Fun.erl.42.18682967>
> F(a).
true
3> Id = fun id/1.
#Fun.erl.42.18682967>
4> Id(42).
** exception error: undefined shell command id/1
5> id(I) -> I.
ok
6> Id(42).
42

The Debugger has also been corrected to correctly handle this syntax for a BIF.

OTP-19310
Related Id(s):

GH-8810, GH-8821, PR-8986

Erlang/OTP type specifications has been updated to eliminate overlapping domains.

Full runtime dependencies of debugger-5.5

compiler-8.0, erts-15.0, kernel-10.0, stdlib-3.15, wx-2.0

dialyzer-5.3 #

The dialyzer-5.3 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19307
Related Id(s):

GH-8948, PR-8954

Fixed type inference for erlang:system_info(logical_processors).

OTP-19344
Related Id(s):

GH-9027, PR-9034

Dialyzer would crash when attempting to analyze a module compiled with the line_coverage option.

OTP-19310
Related Id(s):

GH-8810, GH-8821, PR-8986

Erlang/OTP type specifications has been updated to eliminate overlapping domains.

Full runtime dependencies of dialyzer-5.3

compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0

eldap-1.2.14 #

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

OTP-19281
Related Id(s):

PR-8906

Corrected dialyzer spec for usage of TLS options. The incorrect usage for the options in eldap could cause dialyzer warnings in user code referring to eldap specs.

Full runtime dependencies of eldap-1.2.14

asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4

erts-15.2 #

The erts-15.2 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19225
Related Id(s):

PR-8789

gen_sctp:peeloff/2 has been fixed to inherit socket options to the peeled off socket more like gen_tcp:accept/1, for example the options tos or tclass.

When setting SCTP options that are unsupported on the platform, some should be silently ignored, but a bug caused the option parsing to derail so the options after could bail out and cause an error instead. This has been fixed.

OTP-19232
Related Id(s):

GH-8487, PR-8794

Fixed a bug where Erlang would corrupt the terminal settings if stdin was a TTY but stdout was not.

OTP-19248
Related Id(s):

PR-8856

Fixed a bug in the non-JIT VM when loading a NIF over a function that is already traced by more than one session. This caused a VM crash. This bug has existed since OTP-27.0, where multiple trace sessions were introduced.

OTP-19261
Related Id(s):

GH-8815, PR-8816

Fixed a bug where the loading of modules with extremely large binary construction instructions crashed the emulator on AArch64.

OTP-19264

inet:getifaddrs/0,1 is improved when using inet_backend = socket.

OTP-19283
Related Id(s):

GH-8903, PR-8912

win32reg:value/2 will no longer crash the emulator when the value is an unterminated REG_SZ of size 0.

OTP-19300
Related Id(s):

PR-8955

Makefile dependency generation on Windows in WSL 2 has been corrected.

OTP-19330
Related Id(s):

GH-8983, PR-9008

Fix lock order violation if a NIF monitor down callback calls enif_whereis_pid. Would cause debug emulator to crash but could potentially lead to deadlocks in optimized emulator.

OTP-19333

Fixed compilation faults when compiling using --enable-vm-probes.

OTP-19341
Related Id(s):

PR-9016

Fixed erl_nif.h on Windows to compile when gcc or clang is used.

OTP-19362
Related Id(s):

PR-9003

Fixed a minor issue in the JIT debug information that confused tools like GDB and perf.

OTP-19360
Related Id(s):

ERIERL-1149, PR-9062

Improved documentation of timers.

OTP-19373
Related Id(s):

PR-9108

The label for a process can now be retrieved also using process_info(Pid, label) in addition to proc_lib:get_label/1.

This new option is useful when one wants to retrieve more than one process info item. For example:

process_info(Pid, [label,registered_name])

Full runtime dependencies of erts-15.2

kernel-9.0, sasl-3.3, stdlib-4.1

inets-9.3.1 #

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

OTP-19158

The HTTP client now correctly takes into account the full_result option when returning an asynchronous request.

OTP-19221
Related Id(s):

ERIERL-1091, PR-8788, PR-8801

A synchronous httpc:request now timeouts after the Timeout specified in HttpOption {timeout, Timeout}.

OTP-19379
Related Id(s):

GH-8829, PR-8878

Fixed a bug where calling httpc:set_options/2 when one of keys: ipfamily or unix_socket, was not present, would cause the other value to get overriden by the default value. The validation of these options was also improved.

OTP-19377
Related Id(s):

ERIERL-1152, PR-9127

The variable Env in the mod_esi callback will now have an additional property {connect_addr, Addr} indicating on which address the server received a connection.

Full runtime dependencies of inets-9.3.1

erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, stdlib-5.0, stdlib-6.0

kernel-10.2 #

Note! The kernel-10.2 application cannot be applied independently of other applications on an arbitrary OTP 27 installation.

   On a full OTP 27 installation, also the following runtime
   dependency has to be satisfied:
   -- erts-15.1 (first satisfied in OTP 27.1)
OTP-19225
Related Id(s):

PR-8789

gen_sctp:peeloff/2 has been fixed to inherit socket options to the peeled off socket more like gen_tcp:accept/1, for example the options tos or tclass.

When setting SCTP options that are unsupported on the platform, some should be silently ignored, but a bug caused the option parsing to derail so the options after could bail out and cause an error instead. This has been fixed.

OTP-19260
Related Id(s):

[PR-8884]

Made it possible to expand help text displayed by pressing ^[h by pressing ^[h again.

OTP-19264

inet:getifaddrs/0,1 is improved when using inet_backend = socket.

OTP-19302
Related Id(s):

PR-8959

Fixed logger:report/0 to mandate at least one element in the report. This fixes an issue with overlapping spec domains in all logger functions that use logger:report/0.

OTP-19305
Related Id(s):

GH-7466, GH-8510, PR-8744

Fixed deadlock on code_server. Multiple calls loading the same module with an on_load function loading call would create a deadlock.

OTP-19253
Related Id(s):

PR-8671

The Kernel application now recognizes the epmd_module and erl_epmd_listen_port parameters, similar to -kernel:connect_all.

OTP-19280
Related Id(s):

GH-8899, PR-8902

The inetrc kernel argument will now tolerate atoms again to improve compatibility with old configurations that relied on atoms working by accident.

The expected type always was, and still remains, a string.

OTP-19301
Related Id(s):

PR-8956

The file:io_device/0 type has been updated to clearly show the difference between a raw and cooked IoDevice.

OTP-19310
Related Id(s):

GH-8810, GH-8821, PR-8986

Erlang/OTP type specifications has been updated to eliminate overlapping domains.

OTP-19342
Related Id(s):

PR-8972

Added the kernel parameter os_cmd_shell that controls which shell should be used by os:cmd/1.

OTP-19372
Related Id(s):

PR-8947

Added logging support to io:user/0, io:standard_io/0 and io:standard_error/0. See io:setopts/2 for more details.

Full runtime dependencies of kernel-10.2

crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0

megaco-4.7 #

The megaco-4.7 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19310
Related Id(s):

GH-8810, GH-8821, PR-8986

Erlang/OTP type specifications has been updated to eliminate overlapping domains.

Full runtime dependencies of megaco-4.7

asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5

mnesia-4.23.3 #

The mnesia-4.23.3 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19292
Related Id(s):

GH-8706, PR-8921

Mnesia table converted from ext_copies to disc_copies will now be properly saved to disk.

OTP-19368
Related Id(s):

ERIERL-1154, PR-9093

Mnesia could crash if table was deleted during checkpoint initialization.

Full runtime dependencies of mnesia-4.23.3

erts-9.0, kernel-5.3, stdlib-5.0

observer-2.17 #

The observer-2.17 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19353
Related Id(s):

PR-8532

In the Memory tab of crashdump_viewer, the blocks sizes in Allocator Summary would all be N/A.

OTP-19253
Related Id(s):

PR-8671

The Kernel application now recognizes the epmd_module and erl_epmd_listen_port parameters, similar to -kernel:connect_all.

Full runtime dependencies of observer-2.17

erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3

os_mon-2.10.1 #

The os_mon-2.10.1 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19304
Related Id(s):

GH-8759, PR-8776

Fixed the memsup memory alarm to use available_memory when available, instead of always using free_memory.

Full runtime dependencies of os_mon-2.10.1

erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0

public_key-1.17 #

The public_key-1.17 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19321
Related Id(s):

PR-8920

public_key:cacerts_load/1 can now be configured via the application environment.

OTP-19375
Related Id(s):

PR-8844

On MacOS, CA certificates are now also loaded from the system keychain.

Full runtime dependencies of public_key-1.17

asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0

snmp-5.18 #

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

OTP-19310
Related Id(s):

GH-8810, GH-8821, PR-8986

Erlang/OTP type specifications has been updated to eliminate overlapping domains.

Full runtime dependencies of snmp-5.18

crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-5.0

ssh-5.2.5 #

The ssh-5.2.5 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19335
Related Id(s):

PR-9021

Documentation is polished after OTP-27 migration to markdown.

Full runtime dependencies of ssh-5.2.5

crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, stdlib-6.0

ssl-11.2.6 #

Note! The ssl-11.2.6 application cannot be applied independently of other applications on an arbitrary OTP 27 installation.

   On a full OTP 27 installation, also the following runtime
   dependency has to be satisfied:
   -- public_key-1.16.4 (first satisfied in OTP 27.1.3)
OTP-19387
Related Id(s):

PR-9067

Enhanced return value spec for active messages from the TLS connection socket.

Full runtime dependencies of ssl-11.2.6

crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, runtime_tools-1.15.1, stdlib-6.0

stdlib-6.2 #

The stdlib-6.2 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19260
Related Id(s):

[PR-8884]

Made it possible to expand help text displayed by pressing ^[h by pressing ^[h again.

OTP-19322
Related Id(s):

GH-8963, PR-8987

Defining a fun in the shell using the syntax fun Name/Arity would fail. This has been corrected so that the following now works:

1> F = fun is_atom/1.
#Fun.erl.42.18682967>
> F(a).
true
3> Id = fun id/1.
#Fun.erl.42.18682967>
4> Id(42).
** exception error: undefined shell command id/1
5> id(I) -> I.
ok
6> Id(42).
42

The Debugger has also been corrected to correctly handle this syntax for a BIF.

OTP-19351
Related Id(s):

PR-9043

Fixed a bug where completion of ‘fun(‘ would cause the shell to crash.

OTP-19361
Related Id(s):

PR-9078

Fixed a bug causing the shell to crash while trying to complete an expression starting with a ‘/’ or a variable followed by ‘(‘ or ‘/’. E.g. Foo/ and Foo(.

OTP-19370
Related Id(s):

GH-9087, PR-9097

zip:extract/2 with keep_old_files now respects the cwd option.

OTP-19380
Related Id(s):

GH-8755

Fixed an error in uri_string:percent_decode spec

OTP-19234
Related Id(s):

GH-8544, PR-8833

Updated shell docs to display the type spec, that is, h(erlang, min, 2) now prints the type spec and documentation in the shell.

> h(erlang,min,2).

  -spec min(Term1, Term2) -> Minimum
               when Term1 :: term(), Term2 :: term(), Minimum :: term().

  Returns the smallest of Term1 and Term2. If the terms compare equal with the == operator, Term1 is returned.
OTP-19301
Related Id(s):

PR-8956

The file:io_device/0 type has been updated to clearly show the difference between a raw and cooked IoDevice.

OTP-19320
Related Id(s):

PR-8889

Added json:format_key_value_list/3 and json:format_key_value_list_checked/3.

OTP-19360
Related Id(s):

ERIERL-1149, PR-9062

Improved documentation of timers.

OTP-19372
Related Id(s):

PR-8947

Added logging support to io:user/0, io:standard_io/0 and io:standard_error/0. See io:setopts/2 for more details.

Full runtime dependencies of stdlib-6.2

compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0

tools-4.1.1 #

The tools-4.1.1 application can be applied independently of other applications on a full OTP 27 installation.

OTP-19273
Related Id(s):

PR-8879

Fixed some deprecated errors on emacs-29.

OTP-19289
Related Id(s):

GH-8867, PR-8919

The cover tool could sometimes wrongly report lines as uncovered.

OTP-19299
Related Id(s):

PR-8949

Fixed tprof:format(IoDevice, ...) to not demand unicode encoding supported by IoDevice.

Full runtime dependencies of tools-4.1.1

compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0

Thanks To #

Bryan Paxton, Daniel Finke, Dániel Szoboszlay, dependabot[bot], Ildar Khizbulin, Jakub Witczak, Jonatan Kłosko, José Valim, Loïc Hoguin, Maas-Maarten Zeeman, Maria Scott, Marko Mindek, Péter Gömöri, Radek Szymczyszyn, Svilen Ivanov, Yaroslav Maslennikov, zmstone