Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > f806c0f24240b25bde21a53f71766070 > files > 65

erlang-doc-R13B-04.6.fc13.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="./otp_doc.css" type="text/css">
<title>Erlang -- Potential Incompatibilities</title>
</head>
<body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container">
<script id="js" type="text/javascript" language="JavaScript" src="./js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="./js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript">
            <!--            
              function getWinHeight() {
                var myHeight = 0;
                if( typeof( window.innerHeight ) == 'number' ) {
                  //Non-IE
                  myHeight = window.innerHeight;
                } else if( document.documentElement && ( document.documentElement.clientWidth || 
                                                         document.documentElement.clientHeight ) ) {
                  //IE 6+ in 'standards compliant mode'
                  myHeight = document.documentElement.clientHeight;
                } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
                  //IE 4 compatible
                  myHeight = document.body.clientHeight;
                }
                return myHeight;            
              }

              function setscrollpos() {
                var objf=document.getElementById('loadscrollpos');
                 document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2;
              }

              function addEvent(obj, evType, fn){ 
                if (obj.addEventListener){ 
                obj.addEventListener(evType, fn, true); 
                return true; 
              } else if (obj.attachEvent){ 
                var r = obj.attachEvent("on"+evType, fn); 
                return r; 
              } else { 
                return false; 
              } 
             }

             addEvent(window, 'load', setscrollpos);

             //--></script><div id="content">
