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.xml590
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>