2006 2009 Ericsson AB. All Rights Reserved.
The contents of this file are subject to the Erlang Public License, Version 1.1, (the "License"); you may not use this file except in compliance with the License. You should have received a copy of the Erlang Public License along with this software. If not, it can be retrieved online at http://www.erlang.org/. Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.

Kernel Release Notes History

## Kernel 2.10

### Fixed Bugs and Malfunctions

Added documentation of configuration parameter net_setuptime.

Own Id: OTP-5117 Aux Id: seq8908

### Improvements and New Features

The disk_log module has been slightly changed for the purpose of reducing the risk of memory problems due to corrupt files. The chunk commands have been optimized by increasing the chunk size from 8 kilobytes to 64 kilobytes.

Own Id: OTP-4530 Aux Id: seq7646

The code server used prim_file for its file operations. This made it impossible to load code from a boot server. Now the code server uses erl_prim_loader for these operations instead.

Own Id: OTP-4819 Aux Id: OTP-4802, OTP-4846

New functions - rpc:call/5 and rpc:block_call/5. They have a timeout argument! See the documentation for details.

Own Id: OTP-4849 Aux Id: seq8250

A new environment parameter browser_cmd has been introduced which defines how to display help text (HTML files).

Own Id: OTP-4852

The system configuration file sys.config can now contain names of other configuration files as well as application configuration data.

Thus, it is now possible to have several configuration files in connection with release handling. See config(4) and OTP Design Principles for more information.

Own Id: OTP-4867 Aux Id: OTP-1968

It is now possible to compile files with erlc without getting a lot of (for compilation) unnecessary code loaded and executed (like distribution, inet config, etc). erlc now also calls erl with -boot start_clean (so that SASL is not started even if start_sasl is default boot script).

Own Id: OTP-4878

Disk logs can now be opened or closed in parallel. In particular, if some log is being repaired, other logs can still be opened or closed.

Own Id: OTP-4913

Native lookup (system calls) is now default resolver method on all platforms. Also the user inet configuration method has changed so that a Kernel variable, inetrc, should now be used to specify the name of the user inet config file (if it exists). This is all documented in the ERTS User's Guide.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-4983

Previously missing documentation of erlang:system_info/1 and erlang:system_flag/2 have been added.

Own Id: OTP-5038 Aux Id: seq8708

## Kernel 2.9.6.8

### Improvements and New Features

The code server now caches .app files as well as .beam files. Application controller calls the function code:where_is_file/1 to locate the cached .app file so that file:consult/1 may be used instead of file:path_consult/2 to read the file. This is much more efficient.

Own Id: OTP-5097 Aux Id: seq8956

## Kernel 2.9.6.7

### Fixed Bugs and Malfunctions

Improved setup of connection between nodes to avoid that some nodes get lower priority (and thus times out) when many nodes are connected simultaneously.

Own Id: OTP-5116 Aux Id: seq8908

There is now a packet size limit option for gen_tcp sockets. See the manual for inet:setopts/2.

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

Own Id: OTP-5128

## Kernel 2.9.6.6

### Fixed Bugs and Malfunctions

A helper for global would terminate if it received unknown types of messages, causing global to terminate too. Changed so that the helper process logs and ignore strange messages.

Own Id: OTP-5078 Aux Id: seq_8839

### Improvements and New Features

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

Own Id: OTP-5080

## Kernel 2.9.6.5

### Improvements and New Features

Fixed error that made code server crash if invalid directories were added to the path.

Own Id: OTP-5070 Aux Id: OTP-5060, EABln14115

## Kernel 2.9.6.4

### Improvements and New Features

Speed improvements in code:add_path(s)[az]/1 when the cache is activated.

Own Id: OTP-5060 Aux Id: seq8315, EABln14115

## Kernel 2.9.6.2

### 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]

## Kernel 2.9.6.1

### Improvements and New Features

An error that made the code server ignore version numbers on lib directories has been corrected.

Own Id: OTP-5020

## Kernel 2.9.5

### Improvements and New Features

A possibility to make distribution messages be queued 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 {undef,[{M,F,A}|...]} would be reported. Now the primitive loader lets the error_logger print an error report if a file operation fails. All file errors except enoent and enotdir are reported this way.

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

## Kernel 2.9.4

### Fixed Bugs and Malfunctions

Bugs have been fixed in the disk_log module: if reopen failed to rename a file, a message could erroneously be sent to the client; if requests were queued while a log was blocked, no replies were sent to the blocked processes should the log be closed.

Own Id: OTP-4880 Aux Id: seq7902

In rare cases, the global name registration could hang during simultaneous startup of several nodes, due to a cyclic deadlock in the global:loop_the_locker processes.

Own Id: OTP-4902 Aux Id: seq8275

### Improvements and New Features

The Kernel variable net_setuptime can now be defined in fractions of seconds (using a floating point number).

Own Id: OTP-4915

## Kernel 2.9.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

### Improvements and New Features

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

Own Id: OTP-4897

A STDLIB application variable, shell_esc, has been introduced that controls the behaviour of ^G. If shell_esc is set to abort, ^G restarts the shell. If set to jcl, ^G invokes the JCL menu. The latter is default.

Own Id: OTP-4898 Aux Id: OTP-4897

## Kernel 2.9.2

### Fixed Bugs and Malfunctions

The boot server had become broken. Now it works again.

Own Id: OTP-4846 Aux Id: OTP-4802, OTP-4819

When loading a dynamically linked in driver through erl_ddll, the server ddll_server that held the port for the driver handling shared libraries got the group leader of the invoking application. Later, when the application was terminated, it killed all processes in its group, also the ddll_server, so the driver still had some shared libraries loaded. Finally, when the ddll_server was restarted it assumed that all shared libraries its driver knew of was statically linked, so the dynamically linked in drivers that was loaded when ddll_server was killed could neither be loaded nor unloaded. This bug has now been fixed by setting the group leader of ddll_server to something harmless and more eternal, and by unloading all remaining dynamically linked in drivers when ddll_server starts. A race condition when starting ddll_server has also been fixed.

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

## Kernel 2.9.1

### Fixed Bugs and Malfunctions

When the emulator was started with command line arguments -run or -s and the started code did an uncatched erlang:throw/1, the emulator ignored the throw which is rather strange. Now the init process exits with nocatch as expected.

Own Id: OTP-4788 Aux Id: seq8129

The code server could hang if invoked early in the startup. For example if the emulator was started with "-s file eval Filename" and Filename contained a call to code:add_patha/1 the code server accidentally tried to execute code in an unloaded module from inside the code that loaded a module - hence hangup. This bug has now been fixed.

Note! Starting Erlang through code loading from a remote Erlang boot server will not work after this patch. It will be fixed in a later patch. Rumours has it that remote boot server code loading did not work before this patch either. It is not a commonly used feature.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-4802 Aux Id: seq8314