1 ERTS Release Notes History
1.1 ERTS 5.4
1.1.1 Fixed Bugs and Malfunctions
-
The BIF
is_record(Record,RecordTag)
has been added to
the run-time system. It checks that Record
is a tuple
whose first element is the atom RecordTag.
No check
is made of the size of the tuple (because the run-time
system doesn't know anything about records).
Note that normally the compiler translates calls to
is_record/2
to code that also verify the size of the
tuple, in addition to verifying the first element. The
BIF version will be used is_record/2
is applied or
if the second argument is not a literal atom (e.g. a
variable or another term type, in which case the BIF will
generate a badarg
exception).
Own Id: OTP-4812
-
Guards of mach specifications are corrected to resemble
the semantics of guards in real code more closely. The
implementation now corresponds to the documentation in
ERTS User's Guide. The following things are corrected:
-
Guard sematics was wrong when it came to logical
operators and exceptions.
{'or',{'is_integer','$1'},{'or','$1','$1'}}
evaluated to true
with '$1'
bound to an
integer.
-
Unary + and - was not implemented.
-
Calling operators as Bif's was not supported by
ets/dbg:fun2ms
(erlang:'or'(A,B)
etc).
-
Old typetests (like
integer(X)
instead of
is_integer(X))
was not supported by
ets/dbg:fun2ms
.
-
Semicolon (;) in guards was not supported by
ets/dbg:fun2ms
.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-4927
-
A potential initialization failure when using threads and
elib_malloc has been removed.
Own Id: OTP-5125
-
Several problems in the 64-bit emulator has been
corrected. For instance, the emulator could crash while
running the Debugger.
Own Id: OTP-5146
-
The match spec parse transform
ms_transform
no
longer accepts the andalso
and orelse
constructs in guards for consistency with the standard
Erlang language. A future release of Erlang/OTP may allow
andalso
and orelse
in guards.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-5149
-
In rare circumstances in a process that has caught
exceptions and uses funs, the process would be killed
when changing code because the code server would think
that the process still held references to the funs.
Own Id: OTP-5153
-
erlang:system_monitor/2
no longer sends any
monitoring messages to the system monitor process from
itself. This behavior is more consistent with other trace
functionality.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-5183
1.1.2 Improvements and New Features
-
The documentation stated that
ets:safe_fixtable/2
could return true
or false,
that was wrong,
it always returns true
.
Own Id: OTP-4830
-
The unary '+' operator has been changed to throw an
badarith
exception if its argument is not numeric (or
fail in a guard). It used its argument unchanged whatever
the type. Given the new meaning, unary '+' can now be
used to test whether a term is numeric.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-4928
-
Process identifiers and port identifiers have been
made more unique. Previously 18 bits were used as id in
the internal representation of process and port
identifiers. Now 28 bits are used.
The maximum limit on the number of concurrently existing
processes due to the representation of pids has been
increased to 268435456 processes. The same is true for
ports. This limit will at least on a 32-bit architecture be
impossible to reach due to memory shortage.
NOTE: By default, the ERTS
, and the
erl_interface
, ei
, and jinterface
libraries are now only guaranteed to be compatible with
other Erlang/OTP components from the same release. It is
possible to set each component in compatibility mode of
an earlier release, though. See the documentation for
respective component on how to set it in compatibility
mode.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-4968 Aux Id: OTP-4196
-
A new internal thread library for the ERTS has been
added.
Own Id: OTP-5048
-
The system's performance could degrade severely if one
process held numerous links or monitors. The issue is
resolved.
Own Id: OTP-5079
-
A new function,
string:to_integer/1
, has been added.
Own Id: OTP-5081 Aux Id: OTP-5136
-
A new function,
string:to_float/1
, has been added.
Own Id: OTP-5136 Aux Id: OTP-5081
-
The exception code for calling a fun with wrong number of
arguments has been changed from simply
badarity
to
{badarity,{Fun,Args}}
.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-5139
-
The long-awaited
try
...catch
construction
is included in this release. However, its use in
production code is not yet supported as there are several
known cases of legal code crashing the compiler. We plan
to release a patch to the compiler (including the
documentation) and at that time try
...catch
will be supported.
Own Id: OTP-5150
1.2 ERTS 5.3.6.6
1.2.1 Fixed Bugs and Malfunctions
-
A bug that caused an emulator crash when using system
monitor of long GC has been fixed.
Own Id: OTP-5123
1.3 ERTS 5.3.6.5
1.3.1 Fixed Bugs and Malfunctions
-
erlang:memory(ets)
and c:memory(ets)
sometimes reported erroneous values. This bug has now been
fixed.
Own Id: OTP-5115 Aux Id: seq9063
-
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.3.2 Improvements and New Features
-
Port index was unnecessarily incremented by port table
size when port table got full. This unnecessary increment
has now been removed.
Own Id: OTP-5119
1.4 ERTS 5.3.6.3
1.4.1 Fixed Bugs and Malfunctions
-
Resolved a build problem on Mac OS 10.3 ("Panther").
Because of a conflict with the zlib sources included in
the Erlang run-time system and the zlib library included
in Panther, linking would fail.
Minor optimization on all Unix systems: caching the
system name returned from the uname() system call.
(Thanks to David N. Welton.)
Own Id: OTP-5069
1.4.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.5 ERTS 5.3.6.2
1.5.1 Fixed Bugs and Malfunctions
-
A few portability enhancements for the R9C-1 Open Source
release: The installer for Windows can now be built with
NSIS 2.0 (as well as with the NSIS 2.0b3). The driver
header files updated to allowed drivers to be built wich
the MinGW compiler on Windows. Minor portability
enhancement in
io_lib:fread
.
Own Id: OTP-4789
-
Conversion of extremely small floating point numbers in
the external format (distribution) could sometimes fail
leading to unexpected closing of distribution channels,
i.e. generating nodedowns for healthy nodes.
Own Id: OTP-5026 Aux Id: seq8631 EABln12478
1.6 ERTS 5.3.6.1
1.6.1 Fixed Bugs and Malfunctions
-
Conversion of extremely small floating point numbers in
the external format (distribution) could sometimes fail
leading to unexpected closing of distribution channels,
i.e. generating nodedowns for healthy nodes.
Own Id: OTP-5026 Aux Id: seq8631 EABln12478
1.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]
1.6.3 Known Bugs and Problems
-
Emulator with elib_malloc enabled could hang when many
I/O threads were in use.
Own Id: OTP-5028 Aux Id: EABln13041, EABln12253
1.7 ERTS 5.3.6
1.7.1 Fixed Bugs and Malfunctions
-
Distributed monitoring in combination with nodes
restarting did not behave correctly in rare
circumstances.
Own Id: OTP-4914
-
A module containing code similar to
receive after 4.1
could not be loaded.
Own Id: OTP-4963 Aux Id: seq8344
-
Problems fixed in
file:open/2
: "/dev/null"
can now be opened. Opening a FIFO will now return an error
instead of hanging the emulator. The documentation has been
updated to point out that file:open/2
returns
the error code eisdir
when the pathname is not a
regular file (the pathname is not necessarily a directory).
Own Id: OTP-4992
1.7.2 Improvements and New Features
-
The Solaris kernel poll feature was changed from a
compile time option to a runtime option. The kernel poll
feature can be enabled, by passing the command-line
argument
+K true
to an emulator (see erl(1)
)
that have kernel poll support, i.e. an emulator for
Solaris 8. By default the kernel poll feature is disabled.
Own Id: OTP-4979 Aux Id: seq8478
-
Before the Erlang emulator writes an
erl_crash.dump
file (for any reason), it will close all open files and
sockets.
Own Id: OTP-4985 Aux Id: EABln10730, EABln11277,
EABln11279
-
The
+c
switch has been added to disable time
correction in the runtime system, this should be used on
systems where one is certain no dramatic wall clock time
changes will occur and the time correction algorithm is too
costly (namely very fast Linux systems where loads of
erlang:now()
are executed).
Own Id: OTP-4986
-
The
process_flag/2,3
BIFs now take a flag
min_heap_size
that allows changing an existing
process's minimum heap size. The actual size will only be
changed when the next garbage collection occurs.
Own Id: OTP-4991 Aux Id: seq8515, OTP-4987
1.8 ERTS 5.3.4
1.8.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.9 ERTS 5.3.3
1.9.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
-
erlang:register/2
does no longer generate an ERROR
REPORT to the error logger when the name already is
registered. If the name is already registered the process
function will crash with {'EXIT',Reason}
and that is
enough. It is up to the caller to decide if it is an
error that the name is already registered.
Own Id: OTP-4892
-
When using
erlang:system_monitor(Pid,{long_gc,Time})
,
and the GC time exceeded 1 second, it sometimes erroneously
showed up as about 4300 seconds. This bug has now been
corrected.
Own Id: OTP-4903 Aux Id: seq8379
1.9.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
1.10 ERTS 5.3.2
1.10.1 Improvements and New Features
-
The elib_malloc alternative dynamic memory allocator has
been improved to use an address order best fit strategy.
The instrumented emulator has been improved to be able to
catch memory allocations done by external libraries. The
emulator flag
+r
(stands for "relocate") makes
ets
updates always result in an object relocation,
which significantly lessens the memory fragmentation in
certain systems. The erlang:system_info/1
bif can
now be called with the argument ets_realloc_moves
and will return true
if the +r
emulator flag
is in effect, false
otherwise.
Own Id: OTP-4838 Aux Id: seq8156
Copyright © 1991-2006
Ericsson AB