From dc57404252c47520f352834ad9be45ad684f96c9 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Thu, 4 May 2017 17:05:25 +0200 Subject: Prepare release --- erts/doc/src/notes.xml | 475 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 475 insertions(+) (limited to 'erts/doc/src') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index acc19f250a..628df1b9bd 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -32,6 +32,481 @@

This document describes the changes made to the ERTS application.

+
Erts 9.0 + +
Fixed Bugs and Malfunctions + + +

Fix various bugs regarding loading, upgrade and purge + of HiPE compiled code:

The native code + memory for a purged module was never deallocated. + Wrong functions could in some cases be called after + a module upgrade. + erlang:check_process_code did not check for + recursive calls made from native code. +

+ Own Id: OTP-13968

+
+ +

+ Hipe optional LLVM backend does require LLVM version 3.9 + or later as older versions forced strong dependencies on + erts internals structures.

+

+ Own Id: OTP-14238

+
+ +

+ Slogans in crash dumps have been extended to print more + complex terms.

+

+ Own Id: OTP-14303

+
+ +

+ Fixed bug when using enif_inspect_binary in + combination with enif_copy. In some circumstances + the inspected binary could be realloced by the + enif_copy call when it shouldn't have been.

+

+ Own Id: OTP-14304

+
+ +

+ Use -fno-PIE for Gentoo Hardened and others that + don't accept linker flag -no-pie.

+

+ Own Id: OTP-14307 Aux Id: PR-1379

+
+ +

+ Disable hipe for ppc64le architecture (little + endian) as it is not, and has never been, supported. It + was earlier equated with ppc64 (big endian) which + lead to broken build without --disable-hipe.

+

+ Own Id: OTP-14314 Aux Id: ERL-369, PR-1394

+
+ +

+ Fix 'epmd -kill' to return a failure exit status code if + epmd was not killed because of some error.

+

+ Own Id: OTP-14324

+
+ +

Fixed the following dirty scheduler related bugs:

+

the +SDPcpu command line argument + could cause the amount of dirty CPU schedulers to be set + to zero

+

erlang:system_flag(multi_scheduling, _) + failed when only one normal scheduler was used together + with dirty scheduler support

+

+ Own Id: OTP-14335

+
+ +

+ 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 + --cpuset-cpus.

+

+ Own Id: OTP-14352

+
+ +

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

+

+ Own Id: OTP-14360 Aux Id: ERL-401, PR-1417

+
+
+
+ + +
Improvements and New Features + + +

+ Added erlang:garbage_collect/2 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.

+

+ Own Id: OTP-11695

+
+ +

+ Optimized test for tuples with an atom as first element.

+

+ Own Id: OTP-12148

+
+ +

+ Erlang literals are no longer copied during process to + process messaging.

+

+ Own Id: OTP-13529

+
+ +

Add support in the erl_nif 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:

+

enif_select

+

enif_monitor_process

+

enif_demonitor_process

+

enif_compare_monitors

+

enif_open_resource_type_x

+

+ Own Id: OTP-13684

+
+ +

There are two new guard BIFs 'floor/1' and + 'ceil/1'. They both return integers. In the + 'math' module, there are two new BIFs with the + same names that return floating point values.

+

+ Own Id: OTP-13692

+
+ +

+ Remove deprecated erlang:hash/2.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-13827

+
+ +

Replaced usage of deprecated symbolic time + unit representations.

+

+ Own Id: OTP-13831 Aux Id: OTP-13735

+
+ +

+ Added support in zlib for extraction of the inflation + dictionary.

+

+ Own Id: OTP-13842

+
+ +

+ The previously used purge strategy has been removed. The + optional purge strategy introduced in ERTS version 8.1 is + now the only strategy available.

+

+ The new purge strategy is slightly incompatible with the + old strategy. Previously processes holding funs + that referred to the module being purged either failed a + soft purge, or was killed during a hard purge. The new + strategy completely ignores funs. If funs + 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 fun is received by a process after the + purge.

+

+ For more information see the documentation of erlang:check_process_code/3.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-13844 Aux Id: OTP-13833

+
+ +

+ Dirty schedulers are now enabled by default when the + runtime system is built with SMP support.

+

+ Own Id: OTP-13860

+
+ +

+ Improved ETS lookup/insert/delete speed for large + set, bag and duplicate_bag 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.

+

+ Own Id: OTP-13903

+
+ +

+ The NIF library reload 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 erlang:load_nif/2 for each module + instance. A second call to erlang:load_nif/2 will + return {error, {reload, _}} even if the NIF + library imlements the reload callback.

