1
<!doctype chapter PUBLIC "-//Stork//DTD chapter//EN">
3
``The contents of this file are subject to the Erlang Public License,
4
Version 1.1, (the "License"); you may not use this file except in
5
compliance with the License. You should have received a copy of the
6
Erlang Public License along with this software. If not, it can be
7
retrieved via the world wide web at http://www.erlang.org/.
9
Software distributed under the License is distributed on an "AS IS"
10
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
11
the License for the specific language governing rights and limitations
14
The Initial Developer of the Original Code is Ericsson Utvecklings AB.
15
Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
16
AB. All Rights Reserved.''
22
<title>KERNEL Release Notes
23
<prepared>Kenneth Lundin
30
<p>This document describes the changes made to the Kernel application.
34
<title>Kernel 1.3.2</title>
37
<title>Fixed Bugs and malfunctions</title>
40
<p><c>file:stop</c> does not hang any more.
44
<p><c>net_kernel</c> could in some situations send two
45
nodeup messages to the monitor processes (processes that
46
have evaluated <c>net_kernel:monitor_nodes()</c>).
48
<p>This problem could make <c>global</c> hang when several
51
<p>Own Id:OTP-1418; OTP-1127, OTP-1412
55
<p><c>net_kernel</c> did not send nodedown messages for
56
allowed nodes. If net_kernel:allow(Nodes) was used, no
57
nodedown messages at all were sent to monitor processes
60
<p>nodedown messages are now sent for allowed nodes but are
61
ignored for connection attempts from disallowed nodes.
66
<p><c>application_controller</c> had sync problems in the
67
takeover phase when an application was remote started.
72
<p><c>application_controller</c> did sometimes report
73
<c>{error,{not_started,App}}</c> even though the
74
application in question has been started on another node.
80
<p><c>application_controller</c> could hang due to a
81
deadlock situation during startup in a distributed system.
89
<title>Improvements and new features</title>
92
<p>The support for dynamic loading of drivers in module <c>erl_ddll</c> is enhanced with
93
reference counting of loaded drivers and automatic unloading of drivers when the "owner"
97
<p>The <c>os</c> module has got 2 new functions <c>getenv/1</c> to read environment variables from the hos operating system and <c>find_executable/1,2</c> to find executable programs using a
101
<p>A new function <c>application:which_application(Module)</c> which returns the
102
application that <c>Module</c> belongs to.
110
<title>Kernel 1.3.1</title>
113
<title>Fixed Bugs and malfunctions</title>
116
<p>Malformed string/list as argument to unix:cmd/1 caused entire
120
<p>It was not possible to convert a non distributed system
121
into a distributed system as stated in the net_kernel
123
Note that this is not the recommended way to start a
127
<p><c>net_adm:world/1</c> was broken on Windows NT, since it relied
128
on <c>unix:cmd/1</c>.
131
<p>The <c>disk_log_server</c> now clears it's state correctly
132
when a disk_log process terminates.
139
<title>Kernel 1.3</title>
142
<title>Improvements and new features</title>
146
<p><c>net_ticktime</c> is configurable through the <c>kernel</c>
147
application. <c>net_ticktime</c> specifies the time within which
148
a non responding node will be considered to be down.
151
<p><c>-boot_var</c> flag read by <c>init</c>. This flag is used
152
to set a path variable in the boot script. If applications
153
will be placed under another directory than $ROOT/lib in an
154
embedded system this flag can be used.
157
<p>A new function for controlling execution of applications
158
is added; <c>application:permit/2</c>. The function
159
controls which applications are permitted to execute on
163
<p>A new configuration parameter <c>permissions</c>
164
specifies the default permission an application has when
167
<item><p>New functions in <c>application</c>. <br>
168
<c>application:load(App, Dist)</c> - set (and check!)
169
distribution configuration for an application at load
170
time.<br> <c>application:get_application/0,1</c> - get the
171
application of a pid.
174
<item><p><c>.config</c> files are now allowed to contain
179
<item><p>It is now possible to specify more than one
180
configuration file to <c>erl</c>, by using the command
181
line flag <c>-config</c>.
184
<p>The code server (module <c>code</c>) did sometimes store
185
relative pathnames which could cause troubles in some cases.
186
The code server is changed to always store absolute pathnames.
188
<br>Aux Id: erlang/66
191
<p>An elucidation regarding strings in the <c>code</c> module.
192
Since the <c>1.1</c> version of the kernel application the
193
<c>code</c> module always returns directory (and file) names as
194
strings. See the <c>code(3)</c> manual page.
195
<p>It is preferable that directory names are provided as strings
196
to all functions. The possibility to provide directory names
197
as atoms may be removed in future releases. Module names
198
should always be given as atoms and the possibility to provide
199
module names as strings may be removed in future releases.
202
<item><p> <c>code:priv_dir/1</c> was very slow and is made
203
much faster now. <p>Own Id: OTP-1339
205
<item><p>The module <c>disk_log</c> is moved from
206
<c>stdlib</c> to <c>kernel</c>, and some new functionality
207
is added. <c>disk_log</c> supports wrap and halt logs,
208
the size of a log is configurable, it supports different
209
file formats, and it supports replicated logs.
213
<p>The <c>erl_boot_server</c> is dynamically configurable.
217
<p>The functions <c>add_slave/1</c>, <c>delete_slave/1</c> and
218
<c>which_slaves/0</c> are added to the <c>erl_boot_server</c>.
220
<item><p> New option <c>raw</c> to <c>file:open</c> and also a
221
new variant of the function which takes a list of
222
options. The open with an optionlist is the recommended
223
way to open a file from no on.
227
<p>New format for the <c>Reason</c> field when <c>{error,Reason}</c>
228
is returned from functions in the <c>file</c> module. There is
229
also new documentation about this in the reference manual.
233
<item><p> The configuration parameter <c>os</c> is removed
234
from <c>kernel.app</c>. The function <c>os:type()</c> is
242
<title>Fixed Bugs and malfunctions</title>
245
<p><c>net_adm:world()</c> is corrected on Windows NT.
248
<p><c>file:list_dir("c:")</c> returns "No such file..." on NT
251
<p>Bad call to <c>c:c/1</c> did crash the Erlang shell.
252
Solved by addition of a better test that a module name is correct.
254
<br>Aux Id: erlang/73
257
<p>The <c>rpc:cast</c> function was synchronous when casted function
258
call was performed at the current node.
265
<title>Incompatibilities with Kernel 1.1.1</title>
268
<p>New format for the <c>Reason</c> field when <c>{error,Reason}</c>
269
is returned from functions in the <c>file</c> module.
270
This is an interface change (the format of <c> Reason</c> but
271
it will only break a minimal amount (if any) of old code since
272
the previous format of <c>Reason</c> was more or less useless
273
in match operations. There where also errors in the documentation
274
and other inconsistencies with the old format.
275
<p>The most likely places where old code needs to be adjusted is where the highlevel functions <c>consult</c>, <c>path_consult</c>, <c>eval</c> and <c>path_eval</c> in combination with a match for the result <c>{error,open}</c> is used.
282
<title>Known bugs and problems</title>
289
<title>Kernel 1.1.1</title>
292
<title>Improvements and new feature</title>
298
<title>Fixed Bugs and malfunctions</title>
303
<p><c>application:get_env/1</c> returned <c>undefined</c>
304
for all parameters during startup of an application.
309
<p>When synchronization of mandatory node fails using the
310
<c>sync_nodes_mandatory</c> configuration parameter , the
311
node should be takendown, but it wasn't.
316
<p>Manual page for file corrected.
321
<p>Attempt to start an application when already running
322
causes error. Now <c>application:start/1,2</c> returns
323
<c>{error,{already_started,Name}}</c> if the application
327
<br>Aux Id: tir-f-087, tir-d-087
330
<p>Restart (<c>init:restart/0</c>) of system did not work
331
after a software upgrade. Started using the now old
338
<p><c>init:stop/0</c> did not work after a restart
339
(<c>init:restart/0</c>).
347
<title>Incompatibilities with Kernel 1.1</title>
353
<title>Known bugs and problems</title>
360
<title>Kernel 1.1</title>
363
<title>Improvements and new feature</title>
366
<p>Application configuration paramaters can be given from
367
the command line (overrides the configuration file):
373
<p>Load applications before start. All applications (included
374
in the boot script) are loaded before the first application is
378
<p>Heart uses the hardware watchdog (Solaris), see heart(3).
381
<p>Added <c>error_logger:info_msg/1,2</c>.
384
<p>Support for distributed applications enhanced and
391
<title>Fixed Bugs and malfunctions</title>
395
<p><c>net_adm:ping(Node)</c> will never return <c>pong</c>
396
if this node is not allowed (<c>net_kernel:allow/1</c>) to
397
connect to <c>Node</c>.
400
<p><c>net_kernel:allow/1</c> handles hidden nodes.
406
<title>Incompatibilities with OTP P1G</title>
409
<p>A configuration file must have suffix .config. (For example,
410
to use the file sys.config, erl -config ./sys is used)
413
<p>Old boot scripts won't work - generate new with systools.
416
<p>Added the application behaviour.
417
Change in .app file: previously, <c>{start, {M, F, A}}</c>
418
was specified, now <c>{mod, {M, A}}</c> should be specified,
419
and <c>M:start(Type, A)</c> is called.
422
<p><c>code:root_dir/0</c>, <c>code:lib_dir/0</c>,
423
<c>code:compiler_dir/0</c> and <c>code:uc_dir/0</c> returns
427
<p>The <c>error_handler</c> is silent, e.g. it will not write
428
<c>** cannot autoload: Mod **</c> and
429
<c>** undefined registered name: Name **</c> to stdout any
435
<title>Known bugs and problems</title>