aboutsummaryrefslogtreecommitdiffstats
path: root/erts/doc/src/notes.xml
diff options
context:
space:
mode:
Diffstat (limited to 'erts/doc/src/notes.xml')
-rw-r--r--erts/doc/src/notes.xml380
1 files changed, 380 insertions, 0 deletions
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml
index 248b871ca0..dbe09dd04b 100644
--- a/erts/doc/src/notes.xml
+++ b/erts/doc/src/notes.xml
@@ -31,6 +31,386 @@
</header>
<p>This document describes the changes made to the ERTS application.</p>
+<section><title>Erts 10.4</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Do not allocate new bitstring/binary when an empty binary
+ is appended.</p>
+ <p>
+ Own Id: OTP-15535 Aux Id: PR-2055 </p>
+ </item>
+ <item>
+ <p>
+ Document that <c>process_info(_, current_function)</c>
+ can return <c>{current_function, undefined}</c> in case
+ of execution of native code.</p>
+ <p>
+ Own Id: OTP-15543 Aux Id: PR-2089 </p>
+ </item>
+ <item>
+ <p>
+ Fixed bug in <c>ets:select</c>, <c>ets:match</c> and
+ friends which could cause the table to remain fixated (as
+ if <c>ets:safe_fixtable</c> had been called) after the
+ call returned. This could happen for <c>protected</c>
+ tables if another concurrent running process transfered
+ table ownership to the process during its
+ ets:select/match call. Ownership can be transfered using
+ either <c>ets:give_away</c> or the <c>heir</c> table
+ option.</p>
+ <p>
+ Own Id: OTP-15672</p>
+ </item>
+ <item>
+ <p>Fixed a Windows-specific bug in <c>file:list_dir/1</c>
+ that caused it to misbehave on network shares.</p>
+ <p>
+ Own Id: OTP-15693</p>
+ </item>
+ <item>
+ <p>
+ Fixed bug when calling <c>enif_whereis_*</c> from NIF
+ resource destructor. Symtoms could be emulator crash or
+ hanging scheduler threads.</p>
+ <p>
+ Own Id: OTP-15694 Aux Id: ERL-863 </p>
+ </item>
+ <item>
+ <p>Fixed a bug in the error case of <c>apply/3</c>, where
+ the exception would erroneously have an empty argument
+ list in some cases.</p>
+ <p>
+ Own Id: OTP-15698</p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Add support for Erlang Distribution protocol to split the
+ payload of large signals into several fragments. This
+ allows other processes to communicate uninterrupted
+ during the transmission of these signals.</p>
+ <p>
+ Own Id: OTP-13397</p>
+ </item>
+ <item>
+ <p>
+ A simple socket API is provided through the socket
+ module. This is a low level API that does *not* replace
+ gen_[tcp|udp|sctp]. It is intended to *eventually*
+ replace the inet driver, but not the high level
+ gen-modules (gen_tcp, gen_udp and gen_sctp). It also
+ provides a basic API that facilitates the implementation
+ of other protocols, than TCP, UDP and SCTP. </p>
+ <p>
+ Known issues are; No support for the Windows OS
+ (currently), a small term leakage.</p>
+ <p>
+ Own Id: OTP-14831</p>
+ </item>
+ <item>
+ <p>Added NIF functions <seealso
+ marker="erl_nif#enif_set_pid_undefined"><c>enif_set_pid_undefined</c></seealso>,
+ <seealso
+ marker="erl_nif#enif_is_pid_undefined"><c>enif_is_pid_undefined</c></seealso>
+ and <seealso
+ marker="erl_nif#enif_compare_pids"><c>enif_compare_pids</c></seealso>.</p>
+ <p>
+ Own Id: OTP-15011 Aux Id: PR-2147 </p>
+ </item>
+ <item>
+ <p>Underutilized memory segments (carriers) can now move
+ between all allocator instances, rather than just between
+ instances of the same type, which greatly reduces memory
+ usage in some scenarios. </p>
+ <p>
+ Own Id: OTP-15063</p>
+ </item>
+ <item>
+ <p>The emulator will now mark free blocks in pooled
+ carriers with <c>madvise(2) + MADV_FREE</c> (or similar),
+ letting the OS reclaim the associated physical memory if
+ necessary.</p>
+ <p>
+ Own Id: OTP-15075</p>
+ </item>
+ <item>
+ <p>
+ New <c>ERL_NIF_SELECT_CANCEL</c> feature added to
+ <c>enif_select</c> in order to cancel (or "deselect") a
+ read or write event on a previously selected file
+ descriptor.</p>
+ <p>
+ Own Id: OTP-15095</p>
+ </item>
+ <item>
+ <p>
+ ETS option <c>write_concurrency</c> now also affects and
+ improves the scalability of <c>ordered_set</c> 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.</p>
+ <p>
+ Own Id: OTP-15128</p>
+ </item>
+ <item>
+ <p>
+ Build configuration of the <c>crypto</c> application has
+ been moved from the <c>erts</c> application into the
+ <c>crypto</c> application.</p>
+ <p>
+ Own Id: OTP-15129</p>
+ </item>
+ <item>
+ <p>Anonymous functions that don't capture environment are
+ now created at load-time instead of in run-time.</p>
+ <p>
+ Own Id: OTP-15195 Aux Id: PR-1812 </p>
+ </item>
+ <item>
+ <p>
+ Optimize updates of maps with identical keys and values.
+ E.g. in the example below the original Map will be reused
+ as the return of the update.</p>
+ <p>
+ 1> Map = #{ a => b }. #{ a => b } 2> Map#{ a := b }.</p>
+ <p>
+ Own Id: OTP-15211 Aux Id: PR-1889 </p>
+ </item>
+ <item>
+ <p>
+ Optimize <c>binary:match/2</c> and
+ <c>binary:matches/2</c> to use memchr internally.</p>
+ <p>
+ Own Id: OTP-15238 Aux Id: PR-1803 </p>
+ </item>
+ <item>
+ <p>
+ The runtime system used to terminate when a message
+ larger than 2 Gb was passed over the distribution. The
+ send operation will now instead throw a
+ <c>system_limit</c> exeption.</p>
+ <p>
+ Own Id: OTP-15261</p>
+ </item>
+ <item>
+ <p>
+ Change the first module called by erts to be names
+ erl_init instead of otp_ring0. systools in sasl have been
+ updated to reflect this change.</p>
+ <p>
+ Own Id: OTP-15336 Aux Id: PR-1825 </p>
+ </item>
+ <item>
+ <p>
+ Minor adjustments made to build system for parallel
+ configure.</p>
+ <p>
+ Own Id: OTP-15340 Aux Id: OTP-14625 </p>
+ </item>
+ <item>
+ <p>
+ Two new NIF interface functions <c>enif_select_read</c>
+ and <c>enif_select_write</c>. They are similar to
+ existing <c>enif_select</c> but allow a custom event
+ message as argument.</p>
+ <p>
+ Own Id: OTP-15349 Aux Id: PR-2084 </p>
+ </item>
+ <item>
+ <p>The embedded copy of <c>zlib</c> has been updated from
+ <c>1.2.8</c> to <c>1.2.11</c>.</p>
+ <p>Note that this copy is only used as a fallback when
+ the target platform doesn't provide any <c>zlib</c>
+ development libraries. If your system provides
+ <c>zlib</c> then it will be used even if it is older than
+ <c>1.2.11</c>.</p>
+ <p>
+ Own Id: OTP-15351 Aux Id: ERL-749 </p>
+ </item>
+ <item>
+ <p>
+ New NIF function <c>enif_make_monitor_term</c>.</p>
+ <p>
+ Own Id: OTP-15362 Aux Id: PR-2127 </p>
+ </item>
+ <item>
+ <p>Appending lists (The ++ operator) will now yield
+ properly on large inputs.</p>
+ <p>
+ Own Id: OTP-15427</p>
+ </item>
+ <item>
+ <p>The <c>length/1</c> BIF used to calculate the length
+ of the list in one go without yielding, even if the list
+ was very long. In OTP 22, <c>length/1</c> will yield when
+ called with a long lists.</p>
+ <p>
+ Own Id: OTP-15439</p>
+ </item>
+ <item>
+ <p>
+ Processes sending messages are now punished with a
+ reduction cost based on message size. That is, a process
+ sending a large message will yield earlier than before.</p>
+ <p>
+ Own Id: OTP-15513 Aux Id: ERL-773 </p>
+ </item>
+ <item>
+ <p>The transitory emulator option <c>+ztma true</c>
+ (introduced in OTP 21.3) has been removed.</p>
+ <p>
+ Own Id: OTP-15581 Aux Id: OTP-15580 </p>
+ </item>
+ <item>
+ <p>In OTP 22, HiPE (the native code compiler) is not
+ fully functional. The reasons for this are:</p>
+ <p>There are new BEAM instructions for binary matching
+ that the HiPE native code compiler does not support.</p>
+ <p>The new optimizations in the Erlang compiler create
+ new combination of instructions that HiPE currently does
+ not handle correctly.</p>
+ <p>If erlc is invoked with the <c>+native</c> option, and
+ if any of the new binary matching instructions are used,
+ the compiler will issue a warning and produce a BEAM file
+ without native code.</p>
+ <p>
+ Own Id: OTP-15596</p>
+ </item>
+ <item>
+ <p>
+ Increased the 'creation' value from 2 to 32 bits. The
+ 'creation' value determines how many times a distributed
+ node can restart until pids, ports and references may
+ conflict with such identifiers from an earlier node
+ incarnation with the same name.</p>
+ <p>
+ Own Id: OTP-15603</p>
+ </item>
+ <item>
+ <p>
+ The termination behaviour of processes has changed to
+ allow processes to yield while sending link exit/monitor
+ down signals.</p>
+ <p>
+ The erl crash dump as been expanded to now also include
+ processes that are termenating but have not yet
+ terminated.</p>
+ <p>
+ Own Id: OTP-15610</p>
+ </item>
+ <item>
+ <p>
+ The dist messages EXIT, EXIT2 and MONITOR_DOWN have been
+ updated with new versions that send the reason term as
+ part of the payload of the message instead of as part of
+ the control message.</p>
+ <p>
+ The old versions are still present and can be used when
+ communicating with nodes that don't support the new
+ versions.</p>
+ <p>
+ Own Id: OTP-15611</p>
+ </item>
+ <item>
+ <p>
+ When sending messages, exit, exit2 and monitor down
+ distributed signals, the process sending will now yield
+ appropriately.</p>
+ <p>
+ This means that a terminating process will yield and
+ possibly be suspended on busy distribution entries while
+ they are terminating. This means that any memory held by
+ such processes will not be released until after all
+ exit/monitor down signals have been sent.</p>
+ <p>
+ Own Id: OTP-15612</p>
+ </item>
+ <item>
+ <p>
+ All external pids/ports/refs created by
+ erlang:list_to_pid/port/ref debug functions now compare
+ equal to any other pid/port/ref with the same number from
+ that node.</p>
+ <p>
+ Before this change they compared differently because the
+ node creation of the pid/port/ref did not compare equal
+ to any real pid/port/ref creation.</p>
+ <p>
+ This will mostly effect pids/ports/refs typed in the
+ shell.</p>
+ <p>
+ Own Id: OTP-15613</p>
+ </item>
+ <item>
+ <p>
+ A new <seealso
+ marker="erlang#dist_ctrl_set_opt/3"><c>erlang:dist_ctrl_set_opt(DHandle,
+ get_size, Value)</c></seealso> option has been added.
+ This option makes it possible to configure the
+ distribution channel identified by <c>DHandle</c> so that
+ <seealso
+ marker="erlang#dist_ctrl_get_data/1"><c>erlang:dist_ctrl_get_data(DHandle)</c></seealso>
+ also returns the size of the data to pass over the
+ channel.</p>
+ <p>
+ Own Id: OTP-15617</p>
+ </item>
+ <item>
+ <p>The <c>iolist_size/1</c> function is now yielding
+ which means that an Erlang/OTP system will be responsive
+ even if the applications running on the system frequently
+ call <c>iolist_size/1</c> with large iolists.</p>
+ <p>
+ Own Id: OTP-15631</p>
+ </item>
+ <item>
+ <p>
+ A simple test suite for the net module has been added.</p>
+ <p>
+ Own Id: OTP-15635</p>
+ </item>
+ <item>
+ <p>Added the NIF function <c>enif_term_type</c>, which
+ helps avoid long sequences of <c>enif_is_xyz</c> by
+ returning the type of the given term. This is especially
+ helpful for NIFs that serialize terms, such as JSON
+ encoders, where it can improve both performance and
+ readability.</p>
+ <p>
+ Own Id: OTP-15640</p>
+ </item>
+ <item>
+ <p>The last call optimization is now applied to BIFs.
+ When calling a BIF in the tail position of a function,
+ the return address and stack frame will now be discarded
+ before calling the BIF. As consequence of this change,
+ the immediate caller of a tail-called BIF will no longer
+ be available in stack backtraces.</p>
+ <p>
+ Own Id: OTP-15674 Aux Id: PR-2177 </p>
+ </item>
+ <item>
+ <p>
+ Fix GC bug where distributed messages in a processes
+ mailbox would cause extra GCs. This can be very expensive
+ if there many messages in the mailbox.</p>
+ <p>
+ Own Id: OTP-15703</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Erts 10.3.1</title>
<section><title>Fixed Bugs and Malfunctions</title>