Potential Incompatibilities
Erl_interface
-
The ErlMessage struct used by erl_receive_msg() has been changed
as part of a larger change to make C nodes understand more of the
Erlang distribution protocol.
Own Id: OTP-2511
-
Users must now include an extra header file and link with an extra
library to use some of the erl_interface features. In general, this
means that for anything new in R4, or to use the communication
facilities.
Own Id: OTP-2512
-
The functions erl_mk_pid(), erl_mk_port() and erl_mk_ref()
previously allowed pids, ports and refs to be created with
arbitrary numbers in some of the fields. Now the values
provided by the caller are masked, so that only valid
numbers can be used.
Own Id: OTP-2513
Erts
-
For improving the error reporting when detecting an error serious
enough to warrant stopping the Erlang node, a new BIF erlang:halt/1
has been introduced.
Addendum to the documentation for halt/0: halt/0 returns the
status code 0 to the environment.
(The BIF erlang:halt/1 previously existed in an undocumented form, with
slightly different behaviour.)
Own Id: OTP-2414
Aux Id: OTP-2359
-
Errors when sending incorrect data to a port was
reported using the old method if the owner did not
trap exit. This has been corrected so posix error
codes are always sent.
Own Id: OTP-2437
Interpreter
-
The INTERPRETER application is no longer supported.
The latest version can be used by starting Erlang with
the options -pa /usr/local/otp/misc/interpreter/ebin
where you replace /usr/local/otp in the above with your
OTP installation directory.
Own Id: OTP-2521
Stdlib
-
keysort/2 is now stable (i.e., it preserves the order
of elements which have the same key).
Bad arguments now cause an exit, instead of just silently
returning the input list.
Own Id: OTP-2300
-
Many functions in stdlib do not enforce the types which the
functions are documented to accept, thus resulting in
undefined behaviour when given arguments of invalid type.
Stricter error checking has been added to some functions in
stdlib, namely lists:sublist/[2,3] and lists:keysort/2,
resulting in an exit if an invalid argument is given.
Own Id: OTP-2441
Aux Id: OTP-2300
Mnemosyne
Mnemosyne
has been separated from the Mnesia
application and this has some minor implications:
- The compiler directive:
-include_lib("mnesia/include/mnemosyne.hrl").
that was mandatory in all Erlang modules that contains embedded
Mnemosyne
queries has been replaced with:
-include_lib("mnemosyne/include/mnemosyne.hrl").
During an interim period, both compiler directives will be
supported. But in a future release the backward
compatibility directive will be removed from Mnesia.
- The Mnemosyne application must be started before any
query evaluation may be performed. Earlier, when Mnemosyne
was a part of the Mnesia application, Mnemosyne was
automatically started as an embedded part of Mnesia, this
is not the case anymore. Now Mnemosyne must explicitly be
started with
application:start(mnemosyne)
, when
Mnesia is started.
However, a temporary configuration parameter
embedded_mnemosyne
has been added to Mnesia in
order to still make it possible to obtain the automatic
start of Mnemosyne. By default embedded_mnemosyne
is set to false
, but if it is set to true
Mnesia will start Mnemosyne as a supervised part of the
Mnesia application as it did in previous releases.
Mnesia
Mnesia 3.0 is primary developed for OTP R4, but is still
backward compatible with the OTP R3 platform.
The internal database format on disc has been made more
future safe. It has also been changed in order to cope with
the new features that has been introduced. This implies a
special upgrade procedure:
- First of all, a full backup must be performed with
the old Mnesia system.
- Then the backup must be installed as fallback,
preferably by the new version of Mnesia.
- At last the new version of Mnesia may be started.
Orber
SNMP
- The table
intTrapDestTable
in OTP-SNMPEA-MIB
is not used anymore.
- There are three new configuration files;
target_addr.conf
, target_params.conf
and
notify.conf
. The old file trap_dest.conf
is not
used. However, if a trap_dest.conf
file exists, the
agent automatically converts that file to the new files.
- The function
snmp:send_trap
no longer takes a
CommunityString
as a parameter. This parameter is now
optional, and refers to the snmpNotifyName
in
snmpNotifyTable
. Old code that uses the old function
does not have to be changed.
- There are two new messages a network interface process must
handle. These are messages to handle Inform-Requests.