OTP 24.0 Release

May 12, 2021 ยท by Henrik Nord

OTP 24 #

Erlang/OTP 24 is a new major release with new features, improvements as well as a few incompatibilities.

Below are some of the highlights of the release:

Highlights #

compiler #

  • The compiler will now inline funs that are used only once immediately after their definition.
  • Compiler warnings and errors now include column numbers in addition to line numbers.
  • Variables bound between the keywords 'try' and 'of' can now be used in the clauses following the 'of' keyword (that is, in the success case when no exception was raised).
  • Generators in list and binary comprehensions will now raise a {bad_generator,Generator} exception if the generator has an incorrect type Similarly, when a filter does not evaluate to a boolean, a {bad_filter,Filter} exception will be raised.
  • Warnings for expressions whose result was ignored that could be suppressed by using the anonymous variable '_' can now be suppressed with a variable beginning with '_'.
  • Selective receive optimization will now be applied much more often. The new recv_opt_info compile flag can be used to print diagnostics relating to this optimization. You can read more about the selective receive optimization in the Efficiency Guide.

erts, kernel, stdlib #

  • hex encoding and decoding functions added in the binary module
  • The BeamAsm JIT-compiler has been added to Erlang/OTP and will give a significant performance boost for many applications. The JIT-compiler is enabled by default on most x86 64-bit platforms that have a C++ compiler that can compile C++17. To verify that a JIT enabled emulator is running you can use erlang:system_info(emu_flavor).
  • A compatibility adaptor for gen_tcp to use the new socket API has been implemented (gen_tcp_socket).
  • Extended error information for failing BIF calls as proposed in EEP 54 has been implemented.
  • Process aliases as outlined by EEP 53 has been introduced.
  • Implementation of EEP 56 in supervisor. It adds the concept of significant children as well as the auto_shutdown supervisor flag. See the supervisor manual page for more information.

ftp #

  • Add support for FTPES (explicit FTP over TLS).

ssl #

  • Make TLS handshakes in Erlang distribution concurrent.
  • TLS connections now support EdDSA certificates.

wx #

  • The application has been completely rewritten in order to use wxWidgets version 3 as its base.
  • Added support for wxWebView.

edoc #

  • EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some configuration, community projects can now provide documentation for shell_docs the same way that OTP libraries did since OTP 23.0.

For more details about new features and potential incompatibilities see

Pre built versions for Windows can be fetched here: https://erlang.org/download/otp_win32_24.0.exe https://erlang.org/download/otp_win64_24.0.exe

Online documentation can be browsed here:

The Erlang/OTP source can also be found at GitHub on the official Erlang repository, https://github.com/erlang/otp

Many thanks to all the contributors.