diff options
Diffstat (limited to 'erts/doc/src/notes.xml')
-rw-r--r-- | erts/doc/src/notes.xml | 590 |
1 files changed, 115 insertions, 475 deletions
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index 628df1b9bd..08f6732036 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -32,481 +32,6 @@ <p>This document describes the changes made to the ERTS application.</p> -<section><title>Erts 9.0</title> - - <section><title>Fixed Bugs and Malfunctions</title> - <list> - <item> - <p>Fix various bugs regarding loading, upgrade and purge - of HiPE compiled code:</p> <list> <item>The native code - memory for a purged module was never deallocated.</item> - <item>Wrong functions could in some cases be called after - a module upgrade.</item> - <item><c>erlang:check_process_code</c> did not check for - recursive calls made from native code.</item> </list> - <p> - Own Id: OTP-13968</p> - </item> - <item> - <p> - Hipe optional LLVM backend does require LLVM version 3.9 - or later as older versions forced strong dependencies on - erts internals structures.</p> - <p> - Own Id: OTP-14238</p> - </item> - <item> - <p> - Slogans in crash dumps have been extended to print more - complex terms.</p> - <p> - Own Id: OTP-14303</p> - </item> - <item> - <p> - Fixed bug when using <c>enif_inspect_binary</c> in - combination with <c>enif_copy</c>. In some circumstances - the inspected binary could be realloced by the - <c>enif_copy</c> call when it shouldn't have been.</p> - <p> - Own Id: OTP-14304</p> - </item> - <item> - <p> - Use <c>-fno-PIE</c> for Gentoo Hardened and others that - don't accept linker flag <c>-no-pie</c>.</p> - <p> - Own Id: OTP-14307 Aux Id: PR-1379 </p> - </item> - <item> - <p> - Disable hipe for <c>ppc64le</c> architecture (little - endian) as it is not, and has never been, supported. It - was earlier equated with <c>ppc64</c> (big endian) which - lead to broken build without <c>--disable-hipe</c>.</p> - <p> - Own Id: OTP-14314 Aux Id: ERL-369, PR-1394 </p> - </item> - <item> - <p> - Fix 'epmd -kill' to return a failure exit status code if - epmd was not killed because of some error.</p> - <p> - Own Id: OTP-14324</p> - </item> - <item> - <p>Fixed the following dirty scheduler related bugs:</p> - <list> <item><p>the <c>+SDPcpu</c> command line argument - could cause the amount of dirty CPU schedulers to be set - to zero</p></item> - <item><p><c>erlang:system_flag(multi_scheduling, _)</c> - failed when only one normal scheduler was used together - with dirty scheduler support</p></item> </list> - <p> - Own Id: OTP-14335</p> - </item> - <item> - <p> - Fix erlexec to handle mismatch in sysconf and proc fs - when figuring out the cpu topology. This behaviour has - been seen when using docker together with - <c>--cpuset-cpus</c>.</p> - <p> - Own Id: OTP-14352</p> - </item> - <item> - <p> - Fixed memory segment cache used for multiblock carriers. - Huge (> 2GB) memory segments could cause a VM crash. - Creation of such huge memory segments used for multiblock - carriers is however very uncommon.</p> - <p> - Own Id: OTP-14360 Aux Id: ERL-401, PR-1417 </p> - </item> - </list> - </section> - - - <section><title>Improvements and New Features</title> - <list> - <item> - <p> - Added <c>erlang:garbage_collect/2</c> that takes an - option list as the last argument that can be used to - control whether a minor or a major garbage collection is - to be done. Doing a minor collection only collects terms - that have recently died, but is cheaper than a mjor - collection.</p> - <p> - Own Id: OTP-11695</p> - </item> - <item> - <p> - Optimized test for tuples with an atom as first element.</p> - <p> - Own Id: OTP-12148</p> - </item> - <item> - <p> - Erlang literals are no longer copied during process to - process messaging.</p> - <p> - Own Id: OTP-13529</p> - </item> - <item> - <p>Add support in the <c>erl_nif</c> API for asynchronous - message notifications when sockets or other file - descriptors are ready to accept read or write operations. - The following functions have been added:</p> <list> - <item><p>enif_select</p></item> - <item><p>enif_monitor_process</p></item> - <item><p>enif_demonitor_process</p></item> - <item><p>enif_compare_monitors</p></item> - <item><p>enif_open_resource_type_x</p></item> </list> - <p> - Own Id: OTP-13684</p> - </item> - <item> - <p>There are two new guard BIFs '<c>floor/1</c>' and - '<c>ceil/1</c>'. They both return integers. In the - '<c>math</c>' module, there are two new BIFs with the - same names that return floating point values.</p> - <p> - Own Id: OTP-13692</p> - </item> - <item> - <p> - Remove deprecated <c>erlang:hash/2</c>.</p> - <p> - *** POTENTIAL INCOMPATIBILITY ***</p> - <p> - Own Id: OTP-13827</p> - </item> - <item> - <p>Replaced usage of deprecated symbolic <seealso - marker="erts:erlang#type-time_unit"><c>time - unit</c></seealso> representations.</p> - <p> - Own Id: OTP-13831 Aux Id: OTP-13735 </p> - </item> - <item> - <p> - Added support in zlib for extraction of the inflation - dictionary.</p> - <p> - Own Id: OTP-13842</p> - </item> - <item> - <p> - The previously used purge strategy has been removed. The - optional purge strategy introduced in ERTS version 8.1 is - now the only strategy available.</p> - <p> - The new purge strategy is slightly incompatible with the - old strategy. Previously processes holding <c>fun</c>s - that referred to the module being purged either failed a - soft purge, or was killed during a hard purge. The new - strategy completely ignores <c>fun</c>s. If <c>fun</c>s - referring to the code being purged exist, and are used - after a purge, an exception will be raised upon usage. - That is, the behavior will be exactly the same as the - case when a <c>fun</c> is received by a process after the - purge.</p> - <p> - For more information see the documentation of <seealso - marker="erts:erlang#check_process_code/3"><c>erlang:check_process_code/3</c></seealso>.</p> - <p> - *** POTENTIAL INCOMPATIBILITY ***</p> - <p> - Own Id: OTP-13844 Aux Id: OTP-13833 </p> - </item> - <item> - <p> - Dirty schedulers are now enabled by default when the - runtime system is built with SMP support.</p> - <p> - Own Id: OTP-13860</p> - </item> - <item> - <p> - Improved ETS lookup/insert/delete speed for large - <c>set</c>, <c>bag</c> and <c>duplicate_bag</c> by a - significant reduction of the hash load factor. This speed - improvement comes at the expense of less than one word - per table entry. Tables with less than 256 entries are - not affected at all.</p> - <p> - Own Id: OTP-13903</p> - </item> - <item> - <p> - The NIF library <c>reload</c> feature is not supported - anymore. It has been marked as deprecated since OTP R15B. - This means that you are only allowed to do one successful - call to <c>erlang:load_nif/2</c> for each module - instance. A second call to <c>erlang:load_nif/2</c> will - return <c>{error, {reload, _}}</c> even if the NIF - library imlements the <c>reload</c> callback.</p> - <p> - Runtime upgrade of a NIF library is still supported by - using the Erlang module upgrade mechanics with a current - and an old module instance existing at the same time with - their corresponding NIF libraries.</p> - <p> - *** POTENTIAL INCOMPATIBILITY ***</p> - <p> - Own Id: OTP-13908</p> - </item> - <item> - <p> - Add <c>erlang:system_info(atom_count)</c> and - <c>erlang:system_info(atom_limit)</c> to provide a way to - retrieve the current and maximum number of atoms.</p> - <p> - Own Id: OTP-13976</p> - </item> - <item> - <p>The function <c>fmod/2</c> has been added to the - <c>math</c> module.</p> - <p> - Own Id: OTP-14000</p> - </item> - <item> - <p> - <c>erlang:load_nif/2</c> returns new error type - <c>notsup</c> when called for a HiPE compiled module, - which is not supported.</p> - <p> - Own Id: OTP-14002</p> - </item> - <item> - <p> - Add driver and nif lock instrumentation to lcnt</p> - <p> - Own Id: OTP-14069</p> - </item> - <item> - <p> - Reduce memory pressure by converting sub-binaries to - heap-binaries when possible. This is done during garbage - collection.</p> - <p> - Own Id: OTP-14149</p> - </item> - <item> - <p> - Dirty schedulers are now enabled and supported on Erlang - runtime systems with SMP support.</p> - <p> - Besides support for dirty NIFs also support for dirty - BIFs and dirty garbage collection have been introduced. - All garbage collections that potentially will take a long - time to complete are now performed on dirty schedulers if - enabled.</p> - <p> - <seealso - marker="erts:erlang#statistics_scheduler_wall_time"><c>erlang:statistics(scheduler_wall_time)</c></seealso> - now also includes information about dirty CPU schedulers. - Code using <c>erlang:statistics(scheduler_wall_time)</c> - may have to be rewritten to take this incompatibility - into consideration.</p> - <p> - *** POTENTIAL INCOMPATIBILITY ***</p> - <p> - Own Id: OTP-14152</p> - </item> - <item> - <p>Atoms may now contain arbitrary Unicode - characters.</p> - <p> - Own Id: OTP-14178</p> - </item> - <item> - <p> - Introduce an event manager in Erlang to handle OS - signals. A subset of OS signals may be subscribed to and - those are described in the Kernel application.</p> - <p> - Own Id: OTP-14186</p> - </item> - <item> - <p> - The <c>escript</c> program now handles symbolic links to - escripts.</p> - <p> - This is useful for standalone systems with - <c>escript</c>s residing on a bin directory not included - in the execution path (as it may cause their <c>erl</c> - program(s) to override the desired one). Instead the - <c>escript</c>s can be referred to via symbolic links - from a bin directory in the path.</p> - <p> - Own Id: OTP-14201 Aux Id: PR-1293 </p> - </item> - <item> - <p> - All uses of the magic binary kludge has been replaced by - uses of erlang references.</p> - <p> - A magic binary was presented as an empty binary, but - actually referred other data internally in the Erlang VM. - Since they were presented as empty binaries, different - magic binaries compared as equal, and also lost their - internal data when passed out of an erlang node.</p> - <p> - The new usage of references has not got any of these - strange semantic issues, and the usage of these - references has been optimized to give the same - performance benefits as well as memory usage benefits as - magic binaries had.</p> - <p> - A couple of examples of previous uses of magic binaries - are match specifications and NIF resources.</p> - <p> - Own Id: OTP-14205</p> - </item> - <item> - <p> - The non-smp emulators have been deprecated and are - scheduled for removal in OTP-21.</p> - <p> - In preperations for this, the threaded non-smp emulator - is no longer built by default and has to be enabled using - the --enable-plain-emulator to configure.</p> - <p> - *** POTENTIAL INCOMPATIBILITY ***</p> - <p> - Own Id: OTP-14272</p> - </item> - <item> - <p> - Allow HiPE to run on VM built with - <c>--enable-m32-build</c>.</p> - <p> - Own Id: OTP-14330 Aux Id: PR-1397 </p> - </item> - <item> - <p> - Upgraded the OTP internal PCRE library from version 8.33 - to version 8.40. This library is used for implementation - of the <seealso marker="stdlib:re"><c>re</c></seealso> - regular expressions module.</p> - <p> - Besides various bug fixes, the new version allows for - better stack protection. In order to utilize this - feature, the stack size of normal scheduler threads is - now by default set to 128 kilo words on all platforms. - The stack size of normal scheduler threads can be set - upon system start by passing the <seealso - marker="erts:erl#sched_thread_stack_size"><c>+sss</c></seealso> - command line argument to the <seealso - marker="erts:erl"><c>erl</c></seealso> command.</p> - <p> - See <url - href="http://pcre.org/original/changelog.txt"><c>http://pcre.org/original/changelog.txt</c></url> - for information about changes made to PCRE between the - versions 8.33 and 8.40.</p> - <p> - *** POTENTIAL INCOMPATIBILITY ***</p> - <p> - Own Id: OTP-14331 Aux Id: ERL-208 </p> - </item> - <item> - <p> - Remove generation of atoms in old latin1 external format. - The old latin1 format can still be decoded but is never - generated by <c>term_to_binary</c> or sent on a - distribution channel. The new utf8 format for atoms was - introduced in OTP R16. An OTP 20 node can therefore not - connect to nodes older than R16.</p> - <p> - Own Id: OTP-14337</p> - </item> - <item> - <p> - Added function <c>re:version/0</c> which returns - information about the OTP internal PCRE version used for - implementation of the <c>re</c> module.</p> - <p> - Own Id: OTP-14347 Aux Id: PR-1412 </p> - </item> - <item> - <p> - Added new debug bif <c>erlang:list_to_port/1</c>.</p> - <p> - Own Id: OTP-14348</p> - </item> - <item> - <p> - Various improvements of timer management internally in - the VM. These improvements both reduced memory - consumption of timer wheels as well as reduce the amount - of work that has to be performed in order to handle - timers.</p> - <p> - Own Id: OTP-14356</p> - </item> - <item> - <p> Sockets can now be bound to device (SO_BINDTODEVICE) - on platforms where it is supported. </p> <p> This has - been implemented e.g to support VRF-Lite under Linux; see - <url - href="https://www.kernel.org/doc/Documentation/networking/vrf.txt"> - VRF </url>, and GitHub pull request <url - href="https://github.com/erlang/otp/pull/1326">#1326</url>. - </p> - <p> - Own Id: OTP-14357 Aux Id: PR-1326 </p> - </item> - <item> - <p>Added the following <seealso - marker="erl"><c>erl</c></seealso> command line arguments - with which you can set suggested stack for dirty - schedulers:</p> <taglist> <tag><seealso - marker="erl#dcpu_sched_thread_stack_size"><c>+sssdcpu</c></seealso></tag> - <item><p>for dirty CPU schedulers</p></item> - <tag><seealso - marker="erl#dio_sched_thread_stack_size"><c>+sssdio</c></seealso></tag> - <item><p>for dirty IO schedulers</p></item> </taglist> - <p>The default suggested stack size for dirty schedulers - is 40 kilo words.</p> - <p> - Own Id: OTP-14380</p> - </item> - <item> - <p> - Changed erts startup program name, argv 0, to use the - environment variable <c>ESCRIPT_NAME</c> so that - <c>erlc</c>, <c>dialyzer</c>, <c>typer</c>, - <c>ct_run</c>, or the escript name can be seen with - external programs, such as ps and htop (depending on - options), on unix.</p> - <p> - If environment variable <c>ESCRIPT_NAME</c> is not set, - argv 0 of the invoking program will be used, e.g. the - name will be <c>erl</c>, <c>cerl</c>, or the soft link - name.</p> - <p> - Own Id: OTP-14381</p> - </item> - <item> - <p> - Improvements of <c>escript</c> documentation.</p> - <p> - Own Id: OTP-14384 Aux Id: OTP-14201 </p> - </item> - <item> - <p> - Add function <c>enif_hash</c> for NIFs to calculate hash - values of arbitrary terms.</p> - <p> - Own Id: OTP-14385 Aux Id: PR-1413 </p> - </item> - </list> - </section> - -</section> - <section><title>Erts 8.3.3</title> <section><title>Fixed Bugs and Malfunctions</title> @@ -2148,6 +1673,96 @@ </section> +<section><title>Erts 7.3.1.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + A bug has been fixed where if erlang was started +B on a + unix platform it would be killed by a SIGUSR2 signal when + creating a crash dump.</p> + <p> + Own Id: OTP-13425 Aux Id: ERL-94 </p> + </item> + <item> + <p> + Calls to <c>erl_drv_send_term()</c> or + <c>erl_drv_output_term()</c> from a non-scheduler thread + while the corresponding port was invalid caused the + emulator to enter an inconsistent state which eventually + caused an emulator crash.</p> + <p> + Own Id: OTP-13866</p> + </item> + <item> + <p>Driver and NIF operations accessing processes or ports + could cause an emulator crash when used from + non-scheduler threads. Those operations are:</p> <list> + <item><c>erl_drv_send_term()</c></item> + <item><c>driver_send_term()</c></item> + <item><c>erl_drv_output_term()</c></item> + <item><c>driver_output_term()</c></item> + <item><c>enif_send()</c></item> + <item><c>enif_port_command()</c></item> </list> + <p> + Own Id: OTP-13869</p> + </item> + <item> + <p> + Fix bug in <c>binary_to_term</c> for binaries created by + <c>term_to_binary </c> with option <c>compressed</c>. The + bug can cause <c>badarg</c> exception for a valid binary + when Erlang VM is linked against a <c>zlib</c> library of + version 1.2.9 or newer. Bug exists since OTP 17.0.</p> + <p> + Own Id: OTP-14159 Aux Id: ERL-340 </p> + </item> + </list> + </section> + +</section> + +<section><title>Erts 7.3.1.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed a race that could cause a lost wakeup of a process + that timed out in a <c>receive ... after</c>. This bug + was introduced in ERTS version 7.0.</p> + <p> + Own Id: OTP-13798 Aux Id: OTP-11997 </p> + </item> + <item> + <p> + Fixed segfault after writing an erl crash dump.</p> + <p> + Own Id: OTP-13799</p> + </item> + </list> + </section> + +</section> + +<section><title>Erts 7.3.1.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix scheduler deadlock bug in <c>ets:update_counter/4</c> + when key is not found and inserting the default object + causes the table to grow.</p> + <p> + Own Id: OTP-13731 Aux Id: ERL-188 </p> + </item> + </list> + </section> + +</section> + <section><title>Erts 7.3.1</title> <section><title>Fixed Bugs and Malfunctions</title> @@ -2399,6 +2014,31 @@ </section> +<section><title>Erts 7.2.1.1</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Introduced new statistics functionality in order to + more efficiently retrieve information about run able and + active processes and ports. For more information see:</p> + <list> <item><seealso + marker="erlang#statistics_total_run_queue_lengths"><c>statistics(total_run_queue_lengths)</c></seealso></item> + <item><seealso + marker="erlang#statistics_run_queue_lengths"><c>statistics(run_queue_lengths)</c></seealso></item> + <item><seealso + marker="erlang#statistics_total_active_tasks"><c>statistics(total_active_tasks)</c></seealso></item> + <item><seealso + marker="erlang#statistics_active_tasks"><c>statistics(active_tasks)</c></seealso></item> + </list> + <p> + Own Id: OTP-13201</p> + </item> + </list> + </section> + +</section> + <section><title>Erts 7.2.1</title> <section><title>Fixed Bugs and Malfunctions</title> |