<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)">
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<h1 style="color:rgb(33,33,33); background-color:rgb(255,255,255)"><span style="margin:0px">
<h1 style="line-height:1.2; color:rgb(51,51,51); font-family:sans-serif,Arial,Verdana,"Trebuchet MS"">
<span style="font-size:24pt; line-height:normal">This is the 3rd release candidate for OTP 22.0</span></h1>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(51,51,51); font-family:sans-serif,Arial,Verdana,"Trebuchet MS"; font-size:13px; font-weight:400">
<span style="font-size:11pt; font-family:"Segoe UI","Helvetica Neue",sans-serif">Erlang/OTP 22 is a new major release with new features and improvements as well as incompatibilities.</span></p>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(51,51,51); font-family:sans-serif,Arial,Verdana,"Trebuchet MS"; font-size:13px; font-weight:400">
<span style="font-size:11pt; font-family:"Segoe UI","Helvetica Neue",sans-serif">There are no major highlight for this release, as the main focus of this is bugfixes and polish.</span></p>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(51,51,51); font-family:sans-serif,Arial,Verdana,"Trebuchet MS"; font-size:13px; font-weight:400">
<span style="font-size:11pt; font-family:"Segoe UI","Helvetica Neue",sans-serif">Please consult the</span><span style="font-size:11pt; font-family:"Segoe UI","Helvetica Neue",sans-serif"> </span><a href="http://erlang.org/download/otp_src_22.0-rc3.readme" style="color:rgb(7,130,193)"><span style="font-size:11pt; font-family:"Segoe UI","Helvetica Neue",sans-serif">readme</span></a><span style="font-size:11pt; font-family:"Segoe UI","Helvetica Neue",sans-serif"> for
 a detailed changelog for the release.</span></p>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(51,51,51); font-family:sans-serif,Arial,Verdana,"Trebuchet MS"; font-size:13px; font-weight:400">
<span style="font-size:11pt; font-family:"Segoe UI","Helvetica Neue",sans-serif">The intention with this release is to get feedback from our users. All feedback is welcome, even if it is only to say that it works for you, as it lets us know that the release
 candidate got some testing.</span></p>
</span></h1>
<h1 style="color:rgb(33,33,33); background-color:rgb(255,255,255)"><br>
</h1>
<h2 style="color:rgb(33,33,33); background-color:rgb(255,255,255)">Potential Incompatibilities</h2>
<ul style="color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
<li>gen_* behaviours: If logging of the last N messages through<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">sys:log/2,3</span><span> </span>is active for the server, this log is included in the terminate report.</li><li>reltool: A new element, Opts, can now be included in a rel tuple in the reltool<span> </span><span style="margin:0px">release</span><span> </span>specific configuration format:<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">{rel,
 Name, Vsn, RelApps, Opts}</span>.</li><li>All external pids/ports/refs created by<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">erlang:list_to_pid</span><span> </span>and similar functions now compare equal to any other pid/port/ref with same number from that
 node.</li><li>The old legacy<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">erl_interface</span><span> </span>library is deprecated as of<span> </span><span style="margin:0px">OTP</span><span> </span><span style="margin:0px">22</span>,
 and will be removed in<span> </span><span style="margin:0px">OTP</span><span> </span>23. This does not apply to the<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">ei</span><span> </span>library.</li><li>VxWorks is deprecated as of<span> </span><span style="margin:0px">OTP</span><span> </span><span style="margin:0px">22</span><span> </span>and will be removed in<span> </span><span style="margin:0px">OTP</span><span> </span>23.</li></ul>
<h2 style="color:rgb(33,33,33); background-color:rgb(255,255,255)">Additional highlights in<span> </span><span style="margin:0px">release</span><span> </span><span style="margin:0px">candidate</span><span> </span>2</h2>
<ul style="color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
<li>A simple socket API is provided through the<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">socket</span><span> </span>module. This is a low level API that does *not* replace<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">gen_[tcp|udp|sctp]</span>.
 It is intended to *eventually* replace the inet driver. It also provides a basic API that facilitates the implementation of other protocols than TCP, UDP and SCTP. Known issues are; No support for the Windows OS (currently), a small term leakage. This feature
 will be classed as experimental in<span> </span><span style="margin:0px">OTP</span><span> </span><span style="margin:0px">22</span>.</li><li>ssl: Basic support for TLS 1.3 Server for experimental use.</li><li>In<span> </span><span style="margin:0px">OTP</span><span> </span><span style="margin:0px">22</span>, HiPE (the native code compiler) is not fully functional. The reasons for this are new BEAM instructions for binary matching that the HiPE native code compiler
 does not support. If<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">erlc</span><span> </span>is invoked with the<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">+native</span><span> </span>option,
 and if any of the new binary matching instructions are used, the compiler will issue a warning and produce a BEAM file without native code.</li><li>erts: Added the NIF function<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">enif_term_type</span>, which helps avoid long sequences of<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">enif_is_xyz</span><span> </span>by
 returning the type of the given term. This is especially helpful for NIFs that serialize terms, such as JSON encoders, where it can improve both performance and readability.</li><li>crypto: The new<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">hash_info/1</span><span> </span>and<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">cipher_info/1</span><span> </span>functions
 returns maps with information about the hash or cipher in the argument.</li></ul>
