]> granicus.if.org Git - python/commitdiff
Add section on long integer changes
authorAndrew M. Kuchling <amk@amk.ca>
Mon, 10 Sep 2001 03:20:53 +0000 (03:20 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Mon, 10 Sep 2001 03:20:53 +0000 (03:20 +0000)
Add removal of 3-arg pow() for floats
Rewrite introduction a bit

Doc/whatsnew/whatsnew22.tex

index 6645fbefc7121ed60b367fd50c97a29091c20cee..51697a1621cea93e8256643fc4bb55e6ef47ca24 100644 (file)
@@ -17,39 +17,45 @@ for Python 2.2 alpha 1.  Please send any comments, bug reports, or
 questions, no matter how minor, to \email{akuchlin@mems-exchange.org}.
 }
 
-This article explains the new features in Python 2.2.  Python 2.2
-includes some significant changes that go far toward cleaning up the
-language's darkest corners, and some exciting new features.
+This article explains the new features in Python 2.2.
+
+Python 2.2 can be thought of as the "cleanup release".  There are some
+features such as generators and iterators that are completely new, but
+most of the changes, significant and far-reaching though they may be,
+are aimed at cleaning up irregularities and dark corners of the
+language design.
 
 This article doesn't attempt to provide a complete specification for
-the new features, but instead provides a convenient overview of the
-new features.  For full details, you should refer to 2.2 documentation
+the new features, but instead provides a convenient overview.  For
+full details, you should refer to the documentation for Python 2.2,
 such as the
 \citetitle[http://python.sourceforge.net/devel-docs/lib/lib.html]{Python
 Library Reference} and the
 \citetitle[http://python.sourceforge.net/devel-docs/ref/ref.html]{Python
-Reference Manual}, or to the PEP for a particular new feature.
-% These \citetitle marks should get the python.org URLs for the final
+Reference Manual}.   
+% XXX These \citetitle marks should get the python.org URLs for the final
 % release, just as soon as the docs are published there.
+If you want to understand the complete implementation and design
+rationale for a change, refer to the PEP for a particular new feature.
 
 The final release of Python 2.2 is planned for October 2001.
 
 
 %======================================================================
-% It looks like this set of changes will likely get into 2.2,
-% so I need to read and digest the relevant PEPs.
-%\section{PEP 252: Type and Class Changes}
+\section{PEP 252: Type and Class Changes}
+
+XXX
 
-%XXX
+I need to read and digest the relevant PEPs.
 
-GvR's description at http://www.python.org/2.2/descrintro.html
+GvR's description at http://www.python.org/2.2/descrintro.html
 
-%\begin{seealso}
+\begin{seealso}
 
-%\seepep{252}{Making Types Look More Like Classes}{Written and implemented 
-%by GvR.}
+\seepep{252}{Making Types Look More Like Classes}{Written and implemented 
+by Guido van Rossum.}
 
-%\end{seealso}
+\end{seealso}
 
 
 %======================================================================
@@ -341,8 +347,47 @@ and Tim Peters, with other fixes from the Python Labs crew.}
 %======================================================================
 \section{PEP 237: Unifying Long Integers and Integers}
 
-XXX write this section
+In recent versions, the distinction between regular integers, which
+are 32-bit values on most machines, and long integers, which can be of
+arbitrary size, was becoming an annoyance.  For example, on platforms
+that support large files (files larger than \code{2**32} bytes), the
+\method{tell()} method of file objects has to return a long integer.
+However, there were various bits of Python that expected plain
+integers and would raise an error if a long integer was provided
+instead.  For example, in version XXX of Python, only regular integers
+could be used as a slice index, and \code{'abc'[1L:]} would raise a
+\exception{TypeError} exception with the message 'slice index must be
+int'.
+
+Python 2.2 will shift values from short to long integers as required.
+The 'L' suffix is no longer needed to indicate a long integer literal,
+as now the compiler will choose the appropriate type.  (Using the 'L'
+suffix will be discouraged in future 2.x versions of Python,
+triggering a warning in Python 2.4, and probably dropped in Python
+3.0.)  Many operations that used to raise an \exception{OverflowError}
+will now return a long integer as their result.  For example:
+
+\begin{verbatim}
+>>> 1234567890123
+XXX
+>>> 2 ** 32
+XXX put output here
+\end{verbatim}
 
+In most cases, integers and long integers will now be treated
+identically.  You can still distinguish them with the
+\function{type()} built-in function, but that's rarely needed.  The
+\function{int()} function will now return a long integer if the value
+is large enough.  
+
+% XXX is there a warning-enabling command-line option for this?
+
+\begin{seealso}
+
+\seepep{237}{Unifying Long Integers and Integers}{Written by
+Moshe Zadka and Guido van Rossum.  Implemented mostly by Guido van Rossum.}
+
+\end{seealso}
 
 %======================================================================
 \section{PEP 238: Changing the Division Operator}
@@ -858,7 +903,13 @@ to experiment with these modules can uncomment them manually.
   by \cfunction{dlopen()} using the \function{sys.getdlopenflags()} and
   \function{sys.setdlopenflags()} functions.    (Contributed by Bram Stolk.)
 
-  \item XXX 3-argument float pow() is gone
+  \item The \function{pow()} built-in function no longer supports 3
+  arguments when floating-point numbers are supplied.
+  \code{pow(\var{x}, \var{y}, \var{z})} returns \code{(x**y) % z}, but
+  this is never useful for floating point numbers, and the final
+  result varies unpredictably depending on the platform.  A call such
+  as \code{pow(2.0, 8.0, 7.0)} will now raise a \exception{XXX}
+  exception.
   
 \end{itemize}