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 http://www.python.org/peps/):
- 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 features.
What's new since 2.2c1 ----------------------
(Adapted from the Misc/NEWS file.)
Type/class unification and new-style classes
- pickle.py, 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.
- 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 pyconfig.h).
- dumbdbm.py: fixed a dumb old bug (the file didn't get synched at close or delete time).
- rfc822.py: fixed a bug where the address '<>' was converted to None instead of an empty string (also fixes the email.Utils module).
- xmlrpclib.py: 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).
- tempfile.py: prevent mysterious warnings when TemporaryFileWrapper instances are deleted at process exit time.
- socket.py: 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: http://www.python.org/%7Eguido/)