Kernel Release Notes
Kernel 2.6.1 (R7B)
Fixed errors and malfunctions
-
A new better and more portable hash BIF, erlang:phash/2, has been
introduced. The dets module will use the erlang:phash/2
for newly created tables. To rebuild an old table and start to use the
new hash BIF, give the {repair,force} option to dets:open_file/2.
See the documentation.
Own Id: OTP-3397
-
In OTP R7A, command line arguments could not be longer than
255 characters. This restriction has been removed again, but
since the length limit on atoms is enforced more thoroughly
than in earlier releases,
init:get_args/0
will fail
for such arguments. A new function
init:get_plain_arguments/0
has been introduced,
which returns strings, and should be used instead.
The same problem with the command line flag -s
is
solved by the introduction of a new command line flag
-run
with the same semantics as -s
, except that the
user's function is called with a list of strings instead
of a list of atoms.
Own Id: OTP-3687
Improvements and new features
-
On Unix,
os:cmd/1
previously used a dedicated
subprocess, which meant that calls to os:cmd/1
were
serialized. This is no longer the case.
(For R7A users: the solution in R7A was too simple;
compatibility with earlier releases has been restored.)
The kernel configuration parameter start_os
has
been removed.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3466
Aux Id: seq4333
-
A new callback
Mod:prep_stop/1
has been introduced
in application
, for actions that need to be performed
before the children are terminated.
Own Id: OTP-3590
Aux Id: Seq 4578
-
disk_log
: lclose/2
is a new function.
Own Id: OTP-3685
-
When supplying option {packet, PacketType} to
gen_udp:open(Portnum, Options) it now exits with badarg.
In previous releases this option was silently ignored,
which was too forgiving since UDP datagrams
are packets by definition, and hence this option
was obsolete. Furthermore, the more exotic
PacketType values, e.g. asn1, cdr, sunrm, fcgi,
has never been implemented for UDP.
Programs that supply this obsolete option
to gen_udp:open/2 will probably crash
when running on this release.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3690
Kernel 2.6 (R7A)
Known problems
-
code:is_loaded/1
doesn't type check its arguments.
Own Id: OTP-2607
-
If more than 1024 bytes of text (more than 256 in release R4)
are pasted into the shell, and this text consists of
more than one expression sequence (each ending with a period),
text after the first 1024 bytes may be lost.
Own Id: OTP-3041
Fixed errors and malfunctions
-
If an error occurred when accessing a file, the file
process died, and further attempts to access the file
could cause the caller to hang. Now, it will no longer
hang, but return
{error, terminated}
.
Own Id: OTP-1400
Aux Id: OTP-1034, OTP-2400
-
Using
gen_tcp:send
on a closed socket no
longer causes the caller to hang.
Own Id: OTP-2714
Aux Id: seq 1122
-
A few problems having to do with start phases in the application
controller were corrected.
Own Id: OTP-3380
Aux Id: Seq 4166
-
net_adm:names
always returned the empty list.
This is now corrected. A similar error was corrected
in inet_db.
Own Id: OTP-3432
Aux Id: Seq 4274
-
rpc:multicall
could leave a nodedown
message
in the caller's message queue under some circumstances.
This has been fixed.
Own Id: OTP-3449
Aux Id: Seq 4305
-
A fix in the
disk_log
module: changing the size of a
non-full wrap log could return the error einval
.
Own Id: OTP-3484
Aux Id: seq4354, seq4259
-
After using
erlang:demonitor/1
on a remote process,
a DOWN
message would appear anyway if the remote
node went down. This has been fixed.
Own Id: OTP-3499
Aux Id: Seq 4393
-
global:register_name
and similar functions could
sometimes fail to modify the names consistently on all nodes,
if new nodes appeared in the network during the operation.
Own Id: OTP-3552
Aux Id: Seq 4490
-
If a partly partitioned net is brought together again,
global
could enter deadlock.
Own Id: OTP-3575
Aux Id: OTP-2766
-
In a net which had been partly partitioned and brought
together again, it could happen that the name registry
would remain inconsistent indefinitely.
Own Id: OTP-3576
-
When starting up a configured network, a deadlock could
occur, especially if the nodes were much different in
speed. This has been fixed.
Own Id: OTP-3625
Aux Id: Seq 4552
Improvements and new features
-
When several versions of an application existed
simultaneously in the lib directory, the code server
did not neccessarily pick the latest version of the
application case any version number was greater than
9, when in interactive mode (for instance, 1.9 was
considered later that 1.10).
Own Id: OTP-2976
-
Documentation for the function application:get_key/1/2
has been improved.
Own Id: OTP-3379
Aux Id: seq4164
-
On Unix,
os:cmd/1
previously used a dedicated
subprocess, which meant that calls to os:cmd/1
were
serialized. This is no longer the case.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3466
Aux Id: seq4333
-
The
disk_log
module has been improved as regards
distribution. The value returned from open/1
when
opening a distributed log has been modified. The modification
is incompatible with the previously returned value. Attempts
to open a distributed log on a node running new code from
a node running old code, and vice versa, results in a
nodedown
error message.
info/1
returns two more tags, 'node' and 'distributed'.
The new function lclose/1
closes a log on the current
node. The layout of the continuation returned from
chunk{_step}
has been changed,
and the new function chunk_info/1
returns the node where chunks are read from. The new
function accessible_logs/0
returns the names
of disk logs accessible on the current node.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3531
Aux Id: Seq 4426, Seq 4258
-
The BIF erlang:monitor(process, Proc) has been extended
to accept named processes, local and remote.
See the documentation for erlang:monitor/2 and
erlang:demonitor/1.
Own Id: OTP-3657
-
The gen_ family (mostly gen_server and gen_fsm)
and rpc has been rewritten to use the new BIF
erlang:monitor/2 as much as possible. This should
improve performance and remove some possibilities
of hanging gen_server calls. In particular,
gen_server:multi_call/2..4 and
rpc:multi_server_call/2,3 should now never hang,
at least not when all nodes are of this
release. See also the documentation for
gen_server and rpc.
Own Id: OTP-3660
-
The inet driver (inet_drv, i.e the driver for
(TCP&UDP)/IP) and a lot of supporting Erlang
code in the application kernel, has been replaced.
The new code, courtesy of Tony Rogvall,
eliminates one data relay process per socket
and thereby gives a throughput boost.
Own Id: OTP-3661
-
For completeness, a new function
rpc:nb_yield/2 has been added.
See the documentation.
Own Id: OTP-3662
-
The
erlang:info/1
and erlang:system_info/1
BIFs have been
merged into one. The recommended way to use the combined
BIF is by the name erlang:system_info/1
, but
erlang:info/1
will also work.
Own Id: OTP-3669
-
There is a new os:getenv/0 function that retrieves a list
of all (operating system) environment variables.
Own Id: OTP-3670
-
New socket options for TCP/IP sockets:
'tpkt' and 'line'. See the documentation for
inet:setopts/2.
Own Id: OTP-3674
-
Most of the previously undocumented BIFs in the
erlang
module have been documented. Still undocumented are BIFs
which are of no use in applications, for instance the set
of BIFs used to implement the distribution protocol.
The newly documented BIFs are:
append_element/2
,
bump_reductions/1
,
display/1
,
function_exported/3
,
garbage_collect/0,1
,
is_builtin/3
,
loaded/0
,
make_tuple/2
,
md5/1
,
md5_final/1
,
md5_init/1
,
md5_update/2
,
port_close/1
,
port_command/2
,
port_connect/2
,
port_control/3
,
port_to_list/1
,
ref_to_list/1
,
system_info/1
, and
yield/0
.
Own Id: OTP-3675
-
The new BIF term_to_binary/2 can be used for automatically
compressing the external representation of an Erlang term.
The binary_to_term/1 BIF in R7 automatically recognises
and decompresses such compressed terms.
Own Id: OTP-3676
There are also release notes for
older versions.