| Patch Package | OTP 28.1 |
| Git Tag | OTP-28.1 |
| Date | 2025-09-17 |
| Issue Id |
ERIERL-1209
ERIERL-1231
|
| System | OTP |
| Release | 28 |
| Application |
|
| Potential Incompatibilities |
Highlights #
- OTP-19552
-
- Application(s):
- public_key, ssl
- Related Id(s):
Added support for quantum crypto signature algorithm ML-DSA (ssl and public_key) and key exchange algorithm ML-KEM (ssl).
- OTP-19655
-
- Application(s):
- runtime_tools
- Related Id(s):
A User’s Guide to
dbgis now available in the documentation. - OTP-19657
-
- Application(s):
- crypto
- Related Id(s):
Support for ML-DSA and ML-KEM provided by OpenSSL 3.5.
Algorithms
mldsa44,mldsa65andmldsa87can be passed tocrypto:sign/4andcrypto:verify/5.New functions
crypto:encapsulate_key/2andcrypto:decapsulate_key/3can be used withmlkem512,mlkem768andmlkem1024to safely generate and communicate an encapsulated shared secret. - OTP-19706
-
TLS server now fails early for supplied PEM file issues, such as the file not being found.
Potential Incompatibilities #
- OTP-19756
-
- Application(s):
- kernel
- Related Id(s):
The internal
inet_dns_tsigandinet_resmodules have been fixed to TSIG verify the correct timestamp.In the process two undocumented error code atoms have been corrected to
notauthandnotzoneto adhere to the DNS RFCs. Code that relied on the previous incorrect values may have to be corrected.
OTP-28.1 #
- OTP-19646
-
When any Erlang/OTP application has been disabled by
configure, warnings fromex_docwhen building the documentation are now disabled. - OTP-19677
-
- Related Id(s):
./otp_buildnow respectsTYPEandFLAVORto when set. - OTP-19752
-
- Related Id(s):
Rendering of some tables in the documentation has been improved.
- OTP-19749
-
- Related Id(s):
In Efficiency Guide, the section about
setelement/3in Common Caveats has been updated.
asn1-5.4.2 #
The asn1-5.4.2 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19681
-
- Related Id(s):
Decoding a constrained BIT STRING using JER was broken.
- OTP-19686
-
- Related Id(s):
NIFs and linked-in drivers are now loadable when running in an Erlang source tree on Windows.
Full runtime dependencies of asn1-5.4.2
erts-14.0, kernel-9.0, stdlib-5.0
common_test-1.29 #
The common_test-1.29 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19642
-
- Related Id(s):
-
ERIERL-1231, PR-9862
Improved printing of maps. Map keys are now printed in the same order as
maps:iterator(Map, ordered)would sort them. - OTP-19714
-
- Related Id(s):
ct:printwill now suppress printing of timestamp and heading when the heading option is set to the empty string.
Full runtime dependencies of common_test-1.29
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-9.0.2 #
The compiler-9.0.2 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19660
-
Fixed a compiler crash caused by patch order in destructive update.
- OTP-19689
-
Fixed a compiler crash in
beam_ssa_pre_codegencaused by wrong handling of multiple phi patches in the destructive update pass. - OTP-19693
-
Fixed a crash when a zip generator contains a map pattern.
- OTP-19722
-
In rare circumstances, the compiler could crash when compiling code using bit syntax construction.
- OTP-19758
-
- Related Id(s):
A few minor bugs that could affect the
beam_debug_infooption were fixed.
Full runtime dependencies of compiler-9.0.2
crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
crypto-5.7 #
The crypto-5.7 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19686
-
- Related Id(s):
NIFs and linked-in drivers are now loadable when running in an Erlang source tree on Windows.
- OTP-19721
-
Fixed bug seen to cause beam crash when doing
init:restart()withcryptostatically linked to OpenSSL (--disable-dynamic-ssl-lib). Bug exists since OTP 28.0. - OTP-19725
-
Fixed
crypto:strong_rand_bytesfailing afterinit:restarton MacOS with statically linked OpenSSL. - OTP-19733
-
Fixed
crypto:hash(shake128 | shake256)for OpenSSL 3.4 and newer. - OTP-19752
-
- Related Id(s):
Rendering of some tables in the documentation has been improved.
- OTP-19657
-
- HIGHLIGHT
Support for ML-DSA and ML-KEM provided by OpenSSL 3.5.
Algorithms
mldsa44,mldsa65andmldsa87can be passed tocrypto:sign/4andcrypto:verify/5.New functions
crypto:encapsulate_key/2andcrypto:decapsulate_key/3can be used withmlkem512,mlkem768andmlkem1024to safely generate and communicate an encapsulated shared secret. - OTP-19666
-
- Related Id(s):
Added support for SHA2 512/224 and SHA2 512/256 truncated hashes.
Full runtime dependencies of crypto-5.7
erts-9.0, kernel-6.0, stdlib-3.9
debugger-6.0.3 #
The debugger-6.0.3 application can be applied independently of other applications on a full OTP 28 installation.
Full runtime dependencies of debugger-6.0.3
compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0
edoc-1.4.1 #
The edoc-1.4.1 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19752
-
- Related Id(s):
Rendering of some tables in the documentation has been improved.
Full runtime dependencies of edoc-1.4.1
erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
erl_interface-5.6.1 #
The erl_interface-5.6.1 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19671
-
- Related Id(s):
Fixed C compiler warnings generated by codechecker.
- OTP-16607
-
- Related Id(s):
-
OTP-16608
The
eiAPI for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled.
erts-16.1 #
The erts-16.1 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19685
-
- Related Id(s):
Made sure to not set any terminal settings when they have not been changed. Doing so can trigger a SIGTTOU signal which would terminate Erlang when it should not.
- OTP-19728
-
As an optimization, when the
unicode:characters_to_binary/3was used to convert fromlatin1toutf8or vice versa, it would return the original binary unchanged if it only contained 7-bit ASCII characters. That otpimization was broken in Erlang/OTP 27, and has now been mended. - OTP-19671
-
- Related Id(s):
Fixed C compiler warnings generated by codechecker.
- OTP-19730
-
- Related Id(s):
Added support in module
refor export and import of compiled regular expression in order to safely move them between Erlang node instances. - OTP-19739
-
- Related Id(s):
Added new
erlcommand line flag+Mumadtn <bool>causingMADV_DONTNEEDto be passed tomadvise()instead ofMADV_FREE.
Full runtime dependencies of erts-16.1
kernel-9.0, sasl-3.3, stdlib-4.1
inets-9.4.2 #
The inets-9.4.2 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19760
-
Fixed a RFC 2616 violation, where a http request, made by httpc, without providing any options, would be sent with an empty TE header, without also having a TE value in the connection header. Now the default request doesn’t send a TE header at all.
Full runtime dependencies of inets-9.4.2
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.4 #
The kernel-10.4 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19667
-
- Related Id(s):
A remote shell can now exit by closing the input stream, without terminating the remote node.
- OTP-19756
-
- POTENTIAL INCOMPATIBILITY
The internal
inet_dns_tsigandinet_resmodules have been fixed to TSIG verify the correct timestamp.In the process two undocumented error code atoms have been corrected to
notauthandnotzoneto adhere to the DNS RFCs. Code that relied on the previous incorrect values may have to be corrected. - OTP-19737
-
- Related Id(s):
-
ERIERL-1209, PR-10112
The rudimentary DNS resolver
inet_reshas aqcuired 3 new functionsinet_res:gethostbyname/4,inet_res;getbyname/4andinet_res:gethostbyaddr/3, that all take an option list argument.This option list can be used to override the Kernel application’s resolver options when calling the
inet_resfunction directly.
Full runtime dependencies of kernel-10.4
crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0
megaco-4.8.1 #
The megaco-4.8.1 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19669
-
- Related Id(s):
Documentation improvements.
- OTP-19752
-
- Related Id(s):
Rendering of some tables in the documentation has been improved.
Full runtime dependencies of megaco-4.8.1
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.24.1 #
The mnesia-4.24.1 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19745
-
- Related Id(s):
Mnesia no longer crashes when the node name is used as a table name.
Full runtime dependencies of mnesia-4.24.1
erts-9.0, kernel-5.3, stdlib-5.0
observer-2.18.1 #
The observer-2.18.1 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19754
-
- Related Id(s):
etopwill now fully stop before returning frometop:stop/0.
Full runtime dependencies of observer-2.18.1
erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3
os_mon-2.11.1 #
The os_mon-2.11.1 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19686
-
- Related Id(s):
NIFs and linked-in drivers are now loadable when running in an Erlang source tree on Windows.
Full runtime dependencies of os_mon-2.11.1
erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
public_key-1.18.3 #
Note! The public_key-1.18.3 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
On a full OTP 28 installation, also the following runtime
dependency has to be satisfied:
-- crypto-5.7 (first satisfied in OTP 28.1)
- OTP-19686
-
- Related Id(s):
NIFs and linked-in drivers are now loadable when running in an Erlang source tree on Windows.
- OTP-19727
-
- Related Id(s):
Added missing reference to
SignedAttributesso that it now works with theder_encodeandder_decodefunctions. - OTP-19552
-
- HIGHLIGHT
Added support for quantum crypto signature algorithm ML-DSA (ssl and public_key) and key exchange algorithm ML-KEM (ssl).
Full runtime dependencies of public_key-1.18.3
asn1-5.0, crypto-5.7, erts-13.0, kernel-8.0, stdlib-4.0
runtime_tools-2.3 #
The runtime_tools-2.3 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19686
-
- Related Id(s):
NIFs and linked-in drivers are now loadable when running in an Erlang source tree on Windows.
- OTP-19648
-
- Related Id(s):
The default tracer is now aware that it is started by a remote shell (
-remsh), in which case the traces will be sent to the remote group_leader to make the traces visible in the remote shell. - OTP-19655
-
- HIGHLIGHT
A User’s Guide to
dbgis now available in the documentation.
Full runtime dependencies of runtime_tools-2.3
erts-16.0, kernel-10.0, mnesia-4.12, stdlib-6.0
snmp-5.19.1 #
The snmp-5.19.1 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19619
-
Using ASN.1 generated code for decode/encode of basic types, starting with Counter64.
- OTP-19696
-
- Related Id(s):
Reworked the timer handling of the (SNMP) manager start notification feature.
- OTP-19723
-
- Related Id(s):
Added missing specs to already documented functions.
Full runtime dependencies of snmp-5.19.1
asn1-5.4, crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-5.0
ssl-11.4 #
Note! The ssl-11.4 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
On a full OTP 28 installation, also the following runtime
dependencies have to be satisfied:
-- crypto-5.7 (first satisfied in OTP 28.1)
-- public_key-1.18.3 (first satisfied in OTP 28.1)
- OTP-19694
-
- Related Id(s):
The sender side is now closed if an error occurs on the socket.
- OTP-19698
-
The PEM cache process no longer crashes when a configured file has been deleted before it could be read.
- OTP-19736
-
Corrected handling of
ssl:sockname/1for DTLS, so that it now will return the correct result in all situations. - OTP-19752
-
- Related Id(s):
Rendering of some tables in the documentation has been improved.
- OTP-19552
-
- HIGHLIGHT
Added support for quantum crypto signature algorithm ML-DSA (ssl and public_key) and key exchange algorithm ML-KEM (ssl).
- OTP-19651
-
- Related Id(s):
Now allowing
send/2to buffer data when using sockets backend. Use ‘high_watermark’ and ‘low_watermark’ to steer buffering as gen_tcp does. - OTP-19688
-
- Related Id(s):
Now allowing the PSK identity to be the empty string in TLS-1.2 for compatibility reasons. It is allowed according to the spec, although providing a proper value makes more sense.
- OTP-19706
-
- HIGHLIGHT
TLS server now fails early for supplied PEM file issues, such as the file not being found.
Full runtime dependencies of ssl-11.4
crypto-5.7, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.18.3, runtime_tools-1.15.1, stdlib-7.0
stdlib-7.1 #
Note! The stdlib-7.1 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
On a full OTP 28 installation, also the following runtime
dependency has to be satisfied:
-- erts-16.0.3 (first satisfied in OTP 28.0.3)
- OTP-19647
-
The
save_module/1command in the shell now saves both the locally defined records and the imported records using therr/1command. - OTP-19649
-
It’s now possible to write
lists:map(fun is_atom/1, [])orlists:map(fun my_func/1, [])in the shell, instead oflists:map(fun erlang:is_atom/1, [])orlists:map(fun shell_default:my_func/1, []). - OTP-19659
-
- Related Id(s):
The shell no longer crashes when requesting to auto-complete map keys containing non-atoms.
- OTP-19667
-
- Related Id(s):
A remote shell can now exit by closing the input stream, without terminating the remote node.
- OTP-19704
-
Fixed guard check for
is_record/2in the linter. - OTP-19759
-
- Related Id(s):
Added a flag option
shell_hintsand functionshell:hints/1. You can now disable the warning in the shell when a command is taking longer than 5 seconds.
Full runtime dependencies of stdlib-7.1
compiler-5.0, crypto-4.5, erts-16.0.3, kernel-10.0, sasl-3.0, syntax_tools-3.2.1
syntax_tools-4.0.1 #
The syntax_tools-4.0.1 application can be applied independently of other applications on a full OTP 28 installation.
Full runtime dependencies of syntax_tools-4.0.1
compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0
tools-4.1.3 #
The tools-4.1.3 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19726
-
- Related Id(s):
Fixed some deprecations for newer emacs versions.
Full runtime dependencies of tools-4.1.3
compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0
wx-2.5.2 #
The wx-2.5.2 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19686
-
- Related Id(s):
NIFs and linked-in drivers are now loadable when running in an Erlang source tree on Windows.
- OTP-19724
-
Now avoiding that wx crashes the VM when running on OTP28+ due to one of the new compiler hardening options.
- OTP-19735
-
- Related Id(s):
wxwas missing licenses that come from OpenGL documentation and wxWidgets documentation.
Full runtime dependencies of wx-2.5.2
erts-12.0, kernel-8.0, stdlib-5.0
xmerl-2.1.6 #
The xmerl-2.1.6 application can be applied independently of other applications on a full OTP 28 installation.
- OTP-19757
-
Corrected the bug that comments couldn’t be exported.
#xmlCommentelements is now exported when callingexport/3orexport_simple/3and similar functions. Top level comments will only be exported if one creates and export elements as a document.
Full runtime dependencies of xmerl-2.1.6
erts-6.0, kernel-8.4, stdlib-2.5
Thanks To #
Alberto Sartori, Alexander Clouter, ausimian, Danil Zagoskin, dependabot[bot], Dmytro Lytovchenko, Dunya Kokoschka, Håkan Stenholm, Hans Svensson, Jan Uhlig, Magnus Henoch, Mend Renovate, Paulo Tomé, Rodolfo Carvalho, Savvas Nicholas, Simon Oulevay, Tomas Abrahamsson, Tom Schuster, Yaroslav Maslennikov