<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<div class="markdown-body">
<h1>OTP 24<br type="_moz">
</h1>
<p>Erlang/OTP 24 is a new major release with new features, improvements as well as a few incompatibilities.<br type="_moz">
</p>
<p>Below are some of the highlights of the release:<br type="_moz">
</p>
<h2>Highlights</h2>
<h3>compiler</h3>
<ul>
<li>The compiler will now inline funs that are used only once immediately after their definition.</li><li>Compiler warnings and errors now include column numbers in addition to line numbers.</li><li>Variables bound between the keywords <code>'try'</code> and <code>'of'</code> can now be used in the clauses following the
<code>'of'</code> keyword<br>
(that is, in the success case when no exception was raised).</li><li>Generators in list and binary comprehensions will now<br>
raise a <code>{bad_generator,Generator}</code> exception if the<br>
generator has an incorrect type<br>
Similarly, when a<br>
filter does not evaluate to a boolean, a<br>
<code>{bad_filter,Filter}</code> exception will be raised.</li><li>Warnings for expressions whose result was ignored that could be suppressed by<br>
using the anonymous variable <code>'_'</code> can now be suppressed with a variable beginning with
<code>'_'</code>.</li><li>Selective receive optimization will now be applied much<br>
more often.<br>
The new <code>recv_opt_info</code> compile flag can be used to print<br>
diagnostics relating to this optimization.<br>
You can read more about the selective receive<br>
optimization in the Efficiency Guide.</li></ul>
<h3>erts, kernel, stdlib</h3>
<ul>
<li>
<p>hex encoding and decoding functions added in the binary module</p>
</li><li>
<p>The BeamAsm JIT-compiler has been added to Erlang/OTP and will give a significant performance boost for many applications.<br>
The JIT-compiler is enabled by default on most x86 64-bit platforms that have a C++ compiler that can compile C++17.<br>
To verify that a JIT enabled emulator is running you can use <code>erlang:system_info(emu_flavor)</code>.</p>
</li><li>
<p>A compatibility adaptor for <code>gen_tcp</code> to use the new socket API has been implemented (<code>gen_tcp_socket</code>).</p>
</li><li>
<p>Extended error information for failing BIF calls as proposed in EEP 54 has been implemented.</p>
</li><li>
<p>Process aliases as outlined by EEP 53 has been introduced.</p>
</li><li>
<p>Implementation of EEP 56 in supervisor. It adds the concept of significant children as well as the
<code>auto_shutdown</code> supervisor flag. See the supervisor manual page for more information.</p>
</li></ul>
<h3>ftp</h3>
<ul>
<li>Add support for FTPES (explicit FTP over TLS).</li></ul>
<h3>ssl</h3>
<ul>
<li>Make TLS handshakes in Erlang distribution concurrent.</li><li>TLS connections now support EdDSA certificates.</li></ul>
<h3>wx</h3>
<ul>
<li>The application has been completely rewritten in order<br>
to use wxWidgets version 3 as its base.</li><li>Added support for wxWebView.</li></ul>
<h3>edoc</h3>
<ul>
<li>EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some<br>
configuration, community projects can now provide documentation for shell_docs<br>
the same way that OTP libraries did since OTP 23.0.</li></ul>
<p>For more details about new features and potential incompatibilities see</p>
<ul>
<li><a data-cke-saved-href="https://erlang.org/download/OTP-24.0.README" href="https://erlang.org/download/OTP-24.0.README" rel="nofollow">https://erlang.org/download/OTP-24.0.README</a><br type="_moz">
</li></ul>
<p>Pre built versions for Windows can be fetched here:<br>
<a data-cke-saved-href="https://erlang.org/download/otp_win32_24.0.exe" href="https://erlang.org/download/otp_win32_24.0.exe" rel="nofollow">https://erlang.org/download/otp_win32_24.0.exe</a><br>
<a data-cke-saved-href="https://erlang.org/download/otp_win64_24.0.exe" href="https://erlang.org/download/otp_win64_24.0.exe" rel="nofollow">https://erlang.org/download/otp_win64_24.0.exe</a><br type="_moz">
</p>
<p>Online documentation can be browsed here:</p>
<ul>
<li><a data-cke-saved-href="http://erlang.org/documentation/doc-12.0/doc" href="http://erlang.org/documentation/doc-12.0/doc" rel="nofollow">http://erlang.org/documentation/doc-12.0/doc</a><br type="_moz">
</li></ul>
<p>The Erlang/OTP source can also be found at GitHub on the official Erlang repository,<br>
<a data-cke-saved-href="https://github.com/erlang/otp" href="https://github.com/erlang/otp">https://github.com/erlang/otp</a><br type="_moz">
</p>
<p>Many thanks to all the contributors.<br type="_moz">
</p>
</div>
<br>
</div>
</body>
</html>