This document contains a list of all potential incompatibilities between Erlang 5.4/OTP R10B and the previous version Erlang 5.3/OTP R9C, and is an extract from the release notes for the respective applications.
true or garbage
' used to succeed but will now
fail. Also, failure in the evaluation of the operands
will also cause the guard to fail; 'true or element(1,
[])
' used to succeed but will now fail. 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. 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.
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.
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. badarity
to
{badarity,{Fun,Args}}
.
multiple_be
is no longer supported.OtpMbox.receive()
and OtpMbox.receive(long
timeout)
can now throw
OtpErlangDecodeException
if the received message
can not be decoded. null
is now only returned from
OtpMbox.receive(long timeout)
if a timeout occurs.
OtpMbox.receive()
will never return null
.
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. {emptyDescriptor, #'AuditDescriptor{}}
in the termination audit list, was instead entered as
{auditReturnItem, atom()}
in the termination audit list. This has been fixed.OldVsn
to the callback function
Module:code_change
was defined by the vsn
attribute in the old version of Module
.
OldVsn
was {down,Vsn}
, where Vsn
was fetched from
the .app
file instead.
beam_lib:version/1
and the man pages for gen_*
have been updated accordingly.
restart_application
was translated to the
low-level instruction application_remove
and a set
of load_module
instructions.
application_remove
caused the modules
listed for the new, not the old, version of the
application to be unloaded. If the set of modules was
changed, this meant the release handler would try to
purge non-existant modules and/or forget to unload
modules no longer used.
restart_application
is now translated to a correct
set of delete_module
and add_module
instructions instead, and the application_remove
instruction is deprecated.
release_handler:check_install_release/1
returned
{error,Reason}
if sys.config
or
relup
was missing. Since both these files are
optional, the behaviour has been changed to write
warnings to the terminal but return an ok
tuple
instead.
snmpa
snmpm
snmpc
snmp
, still exist.
It contains the application generic functions. The
agent specific stuff still exist (for backward
compatibillity reasons), but has been deprecated and will
eventually be removed.
rd/2
, rf/0,1
,
rl/0,1
, rp/1
, and rr/1,2,3
. Existing
functions in user_default.erl
with any of these
names need to be renamed. See shell(3)
for further
details.
gen_server:cast/2
now crashes for invalid
arguments.
gen_server:abcast/2-3
now crashes for invalid
arguments. The behaviour when casting to the name
global
has been corrected. Previously,
gen_server:abcast(global,[node@host])
tried to
cast to the globally registered name node@host
,
which is more of a bug than less. Now such a call will
cast to the registered name global
at the node
node@host
as (probably) expected.
rpc:call/5
and rpc:block_call/5
having a timeout argument has been added.
rpc:abcast/2-3
has been improved not to get
stuck waiting for connection setup if the remote node is
not connected. In this case the send is spawned off to a
temporary process.
calendar
has
been corrected thanks to Bengt Kleberg.
Data
is set to PortNumber
in
start(Path,Data)
, the default data will be used
for ip-number (127.0.0.1
) and server name
(localhost
).