This document contains a list of potential incompatibilities between Erlang 5.7/OTP R12A and Erl 5.6.5/OTP R12B-5, and is an extract from the release notes for the respective applications.
The undocumented, unsupported, and deprecated guard BIF
*** INCOMPATIBILITY with R12B ***
Own Id: OTP-7673
The short-circuit operators
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7748
The compiler will refuse to a compile file where the module name in the file differs from the output file name.
When compiling using
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7793
If a module contains an exported function with the
same name as an auto-imported BIF (such as
(The reason for the change is to avoid breaking code in a future major release, R14 or R15, in which we plan to make calls without a module prefix always call the local function in the same module even if there is an auto-imported BIF with the same name.)
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7873
Support for Unicode is implemented as described in EEP10. Formatting and reading of unicode data both from terminals and files is supported by the io and io_lib modules. Files can be opened in modes with automatic translation to and from different unicode formats. The module 'unicode' contains functions for conversion between external and internal unicode formats and the re module has support for unicode data. There is also language syntax for specifying string and character data beyond the ISO-latin-1 range.
The interactive shell will support input and output of unicode characters when the terminal and operating system supports it.
Please see the EEP and the io/io_lib manual pages as well as the stdlib users guide for details.
I/O-protocol incompatibilities:
The io_protocol between io_Server and client is updated to handle protocol data in unicode formats. The updated protocol is now documented. The specification resides in the stdlib users manual, which is a new part of the manual.
io module incompatibilities:
The io:put_chars, io:get_chars and io:get_line all handle and return unicode data. In the case where binaries can be provided (as to io:put_chars), they shall be encoded in UTF-8. When binaries are returned (as by io:get_line/get_chars when the io_server is set in binary mode) the returned data is also always encoded as UTF-8. The file module however still returns byte-oriented data, why file:read can be used instead of io:get_chars to read binary data in ISO-latin-1.
io_lib module incompatibilities:
io_lib:format can, given new format directives (i.e "~ts" and "~tc"), return lists containing integers larger than 255.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494 OTP-7443 OTP-7181 EEP10 EEP11
The undocumented, unsupported, and deprecated guard BIF
*** INCOMPATIBILITY with R12B ***
Own Id: OTP-7673
The short-circuit operators
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7748
The compiler will refuse to a compile file where the module name in the file differs from the output file name.
When compiling using
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7793
The deprecated functions
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7812
The escape sequences
NOTE: These new escape sequences are still considered experimental and may be changed in the R13B release.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7855
[httpc] - The inets http client will now use persistent connections without pipelining as default and if a pipeline timeout is set it will pipeline the requests on the persistent connections.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7463
A number of fixes and improvements from the ErlIDE group; Vlad Dumitrescu and Jakob Cederlund: JDK 1.5 is now a minimal requirement for building Jinterface. New method: OtpEpmd.lookupNames. OtpErlangList is now iterable. Non-proper lists are now allowed - you have to test if a list is proper or not. Non-proper lists can also be created. New methods: isProper, getHead, getTail and getNthTail. The get tail methods creates a sublist object that re-uses the original list. OtpErlangPid is now Comparable. Empty atoms can now be constructed, a missing feature pointed out by Sebastien Boisgerault on erlang-questions.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7832
The deprecated functions
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7812
Ssh timeouts will now behave as expected i.e. defaults to infinity. Only the user of the ssh application can know of a reasonable timeout value for their application.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7807
Added the message {ssh_channel_up, ChannelId, ConnectionManager} that shall be handled by the channel callback handle_msg/2. This makes the function handle_msg/2 a mandatory function for ssh channels implementations which it was not in ssh-1.1.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7828
The functions
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7230
Support for Unicode is implemented as described in EEP10. Formatting and reading of unicode data both from terminals and files is supported by the io and io_lib modules. Files can be opened in modes with automatic translation to and from different unicode formats. The module 'unicode' contains functions for conversion between external and internal unicode formats and the re module has support for unicode data. There is also language syntax for specifying string and character data beyond the ISO-latin-1 range.
The interactive shell will support input and output of unicode characters when the terminal and operating system supports it.
Please see the EEP and the io/io_lib manual pages as well as the stdlib users guide for details.
I/O-protocol incompatibilities:
The io_protocol between io_Server and client is updated to handle protocol data in unicode formats. The updated protocol is now documented. The specification resides in the stdlib users manual, which is a new part of the manual.
io module incompatibilities:
The io:put_chars, io:get_chars and io:get_line all handle and return unicode data. In the case where binaries can be provided (as to io:put_chars), they shall be encoded in UTF-8. When binaries are returned (as by io:get_line/get_chars when the io_server is set in binary mode) the returned data is also always encoded as UTF-8. The file module however still returns byte-oriented data, why file:read can be used instead of io:get_chars to read binary data in ISO-latin-1.
io_lib module incompatibilities:
io_lib:format can, given new format directives (i.e "~ts" and "~tc"), return lists containing integers larger than 255.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494 OTP-7443 OTP-7181 EEP10 EEP11
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7819
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7824
The argument passed to
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-7827