<div class="innertube">
<h1>1 Potential Incompatibilities</h1>
  
  <p>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.</p>

  <h3><a name="id2256096">1.1 
        compiler</a></h3>
    
    <ul>
        <li>
          <p>
	    The undocumented, unsupported, and deprecated guard BIF
	    <span class="code">is_constant/1</span> has been removed.</p>
          <p>
	    *** INCOMPATIBILITY with R12B ***</p>
          <p>
	    Own Id: OTP-7673</p>
        </li>
        <li>
	    <p>The short-circuit operators <span class="code">andalso</span> and
	    <span class="code">orelse</span> no longer guarantees that their second
	    argument is either <span class="code">true</span> or <span class="code">false</span>. As a
	    consequence, <span class="code">andalso</span>/<span class="code">orelse</span> are now
	    tail-recursive.</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7748</p>
        </li>
        <li>
	    <p>The compiler will refuse to a compile file where the
	    module name in the file differs from the output file
	    name.</p>
	    <p>When compiling using <span class="code">erlc</span>, the current working
	    directory will no be included in the code path (unless
	    explicitly added using "-pa .").</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7793</p>
        </li>
        <li>
	    <p>If a module contains an exported function with the
	    same name as an auto-imported BIF (such as
	    <span class="code">length/1</span>), any calls to the BIF must have an
	    explicit <span class="code">erlang:</span> prefix, or there will be a
	    compilation error (such calls would only generate a
	    warning in previous releases).</p>
	    <p>(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.)</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7873</p>
        </li>
    </ul>
  

  <h3><a name="id2256223">1.2 
        Erts</a></h3>
    
    <ul>
        <li>
	    <p>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.</p>
	    <p>The interactive shell will support input and output of
	    unicode characters when the terminal and operating system
	    supports it.</p>
	    <p>Please see the EEP and the io/io_lib manual pages as
	    well as the stdlib users guide for details.</p>
	    <p><strong>I/O-protocol incompatibilities:</strong></p>
	    <p>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 <strong>users manual</strong>, which is a
	    new part of the manual.</p>
	    <p><strong>io module incompatibilities:</strong></p>
	    <p>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
	    <strong>binary mode</strong>) the returned data is also
	    <strong>always</strong> 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.</p>
	    <p><strong>io_lib module incompatibilities:</strong></p>
	    <p>io_lib:format can, given new format directives (i.e
	    "~ts" and "~tc"), return lists containing integers larger
	    than 255. </p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494
	    OTP-7443 OTP-7181 EEP10 EEP11 </p>
        </li>
        <li>
          <p>
	    The undocumented, unsupported, and deprecated guard BIF
	    <span class="code">is_constant/1</span> has been removed.</p>
          <p>
	    *** INCOMPATIBILITY with R12B ***</p>
          <p>
	    Own Id: OTP-7673</p>
        </li>
        <li>
	    <p>The short-circuit operators <span class="code">andalso</span> and
	    <span class="code">orelse</span> no longer guarantees that their second
	    argument is either <span class="code">true</span> or <span class="code">false</span>. As a
	    consequence, <span class="code">andalso</span>/<span class="code">orelse</span> are now
	    tail-recursive.</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7748</p>
        </li>
        <li>
	    <p>The compiler will refuse to a compile file where the
	    module name in the file differs from the output file
	    name.</p>
	    <p>When compiling using <span class="code">erlc</span>, the current working
	    directory will no be included in the code path (unless
	    explicitly added using "-pa .").</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7793</p>
        </li>
        <li>
	    <p>The deprecated functions <span class="code">erlang:fault/1</span>,
	    <span class="code">erlang:fault/2</span>, and <span class="code">file:rawopen/2</span> have
	    been removed.</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7812</p>
        </li>
        <li>
	    <p>The escape sequences <span class="code">\x</span> and <span class="code">\{</span> have been
	    assigned new interpretations (they used to return the
	    ASCII code for <span class="code">x</span> and <span class="code">{</span> respectively). One
	    or more octal characters inside curly brackets after a
	    leading backslash is from now on an alternative to the
	    existing syntax <span class="code">\NNN</span>, but can also be used for
	    codes greater than 255. In a similar fashion, one or more
	    hexadecimal characters can be put inside curly brackets
	    after a leading <span class="code">\x</span>. Furthermore, the escape
	    sequences <span class="code">\xH</span> and <span class="code">\xHH</span>, where N is a
	    hexadecimal character, can be used for codes less than
	    256.</p>
	    <p>NOTE: These new escape sequences are still considered
	    experimental and may be changed in the R13B release.</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7855</p>
        </li>
    </ul>
  

  <h3><a name="id2254402">1.3 
        Inets</a></h3>
    
    <ul>
     <li>
          <p>
            [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.</p>
          <p>
            *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
            Own Id: OTP-7463</p>
        </li>
    </ul>
  

    <h3><a name="id2254545">1.4 
        Jinterface</a></h3>
    
      <ul>
        <li>
          <p>
	    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.</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7832</p>
        </li>
      </ul>
    

  <h3><a name="id2254582">1.5 
        Kernel</a></h3>
    
    <ul>
        <li>
	    <p>The deprecated functions <span class="code">erlang:fault/1</span>,
	    <span class="code">erlang:fault/2</span>, and <span class="code">file:rawopen/2</span> have
	    been removed.</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7812</p>
        </li>
    </ul>
  

  <h3><a name="id2254621">1.6 
        SSH</a></h3>
    
    <ul>
        <li>
          <p>
            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.</p>
          <p>
            *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
            Own Id: OTP-7807</p>
        </li>
        <li>
          <p>
            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.</p>
          <p>
            *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
            Own Id: OTP-7828</p>
        </li>
    </ul>
  

  <h3><a name="id2254670">1.7 
        STDLIB</a></h3>
    
    <ul>
        <li>
	    <p>The functions <span class="code">lists:seq/1,2</span> return the empty
	    list in a few cases when they used to generate an
	    exception, for example <span class="code">lists:seq(1, 0)</span>. See
	    lists(3) for details. (Thanks to Richard O'Keefe.)</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7230</p>
        </li>
        <li>
	    <p>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.</p>
	    <p>The interactive shell will support input and output of
	    unicode characters when the terminal and operating system
	    supports it.</p>
	    <p>Please see the EEP and the io/io_lib manual pages as
	    well as the stdlib users guide for details.</p>
	    <p><strong>I/O-protocol incompatibilities:</strong></p>
	    <p>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 <strong>users manual</strong>, which is a
	    new part of the manual.</p>
	    <p><strong>io module incompatibilities:</strong></p>
	    <p>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
	    <strong>binary mode</strong>) the returned data is also
	    <strong>always</strong> 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.</p>
	    <p><strong>io_lib module incompatibilities:</strong></p>
	    <p>io_lib:format can, given new format directives (i.e
	    "~ts" and "~tc"), return lists containing integers larger
	    than 255. </p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494
	    OTP-7443 OTP-7181 EEP10 EEP11 </p>
        </li>
        <li>
          <p>
	    <span class="code">filelib:fold_files/5</span> now uses the <span class="code">re</span> module
	    instead of the <span class="code">regexp</span> module for regular
	    expression matching. In practice, this change will not be
	    a problem for most regular expressions used for
	    <span class="code">filelib:fold_files/5</span>. (The major difference in
	    regular expression is that parenthesis and curly brackets
	    is treated as literal characters by <span class="code">regexp</span> but as
	    special characters by <span class="code">re</span>; fortunately, those
	    characters are rarely used in filenames.)</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7819</p>
        </li>
        <li>
          <p>
	    <span class="code">digraph:new(Type)</span> will now cause a <span class="code">badarg</span>
	    exception if <span class="code">Type</span> is not a valid type. Similarly,
	    <span class="code">digraph_utils:subgraph/2,3</span> will now cause a
	    <span class="code">badarg</span> if the arguments are invalid. (Those
	    functions used to return error tuples if something was
	    wrong.)</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7824</p>
        </li>
        <li>
	    <p>The argument passed to <span class="code">random:uniform/1</span> must
	    now be an integer (as stated in the documentation). In
	    previous releases, a floating point number was also
	    allowed.</p>
          <p>
	    *** POTENTIAL INCOMPATIBILITY ***</p>
          <p>
	    Own Id: OTP-7827</p>
        </li>
    </ul>
  
</div>
<div class="footer">
<hr>
<p>Copyright © -2010 </p>
</div>
</div>
</div></body>
</html>