20062016 Ericsson AB. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ERTS Release Notes History otp_appnotes nil nil nil notes_history.xml
ERTS 5.4
Fixed Bugs and Malfunctions

The BIF has been added to the run-time system. It checks that is a tuple whose first element is the atom No check is made of the size of the tuple (because the run-time system doesn't know anything about records).

Note that normally the compiler translates calls to to code that also verify the size of the tuple, in addition to verifying the first element. The BIF version will be used is applied or if the second argument is not a literal atom (e.g. a variable or another term type, in which case the BIF will generate a exception).

Own Id: OTP-4812

Guards of mach specifications are corrected to resemble the semantics of guards in real code more closely. The implementation now corresponds to the documentation in ERTS User's Guide. The following things are corrected:

Guard semantics was wrong when it came to logical operators and exceptions. evaluated to with bound to an integer. Unary + and - was not implemented. Calling operators as Bif's was not supported by ( etc). Old typetests (like instead of was not supported by . Semicolon (;) in guards was not supported by .

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-4927

A potential initialization failure when using threads and elib_malloc has been removed.

Own Id: OTP-5125

Several problems in the 64-bit emulator has been corrected. For instance, the emulator could crash while running the Debugger.

Own Id: OTP-5146

The match spec parse transform no longer accepts the and constructs in guards for consistency with the standard Erlang language. A future release of Erlang/OTP may allow and in guards.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-5149

In rare circumstances in a process that has caught exceptions and uses funs, the process would be killed when changing code because the code server would think that the process still held references to the funs.

Own Id: OTP-5153

no longer sends any monitoring messages to the system monitor process from itself. This behavior is more consistent with other trace functionality.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-5183

Improvements and New Features

The documentation stated that could return or that was wrong, it always returns .

Own Id: OTP-4830

The unary '+' operator has been changed to throw an exception if its argument is not numeric (or fail in a guard). It used its argument unchanged whatever the type. Given the new meaning, unary '+' can now be used to test whether a term is numeric.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-4928

Process identifiers and port identifiers have been made more unique. Previously 18 bits were used as id in the internal representation of process and port identifiers. Now 28 bits are used.

The maximum limit on the number of concurrently existing processes due to the representation of pids has been increased to 268435456 processes. The same is true for ports. This limit will at least on a 32-bit architecture be impossible to reach due to memory shortage.

NOTE: By default, the , and the , , and libraries are now only guaranteed to be compatible with other Erlang/OTP components from the same release. It is possible to set each component in compatibility mode of an earlier release, though. See the documentation for respective component on how to set it in compatibility mode.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-4968 Aux Id: OTP-4196

A new internal thread library for the ERTS has been added.

Own Id: OTP-5048

The system's performance could degrade severely if one process held numerous links or monitors. The issue is resolved.

Own Id: OTP-5079

A new function, , has been added.

Own Id: OTP-5081 Aux Id: OTP-5136

A new function, , has been added.

Own Id: OTP-5136 Aux Id: OTP-5081

The exception code for calling a fun with wrong number of arguments has been changed from simply to .

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-5139

The long-awaited ... construction is included in this release. However, its use in production code is not yet supported as there are several known cases of legal code crashing the compiler. We plan to release a patch to the compiler (including the documentation) and at that time ... will be supported.

Own Id: OTP-5150

ERTS 5.3.6.6
Fixed Bugs and Malfunctions

A bug that caused an emulator crash when using system monitor of long GC has been fixed.

Own Id: OTP-5123

ERTS 5.3.6.5
Fixed Bugs and Malfunctions

and sometimes reported erroneous values. This bug has now been fixed.

Own Id: OTP-5115 Aux Id: seq9063

There is now a packet size limit option for sockets. See the manual for .

The ASN.1 BER packet decoding for sockets can now decode indefinite length packets.

Own Id: OTP-5128

Improvements and New Features

Port index was unnecessarily incremented by port table size when port table got full. This unnecessary increment has now been removed.

Own Id: OTP-5119

ERTS 5.3.6.3
Fixed Bugs and Malfunctions

Resolved a build problem on Mac OS 10.3 ("Panther"). Because of a conflict with the zlib sources included in the Erlang run-time system and the zlib library included in Panther, linking would fail.

Minor optimization on all Unix systems: caching the system name returned from the uname() system call. (Thanks to David N. Welton.)

Own Id: OTP-5069

Improvements and New Features

The ability to set system wide options for TCP sockets is added through the kernel application variables and , see the manual page for details.

Own Id: OTP-5080

ERTS 5.3.6.2
Fixed Bugs and Malfunctions

A few portability enhancements for the R9C-1 Open Source release: The installer for Windows can now be built with NSIS 2.0 (as well as with the NSIS 2.0b3). The driver header files updated to allowed drivers to be built which the MinGW compiler on Windows. Minor portability enhancement in .

Own Id: OTP-4789

Conversion of extremely small floating point numbers in the external format (distribution) could sometimes fail leading to unexpected closing of distribution channels, i.e. generating nodedowns for healthy nodes.

Own Id: OTP-5026 Aux Id: seq8631 EABln12478

ERTS 5.3.6.1
Fixed Bugs and Malfunctions

Conversion of extremely small floating point numbers in the external format (distribution) could sometimes fail leading to unexpected closing of distribution channels, i.e. generating nodedowns for healthy nodes.

Own Id: OTP-5026 Aux Id: seq8631 EABln12478

Improvements and New Features

Remote spawn on a nonreachable node now gives warning instead of error in the error_log.

Own Id: OTP-5030 Aux Id: seq8663]

