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.xml850
1 files changed, 849 insertions, 1 deletions
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml
index e996d3e8e3..7fc61517a8 100644
--- a/erts/doc/src/notes.xml
+++ b/erts/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2004</year><year>2012</year>
+ <year>2004</year><year>2013</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -30,6 +30,854 @@
</header>
<p>This document describes the changes made to the ERTS application.</p>
+<section><title>Erts 5.10.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Threads created internally in the runtime system by
+ vanilla, fd, and spawn drivers on Windows systems could
+ make thread unsafe calls to <c>driver_select()</c>.</p>
+ <p>
+ Own Id: OTP-10802</p>
+ </item>
+ <item>
+ <p>
+ Threads created internally in the runtime system by the
+ vanilla, fd, and spawn drivers on Windows systems could
+ make unsafe memory accesses to driver data after port had
+ terminated.</p>
+ <p>
+ Own Id: OTP-10803</p>
+ </item>
+ <item>
+ <p>
+ The runtime system could crash when flushing data to
+ standard out or standard error on Windows.</p>
+ <p>
+ Own Id: OTP-10807</p>
+ </item>
+ <item>
+ <p>Bugs due to the port optimizations introduced in
+ erts-5.10/OTP-R16A have been fixed:</p> <list>
+ <item>Memory leak when terminating ports</item>
+ <item>Memory leak when reaching the system limit of
+ maximum amount of concurrently existing ports</item>
+ <item>Crashs due to missing, or late test of bad port
+ handle</item> <item>The newly introduced driver API
+ function <c>erl_drv_busy_msgq_limits()</c> could not be
+ used by dynamically linked in drivers on Windows</item>
+ </list>
+ <p>
+ Own Id: OTP-10809 Aux Id: OTP-10336 </p>
+ </item>
+ <item>
+ <p>
+ Fix <c>{packet,httph}</c> header capitalization for
+ unrecognized header fields longer than 20 charachters
+ such as <c>Sec-Websocket-Version</c>. The limit is simply
+ raised from 20 to 50 characters with the hope that valid
+ headers longer than 50 are not used.</p>
+ <p>
+ Own Id: OTP-10824</p>
+ </item>
+ <item>
+ <p>
+ Fix rounding issues in float_to_list/1,2. Thanks to Serge
+ Aleynikov</p>
+ <p>
+ Own Id: OTP-10837</p>
+ </item>
+ <item>
+ <p>
+ Fix memory leak in file driver introduced in R16A.</p>
+ <p>
+ Own Id: OTP-10841</p>
+ </item>
+ <item>
+ <p>A bug in an ERTS internal queue implementation could
+ cause the loss of a wake up signal to a consumer thread.
+ This has now been fixed.</p>
+ <p>The effect of this bug, when triggered, was often only
+ a small or even no delay of certain operations. This
+ since, threads often are woken due to other unrelated
+ reasons. However, if the consumer thread was not woken
+ due to other reasons when the bug was triggered, these
+ operations could be left hanging, potentially for ever.
+ Such effects seems to have been very rare, but we have on
+ at least one occasion gotten a report about such an
+ issue.</p>
+ <p>Operations potentially effected by this bug:</p>
+ <taglist> <tag>Inspection of memory allocation
+ status</tag> <item>The Erlang process calling
+ <c>erlang:memory/[0,1]</c>, or
+ <c>erlang:system_info({allocator|allocator_sizes, _})</c>
+ could potentially hang waiting for responses from
+ involved threads.</item> <tag>Async thread pool
+ jobs</tag> <item>An async thread pool job request and/or
+ reply could potentially be left hanging. In OTP this only
+ effected file operations, but user implemented drivers
+ using the async thread pool were also effected. In the
+ file operation case, this would typically translate into
+ an Erlang process potentially hanging on the file
+ operation.</item> <tag>Shutting down the runtime
+ system</tag> <item>Due to the issue with the async thread
+ pool mentioned above, flushing of I/O while terminating
+ the runtime system could also potentially hang.</item>
+ <tag>ETS memory deallocation</tag> <item>Scheduled jobs
+ handling deallocation of the main structure of an ETS
+ table could potentially hang. This more or less only
+ translates into minor memory leaks.</item> <tag>Shutting
+ down distribution</tag> <item>The distribution shutdown
+ phase used when manually shutting down the distribution,
+ i.e., when calling <c>net_kernel:stop()</c>, could
+ potentially hang.</item> </taglist>
+ <p>
+ Own Id: OTP-10854</p>
+ </item>
+ <item>
+ <p>
+ OS X Snow Leopard now only uses write, as writev does not
+ work properly on very large files.</p>
+ <p>
+ Own Id: OTP-10858</p>
+ </item>
+ <item>
+ <p>
+ Fixed a bug where line oriented file I/O using read_ahead
+ was very slow for files with very large difference in
+ line length.</p>
+ <p>
+ Own Id: OTP-10859</p>
+ </item>
+ <item>
+ <p>
+ In erts-5.10 (R16A) faulty hashvalues were produced for
+ non-ASCII atoms (characters in byte-range 128..255). This
+ has now been fixed and hashvalues conforms to previous
+ OTP releases.</p>
+ <p>
+ Own Id: OTP-10860</p>
+ </item>
+ <item>
+ <p>
+ Fixes of memory accesses that might be thread unsafe when
+ the runtime system has been linked against third-party
+ libraries for atomic memory operations during the build.
+ Most builds are uneffected by this bug. If triggered, the
+ runtime system will most likely crash more or less
+ immediately.</p>
+ <p>
+ Own Id: OTP-10875 Aux Id: OTP-10854 </p>
+ </item>
+ <item>
+ <p>
+ Fixed a bug where it was longer possible to give the +sws
+ proposal flag to non-smp emulators.</p>
+ <p>
+ Own Id: OTP-10881 Aux Id: seq12258 </p>
+ </item>
+ <item>
+ <p>
+ Faulty type to bytes read for ReadFile on Windows. This
+ could cause windows systems to misbehave. The correct
+ type is now used.</p>
+ <p>
+ Own Id: OTP-10890</p>
+ </item>
+ <item>
+ <p>
+ Change default max ports for Windows to 8192. Having a
+ too large value caused Windows to not be able to recover
+ properly. If you want to use another value, pass <c>+Q
+ Value</c> to erl or werl.</p>
+ <p>
+ Own Id: OTP-10892</p>
+ </item>
+ <item>
+ <p>
+ Fix rare crash on halfword vm during code loading.</p>
+ <p>
+ Own Id: OTP-10896</p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Tuple funs (deprecated in R15B) are no longer supported.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-10170</p>
+ </item>
+ <item>
+ <p>
+ Added four new bifs, <c>erlang:binary_to_integer/1,2</c>,
+ <c>erlang:integer_to_binary/1</c>,
+ <c>erlang:binary_to_float/1</c> and
+ <c>erlang:float_to_binary/1,2</c>. These bifs work
+ similarly to how their list counterparts work, except
+ they operate on binaries. In most cases converting from
+ and to binaries is faster than converting from and to
+ lists. </p>
+ <p>
+ These bifs are auto-imported into erlang source files and
+ can therefore be used without the <c>erlang</c> prefix.</p>
+ <p>
+ Own Id: OTP-10300 Aux Id: kunagi-74 [74] </p>
+ </item>
+ <item>
+ <p>
+ The experimental support for packages has been removed.</p>
+ <p>
+ Own Id: OTP-10348 Aux Id: kunagi-316 [227] </p>
+ </item>
+ <item>
+ <p>The driver API function <seealso
+ marker="erl_driver#erl_drv_consume_timeslice"><c>erl_drv_consume_timeslice()</c></seealso>,
+ and the NIF API function <seealso
+ marker="erl_nif#enif_consume_timeslice"><c>enif_consume_timeslice()</c></seealso>
+ have been introduced.</p>
+ <p>These functions are provided in order to better
+ support co-operative scheduling, improve system
+ responsiveness, and to make it easier to prevent
+ misbehaviors of the VM due to a process or port
+ monopolizing a scheduler thread. They can be used when
+ dividing lengthy work into a number of repeated calls
+ without the need to use threads.</p>
+ <p>
+ Own Id: OTP-10810</p>
+ </item>
+ <item>
+ <p>
+ The list_to_integer/2 bif has been optimized when used
+ with bases other than 10.</p>
+ <p>
+ Own Id: OTP-10834 Aux Id: kunagi-74 [74] </p>
+ </item>
+ <item>
+ <p>
+ The git commit sha of the HEAD commit is now added to the
+ Erlang shell when compiling a non-released Erlang
+ version.</p>
+ <p>
+ Own Id: OTP-10838</p>
+ </item>
+ <item>
+ <p>Change caching policy for memory segment allocator.
+ For instance, prefer sbc segments over mbc segments,
+ caching policy is time-arrow aware, evicting older cached
+ segments to store newer segments. </p> <p>The default
+ number of cachable segment has been increased from five
+ to ten segments. This can be modified, same as before,
+ with the command line option <c>+MMmcs 5</c></p>
+ <p>Impact: Increased speed for processing on larger
+ objects, e.g. binaries. Slight increase of mapped and
+ resident memory. Tune your system with memory options to
+ <c>erl</c> for best performance.</p>
+ <p>
+ Own Id: OTP-10840</p>
+ </item>
+ <item>
+ <p>
+ Updated config.sub and config.guess to latest version
+ from gnu.org</p>
+ <p>
+ Own Id: OTP-10848</p>
+ </item>
+ <item>
+ <p>
+ Add an xcomp file for Blue Gene/Q. Thanks to Kostis
+ Sagonas.</p>
+ <p>
+ Own Id: OTP-10849</p>
+ </item>
+ <item>
+ <p>
+ Cleanup of documentation of the type language. Thanks to
+ Kostis Sagonas.</p>
+ <p>
+ Own Id: OTP-10850</p>
+ </item>
+ <item>
+ <p>
+ Change the return value of hipe_bifs:remove_refs_from/1.
+ Thanks to Kostis Sagonas.</p>
+ <p>
+ Own Id: OTP-10851</p>
+ </item>
+ <item>
+ <p>
+ As of ERTS-5.10/OTP-R16A node names passed in the EPMD
+ protocol are required to be encoded in UTF-8. Since EPMD
+ previously accepted latin1 encoded node names this is an
+ incompatibility. However, since Erlang nodes always have
+ required characters in node names to be 7-bit ASCII
+ characters (and still do require this), this
+ incompatibility should not effect anyone using EPMD as an
+ Erlang Port Mapper Daemon.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-10872 Aux Id: OTP-10753 </p>
+ </item>
+ <item>
+ <p>
+ The +pc flag to erl can be used to set the range of
+ characters considered printable. This affects how the
+ shell and io:format("~tp",...) functionality does
+ heuristic string detection. More can be read in STDLIB
+ users guide.</p>
+ <p>
+ Own Id: OTP-10884</p>
+ </item>
+ <item>
+ <p>
+ Fix a number of type cast errors related to formatted
+ printing on Win64 that can potentially cause problem when
+ the Erlang VM exceeds 4 GB of ram. (Thanks to Blaine
+ Whittle for the original patch)</p>
+ <p>
+ Own Id: OTP-10887</p>
+ </item>
+ <item>
+ <p>
+ The effect of the deprecated environment variable
+ ERL_MAX_PORTS had been removed premeturely. It has now
+ been readded. Note that this is still scheduled to be
+ released in R17B.</p>
+ <p>
+ Own Id: OTP-10895</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>Erts 5.10</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ Set new peeled off SCTP socket to nonblocking socket
+ (Thanks to Jonas Falkevik)</p>
+ <p>
+ Own Id: OTP-10491</p>
+ </item>
+ <item>
+ <p>
+ Fix various typos (thanks to Tuncer Ayaz)</p>
+ <p>
+ Own Id: OTP-10611</p>
+ </item>
+ <item>
+ <p>
+ Fix fd leak when using async thread pool</p>
+ <p> When using the async thread pool, if an erlang
+ process asks to open a file and it gets shutdown/killed
+ while the file:open/2 call hasn't returned, it's possible
+ to leak a file descriptor against the target file. This
+ has now been fixed. (Thanks to Filipe David Manana)</p>
+ <p>
+ Own Id: OTP-10677</p>
+ </item>
+ <item>
+ <p>
+ Use sys/types.h instead of string.h to pull ssize_t
+ definition to erl_driver.h. This fixes build issue on
+ NetBSD. (Thanks to Yamamoto Takashi).</p>
+ <p>
+ Own Id: OTP-10699</p>
+ </item>
+ <item>
+ <p>
+ Arguments given with the -run or -s flags to erl are now
+ translated according to the file name encoding mode of
+ the runtime system.</p>
+ <p>
+ Own Id: OTP-10702</p>
+ </item>
+ <item>
+ <p>
+ The octet counters in the gen_tcp/inet interface could
+ behave in unexpected ways on 64bit platforms. The
+ behaviour is now as expected.</p>
+ <p>
+ Own Id: OTP-10746</p>
+ </item>
+ <item>
+ <p>
+ Certain linux kernels, most notably in redhat and CentOS
+ distribution, had a bug in writev which generated an
+ infinite loop in the tcp code of the VM. The bug is now
+ worked around.</p>
+ <p>
+ Own Id: OTP-10747</p>
+ </item>
+ <item>
+ <p>
+ A process that got killed (got an exit signal) while
+ operating on a compresseed file, could cause a
+ segmentation fault in the VM. This is now corrected.
+ Thanks to Filipe David Manana for identifying the problem
+ and submitting a solution.</p>
+ <p>
+ Own Id: OTP-10748</p>
+ </item>
+ <item>
+ <p>
+ Windows previously used three digit exponent in
+ formatting which caused difference between platforms, as
+ can be seen by float_to_list/1. This has now been fixed.</p>
+ <p>
+ Own Id: OTP-10751</p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ A boolean socket option 'ipv6_v6only' for IPv6 sockets
+ has been added. The default value of the option is OS
+ dependent, so applications aiming to be portable should
+ consider using <c>{ipv6_v6only,true}</c> when creating an
+ <c>inet6</c> listening/destination socket, and if
+ neccesary also create an <c>inet</c> socket on the same
+ port for IPv4 traffic. See the documentation.</p>
+ <p>
+ Own Id: OTP-8928 Aux Id: kunagi-193 [104] </p>
+ </item>
+ <item>
+ <p>It is now allowed to define stubs for BIFs, to allow
+ type specs to be written for BIFs. For example, if there
+ is BIF called <c>lists:member/2</c>, a dummy definition
+ of <c>lists:member/2</c> is now allowed.</p>
+ <p>
+ Own Id: OTP-9861</p>
+ </item>
+ <item>
+ <p>Process optimizations. The most notable:</p> <list>
+ <item>New internal process table implementation allowing
+ for both parallel reads as well as writes. Especially
+ read operations have become really cheap. This reduce
+ contention in various situations. For example when,
+ spawning processes, terminating processes, sending
+ messages, etc.</item> <item>Optimizations of run queue
+ management reducing contention.</item>
+ <item>Optimizations of process internal state changes reducing
+ contention.</item> </list> <p>These changes imply changes
+ of the characteristics the system. Most notable: changed
+ timing in the system.</p>
+ <p>
+ Own Id: OTP-9892 Aux Id: OTP-10167 </p>
+ </item>
+ <item>
+ <p>
+ Non-blocking code loading. Earlier when an Erlang module
+ was loaded, all other execution in the VM were halted
+ while the load operation was carried out in single
+ threaded mode. Now modules are loaded without blocking
+ the VM. Processes may continue executing undisturbed in
+ parallel during the entire load operation. The load
+ operation is completed by making the loaded code visible
+ to all processes in a consistent way with one single
+ atomic instruction. Non-blocking code loading will
+ improve realtime characteristics when modules are
+ loaded/upgraded on a running SMP system.</p>
+ <p>
+ Own Id: OTP-9974</p>
+ </item>
+ <item>
+ <p>In the SMP emulator, turning on and off tracing will
+ no longer take down the system to single-scheduling. </p>
+ <p>
+ Own Id: OTP-10122</p>
+ </item>
+ <item>
+ <p>Remove VxWorks support</p>
+ <p>
+ Own Id: OTP-10146</p>
+ </item>
+ <item>
+ <p>
+ Added a general framework for executing benchmarks of
+ Erlang/OTP. Benchmarks for the Erlang VM and mnesia have
+ been incorporated in the framework. </p>
+ <p>
+ For details about how to add more benchmarks see
+ $ERL_TOP/HOWTO/BENCHMARKS.md in the source distribution.</p>
+ <p>
+ Own Id: OTP-10156</p>
+ </item>
+ <item>
+ <p>
+ Optimized deletion of ETS-tables which significantly
+ improves performance when large amounts of temporary
+ tables are used.</p>
+ <p>
+ This change imply changes of the characteristics the
+ system. Most notable: changed timing in the system.</p>
+ <p>
+ Own Id: OTP-10167 Aux Id: OTP-9892 </p>
+ </item>
+ <item>
+ <p>
+ Tuple funs (deprecated in R15B) are no longer supported.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-10170</p>
+ </item>
+ <item>
+ <p>
+ New internal header scheme for allocators</p>
+ <p>
+ Impact: Reduces size on object allocated in multiblock
+ carriers by one word</p>
+ <p>
+ Own Id: OTP-10273 Aux Id: kunagi-20 [20] </p>
+ </item>
+ <item>
+ <p>Major port improvements. The most notable:</p> <list>
+ <item>New internal port table implementation allowing for
+ both parallel reads as well as writes. Especially read
+ operations have become really cheap.This reduce
+ contention in various situations. For example when,
+ creating ports, terminating ports, etc. </item>
+ <item>Dynamic allocation of port structures. This allow
+ for a much larger maximum amount of ports allowed as a
+ default. The previous default of 1024 has been raised to
+ 65536. Maximum amount of ports can be set using the
+ <seealso marker="erts:erl#+Q">+Q</seealso> command line
+ flag of <seealso marker="erts:erl">erl(1)</seealso>. The
+ previously used environment variable <c>ERL_MAX_PORTS</c>
+ has been deprecated and scheduled for removal in
+ OTP-R17.</item> <item>Major rewrite of scheduling of port
+ tasks. Major benefits of the rewrite are reduced
+ contention on run queue locks, and reduced amount of
+ memory allocation operations needed. The rewrite was also
+ necessary in order to make it possible to schedule
+ signals from processes to ports.</item> <item>Improved
+ internal thread progress functionality for easy
+ management of unmanaged threads. This improvement was
+ necessary for the rewrite of the port task
+ scheduling.</item> <item>Rewrite of all process to port
+ signal implementations in order to make it possible to
+ schedule those operations. All port operations can now be
+ scheduled which allows for reduced lock contention on the
+ port lock as well as truly asynchronous communication
+ with ports.</item> <item>Optimized lookup of port handles
+ from drivers.</item> <item>Optimized driver lookup when
+ creating ports.</item> <item>Preemptable <seealso
+ marker="erts:erlang#ports-0">erlang:ports/0</seealso>
+ BIF.</item> <item>Improving responsiveness by bumping
+ reductions for a process calling a driver callback
+ directly.</item> </list>
+ <p>These changes imply changes of the characteristics of
+ the system. The most notable:</p> <taglist> <tag>Order of
+ signal delivery</tag> <item>The previous implementation
+ of the VM has delivered signals from processes to ports
+ in a synchronous stricter fashion than required by the
+ language. As of ERTS version 5.10, signals are truly
+ asynchronously delivered. The order of signal delivery
+ still adheres to the requirements of the language, but
+ only to the requirements. That is, some signal sequences
+ that previously always were delivered in one specific
+ order may now from time to time be delivered in different
+ orders. This may cause Erlang programs that have made
+ <em>false assumptions</em> about signal delivery order to
+ fail even though they previously succeeded. For more
+ information about signal ordering guarantees, see the
+ chapter on <seealso
+ marker="erts:communication">communication</seealso> in
+ the ERTS user's guide. The <seealso
+ marker="erts:erl#+n">+n</seealso> command line flag of
+ <seealso marker="erts:erl">erl(1)</seealso> can be
+ helpful when trying to find signaling order bugs in
+ Erlang code that have been exposed by these
+ changes.</item> <tag>Latency of signals sent from
+ processes to ports</tag> <item>Signals from processes to
+ ports where previously always delivered immediately. This
+ kept latency for such communication to a minimum, but it
+ could cause lock contention which was very expensive for
+ the system as a whole. In order to keep this latency low
+ also in the future, most signals from processes to ports
+ are by default still delivered immediately as long as no
+ conflicts occur. Such conflicts include not being able to
+ acquire the port lock, but also include other conflicts.
+ When a conflict occur, the signal will be scheduled for
+ delivery at a later time. A scheduled signal delivery may
+ cause a higher latency for this specific communication,
+ but improves the overall performance of the system since
+ it reduce lock contention between schedulers. The default
+ behavior of only scheduling delivery of these signals on
+ conflict can be changed by passing the <seealso
+ marker="erts:erl#+spp">+spp</seealso> command line flag
+ to <seealso marker="erts:erl">erl(1)</seealso>. The
+ behavior can also be changed on port basis using the
+ <seealso
+ marker="erts:erlang#open_port_parallelism">parallelism</seealso>
+ option of the <seealso
+ marker="erts:erlang#open_port-2">open_port/2</seealso>
+ BIF.</item> <tag>Execution time of the
+ <c>erlang:ports/0</c> BIF</tag> <item>Since <seealso
+ marker="erts:erlang#ports-0">erlang:ports/0</seealso> now
+ can be preempted, the responsiveness of the system as a
+ whole has been improved. A call to <c>erlang:ports/0</c>
+ may, however, take a much longer time to complete than
+ before. How much longer time heavily depends on the
+ system load.</item> <tag>Reduction cost of calling driver
+ callbacks</tag> <item>Calling a driver callback is quite
+ costly. This was previously not reflected in reduction
+ cost at all. Since the reduction cost now has increased,
+ a process performing lots of direct driver calls will be
+ scheduled out more frequently than before.</item>
+ </taglist>
+ <p><em>Potential incompatibilities</em>:</p> <list>
+ <item><c>driver_send_term()</c> has been deprecated and
+ has been scheduled for removal in OTP-R17. Replace usage
+ of <c>driver_send_term()</c> with usage of <seealso
+ marker="erts:erl_driver#erl_drv_send_term">erl_drv_send_term()</seealso>.</item>
+ <item><c>driver_output_term()</c> has been deprecated and
+ has been scheduled for removal in OTP-R17. Replace usage
+ of <c>driver_output_term()</c> with usage of <seealso
+ marker="erts:erl_driver#erl_drv_output_term">erl_drv_output_term()</seealso>.</item>
+ <item>The new function <seealso
+ marker="erts:erl_driver#erl_drv_busy_msgq_limits">erl_drv_busy_msgq_limits()</seealso>
+ has been added in order to able to control management of
+ port queues.</item> </list>
+ <p>The <seealso
+ marker="erts:erl_driver#version_management">driver API
+ version</seealso> has been bumped to 2.1 from 2.0 due to
+ the above changes in the driver API.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-10336 Aux Id: OTP-9892 </p>
+ </item>
+ <item>
+ <p>
+ The experimental support for packages has been removed.</p>
+ <p>
+ Own Id: OTP-10348 Aux Id: kunagi-316 [227] </p>
+ </item>
+ <item>
+ <p>
+ Wrong parameters when setting seq_trace-tokens from
+ within a trace-pattern could crash the VM. This is now
+ corrected.</p>
+ <p>
+ Own Id: OTP-10522</p>
+ </item>
+ <item>
+ <p>
+ Erlang specification 4.7.3 defines max tuple size to
+ 65535 elements It is now enforced to no more than
+ 16777215 elements (arity 24 bits)</p>
+ <p>
+ Previous edge cases (28 bits) were not validated and
+ could cause undefined behaviour.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-10633</p>
+ </item>
+ <item>
+ <p>
+ Add insert_element/3 and delete_element/2</p>
+ <p>
+ Own Id: OTP-10643</p>
+ </item>
+ <item>
+ <p>
+ The previous default of a maximum of 32768 simultaneous
+ processes has been raised to 262144. This value can be
+ changed using the the <seealso
+ marker="erl#+P">+P</seealso> command line flag of
+ <seealso marker="erl">erl(1)</seealso>. Note that the
+ value passed now is considered as a hint, and that actual
+ value chosen in most cases will be a power of two.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-10647 Aux Id: OTP-9892, OTP-10336 </p>
+ </item>
+ <item>
+ <p>
+ The previously (in R15) proposed scheduler wakeup
+ strategy is now used by default. This strategy is not as
+ quick to forget about previous overload as the previous
+ strategy.</p>
+ <p>
+ This change imply changes of the characteristics the
+ system. Most notable: When a small overload comes and
+ then disappears repeatedly, the system will for a bit
+ longer time be willing to wake up schedulers than before.
+ Timing in the system will due to this also change.</p>
+ <p>
+ The previous strategy can still be enabled by passing the
+ <seealso marker="erl#+sws">+sws legacy</seealso> command
+ line flag to <c>erl</c>.</p>
+ <p>
+ Own Id: OTP-10661 Aux Id: OTP-10033 </p>
+ </item>
+ <item>
+ <p>
+ The <seealso marker="erl#+stbt">+stbt</seealso> command line
+ argument of <c>erl</c> was added. This argument can be
+ used for trying to set scheduler bind type. Upon failure
+ unbound schedulers will be used.</p>
+ <p>
+ Own Id: OTP-10668</p>
+ </item>
+ <item>
+ <p>
+ Support ANSI in console</p>
+ <p>
+ Unix platforms will no longer filter control sequences to
+ the ttsl driver thus enabling ANSI and colors in console.
+ (Thanks to Pedram Nimreezi)</p>
+ <p>
+ Own Id: OTP-10678</p>
+ </item>
+ <item>
+ <p>Add file:allocate/3 operation</p>
+ <p>This operation allows pre-allocation of space for
+ files. It succeeds only on systems that support such
+ operation. (Thanks to Filipe David Manana)</p>
+ <p>
+ Own Id: OTP-10680</p>
+ </item>
+ <item>
+ <p>Treat <c>-Wreturn-type</c> warnings as error when
+ using GCC (Thanks to Tuncer Ayaz)</p>
+ <p>
+ Own Id: OTP-10683</p>
+ </item>
+ <item>
+ <p>
+ Implement ./otp_build configure --enable-silent-rules</p>
+ <p>
+ With silent rules, the output of make is less verbose and
+ compilation warnings are easier to spot. Silent rules are
+ disabled by default and can be disabled or enabled at
+ will by make V=0 and make V=1. (Thanks to Anthony Ramine)</p>
+ <p>
+ Own Id: OTP-10726</p>
+ </item>
+ <item>
+ <p>
+ Use share flags for all file operations on Windows.
+ Thanks to Filipe David Borba Manana.</p>
+ <p>
+ Own Id: OTP-10727</p>
+ </item>
+ <item>
+ <p>
+ Make/fakefop adjustments. Thanks to Tuncer Ayaz and
+ Sebastian Rasmussen.</p>
+ <p>
+ Own Id: OTP-10733</p>
+ </item>
+ <item>
+ <p>
+ The runtime system will now by default use 10 async
+ threads if thread support has been enabled when building
+ the runtime system.</p>
+ <p>
+ This will prevent long blocking file-operations from
+ blocking scheduler threads for long periods of time,
+ which can be harmful. Apart from file-operations, it also
+ effects other operations scheduled on the async thread
+ pool by user implemented drivers.</p>
+ <p>
+ The amount of async threads can be controlled by using
+ the <seealso
+ marker="erl#async_thread_pool_size"><c>+A</c></seealso>
+ command line argument of <c>erl(1)</c>. When running some
+ offline tools you <em>might</em> want to disable async
+ threads, but you are advised <em>not</em> to in the
+ general case. Instead, you might want to increase the
+ amount of async threads used.</p>
+ <p>
+ This change imply changes of the characteristics the
+ system compared to the previous default. The
+ responsiveness of the system as a whole will be improved.
+ Operations scheduled on the async thread pool will get an
+ increased latency. The throughput of these operations may
+ increase, or decrease depending on the type of the
+ operations and how they get scheduled. In the case of
+ file operations, the throughput very much depends on how
+ the Erlang application access files. Multiple concurrent
+ accesses to different files have the potential of an
+ increased throughput.</p>
+ <p>
+ Own Id: OTP-10736</p>
+ </item>
+ <item>
+ <p>
+ The default reader group limit has been increased to 64
+ from 8. This limit can be set using the <c>+rg</c>
+ command line argument of <c>erl(1)</c>.</p>
+ <p>
+ This change of default value will reduce lock contention
+ on ETS tables using the <c>read_concurrency</c> option at
+ the expense of memory consumption when the amount of
+ schedulers and logical processors are beween 8 and 64.
+ For more information, see documentation of the <c>+rg</c>
+ command line argument of <c>erl(1)</c>.</p>
+ <p>
+ Own Id: OTP-10737</p>
+ </item>
+ <item>
+ <p>
+ New BIF float_to_list/2 which solves a problem of
+ float_to_list/1 that doesn't allow specifying the number
+ of digits after the decimal point when formatting floats
+ (Thanks to Serge Aleynikov).</p>
+ <p>
+ Own Id: OTP-10752</p>
+ </item>
+ <item>
+ <p>
+ Limited support for unicode atoms in the external format
+ and in the internal representation of the vm. This is a
+ preparative feature in order to support communication
+ with future releases of Erlang/OTP that may create
+ unicode atoms.</p>
+ <p>
+ Own Id: OTP-10753</p>
+ </item>
+ <item>
+ <p>
+ Increased potential concurrency in ETS for
+ <c>write_concurrency</c> option. The number of internal
+ table locks has increased from 16 to 64. This makes it
+ four times less likely that two concurrent processes
+ writing to the same table would collide and thereby
+ serialized. The cost is an increased constant memory
+ footprint for tables using write_concurrency. The memory
+ consumption per inserted record is not affected. The
+ increased footprint can be particularly large if
+ <c>write_concurrency</c> is combined with
+ <c>read_concurrency</c>.</p>
+ <p>
+ Own Id: OTP-10787</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Erts 5.9.3.1</title>
<section><title>Known Bugs and Problems</title>