<div dir="auto">Amazing work guys. Congratulations </div><div><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr"><div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;background-color:rgb(255,255,255);color:rgb(0,0,0)"><h1 style="font-family:Calibri,Arial,Helvetica,sans-serif"><br>OTP 25-rc2</h1>
<p style="font-family:Calibri,Arial,Helvetica,sans-serif">Erlang/OTP 25-rc2 is the second release candidate of three before the OTP 25.0 release.</p>
<p style="font-family:Calibri,Arial,Helvetica,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. We encourage users to try it out and give us feedback either by creating an issue here
<a href="https://github.com/erlang/otp/issues" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">Issues · erlang/otp · GitHub</a> or by posting to
<a href="https://erlangforums.com" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">Erlangforums</a> or the mailing list <a href="mailto:erlang-questions@erlang.org" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">
erlang-questions@erlang.org</a>.</p>
<p style="font-family:Calibri,Arial,Helvetica,sans-serif">All artifacts for the release can be downloaded from the <a href="https://github.com/erlang/otp/releases/tag/OTP-25.0-rc2" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">
Erlang/OTP Github</a> release and you can view the new documentation at <a href="https://erlang.org/documentation/doc-13.0-rc2/doc/" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">
Erlang/OTP 25.0</a>. You can also install the latest release using <a href="https://github.com/kerl/kerl" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">
kerl</a> like this: <code style="font-family:monospace">kerl build 25.0-rc2 25.0-rc2</code>.</p>
<p style="font-family:Calibri,Arial,Helvetica,sans-serif">Erlang/OTP 25 is a new major release with new features, improvements as well as a few incompatibilities. Some of the new features are highlighted below.</p>
<p style="font-family:Calibri,Arial,Helvetica,sans-serif">Many thanks to all contributors!</p>
<p style="font-family:Calibri,Arial,Helvetica,sans-serif">Below are some highlights of the release:</p>
<h2 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#highlights-rc2-2" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>Highlights rc2</h2>
<h3 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#stdlib-3" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>stdlib</h3>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif">New function <code style="font-family:monospace">filelib:ensure_path/1</code> will ensure that all directories for the given path exists</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">New functions <code style="font-family:monospace">groups_from_list/2</code> and <code style="font-family:monospace">groups_from_list/3</code> in the
<code style="font-family:monospace">maps</code> module</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">New functions <code style="font-family:monospace">uniq/1</code> <code style="font-family:monospace">uniq/2</code> in the lists module</li></ul>
<h3 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#compiler-kernel-stdlib-syntax_tools-4" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>compiler, kernel, stdlib, syntax_tools</h3>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif">Added support for selectable features as described in <a href="https://www.erlang.org/eeps/eep-0060" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">
<code style="font-family:monospace">EEP-60</code></a>. Features can be enabled/disabled during compilation with options (ordinary and +term) to
<code style="font-family:monospace">erlc</code> as well as with directives in the file. Similar options can be used to
<code style="font-family:monospace">erl</code> for enabling/disabling features allowed at runtime. The new <code style="font-family:monospace">
maybe</code> expression <a href="https://www.erlang.org/eeps/eep-0049" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"><code style="font-family:monospace">EEP-49</code></a> is fully supported as the feature maybe_expr.</li></ul>
<p style="font-family:Calibri,Arial,Helvetica,sans-serif">For more details about new features and potential incompatibilities see</p>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlang.org/download/otp_src_25.0-rc2.readme" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">https://erlang.org/download/otp_src_25.0-rc2.readme</a></li></ul>
<h2 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#highlights-rc1-5" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>Highlights rc1</h2>
<h3 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#erts-jit-6" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>erts & jit</h3>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif">The JIT now works for 64-bit ARM processors.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">The JIT now does type-based optimizations based on type information in the BEAM files.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">Improved the JIT’s support for external tools like <code style="font-family:monospace">perf</code> and <code style="font-family:monospace">
gdb</code>, allowing them to show line numbers and even the original Erlang source code when that can be found.</li></ul>
<h3 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#erts-stdlib-kernel-7" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>erts, stdlib, kernel</h3>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif">Users can now configure ETS tables with the <code style="font-family:monospace">{write_concurrency, auto}</code> option. This option forces tables to automatically change the number of locks that are used at run-time depending on how much concurrency is detected. The
<code style="font-family:monospace">{decentralized_counters, true}</code> option is enabled by default when <code style="font-family:monospace">
{write_concurrency, auto}</code> is active.Benchmark results comparing this option with the other ETS optimization options are available here:
<a href="https://erlang.org/bench/ets_bench_result_lock_config.html" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">benchmarks</a>.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">To enable more optimizations, BEAM files compiled with OTP 21 and earlier cannot be loaded in OTP 25.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">The signal queue of a process with the process flag <code style="font-family:monospace">message_queue_data=off_heap</code> has been optimized to allow parallel reception of signals from multiple processes. This can improve performance when many processes are sending in parallel to one
 process. <a href="https://erlang.org/bench/sigq_bench_result.html" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">See benchmark</a>.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">The Erlang installation directory is now relocatable on the file system given that the paths in the installation’s RELEASES file are paths that are relative to the installations root directory.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">A new option called <code style="font-family:monospace">short</code> has been added to the functions <code style="font-family:monospace">
