Erlang/OTP 24.1.5

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 or asdf).

docker run -it erlang:24.1.5
Patch Package OTP 24.1.5
Git Tag OTP-24.1.5
Date 2021-11-11
Issue Id
System OTP
Release 24
Application
Potential Incompatibilities

Potential Incompatibilities #

OTP-17734
Application(s):
kernel
Related Id(s):
GH-5327 , OTP-17659

The internal, undocumented, but used, module inet_dns has been fixed to handle mDNS high bit usage of the Class field.

Code that uses the previously obsolete, undocumented and unused record field #dns_rr.func will need to be updated since that field is now used as a boolean flag for the mDNS high Class bit. Code that uses the also undocumented record #dns_query will need to be recompiled since a boolean field #dns_query.unicast_response has been added for the mDNS high Class bit.

erts-12.1.5 #

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

OTP-17735
Application(s):
erts
Related Id(s):
GH-5339

The runtime system could call select() with a too large timeout value when executing on MacOS. This could in turn cause the runtime system to crash.

OTP-17736
Application(s):
erts, kernel
Related Id(s):
GH-5279 , OTP-17559 , PR-5120

The fix for Linux's behaviour when reconnecting an UDP socket in PR-5120 released in OTP-24.1.2 has been refined to only dissolve the socket's connection before a connect if the socket is already connected, that is: only for a reconnect.

This allows code to open a socket with an ephemeral port, get the port number and connect; without the port number changing (on Linux). This turned out to have at least one valid use case (besides test cases).

Should one reconnect the socket then the port number may change, on Linux; it is a known quirk, which can be worked around by binding to a specific port number when opening the socket. If you can do without an ephemeral port, that is...

OTP-17737
Application(s):
erts
Related Id(s):
GH-4989 , GH-5346

Certain distributed signals that for various reasons must to be forced into the distribution buffer even when it is full would instead be lost if the distribution buffer was full when sent. The effected signals:

-- EXIT signals with exit reasons of one word size.

-- DOWN signals with exit reasons of one word size.

-- demonitor signals from a terminating process.

-- unlink_ack signals on OTP 23 and 24.

-- spawn_reply signals on OTP 23 and 24.

Full runtime dependencies of erts-12.1.5: kernel-8.0, sasl-3.3, stdlib-3.13

kernel-8.1.3 #

The kernel-8.1.3 application can be applied independently of other applications on a full OTP 24 installation.

OTP-17734
Application(s):
kernel
Related Id(s):
GH-5327 , OTP-17659

*** POTENTIAL INCOMPATIBILITY ***

The internal, undocumented, but used, module inet_dns has been fixed to handle mDNS high bit usage of the Class field.

Code that uses the previously obsolete, undocumented and unused record field #dns_rr.func will need to be updated since that field is now used as a boolean flag for the mDNS high Class bit. Code that uses the also undocumented record #dns_query will need to be recompiled since a boolean field #dns_query.unicast_response has been added for the mDNS high Class bit.

OTP-17736
Application(s):
erts, kernel
Related Id(s):
GH-5279 , OTP-17559 , PR-5120

The fix for Linux's behaviour when reconnecting an UDP socket in PR-5120 released in OTP-24.1.2 has been refined to only dissolve the socket's connection before a connect if the socket is already connected, that is: only for a reconnect.

This allows code to open a socket with an ephemeral port, get the port number and connect; without the port number changing (on Linux). This turned out to have at least one valid use case (besides test cases).

Should one reconnect the socket then the port number may change, on Linux; it is a known quirk, which can be worked around by binding to a specific port number when opening the socket. If you can do without an ephemeral port, that is...

Full runtime dependencies of kernel-8.1.3: crypto-5.0, erts-12.0, sasl-3.0, stdlib-3.13