<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<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);" class="elementToProof">
<p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
Erlang/OTP 25 is a new major release with new features, improvements as well as a<span> </span><a href="https://www.erlang.org/patches/OTP-25.0#incompatibilities" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">few incompatibilities</a>.</p>
<p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
For details about new features, bugfixes and potential incompatibilities see the<span> </span><a href="https://erlang.org/download/otp_src_25.0.readme" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">Erlang 25.0 README</a><span> </span>or
 the<span> </span><a href="https://www.erlang.org/patches/OTP-25.0" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">Erlang/OTP 25.0 downloads page</a>.</p>
<p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
Many thanks to all contributors!</p>
<h2 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.5rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
Erlang/OTP 25.0 Highlights<span> </span><a href="https://www.erlang.org/news/157#erlangotp-250-highlights" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h2>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
stdlib<span> </span><a href="https://www.erlang.org/news/157#stdlib" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">New function<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">filelib:ensure_path/1</code><span> </span>will
 ensure that all directories for the given path exists</li><li style="box-sizing:border-box">New functions<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">groups_from_list/2</code><span> </span>and<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">groups_from_list/3</code><span> </span>in
 the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">maps</code><span> </span>module</li><li style="box-sizing:border-box">New functions<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">uniq/1</code><span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">uniq/2</code><span> </span>in
 the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">lists</code><span> </span>module</li><li style="box-sizing:border-box">New PRNG added to the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">rand</code><span> </span>module,
 for fast pseudo-random numers.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
compiler, kernel, stdlib, syntax_tools<span> </span><a href="https://www.erlang.org/news/157#compiler-kernel-stdlib-syntax_tools" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">Added support for selectable features as described in<span> </span><a href="https://www.erlang.org/eeps/eep-0060" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;"><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">EEP-60</code></a>.
 Features can be enabled/disabled during compilation with options (ordinary and +term) to<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">erlc</code><span> </span>as
 well as with directives in the file. Similar options can be used to<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">erl</code><span> </span>for
 enabling/disabling features allowed at runtime. The new<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">maybe</code><span> </span>expression<span> </span><a href="https://www.erlang.org/eeps/eep-0049" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;"><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">EEP-49</code></a><span> </span>is
 fully supported as the feature maybe_expr.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
erts & JIT<span> </span><a href="https://www.erlang.org/news/157#erts--jit" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">The JIT now works for 64-bit ARM processors.</li><li style="box-sizing:border-box">The JIT now does type-based optimizations based on type information in the BEAM files.</li><li style="box-sizing:border-box">Improved the JIT’s support for external tools like<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">perf</code><span> </span>and<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">gdb</code>,
 allowing them to show line numbers and even the original Erlang source code when that can be found.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
erts, stdlib, kernel<span> </span><a href="https://www.erlang.org/news/157#erts-stdlib-kernel" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">Users can now configure ETS tables with the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">{write_concurrency,
 auto}</code><span> </span>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<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">{decentralized_counters,
 true}</code><span> </span>option is enabled by default when<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">{write_concurrency,
 auto}</code><span> </span>is active.<br style="box-sizing:border-box">
Benchmark results comparing this option with the other ETS optimization options are available here:<span> </span><a href="https://www.erlang.org/bench/ets_bench_result_lock_config.html" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">benchmarks</a>.</li><li style="box-sizing:border-box">To enable more optimizations, BEAM files compiled with OTP 21 and earlier cannot be loaded in OTP 25.</li><li style="box-sizing:border-box">The signal queue of a process with the process flag<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">message_queue_data=off_heap</code><span> </span>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.<span> </span><a href="https://www.erlang.org/bench/sigq_bench_result.html" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">See
 benchmark</a>.</li><li style="box-sizing:border-box">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="box-sizing:border-box">A new option called<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">short</code><span> </span>has
 been added to the functions<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">erlang:float_to_list/2</code><span> </span>and<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">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="box-sizing:border-box">Introduction of<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">quote/1</code><span> </span>and<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">unquote/1</code><span> </span>functions
 in the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">uri_string</code><span> </span>module
 - a replacement for the deprecated functions<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">http_uri:encode</code><span> </span>and<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">http_uri:decode</code>.</li><li style="box-sizing:border-box">The new module<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">peer</code><span> </span>supersedes
 the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">slave</code><span> </span>module.
 The<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">slave</code><span> </span>module
 is now deprecated and will be removed in OTP 27.</li><li style="box-sizing:border-box"><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">global</code><span> </span>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.<br style="box-sizing:border-box">
It is possible to turn off the new behavior by setting the the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">kernel</code><span> </span>configuration
 parameter<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">prevent_overlapping_partitions</code><span> </span>to<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">false</code>.
 Doing this will retain the same behavior as in OTP 24 and earlier.</li><li style="box-sizing:border-box">The<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">format_status/2</code><span> </span>callback
 for<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">gen_server</code>,<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">gen_statem</code><span> </span>and<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">gen_event</code><span> </span>has
 been deprecated in favor of the new<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">format_status/1</code><span> </span>callback.<br style="box-sizing:border-box">
