summaryrefslogtreecommitdiff
path: root/erts
diff options
context:
space:
mode:
Diffstat (limited to 'erts')
-rw-r--r--erts/doc/src/erlang.xml51
-rw-r--r--erts/doc/src/notes.xml727
-rw-r--r--erts/emulator/beam/bif.c18
-rw-r--r--erts/emulator/beam/bif.tab1
-rw-r--r--erts/emulator/beam/erl_process.c2
-rw-r--r--erts/emulator/drivers/common/inet_drv.c7
-rw-r--r--erts/emulator/test/exception_SUITE.erl3
-rw-r--r--erts/etc/win32/nsis/erlang20.nsi8
-rw-r--r--erts/etc/win32/wsl_tools/SetupWSLcross.bat10
-rw-r--r--erts/preloaded/ebin/erlang.beambin108992 -> 108908 bytes
-rw-r--r--erts/preloaded/src/erlang.erl13
-rw-r--r--erts/preloaded/src/erts.app.src2
-rw-r--r--erts/vsn.mk2
13 files changed, 768 insertions, 76 deletions
diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml
index 14f9b5a79f..9b2605d3e4 100644
--- a/erts/doc/src/erlang.xml
+++ b/erts/doc/src/erlang.xml
@@ -375,7 +375,7 @@ Z = erlang:adler32_combine(X,Y,iolist_size(Data2)).</code>
</func>
<func>
- <name name="atom_to_binary" arity="1" since="OTP @OTP-15995@"/>
+ <name name="atom_to_binary" arity="1" since="OTP 23.0"/>
<fsummary>Return the binary representation of an atom.</fsummary>
<desc>
<p>
@@ -457,7 +457,7 @@ Z = erlang:adler32_combine(X,Y,iolist_size(Data2)).</code>
</func>
<func>
- <name name="binary_to_atom" arity="1" since="OTP @OTP-15995@"/>
+ <name name="binary_to_atom" arity="1" since="OTP 23.0"/>
<fsummary>Convert from text representation to an atom.</fsummary>
<desc>
<p>
@@ -493,7 +493,7 @@ Z = erlang:adler32_combine(X,Y,iolist_size(Data2)).</code>
</func>
<func>
- <name name="binary_to_existing_atom" arity="1" since="OTP @OTP-15995@"/>
+ <name name="binary_to_existing_atom" arity="1" since="OTP 23.0"/>
<fsummary>Convert from text representation to an atom.</fsummary>
<desc>
<p>
@@ -2147,25 +2147,6 @@ true</pre>
</func>
<func>
- <name name="get_stacktrace" arity="0" since=""/>
- <fsummary>Get the call stack back-trace of the last exception.</fsummary>
- <type name="stack_item"/>
- <desc>
- <warning><p><c>erlang:get_stacktrace/0</c> is deprecated and
- will be removed in OTP 24. Starting from OTP 23,
- <c>erlang:get_stacktrace/0</c> returns <c>[]</c>.</p></warning>
- <p>Instead of using <c>erlang:get_stacktrace/0</c> to retrieve
- the call stack back-trace, use the following syntax:</p>
-<pre>
-try Expr
-catch
- Class:Reason:Stacktrace ->
- {Class,Reason,Stacktrace}
-end</pre>
- </desc>
- </func>
-
- <func>
<name name="group_leader" arity="0" since=""/>
<fsummary>Get the group leader for the calling process.</fsummary>
<desc>
@@ -6315,7 +6296,7 @@ true</pre>
</func>
<func>
- <name name="spawn_monitor" arity="2" since="OTP @OTP-15251@"/>
+ <name name="spawn_monitor" arity="2" since="OTP 23.0"/>
<fsummary>Create and monitor a new process with a fun as entry point.
</fsummary>
<desc>
@@ -6346,7 +6327,7 @@ true</pre>
</func>
<func>
- <name name="spawn_monitor" arity="4" since="OTP @OTP-15251@"/>
+ <name name="spawn_monitor" arity="4" since="OTP 23.0"/>
<fsummary>Create and monitor a new process with a function as entry point.
</fsummary>
<desc>
@@ -6564,7 +6545,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request" arity="1" since="OTP @OTP-15251@"/>
+ <name name="spawn_request" arity="1" since="OTP 23.0"/>
<fsummary>Asynchronously send a request to spawn a new process.</fsummary>
<desc>
<p>
@@ -6576,7 +6557,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request" arity="2" clause_i="1" since="OTP @OTP-15251@"/>
+ <name name="spawn_request" arity="2" clause_i="1" since="OTP 23.0"/>
<fsummary>Asynchronously send a request to spawn a new process.</fsummary>
<desc>
<p>
@@ -6588,7 +6569,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request" arity="2" clause_i="2" since="OTP @OTP-15251@"/>
+ <name name="spawn_request" arity="2" clause_i="2" since="OTP 23.0"/>
<fsummary>Asynchronously send a request to spawn a new process.</fsummary>
<desc>
<p>
@@ -6600,7 +6581,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request" arity="3" clause_i="1" since="OTP @OTP-15251@"/>
+ <name name="spawn_request" arity="3" clause_i="1" since="OTP 23.0"/>
<fsummary>Asynchronously send a request to spawn a new process.</fsummary>
<desc>
<p>
@@ -6620,7 +6601,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request" arity="3" clause_i="2" since="OTP @OTP-15251@"/>
+ <name name="spawn_request" arity="3" clause_i="2" since="OTP 23.0"/>
<fsummary>Asynchronously send a request to spawn a new process.</fsummary>
<desc>
<p>
@@ -6632,7 +6613,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request" arity="4" clause_i="1" since="OTP @OTP-15251@"/>
+ <name name="spawn_request" arity="4" clause_i="1" since="OTP 23.0"/>
<fsummary>Asynchronously send a request to spawn a new process.</fsummary>
<desc>
<p>
@@ -6644,7 +6625,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request" arity="4" clause_i="2" since="OTP @OTP-15251@"/>
+ <name name="spawn_request" arity="4" clause_i="2" since="OTP 23.0"/>
<fsummary>Asynchronously send a request to spawn a new process.</fsummary>
<desc>
<p>
@@ -6656,7 +6637,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request" arity="5" since="OTP @OTP-15251@"/>
+ <name name="spawn_request" arity="5" since="OTP 23.0"/>
<fsummary>Asynchronously send a request to spawn a new process.</fsummary>
<desc>
<p>
@@ -6893,7 +6874,7 @@ true</pre>
</func>
<func>
- <name name="spawn_request_abandon" arity="1" since="OTP @OTP-15251@"/>
+ <name name="spawn_request_abandon" arity="1" since="OTP 23.0"/>
<fsummary>Abandon a previously issued spawn request.</fsummary>
<desc>
<p>
@@ -10217,7 +10198,7 @@ hello
</func>
<func>
- <name name="term_to_iovec" arity="1" since="OTP @OTP-15618@"/>
+ <name name="term_to_iovec" arity="1" since="OTP 23.0"/>
<fsummary>Encode a term to an Erlang external term format as iovec().
</fsummary>
<desc>
@@ -10242,7 +10223,7 @@ hello
</func>
<func>
- <name name="term_to_iovec" arity="2" since="OTP @OTP-15618@"/>
+ <name name="term_to_iovec" arity="2" since="OTP 23.0"/>
<fsummary>Encode a term to en Erlang external term format as iovec().
</fsummary>
<desc>
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml
index 5ad026f8e4..cdee14a460 100644
--- a/erts/doc/src/notes.xml
+++ b/erts/doc/src/notes.xml
@@ -31,6 +31,675 @@
</header>
<p>This document describes the changes made to the ERTS application.</p>
+<section><title>Erts 11.0.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ The functionality utilized by BIFs for temporary
+ disabling of garbage collection while yielding could
+ cause system task queues to become inconsistent on a
+ process executing such a BIF. Process system tasks are
+ for example utilized when purging code, garbage
+ collecting literal data, and when issuing an ordinary
+ garbage collection from another process.</p>
+ <p>
+ The bug does not trigger frequently. Multiple code purges
+ in direct sequence makes it more likely that this bug is
+ triggered. In the cases observed, this has resulted in a
+ hanging code purge operation.</p>
+ <p>
+ Own Id: OTP-16639 Aux Id: ERL-1236 </p>
+ </item>
+ <item>
+ <p>
+ SCTP and UDP recv/2,3 hangs indefinitely if socket is
+ closed while recv is called (socket in passive mode).</p>
+ <p>
+ Own Id: OTP-16654 Aux Id: ERL-1242 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>Erts 11.0</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>BIFs now behave like ordinary functions with regard to
+ tracing, allowing <c>call_count</c> tracing and fixing a
+ few bugs where return trace messages were lost when BIFs
+ tail-called themselves or other functions
+ ("trapping").</p>
+ <p>
+ Own Id: OTP-14734 Aux Id: ERL-496 </p>
+ </item>
+ <item>
+ <p>
+ Fix various compiler warnings on 64-bit Windows.</p>
+ <p>
+ Own Id: OTP-15800</p>
+ </item>
+ <item>
+ <p><c>erlang:fun_info(fun foo/1, name/1)</c> used to
+ return a function name based on the name of the function
+ that <c>fun foo/1</c> was used in. The name returned is
+ now <c>-fun.foo/1-</c>.</p>
+ <p>
+ Own Id: OTP-15837</p>
+ </item>
+ <item>
+ <p><c>file:allocate/3</c> will now update the file size
+ on all platforms.</p>
+ <p>
+ Own Id: OTP-16155 Aux Id: PR-2408 </p>
+ </item>
+ <item>
+ <p>
+ <c>erlang:decode_packet</c> with type set to <c>httph</c>
+ no longer accepts http headers that have whitespaces in
+ between the header name and the colon. That is:</p>
+ <p>
+ <c> Content-Type : text/html </c></p>
+ <p>
+ is no longer allowed. This has been changed to conform
+ with RFC 7230 and thus protect against http desync
+ attacks.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-16168 Aux Id: ERL-1053 </p>
+ </item>
+ <item>
+ <p>
+ Fix the quoting rules in <c>erl -args_file</c>,
+ <c>ERL_FLAGS</c>, <c>ERL_AFLAGS</c> and <c>ERL_ZFLAGS</c>
+ to work as unix sh quoting.</p>
+ <p>
+ This bug fix can make previous configuration options to
+ <c>erl</c> passed through <c>ERL_FLAGS</c>,
+ <c>ERL_AFLAGS</c>, <c>ERL_ZFLAGS</c> or <c>-args_file</c>
+ not be interpreted in the same way as before the fix.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-16244 Aux Id: ERL-1051 </p>
+ </item>
+ <item>
+ <p>
+ Fix the Erlang distribution to handle the scenario when a
+ node connects that can handle message fragmentation but
+ can not handle the atom cache. This bug only affects
+ users that have implemented a custom distribution
+ carrier. It has been present since OTP-21.</p>
+ <p>
+ The <c>DFLAG_FRAGMENT</c> distribution flag was added to
+ the set of flags that can be rejected by a distribution
+ implementation.</p>
+ <p>
+ Own Id: OTP-16284</p>
+ </item>
+ <item>
+ <p>
+ Compiling a match specification with excessive nesting
+ caused the runtime system to crash due to scheduler stack
+ exhaustion. Instead of crashing the runtime system,
+ effected functions will now raise a <c>system_limit</c>
+ error exception in this situation.</p>
+ <p>
+ Own Id: OTP-16431 Aux Id: ERL-592 </p>
+ </item>
+ <item>
+ <p>Fixed a bug that prevented Erlang from being started
+ on Windows if it were installed on certain paths.</p>
+ <p>
+ Own Id: OTP-16478 Aux Id: ERL-1115 </p>
+ </item>
+ <item>
+ <p>Fix bug on Windows causing bad performance when
+ standard input is closed, especially if the VM is only
+ assigned one CPU core. Could be provoked for example by
+ starting erl or escript via function <c>os:cmd/1</c>.
+ Could be avoided with command line option
+ <c>-noinput</c>.</p> <p>The bad performance was caused by
+ an io thread spinning indefinitely.</p>
+ <p>
+ Own Id: OTP-16521 Aux Id: ERL-716 </p>
+ </item>
+ <item>
+ <p>Fixed a bug on Unix platforms that would cause
+ <c>file:read_file_info/1</c> to return incorrect results
+ if the emulator's effective user or group id differed
+ from its actual ones.</p>
+ <p>
+ Own Id: OTP-16571</p>
+ </item>
+ <item>
+ <p>
+ socket: Compile problems on Android when PACKET_FASTROUTE
+ and PACKET_USER are both defined and has the same value.
+ Use of PACKET_FASTROUTE has been removed as it may be
+ unused and also only for none user-land.</p>
+ <p>
+ Own Id: OTP-16576 Aux Id: ERL-1208 </p>
+ </item>
+ <item>
+ <p>
+ Fixed bug in erl_crash.dump generation that could cause a
+ SEGV core dump if a recently cancelled timer was found.</p>
+ <p>
+ Own Id: OTP-16596 Aux Id: ERL-1105, PR-2606 </p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Improved concurrency of <c>erlang:load_nif/2</c> as it
+ does no longer block other schedulers from executing
+ during initial load of a NIF library.</p>
+ <p>
+ Own Id: OTP-10278</p>
+ </item>
+ <item>
+ <p>EEP-52 has been implemented.</p>
+ <p>In binary matching, the size of the segment to be
+ matched is now allowed to be a guard expression, and
+ similarly in map matching the keys can now be guard
+ expressions. See the Erlang Reference Manual and
+ Programming Examples for more details.</p>
+ <p>Language compilers or code generators that generate
+ Core Erlang code may need to be updated to be compatible
+ with the compiler in OTP 23. For more details, see the
+ section Backwards Compatibility in <url
+ href="http://erlang.org/eeps/eep-0052.html">EEP
+ 52</url>.</p>
+ <p>
+ Own Id: OTP-14708</p>
+ </item>
+ <item>
+ <p>Internally in BEAM, handling of continuation pointers
+ has been simplified. This change is not user-visible,
+ except when examing a process stack in the crashdump
+ viewer. The continuation pointer for a function will now
+ be stored below the y(0) for that function.</p>
+ <p>
+ Own Id: OTP-15077</p>
+ </item>
+ <item>
+ <p><c>seq_trace</c> tokens are now propagated to spawned
+ processes.</p>
+ <p>
+ Own Id: OTP-15232 Aux Id: ERL-700 </p>
+ </item>
+ <item>
+ <p>Improvements of distributed spawn operations. These
+ include both scalability and performance improvements as
+ well as new functionality.</p> <p>New functionality:</p>
+ <list> <item><p>A distributed <seemfa
+ marker="erts:erlang#spawn_monitor/4"><c>spawn_monitor()</c></seemfa>
+ BIF.</p></item> <item><p>Support for <c>monitor</c>
+ option in the distributed <seemfa
+ marker="erts:erlang#spawn_opt/5"><c>spawn_opt()</c></seemfa>
+ BIF.</p></item> <item><p>New <seemfa
+ marker="erts:erlang#spawn_request/5"><c>spawn_request()</c></seemfa>
+ BIFs for asynchronous spawn of processes.
+ <c>spawn_request()</c> supports all options that
+ <c>spawn_opt()</c> support plus a few more.</p></item>
+ </list>
+ <p>
+ Own Id: OTP-15251</p>
+ </item>
+ <item>
+ <p>
+ Make <c>ets:insert/2</c> and <c>ets:insert_new/2</c>
+ yield scheduler execution on long lists of records to
+ insert.</p>
+ <p>
+ Own Id: OTP-15517 Aux Id: ERL-560 </p>
+ </item>
+ <item>
+ <p>
+ Increased size of node incarnation numbers (aka
+ "creation"), from 2 bits to 32 bits. This will reduce the
+ risk of pids/ports/refs, from different node incarnation
+ with the same name, being mixed up.</p>
+ <p>
+ Own Id: OTP-15603</p>
+ </item>
+ <item>
+ <p>The runtime system can now encode Erlang terms to the
+ Erlang external term format as I/O vectors. The main
+ benefit of this is that reference counted binaries can be
+ referred to directly instead of copied into a new
+ binary.</p> <p>The default Erlang distribution over TCP
+ will always utilize this. Alternate distribution
+ implementations utilizing a port as distribution
+ controller will utilize this if the driver implements the
+ <seecref
+ marker="erts:driver_entry#outputv"><c>outputv</c></seecref>
+ callback. Alternate Erlang distribution implementations
+ utilizing a process as distribution controller will
+ utilize this if I/O vectors are utilized by the
+ functionality that processes the data returned from
+ <seemfa
+ marker="erts:erlang#dist_ctrl_get_data/1"><c>erlang:dist_ctrl_get_data()</c></seemfa>.</p>
+ <p>The return type for data returned by <seemfa
+ marker="erts:erlang#dist_ctrl_get_data/1"><c>erlang:dist_ctrl_get_data()</c></seemfa>
+ has been changed from <c>iodata()</c> to <c>iovec()</c>.
+ Note that <c>iovec()</c> data is valid <c>iodata()</c> so
+ old implementations using
+ <c>erlang:dist_ctrl_get_data()</c> do not need to be
+ changed, but may benefit from being changed depending on
+ usage scenario.</p> <p>The new BIFs <seemfa
+ marker="erts:erlang#term_to_iovec/1"><c>term_to_iovec/1</c></seemfa>
+ and <seemfa
+ marker="erts:erlang#term_to_iovec/2"><c>term_to_iovec/2</c></seemfa>
+ have been introduced. These work exactly as
+ <c>term_to_binary()</c> with the corresponding arity
+ except the return type.</p>
+ <p>
+ Own Id: OTP-15618</p>
+ </item>
+ <item>
+ <p>Improved ETS scalability of concurrent calls that
+ change the size of a table, like <c>ets:insert/2</c> and
+ <c>ets:delete/2</c>.</p> <p>This performance feature was
+ implemented for <c>ordered_set</c> in OTP 22.0 and does
+ now apply for all ETS table types.</p> <p>The improved
+ scalability may come at the cost of longer latency of
+ <c>ets:info(T,size)</c> and <c>ets:info(T,memory)</c>. A
+ new table option <c>decentralized_counters</c> has
+ therefore been added. It is default <c>true</c> for
+ <c>ordered_set</c> with <c>write_concurrency</c> enabled
+ and default <c>false</c> for all other table types.</p>
+ <p>
+ Own Id: OTP-15744 Aux Id: OTP-15623, PR-2229 </p>
+ </item>
+ <item>
+ <p>Directories can now be opened by <c>file:open/2</c>
+ when passing the <c>directory</c> option.</p>
+ <p>
+ Own Id: OTP-15835 Aux Id: PR-2212 </p>
+ </item>
+ <item>
+ <p>
+ Add Hygon Dhyana as known processor to enable support for
+ atomic operations.</p>
+ <p>
+ Own Id: OTP-15840</p>
+ </item>
+ <item>
+ <p>
+ Make <c>erlang:phash2</c> functions consume reductions
+ proportional to the size of the input term and yield
+ scheduler when reductions are depleted.</p>
+ <p>
+ Own Id: OTP-15842 Aux Id: PR-2182 </p>
+ </item>
+ <item>
+ <p>
+ Fix various build issues when compiling Erlang/OTP to the
+ IBM AIX platform.</p>
+ <p>
+ Own Id: OTP-15866 Aux Id: PR-2110 </p>
+ </item>
+ <item>
+ <p>
+ Add configure options <c>--enable-pie</c> and
+ <c>--disable-pie</c> to control the build of position
+ independent executables.</p>
+ <p>
+ Own Id: OTP-15868</p>
+ </item>
+ <item>
+ <p><c>file:read_file_info/2</c> can now be used on opened
+ files and directories.</p>
+ <p>
+ Own Id: OTP-15956 Aux Id: PR-2231 </p>
+ </item>
+ <item>
+ <p>
+ Add arity-1 versions of <c>atom_to_binary</c>,
+ <c>binary_to_atom</c> and <c>binary_to_existing_atom</c>,
+ all with <c>utf8</c> as default encoding.</p>
+ <p>
+ Own Id: OTP-15995 Aux Id: PR-2358 </p>
+ </item>
+ <item>
+ <p>
+ Optimized the erts internal hash table implementation for
+ faster lookups. The internal hash is used for things
+ like; the process registry, executing erlang:apply/2,
+ executing M:func(test), and more.</p>
+ <p>
+ Own Id: OTP-16014 Aux Id: PR-2345 </p>
+ </item>
+ <item>
+ <p>CPU quotas are now taken into account when deciding
+ the default number of online schedulers, improving
+ performance in container environments where quotas are
+ applied, such as <c>docker</c> with the <c>--cpus</c>
+ flag.</p>
+ <p>
+ Own Id: OTP-16105 Aux Id: ERL-927 </p>
+ </item>
+ <item>
+ <p>
+ The <c>-config</c> option to <c>erl</c> now can take
+ multiple config files without repeating the
+ <c>-config</c> option. Example:</p>
+ <p>
+ erl -config sys local</p>
+ <p>
+ Own Id: OTP-16148 Aux Id: PR-2373 </p>
+ </item>
+ <item>
+ <p>
+ Removed the <c>scheduler_poll</c> and <c>async I/O</c>
+ dtrace and LTTng trace probes.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-16215</p>
+ </item>
+ <item>
+ <p>
+ Optimized <c>persistent_term:put/2</c> and <c>erase/1</c>
+ to consume less CPU in many cases.</p>
+ <p>
+ Own Id: OTP-16237 Aux Id: PR-2389 </p>
+ </item>
+ <item>
+ <p>The possibility to run Erlang distribution without
+ relying on EPMD has been extended. To achieve this a
+ couple of new options to the inet distribution has been
+ added.</p> <taglist> <tag>-dist_listen false</tag>
+ <item>Setup the distribution channel, but do not listen
+ for incoming connection. This is useful when you want to
+ use the current node to interact with another node on the
+ same machine without it joining the entire
+ cluster.</item> <tag>-erl_epmd_port Port</tag>
+ <item>Configure a default port that the built-in EPMD
+ client should return. This allows the local node to know
+ the port to connect to for any other node in the
+ cluster.</item> </taglist> <p>The <c>erl_epmd</c>
+ callback API has also been extended to allow returning
+ <c>-1</c> as the creation which means that a random
+ creation will be created by the node.</p>
+ <p>In addition a new callback function called
+ <c>listen_port_please</c> has been added that allows the
+ callback to return which listen port the distribution
+ should use. This can be used instead of
+ <c>inet_dist_listen_min/max</c> if the listen port is to
+ be fetched from an external service.</p>
+ <p>
+ Own Id: OTP-16250</p>
+ </item>
+ <item>
+ <p>
+ On systems without <c>closefrom()</c>, such as Linux,
+ iterating over all possible file descriptors and calling
+ <c>close()</c> for each is inefficient. This is markedly
+ so when the maximum number of file descriptors has been
+ tuned to a large number.</p>
+ <p>
+ Instead, in erl_child_setup, walk the open descriptors
+ under <c>/dev/fd</c> and close only those which are open.</p>
+ <p>
+ This optimization affects the CPU usage of starting a new
+ Erlang instance.</p>
+ <p>
+ Own Id: OTP-16270</p>
+ </item>
+ <item>
+ <p>
+ Optimized <c>maps:merge/2</c> for trivial cases of an
+ empty map(s) or same map.</p>
+ <p>
+ Own Id: OTP-16283 Aux Id: PR-2441 </p>
+ </item>
+ <item>
+ <p>
+ The new experimental <c>socket</c> module has been moved
+ to the Kernel application.</p>
+ <p>
+ Own Id: OTP-16312</p>
+ </item>
+ <item>
+ <p>Improved the presentation of allocations and carriers
+ in the <c>instrument</c> module.</p>
+ <p>
+ Own Id: OTP-16327</p>
+ </item>
+ <item>
+ <p>
+ As announced in OTP 22.0, the previously existing limited
+ support for VxWorks has now been removed.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-16329 Aux Id: OTP-15621 </p>
+ </item>
+ <item>
+ <p> The return value when using the <c>httph</c> and
+ <c>httph_bin</c> option to <c>erlang:decode_packet/3</c>
+ and <c>inet:setopts/2</c> has been changed to also
+ include the original header unmodified. See <seemfa
+ marker="erlang#decode_packet/3"><c>erlang:decode_packet/3</c></seemfa>.
+ Example: </p> <pre> >
+ erlang:decode_packet(httph_bin,&lt;&lt;"HELLO:
+ hi\r\n\r\n"&gt;&gt;,[]).
+ {ok,{http_header,0,&lt;&lt;"Hello"&gt;&gt;,&lt;&lt;"HELLO"&gt;&gt;,&lt;&lt;"hi"&gt;&gt;},&lt;&lt;"\r\n"&gt;&gt;}
+ </pre>
+ <p>
+ Own Id: OTP-16347 Aux Id: PR-2466 </p>
+ </item>
+ <item>
+ <p>
+ Ensure <c>net_kernel:monitor_nodes/1</c> sends
+ <c>nodedown</c> messages of a failed connection before
+ <c>nodeup</c> messages of a reestablished connection
+ toward the same node.</p>
+ <p>
+ Own Id: OTP-16362</p>
+ </item>
+ <item>
+ <p>
+ Update of <seeerl
+ marker="kernel:seq_trace#whatis">sequential
+ tracing</seeerl> to also support other information
+ transfers than message passing.</p>
+ <p>
+ Own Id: OTP-16370 Aux Id: OTP-15251, OTP-15232 </p>
+ </item>
+ <item>
+ <p>
+ socket: It is now possible to create a socket from an
+ already existing file descriptor.</p>
+ <p>
+ Own Id: OTP-16398 Aux Id: ERL-1154 </p>
+ </item>
+ <item>
+ <p>
+ socket: The socket:supports/1 function now also report if
+ netns is supported or not.</p>
+ <p>
+ Own Id: OTP-16432</p>
+ </item>
+ <item>
+ <p><c>=:=</c> has been optimized to return <c>false</c>
+ immediately when comparing two maps of different
+ sizes.</p>
+ <p>
+ Own Id: OTP-16454</p>
+ </item>
+ <item>
+ <p>
+ Changed the behaviour of passing the <c>erl</c> command
+ line argument <seecom
+ marker="erts:erl#async_thread_pool_size"><c>+A
+ 0</c></seecom> to silently imply <c>+A 1</c>. That is, it
+ will no longer be possible to completely disable the
+ async thread pool. Disabling of the async thread pool has
+ since OTP 21 had no benefits; only lots of drawbacks.</p>
+ <p>
+ Own Id: OTP-16482</p>
+ </item>
+ <item>
+ <p>The deprecated <c>erlang:get_stacktrace/0</c> BIF now
+ returns an empty list instead of a stacktrace. To
+ retrieve the stacktrace, use the extended try/catch
+ syntax that was introduced in OTP 21.
+ <c>erlang:get_stacktrace/0</c> is scheduled for removal
+ in OTP 24.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-16484</p>
+ </item>
+ <item>
+ <p>
+ <seemfa
+ marker="erts:init#restart/1"><c>init:restart/1</c></seemfa>
+ has been introduced. <c>init:restart/1</c> can be
+ utilized for changing the code loading mode during a
+ restart.</p>
+ <p>
+ Own Id: OTP-16492 Aux Id: PR-2461 </p>
+ </item>
+ <item>
+ <p>
+ Improve configure for the net nif, which should increase
+ portability.</p>
+ <p>
+ Own Id: OTP-16530 Aux Id: OTP-16464 </p>
+ </item>
+ <item>
+ <p>
+ socket: Socket counters and socket global counters are
+ now represented as maps (instead of property lists).</p>
+ <p>
+ Own Id: OTP-16535</p>
+ </item>
+ <item>
+ <p>Reduced the resource usage of <c>erlc</c> in parallel
+ builds (e.g. <c>make -j128</c>).</p>
+ <p>
+ Own Id: OTP-16543 Aux Id: ERL-1186 </p>
+ </item>
+ <item>
+ <p>
+ The experimental socket module has gotten restrictions
+ removed so now the 'seqpacket' socket type should work
+ for any communication domain (protocol family) where the
+ OS supports it, typically the Unix Domain.</p>
+ <p>
+ Own Id: OTP-16550 Aux Id: ERIERL-476 </p>
+ </item>
+ <item>
+ <p>Updated the internal <c>pcre</c> library to
+ <c>8.44</c>.</p>
+ <p>
+ Own Id: OTP-16557</p>
+ </item>
+ <item>
+ <p>There is now cost in terms of reductions when copying
+ binary data using the binary syntax.</p>
+ <p>
+ Own Id: OTP-16601 Aux Id: OTP-16577 </p>
+ </item>
+ <item>
+ <p>
+ The executable <c>erl_call</c> is now part of the
+ <c>erts</c> distribution in addition to
+ <c>erl_interface</c>.</p>
+ <p>
+ Own Id: OTP-16602</p>
+ </item>
+ <item>
+ <p>
+ Fix a buffer overflow bug that caused EPMD to consume
+ 100% CPU after many nodes had been connected on the same
+ time on NetBSD.</p>
+ <p>
+ Own Id: OTP-16615</p>
+ </item>
+ <item>
+ <p>
+ <c>erl -remsh</c> now uses the dynamic node names feature
+ by default. See the <seecom
+ marker="erts:erl">erl</seecom> documentation for details.</p>
+ <p>
+ Own Id: OTP-16616</p>
+ </item>
+ <item>
+ <p>
+ socket: By default the socket options rcvtimeo and
+ sndtimeo are now disabled. To enable these, OTP now has
+ to be built with the configure option
+ --enable-esock-rcvsndtimeo</p>
+ <p>
+ Own Id: OTP-16620</p>
+ </item>
+ <item>
+ <p>
+ The environment variable $HOME does no longer have to be
+ set before Erlang can be started.</p>
+ <p>
+ Own Id: OTP-16635 Aux Id: ERL-476 PR-2390 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>Erts 10.7.2.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Fixed bug in erl_crash.dump generation that could cause a
+ SEGV core dump if a recently cancelled timer was found.</p>
+ <p>
+ Own Id: OTP-16596 Aux Id: ERL-1105, PR-2606 </p>
+ </item>
+ <item>
+ <p>
+ The functionality utilized by BIFs for temporary
+ disabling of garbage collection while yielding could
+ cause system task queues to become inconsistent on a
+ process executing such a BIF. Process system tasks are
+ for example utilized when purging code, garbage
+ collecting literal data, and when issuing an ordinary
+ garbage collection from another process.</p>
+ <p>
+ The bug does not trigger frequently. Multiple code purges
+ in direct sequence makes it more likely that this bug is
+ triggered. In the cases observed, this has resulted in a
+ hanging code purge operation.</p>
+ <p>
+ Own Id: OTP-16639 Aux Id: ERL-1236 </p>
+ </item>
+ <item>
+ <p>
+ SCTP and UDP recv/2,3 hangs indefinitely if socket is
+ closed while recv is called (socket in passive mode).</p>
+ <p>
+ Own Id: OTP-16654 Aux Id: ERL-1242 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Erts 10.7.2</title>
<section><title>Fixed Bugs and Malfunctions</title>
@@ -1792,6 +2461,64 @@
</section>
+<section><title>Erts 10.3.5.12</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ The functionality utilized by BIFs for temporary
+ disabling of garbage collection while yielding could
+ cause system task queues to become inconsistent on a
+ process executing such a BIF. Process system tasks are
+ for example utilized when purging code, garbage
+ collecting literal data, and when issuing an ordinary
+ garbage collection from another process.</p>
+ <p>
+ The bug does not trigger frequently. Multiple code purges
+ in direct sequence makes it more likely that this bug is
+ triggered. In the cases observed, this has resulted in a
+ hanging code purge operation.</p>
+ <p>
+ Own Id: OTP-16639 Aux Id: ERL-1236 </p>
+ </item>
+ <item>
+ <p>
+ A literal area could prematurely be released before all
+ uses of it had been removed. This occurred either when a
+ terminating process had a complex exit reason referring
+ to a literal that concurrently was removed, or when a
+ terminating process continued executing a dirty NIF
+ accessing a literal (via the heap) that concurrently was
+ removed.</p>
+ <p>
+ Own Id: OTP-16640 Aux Id: OTP-16193 </p>
+ </item>
+ <item>
+ <p>
+ The VM could potentially crash when checking process code
+ of a process that terminated while executing a dirty NIF.
+ The checking of process code is part of a code purge
+ operation.</p>
+ <p>
+ Own Id: OTP-16641</p>
+ </item>
+ <item>
+ <p>
+ System tasks of <c>low</c> priority were not interleaved
+ with <c>normal</c> priority system tasks as they should.
+ This could potentially delay garbage collection of
+ another process longer than intended if the garbage
+ collection was requested from a <c>low</c> priority
+ process.</p>
+ <p>
+ Own Id: OTP-16642</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Erts 10.3.5.11</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c
index 5beab81b98..aafd25e4ea 100644
--- a/erts/emulator/beam/bif.c
+++ b/erts/emulator/beam/bif.c
@@ -1032,13 +1032,6 @@ BIF_RETTYPE hibernate_3(BIF_ALIST_3)
}
/**********************************************************************/
-
-BIF_RETTYPE get_stacktrace_0(BIF_ALIST_0)
-{
- BIF_RET(NIL);
-}
-
-/**********************************************************************/
/*
* This is like exit/1, except that errors are logged if they terminate
* the process, and the final error value will be {Term,StackTrace}.
@@ -1132,12 +1125,11 @@ BIF_RETTYPE raise_3(BIF_ALIST_3)
reason = EXC_THROWN;
} else goto error;
reason &= ~EXF_SAVETRACE;
-
- /* Check syntax of stacktrace, and count depth.
- * Accept anything that can be returned from erlang:get_stacktrace/0,
- * as well as a 2-tuple with a fun as first element that the
- * error_handler may need to give us. Also allow old-style
- * MFA three-tuples.
+
+ /* Check syntax of stacktrace, and count depth. Accept anything
+ * that can be returned from a stacktrace from try/catch, as well
+ * as a 2-tuple with a fun as first element that the error_handler
+ * may need to give us. Also allow old-style MFA three-tuples.
*/
for (l = stacktrace, depth = 0;
is_list(l);
diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab
index 5fb8441a15..c55189f8a7 100644
--- a/erts/emulator/beam/bif.tab
+++ b/erts/emulator/beam/bif.tab
@@ -283,7 +283,6 @@ bif erts_internal:is_process_alive/2
bif erlang:error/1 error_1
bif erlang:error/2 error_2
bif erlang:raise/3 raise_3
-bif erlang:get_stacktrace/0
bif erlang:is_builtin/3
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 0a1e274396..6c83693df8 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -11188,7 +11188,7 @@ erts_set_gc_state(Process *c_p, int enable)
first1 = dgc_tsk_qs->q[prio];
last1 = first1->prev;
first2 = stsk_qs->q[prio];
- last2 = first1->prev;
+ last2 = first2->prev;
last1->next = first2;
first2->prev = last1;
diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c
index 42a5936513..6797b5d32f 100644
--- a/erts/emulator/drivers/common/inet_drv.c
+++ b/erts/emulator/drivers/common/inet_drv.c
@@ -12254,14 +12254,15 @@ static void packet_inet_stop(ErlDrvData e)
into "udp_descriptor*" or "inet_descriptor*":
*/
udp_descriptor * udesc = (udp_descriptor*) e;
- inet_descriptor* descr = INETP(udesc);
+ inet_descriptor* desc = INETP(udesc);
if (udesc->i_buf != NULL) {
release_buffer(udesc->i_buf);
udesc->i_buf = NULL;
}
- ASSERT(NO_SUBSCRIBERS(&(descr->empty_out_q_subs)));
- inet_stop(descr);
+ ASSERT(NO_SUBSCRIBERS(&(desc->empty_out_q_subs)));
+ async_error_am_all(desc, am_closed);
+ inet_stop(desc);
}
static int packet_error(udp_descriptor* udesc, int err)
diff --git a/erts/emulator/test/exception_SUITE.erl b/erts/emulator/test/exception_SUITE.erl
index 5dfa9bb4e0..4d20e1cef3 100644
--- a/erts/emulator/test/exception_SUITE.erl
+++ b/erts/emulator/test/exception_SUITE.erl
@@ -327,7 +327,6 @@ stacktrace_1(X, C1, Y) ->
C1 -> value1
catch
C1:D1:Stk1 ->
- [] = erlang:get_stacktrace(),
{caught1,D1,Stk1}
after
foo(Y)
@@ -335,7 +334,6 @@ stacktrace_1(X, C1, Y) ->
V2 -> {value2,V2}
catch
C2:D2:Stk2 ->
- [] = erlang:get_stacktrace(),
{caught2,{C2,D2},Stk2}
after
ok
@@ -462,7 +460,6 @@ my_abs(X) -> abs(X).
gunilla(Config) when is_list(Config) ->
{throw,kalle} = gunilla_1(),
- [] = erlang:get_stacktrace(),
ok.
gunilla_1() ->
diff --git a/erts/etc/win32/nsis/erlang20.nsi b/erts/etc/win32/nsis/erlang20.nsi
index 63e63a06cb..950f3ec0a3 100644
--- a/erts/etc/win32/nsis/erlang20.nsi
+++ b/erts/etc/win32/nsis/erlang20.nsi
@@ -52,7 +52,7 @@ Var STARTMENU_FOLDER
!define MY_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
;General
- OutFile "${OUTFILEDIR}\otp_${WINTYPE}_${OTP_VERSION}.exe"
+ OutFile "${OUTFILEDIR}\otp_${WINTYPE}_${OTP_RELEASE_VERSION}.exe"
;Folder selection page
!if ${WINTYPE} == "win64"
@@ -68,7 +68,7 @@ Var STARTMENU_FOLDER
!if ${WINTYPE} == "win64"
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "${OTP_PRODUCT} ${OTP_VERSION} (x64)"
!else
- !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${OTP_PRODUCT} ${OTP_VERSION}"
+ !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${OTP_PRODUCT} ${OTP_VERSION} (i386)"
!endif
;--------------------------------
@@ -201,7 +201,7 @@ done_startmenu:
WriteRegStr HKLM \
"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${OTP_VERSION} (${ERTS_VERSION})" \
- "DisplayName" "Erlang OTP ${OTP_VERSION} (${ERTS_VERSION})"
+ "DisplayName" "Erlang OTP ${OTP_RELEASE_VERSION} (${ERTS_VERSION})"
WriteRegStr HKLM \
"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${OTP_VERSION} (${ERTS_VERSION})" \
"UninstallString" "$INSTDIR\Uninstall.exe"
@@ -225,7 +225,7 @@ done_startmenu:
WriteRegStr HKCU \
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${OTP_VERSION} (${ERTS_VERSION})" \
- "DisplayName" "Erlang OTP ${OTP_VERSION} (${ERTS_VERSION})"
+ "DisplayName" "Erlang OTP ${OTP_RELEASE_VERSION} (${ERTS_VERSION})"
WriteRegStr HKCU \
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${OTP_VERSION} (${ERTS_VERSION})" \
"UninstallString" "$INSTDIR\Uninstall.exe"
diff --git a/erts/etc/win32/wsl_tools/SetupWSLcross.bat b/erts/etc/win32/wsl_tools/SetupWSLcross.bat
index 860a7d5e60..5de4cd8bb1 100644
--- a/erts/etc/win32/wsl_tools/SetupWSLcross.bat
+++ b/erts/etc/win32/wsl_tools/SetupWSLcross.bat
@@ -8,11 +8,6 @@ IF "%~1"=="x64" GOTO search
GOTO badarg
:search
-IF EXIST "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat". (
- call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %~1 > nul
- goto continue
-)
-
IF EXIST "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat". (
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" %~1 > nul
goto continue
@@ -33,6 +28,11 @@ IF EXIST "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat".
goto continue
)
+IF EXIST "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat". (
+ call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %~1 > nul
+ goto continue
+)
+
GOTO no_vcvars
:continue
diff --git a/erts/preloaded/ebin/erlang.beam b/erts/preloaded/ebin/erlang.beam
index 61e841b703..9bf538de29 100644
--- a/erts/preloaded/ebin/erlang.beam
+++ b/erts/preloaded/ebin/erlang.beam
Binary files differ
diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl
index a9d8803575..c3d3e387e3 100644
--- a/erts/preloaded/src/erlang.erl
+++ b/erts/preloaded/src/erlang.erl
@@ -54,13 +54,13 @@
dist_ctrl_set_opt/3,
dist_get_stat/1]).
--deprecated([{get_stacktrace,0,
- "use the new try/catch syntax for retrieving the "
- "stack backtrace"}]).
-deprecated([{now,0,
"see the \"Time and Time Correction in Erlang\" "
"chapter of the ERTS User's Guide for more information"}]).
-removed([{hash,2,"use erlang:phash2/2 instead"}]).
+-removed([{get_stacktrace,0,
+ "use the new try/catch syntax for retrieving the "
+ "stack backtrace"}]).
%% Get rid of autoimports of spawn to avoid clashes with ourselves.
-compile({no_auto_import,[spawn_link/1]}).
@@ -146,7 +146,7 @@
-export([fun_info/2, fun_info_mfa/1, fun_to_list/1, function_exported/3]).
-export([garbage_collect/0, garbage_collect/1, garbage_collect/2]).
-export([garbage_collect_message_area/0, get/0, get/1, get_keys/0, get_keys/1]).
--export([get_module_info/1, get_stacktrace/0, group_leader/0]).
+-export([get_module_info/1, group_leader/0]).
-export([group_leader/2]).
-export([halt/0, halt/1, halt/2,
has_prepared_code_on_load/1, hibernate/3]).
@@ -1063,11 +1063,6 @@ get_keys(_Val) ->
get_module_info(_Module) ->
erlang:nif_error(undefined).
-%% get_stacktrace/0
--spec erlang:get_stacktrace() -> [stack_item()].
-get_stacktrace() ->
- erlang:nif_error(undefined).
-
%% group_leader/0
-spec group_leader() -> pid().
group_leader() ->
diff --git a/erts/preloaded/src/erts.app.src b/erts/preloaded/src/erts.app.src
index c3e5182a60..3a98f6f0f1 100644
--- a/erts/preloaded/src/erts.app.src
+++ b/erts/preloaded/src/erts.app.src
@@ -42,7 +42,7 @@
{registered, []},
{applications, []},
{env, []},
- {runtime_dependencies, ["stdlib-@OTP-15251@", "kernel-@OTP-15251@", "sasl-3.3"]}
+ {runtime_dependencies, ["stdlib-3.13", "kernel-7.0", "sasl-3.3"]}
]}.
%% vim: ft=erlang
diff --git a/erts/vsn.mk b/erts/vsn.mk
index cba7ace509..1f9796c5cd 100644
--- a/erts/vsn.mk
+++ b/erts/vsn.mk
@@ -18,7 +18,7 @@
# %CopyrightEnd%
#
-VSN = 10.7.2
+VSN = 11.0.1
# Port number 4365 in 4.2
# Port number 4366 in 4.3