diff options
Diffstat (limited to 'erts/doc/src')
-rw-r--r-- | erts/doc/src/notes.xml | 559 |
1 files changed, 0 insertions, 559 deletions
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index d0fa170e66..08f6732036 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -32,565 +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>When an exception such as '<c>throw(HugeTerm)</c>' was - caught, <c>HugeTerm</c> term would be kept in the process - until the next exception occurred, potentially increasing - the heap size for the process. That has been - corrected.</p> - <p> - Own Id: OTP-14255 Aux Id: OTP-14400, OTP-14401 </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> - The address family <c>local</c> (AF_UNIX / AF_LOCAL) now - does not ensure zero termination of Linux Abstract - Addresses so they can use all bytes.</p> - <p> - Own Id: OTP-14305</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> - <item> - <p> - Fix bug causing <c>code:is_module_native</c> to falsely - return true when <c>local</c> call trace is enabled for - the module.</p> - <p> - Own Id: OTP-14390</p> - </item> - <item> - <p> - Fix emulator crash when receive tracing on a - <c>trace_delivered</c> message.</p> - <p> - Own Id: OTP-14411</p> - </item> - <item> - <p> - <c>escript</c> did not handle paths with spaces correct.</p> - <p> - Own Id: OTP-14433</p> - </item> - <item> - <p> - Fix erroneous lock check assertion when <c>wx</c> is run - on MacOS X.</p> - <p> - Own Id: OTP-14437 Aux Id: ERL-360 </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/1"><c>erlang:statistics/1</c></seealso> - with arguments inspecting scheduler and run queue states - have been changed due to the dirty scheduler support. - Code using this functionality may have to be rewritten - taking these incompatibilities into consideration. - Examples of such uses are calls to <seealso - marker="erts:erlang#statistics_scheduler_wall_time"><c>erlang:statistics(scheduler_wall_time)</c></seealso>, - <seealso - marker="erts:erlang#statistics_total_run_queue_lengths"><c>statistics(total_run_queue_lengths)</c></seealso>, - <seealso - marker="erts:erlang#statistics_total_active_tasks"><c>statistics(total_active_tasks)</c></seealso>, - etc.</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> - 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> - <item> - <p>'<c>./configure --enable-lock-counter</c>' will - enabling building of an additional emulator that has - support for lock counting. (The option previously - existed, but would turn on lock counting in the default - emulator being built.) To start the lock-counting - emulator, use '<c>erl -emu_type lcnt</c>'.</p> - <p>On Windows, <c>erl</c> recognized the undocumented - option <c>-debug</c> for starting a debug-compiled - emulator. That option has been removed. Use '<c>erl - -emu_type debug</c>' instead.</p> - <p> - Own Id: OTP-14407</p> - </item> - <item> - <p> - Warnings have been added to the relevant documentation - about not using un-secure distributed nodes in exposed - environments.</p> - <p> - Own Id: OTP-14425</p> - </item> - <item> - <p> - Improvement of the documentation of the environment - variable <c>ERL_CRASH_DUMP_SECONDS</c> as well as the - default behavior when it is not set.</p> - <p> - Own Id: OTP-14434</p> - </item> - <item> - <p> - Enabled off-heap message queue for some system processes - that might receive large amounts of messages.</p> - <p> - Own Id: OTP-14438</p> - </item> - </list> - </section> - -</section> - <section><title>Erts 8.3.3</title> <section><title>Fixed Bugs and Malfunctions</title> |