]> git.pld-linux.org Git - packages/python.git/commitdiff
- killed .orig, 450kB less (sic!)
authorJakub Bogusz <qboosh@pld-linux.org>
Sun, 14 Mar 2004 19:20:48 +0000 (19:20 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    python-pythonpath.patch -> 1.4

python-pythonpath.patch

index 1814a25ecdb9b8ba45c22ec57d4e9cce61a9aa6d..163ff08c7011e65572df9d7fe8f099b46b17b75c 100644 (file)
@@ -58,11455 +58,6 @@ diff -burN Python-2.3.3.orig/Misc/HISTORY Python-2.3.3/Misc/HISTORY
  demo/scripts/fixps.py will update old scripts in place (you can easily
  modify it to do other similar changes).
  
-diff -burN Python-2.3.3.orig/Misc/HISTORY.orig Python-2.3.3/Misc/HISTORY.orig
---- Python-2.3.3.orig/Misc/HISTORY.orig        1970-01-01 01:00:00.000000000 +0100
-+++ Python-2.3.3/Misc/HISTORY.orig     2003-10-20 16:34:46.000000000 +0200
-@@ -0,0 +1,11445 @@
-+Python History
-+--------------
-+
-+This file contains the release messages for previous Python releases.
-+As you read on you go back to the dark ages of Python's history.
-+
-+
-+======================================================================
-+
-+What's New in Python 2.2 final?
-+===============================
-+
-+*Release date: 21-Dec-2001*
-+
-+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.
-+
-+Extension modules
-+-----------------
-+
-+- binascii.b2a_base64(): fix a potential buffer overrun when encoding
-+  very short strings.
-+
-+- cPickle: the obscure "fast" mode was suspected of causing stack
-+  overflows on the Mac.  Hopefully 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).
-+
-+Library
-+-------
-+
-+- 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 regression test.
-+
-+Tools/Demos
-+-----------
-+
-+Build
-+-----
-+
-+C API
-+-----
-+
-+New platforms
-+-------------
-+
-+Tests
-+-----
-+
-+Windows
-+-------
-+
-+- 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.
-+
-+Mac
-+----
-+
-+- 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.
-+
-+
-+What's New in Python 2.2c1?
-+===========================
-+
-+*Release date: 14-Dec-2001*
-+
-+Type/class unification and new-style classes
-+--------------------------------------------
-+
-+- Guido's tutorial introduction to the new type/class features has
-+  been extensively updated.  See
-+
-+      http://www.python.org/2.2/descrintro.html
-+
-+  That remains the primary documentation in this area.
-+
-+- Fixed a leak: instance variables declared with __slots__ were never
-+  deleted!
-+
-+- The "delete attribute" method of descriptor objects is called
-+  __delete__, not __del__.  In previous releases, it was mistakenly
-+  called __del__, which created an unfortunate overloading condition
-+  with finalizers.  (The "get attribute" and "set attribute" methods
-+  are still called __get__ and __set__, respectively.)
-+
-+- Some subtle issues with the super built-in were fixed:
-+
-+  (a) When super itself is subclassed, its __get__ method would still
-+      return an instance of the base class (i.e., of super).
-+
-+  (b) super(C, C()).__class__ would return C rather than super.  This
-+      is confusing.  To fix this, I decided to change the semantics of
-+      super so that it only applies to code attributes, not to data
-+      attributes.  After all, overriding data attributes is not
-+      supported anyway.
-+
-+  (c) The __get__ method didn't check whether the argument was an
-+      instance of the type used in creation of the super instance.
-+
-+- Previously, hash() of an instance of a subclass of a mutable type
-+  (list or dictionary) would return some value, rather than raising
-+  TypeError.  This has been fixed.  Also, directly calling
-+  dict.__hash__ and list.__hash__ now raises the same TypeError
-+  (previously, these were the same as object.__hash__).
-+
-+- New-style objects now support deleting their __dict__.  This is for
-+  all intents and purposes equivalent to assigning a brand new empty
-+  dictionary, but saves space if the object is not used further.
-+
-+Core and builtins
-+-----------------
-+
-+- -Qnew now works as documented in PEP 238:  when -Qnew is passed on
-+  the command line, all occurrences of "/" use true division instead
-+  of classic division.  See the PEP for details.  Note that "all"
-+  means all instances in library and 3rd-party modules, as well as in
-+  your own code.  As the PEP says, -Qnew is intended for use only in
-+  educational environments with control over the libraries in use.
-+  Note that test_coercion.py in the standard Python test suite fails
-+  under -Qnew; this is expected, and won't be repaired until true
-+  division becomes the default (in the meantime, test_coercion is
-+  testing the current rules).
-+
-+- complex() now only allows the first argument to be a string
-+  argument, and raises TypeError if either the second arg is a string
-+  or if the second arg is specified when the first is a string.
-+
-+Extension modules
-+-----------------
-+
-+- gc.get_referents was renamed to gc.get_referrers.
-+
-+Library
-+-------
-+
-+- Functions in the os.spawn() family now release the global interpreter
-+  lock around calling the platform spawn.  They should always have done
-+  this, but did not before 2.2c1.  Multithreaded programs calling
-+  an os.spawn function with P_WAIT will no longer block all Python threads
-+  until the spawned program completes.  It's possible that some programs
-+  relies on blocking, although more likely by accident than by design.
-+
-+- webbrowser defaults to netscape.exe on OS/2 now.
-+
-+- Tix.ResizeHandle exposes detach_widget, hide, and show.
-+
-+- The charset alias windows_1252 has been added.
-+
-+- types.StringTypes is a tuple containing the defined string types;
-+  usually this will be (str, unicode), but if Python was compiled
-+  without Unicode support it will be just (str,).
-+
-+- The pulldom and minidom modules were synchronized to PyXML.
-+
-+Tools/Demos
-+-----------
-+
-+- A new script called Tools/scripts/google.py was added, which fires
-+  off a search on Google.
-+
-+Build
-+-----
-+
-+- Note that release builds of Python should arrange to define the
-+  preprocessor symbol NDEBUG on the command line (or equivalent).
-+  In the 2.2 pre-release series we tried to define this by magic in
-+  Python.h instead, but it proved to cause problems for extension
-+  authors.  The Unix, Windows and Mac builds now all define NDEBUG in
-+  release builds via cmdline (or equivalent) instead.  Ports to
-+  other platforms should do likewise.
-+
-+- It is no longer necessary to use --with-suffix when building on a
-+  case-insensitive file system (such as Mac OS X HFS+). In the build
-+  directory an extension is used, but not in the installed python.
-+
-+C API
-+-----
-+
-+- New function PyDict_MergeFromSeq2() exposes the builtin dict
-+  constructor's logic for updating a dictionary from an iterable object
-+  producing key-value pairs.
-+
-+- PyArg_ParseTupleAndKeywords() requires that the number of entries in
-+  the keyword list equal the number of argument specifiers.  This
-+  wasn't checked correctly, and PyArg_ParseTupleAndKeywords could even
-+  dump core in some bad cases.  This has been repaired.  As a result,
-+  PyArg_ParseTupleAndKeywords may raise RuntimeError in bad cases that
-+  previously went unchallenged.
-+
-+New platforms
-+-------------
-+
-+Tests
-+-----
-+
-+Windows
-+-------
-+
-+Mac
-+----
-+
-+- In unix-Python on Mac OS X (and darwin) sys.platform is now "darwin",
-+  without any trailing digits.
-+
-+- Changed logic for finding python home in Mac OS X framework Pythons.
-+  Now sys.executable points to the executable again, in stead of to
-+  the shared library. The latter is used only for locating the python
-+  home.
-+
-+
-+What's New in Python 2.2b2?
-+===========================
-+
-+*Release date: 16-Nov-2001*
-+
-+Type/class unification and new-style classes
-+--------------------------------------------
-+
-+- Multiple inheritance mixing new-style and classic classes in the
-+  list of base classes is now allowed, so this works now:
-+
-+      class Classic: pass
-+      class Mixed(Classic, object): pass
-+
-+  The MRO (method resolution order) for each base class is respected
-+  according to its kind, but the MRO for the derived class is computed
-+  using new-style MRO rules if any base class is a new-style class.
-+  This needs to be documented.
-+
-+- The new builtin dictionary() constructor, and dictionary type, have
-+  been renamed to dict.  This reflects a decade of common usage.
-+
-+- dict() now accepts an iterable object producing 2-sequences.  For
-+  example, dict(d.items()) == d for any dictionary d.  The argument,
-+  and the elements of the argument, can be any iterable objects.
-+
-+- New-style classes can now have a __del__ method, which is called
-+  when the instance is deleted (just like for classic classes).
-+
-+- Assignment to object.__dict__ is now possible, for objects that are
-+  instances of new-style classes that have a __dict__ (unless the base
-+  class forbids it).
-+
-+- Methods of built-in types now properly check for keyword arguments
-+  (formerly these were silently ignored).  The only built-in methods
-+  that take keyword arguments are __call__, __init__ and __new__.
-+
-+- The socket function has been converted to a type; see below.
-+
-+Core and builtins
-+-----------------
-+
-+- Assignment to __debug__ raises SyntaxError at compile-time.  This
-+  was promised when 2.1c1 was released as "What's New in Python 2.1c1"
-+  (see below) says.
-+
-+- Clarified the error messages for unsupported operands to an operator
-+  (like 1 + '').
-+
-+Extension modules
-+-----------------
-+
-+- mmap has a new keyword argument, "access", allowing a uniform way for
-+  both Windows and Unix users to create read-only, write-through and
-+  copy-on-write memory mappings.  This was previously possible only on
-+  Unix.  A new keyword argument was required to support this in a
-+  uniform way because the mmap() signatures had diverged across
-+  platforms.  Thanks to Jay T Miller for repairing this!
-+
-+- By default, the gc.garbage list now contains only those instances in
-+  unreachable cycles that have __del__ methods; in 2.1 it contained all
-+  instances in unreachable cycles.  "Instances" here has been generalized
-+  to include instances of both new-style and old-style classes.
-+
-+- The socket module defines a new method for socket objects,
-+  sendall().  This is like send() but may make multiple calls to
-+  send() until all data has been sent.  Also, the socket function has
-+  been converted to a subclassable type, like list and tuple (etc.)
-+  before it; socket and SocketType are now the same thing.
-+
-+- Various bugfixes to the curses module.  There is now a test suite
-+  for the curses module (you have to run it manually).
-+
-+- binascii.b2a_base64 no longer places an arbitrary restriction of 57
-+  bytes on its input.
-+
-+Library
-+-------
-+
-+- tkFileDialog exposes a Directory class and askdirectory
-+  convenience function.
-+
-+- Symbolic group names in regular expressions must be unique.  For
-+  example, the regexp r'(?P<abc>)(?P<abc>)' is not allowed, because a
-+  single name can't mean both "group 1" and "group 2" simultaneously.
-+  Python 2.2 detects this error at regexp compilation time;
-+  previously, the error went undetected, and results were
-+  unpredictable.  Also in sre, the pattern.split(), pattern.sub(), and
-+  pattern.subn() methods have been rewritten in C.  Also, an
-+  experimental function/method finditer() has been added, which works
-+  like findall() but returns an iterator.
-+
-+- Tix exposes more commands through the classes DirSelectBox,
-+  DirSelectDialog, ListNoteBook, Meter, CheckList, and the
-+  methods tix_addbitmapdir, tix_cget, tix_configure, tix_filedialog,
-+  tix_getbitmap, tix_getimage, tix_option_get, and tix_resetoptions.
-+
-+- Traceback objects are now scanned by cyclic garbage collection, so
-+  cycles created by casual use of sys.exc_info() no longer cause
-+  permanent memory leaks (provided garbage collection is enabled).
-+
-+- os.extsep -- a new variable needed by the RISCOS support.  It is the
-+  separator used by extensions, and is '.' on all platforms except
-+  RISCOS, where it is '/'.  There is no need to use this variable
-+  unless you have a masochistic desire to port your code to RISCOS.
-+
-+- mimetypes.py has optional support for non-standard, but commonly
-+  found types.  guess_type() and guess_extension() now accept an
-+  optional 'strict' flag, defaulting to true, which controls whether
-+  recognize non-standard types or not.  A few non-standard types we
-+  know about have been added.  Also, when run as a script, there are
-+  new -l and -e options.
-+
-+- statcache is now deprecated.
-+
-+- email.Utils.formatdate() now produces the preferred RFC 2822 style
-+  dates with numeric timezones (it used to produce obsolete dates
-+  hard coded to "GMT" timezone).  An optional 'localtime' flag is
-+  added to produce dates in the local timezone, with daylight savings
-+  time properly taken into account.
-+
-+- In pickle and cPickle, instead of masking errors in load() by
-+  transforming them into SystemError, we let the original exception
-+  propagate out.  Also, implement support for __safe_for_unpickling__
-+  in pickle, as it already was supported in cPickle.
-+
-+Tools/Demos
-+-----------
-+
-+Build
-+-----
-+
-+- The dbm module is built using libdb1 if available.  The bsddb module
-+  is built with libdb3 if available.
-+
-+- Misc/Makefile.pre.in has been removed by BDFL pronouncement.
-+
-+C API
-+-----
-+
-+- New function PySequence_Fast_GET_SIZE() returns the size of a non-
-+  NULL result from PySequence_Fast(), more quickly than calling
-+  PySequence_Size().
-+
-+- New argument unpacking function PyArg_UnpackTuple() added.
-+
-+- New functions PyObject_CallFunctionObjArgs() and
-+  PyObject_CallMethodObjArgs() have been added to make it more
-+  convenient and efficient to call functions and methods from C.
-+
-+- PyArg_ParseTupleAndKeywords() no longer masks errors, so it's
-+  possible that this will propagate errors it didn't before.
-+
-+- New function PyObject_CheckReadBuffer(), which returns true if its
-+  argument supports the single-segment readable buffer interface.
-+
-+New platforms
-+-------------
-+
-+- We've finally confirmed that this release builds on HP-UX 11.00,
-+  *with* threads, and passes the test suite.
-+
-+- Thanks to a series of patches from Michael Muller, Python may build
-+  again under OS/2 Visual Age C++.
-+
-+- Updated RISCOS port by Dietmar Schwertberger.
-+
-+Tests
-+-----
-+
-+- Added a test script for the curses module.  It isn't run automatically;
-+  regrtest.py must be run with '-u curses' to enable it.
-+
-+Windows
-+-------
-+
-+Mac
-+----
-+
-+- PythonScript has been moved to unsupported and is slated to be
-+  removed completely in the next release.
-+
-+- It should now be possible to build applets that work on both OS9 and
-+  OSX.
-+
-+- The core is now linked with CoreServices not Carbon; as a side
-+  result, default 8bit encoding on OSX is now ASCII.
-+
-+- Python should now build on OSX 10.1.1
-+
-+
-+What's New in Python 2.2b1?
-+===========================
-+
-+*Release date: 19-Oct-2001*
-+
-+Type/class unification and new-style classes
-+--------------------------------------------
-+
-+- New-style classes are now always dynamic (except for built-in and
-+  extension types).  There is no longer a performance penalty, and I
-+  no longer see another reason to keep this baggage around.  One relic
-+  remains: the __dict__ of a new-style class is a read-only proxy; you
-+  must set the class's attribute to modify it.  As a consequence, the
-+  __defined__ attribute of new-style types no longer exists, for lack
-+  of need: there is once again only one __dict__ (although in the
-+  future a __cache__ may be resurrected with a similar function, if I
-+  can prove that it actually speeds things up).
-+
-+- C.__doc__ now works as expected for new-style classes (in 2.2a4 it
-+  always returned None, even when there was a class docstring).
-+
-+- doctest now finds and runs docstrings attached to new-style classes,
-+  class methods, static methods, and properties.
-+
-+Core and builtins
-+-----------------
-+
-+- A very subtle syntactical pitfall in list comprehensions was fixed.
-+  For example: [a+b for a in 'abc', for b in 'def'].  The comma in
-+  this example is a mistake.  Previously, this would silently let 'a'
-+  iterate over the singleton tuple ('abc',), yielding ['abcd', 'abce',
-+  'abcf'] rather than the intended ['ad', 'ae', 'af', 'bd', 'be',
-+  'bf', 'cd', 'ce', 'cf'].  Now, this is flagged as a syntax error.
-+  Note that [a for a in <singleton>] is a convoluted way to say
-+  [<singleton>] anyway, so it's not like any expressiveness is lost.
-+
-+- getattr(obj, name, default) now only catches AttributeError, as
-+  documented, rather than returning the default value for all
-+  exceptions (which could mask bugs in a __getattr__ hook, for
-+  example).
-+
-+- Weak reference objects are now part of the core and offer a C API.
-+  A bug which could allow a core dump when binary operations involved
-+  proxy reference has been fixed.  weakref.ReferenceError is now a
-+  built-in exception.
-+
-+- unicode(obj) now behaves more like str(obj), accepting arbitrary
-+  objects, and calling a __unicode__ method if it exists.
-+  unicode(obj, encoding) and unicode(obj, encoding, errors) still
-+  require an 8-bit string or character buffer argument.
-+
-+- isinstance() now allows any object as the first argument and a
-+  class, a type or something with a __bases__ tuple attribute for the
-+  second argument.  The second argument may also be a tuple of a
-+  class, type, or something with __bases__, in which case isinstance()
-+  will return true if the first argument is an instance of any of the
-+  things contained in the second argument tuple.  E.g.
-+
-+  isinstance(x, (A, B))
-+
-+  returns true if x is an instance of A or B.
-+
-+Extension modules
-+-----------------
-+
-+- thread.start_new_thread() now returns the thread ID (previously None).
-+
-+- binascii has now two quopri support functions, a2b_qp and b2a_qp.
-+
-+- readline now supports setting the startup_hook and the
-+  pre_event_hook, and adds the add_history() function.
-+
-+- os and posix supports chroot(), setgroups() and unsetenv() where
-+  available.  The stat(), fstat(), statvfs() and fstatvfs() functions
-+  now return "pseudo-sequences" -- the various fields can now be
-+  accessed as attributes (e.g. os.stat("/").st_mtime) but for
-+  backwards compatibility they also behave as a fixed-length sequence.
-+  Some platform-specific fields (e.g. st_rdev) are only accessible as
-+  attributes.
-+
-+- time: localtime(), gmtime() and strptime() now return a
-+  pseudo-sequence similar to the os.stat() return value, with
-+  attributes like tm_year etc.
-+
-+- Decompression objects in the zlib module now accept an optional
-+  second parameter to decompress() that specifies the maximum amount
-+  of memory to use for the uncompressed data.
-+
-+- optional SSL support in the socket module now exports OpenSSL
-+  functions RAND_add(), RAND_egd(), and RAND_status().  These calls
-+  are useful on platforms like Solaris where OpenSSL does not
-+  automatically seed its PRNG.  Also, the keyfile and certfile
-+  arguments to socket.ssl() are now optional.
-+
-+- posixmodule (and by extension, the os module on POSIX platforms) now
-+  exports O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
-+
-+Library
-+-------
-+
-+- doctest now excludes functions and classes not defined by the module
-+  being tested, thanks to Tim Hochberg.
-+
-+- HotShot, a new profiler implemented using a C-based callback, has
-+  been added.  This substantially reduces the overhead of profiling,
-+  but it is still quite preliminary.  Support modules and
-+  documentation will be added in upcoming releases (before 2.2 final).
-+
-+- profile now produces correct output in situations where an exception
-+  raised in Python is cleared by C code (e.g. hasattr()).  This used
-+  to cause wrong output, including spurious claims of recursive
-+  functions and attribution of time spent to the wrong function.
-+
-+  The code and documentation for the derived OldProfile and HotProfile
-+  profiling classes was removed.  The code hasn't worked for years (if
-+  you tried to use them, they raised exceptions).  OldProfile
-+  intended to reproduce the behavior of the profiler Python used more
-+  than 7 years ago, and isn't interesting anymore.  HotProfile intended
-+  to provide a faster profiler (but producing less information), and
-+  that's a worthy goal we intend to meet via a different approach (but
-+  without losing information).
-+
-+- Profile.calibrate() has a new implementation that should deliver
-+  a much better system-specific calibration constant.  The constant can
-+  now be specified in an instance constructor, or as a Profile class or
-+  instance variable, instead of by editing profile.py's source code.
-+  Calibration must still be done manually (see the docs for the profile
-+  module).
-+
-+  Note that Profile.calibrate() must be overridden by subclasses.
-+  Improving the accuracy required exploiting detailed knowledge of
-+  profiler internals; the earlier method abstracted away the details
-+  and measured a simplified model instead, but consequently computed
-+  a constant too small by a factor of 2 on some modern machines.
-+
-+- quopri's encode and decode methods take an optional header parameter,
-+  which indicates whether output is intended for the header 'Q'
-+  encoding.
-+
-+- The SocketServer.ThreadingMixIn class now closes the request after
-+  finish_request() returns.  (Not when it errors out though.)
-+
-+- The nntplib module's NNTP.body() method has grown a 'file' argument
-+  to allow saving the message body to a file.
-+
-+- The email package has added a class email.Parser.HeaderParser which
-+  only parses headers and does not recurse into the message's body.
-+  Also, the module/class MIMEAudio has been added for representing
-+  audio data (contributed by Anthony Baxter).
-+
-+- ftplib should be able to handle files > 2GB.
-+
-+- ConfigParser.getboolean() now also interprets TRUE, FALSE, YES, NO,
-+  ON, and OFF.
-+
-+- xml.dom.minidom NodeList objects now support the length attribute
-+  and item() method as required by the DOM specifications.
-+
-+Tools/Demos
-+-----------
-+
-+- Demo/dns was removed.  It no longer serves any purpose; a package
-+  derived from it is now maintained by Anthony Baxter, see
-+  http://PyDNS.SourceForge.net.
-+
-+- The freeze tool has been made more robust, and two new options have
-+  been added: -X and -E.
-+
-+Build
-+-----
-+
-+- configure will use CXX in LINKCC if CXX is used to build main() and
-+  the system requires to link a C++ main using the C++ compiler.
-+
-+C API
-+-----
-+
-+- The documentation for the tp_compare slot is updated to require that
-+  the return value must be -1, 0, 1; an arbitrary number <0 or >0 is
-+  not correct.  This is not yet enforced but will be enforced in
-+  Python 2.3; even later, we may use -2 to indicate errors and +2 for
-+  "NotImplemented".  Right now, -1 should be used for an error return.
-+
-+- PyLong_AsLongLong() now accepts int (as well as long) arguments.
-+  Consequently, PyArg_ParseTuple's 'L' code also accepts int (as well
-+  as long) arguments.
-+
-+- PyThread_start_new_thread() now returns a long int giving the thread
-+  ID, if one can be calculated; it returns -1 for error, 0 if no
-+  thread ID is calculated (this is an incompatible change, but only
-+  the thread module used this API).  This code has only really been
-+  tested on Linux and Windows; other platforms please beware (and
-+  report any bugs or strange behavior).
-+
-+- PyUnicode_FromEncodedObject() no longer accepts Unicode objects as
-+  input.
-+
-+New platforms
-+-------------
-+
-+Tests
-+-----
-+
-+Windows
-+-------
-+
-+- Installer:  If you install IDLE, and don't disable file-extension
-+  registration, a new "Edit with IDLE" context (right-click) menu entry
-+  is created for .py and .pyw files.
-+
-+- The signal module now supports SIGBREAK on Windows, thanks to Steven
-+  Scott.  Note that SIGBREAK is unique to Windows.  The default SIGBREAK
-+  action remains to call Win32 ExitProcess().  This can be changed via
-+  signal.signal().  For example::
-+
-+      # Make Ctrl+Break raise KeyboardInterrupt, like Python's default Ctrl+C
-+      # (SIGINT) behavior.
-+      import signal
-+      signal.signal(signal.SIGBREAK, signal.default_int_handler)
-+
-+      try:
-+          while 1:
-+              pass
-+      except KeyboardInterrupt:
-+          # We get here on Ctrl+C or Ctrl+Break now; if we had not changed
-+          # SIGBREAK, only on Ctrl+C (and Ctrl+Break would terminate the
-+          # program without the possibility for any Python-level cleanup).
-+          print "Clean exit"
-+
-+
-+What's New in Python 2.2a4?
-+===========================
-+
-+*Release date: 28-Sep-2001*
-+
-+Type/class unification and new-style classes
-+--------------------------------------------
-+
-+- pydoc and inspect are now aware of new-style classes;
-+  e.g. help(list) at the interactive prompt now shows proper
-+  documentation for all operations on list objects.
-+
-+- Applications using Jim Fulton's ExtensionClass module can now safely
-+  be used with Python 2.2.  In particular, Zope 2.4.1 now works with
-+  Python 2.2 (as well as with Python 2.1.1).  The Demo/metaclass
-+  examples also work again.  It is hoped that Gtk and Boost also work
-+  with 2.2a4 and beyond.  (If you can confirm this, please write
-+  webmaster@python.org; if there are still problems, please open a bug
-+  report on SourceForge.)
-+
-+- property() now takes 4 keyword arguments:  fget, fset, fdel and doc.
-+  These map to read-only attributes 'fget', 'fset', 'fdel', and '__doc__'
-+  in the constructed property object.  fget, fset and fdel weren't
-+  discoverable from Python in 2.2a3.  __doc__ is new, and allows to
-+  associate a docstring with a property.
-+
-+- Comparison overloading is now more completely implemented.  For
-+  example, a str subclass instance can properly be compared to a str
-+  instance, and it can properly overload comparison.  Ditto for most
-+  other built-in object types.
-+
-+- The repr() of new-style classes has changed; instead of <type
-+  'M.Foo'> a new-style class is now rendered as <class 'M.Foo'>,
-+  *except* for built-in types, which are still rendered as <type
-+  'Foo'> (to avoid upsetting existing code that might parse or
-+  otherwise rely on repr() of certain type objects).
-+
-+- The repr() of new-style objects is now always <Foo object at XXX>;
-+  previously, it was sometimes <Foo instance at XXX>.
-+
-+- For new-style classes, what was previously called __getattr__ is now
-+  called __getattribute__.  This method, if defined, is called for
-+  *every* attribute access.  A new __getattr__ hook more similar to the
-+  one in classic classes is defined which is called only if regular
-+  attribute access raises AttributeError; to catch *all* attribute
-+  access, you can use __getattribute__ (for new-style classes).  If
-+  both are defined, __getattribute__ is called first, and if it raises
-+  AttributeError, __getattr__ is called.
-+
-+- The __class__ attribute of new-style objects can be assigned to.
-+  The new class must have the same C-level object layout as the old
-+  class.
-+
-+- The builtin file type can be subclassed now.  In the usual pattern,
-+  "file" is the name of the builtin type, and file() is a new builtin
-+  constructor, with the same signature as the builtin open() function.
-+  file() is now the preferred way to open a file.
-+
-+- Previously, __new__ would only see sequential arguments passed to
-+  the type in a constructor call; __init__ would see both sequential
-+  and keyword arguments.  This made no sense whatsoever any more, so
-+  now both __new__ and __init__ see all arguments.
-+
-+- Previously, hash() applied to an instance of a subclass of str or
-+  unicode always returned 0.  This has been repaired.
-+
-+- Previously, an operation on an instance of a subclass of an
-+  immutable type (int, long, float, complex, tuple, str, unicode),
-+  where the subtype didn't override the operation (and so the
-+  operation was handled by the builtin type), could return that
-+  instance instead a value of the base type.  For example, if s was of
-+  a str subclass type, s[:] returned s as-is.  Now it returns a str
-+  with the same value as s.
-+
-+- Provisional support for pickling new-style objects has been added.
-+
-+Core
-+----
-+
-+- file.writelines() now accepts any iterable object producing strings.
-+
-+- PyUnicode_FromEncodedObject() now works very much like
-+  PyObject_Str(obj) in that it tries to use __str__/tp_str
-+  on the object if the object is not a string or buffer. This
-+  makes unicode() behave like str() when applied to non-string/buffer
-+  objects.
-+
-+- PyFile_WriteObject now passes Unicode objects to the file's write
-+  method. As a result, all file-like objects which may be the target
-+  of a print statement must support Unicode objects, i.e. they must
-+  at least convert them into ASCII strings.
-+
-+- Thread scheduling on Solaris should be improved; it is no longer
-+  necessary to insert a small sleep at the start of a thread in order
-+  to let other runnable threads be scheduled.
-+
-+Library
-+-------
-+
-+- StringIO.StringIO instances and cStringIO.StringIO instances support
-+  read character buffer compatible objects for their .write() methods.
-+  These objects are converted to strings and then handled as such
-+  by the instances.
-+
-+- The "email" package has been added.  This is basically a port of the
-+  mimelib package <http://sf.net/projects/mimelib> with API changes
-+  and some implementations updated to use iterators and generators.
-+
-+- difflib.ndiff() and difflib.Differ.compare() are generators now.  This
-+  restores the ability of Tools/scripts/ndiff.py to start producing output
-+  before the entire comparison is complete.
-+
-+- StringIO.StringIO instances and cStringIO.StringIO instances support
-+  iteration just like file objects (i.e. their .readline() method is
-+  called for each iteration until it returns an empty string).
-+
-+- The codecs module has grown four new helper APIs to access
-+  builtin codecs: getencoder(), getdecoder(), getreader(),
-+  getwriter().
-+
-+- SimpleXMLRPCServer: a new module (based upon SimpleHTMLServer)
-+  simplifies writing XML RPC servers.
-+
-+- os.path.realpath(): a new function that returns the absolute pathname
-+  after interpretation of symbolic links.  On non-Unix systems, this
-+  is an alias for os.path.abspath().
-+
-+- operator.indexOf() (PySequence_Index() in the C API) now works with any
-+  iterable object.
-+
-+- smtplib now supports various authentication and security features of
-+  the SMTP protocol through the new login() and starttls() methods.
-+
-+- hmac: a new module implementing keyed hashing for message
-+  authentication.
-+
-+- mimetypes now recognizes more extensions and file types.  At the
-+  same time, some mappings not sanctioned by IANA were removed.
-+
-+- The "compiler" package has been brought up to date to the state of
-+  Python 2.2 bytecode generation.  It has also been promoted from a
-+  Tool to a standard library package.  (Tools/compiler still exists as
-+  a sample driver.)
-+
-+Build
-+-----
-+
-+- Large file support (LFS) is now automatic when the platform supports
-+  it; no more manual configuration tweaks are needed.  On Linux, at
-+  least, it's possible to have a system whose C library supports large
-+  files but whose kernel doesn't; in this case, large file support is
-+  still enabled but doesn't do you any good unless you upgrade your
-+  kernel or share your Python executable with another system whose
-+  kernel has large file support.
-+
-+- The configure script now supplies plausible defaults in a
-+  cross-compilation environment.  This doesn't mean that the supplied
-+  values are always correct, or that cross-compilation now works
-+  flawlessly -- but it's a first step (and it shuts up most of
-+  autoconf's warnings about AC_TRY_RUN).
-+
-+- The Unix build is now a bit less chatty, courtesy of the parser
-+  generator.  The build is completely silent (except for errors) when
-+  using "make -s", thanks to a -q option to setup.py.
-+
-+C API
-+-----
-+
-+- The "structmember" API now supports some new flag bits to deny read
-+  and/or write access to attributes in restricted execution mode.
-+
-+New platforms
-+-------------
-+
-+- Compaq's iPAQ handheld, running the "familiar" Linux distribution
-+  (http://familiar.handhelds.org).
-+
-+Tests
-+-----
-+
-+- The "classic" standard tests, which work by comparing stdout to
-+  an expected-output file under Lib/test/output/, no longer stop at
-+  the first mismatch.  Instead the test is run to completion, and a
-+  variant of ndiff-style comparison is used to report all differences.
-+  This is much easier to understand than the previous style of reporting.
-+
-+- The unittest-based standard tests now use regrtest's test_main()
-+  convention, instead of running as a side-effect of merely being
-+  imported.  This allows these tests to be run in more natural and
-+  flexible ways as unittests, outside the regrtest framework.
-+
-+- regrtest.py is much better integrated with unittest and doctest now,
-+  especially in regard to reporting errors.
-+
-+Windows
-+-------
-+
-+- Large file support now also works for files > 4GB, on filesystems
-+  that support it (NTFS under Windows 2000).  See "What's New in
-+  Python 2.2a3" for more detail.
-+
-+
-+What's New in Python 2.2a3?
-+===========================
-+
-+*Release Date: 07-Sep-2001*
-+
-+Core
-+----
-+
-+- Conversion of long to float now raises OverflowError if the long is too
-+  big to represent as a C double.
-+
-+- The 3-argument builtin pow() no longer allows a third non-None argument
-+  if either of the first two arguments is a float, or if both are of
-+  integer types and the second argument is negative (in which latter case
-+  the arguments are converted to float, so this is really the same
-+  restriction).
-+
-+- The builtin dir() now returns more information, and sometimes much
-+  more, generally naming all attributes of an object, and all attributes
-+  reachable from the object via its class, and from its class's base
-+  classes, and so on from them too.  Example:  in 2.2a2, dir([]) returned
-+  an empty list.  In 2.2a3,
-+
-+  >>> dir([])
-+  ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
-+   '__eq__', '__ge__', '__getattr__', '__getitem__', '__getslice__',
-+   '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__',
-+   '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__repr__',
-+   '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__',
-+   'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
-+   'reverse', 'sort']
-+
-+  dir(module) continues to return only the module's attributes, though.
-+
-+- Overflowing operations on plain ints now return a long int rather
-+  than raising OverflowError.  This is a partial implementation of PEP
-+  237.  You can use -Wdefault::OverflowWarning to enable a warning for
-+  this situation, and -Werror::OverflowWarning to revert to the old
-+  OverflowError exception.
-+
-+- A new command line option, -Q<arg>, is added to control run-time
-+  warnings for the use of classic division.  (See PEP 238.)  Possible
-+  values are -Qold, -Qwarn, -Qwarnall, and -Qnew.  The default is
-+  -Qold, meaning the / operator has its classic meaning and no
-+  warnings are issued.  Using -Qwarn issues a run-time warning about
-+  all uses of classic division for int and long arguments; -Qwarnall
-+  also warns about classic division for float and complex arguments
-+  (for use with fixdiv.py).
-+  [Note:  the remainder of this item (preserved below) became
-+  obsolete in 2.2c1 -- -Qnew has global effect in 2.2] ::
-+
-+    Using -Qnew is questionable; it turns on new division by default, but
-+    only in the __main__ module.  You can usefully combine -Qwarn or
-+    -Qwarnall and -Qnew: this gives the __main__ module new division, and
-+    warns about classic division everywhere else.
-+
-+- Many built-in types can now be subclassed.  This applies to int,
-+  long, float, str, unicode, and tuple.  (The types complex, list and
-+  dictionary can also be subclassed; this was introduced earlier.)
-+  Note that restrictions apply when subclassing immutable built-in
-+  types: you can only affect the value of the instance by overloading
-+  __new__.  You can add mutable attributes, and the subclass instances
-+  will have a __dict__ attribute, but you cannot change the "value"
-+  (as implemented by the base class) of an immutable subclass instance
-+  once it is created.
-+
-+- The dictionary constructor now takes an optional argument, a
-+  mapping-like object, and initializes the dictionary from its
-+  (key, value) pairs.
-+
-+- A new built-in type, super, has been added.  This facilitates making
-+  "cooperative super calls" in a multiple inheritance setting.  For an
-+  explanation, see http://www.python.org/2.2/descrintro.html#cooperation
-+
-+- A new built-in type, property, has been added.  This enables the
-+  creation of "properties".  These are attributes implemented by
-+  getter and setter functions (or only one of these for read-only or
-+  write-only attributes), without the need to override __getattr__.
-+  See http://www.python.org/2.2/descrintro.html#property
-+
-+- The syntax of floating-point and imaginary literals has been
-+  liberalized, to allow leading zeroes.  Examples of literals now
-+  legal that were SyntaxErrors before:
-+
-+      00.0    0e3   0100j   07.5   00000000000000000008.
-+
-+- An old tokenizer bug allowed floating point literals with an incomplete
-+  exponent, such as 1e and 3.1e-.  Such literals now raise SyntaxError.
-+
-+Library
-+-------
-+
-+- telnetlib includes symbolic names for the options, and support for
-+  setting an option negotiation callback. It also supports processing
-+  of suboptions.
-+
-+- The new C standard no longer requires that math libraries set errno to
-+  ERANGE on overflow.  For platform libraries that exploit this new
-+  freedom, Python's overflow-checking was wholly broken.  A new overflow-
-+  checking scheme attempts to repair that, but may not be reliable on all
-+  platforms (C doesn't seem to provide anything both useful and portable
-+  in this area anymore).
-+
-+- Asynchronous timeout actions are available through the new class
-+  threading.Timer.
-+
-+- math.log and math.log10 now return sensible results for even huge
-+  long arguments.  For example, math.log10(10 ** 10000) ~= 10000.0.
-+
-+- A new function, imp.lock_held(), returns 1 when the import lock is
-+  currently held.  See the docs for the imp module.
-+
-+- pickle, cPickle and marshal on 32-bit platforms can now correctly read
-+  dumps containing ints written on platforms where Python ints are 8 bytes.
-+  When read on a box where Python ints are 4 bytes, such values are
-+  converted to Python longs.
-+
-+- In restricted execution mode (using the rexec module), unmarshalling
-+  code objects is no longer allowed.  This plugs a security hole.
-+
-+- unittest.TestResult instances no longer store references to tracebacks
-+  generated by test failures. This prevents unexpected dangling references
-+  to objects that should be garbage collected between tests.
-+
-+Tools
-+-----
-+
-+- Tools/scripts/fixdiv.py has been added which can be used to fix
-+  division operators as per PEP 238.
-+
-+Build
-+-----
-+
-+- If you are an adventurous person using Mac OS X you may want to look at
-+  Mac/OSX. There is a Makefile there that will build Python as a real Mac
-+  application, which can be used for experimenting with Carbon or Cocoa.
-+  Discussion of this on pythonmac-sig, please.
-+
-+C API
-+-----
-+
-+- New function PyObject_Dir(obj), like Python __builtin__.dir(obj).
-+
-+- Note that PyLong_AsDouble can fail!  This has always been true, but no
-+  callers checked for it.  It's more likely to fail now, because overflow
-+  errors are properly detected now.  The proper way to check::
-+
-+      double x = PyLong_AsDouble(some_long_object);
-+      if (x == -1.0 && PyErr_Occurred()) {
-+              /* The conversion failed. */
-+      }
-+
-+- The GC API has been changed.  Extensions that use the old API will still
-+  compile but will not participate in GC.  To upgrade an extension
-+  module:
-+
-+    - rename Py_TPFLAGS_GC to PyTPFLAGS_HAVE_GC
-+
-+    - use PyObject_GC_New or PyObject_GC_NewVar to allocate objects and
-+      PyObject_GC_Del to deallocate them
-+
-+    - rename PyObject_GC_Init to PyObject_GC_Track and PyObject_GC_Fini
-+      to PyObject_GC_UnTrack
-+
-+    - remove PyGC_HEAD_SIZE from object size calculations
-+
-+    - remove calls to PyObject_AS_GC and PyObject_FROM_GC
-+
-+- Two new functions: PyString_FromFormat() and PyString_FromFormatV().
-+  These can be used safely to construct string objects from a
-+  sprintf-style format string (similar to the format string supported
-+  by PyErr_Format()).
-+
-+New platforms
-+-------------
-+
-+- Stephen Hansen contributed patches sufficient to get a clean compile
-+  under Borland C (Windows), but he reports problems running it and ran
-+  out of time to complete the port.  Volunteers?  Expect a MemoryError
-+  when importing the types module; this is probably shallow, and
-+  causing later failures too.
-+
-+Tests
-+-----
-+
-+Windows
-+-------
-+
-+- Large file support is now enabled on Win32 platforms as well as on
-+  Win64.  This means that, for example, you can use f.tell() and f.seek()
-+  to manipulate files larger than 2 gigabytes (provided you have enough
-+  disk space, and are using a Windows filesystem that supports large
-+  partitions).  Windows filesystem limits:  FAT has a 2GB (gigabyte)
-+  filesize limit, and large file support makes no difference there.
-+  FAT32's limit is 4GB, and files >= 2GB are easier to use from Python now.
-+  NTFS has no practical limit on file size, and files of any size can be
-+  used from Python now.
-+
-+- The w9xpopen hack is now used on Windows NT and 2000 too when COMPSPEC
-+  points to command.com (patch from Brian Quinlan).
-+
-+
-+What's New in Python 2.2a2?
-+===========================
-+
-+*Release Date: 22-Aug-2001*
-+
-+Build
-+-----
-+
-+- Tim Peters developed a brand new Windows installer using Wise 8.1,
-+  generously donated to us by Wise Solutions.
-+
-+- configure supports a new option --enable-unicode, with the values
-+  ucs2 and ucs4 (new in 2.2a1). With --disable-unicode, the Unicode
-+  type and supporting code is completely removed from the interpreter.
-+
-+- A new configure option --enable-framework builds a Mac OS X framework,
-+  which "make frameworkinstall" will install. This provides a starting
-+  point for more mac-like functionality, join pythonmac-sig@python.org
-+  if you are interested in helping.
-+
-+- The NeXT platform is no longer supported.
-+
-+- The 'new' module is now statically linked.
-+
-+Tools
-+-----
-+
-+- The new Tools/scripts/cleanfuture.py can be used to automatically
-+  edit out obsolete future statements from Python source code.  See
-+  the module docstring for details.
-+
-+Tests
-+-----
-+
-+- regrtest.py now knows which tests are expected to be skipped on some
-+  platforms, allowing to give clearer test result output.  regrtest
-+  also has optional --use/-u switch to run normally disabled tests
-+  which require network access or consume significant disk resources.
-+
-+- Several new tests in the standard test suite, with special thanks to
-+  Nick Mathewson.
-+
-+Core
-+----
-+
-+- The floor division operator // has been added as outlined in PEP
-+  238.  The / operator still provides classic division (and will until
-+  Python 3.0) unless "from __future__ import division" is included, in
-+  which case the / operator will provide true division.  The operator
-+  module provides truediv() and floordiv() functions.  Augmented
-+  assignment variants are included, as are the equivalent overloadable
-+  methods and C API methods.  See the PEP for a full discussion:
-+  <http://python.sf.net/peps/pep-0238.html>
-+
-+- Future statements are now effective in simulated interactive shells
-+  (like IDLE).  This should "just work" by magic, but read Michael
-+  Hudson's "Future statements in simulated shells" PEP 264 for full
-+  details:  <http://python.sf.net/peps/pep-0264.html>.
-+
-+- The type/class unification (PEP 252-253) was integrated into the
-+  trunk and is not so tentative any more (the exact specification of
-+  some features is still tentative).  A lot of work has done on fixing
-+  bugs and adding robustness and features (performance still has to
-+  come a long way).
-+
-+- Warnings about a mismatch in the Python API during extension import
-+  now use the Python warning framework (which makes it possible to
-+  write filters for these warnings).
-+
-+- A function's __dict__ (aka func_dict) will now always be a
-+  dictionary.  It used to be possible to delete it or set it to None,
-+  but now both actions raise TypeErrors.  It is still legal to set it
-+  to a dictionary object.  Getting func.__dict__ before any attributes
-+  have been assigned now returns an empty dictionary instead of None.
-+
-+- A new command line option, -E, was added which disables the use of
-+  all environment variables, or at least those that are specifically
-+  significant to Python.  Usually those have a name starting with
-+  "PYTHON".  This was used to fix a problem where the tests fail if
-+  the user happens to have PYTHONHOME or PYTHONPATH pointing to an
-+  older distribution.
-+
-+Library
-+-------
-+
-+- New class Differ and new functions ndiff() and restore() in difflib.py.
-+  These package the algorithms used by the popular Tools/scripts/ndiff.py,
-+  for programmatic reuse.
-+
-+- New function xml.sax.saxutils.quoteattr():  Quote an XML attribute
-+  value using the minimal quoting required for the value; more
-+  reliable than using xml.sax.saxutils.escape() for attribute values.
-+
-+- Readline completion support for cmd.Cmd was added.
-+
-+- Calling os.tempnam() or os.tmpnam() generate RuntimeWarnings.
-+
-+- Added function threading.BoundedSemaphore()
-+
-+- Added Ka-Ping Yee's cgitb.py module.
-+
-+- The 'new' module now exposes the CO_xxx flags.
-+
-+- The gc module offers the get_referents function.
-+
-+New platforms
-+-------------
-+
-+C API
-+-----
-+
-+- Two new APIs PyOS_snprintf() and PyOS_vsnprintf() were added
-+  which provide a cross-platform implementations for the
-+  relatively new snprintf()/vsnprintf() C lib APIs. In contrast to
-+  the standard sprintf() and vsprintf() C lib APIs, these versions
-+  apply bounds checking on the used buffer which enhances protection
-+  against buffer overruns.
-+
-+- Unicode APIs now use name mangling to assure that mixing interpreters
-+  and extensions using different Unicode widths is rendered next to
-+  impossible. Trying to import an incompatible Unicode-aware extension
-+  will result in an ImportError.  Unicode extensions writers must make
-+  sure to check the Unicode width compatibility in their extensions by
-+  using at least one of the mangled Unicode APIs in the extension.
-+
-+- Two new flags METH_NOARGS and METH_O are available in method definition
-+  tables to simplify implementation of methods with no arguments and a
-+  single untyped argument. Calling such methods is more efficient than
-+  calling corresponding METH_VARARGS methods. METH_OLDARGS is now
-+  deprecated.
-+
-+Windows
-+-------
-+
-+- "import module" now compiles module.pyw if it exists and nothing else
-+  relevant is found.
-+
-+
-+What's New in Python 2.2a1?
-+===========================
-+
-+*Release date: 18-Jul-2001*
-+
-+Core
-+----
-+
-+- TENTATIVELY, a large amount of code implementing much of what's
-+  described in PEP 252 (Making Types Look More Like Classes) and PEP
-+  253 (Subtyping Built-in Types) was added.  This will be released
-+  with Python 2.2a1.  Documentation will be provided separately
-+  through http://www.python.org/2.2/.  The purpose of releasing this
-+  with Python 2.2a1 is to test backwards compatibility.  It is
-+  possible, though not likely, that a decision is made not to release
-+  this code as part of 2.2 final, if any serious backwards
-+  incompatibilities are found during alpha testing that cannot be
-+  repaired.
-+
-+- Generators were added; this is a new way to create an iterator (see
-+  below) using what looks like a simple function containing one or
-+  more 'yield' statements.  See PEP 255.  Since this adds a new
-+  keyword to the language, this feature must be enabled by including a
-+  future statement: "from __future__ import generators" (see PEP 236).
-+  Generators will become a standard feature in a future release
-+  (probably 2.3).  Without this future statement, 'yield' remains an
-+  ordinary identifier, but a warning is issued each time it is used.
-+  (These warnings currently don't conform to the warnings framework of
-+  PEP 230; we intend to fix this in 2.2a2.)
-+
-+- The UTF-16 codec was modified to be more RFC compliant. It will now
-+  only remove BOM characters at the start of the string and then
-+  only if running in native mode (UTF-16-LE and -BE won't remove a
-+  leading BMO character).
-+
-+- Strings now have a new method .decode() to complement the already
-+  existing .encode() method. These two methods provide direct access
-+  to the corresponding decoders and encoders of the registered codecs.
-+
-+  To enhance the usability of the .encode() method, the special
-+  casing of Unicode object return values was dropped (Unicode objects
-+  were auto-magically converted to string using the default encoding).
-+
-+  Both methods will now return whatever the codec in charge of the
-+  requested encoding returns as object, e.g. Unicode codecs will
-+  return Unicode objects when decoding is requested ("äöü".decode("latin-1")
-+  will return u"äöü"). This enables codec writer to create codecs
-+  for various simple to use conversions.
-+
-+  New codecs were added to demonstrate these new features (the .encode()
-+  and .decode() columns indicate the type of the returned objects):
-+
-+  +---------+-----------+-----------+-----------------------------+
-+  |Name     | .encode() | .decode() | Description                 |
-+  +=========+===========+===========+=============================+
-+  |uu       | string    | string    | UU codec (e.g. for email)   |
-+  +---------+-----------+-----------+-----------------------------+
-+  |base64   | string    | string    | base64 codec                |
-+  +---------+-----------+-----------+-----------------------------+
-+  |quopri   | string    | string    | quoted-printable codec      |
-+  +---------+-----------+-----------+-----------------------------+
-+  |zlib     | string    | string    | zlib compression            |
-+  +---------+-----------+-----------+-----------------------------+
-+  |hex      | string    | string    | 2-byte hex codec            |
-+  +---------+-----------+-----------+-----------------------------+
-+  |rot-13   | string    | Unicode   | ROT-13 Unicode charmap codec|
-+  +---------+-----------+-----------+-----------------------------+
-+
-+- Some operating systems now support the concept of a default Unicode
-+  encoding for file system operations.  Notably, Windows supports 'mbcs'
-+  as the default.  The Macintosh will also adopt this concept in the medium
-+  term, although the default encoding for that platform will be other than
-+  'mbcs'.
-+
-+  On operating system that support non-ASCII filenames, it is common for
-+  functions that return filenames (such as os.listdir()) to return Python
-+  string objects pre-encoded using the default file system encoding for
-+  the platform.  As this encoding is likely to be different from Python's
-+  default encoding, converting this name to a Unicode object before passing
-+  it back to the Operating System would result in a Unicode error, as Python
-+  would attempt to use its default encoding (generally ASCII) rather than
-+  the default encoding for the file system.
-+
-+  In general, this change simply removes surprises when working with
-+  Unicode and the file system, making these operations work as you expect,
-+  increasing the transparency of Unicode objects in this context.
-+  See [????] for more details, including examples.
-+
-+- Float (and complex) literals in source code were evaluated to full
-+  precision only when running from a .py file; the same code loaded from a
-+  .pyc (or .pyo) file could suffer numeric differences starting at about the
-+  12th significant decimal digit.  For example, on a machine with IEEE-754
-+  floating arithmetic,
-+
-+      x = 9007199254740992.0
-+      print long(x)
-+
-+  printed 9007199254740992 if run directly from .py, but 9007199254740000
-+  if from a compiled (.pyc or .pyo) file.  This was due to marshal using
-+  str(float) instead of repr(float) when building code objects.  marshal
-+  now uses repr(float) instead, which should reproduce floats to full
-+  machine precision (assuming the platform C float<->string I/O conversion
-+  functions are of good quality).
-+
-+  This may cause floating-point results to change in some cases, and
-+  usually for the better, but may also cause numerically unstable
-+  algorithms to break.
-+
-+- The implementation of dicts suffers fewer collisions, which has speed
-+  benefits.  However, the order in which dict entries appear in dict.keys(),
-+  dict.values() and dict.items() may differ from previous releases for a
-+  given dict.  Nothing is defined about this order, so no program should
-+  rely on it.  Nevertheless, it's easy to write test cases that rely on the
-+  order by accident, typically because of printing the str() or repr() of a
-+  dict to an "expected results" file.  See Lib/test/test_support.py's new
-+  sortdict(dict) function for a simple way to display a dict in sorted
-+  order.
-+
-+- Many other small changes to dicts were made, resulting in faster
-+  operation along the most common code paths.
-+
-+- Dictionary objects now support the "in" operator: "x in dict" means
-+  the same as dict.has_key(x).
-+
-+- The update() method of dictionaries now accepts generic mapping
-+  objects.  Specifically the argument object must support the .keys()
-+  and __getitem__() methods.  This allows you to say, for example,
-+  {}.update(UserDict())
-+
-+- Iterators were added; this is a generalized way of providing values
-+  to a for loop.  See PEP 234.  There's a new built-in function iter()
-+  to return an iterator.  There's a new protocol to get the next value
-+  from an iterator using the next() method (in Python) or the
-+  tp_iternext slot (in C).  There's a new protocol to get iterators
-+  using the __iter__() method (in Python) or the tp_iter slot (in C).
-+  Iterating (i.e. a for loop) over a dictionary generates its keys.
-+  Iterating over a file generates its lines.
-+
-+- The following functions were generalized to work nicely with iterator
-+  arguments::
-+
-+    map(), filter(), reduce(), zip()
-+    list(), tuple() (PySequence_Tuple() and PySequence_Fast() in C API)
-+    max(), min()
-+    join() method of strings
-+    extend() method of lists
-+    'x in y' and 'x not in y' (PySequence_Contains() in C API)
-+    operator.countOf() (PySequence_Count() in C API)
-+    right-hand side of assignment statements with multiple targets, such as ::
-+        x, y, z = some_iterable_object_returning_exactly_3_values
-+
-+- Accessing module attributes is significantly faster (for example,
-+  random.random or os.path or yourPythonModule.yourAttribute).
-+
-+- Comparing dictionary objects via == and != is faster, and now works even
-+  if the keys and values don't support comparisons other than ==.
-+
-+- Comparing dictionaries in ways other than == and != is slower:  there were
-+  insecurities in the dict comparison implementation that could cause Python
-+  to crash if the element comparison routines for the dict keys and/or
-+  values mutated the dicts.  Making the code bulletproof slowed it down.
-+
-+- Collisions in dicts are resolved via a new approach, which can help
-+  dramatically in bad cases.  For example, looking up every key in a dict
-+  d with d.keys() == [i << 16 for i in range(20000)] is approximately 500x
-+  faster now.  Thanks to Christian Tismer for pointing out the cause and
-+  the nature of an effective cure (last December! better late than never).
-+
-+- repr() is much faster for large containers (dict, list, tuple).
-+
-+
-+Library
-+-------
-+
-+- The constants ascii_letters, ascii_lowercase. and ascii_uppercase
-+  were added to the string module.  These a locale-independent
-+  constants, unlike letters, lowercase, and uppercase.  These are now
-+  use in appropriate locations in the standard library.
-+
-+- The flags used in dlopen calls can now be configured using
-+  sys.setdlopenflags and queried using sys.getdlopenflags.
-+
-+- Fredrik Lundh's xmlrpclib is now a standard library module.  This
-+  provides full client-side XML-RPC support.  In addition,
-+  Demo/xmlrpc/ contains two server frameworks (one SocketServer-based,
-+  one asyncore-based).  Thanks to Eric Raymond for the documentation.
-+
-+- The xrange() object is simplified: it no longer supports slicing,
-+  repetition, comparisons, efficient 'in' checking, the tolist()
-+  method, or the start, stop and step attributes.  See PEP 260.
-+
-+- A new function fnmatch.filter to filter lists of file names was added.
-+
-+- calendar.py uses month and day names based on the current locale.
-+
-+- strop is now *really* obsolete (this was announced before with 1.6),
-+  and issues DeprecationWarning when used (except for the four items
-+  that are still imported into string.py).
-+
-+- Cookie.py now sorts key+value pairs by key in output strings.
-+
-+- pprint.isrecursive(object) didn't correctly identify recursive objects.
-+  Now it does.
-+
-+- pprint functions now much faster for large containers (tuple, list, dict).
-+
-+- New 'q' and 'Q' format codes in the struct module, corresponding to C
-+  types "long long" and "unsigned long long" (on Windows, __int64).  In
-+  native mode, these can be used only when the platform C compiler supports
-+  these types (when HAVE_LONG_LONG is #define'd by the Python config
-+  process), and then they inherit the sizes and alignments of the C types.
-+  In standard mode, 'q' and 'Q' are supported on all platforms, and are
-+  8-byte integral types.
-+
-+- The site module installs a new built-in function 'help' that invokes
-+  pydoc.help.  It must be invoked as 'help()'; when invoked as 'help',
-+  it displays a message reminding the user to use 'help()' or
-+  'help(object)'.
-+
-+Tests
-+-----
-+
-+- New test_mutants.py runs dict comparisons where the key and value
-+  comparison operators mutate the dicts randomly during comparison.  This
-+  rapidly causes Python to crash under earlier releases (not for the faint
-+  of heart:  it can also cause Win9x to freeze or reboot!).
-+
-+- New test_pprint.py verifies that pprint.isrecursive() and
-+  pprint.isreadable() return sensible results.  Also verifies that simple
-+  cases produce correct output.
-+
-+C API
-+-----
-+
-+- Removed the unused last_is_sticky argument from the internal
-+  _PyTuple_Resize().  If this affects you, you were cheating.
-+
-+
-+What's New in Python 2.1 (final)?
-+=================================
-+
-+We only changed a few things since the last release candidate, all in
-+Python library code:
-+
-+- A bug in the locale module was fixed that affected locales which
-+  define no grouping for numeric formatting.
-+
-+- A few bugs in the weakref module's implementations of weak
-+  dictionaries (WeakValueDictionary and WeakKeyDictionary) were fixed,
-+  and the test suite was updated to check for these bugs.
-+
-+- An old bug in the os.path.walk() function (introduced in Python
-+  2.0!) was fixed: a non-existent file would cause an exception
-+  instead of being ignored.
-+
-+- Fixed a few bugs in the new symtable module found by Neil Norwitz's
-+  PyChecker.
-+
-+
-+What's New in Python 2.1c2?
-+===========================
-+
-+A flurry of small changes, and one showstopper fixed in the nick of
-+time made it necessary to release another release candidate.  The list
-+here is the *complete* list of patches (except version updates):
-+
-+Core
-+
-+- Tim discovered a nasty bug in the dictionary code, caused by
-+  PyDict_Next() calling dict_resize(), and the GC code's use of
-+  PyDict_Next() violating an assumption in dict_items().  This was
-+  fixed with considerable amounts of band-aid, but the net effect is a
-+  saner and more robust implementation.
-+
-+- Made a bunch of symbols static that were accidentally global.
-+
-+Build and Ports
-+
-+- The setup.py script didn't check for a new enough version of zlib
-+  (1.1.3 is needed).  Now it does.
-+
-+- Changed "make clean" target to also remove shared libraries.
-+
-+- Added a more general warning about the SGI Irix optimizer to README.
-+
-+Library
-+
-+- Fix a bug in urllib.basejoin("http://host", "../file.html") which
-+  omitted the slash between host and file.html.
-+
-+- The mailbox module's _Mailbox class contained a completely broken
-+  and undocumented seek() method.  Ripped it out.
-+
-+- Fixed a bunch of typos in various library modules (urllib2, smtpd,
-+  sgmllib, netrc, chunk) found by Neil Norwitz's PyChecker.
-+
-+- Fixed a few last-minute bugs in unittest.
-+
-+Extensions
-+
-+- Reverted the patch to the OpenSSL code in socketmodule.c to support
-+  RAND_status() and the EGD, and the subsequent patch that tried to
-+  fix it for pre-0.9.5 versions; the problem with the patch is that on
-+  some systems it issues a warning whenever socket is imported, and
-+  that's unacceptable.
-+
-+Tests
-+
-+- Fixed the pickle tests to work with "import test.test_pickle".
-+
-+- Tweaked test_locale.py to actually run the test Windows.
-+
-+- In distutils/archive_util.py, call zipfile.ZipFile() with mode "w",
-+  not "wb" (which is not a valid mode at all).
-+
-+- Fix pstats browser crashes.  Import readline if it exists to make
-+  the user interface nicer.
-+
-+- Add "import thread" to the top of test modules that import the
-+  threading module (test_asynchat and test_threadedtempfile).  This
-+  prevents test failures caused by a broken threading module resulting
-+  from a previously caught failed import.
-+
-+- Changed test_asynchat.py to set the SO_REUSEADDR option; this was
-+  needed on some platforms (e.g. Solaris 8) when the tests are run
-+  twice in succession.
-+
-+- Skip rather than fail test_sunaudiodev if no audio device is found.
-+
-+
-+What's New in Python 2.1c1?
-+===========================
-+
-+This list was significantly updated when 2.1c2 was released; the 2.1c1
-+release didn't mention most changes that were actually part of 2.1c1:
-+
-+Legal
-+
-+- Copyright was assigned to the Python Software Foundation (PSF) and a
-+  PSF license (very similar to the CNRI license) was added.
-+
-+- The CNRI copyright notice was updated to include 2001.
-+
-+Core
-+
-+- After a public outcry, assignment to __debug__ is no longer illegal;
-+  instead, a warning is issued.  It will become illegal in 2.2.
-+
-+- Fixed a core dump with "%#x" % 0, and changed the semantics so that
-+  "%#x" now always prepends "0x", even if the value is zero.
-+
-+- Fixed some nits in the bytecode compiler.
-+
-+- Fixed core dumps when calling certain kinds of non-functions.
-+
-+- Fixed various core dumps caused by reference count bugs.
-+
-+Build and Ports
-+
-+- Use INSTALL_SCRIPT to install script files.
-+
-+- New port: SCO Unixware 7, by Billy G. Allie.
-+
-+- Updated RISCOS port.
-+
-+- Updated BeOS port and notes.
-+
-+- Various other porting problems resolved.
-+
-+Library
-+
-+- The TERMIOS and SOCKET modules are now truly obsolete and
-+  unnecessary.  Their symbols are incorporated in the termios and
-+  socket modules.
-+
-+- Fixed some 64-bit bugs in pickle, cPickle, and struct, and added
-+  better tests for pickling.
-+
-+- threading: make Condition.wait() robust against KeyboardInterrupt.
-+
-+- zipfile: add support to zipfile to support opening an archive
-+  represented by an open file rather than a file name.  Fix bug where
-+  the archive was not properly closed.  Fixed a bug in this bugfix
-+  where flush() was called for a read-only file.
-+
-+- imputil: added an uninstall() method to the ImportManager.
-+
-+- Canvas: fixed bugs in lower() and tkraise() methods.
-+
-+- SocketServer: API change (added overridable close_request() method)
-+  so that the TCP server can explicitly close the request.
-+
-+- pstats: Eric Raymond added a simple interactive statistics browser,
-+  invoked when the module is run as a script.
-+
-+- locale: fixed a problem in format().
-+
-+- webbrowser: made it work when the BROWSER environment variable has a
-+  value like "/usr/bin/netscape".  Made it auto-detect Konqueror for
-+  KDE 2.  Fixed some other nits.
-+
-+- unittest: changes to allow using a different exception than
-+  AssertionError, and added a few more function aliases.  Some other
-+  small changes.
-+
-+- urllib, urllib2: fixed redirect problems and a coupleof other nits.
-+
-+- asynchat: fixed a critical bug in asynchat that slipped through the
-+  2.1b2 release.  Fixed another rare bug.
-+
-+- Fix some unqualified except: clauses (always a bad code example).
-+
-+XML
-+
-+- pyexpat: new API get_version_string().
-+
-+- Fixed some minidom bugs.
-+
-+Extensions
-+
-+- Fixed a core dump in _weakref.  Removed the weakref.mapping()
-+  function (it adds nothing to the API).
-+
-+- Rationalized the use of header files in the readline module, to make
-+  it compile (albeit with some warnings) with the very recent readline
-+  4.2, without breaking for earlier versions.
-+
-+- Hopefully fixed a buffering problem in linuxaudiodev.
-+
-+- Attempted a fix to make the OpenSSL support in the socket module
-+  work again with pre-0.9.5 versions of OpenSSL.
-+
-+Tests
-+
-+- Added a test case for asynchat and asyncore.
-+
-+- Removed coupling between tests where one test failing could break
-+  another.
-+
-+Tools
-+
-+- Ping added an interactive help browser to pydoc, fixed some nits
-+  in the rest of the pydoc code, and added some features to his
-+  inspect module.
-+
-+- An updated python-mode.el version 4.1 which integrates Ken
-+  Manheimer's pdbtrack.el.  This makes debugging Python code via pdb
-+  much nicer in XEmacs and Emacs.  When stepping through your program
-+  with pdb, in either the shell window or the *Python* window, the
-+  source file and line will be tracked by an arrow.  Very cool!
-+
-+- IDLE: syntax warnings in interactive mode are changed into errors.
-+
-+- Some improvements to Tools/webchecker (ignore some more URL types,
-+  follow some more links).
-+
-+- Brought the Tools/compiler package up to date.
-+
-+
-+What's New in Python 2.1 beta 2?
-+================================
-+
-+(Unlisted are many fixed bugs, more documentation, etc.)
-+
-+Core language, builtins, and interpreter
-+
-+- The nested scopes work (enabled by "from __future__ import
-+  nested_scopes") is completed; in particular, the future now extends
-+  into code executed through exec, eval() and execfile(), and into the
-+  interactive interpreter.
-+
-+- When calling a base class method (e.g. BaseClass.__init__(self)),
-+  this is now allowed even if self is not strictly spoken a class
-+  instance (e.g. when using metaclasses or the Don Beaudry hook).
-+
-+- Slice objects are now comparable but not hashable; this prevents
-+  dict[:] from being accepted but meaningless.
-+
-+- Complex division is now calculated using less braindead algorithms.
-+  This doesn't change semantics except it's more likely to give useful
-+  results in extreme cases.  Complex repr() now uses full precision
-+  like float repr().
-+
-+- sgmllib.py now calls handle_decl() for simple <!...> declarations.
-+
-+- It is illegal to assign to the name __debug__, which is set when the
-+  interpreter starts.  It is effectively a compile-time constant.
-+
-+- A warning will be issued if a global statement for a variable
-+  follows a use or assignment of that variable.
-+
-+Standard library
-+
-+- unittest.py, a unit testing framework by Steve Purcell (PyUNIT,
-+  inspired by JUnit), is now part of the standard library.  You now
-+  have a choice of two testing frameworks: unittest requires you to
-+  write testcases as separate code, doctest gathers them from
-+  docstrings.  Both approaches have their advantages and
-+  disadvantages.
-+
-+- A new module Tix was added, which wraps the Tix extension library
-+  for Tk.  With that module, it is not necessary to statically link
-+  Tix with _tkinter, since Tix will be loaded with Tcl's "package
-+  require" command.  See Demo/tix/.
-+
-+- tzparse.py is now obsolete.
-+
-+- In gzip.py, the seek() and tell() methods are removed -- they were
-+  non-functional anyway, and it's better if callers can test for their
-+  existence with hasattr().
-+
-+Python/C API
-+
-+- PyDict_Next(): it is now safe to call PyDict_SetItem() with a key
-+  that's already in the dictionary during a PyDict_Next() iteration.
-+  This used to fail occasionally when a dictionary resize operation
-+  could be triggered that would rehash all the keys.  All other
-+  modifications to the dictionary are still off-limits during a
-+  PyDict_Next() iteration!
-+
-+- New extended APIs related to passing compiler variables around.
-+
-+- New abstract APIs PyObject_IsInstance(), PyObject_IsSubclass()
-+  implement isinstance() and issubclass().
-+
-+- Py_BuildValue() now has a "D" conversion to create a Python complex
-+  number from a Py_complex C value.
-+
-+- Extensions types which support weak references must now set the
-+  field allocated for the weak reference machinery to NULL themselves;
-+  this is done to avoid the cost of checking each object for having a
-+  weakly referencable type in PyObject_INIT(), since most types are
-+  not weakly referencable.
-+
-+- PyFrame_FastToLocals() and PyFrame_LocalsToFast() copy bindings for
-+  free variables and cell variables to and from the frame's f_locals.
-+
-+- Variants of several functions defined in pythonrun.h have been added
-+  to support the nested_scopes future statement.  The variants all end
-+  in Flags and take an extra argument, a PyCompilerFlags *; examples:
-+  PyRun_AnyFileExFlags(), PyRun_InteractiveLoopFlags().  These
-+  variants may be removed in Python 2.2, when nested scopes are
-+  mandatory.
-+
-+Distutils
-+
-+- the sdist command now writes a PKG-INFO file, as described in PEP 241,
-+  into the release tree.
-+
-+- several enhancements to the bdist_wininst command from Thomas Heller
-+  (an uninstaller, more customization of the installer's display)
-+
-+- from Jack Jansen: added Mac-specific code to generate a dialog for
-+  users to specify the command-line (because providing a command-line with
-+  MacPython is awkward).  Jack also made various fixes for the Mac
-+  and the Metrowerks compiler.
-+
-+- added 'platforms' and 'keywords' to the set of metadata that can be
-+  specified for a distribution.
-+
-+- applied patches from Jason Tishler to make the compiler class work with
-+  Cygwin.
-+
-+
-+What's New in Python 2.1 beta 1?
-+================================
-+
-+Core language, builtins, and interpreter
-+
-+- Following an outcry from the community about the amount of code
-+  broken by the nested scopes feature introduced in 2.1a2, we decided
-+  to make this feature optional, and to wait until Python 2.2 (or at
-+  least 6 months) to make it standard.  The option can be enabled on a
-+  per-module basis by adding "from __future__ import nested_scopes" at
-+  the beginning of a module (before any other statements, but after
-+  comments and an optional docstring).  See PEP 236 (Back to the
-+  __future__) for a description of the __future__ statement.  PEP 227
-+  (Statically Nested Scopes) has been updated to reflect this change,
-+  and to clarify the semantics in a number of endcases.
-+
-+- The nested scopes code, when enabled, has been hardened, and most
-+  bugs and memory leaks in it have been fixed.
-+
-+- Compile-time warnings are now generated for a number of conditions
-+  that will break or change in meaning when nested scopes are enabled:
-+
-+  - Using "from...import *" or "exec" without in-clause in a function
-+    scope that also defines a lambda or nested function with one or
-+    more free (non-local) variables.  The presence of the import* or
-+    bare exec makes it impossible for the compiler to determine the
-+    exact set of local variables in the outer scope, which makes it
-+    impossible to determine the bindings for free variables in the
-+    inner scope.  To avoid the warning about import *, change it into
-+    an import of explicitly name object, or move the import* statement
-+    to the global scope; to avoid the warning about bare exec, use
-+    exec...in... (a good idea anyway -- there's a possibility that
-+    bare exec will be deprecated in the future).
-+
-+  - Use of a global variable in a nested scope with the same name as a
-+    local variable in a surrounding scope.  This will change in
-+    meaning with nested scopes: the name in the inner scope will
-+    reference the variable in the outer scope rather than the global
-+    of the same name.  To avoid the warning, either rename the outer
-+    variable, or use a global statement in the inner function.
-+
-+- An optional object allocator has been included.  This allocator is
-+  optimized for Python objects and should be faster and use less memory
-+  than the standard system allocator.  It is not enabled by default
-+  because of possible thread safety problems.  The allocator is only
-+  protected by the Python interpreter lock and it is possible that some
-+  extension modules require a thread safe allocator.  The object
-+  allocator can be enabled by providing the "--with-pymalloc" option to
-+  configure.
-+
-+Standard library
-+
-+- pyexpat now detects the expat version if expat.h defines it. A
-+  number of additional handlers are provided, which are only available
-+  since expat 1.95. In addition, the methods SetParamEntityParsing and
-+  GetInputContext of Parser objects are available with 1.95.x
-+  only. Parser objects now provide the ordered_attributes and
-+  specified_attributes attributes. A new module expat.model was added,
-+  which offers a number of additional constants if 1.95.x is used.
-+
-+- xml.dom offers the new functions registerDOMImplementation and
-+  getDOMImplementation.
-+
-+- xml.dom.minidom offers a toprettyxml method. A number of DOM
-+  conformance issues have been resolved. In particular, Element now
-+  has an hasAttributes method, and the handling of namespaces was
-+  improved.
-+
-+- Ka-Ping Yee contributed two new modules: inspect.py, a module for
-+  getting information about live Python code, and pydoc.py, a module
-+  for interactively converting docstrings to HTML or text.
-+  Tools/scripts/pydoc, which is now automatically installed into
-+  <prefix>/bin, uses pydoc.py to display documentation; try running
-+  "pydoc -h" for instructions.  "pydoc -g" pops up a small GUI that
-+  lets you browse the module docstrings using a web browser.
-+
-+- New library module difflib.py, primarily packaging the SequenceMatcher
-+  class at the heart of the popular ndiff.py file-comparison tool.
-+
-+- doctest.py (a framework for verifying Python code examples in docstrings)
-+  is now part of the std library.
-+
-+Windows changes
-+
-+- A new entry in the Start menu, "Module Docs", runs "pydoc -g" -- a
-+  small GUI that lets you browse the module docstrings using your
-+  default web browser.
-+
-+- Import is now case-sensitive.  PEP 235 (Import on Case-Insensitive
-+  Platforms) is implemented.  See
-+
-+      http://python.sourceforge.net/peps/pep-0235.html
-+
-+  for full details, especially the "Current Lower-Left Semantics" section.
-+  The new Windows import rules are simpler than before:
-+
-+  A. If the PYTHONCASEOK environment variable exists, same as
-+     before:  silently accept the first case-insensitive match of any
-+     kind; raise ImportError if none found.
-+
-+  B. Else search sys.path for the first case-sensitive match; raise
-+     ImportError if none found.
-+
-+  The same rules have been implemented on other platforms with case-
-+  insensitive but case-preserving filesystems too (including Cygwin, and
-+  several flavors of Macintosh operating systems).
-+
-+- winsound module:  Under Win9x, winsound.Beep() now attempts to simulate
-+  what it's supposed to do (and does do under NT and 2000) via direct
-+  port manipulation.  It's unknown whether this will work on all systems,
-+  but it does work on my Win98SE systems now and was known to be useless on
-+  all Win9x systems before.
-+
-+- Build:  Subproject _test (effectively) renamed to _testcapi.
-+
-+New platforms
-+
-+- 2.1 should compile and run out of the box under MacOS X, even using HFS+.
-+  Thanks to Steven Majewski!
-+
-+- 2.1 should compile and run out of the box on Cygwin.  Thanks to Jason
-+  Tishler!
-+
-+- 2.1 contains new files and patches for RISCOS, thanks to Dietmar
-+  Schwertberger!  See RISCOS/README for more information -- it seems
-+  that because of the bizarre filename conventions on RISCOS, no port
-+  to that platform is easy.
-+
-+
-+What's New in Python 2.1 alpha 2?
-+=================================
-+
-+Core language, builtins, and interpreter
-+
-+- Scopes nest.  If a name is used in a function or class, but is not
-+  local, the definition in the nearest enclosing function scope will
-+  be used.  One consequence of this change is that lambda statements
-+  could reference variables in the namespaces where the lambda is
-+  defined.  In some unusual cases, this change will break code.
-+
-+  In all previous version of Python, names were resolved in exactly
-+  three namespaces -- the local namespace, the global namespace, and
-+  the builtin namespace.  According to this old definition, if a
-+  function A is defined within a function B, the names bound in B are
-+  not visible in A.  The new rules make names bound in B visible in A,
-+  unless A contains a name binding that hides the binding in B.
-+
-+  Section 4.1 of the reference manual describes the new scoping rules
-+  in detail.  The test script in Lib/test/test_scope.py demonstrates
-+  some of the effects of the change.
-+
-+  The new rules will cause existing code to break if it defines nested
-+  functions where an outer function has local variables with the same
-+  name as globals or builtins used by the inner function.  Example:
-+
-+    def munge(str):
-+        def helper(x):
-+            return str(x)
-+        if type(str) != type(''):
-+            str = helper(str)
-+        return str.strip()
-+
-+  Under the old rules, the name str in helper() is bound to the
-+  builtin function str().  Under the new rules, it will be bound to
-+  the argument named str and an error will occur when helper() is
-+  called.
-+
-+- The compiler will report a SyntaxError if "from ... import *" occurs
-+  in a function or class scope.  The language reference has documented
-+  that this case is illegal, but the compiler never checked for it.
-+  The recent introduction of nested scope makes the meaning of this
-+  form of name binding ambiguous.  In a future release, the compiler
-+  may allow this form when there is no possibility of ambiguity.
-+
-+- repr(string) is easier to read, now using hex escapes instead of octal,
-+  and using \t, \n and \r instead of \011, \012 and \015 (respectively):
-+
-+  >>> "\texample \r\n" + chr(0) + chr(255)
-+  '\texample \r\n\x00\xff'         # in 2.1
-+  '\011example \015\012\000\377'   # in 2.0
-+
-+- Functions are now compared and hashed by identity, not by value, since
-+  the func_code attribute is writable.
-+
-+- Weak references (PEP 205) have been added.  This involves a few
-+  changes in the core, an extension module (_weakref), and a Python
-+  module (weakref).  The weakref module is the public interface.  It
-+  includes support for "explicit" weak references, proxy objects, and
-+  mappings with weakly held values.
-+
-+- A 'continue' statement can now appear in a try block within the body
-+  of a loop.  It is still not possible to use continue in a finally
-+  clause.
-+
-+Standard library
-+
-+- mailbox.py now has a new class, PortableUnixMailbox which is
-+  identical to UnixMailbox but uses a more portable scheme for
-+  determining From_ separators.  Also, the constructors for all the
-+  classes in this module have a new optional `factory' argument, which
-+  is a callable used when new message classes must be instantiated by
-+  the next() method.
-+
-+- random.py is now self-contained, and offers all the functionality of
-+  the now-deprecated whrandom.py.  See the docs for details.  random.py
-+  also supports new functions getstate() and setstate(), for saving
-+  and restoring the internal state of the generator; and jumpahead(n),
-+  for quickly forcing the internal state to be the same as if n calls to
-+  random() had been made.  The latter is particularly useful for multi-
-+  threaded programs, creating one instance of the random.Random() class for
-+  each thread, then using .jumpahead() to force each instance to use a
-+  non-overlapping segment of the full period.
-+
-+- random.py's seed() function is new.  For bit-for-bit compatibility with
-+  prior releases, use the whseed function instead.  The new seed function
-+  addresses two problems:  (1) The old function couldn't produce more than
-+  about 2**24 distinct internal states; the new one about 2**45 (the best
-+  that can be done in the Wichmann-Hill generator).  (2) The old function
-+  sometimes produced identical internal states when passed distinct
-+  integers, and there was no simple way to predict when that would happen;
-+  the new one guarantees to produce distinct internal states for all
-+  arguments in [0, 27814431486576L).
-+
-+- The socket module now supports raw packets on Linux.  The socket
-+  family is AF_PACKET.
-+
-+- test_capi.py is a start at running tests of the Python C API.  The tests
-+  are implemented by the new Modules/_testmodule.c.
-+
-+- A new extension module, _symtable, provides provisional access to the
-+  internal symbol table used by the Python compiler.  A higher-level
-+  interface will be added on top of _symtable in a future release.
-+
-+- Removed the obsolete soundex module.
-+
-+- xml.dom.minidom now uses the standard DOM exceptions. Node supports
-+  the isSameNode method; NamedNodeMap the get method.
-+
-+- xml.sax.expatreader supports the lexical handler property; it
-+  generates comment, startCDATA, and endCDATA events.
-+
-+Windows changes
-+
-+- Build procedure:  the zlib project is built in a different way that
-+  ensures the zlib header files used can no longer get out of synch with
-+  the zlib binary used.  See PCbuild\readme.txt for details.  Your old
-+  zlib-related directories can be deleted; you'll need to download fresh
-+  source for zlib and unpack it into a new directory.
-+
-+- Build:  New subproject _test for the benefit of test_capi.py (see above).
-+
-+- Build:  New subproject _symtable, for new DLL _symtable.pyd (a nascent
-+  interface to some Python compiler internals).
-+
-+- Build:  Subproject ucnhash is gone, since the code was folded into the
-+  unicodedata subproject.
-+
-+What's New in Python 2.1 alpha 1?
-+=================================
-+
-+Core language, builtins, and interpreter
-+
-+- There is a new Unicode companion to the PyObject_Str() API
-+  called PyObject_Unicode(). It behaves in the same way as the
-+  former, but assures that the returned value is an Unicode object
-+  (applying the usual coercion if necessary).
-+
-+- The comparison operators support "rich comparison overloading" (PEP
-+  207).  C extension types can provide a rich comparison function in
-+  the new tp_richcompare slot in the type object.  The cmp() function
-+  and the C function PyObject_Compare() first try the new rich
-+  comparison operators before trying the old 3-way comparison.  There
-+  is also a new C API PyObject_RichCompare() (which also falls back on
-+  the old 3-way comparison, but does not constrain the outcome of the
-+  rich comparison to a Boolean result).
-+
-+  The rich comparison function takes two objects (at least one of
-+  which is guaranteed to have the type that provided the function) and
-+  an integer indicating the opcode, which can be Py_LT, Py_LE, Py_EQ,
-+  Py_NE, Py_GT, Py_GE (for <, <=, ==, !=, >, >=), and returns a Python
-+  object, which may be NotImplemented (in which case the tp_compare
-+  slot function is used as a fallback, if defined).
-+
-+  Classes can overload individual comparison operators by defining one
-+  or more of the methods__lt__, __le__, __eq__, __ne__, __gt__,
-+  __ge__.  There are no explicit "reflected argument" versions of
-+  these; instead, __lt__ and __gt__ are each other's reflection,
-+  likewise for__le__ and __ge__; __eq__ and __ne__ are their own
-+  reflection (similar at the C level).  No other implications are
-+  made; in particular, Python does not assume that == is the Boolean
-+  inverse of !=, or that < is the Boolean inverse of >=.  This makes
-+  it possible to define types with partial orderings.
-+
-+  Classes or types that want to implement (in)equality tests but not
-+  the ordering operators (i.e. unordered types) should implement ==
-+  and !=, and raise an error for the ordering operators.
-+
-+  It is possible to define types whose rich comparison results are not
-+  Boolean; e.g. a matrix type might want to return a matrix of bits
-+  for A < B, giving elementwise comparisons.  Such types should ensure
-+  that any interpretation of their value in a Boolean context raises
-+  an exception, e.g. by defining __nonzero__ (or the tp_nonzero slot
-+  at the C level) to always raise an exception.
-+
-+- Complex numbers use rich comparisons to define == and != but raise
-+  an exception for <, <=, > and >=.  Unfortunately, this also means
-+  that cmp() of two complex numbers raises an exception when the two
-+  numbers differ.  Since it is not mathematically meaningful to compare
-+  complex numbers except for equality, I hope that this doesn't break
-+  too much code.
-+
-+- The outcome of comparing non-numeric objects of different types is
-+  not defined by the language, other than that it's arbitrary but
-+  consistent (see the Reference Manual).  An implementation detail changed
-+  in 2.1a1 such that None now compares less than any other object.  Code
-+  relying on this new behavior (like code that relied on the previous
-+  behavior) does so at its own risk.
-+
-+- Functions and methods now support getting and setting arbitrarily
-+  named attributes (PEP 232).  Functions have a new __dict__
-+  (a.k.a. func_dict) which hold the function attributes.  Methods get
-+  and set attributes on their underlying im_func.  It is a TypeError
-+  to set an attribute on a bound method.
-+
-+- The xrange() object implementation has been improved so that
-+  xrange(sys.maxint) can be used on 64-bit platforms.  There's still a
-+  limitation that in this case len(xrange(sys.maxint)) can't be
-+  calculated, but the common idiom "for i in xrange(sys.maxint)" will
-+  work fine as long as the index i doesn't actually reach 2**31.
-+  (Python uses regular ints for sequence and string indices; fixing
-+  that is much more work.)
-+
-+- Two changes to from...import:
-+
-+  1) "from M import X" now works even if (after loading module M)
-+     sys.modules['M'] is not a real module; it's basically a getattr()
-+     operation with AttributeError exceptions changed into ImportError.
-+
-+  2) "from M import *" now looks for M.__all__ to decide which names to
-+     import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but
-+     filters out names starting with '_' as before.  Whether or not
-+     __all__ exists, there's no restriction on the type of M.
-+
-+- File objects have a new method, xreadlines().  This is the fastest
-+  way to iterate over all lines in a file:
-+
-+  for line in file.xreadlines():
-+      ...do something to line...
-+
-+  See the xreadlines module (mentioned below) for how to do this for
-+  other file-like objects.
-+
-+- Even if you don't use file.xreadlines(), you may expect a speedup on
-+  line-by-line input.  The file.readline() method has been optimized
-+  quite a bit in platform-specific ways:  on systems (like Linux) that
-+  support flockfile(), getc_unlocked(), and funlockfile(), those are
-+  used by default.  On systems (like Windows) without getc_unlocked(),
-+  a complicated (but still thread-safe) method using fgets() is used by
-+  default.
-+
-+  You can force use of the fgets() method by #define'ing
-+  USE_FGETS_IN_GETLINE at build time (it may be faster than
-+  getc_unlocked()).
-+
-+  You can force fgets() not to be used by #define'ing
-+  DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test
-+  test_bufio.py fails -- and let us know if it does!).
-+
-+- In addition, the fileinput module, while still slower than the other
-+  methods on most platforms, has been sped up too, by using
-+  file.readlines(sizehint).
-+
-+- Support for run-time warnings has been added, including a new
-+  command line option (-W) to specify the disposition of warnings.
-+  See the description of the warnings module below.
-+
-+- Extensive changes have been made to the coercion code.  This mostly
-+  affects extension modules (which can now implement mixed-type
-+  numerical operators without having to use coercion), but
-+  occasionally, in boundary cases the coercion semantics have changed
-+  subtly.  Since this was a terrible gray area of the language, this
-+  is considered an improvement.  Also note that __rcmp__ is no longer
-+  supported -- instead of calling __rcmp__, __cmp__ is called with
-+  reflected arguments.
-+
-+- In connection with the coercion changes, a new built-in singleton
-+  object, NotImplemented is defined.  This can be returned for
-+  operations that wish to indicate they are not implemented for a
-+  particular combination of arguments.  From C, this is
-+  Py_NotImplemented.
-+
-+- The interpreter accepts now bytecode files on the command line even
-+  if they do not have a .pyc or .pyo extension. On Linux, after executing
-+
-+import imp,sys,string
-+magic = string.join(["\\x%.2x" % ord(c) for c in imp.get_magic()],"")
-+reg = ':pyc:M::%s::%s:' % (magic, sys.executable)
-+open("/proc/sys/fs/binfmt_misc/register","wb").write(reg)
-+
-+  any byte code file can be used as an executable (i.e. as an argument
-+  to execve(2)).
-+
-+- %[xXo] formats of negative Python longs now produce a sign
-+  character.  In 1.6 and earlier, they never produced a sign,
-+  and raised an error if the value of the long was too large
-+  to fit in a Python int.  In 2.0, they produced a sign if and
-+  only if too large to fit in an int.  This was inconsistent
-+  across platforms (because the size of an int varies across
-+  platforms), and inconsistent with hex() and oct().  Example:
-+
-+  >>> "%x" % -0x42L
-+  '-42'      # in 2.1
-+  'ffffffbe' # in 2.0 and before, on 32-bit machines
-+  >>> hex(-0x42L)
-+  '-0x42L'   # in all versions of Python
-+
-+  The behavior of %d formats for negative Python longs remains
-+  the same as in 2.0 (although in 1.6 and before, they raised
-+  an error if the long didn't fit in a Python int).
-+
-+  %u formats don't make sense for Python longs, but are allowed
-+  and treated the same as %d in 2.1.  In 2.0, a negative long
-+  formatted via %u produced a sign if and only if too large to
-+  fit in an int.  In 1.6 and earlier, a negative long formatted
-+  via %u raised an error if it was too big to fit in an int.
-+
-+- Dictionary objects have an odd new method, popitem().  This removes
-+  an arbitrary item from the dictionary and returns it (in the form of
-+  a (key, value) pair).  This can be useful for algorithms that use a
-+  dictionary as a bag of "to do" items and repeatedly need to pick one
-+  item.  Such algorithms normally end up running in quadratic time;
-+  using popitem() they can usually be made to run in linear time.
-+
-+Standard library
-+
-+- In the time module, the time argument to the functions strftime,
-+  localtime, gmtime, asctime and ctime is now optional, defaulting to
-+  the current time (in the local timezone).
-+
-+- The ftplib module now defaults to passive mode, which is deemed a
-+  more useful default given that clients are often inside firewalls
-+  these days.  Note that this could break if ftplib is used to connect
-+  to a *server* that is inside a firewall, from outside; this is
-+  expected to be a very rare situation.  To fix that, you can call
-+  ftp.set_pasv(0).
-+
-+- The module site now treats .pth files not only for path configuration,
-+  but also supports extensions to the initialization code: Lines starting
-+  with import are executed.
-+
-+- There's a new module, warnings, which implements a mechanism for
-+  issuing and filtering warnings.  There are some new built-in
-+  exceptions that serve as warning categories, and a new command line
-+  option, -W, to control warnings (e.g. -Wi ignores all warnings, -We
-+  turns warnings into errors).  warnings.warn(message[, category])
-+  issues a warning message; this can also be called from C as
-+  PyErr_Warn(category, message).
-+
-+- A new module xreadlines was added.  This exports a single factory
-+  function, xreadlines().  The intention is that this code is the
-+  absolutely fastest way to iterate over all lines in an open
-+  file(-like) object:
-+
-+  import xreadlines
-+  for line in xreadlines.xreadlines(file):
-+      ...do something to line...
-+
-+  This is equivalent to the previous the speed record holder using
-+  file.readlines(sizehint).  Note that if file is a real file object
-+  (as opposed to a file-like object), this is equivalent:
-+
-+  for line in file.xreadlines():
-+      ...do something to line...
-+
-+- The bisect module has new functions bisect_left, insort_left,
-+  bisect_right and insort_right.  The old names bisect and insort
-+  are now aliases for bisect_right and insort_right.  XXX_right
-+  and XXX_left methods differ in what happens when the new element
-+  compares equal to one or more elements already in the list:  the
-+  XXX_left methods insert to the left, the XXX_right methods to the
-+  right.  Code that doesn't care where equal elements end up should
-+  continue to use the old, short names ("bisect" and "insort").
-+
-+- The new curses.panel module wraps the panel library that forms part
-+  of SYSV curses and ncurses.  Contributed by Thomas Gellekum.
-+
-+- The SocketServer module now sets the allow_reuse_address flag by
-+  default in the TCPServer class.
-+
-+- A new function, sys._getframe(), returns the stack frame pointer of
-+  the caller.  This is intended only as a building block for
-+  higher-level mechanisms such as string interpolation.
-+
-+- The pyexpat module supports a number of new handlers, which are
-+  available only in expat 1.2. If invocation of a callback fails, it
-+  will report an additional frame in the traceback. Parser objects
-+  participate now in garbage collection. If expat reports an unknown
-+  encoding, pyexpat will try to use a Python codec; that works only
-+  for single-byte charsets. The parser type objects is exposed as
-+  XMLParserObject.
-+
-+- xml.dom now offers standard definitions for symbolic node type and
-+  exception code constants, and a hierarchy of DOM exceptions. minidom
-+  was adjusted to use them.
-+
-+- The conformance of xml.dom.minidom to the DOM specification was
-+  improved. It detects a number of additional error cases; the
-+  previous/next relationship works even when the tree is modified;
-+  Node supports the normalize() method; NamedNodeMap, DocumentType and
-+  DOMImplementation classes were added; Element supports the
-+  hasAttribute and hasAttributeNS methods; and Text supports the splitText
-+  method.
-+
-+Build issues
-+
-+- For Unix (and Unix-compatible) builds, configuration and building of
-+  extension modules is now greatly automated.  Rather than having to
-+  edit the Modules/Setup file to indicate which modules should be
-+  built and where their include files and libraries are, a
-+  distutils-based setup.py script now takes care of building most
-+  extension modules.  All extension modules built this way are built
-+  as shared libraries.  Only a few modules that must be linked
-+  statically are still listed in the Setup file; you won't need to
-+  edit their configuration.
-+
-+- Python should now build out of the box on Cygwin.  If it doesn't,
-+  mail to Jason Tishler (jlt63 at users.sourceforge.net).
-+
-+- Python now always uses its own (renamed) implementation of getopt()
-+  -- there's too much variation among C library getopt()
-+  implementations.
-+
-+- C++ compilers are better supported; the CXX macro is always set to a
-+  C++ compiler if one is found.
-+
-+Windows changes
-+
-+- select module:  By default under Windows, a select() call
-+  can specify no more than 64 sockets.  Python now boosts
-+  this Microsoft default to 512.  If you need even more than
-+  that, see the MS docs (you'll need to #define FD_SETSIZE
-+  and recompile Python from source).
-+
-+- Support for Windows 3.1, DOS and OS/2 is gone.  The Lib/dos-8x3
-+  subdirectory is no more!
-+
-+
-+What's New in Python 2.0?
-+=========================
-+
-+Below is a list of all relevant changes since release 1.6.  Older
-+changes are in the file HISTORY.  If you are making the jump directly
-+from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
-+HISTORY file!  Many important changes listed there.
-+
-+Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
-+the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
-+http://starship.python.net/crew/amk/python/writing/new-python/.
-+
-+--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
-+
-+======================================================================
-+
-+What's new in 2.0 (since release candidate 1)?
-+==============================================
-+
-+Standard library
-+
-+- The copy_reg module was modified to clarify its intended use: to
-+  register pickle support for extension types, not for classes.
-+  pickle() will raise a TypeError if it is passed a class.
-+
-+- Fixed a bug in gettext's "normalize and expand" code that prevented
-+  it from finding an existing .mo file.
-+
-+- Restored support for HTTP/0.9 servers in httplib.
-+
-+- The math module was changed to stop raising OverflowError in case of
-+  underflow, and return 0 instead in underflow cases.  Whether Python
-+  used to raise OverflowError in case of underflow was platform-
-+  dependent (it did when the platform math library set errno to ERANGE
-+  on underflow).
-+
-+- Fixed a bug in StringIO that occurred when the file position was not
-+  at the end of the file and write() was called with enough data to
-+  extend past the end of the file.
-+
-+- Fixed a bug that caused Tkinter error messages to get lost on
-+  Windows.  The bug was fixed by replacing direct use of
-+  interp->result with Tcl_GetStringResult(interp).
-+
-+- Fixed bug in urllib2 that caused it to fail when it received an HTTP
-+  redirect response.
-+
-+- Several changes were made to distutils: Some debugging code was
-+  removed from util.  Fixed the installer used when an external zip
-+  program (like WinZip) is not found; the source code for this
-+  installer is in Misc/distutils.  check_lib() was modified to behave
-+  more like AC_CHECK_LIB by add other_libraries() as a parameter.  The
-+  test for whether installed modules are on sys.path was changed to
-+  use both normcase() and normpath().
-+
-+- Several minor bugs were fixed in the xml package (the minidom,
-+  pulldom, expatreader, and saxutils modules).
-+
-+- The regression test driver (regrtest.py) behavior when invoked with
-+  -l changed: It now reports a count of objects that are recognized as
-+  garbage but not freed by the garbage collector.
-+
-+- The regression test for the math module was changed to test
-+  exceptional behavior when the test is run in verbose mode.  Python
-+  cannot yet guarantee consistent exception behavior across platforms,
-+  so the exception part of test_math is run only in verbose mode, and
-+  may fail on your platform.
-+
-+Internals
-+
-+- PyOS_CheckStack() has been disabled on Win64, where it caused
-+  test_sre to fail.
-+
-+Build issues
-+
-+- Changed compiler flags, so that gcc is always invoked with -Wall and
-+  -Wstrict-prototypes.  Users compiling Python with GCC should see
-+  exactly one warning, except if they have passed configure the
-+  --with-pydebug flag.  The expected warning is for getopt() in
-+  Modules/main.c.  This warning will be fixed for Python 2.1.
-+
-+- Fixed configure to add -threads argument during linking on OSF1.
-+
-+Tools and other miscellany
-+
-+- The compiler in Tools/compiler was updated to support the new
-+  language features introduced in 2.0: extended print statement, list
-+  comprehensions, and augmented assignments.  The new compiler should
-+  also be backwards compatible with Python 1.5.2; the compiler will
-+  always generate code for the version of the interpreter it runs
-+  under.
-+
-+What's new in 2.0 release candidate 1 (since beta 2)?
-+=====================================================
-+
-+What is release candidate 1?
-+
-+We believe that release candidate 1 will fix all known bugs that we
-+intend to fix for the 2.0 final release.  This release should be a bit
-+more stable than the previous betas.  We would like to see even more
-+widespread testing before the final release, so we are producing this
-+release candidate.  The final release will be exactly the same unless
-+any show-stopping (or brown bag) bugs are found by testers of the
-+release candidate.
-+
-+All the changes since the last beta release are bug fixes or changes
-+to support building Python for specific platforms.
-+
-+Core language, builtins, and interpreter
-+
-+- A bug that caused crashes when __coerce__ was used with augmented
-+  assignment, e.g. +=, was fixed.
-+
-+- Raise ZeroDivisionError when raising zero to a negative number,
-+  e.g. 0.0 ** -2.0.  Note that math.pow is unrelated to the builtin
-+  power operator and the result of math.pow(0.0, -2.0) will vary by
-+  platform.  On Linux, it raises a ValueError.
-+
-+- A bug in Unicode string interpolation was fixed that occasionally
-+  caused errors with formats including "%%".  For example, the
-+  following expression "%% %s" % u"abc" no longer raises a TypeError.
-+
-+- Compilation of deeply nested expressions raises MemoryError instead
-+  of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
-+
-+- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
-+  rendering them useless.  They are now written in binary mode again.
-+
-+Standard library
-+
-+- Keyword arguments are now accepted for most pattern and match object
-+  methods in SRE, the standard regular expression engine.
-+
-+- In SRE, fixed error with negative lookahead and lookbehind that
-+  manifested itself as a runtime error in patterns like "(?<!abc)(def)".
-+
-+- Several bugs in the Unicode handling and error handling in _tkinter
-+  were fixed.
-+
-+- Fix memory management errors in Merge() and Tkapp_Call() routines.
-+
-+- Several changes were made to cStringIO to make it compatible with
-+  the file-like object interface and with StringIO.  If operations are
-+  performed on a closed object, an exception is raised.  The truncate
-+  method now accepts a position argument and readline accepts a size
-+  argument.
-+
-+- There were many changes made to the linuxaudiodev module and its
-+  test suite; as a result, a short, unexpected audio sample should now
-+  play when the regression test is run.
-+
-+  Note that this module is named poorly, because it should work
-+  correctly on any platform that supports the Open Sound System
-+  (OSS).
-+
-+  The module now raises exceptions when errors occur instead of
-+  crashing.  It also defines the AFMT_A_LAW format (logarithmic A-law
-+  audio) and defines a getptr() method that calls the
-+  SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
-+
-+- The library_version attribute, introduced in an earlier beta, was
-+  removed because it can not be supported with early versions of the C
-+  readline library, which provides no way to determine the version at
-+  compile-time.
-+
-+- The binascii module is now enabled on Win64.
-+
-+- tokenize.py no longer suffers "recursion depth" errors when parsing
-+  programs with very long string literals.
-+
-+Internals
-+
-+- Fixed several buffer overflow vulnerabilities in calculate_path(),
-+  which is called when the interpreter starts up to determine where
-+  the standard library is installed.  These vulnerabilities affect all
-+  previous versions of Python and can be exploited by setting very
-+  long values for PYTHONHOME or argv[0].  The risk is greatest for a
-+  setuid Python script, although use of the wrapper in
-+  Misc/setuid-prog.c will eliminate the vulnerability.
-+
-+- Fixed garbage collection bugs in instance creation that were
-+  triggered when errors occurred during initialization.  The solution,
-+  applied in cPickle and in PyInstance_New(), is to call
-+  PyObject_GC_Init() after the initialization of the object's
-+  container attributes is complete.
-+
-+- pyexpat adds definitions of PyModule_AddStringConstant and
-+  PyModule_AddObject if the Python version is less than 2.0, which
-+  provides compatibility with PyXML on Python 1.5.2.
-+
-+- If the platform has a bogus definition for LONG_BIT (the number of
-+  bits in a long), an error will be reported at compile time.
-+
-+- Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
-+  collection crashes and possibly other, unreported crashes.
-+
-+- Fixed a memory leak in _PyUnicode_Fini().
-+
-+Build issues
-+
-+- configure now accepts a --with-suffix option that specifies the
-+  executable suffix.  This is useful for builds on Cygwin and Mac OS
-+  X, for example.
-+
-+- The mmap.PAGESIZE constant is now initialized using sysconf when
-+  possible, which eliminates a dependency on -lucb for Reliant UNIX.
-+
-+- The md5 file should now compile on all platforms.
-+
-+- The select module now compiles on platforms that do not define
-+  POLLRDNORM and related constants.
-+
-+- Darwin (Mac OS X):  Initial support for static builds on this
-+  platform.
-+
-+- BeOS: A number of changes were made to the build and installation
-+  process.  ar-fake now operates on a directory of object files.
-+  dl_export.h is gone, and its macros now appear on the mwcc command
-+  line during build on PPC BeOS.
-+
-+- Platform directory in lib/python2.0 is "plat-beos5" (or
-+  "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
-+
-+- Cygwin: Support for shared libraries, Tkinter, and sockets.
-+
-+- SunOS 4.1.4_JL: Fix test for directory existence in configure.
-+
-+Tools and other miscellany
-+
-+- Removed debugging prints from main used with freeze.
-+
-+- IDLE auto-indent no longer crashes when it encounters Unicode
-+  characters.
-+
-+What's new in 2.0 beta 2 (since beta 1)?
-+========================================
-+
-+Core language, builtins, and interpreter
-+
-+- Add support for unbounded ints in %d,i,u,x,X,o formats; for example
-+  "%d" % 2L**64 == "18446744073709551616".
-+
-+- Add -h and -V command line options to print the usage message and
-+  Python version number and exit immediately.
-+
-+- eval() and exec accept Unicode objects as code parameters.
-+
-+- getattr() and setattr() now also accept Unicode objects for the
-+  attribute name, which are converted to strings using the default
-+  encoding before lookup.
-+
-+- Multiplication on string and Unicode now does proper bounds
-+  checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
-+  string is too long."
-+
-+- Better error message when continue is found in try statement in a
-+  loop.
-+
-+
-+Standard library and extensions
-+
-+- socket module: the OpenSSL code now adds support for RAND_status()
-+  and EGD (Entropy Gathering Device).
-+
-+- array: reverse() method of array now works.  buffer_info() now does
-+  argument checking; it still takes no arguments.
-+
-+- asyncore/asynchat: Included most recent version from Sam Rushing.
-+
-+- cgi: Accept '&' or ';' as separator characters when parsing form data.
-+
-+- CGIHTTPServer: Now works on Windows (and perhaps even Mac).
-+
-+- ConfigParser: When reading the file, options spelled in upper case
-+  letters are now correctly converted to lowercase.
-+
-+- copy: Copy Unicode objects atomically.
-+
-+- cPickle: Fail gracefully when copy_reg can't be imported.
-+
-+- cStringIO: Implemented readlines() method.
-+
-+- dbm: Add get() and setdefault() methods to dbm object.  Add constant
-+  `library' to module that names the library used.  Added doc strings
-+  and method names to error messages.  Uses configure to determine
-+  which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
-+  now available options.
-+
-+- distutils: Update to version 0.9.3.
-+
-+- dl: Add several dl.RTLD_ constants.
-+
-+- fpectl: Now supported on FreeBSD.
-+
-+- gc: Add DEBUG_SAVEALL option.  When enabled all garbage objects
-+  found by the collector will be saved in gc.garbage.  This is useful
-+  for debugging a program that creates reference cycles.
-+
-+- httplib: Three changes: Restore support for set_debuglevel feature
-+  of HTTP class.  Do not close socket on zero-length response.  Do not
-+  crash when server sends invalid content-length header.
-+
-+- mailbox: Mailbox class conforms better to qmail specifications.
-+
-+- marshal: When reading a short, sign-extend on platforms where shorts
-+  are bigger than 16 bits.  When reading a long, repair the unportable
-+  sign extension that was being done for 64-bit machines.  (It assumed
-+  that signed right shift sign-extends.)
-+
-+- operator: Add contains(), invert(), __invert__() as aliases for
-+  __contains__(), inv(), and __inv__() respectively.
-+
-+- os: Add support for popen2() and popen3() on all platforms where
-+  fork() exists.  (popen4() is still in the works.)
-+
-+- os: (Windows only:) Add startfile() function that acts like double-
-+  clicking on a file in Explorer (or passing the file name to the
-+  DOS "start" command).
-+
-+- os.path: (Windows, DOS:) Treat trailing colon correctly in
-+  os.path.join.  os.path.join("a:", "b") yields "a:b".
-+
-+- pickle: Now raises ValueError when an invalid pickle that contains
-+  a non-string repr where a string repr was expected.  This behavior
-+  matches cPickle.
-+
-+- posixfile: Remove broken __del__() method.
-+
-+- py_compile: support CR+LF line terminators in source file.
-+
-+- readline: Does not immediately exit when ^C is hit when readline and
-+  threads are configured.  Adds definition of rl_library_version.  (The
-+  latter addition requires GNU readline 2.2 or later.)
-+
-+- rfc822: Domain literals returned by AddrlistClass method
-+  getdomainliteral() are now properly wrapped in brackets.
-+
-+- site: sys.setdefaultencoding() should only be called in case the
-+  standard default encoding ("ascii") is changed. This saves quite a
-+  few cycles during startup since the first call to
-+  setdefaultencoding() will initialize the codec registry and the
-+  encodings package.
-+
-+- socket: Support for size hint in readlines() method of object returned
-+  by makefile().
-+
-+- sre: Added experimental expand() method to match objects.  Does not
-+  use buffer interface on Unicode strings.  Does not hang if group id
-+  is followed by whitespace.
-+
-+- StringIO: Size hint in readlines() is now supported as documented.
-+
-+- struct: Check ranges for bytes and shorts.
-+
-+- urllib: Improved handling of win32 proxy settings. Fixed quote and
-+  quote_plus functions so that the always encode a comma.
-+
-+- Tkinter: Image objects are now guaranteed to have unique ids.  Set
-+  event.delta to zero if Tk version doesn't support mousewheel.
-+  Removed some debugging prints.
-+
-+- UserList: now implements __contains__().
-+
-+- webbrowser: On Windows, use os.startfile() instead of os.popen(),
-+  which works around a bug in Norton AntiVirus 2000 that leads directly
-+  to a Blue Screen freeze.
-+
-+- xml: New version detection code allows PyXML to override standard
-+  XML package if PyXML version is greater than 0.6.1.
-+
-+- xml.dom: DOM level 1 support for basic XML.  Includes xml.dom.minidom
-+  (conventional DOM), and xml.dom.pulldom, which allows building the DOM
-+  tree only for nodes which are sufficiently interesting to a specific
-+  application.  Does not provide the HTML-specific extensions.  Still
-+  undocumented.
-+
-+- xml.sax: SAX 2 support for Python, including all the handler
-+  interfaces needed to process XML 1.0 compliant XML.  Some
-+  documentation is already available.
-+
-+- pyexpat: Renamed to xml.parsers.expat since this is part of the new,
-+  packagized XML support.
-+
-+
-+C API
-+
-+- Add three new convenience functions for module initialization --
-+  PyModule_AddObject(), PyModule_AddIntConstant(), and
-+  PyModule_AddStringConstant().
-+
-+- Cleaned up definition of NULL in C source code; all definitions were
-+  removed and add #error to Python.h if NULL isn't defined after
-+  #include of stdio.h.
-+
-+- Py_PROTO() macros that were removed in 2.0b1 have been restored for
-+  backwards compatibility (at the source level) with old extensions.
-+
-+- A wrapper API was added for signal() and sigaction().  Instead of
-+  either function, always use PyOS_getsig() to get a signal handler
-+  and PyOS_setsig() to set one.  A new convenience typedef
-+  PyOS_sighandler_t is defined for the type of signal handlers.
-+
-+- Add PyString_AsStringAndSize() function that provides access to the
-+  internal data buffer and size of a string object -- or the default
-+  encoded version of a Unicode object.
-+
-+- PyString_Size() and PyString_AsString() accept Unicode objects.
-+
-+- The standard header <limits.h> is now included by Python.h (if it
-+  exists).  INT_MAX and LONG_MAX will always be defined, even if
-+  <limits.h> is not available.
-+
-+- PyFloat_FromString takes a second argument, pend, that was
-+  effectively useless.  It is now officially useless but preserved for
-+  backwards compatibility.  If the pend argument is not NULL, *pend is
-+  set to NULL.
-+
-+- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
-+  for the attribute name.  See note on getattr() above.
-+
-+- A few bug fixes to argument processing for Unicode.
-+  PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
-+  PyArg_Parse() special cases "s#" for Unicode objects; it returns a
-+  pointer to the default encoded string data instead of to the raw
-+  UTF-16.
-+
-+- Py_BuildValue accepts B format (for bgen-generated code).
-+
-+
-+Internals
-+
-+- On Unix, fix code for finding Python installation directory so that
-+  it works when argv[0] is a relative path.
-+
-+- Added a true unicode_internal_encode() function and fixed the
-+  unicode_internal_decode function() to support Unicode objects directly
-+  rather than by generating a copy of the object.
-+
-+- Several of the internal Unicode tables are much smaller now, and
-+  the source code should be much friendlier to weaker compilers.
-+
-+- In the garbage collector: Fixed bug in collection of tuples.  Fixed
-+  bug that caused some instances to be removed from the container set
-+  while they were still live.  Fixed parsing in gc.set_debug() for
-+  platforms where sizeof(long) > sizeof(int).
-+
-+- Fixed refcount problem in instance deallocation that only occurred
-+  when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
-+
-+- On Windows, getpythonregpath is now protected against null data in
-+  registry key.
-+
-+- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
-+  condition.
-+
-+
-+Build and platform-specific issues
-+
-+- Better support of GNU Pth via --with-pth configure option.
-+
-+- Python/C API now properly exposed to dynamically-loaded extension
-+  modules on Reliant UNIX.
-+
-+- Changes for the benefit of SunOS 4.1.4 (really!).  mmapmodule.c:
-+  Don't define MS_SYNC to be zero when it is undefined.  Added missing
-+  prototypes in posixmodule.c.
-+
-+- Improved support for HP-UX build.  Threads should now be correctly
-+  configured (on HP-UX 10.20 and 11.00).
-+
-+- Fix largefile support on older NetBSD systems and OpenBSD by adding
-+  define for TELL64.
-+
-+
-+Tools and other miscellany
-+
-+- ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
-+
-+- freeze: The modulefinder now works with 2.0 opcodes.
-+
-+- IDLE:
-+  Move hackery of sys.argv until after the Tk instance has been
-+  created, which allows the application-specific Tkinter
-+  initialization to be executed if present; also pass an explicit
-+  className parameter to the Tk() constructor.
-+
-+
-+What's new in 2.0 beta 1?
-+=========================
-+
-+Source Incompatibilities
-+------------------------
-+
-+None.  Note that 1.6 introduced several incompatibilities with 1.5.2,
-+such as single-argument append(), connect() and bind(), and changes to
-+str(long) and repr(float).
-+
-+
-+Binary Incompatibilities
-+------------------------
-+
-+- Third party extensions built for Python 1.5.x or 1.6 cannot be used
-+with Python 2.0; these extensions will have to be rebuilt for Python
-+2.0.
-+
-+- On Windows, attempting to import a third party extension built for
-+Python 1.5.x or 1.6 results in an immediate crash; there's not much we
-+can do about this.  Check your PYTHONPATH environment variable!
-+
-+- Python bytecode files (*.pyc and *.pyo) are not compatible between
-+releases.
-+
-+
-+Overview of Changes Since 1.6
-+-----------------------------
-+
-+There are many new modules (including brand new XML support through
-+the xml package, and i18n support through the gettext module); a list
-+of all new modules is included below.  Lots of bugs have been fixed.
-+
-+The process for making major new changes to the language has changed
-+since Python 1.6.  Enhancements must now be documented by a Python
-+Enhancement Proposal (PEP) before they can be accepted.
-+
-+There are several important syntax enhancements, described in more
-+detail below:
-+
-+  - Augmented assignment, e.g. x += 1
-+
-+  - List comprehensions, e.g. [x**2 for x in range(10)]
-+
-+  - Extended import statement, e.g. import Module as Name
-+
-+  - Extended print statement, e.g. print >> file, "Hello"
-+
-+Other important changes:
-+
-+  - Optional collection of cyclical garbage
-+
-+Python Enhancement Proposal (PEP)
-+---------------------------------
-+
-+PEP stands for Python Enhancement Proposal.  A PEP is a design
-+document providing information to the Python community, or describing
-+a new feature for Python.  The PEP should provide a concise technical
-+specification of the feature and a rationale for the feature.
-+
-+We intend PEPs to be the primary mechanisms for proposing new
-+features, for collecting community input on an issue, and for
-+documenting the design decisions that have gone into Python.  The PEP
-+author is responsible for building consensus within the community and
-+documenting dissenting opinions.
-+
-+The PEPs are available at http://python.sourceforge.net/peps/.
-+
-+Augmented Assignment
-+--------------------
-+
-+This must have been the most-requested feature of the past years!
-+Eleven new assignment operators were added:
-+
-+    += -= *= /= %= **= <<= >>= &= ^= |=
-+
-+For example,
-+
-+    A += B
-+
-+is similar to
-+
-+    A = A + B
-+
-+except that A is evaluated only once (relevant when A is something
-+like dict[index].attr).
-+
-+However, if A is a mutable object, A may be modified in place.  Thus,
-+if A is a number or a string, A += B has the same effect as A = A+B
-+(except A is only evaluated once); but if a is a list, A += B has the
-+same effect as A.extend(B)!
-+
-+Classes and built-in object types can override the new operators in
-+order to implement the in-place behavior; the not-in-place behavior is
-+used automatically as a fallback when an object doesn't implement the
-+in-place behavior.  For classes, the method name is derived from the
-+method name for the corresponding not-in-place operator by inserting
-+an 'i' in front of the name, e.g. __iadd__ implements in-place
-+__add__.
-+
-+Augmented assignment was implemented by Thomas Wouters.
-+
-+
-+List Comprehensions
-+-------------------
-+
-+This is a flexible new notation for lists whose elements are computed
-+from another list (or lists).  The simplest form is:
-+
-+    [<expression> for <variable> in <sequence>]
-+
-+For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
-+This is more efficient than a for loop with a list.append() call.
-+
-+You can also add a condition:
-+
-+    [<expression> for <variable> in <sequence> if <condition>]
-+
-+For example, [w for w in words if w == w.lower()] would yield the list
-+of words that contain no uppercase characters.  This is more efficient
-+than a for loop with an if statement and a list.append() call.
-+
-+You can also have nested for loops and more than one 'if' clause.  For
-+example, here's a function that flattens a sequence of sequences::
-+
-+    def flatten(seq):
-+        return [x for subseq in seq for x in subseq]
-+
-+    flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
-+
-+This prints
-+
-+    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-+
-+List comprehensions originated as a patch set from Greg Ewing; Skip
-+Montanaro and Thomas Wouters also contributed.  Described by PEP 202.
-+
-+
-+Extended Import Statement
-+-------------------------
-+
-+Many people have asked for a way to import a module under a different
-+name.  This can be accomplished like this:
-+
-+    import foo
-+    bar = foo
-+    del foo
-+
-+but this common idiom gets old quickly.  A simple extension of the
-+import statement now allows this to be written as follows:
-+
-+    import foo as bar
-+
-+There's also a variant for 'from ... import':
-+
-+    from foo import bar as spam
-+
-+This also works with packages; e.g. you can write this:
-+
-+    import test.regrtest as regrtest
-+
-+Note that 'as' is not a new keyword -- it is recognized only in this
-+context (this is only possible because the syntax for the import
-+statement doesn't involve expressions).
-+
-+Implemented by Thomas Wouters.  Described by PEP 221.
-+
-+
-+Extended Print Statement
-+------------------------
-+
-+Easily the most controversial new feature, this extension to the print
-+statement adds an option to make the output go to a different file
-+than the default sys.stdout.
-+
-+For example, to write an error message to sys.stderr, you can now
-+write:
-+
-+    print >> sys.stderr, "Error: bad dog!"
-+
-+As a special feature, if the expression used to indicate the file
-+evaluates to None, the current value of sys.stdout is used.  Thus:
-+
-+    print >> None, "Hello world"
-+
-+is equivalent to
-+
-+    print "Hello world"
-+
-+Design and implementation by Barry Warsaw.  Described by PEP 214.
-+
-+
-+Optional Collection of Cyclical Garbage
-+---------------------------------------
-+
-+Python is now equipped with a garbage collector that can hunt down
-+cyclical references between Python objects.  It's no replacement for
-+reference counting; in fact, it depends on the reference counts being
-+correct, and decides that a set of objects belong to a cycle if all
-+their reference counts can be accounted for from their references to
-+each other.  This devious scheme was first proposed by Eric Tiedemann,
-+and brought to implementation by Neil Schemenauer.
-+
-+There's a module "gc" that lets you control some parameters of the
-+garbage collection.  There's also an option to the configure script
-+that lets you enable or disable the garbage collection.  In 2.0b1,
-+it's on by default, so that we (hopefully) can collect decent user
-+experience with this new feature.  There are some questions about its
-+performance.  If it proves to be too much of a problem, we'll turn it
-+off by default in the final 2.0 release.
-+
-+
-+Smaller Changes
-+---------------
-+
-+A new function zip() was added.  zip(seq1, seq2, ...) is equivalent to
-+map(None, seq1, seq2, ...) when the sequences have the same length;
-+i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)].  When
-+the lists are not all the same length, the shortest list wins:
-+zip([1,2,3], [10,20]) returns [(1,10), (2,20)].  See PEP 201.
-+
-+sys.version_info is a tuple (major, minor, micro, level, serial).
-+
-+Dictionaries have an odd new method, setdefault(key, default).
-+dict.setdefault(key, default) returns dict[key] if it exists; if not,
-+it sets dict[key] to default and returns that value.  Thus:
-+
-+    dict.setdefault(key, []).append(item)
-+
-+does the same work as this common idiom:
-+
-+    if not dict.has_key(key):
-+        dict[key] = []
-+    dict[key].append(item)
-+
-+There are two new variants of SyntaxError that are raised for
-+indentation-related errors: IndentationError and TabError.
-+
-+Changed \x to consume exactly two hex digits; see PEP 223.  Added \U
-+escape that consumes exactly eight hex digits.
-+
-+The limits on the size of expressions and file in Python source code
-+have been raised from 2**16 to 2**32.  Previous versions of Python
-+were limited because the maximum argument size the Python VM accepted
-+was 2**16.  This limited the size of object constructor expressions,
-+e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files.  This
-+limit was raised thanks to a patch by Charles Waldman that effectively
-+fixes the problem.  It is now much more likely that you will be
-+limited by available memory than by an arbitrary limit in Python.
-+
-+The interpreter's maximum recursion depth can be modified by Python
-+programs using sys.getrecursionlimit and sys.setrecursionlimit.  This
-+limit is the maximum number of recursive calls that can be made by
-+Python code.  The limit exists to prevent infinite recursion from
-+overflowing the C stack and causing a core dump.  The default value is
-+1000.  The maximum safe value for a particular platform can be found
-+by running Misc/find_recursionlimit.py.
-+
-+New Modules and Packages
-+------------------------
-+
-+atexit - for registering functions to be called when Python exits.
-+
-+imputil - Greg Stein's alternative API for writing custom import
-+hooks.
-+
-+pyexpat - an interface to the Expat XML parser, contributed by Paul
-+Prescod.
-+
-+xml - a new package with XML support code organized (so far) in three
-+subpackages: xml.dom, xml.sax, and xml.parsers.  Describing these
-+would fill a volume.  There's a special feature whereby a
-+user-installed package named _xmlplus overrides the standard
-+xmlpackage; this is intended to give the XML SIG a hook to distribute
-+backwards-compatible updates to the standard xml package.
-+
-+webbrowser - a platform-independent API to launch a web browser.
-+
-+
-+Changed Modules
-+---------------
-+
-+array -- new methods for array objects: count, extend, index, pop, and
-+remove
-+
-+binascii -- new functions b2a_hex and a2b_hex that convert between
-+binary data and its hex representation
-+
-+calendar -- Many new functions that support features including control
-+over which day of the week is the first day, returning strings instead
-+of printing them.  Also new symbolic constants for days of week,
-+e.g. MONDAY, ..., SUNDAY.
-+
-+cgi -- FieldStorage objects have a getvalue method that works like a
-+dictionary's get method and returns the value attribute of the object.
-+
-+ConfigParser -- The parser object has new methods has_option,
-+remove_section, remove_option, set, and write.  They allow the module
-+to be used for writing config files as well as reading them.
-+
-+ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
-+optionally support the RFC 959 REST command.
-+
-+gzip -- readline and readlines now accept optional size arguments
-+
-+httplib -- New interfaces and support for HTTP/1.1 by Greg Stein.  See
-+the module doc strings for details.
-+
-+locale -- implement getdefaultlocale for Win32 and Macintosh
-+
-+marshal -- no longer dumps core when marshaling deeply nested or
-+recursive data structures
-+
-+os -- new functions isatty, seteuid, setegid, setreuid, setregid
-+
-+os/popen2 -- popen2/popen3/popen4 support under Windows.  popen2/popen3
-+support under Unix.
-+
-+os/pty -- support for openpty and forkpty
-+
-+os.path -- fix semantics of os.path.commonprefix
-+
-+smtplib -- support for sending very long messages
-+
-+socket -- new function getfqdn()
-+
-+readline -- new functions to read, write and truncate history files.
-+The readline section of the library reference manual contains an
-+example.
-+
-+select -- add interface to poll system call
-+
-+shutil -- new copyfileobj function
-+
-+SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
-+HTTP server.
-+
-+Tkinter -- optimization of function flatten
-+
-+urllib -- scans environment variables for proxy configuration,
-+e.g. http_proxy.
-+
-+whichdb -- recognizes dumbdbm format
-+
-+
-+Obsolete Modules
-+----------------
-+
-+None.  However note that 1.6 made a whole slew of modules obsolete:
-+stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
-+poly, zmod, strop, util, whatsound.
-+
-+
-+Changed, New, Obsolete Tools
-+----------------------------
-+
-+None.
-+
-+
-+C-level Changes
-+---------------
-+
-+Several cleanup jobs were carried out throughout the source code.
-+
-+All C code was converted to ANSI C; we got rid of all uses of the
-+Py_PROTO() macro, which makes the header files a lot more readable.
-+
-+Most of the portability hacks were moved to a new header file,
-+pyport.h; several other new header files were added and some old
-+header files were removed, in an attempt to create a more rational set
-+of header files.  (Few of these ever need to be included explicitly;
-+they are all included by Python.h.)
-+
-+Trent Mick ensured portability to 64-bit platforms, under both Linux
-+and Win64, especially for the new Intel Itanium processor.  Mick also
-+added large file support for Linux64 and Win64.
-+
-+The C APIs to return an object's size have been update to consistently
-+use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size.  In
-+previous versions, the abstract interfaces used PyXXX_Length and the
-+concrete interfaces used PyXXX_Size.  The old names,
-+e.g. PyObject_Length, are still available for backwards compatibility
-+at the API level, but are deprecated.
-+
-+The PyOS_CheckStack function has been implemented on Windows by
-+Fredrik Lundh.  It prevents Python from failing with a stack overflow
-+on Windows.
-+
-+The GC changes resulted in creation of two new slots on object,
-+tp_traverse and tp_clear.  The augmented assignment changes result in
-+the creation of a new slot for each in-place operator.
-+
-+The GC API creates new requirements for container types implemented in
-+C extension modules.  See Include/objimpl.h for details.
-+
-+PyErr_Format has been updated to automatically calculate the size of
-+the buffer needed to hold the formatted result string.  This change
-+prevents crashes caused by programmer error.
-+
-+New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
-+
-+PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
-+that are the same as their non-Ex counterparts except they take an
-+extra flag argument that tells them to close the file when done.
-+
-+XXX There were other API changes that should be fleshed out here.
-+
-+
-+Windows Changes
-+---------------
-+
-+New popen2/popen3/peopen4 in os module (see Changed Modules above).
-+
-+os.popen is much more usable on Windows 95 and 98.  See Microsoft
-+Knowledge Base article Q150956.  The Win9x workaround described there
-+is implemented by the new w9xpopen.exe helper in the root of your
-+Python installation.  Note that Python uses this internally; it is not
-+a standalone program.
-+
-+Administrator privileges are no longer required to install Python
-+on Windows NT or Windows 2000.  If you have administrator privileges,
-+Python's registry info will be written under HKEY_LOCAL_MACHINE.
-+Otherwise the installer backs off to writing Python's registry info
-+under HKEY_CURRENT_USER.  The latter is sufficient for all "normal"
-+uses of Python, but will prevent some advanced uses from working
-+(for example, running a Python script as an NT service, or possibly
-+from CGI).
-+
-+[This was new in 1.6] The installer no longer runs a separate Tcl/Tk
-+installer; instead, it installs the needed Tcl/Tk files directly in the
-+Python directory.  If you already have a Tcl/Tk installation, this
-+wastes some disk space (about 4 Megs) but avoids problems with
-+conflicting Tcl/Tk installations, and makes it much easier for Python
-+to ensure that Tcl/Tk can find all its files.
-+
-+[This was new in 1.6] The Windows installer now installs by default in
-+\Python20\ on the default volume, instead of \Program Files\Python-2.0\.
-+
-+
-+Updates to the changes between 1.5.2 and 1.6
-+--------------------------------------------
-+
-+The 1.6 NEWS file can't be changed after the release is done, so here
-+is some late-breaking news:
-+
-+New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
-+and changes to getlocale() and setlocale().
-+
-+The new module is now enabled per default.
-+
-+It is not true that the encodings codecs cannot be used for normal
-+strings: the string.encode() (which is also present on 8-bit strings
-+!) allows using them for 8-bit strings too, e.g. to convert files from
-+cp1252 (Windows) to latin-1 or vice-versa.
-+
-+Japanese codecs are available from Tamito KAJIYAMA:
-+http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
-+
-+
-+======================================================================
-+
-+
-+=======================================
-+==> Release 1.6 (September 5, 2000) <==
-+=======================================
-+
-+What's new in release 1.6?
-+==========================
-+
-+Below is a list of all relevant changes since release 1.5.2.
-+
-+
-+Source Incompatibilities
-+------------------------
-+
-+Several small incompatible library changes may trip you up:
-+
-+  - The append() method for lists can no longer be invoked with more
-+  than one argument.  This used to append a single tuple made out of
-+  all arguments, but was undocumented.  To append a tuple, use
-+  e.g. l.append((a, b, c)).
-+
-+  - The connect(), connect_ex() and bind() methods for sockets require
-+  exactly one argument.  Previously, you could call s.connect(host,
-+  port), but this was undocumented. You must now write
-+  s.connect((host, port)).
-+
-+  - The str() and repr() functions are now different more often.  For
-+  long integers, str() no longer appends a 'L'.  Thus, str(1L) == '1',
-+  which used to be '1L'; repr(1L) is unchanged and still returns '1L'.
-+  For floats, repr() now gives 17 digits of precision, to ensure no
-+  precision is lost (on all current hardware).
-+
-+  - The -X option is gone.  Built-in exceptions are now always
-+  classes.  Many more library modules also have been converted to
-+  class-based exceptions.
-+
-+
-+Binary Incompatibilities
-+------------------------
-+
-+- Third party extensions built for Python 1.5.x cannot be used with
-+Python 1.6; these extensions will have to be rebuilt for Python 1.6.
-+
-+- On Windows, attempting to import a third party extension built for
-+Python 1.5.x results in an immediate crash; there's not much we can do
-+about this.  Check your PYTHONPATH environment variable!
-+
-+
-+Overview of Changes since 1.5.2
-+-------------------------------
-+
-+For this overview, I have borrowed from the document "What's New in
-+Python 2.0" by Andrew Kuchling and Moshe Zadka:
-+http://starship.python.net/crew/amk/python/writing/new-python/.
-+
-+There are lots of new modules and lots of bugs have been fixed.  A
-+list of all new modules is included below.
-+
-+Probably the most pervasive change is the addition of Unicode support.
-+We've added a new fundamental datatype, the Unicode string, a new
-+build-in function unicode(), an numerous C APIs to deal with Unicode
-+and encodings.  See the file Misc/unicode.txt for details, or
-+http://starship.python.net/crew/lemburg/unicode-proposal.txt.
-+
-+Two other big changes, related to the Unicode support, are the
-+addition of string methods and (yet another) new regular expression
-+engine.
-+
-+  - String methods mean that you can now say s.lower() etc. instead of
-+  importing the string module and saying string.lower(s) etc.  One
-+  peculiarity is that the equivalent of string.join(sequence,
-+  delimiter) is delimiter.join(sequence).  Use " ".join(sequence) for
-+  the effect of string.join(sequence); to make this more readable, try
-+  space=" " first.  Note that the maxsplit argument defaults in
-+  split() and replace() have changed from 0 to -1.
-+
-+  - The new regular expression engine, SRE by Fredrik Lundh, is fully
-+  backwards compatible with the old engine, and is in fact invoked
-+  using the same interface (the "re" module).  You can explicitly
-+  invoke the old engine by import pre, or the SRE engine by importing
-+  sre.  SRE is faster than pre, and supports Unicode (which was the
-+  main reason to put effort in yet another new regular expression
-+  engine -- this is at least the fourth!).
-+
-+
-+Other Changes
-+-------------
-+
-+Other changes that won't break code but are nice to know about:
-+
-+Deleting objects is now safe even for deeply nested data structures.
-+
-+Long/int unifications: long integers can be used in seek() calls, as
-+slice indexes.
-+
-+String formatting (s % args) has a new formatting option, '%r', which
-+acts like '%s' but inserts repr(arg) instead of str(arg). (Not yet in
-+alpha 1.)
-+
-+Greg Ward's "distutils" package is included: this will make
-+installing, building and distributing third party packages much
-+simpler.
-+
-+There's now special syntax that you can use instead of the apply()
-+function.  f(*args, **kwds) is equivalent to apply(f, args, kwds).
-+You can also use variations f(a1, a2, *args, **kwds) and you can leave
-+one or the other out: f(*args), f(**kwds).
-+
-+The built-ins int() and long() take an optional second argument to
-+indicate the conversion base -- of course only if the first argument
-+is a string.  This makes string.atoi() and string.atol() obsolete.
-+(string.atof() was already obsolete).
-+
-+When a local variable is known to the compiler but undefined when
-+used, a new exception UnboundLocalError is raised.  This is a class
-+derived from NameError so code catching NameError should still work.
-+The purpose is to provide better diagnostics in the following example:
-+  x = 1
-+  def f():
-+      print x
-+      x = x+1
-+This used to raise a NameError on the print statement, which confused
-+even experienced Python programmers (especially if there are several
-+hundreds of lines of code between the reference and the assignment to
-+x :-).
-+
-+You can now override the 'in' operator by defining a __contains__
-+method.  Note that it has its arguments backwards: x in a causes
-+a.__contains__(x) to be called.  That's why the name isn't __in__.
-+
-+The exception AttributeError will have a more friendly error message,
-+e.g.: <code>'Spam' instance has no attribute 'eggs'</code>.  This may
-+<b>break code</b> that expects the message to be exactly the attribute
-+name.
-+
-+
-+New Modules in 1.6
-+------------------
-+
-+UserString - base class for deriving from the string type.
-+
-+distutils - tools for distributing Python modules.
-+
-+robotparser - parse a robots.txt file, for writing web spiders.
-+(Moved from Tools/webchecker/.)
-+
-+linuxaudiodev - audio for Linux.
-+
-+mmap - treat a file as a memory buffer.  (Windows and Unix.)
-+
-+sre - regular expressions (fast, supports unicode).  Currently, this
-+code is very rough.  Eventually, the re module will be reimplemented
-+using sre (without changes to the re API).
-+
-+filecmp - supersedes the old cmp.py and dircmp.py modules.
-+
-+tabnanny - check Python sources for tab-width dependance.  (Moved from
-+Tools/scripts/.)
-+
-+urllib2 - new and improved but incompatible version of urllib (still
-+experimental).
-+
-+zipfile - read and write zip archives.
-+
-+codecs - support for Unicode encoders/decoders.
-+
-+unicodedata - provides access to the Unicode 3.0 database.
-+
-+_winreg - Windows registry access.
-+
-+encodings - package which provides a large set of standard codecs --
-+currently only for the new Unicode support. It has a drop-in extension
-+mechanism which allows you to add new codecs by simply copying them
-+into the encodings package directory. Asian codec support will
-+probably be made available as separate distribution package built upon
-+this technique and the new distutils package.
-+
-+
-+Changed Modules
-+---------------
-+
-+readline, ConfigParser, cgi, calendar, posix, readline, xmllib, aifc,
-+chunk, wave, random, shelve, nntplib - minor enhancements.
-+
-+socket, httplib, urllib - optional OpenSSL support (Unix only).
-+
-+_tkinter - support for 8.0 up to 8.3.  Support for versions older than
-+8.0 has been dropped.
-+
-+string - most of this module is deprecated now that strings have
-+methods.  This no longer uses the built-in strop module, but takes
-+advantage of the new string methods to provide transparent support for
-+both Unicode and ordinary strings.
-+
-+
-+Changes on Windows
-+------------------
-+
-+The installer no longer runs a separate Tcl/Tk installer; instead, it
-+installs the needed Tcl/Tk files directly in the Python directory.  If
-+you already have a Tcl/Tk installation, this wastes some disk space
-+(about 4 Megs) but avoids problems with conflincting Tcl/Tk
-+installations, and makes it much easier for Python to ensure that
-+Tcl/Tk can find all its files.  Note: the alpha installers don't
-+include the documentation.
-+
-+The Windows installer now installs by default in \Python16\ on the
-+default volume, instead of \Program Files\Python-1.6\.
-+
-+
-+Changed Tools
-+-------------
-+
-+IDLE - complete overhaul.  See the <a href="../idle/">IDLE home
-+page</a> for more information.  (Python 1.6 alpha 1 will come with
-+IDLE 0.6.)
-+
-+Tools/i18n/pygettext.py - Python equivalent of xgettext(1).  A message
-+text extraction tool used for internationalizing applications written
-+in Python.
-+
-+
-+Obsolete Modules
-+----------------
-+
-+stdwin and everything that uses it.  (Get Python 1.5.2 if you need
-+it. :-)
-+
-+soundex.  (Skip Montanaro has a version in Python but it won't be
-+included in the Python release.)
-+
-+cmp, cmpcache, dircmp.  (Replaced by filecmp.)
-+
-+dump.  (Use pickle.)
-+
-+find.  (Easily coded using os.walk().)
-+
-+grep.  (Not very useful as a library module.)
-+
-+packmail.  (No longer has any use.)
-+
-+poly, zmod.  (These were poor examples at best.)
-+
-+strop.  (No longer needed by the string module.)
-+
-+util.  (This functionality was long ago built in elsewhere).
-+
-+whatsound.  (Use sndhdr.)
-+
-+
-+Detailed Changes from 1.6b1 to 1.6
-+----------------------------------
-+
-+- Slight changes to the CNRI license.  A copyright notice has been
-+added; the requirement to indicate the nature of modifications now
-+applies when making a derivative work available "to others" instead of
-+just "to the public"; the version and date are updated.  The new
-+license has a new handle.
-+
-+- Added the Tools/compiler package.  This is a project led by Jeremy
-+Hylton to write the Python bytecode generator in Python.
-+
-+- The function math.rint() is removed.
-+
-+- In Python.h, "#define _GNU_SOURCE 1" was added.
-+
-+- Version 0.9.1 of Greg Ward's distutils is included (instead of
-+version 0.9).
-+
-+- A new version of SRE is included.  It is more stable, and more
-+compatible with the old RE module.  Non-matching ranges are indicated
-+by -1, not None.  (The documentation said None, but the PRE
-+implementation used -1; changing to None would break existing code.)
-+
-+- The winreg module has been renamed to _winreg.  (There are plans for
-+a higher-level API called winreg, but this has not yet materialized in
-+a form that is acceptable to the experts.)
-+
-+- The _locale module is enabled by default.
-+
-+- Fixed the configuration line for the _curses module.
-+
-+- A few crashes have been fixed, notably <file>.writelines() with a
-+list containing non-string objects would crash, and there were
-+situations where a lost SyntaxError could dump core.
-+
-+- The <list>.extend() method now accepts an arbitrary sequence
-+argument.
-+
-+- If __str__() or __repr__() returns a Unicode object, this is
-+converted to an 8-bit string.
-+
-+- Unicode string comparisons is no longer aware of UTF-16
-+encoding peculiarities; it's a straight 16-bit compare.
-+
-+- The Windows installer now installs the LICENSE file and no longer
-+registers the Python DLL version in the registry (this is no longer
-+needed).  It now uses Tcl/Tk 8.3.2.
-+
-+- A few portability problems have been fixed, in particular a
-+compilation error involving socklen_t.
-+
-+- The PC configuration is slightly friendlier to non-Microsoft
-+compilers.
-+
-+
-+======================================================================
-+
-+
-+======================================
-+==> Release 1.5.2 (April 13, 1999) <==
-+======================================
-+
-+From 1.5.2c1 to 1.5.2 (final)
-+=============================
-+
-+Tue Apr 13 15:44:49 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * PCbuild/python15.wse: Bump version to 1.5.2 (final)
-+
-+      * PCbuild/python15.dsp: Added shamodule.c
-+
-+      * PC/config.c: Added sha module!
-+
-+      * README, Include/patchlevel.h: Prepare for final release.
-+
-+      * Misc/ACKS:
-+      More (Cameron Laird is honorary; the others are 1.5.2c1 testers).
-+
-+      * Python/thread_solaris.h:
-+      While I can't really test this thoroughly, Pat Knight and the Solaris
-+      man pages suggest that the proper thing to do is to add THR_NEW_LWP to
-+      the flags on thr_create(), and that there really isn't a downside, so
-+      I'll do that.
-+
-+      * Misc/ACKS:
-+      Bunch of new names who helped iron out the last wrinkles of 1.5.2.
-+
-+      * PC/python_nt.rc:
-+      Bump the myusterious M$ version number from 1,5,2,1 to 1,5,2,3.
-+      (I can't even display this on NT, maybe Win/98 can?)
-+
-+      * Lib/pstats.py:
-+      Fix mysterious references to jprofile that were in the source since
-+      its creation.  I'm assuming these were once valid references to "Jim
-+      Roskind's profile"...
-+
-+      * Lib/Attic/threading_api.py:
-+      Removed; since long subsumed in Doc/lib/libthreading.tex
-+
-+      * Modules/socketmodule.c:
-+      Put back __osf__ support for gethostbyname_r(); the real bug was that
-+      it was being used even without threads.  This of course might be an
-+      all-platform problem so now we only use the _r variant when we are
-+      using threads.
-+
-+Mon Apr 12 22:51:20 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Modules/cPickle.c:
-+      Fix accidentally reversed NULL test in load_mark().  Suggested by
-+      Tamito Kajiyama.  (This caused a bug only on platforms where malloc(0)
-+      returns NULL.)
-+
-+      * README:
-+      Add note about popen2 problem on Linux noticed by Pablo Bleyer.
-+
-+      * README: Add note about -D_REENTRANT for HP-UX 10.20.
-+
-+      * Modules/Makefile.pre.in: 'clean' target should remove hassignal.
-+
-+      * PC/Attic/vc40.mak, PC/readme.txt:
-+      Remove all VC++ info (except VC 1.5) from readme.txt;
-+      remove the VC++ 4.0 project file; remove the unused _tkinter extern defs.
-+
-+      * README: Clarify PC build instructions (point to PCbuild).
-+
-+      * Modules/zlibmodule.c: Cast added by Jack Jansen (for Mac port).
-+
-+      * Lib/plat-sunos5/CDIO.py, Lib/plat-linux2/CDROM.py:
-+      Forgot to add this file.  CDROM device parameters.
-+
-+      * Lib/gzip.py: Two different changes.
-+
-+      1. Jack Jansen reports that on the Mac, the time may be negative, and
-+      solves this by adding a write32u() function that writes an unsigned
-+      long.
-+
-+      2. On 64-bit platforms the CRC comparison fails; I've fixed this by
-+      casting both values to be compared to "unsigned long" i.e. modulo
-+      0x100000000L.
-+
-+Sat Apr 10 18:42:02 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * PC/Attic/_tkinter.def: No longer needed.
-+
-+      * Misc/ACKS: Correct missed character in Andrew Dalke's name.
-+
-+      * README: Add DEC Ultrix notes (from Donn Cave's email).
-+
-+      * configure: The usual
-+
-+      * configure.in:
-+      Quote a bunch of shell variables used in test, related to long-long.
-+
-+      * Objects/fileobject.c, Modules/shamodule.c, Modules/regexpr.c:
-+      casts for picky compilers.
-+
-+      * Modules/socketmodule.c:
-+      3-arg gethostbyname_r doesn't really work on OSF/1.
-+
-+      * PC/vc15_w31/_.c, PC/vc15_lib/_.c, Tools/pynche/__init__.py:
-+      Avoid totally empty files.
-+
-+Fri Apr  9 14:56:35 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Tools/scripts/fixps.py: Use re instead of regex.
-+      Don't rewrite the file in place.
-+      (Reported by Andy Dustman.)
-+
-+      * Lib/netrc.py, Lib/shlex.py: Get rid of #! line
-+
-+Thu Apr  8 23:13:37 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * PCbuild/python15.wse: Use the Tcl 8.0.5 installer.
-+      Add a variable %_TCL_% that makes it easier to switch to a different version.
-+
-+
-+======================================================================
-+
-+
-+From 1.5.2b2 to 1.5.2c1
-+=======================
-+
-+Thu Apr  8 23:13:37 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * PCbuild/python15.wse:
-+      Release 1.5.2c1.  Add IDLE and Uninstall to program group.
-+      Don't distribute zlib.dll.  Tweak some comments.
-+
-+      * PCbuild/zlib.dsp: Now using static zlib 1.1.3
-+
-+      * Lib/dos-8x3/userdict.py, Lib/dos-8x3/userlist.py, Lib/dos-8x3/test_zli.py, Lib/dos-8x3/test_use.py, Lib/dos-8x3/test_pop.py, Lib/dos-8x3/test_pic.py, Lib/dos-8x3/test_ntp.py, Lib/dos-8x3/test_gzi.py, Lib/dos-8x3/test_fcn.py, Lib/dos-8x3/test_cpi.py, Lib/dos-8x3/test_bsd.py, Lib/dos-8x3/posixfil.py, Lib/dos-8x3/mimetype.py, Lib/dos-8x3/nturl2pa.py, Lib/dos-8x3/compilea.py, Lib/dos-8x3/exceptio.py, Lib/dos-8x3/basehttp.py:
-+      The usual
-+
-+      * Include/patchlevel.h: Release 1.5.2c1
-+
-+      * README: Release 1.5.2c1.
-+
-+      * Misc/NEWS: News for the 1.5.2c1 release.
-+
-+      * Lib/test/test_strftime.py:
-+      On Windows, we suddenly find, strftime() may return "" for an
-+      unsupported format string.  (I guess this is because the logic for
-+      deciding whether to reallocate the buffer or not has been improved.)
-+      This caused the test code to crash on result[0].  Fix this by assuming
-+      an empty result also means the format is not supported.
-+
-+      * Demo/tkinter/matt/window-creation-w-location.py:
-+      This demo imported some private code from Matt.  Make it cripple along.
-+
-+      * Lib/lib-tk/Tkinter.py:
-+      Delete an accidentally checked-in feature that actually broke more
-+      than was worth it: when deleting a canvas item, it would try to
-+      automatically delete the bindings for that item.  Since there's
-+      nothing that says you can't reuse the tag and still have the bindings,
-+      this is not correct.  Also, it broke at least one demo
-+      (Demo/tkinter/matt/rubber-band-box-demo-1.py).
-+
-+      * Python/thread_wince.h: Win/CE thread support by Mark Hammond.
-+
-+Wed Apr  7 20:23:17 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Modules/zlibmodule.c:
-+      Patch by Andrew Kuchling to unflush() (flush() for deflating).
-+      Without this, if inflate() returned Z_BUF_ERROR asking for more output
-+      space, we would report the error; now, we increase the buffer size and
-+      try again, just as for Z_OK.
-+
-+      * Lib/test/test_gzip.py: Use binary mode for all gzip files we open.
-+
-+      * Tools/idle/ChangeLog: New change log.
-+
-+      * Tools/idle/README.txt, Tools/idle/NEWS.txt: New version.
-+
-+      * Python/pythonrun.c:
-+      Alas, get rid of the Win specific hack to ask the user to press Return
-+      before exiting when an error happened.  This didn't work right when
-+      Python is invoked from a daemon.
-+
-+      * Tools/idle/idlever.py: Version bump awaiting impending new release.
-+      (Not much has changed :-( )
-+
-+      * Lib/lib-tk/Tkinter.py:
-+      lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift,
-+      so the preferred name for them is tag_lower, tag_raise
-+      (similar to tag_bind, and similar to the Text widget);
-+      unfortunately can't delete the old ones yet (maybe in 1.6)
-+
-+      * Python/thread.c, Python/strtod.c, Python/mystrtoul.c, Python/import.c, Python/ceval.c:
-+      Changes by Mark Hammond for Windows CE.  Mostly of the form
-+        #ifdef DONT_HAVE_header_H ... #endif around #include <header.h>.
-+
-+      * Python/bltinmodule.c:
-+      Remove unused variable from complex_from_string() code.
-+
-+      * Include/patchlevel.h:
-+      Add the possibility of a gamma release (release candidate).
-+      Add '+' to string version number to indicate we're beyond b2 now.
-+
-+      * Modules/posixmodule.c: Add extern decl for fsync() for SunOS 4.x.
-+
-+      * Lib/smtplib.py: Changes by Per Cederquist and The Dragon.
-+
-+      Per writes:
-+
-+      """
-+      The application where Signum Support uses smtplib needs to be able to
-+      report good error messages to the user when sending email fails.  To
-+      help in diagnosing problems it is useful to be able to report the
-+      entire message sent by the server, not only the SMTP error code of the
-+      offending command.
-+
-+      A lot of the functions in sendmail.py unfortunately discards the
-+      message, leaving only the code.  The enclosed patch fixes that
-+      problem.
-+
-+      The enclosed patch also introduces a base class for exceptions that
-+      include an SMTP error code and error message, and make the code and
-+      message available on separate attributes, so that surrounding code can
-+      deal with them in whatever way it sees fit.  I've also added some
-+      documentation to the exception classes.
-+
-+      The constructor will now raise an exception if it cannot connect to
-+      the SMTP server.
-+
-+      The data() method will raise an SMTPDataError if it doesn't receive
-+      the expected 354 code in the middle of the exchange.
-+
-+      According to section 5.2.10 of RFC 1123 a smtp client must accept "any
-+      text, including no text at all" after the error code.  If the response
-+      of a HELO command contains no text self.helo_resp will be set to the
-+      empty string ("").  The patch fixes the test in the sendmail() method
-+      so that helo_resp is tested against None; if it has the empty string
-+      as value the sendmail() method would invoke the helo() method again.
-+
-+      The code no longer accepts a -1 reply from the ehlo() method in
-+      sendmail().
-+
-+      [Text about removing SMTPRecipientsRefused deleted --GvR]
-+      """
-+
-+      and also:
-+
-+      """
-+      smtplib.py appends an extra blank line to the outgoing mail if the
-+      `msg' argument to the sendmail method already contains a trailing
-+      newline.  This patch should fix the problem.
-+      """
-+
-+      The Dragon writes:
-+
-+      """
-+              Mostly I just re-added the SMTPRecipientsRefused exception
-+      (the exeption object now has the appropriate info in it ) [Per had
-+      removed this in his patch --GvR] and tweaked the behavior of the
-+      sendmail method whence it throws the newly added SMTPHeloException (it
-+      was closing the connection, which it shouldn't.  whatever catches the
-+      exception should do that. )
-+
-+              I pondered the change of the return values to tuples all around,
-+      and after some thinking I decided that regularizing the return values was
-+      too much of the Right Thing (tm) to not do.
-+
-+              My one concern is that code expecting an integer & getting a tuple
-+      may fail silently.
-+
-+      (i.e. if it's doing :
-+
-+            x.somemethod() >= 400:
-+      expecting an integer, the expression will always be true if it gets a
-+      tuple instead. )
-+
-+              However, most smtplib code I've seen only really uses the
-+      sendmail() method, so this wouldn't bother it.  Usually code I've seen
-+      that calls the other methods usually only calls helo() and ehlo() for
-+      doing ESMTP, a feature which was not in the smtplib included with 1.5.1,
-+      and thus I would think not much code uses it yet.
-+      """
-+
-+Tue Apr  6 19:38:18 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/test/test_ntpath.py:
-+      Fix the tests now that splitdrive() no longer treats UNC paths special.
-+      (Some tests converted to splitunc() tests.)
-+
-+      * Lib/ntpath.py:
-+      Withdraw the UNC support from splitdrive().  Instead, a new function
-+      splitunc() parses UNC paths.  The contributor of the UNC parsing in
-+      splitdrive() doesn't like it, but I haven't heard a good reason to
-+      keep it, and it causes some problems.  (I think there's a
-+      philosophical problem -- to me, the split*() functions are purely
-+      syntactical, and the fact that \\foo is not a valid path doesn't mean
-+      that it shouldn't be considered an absolute path.)
-+
-+      Also (quite separately, but strangely related to the philosophical
-+      issue above) fix abspath() so that if win32api exists, it doesn't fail
-+      when the path doesn't actually exist -- if GetFullPathName() fails,
-+      fall back on the old strategy (join with getcwd() if neccessary, and
-+      then use normpath()).
-+
-+      * configure.in, configure, config.h.in, acconfig.h:
-+      For BeOS PowerPC.  Chris Herborth.
-+
-+Mon Apr  5 21:54:14 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Modules/timemodule.c:
-+      Jonathan Giddy notes, and Chris Lawrence agrees, that some comments on
-+      #else/#endif are wrong, and that #if HAVE_TM_ZONE should be #ifdef.
-+
-+      * Misc/ACKS:
-+      Bunch of new contributors, including 9 who contributed to the Docs,
-+      reported by Fred.
-+
-+Mon Apr  5 18:37:59 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Lib/gzip.py:
-+      Oops, missed mode parameter to open().
-+
-+      * Lib/gzip.py:
-+      Made the default mode 'rb' instead of 'r', for better cross-platform
-+      support.  (Based on comment on the documentation by Bernhard Reiter
-+      <bernhard@csd.uwm.edu>).
-+
-+Fri Apr  2 22:18:25 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Tools/scripts/dutree.py:
-+      For reasons I dare not explain, this script should always execute
-+      main() when imported (in other words, it is not usable as a module).
-+
-+Thu Apr  1 15:32:30 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/test/test_cpickle.py: Jonathan Giddy write:
-+
-+      In test_cpickle.py, the module os got imported, but the line to remove
-+      the temp file has gone missing.
-+
-+Tue Mar 30 20:17:31 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/BaseHTTPServer.py: Per Cederqvist writes:
-+
-+      If you send something like "PUT / HTTP/1.0" to something derived from
-+      BaseHTTPServer that doesn't define do_PUT, you will get a response
-+      that begins like this:
-+
-+              HTTP/1.0 501 Unsupported method ('do_PUT')
-+              Server: SimpleHTTP/0.3 Python/1.5
-+              Date: Tue, 30 Mar 1999 18:53:53 GMT
-+
-+      The server should complain about 'PUT' instead of 'do_PUT'.  This
-+      patch should fix the problem.
-+
-+Mon Mar 29 20:33:21 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/smtplib.py: Patch by Per Cederqvist, who writes:
-+
-+      """
-+       - It needlessly used the makefile() method for each response that is
-+         read from the SMTP server.
-+
-+       - If the remote SMTP server closes the connection unexpectedly the
-+         code raised an IndexError.  It now raises an SMTPServerDisconnected
-+         exception instead.
-+
-+       - The code now checks that all lines in a multiline response actually
-+         contains an error code.
-+      """
-+
-+      The Dragon approves.
-+
-+Mon Mar 29 20:25:40 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Lib/compileall.py:
-+      When run as a script, report failures in the exit code as well.
-+      Patch largely based on changes by Andrew Dalke, as discussed in the
-+      distutils-sig.
-+
-+Mon Mar 29 20:23:41 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/urllib.py:
-+      Hack so that if a 302 or 301 redirect contains a relative URL, the
-+      right thing "just happens" (basejoin() with old URL).
-+
-+      * Modules/cPickle.c:
-+      Protection against picling to/from closed (real) file.
-+      The problem was reported by Moshe Zadka.
-+
-+      * Lib/test/test_cpickle.py:
-+      Test protection against picling to/from closed (real) file.
-+
-+      * Modules/timemodule.c: Chris Lawrence writes:
-+
-+      """
-+      The GNU folks, in their infinite wisdom, have decided not to implement
-+      altzone in libc6; this would not be horrible, except that timezone
-+      (which is implemented) includes the current DST setting (i.e. timezone
-+      for Central is 18000 in summer and 21600 in winter).  So Python's
-+      timezone and altzone variables aren't set correctly during DST.
-+
-+      Here's a patch relative to 1.5.2b2 that (a) makes timezone and altzone
-+      show the "right" thing on Linux (by using the tm_gmtoff stuff
-+      available in BSD, which is how the GLIBC manual claims things should
-+      be done) and (b) should cope with the southern hemisphere.  In pursuit
-+      of (b), I also took the liberty of renaming the "summer" and "winter"
-+      variables to "july" and "jan".  This patch should also make certain
-+      time calculations on Linux actually work right (like the tz-aware
-+      functions in the rfc822 module).
-+
-+      (It's hard to find DST that's currently being used in the southern
-+      hemisphere; I tested using Africa/Windhoek.)
-+      """
-+
-+      * Lib/test/output/test_gzip:
-+      Jonathan Giddy discovered this file was missing.
-+
-+      * Modules/shamodule.c:
-+      Avoid warnings from AIX compiler.  Reported by Vladimir (AIX is my
-+      middlename) Marangozov, patch coded by Greg Stein.
-+
-+      * Tools/idle/ScriptBinding.py, Tools/idle/PyShell.py:
-+      At Tim Peters' recommendation, add a dummy flush() method to PseudoFile.
-+
-+Sun Mar 28 17:55:32 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Tools/scripts/ndiff.py: Tim Peters writes:
-+
-+      I should have waited overnight <wink/sigh>.  Nothing wrong with the one I
-+      sent, but I couldn't resist going on to add new -r1 / -r2 cmdline options
-+      for recreating the original files from ndiff's output.  That's attached, if
-+      you're game!  Us Windows guys don't usually have a sed sitting around
-+      <wink>.
-+
-+Sat Mar 27 13:34:01 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Tools/scripts/ndiff.py: Tim Peters writes:
-+
-+      Attached is a cleaned-up version of ndiff (added useful module
-+      docstring, now echo'ed in case of cmd line mistake); added -q option
-+      to suppress initial file identification lines; + other minor cleanups,
-+      & a slightly faster match engine.
-+
-+Fri Mar 26 22:36:00 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Tools/scripts/dutree.py:
-+      During display, if EPIPE is raised, it's probably because a pager was
-+      killed.  Discard the error in that case, but propogate it otherwise.
-+
-+Fri Mar 26 16:20:45 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/test/output/test_userlist, Lib/test/test_userlist.py:
-+      Test suite for UserList.
-+
-+      * Lib/UserList.py: Use isinstance() where appropriate.
-+      Reformatted with 4-space indent.
-+
-+Fri Mar 26 16:11:40 1999  Barry Warsaw  <bwarsaw@eric.cnri.reston.va.us>
-+
-+      * Tools/pynche/PyncheWidget.py:
-+      Helpwin.__init__(): The text widget should get focus.
-+
-+      * Tools/pynche/pyColorChooser.py:
-+      Removed unnecessary import `from PyncheWidget import PyncheWidget'
-+
-+Fri Mar 26 15:32:05 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/test/output/test_userdict, Lib/test/test_userdict.py:
-+      Test suite for UserDict
-+
-+      * Lib/UserDict.py: Improved a bunch of things.
-+      The constructor now takes an optional dictionary.
-+      Use isinstance() where appropriate.
-+
-+Thu Mar 25 22:38:49 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/test/output/test_pickle, Lib/test/output/test_cpickle, Lib/test/test_pickle.py, Lib/test/test_cpickle.py:
-+      Basic regr tests for pickle/cPickle
-+
-+      * Lib/pickle.py:
-+      Don't use "exec" in find_class().  It's slow, unnecessary, and (as AMK
-+      points out) it doesn't work in JPython Applets.
-+
-+Thu Mar 25 21:50:27 1999  Andrew Kuchling  <akuchlin@eric.cnri.reston.va.us>
-+
-+      * Lib/test/test_gzip.py:
-+      Added a simple test suite for gzip.  It simply opens a temp file,
-+      writes a chunk of compressed data, closes it, writes another chunk, and
-+      reads the contents back to verify that they are the same.
-+
-+      * Lib/gzip.py:
-+      Based on a suggestion from bruce@hams.com, make a trivial change to
-+      allow using the 'a' flag as a mode for opening a GzipFile.  gzip
-+      files, surprisingly enough, can be concatenated and then decompressed;
-+      the effect is to concatenate the two chunks of data.
-+
-+      If we support it on writing, it should also be supported on reading.
-+      This *wasn't* trivial, and required rearranging the code in the
-+      reading path, particularly the _read() method.
-+
-+      Raise IOError instead of RuntimeError in two cases, 'Not a gzipped file'
-+      and 'Unknown compression method'
-+
-+Thu Mar 25 21:25:01 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/test/test_b1.py:
-+      Add tests for float() and complex() with string args (Nick/Stephanie
-+      Lockwood).
-+
-+Thu Mar 25 21:21:08 1999  Andrew Kuchling  <akuchlin@eric.cnri.reston.va.us>
-+
-+      * Modules/zlibmodule.c:
-+      Add an .unused_data attribute to decompressor objects.  If .unused_data
-+      is not an empty string, this means that you have arrived at the
-+      end of the stream of compressed data, and the contents of .unused_data are
-+      whatever follows the compressed stream.
-+
-+Thu Mar 25 21:16:07 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Python/bltinmodule.c:
-+      Patch by Nick and Stephanie Lockwood to implement complex() with a string
-+      argument.  This closes TODO item 2.19.
-+
-+Wed Mar 24 19:09:00 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Tools/webchecker/wcnew.py: Added Samuel Bayer's new webchecker.
-+      Unfortunately his code breaks wcgui.py in a way that's not easy
-+      to fix.  I expect that this is a temporary situation --
-+      eventually Sam's changes will be merged back in.
-+      (The changes add a -t option to specify exceptions to the -x
-+      option, and explicit checking for #foo style fragment ids.)
-+
-+      * Objects/dictobject.c:
-+      Vladimir Marangozov contributed updated comments.
-+
-+      * Objects/bufferobject.c: Folded long lines.
-+
-+      * Lib/test/output/test_sha, Lib/test/test_sha.py:
-+      Added Jeremy's test code for the sha module.
-+
-+      * Modules/shamodule.c, Modules/Setup.in:
-+      Added Greg Stein and Andrew Kuchling's sha module.
-+      Fix comments about zlib version and URL.
-+
-+      * Lib/test/test_bsddb.py: Remove the temp file when we're done.
-+
-+      * Include/pythread.h: Conform to standard boilerplate.
-+
-+      * configure.in, configure, BeOS/linkmodule, BeOS/ar-fake:
-+      Chris Herborth: the new compiler in R4.1 needs some new options to work...
-+
-+      * Modules/socketmodule.c:
-+      Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
-+      data struct before calling gethostby{name,addr}_r(); (2) ignore the
-+      3/5/6 args determinations made by the configure script and switch on
-+      platform identifiers instead:
-+
-+      AIX, OSF have 3 args
-+      Sun, SGI have 5 args
-+      Linux has 6 args
-+
-+      On all other platforms, undef HAVE_GETHOSTBYNAME_R altogether.
-+
-+      * Modules/socketmodule.c:
-+      Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
-+
-+      * Lib/mailbox.py:
-+      Add readlines() to _Subfile class.  Not clear who would need it, but
-+      Chris Lawrence sent me a broken version; this one is a tad simpler and
-+      more conforming to the standard.
-+
-+Tue Mar 23 23:05:34 1999  Jeremy Hylton  <jhylton@eric.cnri.reston.va.us>
-+
-+      * Lib/gzip.py: use struct instead of bit-manipulate in Python
-+
-+Tue Mar 23 19:00:55 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Modules/Makefile.pre.in:
-+      Add $(EXE) to various occurrences of python so it will work on Cygwin
-+      with egcs (after setting EXE=.exe).  Patch by Norman Vine.
-+
-+      * configure, configure.in:
-+      Ack!  It never defined HAVE_GETHOSTBYNAME_R so that code was never tested!
-+
-+Mon Mar 22 22:25:39 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Include/thread.h:
-+      Adding thread.h -- unused but for b/w compatibility.
-+      As requested by Bill Janssen.
-+
-+      * configure.in, configure:
-+      Add code to test for all sorts of gethostbyname_r variants,
-+      donated by David Arnold.
-+
-+      * config.h.in, acconfig.h:
-+      Add symbols for gethostbyname_r variants (sigh).
-+
-+      * Modules/socketmodule.c: Clean up pass for the previous patches.
-+
-+      - Use HAVE_GETHOSTBYNAME_R_6_ARG instead of testing for Linux and
-+      glibc2.
-+
-+      - If gethostbyname takes 3 args, undefine HAVE_GETHOSTBYNAME_R --
-+      don't know what code should be used.
-+
-+      - New symbol USE_GETHOSTBYNAME_LOCK defined iff the lock should be used.
-+
-+      - Modify the gethostbyaddr() code to also hold on to the lock until
-+      after it is safe to release, overlapping with the Python lock.
-+
-+      (Note: I think that it could in theory be possible that Python code
-+      executed while gethostbyname_lock is held could attempt to reacquire
-+      the lock -- e.g. in a signal handler or destructor.  I will simply say
-+      "don't do that then.")
-+
-+      * Modules/socketmodule.c: Jonathan Giddy writes:
-+
-+      Here's a patch to fix the race condition, which wasn't fixed by Rob's
-+      patch.  It holds the gethostbyname lock until the results are copied out,
-+      which means that this lock and the Python global lock are held at the same
-+      time.  This shouldn't be a problem as long as the gethostbyname lock is
-+      always acquired when the global lock is not held.
-+
-+Mon Mar 22 19:25:30 1999  Andrew Kuchling  <akuchlin@eric.cnri.reston.va.us>
-+
-+      * Modules/zlibmodule.c:
-+      Fixed the flush() method of compression objects; the test for
-+          the end of loop was incorrect, and failed when the flushmode != Z_FINISH.
-+          Logic cleaned up and commented.
-+
-+      * Lib/test/test_zlib.py:
-+      Added simple test for the flush() method of compression objects, trying the
-+          different flush values Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH.
-+
-+Mon Mar 22 15:28:08 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/shlex.py:
-+      Bug reported by Tobias Thelen: missing "self." in assignment target.
-+
-+Fri Mar 19 21:50:11 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Modules/arraymodule.c:
-+      Use an unsigned cast to avoid a warning in VC++.
-+
-+      * Lib/dospath.py, Lib/ntpath.py:
-+      New code for split() by Tim Peters, behaves more like posixpath.split().
-+
-+      * Objects/floatobject.c:
-+      Fix a problem with Vladimir's PyFloat_Fini code: clear the free list; if
-+      a block cannot be freed, add its free items back to the free list.
-+      This is necessary to avoid leaking when Python is reinitialized later.
-+
-+      * Objects/intobject.c:
-+      Fix a problem with Vladimir's PyInt_Fini code: clear the free list; if
-+      a block cannot be freed, add its free items back to the free list, and
-+      add its valid ints back to the small_ints array if they are in range.
-+      This is necessary to avoid leaking when Python is reinitialized later.
-+
-+      * Lib/types.py:
-+      Added BufferType, the type returned by the new builtin buffer().  Greg Stein.
-+
-+      * Python/bltinmodule.c:
-+      New builtin buffer() creates a derived read-only buffer from any
-+      object that supports the buffer interface (e.g. strings, arrays).
-+
-+      * Objects/bufferobject.c:
-+      Added check for negative offset for PyBuffer_FromObject and check for
-+      negative size for PyBuffer_FromMemory.  Greg Stein.
-+
-+Thu Mar 18 15:10:44 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/urlparse.py: Sjoerd Mullender writes:
-+
-+      If a filename on Windows starts with \\, it is converted to a URL
-+      which starts with ////.  If this URL is passed to urlparse.urlparse
-+      you get a path that starts with // (and an empty netloc).  If you pass
-+      the result back to urlparse.urlunparse, you get a URL that starts with
-+      //, which is parsed differently by urlparse.urlparse.  The fix is to
-+      add the (empty) netloc with accompanying slashes if the path in
-+      urlunparse starts with //.  Do this for all schemes that use a netloc.
-+
-+      * Lib/nturl2path.py: Sjoerd Mullender writes:
-+
-+      Pathnames of files on other hosts in the same domain
-+      (\\host\path\to\file) are not translated correctly to URLs and back.
-+      The URL should be something like file:////host/path/to/file.
-+      Note that a combination of drive letter and remote host is not
-+      possible.
-+
-+Wed Mar 17 22:30:10 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/urlparse.py:
-+      Delete non-standard-conforming code in urljoin() that would use the
-+      netloc from the base url as the default netloc for the resulting url
-+      even if the schemes differ.
-+
-+      Once upon a time, when the web was wild, this was a valuable hack
-+      because some people had a URL referencing an ftp server colocated with
-+      an http server without having the host in the ftp URL (so they could
-+      replicate it or change the hostname easily).
-+
-+      More recently, after the file: scheme got added back to the list of
-+      schemes that accept a netloc, it turns out that this caused weirdness
-+      when joining an http: URL with a file: URL -- the resulting file: URL
-+      would always inherit the host from the http: URL because the file:
-+      scheme supports a netloc but in practice never has one.
-+
-+      There are two reasons to get rid of the old, once-valuable hack,
-+      instead of removing the file: scheme from the uses_netloc list.  One,
-+      the RFC says that file: uses the netloc syntax, and does not endorse
-+      the old hack.  Two, neither netscape 4.5 nor IE 4.0 support the old
-+      hack.
-+
-+      * Include/ceval.h, Include/abstract.h:
-+      Add DLL level b/w compat for PySequence_In and PyEval_CallObject
-+
-+Tue Mar 16 21:54:50 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/lib-tk/Tkinter.py: Bug reported by Jim Robinson:
-+
-+      An attempt to execute grid_slaves with arguments (0,0) results in
-+      *all* of the slaves being returned, not just the slave associated with
-+      row 0, column 0.  This is because the test for arguments in the method
-+      does not test to see if row (and column) does not equal None, but
-+      rather just whether is evaluates to non-false.  A value of 0 fails
-+      this test.
-+
-+Tue Mar 16 14:17:48 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Modules/cmathmodule.c:
-+      Docstring fix:  acosh() returns the hyperbolic arccosine, not the
-+      hyperbolic cosine.  Problem report via David Ascher by one of his
-+      students.
-+
-+Mon Mar 15 21:40:59 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * configure.in:
-+      Should test for gethost*by*name_r, not for gethostname_r (which
-+      doesn't exist and doesn't make sense).
-+
-+      * Modules/socketmodule.c:
-+      Patch by Rob Riggs for Linux -- glibc2 has a different argument
-+      converntion for gethostbyname_r() etc. than Solaris!
-+
-+      * Python/thread_pthread.h: Rob Riggs wrote:
-+
-+      """
-+      Spec says that on success pthread_create returns 0. It does not say
-+      that an error code will be < 0. Linux glibc2 pthread_create() returns
-+      ENOMEM (12) when one exceed process limits. (It looks like it should
-+      return EAGAIN, but that's another story.)
-+
-+      For reference, see:
-+      http://www.opengroup.org/onlinepubs/7908799/xsh/pthread_create.html
-+      """
-+
-+      [I have a feeling that similar bugs were fixed before; perhaps someone
-+      could check that all error checks no check for != 0?]
-+
-+      * Tools/bgen/bgen/bgenObjectDefinition.py:
-+      New mixin class that defines cmp and hash that use
-+      the ob_itself pointer.  This allows (when using the mixin)
-+      different Python objects pointing to the same C object and
-+      behaving well as dictionary keys.
-+
-+      Or so sez Jack Jansen...
-+
-+      * Lib/urllib.py: Yet another patch by Sjoerd Mullender:
-+
-+      Don't convert URLs to URLs using pathname2url.
-+
-+Fri Mar 12 22:15:43 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/cmd.py: Patch by Michael Scharf.  He writes:
-+
-+          The module cmd requires for each do_xxx command a help_xxx
-+          function. I think this is a little old fashioned.
-+
-+          Here is a patch: use the docstring as help if no help_xxx
-+          function can be found.
-+
-+      [I'm tempted to rip out all the help_* functions from pdb, but I'll
-+      resist it.  Any takers?  --Guido]
-+
-+      * Tools/freeze/freeze.py: Bug submitted by Wayne Knowles, who writes:
-+
-+         Under Windows, python freeze.py -o hello hello.py
-+         creates all the correct files in the hello subdirectory, but the
-+         Makefile has the directory prefix in it for frozen_extensions.c
-+         nmake fails because it tries to locate hello/frozen_extensions.c
-+
-+      (His fix adds a call to os.path.basename() in the appropriate place.)
-+
-+      * Objects/floatobject.c, Objects/intobject.c:
-+      Vladimir has restructured his code somewhat so that the blocks are now
-+      represented by an explicit structure.  (There are still too many casts
-+      in the code, but that may be unavoidable.)
-+
-+      Also added code so that with -vv it is very chatty about what it does.
-+
-+      * Demo/zlib/zlibdemo.py, Demo/zlib/minigzip.py:
-+      Change #! line to modern usage; also chmod +x
-+
-+      * Demo/pdist/rrcs, Demo/pdist/rcvs, Demo/pdist/rcsbump:
-+      Change #! line to modern usage
-+
-+      * Lib/nturl2path.py, Lib/urllib.py: From: Sjoerd Mullender
-+
-+      The filename to URL conversion didn't properly quote special
-+      characters.
-+      The URL to filename didn't properly unquote special chatacters.
-+
-+      * Objects/floatobject.c:
-+      OK, try again.  Vladimir gave me a fix for the alignment bus error,
-+      so here's his patch again.  This time it works (at least on Solaris,
-+      Linux and Irix).
-+
-+Thu Mar 11 23:21:23 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Tools/idle/PathBrowser.py:
-+      Don't crash when sys.path contains an empty string.
-+
-+      * Tools/idle/PathBrowser.py:
-+      - Don't crash in the case where a superclass is a string instead of a
-+      pyclbr.Class object; this can happen when the superclass is
-+      unrecognizable (to pyclbr), e.g. when module renaming is used.
-+
-+      - Show a watch cursor when calling pyclbr (since it may take a while
-+      recursively parsing imported modules!).
-+
-+Thu Mar 11 16:04:04 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Lib/mimetypes.py:
-+      Added .rdf and .xsl as application/xml types.  (.rdf is for the
-+      Resource Description Framework, a metadata encoding, and .xsl is for
-+      the Extensible Stylesheet Language.)
-+
-+Thu Mar 11 13:26:23 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/test/output/test_popen2, Lib/test/test_popen2.py:
-+      Test for popen2 module, by Chris Tismer.
-+
-+      * Objects/floatobject.c:
-+      Alas, Vladimir's patch caused a bus error (probably double
-+      alignment?), and I didn't test it.  Withdrawing it for now.
-+
-+Wed Mar 10 22:55:47 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Objects/floatobject.c:
-+      Patch by Vladimir Marangoz to allow freeing of the allocated blocks of
-+      floats on finalization.
-+
-+      * Objects/intobject.c:
-+      Patch by Vladimir Marangoz to allow freeing of the allocated blocks of
-+      integers on finalization.
-+
-+      * Tools/idle/EditorWindow.py, Tools/idle/Bindings.py:
-+      Add PathBrowser to File module
-+
-+      * Tools/idle/PathBrowser.py:
-+      "Path browser" - 4 scrolled lists displaying:
-+          directories on sys.path
-+          modules in selected directory
-+          classes in selected module
-+          methods of selected class
-+
-+      Sinlge clicking in a directory, module or class item updates the next
-+      column with info about the selected item.  Double clicking in a
-+      module, class or method item opens the file (and selects the clicked
-+      item if it is a class or method).
-+
-+      I guess eventually I should be using a tree widget for this, but the
-+      ones I've seen don't work well enough, so for now I use the old
-+      Smalltalk or NeXT style multi-column hierarchical browser.
-+
-+      * Tools/idle/MultiScrolledLists.py:
-+      New utility: multiple scrolled lists in parallel
-+
-+      * Tools/idle/ScrolledList.py: - White background.
-+      - Display "(None)" (or text of your choosing) when empty.
-+      - Don't set the focus.
-+
-+Tue Mar  9 19:31:21 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/urllib.py:
-+      open_http also had the 'data is None' test backwards.  don't call with the
-+      extra argument if data is None.
-+
-+      * Demo/embed/demo.c:
-+      Call Py_SetProgramName() instead of redefining getprogramname(),
-+      reflecting changes in the runtime around 1.5 or earlier.
-+
-+      * Python/ceval.c:
-+      Always test for an error return (usually NULL or -1) without setting
-+      an exception.
-+
-+      * Modules/timemodule.c: Patch by Chris Herborth for BeOS code.
-+      He writes:
-+
-+      I had an off-by-1000 error in floatsleep(),
-+      and the problem with time.clock() is that it's not implemented properly
-+      on QNX... ANSI says it's supposed to return _CPU_ time used by the
-+      process, but on QNX it returns the amount of real time used... so I was
-+      confused.
-+
-+      * Tools/bgen/bgen/macsupport.py: Small change by Jack Jansen.
-+      Test for self.returntype behaving like OSErr rather than being it.
-+
-+Thu Feb 25 16:14:58 1999  Jeremy Hylton  <jhylton@eric.cnri.reston.va.us>
-+
-+      * Lib/urllib.py:
-+      http_error had the 'data is None' test backwards.  don't call with the
-+      extra argument if data is None.
-+
-+      * Lib/urllib.py: change indentation from 8 spaces to 4 spaces
-+
-+      * Lib/urllib.py: pleasing the tabnanny
-+
-+Thu Feb 25 14:26:02 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Lib/colorsys.py:
-+      Oops, one more "x, y, z" to convert...
-+
-+      * Lib/colorsys.py:
-+      Adjusted comment at the top to be less confusing, following Fredrik
-+      Lundh's example.
-+
-+      Converted comment to docstring.
-+
-+Wed Feb 24 18:49:15 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Lib/toaiff.py:
-+      Use sndhdr instead of the obsolete whatsound module.
-+
-+Wed Feb 24 18:42:38 1999  Jeremy Hylton  <jhylton@eric.cnri.reston.va.us>
-+
-+      * Lib/urllib.py:
-+      When performing a POST request, i.e. when the second argument to
-+      urlopen is used to specify form data, make sure the second argument is
-+      threaded through all of the http_error_NNN calls.  This allows error
-+      handlers like the redirect and authorization handlers to properly
-+      re-start the connection.
-+
-+Wed Feb 24 16:25:17 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/mhlib.py: Patch by Lars Wirzenius:
-+
-+              o the initial comment is wrong: creating messages is already
-+                implemented
-+
-+              o Message.getbodytext: if the mail or it's part contains an
-+                empty content-transfer-encoding header, the code used to
-+                break; the change below treats an empty encoding value the same
-+                as the other types that do not need decoding
-+
-+              o SubMessage.getbodytext was missing the decode argument; the
-+                change below adds it; I also made it unconditionally return
-+                the raw text if decoding was not desired, because my own
-+                routines needed that (and it was easier than rewriting my
-+                own routines ;-)
-+
-+Wed Feb 24 00:35:43 1999  Barry Warsaw  <bwarsaw@eric.cnri.reston.va.us>
-+
-+      * Python/bltinmodule.c (initerrors):
-+      Make sure that the exception tuples ("base-classes" when
-+      string-based exceptions are used) reflect the real class hierarchy,
-+      i.e. that SystemExit derives from Exception not StandardError.
-+
-+      * Lib/exceptions.py:
-+      Document the correct class hierarchy for SystemExit.  It is not an
-+      error and so it derives from Exception and not SystemError.  The
-+      docstring was incorrect but the implementation was fine.
-+
-+Tue Feb 23 23:07:51 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/shutil.py:
-+      Add import sys, needed by reference to sys.exc_info() in rmtree().
-+      Discovered by Mitch Chapman.
-+
-+      * config.h.in:
-+      Now that we don't have AC_CHECK_LIB(m, pow), the HAVE_LIBM symbol
-+      disappears.  It wasn't used anywhere anyway...
-+
-+      * Modules/arraymodule.c:
-+      Carefully check for overflow when allocating the memory for fromfile
-+      -- someone tried to pass in sys.maxint and got bitten by the bogus
-+      calculations.
-+
-+      * configure.in:
-+      Get rid of AC_CHECK_LIB(m, pow) since this is taken care of later with
-+      LIBM (from --with-libm=...); this actually broke the customizability
-+      offered by the latter option.  Thanks go to Clay Spence for reporting
-+      this.
-+
-+      * Lib/test/test_dl.py:
-+      1. Print the error message (carefully) when a dl.open() fails in verbose mode.
-+      2. When no test case worked, raise ImportError instead of failing.
-+
-+      * Python/bltinmodule.c:
-+      Patch by Tim Peters to improve the range checks for range() and
-+      xrange(), especially for platforms where int and long are different
-+      sizes (so sys.maxint isn't actually the theoretical limit for the
-+      length of a list, but the largest C int is -- sys.maxint is the
-+      largest Python int, which is actually a C long).
-+
-+      * Makefile.in:
-+      1. Augment the DG/UX rule so it doesn't break the BeOS build.
-+      2. Add $(EXE) to various occurrences of python so it will work on
-+         Cygwin with egcs (after setting EXE=.exe).  These patches by
-+         Norman Vine.
-+
-+      * Lib/posixfile.py:
-+      According to Jeffrey Honig, bsd/os 2.0 - 4.0 should be added to the
-+      list (of bsd variants that have a different lock structure).
-+
-+      * Lib/test/test_fcntl.py:
-+      According to Jeffrey Honig, bsd/os 4.0 should be added to the list.
-+
-+      * Modules/timemodule.c:
-+      Patch by Tadayoshi Funaba (with some changes) to be smarter about
-+      guessing what happened when strftime() returns 0.  Is it buffer
-+      overflow or was the result simply 0 bytes long?  (This happens for an
-+      empty format string, or when the format string is a single %Z and the
-+      timezone is unknown.)  if the buffer is at least 256 times as long as
-+      the format, assume the latter.
-+
-+Mon Feb 22 19:01:42 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/urllib.py:
-+      As Des Barry points out, we need to call pathname2url(file) in two
-+      calls to addinfourl() in open_file().
-+
-+      * Modules/Setup.in: Document *static* -- in two places!
-+
-+      * Modules/timemodule.c:
-+      We don't support leap seconds, so the seconds field of a time 9-tuple
-+      should be in the range [0-59].  Noted by Tadayoshi Funaba.
-+
-+      * Modules/stropmodule.c:
-+      In atoi(), don't use isxdigit() to test whether the last character
-+      converted was a "digit" -- use isalnum().  This test is there only to
-+      guard against "+" or "-" being interpreted as a valid int literal.
-+      Reported by Takahiro Nakayama.
-+
-+      * Lib/os.py:
-+      As Finn Bock points out, _P_WAIT etc. don't have a leading underscore
-+      so they don't need to be treated specially here.
-+
-+Mon Feb 22 15:38:58 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Misc/NEWS:
-+      Typo:  "apparentlt" --> "apparently"
-+
-+Mon Feb 22 15:38:46 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
-+
-+      * Lib/urlparse.py: Steve Clift pointed out that 'file' allows a netloc.
-+
-+      * Modules/posixmodule.c:
-+      The docstring for ttyname(..) claims a second "mode" argument. The
-+      actual code does not allow such an argument.  (Finn Bock.)
-+
-+      * Lib/lib-old/poly.py:
-+      Dang.  Even though this is obsolete code, somebody found a bug, and I
-+      fix it.  Oh well.
-+
-+Thu Feb 18 20:51:50 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
-+
-+      * Lib/pyclbr.py:
-+      Bow to font-lock at the end of the docstring, since it throws stuff
-+      off.
-+
-+      Make sure the path paramter to readmodule() is a list before adding it
-+      with sys.path, or the addition could fail.
-+
-+
-+======================================================================
-+
-+
-+From 1.5.2b1 to 1.5.2b2
-+=======================
-+
-+General
-+-------
-+
-+- Many memory leaks fixed.
-+
-+- Many small bugs fixed.
-+
-+- Command line option -OO (or -O -O) suppresses inclusion of doc
-+strings in resulting bytecode.
-+
-+Windows-specific changes
-+------------------------
-+
-+- New built-in module winsound provides an interface to the Win32
-+PlaySound() call.
-+
-+- Re-enable the audioop module in the config.c file.
-+
-+- On Windows, support spawnv() and associated P_* symbols.
-+
-+- Fixed the conversion of times() return values on Windows.
-+
-+- Removed freeze from the installer -- it doesn't work without the
-+source tree.  (See FAQ 8.11.)
-+
-+- On Windows 95/98, the Tkinter module now is smart enough to find
-+Tcl/Tk even when the PATH environment variable hasn't been set -- when
-+the import of _tkinter fails, it searches in a standard locations,
-+patches os.environ["PATH"], and tries again.  When it still fails, a
-+clearer error message is produced.  This should avoid most
-+installation problems with Tkinter use (e.g. in IDLE).
-+
-+- The -i option doesn't make any calls to set[v]buf() for stdin --
-+this apparently screwed up _kbhit() and the _tkinter main loop.
-+
-+- The ntpath module (and hence, os.path on Windows) now parses out UNC
-+paths (e.g. \\host\mountpoint\dir\file) as "drive letters", so that
-+splitdrive() will \\host\mountpoint as the drive and \dir\file as the
-+path.  ** EXPERIMENTAL **
-+
-+- Added a hack to the exit code so that if (1) the exit status is
-+nonzero and (2) we think we have our own DOS box (i.e. we're not
-+started from a command line shell), we print a message and wait for
-+the user to hit a key before the DOS box is closed.
-+
-+- Updated the installer to WISE 5.0g.  Added a dialog warning about
-+the imminent Tcl installation.  Added a dialog to specify the program
-+group name in the start menu.  Upgraded the Tcl installer to Tcl
-+8.0.4.
-+
-+Changes to intrinsics
-+---------------------
-+
-+- The repr() or str() of a module object now shows the __file__
-+attribute (i.e., the file which it was loaded), or the string
-+"(built-in)" if there is no __file__ attribute.
-+
-+- The range() function now avoids overflow during its calculations (if
-+at all possible).
-+
-+- New info string sys.hexversion, which is an integer encoding the
-+version in hexadecimal.  In other words, hex(sys.hexversion) ==
-+0x010502b2 for Python 1.5.2b2.
-+
-+New or improved ports
-+---------------------
-+
-+- Support for Nextstep descendants (future Mac systems).
-+
-+- Improved BeOS support.
-+
-+- Support dynamic loading of shared libraries on NetBSD platforms that 
-+use ELF (i.e., MIPS and Alpha systems).
-+
-+Configuration/build changes
-+---------------------------
-+
-+- The Lib/test directory is no longer included in the default module
-+search path (sys.path) -- "test" has been a package ever since 1.5.
-+
-+- Now using autoconf 2.13.
-+
-+New library modules
-+-------------------
-+
-+- New library modules asyncore and asynchat: these form Sam Rushing's
-+famous asynchronous socket library.  Sam has gracefully allowed me to
-+incorporate these in the standard Python library.
-+
-+- New module statvfs contains indexing constants for [f]statvfs()
-+return tuple.
-+
-+Changes to the library
-+----------------------
-+
-+- The wave module (platform-independent support for Windows sound
-+files) has been fixed to actually make it work.
-+
-+- The sunau module (platform-independent support for Sun/NeXT sound
-+files) has been fixed to work across platforms.  Also, a weird
-+encoding bug in the header of the audio test data file has been
-+corrected.
-+
-+- Fix a bug in the urllib module that occasionally tripped up
-+webchecker and other ftp retrieves.
-+
-+- ConfigParser's get() method now accepts an optional keyword argument
-+(vars) that is substituted on top of the defaults that were setup in
-+__init__.  You can now also have recusive references in your
-+configuration file.
-+
-+- Some improvements to the Queue module, including a put_nowait()
-+module and an optional "block" second argument, to get() and put(),
-+defaulting to 1.
-+
-+- The updated xmllib module is once again compatible with the version
-+present in Python 1.5.1 (this was accidentally broken in 1.5.2b1).
-+
-+- The bdb module (base class for the debugger) now supports
-+canonicalizing pathnames used in breakpoints.  The derived class must
-+override the new canonical() method for this to work.  Also changed
-+clear_break() to the backwards compatible old signature, and added
-+clear_bpbynumber() for the new functionality.
-+
-+- In sgmllib (and hence htmllib), recognize attributes even if they
-+don't have space in front of them.  I.e.  '<a
-+name="foo"href="bar.html">' will now have two attributes recognized.
-+
-+- In the debugger (pdb), change clear syntax to support three
-+alternatives: clear; clear file:line; clear bpno bpno ...
-+
-+- The os.path module now pretends to be a submodule within the os
-+"package", so you can do things like "from os.path import exists".
-+
-+- The standard exceptions now have doc strings.
-+
-+- In the smtplib module, exceptions are now classes.  Also avoid
-+inserting a non-standard space after "TO" in rcpt() command.
-+
-+- The rfc822 module's getaddrlist() method now uses all occurrences of
-+the specified header instead of just the first.  Some other bugfixes
-+too (to handle more weird addresses found in a very large test set,
-+and to avoid crashes on certain invalid dates), and a small test
-+module has been added.
-+
-+- Fixed bug in urlparse in the common-case code for HTTP URLs; it
-+would lose the query, fragment, and/or parameter information.
-+
-+- The sndhdr module no longer supports whatraw() -- it depended on a
-+rare extenral program.
-+
-+- The UserList module/class now supports the extend() method, like
-+real list objects.
-+
-+- The uu module now deals better with trailing garbage generated by
-+some broke uuencoders.
-+
-+- The telnet module now has an my_interact() method which uses threads
-+instead of select.  The interact() method uses this by default on
-+Windows (where the single-threaded version doesn't work).
-+
-+- Add a class to mailbox.py for dealing with qmail directory
-+mailboxes.  The test code was extended to notice these being used as
-+well.
-+
-+Changes to extension modules
-+----------------------------
-+
-+- Support for the [f]statvfs() system call, where it exists.
-+
-+- Fixed some bugs in cPickle where bad input could cause it to dump
-+core.
-+
-+- Fixed cStringIO to make the writelines() function actually work.
-+
-+- Added strop.expandtabs() so string.expandtabs() is now much faster.
-+
-+- Added fsync() and fdatasync(), if they appear to exist.
-+
-+- Support for "long files" (64-bit seek pointers).
-+
-+- Fixed a bug in the zlib module's flush() function.
-+
-+- Added access() system call.  It returns 1 if access granted, 0 if
-+not.
-+
-+- The curses module implements an optional nlines argument to
-+w.scroll().  (It then calls wscrl(win, nlines) instead of scoll(win).)
-+
-+Changes to tools
-+----------------
-+
-+- Some changes to IDLE; see Tools/idle/NEWS.txt.
-+
-+- Latest version of Misc/python-mode.el included.
-+
-+Changes to Tkinter
-+------------------
-+
-+- Avoid tracebacks when an image is deleted after its root has been
-+destroyed.
-+
-+Changes to the Python/C API
-+---------------------------
-+
-+- When parentheses are used in a PyArg_Parse[Tuple]() call, any
-+sequence is now accepted, instead of requiring a tuple.  This is in
-+line with the general trend towards accepting arbitrary sequences.
-+
-+- Added PyModule_GetFilename().
-+
-+- In PyNumber_Power(), remove unneeded and even harmful test for float
-+to the negative power (which is already and better done in
-+floatobject.c).
-+
-+- New version identification symbols; read patchlevel.h for info.  The
-+version numbers are now exported by Python.h.
-+
-+- Rolled back the API version change -- it's back to 1007!
-+
-+- The frozenmain.c function calls PyInitFrozenExtensions().
-+
-+- Added 'N' format character to Py_BuildValue -- like 'O' but doesn't
-+INCREF.
-+
-+
-+======================================================================
-+
-+
-+From 1.5.2a2 to 1.5.2b1
-+=======================
-+
-+Changes to intrinsics
-+---------------------
-+
-+- New extension NotImplementedError, derived from RuntimeError.  Not
-+used, but recommended use is for "abstract" methods to raise this.
-+
-+- The parser will now spit out a warning or error when -t or -tt is
-+used for parser input coming from a string, too.
-+
-+- The code generator now inserts extra SET_LINENO opcodes when
-+compiling multi-line argument lists.
-+
-+- When comparing bound methods, use identity test on the objects, not
-+equality test.
-+
-+New or improved ports
-+---------------------
-+
-+- Chris Herborth has redone his BeOS port; it now works on PowerPC
-+(R3/R4) and x86 (R4 only).  Threads work too in this port.
-+
-+Renaming
-+--------
-+
-+- Thanks to Chris Herborth, the thread primitives now have proper Py*
-+names in the source code (they already had those for the linker,
-+through some smart macros; but the source still had the old, un-Py
-+names).
-+
-+Configuration/build changes
-+---------------------------
-+
-+- Improved support for FreeBSD/3.
-+
-+- Check for pthread_detach instead of pthread_create in libc.
-+
-+- The makesetup script now searches EXECINCLUDEPY before INCLUDEPY.
-+
-+- Misc/Makefile.pre.in now also looks at Setup.thread and Setup.local.
-+Otherwise modules such as thread didn't get incorporated in extensions.
-+
-+New library modules
-+-------------------
-+
-+- shlex.py by Eric Raymond provides a lexical analyzer class for
-+simple shell-like syntaxes.
-+
-+- netrc.py by Eric Raymond provides a parser for .netrc files.  (The
-+undocumented Netrc class in ftplib.py is now obsolete.)
-+
-+- codeop.py is a new module that contains the compile_command()
-+function that was previously in code.py.  This is so that JPython can
-+provide its own version of this function, while still sharing the
-+higher-level classes in code.py.
-+
-+- turtle.py is a new module for simple turtle graphics.  I'm still
-+working on it; let me know if you use this to teach Python to children 
-+or other novices without prior programming experience.
-+
-+Obsoleted library modules
-+-------------------------
-+
-+- poly.py and zmod.py have been moved to Lib/lib-old to emphasize
-+their status of obsoleteness.  They don't do a particularly good job
-+and don't seem particularly relevant to the Python core.
-+
-+New tools
-+---------
-+
-+- I've added IDLE: my Integrated DeveLopment Environment for Python.
-+Requires Tcl/Tk (and Tkinter).  Works on Windows and Unix (and should
-+work on Macintosh, but I haven't been able to test it there; it does
-+depend on new features in 1.5.2 and perhaps even new features in
-+1.5.2b1, especially the new code module).  This is very much a work in
-+progress.  I'd like to hear how people like it compared to PTUI (or
-+any other IDE they are familiar with).
-+
-+- New tools by Barry Warsaw:
-+
-+  = audiopy: controls the Solaris Audio device
-+  = pynche:  The PYthonically Natural Color and Hue Editor
-+  = world:   Print mappings between country names and DNS country codes
-+
-+New demos
-+---------
-+
-+- Demo/scripts/beer.py prints the lyrics to an arithmetic drinking
-+song.
-+
-+- Demo/tkinter/guido/optionmenu.py shows how to do an option menu in
-+Tkinter.  (By Fredrik Lundh -- not by me!)
-+
-+Changes to the library
-+----------------------
-+
-+- compileall.py now avoids recompiling .py files that haven't changed;
-+it adds a -f option to force recompilation.
-+
-+- New version of xmllib.py by Sjoerd Mullender (0.2 with latest
-+patches).
-+
-+- nntplib.py: statparse() no longer lowercases the message-id.
-+
-+- types.py: use type(__stdin__) for FileType.
-+
-+- urllib.py: fix translations for filenames with "funny" characters.
-+Patch by Sjoerd Mullender.  Note that if you subclass one of the
-+URLopener classes, and you have copied code from the old urllib.py,
-+your subclass may stop working.  A long-term solution is to provide
-+more methods so that you don't have to copy code.
-+
-+- cgi.py: In read_multi, allow a subclass to override the class we
-+instantiate when we create a recursive instance, by setting the class
-+variable 'FieldStorageClass' to the desired class.  By default, this
-+is set to None, in which case we use self.__class__ (as before).
-+Also, a patch by Jim Fulton to pass additional arguments to recursive
-+calls to the FieldStorage constructor from its read_multi method.
-+
-+- UserList.py: In __getslice__, use self.__class__ instead of
-+UserList.
-+
-+- In SimpleHTTPServer.py, the server specified in test() should be
-+BaseHTTPServer.HTTPServer, in case the request handler should want to
-+reference the two attributes added by BaseHTTPServer.server_bind.  (By
-+Jeff Rush, for Bobo).  Also open the file in binary mode, so serving
-+images from a Windows box might actually work.
-+
-+- In CGIHTTPServer.py, the list of acceptable formats is -split-
-+on spaces but -joined- on commas, resulting in double commas
-+in the joined text.  (By Jeff Rush.)
-+
-+- SocketServer.py, patch by Jeff Bauer: a minor change to declare two
-+new threaded versions of Unix Server classes, using the ThreadingMixIn
-+class: ThreadingUnixStreamServer, ThreadingUnixDatagramServer.
-+
-+- bdb.py: fix bomb on deleting a temporary breakpoint: there's no
-+method do_delete(); do_clear() was meant.  By Greg Ward.
-+
-+- getopt.py: accept a non-list sequence for the long options (request
-+by Jack Jansen).  Because it might be a common mistake to pass a
-+single string, this situation is treated separately.  Also added
-+docstrings (copied from the library manual) and removed the (now
-+redundant) module comments.
-+
-+- tempfile.py: improvements to avoid security leaks.
-+
-+- code.py: moved compile_command() to new module codeop.py.
-+
-+- pickle.py: support pickle format 1.3 (binary float added).  By Jim
-+Fulton. Also get rid of the undocumented obsolete Pickler dump_special
-+method.
-+
-+- uu.py: Move 'import sys' to top of module, as noted by Tim Peters.
-+
-+- imaplib.py: fix problem with some versions of IMAP4 servers that
-+choose to mix the case in their CAPABILITIES response.
-+
-+- cmp.py: use (f1, f2) as cache key instead of f1 + ' ' + f2.  Noted
-+by Fredrik Lundh.
-+
-+Changes to extension modules
-+----------------------------
-+
-+- More doc strings for several modules were contributed by Chris
-+Petrilli: math, cmath, fcntl.
-+
-+- Fixed a bug in zlibmodule.c that could cause core dumps on
-+decompression of rarely occurring input.
-+
-+- cPickle.c: new version from Jim Fulton, with Open Source copyright
-+notice.  Also, initialize self->safe_constructors early on to prevent
-+crash in early dealloc.
-+
-+- cStringIO.c: new version from Jim Fulton, with Open Source copyright
-+notice.  Also fixed a core dump in cStringIO.c when doing seeks.
-+
-+- mpzmodule.c: fix signed character usage in mpz.mpz(stringobjecty).
-+
-+- readline.c: Bernard Herzog pointed out that rl_parse_and_bind
-+modifies its argument string (bad function!), so we make a temporary
-+copy.
-+
-+- sunaudiodev.c: Barry Warsaw added more smarts to get the device and
-+control pseudo-device, per audio(7I).
-+
-+Changes to tools
-+----------------
-+
-+- New, improved version of Barry Warsaw's Misc/python-mode.el (editing 
-+support for Emacs).
-+
-+- tabnanny.py: added a -q ('quiet') option to tabnanny, which causes
-+only the names of offending files to be printed.
-+
-+- freeze: when printing missing modules, also print the module they
-+were imported from.
-+
-+- untabify.py: patch by Detlef Lannert to implement -t option
-+(set tab size).
-+
-+Changes to Tkinter
-+------------------
-+
-+- grid_bbox(): support new Tk API: grid bbox ?column row? ?column2
-+row2?
-+
-+- _tkinter.c: RajGopal Srinivasan noted that the latest code (1.5.2a2)
-+doesn't work when running in a non-threaded environment.  He added
-+some #ifdefs that fix this.
-+
-+Changes to the Python/C API
-+---------------------------
-+
-+- Bumped API version number to 1008 -- enough things have changed!
-+
-+- There's a new macro, PyThreadState_GET(), which does the same work
-+as PyThreadState_Get() without the overhead of a function call (it
-+also avoids the error check).  The two top calling locations of
-+PyThreadState_Get() have been changed to use this macro.
-+
-+- All symbols intended for export from a DLL or shared library are now
-+marked as such (with the DL_IMPORT() macro) in the header file that
-+declares them.  This was needed for the BeOS port, and should also
-+make some other ports easier.  The PC port no longer needs the file
-+with exported symbols (PC/python_nt.def).  There's also a DL_EXPORT
-+macro which is only used for init methods in extension modules, and
-+for Py_Main().
-+
-+Invisible changes to internals
-+------------------------------
-+
-+- Fixed a bug in new_buffersize() in fileobject.c which could
-+return a buffer size that was way too large.
-+
-+- Use PySys_WriteStderr instead of fprintf in most places.
-+
-+- dictobject.c: remove dead code discovered by Vladimir Marangozov.
-+
-+- tupleobject.c: make tuples less hungry -- an extra item was
-+allocated but never used.  Tip by Vladimir Marangozov.
-+
-+- mymath.h: Metrowerks PRO4 finally fixes the hypot snafu.  (Jack
-+Jansen)
-+
-+- import.c: Jim Fulton fixes a reference count bug in
-+PyEval_GetGlobals.
-+
-+- glmodule.c: check in the changed version after running the stubber
-+again -- this solves the conflict with curses over the 'clear' entry
-+point much nicer.  (Jack Jansen had checked in the changes to cstubs
-+eons ago, but I never regenrated glmodule.c :-( )
-+
-+- frameobject.c: fix reference count bug in PyFrame_New.  Vladimir
-+Marangozov.
-+
-+- stropmodule.c: add a missing DECREF in an error exit.  Submitted by
-+Jonathan Giddy.
-+
-+
-+======================================================================
-+
-+
-+From 1.5.2a1 to 1.5.2a2
-+=======================
-+
-+General
-+-------
-+
-+- It is now a syntax error to have a function argument without a
-+default following one with a default.
-+
-+- __file__ is now set to the .py file if it was parsed (it used to
-+always be the .pyc/.pyo file).
-+
-+- Don't exit with a fatal error during initialization when there's a
-+problem with the exceptions.py module.
-+
-+- New environment variable PYTHONOPTIMIZE can be used to set -O.
-+
-+- New version of python-mode.el for Emacs.
-+
-+Miscellaneous fixed bugs
-+------------------------
-+
-+- No longer print the (confusing) error message about stack underflow
-+while compiling.
-+
-+- Some threading and locking bugs fixed.
-+
-+- When errno is zero, report "Error", not "Success".
-+
-+Documentation
-+-------------
-+
-+- Documentation will be released separately.
-+
-+- Doc strings added to array and md5 modules by Chris Petrilli.
-+
-+Ports and build procedure
-+-------------------------
-+
-+- Stop installing when a move or copy fails.
-+
-+- New version of the OS/2 port code by Jeff Rush.
-+
-+- The makesetup script handles absolute filenames better.
-+
-+- The 'new' module is now enabled by default in the Setup file.
-+
-+- I *think* I've solved the problem with the Linux build blowing up
-+sometimes due to a conflict between sigcheck/intrcheck and
-+signalmodule.
-+
-+Built-in functions
-+------------------
-+
-+- The second argument to apply() can now be any sequence, not just a
-+tuple.
-+
-+Built-in types
-+--------------
-+
-+- Lists have a new method: L1.extend(L2) is equivalent to the common
-+idiom L1[len(L1):] = L2.
-+
-+- Better error messages when a sequence is indexed with a non-integer.
-+
-+- Bettter error message when calling a non-callable object (include
-+the type in the message).
-+
-+Python services
-+---------------
-+
-+- New version of cPickle.c fixes some bugs.
-+
-+- pickle.py: improved instantiation error handling.
-+
-+- code.py: reworked quite a bit.  New base class
-+InteractiveInterpreter and derived class InteractiveConsole.  Fixed
-+several problems in compile_command().
-+
-+- py_compile.py: print error message and continue on syntax errors.
-+Also fixed an old bug with the fstat code (it was never used).
-+
-+- pyclbr.py: support submodules of packages.
-+
-+String Services
-+---------------
-+
-+- StringIO.py: raise the right exception (ValueError) for attempted
-+I/O on closed StringIO objects.
-+
-+- re.py: fixed a bug in subn(), which caused .groups() to fail inside
-+the replacement function called by sub().
-+
-+- The struct module has a new format 'P': void * in native mode.
-+
-+Generic OS Services
-+-------------------
-+
-+- Module time: Y2K robustness.  2-digit year acceptance depends on
-+value of time.accept2dyear, initialized from env var PYTHONY2K,
-+default 0.  Years 00-68 mean 2000-2068, while 69-99 mean 1969-1999
-+(POSIX or X/Open recommendation).
-+
-+- os.path: normpath(".//x") should return "x", not "/x".
-+
-+- getpass.py: fall back on default_getpass() when sys.stdin.fileno()
-+doesn't work.
-+
-+- tempfile.py: regenerate the template after a fork() call.
-+
-+Optional OS Services
-+--------------------
-+
-+- In the signal module, disable restarting interrupted system calls
-+when we have siginterrupt().
-+
-+Debugger
-+--------
-+
-+- No longer set __args__; this feature is no longer supported and can
-+affect the debugged code.
-+
-+- cmd.py, pdb.py and bdb.py have been overhauled by Richard Wolff, who
-+added aliases and some other useful new features, e.g. much better
-+breakpoint support: temporary breakpoint, disabled breakpoints,
-+breakpoints with ignore counts, and conditions; breakpoints can be set
-+on a file before it is loaded.
-+
-+Profiler
-+--------
-+
-+- Changes so that JPython can use it.  Also fix the calibration code
-+so it actually works again
-+.
-+Internet Protocols and Support
-+------------------------------
-+
-+- imaplib.py: new version from Piers Lauder.
-+
-+- smtplib.py: change sendmail() method to accept a single string or a
-+list or strings as the destination (commom newbie mistake).
-+
-+- poplib.py: LIST with a msg argument fixed.
-+
-+- urlparse.py: some optimizations for common case (http).
-+
-+- urllib.py: support content-length in info() for ftp protocol;
-+support for a progress meter through a third argument to
-+urlretrieve(); commented out gopher test (the test site is dead).
-+
-+Internet Data handling
-+----------------------
-+
-+- sgmllib.py: support tags with - or . in their name.
-+
-+- mimetypes.py: guess_type() understands 'data' URLs.
-+
-+Restricted Execution
-+--------------------
-+
-+- The classes rexec.RModuleLoader and rexec.RModuleImporter no
-+longer exist.
-+
-+Tkinter
-+-------
-+
-+- When reporting an exception, store its info in sys.last_*.  Also,
-+write all of it to stderr.
-+
-+- Added NS, EW, and NSEW constants, for grid's sticky option.
-+
-+- Fixed last-minute bug in 1.5.2a1 release: need to include "mytime.h".
-+
-+- Make bind variants without a sequence return a tuple of sequences
-+(formerly it returned a string, which wasn't very convenient).
-+
-+- Add image commands to the Text widget (these are new in Tk 8.0).
-+
-+- Added new listbox and canvas methods: {xview,yview}_{scroll,moveto}.)
-+
-+- Improved the thread code (but you still can't call update() from
-+another thread on Windows).
-+
-+- Fixed unnecessary references to _default_root in the new dialog
-+modules.
-+
-+- Miscellaneous problems fixed.
-+
-+
-+Windows General
-+---------------
-+
-+- Call LoadLibraryEx(..., ..., LOAD_WITH_ALTERED_SEARCH_PATH) to
-+search for dependent dlls in the directory containing the .pyd.
-+
-+- In debugging mode, call DebugBreak() in Py_FatalError().
-+
-+Windows Installer
-+-----------------
-+
-+- Install zlib.dll in the DLLs directory instead of in the win32
-+system directory, to avoid conflicts with other applications that have 
-+their own zlib.dll.
-+
-+Test Suite
-+----------
-+
-+- test_long.py: new test for long integers, by Tim Peters.
-+
-+- regrtest.py: improved so it can be used for other test suites as
-+well.
-+
-+- test_strftime.py: use re to compare test results, to support legal
-+variants (e.g. on Linux).
-+
-+Tools and Demos
-+---------------
-+
-+- Four new scripts in Tools/scripts: crlf.py and lfcr.py (to
-+remove/add Windows style '\r\n' line endings), untabify.py (to remove
-+tabs), and rgrep.yp (reverse grep).
-+
-+- Improvements to Tools/freeze/.  Each Python module is now written to
-+its own C file.  This prevents some compilers or assemblers from
-+blowing up on large frozen programs, and saves recompilation time if
-+only a few modules are changed.  Other changes too, e.g. new command
-+line options -x and -i.
-+
-+- Much improved (and smaller!) version of Tools/scripts/mailerdaemon.py.
-+
-+Python/C API
-+------------
-+
-+- New mechanism to support extensions of the type object while
-+remaining backward compatible with extensions compiled for previous
-+versions of Python 1.5.  A flags field indicates presence of certain
-+fields.
-+
-+- Addition to the buffer API to differentiate access to bytes and
-+8-bit characters (in anticipation of Unicode characters).
-+
-+- New argument parsing format t# ("text") to indicate 8-bit
-+characters; s# simply means 8-bit bytes, for backwards compatibility.
-+
-+- New object type, bufferobject.c is an example and can be used to
-+create buffers from memory.
-+
-+- Some support for 64-bit longs, including some MS platforms.
-+
-+- Many calls to fprintf(stderr, ...) have been replaced with calls to
-+PySys_WriteStderr(...).
-+
-+- The calling context for PyOS_Readline() has changed: it must now be
-+called with the interpreter lock held!  It releases the lock around
-+the call to the function pointed to by PyOS_ReadlineFunctionPointer
-+(default PyOS_StdioReadline()).
-+
-+- New APIs PyLong_FromVoidPtr() and PyLong_AsVoidPtr().
-+
-+- Renamed header file "thread.h" to "pythread.h".
-+
-+- The code string of code objects may now be anything that supports the
-+buffer API.
-+
-+
-+======================================================================
-+
-+
-+From 1.5.1 to 1.5.2a1
-+=====================
-+
-+General
-+-------
-+
-+- When searching for the library, a landmark that is a compiled module
-+(string.pyc or string.pyo) is also accepted.
-+
-+- When following symbolic links to the python executable, use a loop
-+so that a symlink to a symlink can work.
-+
-+- Added a hack so that when you type 'quit' or 'exit' at the
-+interpreter, you get a friendly explanation of how to press Ctrl-D (or 
-+Ctrl-Z) to exit.
-+
-+- New and improved Misc/python-mode.el (Python mode for Emacs).
-+
-+- Revert a new feature in Unix dynamic loading: for one or two
-+revisions, modules were loaded using the RTLD_GLOBAL flag.  It turned
-+out to be a bad idea.
-+
-+Miscellaneous fixed bugs
-+------------------------
-+
-+- All patches on the patch page have been integrated.  (But much more
-+has been done!)
-+
-+- Several memory leaks plugged (e.g. the one for classes with a
-+__getattr__ method).
-+
-+- Removed the only use of calloc().  This triggered an obscure bug on
-+multiprocessor Sparc Solaris 2.6.
-+
-+- Fix a peculiar bug that would allow "import sys.time" to succeed
-+(believing the built-in time module to be a part of the sys package).
-+
-+- Fix a bug in the overflow checking when converting a Python long to
-+a C long (failed to convert -2147483648L, and some other cases).
-+
-+Documentation
-+-------------
-+
-+- Doc strings have been added to many extension modules: __builtin__,
-+errno, select, signal, socket, sys, thread, time.  Also to methods of
-+list objects (try [].append.__doc__).  A doc string on a type will now
-+automatically be propagated to an instance if the instance has methods
-+that are accessed in the usual way.
-+
-+- The documentation has been expanded and the formatting improved.
-+(Remember that the documentation is now unbundled and has its own
-+release cycle though; see http://www.python.org/doc/.)
-+
-+- Added Misc/Porting -- a mini-FAQ on porting to a new platform.
-+
-+Ports and build procedure
-+-------------------------
-+
-+- The BeOS port is now integrated.  Courtesy Chris Herborth.
-+
-+- Symbol files for FreeBSD 2.x and 3.x have been contributed
-+(Lib/plat-freebsd[23]/*).
-+
-+- Support HPUX 10.20 DCE threads.
-+
-+- Finally fixed the configure script so that (on SGI) if -OPT:Olimit=0
-+works, it won't also use -Olimit 1500 (which gives a warning for every
-+file).  Also support the SGI_ABI environment variable better.
-+
-+- The makesetup script now understands absolute pathnames ending in .o
-+in the module -- it assumes it's a file for which we have no source.
-+
-+- Other miscellaneous improvements to the configure script and
-+Makefiles.
-+
-+- The test suite now uses a different sound sample.
-+
-+Built-in functions
-+------------------
-+
-+- Better checks for invalid input to int(), long(), string.atoi(),
-+string.atol().  (Formerly, a sign without digits would be accepted as
-+a legal ways to spell zero.)
-+
-+- Changes to map() and filter() to use the length of a sequence only
-+as a hint -- if an IndexError happens earlier, take that.  (Formerly,
-+this was considered an error.)
-+
-+- Experimental feature in getattr(): a third argument can specify a
-+default (instead of raising AttributeError).
-+
-+- Implement round() slightly different, so that for negative ndigits
-+no additional errors happen in the last step.
-+
-+- The open() function now adds the filename to the exception when it
-+fails.
-+
-+Built-in exceptions
-+-------------------
-+
-+- New standard exceptions EnvironmentError and PosixError.
-+EnvironmentError is the base class for IOError and PosixError;
-+PosixError is the same as os.error.  All this so that either exception
-+class can be instantiated with a third argument indicating a filename.
-+The built-in function open() and most os/posix functions that take a
-+filename argument now use this.
-+
-+Built-in types
-+--------------
-+
-+- List objects now have an experimental pop() method; l.pop() returns
-+and removes the last item; l.pop(i) returns and removes the item at
-+i.  Also, the sort() method is faster again.  Sorting is now also
-+safer: it is impossible for the sorting function to modify the list
-+while the sort is going on (which could cause core dumps).
-+
-+- Changes to comparisons: numbers are now smaller than any other type.
-+This is done to prevent the circularity where [] < 0L < 1 < [] is
-+true.  As a side effect, cmp(None, 0) is now positive instead of
-+negative.  This *shouldn't* affect any working code, but I've found
-+that the change caused several "sleeping" bugs to become active, so
-+beware!
-+
-+- Instance methods may now have other callable objects than just
-+Python functions as their im_func.  Use new.instancemethod() or write
-+your own C code to create them; new.instancemethod() may be called
-+with None for the instance to create an unbound method.
-+
-+- Assignment to __name__, __dict__ or __bases__ of a class object is
-+now allowed (with stringent type checks); also allow assignment to
-+__getattr__ etc.  The cached values for __getattr__ etc. are
-+recomputed after such assignments (but not for derived classes :-( ).
-+
-+- Allow assignment to some attributes of function objects: func_code,
-+func_defaults and func_doc / __doc__.  (With type checks except for
-+__doc__ / func_doc .)
-+
-+Python services
-+---------------
-+
-+- New tests (in Lib/test): reperf.py (regular expression benchmark),
-+sortperf.py (list sorting benchmark), test_MimeWriter.py (test case
-+for the MimeWriter module).
-+
-+- Generalized test/regrtest.py so that it is useful for testing other
-+packages.
-+
-+- The ihooks.py module now understands package imports.
-+
-+- In code.py, add a class that subsumes Fredrik Lundh's
-+PythonInterpreter class.  The interact() function now uses this.
-+
-+- In rlcompleter.py, in completer(), return None instead of raising an
-+IndexError when there are no more completions left.
-+
-+- Fixed the marshal module to test for certain common kinds of invalid
-+input.  (It's still not foolproof!)
-+
-+- In the operator module, add an alias (now the preferred name)
-+"contains" for "sequenceincludes".
-+
-+String Services
-+---------------
-+
-+- In the string and strop modules, in the replace() function, treat an
-+empty pattern as an error (since it's not clear what was meant!).
-+
-+- Some speedups to re.py, especially the string substitution and split
-+functions.  Also added new function/method findall(), to find all
-+occurrences of a given substring.
-+
-+- In cStringIO, add better argument type checking and support the
-+readonly 'closed' attribute (like regular files).
-+
-+- In the struct module, unsigned 1-2 byte sized formats no longer
-+result in long integer values.
-+
-+Miscellaneous services
-+----------------------
-+
-+- In whrandom.py, added new method and function randrange(), same as
-+choice(range(start, stop, step)) but faster.  This addresses the
-+problem that randint() was accidentally defined as taking an inclusive
-+range.  Also, randint(a, b) is now redefined as randrange(a, b+1),
-+adding extra range and type checking to its arguments!
-+
-+- Add some semi-thread-safety to random.gauss() (it used to be able to 
-+crash when invoked from separate threads; now the worst it can do is
-+give a duplicate result occasionally).
-+
-+- Some restructuring and generalization done to cmd.py.
-+
-+- Major upgrade to ConfigParser.py; converted to using 're', added new 
-+exceptions, support underscore in section header and option name.  No
-+longer add 'name' option to every section; instead, add '__name__'.
-+
-+- In getpass.py, don't use raw_input() to ask for the password -- we
-+don't want it to show up in the readline history!  Also don't catch
-+interrupts (the try-finally already does all necessary cleanup).
-+
-+Generic OS Services
-+-------------------
-+
-+- New functions in os.py: makedirs(), removedirs(), renames().  New
-+variable: linesep (the line separator as found in binary files,
-+i.e. '\n' on Unix, '\r\n' on DOS/Windows, '\r' on Mac.  Do *not* use
-+this with files opened in (default) text mode; the line separator used
-+will always be '\n'!
-+
-+- Changes to the 'os.path' submodule of os.py: added getsize(),
-+getmtime(), getatime() -- these fetch the most popular items from the
-+stat return tuple.
-+
-+- In the time module, add strptime(), if it exists.  (This parses a
-+time according to a format -- the inverse of strftime().)  Also,
-+remove the call to mktime() from strftime() -- it messed up the
-+formatting of some non-local times.
-+
-+- In the socket module, added a new function gethostbyname_ex().
-+Also, don't use #ifdef to test for some symbols that are enums on some
-+platforms (and should exist everywhere).
-+
-+Optional OS Services
-+--------------------
-+
-+- Some fixes to gzip.py.  In particular, the readlines() method now
-+returns the lines *with* trailing newline characters, like readlines()
-+of regular file objects.  Also, it didn't work together with cPickle;
-+fixed that.
-+
-+- In whichdb.py, support byte-swapped dbhash (bsddb) files.
-+
-+- In anydbm.py, look at the type of an existing database to determine
-+which module to use to open it.  (The anydbm.error exception is now a
-+tuple.)
-+
-+Unix Services
-+-------------
-+
-+- In the termios module, in tcsetattr(), initialize the structure vy
-+calling tcgetattr().
-+
-+- Added some of the "wait status inspection" macros as functions to
-+the posix module (and thus to the os module): WEXITSTATUS(),
-+WIFEXITED(), WIFSIGNALED(), WIFSTOPPED(), WSTOPSIG(), WTERMSIG().
-+
-+- In the syslog module, make the default facility more intuitive
-+(matching the docs).
-+
-+Debugger
-+--------
-+
-+- In pdb.py, support for setting breaks on files/modules that haven't
-+been loaded yet.
-+
-+Internet Protocols and Support
-+------------------------------
-+
-+- Changes in urllib.py; sped up unquote() and quote().  Fixed an
-+obscure bug in quote_plus().  Added urlencode(dict) -- convenience
-+function for sending a POST request with urlopen().  Use the getpass
-+module to ask for a password.  Rewrote the (test) main program so that
-+when used as a script, it can retrieve one or more URLs to stdout.
-+Use -t to run the self-test.  Made the proxy code work again.
-+
-+- In cgi.py, treat "HEAD" the same as "GET", so that CGI scripts don't
-+fail when someone asks for their HEAD.  Also, for POST, set the
-+default content-type to application/x-www-form-urlencoded.  Also, in
-+FieldStorage.__init__(), when method='GET', always get the query
-+string from environ['QUERY_STRING'] or sys.argv[1] -- ignore an
-+explicitly passed in fp.
-+
-+- The smtplib.py module now supports ESMTP and has improved standard
-+compliance, for picky servers.
-+
-+- Improved imaplib.py.
-+
-+- Fixed UDP support in SocketServer.py (it never worked).
-+
-+- Fixed a small bug in CGIHTTPServer.py.
-+
-+Internet Data handling
-+----------------------
-+
-+- In rfc822.py, add a new class AddressList.  Also support a new
-+overridable method, isheader().  Also add a get() method similar to
-+dictionaries (and make getheader() an alias for it).  Also, be smarter
-+about seekable (test whether fp.tell() works) and test for presence of
-+unread() method before trying seeks.
-+
-+- In sgmllib.py, restore the call to report_unbalanced() that was lost
-+long ago.  Also some other improvements: handle <? processing
-+instructions >, allow . and - in entity names, and allow \r\n as line
-+separator.
-+
-+- Some restructuring and generalization done to multifile.py; support
-+a 'seekable' flag.
-+
-+Restricted Execution
-+--------------------
-+
-+- Improvements to rexec.py: package support; support a (minimal)
-+sys.exc_info().  Also made the (test) main program a bit fancier (you
-+can now use it to run arbitrary Python scripts in restricted mode).
-+
-+Tkinter
-+-------
-+
-+- On Unix, Tkinter can now safely be used from a multi-threaded
-+application.  (Formerly, no threads would make progress while
-+Tkinter's mainloop() was active, because it didn't release the Python
-+interpreter lock.)  Unfortunately, on Windows, threads other than the
-+main thread should not call update() or update_idletasks() because
-+this will deadlock the application.
-+
-+- An interactive interpreter that uses readline and Tkinter no longer
-+uses up all available CPU time.
-+
-+- Even if readline is not used, Tk windows created in an interactive
-+interpreter now get continuously updated.  (This even works in Windows
-+as long as you don't hit a key.)
-+
-+- New demos in Demo/tkinter/guido/: brownian.py, redemo.py, switch.py.
-+
-+- No longer register Tcl_finalize() as a low-level exit handler.  It
-+may call back into Python, and that's a bad idea.
-+
-+- Allow binding of Tcl commands (given as a string).
-+
-+- Some minor speedups; replace explicitly coded getint() with int() in
-+most places.
-+
-+- In FileDialog.py, remember the directory of the selected file, if
-+given.
-+
-+- Change the names of all methods in the Wm class: they are now
-+wm_title(), etc.  The old names (title() etc.) are still defined as
-+aliases.
-+
-+- Add a new method of interpreter objects, interpaddr().  This returns
-+the address of the Tcl interpreter object, as an integer.  Not very
-+useful for the Python programmer, but this can be called by another C
-+extension that needs to make calls into the Tcl/Tk C API and needs to
-+get the address of the Tcl interpreter object.  A simple cast of the
-+return value to (Tcl_Interp *) will do the trick.
-+
-+Windows General
-+---------------
-+
-+- Don't insist on proper case for module source files if the filename
-+is all uppercase (e.g. FOO.PY now matches foo; but FOO.py still
-+doesn't).  This should address problems with this feature on
-+oldfashioned filesystems (Novell servers?).
-+
-+Windows Library
-+---------------
-+
-+- os.environ is now all uppercase, but accesses are case insensitive,
-+and the putenv() calls made as a side effect of changing os.environ
-+are case preserving.
-+
-+- Removed samefile(), sameopenfile(), samestat() from os.path (aka
-+ntpath.py) -- these cannot be made to work reliably (at least I
-+wouldn't know how).
-+
-+- Fixed os.pipe() so that it returns file descriptors acceptable to
-+os.read() and os.write() (like it does on Unix), rather than Windows
-+file handles.
-+
-+- Added a table of WSA error codes to socket.py.
-+
-+- In the select module, put the (huge) file descriptor arrays on the
-+heap.
-+
-+- The getpass module now raises KeyboardInterrupt when it sees ^C.
-+
-+- In mailbox.py, fix tell/seek when using files opened in text mode.
-+
-+- In rfc822.py, fix tell/seek when using files opened in text mode.
-+
-+- In the msvcrt extension module, release the interpreter lock for
-+calls that may block: _locking(), _getch(), _getche().  Also fix a
-+bogus error return when open_osfhandle() doesn't have the right
-+argument list.
-+
-+Windows Installer
-+-----------------
-+
-+- The registry key used is now "1.5" instead of "1.5.x" -- so future
-+versions of 1.5 and Mark Hammond's win32all installer don't need to be 
-+resynchronized.
-+
-+Windows Tools
-+-------------
-+
-+- Several improvements to freeze specifically for Windows.
-+
-+Windows Build Procedure
-+-----------------------
-+
-+- The VC++ project files and the WISE installer have been moved to the
-+PCbuild subdirectory, so they are distributed in the same subdirectory
-+where they must be used.  This avoids confusion.
-+
-+- New project files for Windows 3.1 port by Jim Ahlstrom.
-+
-+- Got rid of the obsolete subdirectory PC/setup_nt/.
-+
-+- The projects now use distinct filenames for the .exe, .dll, .lib and
-+.pyd files built in debug mode (by appending "_d" to the base name,
-+before the extension).  This makes it easier to switch between the two
-+and get the right versions.  There's a pragma in config.h that directs
-+the linker to include the appropriate .lib file (so python15.lib no
-+longer needs to be explicit in your project).
-+
-+- The installer now installs more files (e.g. config.h).  The idea is
-+that you shouldn't need the source distribution if you want build your
-+own extensions in C or C++.
-+
-+Tools and Demos
-+---------------
-+
-+- New script nm2def.py by Marc-Andre Lemburg, to construct
-+PC/python_nt.def automatically (some hand editing still required).
-+
-+- New tool ndiff.py: Tim Peters' text diffing tool.
-+
-+- Various and sundry improvements to the freeze script.
-+
-+- The script texi2html.py (which was part of the Doc tree but is no
-+longer used there) has been moved to the Tools/scripts subdirectory.
-+
-+- Some generalizations in the webchecker code.  There's now a
-+primnitive gui for websucker.py: wsgui.py.  (In Tools/webchecker/.)
-+
-+- The ftpmirror.py script now handles symbolic links properly, and
-+also files with multiple spaces in their names.
-+
-+- The 1.5.1 tabnanny.py suffers an assert error if fed a script whose
-+last line is both indented and lacks a newline.  This is now fixed.
-+
-+Python/C API
-+------------
-+
-+- Added missing prototypes for PyEval_CallFunction() and
-+PyEval_CallMethod().
-+
-+- New macro PyList_SET_ITEM().
-+
-+- New macros to access object members for PyFunction, PyCFunction
-+objects.
-+
-+- New APIs PyImport_AppendInittab() an PyImport_ExtendInittab() to
-+dynamically add one or many entries to the table of built-in modules.
-+
-+- New macro Py_InitModule3(name, methods, doc) which calls
-+Py_InitModule4() with appropriate arguments.  (The -4 variant requires 
-+you to pass an obscure version number constant which is always the same.)
-+
-+- New APIs PySys_WriteStdout() and PySys_WriteStderr() to write to
-+sys.stdout or sys.stderr using a printf-like interface.  (Used in
-+_tkinter.c, for example.)
-+
-+- New APIs for conversion between Python longs and C 'long long' if
-+your compiler supports it.
-+
-+- PySequence_In() is now called PySequence_Contains().
-+(PySequence_In() is still supported for b/w compatibility; it is
-+declared obsolete because its argument order is confusing.)
-+
-+- PyDict_GetItem() and PyDict_GetItemString() are changed so that they
-+*never* raise an exception -- (even if the hash() fails, simply clear
-+the error).  This was necessary because there is lots of code out
-+there that already assumes this.
-+
-+- Changes to PySequence_Tuple() and PySequence_List() to use the
-+length of a sequence only as a hint -- if an IndexError happens
-+earlier, take that.  (Formerly, this was considered an error.)
-+
-+- Reformatted abstract.c to give it a more familiar "look" and fixed
-+many error checking bugs.
-+
-+- Add NULL pointer checks to all calls of a C function through a type
-+object and extensions (e.g. nb_add).
-+
-+- The code that initializes sys.path now calls Py_GetPythonHome()
-+instead of getenv("PYTHONHOME").  This, together with the new API
-+Py_SetPythonHome(), makes it easier for embedding applications to
-+change the notion of Python's "home" directory (where the libraries
-+etc. are sought).
-+
-+- Fixed a very old bug in the parsing of "O?" format specifiers.
-+
-+
-+======================================================================
-+
-+
-+========================================
-+==> Release 1.5.1 (October 31, 1998) <==
-+========================================
-+
-+From 1.5 to 1.5.1
-+=================
-+
-+General
-+-------
-+
-+- The documentation is now unbundled.  It has also been extensively
-+modified (mostly to implement a new and more uniform formatting
-+style).  We figure that most people will prefer to download one of the
-+preformatted documentation sets (HTML, PostScript or PDF) and that
-+only a minority have a need for the LaTeX or FrameMaker sources.  Of
-+course, the unbundled documentation sources still released -- just not
-+in the same archive file, and perhaps not on the same date.
-+
-+- All bugs noted on the errors page (and many unnoted) are fixed.  All
-+new bugs take their places.
-+
-+- No longer a core dump when attempting to print (or repr(), or str())
-+a list or dictionary that contains an instance of itself; instead, the
-+recursive entry is printed as [...] or {...}.  See Py_ReprEnter() and
-+Py_ReprLeave() below.  Comparisons of such objects still go beserk,
-+since this requires a different kind of fix; fortunately, this is a
-+less common scenario in practice.
-+
-+Syntax change
-+-------------
-+
-+- The raise statement can now be used without arguments, to re-raise 
-+a previously set exception.  This should be used after catching an
-+exception with an except clause only, either in the except clause or
-+later in the same function.
-+
-+Import and module handling
-+--------------------------
-+
-+- The implementation of import has changed to use a mutex (when
-+threading is supported).  This means that when two threads
-+simultaneously import the same module, the import statements are
-+serialized.  Recursive imports are not affected.
-+
-+- Rewrote the finalization code almost completely, to be much more
-+careful with the order in which modules are destroyed.  Destructors
-+will now generally be able to reference built-in names such as None
-+without trouble.
-+
-+- Case-insensitive platforms such as Mac and Windows require the case
-+of a module's filename to match the case of the module name as
-+specified in the import statement (see below).
-+
-+- The code for figuring out the default path now distinguishes between
-+files, modules, executable files, and directories.  When expecting a
-+module, we also look for the .pyc or .pyo file.
-+
-+Parser/tokenizer changes
-+------------------------
-+
-+- The tokenizer can now warn you when your source code mixes tabs and
-+spaces for indentation in a manner that depends on how much a tab is
-+worth in spaces.  Use "python -t" or "python -v" to enable this
-+option.  Use "python -tt" to turn the warnings into errors.  (See also
-+tabnanny.py and tabpolice.py below.)
-+
-+- Return unsigned characters from tok_nextc(), so '\377' isn't
-+mistaken for an EOF character.
-+
-+- Fixed two pernicious bugs in the tokenizer that only affected AIX.
-+One was actually a general bug that was triggered by AIX's smaller I/O
-+buffer size.  The other was a bug in the AIX optimizer's loop
-+unrolling code; swapping two statements made the problem go away.
-+
-+Tools, demos and miscellaneous files
-+------------------------------------
-+
-+- There's a new version of Misc/python-mode.el (the Emacs mode for
-+Python) which is much smarter about guessing the indentation style
-+used in a particular file.  Lots of other cool features too!
-+
-+- There are two new tools in Tools/scripts: tabnanny.py and
-+tabpolice.py, implementing two different ways of checking whether a
-+file uses indentation in a way that is sensitive to the interpretation
-+of a tab.  The preferred module is tabnanny.py (by Tim Peters).
-+
-+- Some new demo programs:
-+
-+      Demo/tkinter/guido/paint.py -- Dave Mitchell
-+      Demo/sockets/unixserver.py -- Piet van Oostrum
-+      
-+
-+- Much better freeze support.  The freeze script can now freeze
-+hierarchical module names (with a corresponding change to import.c),
-+and has a few extra options (e.g. to suppress freezing specific
-+modules).  It also does much more on Windows NT.
-+
-+- Version 1.0 of the faq wizard is included (only very small changes
-+since version 0.9.0).
-+
-+- New feature for the ftpmirror script: when removing local files
-+(i.e., only when -r is used), do a recursive delete.
-+
-+Configuring and building Python
-+-------------------------------
-+
-+- Get rid of the check for -linet -- recent Sequent Dynix systems don't
-+need this any more and apparently it screws up their configuration.
-+
-+- Some changes because gcc on SGI doesn't support '-all'.
-+
-+- Changed the build rules to use $(LIBRARY) instead of
-+  -L.. -lpython$(VERSION)
-+since the latter trips up the SunOS 4.1.x linker (sigh).
-+
-+- Fix the bug where the '# dgux is broken' comment in the Makefile
-+tripped over Make on some platforms.
-+
-+- Changes for AIX: install the python.exp file; properly use
-+$(srcdir); the makexp_aix script now removes C++ entries of the form
-+Class::method.
-+
-+- Deleted some Makefile targets only used by the (long obsolete)
-+gMakefile hacks.
-+
-+Extension modules
-+-----------------
-+
-+- Performance and threading improvements to the socket and bsddb
-+modules, by Christopher Lindblad of Infoseek.
-+
-+- Added operator.__not__ and operator.not_.
-+
-+- In the thread module, when a thread exits due to an unhandled
-+exception, don't store the exception information in sys.last_*; it
-+prevents proper calling of destructors of local variables.
-+
-+- Fixed a number of small bugs in the cPickle module.
-+
-+- Changed find() and rfind() in the strop module so that
-+find("x","",2) returns -1, matching the implementation in string.py.
-+
-+- In the time module, be more careful with the result of ctime(), and
-+test for HAVE_MKTIME before usinmg mktime().
-+
-+- Doc strings contributed by Mitch Chapman to the termios, pwd, gdbm
-+modules.
-+
-+- Added the LOG_SYSLOG constant to the syslog module, if defined.
-+
-+Standard library modules
-+------------------------
-+
-+- All standard library modules have been converted to an indentation
-+style using either only tabs or only spaces -- never a mixture -- if
-+they weren't already consistent according to tabnanny.  This means
-+that the new -t option (see above) won't complain about standard
-+library modules.
-+
-+- New standard library modules:
-+
-+      threading -- GvR and the thread-sig
-+              Java style thread objects -- USE THIS!!!
-+
-+      getpass -- Piers Lauder
-+              simple utilities to prompt for a password and to
-+              retrieve the current username
-+
-+      imaplib -- Piers Lauder
-+              interface for the IMAP4 protocol
-+
-+      poplib -- David Ascher, Piers Lauder
-+              interface for the POP3 protocol
-+
-+      smtplib -- Dragon De Monsyne
-+              interface for the SMTP protocol
-+
-+- Some obsolete modules moved to a separate directory (Lib/lib-old)
-+which is *not* in the default module search path:
-+
-+      Para
-+      addpack
-+      codehack
-+      fmt
-+      lockfile
-+      newdir
-+      ni
-+      rand
-+      tb
-+
-+- New version of the PCRE code (Perl Compatible Regular Expressions --
-+the re module and the supporting pcre extension) by Andrew Kuchling.
-+Incompatible new feature in re.sub(): the handling of escapes in the
-+replacement string has changed.
-+
-+- Interface change in the copy module: a __deepcopy__ method is now
-+called with the memo dictionary as an argument.
-+
-+- Feature change in the tokenize module: differentiate between NEWLINE
-+token (an official newline) and NL token (a newline that the grammar
-+ignores).
-+
-+- Several bugfixes to the urllib module.  It is now truly thread-safe,
-+and several bugs and a portability problem have been fixed.  New
-+features, all due to Sjoerd Mullender: When creating a temporary file,
-+it gives it an appropriate suffix.  Support the "data:" URL scheme.
-+The open() method uses the tempcache.
-+
-+- New version of the xmllib module (this time with a test suite!) by
-+Sjoerd Mullender.
-+
-+- Added debugging code to the telnetlib module, to be able to trace
-+the actual traffic.
-+
-+- In the rfc822 module, added support for deleting a header (still no
-+support for adding headers, though).  Also fixed a bug where an
-+illegal address would cause a crash in getrouteaddr(), fixed a
-+sign reversal in mktime_tz(), and use the local timezone by default
-+(the latter two due to Bill van Melle).
-+
-+- The normpath() function in the dospath and ntpath modules no longer
-+does case normalization -- for that, use the separate function
-+normcase() (which always existed); normcase() has been sped up and
-+fixed (it was the cause of a crash in Mark Hammond's installer in
-+certain locales).
-+
-+- New command supported by the ftplib module: rmd(); also fixed some
-+minor bugs.
-+
-+- The profile module now uses a different timer function by default -- 
-+time.clock() is generally better than os.times().  This makes it work
-+better on Windows NT, too.
-+
-+- The tempfile module now recovers when os.getcwd() raises an
-+exception.
-+
-+- Fixed some bugs in the random module; gauss() was subtly wrong, and
-+vonmisesvariate() should return a full circle.  Courtesy Mike Miller,
-+Lambert Meertens (gauss()), and Magnus Kessler (vonmisesvariate()).
-+
-+- Better default seed in the whrandom module, courtesy Andrew Kuchling.
-+
-+- Fix slow close() in shelve module.
-+
-+- The Unix mailbox class in the mailbox module is now more robust when
-+a line begins with the string "From " but is definitely not the start
-+of a new message.  The pattern used can be changed by overriding a
-+method or class variable.
-+
-+- Added a rmtree() function to the copy module.
-+
-+- Fixed several typos in the pickle module.  Also fixed problems when
-+unpickling in restricted execution environments.
-+
-+- Added docstrings and fixed a typo in the py_compile and compileall
-+modules.  At Mark Hammond's repeated request, py_compile now append a
-+newline to the source if it needs one.  Both modules support an extra
-+parameter to specify the purported source filename (to be used in
-+error messages).
-+
-+- Some performance tweaks by Jeremy Hylton to the gzip module.
-+
-+- Fixed a bug in the merge order of dictionaries in the ConfigParser
-+module.  Courtesy Barry Warsaw.
-+
-+- In the multifile module, support the optional second parameter to
-+seek() when possible.
-+
-+- Several fixes to the gopherlib module by Lars Marius Garshol.  Also, 
-+urlparse now correctly handles Gopher URLs with query strings.
-+
-+- Fixed a tiny bug in format_exception() in the traceback module.
-+Also rewrite tb_lineno() to be compatible with JPython (and not
-+disturb the current exception!); by Jim Hugunin.
-+
-+- The httplib module is more robust when servers send a short response 
-+-- courtesy Tim O'Malley.
-+
-+Tkinter and friends
-+-------------------
-+
-+- Various typos and bugs fixed.
-+
-+- New module Tkdnd implements a drag-and-drop protocol (within one
-+application only).
-+
-+- The event_*() widget methods have been restructured slightly -- they
-+no longer use the default root.
-+
-+- The interfaces for the bind*() and unbind() widget methods have been
-+redesigned; the bind*() methods now return the name of the Tcl command 
-+created for the callback, and this can be passed as a optional
-+argument to unbind() in order to delete the command (normally, such
-+commands are automatically unbound when the widget is destroyed, but
-+for some applications this isn't enough).
-+
-+- Variable objects now have trace methods to interface to Tcl's
-+variable tracing facilities.
-+
-+- Image objects now have an optional keyword argument, 'master', to
-+specify a widget (tree) to which they belong.  The image_names() and
-+image_types() calls are now also widget methods.
-+
-+- There's a new global call, Tkinter.NoDefaultRoot(), which disables
-+all use of the default root by the Tkinter library.  This is useful to
-+debug applications that are in the process of being converted from
-+relying on the default root to explicit specification of the root
-+widget.
-+
-+- The 'exit' command is deleted from the Tcl interpreter, since it
-+provided a loophole by which one could (accidentally) exit the Python
-+interpreter without invoking any cleanup code.
-+
-+- Tcl_Finalize() is now registered as a Python low-level exit handle,
-+so Tcl will be finalized when Python exits.
-+
-+The Python/C API
-+----------------
-+
-+- New function PyThreadState_GetDict() returns a per-thread dictionary
-+intended for storing thread-local global variables.
-+
-+- New functions Py_ReprEnter() and Py_ReprLeave() use the per-thread
-+dictionary to allow recursive container types to detect recursion in
-+their repr(), str() and print implementations.
-+
-+- New function PyObject_Not(x) calculates (not x) according to Python's 
-+standard rules (basically, it negates the outcome PyObject_IsTrue(x).
-+
-+- New function _PyModule_Clear(), which clears a module's dictionary
-+carefully without removing the __builtins__ entry.  This is implied
-+when a module object is deallocated (this used to clear the dictionary
-+completely).
-+
-+- New function PyImport_ExecCodeModuleEx(), which extends
-+PyImport_ExecCodeModule() by adding an extra parameter to pass it the
-+true file.
-+
-+- New functions Py_GetPythonHome() and Py_SetPythonHome(), intended to
-+allow embedded applications to force a different value for PYTHONHOME.
-+
-+- New global flag Py_FrozenFlag is set when this is a "frozen" Python
-+binary; it suppresses warnings about not being able to find the
-+standard library directories.
-+
-+- New global flag Py_TabcheckFlag is incremented by the -t option and
-+causes the tokenizer to issue warnings or errors about inconsistent
-+mixing of tabs and spaces for indentation.
-+
-+Miscellaneous minor changes and bug fixes
-+-----------------------------------------
-+
-+- Improved the error message when an attribute of an attribute-less
-+object is requested -- include the name of the attribute and the type
-+of the object in the message.
-+
-+- Sped up int(), long(), float() a bit.
-+
-+- Fixed a bug in list.sort() that would occasionally dump core.
-+
-+- Fixed a bug in PyNumber_Power() that caused numeric arrays to fail
-+when taken tothe real power.
-+
-+- Fixed a number of bugs in the file reading code, at least one of
-+which could cause a core dump on NT, and one of which would
-+occasionally cause file.read() to return less than the full contents
-+of the file.
-+
-+- Performance hack by Vladimir Marangozov for stack frame creation.
-+
-+- Make sure setvbuf() isn't used unless HAVE_SETVBUF is defined.
-+
-+Windows 95/NT
-+-------------
-+
-+- The .lib files are now part of the distribution; they are collected
-+in the subdirectory "libs" of the installation directory.
-+
-+- The extension modules (.pyd files) are now collected in a separate
-+subdirectory of the installation directory named "DLLs".
-+
-+- The case of a module's filename must now match the case of the
-+module name as specified in the import statement.  This is an
-+experimental feature -- if it turns out to break in too many
-+situations, it will be removed (or disabled by default) in the future.
-+It can be disabled on a per-case basis by setting the environment
-+variable PYTHONCASEOK (to any value).
-+
-+
-+======================================================================
-+
-+
-+=====================================
-+==> Release 1.5 (January 3, 1998) <==
-+=====================================
-+
-+
-+From 1.5b2 to 1.5
-+=================
-+
-+- Newly documentated module: BaseHTTPServer.py, thanks to Greg Stein.
-+
-+- Added doc strings to string.py, stropmodule.c, structmodule.c,
-+thanks to Charles Waldman.
-+
-+- Many nits fixed in the manuals, thanks to Fred Drake and many others
-+(especially Rob Hooft and Andrew Kuchling).  The HTML version now uses
-+HTML markup instead of inline GIF images for tables; only two images
-+are left (for obsure bits of math).  The index of the HTML version has
-+also been much improved.  Finally, it is once again possible to
-+generate an Emacs info file from the library manual (but I don't
-+commit to supporting this in future versions).
-+
-+- New module: telnetlib.py (a simple telnet client library).
-+
-+- New tool: Tools/versioncheck/, by Jack Jansen.
-+
-+- Ported zlibmodule.c and bsddbmodule.c to NT; The project file for MS
-+DevStudio 5.0 now includes new subprojects to build the zlib and bsddb
-+extension modules.
-+
-+- Many small changes again to Tkinter.py -- mostly bugfixes and adding
-+missing routines.  Thanks to Greg McFarlane for reporting a bunch of
-+problems and proofreading my fixes.
-+
-+- The re module and its documentation are up to date with the latest
-+version released to the string-sig (Dec. 22).
-+
-+- Stop test_grp.py from failing when the /etc/group file is empty
-+(yes, this happens!).
-+
-+- Fix bug in integer conversion (mystrtoul.c) that caused
-+4294967296==0 to be true!
-+
-+- The VC++ 4.2 project file should be complete again.
-+
-+- In tempfile.py, use a better template on NT, and add a new optional
-+argument "suffix" with default "" to specify a specific extension for
-+the temporary filename (needed sometimes on NT but perhaps also handy
-+elsewhere).
-+
-+- Fixed some bugs in the FAQ wizard, and converted it to use re
-+instead of regex.
-+
-+- Fixed a mysteriously undetected error in dlmodule.c (it was using a
-+totally bogus routine name to raise an exception).
-+
-+- Fixed bug in import.c which wasn't using the new "dos-8x3" name yet.
-+
-+- Hopefully harmless changes to the build process to support shared
-+libraries on DG/UX.  This adds a target to create
-+libpython$(VERSION).so; however this target is *only* for DG/UX.
-+
-+- Fixed a bug in the new format string error checking in getargs.c.
-+
-+- A simple fix for infinite recursion when printing __builtins__:
-+reset '_' to None before printing and set it to the printed variable
-+*after* printing (and only when printing is successful).
-+
-+- Fixed lib-tk/SimpleDialog.py to keep the dialog visible even if the
-+parent window is not (Skip Montanaro).
-+
-+- Fixed the two most annoying problems with ftp URLs in
-+urllib.urlopen(); an empty file now correctly raises an error, and it
-+is no longer required to explicitly close the returned "file" object
-+before opening another ftp URL to the same host and directory.
-+
-+
-+======================================================================
-+
-+
-+From 1.5b1 to 1.5b2
-+===================
-+
-+- Fixed a bug in cPickle.c that caused it to crash right away because
-+the version string had a different format.
-+
-+- Changes in pickle.py and cPickle.c: when unpickling an instance of a
-+class that doesn't define the __getinitargs__() method, the __init__()
-+constructor is no longer called.  This makes a much larger group of
-+classes picklable by default, but may occasionally change semantics.
-+To force calling __init__() on unpickling, define a __getinitargs__()
-+method.  Other changes too, in particular cPickle now handles classes
-+defined in packages correctly.  The same change applies to copying
-+instances with copy.py.  The cPickle.c changes and some pickle.py
-+changes are courtesy Jim Fulton.
-+
-+- Locale support in he "re" (Perl regular expressions) module.  Use 
-+the flag re.L (or re.LOCALE) to enable locale-specific matching
-+rules for \w and \b.  The in-line syntax for this flag is (?L).
-+
-+- The built-in function isinstance(x, y) now also succeeds when y is
-+a type object and type(x) is y.
-+
-+- repr() and str() of class and instance objects now reflect the
-+package/module in which the class is defined.
-+
-+- Module "ni" has been removed.  (If you really need it, it's been
-+renamed to "ni1".  Let me know if this causes any problems for you.
-+Package authors are encouraged to write __init__.py files that
-+support both ni and 1.5 package support, so the same version can be
-+used with Python 1.4 as well as 1.5.)
-+
-+- The thread module is now automatically included when threads are
-+configured.  (You must remove it from your existing Setup file,
-+since it is now in its own Setup.thread file.)
-+
-+- New command line option "-x" to skip the first line of the script;
-+handy to make executable scripts on non-Unix platforms.
-+
-+- In importdl.c, add the RTLD_GLOBAL to the dlopen() flags.  I
-+haven't checked how this affects things, but it should make symbols
-+in one shared library available to the next one.
-+
-+- The Windows installer now installs in the "Program Files" folder on
-+the proper volume by default.
-+
-+- The Windows configuration adds a new main program, "pythonw", and
-+registers a new extension, ".pyw" that invokes this.  This is a
-+pstandard Python interpreter that does not pop up a console window;
-+handy for pure Tkinter applications.  All output to the original
-+stdout and stderr is lost; reading from the original stdin yields
-+EOF.  Also, both python.exe and pythonw.exe now have a pretty icon
-+(a green snake in a box, courtesy Mark Hammond).
-+
-+- Lots of improvements to emacs-mode.el again.  See Barry's web page:
-+http://www.python.org/ftp/emacs/pmdetails.html.
-+
-+- Lots of improvements and additions to the library reference manual;
-+many by Fred Drake.
-+
-+- Doc strings for the following modules: rfc822.py, posixpath.py,
-+ntpath.py, httplib.py.  Thanks to Mitch Chapman and Charles Waldman.
-+
-+- Some more regression testing.
-+
-+- An optional 4th (maxsplit) argument to strop.replace().
-+
-+- Fixed handling of maxsplit in string.splitfields().
-+
-+- Tweaked os.environ so it can be pickled and copied.
-+
-+- The portability problems caused by indented preprocessor commands
-+and C++ style comments should be gone now.
-+
-+- In random.py, added Pareto and Weibull distributions.
-+
-+- The crypt module is now disabled in Modules/Setup.in by default; it
-+is rarely needed and causes errors on some systems where users often
-+don't know how to deal with those.
-+
-+- Some improvements to the _tkinter build line suggested by Case Roole.
-+
-+- A full suite of platform specific files for NetBSD 1.x, submitted by 
-+Anders Andersen.
-+
-+- New Solaris specific header STROPTS.py.
-+
-+- Moved a confusing occurrence of *shared* from the comments in
-+Modules/Setup.in (people would enable this one instead of the real
-+one, and get disappointing results).
-+
-+- Changed the default mode for directories to be group-writable when
-+the installation process creates them.
-+
-+- Check for pthread support in "-l_r" for FreeBSD/NetBSD, and support
-+shared libraries for both.
-+
-+- Support FreeBSD and NetBSD in posixfile.py.
-+
-+- Support for the "event" command, new in Tk 4.2.  By Case Roole.
-+
-+- Add Tix_SafeInit() support to tkappinit.c.
-+
-+- Various bugs fixed in "re.py" and "pcre.c".
-+
-+- Fixed a bug (broken use of the syntax table) in the old "regexpr.c".
-+
-+- In frozenmain.c, stdin is made unbuffered too when PYTHONUNBUFFERED
-+is set.
-+
-+- Provide default blocksize for retrbinary in ftplib.py (Skip
-+Montanaro).
-+
-+- In NT, pick the username up from different places in user.py (Jeff
-+Bauer).
-+
-+- Patch to urlparse.urljoin() for ".." and "..#1", Marc Lemburg.
-+
-+- Many small improvements to Jeff Rush' OS/2 support.
-+
-+- ospath.py is gone; it's been obsolete for so many years now...
-+
-+- The reference manual is now set up to prepare better HTML (still
-+using webmaker, alas).
-+
-+- Add special handling to /Tools/freeze for Python modules that are
-+imported implicitly by the Python runtime: 'site' and 'exceptions'.
-+
-+- Tools/faqwiz 0.8.3 -- add an option to suppress URL processing
-+inside <PRE>, by "Scott".
-+
-+- Added ConfigParser.py, a generic parser for sectioned configuration
-+files.
-+
-+- In _localemodule.c, LC_MESSAGES is not always defined; put it
-+between #ifdefs.
-+
-+- Typo in resource.c: RUSAGE_CHILDERN -> RUSAGE_CHILDREN.
-+
-+- Demo/scripts/newslist.py: Fix the way the version number is gotten
-+out of the RCS revision.
-+
-+- PyArg_Parse[Tuple] now explicitly check for bad characters at the
-+end of the format string.
-+
-+- Revamped PC/example_nt to support VC++ 5.x.
-+
-+- <listobject>.sort() now uses a modified quicksort by Raymund Galvin,
-+after studying the GNU libg++ quicksort.  This should be much faster
-+if there are lots of duplicates, and otherwise at least as good.
-+
-+- Added "uue" as an alias for "uuencode" to mimetools.py.  (Hm, the
-+uudecode bug where it complaints about trailing garbage is still there 
-+:-( ).
-+
-+- pickle.py requires integers in text mode to be in decimal notation
-+(it used to accept octal and hex, even though it would only generate
-+decimal numbers).
-+
-+- In string.atof(), don't fail when the "re" module is unavailable.
-+Plug the ensueing security leak by supplying an empty __builtins__
-+directory to eval().
-+
-+- A bunch of small fixes and improvements to Tkinter.py.
-+
-+- Fixed a buffer overrun in PC/getpathp.c.
-+
-+
-+======================================================================
-+
-+
-+From 1.5a4 to 1.5b1
-+===================
-+
-+- The Windows NT/95 installer now includes full HTML of all manuals.
-+It also has a checkbox that lets you decide whether to install the
-+interpreter and library.  The WISE installer script for the installer
-+is included in the source tree as PC/python15.wse, and so are the
-+icons used for Python files.  The config.c file for the Windows build
-+is now complete with the pcre module.
-+
-+- sys.ps1 and sys.ps2 can now arbitrary objects; their str() is
-+evaluated for the prompt.
-+
-+- The reference manual is brought up to date (more or less -- it still
-+needs work, e.g. in the area of package import).
-+
-+- The icons used by latex2html are now included in the Doc
-+subdirectory (mostly so that tarring up the HTML files can be fully
-+automated).  A simple index.html is also added to Doc (it only works
-+after you have successfully run latex2html).
-+
-+- For all you would-be proselytizers out there: a new version of
-+Misc/BLURB describes Python more concisely, and Misc/comparisons
-+compares Python to several other languages.  Misc/BLURB.WINDOWS
-+contains a blurb specifically aimed at Windows programmers (by Mark
-+Hammond).
-+
-+- A new version of the Python mode for Emacs is included as
-+Misc/python-mode.el.  There are too many new features to list here.
-+See http://www.python.org/ftp/emacs/pmdetails.html for more info.
-+
-+- New module fileinput makes iterating over the lines of a list of
-+files easier.  (This still needs some more thinking to make it more
-+extensible.)
-+
-+- There's full OS/2 support, courtesy Jeff Rush.  To build the OS/2
-+version, see PC/readme.txt and PC/os2vacpp.  This is for IBM's Visual
-+Age C++ compiler.  I expect that Jeff will also provide a binary
-+release for this platform.
-+
-+- On Linux, the configure script now uses '-Xlinker -export-dynamic'
-+instead of '-rdynamic' to link the main program so that it exports its
-+symbols to shared libraries it loads dynamically.  I hope this doesn't
-+break on older Linux versions; it is needed for mklinux and appears to
-+work on Linux 2.0.30.
-+
-+- Some Tkinter resstructuring: the geometry methods that apply to a
-+master are now properly usable on toplevel master widgets.  There's a
-+new (internal) widget class, BaseWidget.  New, longer "official" names
-+for the geometry manager methods have been added,
-+e.g. "grid_columnconfigure()" instead of "columnconfigure()".  The old
-+shorter names still work, and where there's ambiguity, pack wins over
-+place wins over grid.  Also, the bind_class method now returns its
-+value.
-+
-+- New, RFC-822 conformant parsing of email addresses and address lists
-+in the rfc822 module, courtesy Ben Escoto.
-+
-+- New, revamped tkappinit.c with support for popular packages (PIL,
-+TIX, BLT, TOGL).  For the last three, you need to execute the Tcl
-+command "load {} Tix" (or Blt, or Togl) to gain access to them.
-+The Modules/Setup line for the _tkinter module has been rewritten
-+using the cool line-breaking feature of most Bourne shells.
-+
-+- New socket method connect_ex() returns the error code from connect()
-+instead of raising an exception on errors; this makes the logic
-+required for asynchronous connects simpler and more efficient.
-+
-+- New "locale" module with (still experimental) interface to the
-+standard C library locale interface, courtesy Martin von Loewis.  This
-+does not repeat my mistake in 1.5a4 of always calling
-+setlocale(LC_ALL, "").  In fact, we've pretty much decided that
-+Python's standard numerical formatting operations should always use
-+the conventions for the C locale; the locale module contains utility
-+functions to format numbers according to the user specified locale.
-+(All this is accomplished by an explicit call to setlocale(LC_NUMERIC,
-+"C") after locale-changing calls.)  See the library manual. (Alas, the
-+promised changes to the "re" module for locale support have not been
-+materialized yet.  If you care, volunteer!)
-+
-+- Memory leak plugged in Py_BuildValue when building a dictionary.
-+
-+- Shared modules can now live inside packages (hierarchical module
-+namespaces).  No changes to the shared module itself are needed.
-+
-+- Improved policy for __builtins__: this is a module in __main__ and a
-+dictionary everywhere else.
-+
-+- Python no longer catches SIGHUP and SIGTERM by default.  This was
-+impossible to get right in the light of thread contexts.  If you want
-+your program to clean up when a signal happens, use the signal module
-+to set up your own signal handler.
-+
-+- New Python/C API PyNumber_CoerceEx() does not return an exception
-+when no coercion is possible.  This is used to fix a problem where
-+comparing incompatible numbers for equality would raise an exception
-+rather than return false as in Python 1.4 -- it once again will return
-+false.
-+
-+- The errno module is changed again -- the table of error messages
-+(errorstr) is removed.  Instead, you can use os.strerror().  This
-+removes redundance and a potential locale dependency.
-+
-+- New module xmllib, to parse XML files.  By Sjoerd Mullender.
-+
-+- New C API PyOS_AfterFork() is called after fork() in posixmodule.c.
-+It resets the signal module's notion of what the current process ID
-+and thread are, so that signal handlers will work after (and across)
-+calls to os.fork().
-+
-+- Fixed most occurrences of fatal errors due to missing thread state.
-+
-+- For vgrind (a flexible source pretty printer) fans, there's a simple
-+Python definition in Misc/vgrindefs, courtesy Neale Pickett.
-+
-+- Fixed memory leak in exec statement.
-+
-+- The test.pystone module has a new function, pystones(loops=LOOPS),
-+which returns a (benchtime, stones) tuple.  The main() function now
-+calls this and prints the report.
-+
-+- Package directories now *require* the presence of an __init__.py (or
-+__init__.pyc) file before they are considered as packages.  This is
-+done to prevent accidental subdirectories with common names from
-+overriding modules with the same name.
-+
-+- Fixed some strange exceptions in __del__ methods in library modules
-+(e.g. urllib).  This happens because the builtin names are already
-+deleted by the time __del__ is called.  The solution (a hack, but it
-+works) is to set some instance variables to 0 instead of None.
-+
-+- The table of built-in module initializers is replaced by a pointer
-+variable.  This makes it possible to switch to a different table at
-+run time, e.g. when a collection of modules is loaded from a shared
-+library.  (No example code of how to do this is given, but it is
-+possible.)  The table is still there of course, its name prefixed with
-+an underscore and used to initialize the pointer.
-+
-+- The warning about a thread still having a frame now only happens in
-+verbose mode.
-+
-+- Change the signal finialization so that it also resets the signal
-+handlers.  After this has been called, our signal handlers are no
-+longer active!
-+
-+- New version of tokenize.py (by Ka-Ping Yee) recognizes raw string
-+literals.  There's now also a test fort this module.
-+
-+- The copy module now also uses __dict__.update(state) instead of
-+going through individual attribute assignments, for class instances
-+without a __setstate__ method.
-+
-+- New module reconvert translates old-style (regex module) regular
-+expressions to new-style (re module, Perl-style) regular expressions.
-+
-+- Most modules that used to use the regex module now use the re
-+module.  The grep module has a new pgrep() function which uses
-+Perl-style regular expressions.
-+
-+- The (very old, backwards compatibility) regexp.py module has been
-+deleted.
-+
-+- Restricted execution (rexec): added the pcre module (support for the
-+re module) to the list of trusted extension modules.
-+
-+- New version of Jim Fulton's CObject object type, adds
-+PyCObject_FromVoidPtrAndDesc() and PyCObject_GetDesc() APIs.
-+
-+- Some patches to Lee Busby's fpectl mods that accidentally didn't
-+make it into 1.5a4.
-+
-+- In the string module, add an optional 4th argument to count(),
-+matching find() etc.
-+
-+- Patch for the nntplib module by Charles Waldman to add optional user
-+and password arguments to NNTP.__init__(), for nntp servers that need
-+them.
-+
-+- The str() function for class objects now returns
-+"modulename.classname" instead of returning the same as repr().
-+
-+- The parsing of \xXX escapes no longer relies on sscanf().
-+
-+- The "sharedmodules" subdirectory of the installation is renamed to
-+"lib-dynload".  (You may have to edit your Modules/Setup file to fix
-+this in an existing installation!)
-+
-+- Fixed Don Beaudry's mess-up with the OPT test in the configure
-+script.  Certain SGI platforms will still issue a warning for each
-+compile; there's not much I can do about this since the compiler's
-+exit status doesn't indicate that I was using an obsolete option.
-+
-+- Fixed Barry's mess-up with {}.get(), and added test cases for it.
-+
-+- Shared libraries didn't quite work under AIX because of the change
-+in status of the GNU readline interface.  Fix due to by Vladimir
-+Marangozov.
-+
-+
-+======================================================================
-+
-+
-+From 1.5a3 to 1.5a4
-+===================
-+
-+- faqwiz.py: version 0.8; Recognize https:// as URL; <html>...</html>
-+feature; better install instructions; removed faqmain.py (which was an
-+older version).
-+
-+- nntplib.py: Fixed some bugs reported by Lars Wirzenius (to Debian)
-+about the treatment of lines starting with '.'.  Added a minimal test
-+function.
-+
-+- struct module: ignore most whitespace in format strings.
-+
-+- urllib.py: close the socket and temp file in URLopener.retrieve() so
-+that multiple retrievals using the same connection work.
-+
-+- All standard exceptions are now classes by default; use -X to make
-+them strings (for backward compatibility only).
-+
-+- There's a new standard exception hierarchy, defined in the standard
-+library module exceptions.py (which you never need to import
-+explicitly).  See
-+http://grail.cnri.reston.va.us/python/essays/stdexceptions.html for
-+more info.
-+
-+- Three new C API functions:
-+
-+  - int PyErr_GivenExceptionMatches(obj1, obj2)
-+
-+    Returns 1 if obj1 and obj2 are the same object, or if obj1 is an
-+    instance of type obj2, or of a class derived from obj2
-+
-+  - int PyErr_ExceptionMatches(obj)
-+
-+    Higher level wrapper around PyErr_GivenExceptionMatches() which uses
-+    PyErr_Occurred() as obj1.  This will be the more commonly called
-+    function.
-+
-+  - void PyErr_NormalizeException(typeptr, valptr, tbptr)
-+
-+    Normalizes exceptions, and places the normalized values in the
-+    arguments.  If type is not a class, this does nothing.  If type is a
-+    class, then it makes sure that value is an instance of the class by:
-+
-+    1. if instance is of the type, or a class derived from type, it does
-+       nothing.
-+
-+    2. otherwise it instantiates the class, using the value as an
-+       argument.  If value is None, it uses an empty arg tuple, and if
-+       the value is a tuple, it uses just that.
-+
-+- Another new C API function: PyErr_NewException() creates a new
-+exception class derived from Exception; when -X is given, it creates a
-+new string exception.
-+
-+- core interpreter: remove the distinction between tuple and list
-+unpacking; allow an arbitrary sequence on the right hand side of any
-+unpack instruction.  (UNPACK_LIST and UNPACK_TUPLE now do the same
-+thing, which should really be called UNPACK_SEQUENCE.)
-+
-+- classes: Allow assignments to an instance's __dict__ or __class__,
-+so you can change ivars (including shared ivars -- shock horror) and
-+change classes dynamically.  Also make the check on read-only
-+attributes of classes less draconic -- only the specials names
-+__dict__, __bases__, __name__ and __{get,set,del}attr__ can't be
-+assigned.
-+
-+- Two new built-in functions: issubclass() and isinstance().  Both
-+take classes as their second arguments.  The former takes a class as
-+the first argument and returns true iff first is second, or is a
-+subclass of second.  The latter takes any object as the first argument
-+and returns true iff first is an instance of the second, or any
-+subclass of second.
-+
-+- configure: Added configuration tests for presence of alarm(),
-+pause(), and getpwent().
-+
-+- Doc/Makefile: changed latex2html targets.
-+
-+- classes: Reverse the search order for the Don Beaudry hook so that
-+the first class with an applicable hook wins.  Makes more sense.
-+
-+- Changed the checks made in Py_Initialize() and Py_Finalize().  It is
-+now legal to call these more than once.  The first call to
-+Py_Initialize() initializes, the first call to Py_Finalize()
-+finalizes.  There's also a new API, Py_IsInitalized() which checks
-+whether we are already initialized (in case you want to leave things
-+as they were).
-+
-+- Completely disable the declarations for malloc(), realloc() and
-+free().  Any 90's C compiler has these in header files, and the tests
-+to decide whether to suppress the declarations kept failing on some
-+platforms.
-+
-+- *Before* (instead of after) signalmodule.o is added, remove both
-+intrcheck.o and sigcheck.o.  This should get rid of warnings in ar or
-+ld on various systems.
-+
-+- Added reop to PC/config.c
-+
-+- configure: Decided to use -Aa -D_HPUX_SOURCE on HP-UX platforms.
-+Removed outdated HP-UX comments from README.  Added Cray T3E comments.
-+
-+- Various renames of statically defined functions that had name
-+conflicts on some systems, e.g. strndup (GNU libc), join (Cray),
-+roundup (sys/types.h).
-+
-+- urllib.py: Interpret three slashes in file: URL as local file (for
-+Netscape on Windows/Mac).
-+
-+- copy.py: Make sure the objects returned by __getinitargs__() are
-+kept alive (in the memo) to avoid a certain kind of nasty crash.  (Not
-+easily reproducable because it requires a later call to
-+__getinitargs__() to return a tuple that happens to be allocated at
-+the same address.)
-+
-+- Added definition of AR to toplevel Makefile.  Renamed @buildno temp
-+file to buildno1.
-+
-+- Moved Include/assert.h to Parser/assert.h, which seems to be the
-+only place where it's needed.
-+
-+- Tweaked the dictionary lookup code again for some more speed
-+(Vladimir Marangozov).
-+
-+- NT build: Changed the way python15.lib is included in the other
-+projects.  Per Mark Hammond's suggestion, add it to the extra libs in
-+Settings instead of to the project's source files.
-+
-+- regrtest.py: Change default verbosity so that there are only three
-+levels left: -q, default and -v.  In default mode, the name of each
-+test is now printed.  -v is the same as the old -vv.  -q is more quiet
-+than the old default mode.
-+
-+- Removed the old FAQ from the distribution.  You now have to get it
-+from the web!
-+
-+- Removed the PC/make_nt.in file from the distribution; it is no
-+longer needed.
-+
-+- Changed the build sequence so that shared modules are built last.
-+This fixes things for AIX and doesn't hurt elsewhere.
-+
-+- Improved test for GNU MP v1 in mpzmodule.c
-+
-+- fileobject.c: ftell() on Linux discards all buffered data; changed
-+read() code to use lseek() instead to get the same effect
-+
-+- configure.in, configure, importdl.c: NeXT sharedlib fixes
-+
-+- tupleobject.c: PyTuple_SetItem asserts refcnt==1
-+
-+- resource.c: Different strategy regarding whether to declare
-+getrusage() and getpagesize() -- #ifdef doesn't work, Linux has
-+conflicting decls in its headers.  Choice: only declare the return
-+type, not the argument prototype, and not on Linux.
-+
-+- importdl.c, configure*: set sharedlib extensions properly for NeXT
-+
-+- configure*, Makefile.in, Modules/Makefile.pre.in: AIX shared libraries
-+fixed; moved addition of PURIFY to LINKCC to configure
-+
-+- reopmodule.c, regexmodule.c, regexpr.c, zlibmodule.c: needed casts
-+added to shup up various compilers.
-+
-+- _tkinter.c: removed buggy mac #ifndef
-+
-+- Doc: various Mac documentation changes, added docs for 'ic' module
-+
-+- PC/make_nt.in: deleted
-+
-+- test_time.py, test_strftime.py: tweaks to catch %Z (which may return
-+"")
-+
-+- test_rotor.py: print b -> print `b`
-+
-+- Tkinter.py: (tagOrId) -> (tagOrId,)
-+
-+- Tkinter.py: the Tk class now also has a configure() method and
-+friends (they have been moved to the Misc class to accomplish this).
-+
-+- dict.get(key[, default]) returns dict[key] if it exists, or default
-+if it doesn't.  The default defaults to None.  This is quicker for
-+some applications than using either has_key() or try:...except
-+KeyError:....
-+
-+- Tools/webchecker/: some small changes to webchecker.py; added
-+websucker.py (a simple web site mirroring script).
-+
-+- Dictionary objects now have a get() method (also in UserDict.py).
-+dict.get(key, default) returns dict[key] if it exists and default
-+otherwise; default defaults to None.
-+
-+- Tools/scripts/logmerge.py: print the author, too.
-+
-+- Changes to import: support for "import a.b.c" is now built in.  See
-+http://grail.cnri.reston.va.us/python/essays/packages.html
-+for more info.  Most important deviations from "ni.py": __init__.py is
-+executed in the package's namespace instead of as a submodule; and
-+there's no support for "__" or "__domain__".  Note that "ni.py" is not
-+changed to match this -- it is simply declared obsolete (while at the
-+same time, it is documented...:-( ).
-+Unfortunately, "ihooks.py" has not been upgraded (but see "knee.py"
-+for an example implementation of hierarchical module import written in
-+Python).
-+
-+- More changes to import: the site.py module is now imported by
-+default when Python is initialized; use -S to disable it.  The site.py
-+module extends the path with several more directories: site-packages
-+inside the lib/python1.5/ directory, site-python in the lib/
-+directory, and pathnames mentioned in *.pth files found in either of
-+those directories.  See
-+http://grail.cnri.reston.va.us/python/essays/packages.html
-+for more info.
-+
-+- Changes to standard library subdirectory names: those subdirectories
-+that are not packages have been renamed with a hypen in their name,
-+e.g. lib-tk, lib-stdwin, plat-win, plat-linux2, plat-sunos5, dos-8x3.
-+The test suite is now a package -- to run a test, you must now use
-+"import test.test_foo".
-+
-+- A completely new re.py module is provided (thanks to Andrew
-+Kuchling, Tim Peters and Jeffrey Ollie) which uses Philip Hazel's
-+"pcre" re compiler and engine.  For a while, the "old" re.py (which
-+was new in 1.5a3!) will be kept around as re1.py.  The "old" regex
-+module and underlying parser and engine are still present -- while
-+regex is now officially obsolete, it will probably take several major
-+release cycles before it can be removed.
-+
-+- The posix module now has a strerror() function which translates an
-+error code to a string.
-+
-+- The emacs.py module (which was long obsolete) has been removed.
-+
-+- The universal makefile Misc/Makefile.pre.in now features an
-+"install" target.  By default, installed shared libraries go into
-+$exec_prefix/lib/python$VERSION/site-packages/.
-+
-+- The install-sh script is installed with the other configuration
-+specific files (in the config/ subdirectory).
-+
-+- It turns out whatsound.py and sndhdr.py were identical modules.
-+Since there's also an imghdr.py file, I propose to make sndhdr.py the
-+official one.  For compatibility, whatsound.py imports * from
-+sndhdr.py.
-+
-+- Class objects have a new attribute, __module__, giving the name of
-+the module in which they were declared.  This is useful for pickle and
-+for printing the full name of a class exception.
-+
-+- Many extension modules no longer issue a fatal error when their
-+initialization fails; the importing code now checks whether an error
-+occurred during module initialization, and correctly propagates the
-+exception to the import statement.
-+
-+- Most extension modules now raise class-based exceptions (except when
-+-X is used).
-+
-+- Subtle changes to PyEval_{Save,Restore}Thread(): always swap the
-+thread state -- just don't manipulate the lock if it isn't there.
-+
-+- Fixed a bug in Python/getopt.c that made it do the wrong thing when
-+an option was a single '-'.  Thanks to Andrew Kuchling.
-+
-+- New module mimetypes.py will guess a MIME type from a filename's
-+extension.
-+
-+- Windows: the DLL version is now settable via a resource rather than
-+being hardcoded.  This can be used for "branding" a binary Python
-+distribution.
-+
-+- urllib.py is now threadsafe -- it now uses re instead of regex, and
-+sys.exc_info() instead of sys.exc_{type,value}.
-+
-+- Many other library modules that used to use
-+sys.exc_{type,value,traceback} are now more thread-safe by virtue of
-+using sys.exc_info().
-+
-+- The functions in popen2 have an optional buffer size parameter.
-+Also, the command argument can now be either a string (passed to the
-+shell) or a list of arguments (passed directly to execv).
-+
-+- Alas, the thread support for _tkinter released with 1.5a3 didn't
-+work.  It's been rewritten.  The bad news is that it now requires a
-+modified version of a file in the standard Tcl distribution, which you
-+must compile with a -I option pointing to the standard Tcl source
-+tree.  For this reason, the thread support is disabled by default.
-+
-+- The errno extension module adds two tables: errorcode maps errno
-+numbers to errno names (e.g. EINTR), and errorstr maps them to
-+message strings.  (The latter is redundant because the new call
-+posix.strerror() now does the same, but alla...)  (Marc-Andre Lemburg)
-+
-+- The readline extension module now provides some interfaces to
-+internal readline routines that make it possible to write a completer
-+in Python.  An example completer, rlcompleter.py, is provided.
-+
-+      When completing a simple identifier, it completes keywords,
-+      built-ins and globals in __main__; when completing
-+      NAME.NAME..., it evaluates (!) the expression up to the last
-+      dot and completes its attributes.
-+
-+      It's very cool to do "import string" type "string.", hit the
-+      completion key (twice), and see the list of names defined by
-+      the string module!
-+
-+      Tip: to use the tab key as the completion key, call
-+
-+          readline.parse_and_bind("tab: complete")
-+
-+- The traceback.py module has a new function tb_lineno() by Marc-Andre
-+Lemburg which extracts the line number from the linenumber table in
-+the code object.  Apparently the traceback object doesn't contains the
-+right linenumber when -O is used.  Rather than guessing whether -O is
-+on or off, the module itself uses tb_lineno() unconditionally.
-+
-+- Fixed Demo/tkinter/matt/canvas-moving-or-creating.py: change bind()
-+to tag_bind() so it works again.
-+
-+- The pystone script is now a standard library module.  Example use:
-+"import test.pystone; test.pystone.main()".
-+
-+- The import of the readline module in interactive mode is now also
-+attempted when -i is specified.  (Yes, I know, giving in to Marc-Andre
-+Lemburg, who asked for this. :-)
-+
-+- rfc822.py: Entirely rewritten parseaddr() function by Sjoerd
-+Mullender, to be closer to the standard.  This fixes the getaddr()
-+method.  Unfortunately, getaddrlist() is as broken as ever, since it
-+splits on commas without regard for RFC 822 quoting conventions.
-+
-+- pprint.py: correctly emit trailing "," in singleton tuples.
-+
-+- _tkinter.c: export names for its type objects, TkappType and
-+TkttType.
-+
-+- pickle.py: use __module__ when defined; fix a particularly hard to
-+reproduce bug that confuses the memo when temporary objects are
-+returned by custom pickling interfaces; and a semantic change: when
-+unpickling the instance variables of an instance, use
-+inst.__dict__.update(value) instead of a for loop with setattr() over
-+the value.keys().  This is more consistent (the pickling doesn't use
-+getattr() either but pickles inst.__dict__) and avoids problems with
-+instances that have a __setattr__ hook.  But it *is* a semantic change
-+(because the setattr hook is no longer used).  So beware!
-+
-+- config.h is now installed (at last) in
-+$exec_prefix/include/python1.5/.  For most sites, this means that it
-+is actually in $prefix/include/python1.5/, with all the other Python
-+include files, since $prefix and $exec_prefix are the same by
-+default.
-+
-+- The imp module now supports parts of the functionality to implement
-+import of hierarchical module names.  It now supports find_module()
-+and load_module() for all types of modules.  Docstrings have been
-+added for those functions in the built-in imp module that are still
-+relevant (some old interfaces are obsolete).  For a sample
-+implementation of hierarchical module import in Python, see the new
-+library module knee.py.
-+
-+- The % operator on string objects now allows arbitrary nested parens
-+in a %(...)X style format.  (Brad Howes)
-+
-+- Reverse the order in which Setup and Setup.local are passed to the
-+makesetup script.  This allows variable definitions in Setup.local to
-+override definitions in Setup.  (But you'll still have to edit Setup
-+if you want to disable modules that are enabled by default, or if such
-+modules need non-standard options.)
-+
-+- Added PyImport_ImportModuleEx(name, globals, locals, fromlist); this
-+is like PyImport_ImporModule(name) but receives the globals and locals
-+dict and the fromlist arguments as well.  (The name is a char*; the
-+others are PyObject*s).
-+
-+- The 'p' format in the struct extension module alloded to above is
-+new in 1.5a4.
-+
-+- The types.py module now uses try-except in a few places to make it
-+more likely that it can be imported in restricted mode.  Some type
-+names are undefined in that case, e.g. CodeType (inaccessible),
-+FileType (not always accessible), and TracebackType and FrameType
-+(inaccessible).
-+
-+- In urllib.py: added separate administration of temporary files
-+created y URLopener.retrieve() so cleanup() can properly remove them.
-+The old code removed everything in tempcache which was a bad idea if
-+the user had passed a non-temp file into it.  Also, in basejoin(),
-+interpret relative paths starting in "../".  This is necessary if the
-+server uses symbolic links.
-+
-+- The Windows build procedure and project files are now based on
-+Microsoft Visual C++ 5.x.  The build now takes place in the PCbuild
-+directory.  It is much more robust, and properly builds separate Debug
-+and Release versions.  (The installer will be added shortly.)
-+
-+- Added casts and changed some return types in regexpr.c to avoid
-+compiler warnings or errors on some platforms.
-+
-+- The AIX build tools for shared libraries now supports VPATH.  (Donn
-+Cave)
-+
-+- By default, disable the "portable" multimedia modules audioop,
-+imageop, and rgbimg, since they don't work on 64-bit platforms.
-+
-+- Fixed a nasty bug in cStringIO.c when code was actually using the
-+close() method (the destructors would try to free certain fields a
-+second time).
-+
-+- For those who think they need it, there's a "user.py" module.  This
-+is *not* imported by default, but can be imported to run user-specific
-+setup commands, ~/.pythonrc.py.
-+
-+- Various speedups suggested by Fredrik Lundh, Marc-Andre Lemburg,
-+Vladimir Marangozov, and others.
-+
-+- Added os.altsep; this is '/' on DOS/Windows, and None on systems
-+with a sane filename syntax.
-+
-+- os.py: Write out the dynamic OS choice, to avoid exec statements.
-+Adding support for a new OS is now a bit more work, but I bet that
-+'dos' or 'nt' will cover most situations...
-+
-+- The obsolete exception AccessError is now really gone.
-+
-+- Tools/faqwiz/: New installation instructions show how to maintain
-+multiple FAQs.  Removed bootstrap script from end of faqwiz.py module.
-+Added instructions to bootstrap script, too.  Version bumped to 0.8.1.
-+Added <html>...</html> feature suggested by Skip Montanaro.  Added
-+leading text for Roulette, default to 'Hit Reload ...'.  Fix typo in
-+default SRCDIR.
-+
-+- Documentation for the relatively new modules "keyword" and "symbol"
-+has been added (to the end of the section on the parser extension
-+module).
-+
-+- In module bisect.py, but functions have two optional argument 'lo'
-+and 'hi' which allow you to specify a subsequence of the array to
-+operate on.
-+
-+- In ftplib.py, changed most methods to return their status (even when
-+it is always "200 OK") rather than swallowing it.
-+
-+- main() now calls setlocale(LC_ALL, ""), if setlocale() and
-+<locale.h> are defined.
-+
-+- Changes to configure.in, the configure script, and both
-+Makefile.pre.in files, to support SGI's SGI_ABI platform selection
-+environment variable.
-+
-+
-+======================================================================
-+
-+
-+From 1.4 to 1.5a3
-+=================
-+
-+Security
-+--------
-+
-+- If you are using the setuid script C wrapper (Misc/setuid-prog.c),
-+please use the new version.  The old version has a huge security leak.
-+
-+Miscellaneous
-+-------------
-+
-+- Because of various (small) incompatible changes in the Python
-+bytecode interpreter, the magic number for .pyc files has changed
-+again.
-+
-+- The default module search path is now much saner.  Both on Unix and
-+Windows, it is essentially derived from the path to the executable
-+(which can be overridden by setting the environment variable
-+$PYTHONHOME).  The value of $PYTHONPATH on Windows is now inserted in
-+front of the default path, like in Unix (instead of overriding the
-+default path).  On Windows, the directory containing the executable is
-+added to the end of the path.
-+
-+- A new version of python-mode.el for Emacs has been included.  Also,
-+a new file ccpy-style.el has been added to configure Emacs cc-mode for
-+the preferred style in Python C sources.
-+
-+- On Unix, when using sys.argv[0] to insert the script directory in
-+front of sys.path, expand a symbolic link.  You can now install a
-+program in a private directory and have a symbolic link to it in a
-+public bin directory, and it will put the private directory in the
-+module search path.  Note that the symlink is expanded in sys.path[0]
-+but not in sys.argv[0], so you can still tell the name by which you
-+were invoked.
-+
-+- It is now recommended to use ``#!/usr/bin/env python'' instead of
-+``#!/usr/local/bin/python'' at the start of executable scripts, except
-+for CGI scripts.  It has been determined that the use of /usr/bin/env
-+is more portable than that of /usr/local/bin/python -- scripts almost
-+never have to be edited when the Python interpreter lives in a
-+non-standard place.  Note that this doesn't work for CGI scripts since
-+the python executable often doesn't live in the HTTP server's default
-+search path.
-+
-+- The silly -s command line option and the corresponding
-+PYTHONSUPPRESS environment variable (and the Py_SuppressPrint global
-+flag in the Python/C API) are gone.
-+
-+- Most problems on 64-bit platforms should now be fixed.  Andrew
-+Kuchling helped.  Some uncommon extension modules are still not
-+clean (image and audio ops?).
-+
-+- Fixed a bug where multiple anonymous tuple arguments would be mixed up
-+when using the debugger or profiler (reported by Just van Rossum).
-+The simplest example is ``def f((a,b),(c,d)): print a,b,c,d''; this
-+would print the wrong value when run under the debugger or profiler.
-+
-+- The hacks that the dictionary implementation used to speed up
-+repeated lookups of the same C string were removed; these were a
-+source of subtle problems and don't seem to serve much of a purpose
-+any longer.
-+
-+- All traces of support for the long dead access statement have been
-+removed from the sources.
-+
-+- Plugged the two-byte memory leak in the tokenizer when reading an
-+interactive EOF.
-+
-+- There's a -O option to the interpreter that removes SET_LINENO
-+instructions and assert statements (see below); it uses and produces
-+.pyo files instead of .pyc files.  The speedup is only a few percent
-+in most cases.  The line numbers are still available in the .pyo file,
-+as a separate table (which is also available in .pyc files).  However,
-+the removal of the SET_LINENO instructions means that the debugger
-+(pdb) can't set breakpoints on lines in -O mode.  The traceback module
-+contains a function to extract a line number from the code object
-+referenced in a traceback object.  In the future it should be possible
-+to write external bytecode optimizers that create better optimized
-+.pyo files, and there should be more control over optimization;
-+consider the -O option a "teaser".  Without -O, the assert statement
-+actually generates code that first checks __debug__; if this variable
-+is false, the assertion is not checked.  __debug__ is a built-in
-+variable whose value is initialized to track the -O flag (it's true
-+iff -O is not specified).  With -O, no code is generated for assert
-+statements, nor for code of the form ``if __debug__: <something>''.
-+Sorry, no further constant folding happens.
-+
-+
-+Performance
-+-----------
-+
-+- It's much faster (almost twice for pystone.py -- see
-+Tools/scripts).  See the entry on string interning below.
-+
-+- Some speedup by using separate free lists for method objects (both
-+the C and the Python variety) and for floating point numbers.
-+
-+- Big speedup by allocating frame objects with a single malloc() call.
-+The Python/C API for frames is changed (you shouldn't be using this
-+anyway).
-+
-+- Significant speedup by inlining some common opcodes for common operand 
-+types (e.g.  i+i, i-i, and list[i]).  Fredrik Lundh.
-+
-+- Small speedup by reordering the method tables of some common
-+objects (e.g. list.append is now first).
-+
-+- Big optimization to the read() method of file objects.  A read()
-+without arguments now attempts to use fstat to allocate a buffer of
-+the right size; for pipes and sockets, it will fall back to doubling
-+the buffer size.  While that the improvement is real on all systems,
-+it is most dramatic on Windows.
-+
-+
-+Documentation
-+-------------
-+
-+- Many new pieces of library documentation were contributed, mostly by
-+Andrew Kuchling.  Even cmath is now documented!  There's also a
-+chapter of the library manual, "libundoc.tex", which provides a
-+listing of all undocumented modules, plus their status (e.g. internal,
-+obsolete, or in need of documentation).  Also contributions by Sue
-+Williams, Skip Montanaro, and some module authors who succumbed to
-+pressure to document their own contributed modules :-).  Note that
-+printing the documentation now kills fewer trees -- the margins have
-+been reduced.
-+
-+- I have started documenting the Python/C API. Unfortunately this project 
-+hasn't been completed yet.  It will be complete before the final release of 
-+Python 1.5, though.  At the moment, it's better to read the LaTeX source 
-+than to attempt to run it through LaTeX and print the resulting dvi file.
-+
-+- The posix module (and hence os.py) now has doc strings!  Thanks to Neil 
-+Schemenauer.  I received a few other contributions of doc strings.  In most 
-+other places, doc strings are still wishful thinking...
-+
-+
-+Language changes
-+----------------
-+
-+- Private variables with leading double underscore are now a permanent 
-+feature of the language.  (These were experimental in release 1.4.  I have 
-+favorable experience using them; I can't label them "experimental" 
-+forever.)
-+
-+- There's new string literal syntax for "raw strings".  Prefixing a string 
-+literal with the letter r (or R) disables all escape processing in the 
-+string; for example, r'\n' is a two-character string consisting of a 
-+backslash followed by the letter n.  This combines with all forms of string 
-+quotes; it is actually useful for triple quoted doc strings which might 
-+contain references to \n or \t.  An embedded quote prefixed with a 
-+backslash does not terminate the string, but the backslash is still 
-+included in the string; for example, r'\'' is a two-character string 
-+consisting of a backslash and a quote.  (Raw strings are also 
-+affectionately known as Robin strings, after their inventor, Robin 
-+Friedrich.)
-+
-+- There's a simple assert statement, and a new exception
-+AssertionError.  For example, ``assert foo > 0'' is equivalent to ``if
-+not foo > 0: raise AssertionError''.  Sorry, the text of the asserted
-+condition is not available; it would be too complicated to generate
-+code for this (since the code is generated from a parse tree).
-+However, the text is displayed as part of the traceback!
-+
-+- The raise statement has a new feature: when using "raise SomeClass,
-+somevalue" where somevalue is not an instance of SomeClass, it
-+instantiates SomeClass(somevalue).  In 1.5a4, if somevalue is an
-+instance of a *derived* class of SomeClass, the exception class raised
-+is set to somevalue.__class__, and SomeClass is ignored after that.
-+
-+- Duplicate keyword arguments are now detected at compile time;
-+f(a=1,a=2) is now a syntax error.
-+
-+
-+Changes to builtin features
-+---------------------------
-+
-+- There's a new exception FloatingPointError (used only by Lee Busby's
-+patches to catch floating point exceptions, at the moment).
-+
-+- The obsolete exception ConflictError (presumably used by the long
-+obsolete access statement) has been deleted.
-+
-+- There's a new function sys.exc_info() which returns the tuple 
-+(sys.exc_type, sys.exc_value, sys.exc_traceback) in a thread-safe way.
-+
-+- There's a new variable sys.executable, pointing to the executable file 
-+for the Python interpreter.
-+
-+- The sort() methods for lists no longer uses the C library qsort(); I
-+wrote my own quicksort implementation, with lots of help (in the form
-+of a kind of competition) from Tim Peters.  This solves a bug in
-+dictionary comparisons on some Solaris versions when Python is built
-+with threads, and makes sorting lists even faster.
-+
-+- The semantics of comparing two dictionaries have changed, to make
-+comparison of unequal dictionaries faster.  A shorter dictionary is
-+always considered smaller than a larger dictionary.  For dictionaries
-+of the same size, the smallest differing element determines the
-+outcome (which yields the same results as before in this case, without
-+explicit sorting).  Thanks to Aaron Watters for suggesting something
-+like this.
-+
-+- The semantics of try-except have changed subtly so that calling a
-+function in an exception handler that itself raises and catches an
-+exception no longer overwrites the sys.exc_* variables.  This also
-+alleviates the problem that objects referenced in a stack frame that
-+caught an exception are kept alive until another exception is caught
-+-- the sys.exc_* variables are restored to their previous value when
-+returning from a function that caught an exception.
-+
-+- There's a new "buffer" interface.  Certain objects (e.g. strings and
-+arrays) now support the "buffer" protocol.  Buffer objects are acceptable 
-+whenever formerly a string was required for a write operation; mutable 
-+buffer objects can be the target of a read operation using the call
-+f.readinto(buffer).  A cool feature is that regular expression matching now 
-+also work on array objects.  Contribution by Jack Jansen.  (Needs 
-+documentation.)
-+
-+- String interning: dictionary lookups are faster when the lookup
-+string object is the same object as the key in the dictionary, not
-+just a string with the same value.  This is done by having a pool of
-+"interned" strings.  Most names generated by the interpreter are now
-+automatically interned, and there's a new built-in function intern(s)
-+that returns the interned version of a string.  Interned strings are
-+not a different object type, and interning is totally optional, but by
-+interning most keys a speedup of about 15% was obtained for the
-+pystone benchmark.
-+
-+- Dictionary objects have several new methods; clear() and copy() have
-+the obvious semantics, while update(d) merges the contents of another
-+dictionary d into this one, overriding existing keys.  The dictionary
-+implementation file is now called dictobject.c rather than the
-+confusing mappingobject.c.
-+
-+- The intrinsic function dir() is much smarter; it looks in __dict__,
-+__members__ and __methods__.
-+
-+- The intrinsic functions int(), long() and float() can now take a
-+string argument and then do the same thing as string.atoi(),
-+string.atol(), and string.atof().  No second 'base' argument is
-+allowed, and complex() does not take a string (nobody cared enough).
-+
-+- When a module is deleted, its globals are now deleted in two phases.
-+In the first phase, all variables whose name begins with exactly one
-+underscore are replaced by None; in the second phase, all variables
-+are deleted.  This makes it possible to have global objects whose
-+destructors depend on other globals.  The deletion order within each
-+phase is still random.
-+
-+- It is no longer an error for a function to be called without a
-+global variable __builtins__ -- an empty directory will be provided
-+by default.
-+
-+- Guido's corollary to the "Don Beaudry hook": it is now possible to
-+do metaprogramming by using an instance as a base class.  Not for the
-+faint of heart; and undocumented as yet, but basically if a base class
-+is an instance, its class will be instantiated to create the new
-+class.  Jim Fulton will love it -- it also works with instances of his
-+"extension classes", since it is triggered by the presence of a
-+__class__ attribute on the purported base class.  See
-+Demo/metaclasses/index.html for an explanation and see that directory
-+for examples.
-+
-+- Another change is that the Don Beaudry hook is now invoked when
-+*any* base class is special.  (Up to 1.5a3, the *last* special base
-+class is used; in 1.5a4, the more rational choice of the *first*
-+special base class is used.)
-+
-+- New optional parameter to the readlines() method of file objects.
-+This indicates the number of bytes to read (the actual number of bytes
-+read will be somewhat larger due to buffering reading until the end of
-+the line).  Some optimizations have also been made to speed it up (but
-+not as much as read()).
-+
-+- Complex numbers no longer have the ".conj" pseudo attribute; use
-+z.conjugate() instead, or complex(z.real, -z.imag).  Complex numbers
-+now *do* support the __members__ and __methods__ special attributes.
-+
-+- The complex() function now looks for a __complex__() method on class
-+instances before giving up.
-+
-+- Long integers now support arbitrary shift counts, so you can now
-+write 1L<<1000000, memory permitting.  (Python 1.4 reports "outrageous
-+shift count for this.)
-+
-+- The hex() and oct() functions have been changed so that for regular
-+integers, they never emit a minus sign.  For example, on a 32-bit
-+machine, oct(-1) now returns '037777777777' and hex(-1) returns
-+'0xffffffff'.  While this may seem inconsistent, it is much more
-+useful.  (For long integers, a minus sign is used as before, to fit
-+the result in memory :-)
-+
-+- The hash() function computes better hashes for several data types,
-+including strings, floating point numbers, and complex numbers.
-+
-+
-+New extension modules
-+---------------------
-+
-+- New extension modules cStringIO.c and cPickle.c, written by Jim
-+Fulton and other folks at Digital Creations.  These are much more
-+efficient than their Python counterparts StringIO.py and pickle.py,
-+but don't support subclassing.  cPickle.c clocks up to 1000 times
-+faster than pickle.py; cStringIO.c's improvement is less dramatic but
-+still significant.
-+
-+- New extension module zlibmodule.c, interfacing to the free zlib
-+library (gzip compatible compression).  There's also a module gzip.py
-+which provides a higher level interface.  Written by Andrew Kuchling
-+and Jeremy Hylton.
-+
-+- New module readline; see the "miscellaneous" section above.
-+
-+- New Unix extension module resource.c, by Jeremy Hylton, provides
-+access to getrlimit(), getrusage(), setrusage(), getpagesize(), and
-+related symbolic constants.
-+
-+- New extension puremodule.c, by Barry Warsaw, which interfaces to the
-+Purify(TM) C API.  See also the file Misc/PURIFY.README.  It is also
-+possible to enable Purify by simply setting the PURIFY Makefile
-+variable in the Modules/Setup file.
-+
-+
-+Changes in extension modules
-+----------------------------
-+
-+- The struct extension module has several new features to control byte
-+order and word size.  It supports reading and writing IEEE floats even
-+on platforms where this is not the native format.  It uses uppercase
-+format codes for unsigned integers of various sizes (always using
-+Python long ints for 'I' and 'L'), 's' with a size prefix for strings,
-+and 'p' for "Pascal strings" (with a leading length byte, included in
-+the size; blame Hannu Krosing; new in 1.5a4).  A prefix '>' forces
-+big-endian data and '<' forces little-endian data; these also select
-+standard data sizes and disable automatic alignment (use pad bytes as
-+needed).
-+
-+- The array module supports uppercase format codes for unsigned data
-+formats (like the struct module).
-+
-+- The fcntl extension module now exports the needed symbolic
-+constants.  (Formerly these were in FCNTL.py which was not available
-+or correct for all platforms.)
-+
-+- The extension modules dbm, gdbm and bsddb now check that the
-+database is still open before making any new calls.
-+
-+- The dbhash module is no more.  Use bsddb instead.  (There's a third
-+party interface for the BSD 2.x code somewhere on the web; support for
-+bsddb will be deprecated.)
-+
-+- The gdbm module now supports a sync() method.
-+
-+- The socket module now has some new functions: getprotobyname(), and
-+the set {ntoh,hton}{s,l}().
-+
-+- Various modules now export their type object: socket.SocketType,
-+array.ArrayType.
-+
-+- The socket module's accept() method now returns unknown addresses as
-+a tuple rather than raising an exception.  (This can happen in
-+promiscuous mode.)  Theres' also a new function getprotobyname().
-+
-+- The pthread support for the thread module now works on most platforms.
-+
-+- STDWIN is now officially obsolete.  Support for it will eventually
-+be removed from the distribution.
-+
-+- The binascii extension module is now hopefully fully debugged.
-+(XXX Oops -- Fredrik Lundh promised me a uuencode fix that I never
-+received.)
-+
-+- audioop.c: added a ratecv() function; better handling of overflow in
-+add().
-+
-+- posixmodule.c: now exports the O_* flags (O_APPEND etc.).  On
-+Windows, also O_TEXT and O_BINARY.  The 'error' variable (the
-+exception is raises) is renamed -- its string value is now "os.error",
-+so newbies don't believe they have to import posix (or nt) to catch
-+it when they see os.error reported as posix.error.  The execve()
-+function now accepts any mapping object for the environment.
-+
-+- A new version of the al (audio library) module for SGI was
-+contributed by Sjoerd Mullender.
-+
-+- The regex module has a new function get_syntax() which retrieves the
-+syntax setting set by set_syntax().  The code was also sanitized,
-+removing worries about unclean error handling.  See also below for its
-+successor, re.py.
-+
-+- The "new" module (which creates new objects of various types) once
-+again has a fully functioning new.function() method.  Dangerous as
-+ever!  Also, new.code() has several new arguments.
-+
-+- A problem has been fixed in the rotor module: on systems with signed
-+characters, rotor-encoded data was not portable when the key contained
-+8-bit characters.  Also, setkey() now requires its argument rather
-+than having broken code to default it.
-+
-+- The sys.builtin_module_names variable is now a tuple.  Another new
-+variables in sys is sys.executable (the full path to the Python
-+binary, if known).
-+
-+- The specs for time.strftime() have undergone some revisions.  It
-+appears that not all format characters are supported in the same way
-+on all platforms.  Rather than reimplement it, we note these
-+differences in the documentation, and emphasize the shared set of
-+features.  There's also a thorough test set (that occasionally finds
-+problems in the C library implementation, e.g. on some Linuxes),
-+thanks to Skip Montanaro.
-+
-+- The nis module seems broken when used with NIS+; unfortunately
-+nobody knows how to fix it.  It should still work with old NIS.
-+
-+
-+New library modules
-+-------------------
-+
-+- New (still experimental) Perl-style regular expression module,
-+re.py, which uses a new interface for matching as well as a new
-+syntax; the new interface avoids the thread-unsafety of the regex
-+interface.  This comes with a helper extension reopmodule.c and vastly
-+rewritten regexpr.c.  Most work on this was done by Jeffrey Ollie, Tim
-+Peters, and Andrew Kuchling.  See the documentation libre.tex.  In
-+1.5, the old regex module is still fully supported; in the future, it
-+will become obsolete.
-+
-+- New module gzip.py; see zlib above.
-+
-+- New module keyword.py exports knowledge about Python's built-in
-+keywords.  (New version by Ka-Ping Yee.)
-+
-+- New module pprint.py (with documentation) which supports
-+pretty-printing of lists, tuples, & dictionaries recursively.  By Fred
-+Drake.
-+
-+- New module code.py.  The function code.compile_command() can
-+determine whether an interactively entered command is complete or not,
-+distinguishing incomplete from invalid input.  (XXX Unfortunately,
-+this seems broken at this moment, and I don't have the time to fix
-+it.  It's probably better to add an explicit interface to the parser
-+for this.)
-+
-+- There is now a library module xdrlib.py which can read and write the
-+XDR data format as used by Sun RPC, for example.  It uses the struct
-+module.
-+
-+
-+Changes in library modules
-+--------------------------
-+
-+- Module codehack.py is now completely obsolete.
-+
-+- The pickle.py module has been updated to make it compatible with the
-+new binary format that cPickle.c produces.  By default it produces the
-+old all-ASCII format compatible with the old pickle.py, still much
-+faster than pickle.py; it will read both formats automatically.  A few
-+other updates have been made.
-+
-+- A new helper module, copy_reg.py, is provided to register extensions
-+to the pickling code.
-+
-+- Revamped module tokenize.py is much more accurate and has an
-+interface that makes it a breeze to write code to colorize Python
-+source code.  Contributed by Ka-Ping Yee.
-+
-+- In ihooks.py, ModuleLoader.load_module() now closes the file under
-+all circumstances.
-+
-+- The tempfile.py module has a new class, TemporaryFile, which creates
-+an open temporary file that will be deleted automatically when
-+closed.  This works on Windows and MacOS as well as on Unix.  (Jim
-+Fulton.)
-+
-+- Changes to the cgi.py module: Most imports are now done at the
-+top of the module, which provides a speedup when using ni (Jim
-+Fulton).  The problem with file upload to a Windows platform is solved
-+by using the new tempfile.TemporaryFile class; temporary files are now
-+always opened in binary mode (Jim Fulton).  The cgi.escape() function
-+now takes an optional flag argument that quotes '"' to '&quot;'.  It
-+is now possible to invoke cgi.py from a command line script, to test
-+cgi scripts more easily outside an http server.  There's an optional
-+limit to the size of uploads to POST (Skip Montanaro).  Added a
-+'strict_parsing' option to all parsing functions (Jim Fulton).  The
-+function parse_qs() now uses urllib.unquote() on the name as well as
-+the value of fields (Clarence Gardner).  The FieldStorage class now
-+has a __len__() method.
-+
-+- httplib.py: the socket object is no longer closed; all HTTP/1.*
-+responses are now accepted; and it is now thread-safe (by not using
-+the regex module).
-+
-+- BaseHTTPModule.py: treat all HTTP/1.* versions the same.
-+
-+- The popen2.py module is now rewritten using a class, which makes
-+access to the standard error stream and the process id of the
-+subprocess possible.
-+
-+- Added timezone support to the rfc822.py module, in the form of a
-+getdate_tz() method and a parsedate_tz() function; also a mktime_tz().
-+Also added recognition of some non-standard date formats, by Lars
-+Wirzenius, and RFC 850 dates (Chris Lawrence).
-+
-+- mhlib.py: various enhancements, including almost compatible parsing
-+of message sequence specifiers without invoking a subprocess.  Also
-+added a createmessage() method by Lars Wirzenius.
-+
-+- The StringIO.StringIO class now supports readline(nbytes).  (Lars 
-+Wirzenius.)  (Of course, you should be using cStringIO for performance.)
-+
-+- UserDict.py supports the new dictionary methods as well.
-+
-+- Improvements for whrandom.py by Tim Peters: use 32-bit arithmetic to
-+speed it up, and replace 0 seed values by 1 to avoid degeneration.
-+A bug was fixed in the test for invalid arguments.
-+
-+- Module ftplib.py: added support for parsing a .netrc file (Fred
-+Drake).  Also added an ntransfercmd() method to the FTP class, which
-+allows access to the expected size of a transfer when available, and a
-+parse150() function to the module which parses the corresponding 150
-+response.
-+
-+- urllib.py: the ftp cache is now limited to 10 entries.  Added
-+quote_plus() and unquote_plus() functions which are like quote() and
-+unquote() but also replace spaces with '+' or vice versa, for
-+encoding/decoding CGI form arguments.  Catch all errors from the ftp
-+module.  HTTP requests now add the Host: header line.  The proxy
-+variable names are now mapped to lower case, for Windows.  The
-+spliturl() function no longer erroneously throws away all data past
-+the first newline.  The basejoin() function now intereprets "../"
-+correctly.  I *believe* that the problems with "exception raised in
-+__del__" under certain circumstances have been fixed (mostly by
-+changes elsewher in the interpreter).
-+
-+- In urlparse.py, there is a cache for results in urlparse.urlparse();
-+its size limit is set to 20.  Also, new URL schemes shttp, https, and
-+snews are "supported".
-+
-+- shelve.py: use cPickle and cStringIO when available.  Also added
-+a sync() method, which calls the database's sync() method if there is
-+one.
-+
-+- The mimetools.py module now uses the available Python modules for
-+decoding quoted-printable, uuencode and base64 formats, rather than
-+creating a subprocess.
-+
-+- The python debugger (pdb.py, and its base class bdb.py) now support
-+conditional breakpoints.  See the docs.
-+
-+- The modules base64.py, uu.py and quopri.py can now be used as simple
-+command line utilities.
-+
-+- Various small fixes to the nntplib.py module that I can't bother to
-+document in detail.
-+
-+- Sjoerd Mullender's mimify.py module now supports base64 encoding and 
-+includes functions to handle the funny encoding you sometimes see in mail 
-+headers.  It is now documented.
-+
-+- mailbox.py: Added BabylMailbox.  Improved the way the mailbox is
-+gotten from the environment.
-+
-+- Many more modules now correctly open files in binary mode when this
-+is necessary on non-Unix platforms.
-+
-+- The copying functions in the undocumented module shutil.py are
-+smarter.
-+
-+- The Writer classes in the formatter.py module now have a flush()
-+method.
-+
-+- The sgmllib.py module accepts hyphens and periods in the middle of
-+attribute names.  While this is against the SGML standard, there is
-+some HTML out there that uses this...
-+
-+- The interface for the Python bytecode disassembler module, dis.py,
-+has been enhanced quite a bit.  There's now one main function,
-+dis.dis(), which takes almost any kind of object (function, module,
-+class, instance, method, code object) and disassembles it; without
-+arguments it disassembles the last frame of the last traceback.  The
-+other functions have changed slightly, too.
-+
-+- The imghdr.py module recognizes new image types: BMP, PNG.
-+
-+- The string.py module has a new function replace(str, old, new,
-+[maxsplit]) which does substring replacements.  It is actually
-+implemented in C in the strop module.  The functions [r]find() an
-+[r]index() have an optional 4th argument indicating the end of the
-+substring to search, alsoo implemented by their strop counterparts.
-+(Remember, never import strop -- import string uses strop when
-+available with zero overhead.)
-+
-+- The string.join() function now accepts any sequence argument, not
-+just lists and tuples.
-+
-+- The string.maketrans() requires its first two arguments to be
-+present.  The old version didn't require them, but there's not much
-+point without them, and the documentation suggests that they are
-+required, so we fixed the code to match the documentation.
-+
-+- The regsub.py module has a function clear_cache(), which clears its
-+internal cache of compiled regular expressions.  Also, the cache now
-+takes the current syntax setting into account.  (However, this module
-+is now obsolete -- use the sub() or subn() functions or methods in the
-+re module.)
-+
-+- The undocumented module Complex.py has been removed, now that Python
-+has built-in complex numbers.  A similar module remains as
-+Demo/classes/Complex.py, as an example.
-+
-+
-+Changes to the build process
-+----------------------------
-+
-+- The way GNU readline is configured is totally different.  The
-+--with-readline configure option is gone.  It is now an extension
-+module, which may be loaded dynamically.  You must enable it (and
-+specify the correct linraries to link with) in the Modules/Setup file.
-+Importing the module installs some hooks which enable command line
-+editing.  When the interpreter shell is invoked interactively, it
-+attempts to import the readline module; when this fails, the default
-+input mechanism is used.  The hook variables are PyOS_InputHook and
-+PyOS_ReadlineFunctionPointer.  (Code contributed by Lee Busby, with
-+ideas from William Magro.)
-+
-+- New build procedure: a single library, libpython1.5.a, is now built,
-+which contains absolutely everything except for a one-line main()
-+program (which calls Py_Main(argc, argv) to start the interpreter
-+shell).  This makes life much simpler for applications that need to
-+embed Python.  The serial number of the build is now included in the
-+version string (sys.version).
-+
-+- As far as I can tell, neither gcc -Wall nor the Microsoft compiler
-+emits a single warning any more when compiling Python.
-+
-+- A number of new Makefile variables have been added for special
-+situations, e.g. LDLAST is appended to the link command.  These are
-+used by editing the Makefile or passing them on the make command
-+line.
-+
-+- A set of patches from Lee Busby has been integrated that make it
-+possible to catch floating point exceptions.  Use the configure option
-+--with-fpectl to enable the patches; the extension modules fpectl and
-+fpetest provide control to enable/disable and test the feature,
-+respectively.
-+
-+- The support for shared libraries under AIX is now simpler and more
-+robust.  Thanks to Vladimir Marangozov for revamping his own patches!
-+
-+- The Modules/makesetup script now reads a file Setup.local as well as
-+a file Setup.  Most changes to the Setup script can be done by editing
-+Setup.local instead, which makes it easier to carry a particular setup
-+over from one release to the next.
-+
-+- The Modules/makesetup script now copies any "include" lines it
-+encounters verbatim into the output Makefile.  It also recognizes .cxx
-+and .cpp as C++ source files.
-+
-+- The configure script is smarter about C compiler options; e.g. with
-+gcc it uses -O2 and -g when possible, and on some other platforms it
-+uses -Olimit 1500 to avoid a warning from the optimizer about the main
-+loop in ceval.c (which has more than 1000 basic blocks).
-+
-+- The configure script now detects whether malloc(0) returns a NULL
-+pointer or a valid block (of length zero).  This avoids the nonsense
-+of always adding one byte to all malloc() arguments on most platforms.
-+
-+- The configure script has a new option, --with-dec-threads, to enable
-+DEC threads on DEC Alpha platforms.  Also, --with-threads is now an
-+alias for --with-thread (this was the Most Common Typo in configure
-+arguments).
-+
-+- Many changes in Doc/Makefile; amongst others, latex2html is now used
-+to generate HTML from all latex documents.
-+
-+
-+Change to the Python/C API
-+--------------------------
-+
-+- Because some interfaces have changed, the PYTHON_API macro has been
-+bumped.  Most extensions built for the old API version will still run,
-+but I can't guarantee this.  Python prints a warning message on
-+version mismatches; it dumps core when the version mismatch causes a
-+serious problem :-)
-+
-+- I've completed the Grand Renaming, with the help of Roger Masse and
-+Barry Warsaw.  This makes reading or debugging the code much easier.
-+Many other unrelated code reorganizations have also been carried out.
-+The allobjects.h header file is gone; instead, you would have to
-+include Python.h followed by rename2.h.  But you're better off running
-+Tools/scripts/fixcid.py -s Misc/RENAME on your source, so you can omit
-+the rename2.h; it will disappear in the next release.
-+
-+- Various and sundry small bugs in the "abstract" interfaces have been
-+fixed.  Thanks to all the (involuntary) testers of the Python 1.4
-+version!  Some new functions have been added, e.g. PySequence_List(o),
-+equivalent to list(o) in Python.
-+
-+- New API functions PyLong_FromUnsignedLong() and
-+PyLong_AsUnsignedLong().
-+
-+- The API functions in the file cgensupport.c are no longer
-+supported.  This file has been moved to Modules and is only ever
-+compiled when the SGI specific 'gl' module is built.
-+
-+- PyObject_Compare() can now raise an exception.  Check with
-+PyErr_Occurred().  The comparison function in an object type may also
-+raise an exception.
-+
-+- The slice interface uses an upper bound of INT_MAX when no explicit
-+upper bound is given (e.x. for a[1:]).  It used to ask the object for
-+its length and do the calculations.
-+
-+- Support for multiple independent interpreters.  See Doc/api.tex,
-+functions Py_NewInterpreter() and Py_EndInterpreter().  Since the
-+documentation is incomplete, also see the new Demo/pysvr example
-+(which shows how to use these in a threaded application) and the
-+source code.
-+
-+- There is now a Py_Finalize() function which "de-initializes"
-+Python.  It is possible to completely restart the interpreter
-+repeatedly by calling Py_Finalize() followed by Py_Initialize().  A
-+change of functionality in Py_Initialize() means that it is now a
-+fatal error to call it while the interpreter is already initialized.
-+The old, half-hearted Py_Cleanup() routine is gone.  Use of Py_Exit()
-+is deprecated (it is nothing more than Py_Finalize() followed by
-+exit()).
-+
-+- There are no known memory leaks left.  While Py_Finalize() doesn't
-+free *all* allocated memory (some of it is hard to track down),
-+repeated calls to Py_Finalize() and Py_Initialize() do not create
-+unaccessible heap blocks.
-+
-+- There is now explicit per-thread state.  (Inspired by, but not the
-+same as, Greg Stein's free threading patches.)
-+
-+- There is now better support for threading C applications.  There are
-+now explicit APIs to manipulate the interpreter lock.  Read the source
-+or the Demo/pysvr example; the new functions are
-+PyEval_{Acquire,Release}{Lock,Thread}().
-+
-+- The test macro DEBUG has changed to Py_DEBUG, to avoid interference
-+with other libraries' DEBUG macros.  Likewise for any other test
-+macros that didn't yet start with Py_.
-+
-+- New wrappers around malloc() and friends: Py_Malloc() etc. call
-+malloc() and call PyErr_NoMemory() when it fails; PyMem_Malloc() call
-+just malloc().  Use of these wrappers could be essential if multiple
-+memory allocators exist (e.g. when using certain DLL setups under
-+Windows).  (Idea by Jim Fulton.)
-+
-+- New C API PyImport_Import() which uses whatever __import__() hook
-+that is installed for the current execution environment.  By Jim
-+Fulton.
-+
-+- It is now possible for an extension module's init function to fail
-+non-fatally, by calling one of the PyErr_* functions and returning.
-+
-+- The PyInt_AS_LONG() and PyFloat_AS_DOUBLE() macros now cast their
-+argument to the proper type, like the similar PyString macros already
-+did.  (Suggestion by Marc-Andre Lemburg.)  Similar for PyList_GET_SIZE
-+and PyList_GET_ITEM.
-+
-+- Some of the Py_Get* function, like Py_GetVersion() (but not yet
-+Py_GetPath()) are now declared as returning a const char *.  (More
-+should follow.)
-+
-+- Changed the run-time library to check for exceptions after object
-+comparisons.  PyObject_Compare() can now return an exception; use
-+PyErr_Occurred() to check (there is *no* special return value).
-+
-+- PyFile_WriteString() and Py_Flushline() now return error indicators
-+instead of clearing exceptions.  This fixes an obscure bug where using
-+these would clear a pending exception, discovered by Just van Rossum.
-+
-+- There's a new function, PyArg_ParseTupleAndKeywords(), which parses
-+an argument list including keyword arguments.  Contributed by Geoff
-+Philbrick.
-+
-+- PyArg_GetInt() is gone.
-+
-+- It's no longer necessary to include graminit.h when calling one of
-+the extended parser API functions.  The three public grammar start
-+symbols are now in Python.h as Py_single_input, Py_file_input, and
-+Py_eval_input.
-+
-+- The CObject interface has a new function,
-+PyCObject_Import(module, name).  It calls PyCObject_AsVoidPtr()
-+on the object referenced by "module.name".
-+
-+
-+Tkinter
-+-------
-+
-+- On popular demand, _tkinter once again installs a hook for readline
-+that processes certain Tk events while waiting for the user to type
-+(using PyOS_InputHook).
-+
-+- A patch by Craig McPheeters plugs the most obnoxious memory leaks,
-+caused by command definitions referencing widget objects beyond their
-+lifetime.
-+
-+- New standard dialog modules: tkColorChooser.py, tkCommonDialog.py,
-+tkMessageBox.py, tkFileDialog.py, tkSimpleDialog.py These interface
-+with the new Tk dialog scripts, and provide more "native platform"
-+style file selection dialog boxes on some platforms.  Contributed by
-+Fredrik Lundh.
-+
-+- Tkinter.py: when the first Tk object is destroyed, it sets the
-+hiddel global _default_root to None, so that when another Tk object is
-+created it becomes the new default root.  Other miscellaneous
-+changes and fixes.
-+
-+- The Image class now has a configure method.
-+
-+- Added a bunch of new winfo options to Tkinter.py; we should now be
-+up to date with Tk 4.2.  The new winfo options supported are:
-+mananger, pointerx, pointerxy, pointery, server, viewable, visualid,
-+visualsavailable.
-+
-+- The broken bind() method on Canvas objects defined in the Canvas.py
-+module has been fixed.  The CanvasItem and Group classes now also have
-+an unbind() method.
-+
-+- The problem with Tkinter.py falling back to trying to import
-+"tkinter" when "_tkinter" is not found has been fixed -- it no longer
-+tries "tkinter", ever.  This makes diagnosing the problem "_tkinter
-+not configured" much easier and will hopefully reduce the newsgroup
-+traffic on this topic.
-+
-+- The ScrolledText module once again supports the 'cnf' parameter, to
-+be compatible with the examples in Mark Lutz' book (I know, I know,
-+too late...)
-+
-+- The _tkinter.c extension module has been revamped.  It now support
-+Tk versions 4.1 through 8.0; support for 4.0 has been dropped.  It
-+works well under Windows and Mac (with the latest Tk ports to those
-+platforms).  It also supports threading -- it is safe for one
-+(Python-created) thread to be blocked in _tkinter.mainloop() while
-+other threads modify widgets.  To make the changes visible, those
-+threads must use update_idletasks()method.  (The patch for threading
-+in 1.5a3 was broken; in 1.5a4, it is back in a different version,
-+which requires access to the Tcl sources to get it to work -- hence it
-+is disabled by default.)
-+
-+- A bug in _tkinter.c has been fixed, where Split() with a string
-+containing an unmatched '"' could cause an exception or core dump.
-+
-+- Unfortunately, on Windows and Mac, Tk 8.0 no longer supports
-+CreateFileHandler, so _tkinter.createfilehandler is not available on
-+those platforms when using Tk 8.0 or later.  I will have to rethink
-+how to interface with Tcl's lower-level event mechanism, or with its
-+channels (which are like Python's file-like objects).  Jack Jansen has
-+provided a fix for the Mac, so createfilehandler *is* actually
-+supported there; maybe I can adapt his fix for Windows.
-+
-+
-+Tools and Demos
-+---------------
-+
-+- A new regression test suite is provided, which tests most of the
-+standard and built-in modules.  The regression test is run by invoking
-+the script Lib/test/regrtest.py.  Barry Warsaw wrote the test harnass;
-+he and Roger Masse contributed most of the new tests.
-+
-+- New tool: faqwiz -- the CGI script that is used to maintain the
-+Python FAQ (http://grail.cnri.reston.va.us/cgi-bin/faqw.py).  In
-+Tools/faqwiz.
-+
-+- New tool: webchecker -- a simple extensible web robot that, when
-+aimed at a web server, checks that server for dead links.  Available
-+are a command line utility as well as a Tkinter based GUI version.  In
-+Tools/webchecker.  A simplified version of this program is dissected
-+in my article in O'Reilly's WWW Journal, the issue on Scripting
-+Languages (Vol 2, No 2); Scripting the Web with Python (pp 97-120).
-+Includes a parser for robots.txt files by Skip Montanaro.
-+
-+- New small tools: cvsfiles.py (prints a list of all files under CVS
-+n a particular directory tree), treesync.py (a rather Guido-specific
-+script to synchronize two source trees, one on Windows NT, the other
-+one on Unix under CVS but accessible from the NT box), and logmerge.py
-+(sort a collection of RCS or CVS logs by date).  In Tools/scripts.
-+
-+- The freeze script now also works under Windows (NT).  Another
-+feature allows the -p option to be pointed at the Python source tree
-+instead of the installation prefix.  This was loosely based on part of
-+xfreeze by Sam Rushing and Bill Tutt.
-+
-+- New examples (Demo/extend) that show how to use the generic
-+extension makefile (Misc/Makefile.pre.in).
-+
-+- Tools/scripts/h2py.py now supports C++ comments.
-+
-+- Tools/scripts/pystone.py script is upgraded to version 1.1; there
-+was a bug in version 1.0 (distributed with Python 1.4) that leaked
-+memory.  Also, in 1.1, the LOOPS variable is incremented to 10000.
-+
-+- Demo/classes/Rat.py completely rewritten by Sjoerd Mullender.
-+
-+
-+Windows (NT and 95)
-+-------------------
-+
-+- New project files for Developer Studio (Visual C++) 5.0 for Windows
-+NT (the old VC++ 4.2 Makefile is also still supported, but will
-+eventually be withdrawn due to its bulkiness).
-+
-+- See the note on the new module search path in the "Miscellaneous" section 
-+above.
-+
-+- Support for Win32s (the 32-bit Windows API under Windows 3.1) is
-+basically withdrawn.  If it still works for you, you're lucky.
-+
-+- There's a new extension module, msvcrt.c, which provides various 
-+low-level operations defined in the Microsoft Visual C++ Runtime Library.  
-+These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and 
-+console I/O functions like kbhit(), getch() and putch().
-+
-+- The -u option not only sets the standard I/O streams to unbuffered
-+status, but also sets them in binary mode.  (This can also be done
-+using msvcrt.setmode(), by the way.)
-+
-+- The, sys.prefix and sys.exec_prefix variables point to the directory 
-+where Python is installed, or to the top of the source tree, if it was run 
-+from there.
-+
-+- The various os.path modules (posixpath, ntpath, macpath) now support
-+passing more than two arguments to the join() function, so
-+os.path.join(a, b, c) is the same as os.path.join(a, os.path.join(b,
-+c)).
-+
-+- The ntpath module (normally used as os.path) supports ~ to $HOME 
-+expansion in expanduser().
-+
-+- The freeze tool now works on Windows.
-+
-+- See also the Tkinter category for a sad note on
-+_tkinter.createfilehandler().
-+
-+- The truncate() method for file objects now works on Windows.
-+
-+- Py_Initialize() is no longer called when the DLL is loaded.  You
-+must call it yourself.
-+
-+- The time module's clock() function now has good precision through
-+the use of the Win32 API QueryPerformanceCounter().
-+
-+- Mark Hammond will release Python 1.5 versions of PythonWin and his
-+other Windows specific code: the win32api extensions, COM/ActiveX
-+support, and the MFC interface.
-+
-+
-+Mac
-+---
-+
-+- As always, the Macintosh port will be done by Jack Jansen.  He will
-+make a separate announcement for the Mac specific source code and the
-+binary distribution(s) when these are ready.
-+
-+
-+======================================================================
-+
-+
-+=====================================
-+==> Release 1.4 (October 25 1996) <==
-+=====================================
-+
-+(Starting in reverse chronological order:)
-+
-+- Changed disclaimer notice.
-+
-+- Added SHELL=/bin/sh to Misc/Makefile.pre.in -- some Make versions
-+default to the user's login shell.
-+
-+- In Lib/tkinter/Tkinter.py, removed bogus binding of <Delete> in Text
-+widget, and bogus bspace() function.
-+
-+- In Lib/cgi.py, bumped __version__ to 2.0 and restored a truncated
-+paragraph.
-+
-+- Fixed the NT Makefile (PC/vc40.mak) for VC 4.0 to set /MD for all
-+subprojects, and to remove the (broken) experimental NumPy
-+subprojects.
-+
-+- In Lib/py_compile.py, cast mtime to long() so it will work on Mac
-+(where os.stat() returns mtimes as floats.)
-+- Set self.rfile unbuffered (like self.wfile) in SocketServer.py, to
-+fix POST in CGIHTTPServer.py.
-+
-+- Version 2.83 of Misc/python-mode.el for Emacs is included.
-+
-+- In Modules/regexmodule.c, fixed symcomp() to correctly handle a new
-+group starting immediately after a group tag.
-+
-+- In Lib/SocketServer.py, changed the mode for rfile to unbuffered.
-+
-+- In Objects/stringobject.c, fixed the compare function to do the
-+first char comparison in unsigned mode, for consistency with the way
-+other characters are compared by memcmp().
-+
-+- In Lib/tkinter/Tkinter.py, fixed Scale.get() to support floats.
-+
-+- In Lib/urllib.py, fix another case where openedurl wasn't set.
-+
-+(XXX Sorry, the rest is in totally random order.  No time to fix it.)
-+
-+- SyntaxError exceptions detected during code generation
-+(e.g. assignment to an expression) now include a line number.
-+
-+- Don't leave trailing / or \ in script directory inserted in front of
-+sys.path.
-+
-+- Added a note to Tools/scripts/classfix.py abouts its historical
-+importance.
-+
-+- Added Misc/Makefile.pre.in, a universal Makefile for extensions
-+built outside the distribution.
-+
-+- Rewritten Misc/faq2html.py, by Ka-Ping Yee.
-+
-+- Install shared modules with mode 555 (needed for performance on some
-+platforms).
-+
-+- Some changes to standard library modules to avoid calling append()
-+with more than one argument -- while supported, this should be
-+outlawed, and I don't want to set a bad example.
-+
-+- bdb.py (and hence pdb.py) supports calling run() with a code object
-+instead of a code string.
-+
-+- Fixed an embarrassing bug cgi.py which prevented correct uploading
-+of binary files from Netscape (which doesn't distinguish between
-+binary and text files).  Also added dormant logging support, which
-+makes it easier to debug the cgi module itself.
-+
-+- Added default writer to constructor of NullFormatter class.
-+
-+- Use binary mode for socket.makefile() calls in ftplib.py.
-+
-+- The ihooks module no longer "installs" itself upon import -- this
-+was an experimental feature that helped ironing out some bugs but that
-+slowed down code that imported it without the need to install it
-+(e.g. the rexec module).  Also close the file in some cases and add
-+the __file__ attribute to loaded modules.
-+
-+- The test program for mailbox.py is now more useful.
-+
-+- Added getparamnames() to Message class in mimetools.py -- it returns
-+the names of parameters to the content-type header.
-+
-+- Fixed a typo in ni that broke the loop stripping "__." from names.
-+
-+- Fix sys.path[0] for scripts run via pdb.py's new main program.
-+
-+- profile.py can now also run a script, like pdb.
-+
-+- Fix a small bug in pyclbr -- don't add names starting with _ when
-+emulating from ... import *.
-+
-+- Fixed a series of embarrassing typos in rexec's handling of standard
-+I/O redirection.  Added some more "safe" built-in modules: cmath,
-+errno, operator.
-+
-+- Fixed embarrassing typo in shelve.py.
-+
-+- Added SliceType and EllipsisType to types.py.
-+
-+- In urllib.py, added handling for error 301 (same as 302); added
-+geturl() method to get the URL after redirection.
-+
-+- Fixed embarrassing typo in xdrlib.py.  Also fixed typo in Setup.in
-+for _xdrmodule.c and removed redundant #include from _xdrmodule.c.
-+
-+- Fixed bsddbmodule.c to add binary mode indicator on platforms that
-+have it.  This should make it working on Windows NT.
-+
-+- Changed last uses of #ifdef NT to #ifdef MS_WINDOWS or MS_WIN32,
-+whatever applies.  Also rationalized some other tests for various MS
-+platforms.
-+
-+- Added the sources for the NT installer script used for Python
-+1.4beta3.  Not tested with this release, but better than nothing.
-+
-+- A compromise in pickle's defenses against Trojan horses: a
-+user-defined function is now okay where a class is expected.  A
-+built-in function is not okay, to prevent pickling something that
-+will execute os.system("rm -f *") when unpickling.
-+
-+- dis.py will print the name of local variables referenced by local
-+load/store/delete instructions.
-+
-+- Improved portability of SimpleHTTPServer module to non-Unix
-+platform.
-+
-+- The thread.h interface adds an extra argument to down_sema().  This
-+only affects other C code that uses thread.c; the Python thread module
-+doesn't use semaphores (which aren't provided on all platforms where
-+Python threads are supported).  Note: on NT, this change is not
-+implemented.
-+
-+- Fixed some typos in abstract.h; corrected signature of
-+PyNumber_Coerce, added PyMapping_DelItem.  Also fixed a bug in
-+abstract.c's PyObject_CallMethod().
-+
-+- apply(classname, (), {}) now works even if the class has no
-+__init__() method.
-+
-+- Implemented complex remainder and divmod() (these would dump core!).
-+Conversion of complex numbers to int, long int or float now raises an
-+exception, since there is no meaningful way to do it without losing
-+information.
-+
-+- Fixed bug in built-in complex() function which gave the wrong result
-+for two real arguments.
-+
-+- Change the hash algorithm for strings -- the multiplier is now
-+1000003 instead of 3, which gives better spread for short strings.
-+
-+- New default path for Windows NT, the registry structure now supports
-+default paths for different install packages.  (Mark Hammond -- the
-+next PythonWin release will use this.)
-+
-+- Added more symbols to the python_nt.def file.
-+
-+- When using GNU readline, set rl_readline_name to "python".
-+
-+- The Ellipses built-in name has been renamed to Ellipsis -- this is
-+the correct singular form.  Thanks to Ka-Ping Yee, who saved us from
-+eternal embarrassment.
-+
-+- Bumped the PYTHON_API_VERSION to 1006, due to the Ellipses ->
-+Ellipsis name change.
-+
-+- Updated the library reference manual.  Added documentation of
-+restricted mode (rexec, Bastion) and the formatter module (for use
-+with the htmllib module).  Fixed the documentation of htmllib
-+(finally).
-+
-+- The reference manual is now maintained in FrameMaker.
-+
-+- Upgraded scripts Doc/partparse.py and Doc/texi2html.py.
-+
-+- Slight improvements to Doc/Makefile.
-+
-+- Added fcntl.lockf(). This should be used for Unix file locking
-+instead of the posixfile module; lockf() is more portable.
-+
-+- The getopt module now supports long option names, thanks to Lars
-+Wizenius.
-+
-+- Plenty of changes to Tkinter and Canvas, mostly due to Fred Drake
-+and Nils Fischbeck.
-+
-+- Use more bits of time.time() in whrandom's default seed().
-+
-+- Performance hack for regex module's regs attribute.
-+
-+- Don't close already closed socket in socket module.
-+
-+- Correctly handle separators containing embedded nulls in
-+strop.split, strop.find and strop.rfind.  Also added more detail to
-+error message for strop.atoi and friends.
-+
-+- Moved fallback definition for hypot() to Python/hypot.c.
-+
-+- Added fallback definition for strdup, in Python/strdup.c.
-+
-+- Fixed some bugs where a function would return 0 to indicate an error
-+where it should return -1.
-+
-+- Test for error returned by time.localtime(), and rationalized its MS
-+tests.
-+
-+- Added Modules/Setup.local file, which is processed after Setup.
-+
-+- Corrected bug in toplevel Makefile.in -- execution of regen script
-+would not use the right PATH and PYTHONPATH.
-+
-+- Various and sundry NeXT configuration changes (sigh).
-+
-+- Support systems where libreadline needs neither termcap nor curses.
-+
-+- Improved ld_so_aix script and python.exp file (for AIX).
-+
-+- More stringent test for working <stdarg.h> in configure script.
-+
-+- Removed Demo/www subdirectory -- it was totally out of date.
-+
-+- Improved demos and docs for Fred Drake's parser module; fixed one
-+typo in the module itself.
-+
-+
-+=========================================
-+==> Release 1.4beta3 (August 26 1996) <==
-+=========================================
-+
-+
-+(XXX This is less readable that it should.  I promise to restructure
-+it for the final 1.4 release.)
-+
-+
-+What's new in 1.4beta3 (since beta2)?
-+-------------------------------------
-+
-+- Name mangling to implement a simple form of class-private variables.
-+A name of the form "__spam" can't easily be used outside the class.
-+(This was added in 1.4beta3, but left out of the 1.4beta3 release
-+message.)
-+
-+- In urllib.urlopen(): HTTP URLs containing user:passwd@host are now
-+handled correctly when using a proxy server.
-+
-+- In ntpath.normpath(): don't truncate to 8+3 format.
-+
-+- In mimetools.choose_boundary(): don't die when getuid() or getpid()
-+aren't defined.
-+
-+- Module urllib: some optimizations to (un)quoting.
-+
-+- New module MimeWriter for writing MIME documents.
-+
-+- More changes to formatter module.
-+
-+- The freeze script works once again and is much more robust (using
-+sys.prefix etc.).  It also supports a -o option to specify an
-+output directory.
-+
-+- New module whichdb recognizes dbm, gdbm and bsddb/dbhash files.
-+
-+- The Doc/Makefile targets have been reorganized somewhat to remove the 
-+insistence on always generating PostScript.
-+
-+- The texinfo to html filter (Doc/texi2html.py) has been improved somewhat.
-+
-+- "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing 
-+name conflict on the Mac.
-+
-+- Linking a module compiled with a different setting for Py_TRACE_REFS now 
-+generates a linker error rather than a core dump.
-+
-+- The cgi module has a new convenience function print_exception(), which 
-+formats a python exception using HTML.  It also fixes a bug in the 
-+compatibility code and adds a dubious feature which makes it possible to 
-+have two query strings, one in the URL and one in the POST data.
-+
-+- A subtle change in the unpickling of class instances makes it possible 
-+to unpickle in restricted execution mode, where the __dict__ attribute is 
-+not available (but setattr() is).
-+
-+- Documentation for os.path.splitext() (== posixpath.splitext()) has been 
-+cleared up.  It splits at the *last* dot.
-+
-+- posixfile locking is now also correctly supported on AIX.
-+
-+- The tempfile module once again honors an initial setting of tmpdir.  It 
-+now works on Windows, too.
-+
-+- The traceback module has some new functions to extract, format and print 
-+the active stack.
-+
-+- Some translation functions in the urllib module have been made a little 
-+less sluggish.
-+
-+- The addtag_* methods for Canvas widgets in Tkinter as well as in the 
-+separate Canvas class have been fixed so they actually do something 
-+meaningful.
-+
-+- A tiny _test() function has been added to Tkinter.py.
-+
-+- A generic Makefile for dynamically loaded modules is provided in the Misc 
-+subdirectory (Misc/gMakefile).
-+
-+- A new version of python-mode.el for Emacs is provided.  See
-+http://www.python.org/ftp/emacs/pmdetails.html for details.  The
-+separate file pyimenu.el is no longer needed, imenu support is folded
-+into python-mode.el.
-+
-+- The configure script can finally correctly find the readline library in a 
-+non-standard location.  The LDFLAGS variable is passed on the Makefiles 
-+from the configure script.
-+
-+- Shared libraries are now installed as programs (i.e. with executable 
-+permission).  This is required on HP-UX and won't hurt on other systems.
-+
-+- The objc.c module is no longer part of the distribution.  Objective-C 
-+support may become available as contributed software on the ftp site.
-+
-+- The sybase module is no longer part of the distribution.  A much
-+improved sybase module is available as contributed software from the
-+ftp site.
-+
-+- _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and 
-+Mac (don't use unpatched Tcl/Tk!).  The default line in the Setup.in file 
-+now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0.
-+
-+- In Setup, you can now write "*shared*" instead of "*noconfig*", and you 
-+can use *.so and *.sl as shared libraries.
-+
-+- Some more fidgeting for AIX shared libraries.
-+
-+- The mpz module is now compatible with GMP 2.x.  (Not tested by me.)
-+(Note -- a complete replacement by Niels Mo"ller, called gpmodule, is
-+available from the contrib directory on the ftp site.)
-+
-+- A warning is written to sys.stderr when a __del__ method raises an 
-+exception (formerly, such exceptions were completely ignored).
-+
-+- The configure script now defines HAVE_OLD_CPP if the C preprocessor is 
-+incapable of ANSI style token concatenation and stringification.
-+
-+- All source files (except a few platform specific modules) are once again 
-+compatible with K&R C compilers as well as ANSI compilers.  In particular,
-+ANSI-isms have been removed or made conditional in complexobject.c, 
-+getargs.c and operator.c.
-+
-+- The abstract object API has three new functions, PyObject_DelItem, 
-+PySequence_DelItem, and PySequence_DelSlice.
-+
-+- The operator module has new functions delitem and delslice, and the 
-+functions "or" and "and" are renamed to "or_" and "and_" (since "or" and 
-+"and" are reserved words).  ("__or__" and "__and__" are unchanged.)
-+
-+- The environment module is no longer supported; putenv() is now a function 
-+in posixmodule (also under NT).
-+
-+- Error in filter(<function>, "") has been fixed.
-+
-+- Unrecognized keyword arguments raise TypeError, not KeyError.
-+
-+- Better portability, fewer bugs and memory leaks, fewer compiler warnings, 
-+some more documentation.
-+
-+- Bug in float power boundary case (0.0 to the negative integer power) 
-+fixed.
-+
-+- The test of negative number to the float power has been moved from the 
-+built-in pow() functin to floatobject.c (so complex numbers can yield the 
-+correct result).
-+
-+- The bug introduced in beta2 where shared libraries loaded (using 
-+dlopen()) from the current directory would fail, has been fixed.
-+
-+- Modules imported as shared libraries now also have a __file__ attribute, 
-+giving the filename from which they were loaded.  The only modules without 
-+a __file__ attribute now are built-in modules.
-+
-+- On the Mac, dynamically loaded modules can end in either ".slb" or 
-+".<platform>.slb" where <platform> is either "CFM68K" or "ppc".  The ".slb" 
-+extension should only be used for "fat" binaries.
-+
-+- C API addition: marshal.c now supports 
-+PyMarshal_WriteObjectToString(object).
-+
-+- C API addition: getargs.c now supports
-+PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...)
-+to parse keyword arguments.
-+
-+- The PC versioning scheme (sys.winver) has changed once again.  the 
-+version number is now "<digit>.<digit>.<digit>.<apiversion>", where the 
-+first three <digit>s are the Python version (e.g. "1.4.0" for Python 1.4, 
-+"1.4.1" for Python 1.4.1 -- the beta level is not included) and 
-+<apiversion> is the four-digit PYTHON_API_VERSION (currently 1005).
-+
-+- h2py.py accepts whitespace before the # in CPP directives
-+
-+- On Solaris 2.5, it should now be possible to use either Posix threads or 
-+Solaris threads (XXX: how do you select which is used???).  (Note: the 
-+Python pthreads interface doesn't fully support semaphores yet -- anyone 
-+care to fix this?)
-+
-+- Thread support should now work on AIX, using either DCE threads or 
-+pthreads.
-+
-+- New file Demo/sockets/unicast.py
-+
-+- Working Mac port, with CFM68K support, with Tk 4.1 support (though not 
-+both) (XXX)
-+
-+- New project setup for PC port, now compatible with PythonWin, with 
-+_tkinter and NumPy support (XXX)
-+
-+- New module site.py (XXX)
-+
-+- New module xdrlib.py and optional support module _xdrmodule.c (XXX)
-+
-+- parser module adapted to new grammar, complete w/ Doc & Demo (XXX)
-+
-+- regen script fixed (XXX)
-+
-+- new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX)
-+
-+- testall now also tests math module (XXX)
-+
-+- string.atoi c.s. now raise an exception for an empty input string.
-+
-+- At last, it is no longer necessary to define HAVE_CONFIG_H in order to 
-+have config.h included at various places.
-+
-+- Unrecognized keyword arguments now raise TypeError rather than KeyError.
-+
-+- The makesetup script recognizes files with extension .so or .sl as
-+(shared) libraries.
-+
-+- 'access' is no longer a reserved word, and all code related to its 
-+implementation is gone (or at least #ifdef'ed out).  This should make 
-+Python a little speedier too!
-+
-+- Performance enhancements suggested by Sjoerd Mullender.  This includes 
-+the introduction of two new optional function pointers in type object, 
-+getattro and setattro, which are like getattr and setattr but take a 
-+string object instead of a C string pointer.
-+
-+- New operations in string module: lstrip(s) and rstrip(s) strip whitespace 
-+only on the left or only on the right, A new optional third argument to 
-+split() specifies the maximum number of separators honored (so 
-+splitfields(s, sep, n) returns a list of at most n+1 elements).  (Since 
-+1.3, splitfields(s, None) is totally equivalent to split(s).)
-+string.capwords() has an optional second argument specifying the 
-+separator (which is passed to split()).
-+
-+- regsub.split() has the same addition as string.split().  regsub.splitx(s, 
-+sep, maxsep) implements the functionality that was regsub.split(s, 1) in 
-+1.4beta2 (return a list containing the delimiters as well as the words).
-+
-+- Final touch for AIX loading, rewritten Misc/AIX-NOTES.
-+
-+- In Modules/_tkinter.c, when using Tk 4.1 or higher, use className
-+argument to _tkinter.create() to set Tcl's argv0 variable, so X
-+resources use the right resource class again.
-+
-+- Add #undef fabs to Modules/mathmodule.c for macintosh.
-+
-+- Added some macro renames for AIX in Modules/operator.c.
-+
-+- Removed spurious 'E' from Doc/liberrno.tex.
-+
-+- Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new
-+Misc/gMakefile and new version of Misc/python-mode.el.
-+
-+- Fixed typo in Lib/ntpath.py (islink has "return false" which gives a
-+NameError).
-+
-+- Added missing "from types import *" to Lib/tkinter/Canvas.py.
-+
-+- Added hint about using default args for __init__ to pickle docs.
-+
-+- Corrected typo in Inclide/abstract.h: PySequence_Lenth ->
-+PySequence_Length.
-+
-+- Some improvements to Doc/texi2html.py.
-+
-+- In Python/import.c, Cast unsigned char * in struct _frozen to char *
-+in calls to rds_object().
-+
-+- In doc/ref4.tex, added note about scope of lambda bodies.
-+
-+What's new in 1.4beta2 (since beta1)?
-+-------------------------------------
-+
-+- Portability bug in the md5.h header solved.
-+
-+- The PC build procedure now really works, and sets sys.platform to a
-+meaningful value (a few things were botched in beta 1).  Lib/dos_8x3
-+is now a standard part of the distribution (alas).
-+
-+- More improvements to the installation procedure.  Typing "make install" 
-+now inserts the version number in the pathnames of almost everything 
-+installed, and creates the machine dependent modules (FCNTL.py etc.) if not 
-+supplied by the distribution.  (XXX There's still a problem with the latter 
-+because the "regen" script requires that Python is installed.  Some manual 
-+intervention may still be required.) (This has been fixed in 1.4beta3.)
-+
-+- New modules: errno, operator (XXX).
-+
-+- Changes for use with Numerical Python: builtin function slice() and
-+Ellipses object, and corresponding syntax:
-+
-+      x[lo:hi:stride]         ==      x[slice(lo, hi, stride)]
-+      x[a, ..., z]            ==      x[(a, Ellipses, z)]
-+
-+- New documentation for errno and cgi mdoules.
-+
-+- The directory containing the script passed to the interpreter is
-+inserted in from of sys.path; "." is no longer a default path
-+component.
-+
-+- Optional third string argument to string.translate() specifies
-+characters to delete.  New function string.maketrans() creates a
-+translation table for translate() or for regex.compile().
-+
-+- Module posix (and hence module os under Unix) now supports putenv().
-+Moreover, module os is enhanced so that if putenv() is supported,
-+assignments to os.environ entries make the appropriate putenv() call.
-+(XXX the putenv() implementation can leak a small amount of memory per
-+call.)
-+
-+- pdb.py can now be invoked from the command line to debug a script:
-+python pdb.py <script> <arg> ...
-+
-+- Much improved parseaddr() in rfc822.
-+
-+- In cgi.py, you can now pass an alternative value for environ to
-+nearly all functions.
-+
-+- You can now assign to instance variables whose name begins and ends
-+with '__'.
-+
-+- New version of Fred Drake's parser module and associates (token,
-+symbol, AST).
-+
-+- New PYTHON_API_VERSION value and .pyc file magic number (again!).
-+
-+- The "complex" internal structure type is now called "Py_complex" to
-+avoid name conflicts.
-+
-+- Numerous small bugs fixed.
-+
-+- Slight pickle speedups.
-+
-+- Some slight speedups suggested by Sjoerd (more coming in 1.4 final).
-+
-+- NeXT portability mods by Bill Bumgarner integrated.
-+
-+- Modules regexmodule.c, bsddbmodule.c and xxmodule.c have been
-+converted to new naming style.
-+
-+
-+What's new in 1.4beta1 (since 1.3)?
-+-----------------------------------
-+
-+- Added sys.platform and sys.exec_platform for Bill Janssen.
-+
-+- Installation has been completely overhauled.  "make install" now installs 
-+everything, not just the python binary.  Installation uses the install-sh 
-+script (borrowed from X11) to install each file.
-+
-+- New functions in the posix module: mkfifo, plock, remove (== unlink),
-+and ftruncate.  More functions are also available under NT.
-+
-+- New function in the fcntl module: flock.
-+
-+- Shared library support for FreeBSD.
-+
-+- The --with-readline option can now be used without a DIRECTORY argument, 
-+for systems where libreadline.* is in one of the standard places.  It is 
-+also possible for it to be a shared library.
-+
-+- The extension tkinter has been renamed to _tkinter, to avoid confusion 
-+with Tkinter.py oncase insensitive file systems.  It now supports Tk 4.1 as 
-+well as 4.0.
-+
-+- Author's change of address from CWI in Amsterdam, The Netherlands, to 
-+CNRI in Reston, VA, USA.
-+
-+- The math.hypot() function is now always available (if it isn't found in 
-+the C math library, Python provides its own implementation).
-+
-+- The latex documentation is now compatible with latex2e, thanks to David 
-+Ascher.
-+
-+- The expression x**y is now equivalent to pow(x, y).
-+
-+- The indexing expression x[a, b, c] is now equivalent to x[(a, b, c)].
-+
-+- Complex numbers are now supported.  Imaginary constants are written with 
-+a 'j' or 'J' prefix, general complex numbers can be formed by adding a real 
-+part to an imaginary part, like 3+4j.  Complex numbers are always stored in 
-+floating point form, so this is equivalent to 3.0+4.0j.  It is also 
-+possible to create complex numbers with the new built-in function 
-+complex(re, [im]).  For the footprint-conscious, complex number support can 
-+be disabled by defining the symbol WITHOUT_COMPLEX.
-+
-+- New built-in function list() is the long-awaited counterpart of tuple().
-+
-+- There's a new "cmath" module which provides the same functions as the 
-+"math" library but with complex arguments and results.  (There are very 
-+good reasons why math.sqrt(-1) still raises an exception -- you have to use 
-+cmath.sqrt(-1) to get 1j for an answer.)
-+
-+- The Python.h header file (which is really the same as allobjects.h except 
-+it disables support for old style names) now includes several more files, 
-+so you have to have fewer #include statements in the average extension.
-+
-+- The NDEBUG symbol is no longer used.  Code that used to be dependent on 
-+the presence of NDEBUG is now present on the absence of DEBUG.  TRACE_REFS 
-+and REF_DEBUG have been renamed to Py_TRACE_REFS and Py_REF_DEBUG, 
-+respectively.  At long last, the source actually compiles and links without 
-+errors when this symbol is defined.
-+
-+- Several symbols that didn't follow the new naming scheme have been 
-+renamed (usually by adding to rename2.h) to use a Py or _Py prefix.  There 
-+are no external symbols left without a Py or _Py prefix, not even those 
-+defined by sources that were incorporated from elsewhere (regexpr.c, 
-+md5c.c).  (Macros are a different story...)
-+
-+- There are now typedefs for the structures defined in config.c and 
-+frozen.c.
-+
-+- New PYTHON_API_VERSION value and .pyc file magic number.
-+
-+- New module Bastion.  (XXX)
-+
-+- Improved performance of StringIO module.
-+
-+- UserList module now supports + and * operators.
-+
-+- The binhex and binascii modules now actually work.
-+
-+- The cgi module has been almost totally rewritten and documented.
-+It now supports file upload and a new data type to handle forms more 
-+flexibly.
-+
-+- The formatter module (for use with htmllib) has been overhauled (again).
-+
-+- The ftplib module now supports passive mode and has doc strings.
-+
-+- In (ideally) all places where binary files are read or written, the file 
-+is now correctly opened in binary mode ('rb' or 'wb') so the code will work 
-+on Mac or PC.
-+
-+- Dummy versions of os.path.expandvars() and expanduser() are now provided 
-+on non-Unix platforms.
-+
-+- Module urllib now has two new functions url2pathname and pathname2url 
-+which turn local filenames into "file:..." URLs using the same rules as 
-+Netscape (why be different).  it also supports urlretrieve() with a 
-+pathname parameter, and honors the proxy environment variables (http_proxy 
-+etc.).  The URL parsing has been improved somewhat, too.
-+
-+- Micro improvements to urlparse.  Added urlparse.urldefrag() which 
-+removes a trailing ``#fragment'' if any.
-+
-+- The mailbox module now supports MH style message delimiters as well.
-+
-+- The mhlib module contains some new functionality: setcontext() to set the 
-+current folder and parsesequence() to parse a sequence as commonly passed 
-+to MH commands (e.g. 1-10 or last:5).
-+
-+- New module mimify for conversion to and from MIME format of email 
-+messages.
-+
-+- Module ni now automatically installs itself when first imported -- this 
-+is against the normal rule that modules should define classes and functions 
-+but not invoke them, but appears more useful in the case that two 
-+different, independent modules want to use ni's features.
-+
-+- Some small performance enhancements in module pickle.
-+
-+- Small interface change to the profile.run*() family of functions -- more 
-+sensible handling of return values.
-+
-+- The officially registered Mac creator for Python files is 'Pyth'.  This 
-+replaces 'PYTH' which was used before but never registered.
-+
-+- Added regsub.capwords().  (XXX)
-+
-+- Added string.capwords(), string.capitalize() and string.translate().  
-+(XXX)
-+
-+- Fixed an interface bug in the rexec module: it was impossible to pass a 
-+hooks instance to the RExec class.  rexec now also supports the dynamic 
-+loading of modules from shared libraries.  Some other interfaces have been 
-+added too.
-+
-+- Module rfc822 now caches the headers in a dictionary for more efficient 
-+lookup.
-+
-+- The sgmllib module now understands a limited number of SGML "shorthands" 
-+like <A/.../ for <A>...</A>.  (It's not clear that this was a good idea...)
-+
-+- The tempfile module actually tries a number of different places to find a 
-+usable temporary directory.  (This was prompted by certain Linux 
-+installations that appear to be missing a /usr/tmp directory.) [A bug in 
-+the implementation that would ignore a pre-existing tmpdir global has been 
-+fixed in beta3.]
-+
-+- Much improved and enhanved FileDialog module for Tkinter.
-+
-+- Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as 
-+well as Tk 4.1).
-+
-+- New socket interfaces include ntohs(), ntohl(), htons(), htonl(), and 
-+s.dup().  Sockets now work correctly on Windows.  On Windows, the built-in 
-+extension is called _socket and a wrapper module win/socket.py provides 
-+"makefile()" and "dup()" functionality.  On Windows, the select module 
-+works only with socket objects.
-+
-+- Bugs in bsddb module fixed (e.g. missing default argument values).
-+
-+- The curses extension now includes <ncurses.h> when available.
-+
-+- The gdbm module now supports opening databases in "fast" mode by 
-+specifying 'f' as the second character or the mode string.
-+
-+- new variables sys.prefix and sys.exec_prefix pass corresponding 
-+configuration options / Makefile variables to the Python programmer.
-+
-+- The ``new'' module now supports creating new user-defined classes as well 
-+as instances thereof.
-+
-+- The soundex module now sports get_soundex() to get the soundex value for an 
-+arbitrary string (formerly it would only do soundex-based string 
-+comparison) as well as doc strings.
-+
-+- New object type "cobject" to safely wrap void pointers for passing them 
-+between various extension modules.
-+
-+- More efficient computation of float**smallint.
-+
-+- The mysterious bug whereby "x.x" (two occurrences of the same 
-+one-character name) typed from the commandline would sometimes fail 
-+mysteriously.
-+
-+- The initialization of the readline function can now be invoked by a C 
-+extension through PyOS_ReadlineInit().
-+
-+- There's now an externally visible pointer PyImport_FrozenModules which 
-+can be changed by an embedding application.
-+
-+- The argument parsing functions now support a new format character 'D' to 
-+specify complex numbers.
-+
-+- Various memory leaks plugged and bugs fixed.
-+
-+- Improved support for posix threads (now that real implementations are 
-+beginning to apepar).  Still no fully functioning semaphores.
-+
-+- Some various and sundry improvements and new entries in the Tools 
-+directory.
-+
-+
-+=====================================
-+==> Release 1.3 (13 October 1995) <==
-+=====================================
-+
-+Major change
-+============
-+
-+Two words: Keyword Arguments.  See the first section of Chapter 12 of
-+the Tutorial.
-+
-+(The rest of this file is textually the same as the remaining sections
-+of that chapter.)
-+
-+
-+Changes to the WWW and Internet tools
-+=====================================
-+
-+The "htmllib" module has been rewritten in an incompatible fashion.
-+The new version is considerably more complete (HTML 2.0 except forms,
-+but including all ISO-8859-1 entity definitions), and easy to use.
-+Small changes to "sgmllib" have also been made, to better match the
-+tokenization of HTML as recognized by other web tools.
-+
-+A new module "formatter" has been added, for use with the new
-+"htmllib" module.
-+
-+The "urllib"and "httplib" modules have been changed somewhat to allow
-+overriding unknown URL types and to support authentication.  They now
-+use "mimetools.Message" instead of "rfc822.Message" to parse headers.
-+The "endrequest()" method has been removed from the HTTP class since
-+it breaks the interaction with some servers.
-+
-+The "rfc822.Message" class has been changed to allow a flag to be
-+passed in that says that the file is unseekable.
-+
-+The "ftplib" module has been fixed to be (hopefully) more robust on
-+Linux.
-+
-+Several new operations that are optionally supported by servers have
-+been added to "nntplib": "xover", "xgtitle", "xpath" and "date".
-+
-+Other Language Changes
-+======================
-+
-+The "raise" statement now takes an optional argument which specifies
-+the traceback to be used when printing the exception's stack trace.
-+This must be a traceback object, such as found in "sys.exc_traceback".
-+When omitted or given as "None", the old behavior (to generate a stack
-+trace entry for the current stack frame) is used.
-+
-+The tokenizer is now more tolerant of alien whitespace.  Control-L in
-+the leading whitespace of a line resets the column number to zero,
-+while Control-R just before the end of the line is ignored.
-+
-+Changes to Built-in Operations
-+==============================
-+
-+For file objects, "f.read(0)" and "f.readline(0)" now return an empty
-+string rather than reading an unlimited number of bytes.  For the
-+latter, omit the argument altogether or pass a negative value.
-+
-+A new system variable, "sys.platform", has been added.  It specifies
-+the current platform, e.g. "sunos5" or "linux1".
-+
-+The built-in functions "input()" and "raw_input()" now use the GNU
-+readline library when it has been configured (formerly, only
-+interactive input to the interpreter itself was read using GNU
-+readline).  The GNU readline library provides elaborate line editing
-+and history.  The Python debugger ("pdb") is the first beneficiary of
-+this change.
-+
-+Two new built-in functions, "globals()" and "locals()", provide access
-+to dictionaries containming current global and local variables,
-+respectively.  (These augment rather than replace "vars()", which
-+returns the current local variables when called without an argument,
-+and a module's global variables when called with an argument of type
-+module.)
-+
-+The built-in function "compile()" now takes a third possible value for
-+the kind of code to be compiled: specifying "'single'" generates code
-+for a single interactive statement, which prints the output of
-+expression statements that evaluate to something else than "None".
-+
-+Library Changes
-+===============
-+
-+There are new module "ni" and "ihooks" that support importing modules
-+with hierarchical names such as "A.B.C".  This is enabled by writing
-+"import ni; ni.ni()" at the very top of the main program.  These
-+modules are amply documented in the Python source.
-+
-+The module "rexec" has been rewritten (incompatibly) to define a class
-+and to use "ihooks".
-+
-+The "string.split()" and "string.splitfields()" functions are now the
-+same function (the presence or absence of the second argument
-+determines which operation is invoked); similar for "string.join()"
-+and "string.joinfields()".
-+
-+The "Tkinter" module and its helper "Dialog" have been revamped to use
-+keyword arguments.  Tk 4.0 is now the standard.  A new module
-+"FileDialog" has been added which implements standard file selection
-+dialogs.
-+
-+The optional built-in modules "dbm" and "gdbm" are more coordinated
-+--- their "open()" functions now take the same values for their "flag"
-+argument, and the "flag" and "mode" argument have default values (to
-+open the database for reading only, and to create the database with
-+mode "0666" minuse the umask, respectively).  The memory leaks have
-+finally been fixed.
-+
-+A new dbm-like module, "bsddb", has been added, which uses the BSD DB
-+package's hash method.
-+
-+A portable (though slow) dbm-clone, implemented in Python, has been
-+added for systems where none of the above is provided.  It is aptly
-+dubbed "dumbdbm".
-+
-+The module "anydbm" provides a unified interface to "bsddb", "gdbm",
-+"dbm", and "dumbdbm", choosing the first one available.
-+
-+A new extension module, "binascii", provides a variety of operations
-+for conversion of text-encoded binary data.
-+
-+There are three new or rewritten companion modules implemented in
-+Python that can encode and decode the most common such formats: "uu"
-+(uuencode), "base64" and "binhex".
-+
-+A module to handle the MIME encoding quoted-printable has also been
-+added: "quopri".
-+
-+The parser module (which provides an interface to the Python parser's
-+abstract syntax trees) has been rewritten (incompatibly) by Fred
-+Drake.  It now lets you change the parse tree and compile the result!
-+
-+The \code{syslog} module has been upgraded and documented.
-+
-+Other Changes
-+=============
-+
-+The dynamic module loader recognizes the fact that different filenames
-+point to the same shared library and loads the library only once, so
-+you can have a single shared library that defines multiple modules.
-+(SunOS / SVR4 style shared libraries only.)
-+
-+Jim Fulton's ``abstract object interface'' has been incorporated into
-+the run-time API.  For more detailes, read the files
-+"Include/abstract.h" and "Objects/abstract.c".
-+
-+The Macintosh version is much more robust now.
-+
-+Numerous things I have forgotten or that are so obscure no-one will
-+notice them anyway :-)
-+
-+
-+===================================
-+==> Release 1.2 (13 April 1995) <==
-+===================================
-+
-+- Changes to Misc/python-mode.el:
-+  - Wrapping and indentation within triple quote strings should work
-+    properly now.
-+  - `Standard' bug reporting mechanism (use C-c C-b)
-+  - py-mark-block was moved to C-c C-m
-+  - C-c C-v shows you the python-mode version
-+  - a basic python-font-lock-keywords has been added for Emacs 19
-+    font-lock colorizations.
-+  - proper interaction with pending-del and del-sel modes.
-+  - New py-electric-colon (:) command for improved outdenting.  Also
-+    py-indent-line (TAB) should handle outdented lines better.
-+  - New commands py-outdent-left (C-c C-l) and py-indent-right (C-c C-r)
-+
-+- The Library Reference has been restructured, and many new and
-+existing modules are now documented, in particular the debugger and
-+the profiler, as well as the persistency and the WWW/Internet support
-+modules.
-+
-+- All known bugs have been fixed.  For example the pow(2,2,3L) bug on
-+Linux has been fixed.  Also the re-entrancy problems with __del__ have
-+been fixed.
-+
-+- All known memory leaks have been fixed.
-+
-+- Phase 2 of the Great Renaming has been executed.  The header files
-+now use the new names (PyObject instead of object, etc.).  The linker
-+also sees the new names.  Most source files still use the old names,
-+by virtue of the rename2.h header file.  If you include Python.h, you
-+only see the new names.  Dynamically linked modules have to be
-+recompiled.  (Phase 3, fixing the rest of the sources, will be
-+executed gradually with the release later versions.)
-+
-+- The hooks for implementing "safe-python" (better called "restricted
-+execution") are in place.  Specifically, the import statement is
-+implemented by calling the built-in function __import__, and the
-+built-in names used in a particular scope are taken from the
-+dictionary __builtins__ in that scope's global dictionary.  See also
-+the new (unsupported, undocumented) module rexec.py.
-+
-+- The import statement now supports the syntax "import a.b.c" and
-+"from a.b.c import name".  No officially supported implementation
-+exists, but one can be prototyped by replacing the built-in __import__
-+function.  A proposal by Ken Manheimer is provided as newimp.py.
-+
-+- All machinery used by the import statement (or the built-in
-+__import__ function) is now exposed through the new built-in module
-+"imp" (see the library reference manual).  All dynamic loading
-+machinery is moved to the new file importdl.c.
-+
-+- Persistent storage is supported through the use of the modules
-+"pickle" and "shelve" (implemented in Python).  There's also a "copy"
-+module implementing deepcopy and normal (shallow) copy operations.
-+See the library reference manual.
-+
-+- Documentation strings for many objects types are accessible through
-+the __doc__ attribute.  Modules, classes and functions support special
-+syntax to initialize the __doc__ attribute: if the first statement
-+consists of just a string literal, that string literal becomes the
-+value of the __doc__ attribute.  The default __doc__ attribute is
-+None.  Documentation strings are also supported for built-in
-+functions, types and modules; however this feature hasn't been widely
-+used yet.  See the 'new' module for an example.  (Basically, the type
-+object's tp_doc field contains the doc string for the type, and the
-+4th member of the methodlist structure contains the doc string for the
-+method.)
-+
-+- The __coerce__ and __cmp__ methods for user-defined classes once
-+again work as expected.  As an example, there's a new standard class
-+Complex in the library.
-+
-+- The functions posix.popen() and posix.fdopen() now have an optional
-+third argument to specify the buffer size, and default their second
-+(mode) argument to 'r' -- in analogy to the builtin open() function.
-+The same applies to posixfile.open() and the socket method makefile().
-+
-+- The thread.exit_thread() function now raises SystemExit so that
-+'finally' clauses are honored and a memory leak is plugged.
-+
-+- Improved X11 and Motif support, by Sjoerd Mullender.  This extension
-+is being maintained and distributed separately.
-+
-+- Improved support for the Apple Macintosh, in part by Jack Jansen,
-+e.g. interfaces to (a few) resource mananger functions, get/set file
-+type and creator, gestalt, sound manager, speech manager, MacTCP, comm
-+toolbox, and the think C console library.  This is being maintained
-+and distributed separately.
-+
-+- Improved version for Windows NT, by Mark Hammond.  This is being
-+maintained and distributed separately.
-+
-+- Used autoconf 2.0 to generate the configure script.  Adapted
-+configure.in to use the new features in autoconf 2.0.
-+
-+- It now builds on the NeXT without intervention, even on the 3.3
-+Sparc pre-release.
-+
-+- Characters passed to isspace() and friends are masked to nonnegative
-+values.
-+
-+- Correctly compute pow(-3.0, 3).
-+
-+- Fix portability problems with getopt (configure now checks for a
-+non-GNU getopt).
-+
-+- Don't add frozenmain.o to libPython.a.
-+
-+- Exceptions can now be classes.  ALl built-in exceptions are still
-+string objects, but this will change in the future.
-+
-+- The socket module exports a long list of socket related symbols.
-+(More built-in modules will export their symbolic constants instead of
-+relying on a separately generated Python module.)
-+
-+- When a module object is deleted, it clears out its own dictionary.
-+This fixes a circularity in the references between functions and
-+their global dictionary.
-+
-+- Changed the error handling by [new]getargs() e.g. for "O&".
-+
-+- Dynamic loading of modules using shared libraries is supported for
-+several new platforms.
-+
-+- Support "O&", "[...]" and "{...}" in mkvalue().
-+
-+- Extension to findmethod(): findmethodinchain() (where a chain is a
-+linked list of methodlist arrays).  The calling interface for
-+findmethod() has changed: it now gets a pointer to the (static!)
-+methodlist structure rather than just to the function name -- this
-+saves copying flags etc. into the (short-lived) method object.
-+
-+- The callable() function is now public.
-+
-+- Object types can define a few new operations by setting function
-+pointers in the type object structure: tp_call defines how an object
-+is called, and tp_str defines how an object's str() is computed.
-+
-+
-+===================================
-+==> Release 1.1.1 (10 Nov 1994) <==
-+===================================
-+
-+This is a pure bugfix release again.  See the ChangeLog file for details.
-+
-+One exception: a few new features were added to tkinter.
-+
-+
-+=================================
-+==> Release 1.1 (11 Oct 1994) <==
-+=================================
-+
-+This release adds several new features, improved configuration and
-+portability, and fixes more bugs than I can list here (including some
-+memory leaks).
-+
-+The source compiles and runs out of the box on more platforms than
-+ever -- including Windows NT.  Makefiles or projects for a variety of
-+non-UNIX platforms are provided.
-+
-+APOLOGY: some new features are badly documented or not at all.  I had
-+the choice -- postpone the new release indefinitely, or release it
-+now, with working code but some undocumented areas.  The problem with
-+postponing the release is that people continue to suffer from existing
-+bugs, and send me patches based on the previous release -- which I
-+can't apply directly because my own source has changed.  Also, some
-+new modules (like signal) have been ready for release for quite some
-+time, and people are anxiously waiting for them.  In the case of
-+signal, the interface is simple enough to figure out without
-+documentation (if you're anxious enough :-).  In this case it was not
-+simple to release the module on its own, since it relies on many small
-+patches elsewhere in the source.
-+
-+For most new Python modules, the source code contains comments that
-+explain how to use them.  Documentation for the Tk interface, written
-+by Matt Conway, is available as tkinter-doc.tar.gz from the Python
-+home and mirror ftp sites (see Misc/FAQ for ftp addresses).  For the
-+new operator overloading facilities, have a look at Demo/classes:
-+Complex.py and Rat.py show how to implement a numeric type without and
-+with __coerce__ method.  Also have a look at the end of the Tutorial
-+document (Doc/tut.tex).  If you're still confused: use the newsgroup
-+or mailing list.
-+
-+
-+New language features:
-+
-+    - More flexible operator overloading for user-defined classes
-+    (INCOMPATIBLE WITH PREVIOUS VERSIONS!)  See end of tutorial.
-+
-+    - Classes can define methods named __getattr__, __setattr__ and
-+    __delattr__ to trap attribute accesses.  See end of tutorial.
-+
-+    - Classes can define method __call__ so instances can be called
-+    directly.  See end of tutorial.
-+
-+
-+New support facilities:
-+
-+    - The Makefiles (for the base interpreter as well as for extensions)
-+    now support creating dynamically loadable modules if the platform
-+    supports shared libraries.
-+
-+    - Passing the interpreter a .pyc file as script argument will execute
-+    the code in that file.  (On the Mac such files can be double-clicked!)
-+
-+    - New Freeze script, to create independently distributable "binaries"
-+    of Python programs -- look in Demo/freeze
-+
-+    - Improved h2py script (in Demo/scripts) follows #includes and
-+    supports macros with one argument
-+
-+    - New module compileall generates .pyc files for all modules in a
-+    directory (tree) without also executing them
-+
-+    - Threads should work on more platforms
-+
-+
-+New built-in modules:
-+
-+    - tkinter (support for Tcl's Tk widget set) is now part of the base
-+    distribution
-+
-+    - signal allows catching or ignoring UNIX signals (unfortunately still
-+    undocumented -- any taker?)
-+
-+    - termios provides portable access to POSIX tty settings
-+
-+    - curses provides an interface to the System V curses library
-+
-+    - syslog provides an interface to the (BSD?) syslog daemon
-+
-+    - 'new' provides interfaces to create new built-in object types
-+    (e.g. modules and functions)
-+
-+    - sybase provides an interface to SYBASE database
-+
-+
-+New/obsolete built-in methods:
-+
-+    - callable(x) tests whether x can be called
-+
-+    - sockets now have a setblocking() method
-+
-+    - sockets no longer have an allowbroadcast() method
-+
-+    - socket methods send() and sendto() return byte count
-+
-+
-+New standard library modules:
-+
-+    - types.py defines standard names for built-in types, e.g. StringType
-+
-+    - urlparse.py parses URLs according to the latest Internet draft
-+
-+    - uu.py does uuencode/uudecode (not the fastest in the world, but
-+    quicker than installing uuencode on a non-UNIX machine :-)
-+
-+    - New, faster and more powerful profile module.py
-+
-+    - mhlib.py provides interface to MH folders and messages
-+
-+
-+New facilities for extension writers (unfortunately still
-+undocumented):
-+
-+    - newgetargs() supports optional arguments and improved error messages
-+
-+    - O!, O& O? formats for getargs allow more versatile type checking of
-+    non-standard types
-+
-+    - can register pending asynchronous callback, to be called the next
-+    time the Python VM begins a new instruction (Py_AddPendingCall)
-+
-+    - can register cleanup routines to be called when Python exits
-+    (Py_AtExit)
-+
-+    - makesetup script understands C++ files in Setup file (use file.C
-+    or file.cc)
-+
-+    - Make variable OPT is passed on to sub-Makefiles
-+
-+    - An init<module>() routine may signal an error by not entering
-+    the module in the module table and raising an exception instead
-+
-+    - For long module names, instead of foobarbletchmodule.c you can
-+    use foobarbletch.c
-+
-+    - getintvalue() and getfloatvalue() try to convert any object
-+    instead of requiring an "intobject" or "floatobject"
-+
-+    - All the [new]getargs() formats that retrieve an integer value
-+    will now also work if a float is passed
-+
-+    - C function listtuple() converts list to tuple, fast
-+
-+    - You should now call sigcheck() instead of intrcheck();
-+    sigcheck() also sets an exception when it returns nonzero
-+
-+
-+====================================
-+==> Release 1.0.3 (14 July 1994) <==
-+====================================
-+
-+This release consists entirely of bug fixes to the C sources; see the
-+head of ../ChangeLog for a complete list.  Most important bugs fixed:
-+
-+- Sometimes the format operator (string%expr) would drop the last
-+character of the format string
-+
-+- Tokenizer looped when last line did not end in \n
-+
-+- Bug when triple-quoted string ended in quote plus newline
-+
-+- Typo in socketmodule (listen) (== instead of =)
-+
-+- typing vars() at the >>> prompt would cause recursive output
-+
-+
-+==================================
-+==> Release 1.0.2 (4 May 1994) <==
-+==================================
-+
-+Overview of the most visible changes.  Bug fixes are not listed.  See
-+also ChangeLog.
-+
-+Tokens
-+------
-+
-+* String literals follow Standard C rules: they may be continued on
-+the next line using a backslash; adjacent literals are concatenated
-+at compile time.
-+
-+* A new kind of string literals, surrounded by triple quotes (""" or
-+'''), can be continued on the next line without a backslash.
-+
-+Syntax
-+------
-+
-+* Function arguments may have a default value, e.g. def f(a, b=1);
-+defaults are evaluated at function definition time.  This also applies
-+to lambda.
-+
-+* The try-except statement has an optional else clause, which is
-+executed when no exception occurs in the try clause.
-+
-+Interpreter
-+-----------
-+
-+* The result of a statement-level expression is no longer printed,
-+except_ for expressions entered interactively.  Consequently, the -k
-+command line option is gone.
-+
-+* The result of the last printed interactive expression is assigned to
-+the variable '_'.
-+
-+* Access to implicit global variables has been speeded up by removing
-+an always-failing dictionary lookup in the dictionary of local
-+variables (mod suggested by Steve Makewski and Tim Peters).
-+
-+* There is a new command line option, -u, to force stdout and stderr
-+to be unbuffered.
-+
-+* Incorporated Steve Majewski's mods to import.c for dynamic loading
-+under AIX.
-+
-+* Fewer chances of dumping core when trying to reload or re-import
-+static built-in, dynamically loaded built-in, or frozen modules.
-+
-+* Loops over sequences now don't ask for the sequence's length when
-+they start, but try to access items 0, 1, 2, and so on until they hit
-+an IndexError.  This makes it possible to create classes that generate
-+infinite or indefinite sequences a la Steve Majewski.  This affects
-+for loops, the (not) in operator, and the built-in functions filter(),
-+map(), max(), min(), reduce().
-+
-+Changed Built-in operations
-+---------------------------
-+
-+* The '%' operator on strings (printf-style formatting) supports a new
-+feature (adapted from a patch by Donald Beaudry) to allow
-+'%(<key>)<format>' % {...} to take values from a dictionary by name
-+instead of from a tuple by position (see also the new function
-+vars()).
-+
-+* The '%s' formatting operator is changed to accept any type and
-+convert it to a string using str().
-+
-+* Dictionaries with more than 20,000 entries can now be created
-+(thanks to Steve Kirsch).
-+
-+New Built-in Functions
-+----------------------
-+
-+* vars() returns a dictionary containing the local variables; vars(m)
-+returns a dictionary containing the variables of module m.  Note:
-+dir(x) is now equivalent to vars(x).keys().
-+
-+Changed Built-in Functions
-+--------------------------
-+
-+* open() has an optional third argument to specify the buffer size: 0
-+for unbuffered, 1 for line buffered, >1 for explicit buffer size, <0
-+for default.
-+
-+* open()'s second argument is now optional; it defaults to "r".
-+
-+* apply() now checks that its second argument is indeed a tuple.
-+
-+New Built-in Modules
-+--------------------
-+
-+Changed Built-in Modules
-+------------------------
-+
-+The thread module no longer supports exit_prog().
-+
-+New Python Modules
-+------------------
-+
-+* Module addpack contains a standard interface to modify sys.path to
-+find optional packages (groups of related modules).
-+
-+* Module urllib contains a number of functions to access
-+World-Wide-Web files specified by their URL.
-+
-+* Module httplib implements the client side of the HTTP protocol used
-+by World-Wide-Web servers.
-+
-+* Module gopherlib implements the client side of the Gopher protocol.
-+
-+* Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF
-+style mailbox files.
-+
-+* Module random contains various random distributions, e.g. gauss().
-+
-+* Module lockfile locks and unlocks open files using fcntl (inspired
-+by a similar module by Andy Bensky).
-+
-+* Module ntpath (by Jaap Vermeulen) implements path operations for
-+Windows/NT.
-+
-+* Module test_thread (in Lib/test) contains a small test set for the
-+thread module.
-+
-+Changed Python Modules
-+----------------------
-+
-+* The string module's expandvars() function is now documented and is
-+implemented in Python (using regular expressions) instead of forking
-+off a shell process.
-+
-+* Module rfc822 now supports accessing the header fields using the
-+mapping/dictionary interface, e.g. h['subject'].
-+
-+* Module pdb now makes it possible to set a break on a function
-+(syntax: break <expression>, where <expression> yields a function
-+object).
-+
-+Changed Demos
-+-------------
-+
-+* The Demo/scripts/freeze.py script is working again (thanks to Jaap
-+Vermeulen).
-+
-+New Demos
-+---------
-+
-+* Demo/threads/Generator.py is a proposed interface for restartable
-+functions a la Tim Peters.
-+
-+* Demo/scripts/newslist.py, by Quentin Stafford-Fraser, generates a
-+directory full of HTML pages which between them contain links to all
-+the newsgroups available on your server.
-+
-+* Demo/dns contains a DNS (Domain Name Server) client.
-+
-+* Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a
-+nice enhanced Python shell!!!).
-+
-+* Demo/turing contains a Turing machine by Amrit Prem.
-+
-+Documentation
-+-------------
-+
-+* Documented new language features mentioned above (but not all new
-+modules).
-+
-+* Added a chapter to the Tutorial describing recent additions to
-+Python.
-+
-+* Clarified some sentences in the reference manual,
-+e.g. break/continue, local/global scope, slice assignment.
-+
-+Source Structure
-+----------------
-+
-+* Moved Include/tokenizer.h to Parser/tokenizer.h.
-+
-+* Added Python/getopt.c for systems that don't have it.
-+
-+Emacs mode
-+----------
-+
-+* Indentation of continuated lines is done more intelligently;
-+consequently the variable py-continuation-offset is gone.
-+
-+
-+========================================
-+==> Release 1.0.1 (15 February 1994) <==
-+========================================
-+
-+* Many portability fixes should make it painless to build Python on
-+several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows.
-+
-+* Fixed test for <stdarg.h> -- this broke on some platforms.
-+
-+* Fixed test for shared library dynalic loading -- this broke on SunOS
-+4.x using the GNU loader.
-+
-+* Changed order and number of SVR4 networking libraries (it is now
-+-lsocket -linet -lnsl, if these libraries exist).
-+
-+* Installing the build intermediate stages with "make libainstall" now
-+also installs config.c.in, Setup and makesetup, which are used by the
-+new Extensions mechanism.
-+
-+* Improved README file contains more hints and new troubleshooting
-+section.
-+
-+* The built-in module strop now defines fast versions of three more
-+functions of the standard string module: atoi(), atol() and atof().
-+The strop versions of atoi() and atol() support an optional second
-+argument to specify the base (default 10).  NOTE: you don't have to
-+explicitly import strop to use the faster versions -- the string
-+module contains code to let versions from stop override the default
-+versions.
-+
-+* There is now a working Lib/dospath.py for those who use Python under
-+DOS (or Windows).  Thanks, Jaap!
-+
-+* There is now a working Modules/dosmodule.c for DOS (or Windows)
-+system calls.
-+
-+* Lib.os.py has been reorganized (making it ready for more operating
-+systems).
-+
-+* Lib/ospath.py is now obsolete (use os.path instead).
-+
-+* Many fixes to the tutorial to make it match Python 1.0.  Thanks,
-+Tim!
-+
-+* Fixed Doc/Makefile, Doc/README and various scripts there.
-+
-+* Added missing description of fdopen to Doc/libposix.tex.
-+
-+* Made cleanup() global, for the benefit of embedded applications.
-+
-+* Added parsing of addresses and dates to Lib/rfc822.py.
-+
-+* Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make
-+them usable at all.
-+
-+* New module Lib/wave.py reads RIFF (*.wav) audio files.
-+
-+* Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it
-+belongs.
-+
-+* New options and comments for Modules/makesetup (used by new
-+Extension mechanism).
-+
-+* Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc
-+and elsewhere.
-+
-+* Fixed coredump in filter(None, 'abcdefg').
-+
-+
-+=======================================
-+==> Release 1.0.0 (26 January 1994) <==
-+=======================================
-+
-+As is traditional, so many things have changed that I can't pretend to
-+be complete in these release notes, but I'll try anyway :-)
-+
-+Note that the very last section is labeled "remaining bugs".
-+
-+
-+Source organization and build process
-+-------------------------------------
-+
-+* The sources have finally been split: instead of a single src
-+subdirectory there are now separate directories Include, Parser,
-+Grammar, Objects, Python and Modules.  Other directories also start
-+with a capital letter: Misc, Doc, Lib, Demo.
-+
-+* A few extensions (notably Amoeba and X support) have been moved to a
-+separate subtree Extensions, which is no longer in the core
-+distribution, but separately ftp'able as extensions.tar.Z.  (The
-+distribution contains a placeholder Ext-dummy with a description of
-+the Extensions subtree as well as the most recent versions of the
-+scripts used there.)
-+
-+* A few large specialized demos (SGI video and www) have been
-+moved to a separate subdirectory Demo2, which is no longer in the core
-+distribution, but separately ftp'able as demo2.tar.Z.
-+
-+* Parts of the standard library have been moved to subdirectories:
-+there are now standard subdirectories stdwin, test, sgi and sun4.
-+
-+* The configuration process has radically changed: I now use GNU
-+autoconf.  This makes it much easier to build on new Unix flavors, as
-+well as fully supporting VPATH (if your Make has it).  The scripts
-+Configure.py and Addmodule.sh are no longer needed.  Many source files
-+have been adapted in order to work with the symbols that the configure
-+script generated by autoconf defines (or not); the resulting source is
-+much more portable to different C compilers and operating systems,
-+even non Unix systems (a Mac port was done in an afternoon).  See the
-+toplevel README file for a description of the new build process.
-+
-+* GNU readline (a slightly newer version) is now a subdirectory of the
-+Python toplevel.  It is still not automatically configured (being
-+totally autoconf-unaware :-).  One problem has been solved: typing
-+Control-C to a readline prompt will now work.  The distribution no
-+longer contains a "super-level" directory (above the python toplevel
-+directory), and dl, dl-dld and GNU dld are no longer part of the
-+Python distribution (you can still ftp them from
-+ftp.cwi.nl:/pub/dynload).
-+
-+* The DOS functions have been taken out of posixmodule.c and moved
-+into a separate file dosmodule.c.
-+
-+* There's now a separate file version.c which contains nothing but
-+the version number.
-+
-+* The actual main program is now contained in config.c (unless NO_MAIN
-+is defined); pythonmain.c now contains a function realmain() which is
-+called from config.c's main().
-+
-+* All files needed to use the built-in module md5 are now contained in
-+the distribution.  The module has been cleaned up considerably.
-+
-+
-+Documentation
-+-------------
-+
-+* The library manual has been split into many more small latex files,
-+so it is easier to edit Doc/lib.tex file to create a custom library
-+manual, describing only those modules supported on your system.  (This
-+is not automated though.)
-+
-+* A fourth manual has been added, titled "Extending and Embedding the
-+Python Interpreter" (Doc/ext.tex), which collects information about
-+the interpreter which was previously spread over several files in the
-+misc subdirectory.
-+
-+* The entire documentation is now also available on-line for those who
-+have a WWW browser (e.g. NCSA Mosaic).  Point your browser to the URL
-+"http://www.cwi.nl/~guido/Python.html".
-+
-+
-+Syntax
-+------
-+
-+* Strings may now be enclosed in double quotes as well as in single
-+quotes.  There is no difference in interpretation.  The repr() of
-+string objects will use double quotes if the string contains a single
-+quote and no double quotes.  Thanks to Amrit Prem for these changes!
-+
-+* There is a new keyword 'exec'.  This replaces the exec() built-in
-+function.  If a function contains an exec statement, local variable
-+optimization is not performed for that particular function, thus
-+making assignment to local variables in exec statements less
-+confusing.  (As a consequence, os.exec and python.exec have been
-+renamed to execv.)
-+
-+* There is a new keyword 'lambda'.  An expression of the form
-+
-+      lambda <parameters> : <expression>
-+
-+yields an anonymous function.  This is really only syntactic sugar;
-+you can just as well define a local function using
-+
-+      def some_temporary_name(<parameters>): return <expression>
-+
-+Lambda expressions are particularly useful in combination with map(),
-+filter() and reduce(), described below.  Thanks to Amrit Prem for
-+submitting this code (as well as map(), filter(), reduce() and
-+xrange())!
-+
-+
-+Built-in functions
-+------------------
-+
-+* The built-in module containing the built-in functions is called
-+__builtin__ instead of builtin.
-+
-+* New built-in functions map(), filter() and reduce() perform standard
-+functional programming operations (though not lazily):
-+
-+- map(f, seq) returns a new sequence whose items are the items from
-+seq with f() applied to them.
-+
-+- filter(f, seq) returns a subsequence of seq consisting of those
-+items for which f() is true.
-+
-+- reduce(f, seq, initial) returns a value computed as follows:
-+      acc = initial
-+      for item in seq: acc = f(acc, item)
-+      return acc
-+
-+* New function xrange() creates a "range object".  Its arguments are
-+the same as those of range(), and when used in a for loop a range
-+objects also behaves identical.  The advantage of xrange() over
-+range() is that its representation (if the range contains many
-+elements) is much more compact than that of range().  The disadvantage
-+is that the result cannot be used to initialize a list object or for
-+the "Python idiom" [RED, GREEN, BLUE] = range(3).  On some modern
-+architectures, benchmarks have shown that "for i in range(...): ..."
-+actually executes *faster* than "for i in xrange(...): ...", but on
-+memory starved machines like PCs running DOS range(100000) may be just
-+too big to be represented at all...
-+
-+* Built-in function exec() has been replaced by the exec statement --
-+see above.
-+
-+
-+The interpreter
-+---------------
-+
-+* Syntax errors are now not printed to stderr by the parser, but
-+rather the offending line and other relevant information are packed up
-+in the SyntaxError exception argument.  When the main loop catches a
-+SyntaxError exception it will print the error in the same format as
-+previously, but at the proper position in the stack traceback.
-+
-+* You can now set a maximum to the number of traceback entries
-+printed by assigning to sys.tracebacklimit.  The default is 1000.
-+
-+* The version number in .pyc files has changed yet again.
-+
-+* It is now possible to have a .pyc file without a corresponding .py
-+file.  (Warning: this may break existing installations if you have an
-+old .pyc file lingering around somewhere on your module search path
-+without a corresponding .py file, when there is a .py file for a
-+module of the same name further down the path -- the new interpreter
-+will find the first .pyc file and complain about it, while the old
-+interpreter would ignore it and use the .py file further down.)
-+
-+* The list sys.builtin_module_names is now sorted and also contains
-+the names of a few hardwired built-in modules (sys, __main__ and
-+__builtin__).
-+
-+* A module can now find its own name by accessing the global variable
-+__name__.  Assigning to this variable essentially renames the module
-+(it should also be stored under a different key in sys.modules).
-+A neat hack follows from this: a module that wants to execute a main
-+program when called as a script no longer needs to compare
-+sys.argv[0]; it can simply do "if __name__ == '__main__': main()".
-+
-+* When an object is printed by the print statement, its implementation
-+of str() is used.  This means that classes can define __str__(self) to
-+direct how their instances are printed.  This is different from
-+__repr__(self), which should define an unambigous string
-+representation of the instance.  (If __str__() is not defined, it
-+defaults to __repr__().)
-+
-+* Functions and code objects can now be compared meaningfully.
-+
-+* On systems supporting SunOS or SVR4 style shared libraries, dynamic
-+loading of modules using shared libraries is automatically configured.
-+Thanks to Bill Jansen and Denis Severson for contributing this change!
-+
-+
-+Built-in objects
-+----------------
-+
-+* File objects have acquired a new method writelines() which is the
-+reverse of readlines().  (It does not actually write lines, just a
-+list of strings, but the symmetry makes the choice of name OK.)
-+
-+
-+Built-in modules
-+----------------
-+
-+* Socket objects no longer support the avail() method.  Use the select
-+module instead, or use this function to replace it:
-+
-+      def avail(f):
-+              import select
-+              return f in select.select([f], [], [], 0)[0]
-+
-+* Initialization of stdwin is done differently.  It actually modifies
-+sys.argv (taking out the options the X version of stdwin recognizes)
-+the first time it is imported.
-+
-+* A new built-in module parser provides a rudimentary interface to the
-+python parser.  Corresponding standard library modules token and symbol
-+defines the numeric values of tokens and non-terminal symbols.
-+
-+* The posix module has aquired new functions setuid(), setgid(),
-+execve(), and exec() has been renamed to execv().
-+
-+* The array module is extended with 8-byte object swaps, the 'i'
-+format character, and a reverse() method.  The read() and write()
-+methods are renamed to fromfile() and tofile().
-+
-+* The rotor module has freed of portability bugs.  This introduces a
-+backward compatibility problem: strings encoded with the old rotor
-+module can't be decoded by the new version.
-+
-+* For select.select(), a timeout (4th) argument of None means the same
-+as leaving the timeout argument out.
-+
-+* Module strop (and hence standard library module string) has aquired
-+a new function: rindex().  Thanks to Amrit Prem!
-+
-+* Module regex defines a new function symcomp() which uses an extended
-+regular expression syntax: parenthesized subexpressions may be labeled
-+using the form "\(<labelname>...\)", and the group() method can return
-+sub-expressions by name.  Thanks to Tracy Tims for these changes!
-+
-+* Multiple threads are now supported on Solaris 2.  Thanks to Sjoerd
-+Mullender!
-+
-+
-+Standard library modules
-+------------------------
-+
-+* The library is now split in several subdirectories: all stuff using
-+stdwin is in Lib/stdwin, all SGI specific (or SGI Indigo or GL) stuff
-+is in Lib/sgi, all Sun Sparc specific stuff is in Lib/sun4, and all
-+test modules are in Lib/test.  The default module search path will
-+include all relevant subdirectories by default.
-+
-+* Module os now knows about trying to import dos.  It defines
-+functions execl(), execle(), execlp() and execvp().
-+
-+* New module dospath (should be attacked by a DOS hacker though).
-+
-+* All modules defining classes now define __init__() constructors
-+instead of init() methods.  THIS IS AN INCOMPATIBLE CHANGE!
-+
-+* Some minor changes and bugfixes module ftplib (mostly Steve
-+Majewski's suggestions); the debug() method is renamed to
-+set_debuglevel().
-+
-+* Some new test modules (not run automatically by testall though):
-+test_audioop, test_md5, test_rgbimg, test_select.
-+
-+* Module string now defines rindex() and rfind() in analogy of index()
-+and find().  It also defines atof() and atol() (and corresponding
-+exceptions) in analogy to atoi().
-+
-+* Added help() functions to modules profile and pdb.
-+
-+* The wdb debugger (now in Lib/stdwin) now shows class or instance
-+variables on a double click.  Thanks to Sjoerd Mullender!
-+
-+* The (undocumented) module lambda has gone -- you couldn't import it
-+any more, and it was basically more a demo than a library module...
-+
-+
-+Multimedia extensions
-+---------------------
-+
-+* The optional built-in modules audioop and imageop are now standard
-+parts of the interpreter.  Thanks to Sjoerd Mullender and Jack Jansen
-+for contributing this code!
-+
-+* There's a new operation in audioop: minmax().
-+
-+* There's a new built-in module called rgbimg which supports portable
-+efficient reading of SGI RCG image files.  Thanks also to Paul
-+Haeberli for the original code!  (Who will contribute a GIF reader?)
-+
-+* The module aifc is gone -- you should now always use aifc, which has
-+received a facelift.
-+
-+* There's a new module sunau., for reading Sun (and NeXT) audio files.
-+
-+* There's a new module audiodev which provides a uniform interface to
-+(SGI Indigo and Sun Sparc) audio hardware.
-+
-+* There's a new module sndhdr which recognizes various sound files by
-+looking in their header and checking for various magic words.
-+
-+
-+Optimizations
-+-------------
-+
-+* Most optimizations below can be configured by compile-time flags.
-+Thanks to Sjoerd Mullender for submitting these optimizations!
-+
-+* Small integers (default -1..99) are shared -- i.e. if two different
-+functions compute the same value it is possible (but not
-+guaranteed!!!) that they return the same *object*.  Python programs
-+can detect this but should *never* rely on it.
-+
-+* Empty tuples (which all compare equal) are shared in the same
-+manner.
-+
-+* Tuples of size up to 20 (default) are put in separate free lists
-+when deallocated.
-+
-+* There is a compile-time option to cache a string's hash function,
-+but this appeared to have a negligeable effect, and as it costs 4
-+bytes per string it is disabled by default.
-+
-+
-+Embedding Python
-+----------------
-+
-+* The initialization interface has been simplified somewhat.  You now
-+only call "initall()" to initialize the interpreter.
-+
-+* The previously announced renaming of externally visible identifiers
-+has not been carried out.  It will happen in a later release.  Sorry.
-+
-+
-+Miscellaneous bugs that have been fixed
-+---------------------------------------
-+
-+* All known portability bugs.
-+
-+* Version 0.9.9 dumped core in <listobject>.sort() which has been
-+fixed.  Thanks to Jaap Vermeulen for fixing this and posting the fix
-+on the mailing list while I was away!
-+
-+* Core dump on a format string ending in '%', e.g. in the expression
-+'%' % None.
-+
-+* The array module yielded a bogus result for concatenation (a+b would
-+yield a+a).
-+
-+* Some serious memory leaks in strop.split() and strop.splitfields().
-+
-+* Several problems with the nis module.
-+
-+* Subtle problem when copying a class method from another class
-+through assignment (the method could not be called).
-+
-+
-+Remaining bugs
-+--------------
-+
-+* One problem with 64-bit machines remains -- since .pyc files are
-+portable and use only 4 bytes to represent an integer object, 64-bit
-+integer literals are silently truncated when written into a .pyc file.
-+Work-around: use eval('123456789101112').
-+
-+* The freeze script doesn't work any more.  A new and more portable
-+one can probably be cooked up using tricks from Extensions/mkext.py.
-+
-+* The dos support hasn't been tested yet.  (Really Soon Now we should
-+have a PC with a working C compiler!)
-+
-+
-+===================================
-+==> Release 0.9.9 (29 Jul 1993) <==
-+===================================
-+
-+I *believe* these are the main user-visible changes in this release,
-+but there may be others.  SGI users may scan the {src,lib}/ChangeLog
-+files for improvements of some SGI specific modules, e.g. aifc and
-+cl.  Developers of extension modules should also read src/ChangeLog.
-+
-+
-+Naming of C symbols used by the Python interpreter
-+--------------------------------------------------
-+
-+* This is the last release using the current naming conventions.  New
-+naming conventions are explained in the file misc/NAMING.
-+Summarizing, all externally visible symbols get (at least) a "Py"
-+prefix, and most functions are renamed to the standard form
-+PyModule_FunctionName.
-+
-+* Writers of extensions are urged to start using the new naming
-+conventions.  The next release will use the new naming conventions
-+throughout (it will also have a different source directory
-+structure).
-+
-+* As a result of the preliminary work for the great renaming, many
-+functions that were accidentally global have been made static.
-+
-+
-+BETA X11 support
-+----------------
-+
-+* There are now modules interfacing to the X11 Toolkit Intrinsics, the
-+Athena widgets, and the Motif 1.1 widget set.  These are not yet
-+documented except through the examples and README file in the demo/x11
-+directory.  It is expected that this interface will be replaced by a
-+more powerful and correct one in the future, which may or may not be
-+backward compatible.  In other words, this part of the code is at most
-+BETA level software!  (Note: the rest of Python is rock solid as ever!)
-+
-+* I understand that the above may be a bit of a disappointment,
-+however my current schedule does not allow me to change this situation
-+before putting the release out of the door.  By releasing it
-+undocumented and buggy, at least some of the (working!) demo programs,
-+like itr (my Internet Talk Radio browser) become available to a larger
-+audience.
-+
-+* There are also modules interfacing to SGI's "Glx" widget (a GL
-+window wrapped in a widget) and to NCSA's "HTML" widget (which can
-+format HyperText Markup Language, the document format used by the
-+World Wide Web).
-+
-+* I've experienced some problems when building the X11 support.  In
-+particular, the Xm and Xaw widget sets don't go together, and it
-+appears that using X11R5 is better than using X11R4.  Also the threads
-+module and its link time options may spoil things.  My own strategy is
-+to build two Python binaries: one for use with X11 and one without
-+it, which can contain a richer set of built-in modules.  Don't even
-+*think* of loading the X11 modules dynamically...
-+
-+
-+Environmental changes
-+---------------------
-+
-+* Compiled files (*.pyc files) created by this Python version are
-+incompatible with those created by the previous version.  Both
-+versions detect this and silently create a correct version, but it
-+means that it is not a good idea to use the same library directory for
-+an old and a new interpreter, since they will start to "fight" over
-+the *.pyc files...
-+
-+* When a stack trace is printed, the exception is printed last instead
-+of first.  This means that if the beginning of the stack trace
-+scrolled out of your window you can still see what exception caused
-+it.
-+
-+* Sometimes interrupting a Python operation does not work because it
-+hangs in a blocking system call.  You can now kill the interpreter by
-+interrupting it three times.  The second time you interrupt it, a
-+message will be printed telling you that the third interrupt will kill
-+the interpreter.  The "sys.exitfunc" feature still makes limited
-+clean-up possible in this case.
-+
-+
-+Changes to the command line interface
-+-------------------------------------
-+
-+* The python usage message is now much more informative.
-+
-+* New option -i enters interactive mode after executing a script --
-+useful for debugging.
-+
-+* New option -k raises an exception when an expression statement
-+yields a value other than None.
-+
-+* For each option there is now also a corresponding environment
-+variable.
-+
-+
-+Using Python as an embedded language
-+------------------------------------
-+
-+* The distribution now contains (some) documentation on the use of
-+Python as an "embedded language" in other applications, as well as a
-+simple example.  See the file misc/EMBEDDING and the directory embed/.
-+
-+
-+Speed improvements
-+------------------
-+
-+* Function local variables are now generally stored in an array and
-+accessed using an integer indexing operation, instead of through a
-+dictionary lookup.  (This compensates the somewhat slower dictionary
-+lookup caused by the generalization of the dictionary module.)
-+
-+
-+Changes to the syntax
-+---------------------
-+
-+* Continuation lines can now *sometimes* be written without a
-+backslash: if the continuation is contained within nesting (), [] or
-+{} brackets the \ may be omitted.  There's a much improved
-+python-mode.el in the misc directory which knows about this as well.
-+
-+* You can no longer use an empty set of parentheses to define a class
-+without base classes.  That is, you no longer write this:
-+
-+      class Foo(): # syntax error
-+              ...
-+
-+You must write this instead:
-+
-+      class Foo:
-+              ...
-+
-+This was already the preferred syntax in release 0.9.8 but many
-+people seemed not to have picked it up.  There's a Python script that
-+fixes old code: demo/scripts/classfix.py.
-+
-+* There's a new reserved word: "access".  The syntax and semantics are
-+still subject of of research and debate (as well as undocumented), but
-+the parser knows about the keyword so you must not use it as a
-+variable, function, or attribute name.
-+
-+
-+Changes to the semantics of the language proper
-+-----------------------------------------------
-+
-+* The following compatibility hack is removed: if a function was
-+defined with two or more arguments, and called with a single argument
-+that was a tuple with just as many arguments, the items of this tuple
-+would be used as the arguments.  This is no longer supported.
-+
-+
-+Changes to the semantics of classes and instances
-+-------------------------------------------------
-+
-+* Class variables are now also accessible as instance variables for
-+reading (assignment creates an instance variable which overrides the
-+class variable of the same name though).
-+
-+* If a class attribute is a user-defined function, a new kind of
-+object is returned: an "unbound method".  This contains a pointer to
-+the class and can only be called with a first argument which is a
-+member of that class (or a derived class).
-+
-+* If a class defines a method __init__(self, arg1, ...) then this
-+method is called when a class instance is created by the classname()
-+construct.  Arguments passed to classname() are passed to the
-+__init__() method.  The __init__() methods of base classes are not
-+automatically called; the derived __init__() method must call these if
-+necessary (this was done so the derived __init__() method can choose
-+the call order and arguments for the base __init__() methods).
-+
-+* If a class defines a method __del__(self) then this method is called
-+when an instance of the class is about to be destroyed.  This makes it
-+possible to implement clean-up of external resources attached to the
-+instance.  As with __init__(), the __del__() methods of base classes
-+are not automatically called.  If __del__ manages to store a reference
-+to the object somewhere, its destruction is postponed; when the object
-+is again about to be destroyed its __del__() method will be called
-+again.
-+
-+* Classes may define a method __hash__(self) to allow their instances
-+to be used as dictionary keys.  This must return a 32-bit integer.
-+
-+
-+Minor improvements
-+------------------
-+
-+* Function and class objects now know their name (the name given in
-+the 'def' or 'class' statement that created them).
-+
-+* Class instances now know their class name.
-+
-+
-+Additions to built-in operations
-+--------------------------------
-+
-+* The % operator with a string left argument implements formatting
-+similar to sprintf() in C.  The right argument is either a single
-+value or a tuple of values.  All features of Standard C sprintf() are
-+supported except %p.
-+
-+* Dictionaries now support almost any key type, instead of just
-+strings.  (The key type must be an immutable type or must be a class
-+instance where the class defines a method __hash__(), in order to
-+avoid losing track of keys whose value may change.)
-+
-+* Built-in methods are now compared properly: when comparing x.meth1
-+and y.meth2, if x is equal to y and the methods are defined by the
-+same function, x.meth1 compares equal to y.meth2.
-+
-+
-+Additions to built-in functions
-+-------------------------------
-+
-+* str(x) returns a string version of its argument.  If the argument is
-+a string it is returned unchanged, otherwise it returns `x`.
-+
-+* repr(x) returns the same as `x`.  (Some users found it easier to
-+have this as a function.)
-+
-+* round(x) returns the floating point number x rounded to an whole
-+number, represented as a floating point number.  round(x, n) returns x
-+rounded to n digits.
-+
-+* hasattr(x, name) returns true when x has an attribute with the given
-+name.
-+
-+* hash(x) returns a hash code (32-bit integer) of an arbitrary
-+immutable object's value.
-+
-+* id(x) returns a unique identifier (32-bit integer) of an arbitrary
-+object.
-+
-+* compile() compiles a string to a Python code object.
-+
-+* exec() and eval() now support execution of code objects.
-+
-+
-+Changes to the documented part of the library (standard modules)
-+----------------------------------------------------------------
-+
-+* os.path.normpath() (a.k.a. posixpath.normpath()) has been fixed so
-+the border case '/foo/..' returns '/' instead of ''.
-+
-+* A new function string.find() is added with similar semantics to
-+string.index(); however when it does not find the given substring it
-+returns -1 instead of raising string.index_error.
-+
-+
-+Changes to built-in modules
-+---------------------------
-+
-+* New optional module 'array' implements operations on sequences of
-+integers or floating point numbers of a particular size.  This is
-+useful to manipulate large numerical arrays or to read and write
-+binary files consisting of numerical data.
-+
-+* Regular expression objects created by module regex now support a new
-+method named group(), which returns one or more \(...\) groups by number.
-+The number of groups is increased from 10 to 100.
-+
-+* Function compile() in module regex now supports an optional mapping
-+argument; a variable casefold is added to the module which can be used
-+as a standard uppercase to lowercase mapping.
-+
-+* Module time now supports many routines that are defined in the
-+Standard C time interface (<time.h>): gmtime(), localtime(),
-+asctime(), ctime(), mktime(), as well as these variables (taken from
-+System V): timezone, altzone, daylight and tzname.  (The corresponding
-+functions in the undocumented module calendar have been removed; the
-+undocumented and unfinished module tzparse is now obsolete and will
-+disappear in a future release.)
-+
-+* Module strop (the fast built-in version of standard module string)
-+now uses C's definition of whitespace instead of fixing it to space,
-+tab and newline; in practice this usually means that vertical tab,
-+form feed and return are now also considered whitespace.  It exports
-+the string of characters that are considered whitespace as well as the
-+characters that are considered lowercase or uppercase.
-+
-+* Module sys now defines the variable builtin_module_names, a list of
-+names of modules built into the current interpreter (including not
-+yet imported, but excluding two special modules that always have to be
-+defined -- sys and builtin).
-+
-+* Objects created by module sunaudiodev now also support flush() and
-+close() methods.
-+
-+* Socket objects created by module socket now support an optional
-+flags argument for their methods sendto() and recvfrom().
-+
-+* Module marshal now supports dumping to and loading from strings,
-+through the functions dumps() and loads().
-+
-+* Module stdwin now supports some new functionality.  You may have to
-+ftp the latest version: ftp.cwi.nl:/pub/stdwin/stdwinforviews.tar.Z.)
-+
-+
-+Bugs fixed
-+----------
-+
-+* Fixed comparison of negative long integers.
-+
-+* The tokenizer no longer botches input lines longer than BUFSIZ.
-+
-+* Fixed several severe memory leaks in module select.
-+
-+* Fixed memory leaks in modules socket and sv.
-+
-+* Fixed memory leak in divmod() for long integers.
-+
-+* Problems with definition of floatsleep() on Suns fixed.
-+
-+* Many portability bugs fixed (and undoubtedly new ones added :-).
-+
-+
-+Changes to the build procedure
-+------------------------------
-+
-+* The Makefile supports some new targets: "make default" and "make
-+all".  Both are by normally equivalent to "make python".
-+
-+* The Makefile no longer uses $> since it's not supported by all
-+versions of Make.
-+
-+* The header files now all contain #ifdef constructs designed to make
-+it safe to include the same header file twice, as well as support for
-+inclusion from C++ programs (automatic extern "C" { ... } added).
-+
-+
-+Freezing Python scripts
-+-----------------------
-+
-+* There is now some support for "freezing" a Python script as a
-+stand-alone executable binary file.  See the script
-+demo/scripts/freeze.py.  It will require some site-specific tailoring
-+of the script to get this working, but is quite worthwhile if you write
-+Python code for other who may not have built and installed Python.
-+
-+
-+MS-DOS
-+------
-+
-+* A new MS-DOS port has been done, using MSC 6.0 (I believe).  Thanks,
-+Marcel van der Peijl!  This requires fewer compatibility hacks in
-+posixmodule.c.  The executable is not yet available but will be soon
-+(check the mailing list).
-+
-+* The default PYTHONPATH has changed.
-+
-+
-+Changes for developers of extension modules
-+-------------------------------------------
-+
-+* Read src/ChangeLog for full details.
-+
-+
-+SGI specific changes
-+--------------------
-+
-+* Read src/ChangeLog for full details.
-+
-+
-+==================================
-+==> Release 0.9.8 (9 Jan 1993) <==
-+==================================
-+
-+I claim no completeness here, but I've tried my best to scan the log
-+files throughout my source tree for interesting bits of news.  A more
-+complete account of the changes is to be found in the various
-+ChangeLog files. See also "News for release 0.9.7beta" below if you're
-+still using release 0.9.6, and the file HISTORY if you have an even
-+older release.
-+
-+      --Guido
-+
-+
-+Changes to the language proper
-+------------------------------
-+
-+There's only one big change: the conformance checking for function
-+argument lists (of user-defined functions only) is stricter.  Earlier,
-+you could get away with the following:
-+
-+      (a) define a function of one argument and call it with any
-+          number of arguments; if the actual argument count wasn't
-+          one, the function would receive a tuple containing the
-+          arguments arguments (an empty tuple if there were none).
-+
-+      (b) define a function of two arguments, and call it with more
-+          than two arguments; if there were more than two arguments,
-+          the second argument would be passed as a tuple containing
-+          the second and further actual arguments.
-+
-+(Note that an argument (formal or actual) that is a tuple is counted as
-+one; these rules don't apply inside such tuples, only at the top level
-+of the argument list.)
-+
-+Case (a) was needed to accommodate variable-length argument lists;
-+there is now an explicit "varargs" feature (precede the last argument
-+with a '*').  Case (b) was needed for compatibility with old class
-+definitions: up to release 0.9.4 a method with more than one argument
-+had to be declared as "def meth(self, (arg1, arg2, ...)): ...".
-+Version 0.9.6 provide better ways to handle both casees, bot provided
-+backward compatibility; version 0.9.8 retracts the compatibility hacks
-+since they also cause confusing behavior if a function is called with
-+the wrong number of arguments.
-+
-+There's a script that helps converting classes that still rely on (b),
-+provided their methods' first argument is called "self":
-+demo/scripts/methfix.py.
-+
-+If this change breaks lots of code you have developed locally, try
-+#defining COMPAT_HACKS in ceval.c.
-+
-+(There's a third compatibility hack, which is the reverse of (a): if a
-+function is defined with two or more arguments, and called with a
-+single argument that is a tuple with just as many arguments, the items
-+of this tuple will be used as the arguments.  Although this can (and
-+should!) be done using the built-in function apply() instead, it isn't
-+withdrawn yet.)
-+
-+
-+One minor change: comparing instance methods works like expected, so
-+that if x is an instance of a user-defined class and has a method m,
-+then (x.m==x.m) yields 1.
-+
-+
-+The following was already present in 0.9.7beta, but not explicitly
-+mentioned in the NEWS file: user-defined classes can now define types
-+that behave in almost allrespects like numbers.  See
-+demo/classes/Rat.py for a simple example.
-+
-+
-+Changes to the build process
-+----------------------------
-+
-+The Configure.py script and the Makefile has been made somewhat more
-+bullet-proof, after reports of (minor) trouble on certain platforms.
-+
-+There is now a script to patch Makefile and config.c to add a new
-+optional built-in module: Addmodule.sh.  Read the script before using!
-+
-+Useing Addmodule.sh, all optional modules can now be configured at
-+compile time using Configure.py, so there are no modules left that
-+require dynamic loading.
-+
-+The Makefile has been fixed to make it easier to use with the VPATH
-+feature of some Make versions (e.g. SunOS).
-+
-+
-+Changes affecting portability
-+-----------------------------
-+
-+Several minor portability problems have been solved, e.g. "malloc.h"
-+has been renamed to "mymalloc.h", "strdup.c" is no longer used, and
-+the system now tolerates malloc(0) returning 0.
-+
-+For dynamic loading on the SGI, Jack Jansen's dl 1.6 is now
-+distributed with Python.  This solves several minor problems, in
-+particular scripts invoked using #! can now use dynamic loading.
-+
-+
-+Changes to the interpreter interface
-+------------------------------------
-+
-+On popular demand, there's finally a "profile" feature for interactive
-+use of the interpreter.  If the environment variable $PYTHONSTARTUP is
-+set to the name of an existing file, Python statements in this file
-+are executed when the interpreter is started in interactive mode.
-+
-+There is a new clean-up mechanism, complementing try...finally: if you
-+assign a function object to sys.exitfunc, it will be called when
-+Python exits or receives a SIGTERM or SIGHUP signal.
-+
-+The interpreter is now generally assumed to live in
-+/usr/local/bin/python (as opposed to /usr/local/python).  The script
-+demo/scripts/fixps.py will update old scripts in place (you can easily
-+modify it to do other similar changes).
-+
-+Most I/O that uses sys.stdin/stdout/stderr will now use any object
-+assigned to those names as long as the object supports readline() or
-+write() methods.
-+
-+The parser stack has been increased to 500 to accommodate more
-+complicated expressions (7 levels used to be the practical maximum,
-+it's now about 38).
-+
-+The limit on the size of the *run-time* stack has completely been
-+removed -- this means that tuple or list displays can contain any
-+number of elements (formerly more than 50 would crash the
-+interpreter). 
-+
-+
-+Changes to existing built-in functions and methods
-+--------------------------------------------------
-+
-+The built-in functions int(), long(), float(), oct() and hex() now
-+also apply to class instalces that define corresponding methods
-+(__int__ etc.).
-+
-+
-+New built-in functions
-+----------------------
-+
-+The new functions str() and repr() convert any object to a string.
-+The function repr(x) is in all respects equivalent to `x` -- some
-+people prefer a function for this.  The function str(x) does the same
-+except if x is already a string -- then it returns x unchanged
-+(repr(x) adds quotes and escapes "funny" characters as octal escapes).
-+
-+The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y.
-+
-+
-+Changes to general built-in modules
-+-----------------------------------
-+
-+The time module's functions are more general: time() returns a
-+floating point number and sleep() accepts one.  Their accuracies
-+depends on the precision of the system clock.  Millisleep is no longer
-+needed (although it still exists for now), but millitimer is still
-+needed since on some systems wall clock time is only available with
-+seconds precision, while a source of more precise time exists that
-+isn't synchronized with the wall clock.  (On UNIX systems that support
-+the BSD gettimeofday() function, time.time() is as time.millitimer().)
-+
-+The string representation of a file object now includes an address:
-+'<file 'filename', mode 'r' at #######>' where ###### is a hex number
-+(the object's address) to make it unique.
-+
-+New functions added to posix: nice(), setpgrp(), and if your system
-+supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp().
-+
-+Improvements to the socket module: socket objects have new methods
-+getpeername() and getsockname(), and the {get,set}sockopt methods can
-+now get/set any kind of option using strings built with the new struct
-+module.  And there's a new function fromfd() which creates a socket
-+object given a file descriptor (useful for servers started by inetd,
-+which have a socket connected to stdin and stdout).
-+
-+
-+Changes to SGI-specific built-in modules
-+----------------------------------------
-+
-+The FORMS library interface (fl) now requires FORMS 2.1a.  Some new
-+functions have been added and some bugs have been fixed.
-+
-+Additions to al (audio library interface): added getname(),
-+getdefault() and getminmax().
-+
-+The gl modules doesn't call "foreground()" when initialized (this
-+caused some problems) like it dit in 0.9.7beta (but not before).
-+There's a new gl function 'gversion() which returns a version string.
-+
-+The interface to sv (Indigo video interface) has totally changed.
-+(Sorry, still no documentation, but see the examples in
-+demo/sgi/{sv,video}.)
-+
-+
-+Changes to standard library modules
-+-----------------------------------
-+
-+Most functions in module string are now much faster: they're actually
-+implemented in C.  The module containing the C versions is called
-+"strop" but you should still import "string" since strop doesn't
-+provide all the interfaces defined in string (and strop may be renamed
-+to string when it is complete in a future release).
-+
-+string.index() now accepts an optional third argument giving an index
-+where to start searching in the first argument, so you can find second
-+and further occurrences (this is similar to the regular expression
-+functions in regex).
-+
-+The definition of what string.splitfields(anything, '') should return
-+is changed for the last time: it returns a singleton list containing
-+its whole first argument unchanged.  This is compatible with
-+regsub.split() which also ignores empty delimiter matches.
-+
-+posixpath, macpath: added dirname() and normpath() (and basename() to
-+macpath).
-+
-+The mainloop module (for use with stdwin) can now demultiplex input
-+from other sources, as long as they can be polled with select().
-+
-+
-+New built-in modules
-+--------------------
-+
-+Module struct defines functions to pack/unpack values to/from strings
-+representing binary values in native byte order.
-+
-+Module strop implements C versions of many functions from string (see
-+above).
-+
-+Optional module fcntl defines interfaces to fcntl() and ioctl() --
-+UNIX only.  (Not yet properly documented -- see however src/fcntl.doc.)
-+
-+Optional module mpz defines an interface to an altaernative long
-+integer implementation, the GNU MPZ library.
-+
-+Optional module md5 uses the GNU MPZ library to calculate MD5
-+signatures of strings.
-+
-+There are also optional new modules specific to SGI machines: imageop
-+defines some simple operations to images represented as strings; sv
-+interfaces to the Indigo video board; cl interfaces to the (yet
-+unreleased) compression library.
-+
-+
-+New standard library modules
-+----------------------------
-+
-+(Unfortunately the following modules are not all documented; read the
-+sources to find out more about them!)
-+
-+autotest: run testall without showing any output unless it differs
-+from the expected output
-+
-+bisect: use bisection to insert or find an item in a sorted list
-+
-+colorsys: defines conversions between various color systems (e.g. RGB
-+<-> YUV)
-+
-+nntplib: a client interface to NNTP servers
-+
-+pipes: utility to construct pipeline from templates, e.g. for
-+conversion from one file format to another using several utilities.
-+
-+regsub: contains three functions that are more or less compatible with
-+awk functions of the same name: sub() and gsub() do string
-+substitution, split() splits a string using a regular expression to
-+define how separators are define.
-+
-+test_types: test operations on the built-in types of Python
-+
-+toaiff: convert various audio file formats to AIFF format
-+
-+tzparse: parse the TZ environment parameter (this may be less general
-+than it could be, let me know if you fix it).
-+
-+(Note that the obsolete module "path" no longer exists.)
-+
-+
-+New SGI-specific library modules
-+--------------------------------
-+
-+CL: constants for use with the built-in compression library interface (cl)
-+
-+Queue: a multi-producer, multi-consumer queue class implemented for
-+use with the built-in thread module
-+
-+SOCKET: constants for use with built-in module socket, e.g. to set/get
-+socket options.  This is SGI-specific because the constants to be
-+passed are system-dependent.  You can generate a version for your own
-+system by running the script demo/scripts/h2py.py with
-+/usr/include/sys/socket.h as input.
-+
-+cddb: interface to the database used by the CD player
-+
-+torgb: convert various image file types to rgb format (requires pbmplus)
-+
-+
-+New demos
-+---------
-+
-+There's an experimental interface to define Sun RPC clients and
-+servers in demo/rpc.
-+
-+There's a collection of interfaces to WWW, WAIS and Gopher (both
-+Python classes and program providing a user interface) in demo/www.
-+This includes a program texi2html.py which converts texinfo files to
-+HTML files (the format used hy WWW).
-+
-+The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse.
-+
-+For SGI systems, there's a whole collection of programs and classes
-+that make use of the Indigo video board in demo/sgi/{sv,video}.  This
-+represents a significant amount of work that we're giving away!
-+
-+There are demos "rsa" and "md5test" that exercise the mpz and md5
-+modules, respectively.  The rsa demo is a complete implementation of
-+the RSA public-key cryptosystem!
-+
-+A bunch of games and examples submitted by Stoffel Erasmus have been
-+included in demo/stoffel.
-+
-+There are miscellaneous new files in some existing demo
-+subdirectories: classes/bitvec.py, scripts/{fixps,methfix}.py,
-+sgi/al/cmpaf.py, sockets/{mcast,gopher}.py.
-+
-+There are also many minor changes to existing files, but I'm too lazy
-+to run a diff and note the differences -- you can do this yourself if
-+you save the old distribution's demos.  One highlight: the
-+stdwin/python.py demo is much improved!
-+
-+
-+Changes to the documentation
-+----------------------------
-+
-+The LaTeX source for the library uses different macros to enable it to
-+be converted to texinfo, and from there to INFO or HTML format so it
-+can be browsed as a hypertext.  The net result is that you can now
-+read the Python library documentation in Emacs info mode!
-+
-+
-+Changes to the source code that affect C extension writers
-+----------------------------------------------------------
-+
-+The function strdup() no longer exists (it was used only in one places
-+and is somewhat of a a portability problem sice some systems have the
-+same function in their C library.
-+
-+The functions NEW() and RENEW() allocate one spare byte to guard
-+against a NULL return from malloc(0) being taken for an error, but
-+this should not be relied upon.
-+
-+
-+=========================
-+==> Release 0.9.7beta <==
-+=========================
-+
-+
-+Changes to the language proper
-+------------------------------
-+
-+User-defined classes can now implement operations invoked through
-+special syntax, such as x[i] or `x` by defining methods named
-+__getitem__(self, i) or __repr__(self), etc.
-+
-+
-+Changes to the build process
-+----------------------------
-+
-+Instead of extensive manual editing of the Makefile to select
-+compile-time options, you can now run a Configure.py script.
-+The Makefile as distributed builds a minimal interpreter sufficient to
-+run Configure.py.  See also misc/BUILD
-+
-+The Makefile now includes more "utility" targets, e.g. install and
-+tags/TAGS
-+
-+Using the provided strtod.c and strtol.c are now separate options, as
-+on the Sun the provided strtod.c dumps core :-(
-+
-+The regex module is now an option chosen by the Makefile, since some
-+(old) C compilers choke on regexpr.c
-+
-+
-+Changes affecting portability
-+-----------------------------
-+
-+You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin
-+interface
-+
-+Dynamic loading is now supported for Sun (and other non-COFF systems)
-+throug dld-3.2.3, as well as for SGI (a new version of Jack Jansen's
-+DL is out, 1.4)
-+
-+The system-dependent code for the use of the select() system call is
-+moved to one file: myselect.h
-+
-+Thanks to Jaap Vermeulen, the code should now port cleanly to the
-+SEQUENT
-+
-+
-+Changes to the interpreter interface
-+------------------------------------
-+
-+The interpretation of $PYTHONPATH in the environment is different: it
-+is inserted in front of the default path instead of overriding it
-+
-+
-+Changes to existing built-in functions and methods
-+--------------------------------------------------
-+
-+List objects now support an optional argument to their sort() method,
-+which is a comparison function similar to qsort(3) in C
-+
-+File objects now have a method fileno(), used by the new select module
-+(see below)
-+
-+
-+New built-in function
-+---------------------
-+
-+coerce(x, y): take two numbers and return a tuple containing them
-+both converted to a common type
-+
-+
-+Changes to built-in modules
-+---------------------------
-+
-+sys: fixed core dumps in settrace() and setprofile()
-+
-+socket: added socket methods setsockopt() and getsockopt(); and
-+fileno(), used by the new select module (see below)
-+
-+stdwin: added fileno() == connectionnumber(), in support of new module
-+select (see below)
-+
-+posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function.
-+
-+gl: added qgetfd()
-+
-+fl: added several new functions, fixed several obscure bugs, adapted
-+to FORMS 2.1
-+
-+
-+Changes to standard modules
-+---------------------------
-+
-+posixpath: changed implementation of ismount()
-+
-+string: atoi() no longer mistakes leading zero for octal number
-+
-+...
-+
-+
-+New built-in modules
-+--------------------
-+
-+Modules marked "dynamic only" are not configured at compile time but
-+can be loaded dynamically.  You need to turn on the DL or DLD option in
-+the Makefile for support dynamic loading of modules (this requires
-+external code).
-+
-+select: interfaces to the BSD select() system call
-+
-+dbm: interfaces to the (new) dbm library (dynamic only)
-+
-+nis: interfaces to some NIS functions (aka yellow pages)
-+
-+thread: limited form of multiple threads (sgi only)
-+
-+audioop: operations useful for audio programs, e.g. u-LAW and ADPCM
-+coding (dynamic only)
-+
-+cd: interface to Indigo SCSI CDROM player audio library (sgi only)
-+
-+jpeg: read files in JPEG format (dynamic only, sgi only; needs
-+external code)
-+
-+imgfile: read SGI image files (dynamic only, sgi only)
-+
-+sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only)
-+
-+sv: interface to Indigo video library (sgi only)
-+
-+pc: a minimal set of MS-DOS interfaces (MS-DOS only)
-+
-+rotor: encryption, by Lance Ellinghouse (dynamic only)
-+
-+
-+New standard modules
-+--------------------
-+
-+Not all these modules are documented.  Read the source:
-+lib/<modulename>.py.  Sometimes a file lib/<modulename>.doc contains
-+additional documentation.
-+
-+imghdr: recognizes image file headers
-+
-+sndhdr: recognizes sound file headers
-+
-+profile: print run-time statistics of Python code
-+
-+readcd, cdplayer: companion modules for built-in module cd (sgi only)
-+
-+emacs: interface to Emacs using py-connect.el (see below).
-+
-+SOCKET: symbolic constant definitions for socket options
-+
-+SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only)
-+
-+SV: symbolic constat definitions for sv (sgi only)
-+
-+CD: symbolic constat definitions for cd (sgi only)
-+
-+
-+New demos
-+---------
-+
-+scripts/pp.py: execute Python as a filter with a Perl-like command
-+line interface
-+
-+classes/: examples using the new class features
-+
-+threads/: examples using the new thread module
-+
-+sgi/cd/: examples using the new cd module
-+
-+
-+Changes to the documentation
-+----------------------------
-+
-+The last-minute syntax changes of release 0.9.6 are now reflected
-+everywhere in the manuals
-+
-+The reference manual has a new section (3.2) on implementing new kinds
-+of numbers, sequences or mappings with user classes
-+
-+Classes are now treated extensively in the tutorial (chapter 9)
-+
-+Slightly restructured the system-dependent chapters of the library
-+manual
-+
-+The file misc/EXTENDING incorporates documentation for mkvalue() and
-+a new section on error handling
-+
-+The files misc/CLASSES and misc/ERRORS are no longer necessary
-+
-+The doc/Makefile now creates PostScript files automatically
-+
-+
-+Miscellaneous changes
-+---------------------
-+
-+Incorporated Tim Peters' changes to python-mode.el, it's now version
-+1.06
-+
-+A python/Emacs bridge (provided by Terrence M. Brannon) lets a Python
-+program running in an Emacs buffer execute Emacs lisp code.  The
-+necessary Python code is in lib/emacs.py.  The Emacs code is
-+misc/py-connect.el (it needs some external Emacs lisp code)
-+
-+
-+Changes to the source code that affect C extension writers
-+----------------------------------------------------------
-+
-+New service function mkvalue() to construct a Python object from C
-+values according to a "format" string a la getargs()
-+
-+Most functions from pythonmain.c moved to new pythonrun.c which is
-+in libpython.a.  This should make embedded versions of Python easier
-+
-+ceval.h is split in eval.h (which needs compile.h and only declares
-+eval_code) and ceval.h (which doesn't need compile.hand declares the
-+rest)
-+
-+ceval.h defines macros BGN_SAVE / END_SAVE for use with threads (to
-+improve the parallellism of multi-threaded programs by letting other
-+Python code run when a blocking system call or something similar is
-+made)
-+
-+In structmember.[ch], new member types BYTE, CHAR and unsigned
-+variants have been added
-+
-+New file xxmodule.c is a template for new extension modules.
-+
-+
-+==================================
-+==> Release 0.9.6 (6 Apr 1992) <==
-+==================================
-+
-+Misc news in 0.9.6:
-+- Restructured the misc subdirectory
-+- Reference manual completed, library manual much extended (with indexes!)
-+- the GNU Readline library is now distributed standard with Python
-+- the script "../demo/scripts/classfix.py" fixes Python modules using old
-+  class syntax
-+- Emacs python-mode.el (was python.el) vastly improved (thanks, Tim!)
-+- Because of the GNU copyleft business I am not using the GNU regular
-+  expression implementation but a free re-implementation by Tatu Ylonen
-+  that recently appeared in comp.sources.misc (Bravo, Tatu!)
-+
-+New features in 0.9.6:
-+- stricter try stmt syntax: cannot mix except and finally clauses on 1 try
-+- New module 'os' supplants modules 'mac' and 'posix' for most cases;
-+  module 'path' is replaced by 'os.path'
-+- os.path.split() return value differs from that of old path.split()
-+- sys.exc_type, sys.exc_value, sys.exc_traceback are set to the exception
-+  currently being handled
-+- sys.last_type, sys.last_value, sys.last_traceback remember last unhandled
-+  exception
-+- New function string.expandtabs() expands tabs in a string
-+- Added times() interface to posix (user & sys time of process & children)
-+- Added uname() interface to posix (returns OS type, hostname, etc.)
-+- New built-in function execfile() is like exec() but from a file
-+- Functions exec() and eval() are less picky about whitespace/newlines
-+- New built-in functions getattr() and setattr() access arbitrary attributes
-+- More generic argument handling in built-in functions (see "./EXTENDING")
-+- Dynamic loading of modules written in C or C++ (see "./DYNLOAD")
-+- Division and modulo for long and plain integers with negative operands
-+  have changed; a/b is now floor(float(a)/float(b)) and a%b is defined
-+  as a-(a/b)*b.  So now the outcome of divmod(a,b) is the same as
-+  (a/b, a%b) for integers.  For floats, % is also changed, but of course
-+  / is unchanged, and divmod(x,y) does not yield (x/y, x%y)...
-+- A function with explicit variable-length argument list can be declared
-+  like this: def f(*args): ...; or even like this: def f(a, b, *rest): ...
-+- Code tracing and profiling features have been added, and two source
-+  code debuggers are provided in the library (pdb.py, tty-oriented,
-+  and wdb, window-oriented); you can now step through Python programs!
-+  See sys.settrace() and sys.setprofile(), and "../lib/pdb.doc"
-+- '==' is now the only equality operator; "../demo/scripts/eqfix.py" is
-+  a script that fixes old Python modules
-+- Plain integer right shift now uses sign extension
-+- Long integer shift/mask operations now simulate 2's complement
-+  to give more useful results for negative operands
-+- Changed/added range checks for long/plain integer shifts
-+- Options found after "-c command" are now passed to the command in sys.argv
-+  (note subtle incompatiblity with "python -c command -- -options"!)
-+- Module stdwin is better protected against touching objects after they've
-+  been closed; menus can now also be closed explicitly
-+- Stdwin now uses its own exception (stdwin.error)
-+
-+New features in 0.9.5 (released as Macintosh application only, 2 Jan 1992):
-+- dictionary objects can now be compared properly; e.g., {}=={} is true
-+- new exception SystemExit causes termination if not caught;
-+  it is raised by sys.exit() so that 'finally' clauses can clean up,
-+  and it may even be caught.  It does work interactively!
-+- new module "regex" implements GNU Emacs style regular expressions;
-+  module "regexp" is rewritten in Python for backward compatibility
-+- formal parameter lists may contain trailing commas
-+
-+Bugs fixed in 0.9.6:
-+- assigning to or deleting a list item with a negative index dumped core
-+- divmod(-10L,5L) returned (-3L, 5L) instead of (-2L, 0L)
-+
-+Bugs fixed in 0.9.5:
-+- masking operations involving negative long integers gave wrong results
-+
-+
-+===================================
-+==> Release 0.9.4 (24 Dec 1991) <==
-+===================================
-+
-+- new function argument handling (see below)
-+- built-in apply(func, args) means func(args[0], args[1], ...)
-+- new, more refined exceptions
-+- new exception string values (NameError = 'NameError' etc.)
-+- better checking for math exceptions
-+- for sequences (string/tuple/list), x[-i] is now equivalent to x[len(x)-i]
-+- fixed list assignment bug: "a[1:1] = a" now works correctly
-+- new class syntax, without extraneous parentheses
-+- new 'global' statement to assign global variables from within a function
-+
-+
-+New class syntax
-+----------------
-+
-+You can now declare a base class as follows:
-+
-+      class B:                        # Was: class B():
-+              def some_method(self): ...
-+              ...
-+
-+and a derived class thusly:
-+
-+      class D(B):                     # Was: class D() = B():
-+              def another_method(self, arg): ...
-+
-+Multiple inheritance looks like this:
-+
-+      class M(B, D):                  # Was: class M() = B(), D():
-+              def this_or_that_method(self, arg): ...
-+
-+The old syntax is still accepted by Python 0.9.4, but will disappear
-+in Python 1.0 (to be posted to comp.sources).
-+
-+
-+New 'global' statement
-+----------------------
-+
-+Every now and then you have a global variable in a module that you
-+want to change from within a function in that module -- say, a count
-+of calls to a function, or an option flag, etc.  Until now this was
-+not directly possible.  While several kludges are known that
-+circumvent the problem, and often the need for a global variable can
-+be avoided by rewriting the module as a class, this does not always
-+lead to clearer code.
-+
-+The 'global' statement solves this dilemma.  Its occurrence in a
-+function body means that, for the duration of that function, the
-+names listed there refer to global variables.  For instance:
-+
-+      total = 0.0
-+      count = 0
-+
-+      def add_to_total(amount):
-+              global total, count
-+              total = total + amount
-+              count = count + 1
-+
-+'global' must be repeated in each function where it is needed.  The
-+names listed in a 'global' statement must not be used in the function
-+before the statement is reached.
-+
-+Remember that you don't need to use 'global' if you only want to *use*
-+a global variable in a function; nor do you need ot for assignments to
-+parts of global variables (e.g., list or dictionary items or
-+attributes of class instances).  This has not changed; in fact
-+assignment to part of a global variable was the standard workaround.
-+
-+
-+New exceptions
-+--------------
-+
-+Several new exceptions have been defined, to distinguish more clearly
-+between different types of errors.
-+
-+name                  meaning                                 was
-+
-+AttributeError                reference to non-existing attribute     NameError
-+IOError                       unexpected I/O error                    RuntimeError
-+ImportError           import of non-existing module or name   NameError
-+IndexError            invalid string, tuple or list index     RuntimeError
-+KeyError              key not in dictionary                   RuntimeError
-+OverflowError         numeric overflow                        RuntimeError
-+SyntaxError           invalid syntax                          RuntimeError
-+ValueError            invalid argument value                  RuntimeError
-+ZeroDivisionError     division by zero                        RuntimeError
-+
-+The string value of each exception is now its name -- this makes it
-+easier to experimentally find out which operations raise which
-+exceptions; e.g.:
-+
-+      >>> KeyboardInterrupt
-+      'KeyboardInterrupt'
-+      >>>
-+
-+
-+New argument passing semantics
-+------------------------------
-+
-+Off-line discussions with Steve Majewski and Daniel LaLiberte have
-+convinced me that Python's parameter mechanism could be changed in a
-+way that made both of them happy (I hope), kept me happy, fixed a
-+number of outstanding problems, and, given some backward compatibility
-+provisions, would only break a very small amount of existing code --
-+probably all mine anyway.  In fact I suspect that most Python users
-+will hardly notice the difference.  And yet it has cost me at least
-+one sleepless night to decide to make the change...
-+
-+Philosophically, the change is quite radical (to me, anyway): a
-+function is no longer called with either zero or one argument, which
-+is a tuple if there appear to be more arguments.  Every function now
-+has an argument list containing 0, 1 or more arguments.  This list is
-+always implemented as a tuple, and it is a (run-time) error if a
-+function is called with a different number of arguments than expected.
-+
-+What's the difference? you may ask.  The answer is, very little unless
-+you want to write variadic functions -- functions that may be called
-+with a variable number of arguments.  Formerly, you could write a
-+function that accepted one or more arguments with little trouble, but
-+writing a function that could be called with either 0 or 1 argument
-+(or more) was next to impossible.  This is now a piece of cake: you
-+can simply declare an argument that receives the entire argument
-+tuple, and check its length -- it will be of size 0 if there are no
-+arguments.
-+
-+Another anomaly of the old system was the way multi-argument methods
-+(in classes) had to be declared, e.g.:
-+
-+      class Point():
-+              def init(self, (x, y, color)): ...
-+              def setcolor(self, color): ...
-+              dev moveto(self, (x, y)): ...
-+              def draw(self): ...
-+
-+Using the new scheme there is no need to enclose the method arguments
-+in an extra set of parentheses, so the above class could become:
-+
-+      class Point:
-+              def init(self, x, y, color): ...
-+              def setcolor(self, color): ...
-+              dev moveto(self, x, y): ...
-+              def draw(self): ...
-+
-+That is, the equivalence rule between methods and functions has
-+changed so that now p.moveto(x,y) is equivalent to Point.moveto(p,x,y)
-+while formerly it was equivalent to Point.moveto(p,(x,y)).
-+
-+A special backward compatibility rule makes that the old version also
-+still works: whenever a function with exactly two arguments (at the top
-+level) is called with more than two arguments, the second and further
-+arguments are packed into a tuple and passed as the second argument.
-+This rule is invoked independently of whether the function is actually a
-+method, so there is a slight chance that some erroneous calls of
-+functions expecting two arguments with more than that number of
-+arguments go undetected at first -- when the function tries to use the
-+second argument it may find it is a tuple instead of what was expected.
-+Note that this rule will be removed from future versions of the
-+language; it is a backward compatibility provision *only*.
-+
-+Two other rules and a new built-in function handle conversion between
-+tuples and argument lists:
-+
-+Rule (a): when a function with more than one argument is called with a
-+single argument that is a tuple of the right size, the tuple's items
-+are used as arguments.
-+
-+Rule (b): when a function with exactly one argument receives no
-+arguments or more than one, that one argument will receive a tuple
-+containing the arguments (the tuple will be empty if there were no
-+arguments).
-+
-+
-+A new built-in function, apply(), was added to support functions that
-+need to call other functions with a constructed argument list.  The call
-+
-+      apply(function, tuple)
-+
-+is equivalent to
-+
-+      function(tuple[0], tuple[1], ..., tuple[len(tuple)-1])
-+
-+
-+While no new argument syntax was added in this phase, it would now be
-+quite sensible to add explicit syntax to Python for default argument
-+values (as in C++ or Modula-3), or a "rest" argument to receive the
-+remaining arguments of a variable-length argument list.
-+
-+
-+========================================================
-+==> Release 0.9.3 (never made available outside CWI) <==
-+========================================================
-+
-+- string sys.version shows current version (also printed on interactive entry)
-+- more detailed exceptions, e.g., IOError, ZeroDivisionError, etc.
-+- 'global' statement to declare module-global variables assigned in functions.
-+- new class declaration syntax: class C(Base1, Base2, ...): suite
-+  (the old syntax is still accepted -- be sure to convert your classes now!)
-+- C shifting and masking operators: << >> ~ & ^ | (for ints and longs).
-+- C comparison operators: == != (the old = and <> remain valid).
-+- floating point numbers may now start with a period (e.g., .14).
-+- definition of integer division tightened (always truncates towards zero).
-+- new builtins hex(x), oct(x) return hex/octal string from (long) integer.
-+- new list method l.count(x) returns the number of occurrences of x in l.
-+- new SGI module: al (Indigo and 4D/35 audio library).
-+- the FORMS interface (modules fl and FL) now uses FORMS 2.0
-+- module gl: added lrect{read,write}, rectzoom and pixmode;
-+  added (non-GL) functions (un)packrect.
-+- new socket method: s.allowbroadcast(flag).
-+- many objects support __dict__, __methods__ or __members__.
-+- dir() lists anything that has __dict__.
-+- class attributes are no longer read-only.
-+- classes support __bases__, instances support __class__ (and __dict__).
-+- divmod() now also works for floats.
-+- fixed obscure bug in eval('1            ').
-+
-+
-+===================================
-+==> Release 0.9.2 (Autumn 1991) <==
-+===================================
-+
-+Highlights
-+----------
-+
-+- tutorial now (almost) complete; library reference reorganized
-+- new syntax: continue statement; semicolons; dictionary constructors;
-+  restrictions on blank lines in source files removed
-+- dramatically improved module load time through precompiled modules
-+- arbitrary precision integers: compute 2 to the power 1000 and more...
-+- arithmetic operators now accept mixed type operands, e.g., 3.14/4
-+- more operations on list: remove, index, reverse; repetition
-+- improved/new file operations: readlines, seek, tell, flush, ...
-+- process management added to the posix module: fork/exec/wait/kill etc.
-+- BSD socket operations (with example servers and clients!)
-+- many new STDWIN features (color, fonts, polygons, ...)
-+- new SGI modules: font manager and FORMS library interface
-+
-+
-+Extended list of changes in 0.9.2
-+---------------------------------
-+
-+Here is a summary of the most important user-visible changes in 0.9.2,
-+in somewhat arbitrary order.  Changes in later versions are listed in
-+the "highlights" section above.
-+
-+
-+1. Changes to the interpreter proper
-+
-+- Simple statements can now be separated by semicolons.
-+  If you write "if t: s1; s2", both s1 and s2 are executed
-+  conditionally.
-+- The 'continue' statement was added, with semantics as in C.
-+- Dictionary displays are now allowed on input: {key: value, ...}.
-+- Blank lines and lines bearing only a comment no longer need to
-+  be indented properly.  (A completely empty line still ends a multi-
-+  line statement interactively.)
-+- Mixed arithmetic is supported, 1 compares equal to 1.0, etc.
-+- Option "-c command" to execute statements from the command line
-+- Compiled versions of modules are cached in ".pyc" files, giving a
-+  dramatic improvement of start-up time
-+- Other, smaller speed improvements, e.g., extracting characters from
-+  strings, looking up single-character keys, and looking up global
-+  variables
-+- Interrupting a print operation raises KeyboardInterrupt instead of
-+  only cancelling the print operation
-+- Fixed various portability problems (it now passes gcc with only
-+  warnings -- more Standard C compatibility will be provided in later
-+  versions)
-+- Source is prepared for porting to MS-DOS
-+- Numeric constants are now checked for overflow (this requires
-+  standard-conforming strtol() and strtod() functions; a correct
-+  strtol() implementation is provided, but the strtod() provided
-+  relies on atof() for everything, including error checking
-+
-+
-+2. Changes to the built-in types, functions and modules
-+
-+- New module socket: interface to BSD socket primitives
-+- New modules pwd and grp: access the UNIX password and group databases
-+- (SGI only:) New module "fm" interfaces to the SGI IRIX Font Manager
-+- (SGI only:) New module "fl" interfaces to Mark Overmars' FORMS library
-+- New numeric type: long integer, for unlimited precision
-+      - integer constants suffixed with 'L' or 'l' are long integers
-+      - new built-in function long(x) converts int or float to long
-+      - int() and float() now also convert from long integers
-+- New built-in function:
-+      - pow(x, y) returns x to the power y
-+- New operation and methods for lists:
-+      - l*n returns a new list consisting of n concatenated copies of l
-+      - l.remove(x) removes the first occurrence of the value x from l
-+      - l.index(x) returns the index of the first occurrence of x in l
-+      - l.reverse() reverses l in place
-+- New operation for tuples:
-+      - t*n returns a tuple consisting of n concatenated copies of t
-+- Improved file handling:
-+      - f.readline() no longer restricts the line length, is faster,
-+        and isn't confused by null bytes; same for raw_input()
-+      - f.read() without arguments reads the entire (rest of the) file
-+      - mixing of print and sys.stdout.write() has different effect
-+- New methods for files:
-+      - f.readlines() returns a list containing the lines of the file,
-+        as read with f.readline()
-+      - f.flush(), f.tell(), f.seek() call their stdio counterparts
-+      - f.isatty() tests for "tty-ness"
-+- New posix functions:
-+      - _exit(), exec(), fork(), getpid(), getppid(), kill(), wait()
-+      - popen() returns a file object connected to a pipe
-+      - utime() replaces utimes() (the latter is not a POSIX name)
-+- New stdwin features, including:
-+      - font handling
-+      - color drawing
-+      - scroll bars made optional
-+      - polygons
-+      - filled and xor shapes
-+      - text editing objects now have a 'settext' method
-+
-+
-+3. Changes to the standard library
-+
-+- Name change: the functions path.cat and macpath.cat are now called
-+  path.join and macpath.join
-+- Added new modules: formatter, mutex, persist, sched, mainloop
-+- Added some modules and functionality to the "widget set" (which is
-+  still under development, so please bear with me):
-+      DirList, FormSplit, TextEdit, WindowSched
-+- Fixed module testall to work non-interactively
-+- Module string:
-+      - added functions join() and joinfields()
-+      - fixed center() to work correct and make it "transitive"
-+- Obsolete modules were removed: util, minmax
-+- Some modules were moved to the demo directory
-+
-+
-+4. Changes to the demonstration programs
-+
-+- Added new useful scipts: byteyears, eptags, fact, from, lfact,
-+  objgraph, pdeps, pi, primes, ptags, which
-+- Added a bunch of socket demos
-+- Doubled the speed of ptags
-+- Added new stdwin demos: microedit, miniedit
-+- Added a windowing interface to the Python interpreter: python (most
-+  useful on the Mac)
-+- Added a browser for Emacs info files: demo/stdwin/ibrowse
-+  (yes, I plan to put all STDWIN and Python documentation in texinfo
-+  form in the future)
-+
-+
-+5. Other changes to the distribution
-+
-+- An Emacs Lisp file "python.el" is provided to facilitate editing
-+  Python programs in GNU Emacs (slightly improved since posted to
-+  gnu.emacs.sources)
-+- Some info on writing an extension in C is provided
-+- Some info on building Python on non-UNIX platforms is provided
-+
-+
-+=====================================
-+==> Release 0.9.1 (February 1991) <==
-+=====================================
-+
-+- Micro changes only
-+- Added file "patchlevel.h"
-+
-+
-+=====================================
-+==> Release 0.9.0 (February 1991) <==
-+=====================================
-+
-+Original posting to alt.sources.
 diff -burN Python-2.3.3.orig/Tools/faqwiz/faqw.py Python-2.3.3/Tools/faqwiz/faqw.py
 --- Python-2.3.3.orig/Tools/faqwiz/faqw.py     1998-04-04 00:27:04.000000000 +0200
 +++ Python-2.3.3/Tools/faqwiz/faqw.py  2004-03-14 19:18:16.150498984 +0100
This page took 0.524043 seconds and 4 git commands to generate.