1 Kernel Release Notes
This document describes the changes made to the Kernel application.
1.1 Kernel 2.10.11
1.1.1 Fixed Bugs and Malfunctions
-
Several bug fixes and improvements in the global name
registration facility (see global(3)):
-
the
name resolving procedure did not always unlink no longer
registered processes;
-
the global name could
sometimes hang when a
nodedown
was immediately
followed by a nodeup
;
-
global names were not
always unregistered when a node went down;
-
it is
now possible to set and delete locks at the same time as
the global name server is resolving names--the handling
of global locks has been separated from registration of
global names;
As of this version, global no
longer supports nodes running Erlang/OTP R7B or earlier.
Own Id: OTP-5563
-
The functions
global:set_lock/3
and
global:trans/4
now accept the value 0
(zero) of the Retries
argument.
Own Id: OTP-5737
-
The
inet:getaddr(Addr, Family)
no longer
validates the Addr
argument if it is a 4 or 8
tuple containing the IP address, except for the size of
the tuple and that it contains integers in the correct
range.
The reason for the change is that validation could
cause the following sequence of calls to fail:
{ok,Addr} = inet:getaddr(localhost, inet6),
gen_tcp:connect(Addr, 7, [inet6])
Own Id: OTP-5743
1.1.2 Improvements and New Features
-
The previously undocumented and UNSUPPORTED
zlib
module has been updated in an incompatible way and many
bugs have been corrected. It is now also documented.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-5715
-
Added
application
interface functions
which_applications/1
, set_env/4
and
unset_env/3
, which take an additional
Timeout
argument. To be used in situations where
the standard gen_server timeout (5000ms) is not adequate.
Own Id: OTP-5724 Aux Id: seq10083
-
Improved documentation regarding synchronized start of
applications with included applications (using start
phases and
application_starter
).
Own Id: OTP-5754
-
New socket options
priority
and tos
for
platforms that support them (currently only Linux).
Own Id: OTP-5756
-
The global name server has been optimized when it comes
to maintaining a fully connected network.
Own Id: OTP-5770
1.2 Kernel 2.10.10.1
1.2.1 Fixed Bugs and Malfunctions
-
The native resolver has gotten an control API for
extended debugging and soft restart. It is:
inet_gethost_native:control(Control)
Control = {debug_level,Level} | soft_restart
Level = integer() in the range 0-4
Own Id: OTP-5751 Aux Id: EABln25013
1.3 Kernel 2.10.10
1.3.1 Fixed Bugs and Malfunctions
-
If several processes (at the same node) simultaneously
tried to start the same distributed application, this
could lead to
application:start
returning an
erroneous value, or even hang.
Own Id: OTP-5606 Aux Id: seq9838
1.3.2 Improvements and New Features
-
The manual pages for most of the Kernel and some of
the STDLIB modules have been updated, in particular
regarding type definitions.
The documentation of the return value for
erts:info/1
has been corrected.
The documentation for erlang:statistics/1
now
lists all possible arguments.
Own Id: OTP-5360
-
When the native resolver fails a gethostbyaddr lookup,
nxdomain should be returned. There should be no attempt
to fallback on a routine that succeeds if only the syntax
of the IP address is valid. This has been fixed.
Own Id: OTP-5598 Aux Id: OTP-5576
-
Replaced some tuple funs with the new fun M:F/A
construct.
The high-order functions in the lists module no longer
accept bad funs under any circumstances.
'lists:map(bad_fun, [])
' used to return
'[]
' but now causes an exception.
Unused, broken compatibility code in the ets
module was removed. (Thanks to Dialyzer.)
Eliminated 5 discrepancies found by Dialyzer in the
appmon application.
Own Id: OTP-5633
-
The possibility to have comments following the list of
tuples in a config file (file specified with the -config
flag) has been added.
Own Id: OTP-5661 Aux Id: seq10003
1.4 Kernel 2.10.9
1.4.1 Fixed Bugs and Malfunctions
-
'erl -config sys.config' would fail to start if the
sys.config file did not contain any whitespace at all
after the dot. (Thanks to Anders Nygren.)
Own Id: OTP-5543
-
A bug regarding tcp sockets which results in hanging
gen_tcp:send/2
has been corrected. To encounter
this bug you needed one process that read from a socket,
one that wrote more date than the reader read out so the
sender got suspended, and then the reader closed the
socket. (Reported and diagnosed by Alexey Shchepin.)
Corrected a bug in the (undocumented and unsupported)
option '{packet,http}' for gen_tcp. (Thanks to Claes
Wikstrom and Luke Gorrie.)
Updated the documentation
regarding the second argument to gen_tcp:recv/2
,
the Length to receive.
Own Id: OTP-5582 Aux Id: seq9839
1.4.2 Improvements and New Features
-
At startup, the erlang resolver hosts table was used to
look up the name of the local (and possibly stand alone)
host. This was incorrect. The configured resolver method
is now used for this purpose.
Own Id: OTP-5393
-
The erlang:port_info/1 BIF is now documented. Minor
corrections of the documentation for erlang:port_info/2.
Added a note to the documentation of the math
module that all functions are not available on all
platforms.
Added more information about the '+c' option in the
erl
man page in the erts documentation.
Own Id: OTP-5555
-
The new 'fun M:F/A' construct creates a fun that
refers to the latest version of M:F/A. This syntax is
meant to replace tuple funs '{M,F}' which have many
problems.
The new type test 'is_function(Fun, A)' (which may be
used in guards) test whether Fun is a fun that can be
applied with A arguments. (Currently, Fun can also be a
tuple fun.)
Own Id: OTP-5584
-
According to the documentation Global implements the
equivalent of
register/2
, which returns
badarg
if a process is already registered. As it
turns out there is no check in Global if a process is
registered under more than one name. If some process is
accidently or by design given several names, it is
possible that the name registry becomes inconsistent due
to the way the resolve function is called when name
clashes are discovered (see register_name/3
in
global(3)).
In OTP R11B Global will not allow the registration of
a process under more than one name. To help finding code
where no
will be returned, a Kernel application
variable, global_multi_name_action
, is hereby
introduced. Depending on its value (info
,
warning
, or error
), messages are to the
error logger when Global discovers that some process is
given more than one name. The variable only affects the
node where it is defined.
Own Id: OTP-5603
1.5 Kernel 2.10.8
1.5.1 Improvements and New Features
-
In case of a DNS lookup loop, inet_db:getbyname ends up
building an infinite list. This has been fixed.
Own Id: OTP-5449
-
When doing an inet6 name lookup on an IPv4 address it was
possible to get an address on IPv4 format back. This has
been corrected. Some other minor inconsistencies
regarding IPv6 name lookup have also been corrected.
Own Id: OTP-5576
1.6 Kernel 2.10.7
1.6.1 Fixed Bugs and Malfunctions
-
Under certain circumstances the
net_kernel
could
emit spurious nodedown messages. This bug has been fixed.
Own Id: OTP-5396
-
Removed description of the
keep_zombies
configuration parameter in the kernel
man page.
Own Id: OTP-5497
1.6.2 Improvements and New Features
-
Eliminated Dialyzer warnings (caused by dead code) in the
init
and prim_file
modules.
Own Id: OTP-5496
-
inet_config now also checks the environment variable
ERL_INETRC for a possible user configuration file. See
the ERTS User's Guide for details.
Own Id: OTP-5512
1.7 Kernel 2.10.6
1.7.1 Improvements and New Features
-
The c option for the +B flag has been introduced which
makes it possible to use Ctrl-C (Ctrl-Break on Windows)
to interrupt the shell process rather than to invoke the
emulator break handler. All new +B options are also
supported on Windows (werl) as of now. Furthermore,
Ctrl-C on Windows has now been reserved for copying text
(what Ctrl-Ins was used for previously). Ctrl-Break
should be used for break handling. Lastly, the
documentation of the system flags has been updated.
Own Id: OTP-5388
-
The possibility to start the erlang shell in parallell
with the rest of the system was reintroduced for
backwards compatibility in stdlib-1.13.1. The flag to be
used for this is now called async_shell_start and has
been documented. New shells started from the JCL menu are
not syncronized with init anymore. This makes it possible
to start a new shell (e.g. for debugging purposes) even
if the initial shell hasn't come up.
Own Id: OTP-5406 Aux Id: OTP-5218
1.8 Kernel 2.10.5
1.8.1 Fixed Bugs and Malfunctions
-
Documentation for erlang:binary_to_float/1 deleted.
The BIF itself was removed several releases ago.
Updated documentation for apply/2
and
apply/3
.
Own Id: OTP-5391
1.8.2 Improvements and New Features
-
net_kernel:monitor_nodes/2 which takes a flag and, an
option list has been added. By use of
net_kernel:monitor_nodes/2 one can subscribe for
nodeup/nodedown messages with extra information. It is
now possible to monitor hidden nodes, and get nodedown
reason. See the net_kernel(3) documentation for more
information.
Own Id: OTP-5374
1.9 Kernel 2.10.4
1.9.1 Fixed Bugs and Malfunctions
-
The application master for an application now terminates
the application faster, which reduces the risk for
timeouts in other parts of the system
Own Id: OTP-5363 Aux Id: EABln19084
-
A BIF erlang:raise/3 has been added. See the manual for
details. It is intended for internal system programming
only, advanced error handling.
Own Id: OTP-5376 Aux Id: OTP-5257
1.10 Kernel 2.10.3
1.10.1 Improvements and New Features
-
With the -eval flag (
erl -eval Expr
), an arbitrary
expression can be evaluated during system initialization.
This is documented in init(3).
Own Id: OTP-5260
-
The unsupported and undocumented modules socks5,
socks5_auth, socks5_tcp, and socks5_udp have been
removed.
Own Id: OTP-5266
1.11 Kernel 2.10.1
1.11.1 Fixed Bugs and Malfunctions
-
The pman 'trace shell' functionality was broken as has
now been fixed. Furthermore, pman could not correctly
find the pid of the active shell if more than one shell
process was running on the node. This has also been
corrected.
Own Id: OTP-5191
-
The documentation for the
auth:open/1
function
which no longer exists has been removed. (Thanks to
Miguel Barreiro.)
Own Id: OTP-5208
-
Corrected the
crc32/3
function in the undocumented
and unsupported zlib
module.
Own Id: OTP-5227
1.11.2 Improvements and New Features
-
You can now start Erlang with the -rsh flag which gives
you a remote initial shell instead of a local one.
Example: erl -sname this_node -rsh other_node@other_host
Own Id: OTP-5210
-
If /etc/hosts specified two hosts with the same IP
address (on separate lines), only the last host would be
registered by inet_db during inet configuration. This has
been corrected now so that both aliases are registered
with the same IP address.
Own Id: OTP-5212 Aux Id: seq7128
-
The documentation for BIFs that take I/O lists have
been clarified. Those are
list_to_binary/1
,
port_command/2
, port_control/3
.
Documentation for all is_*
BIFs (such as
is_atom/1
) has been added.
Removed the documentation for
erlang:float_to_binary/2
which was removed from
the run-time system several releases ago.
Own Id: OTP-5222
1.12 Kernel 2.10
1.12.1 Fixed Bugs and Malfunctions
-
Added documentation of configuration parameter
net_setuptime
.
Own Id: OTP-5117 Aux Id: seq8908
1.12.2 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) unneccessary 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
1.13 Kernel 2.9.6.8
1.13.1 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
1.14 Kernel 2.9.6.7
1.14.1 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
1.15 Kernel 2.9.6.6
1.15.1 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
1.15.2 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
1.16 Kernel 2.9.6.5
1.16.1 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
1.17 Kernel 2.9.6.4
1.17.1 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
1.18 Kernel 2.9.6.2
1.18.1 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]
1.19 Kernel 2.9.6.1
1.19.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
1.20 Kernel 2.9.5
1.20.1 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 {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
1.21 Kernel 2.9.4
1.21.1 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
1.21.2 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
1.22 Kernel 2.9.3
1.22.1 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
1.22.2 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
1.23 Kernel 2.9.2
1.23.1 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
1.24 Kernel 2.9.1
1.24.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
Copyright © 1991-2005
Ericsson AB