+

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

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-13908

+
+ +

+ Add erlang:system_info(atom_count) and + erlang:system_info(atom_limit) to provide a way to + retrieve the current and maximum number of atoms.

+

+ Own Id: OTP-13976

+
+ +

The function fmod/2 has been added to the + math module.

+

+ Own Id: OTP-14000

+
+ +

+ erlang:load_nif/2 returns new error type + notsup when called for a HiPE compiled module, + which is not supported.

+

+ Own Id: OTP-14002

+
+ +

+ Add driver and nif lock instrumentation to lcnt

+

+ Own Id: OTP-14069

+
+ +

+ Reduce memory pressure by converting sub-binaries to + heap-binaries when possible. This is done during garbage + collection.

+

+ Own Id: OTP-14149

+
+ +

+ Dirty schedulers are now enabled and supported on Erlang + runtime systems with SMP support.

+

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

+

+ erlang:statistics(scheduler_wall_time) + now also includes information about dirty CPU schedulers. + Code using erlang:statistics(scheduler_wall_time) + may have to be rewritten to take this incompatibility + into consideration.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14152

+
+ +

Atoms may now contain arbitrary Unicode + characters.

+

+ Own Id: OTP-14178

+
+ +

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

+

+ Own Id: OTP-14186

+
+ +

+ The escript program now handles symbolic links to + escripts.

+

+ This is useful for standalone systems with + escripts residing on a bin directory not included + in the execution path (as it may cause their erl + program(s) to override the desired one). Instead the + escripts can be referred to via symbolic links + from a bin directory in the path.

+

+ Own Id: OTP-14201 Aux Id: PR-1293

+
+ +

+ All uses of the magic binary kludge has been replaced by + uses of erlang references.

+

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

+

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

+

+ A couple of examples of previous uses of magic binaries + are match specifications and NIF resources.

+

+ Own Id: OTP-14205

+
+ +

+ The non-smp emulators have been deprecated and are + scheduled for removal in OTP-21.

+

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

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14272

+
+ +

+ Allow HiPE to run on VM built with + --enable-m32-build.

+

+ Own Id: OTP-14330 Aux Id: PR-1397

+
+ +

+ Upgraded the OTP internal PCRE library from version 8.33 + to version 8.40. This library is used for implementation + of the re + regular expressions module.

+

+ 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 +sss + command line argument to the erl command.

+

+ See http://pcre.org/original/changelog.txt + for information about changes made to PCRE between the + versions 8.33 and 8.40.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14331 Aux Id: ERL-208

+
+ +

+ Remove generation of atoms in old latin1 external format. + The old latin1 format can still be decoded but is never + generated by term_to_binary 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.

+

+ Own Id: OTP-14337

+
+ +

+ Added function re:version/0 which returns + information about the OTP internal PCRE version used for + implementation of the re module.

+

+ Own Id: OTP-14347 Aux Id: PR-1412

+
+ +

+ Added new debug bif erlang:list_to_port/1.

+

+ Own Id: OTP-14348

+
+ +

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

+

+ Own Id: OTP-14356

+
+ +

Sockets can now be bound to device (SO_BINDTODEVICE) + on platforms where it is supported.

This has + been implemented e.g to support VRF-Lite under Linux; see + + VRF , and GitHub pull request #1326. +

+

+ Own Id: OTP-14357 Aux Id: PR-1326

+
+ +

Added the following erl command line arguments + with which you can set suggested stack for dirty + schedulers:

+sssdcpu +

for dirty CPU schedulers

+ +sssdio +

for dirty IO schedulers

+

The default suggested stack size for dirty schedulers + is 40 kilo words.

+

+ Own Id: OTP-14380

+
+ +

+ Changed erts startup program name, argv 0, to use the + environment variable ESCRIPT_NAME so that + erlc, dialyzer, typer, + ct_run, or the escript name can be seen with + external programs, such as ps and htop (depending on + options), on unix.

+

+ If environment variable ESCRIPT_NAME is not set, + argv 0 of the invoking program will be used, e.g. the + name will be erl, cerl, or the soft link + name.

+

+ Own Id: OTP-14381

+
+ +

+ Improvements of escript documentation.

+

+ Own Id: OTP-14384 Aux Id: OTP-14201

+
+ +

+ Add function enif_hash for NIFs to calculate hash + values of arbitrary terms.

+

+ Own Id: OTP-14385 Aux Id: PR-1413

+
+
+
+ +
+
Erts 8.3.3
Fixed Bugs and Malfunctions -- cgit v1.2.3