The new callback adds the possibility to limit and change many more things than the just the state.</li><li style="box-sizing:border-box">The<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">timer</code><span> </span>module
 has been modernized and made more efficient, which makes the timer server less susceptible to being overloaded. The<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">timer:sleep/1</code><span> </span>function
 now accepts an arbitrarily large integer.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
compiler<span> </span><a href="https://www.erlang.org/news/157#compiler" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">The<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">maybe
 ... end</code><span> </span>construction as proposed in<span> </span><a href="https://www.erlang.org/eeps/eep-0049" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;"><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">EEP-49</code></a><span> </span>has
 been implemented. It can simplify complex code where otherwise deeply nested cases would have to be used.<br style="box-sizing:border-box">
To enable<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">maybe</code>,
 give the option<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">{enable_feature,maybe_expr}</code><span> </span>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="box-sizing:border-box">When a record matching or record update fails, a<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">{badrecord,
 ExpectedRecordTag}</code><span> </span>exception used to be raised. In this release, the exception has been changed to<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">{badrecord,
 ActualValue}</code>, where<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">ActualValue</code><span> </span>is
 the value that was found instead of the expected record.</li><li style="box-sizing:border-box">Add compile attribute<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">-nifs()</code><span> </span>to
 empower compiler and loader with information about which functions may be overridden as NIFs by<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">erlang:load_nif/2</code>.</li><li style="box-sizing:border-box">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<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">erl_error:format_exception/3,4</code>.</li><li style="box-sizing:border-box">Change format of feature options and directives for better consistency. Options to erlc and the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">-compile(..)</code><span> </span>directive
 now has the format<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">{feature,
 feature-name, enable | disable}</code>. The<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">-feature(..)</code><span> </span>now
 has the format<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">-feature(feature-name,
 enable | disable)</code>.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
crypto<span> </span><a href="https://www.erlang.org/news/157#crypto" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">Add<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">crypto:hash_equals/2</code><span> </span>which
 is a constant time comparision of hashvalues.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
ssl<span> </span><a href="https://www.erlang.org/news/157#ssl" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">Introducing a new (still experimental) option<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">{certs_keys,[cert_key_conf()]}</code>.
 With this a list of a certificates with their associated key may be used to authenticate the client or the server. The certificate key pair that is considered best and matches negotiated parameters for the connection will be selected.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
public_key<span> </span><a href="https://www.erlang.org/news/157#public_key" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">Functions for retrieving OS provided CA-certs added.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
dialyzer<span> </span><a href="https://www.erlang.org/news/157#dialyzer" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">Optimize operations in the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">erl_types</code><span> </span>module.
 Parallelize the Dialyzer pass remote.</li><li style="box-sizing:border-box">Added the<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">missing_return</code><span> </span>and<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">extra_return</code><span> </span>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="box-sizing:border-box">Dialyzer now better understands the types for<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">min/2</code>,<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">max/2</code>,
 and<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">erlang:raise/3</code>.
 Because of that, Dialyzer can potentially generate new warnings. In particular, functions that use<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">erlang:raise/3</code><span> </span>could
 now need a spec with a<span> </span><code style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; unicode-bidi: bidi-override; color: rgb(201, 44, 44); background: none rgb(253, 253, 253); text-align: left; word-spacing: normal; line-height: 1.5; tab-size: 4; hyphens: none; padding: 0.2em; display: inline; overflow: auto; margin-bottom: 1em; border-radius: 0.3em; border: 1px solid rgba(0, 0, 0, 0.1);">no_return()</code><span> </span>return
 type to avoid an unwanted warning.</li></ul>
<h3 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; font-size: 1.25rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
Misc<span> </span><a href="https://www.erlang.org/news/157#misc" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">#</a></h3>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box">A new<span> </span><a href="https://github.com/erlang/otp/blob/master/HOWTO/DEVELOPMENT.md" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">DEVELOPMENT HOWTO guide</a><span> </span>has been
 added that describes how to build and test Erlang/OTP when fixing bugs or developing new functionality.</li><li style="box-sizing:border-box">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="box-sizing: border-box; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
Download links for this and previous versions are found here</p>
<ul style="box-sizing: border-box; padding-left: 2rem; margin-top: 0px; margin-bottom: 1rem; color: rgb(66, 66, 66); font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; background-color: rgb(255, 255, 255);">
<li style="box-sizing:border-box"><a href="https://www.erlang.org/downloads" style="box-sizing: border-box; color: rgb(162, 0, 62); text-decoration: underline;">https://www.erlang.org/downloads</a></li></ul>
<br>
</div>
</body>
</html>