TL;DR
Erlang/OTP 29.0 has been officially released, offering new features like native records, multi-valued comprehensions, and enhanced security defaults. The update also includes compiler warnings and JIT improvements. Some features remain experimental, and users should review changes for compatibility.
Erlang/OTP 29.0 has been officially released, introducing a range of new features, security enhancements, and compiler warnings, according to the Erlang team. This major update impacts developers working on Erlang-based applications by offering improved safety defaults and language capabilities.
The release includes support for -unsafe attributes to mark functions as unsafe, with the compiler generating warnings for unsafe calls. The SSH daemon now defaults to disabled for shell and exec services, aligning with the ‘secure by default’ principle, and the SFTP subsystem is no longer enabled by default. The default key exchange group for SSL has shifted to the post-quantum hybrid algorithm x25519mlkem768, enhancing security against quantum attacks.
Language features now support native records, which are true data types similar to traditional records but more integrated into the language. Multi-valued comprehensions are supported, allowing more expressive list operations, and the new is_integer/3 guard simplifies type and range checks. The compiler now issues warnings for deprecated or obsolete code patterns, including the catch operator and certain variable exports, with options to disable these warnings. JIT improvements optimize code for binary matching and map comprehensions, increasing performance.
Why It Matters
This update is significant because it enhances the security posture of Erlang applications, especially with the default disabling of SSH services and the adoption of quantum-resistant algorithms. The new language features and compiler warnings assist developers in writing safer, more efficient code, while the experimental native records open pathways for future data handling improvements. Overall, Erlang/OTP 29.0 represents a step forward in both security and language capabilities, impacting enterprise and telecom systems built on Erlang.
Erlang/OTP 29.0 development tools
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Background
Erlang/OTP 29.0 follows previous releases that steadily added features like improved compiler diagnostics and language enhancements. The move to disable SSH services by default and adopt post-quantum algorithms reflects ongoing efforts to prioritize security in distributed systems. Support for native records and multi-valued comprehensions aligns with Erlang’s evolution towards more expressive and efficient programming constructs. This release continues the trend of balancing innovation with stability, although some features like native records are marked as experimental, indicating future changes may occur.
“Erlang/OTP 29.0 introduces significant security defaults and language enhancements designed to improve safety and performance.”
— Erlang/OTP team
“Native records are an experimental feature that we believe will enhance data modeling in future releases.”
— Erlang/OTP project lead

Mastering SSH & SFTP: A Practical Guide to Secure Remote Server Administration
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
What Remains Unclear
It is not yet clear how widely adopted the new native records will become, given their experimental status. The impact of default SSH service disabling on existing deployments remains to be seen, and some warnings introduced by the compiler can be disabled, which may influence their effectiveness. Compatibility issues with older codebases are also still being assessed.
post-quantum cryptography SSL certificates
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
What’s Next
Developers are encouraged to review the detailed release notes and test their applications against Erlang/OTP 29.0. Future updates may include stabilization of native records and further security enhancements. Erlang teams will likely monitor feedback and bug reports to refine features in subsequent minor releases.
Erlang native records programming books
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Key Questions
What are native records in Erlang/OTP 29.0?
Native records are a new data type that provides a true data structure similar to traditional records but integrated into the language, currently marked as experimental.
How does the new security default affect SSH services?
The SSH daemon now defaults to disabled for shell and exec services, enhancing security by preventing arbitrary code execution unless explicitly enabled.
What are the main language improvements in this release?
Support for multi-valued comprehensions, the is_integer/3 guard, and native records are key language enhancements in Erlang/OTP 29.0.
Are there any breaking changes in this release?
Yes, some incompatibilities are noted, such as the removal of 32-bit Windows builds and deprecated features like the catch operator warning. Developers should review the detailed release notes for specifics.