summaryrefslogtreecommitdiff
path: root/lib/stdlib/doc/src/notes.xml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/stdlib/doc/src/notes.xml')
-rw-r--r--lib/stdlib/doc/src/notes.xml709
1 files changed, 708 insertions, 1 deletions
diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml
index aaf1887dc8..403abf2be8 100644
--- a/lib/stdlib/doc/src/notes.xml
+++ b/lib/stdlib/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2021</year>
+ <year>2004</year><year>2022</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -31,6 +31,713 @@
</header>
<p>This document describes the changes made to the STDLIB application.</p>
+<section><title>STDLIB 4.3</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>Fixed a bug that would cause analysis to crash.</p>
+ <p>
+ Own Id: OTP-18372 Aux Id: GH-6580 </p>
+ </item>
+ <item>
+ <p>Fixed a crash when formatting stack traces for error
+ reports.</p>
+ <p>
+ Own Id: OTP-18375 Aux Id: GH-6591 </p>
+ </item>
+ <item>
+ <p>Instead of crashing, the <c>list_to_integer/1</c> and
+ <c>list_to_integer/2</c> BIFs now raise the
+ <c>system_limit</c> exception for overlong lists that
+ can't be converted to integers. Similarly, the
+ <c>string:to_integer/1</c> BIF now returns
+ <c>{error,system_limit}</c> for overlong lists.</p>
+ <p>
+ Own Id: OTP-18475 Aux Id: PR-6897 </p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Removal of non-necessary <c>undefined</c> types added to
+ the state's <c>supervisor</c> record.</p>
+ <p>
+ Own Id: OTP-18393 Aux Id: PR-6666 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>STDLIB 4.2</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p><c>erl_tar</c> can now read gzip-compressed tar files
+ that are padded. There is a new option
+ <c>compressed_one</c> for <c>file:open/2</c> that will
+ read a single member from a gzip file,</p>
+ <p>
+ Own Id: OTP-18289 Aux Id: PR-6343 </p>
+ </item>
+ <item>
+ <p>
+ A concurrent call to <c>ets:rename</c> could cause
+ <c>ets:delete_all_objects</c> to fail halfway through
+ with badarg.</p>
+ <p>
+ Own Id: OTP-18292 Aux Id: PR-6366 </p>
+ </item>
+ <item>
+ <p>It is not allowed to call functions from guards. The
+ compiler failed to reject a call in a guard when done by
+ constructing a record with a default initialization
+ expression that called a function.</p>
+ <p>
+ Own Id: OTP-18325 Aux Id: GH-6465, GH-6466 </p>
+ </item>
+ <item>
+ <p>The compiler could crash when using a record with
+ complex field initialization expression as a filter in a
+ list comprehension.</p>
+ <p>
+ Own Id: OTP-18336 Aux Id: GH-6501, PR-6502 </p>
+ </item>
+ <item>
+ <p>
+ <c>unicode:characters_to_binary()</c> could build
+ unnecessarily large call stack.</p>
+ <p>
+ Own Id: OTP-18351 Aux Id: ERIERL-885, PR-6529 </p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Improve error message for ets:new/2 name clash. Say "name
+ already exists" instead of less specific "invalid
+ options".</p>
+ <p>
+ Own Id: OTP-18283 Aux Id: PR-6338 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>STDLIB 4.1.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ <seeerl marker="stdlib:peer"><c>peer</c></seeerl> nodes
+ failed to halt when the process supervising the control
+ connection crashed. When an alternative control
+ connection was used, this supervision process also quite
+ frequently crashed when the <c>peer</c> node was stopped
+ by the node that started it which caused the <c>peer</c>
+ node to linger without ever halting.</p>
+ <p>
+ Own Id: OTP-18249 Aux Id: PR-6301 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>STDLIB 4.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Fixed inconsistency bugs in <seeerl
+ marker="kernel:global"><c>global</c></seeerl> due to
+ <c>nodeup</c>/<c>nodedown</c> messages not being
+ delivered before/after traffic over connections. Also
+ fixed various other inconsistency bugs and deadlocks in
+ both <seeerl
+ marker="kernel:global_group"><c>global_group</c></seeerl>
+ and <c>global</c>.</p>
+ <p>
+ As building blocks for these fixes, a new BIF <seemfa
+ marker="erts:erlang#nodes/2"><c>erlang:nodes/2</c></seemfa>
+ has been introduced and <seemfa
+ marker="kernel:net_kernel#monitor_nodes/2"><c>net_kernel:monitor_nodes/2</c></seemfa>
+ has been extended.</p>
+ <p>
+ The <seecom
+ marker="erts:erl#hidden"><c>-hidden</c></seecom> and
+ <seecom
+ marker="erts:erl#connect_all"><c>-connect_all</c></seecom>
+ command line arguments did not work if multiple instances
+ were present on the command line which has been fixed.
+ The new kernel parameter <seeapp
+ marker="kernel:kernel_app#connect_all"><c>connect_all</c></seeapp>
+ has also been introduced in order to replace the
+ <c>-connect_all</c> command line argument.</p>
+ <p>
+ Own Id: OTP-17934 Aux Id: PR-6007 </p>
+ </item>
+ <item>
+ <p>
+ Fix the <c>public_key:ssh*</c> functions to be listed
+ under the correct release in the Removed Functionality
+ User's Guide.</p>
+ <p>
+ Own Id: OTP-18139 Aux Id: PR-6060 </p>
+ </item>
+ <item>
+ <p>
+ The type spec for <c>format_status/1</c> in
+ <c>gen_statem</c>, <c>gen_server</c> and <c>gen_event</c>
+ has been corrected to state that the return value is of
+ the same type as the argument (instead of the same value
+ as the argument).</p>
+ <p>
+ Own Id: OTP-18142 Aux Id: PR-6078 </p>
+ </item>
+ <item>
+ <p>
+ If the <c>timer</c> server child spec was already present
+ in <c>kernel_sup</c> but it was not started, the
+ <c>timer</c> server would fail to start with an
+ <c>{error, already_present}</c> error instead of
+ restarting the server.</p>
+ <p>
+ Own Id: OTP-18146 Aux Id: PR-5983 </p>
+ </item>
+ <item>
+ <p>When changing callback module in <c>gen_statem</c> the
+ state_enter calls flag from the old module was used in
+ for the first event in the new module, which could
+ confuse the new module and cause malfunction. This bug
+ has been corrected. </p><p> With this change some
+ <c>sys</c> debug message formats have been modified,
+ which can be a problem for debug code relying on the
+ format. </p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-18239</p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>There is a new configure option,
+ <c>--enable-deterministic-build</c>, which will apply the
+ <c>deterministic</c> compiler option when building
+ Erlang/OTP. The <c>deterministic</c> option has been
+ improved to eliminate more sources of non-determinism in
+ several applications.</p>
+ <p>
+ Own Id: OTP-18165 Aux Id: PR-5965 </p>
+ </item>
+ <item>
+ <p>The <c>rfc339_to_system_time/1,2</c> functions now
+ allows the minutes part to be omitted from the time
+ zone.</p>
+ <p>
+ Own Id: OTP-18166 Aux Id: PR-6108 </p>
+ </item>
+ <item>
+ <p>
+ The <c>receive</c> statement in <c>gen_event</c> has been
+ optimized to not use selective receive (which was never
+ needed, and could cause severe performance degradation
+ under heavy load).</p>
+ <p>
+ Own Id: OTP-18194 Aux Id: PR-6199 </p>
+ </item>
+ <item>
+ <p>
+ Add new API function erl_features:configurable/0</p>
+ <p>
+ Own Id: OTP-18199 Aux Id: PR-5790 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>STDLIB 4.0.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ In the initial release of Erlang/OTP 25, the expression
+ bound to the <c>_</c> pseudo-field in a record
+ initialization would always be evaluated once, even if
+ all other fields in the record were explicitly
+ initialized. That would break the use case of binding the
+ expression <c>error(...)</c> to <c>_</c> in order to get
+ an exception if not all fields were initialized.</p>
+ <p>
+ The behavior of binding to <c>_</c> has been reverted to
+ the pre-OTP 25 behavior, that is, to not evaluate the
+ expression if all fields have been bound to explicit
+ values.</p>
+ <p>
+ Own Id: OTP-18110 Aux Id: GH-6000 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>STDLIB 4.0</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Improve the Erlang code linter's check of unused types.</p>
+ <p>
+ Own Id: OTP-17370 Aux Id: GH-4784 </p>
+ </item>
+ <item>
+ <p>
+ Fix race condition in <seemfa
+ marker="stdlib:proc_lib#stop/3"><c>proc_lib:stop/3</c></seemfa>
+ where the process is not stopped when the timeout given
+ is very short.</p>
+ <p>
+ Own Id: OTP-17480 Aux Id: GH-4853 PR-4872 </p>
+ </item>
+ <item>
+ <p>Maps are now fully supported in by
+ <c>ms_transform</c>.</p>
+ <p>
+ Own Id: OTP-17518 Aux Id: GH-4915 </p>
+ </item>
+ <item>
+ <p>
+ Fix gen_server:call with the first argument as self() to
+ throw an error instead of failing with a timeout.</p>
+ <p>
+ The same fix has also been done for gen_statem:call/3,
+ gen_event:sync_notify/2 and any other functionality
+ relying on the internal gen:call/3 function.</p>
+ <p>
+ A similar fix was also done when using io:format/2 and
+ the current group_leader was set to the current process.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-17544 Aux Id: PR-5008 </p>
+ </item>
+ <item>
+ <p>
+ erl_pp printed unary - and + operators with a space
+ between the operator and the operand. This is fixed by
+ not having any space in between.</p>
+ <p>
+ Own Id: OTP-17566 Aux Id: PR-5095, GH-5093 </p>
+ </item>
+ <item>
+ <p>
+ Adjust uri_string:normalize behavior for URIs with
+ undefined port (URI string with a port colon but no port
+ value or URI map with port => undefined).</p>
+ <p>
+ Remove redundant normalization from http_request module.</p>
+ <p>
+ Before this change, normalize would not remove port
+ subcomponent in such cases and could for example return
+ "http://localhost:" URI.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-17627</p>
+ </item>
+ <item>
+ <p>
+ Fix reduction counting bug in <c>re:run</c> that caused
+ the function to yield too frequently when doing
+ <c>global</c> matches.</p>
+ <p>
+ Own Id: OTP-17661 Aux Id: PR-5165 </p>
+ </item>
+ <item>
+ <p>
+ Fix the memory value returned from
+ <c>ets:info(Tid,memory)</c> when the
+ <c>read_concurrency</c> option is used.</p>
+ <p>
+ Before this fix the memory used by the scheduler specific
+ lock cache lines was not counted towards the total. This
+ caused the returned memory usage to be very incorrect on
+ systems with many schedulers for tables with man locks.</p>
+ <p>
+ Own Id: OTP-17832 Aux Id: PR-5494 </p>
+ </item>
+ <item>
+ <p>
+ Avoid confusion by correcting the argument order in the
+ gen_event crash log printout.</p>
+ <p>
+ Own Id: OTP-17878</p>
+ </item>
+ <item>
+ <p>
+ Fixed <c>string:next_grapheme/1</c> to return an empty
+ binary in the tail for binary input for the last grapheme
+ cluster.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-18009 Aux Id: PR-5785 </p>
+ </item>
+ <item>
+ <p>
+ Fixed type specifications of the
+ <c>supervisor:sup_name/0</c> and
+ <c>supervisor:sup_ref/0</c> types.</p>
+ <p>
+ Own Id: OTP-18034 Aux Id: PR-4661, GH-4622 </p>
+ </item>
+ <item>
+ <p>
+ If a default record field initialization (<c>_ =
+ Expr</c>) was used even though all records fields were
+ explicitly initialized, <c>Expr</c> would not be
+ evaluated. That would not be a problem, except when
+ <c>Expr</c> would bind a variable subsequently used, in
+ which case the compiler would crash.</p>
+ <p>
+ As an example, if record <c>#r{}</c> is defined to have
+ only one field <c>a</c>, the following code would crash
+ the compiler:</p>
+ <p>
+ <c>#r{a=[],_=V=42}, V</c></p>
+ <p>
+ To fix that problem, the compiler will make sure that
+ <c>Expr</c> is always evaluated at least once. The
+ compiler will now rewrite the example to essentially:</p>
+ <p>
+ <c>V=42, #r{a=[]}, V</c></p>
+ <p>
+ Own Id: OTP-18083</p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Users can now configure ETS tables with the
+ <c>{write_concurrency, auto}</c> 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 <c>{decentralized_counters,
+ true}</c> option is enabled by default when
+ <c>{write_concurrency, auto}</c> is active.</p>
+ <p>
+ Benchmark results comparing this option with the other
+ ETS optimization options are available here:</p>
+ <p>
+ https://erlang.org/bench/ets_bench_result_lock_config.html</p>
+ <p>
+ Own Id: OTP-15991 Aux Id: PR-5208 </p>
+ </item>
+ <item>
+ <p>
+ The <c>format_status/2</c> callback for
+ <c>gen_server</c>, <c>gen_statem</c> and <c>gen_event</c>
+ has been deprecated in favor of the new
+ <c>format_status/1</c> callback.</p>
+ <p>
+ The new callback adds the possibility to limit and change
+ many more things than the just the state, such as the
+ last received message, the reason for terminating and
+ more events specific to each type of behavior. See the
+ respective modules documentation for more details.</p>
+ <p>
+ Own Id: OTP-17351 Aux Id: GH-4673 PR-4952 </p>
+ </item>
+ <item>
+ <p>The <c>timer</c> module has been modernized and made
+ more efficient, which makes the timer server less
+ susceptible to being overloaded. The <c>timer:sleep/1</c>
+ function now accepts an arbitrarily large integer.</p>
+ <p>
+ Own Id: OTP-17481 Aux Id: PR-4811 </p>
+ </item>
+ <item>
+ <p>
+ Add <c>lists:enumerate/[1,2]</c>.</p>
+ <p>
+ Own Id: OTP-17523 Aux Id: PR-4928 </p>
+ </item>
+ <item>
+ <p>
+ The configuration files <seecom
+ marker="erts:erl"><c>.erlang</c></seecom>, <seeguide
+ marker="system/reference_manual:distributed"><c>.erlang.cookie</c></seeguide>
+ and <seeerl
+ marker="stdlib:beam_lib#.erlang.crypt"><c>.erlang.crypt</c></seeerl>
+ can now be located in the XDG Config Home directory.</p>
+ <p>
+ See the documentation for each file and
+ <c>filename:basedir/2</c> for more details.</p>
+ <p>
+ Own Id: OTP-17554 Aux Id: GH-5016 PR-5408 OTP-17821 </p>
+ </item>
+ <item>
+ <p>
+ Support <c>native</c> time unit in <c>calendar</c>
+ functions <c>system_time_to_rfc3339/2</c> and
+ <c>rfc3339_to_system_time</c>.</p>
+ <p>
+ Own Id: OTP-17592 Aux Id: ERIERL-663, PR-5243 </p>
+ </item>
+ <item>
+ <p>
+ The tagged tuple tests and fun-calls have been optimized
+ and are now a little bit cheaper than previously.</p>
+ <p>
+ These optimizations become possible after making sure
+ that all boxed terms have at least one word allocated
+ after the arity word. This has been accomplished by
+ letting all empty tuples refer to the same empty tuple
+ literal which also reduces memory usage for empty tuples.</p>
+ <p>
+ Own Id: OTP-17608</p>
+ </item>
+ <item>
+ <p>
+ The signal queue benchmark in parallel_messages_SUITE and
+ the ETS benchmark in ets_SUITE have benchmark result
+ visualization HTML pages with "fill-screen" buttons to
+ make the graphs bigger. This button did not work as
+ intended before. When pressing the button for a graph,
+ the last graph got replaced with a bigger version and not
+ the one over the button. This is now fixed.</p>
+ <p>
+ Own Id: OTP-17630</p>
+ </item>
+ <item>
+ <p>
+ The new module <c>peer</c> supersedes the <c>slave</c>
+ module. The <c>slave</c> module is now deprecated and
+ will be removed in OTP 27.</p>
+ <p>
+ <c>peer</c> contains an extended and more robust API for
+ starting erlang nodes.</p>
+ <p>
+ Own Id: OTP-17720 Aux Id: PR-5162 </p>
+ </item>
+ <item>
+ <p>
+ This change introduces quote and unquote functions in
+ uri_string module - a replacement for deprecated encode
+ and decode functions from http_uri.</p>
+ <p>
+ Own Id: OTP-17778 Aux Id: GH-5368 </p>
+ </item>
+ <item>
+ <p>
+ In order to make it easier for the user to manage
+ multiple outstanding asynchronous <c>call</c> requests,
+ new functionality utilizing request identifier
+ collections have been introduced in <seetype
+ marker="kernel:erpc#request_id_collection"><c>erpc</c></seetype>,
+ <seetype
+ marker="stdlib:gen_server#request_id_collection"><c>gen_server</c></seetype>,
+ <seetype
+ marker="stdlib:gen_statem#request_id_collection"><c>gen_statem</c></seetype>,
+ and <seetype
+ marker="stdlib:gen_event#request_id_collection"><c>gen_event</c></seetype>.</p>
+ <p>
+ Own Id: OTP-17784 Aux Id: PR-5792 </p>
+ </item>
+ <item>
+ <p>
+ Update to the Unicode 14.0 specification.</p>
+ <p>
+ Own Id: OTP-17869 Aux Id: PR-5595 </p>
+ </item>
+ <item>
+ <p>
+ The following ets types have been renamed to a clearer
+ name: <c>tab/0</c> to <c>table/0</c> and
+ <c>comp_match_spec/0</c> to <c>compiled_match_spec/0</c>.</p>
+ <p>
+ The types <c>table_access/0</c> and <c>table_type/0</c>
+ have been exported.</p>
+ <p>
+ Own Id: OTP-17901 Aux Id: GH-4968 PR-5649 </p>
+ </item>
+ <item>
+ <p>
+ Add support for locating <c>.asn1</c> files to the
+ default search rules of <c>filelib:find_file/1</c> and
+ <c>filelib:find_source/1</c>.</p>
+ <p>
+ Own Id: OTP-17908 Aux Id: GH-5655 PR-5669 </p>
+ </item>
+ <item>
+ <p>Type specifications have been added to the
+ <c>gen_server</c>, and the documentation has been updated
+ to utilize this. </p><p>This surfaced a few type
+ violations that has been corrected in <c>global</c>,
+ <c>logger_olp</c> and <c>rpc</c>. </p>
+ <p>
+ Own Id: OTP-17915 Aux Id: PR-5751, GH-2375, GH-2690 </p>
+ </item>
+ <item>
+ <p>The non-local function handler for the <c>erl_eval</c>
+ can now be called with either two or three arguments.
+ When called with three arguments, the first argument is
+ the annotation for the node in the abstract format.</p>
+ <p>All errors during evaluation will now be passed
+ through <c>erlang:raise/3</c>. If the restricted shell is
+ active and it does not let <c>erlang:raise/3</c> through,
+ evaluation errors will be printed in less clear way. See
+ the documentation for restricted shell in
+ <c>shell</c>.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-17925 Aux Id: PR-5631 </p>
+ </item>
+ <item>
+ <p>Added <c>filelib:ensure_path/1</c> that ensures that
+ all directories for the given path exists (unlike
+ <c>filelib:ensure_dir/1</c>, which will not create the
+ last segment of the path).</p>
+ <p>
+ Own Id: OTP-17953 Aux Id: PR-5621 </p>
+ </item>
+ <item>
+ <p>The functions <c>groups_from_list/2</c> and
+ <c>groups_from_list/3</c> have been added to the
+ <c>maps</c> module.</p>
+ <p>
+ Own Id: OTP-17969 Aux Id: PR-5588 </p>
+ </item>
+ <item>
+ <p>
+ <c>gen_server</c> has been refactored to throw more
+ readable exceptions when a callback returns bad values in
+ the <c>Timeout</c> field (<c>timeout() | 'hibernate' |
+ {'continue,_}</c>), and also to verify that argument in
+ the <c>gen_server:enter_loop/3,4,5</c> API function.</p>
+ <p>
+ Own Id: OTP-17974 Aux Id: GH-5683 </p>
+ </item>
+ <item>
+ <p>The functions <c>uniq/1</c> and <c>uniq/2</c> for
+ removing duplicates have been added to the <c>lists</c>
+ module.</p>
+ <p>
+ Own Id: OTP-17977 Aux Id: GH-5606, PR-5766 </p>
+ </item>
+ <item>
+ <p>
+ Added support for configurable features as described in
+ EEP-60. Features can be enabled/disabled during
+ compilation with options (<c>-enable-feature Feature</c>,
+ <c>-disable-feature Feature</c> and <c>+{feature,
+ Feature, enable|disable}</c>) to <c>erlc</c> as well as
+ with directives (<c>-feature(Feature,
+ enable|disable).</c>) in the file. Similar options can be
+ used to <c>erl</c> for enabling/disabling features
+ allowed at runtime. The new <c>maybe</c> expression
+ (EEP-49) is fully supported as the feature
+ <c>maybe_expr</c>. The features support is documented in
+ the reference manual.</p>
+ <p>
+ Own Id: OTP-17988</p>
+ </item>
+ <item>
+ <p>The function <c>filename:safe_relative_path/1</c>,
+ which has been deprecated since OTP 25, has been removed.
+ Use <c>filelib:safe_relative_path/2</c> instead.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-17991</p>
+ </item>
+ <item>
+ <p> A new PRNG have been added to the <c>rand</c> module:
+ <c>mwc59</c> which has been developed in collaboration
+ with Sebastiano Vigna. It is intended for applications
+ that need really fast pseudo-random numbers, and it comes
+ with two output value scramblers, one fast and one
+ thorough. </p><p> Two internal functions for the
+ <c>exsp</c> generator have also been exported so they can
+ be used outside the <c>rand</c> plug-in framework to
+ shave off some overhead. </p><p> The internal
+ <c>splitmix64</c> generator has also been exported which
+ can be useful for seeding other kinds of PRNG:s than its
+ own. </p>
+ <p>
+ Own Id: OTP-18011</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>STDLIB 3.17.2.2</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>It is not allowed to call functions from guards. The
+ compiler failed to reject a call in a guard when done by
+ constructing a record with a default initialization
+ expression that called a function.</p>
+ <p>
+ Own Id: OTP-18325 Aux Id: GH-6465, GH-6466 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>STDLIB 3.17.2.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>When changing callback module in <c>gen_statem</c> the
+ state_enter calls flag from the old module was used in
+ for the first event in the new module, which could
+ confuse the new module and cause malfunction. This bug
+ has been corrected. </p><p> With this change some
+ <c>sys</c> debug message formats have been modified,
+ which can be a problem for debug code relying on the
+ format. </p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-18239</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>STDLIB 3.17.2</title>
<section><title>Fixed Bugs and Malfunctions</title>