Known Bugs and Problems

Emulator with elib_malloc enabled could hang when many I/O threads were in use.

Own Id: OTP-5028 Aux Id: EABln13041, EABln12253

ERTS 5.3.6
Fixed Bugs and Malfunctions

Distributed monitoring in combination with nodes restarting did not behave correctly in rare circumstances.

Own Id: OTP-4914

A module containing code similar to could not be loaded.

Own Id: OTP-4963 Aux Id: seq8344

Problems fixed in : can now be opened. Opening a FIFO will now return an error instead of hanging the emulator. The documentation has been updated to point out that returns the error code when the pathname is not a regular file (the pathname is not necessarily a directory).

Own Id: OTP-4992

Improvements and New Features

The Solaris kernel poll feature was changed from a compile time option to a runtime option. The kernel poll feature can be enabled, by passing the command-line argument to an emulator (see ) that have kernel poll support, i.e. an emulator for Solaris 8. By default the kernel poll feature is disabled.

Own Id: OTP-4979 Aux Id: seq8478

Before the Erlang emulator writes an file (for any reason), it will close all open files and sockets.

Own Id: OTP-4985 Aux Id: EABln10730, EABln11277, EABln11279

The switch has been added to disable time correction in the runtime system, this should be used on systems where one is certain no dramatic wall clock time changes will occur and the time correction algorithm is too costly (namely very fast Linux systems where loads of are executed).

Own Id: OTP-4986

The BIFs now take a flag that allows changing an existing process's minimum heap size. The actual size will only be changed when the next garbage collection occurs.

Own Id: OTP-4991 Aux Id: seq8515, OTP-4987

ERTS 5.3.4
Improvements and New Features

A possibility to make distribution messages be qued up during running of erlang code, so that larger packages is sent over the network is added.

Own Id: OTP-4916

When code loading failed it was impossible to know exactly what caused it, only would be reported. Now the primitive loader lets the error logger print an error report if a file operation fails. All file errors except and are reported this way.

Own Id: OTP-4925 Aux Id: OTP-4952

ERTS 5.3.3
Fixed Bugs and Malfunctions

The driver for dynamically linked in drivers has been fixed to delete loaded drivers when its Erlang server dies. The Erlang server has also been updated to improve the start-on-demand behaviour.

Own Id: OTP-4876 Aux Id: OTP-4855 seq8272

does no longer generate an ERROR REPORT to the error logger when the name already is registered. If the name is already registered the process function will crash with and that is enough. It is up to the caller to decide if it is an error that the name is already registered.

Own Id: OTP-4892

When using , and the GC time exceeded 1 second, it sometimes erroneously showed up as about 4300 seconds. This bug has now been corrected.

Own Id: OTP-4903 Aux Id: seq8379

Improvements and New Features

Starting Erlang with the flag (to ignore ^C), now also disables the quit ('q') option in the JCL menu.

Own Id: OTP-4897

ERTS 5.3.2
Improvements and New Features

The elib_malloc alternative dynamic memory allocator has been improved to use an address order best fit strategy. The instrumented emulator has been improved to be able to catch memory allocations done by external libraries. The emulator flag (stands for "relocate") makes updates always result in an object relocation, which significantly lessens the memory fragmentation in certain systems. The bif can now be called with the argument and will return if the emulator flag is in effect, otherwise.

Own Id: OTP-4838 Aux Id: seq8156