Skip to content
Tech News
← Back to articles

Erlang/OTP 29.0

read original get Erlang/OTP 29.0 Book → more articles
Why This Matters

Erlang/OTP 29 introduces significant enhancements focused on security, developer productivity, and modern language features. Notably, it improves safety with default SSH settings, adds support for marking unsafe functions, and introduces new modules for documentation testing and terminal styling, reflecting a commitment to robust, secure, and developer-friendly environments.

Key Takeaways

Erlang/OTP 29 is a new major release with new features, improvements as well as a few incompatibilities. Some of the new features are highlighted below.

Many thanks to all contributors!

Added support for -unsafe attributes for marking functions as unsafe to use. The compiler will by default now generate warnings for calls to functions in Erlang/OTP known to be always unsafe. Furthermore, xref can now be used to find calls to unsafe functions and functions that lack documentation.

The SSH daemon now defaults to disabled for shell and exec services, implementing the “secure by default” principle. This prevents authenticated users from executing arbitrary Erlang code unless explicitly configured.

The SFTP subsystem is no longer enabled by default when starting an SSH daemon.

In SSL, the post quantum hybrid algorithm x25519mlkem768 is now the most preferred key exchange group in the default configuration.

The module io_ansi allows the user to emit Virtual Terminal Sequences (also known as ANSI sequences) to the terminal in order to add colors/styling to text or to create fully fledged terminal applications.

The new ct_doctest module allows the user to test documentation examples in Erlang module docs and documentation files.

The ignore_xref attribute has been handled as a post-analysis filter by build tools such as Rebar3. In this release, [ xref ] itself does the filtering, ensuring that all tooling that calls xref for any purpose can rely on these declarations to just work.

In the default code path for the Erlang system, the current working directory ( . ) is now in the last position instead of the first.

... continue reading