This document describes the changes made to the Kernel application.

## Kernel 1.3.2

### Fixed Bugs and malfunctions

file:stop does not hang any more.

Own Id:OTP-1404

net_kernel could in some situations send two nodeup messages to the monitor processes (processes that have evaluated net_kernel:monitor_nodes()).

This problem could make global hang when several nodes connected.

Own Id:OTP-1418; OTP-1127, OTP-1412
Aux Id:tir-d-088

net_kernel did not send nodedown messages for allowed nodes. If net_kernel:allow(Nodes) was used, no nodedown messages at all were sent to monitor processes net_kernel.

nodedown messages are now sent for allowed nodes but are ignored for connection attempts from disallowed nodes.

Own Id:OTP-1419

application_controller had sync problems in the takeover phase when an application was remote started.

Own Id:OTP-1426

application_controller did sometimes report {error,{not_started,App}} even though the application in question has been started on another node.

Own Id:OTP-1454
Aux Id:HA52440

application_controller could hang due to a deadlock situation during startup in a distributed system.

Own Id:OTP-1472

### Improvements and new features

The support for dynamic loading of drivers in module erl_ddll is enhanced with reference counting of loaded drivers and automatic unloading of drivers when the "owner" process terminates.

Own Id:OTP-1460

The os module has got 2 new functions getenv/1 to read environment variables from the hos operating system and find_executable/1,2 to find executable programs using a search path.

Own Id:OTP-1461

A new function application:which_application(Module) which returns the application that Module belongs to.

Own Id:OTP-1008

## Kernel 1.3.1

### Fixed Bugs and malfunctions

Malformed string/list as argument to unix:cmd/1 caused entire ERTS to crash.

Own Id: OTP-1384

It was not possible to convert a non distributed system into a distributed system as stated in the net_kernel reference manual. Note that this is not the recommended way to start a distributed system.

Own Id: OTP-1393

net_adm:world/1 was broken on Windows NT, since it relied on unix:cmd/1.

Own Id: OTP-1397

The disk_log_server now clears it's state correctly when a disk_log process terminates.

Own Id: OTP-1402

## Kernel 1.3

### Improvements and new features

net_ticktime is configurable through the kernel application. net_ticktime specifies the time within which a non responding node will be considered to be down.

-boot_var flag read by init. This flag is used to set a path variable in the boot script. If applications will be placed under another directory than $ROOT/lib in an embedded system this flag can be used.

A new function for controlling execution of applications is added; application:permit/2. The function controls which applications are permitted to execute on the node.

A new configuration parameter permissions specifies the default permission an application has when it is loaded.

New functions in application.
application:load(App, Dist) - set (and check!) distribution configuration for an application at load time.
application:get_application/0,1 - get the application of a pid.

Own Id: OTP-1306

.config files are now allowed to contain comments.

Own Id: OTP-1134
Aux Id: HA37561

It is now possible to specify more than one configuration file to erl, by using the command line flag -config.

The code server (module code) did sometimes store relative pathnames which could cause troubles in some cases. The code server is changed to always store absolute pathnames.

Own Id: OTP-1239
Aux Id: erlang/66

An elucidation regarding strings in the code module. Since the 1.1 version of the kernel application the code module always returns directory (and file) names as strings. See the code(3) manual page.

It is preferable that directory names are provided as strings to all functions. The possibility to provide directory names as atoms may be removed in future releases. Module names should always be given as atoms and the possibility to provide module names as strings may be removed in future releases.

Own Id: OTP-1186

code:priv_dir/1 was very slow and is made much faster now.

Own Id: OTP-1339

The module disk_log is moved from stdlib to kernel, and some new functionality is added. disk_log supports wrap and halt logs, the size of a log is configurable, it supports different file formats, and it supports replicated logs.

Own Id: OTP-1305

The erl_boot_server is dynamically configurable.

Own Id: OTP-1275

The functions add_slave/1, delete_slave/1 and which_slaves/0 are added to the erl_boot_server.

New option raw to file:open and also a new variant of the function which takes a list of options. The open with an optionlist is the recommended way to open a file from no on.

Own Id: OTP-1242

New format for the Reason field when {error,Reason} is returned from functions in the file module. There is also new documentation about this in the reference manual.

Own Id: OTP-1075

The configuration parameter os is removed from kernel.app. The function os:type() is used instead.

Own Id: OTP-1277

### Fixed Bugs and malfunctions

net_adm:world() is corrected on Windows NT.

Own Id: OTP-1219

file:list_dir("c:") returns "No such file..." on NT

Own Id:OTP-1237

Bad call to c:c/1 did crash the Erlang shell. Solved by addition of a better test that a module name is correct.

Own Id: OTP-1256
Aux Id: erlang/73

The rpc:cast function was synchronous when casted function call was performed at the current node.

Own Id: OTP-1292

### Incompatibilities with Kernel 1.1.1

New format for the Reason field when {error,Reason} is returned from functions in the file module. This is an interface change (the format of Reason but it will only break a minimal amount (if any) of old code since the previous format of Reason was more or less useless in match operations. There where also errors in the documentation and other inconsistencies with the old format.

The most likely places where old code needs to be adjusted is where the highlevel functions consult, path_consult, eval and path_eval in combination with a match for the result {error,open} is used.

Own Id: OTP-1075

### Known bugs and problems

-

## Kernel 1.1.1

### Improvements and new feature

-

### Fixed Bugs and malfunctions

application:get_env/1 returned undefined for all parameters during startup of an application.

Own Id: OTP-1079

When synchronization of mandatory node fails using the sync_nodes_mandatory configuration parameter , the node should be takendown, but it wasn't.

Own Id: OTP-1083

Manual page for file corrected.

Own Id: OTP-1102

Attempt to start an application when already running causes error. Now application:start/1,2 returns {error,{already_started,Name}} if the application is running.

Own Id: OTP-1111
Aux Id: tir-f-087, tir-d-087

Restart (init:restart/0) of system did not work after a software upgrade. Started using the now old version.

Own Id: OTP-1113
Aux Id: HA37170

init:stop/0 did not work after a restart (init:restart/0).

Own Id: OTP-1117

### Incompatibilities with Kernel 1.1

-

### Known bugs and problems

-

## Kernel 1.1

### Improvements and new feature

Application configuration paramaters can be given from the command line (overrides the configuration file): `erl -Appl Key Value`

Load applications before start. All applications (included in the boot script) are loaded before the first application is started.

Heart uses the hardware watchdog (Solaris), see heart(3).

Added error_logger:info_msg/1,2.

Support for distributed applications enhanced and documented.

### Fixed Bugs and malfunctions

net_adm:ping(Node) will never return pong if this node is not allowed (net_kernel:allow/1) to connect to Node.

net_kernel:allow/1 handles hidden nodes.

### Incompatibilities with OTP P1G

A configuration file must have suffix .config. (For example, to use the file sys.config, erl -config ./sys is used)

Old boot scripts won't work - generate new with systools.

Added the application behaviour. Change in .app file: previously, {start, {M, F, A}} was specified, now {mod, {M, A}} should be specified, and M:start(Type, A) is called.

code:root_dir/0, code:lib_dir/0, code:compiler_dir/0 and code:uc_dir/0 returns a string.

The error_handler is silent, e.g. it will not write ** cannot autoload: Mod ** and ** undefined registered name: Name ** to stdout any longer.

### Known bugs and problems

-