33% $Id$
44
55\title {What's New in Python 2.2}
6- \release {0.02 }
6+ \release {0.03 }
77\author {A.M. Kuchling}
88\authoraddress {
\email {
[email protected] }}
99\begin {document }
@@ -33,20 +33,24 @@ \section{Introduction}
3333
3434The final release of Python 2.2 is planned for October 2001.
3535
36+
3637% ======================================================================
3738% It looks like this set of changes will likely get into 2.2,
3839% so I need to read and digest the relevant PEPs.
3940% \section{PEP 252: Type and Class Changes}
4041
4142% XXX
4243
44+ % GvR's description at http://www.python.org/2.2/descrintro.html
45+
4346% \begin{seealso}
4447
4548% \seepep{252}{Making Types Look More Like Classes}{Written and implemented
4649% by GvR.}
4750
4851% \end{seealso}
4952
53+
5054% ======================================================================
5155\section {PEP 234: Iterators }
5256
@@ -183,6 +187,7 @@ \section{PEP 234: Iterators}
183187
184188\end {seealso }
185189
190+
186191% ======================================================================
187192\section {PEP 255: Simple Generators }
188193
@@ -329,6 +334,7 @@ \section{PEP 255: Simple Generators}
329334
330335\end {seealso }
331336
337+
332338% ======================================================================
333339\section {Unicode Changes }
334340
@@ -339,9 +345,9 @@ \section{Unicode Changes}
339345
340346XXX explain surrogates? I have to figure out what the changes mean to users.
341347
342- Since their introduction, Unicode strings (XXX and regular strings in
343- 2.1?) have supported an \method {encode()} method to convert the
344- string to a selected encoding such as UTF-8 or Latin-1. A symmetric
348+ Since their introduction, Unicode strings have supported an
349+ \method {encode()} method to convert the string to a selected encoding
350+ such as UTF-8 or Latin-1. A symmetric
345351\method {decode(\optional {\var {encoding}})} method has been added to
346352both 8-bit and Unicode strings in 2.2, which assumes that the string
347353is in the specified encoding and decodes it. This means that
@@ -372,6 +378,7 @@ \section{Unicode Changes}
372378References: http://mail.python.org/pipermail/i18n-sig/2001-June/001107.html
373379and following thread.
374380
381+
375382% ======================================================================
376383\section {PEP 227: Nested Scopes }
377384
@@ -553,9 +560,10 @@ \section{New and Improved Modules}
553560% ======================================================================
554561\section {Other Changes and Fixes }
555562
563+ % XXX update the patch and bug figures as we go
556564As usual there were a bunch of other improvements and bugfixes
557565scattered throughout the source tree. A search through the CVS change
558- logs finds there were XXX patches applied, and XXX bugs fixed; both
566+ logs finds there were 43 patches applied, and 77 bugs fixed; both
559567figures are likely to be underestimates. Some of the more notable
560568changes are:
561569
@@ -585,6 +593,24 @@ \section{Other Changes and Fixes}
585593 been changed to use the new C-level interface. (Contributed by Fred
586594 L. Drake, Jr.)
587595
596+ % XXX is this explanation correct?
597+ \item When presented with a Unicode filename on Windows, Python will
598+ now correctly convert it to a string using the MBCS encoding.
599+ Filenames on Windows are a case where Python's choice of ASCII as
600+ the default encoding turns out to be an annoyance.
601+
602+ This patch also adds \samp {et} as a format sequence to
603+ \cfunction {PyArg_ParseTuple}; \samp {et} takes both a parameter and
604+ an encoding name, and converts it to the given encoding if the
605+ parameter turns out to be a Unicode string, or leaves it alone if
606+ it's an 8-bit string, assuming it to already be in the desired
607+ encoding. (This differs from the \samp {es} format character, which
608+ assumes that 8-bit strings are in Python's default ASCII encoding
609+ and converts them to the specified new encoding.)
610+
611+ (Contributed by Mark Hammond with assistance from Marc-Andr\' e
612+ Lemburg.)
613+
588614 \item The \file {Tools/scripts/ftpmirror.py} script
589615 now parses a \file {.netrc} file, if you have one.
590616 (Contributed by Mike Romberg.)
@@ -601,38 +627,23 @@ \section{Other Changes and Fixes}
601627 \cfunction {PyRange_New()} function, \samp {repeat}, has also been
602628 deprecated.
603629
630+ \item There were a bunch of patches to the dictionary
631+ implementation, mostly to fix potential core dumps if a dictionary
632+ contains objects that sneakily changed their hash value, or mutated
633+ the dictionary they were contained in. For a while python-dev fell
634+ into a gentle rhythm of Michael Hudson finding a case that dump
635+ core, Tim Peters fixing it, Michael finding another case, and round
636+ and round it went.
637+
604638 \item On Windows, Python can now be compiled with Borland C thanks
605- to a number of patches contribued by Stephen Hansen.
606-
607- \item XXX C API: Reorganization of object calling
608-
609- The \cfunction {call_object()} function, originally in \file {ceval.c},
610- begins a new life as the official API \cfunction {PyObject_Call()}. It
611- is also much simplified: all it does is call the \member {tp_call}
612- slot, or raise an exception if that's \NULL .
613-
614- % The subsidiary functions (call_eval_code2(), call_cfunction(),
615- % call_instance(), and call_method()) have all been moved to the file
616- % implementing their particular object type, renamed according to the
617- % local convention, and added to the type's tp_call slot. Note that
618- % call_eval_code2() became function_call(); the tp_slot for class
619- % objects now simply points to PyInstance_New(), which already has the
620- % correct signature.
621-
622- % Because of these moves, there are some more new APIs that expose
623- % helpers in ceval.c that are now needed outside: PyEval_GetFuncName(),
624- % PyEval_GetFuncDesc(), PyEval_EvalCodeEx() (formerly get_func_name(),
625- % get_func_desc(), and eval_code2().
626-
627- \item XXX Add support for Windows using "mbcs" as the default
628- Unicode encoding when dealing with the file system. As discussed on
629- python-dev and in patch 410465.
630-
631- \item XXX Lots of patches to dictionaries; measure performance
632- improvement, if any.
639+ to a number of patches contributed by Stephen Hansen.
633640
634- \end {itemize }
641+ \item On platforms where Python uses the C \cfunction {dlopen()} function
642+ to load extension modules, it's now possible to set the flags used
643+ by \cfunction {dlopen()} using the \function {sys.getdlopenflags()} and
644+ \function {sys.setdlopenflags()} functions. (Contributed by Bram Stolk.)
635645
646+ \end {itemize }
636647
637648
638649% ======================================================================
0 commit comments