From 36719f9798f1f7c2de203091582083e8d8e5726b Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Fri, 10 May 2019 14:42:47 +0200 Subject: Prepare release --- lib/stdlib/doc/src/notes.xml | 241 ++++++++++++++++++++++++++++++++++++++++ lib/stdlib/src/stdlib.app.src | 2 +- lib/stdlib/src/stdlib.appup.src | 26 ++--- lib/stdlib/vsn.mk | 2 +- 4 files changed, 250 insertions(+), 21 deletions(-) (limited to 'lib/stdlib') diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml index ef12e525e3..605a9f224d 100644 --- a/lib/stdlib/doc/src/notes.xml +++ b/lib/stdlib/doc/src/notes.xml @@ -31,6 +31,247 @@

This document describes the changes made to the STDLIB application.

+
STDLIB 3.9 + +
Fixed Bugs and Malfunctions + + +

Fix a bug in string:lexemes/2.

The + bug was found when optimizing the handling of deep lists + of Unicode characters in the string module.

+

+ Own Id: OTP-15649

+
+ +

A bug has been fixed in the maps implementation + that could cause a crash or memory usage to grow until + the machine ran out of memory. This could happen when + inserting a new key-value pair with a key K1 + containing a binary B1 into a map M having + a key K2 with a binary B2 if the following + conditions were met:

B1 =/= + B2 size(B1) >= 4294967296 + size(B2) >= 4294967296 + size(M) >= 32 (size(B1) rem + 4294967296) == (size(B2) rem 4294967296) + the first (size(B1) rem 4294967296) bytes + are the same both in B1 and B2 + substituting B1 in K1 with B2 + would create a term with the same value as + K2

The root cause of the problem + is that the maps implementation only hashed the + first (X rem 4294967296) bytes of binaries so that + different binaries could get the same hash value + independently of the hash seed.

+

+ Own Id: OTP-15707

+
+ +

Since the introduction of the stack trace variable, + the Erlang Pretty Printer has left out the exception + class throw even when the stack trace variable + cannot be left out, which is not correct Erlang code. The + fix is to always include the exception class + throw.

+

+ Own Id: OTP-15751

+
+ +

record_info/2 is a pseudo-function that + requires literal arguments known at compile time. + Therefore, the following usage is illegal: fun + record/info/2. The compiler would crash when during + compilation of that kind of code. Corrected to issue a + compilation error.

+

+ Own Id: OTP-15760 Aux Id: ERL-907

+
+
+
+ + +
Improvements and New Features + + +

A new rand module algorithm, exro928ss + (Xoroshiro928**), has been implemented. It has got a + really long period and good statistical quality for all + output bits, while still being only about 50% slower than + the default algorithm.

The same generator is also + used as a long period counter in a new crypto + plugin for the rand module, algorithm + crypto_aes. This plugin uses AES-256 to scramble + the counter which buries any detectable statistical + artifacts. Scrambling is done in chunks which are cached + to get good amortized speed (about half of the default + algorithm).

+

+ Own Id: OTP-14461 Aux Id: PR-1857

+
+ +

+ Types related to server naming and starting have been + exported from gen_statem. These are: + server_name/0, server_ref/0, + start_opt/0, start_ret/0 and + enter_loop_opt/0.

+

+ Own Id: OTP-14724 Aux Id: PR-2056

+
+ +

+ The default algorithm for the rand module has been + changed to exsss (Xorshift116**) which is a + combination of the Xorshift116 (exsp) state update + and a new scrambler "StarStar" from the 2018 paper + "Scrambled Linear Pseudorandom Number Generators" by + David Blackman and Sebastiano Vigna. This combination + should not have the caveat of weak low bits that the + previous default algorithm(s) have had, with the cost of + about 10% lower speed. See GitHub pull request #1969.

+

+ Own Id: OTP-14731 Aux Id: PR-1969

+
+ +

+ The generic state machine behaviour gen_statem has + gotten code cleanup and documentation improvements from + GitHub Pull Request #1855, even though the PR itself was + rejected.

+

+ Own Id: OTP-14737 Aux Id: PR-1855

+
+ +

+ Update Unicode specification to version 11.0.

+

+ Own Id: OTP-15111

+
+ +

+ ETS option write_concurrency now also affects and + improves the scalability of ordered_set tables. + The implementation is based on a data structure called + contention adapting search tree, where the lock + granularity adapts to the actual amount of concurrency + exploited by the applications in runtime.

+

+ Own Id: OTP-15128

+
+ +

+ Optimized maps:new/0 with trivial Erlang + implementation, making use of literal terms (the empty + map) not needing dynamic heap allocation.

+

+ Own Id: OTP-15200 Aux Id: PR-1878

+
+ +

The gen_* behaviours have been changed so that + if logging of the last N messages through + sys:log/2,3 is active for the server, this log is + included in the terminate report.

To accomplish + this the format of "System Events" as defined in the man + page for sys has been clarified and cleaned up, a + new function sys:get_log/1 has been added, and + sys:get_debug/3 has been deprecated. Due to these + changes, code that relies on the internal badly + documented format of "System Events", need to be + corrected.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-15381

+
+ +

+ The gen_statem behaviour engine loop has been + optimized for better performance in particular when the + callback module returns some actions, that is better + performance for more realistic applications than the Echo + Benchmark.

