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
- https://erlang.org/download/OTP-24.0.README