<h2 style="color:rgb(33,33,33); background-color:rgb(255,255,255)">Highlights in<span> </span><span style="margin:0px">release</span><span> </span><span style="margin:0px">candidate</span><span> </span>1</h2>
<h3 style="margin-top:0px; margin-bottom:6px; color:rgb(33,33,33); background-color:rgb(255,255,255)">
Erts:</h3>
<ul style="color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
<li>Support for Erlang Distribution protocol to split the payload of large signals into several fragments.</li><li>ETS option write_concurrency now also effects and improves scalability of ordered_set tables.</li><li>The<span> </span><span style="margin:0px; font-family:monospace,monospace">length/1</span><span> </span>BIF used to calculate the length of the list in one go without yielding, even if the list was very long. Now it yields when called with long lists.</li><li>A new (still experimental) module<span> </span><span style="margin:0px; font-family:"courier new",courier,monospace">socket</span><span> </span>is introduced. It is implemented as a NIF and the idea is that it shall be as "close as possible" to the OS level
 socket interface.</li></ul>
<h3 style="margin-top:0px; margin-bottom:6px; color:rgb(33,33,33); background-color:rgb(255,255,255)">
Compiler:</h3>
<ul style="color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
<li>The compiler has been rewritten to internally use an intermediate representation based on Static Single Assignment (SSA). The new intermediate representation makes more optimizations possible.
<ul>
<li>The binary matching optimizations are now applicable in many more circumstances than before.</li><li>Type optimizations are now applied across local function calls, and will remove a lot more redundant type tests than before.</li></ul>
</li><li>All compiler options that can be given in the source file can now be given in the option list on the command line for<span> </span><span style="margin:0px; font-family:monospace,monospace">erlc</span>.</li></ul>
<h3 style="margin-top:0px; margin-bottom:6px; color:rgb(33,33,33); background-color:rgb(255,255,255)">
Standard libraries:</h3>
<ul style="color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
<li>Cover now uses the counters module instead of<span> </span><span style="margin:0px; font-family:monospace,monospace">ets</span><span> </span>for updating counters. The new function<span> </span><span style="margin:0px; font-family:monospace,monospace">cover:local_only/0<span> </span></span>allows
 running Cover in a restricted but faster local-only mode. The increase in speed will vary depending on the type of code being cover-compiled, as an example the compiler test suite runs more than twice as fast with the new Cover.</li><li>SSL now uses the new logger API, including log levels and verbose debug logging.</li></ul>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
For more details see<br>
<a href="http://erlang.org/download/otp_src_22.0-rc3.readme" title="http://erlang.org/download/otp_src_22.0-rc3.readme">http://erlang.org/download/<span style="margin:0px">otp</span>_src_<span style="margin:0px">22</span>.0-rc3.readme</a></p>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
Pre built versions for Windows can be fetched here:<br>
<a href="http://erlang.org/download/otp_win32_22.0-rc3.exe" title="http://erlang.org/download/otp_win32_22.0-rc3.exe">http://erlang.org/download/<span style="margin:0px">otp</span>_win32_<span style="margin:0px">22</span>.0-rc3.exe<br>
</a><a href="http://erlang.org/download/otp_win64_22.0-rc3.exe" title="http://erlang.org/download/otp_win64_22.0-rc3.exe">http://erlang.org/download/<span style="margin:0px">otp</span>_win64_<span style="margin:0px">22</span>.0-rc3.exe</a></p>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
Online documentation can be browsed here:<br>
<a href="http://erlang.org/documentation/doc-11.0-rc3/doc" title="http://erlang.org/documentation/doc-11.0-rc3/doc">http://erlang.org/documentation/doc-11.0-rc3/doc</a></p>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
The Erlang/<span style="margin:0px">OTP</span><span> </span>source can also be found at GitHub on the official Erlang repository:</p>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
<a href="https://github.com/erlang/otp" target="_blank" rel="noopener noreferrer" style="margin:0px">https://github.com/erlang/<span style="margin:0px">otp</span></a></p>
<p style="margin-top: 0px; margin-bottom: 0px;color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255)">
<a href="https://github.com/erlang/otp/releases/tag/OTP-22.0-rc3" title="https://github.com/erlang/otp/releases/tag/OTP-22.0-rc3"><span style="margin:0px">OTP</span>-<span style="margin:0px">22</span>.0-rc3</a></p>
<span style="color:rgb(33,33,33); font-size:15px; background-color:rgb(255,255,255); display:inline!important">  Thank you for all your contributions!</span><br>
</div>
</body>
</html>