+

+ Own Id: OTP-15452

+
+ +

Do not allow function specifications for functions + residing in other modules.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-15563 Aux Id: ERL-845, OTP-15562

+
+ +

+ The persistent_term functions put/2 and + erase/1 are now yielding.

+

+ Own Id: OTP-15615

+
+ +

Previously, all ETS tables used centralized counter + variables to keep track of the number of items stored and + the amount of memory consumed. These counters can cause + scalability problems (especially on big NUMA systems). + This change adds an implementation of a decentralized + counter and modifies the implementation of ETS so that + ETS tables of type ordered_set with + write_concurrency enabled use the decentralized + counter. Experiments indicate that this change + substantially improves the scalability of ETS + ordered_set tables with write_concurrency + enabled in scenarios with frequent ets:insert/2 + and ets:delete/2 calls.

+

+ Own Id: OTP-15623 Aux Id: PR-2190

+
+ +

Use ssh instead of rsh as the default + remote shell.

+

+ Own Id: OTP-15633 Aux Id: PR-1787

+
+ +

Added beam_lib:strip/2 and friends, which + accept a list of chunks that should be preserved when + stripping.

+

+ Own Id: OTP-15680 Aux Id: PR-2114

+
+ +

Optimize printing of maps with io_lib:write(). + Also optimize pretty printing of strings (~s and + ~ts) when limiting the output with the + chars_limit option.

+

+ Own Id: OTP-15705

+
+ +

There are new compiler options nowarn_removed + and {nowarn_removed,Items} to suppress warnings + for functions and modules that have been removed from + OTP.

+

+ Own Id: OTP-15749 Aux Id: ERL-904

+
+ +

Let the Erlang Pretty Printer put atomic parts on the + same line.

+

+ Own Id: OTP-15755

+
+ +

Add option quote_singleton_atom_types to the + Erlang Pretty Printer's functions. Setting the option to + true adds quotes to all singleton atom types.

+

+ Own Id: OTP-15756

+
+
+
+ +
+
STDLIB 3.8.2
Fixed Bugs and Malfunctions diff --git a/lib/stdlib/src/stdlib.app.src b/lib/stdlib/src/stdlib.app.src index 9cd425db9a..ecb514e9f3 100644 --- a/lib/stdlib/src/stdlib.app.src +++ b/lib/stdlib/src/stdlib.app.src @@ -108,7 +108,7 @@ dets]}, {applications, [kernel]}, {env, []}, - {runtime_dependencies, ["sasl-3.0","kernel-6.0","erts-@OTP-15128@","crypto-3.3", + {runtime_dependencies, ["sasl-3.0","kernel-6.0","erts-10.4","crypto-3.3", "compiler-5.0"]} ]}. diff --git a/lib/stdlib/src/stdlib.appup.src b/lib/stdlib/src/stdlib.appup.src index 9a1b92a87c..7038cc159c 100644 --- a/lib/stdlib/src/stdlib.appup.src +++ b/lib/stdlib/src/stdlib.appup.src @@ -19,22 +19,15 @@ %% %% We allow upgrade from, and downgrade to all previous %% versions from the following OTP releases: -%% - OTP 20 %% - OTP 21 +%% - OTP 22 %% %% We also allow upgrade from, and downgrade to all %% versions that have branched off from the above %% stated previous versions. %% {"%VSN%", - [{<<"^3\\.4$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.2(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.3(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.4(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.5(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.5$">>,[restart_new_emulator]}, + [{<<"^3\\.5$">>,[restart_new_emulator]}, {<<"^3\\.5\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}, {<<"^3\\.5\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, {<<"^3\\.6$">>,[restart_new_emulator]}, @@ -44,15 +37,9 @@ {<<"^3\\.7\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, {<<"^3\\.8$">>,[restart_new_emulator]}, {<<"^3\\.8\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}, - {<<"^3\\.8\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}], - [{<<"^3\\.4$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.2(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.3(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.4(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.4\\.5(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, - {<<"^3\\.5$">>,[restart_new_emulator]}, + {<<"^3\\.8\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, + {<<"^3\\.8\\.2(?:\\.[0-9]+)*$">>,[restart_new_emulator]}], + [{<<"^3\\.5$">>,[restart_new_emulator]}, {<<"^3\\.5\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}, {<<"^3\\.5\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, {<<"^3\\.6$">>,[restart_new_emulator]}, @@ -62,4 +49,5 @@ {<<"^3\\.7\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, {<<"^3\\.8$">>,[restart_new_emulator]}, {<<"^3\\.8\\.0(?:\\.[0-9]+)+$">>,[restart_new_emulator]}, - {<<"^3\\.8\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}]}. + {<<"^3\\.8\\.1(?:\\.[0-9]+)*$">>,[restart_new_emulator]}, + {<<"^3\\.8\\.2(?:\\.[0-9]+)*$">>,[restart_new_emulator]}]}. diff --git a/lib/stdlib/vsn.mk b/lib/stdlib/vsn.mk index 80ec81b832..07224afdc9 100644 --- a/lib/stdlib/vsn.mk +++ b/lib/stdlib/vsn.mk @@ -1 +1 @@ -STDLIB_VSN = 3.8.2 +STDLIB_VSN = 3.9 -- cgit v1.2.3