TL;DR
Erlang/OTP 29.0 has been released, bringing new features like native records, multi-valued comprehensions, and enhanced security defaults. It also includes compiler warnings and performance improvements. Some incompatibilities are noted.
Erlang/OTP 29.0 has been officially released, marking a significant update with new features, security enhancements, and language improvements. The release aims to improve developer productivity and system security, with some incompatibilities noted.
The major highlights of Erlang/OTP 29.0 include support for the -unsafe attribute, allowing functions to be marked as unsafe, with the compiler issuing 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. In SSL, the post-quantum hybrid key exchange algorithm x25519mlkem768 is now the preferred choice, enhancing quantum resistance.
Language-wise, the release introduces native records, a new data type similar to traditional records but implemented as true data types, although still experimental. Multi-valued comprehensions are now supported, enabling more expressive list processing. The is_integer/3 guard function has been added to verify both integer type and range efficiently. Compiler improvements include better code generation for binary matching and map comprehensions, along with several new warnings to encourage better coding practices. The compile module now offers recommendations for BEAM language implementors.
Standard library updates include functions for list permutation, such as rand:shuffle/1 and rand:shuffle_s/2. The SSH subsystem now defaults to a hybrid quantum-resistant key exchange algorithm, mlkem768x25519-sha256, which provides enhanced security against quantum computing threats while maintaining compatibility with fallback options.
Why It Matters
This release is important because it enhances system security by default, introduces advanced language features that improve code expressiveness, and optimizes performance. The default disabling of SSH services and the adoption of quantum-resistant algorithms reflect a focus on security. Developers working with Erlang will benefit from new language constructs and compiler warnings that promote better coding practices, while system administrators will find the security defaults particularly relevant.
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 native support for modern hardware and security improvements. The introduction of native records aligns with ongoing efforts to improve data handling, while the focus on default security settings responds to increasing concerns about system vulnerabilities. This release continues Erlang’s tradition of balancing language evolution with maintaining stability for large-scale, fault-tolerant systems.
“Erlang/OTP 29.0 delivers significant improvements in security and language expressiveness, helping developers write safer, more efficient code.”
— Eric Merritt, Erlang/OTP Lead Developer
“The default disabling of SSH shell and exec services and the adoption of quantum-resistant algorithms reflect our commitment to secure by default and future-proofing.”
— Erlang/OTP Team
quantum-resistant SSH key exchange
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. Compatibility issues with older systems or third-party tools are still being assessed, and detailed impacts of the new compiler warnings on existing codebases are not fully documented.
native records Erlang programming
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
What’s Next
Next steps include monitoring community feedback on native records and other new features, as well as updates to third-party libraries to ensure compatibility. Further documentation and guidance are expected to support developers in adopting these features. Future releases may address any emerging issues or incompatibilities.
Erlang compiler warnings tools
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 introduced as an experimental feature, designed to be more efficient and type-safe compared to traditional tuple-based records.
How does the new security default in SSH impact users?
The SSH daemon now defaults to disabling shell and exec services, reducing attack surface unless explicitly enabled by administrators.
What is the significance of the new hybrid quantum-resistant key exchange algorithm?
The algorithm enhances security against future quantum computer threats while maintaining backward compatibility with fallback options.
Are there any breaking changes in this release?
Some incompatibilities are noted, including the removal of the 32-bit Windows build and changes in default behaviors, which may require updates to existing systems.