erlang:float_to_list/2</code> and <code style="font-family:monospace">erlang:float_to_binary/2</code>. This option creates the shortest correctly rounded string representation of the given float that can be converted back to the same float again.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">Introduction of <code style="font-family:monospace">quote/1</code> and <code style="font-family:monospace">unquote/1</code> functions in the
<code style="font-family:monospace">uri_string</code> module - a replacement for the deprecated functions <code style="font-family:monospace">
http_uri:encode</code> and <code style="font-family:monospace">http_uri:decode</code>.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">The new module <code style="font-family:monospace">peer</code> supersedes the <code style="font-family:monospace">slave</code> module. The
<code style="font-family:monospace">slave</code> module is now deprecated and will be removed in OTP 27.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif"><code style="font-family:monospace">global</code> will now by default prevent overlapping partitions due to network issues. This is done by actively disconnecting from nodes that reports that they have lost connections to other nodes. This will cause fully connected partitions to form
 instead of leaving the network in a state with overlapping partitions.It is possible to turn off the new behavior by setting the the
<code style="font-family:monospace">kernel</code> configuration parameter <code style="font-family:monospace">prevent_overlapping_partitions</code> to
<code style="font-family:monospace">false</code>. Doing this will retain the same behavior as in OTP 24 and earlier.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">The <code style="font-family:monospace">format_status/2</code> callback for <code style="font-family:monospace">gen_server</code>, <code style="font-family:monospace">
gen_statem</code> and <code style="font-family:monospace">gen_event</code> has been deprecated in favor of the new
<code style="font-family:monospace">format_status/1</code> callback.The new callback adds the possibility to limit and change many more things than the just the state.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">The <code style="font-family:monospace">timer</code> module has been modernized and made more efficient, which makes the timer server less susceptible to being overloaded. The
<code style="font-family:monospace">timer:sleep/1</code> function now accepts an arbitrarily large integer.</li></ul>
<h3 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#compiler-8" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>Compiler</h3>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif">The <code style="font-family:monospace">maybe ... end</code> construction as proposed in <a href="https://www.erlang.org/eeps/eep-0049" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">
<code style="font-family:monospace">EEP-49</code></a> has been implemented. It can simplify complex code where otherwise deeply nested cases would have to be used.To enable
<code style="font-family:monospace">maybe</code>, give the option <code style="font-family:monospace">{enable_feature,maybe_expr}</code> to the compiler. The exact option to use will change in a coming release candidate and then it will also be possible to use from inside the module being compiled.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">When a record matching or record update fails, a <code style="font-family:monospace">{badrecord, ExpectedRecordTag}</code> exception used to be raised. In this release, the exception has been changed to
<code style="font-family:monospace">{badrecord, ActualValue}</code>, where <code style="font-family:monospace">ActualValue</code> is the value that was found instead of the expected record.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">Add compile attribute <code style="font-family:monospace">-nifs()</code> to empower compiler and loader with information about which functions may be overridden as NIFs by
<code style="font-family:monospace">erlang:load_nif/2</code>.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">Improved and more detailed error messages when binary construction with the binary syntax fails. This applies both for error messages in the shell and for
<code style="font-family:monospace">erl_error:format_exception/3,4</code>.</li></ul>
<h3 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#crypto-9" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>Crypto</h3>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif">Add <code style="font-family:monospace">crypto:hash_equals/2</code> which is a constant time comparision of hashvalues.</li></ul>
<h3 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#dialyzer-10" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>Dialyzer</h3>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif">Optimize operations in the <code style="font-family:monospace">erl_types</code> module. Parallelize the Dialyzer pass remote.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">Added the <code style="font-family:monospace">missing_return</code> and <code style="font-family:monospace">extra_return</code> options to raise warnings when specifications differ from inferred types. These are similar to, but not quite as verbose as overspecs and underspecs.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">Dialyzer now better understands the types for <code style="font-family:monospace">min/2</code>, <code style="font-family:monospace">max/2</code>, and
<code style="font-family:monospace">erlang:raise/3</code>. Because of that, Dialyzer can potentially generate new warnings. In particular, functions that use
<code style="font-family:monospace">erlang:raise/3</code> could now need a spec with a <code style="font-family:monospace">no_return()</code> return type to avoid an unwanted warning.</li></ul>
<h3 style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlangforums.com/t/otp-25-0-rc2-release-candidate-2-is-released/1246#misc-11" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif"></a>Misc</h3>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif">A new <a href="https://github.com/erlang/otp/blob/master/HOWTO/DEVELOPMENT.md" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">
DEVELOPMENT HOWTO guide</a> has been added that describes how to build and test Erlang/OTP when fixing bugs or developing new functionality.</li><li style="font-family:Calibri,Arial,Helvetica,sans-serif">Testing has been added to the Github actions run for each opened PR so that more bugs are caught earlier when bug fixes and new features are proposed.</li></ul>
<p style="font-family:Calibri,Arial,Helvetica,sans-serif">For more details about new features and potential incompatibilities see</p>
<ul style="font-family:Calibri,Arial,Helvetica,sans-serif">
<li style="font-family:Calibri,Arial,Helvetica,sans-serif"><a href="https://erlang.org/download/otp_src_25.0-rc1.readme" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif">https://erlang.org/download/otp_src_25.0-rc1.readme</a></li></ul>
<br>
</div>
</div>

</blockquote></div></div>