20062010 Ericsson AB. All Rights Reserved. The contents of this file are subject to the Erlang Public License, Version 1.1, (the "License"); you may not use this file except in compliance with the License. You should have received a copy of the Erlang Public License along with this software. If not, it can be retrieved online at http://www.erlang.org/. Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Potential Incompatibilities incompatible.xml

This document contains a list of potential incompatibilities between Erlang 5.8/OTP R14A and Erl 5.7.5/OTP R13B04, and is an extract from the release notes for the respective applications.

Tools

Xref has been updated to use the re module instead of the deprecated regexp module.

*** INCOMPATIBILITY with R12B ***

Own Id: OTP-8472

eprof has been reimplemented with support in the Erlang virtual machine and is now both faster (i.e. slows down the code being measured less) and scales much better. In measurements we saw speed-ups compared to the old eprof ranging from 6 times (for sequential code that only uses one scheduler/core) up to 84 times (for parallel code that uses 8 cores).

Note: The API for the eprof has been cleaned up and extended. See the documentation.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8706

Odbc

Now supports SQL_TYPE_TIMESTAMP on the format {{YY, MM, DD}, {HH, MM, SS}}. Thanks to Juhani Ränkimies.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8511

Ssh

The configuration parameter ip_v6_disabled is now available, which makes it possible for the user to alter the IP version SSH shall use.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8535

Removed deprecated modules (ssh_ssh, ssh_sshd and ssh_cm) and functions (ssh_sftp:connect and ssh_sftp:stop).

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8596

Aligned error message with used version (SSH_FX_FAILURE vs SSH_FX_NOT_A_DIRECTORY, the latter introduced in version 6).

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8644

ERTS

Some incompatible changes made to the NIF API. For more information see the warning text in erl_nif(3).

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8555

STDLIB

When defining macros the closing right parenthesis before the dot is now mandatory.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8562

Compiler and STDLIB

Local and imported functions now override the auto-imported BIFs when the names clash. The pre R14 behaviour was that auto-imported BIFs would override local functions. To avoid that old programs change behaviour, the following will generate an error:

Doing a call without explicit module name to a local function having a name clashing with the name of an auto-imported BIF that was present (and auto-imported) before OTP R14A Explicitly importing a function having a name clashing with the name of an autoimported BIF that was present (and autoimported) before OTP R14A Using any form of the old compiler directive nowarn_bif_clash

If the BIF was added or auto-imported in OTP R14A or later, overriding it with an import or a local function will only result in a warning.

To resolve clashes, you can either use the explicit module name erlang to call the BIF, or you can remove the auto-import of that specific BIF by using the new compiler directive -compile({no_auto_import,[F/A]})., which makes all calls to the local or imported function without explicit module name pass without warnings or errors.

The change makes it possible to add auto-imported BIFs without breaking or silently changing old code in the future. However some current code ingeniously utilizing the old behaviour or the nowarn_bif_clash compiler directive, might need changing to be accepted by the compiler.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8579

The recently added BIFs erlang:min/2, erlang:max/2 and erlang:port_command/3 are now auto-imported (as they were originally intended to be). Due to the recent compiler change (OTP-8579), the only impact on old code defining it's own min/2, max/2 or port_command/3 functions will be a warning, the local functions will still be used. The warning can be removed by using -compile({no_auto_import,[min/2,max/2,port_command/3]}). in the source file.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8669

Now, binary_to_term/2 is auto-imported. This will cause a compile warning if and only if a module has got a local function with that name.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8671

Erl_interface

Compact IEEE 754 double encoding in external binary format for ei

Implement the compact IEEE 754 double encoding in external binary format for ei. Encoding for ei now always produces the NEW_FLOAT_EXT format. Decoding and term printing handle both the old ERL_FLOAT_EXT encoding and the new NEW_FLOAT_EXT encoding.

Legacy erl_interface code also handles the new encoding, but still produces the ERL_FLOAT_EXT encoding by default.

Also enable the DFLAG_NEW_FLOATS distribution flag.

ei_get_type() will return ERL_FLOAT_EXT regardless if the external format is encoded with ERL_FLOAT_EXT or NEW_FLOAT_EXT for doubles.

Reduce the number of copies of the code for encoding and decoding doubles throughout ei and erl_interface by instead calling the ei encoding and decoding functions wherever possible.

Restore commented-out float tests in ei_decode_SUITE and ei_encode_SUITE in lib/erl_interface/test. Modify them to make them match the style of other tests in the same suites.

These changes are based on an ei float patch from Serge Aleynikov originally submitted against R12B-2 in July 2008 and reworked by Steve Vinoski May 2010.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8684

Debugger and STDLIB

The predefined builtin type tid() has been removed. Instead, ets:tid() should be used.

*** POTENTIAL INCOMPATIBILITY ***

Own Id: OTP-8687