diff options
Diffstat (limited to 'erts')
-rw-r--r-- | erts/doc/src/erlang.xml | 51 | ||||
-rw-r--r-- | erts/doc/src/notes.xml | 727 | ||||
-rw-r--r-- | erts/emulator/beam/bif.c | 18 | ||||
-rw-r--r-- | erts/emulator/beam/bif.tab | 1 | ||||
-rw-r--r-- | erts/emulator/beam/erl_process.c | 2 | ||||
-rw-r--r-- | erts/emulator/drivers/common/inet_drv.c | 7 | ||||
-rw-r--r-- | erts/emulator/test/exception_SUITE.erl | 3 | ||||
-rw-r--r-- | erts/etc/win32/nsis/erlang20.nsi | 8 | ||||
-rw-r--r-- | erts/etc/win32/wsl_tools/SetupWSLcross.bat | 10 | ||||
-rw-r--r-- | erts/preloaded/ebin/erlang.beam | bin | 108992 -> 108908 bytes | |||
-rw-r--r-- | erts/preloaded/src/erlang.erl | 13 | ||||
-rw-r--r-- | erts/preloaded/src/erts.app.src | 2 | ||||
-rw-r--r-- | erts/vsn.mk | 2 |
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,<<"HELLO: + hi\r\n\r\n">>,[]). + {ok,{http_header,0,<<"Hello">>,<<"HELLO">>,<<"hi">>},<<"\r\n">>} + </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 Binary files differindex 61e841b703..9bf538de29 100644 --- a/erts/preloaded/ebin/erlang.beam +++ b/erts/preloaded/ebin/erlang.beam 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 |