diff options
Diffstat (limited to 'erts/doc/src/notes.xml')
-rw-r--r-- | erts/doc/src/notes.xml | 454 |
1 files changed, 0 insertions, 454 deletions
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index 5736d366eb..da470b51ec 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -31,460 +31,6 @@ </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> - <item> - <p>A bug has been fixed in the <c>maps</c> 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 <c>K1</c> - containing a binary <c>B1</c> into a map <c>M</c> having - a key <c>K2</c> with a binary <c>B2</c> if the following - conditions were met:</p> <list> <item><c>B1 =/= - B2</c></item> <item><c>size(B1) >= 4294967296</c></item> - <item><c>size(B2) >= 4294967296</c></item> - <item><c>size(M) >= 32</c></item> <item><c>(size(B1) rem - 4294967296) == (size(B2) rem 4294967296)</c></item> - <item>the first <c>(size(B1) rem 4294967296)</c> bytes - are the same both in <c>B1</c> and <c>B2</c></item> - <item>substituting <c>B1</c> in <c>K1</c> with <c>B2</c> - would create a term with the same value as - <c>K2</c></item> </list> <p>The root cause of the problem - is that the <c>maps</c> implementation only hashed the - first <c>(X rem 4294967296)</c> bytes of binaries so that - different binaries could get the same hash value - independently of the hash seed.</p> - <p> - Own Id: OTP-15707</p> - </item> - <item> - <p> - <c>term_to_binary()</c> and distributed sends will now - throw a <c>system_limit</c> exception instead of - producing erroneous results when trying to encode a - binary larger than 4 GB.</p> - <p> - Own Id: OTP-15708</p> - </item> - <item> - <p> - The vxworks configure has been updated to respect the - environment CFLAGS.</p> - <p> - Own Id: OTP-15773</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).</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> - 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> - The <c>persistent_term</c> functions <c>put/2</c> and - <c>erase/1</c> are now yeliding.</p> - <p> - Own Id: OTP-15615</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>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 <c>ordered_set</c> with - <c>write_concurrency</c> enabled use the decentralized - counter. Experiments indicate that this change - substantially improves the scalability of ETS - <c>ordered_set</c> tables with <c>write_concurrency</c> - enabled in scenarios with frequent <c>ets:insert/2</c> - and <c>ets:delete/2</c> calls.</p> - <p> - Own Id: OTP-15623 Aux Id: PR-2190 </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> - <item> - <p>Internal documentation has now been added to the - <em>Erts</em> and <em>Compiler</em> applications.</p> - <p>The internal documents for <em>Erts</em> describe - miscellaneous interesting implementation details. Those - details can change at any time.</p> - <p>The internal documentation for <em>Compiler</em> - documents the API for the Core Erlang modules. While we - will not change those APIs without good reason, we don't - give the same guarantees about backward compatibility as - for the rest of the APIs in OTP.</p> - <p> - Own Id: OTP-15715</p> - </item> - <item> - <p>The performance of non-bignum integer arithmetic has - been improved.</p> - <p> - Own Id: OTP-15740</p> - </item> - </list> - </section> - -</section> - <section><title>Erts 10.3.4</title> <section><title>Fixed Bugs and Malfunctions</title> |