Patch Package: OTP 29.1
Git Tag: OTP-29.1
Date: 2026-09-16
Trouble Report Id: OTP-19631, OTP-20118, OTP-20131, OTP-20145,
OTP-20152, OTP-20158, OTP-20169, OTP-20175,
OTP-20177, OTP-20180, OTP-20187, OTP-20188,
OTP-20189, OTP-20209, OTP-20211, OTP-20213,
OTP-20218, OTP-20228, OTP-20235, OTP-20236,
OTP-20238, OTP-20246, OTP-20249, OTP-20254,
OTP-20255, OTP-20256, OTP-20262, OTP-20265,
OTP-20267, OTP-20276, OTP-20277, OTP-20280,
OTP-20290, OTP-20291, OTP-20292, OTP-20293,
OTP-20295, OTP-20297, OTP-20298, OTP-20303,
OTP-20304, OTP-20305, OTP-20309, OTP-20316,
OTP-20317, OTP-20318, OTP-20320, OTP-20322,
OTP-20326, OTP-20327, OTP-20328, OTP-20331,
OTP-20335, OTP-20338, OTP-20339, OTP-20352,
OTP-20354, OTP-20356, OTP-20358, OTP-20362,
OTP-20364, OTP-20365, OTP-20367, OTP-20373,
OTP-20374
Seq num: ERIERL-1356, GH-10879, GH-10968, GH-11093,
GH-11119, GH-11155, GH-11248, GH-11308,
GH-11338, GH-11344, GH-11349, GH-11351,
GH-11352, GH-11360, GH-11366, GH-11367,
GH-11397, GH-11398, GH-11401, GH-11406,
GH-11413, GH-11414, GH-11423, GH-11472,
GH-11534, GH-4417, GH-7862, GH-9302,
OTP-20102, PR-10297, PR-11074, PR-11096,
PR-11097, PR-11115, PR-11128, PR-11129,
PR-11130, PR-11133, PR-11137, PR-11144,
PR-11159, PR-11165, PR-11167, PR-11170,
PR-11196, PR-11203, PR-11216, PR-11226,
PR-11249, PR-11260, PR-11274, PR-11284,
PR-11300, PR-11313, PR-11316, PR-11324,
PR-11335, PR-11345, PR-11356, PR-11359,
PR-11361, PR-11363, PR-11375, PR-11376,
PR-11378, PR-11379, PR-11388, PR-11390,
PR-11391, PR-11396, PR-11410, PR-11422,
PR-11424, PR-11426, PR-11438, PR-11440,
PR-11442, PR-11444, PR-11446, PR-11447,
PR-11460, PR-11466, PR-11477, PR-11501,
PR-11505, PR-11507, PR-11530, PR-11552,
PR-11556, PR-11563, PR-11566, PR-11567,
PR-11570, PR-11574, PR-11600
System: OTP
Release: 29
Application: asn1-5.5.1, common_test-1.31.2,
compiler-10.0.5, crypto-5.10, dialyzer-6.0.3,
erts-17.1, inets-9.8, kernel-11.0.4,
mnesia-4.27, odbc-2.17.1, public_key-1.21.6,
runtime_tools-2.5, ssl-11.7.6, stdlib-8.1,
syntax_tools-4.1.1, tools-4.2.3, wx-2.7
Predecessor: OTP 29.0.6
Check out the git tag OTP-29.1, and build a full OTP system including documentation. Apply one or more applications from this build as patches to your installation using the 'otp_patch_apply' tool. For information on install requirements, see descriptions for each application version below.
POTENTIAL INCOMPATIBILITIES
-
When
beam_libreturns an error tuple, the filename in the information tuple is now a list of characters instead of an atom.Example:
1> beam_lib:chunks(code:which(lists), ["nope"]). {error,beam_lib, {missing_chunk,".../git/otp/lib/stdlib/ebin/lists.beam", "nope"}}The reason for this change is that a long file name is not guaranteed to fit in an atom. Applications or tools that do deep inspection of the
beam_liberrors (not recommended) will need to be updated.Own Id: OTP-20118
Application(s): stdlib
Related Id(s): PR-11167
OTP-29.1
Improvements and New Features
-
A new
versionsmodule has been added to theruntime_toolsapplication containing functions for, e.g., comparing, versions that adhere to the OTP Versions Scheme.The documentation of the OTP Versions Scheme has also been improved.
asn1-5.5.1
The asn1-5.5.1 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
The modern representation of BITSTRINGs is now always supported for encoding, regardless of any legacy options given. The JER backend would not support the modern representation when any legacy option was given.
Own Id: OTP-20145
Related Id(s): PR-11097 -
The
make cleancommand did not remove all generated.erlfiles.Own Id: OTP-20295
Related Id(s): PR-11375
Full runtime dependencies of asn1-5.5.1
erts-14.0, kernel-9.0, stdlib-5.0
common_test-1.31.2
The common_test-1.31.2 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
The internal
cte_trackevent handler now correctly displays the suite name for suites without aninit_per_suite/1callback.Own Id: OTP-20316
Related Id(s): PR-11501
Full runtime dependencies of common_test-1.31.2
compiler-10.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-11.0, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, stdlib-8.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8
compiler-10.0.5
The compiler-10.0.5 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
Fixed a native record crash in the
sys_core_foldcompiler pass. -
The compiler could crash when compiling a map comprehension.
-
Fixed a crash when the key pattern in a map comprehension was a bitstring.
-
Fixed an issue that could crash the compiler when compiling comprehensions with the
compr_assignfeature enabled. -
Code that called
erlang:0()inside a fun could crash the compiler. -
Fixed an internal error when
lists:keyfind/3is called with an argument that exceeds system limits. -
An incorrect
useless_buildingwarning has been eliminated. -
In rare circumstances, the type analysis pass of the compiler could run for many minutes.
Full runtime dependencies of compiler-10.0.5
crypto-5.1, erts-13.0, kernel-8.4, stdlib-8.0
crypto-5.10
The crypto-5.10 application can be applied independently of other applications on a full OTP 29 installation.
Improvements and New Features
-
The documentation of the
cryptomodule now contains runnable examples for most functions. The examples are verified by the crypto test suite, so they always match actual behavior.Own Id: OTP-20373
Related Id(s): PR-11170
Full runtime dependencies of crypto-5.10
erts-9.0, kernel-6.0, stdlib-3.9
dialyzer-6.0.3
The dialyzer-6.0.3 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
Fixed Dialyzer crash when overriding built-in types.
-
Typer crashed when multiple functions were written in the same line. For example:
-module(m). f() -> ok. g() -> ok.Own Id: OTP-20297
Related Id(s): PR-11466
Full runtime dependencies of dialyzer-6.0.3
compiler-10.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
erts-17.1
The erts-17.1 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
Fixed bug in
ets:member/2forset,bagandduplicate_bag. The bug could (maybe) lead toets:memberspuriously returning false for a value which is actually a member for a table that faces high insert load.Own Id: OTP-20152
Related Id(s): PR-11115 -
Fixed crashing bug caused by race between timer creating process and suspending receiver of the timer. Only seen to cause crash one time by extremely provoking test case. Bug exists only since OTP 29.0.
Own Id: OTP-20175
Related Id(s): PR-11196 -
Fixed bug in
enif_realloc_binarywhen called with a read-only binary. Instead of returning false at out-of-memory failure, it returned true and did nothing.Own Id: OTP-20187
Related Id(s): PR-11133 -
Fixed alternate signal stack sizing on musl (Alpine) running on CPUs whose Linux kernel reports large signal frames (AVX-512/AMX). It caused emulator to abort during startup with "Failed to set alternate signal stack".
-
For
socket:recvmmsg/6, the buffer length was not handled correctly when the OS network stack truncated the received message, so garbage data with incorrect length could be delivered to the calling process. This bug has been corrected.Own Id: OTP-20246
Related Id(s): PR-11335 -
binary_to_term/1will now reject an external native record with duplicated fields. -
Fixed a crash upon starting the emulator on systems with a very large minimum signal stack size.
-
Fixed lock order violation during crash dump due to export table exhaustion. Only problem for debug emulator.
Own Id: OTP-20305
Related Id(s): PR-11460 -
Fixed rounding errors when converting large integers to floating point numbers, explicitly with
float/1or implicitly in arithmetic such as1.0 * N. Integers with absolute values larger than 64 bits that could not be represented exactly as a float could be rounded to the second nearest float instead of the nearest. For example,float(428654966685883400000)returned4.2865496668588343e20instead of the correct4.286549666858834e20, which is whatbinary_to_float/1returns for the same number.Own Id: OTP-20317
Related Id(s): PR-11391 -
An error check in
prim_inethas been fixed. This manifested itself asfile:sendfile/*sometimes crashing instead of returning an error when the remote end closes the socket during initialization.Own Id: OTP-20356
Related Id(s): PR-11438
Improvements and New Features
-
Fairness of code permission locks have been improved to avoid long latencies for code loading and trace operations.
Own Id: OTP-20188
Related Id(s): PR-11144 -
The BIFs that convert strings to integers (for example
binary_to_integer/1) are now much faster for huge input strings. On a modern computer, even a string with more than a million decimal digits should finish in less than a second.The
divandremoperators are now also much faster for large operands. -
Arithmetic operations on large integers will now increase the reduction count for the process, causing context switches to occur more frequently when doing arithmetic on large integers.
Own Id: OTP-20211
Related Id(s): PR-11274
Full runtime dependencies of erts-17.1
kernel-9.0, sasl-3.3, stdlib-4.1
inets-9.8
The inets-9.8 application can be applied independently of other applications on a full OTP 29 installation.
Improvements and New Features
-
OPTIONS is now accepted for HTTP/1.x requests and routed through the normal module pipeline like other standard methods. Requests that no module handles still receive a 501 (Not Implemented) response, so behavior is unchanged for deployments that do not add explicit OPTIONS handling.
Full runtime dependencies of inets-9.8
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-11.0.4
The kernel-11.0.4 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
Fixed incorrect TOS format when using
gen_udpwith thesocketbackend.Own Id: OTP-20131
Related Id(s): GH-10968, OTP-20102 -
Decoding of names in
inet_reshas been tightened to not allow names longer than 255 octets, as according to RFC 1035.Decoding has also been made more strict by only allowing compression pointers to lower positions in the message.
A few bugs when decoding malformed truncated DNS messages have also been fixed, as well as handling broken UTF-8 content in NAPTR RR:s regular expressions field.
Own Id: OTP-20228
Related Id(s): PR-11300 -
When using the
socketbackend ingen_tcp, the default value for theread_aheadoption was incorrect and has been corrected, according the documentation, to betrue.Own Id: OTP-20238
Related Id(s): PR-11284 -
A field in
net_kernel's internal state was not cleaned up in some cases for failed connections could cause the state to grow indefinitely over time. This has now been fixed. -
Fixed
pg:which_groups/1to not include empty groups where all members have leaved. Bug existed since OTP 29.0.
Full runtime dependencies of kernel-11.0.4
crypto-5.8, erts-17.0, sasl-3.0, stdlib-8.0
mnesia-4.27
The mnesia-4.27 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
Fixed
mnesia:force_load_table/1getting stuck when the remote node becomes unreachable during table loading. When a network loader is aborted due to sender node going down and a user has forced a table load, we now retry loading from disc instead. Additionally, for disc_only_copies tables, the process actually loading the table is the dets server process, not the mnesia loader, so it would not receive the abort notification and would hang indefinitely. Now it correctly receives the notification and aborts table loading. -
Fixed incorrect results from
mnesia:select_reverse/2,3onordered_settables inside a transaction that had already written to or deleted from the same table. Deleted records could reappear, updated records could appear twice, and the descending order was not preserved.Own Id: OTP-20364
Related Id(s): PR-11563
Improvements and New Features
-
The documentation of the
mnesiamodule now contains runnable examples for most functions. The examples are verified by the mnesia test suite, so they always match actual behavior.Own Id: OTP-20374
Related Id(s): PR-11216
Full runtime dependencies of mnesia-4.27
erts-9.0, kernel-5.3, stdlib-5.0
odbc-2.17.1
The odbc-2.17.1 application can be applied independently of other applications on a full OTP 29 installation.
Improvements and New Features
-
Added the
max_long_column_sizeoption to limit buffer allocation size preventing memory exhaustion.
Full runtime dependencies of odbc-2.17.1
erts-6.0, kernel-3.0, stdlib-2.0
public_key-1.21.6
The public_key-1.21.6 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
Added missing
no_cacerts_foundclauses so that the intended{failed_load_cacerts, no_cacerts_found}error is raised and formatted properly.Own Id: OTP-20318
Related Id(s): PR-11378 -
Align moduli and pubkey_moduli.hrl to state on OTP-28 and newer.
Own Id: OTP-20367
Related Id(s): PR-11574
Improvements and New Features
-
Worked around domain component using wrong ASN-1
PrintableStringencoding instead ofIA5Stringencoding. -
ASN.1 files are now compiled sequentially to guarantee reproducible builds.
Full runtime dependencies of public_key-1.21.6
asn1-5.0, crypto-5.8, erts-13.0, kernel-8.0, stdlib-4.0
runtime_tools-2.5
The runtime_tools-2.5 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
Fixed bug if a process that called
dbg:session/2exits beforedbg:session_destroy/1is called. An error report was logged and any trace messages lost and not delivered.Own Id: OTP-20218
Related Id(s): PR-11260
Improvements and New Features
-
A new
versionsmodule has been added to theruntime_toolsapplication containing functions for, e.g., comparing, versions that adhere to the OTP Versions Scheme.The documentation of the OTP Versions Scheme has also been improved.
Full runtime dependencies of runtime_tools-2.5
erts-16.0, kernel-10.0, mnesia-4.12, stdlib-6.0
ssl-11.7.6
Note! The ssl-11.7.6 application cannot be applied independently of other applications on an arbitrary OTP 29 installation.
On a full OTP 29 installation, also the following runtime
dependency has to be satisfied:
-- public_key-1.21.1 (first satisfied in OTP 29.0.1)
Fixed Bugs and Malfunctions
-
Undecodable
certificate_authoritiesnames are now skipped, as they are just a hint. -
Corrected generated keylog information generated from the
keylog_hsoption in the corner case that it was invoked after the client had reached its connection state, but the server closed the connection before it reached its connection state.Own Id: OTP-20358
Related Id(s): ERIERL-1356, PR-11570
Improvements and New Features
-
Added TLS-1.3
selected_grouptossl:connection_information/2.Own Id: OTP-20326
Related Id(s): PR-11440 -
The ECDHE-PSK Chacha20-Poly1305 cipher suites are now supported. This is relevant for TLS-1.2 (and lower).
Own Id: OTP-20331
Related Id(s): PR-11345
Full runtime dependencies of ssl-11.7.6
crypto-5.8, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.21.1, runtime_tools-1.15.1, stdlib-7.0
stdlib-8.1
The stdlib-8.1 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
When
beam_libreturns an error tuple, the filename in the information tuple is now a list of characters instead of an atom.Example:
1> beam_lib:chunks(code:which(lists), ["nope"]). {error,beam_lib, {missing_chunk,".../git/otp/lib/stdlib/ebin/lists.beam", "nope"}}The reason for this change is that a long file name is not guaranteed to fit in an atom. Applications or tools that do deep inspection of the
beam_liberrors (not recommended) will need to be updated.Own Id: OTP-20118
Related Id(s): PR-11167*** POTENTIAL INCOMPATIBILITY ***
-
The default seed in the
randmodule has been improved to spread out its entropy over all three seed words.This avoids identical first random numbers from two successive seeds on machines with low system time resolution.
Own Id: OTP-20158
Related Id(s): PR-11165 -
Fixed
unicode:characters_to_binary/2to handle incomplete utf-32 sequences without crashing.Also fixed a performance regression in
unicode:characters_to_nfkd_list/1.Own Id: OTP-20169
Related Id(s): PR-11130 -
The
arraymodule has been improved.array:slice/3now raisesbadargfor negative lengths.The performance of
array:mapfoldl/3andarray:sparse_mapfoldl/3has been improved.The documentation has been clarified regarding array growth/shrink behavior and how
concat/1,2handles mixed arrays.Own Id: OTP-20177
Related Id(s): PR-11159 -
Added more checks in the linter for badly formed
{Name,Arity}attributes -
Fixed return value of
zip:zip_get/2. When a file was extracted to a directory, the function returned a map instead of a file name.Own Id: OTP-20298
Related Id(s): PR-11313 -
When
compr_assignis enabled, the linter will correctly check for unbounded variables after block expressions in comprehensions. -
When compiling a module with a triple-quoted string with escape sequences and a chunk boundary happened to fall just after an escape character, that character was not passed to the reentrancy continuation, so the scanner interpreted the following characters as not an escape sequence.
This bug has now been fixed.
-
Fixed some errors in examples in the documentation for the
stringanduri_stringmodules.Own Id: OTP-20322
Related Id(s): PR-11446 -
Linter will emit better error messages when a behaviour attribute has a bad module name.
Improvements and New Features
-
uri_string:parse/1now reports the actual offending character in error tuples instead of reporting a misleading cascade-failure position.Previously, when parsing a URI containing an invalid character (such as
|or non-ASCII characters likeö), the error tuple would point to the:character — the position where the parser's final backtracking attempt failed — rather than the character that actually violated the URI grammar. For example,uri_string:parse("http://localhost/A|B")returned{error,invalid_uri,":"}instead of the more helpful{error,invalid_uri,"|"} -
Fixed a guard precedence bug in
uri_string:compose_query/2that caused inconsistent error handling depending on the encoding option.When
compose_query/2was called with invalid input (e.g. an atom instead of a string) and{encoding, unicode}, it would crash with** exception error: bad argumentinstead of returning the expected{error, invalid_input, Term}tuple. The same call with{encoding, utf8}correctly returned the error tuple. Both encoding options now consistently return{error, invalid_input, Term}for invalid input.Own Id: OTP-20236
Related Id(s): PR-11128
Full runtime dependencies of stdlib-8.1
compiler-5.0, crypto-4.5, erts-16.0.3, kernel-11.0, sasl-3.0, syntax_tools-3.2.1
syntax_tools-4.1.1
The syntax_tools-4.1.1 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
Fixed exception when the epp_dodger AST contains macro-named record.
-
Any caller who passed a single syntax tree that was not a form_list (e.g.
erl_recomment:recomment_forms(erl_syntax:atom(foo), Cs)or any expression/function tree) would get a hard crash instead of the documented result. This issue has been fixed.Own Id: OTP-20290
Related Id(s): PR-11442
Full runtime dependencies of syntax_tools-4.1.1
compiler-9.0, erts-16.0, kernel-10.3, stdlib-8.0
tools-4.2.3
The tools-4.2.3 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
The
tags.erlmodule is used to generateTAGSfiles for Emacs. There was a case where single quote items starting in position 0 would crash the scanner. This use case can potentially happen in docstrings, although not too common. This fix makes the scanner to handle such cases instead of crashing.Own Id: OTP-20293
Related Id(s): PR-11447 -
Updated the Emacs skeleton to reflect latest
format_statuscallback handling.Own Id: OTP-20339
Related Id(s): PR-11507
Full runtime dependencies of tools-4.2.3
compiler-8.5, crypto-5.9, erts-15.0, kernel-10.0, public_key-1.21, runtime_tools-2.1, stdlib-6.0
wx-2.7
The wx-2.7 application can be applied independently of other applications on a full OTP 29 installation.
Fixed Bugs and Malfunctions
-
A large set of correctness and robustness fixes were applied across the
wxapplication, addressing issues found by static analysis of both the Erlang and C/C++ sources.Own Id: OTP-20335
Related Id(s): PR-11530
Improvements and New Features
-
Removed configure checks that prevented cross compilation of wx. Note that cross compilation is not tested and may require manual configuration.
Own Id: OTP-20189
Related Id(s): PR-11137
Full runtime dependencies of wx-2.7
erts-12.0, kernel-8.0, stdlib-5.0
Thanks to
Alois Vitasek, Anton Thomasson, ausimian, Bernhard M. Wiedemann, Cole Christensen, Dmitri Vereshchagin, Dmytro Lytovchenko, Eric Meadows-Jönsson, haoxian, Jianbo He, João Henrique Ferreira de Freitas, Johan Bevemyr, John Downey, Jonatan Männchen, Julian Doherty, kagetora66, k-patrik, Louis Pilfold, Lukasz Samson, Luke Bakken, Maria Scott, Mikael Pettersson, Paul Guyot, Renato Ceolin, ruslandoga, Scott Wiggins, Stanislav Yaglo, Thomas Arts, Thomas Cioppettini, Zeke Dou, zmstone