blob: 98058866cbfd2978148b5900dc8b9dec5738c5c9 [file] [log] [blame]
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00001\documentclass{howto}
2
3% $Id$
4
5\title{What's New in Python 2.2}
Andrew M. Kuchlingd4707e32001-09-28 20:46:46 +00006\release{0.06}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00007\author{A.M. Kuchling}
Andrew M. Kuchling7bf82772001-07-11 18:54:26 +00008\authoraddress{\email{akuchlin@mems-exchange.org}}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00009\begin{document}
10\maketitle\tableofcontents
11
12\section{Introduction}
13
14{\large This document is a draft, and is subject to change until the
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +000015final version of Python 2.2 is released. Currently it's up to date
Andrew M. Kuchlingd4707e32001-09-28 20:46:46 +000016for Python 2.2 alpha 4. Please send any comments, bug reports, or
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +000017questions, no matter how minor, to \email{akuchlin@mems-exchange.org}.
18}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000019
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000020This article explains the new features in Python 2.2.
21
22Python 2.2 can be thought of as the "cleanup release". There are some
23features such as generators and iterators that are completely new, but
24most of the changes, significant and far-reaching though they may be,
25are aimed at cleaning up irregularities and dark corners of the
26language design.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000027
Andrew M. Kuchling1497b622001-09-24 14:51:16 +000028This article doesn't attempt to provide a complete specification of
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000029the new features, but instead provides a convenient overview. For
30full details, you should refer to the documentation for Python 2.2,
Fred Drake0d002542001-07-17 13:55:33 +000031such as the
32\citetitle[http://python.sourceforge.net/devel-docs/lib/lib.html]{Python
33Library Reference} and the
34\citetitle[http://python.sourceforge.net/devel-docs/ref/ref.html]{Python
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000035Reference Manual}.
36% XXX These \citetitle marks should get the python.org URLs for the final
Fred Drake0d002542001-07-17 13:55:33 +000037% release, just as soon as the docs are published there.
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000038If you want to understand the complete implementation and design
39rationale for a change, refer to the PEP for a particular new feature.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000040
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +000041The final release of Python 2.2 is planned for December 2001.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000042
Andrew M. Kuchling1497b622001-09-24 14:51:16 +000043\begin{seealso}
44
45\url{http://www.unixreview.com/documents/s=1356/urm0109h/0109h.htm}
46{``What's So Special About Python 2.2?'' is also about the new 2.2
47features, and was written by Cameron Laird and Kathryn Soraiz.}
48
49\end{seealso}
50
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +000051
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000052%======================================================================
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000053\section{PEP 252: Type and Class Changes}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000054
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +000055XXX I need to read and digest the relevant PEPs.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000056
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000057\begin{seealso}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000058
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000059\seepep{252}{Making Types Look More Like Classes}{Written and implemented
60by Guido van Rossum.}
61
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +000062\seeurl{http://www.python.org/2.2/descrintro.html}{A tutorial
63on the type/class changes in 2.2.}
64
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000065\end{seealso}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000066
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +000067
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000068%======================================================================
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +000069\section{PEP 234: Iterators}
70
71A significant addition to 2.2 is an iteration interface at both the C
72and Python levels. Objects can define how they can be looped over by
73callers.
74
75In Python versions up to 2.1, the usual way to make \code{for item in
76obj} work is to define a \method{__getitem__()} method that looks
77something like this:
78
79\begin{verbatim}
80 def __getitem__(self, index):
81 return <next item>
82\end{verbatim}
83
84\method{__getitem__()} is more properly used to define an indexing
85operation on an object so that you can write \code{obj[5]} to retrieve
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +000086the sixth element. It's a bit misleading when you're using this only
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +000087to support \keyword{for} loops. Consider some file-like object that
88wants to be looped over; the \var{index} parameter is essentially
89meaningless, as the class probably assumes that a series of
90\method{__getitem__()} calls will be made, with \var{index}
91incrementing by one each time. In other words, the presence of the
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +000092\method{__getitem__()} method doesn't mean that using \code{file[5]}
93to randomly access the sixth element will work, though it really should.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +000094
95In Python 2.2, iteration can be implemented separately, and
96\method{__getitem__()} methods can be limited to classes that really
97do support random access. The basic idea of iterators is quite
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +000098simple. A new built-in function, \function{iter(obj)} or
99\code{iter(\var{C}, \var{sentinel})}, is used to get an iterator.
100\function{iter(obj)} returns an iterator for the object \var{obj},
101while \code{iter(\var{C}, \var{sentinel})} returns an iterator that
102will invoke the callable object \var{C} until it returns
103\var{sentinel} to signal that the iterator is done.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000104
105Python classes can define an \method{__iter__()} method, which should
106create and return a new iterator for the object; if the object is its
107own iterator, this method can just return \code{self}. In particular,
108iterators will usually be their own iterators. Extension types
109implemented in C can implement a \code{tp_iter} function in order to
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000110return an iterator, and extension types that want to behave as
111iterators can define a \code{tp_iternext} function.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000112
113So what do iterators do? They have one required method,
114\method{next()}, which takes no arguments and returns the next value.
115When there are no more values to be returned, calling \method{next()}
116should raise the \exception{StopIteration} exception.
117
118\begin{verbatim}
119>>> L = [1,2,3]
120>>> i = iter(L)
121>>> print i
122<iterator object at 0x8116870>
123>>> i.next()
1241
125>>> i.next()
1262
127>>> i.next()
1283
129>>> i.next()
130Traceback (most recent call last):
131 File "<stdin>", line 1, in ?
132StopIteration
133>>>
134\end{verbatim}
135
136In 2.2, Python's \keyword{for} statement no longer expects a sequence;
137it expects something for which \function{iter()} will return something.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000138For backward compatibility and convenience, an iterator is
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000139automatically constructed for sequences that don't implement
140\method{__iter__()} or a \code{tp_iter} slot, so \code{for i in
141[1,2,3]} will still work. Wherever the Python interpreter loops over
142a sequence, it's been changed to use the iterator protocol. This
143means you can do things like this:
144
145\begin{verbatim}
146>>> i = iter(L)
147>>> a,b,c = i
148>>> a,b,c
149(1, 2, 3)
150>>>
151\end{verbatim}
152
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000153Iterator support has been added to some of Python's basic types.
Fred Drake0d002542001-07-17 13:55:33 +0000154Calling \function{iter()} on a dictionary will return an iterator
Andrew M. Kuchling6ea9f0b2001-07-17 14:50:31 +0000155which loops over its keys:
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000156
157\begin{verbatim}
158>>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,
159... 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
160>>> for key in m: print key, m[key]
161...
162Mar 3
163Feb 2
164Aug 8
165Sep 9
166May 5
167Jun 6
168Jul 7
169Jan 1
170Apr 4
171Nov 11
172Dec 12
173Oct 10
174>>>
175\end{verbatim}
176
177That's just the default behaviour. If you want to iterate over keys,
178values, or key/value pairs, you can explicitly call the
179\method{iterkeys()}, \method{itervalues()}, or \method{iteritems()}
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000180methods to get an appropriate iterator. In a minor related change,
181the \keyword{in} operator now works on dictionaries, so
182\code{\var{key} in dict} is now equivalent to
183\code{dict.has_key(\var{key})}.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000184
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000185Files also provide an iterator, which calls the \method{readline()}
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000186method until there are no more lines in the file. This means you can
187now read each line of a file using code like this:
188
189\begin{verbatim}
190for line in file:
191 # do something for each line
192\end{verbatim}
193
194Note that you can only go forward in an iterator; there's no way to
195get the previous element, reset the iterator, or make a copy of it.
Fred Drake0d002542001-07-17 13:55:33 +0000196An iterator object could provide such additional capabilities, but the
197iterator protocol only requires a \method{next()} method.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000198
199\begin{seealso}
200
201\seepep{234}{Iterators}{Written by Ka-Ping Yee and GvR; implemented
202by the Python Labs crew, mostly by GvR and Tim Peters.}
203
204\end{seealso}
205
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000206
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000207%======================================================================
208\section{PEP 255: Simple Generators}
209
210Generators are another new feature, one that interacts with the
211introduction of iterators.
212
213You're doubtless familiar with how function calls work in Python or
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000214C. When you call a function, it gets a private namespace where its local
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000215variables are created. When the function reaches a \keyword{return}
216statement, the local variables are destroyed and the resulting value
217is returned to the caller. A later call to the same function will get
218a fresh new set of local variables. But, what if the local variables
219weren't destroyed on exiting a function? What if you could later
220resume the function where it left off? This is what generators
221provide; they can be thought of as resumable functions.
222
223Here's the simplest example of a generator function:
224
225\begin{verbatim}
226def generate_ints(N):
227 for i in range(N):
228 yield i
229\end{verbatim}
230
231A new keyword, \keyword{yield}, was introduced for generators. Any
232function containing a \keyword{yield} statement is a generator
233function; this is detected by Python's bytecode compiler which
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000234compiles the function specially as a result. Because a new keyword was
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000235introduced, generators must be explicitly enabled in a module by
236including a \code{from __future__ import generators} statement near
237the top of the module's source code. In Python 2.3 this statement
238will become unnecessary.
239
240When you call a generator function, it doesn't return a single value;
241instead it returns a generator object that supports the iterator
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000242protocol. On executing the \keyword{yield} statement, the generator
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000243outputs the value of \code{i}, similar to a \keyword{return}
244statement. The big difference between \keyword{yield} and a
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000245\keyword{return} statement is that on reaching a \keyword{yield} the
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000246generator's state of execution is suspended and local variables are
247preserved. On the next call to the generator's \code{.next()} method,
248the function will resume executing immediately after the
249\keyword{yield} statement. (For complicated reasons, the
250\keyword{yield} statement isn't allowed inside the \keyword{try} block
251of a \code{try...finally} statement; read PEP 255 for a full
252explanation of the interaction between \keyword{yield} and
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000253exceptions.)
254
255Here's a sample usage of the \function{generate_ints} generator:
256
257\begin{verbatim}
258>>> gen = generate_ints(3)
259>>> gen
260<generator object at 0x8117f90>
261>>> gen.next()
2620
263>>> gen.next()
2641
265>>> gen.next()
2662
267>>> gen.next()
268Traceback (most recent call last):
269 File "<stdin>", line 1, in ?
270 File "<stdin>", line 2, in generate_ints
271StopIteration
272>>>
273\end{verbatim}
274
275You could equally write \code{for i in generate_ints(5)}, or
276\code{a,b,c = generate_ints(3)}.
277
278Inside a generator function, the \keyword{return} statement can only
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000279be used without a value, and signals the end of the procession of
280values; afterwards the generator cannot return any further values.
281\keyword{return} with a value, such as \code{return 5}, is a syntax
282error inside a generator function. The end of the generator's results
283can also be indicated by raising \exception{StopIteration} manually,
284or by just letting the flow of execution fall off the bottom of the
285function.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000286
287You could achieve the effect of generators manually by writing your
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000288own class and storing all the local variables of the generator as
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000289instance variables. For example, returning a list of integers could
290be done by setting \code{self.count} to 0, and having the
291\method{next()} method increment \code{self.count} and return it.
Andrew M. Kuchlingc32cc7c2001-07-17 18:25:01 +0000292However, for a moderately complicated generator, writing a
293corresponding class would be much messier.
294\file{Lib/test/test_generators.py} contains a number of more
295interesting examples. The simplest one implements an in-order
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000296traversal of a tree using generators recursively.
297
298\begin{verbatim}
299# A recursive generator that generates Tree leaves in in-order.
300def inorder(t):
301 if t:
302 for x in inorder(t.left):
303 yield x
304 yield t.label
305 for x in inorder(t.right):
306 yield x
307\end{verbatim}
308
309Two other examples in \file{Lib/test/test_generators.py} produce
310solutions for the N-Queens problem (placing $N$ queens on an $NxN$
311chess board so that no queen threatens another) and the Knight's Tour
312(a route that takes a knight to every square of an $NxN$ chessboard
313without visiting any square twice).
314
315The idea of generators comes from other programming languages,
316especially Icon (\url{http://www.cs.arizona.edu/icon/}), where the
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000317idea of generators is central. In Icon, every
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000318expression and function call behaves like a generator. One example
319from ``An Overview of the Icon Programming Language'' at
320\url{http://www.cs.arizona.edu/icon/docs/ipd266.htm} gives an idea of
321what this looks like:
322
323\begin{verbatim}
324sentence := "Store it in the neighboring harbor"
325if (i := find("or", sentence)) > 5 then write(i)
326\end{verbatim}
327
328The \function{find()} function returns the indexes at which the
329substring ``or'' is found: 3, 23, 33. In the \keyword{if} statement,
330\code{i} is first assigned a value of 3, but 3 is less than 5, so the
331comparison fails, and Icon retries it with the second value of 23. 23
332is greater than 5, so the comparison now succeeds, and the code prints
333the value 23 to the screen.
334
335Python doesn't go nearly as far as Icon in adopting generators as a
336central concept. Generators are considered a new part of the core
337Python language, but learning or using them isn't compulsory; if they
338don't solve any problems that you have, feel free to ignore them.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000339One novel feature of Python's interface as compared to
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000340Icon's is that a generator's state is represented as a concrete object
341that can be passed around to other functions or stored in a data
342structure.
343
344\begin{seealso}
345
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000346\seepep{255}{Simple Generators}{Written by Neil Schemenauer, Tim
347Peters, Magnus Lie Hetland. Implemented mostly by Neil Schemenauer
348and Tim Peters, with other fixes from the Python Labs crew.}
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000349
350\end{seealso}
351
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000352
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000353%======================================================================
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000354\section{PEP 237: Unifying Long Integers and Integers}
355
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000356In recent versions, the distinction between regular integers, which
357are 32-bit values on most machines, and long integers, which can be of
358arbitrary size, was becoming an annoyance. For example, on platforms
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000359that support files larger than \code{2**32} bytes, the
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000360\method{tell()} method of file objects has to return a long integer.
361However, there were various bits of Python that expected plain
362integers and would raise an error if a long integer was provided
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +0000363instead. For example, in Python 1.5, only regular integers
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000364could be used as a slice index, and \code{'abc'[1L:]} would raise a
365\exception{TypeError} exception with the message 'slice index must be
366int'.
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000367
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000368Python 2.2 will shift values from short to long integers as required.
369The 'L' suffix is no longer needed to indicate a long integer literal,
370as now the compiler will choose the appropriate type. (Using the 'L'
371suffix will be discouraged in future 2.x versions of Python,
372triggering a warning in Python 2.4, and probably dropped in Python
3733.0.) Many operations that used to raise an \exception{OverflowError}
374will now return a long integer as their result. For example:
375
376\begin{verbatim}
377>>> 1234567890123
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +00003781234567890123L
379>>> 2 ** 64
38018446744073709551616L
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000381\end{verbatim}
382
383In most cases, integers and long integers will now be treated
384identically. You can still distinguish them with the
385\function{type()} built-in function, but that's rarely needed. The
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000386\function{int()} constructor will now return a long integer if the value
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000387is large enough.
388
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000389\begin{seealso}
390
391\seepep{237}{Unifying Long Integers and Integers}{Written by
392Moshe Zadka and Guido van Rossum. Implemented mostly by Guido van Rossum.}
393
394\end{seealso}
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000395
Andrew M. Kuchlingd4707e32001-09-28 20:46:46 +0000396
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000397%======================================================================
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000398\section{PEP 238: Changing the Division Operator}
399
400The most controversial change in Python 2.2 is the start of an effort
401to fix an old design flaw that's been in Python from the beginning.
402Currently Python's division operator, \code{/}, behaves like C's
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000403division operator when presented with two integer arguments: it
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000404returns an integer result that's truncated down when there would be
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000405a fractional part. For example, \code{3/2} is 1, not 1.5, and
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000406\code{(-1)/2} is -1, not -0.5. This means that the results of divison
407can vary unexpectedly depending on the type of the two operands and
408because Python is dynamically typed, it can be difficult to determine
409the possible types of the operands.
410
411(The controversy is over whether this is \emph{really} a design flaw,
412and whether it's worth breaking existing code to fix this. It's
413caused endless discussions on python-dev and in July erupted into an
414storm of acidly sarcastic postings on \newsgroup{comp.lang.python}. I
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000415won't argue for either side here and will stick to describing what's
416implemented in 2.2. Read PEP 238 for a summary of arguments and
417counter-arguments.)
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000418
419Because this change might break code, it's being introduced very
420gradually. Python 2.2 begins the transition, but the switch won't be
421complete until Python 3.0.
422
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000423First, I'll borrow some terminology from PEP 238. ``True division'' is the
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000424division that most non-programmers are familiar with: 3/2 is 1.5, 1/4
425is 0.25, and so forth. ``Floor division'' is what Python's \code{/}
426operator currently does when given integer operands; the result is the
427floor of the value returned by true division. ``Classic division'' is
428the current mixed behaviour of \code{/}; it returns the result of
429floor division when the operands are integers, and returns the result
430of true division when one of the operands is a floating-point number.
431
432Here are the changes 2.2 introduces:
433
434\begin{itemize}
435
436\item A new operator, \code{//}, is the floor division operator.
437(Yes, we know it looks like \Cpp's comment symbol.) \code{//}
438\emph{always} returns the floor divison no matter what the types of
439its operands are, so \code{1 // 2} is 0 and \code{1.0 // 2.0} is also
4400.0.
441
442\code{//} is always available in Python 2.2; you don't need to enable
443it using a \code{__future__} statement.
444
445\item By including a \code{from __future__ import true_division} in a
446module, the \code{/} operator will be changed to return the result of
447true division, so \code{1/2} is 0.5. Without the \code{__future__}
448statement, \code{/} still means classic division. The default meaning
449of \code{/} will not change until Python 3.0.
450
451\item Classes can define methods called \method{__truediv__} and
452\method{__floordiv__} to overload the two division operators. At the
453C level, there are also slots in the \code{PyNumberMethods} structure
454so extension types can define the two operators.
455
456% XXX a warning someday?
457
458\end{itemize}
459
460\begin{seealso}
461
462\seepep{238}{Changing the Division Operator}{Written by Moshe Zadka and
463Guido van Rossum. Implemented by Guido van Rossum..}
464
465\end{seealso}
466
467
468%======================================================================
Andrew M. Kuchlinga43e7032001-06-27 20:32:12 +0000469\section{Unicode Changes}
470
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000471Python's Unicode support has been enhanced a bit in 2.2. Unicode
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +0000472strings are usually stored as UCS-2, as 16-bit unsigned integers.
Andrew M. Kuchlingf5fec3c2001-07-19 01:48:08 +0000473Python 2.2 can also be compiled to use UCS-4, 32-bit unsigned
474integers, as its internal encoding by supplying
475\longprogramopt{enable-unicode=ucs4} to the configure script. When
Andrew M. Kuchlingab010872001-07-19 14:59:53 +0000476built to use UCS-4 (a ``wide Python''), the interpreter can natively
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +0000477handle Unicode characters from U+000000 to U+110000, so the range of
478legal values for the \function{unichr()} function is expanded
479accordingly. Using an interpreter compiled to use UCS-2 (a ``narrow
480Python''), values greater than 65535 will still cause
481\function{unichr()} to raise a \exception{ValueError} exception.
Andrew M. Kuchlingab010872001-07-19 14:59:53 +0000482
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000483% XXX is this still unimplemented?
Andrew M. Kuchlingab010872001-07-19 14:59:53 +0000484All this is the province of the still-unimplemented PEP 261, ``Support
485for `wide' Unicode characters''; consult it for further details, and
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +0000486please offer comments on the PEP and on your experiences with the
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00004872.2 beta releases.
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +0000488% XXX update previous line once 2.2 reaches beta.
Andrew M. Kuchlingab010872001-07-19 14:59:53 +0000489
490Another change is much simpler to explain. Since their introduction,
491Unicode strings have supported an \method{encode()} method to convert
492the string to a selected encoding such as UTF-8 or Latin-1. A
493symmetric \method{decode(\optional{\var{encoding}})} method has been
494added to 8-bit strings (though not to Unicode strings) in 2.2.
495\method{decode()} assumes that the string is in the specified encoding
496and decodes it, returning whatever is returned by the codec.
497
498Using this new feature, codecs have been added for tasks not directly
499related to Unicode. For example, codecs have been added for
500uu-encoding, MIME's base64 encoding, and compression with the
501\module{zlib} module:
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000502
503\begin{verbatim}
504>>> s = """Here is a lengthy piece of redundant, overly verbose,
505... and repetitive text.
506... """
507>>> data = s.encode('zlib')
508>>> data
509'x\x9c\r\xc9\xc1\r\x80 \x10\x04\xc0?Ul...'
510>>> data.decode('zlib')
511'Here is a lengthy piece of redundant, overly verbose,\nand repetitive text.\n'
512>>> print s.encode('uu')
513begin 666 <data>
514M2&5R92!I<R!A(&QE;F=T:'D@<&EE8V4@;V8@<F5D=6YD86YT+"!O=F5R;'D@
515>=F5R8F]S92P*86YD(')E<&5T:71I=F4@=&5X="X*
516
517end
518>>> "sheesh".encode('rot-13')
519'furrfu'
520\end{verbatim}
Andrew M. Kuchlinga43e7032001-06-27 20:32:12 +0000521
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000522To convert a class instance to Unicode, a \method{__unicode__} method
523can be defined, analogous to \method{__str__}.
524% XXX who implemented that?
525
Andrew M. Kuchlingf5fec3c2001-07-19 01:48:08 +0000526\method{encode()} and \method{decode()} were implemented by
527Marc-Andr\'e Lemburg. The changes to support using UCS-4 internally
528were implemented by Fredrik Lundh and Martin von L\"owis.
Andrew M. Kuchlinga43e7032001-06-27 20:32:12 +0000529
Andrew M. Kuchlingf5fec3c2001-07-19 01:48:08 +0000530\begin{seealso}
531
532\seepep{261}{Support for `wide' Unicode characters}{PEP written by
533Paul Prescod. Not yet accepted or fully implemented.}
534
535\end{seealso}
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000536
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000537%======================================================================
538\section{PEP 227: Nested Scopes}
539
540In Python 2.1, statically nested scopes were added as an optional
541feature, to be enabled by a \code{from __future__ import
542nested_scopes} directive. In 2.2 nested scopes no longer need to be
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000543specially enabled, and are now always present. The rest of this section
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000544is a copy of the description of nested scopes from my ``What's New in
545Python 2.1'' document; if you read it when 2.1 came out, you can skip
546the rest of this section.
547
548The largest change introduced in Python 2.1, and made complete in 2.2,
549is to Python's scoping rules. In Python 2.0, at any given time there
550are at most three namespaces used to look up variable names: local,
551module-level, and the built-in namespace. This often surprised people
552because it didn't match their intuitive expectations. For example, a
553nested recursive function definition doesn't work:
554
555\begin{verbatim}
556def f():
557 ...
558 def g(value):
559 ...
560 return g(value-1) + 1
561 ...
562\end{verbatim}
563
564The function \function{g()} will always raise a \exception{NameError}
565exception, because the binding of the name \samp{g} isn't in either
566its local namespace or in the module-level namespace. This isn't much
567of a problem in practice (how often do you recursively define interior
568functions like this?), but this also made using the \keyword{lambda}
569statement clumsier, and this was a problem in practice. In code which
570uses \keyword{lambda} you can often find local variables being copied
571by passing them as the default values of arguments.
572
573\begin{verbatim}
574def find(self, name):
575 "Return list of any entries equal to 'name'"
576 L = filter(lambda x, name=name: x == name,
577 self.list_attribute)
578 return L
579\end{verbatim}
580
581The readability of Python code written in a strongly functional style
582suffers greatly as a result.
583
584The most significant change to Python 2.2 is that static scoping has
585been added to the language to fix this problem. As a first effect,
586the \code{name=name} default argument is now unnecessary in the above
587example. Put simply, when a given variable name is not assigned a
588value within a function (by an assignment, or the \keyword{def},
589\keyword{class}, or \keyword{import} statements), references to the
590variable will be looked up in the local namespace of the enclosing
591scope. A more detailed explanation of the rules, and a dissection of
592the implementation, can be found in the PEP.
593
594This change may cause some compatibility problems for code where the
595same variable name is used both at the module level and as a local
596variable within a function that contains further function definitions.
597This seems rather unlikely though, since such code would have been
598pretty confusing to read in the first place.
599
600One side effect of the change is that the \code{from \var{module}
601import *} and \keyword{exec} statements have been made illegal inside
602a function scope under certain conditions. The Python reference
603manual has said all along that \code{from \var{module} import *} is
604only legal at the top level of a module, but the CPython interpreter
605has never enforced this before. As part of the implementation of
606nested scopes, the compiler which turns Python source into bytecodes
607has to generate different code to access variables in a containing
608scope. \code{from \var{module} import *} and \keyword{exec} make it
609impossible for the compiler to figure this out, because they add names
610to the local namespace that are unknowable at compile time.
611Therefore, if a function contains function definitions or
612\keyword{lambda} expressions with free variables, the compiler will
613flag this by raising a \exception{SyntaxError} exception.
614
615To make the preceding explanation a bit clearer, here's an example:
616
617\begin{verbatim}
618x = 1
619def f():
620 # The next line is a syntax error
621 exec 'x=2'
622 def g():
623 return x
624\end{verbatim}
625
626Line 4 containing the \keyword{exec} statement is a syntax error,
627since \keyword{exec} would define a new local variable named \samp{x}
628whose value should be accessed by \function{g()}.
629
630This shouldn't be much of a limitation, since \keyword{exec} is rarely
631used in most Python code (and when it is used, it's often a sign of a
632poor design anyway).
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000633
634\begin{seealso}
635
636\seepep{227}{Statically Nested Scopes}{Written and implemented by
637Jeremy Hylton.}
638
639\end{seealso}
640
Andrew M. Kuchlinga43e7032001-06-27 20:32:12 +0000641
642%======================================================================
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +0000643\section{New and Improved Modules}
644
645\begin{itemize}
646
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000647 \item The \module{xmlrpclib} module was contributed to the standard
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000648 library by Fredrik Lundh, provding support for writing XML-RPC
649 clients. XML-RPC is a simple remote procedure call protocol built on
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +0000650 top of HTTP and XML. For example, the following snippet retrieves a
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000651 list of RSS channels from the O'Reilly Network, and then
652 lists the recent headlines for one channel:
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000653
654\begin{verbatim}
655import xmlrpclib
656s = xmlrpclib.Server(
657 'http://www.oreillynet.com/meerkat/xml-rpc/server.php')
658channels = s.meerkat.getChannels()
659# channels is a list of dictionaries, like this:
660# [{'id': 4, 'title': 'Freshmeat Daily News'}
661# {'id': 190, 'title': '32Bits Online'},
662# {'id': 4549, 'title': '3DGamers'}, ... ]
663
664# Get the items for one channel
665items = s.meerkat.getItems( {'channel': 4} )
666
667# 'items' is another list of dictionaries, like this:
668# [{'link': 'http://freshmeat.net/releases/52719/',
669# 'description': 'A utility which converts HTML to XSL FO.',
670# 'title': 'html2fo 0.3 (Default)'}, ... ]
671\end{verbatim}
672
Andrew M. Kuchlingd4707e32001-09-28 20:46:46 +0000673The \module{SimpleXMLRPCServer} module makes it easy to create
674straightforward XML-RPC servers. See \url{http://www.xmlrpc.com/} for
675more information about XML-RPC.
676
677 \item The new \module{hmac} module implements implements the HMAC
678 algorithm described by \rfc{2104}.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000679
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000680 \item The Python profiler has been extensively reworked and various
681 errors in its output have been corrected. (Contributed by Fred
682 Fred~L. Drake, Jr. and Tim Peters.)
683
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000684 \item The \module{socket} module can be compiled to support IPv6;
Andrew M. Kuchlingddeb1352001-07-16 14:35:52 +0000685 specify the \longprogramopt{enable-ipv6} option to Python's configure
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000686 script. (Contributed by Jun-ichiro ``itojun'' Hagino.)
687
688 \item Two new format characters were added to the \module{struct}
689 module for 64-bit integers on platforms that support the C
690 \ctype{long long} type. \samp{q} is for a signed 64-bit integer,
691 and \samp{Q} is for an unsigned one. The value is returned in
692 Python's long integer type. (Contributed by Tim Peters.)
693
694 \item In the interpreter's interactive mode, there's a new built-in
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000695 function \function{help()} that uses the \module{pydoc} module
696 introduced in Python 2.1 to provide interactive help.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000697 \code{help(\var{object})} displays any available help text about
698 \var{object}. \code{help()} with no argument puts you in an online
699 help utility, where you can enter the names of functions, classes,
700 or modules to read their help text.
701 (Contributed by Guido van Rossum, using Ka-Ping Yee's \module{pydoc} module.)
702
703 \item Various bugfixes and performance improvements have been made
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000704 to the SRE engine underlying the \module{re} module. For example,
705 \function{re.sub()} will now use \function{string.replace()}
706 automatically when the pattern and its replacement are both just
707 literal strings without regex metacharacters. Another contributed
708 patch speeds up certain Unicode character ranges by a factor of
709 two. (SRE is maintained by Fredrik Lundh. The BIGCHARSET patch was
710 contributed by Martin von L\"owis.)
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000711
Andrew M. Kuchling1efd7ad2001-09-14 16:19:27 +0000712 \item The \module{smtplib} module now supports \rfc{2487}, ``Secure
713 SMTP over TLS'', so it's now possible to encrypt the SMTP traffic
714 between a Python program and the mail transport agent being handed a
715 message. (Contributed by Gerhard H\"aring.)
716
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +0000717 \item The \module{imaplib} module, maintained by Piers Lauder, has
718 support for several new extensions: the NAMESPACE extension defined
719 in \rfc{2342}, SORT, GETACL and SETACL. (Contributed by Anthony
720 Baxter and Michel Pelletier.)
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000721
Andrew M. Kuchlingd4707e32001-09-28 20:46:46 +0000722 \item The \module{rfc822} module's parsing of email addresses is now
723 compliant with \rfc{2822}, an update to \rfc{822}. (The module's
724 name is \emph{not} going to be changed to \samp{rfc2822}.) A new
725 package, \module{email}, has also been added for parsing and
726 generating e-mail messages. (Contributed by Barry Warsaw, and
727 arising out of his work on Mailman.)
Andrew M. Kuchling77707672001-07-31 15:51:16 +0000728
729 \item New constants \constant{ascii_letters},
730 \constant{ascii_lowercase}, and \constant{ascii_uppercase} were
731 added to the \module{string} module. There were several modules in
732 the standard library that used \constant{string.letters} to mean the
733 ranges A-Za-z, but that assumption is incorrect when locales are in
734 use, because \constant{string.letters} varies depending on the set
735 of legal characters defined by the current locale. The buggy
736 modules have all been fixed to use \constant{ascii_letters} instead.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000737 (Reported by an unknown person; fixed by Fred~L. Drake, Jr.)
Andrew M. Kuchling77707672001-07-31 15:51:16 +0000738
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +0000739 \item The \module{mimetypes} module now makes it easier to use
740 alternative MIME-type databases by the addition of a
741 \class{MimeTypes} class, which takes a list of filenames to be
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000742 parsed. (Contributed by Fred~L. Drake, Jr.)
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +0000743
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +0000744 \item A \class{Timer} class was added to the \module{threading}
745 module that allows scheduling an activity to happen at some future
746 time. (Contributed by Itamar Shtull-Trauring.)
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000747
Andrew M. Kuchling77707672001-07-31 15:51:16 +0000748\end{itemize}
749
750
751%======================================================================
752\section{Interpreter Changes and Fixes}
753
754Some of the changes only affect people who deal with the Python
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000755interpreter at the C level because they're writing Python extension modules,
Andrew M. Kuchling77707672001-07-31 15:51:16 +0000756embedding the interpreter, or just hacking on the interpreter itself.
757If you only write Python code, none of the changes described here will
758affect you very much.
759
760\begin{itemize}
761
762 \item Profiling and tracing functions can now be implemented in C,
763 which can operate at much higher speeds than Python-based functions
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000764 and should reduce the overhead of profiling and tracing. This
765 will be of interest to authors of development environments for
Andrew M. Kuchling77707672001-07-31 15:51:16 +0000766 Python. Two new C functions were added to Python's API,
767 \cfunction{PyEval_SetProfile()} and \cfunction{PyEval_SetTrace()}.
768 The existing \function{sys.setprofile()} and
769 \function{sys.settrace()} functions still exist, and have simply
770 been changed to use the new C-level interface. (Contributed by Fred
771 L. Drake, Jr.)
772
773 \item Another low-level API, primarily of interest to implementors
774 of Python debuggers and development tools, was added.
775 \cfunction{PyInterpreterState_Head()} and
776 \cfunction{PyInterpreterState_Next()} let a caller walk through all
777 the existing interpreter objects;
778 \cfunction{PyInterpreterState_ThreadHead()} and
779 \cfunction{PyThreadState_Next()} allow looping over all the thread
780 states for a given interpreter. (Contributed by David Beazley.)
781
782 \item A new \samp{et} format sequence was added to
783 \cfunction{PyArg_ParseTuple}; \samp{et} takes both a parameter and
784 an encoding name, and converts the parameter to the given encoding
785 if the parameter turns out to be a Unicode string, or leaves it
786 alone if it's an 8-bit string, assuming it to already be in the
787 desired encoding. This differs from the \samp{es} format character,
788 which assumes that 8-bit strings are in Python's default ASCII
789 encoding and converts them to the specified new encoding.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000790 (Contributed by M.-A. Lemburg, and used for the MBCS support on
791 Windows described in the following section.)
Andrew M. Kuchling0ab31b82001-08-29 01:16:54 +0000792
793 \item Two new flags \constant{METH_NOARGS} and \constant{METH_O} are
794 available in method definition tables to simplify implementation of
795 methods with no arguments or a single untyped argument. Calling
796 such methods is more efficient than calling a corresponding method
797 that uses \constant{METH_VARARGS}.
798 Also, the old \constant{METH_OLDARGS} style of writing C methods is
799 now officially deprecated.
800
801\item
802 Two new wrapper functions, \cfunction{PyOS_snprintf()} and
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000803 \cfunction{PyOS_vsnprintf()} were added to provide
Andrew M. Kuchling0ab31b82001-08-29 01:16:54 +0000804 cross-platform implementations for the relatively new
805 \cfunction{snprintf()} and \cfunction{vsnprintf()} C lib APIs. In
806 contrast to the standard \cfunction{sprintf()} and
807 \cfunction{vsprintf()} functions, the Python versions check the
808 bounds of the buffer used to protect against buffer overruns.
809 (Contributed by M.-A. Lemburg.)
Andrew M. Kuchling77707672001-07-31 15:51:16 +0000810
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +0000811\end{itemize}
812
813
814%======================================================================
815\section{Other Changes and Fixes}
816
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000817% XXX update the patch and bug figures as we go
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000818As usual there were a bunch of other improvements and bugfixes
819scattered throughout the source tree. A search through the CVS change
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +0000820logs finds there were 119 patches applied, and 179 bugs fixed; both
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000821figures are likely to be underestimates. Some of the more notable
822changes are:
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +0000823
824\begin{itemize}
825
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +0000826 \item The code for the MacOS port for Python, maintained by Jack
827 Jansen, is now kept in the main Python CVS tree, and many changes
828 have been made to support MacOS X.
829
830The most significant change is the ability to build Python as a
831framework, enabled by supplying the \longprogramopt{enable-framework}
832option to the configure script when compiling Python. According to
833Jack Jansen, ``This installs a self-contained Python installation plus
834the OSX framework "glue" into
835\file{/Library/Frameworks/Python.framework} (or another location of
836choice). For now there is little immediate added benefit to this
837(actually, there is the disadvantage that you have to change your PATH
838to be able to find Python), but it is the basis for creating a
839full-blown Python application, porting the MacPython IDE, possibly
840using Python as a standard OSA scripting language and much more.''
841
842Most of the MacPython toolbox modules, which interface to MacOS APIs
843such as windowing, QuickTime, scripting, etc. have been ported to OS
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000844X, but they've been left commented out in \filename{setup.py}. People who want
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +0000845to experiment with these modules can uncomment them manually.
846
847% Jack's original comments:
848%The main change is the possibility to build Python as a
849%framework. This installs a self-contained Python installation plus the
850%OSX framework "glue" into /Library/Frameworks/Python.framework (or
851%another location of choice). For now there is little immedeate added
852%benefit to this (actually, there is the disadvantage that you have to
853%change your PATH to be able to find Python), but it is the basis for
854%creating a fullblown Python application, porting the MacPython IDE,
855%possibly using Python as a standard OSA scripting language and much
856%more. You enable this with "configure --enable-framework".
857
858%The other change is that most MacPython toolbox modules, which
859%interface to all the MacOS APIs such as windowing, quicktime,
860%scripting, etc. have been ported. Again, most of these are not of
861%immedeate use, as they need a full application to be really useful, so
862%they have been commented out in setup.py. People wanting to experiment
863%can uncomment them. Gestalt and Internet Config modules are enabled by
864%default.
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +0000865
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000866 \item Keyword arguments passed to builtin functions that don't take them
867 now cause a \exception{TypeError} exception to be raised, with the
868 message "\var{function} takes no keyword arguments".
869
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000870 \item Weak references, added in Python 2.1 as an extension module,
871 are now part of the core because they're used in the implementation
872 of new-style classes. The \exception{ReferenceError} exception has
873 therefore moved from the \module{weakref} module to become a
874 built-in exception.
875
Andrew M. Kuchling94a7eba2001-08-15 15:55:48 +0000876 \item A new script, \file{Tools/scripts/cleanfuture.py} by Tim
877 Peters, automatically removes obsolete \code{__future__} statements
878 from Python source code.
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000879
880 \item The new license introduced with Python 1.6 wasn't
881 GPL-compatible. This is fixed by some minor textual changes to the
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000882 2.2 license, so it's now legal to embed Python inside a GPLed
883 program again. Note that Python itself is not GPLed, but instead is
884 under a license that's essentially equivalent to the BSD license,
885 same as it always was. The license changes were also applied to the
886 Python 2.0.1 and 2.1.1 releases.
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000887
Andrew M. Kuchlingf4ccf582001-07-31 01:11:36 +0000888 \item When presented with a Unicode filename on Windows, Python will
889 now convert it to an MBCS encoded string, as used by the Microsoft
890 file APIs. As MBCS is explicitly used by the file APIs, Python's
891 choice of ASCII as the default encoding turns out to be an
892 annoyance.
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000893 (Contributed by Mark Hammond with assistance from Marc-Andr\'e
894 Lemburg.)
895
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +0000896 \item Large file support is now enabled on Windows. (Contributed by
897 Tim Peters.)
898
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000899 \item The \file{Tools/scripts/ftpmirror.py} script
900 now parses a \file{.netrc} file, if you have one.
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000901 (Contributed by Mike Romberg.)
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000902
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000903 \item Some features of the object returned by the
904 \function{xrange()} function are now deprecated, and trigger
905 warnings when they're accessed; they'll disappear in Python 2.3.
906 \class{xrange} objects tried to pretend they were full sequence
907 types by supporting slicing, sequence multiplication, and the
908 \keyword{in} operator, but these features were rarely used and
909 therefore buggy. The \method{tolist()} method and the
910 \member{start}, \member{stop}, and \member{step} attributes are also
911 being deprecated. At the C level, the fourth argument to the
912 \cfunction{PyRange_New()} function, \samp{repeat}, has also been
913 deprecated.
914
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000915 \item There were a bunch of patches to the dictionary
916 implementation, mostly to fix potential core dumps if a dictionary
917 contains objects that sneakily changed their hash value, or mutated
918 the dictionary they were contained in. For a while python-dev fell
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000919 into a gentle rhythm of Michael Hudson finding a case that dumped
920 core, Tim Peters fixing the bug, Michael finding another case, and round
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000921 and round it went.
922
Andrew M. Kuchling33a3b632001-09-04 21:25:58 +0000923 \item On Windows, Python can now be compiled with Borland C thanks
924 to a number of patches contributed by Stephen Hansen, though the
925 result isn't fully functional yet. (But this \emph{is} progress...)
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +0000926
Andrew M. Kuchlingf4ccf582001-07-31 01:11:36 +0000927 \item Another Windows enhancement: Wise Solutions generously offered
928 PythonLabs use of their InstallerMaster 8.1 system. Earlier
929 PythonLabs Windows installers used Wise 5.0a, which was beginning to
930 show its age. (Packaged up by Tim Peters.)
931
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +0000932 \item Files ending in \samp{.pyw} can now be imported on Windows.
933 \samp{.pyw} is a Windows-only thing, used to indicate that a script
934 needs to be run using PYTHONW.EXE instead of PYTHON.EXE in order to
935 prevent a DOS console from popping up to display the output. This
936 patch makes it possible to import such scripts, in case they're also
937 usable as modules. (Implemented by David Bolen.)
938
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000939 \item On platforms where Python uses the C \cfunction{dlopen()} function
940 to load extension modules, it's now possible to set the flags used
941 by \cfunction{dlopen()} using the \function{sys.getdlopenflags()} and
942 \function{sys.setdlopenflags()} functions. (Contributed by Bram Stolk.)
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000943
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000944 \item The \function{pow()} built-in function no longer supports 3
945 arguments when floating-point numbers are supplied.
Andrew M. Kuchling1497b622001-09-24 14:51:16 +0000946 \code{pow(\var{x}, \var{y}, \var{z})} returns \code{(x**y) \% z}, but
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000947 this is never useful for floating point numbers, and the final
948 result varies unpredictably depending on the platform. A call such
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +0000949 as \code{pow(2.0, 8.0, 7.0)} will now raise a \exception{TypeError}
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000950 exception.
Andrew M. Kuchling77707672001-07-31 15:51:16 +0000951
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +0000952\end{itemize}
953
954
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +0000955%======================================================================
956\section{Acknowledgements}
957
958The author would like to thank the following people for offering
Andrew M. Kuchling6ea9f0b2001-07-17 14:50:31 +0000959suggestions and corrections to various drafts of this article: Fred
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000960Bremmer, Keith Briggs, Andrew Dalke, Fred~L. Drake, Jr., Carel Fellinger, Mark
Andrew M. Kuchling33a3b632001-09-04 21:25:58 +0000961Hammond, Stephen Hansen, Jack Jansen, Marc-Andr\'e Lemburg, Tim Peters, Neil
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +0000962Schemenauer, Guido van Rossum.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +0000963
964\end{document}