RELEASED - Python 2.2 final

Guido van Rossum
Fri, 21 Dec 2001 14:54:36 -0500

On December 21, just in time to be placed under the Christmas tree,
we're issuing the final release of Python 2.2.  We're proud of this
release, and expect that you'll like it.  Please check it out here:

Our thanks to everyone who helped test Python 2.2 during the alpha,
beta and release candidate phases, and to everyone who contributed
patches, feedback, and suggestions!  Please continue to report any
bugs you find to the bug tracker:

Highlights of what's new for this release are outlined below.  For a
more complete list, please see:

What's new since 2.1

In brief (for PEPs, see

- type/class unification (PEP 252 and 253)
- iterators (PEP 234) and generators (PEP 255)
- nested scopes standard (PEP 227)
- int overflows return longs (PEP 237)
- new operator // to future-proof int division (PEP 238)

Andrew Kuchling has written a gentle introduction to the most important
changes, titled "What's New in Python 2.2":

A thorough introduction to the type/class unification is at:

Status of the type/class unification

With a set of changes as large as this, it's unavoidable that after
the release we'll find that there are certain things that would work
better if we did them a little differently.  Also, it is clear that
some of the new features (e.g. class and static methods, properties,
super, and slots, to mention a few) could use additional syntactic
sugar to make their use easier and more intuitive.

This will almost certainly require us to make changes in future
releases.  However, with the release of these features as part of the
Python 2.2 release, we are committed to the same standard of
release-to-release compatibility that we have used in the past, as
explained in PEP 5.

When we feel the need to change things, we'll use the PEP system to
propose changes, and we'll provide warnings and backwards compatiblity
for at least a year -- or more in cases where a year is deemed too
short by the user community.

In the meantime, we'll work on completing the documentation for these
features (both in Python and in the C API) as they are found in Python
2.2.  This documentation will clarify the status of individual

What's new since 2.2c1

(Adapted from the Misc/NEWS file.)

Type/class unification and new-style classes

-, cPickle: allow pickling instances of new-style classes
  with a custom metaclass.

Core and builtins

- weakref proxy object: when comparing, unwrap both arguments if both
  are proxies.

Extension modules

- binascii.b2a_base64(): fix a potential buffer overrun when encoding
  very short strings.

- cPickle: the obscure "fast" mode caused stack overflows on the Mac.
  We fixed this by setting the recursion limit much smaller.  If the
  limit is too low (it only affects performance), you can change it by
  defining PY_CPICKLE_FAST_LIMIT when compiling cPickle.c (or in


- fixed a dumb old bug (the file didn't get synched at
  close or delete time).

- fixed a bug where the address '<>' was converted to None
  instead of an empty string (also fixes the email.Utils module).

- version 1.0.0; uses precision for doubles.

- test suite: the pickle and cPickle tests were not executing any code
  when run from the standard regresssion test.


- distutils package: fixed broken Windows installers (bdist_wininst).

- prevent mysterious warnings when TemporaryFileWrapper
  instances are deleted at process exit time.

- prevent mysterious warnings when socket instances are
  deleted at process exit time.

- posixmodule.c: fix a Windows crash with stat() of a filename ending
  in backslash.


- The Carbon toolbox modules have been upgraded to Universal Headers
  3.4, and experimental CoreGraphics and CarbonEvents modules have
  been added.  All only for framework-enabled MacOSX.

--Guido van Rossum (home page: