Home | History | Annotate | Download | only in Misc
      1 Python History
      2 --------------
      3 
      4 This file contains the release messages for previous Python releases.
      5 As you read on you go back to the dark ages of Python's history.
      6 (Note: news about 2.5c2 and later 2.5 releases is in the Misc/NEWS
      7 file of the release25-maint branch.)
      8 
      9 
     10 ======================================================================
     11 
     12 
     13 What's New in Python 2.5 release candidate 1?
     14 =============================================
     15 
     16 *Release date: 17-AUG-2006*
     17 
     18 Core and builtins
     19 -----------------
     20 
     21 - Unicode objects will no longer raise an exception when being
     22   compared equal or unequal to a string and a UnicodeDecodeError
     23   exception occurs, e.g. as result of a decoding failure.
     24 
     25   Instead, the equal (==) and unequal (!=) comparison operators will
     26   now issue a UnicodeWarning and interpret the two objects as
     27   unequal. The UnicodeWarning can be filtered as desired using
     28   the warning framework, e.g. silenced completely, turned into an
     29   exception, logged, etc.
     30 
     31   Note that compare operators other than equal and unequal will still
     32   raise UnicodeDecodeError exceptions as they've always done.
     33 
     34 - Fix segfault when doing string formatting on subclasses of long.
     35 
     36 - Fix bug related to __len__ functions using values > 2**32 on 64-bit machines
     37   with new-style classes.
     38 
     39 - Fix bug related to __len__ functions returning negative values with
     40   classic classes.
     41 
     42 - Patch #1538606, Fix __index__() clipping.  There were some problems
     43   discovered with the API and how integers that didn't fit into Py_ssize_t
     44   were handled.  This patch attempts to provide enough alternatives
     45   to effectively use __index__.
     46 
     47 - Bug #1536021: __hash__ may now return long int; the final hash
     48   value is obtained by invoking hash on the long int.
     49 
     50 - Bug #1536786: buffer comparison could emit a RuntimeWarning.
     51 
     52 - Bug #1535165: fixed a segfault in input() and raw_input() when
     53   sys.stdin is closed.
     54 
     55 - On Windows, the PyErr_Warn function is now exported from
     56   the Python dll again.
     57 
     58 - Bug #1191458: tracing over for loops now produces a line event
     59   on each iteration.  Fixing this problem required changing the .pyc
     60   magic number.  This means that .pyc files generated before 2.5c1
     61   will be regenerated.
     62 
     63 - Bug #1333982: string/number constants were inappropriately stored
     64   in the byte code and co_consts even if they were not used, ie
     65   immediately popped off the stack.
     66 
     67 - Fixed a reference-counting problem in property().
     68 
     69 
     70 Library
     71 -------
     72 
     73 - Fix a bug in the ``compiler`` package that caused invalid code to be
     74   generated for generator expressions.
     75 
     76 - The distutils version has been changed to 2.5.0. The change to
     77   keep it programmatically in sync with the Python version running
     78   the code (introduced in 2.5b3) has been reverted. It will continue
     79   to be maintained manually as static string literal.
     80 
     81 - If the Python part of a ctypes callback function returns None,
     82   and this cannot be converted to the required C type, an exception is
     83   printed with PyErr_WriteUnraisable.  Before this change, the C
     84   callback returned arbitrary values to the calling code.
     85 
     86 - The __repr__ method of a NULL ctypes.py_object() no longer raises
     87   an exception.
     88 
     89 - uuid.UUID now has a bytes_le attribute. This returns the UUID in
     90   little-endian byte order for Windows. In addition, uuid.py gained some
     91   workarounds for clocks with low resolution, to stop the code yielding
     92   duplicate UUIDs.
     93 
     94 - Patch #1540892: site.py Quitter() class attempts to close sys.stdin
     95   before raising SystemExit, allowing IDLE to honor quit() and exit().
     96 
     97 - Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize.
     98 
     99 - Patch #1536071: trace.py should now find the full module name of a
    100   file correctly even on Windows.
    101 
    102 - logging's atexit hook now runs even if the rest of the module has
    103   already been cleaned up.
    104 
    105 - Bug #1112549, fix DoS attack on cgi.FieldStorage.
    106 
    107 - Bug #1531405, format_exception no longer raises an exception if
    108   str(exception) raised an exception.
    109 
    110 - Fix a bug in the ``compiler`` package that caused invalid code to be
    111   generated for nested functions.
    112 
    113 
    114 Extension Modules
    115 -----------------
    116 
    117 - Patch #1511317: don't crash on invalid hostname (alias) info.
    118 
    119 - Patch #1535500: fix segfault in BZ2File.writelines and make sure it
    120   raises the correct exceptions.
    121 
    122 - Patch # 1536908: enable building ctypes on OpenBSD/AMD64.  The
    123   '-no-stack-protector' compiler flag for OpenBSD has been removed.
    124 
    125 - Patch #1532975 was applied, which fixes Bug #1533481: ctypes now
    126   uses the _as_parameter_ attribute when objects are passed to foreign
    127   function calls.  The ctypes version number was changed to 1.0.1.
    128 
    129 - Bug #1530559, struct.pack raises TypeError where it used to convert.
    130   Passing float arguments to struct.pack when integers are expected
    131   now triggers a DeprecationWarning.
    132 
    133 
    134 Tests
    135 -----
    136 
    137 - test_socketserver should now work on cygwin and not fail sporadically
    138   on other platforms.
    139 
    140 - test_mailbox should now work on cygwin versions 2006-08-10 and later.
    141 
    142 - Bug #1535182: really test the xreadlines() method of bz2 objects.
    143 
    144 - test_threading now skips testing alternate thread stack sizes on
    145   platforms that don't support changing thread stack size.
    146 
    147 
    148 Documentation
    149 -------------
    150 
    151 - Patch #1534922: unittest docs were corrected and enhanced.
    152 
    153 
    154 Build
    155 -----
    156 
    157 - Bug #1535502, build _hashlib on Windows, and use masm assembler
    158   code in OpenSSL.
    159 
    160 - Bug #1534738, win32 debug version of _msi should be _msi_d.pyd.
    161 
    162 - Bug #1530448, ctypes build failure on Solaris 10 was fixed.
    163 
    164 
    165 C API
    166 -----
    167 
    168 - New API for Unicode rich comparisons: PyUnicode_RichCompare()
    169 
    170 - Bug #1069160.  Internal correctness changes were made to
    171   ``PyThreadState_SetAsyncExc()``.  A test case was added, and
    172   the documentation was changed to state that the return value
    173   is always 1 (normal) or 0 (if the specified thread wasn't found).
    174 
    175 
    176 What's New in Python 2.5 beta 3?
    177 ================================
    178 
    179 *Release date: 03-AUG-2006*
    180 
    181 Core and builtins
    182 -----------------
    183 
    184 - _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously
    185   returned a long (see PEP 353).
    186 
    187 - Bug #1515471: string.replace() accepts character buffers again.
    188 
    189 - Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn().
    190   This provides the proper warning for struct.pack().
    191   PyErr_Warn() is now deprecated in favor of PyErr_WarnEx().
    192 
    193 - Patch #1531113: Fix augmented assignment with yield expressions.
    194   Also fix a SystemError when trying to assign to yield expressions.
    195 
    196 - Bug #1529871: The speed enhancement patch #921466 broke Python's compliance
    197   with PEP 302.  This was fixed by adding an ``imp.NullImporter`` type that is
    198   used in ``sys.path_importer_cache`` to cache non-directory paths and avoid
    199   excessive filesystem operations during imports.
    200 
    201 - Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some
    202   operations on signed longs that are formally undefined by C.
    203   Unfortunately, at least one compiler now cares about that, so complicated
    204   the code to make that compiler happy again.
    205 
    206 - Bug #1524310: Properly report errors from FindNextFile in os.listdir.
    207 
    208 - Patch #1232023: Stop including current directory in search
    209   path on Windows.
    210 
    211 - Fix some potential crashes found with failmalloc.
    212 
    213 - Fix warnings reported by Klocwork's static analysis tool.
    214 
    215 - Bug #1512814, Fix incorrect lineno's when code within a function
    216   had more than 255 blank lines.
    217 
    218 - Patch #1521179: Python now accepts the standard options ``--help`` and
    219   ``--version`` as well as ``/?`` on Windows.
    220 
    221 - Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works
    222   again.  Fixing this problem required changing the .pyc magic number.
    223   This means that .pyc files generated before 2.5b3 will be regenerated.
    224 
    225 - Bug #1524317:  Compiling Python ``--without-threads`` failed.
    226   The Python core compiles again, and, in a build without threads, the
    227   new ``sys._current_frames()`` returns a dictionary with one entry,
    228   mapping the faux "thread id" 0 to the current frame.
    229 
    230 - Bug #1525447: build on MacOS X on a case-sensitive filesystem.
    231 
    232 
    233 Library
    234 -------
    235 
    236 - Fix #1693149.  Now you can pass several modules separated by
    237   comma to trace.py in the same --ignore-module option.
    238 
    239 - Correction of patch #1455898: In the mbcs decoder, set final=False
    240   for stream decoder, but final=True for the decode function.
    241 
    242 - os.urandom no longer masks unrelated exceptions like SystemExit or
    243   KeyboardInterrupt.
    244 
    245 - Bug #1525866: Don't copy directory stat times in
    246   shutil.copytree on Windows
    247 
    248 - Bug #1002398: The documentation for os.path.sameopenfile now correctly
    249   refers to file descriptors, not file objects.
    250 
    251 - The renaming of the xml package to xmlcore, and the import hackery done
    252   to make it appear at both names, has been removed.  Bug #1511497,
    253   #1513611, and probably others.
    254 
    255 - Bug #1441397: The compiler module now recognizes module and function
    256   docstrings correctly as it did in Python 2.4.
    257 
    258 - Bug #1529297:  The rewrite of doctest for Python 2.4 unintentionally
    259   lost that tests are sorted by name before being run.  This rarely
    260   matters for well-written tests, but can create baffling symptoms if
    261   side effects from one test to the next affect outcomes.  ``DocTestFinder``
    262   has been changed to sort the list of tests it returns.
    263 
    264 - The distutils version has been changed to 2.5.0, and is now kept
    265   in sync with sys.version_info[:3].
    266 
    267 - Bug #978833: Really close underlying socket in _socketobject.close.
    268 
    269 - Bug #1459963: urllib and urllib2 now normalize HTTP header names with
    270   title().
    271 
    272 - Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback
    273   to recursive calls and call it with the failing package name.
    274 
    275 - Bug #1525817: Don't truncate short lines in IDLE's tool tips.
    276 
    277 - Patch #1515343: Fix printing of deprecated string exceptions with a
    278   value in the traceback module.
    279 
    280 - Resync optparse with Optik 1.5.3: minor tweaks for/to tests.
    281 
    282 - Patch #1524429: Use repr() instead of backticks in Tkinter again.
    283 
    284 - Bug #1520914: Change time.strftime() to accept a zero for any position in its
    285   argument tuple.  For arguments where zero is illegal, the value is forced to
    286   the minimum value that is correct.  This is to support an undocumented but
    287   common way people used  to fill in inconsequential information in the time
    288   tuple pre-2.4.
    289 
    290 - Patch #1220874: Update the binhex module for Mach-O.
    291 
    292 - The email package has improved RFC 2231 support, specifically for
    293   recognizing the difference between encoded (name*0*=<blah>) and non-encoded
    294   (name*0=<blah>) parameter continuations.  This may change the types of
    295   values returned from email.message.Message.get_param() and friends.
    296   Specifically in some cases where non-encoded continuations were used,
    297   get_param() used to return a 3-tuple of (None, None, string) whereas now it
    298   will just return the string (since non-encoded continuations don't have
    299   charset and language parts).
    300 
    301   Also, whereas % values were decoded in all parameter continuations, they are
    302   now only decoded in encoded parameter parts.
    303 
    304 - Bug #1517990: IDLE keybindings on MacOS X now work correctly
    305 
    306 - Bug #1517996: IDLE now longer shows the default Tk menu when a
    307   path browser, class browser or debugger is the frontmost window on MacOS X
    308 
    309 - Patch #1520294: Support for getset and member descriptors in types.py,
    310   inspect.py, and pydoc.py.  Specifically, this allows for querying the type
    311   of an object against these built-in types and more importantly, for getting
    312   their docstrings printed in the interactive interpreter's help() function.
    313 
    314 
    315 Extension Modules
    316 -----------------
    317 
    318 - Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
    319   a socket operation on a socket with a timeout, the exception will be
    320   caught correctly.  Previously, the exception was not caught.
    321 
    322 - Patch #1529514: The _ctypes extension is now compiled on more
    323   openbsd target platforms.
    324 
    325 - The ``__reduce__()`` method of the new ``collections.defaultdict`` had
    326   a memory leak, affecting pickles and deep copies.
    327 
    328 - Bug #1471938: Fix curses module build problem on Solaris 8; patch by
    329   Paul Eggert.
    330 
    331 - Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry.
    332 
    333 - Patch #1521817: Index range checking on ctypes arrays containing
    334   exactly one element enabled again.  This allows iterating over these
    335   arrays, without the need to check the array size before.
    336 
    337 - Bug #1521375: When the code in ctypes.util.find_library was
    338   run with root privileges, it could overwrite or delete
    339   /dev/null in certain cases; this is now fixed.
    340 
    341 - Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the
    342   default mode for loading shared libraries in ctypes.
    343 
    344 - Because of a misspelled preprocessor symbol, ctypes was always
    345   compiled without thread support; this is now fixed.
    346 
    347 - pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename
    348   methods now allow their database parameter to be None as the
    349   sleepycat API allows.
    350 
    351 - Bug #1526460: Fix socketmodule compile on NetBSD as it has a different
    352   bluetooth API compared with Linux and FreeBSD.
    353 
    354 Tests
    355 -----
    356 
    357 - Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of
    358   how long the test file should take to play.  Now accepts taking 2.93 secs
    359   (exact time) +/- 10% instead of the hard-coded 3.1 sec.
    360 
    361 - Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``,
    362   ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when
    363   run via ``regrtest.py``. Now they do.
    364 
    365 Build
    366 -----
    367 
    368 - Bug #1439538: Drop usage of test -e in configure as it is not portable.
    369 
    370 Mac
    371 ---
    372 
    373 - PythonLauncher now works correctly when the path to the script contains
    374   characters that are treated specially by the shell (such as quotes).
    375 
    376 - Bug #1527397: PythonLauncher now launches scripts with the working directory
    377   set to the directory that contains the script instead of the user home
    378   directory. That latter was an implementation accident and not what users
    379   expect.
    380 
    381 
    382 What's New in Python 2.5 beta 2?
    383 ================================
    384 
    385 *Release date: 11-JUL-2006*
    386 
    387 Core and builtins
    388 -----------------
    389 
    390 - Bug #1441486: The literal representation of -(sys.maxint - 1)
    391   again evaluates to an int object, not a long.
    392 
    393 - Bug #1501934: The scope of global variables that are locally assigned
    394   using augmented assignment is now correctly determined.
    395 
    396 - Bug #927248: Recursive method-wrapper objects can now safely
    397   be released.
    398 
    399 - Bug #1417699: Reject locale-specific decimal point in float()
    400   and atof().
    401 
    402 - Bug #1511381: codec_getstreamcodec() in codec.c is corrected to
    403   omit a default "error" argument for NULL pointer.  This allows
    404   the parser to take a codec from cjkcodecs again.
    405 
    406 - Bug #1519018: 'as' is now validated properly in import statements.
    407 
    408 - On 64 bit systems, int literals that use less than 64 bits are
    409   now ints rather than longs.
    410 
    411 - Bug #1512814, Fix incorrect lineno's when code at module scope
    412   started after line 256.
    413 
    414 - New function ``sys._current_frames()`` returns a dict mapping thread
    415   id to topmost thread stack frame.  This is for expert use, and is
    416   especially useful for debugging application deadlocks.  The functionality
    417   was previously available in Fazal Majid's ``threadframe`` extension
    418   module, but it wasn't possible to do this in a wholly threadsafe way from
    419   an extension.
    420 
    421 Library
    422 -------
    423 
    424 - Bug #1257728: Mention Cygwin in distutils error message about a missing
    425   VS 2003.
    426 
    427 - Patch #1519566: Update turtle demo, make begin_fill idempotent.
    428 
    429 - Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK
    430   environment variable to be set in order to the SDK environment
    431   for finding the compiler, include files, etc.
    432 
    433 - Bug #1515998: Properly generate logical ids for files in bdist_msi.
    434 
    435 - warnings.py now ignores ImportWarning by default
    436 
    437 - string.Template() now correctly handles tuple-values. Previously,
    438   multi-value tuples would raise an exception and single-value tuples would
    439   be treated as the value they contain, instead.
    440 
    441 - Bug #822974: Honor timeout in telnetlib.{expect,read_until}
    442   even if some data are received.
    443 
    444 - Bug #1267547: Put proper recursive setup.py call into the
    445   spec file generated by bdist_rpm.
    446 
    447 - Bug #1514693: Update turtle's heading when switching between
    448   degrees and radians.
    449 
    450 - Reimplement turtle.circle using a polyline, to allow correct
    451   filling of arcs.
    452 
    453 - Bug #1514703: Only setup canvas window in turtle when the canvas
    454   is created.
    455 
    456 - Bug #1513223: .close() of a _socketobj now releases the underlying
    457   socket again, which then gets closed as it becomes unreferenced.
    458 
    459 - Bug #1504333: Make sgmllib support angle brackets in quoted
    460   attribute values.
    461 
    462 - Bug #853506: Fix IPv6 address parsing in unquoted attributes in
    463   sgmllib ('[' and ']' were not accepted).
    464 
    465 - Fix a bug in the turtle module's end_fill function.
    466 
    467 - Bug #1510580: The 'warnings' module improperly required that a Warning
    468   category be either a types.ClassType and a subclass of Warning.  The proper
    469   check is just that it is a subclass with Warning as the documentation states.
    470 
    471 - The compiler module now correctly compiles the new try-except-finally
    472   statement (bug #1509132).
    473 
    474 - The wsgiref package is now installed properly on Unix.
    475 
    476 - A bug was fixed in logging.config.fileConfig() which caused a crash on
    477   shutdown when fileConfig() was called multiple times.
    478 
    479 - The sqlite3 module did cut off data from the SQLite database at the first
    480   null character before sending it to a custom converter. This has been fixed
    481   now.
    482 
    483 Extension Modules
    484 -----------------
    485 
    486 - #1494314: Fix a regression with high-numbered sockets in 2.4.3. This
    487   means that select() on sockets > FD_SETSIZE (typically 1024) work again.
    488   The patch makes sockets use poll() internally where available.
    489 
    490 - Assigning None to pointer type fields in ctypes structures possible
    491   overwrote the wrong fields, this is fixed now.
    492 
    493 - Fixed a segfault in _ctypes when ctypes.wintypes were imported
    494   on non-Windows platforms.
    495 
    496 - Bug #1518190: The ctypes.c_void_p constructor now accepts any
    497   integer or long, without range checking.
    498 
    499 - Patch #1517790: It is now possible to use custom objects in the ctypes
    500   foreign function argtypes sequence as long as they provide a from_param
    501   method, no longer is it required that the object is a ctypes type.
    502 
    503 - The '_ctypes' extension module now works when Python is configured
    504   with the --without-threads option.
    505 
    506 - Bug #1513646: os.access on Windows now correctly determines write
    507   access, again.
    508 
    509 - Bug #1512695: cPickle.loads could crash if it was interrupted with
    510   a KeyboardInterrupt.
    511 
    512 - Bug #1296433: parsing XML with a non-default encoding and
    513   a CharacterDataHandler could crash the interpreter in pyexpat.
    514 
    515 - Patch #1516912: improve Modules support for OpenVMS.
    516 
    517 Build
    518 -----
    519 
    520 - Automate Windows build process for the Win64 SSL module.
    521 
    522 - 'configure' now detects the zlib library the same way as distutils.
    523   Previously, the slight difference could cause compilation errors of the
    524   'zlib' module on systems with more than one version of zlib.
    525 
    526 - The MSI compileall step was fixed to also support a TARGETDIR
    527   with spaces in it.
    528 
    529 - Bug #1517388: sqlite3.dll is now installed on Windows independent
    530   of Tcl/Tk.
    531 
    532 - Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old
    533   trying to be installed even though it's empty.
    534 
    535 Tests
    536 -----
    537 
    538 - Call os.waitpid() at the end of tests that spawn child processes in order
    539   to minimize resources (zombies).
    540 
    541 Documentation
    542 -------------
    543 
    544 - Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the
    545   documentation for the warnings module.
    546 
    547 - Patch #1509163: MS Toolkit Compiler no longer available.
    548 
    549 - Patch #1504046: Add documentation for xml.etree.
    550 
    551 
    552 What's New in Python 2.5 beta 1?
    553 ================================
    554 
    555 *Release date: 20-JUN-2006*
    556 
    557 Core and builtins
    558 -----------------
    559 
    560 - Patch #1507676: Error messages returned by invalid abstract object operations
    561   (such as iterating over an integer) have been improved and now include the
    562   type of the offending object to help with debugging.
    563 
    564 - Bug #992017: A classic class that defined a __coerce__() method that returned
    565   its arguments swapped would infinitely recurse and segfault the interpreter.
    566 
    567 - Fix the socket tests so they can be run concurrently.
    568 
    569 - Removed 5 integers from C frame objects (PyFrameObject).
    570   f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted.
    571 
    572 - Bug #532646: object.__call__() will continue looking for the __call__
    573   attribute on objects until one without one is found.  This leads to recursion
    574   when you take a class and set its __call__ attribute to an instance of the
    575   class.  Originally fixed for classic classes, but this fix is for new-style.
    576   Removes the infinite_rec_3 crasher.
    577 
    578 - The string and unicode methods startswith() and endswith() now accept
    579   a tuple of prefixes/suffixes to look for. Implements RFE #1491485.
    580 
    581 - Buffer objects, at the C level, never used the char buffer
    582   implementation even when the char buffer for the wrapped object was
    583   explicitly requested (originally returned the read or write buffer).
    584   Now a TypeError is raised if the char buffer is not present but is
    585   requested.
    586 
    587 - Patch #1346214: Statements like "if 0: suite" are now again optimized
    588   away like they were in Python 2.4.
    589 
    590 - Builtin exceptions are now full-blown new-style classes instead of
    591   instances pretending to be classes, which speeds up exception handling
    592   by about 80% in comparison to 2.5a2.
    593 
    594 - Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to
    595   Unicode 4.1.
    596 
    597 - Patch #921466: sys.path_importer_cache is now used to cache valid and
    598   invalid file paths for the built-in import machinery which leads to
    599   fewer open calls on startup.
    600 
    601 - Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power-
    602   of-2 bases.  The largest speedup is for inputs with about 1000 decimal
    603   digits.  Conversion from non-power-of-2 bases remains quadratic-time in
    604   the number of input digits (it was and remains linear-time for bases
    605   2, 4, 8, 16 and 32).
    606 
    607 - Bug #1334662: ``int(string, base)`` could deliver a wrong answer
    608   when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented
    609   an integer close to ``sys.maxint``.  This was repaired by patch
    610   #1335972, which also gives a nice speedup.
    611 
    612 - Patch #1337051: reduced size of frame objects.
    613 
    614 - PyErr_NewException now accepts a tuple of base classes as its
    615   "base" parameter.
    616 
    617 - Patch #876206: function call speedup by retaining allocated frame
    618   objects.
    619 
    620 - Bug #1462152: file() now checks more thoroughly for invalid mode
    621   strings and removes a possible "U" before passing the mode to the
    622   C library function.
    623 
    624 - Patch #1488312, Fix memory alignment problem on SPARC in unicode
    625 
    626 - Bug #1487966: Fix SystemError with conditional expression in assignment
    627 
    628 - WindowsError now has two error code attributes: errno, which carries
    629   the error values from errno.h, and winerror, which carries the error
    630   values from winerror.h. Previous versions put the winerror.h values
    631   (from GetLastError()) into the errno attribute.
    632 
    633 - Patch #1475845: Raise IndentationError for unexpected indent.
    634 
    635 - Patch #1479181: split open() and file() from being aliases for each other.
    636 
    637 - Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()``
    638   methods were always silently ignored by dictionaries when comparing keys.
    639   They are now passed through (except when using the C API function
    640   ``PyDict_GetItem()``, whose semantics did not change).
    641 
    642 - Bug #1456209: In some obscure cases it was possible for a class with a
    643   custom ``__eq__()`` method to confuse dict internals when class instances
    644   were used as a dict's keys and the ``__eq__()`` method mutated the dict.
    645   No, you don't have any code that did this ;-)
    646 
    647 Extension Modules
    648 -----------------
    649 
    650 - Bug #1295808: expat symbols should be namespaced in pyexpat
    651 
    652 - Patch #1462338: Upgrade pyexpat to expat 2.0.0
    653 
    654 - Change binascii.hexlify to accept a read-only buffer instead of only a char
    655   buffer and actually follow its documentation.
    656 
    657 - Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder.
    658 
    659 - Patch #1478788 (modified version): The functional extension module has
    660   been renamed to _functools and a functools Python wrapper module added.
    661   This provides a home for additional function related utilities that are
    662   not specifically about functional programming. See PEP 309.
    663 
    664 - Patch #1493701: performance enhancements for struct module.
    665 
    666 - Patch #1490224: time.altzone is now set correctly on Cygwin.
    667 
    668 - Patch #1435422: zlib's compress and decompress objects now have a
    669   copy() method.
    670 
    671 - Patch #1454481: thread stack size is now tunable at runtime for thread
    672   enabled builds on Windows and systems with Posix threads support.
    673 
    674 - On Win32, os.listdir now supports arbitrarily-long Unicode path names
    675   (up to the system limit of 32K characters).
    676 
    677 - Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}.
    678   As a result, these functions now raise WindowsError instead of OSError.
    679 
    680 - ``time.clock()`` on Win64 should use the high-performance Windows
    681   ``QueryPerformanceCounter()`` now (as was already the case on 32-bit
    682   Windows platforms).
    683 
    684 - Calling Tk_Init twice is refused if the first call failed as that
    685   may deadlock.
    686 
    687 - bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to
    688   accept it without potentially using an uninitialized pointer.
    689 
    690 - bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods
    691   assuming BerkeleyDB >= 4.0 and 4.4 respectively.  [pybsddb project SF
    692   patch numbers 1494885 and 1494902]
    693 
    694 - bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class.
    695   [pybsddb project SF patch number 1466734]
    696 
    697 - bsddb: fix DBCursor.pget() bug with keyword argument names when no data
    698   parameter is supplied.  [SF pybsddb bug #1477863]
    699 
    700 - bsddb: the __len__ method of a DB object has been fixed to return correct
    701   results.  It could previously incorrectly return 0 in some cases.
    702   Fixes SF bug 1493322 (pybsddb bug 1184012).
    703 
    704 - bsddb: the bsddb.dbtables Modify method now raises the proper error and
    705   aborts the db transaction safely when a modifier callback fails.
    706   Fixes SF python patch/bug #1408584.
    707 
    708 - bsddb: multithreaded DB access using the simple bsddb module interface
    709   now works reliably.  It has been updated to use automatic BerkeleyDB
    710   deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry
    711   database calls that would previously deadlock. [SF python bug #775414]
    712 
    713 - Patch #1446489: add support for the ZIP64 extensions to zipfile.
    714 
    715 - Patch #1506645: add Python wrappers for the curses functions
    716   is_term_resized, resize_term and resizeterm.
    717 
    718 Library
    719 -------
    720 
    721 - Patch #815924: Restore ability to pass type= and icon= in tkMessageBox
    722   functions.
    723 
    724 - Patch #812986: Update turtle output even if not tracing.
    725 
    726 - Patch #1494750: Destroy master after deleting children in
    727   Tkinter.BaseWidget.
    728 
    729 - Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap.
    730 
    731 - Patch #763580: Add name and value arguments to Tkinter variable
    732   classes.
    733 
    734 - Bug #1117556: SimpleHTTPServer now tries to find and use the system's
    735   mime.types file for determining MIME types.
    736 
    737 - Bug #1339007: Shelf objects now don't raise an exception in their
    738   __del__ method when initialization failed.
    739 
    740 - Patch #1455898: The MBCS codec now supports the incremental mode for
    741   double-byte encodings.
    742 
    743 - ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to
    744   guarantee that adjacent triples in the return list always describe
    745   non-adjacent blocks.  Previously, a pair of matching blocks could end
    746   up being described by multiple adjacent triples that formed a partition
    747   of the matching pair.
    748 
    749 - Bug #1498146: fix optparse to handle Unicode strings in option help,
    750   description, and epilog.
    751 
    752 - Bug #1366250: minor optparse documentation error.
    753 
    754 - Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately;
    755   clarify docs.
    756 
    757 - The wsgiref package has been added to the standard library.
    758 
    759 - The functions update_wrapper() and wraps() have been added to the functools
    760   module. These make it easier to copy relevant metadata from the original
    761   function when writing wrapper functions.
    762 
    763 - The optional ``isprivate`` argument to ``doctest.testmod()``, and the
    764   ``doctest.is_private()`` function, both deprecated in 2.4, were removed.
    765 
    766 - Patch #1359618: Speed up charmap encoder by using a trie structure
    767   for lookup.
    768 
    769 - The functions in the ``pprint`` module now sort dictionaries by key
    770   before computing the display.  Before 2.5, ``pprint`` sorted a dictionary
    771   if and only if its display required more than one line, although that
    772   wasn't documented.  The new behavior increases predictability; e.g.,
    773   using ``pprint.pprint(a_dict)`` in a doctest is now reliable.
    774 
    775 - Patch #1497027: try HTTP digest auth before basic auth in urllib2
    776   (thanks for J. J. Lee).
    777 
    778 - Patch #1496206: improve urllib2 handling of passwords with respect to
    779   default HTTP and HTTPS ports.
    780 
    781 - Patch #1080727: add "encoding" parameter to doctest.DocFileSuite.
    782 
    783 - Patch #1281707: speed up gzip.readline.
    784 
    785 - Patch #1180296: Two new functions were added to the locale module:
    786   format_string() to get the effect of  "format % items" but locale-aware,
    787   and currency() to format a monetary number with currency sign.
    788 
    789 - Patch #1486962: Several bugs in the turtle Tk demo module were fixed
    790   and several features added, such as speed and geometry control.
    791 
    792 - Patch #1488881: add support for external file objects in bz2 compressed
    793   tarfiles.
    794 
    795 - Patch #721464: pdb.Pdb instances can now be given explicit stdin and
    796   stdout arguments, making it possible to redirect input and output
    797   for remote debugging.
    798 
    799 - Patch #1484695: Update the tarfile module to version 0.8. This fixes
    800   a couple of issues, notably handling of long file names using the
    801   GNU LONGNAME extension.
    802 
    803 - Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a
    804   new flag when ``name`` is already the name of an option flag.
    805 
    806 - Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler
    807   package.
    808 
    809 - Patch #1472854: make the rlcompleter.Completer class usable on non-
    810   UNIX platforms.
    811 
    812 - Patch #1470846: fix urllib2 ProxyBasicAuthHandler.
    813 
    814 - Bug #1472827: correctly escape newlines and tabs in attribute values in
    815   the saxutils.XMLGenerator class.
    816 
    817 
    818 Build
    819 -----
    820 
    821 - Bug #1502728: Correctly link against librt library on HP-UX.
    822 
    823 - OpenBSD 3.9 is supported now.
    824 
    825 - Patch #1492356: Port to Windows CE.
    826 
    827 - Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64.
    828 
    829 - Patch #1471883: Add --enable-universalsdk.
    830 
    831 C API
    832 -----
    833 
    834 Tests
    835 -----
    836 
    837 Tools
    838 -----
    839 
    840 Documentation
    841 -------------
    842 
    843 
    844 
    845 What's New in Python 2.5 alpha 2?
    846 =================================
    847 
    848 *Release date: 27-APR-2006*
    849 
    850 Core and builtins
    851 -----------------
    852 
    853 - Bug #1465834: 'bdist_wininst preinstall script support' was fixed
    854   by converting these apis from macros into exported functions again:
    855 
    856     PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile
    857     PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx
    858     PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne
    859     PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString
    860     PyRun_String Py_CompileString
    861 
    862 - Under COUNT_ALLOCS, types are not necessarily immortal anymore.
    863 
    864 - All uses of PyStructSequence_InitType have been changed to initialize
    865   the type objects only once, even if the interpreter is initialized
    866   multiple times.
    867 
    868 - Bug #1454485, array.array('u') could crash the interpreter.  This was
    869   due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings)
    870   to unicode when it didn't make sense.  'u#' now requires a unicode string.
    871 
    872 - Py_UNICODE is unsigned.  It was always documented as unsigned, but
    873   due to a bug had a signed value in previous versions.
    874 
    875 - Patch #837242: ``id()`` of any Python object always gives a positive
    876   number now, which might be a long integer. ``PyLong_FromVoidPtr`` and
    877   ``PyLong_AsVoidPtr`` have been changed accordingly.  Note that it has
    878   never been correct to implement a ``__hash()__`` method that returns the
    879   ``id()`` of an object:
    880 
    881       def __hash__(self):
    882           return id(self)  # WRONG
    883 
    884   because a hash result must be a (short) Python int but it was always
    885   possible for ``id()`` to return a Python long.  However, because ``id()``
    886   could return negative values before, on a 32-bit box an ``id()`` result
    887   was always usable as a hash value before this patch.  That's no longer
    888   necessarily so.
    889 
    890 - Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c)
    891   to load extension modules and now provides the dl module. As a result,
    892   sys.setdlopenflags() now works correctly on these systems. (SF patch
    893   #1454844)
    894 
    895 - Patch #1463867: enhanced garbage collection to allow cleanup of cycles
    896   involving generators that have paused outside of any ``try`` or ``with``
    897   blocks.  (In 2.5a1, a paused generator that was part of a reference
    898   cycle could not be garbage collected, regardless of whether it was
    899   paused in a ``try`` or ``with`` block.)
    900 
    901 Extension Modules
    902 -----------------
    903 
    904 - Patch #1191065: Fix preprocessor problems on systems where recvfrom
    905   is a macro.
    906 
    907 - Bug #1467952: os.listdir() now correctly raises an error if readdir()
    908   fails with an error condition.
    909 
    910 - Fixed bsddb.db.DBError derived exceptions so they can be unpickled.
    911 
    912 - Bug #1117761: bsddb.*open() no longer raises an exception when using
    913   the cachesize parameter.
    914 
    915 - Bug #1149413: bsddb.*open() no longer raises an exception when using
    916   a temporary db (file=None) with the 'n' flag to truncate on open.
    917 
    918 - Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3
    919   as older versions cause excessive test failures.
    920 
    921 - Patch #1062014: AF_UNIX sockets under Linux have a special
    922   abstract namespace that is now fully supported.
    923 
    924 Library
    925 -------
    926 
    927 - Bug #1223937: subprocess.CalledProcessError reports the exit status
    928   of the process using the returncode attribute, instead of
    929   abusing errno.
    930 
    931 - Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes
    932   a doctest to be skipped (the code is not run, and the expected output
    933   or exception is ignored).
    934 
    935 - Fixed contextlib.nested to cope with exceptions being raised and
    936   caught inside exit handlers.
    937 
    938 - Updated optparse module to Optik 1.5.1 (allow numeric constants in
    939   hex, octal, or binary; add ``append_const`` action; keep going if
    940   gettext cannot be imported; added ``OptionParser.destroy()`` method;
    941   added ``epilog`` for better help generation).
    942 
    943 - Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when
    944   called from a thread spawned as a side effect of importing a module.
    945 
    946 - The pydoc module now supports documenting packages contained in
    947   .zip or .egg files.
    948 
    949 - The pkgutil module now has several new utility functions, such
    950   as ``walk_packages()`` to support working with packages that are either
    951   in the filesystem or zip files.
    952 
    953 - The mailbox module can now modify and delete messages from
    954   mailboxes, in addition to simply reading them.  Thanks to Gregory
    955   K. Johnson for writing the code, and to the 2005 Google Summer of
    956   Code for funding his work.
    957 
    958 - The ``__del__`` method of class ``local`` in module ``_threading_local``
    959   returned before accomplishing any of its intended cleanup.
    960 
    961 - Patch #790710: Add breakpoint command lists in pdb.
    962 
    963 - Patch #1063914: Add Tkinter.Misc.clipboard_get().
    964 
    965 - Patch #1191700: Adjust column alignment in bdb breakpoint lists.
    966 
    967 - SimpleXMLRPCServer relied on the fcntl module, which is unavailable on
    968   Windows. Bug #1469163.
    969 
    970 - The warnings, linecache, inspect, traceback, site, and doctest modules
    971   were updated to work correctly with modules imported from zipfiles or
    972   via other PEP 302 __loader__ objects.
    973 
    974 - Patch #1467770: Reduce usage of subprocess._active to processes which
    975   the application hasn't waited on.
    976 
    977 - Patch #1462222: Fix Tix.Grid.
    978 
    979 - Fix exception when doing glob.glob('anything*/')
    980 
    981 - The pstats.Stats class accepts an optional stream keyword argument to
    982   direct output to an alternate file-like object.
    983 
    984 Build
    985 -----
    986 
    987 - The Makefile now has a reindent target, which runs reindent.py on
    988   the library.
    989 
    990 - Patch #1470875: Building Python with MS Free Compiler
    991 
    992 - Patch #1161914: Add a python-config script.
    993 
    994 - Patch #1324762:Remove ccpython.cc; replace --with-cxx with
    995   --with-cxx-main. Link with C++ compiler only if --with-cxx-main was
    996   specified. (Can be overridden by explicitly setting LINKCC.) Decouple
    997   CXX from --with-cxx-main, see description in README.
    998 
    999 - Patch #1429775: Link extension modules with the shared libpython.
   1000 
   1001 - Fixed a libffi build problem on MIPS systems.
   1002 
   1003 - ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV``
   1004   now accept formats "%u" for unsigned ints, "%lu" for unsigned longs,
   1005   and "%zu" for unsigned integers of type ``size_t``.
   1006 
   1007 Tests
   1008 -----
   1009 
   1010 - test_contextlib now checks contextlib.nested can cope with exceptions
   1011   being raised and caught inside exit handlers.
   1012 
   1013 - test_cmd_line now checks operation of the -m and -c command switches
   1014 
   1015 - The test_contextlib test in 2.5a1 wasn't actually run unless you ran
   1016   it separately and by hand.  It also wasn't cleaning up its changes to
   1017   the current Decimal context.
   1018 
   1019 - regrtest.py now has a -M option to run tests that test the new limits of
   1020   containers, on 64-bit architectures. Running these tests is only sensible
   1021   on 64-bit machines with more than two gigabytes of memory. The argument
   1022   passed is the maximum amount of memory for the tests to use.
   1023 
   1024 Tools
   1025 -----
   1026 
   1027 - Added the Python benchmark suite pybench to the Tools/ directory;
   1028   contributed by Marc-Andre Lemburg.
   1029 
   1030 Documentation
   1031 -------------
   1032 
   1033 - Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``.
   1034 
   1035 - PEP 343: Added Context Types section to the library reference
   1036   and attempted to bring other PEP 343 related documentation into
   1037   line with the implementation and/or python-dev discussions.
   1038 
   1039 - Bug #1337990: clarified that ``doctest`` does not support examples
   1040   requiring both expected output and an exception.
   1041 
   1042 
   1043 What's New in Python 2.5 alpha 1?
   1044 =================================
   1045 
   1046 *Release date: 05-APR-2006*
   1047 
   1048 Core and builtins
   1049 -----------------
   1050 
   1051 - PEP 338: -m command line switch now delegates to runpy.run_module
   1052   allowing it to support modules in packages and zipfiles
   1053 
   1054 - On Windows, .DLL is not an accepted file name extension for
   1055   extension modules anymore; extensions are only found if they
   1056   end in .PYD.
   1057 
   1058 - Bug #1421664: sys.stderr.encoding is now set to the same value as
   1059   sys.stdout.encoding.
   1060 
   1061 - __import__ accepts keyword arguments.
   1062 
   1063 - Patch #1460496: round() now accepts keyword arguments.
   1064 
   1065 - Fixed bug #1459029 - unicode reprs were double-escaped.
   1066 
   1067 - Patch #1396919: The system scope threads are reenabled on FreeBSD
   1068   5.4 and later versions.
   1069 
   1070 - Bug #1115379: Compiling a Unicode string with an encoding declaration
   1071   now gives a SyntaxError.
   1072 
   1073 - Previously, Python code had no easy way to access the contents of a
   1074   cell object. Now, a ``cell_contents`` attribute has been added
   1075   (closes patch #1170323).
   1076 
   1077 - Patch #1123430: Python's small-object allocator now returns an arena to
   1078   the system ``free()`` when all memory within an arena becomes unused
   1079   again.  Prior to Python 2.5, arenas (256KB chunks of memory) were never
   1080   freed.  Some applications will see a drop in virtual memory size now,
   1081   especially long-running applications that, from time to time, temporarily
   1082   use a large number of small objects.  Note that when Python returns an
   1083   arena to the platform C's ``free()``, there's no guarantee that the
   1084   platform C library will in turn return that memory to the operating system.
   1085   The effect of the patch is to stop making that impossible, and in tests it
   1086   appears to be effective at least on Microsoft C and gcc-based systems.
   1087   Thanks to Evan Jones for hard work and patience.
   1088 
   1089 - Patch #1434038: property() now uses the getter's docstring if there is
   1090   no "doc" argument given. This makes it possible to legitimately use
   1091   property() as a decorator to produce a read-only property.
   1092 
   1093 - PEP 357, patch 1436368: add an __index__ method to int/long and a matching
   1094   nb_index slot to the PyNumberMethods struct.  The slot is consulted instead
   1095   of requiring an int or long in slicing and a few other contexts, enabling
   1096   other objects (e.g. Numeric Python's integers) to be used as slice indices.
   1097 
   1098 - Fixed various bugs reported by Coverity's Prevent tool.
   1099 
   1100 - PEP 352, patch #1104669: Make exceptions new-style objects.  Introduced the
   1101   new exception base class, BaseException, which has a new message attribute.
   1102   KeyboardInterrupt and SystemExit to directly inherit from BaseException now.
   1103   Raising a string exception now raises a DeprecationWarning.
   1104 
   1105 - Patch #1438387, PEP 328: relative and absolute imports. Imports can now be
   1106   explicitly relative, using 'from .module import name' to mean 'from the same
   1107   package as this module is in. Imports without dots still default to the
   1108   old relative-then-absolute, unless 'from __future__ import
   1109   absolute_import' is used.
   1110 
   1111 - Properly check if 'warnings' raises an exception (usually when a filter set
   1112   to "error" is triggered) when raising a warning for raising string
   1113   exceptions.
   1114 
   1115 - CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default.
   1116   The name was removed from Include/code.h.
   1117 
   1118 - PEP 308: conditional expressions were added: (x if cond else y).
   1119 
   1120 - Patch 1433928:
   1121   - The copy module now "copies" function objects (as atomic objects).
   1122   - dict.__getitem__ now looks for a __missing__ hook before raising
   1123     KeyError.
   1124 
   1125 - PEP 343: with statement implemented. Needs ``from __future__ import
   1126   with_statement``. Use of 'with' as a variable will generate a warning.
   1127   Use of 'as' as a variable will also generate a warning (unless it's
   1128   part of an import statement).
   1129   The following objects have __context__ methods:
   1130   - The built-in file type.
   1131   - The thread.LockType type.
   1132   - The following types defined by the threading module:
   1133     Lock, RLock, Condition, Semaphore, BoundedSemaphore.
   1134   - The decimal.Context class.
   1135 
   1136 - Fix the encodings package codec search function to only search
   1137   inside its own package. Fixes problem reported in patch #1433198.
   1138 
   1139   Note: Codec packages should implement and register their own
   1140   codec search function. PEP 100 has the details.
   1141 
   1142 - PEP 353: Using ``Py_ssize_t`` as the index type.
   1143 
   1144 - ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging
   1145   info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353)
   1146   now allow Python to make use of memory blocks exceeding 2**32 bytes for
   1147   some purposes on 64-bit boxes.  A ``PYMALLOC_DEBUG`` build was limited
   1148   to 4-byte allocations before.
   1149 
   1150 - Patch #1400181, fix unicode string formatting to not use the locale.
   1151   This is how string objects work.  u'%f' could use , instead of .
   1152   for the decimal point.  Now both strings and unicode always use periods.
   1153 
   1154 - Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8.
   1155   configure would break checking curses.h.
   1156 
   1157 - Bug #959576: The pwd module is now built in. This allows Python to be
   1158   built on UNIX platforms without $HOME set.
   1159 
   1160 - Bug #1072182, fix some potential problems if characters are signed.
   1161 
   1162 - Bug #889500, fix line number on SyntaxWarning for global declarations.
   1163 
   1164 - Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
   1165 
   1166 - Support for converting hex strings to floats no longer works.
   1167   This was not portable.  float('0x3') now raises a ValueError.
   1168 
   1169 - Patch #1382163: Expose Subversion revision number to Python.  New C API
   1170   function Py_GetBuildNumber().  New attribute sys.subversion.  Build number
   1171   is now displayed in interactive prompt banner.
   1172 
   1173 - Implementation of PEP 341 - Unification of try/except and try/finally.
   1174   "except" clauses can now be written together with a "finally" clause in
   1175   one try statement instead of two nested ones.  Patch #1355913.
   1176 
   1177 - Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec
   1178   now encodes backslash correctly.
   1179 
   1180 - Patch #1350409: Work around signal handling bug in Visual Studio 2005.
   1181 
   1182 - Bug #1281408: Py_BuildValue now works correctly even with unsigned longs
   1183   and long longs.
   1184 
   1185 - SF Bug #1350188, "setdlopenflags" leads to crash upon "import"
   1186   It was possible for dlerror() to return a NULL pointer, so
   1187   it will now use a default error message in this case.
   1188 
   1189 - Replaced most Unicode charmap codecs with new ones using the
   1190   new Unicode translate string feature in the built-in charmap
   1191   codec; the codecs were created from the mapping tables available
   1192   at ftp.unicode.org and contain a few updates (e.g. the Mac OS
   1193   encodings now include a mapping for the Apple logo)
   1194 
   1195 - Added a few more codecs for Mac OS encodings
   1196 
   1197 - Sped up some Unicode operations.
   1198 
   1199 - A new AST parser implementation was completed. The abstract
   1200   syntax tree is available for read-only (non-compile) access
   1201   to Python code; an _ast module was added.
   1202 
   1203 - SF bug #1167751: fix incorrect code being produced for generator expressions.
   1204   The following code now raises a SyntaxError:  foo(a = i for i in range(10))
   1205 
   1206 - SF Bug #976608: fix SystemError when mtime of an imported file is -1.
   1207 
   1208 - SF Bug #887946: fix segfault when redirecting stdin from a directory.
   1209   Provide a warning when a directory is passed on the command line.
   1210 
   1211 - Fix segfault with invalid coding.
   1212 
   1213 - SF bug #772896: unknown encoding results in MemoryError.
   1214 
   1215 - All iterators now have a Boolean value of True.  Formerly, some iterators
   1216   supported a __len__() method which evaluated to False when the iterator
   1217   was empty.
   1218 
   1219 - On 64-bit platforms, when __len__() returns a value that cannot be
   1220   represented as a C int, raise OverflowError.
   1221 
   1222 - test__locale is skipped on OS X < 10.4 (only partial locale support is
   1223   present).
   1224 
   1225 - SF bug #893549: parsing keyword arguments was broken with a few format
   1226   codes.
   1227 
   1228 - Changes donated by Elemental Security to make it work on AIX 5.3
   1229   with IBM's 64-bit compiler (SF patch #1284289).  This also closes SF
   1230   bug #105470: test_pwd fails on 64bit system (Opteron).
   1231 
   1232 - Changes donated by Elemental Security to make it work on HP-UX 11 on
   1233   Itanium2 with HP's 64-bit compiler (SF patch #1225212).
   1234 
   1235 - Disallow keyword arguments for type constructors that don't use them
   1236   (fixes bug #1119418).
   1237 
   1238 - Forward UnicodeDecodeError into SyntaxError for source encoding errors.
   1239 
   1240 - SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for
   1241   exceptions that cause a function to exit.
   1242 
   1243 - The implementation of set() and frozenset() was revised to use its
   1244   own internal data structure.  Memory consumption is reduced by 1/3
   1245   and there are modest speed-ups as well.  The API is unchanged.
   1246 
   1247 - SF bug #1238681:  freed pointer is used in longobject.c:long_pow().
   1248 
   1249 - SF bug #1229429: PyObject_CallMethod failed to decrement some
   1250   reference counts in some error exit cases.
   1251 
   1252 - SF bug #1185883:  Python's small-object memory allocator took over
   1253   a block managed by the platform C library whenever a realloc specified
   1254   a small new size.  However, there's no portable way to know then how
   1255   much of the address space following the pointer is valid, so there's no
   1256   portable way to copy data from the C-managed block into Python's
   1257   small-object space without risking a memory fault.  Python's small-object
   1258   realloc now leaves such blocks under the control of the platform C
   1259   realloc.
   1260 
   1261 - SF bug #1232517: An overflow error was not detected properly when
   1262   attempting to convert a large float to an int in os.utime().
   1263 
   1264 - SF bug #1224347: hex longs now print with lowercase letters just
   1265   like their int counterparts.
   1266 
   1267 - SF bug #1163563: the original fix for bug #1010677 ("thread Module
   1268   Breaks PyGILState_Ensure()") broke badly in the case of multiple
   1269   interpreter states; back out that fix and do a better job (see
   1270   http://mail.python.org/pipermail/python-dev/2005-June/054258.html
   1271   for a longer write-up of the problem).
   1272 
   1273 - SF patch #1180995: marshal now uses a binary format by default when
   1274   serializing floats.
   1275 
   1276 - SF patch #1181301: on platforms that appear to use IEEE 754 floats,
   1277   the routines that promise to produce IEEE 754 binary representations
   1278   of floats now simply copy bytes around.
   1279 
   1280 - bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP
   1281   278.
   1282 
   1283 - patch #1109424: int, long, float, complex, and unicode now check for the
   1284   proper magic slot for type conversions when subclassed.  Previously the
   1285   magic slot was ignored during conversion.  Semantics now match the way
   1286   subclasses of str always behaved.  int/long/float, conversion of an instance
   1287   to the base class has been moved to the proper nb_* magic slot and out of
   1288   PyNumber_*().
   1289   Thanks Walter Drwald.
   1290 
   1291 - Descriptors defined in C with a PyGetSetDef structure, where the setter is
   1292   NULL, now raise an AttributeError when attempting to set or delete the
   1293   attribute.  Previously a TypeError was raised, but this was inconsistent
   1294   with the equivalent pure-Python implementation.
   1295 
   1296 - It is now safe to call PyGILState_Release() before
   1297   PyEval_InitThreads() (note that if there is reason to believe there
   1298   are multiple threads around you still must call PyEval_InitThreads()
   1299   before using the Python API; this fix is for extension modules that
   1300   have no way of knowing if Python is multi-threaded yet).
   1301 
   1302 - Typing Ctrl-C whilst raw_input() was waiting in a build with threads
   1303   disabled caused a crash.
   1304 
   1305 - Bug #1165306: instancemethod_new allowed the creation of a method
   1306   with im_class == im_self == NULL, which caused a crash when called.
   1307 
   1308 - Move exception finalisation later in the shutdown process - this
   1309   fixes the crash seen in bug #1165761
   1310 
   1311 - Added two new builtins, any() and all().
   1312 
   1313 - Defining a class with empty parentheses is now allowed
   1314   (e.g., ``class C(): pass`` is no longer a syntax error).
   1315   Patch #1176012 added support to the 'parser' module and 'compiler' package
   1316   (thanks to logistix for that added support).
   1317 
   1318 - Patch #1115086: Support PY_LONGLONG in structmember.
   1319 
   1320 - Bug #1155938: new style classes did not check that __init__() was
   1321   returning None.
   1322 
   1323 - Patch #802188: Report characters after line continuation character
   1324   ('\') with a specific error message.
   1325 
   1326 - Bug #723201: Raise a TypeError for passing bad objects to 'L' format.
   1327 
   1328 - Bug #1124295: the __name__ attribute of file objects was
   1329   inadvertently made inaccessible in restricted mode.
   1330 
   1331 - Bug #1074011: closing sys.std{out,err} now causes a flush() and
   1332   an ferror() call.
   1333 
   1334 - min() and max() now support key= arguments with the same meaning as in
   1335   list.sort().
   1336 
   1337 - The peephole optimizer now performs simple constant folding in expressions:
   1338       (2+3) --> (5).
   1339 
   1340 - set and frozenset objects can now be marshalled.  SF #1098985.
   1341 
   1342 - Bug #1077106: Poor argument checking could cause memory corruption
   1343   in calls to os.read().
   1344 
   1345 - The parser did not complain about future statements in illegal
   1346   positions.  It once again reports a syntax error if a future
   1347   statement occurs after anything other than a doc string.
   1348 
   1349 - Change the %s format specifier for str objects so that it returns a
   1350   unicode instance if the argument is not an instance of basestring and
   1351   calling __str__ on the argument returns a unicode instance.
   1352 
   1353 - Patch #1413181:  changed ``PyThreadState_Delete()`` to forget about the
   1354   current thread state when the auto-GIL-state machinery knows about
   1355   it (since the thread state is being deleted, continuing to remember it
   1356   can't help, but can hurt if another thread happens to get created with
   1357   the same thread id).
   1358 
   1359 Extension Modules
   1360 -----------------
   1361 
   1362 - Patch #1380952: fix SSL objects timing out on consecutive read()s
   1363 
   1364 - Patch #1309579: wait3 and wait4 were added to the posix module.
   1365 
   1366 - Patch #1231053: The audioop module now supports encoding/decoding of alaw.
   1367   In addition, the existing ulaw code was updated.
   1368 
   1369 - RFE #567972: Socket objects' family, type and proto properties are
   1370   now exposed via new attributes.
   1371 
   1372 - Everything under lib-old was removed.  This includes the following modules:
   1373     Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep,
   1374     lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse,
   1375     util, whatsound, whrandom, zmod
   1376 
   1377 - The following modules were removed:  regsub, reconvert, regex, regex_syntax.
   1378 
   1379 - re and sre were swapped, so help(re) provides full help.  importing sre
   1380   is deprecated.  The undocumented re.engine variable no longer exists.
   1381 
   1382 - Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle
   1383   SS2 (single-shift 2) escape sequences correctly.
   1384 
   1385 - The unicodedata module was updated to the 4.1 version of the Unicode
   1386   database. The 3.2 version is still available as unicodedata.db_3_2_0
   1387   for applications that require this specific version (such as IDNA).
   1388 
   1389 - The timing module is no longer built by default.  It was deprecated
   1390   in PEP 4 in Python 2.0 or earlier.
   1391 
   1392 - Patch 1433928: Added a new type, defaultdict, to the collections module.
   1393   This uses the new __missing__ hook behavior added to dict (see above).
   1394 
   1395 - Bug #854823: socketmodule now builds on Sun platforms even when
   1396   INET_ADDRSTRLEN is not defined.
   1397 
   1398 - Patch #1393157: os.startfile() now has an optional argument to specify
   1399   a "command verb" to invoke on the file.
   1400 
   1401 - Bug #876637, prevent stack corruption when socket descriptor
   1402   is larger than FD_SETSIZE.
   1403 
   1404 - Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory.
   1405   mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows.
   1406   mmap.mmap(0, size) should not be used on Windows for anonymous memory.
   1407 
   1408 - Patch #1422385: The nis module now supports access to domains other
   1409   than the system default domain.
   1410 
   1411 - Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps
   1412   are reported, the limit on path name lengths is removed, and stat reports
   1413   WindowsError now (instead of OSError).
   1414 
   1415 - Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery.
   1416 
   1417 - Bug #1413192, fix seg fault in bsddb if a transaction was deleted
   1418   before the env.
   1419 
   1420 - Patch #1103116: Basic AF_NETLINK support.
   1421 
   1422 - Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...)
   1423 
   1424 - Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints.
   1425   Also fix ungetmouse() which did not accept arguments properly.
   1426   The code now conforms to the documented signature.
   1427 
   1428 - Bug #1400115, Fix segfault when calling curses.panel.userptr()
   1429   without prior setting of the userptr.
   1430 
   1431 - Fix 64-bit problems in bsddb.
   1432 
   1433 - Patch #1365916: fix some unsafe 64-bit mmap methods.
   1434 
   1435 - Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build
   1436   problem on AIX.
   1437 
   1438 - Bug #869197: os.setgroups rejects long integer arguments
   1439 
   1440 - Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint
   1441 
   1442 - Bug #1344508, Fix UNIX mmap leaking file descriptors
   1443 
   1444 - Patch #1338314, Bug #1336623: fix tarfile so it can extract
   1445   REGTYPE directories from tarfiles written by old programs.
   1446 
   1447 - Patch #1407992, fixes broken bsddb module db associate when using
   1448   BerkeleyDB 3.3, 4.0 or 4.1.
   1449 
   1450 - Get bsddb module to build with BerkeleyDB version 4.4
   1451 
   1452 - Get bsddb module to build with BerkeleyDB version 3.2
   1453 
   1454 - Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1,
   1455   but Python incorrectly assumes it is in UTF-8 format
   1456 
   1457 - Fix parse errors in the readline module when compiling without threads.
   1458 
   1459 - Patch #1288833: Removed thread lock from socket.getaddrinfo on
   1460   FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3).
   1461 
   1462 - Patches #1298449 and #1298499: Add some missing checks for error
   1463   returns in cStringIO.c.
   1464 
   1465 - Patch #1297028: fix segfault if call type on MultibyteCodec,
   1466   MultibyteStreamReader, or MultibyteStreamWriter
   1467 
   1468 - Fix memory leak in posix.access().
   1469 
   1470 - Patch #1213831: Fix typo in unicodedata._getcode.
   1471 
   1472 - Bug #1007046: os.startfile() did not accept unicode strings encoded in
   1473   the file system encoding.
   1474 
   1475 - Patch #756021: Special-case socket.inet_aton('255.255.255.255') for
   1476   platforms that don't have inet_aton().
   1477 
   1478 - Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets.
   1479 
   1480 - Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one
   1481   line without newlines.
   1482 
   1483 - Bug #728515: mmap.resize() now resizes the file on Unix as it did
   1484   on Windows.
   1485 
   1486 - Patch #1180695: Add nanosecond stat resolution, and st_gen,
   1487   st_birthtime for FreeBSD.
   1488 
   1489 - Patch #1231069: The fcntl.ioctl function now uses the 'I' code for
   1490   the request code argument, which results in more C-like behaviour
   1491   for large or negative values.
   1492 
   1493 - Bug #1234979: For the argument of thread.Lock.acquire, the Windows
   1494   implementation treated all integer values except 1 as false.
   1495 
   1496 - Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly.
   1497 
   1498 - Patch #1212117: os.stat().st_flags is now accessible as an attribute
   1499   if available on the platform.
   1500 
   1501 - Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if
   1502   available on the platform.
   1503 
   1504 - Bug #1166660: The readline module could segfault if hook functions
   1505   were set in a different thread than that which called readline.
   1506 
   1507 - collections.deque objects now support a remove() method.
   1508 
   1509 - operator.itemgetter() and operator.attrgetter() now support retrieving
   1510   multiple fields.  This provides direct support for sorting on multiple
   1511   keys (primary, secondary, etc).
   1512 
   1513 - os.access now supports Unicode path names on non-Win32 systems.
   1514 
   1515 - Patches #925152, #1118602: Avoid reading after the end of the buffer
   1516   in pyexpat.GetInputContext.
   1517 
   1518 - Patches #749830, #1144555: allow UNIX mmap size to default to current
   1519   file size.
   1520 
   1521 - Added functional.partial().  See PEP309.
   1522 
   1523 - Patch #1093585: raise a ValueError for negative history items in readline.
   1524   {remove_history,replace_history}
   1525 
   1526 - The spwd module has been added, allowing access to the shadow password
   1527   database.
   1528 
   1529 - stat_float_times is now True.
   1530 
   1531 - array.array objects are now picklable.
   1532 
   1533 - the cPickle module no longer accepts the deprecated None option in the
   1534   args tuple returned by __reduce__().
   1535 
   1536 - itertools.islice() now accepts None for the start and step arguments.
   1537   This allows islice() to work more readily with slices:
   1538       islice(s.start, s.stop, s.step)
   1539 
   1540 - datetime.datetime() now has a strptime class method which can be used to
   1541   create datetime object using a string and format.
   1542 
   1543 - Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc
   1544   with the implementation from http://sourceforge.net/projects/libmd5-rfc/.
   1545 
   1546 Library
   1547 -------
   1548 
   1549 - Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have
   1550   been renamed to have only a single underscore prefix.  This was done to
   1551   make subclassing easier.
   1552 
   1553 - PEP 338: new module runpy defines a run_module function to support
   1554   executing modules which provide access to source code or a code object
   1555   via the PEP 302 import mechanisms.
   1556 
   1557 - The email module's parsedate_tz function now sets the daylight savings
   1558   flag to -1 (unknown) since it can't tell from the date whether it should
   1559   be set.
   1560 
   1561 - Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results
   1562   now sport attributes that provide access to the parts of the result.
   1563 
   1564 - Patch #1462498: sgmllib now handles entity and character references
   1565   in attribute values.
   1566 
   1567 - Added the sqlite3 package. This is based on pysqlite2.1.3, and provides
   1568   a DB-API interface in the standard library. You'll need sqlite 3.0.8 or
   1569   later to build this - if you have an earlier version, the C extension
   1570   module will not be built.
   1571 
   1572 - Bug #1460340: ``random.sample(dict)`` failed in various ways.  Dicts
   1573   aren't officially supported here, and trying to use them will probably
   1574   raise an exception some day.  But dicts have been allowed, and "mostly
   1575   worked", so support for them won't go away without warning.
   1576 
   1577 - Bug #1445068: getpass.getpass() can now be given an explicit stream
   1578   argument to specify where to write the prompt.
   1579 
   1580 - Patch #1462313, bug #1443328: the pickle modules now can handle classes
   1581   that have __private names in their __slots__.
   1582 
   1583 - Bug #1250170: mimetools now handles socket.gethostname() failures gracefully.
   1584 
   1585 - patch #1457316: "setup.py upload" now supports --identity to select the
   1586   key to be used for signing the uploaded code.
   1587 
   1588 - Queue.Queue objects now support .task_done() and .join() methods
   1589   to make it easier to monitor when daemon threads have completed
   1590   processing all enqueued tasks.  Patch #1455676.
   1591 
   1592 - popen2.Popen objects now preserve the command in a .cmd attribute.
   1593 
   1594 - Added the ctypes ffi package.
   1595 
   1596 - email 4.0 package now integrated.  This is largely the same as the email 3.0
   1597   package that was included in Python 2.3, except that PEP 8 module names are
   1598   now used (e.g. mail.message instead of email.Message).  The MIME classes
   1599   have been moved to a subpackage (e.g. email.mime.text instead of
   1600   email.MIMEText).  The old names are still supported for now.  Several
   1601   deprecated Message methods have been removed and lots of bugs have been
   1602   fixed.  More details can be found in the email package documentation.
   1603 
   1604 - Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object
   1605   (a subclass of tuple) that provides incremental decoders and encoders
   1606   (a way to use stateful codecs without the stream API). Python functions
   1607   codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well
   1608   as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder()
   1609   have been added.
   1610 
   1611 - Patch #1359365: Calling next() on a closed StringIO.String object raises
   1612   a ValueError instead of a StopIteration now (like file and cString.String do).
   1613   cStringIO.StringIO.isatty() will raise a ValueError now if close() has been
   1614   called before (like file and StringIO.StringIO do).
   1615 
   1616 - A regrtest option -w was added to re-run failed tests in verbose mode.
   1617 
   1618 - Patch #1446372: quit and exit can now be called from the interactive
   1619   interpreter to exit.
   1620 
   1621 - The function get_count() has been added to the gc module, and gc.collect()
   1622   grew an optional 'generation' argument.
   1623 
   1624 - A library msilib to generate Windows Installer files, and a distutils
   1625   command bdist_msi have been added.
   1626 
   1627 - PEP 343: new module contextlib.py defines decorator @contextmanager
   1628   and helpful context managers nested() and closing().
   1629 
   1630 - The compiler package now supports future imports after the module docstring.
   1631 
   1632 - Bug #1413790: zipfile now sanitizes absolute archive names that are
   1633   not allowed by the specs.
   1634 
   1635 - Patch #1215184: FileInput now can be given an opening hook which can
   1636   be used to control how files are opened.
   1637 
   1638 - Patch #1212287: fileinput.input() now has a mode parameter for
   1639   specifying the file mode input files should be opened with.
   1640 
   1641 - Patch #1215184: fileinput now has a fileno() function for getting the
   1642   current file number.
   1643 
   1644 - Patch #1349274: gettext.install() now optionally installs additional
   1645   translation functions other than _() in the builtins namespace.
   1646 
   1647 - Patch #1337756: fileinput now accepts Unicode filenames.
   1648 
   1649 - Patch #1373643: The chunk module can now read chunks larger than
   1650   two gigabytes.
   1651 
   1652 - Patch #1417555: SimpleHTTPServer now returns Last-Modified headers.
   1653 
   1654 - Bug #1430298: It is now possible to send a mail with an empty
   1655   return address using smtplib.
   1656 
   1657 - Bug #1432260: The names of lambda functions are now properly displayed
   1658   in pydoc.
   1659 
   1660 - Patch #1412872: zipfile now sets the creator system to 3 (Unix)
   1661   unless the system is Win32.
   1662 
   1663 - Patch #1349118: urllib now supports user:pass@ style proxy
   1664   specifications, raises IOErrors when proxies for unsupported protocols
   1665   are defined, and uses the https proxy on https redirections.
   1666 
   1667 - Bug #902075: urllib2 now supports 'host:port' style proxy specifications.
   1668 
   1669 - Bug #1407902: Add support for sftp:// URIs to urlparse.
   1670 
   1671 - Bug #1371247: Update Windows locale identifiers in locale.py.
   1672 
   1673 - Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters
   1674   any more.
   1675 
   1676 - Bug #1403410: The warnings module now doesn't get confused
   1677   when it can't find out the module name it generates a warning for.
   1678 
   1679 - Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature.
   1680 
   1681 - Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode
   1682 
   1683 - Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise
   1684   LoadError as documented, instead of IOError.  For compatibility,
   1685   LoadError subclasses IOError.
   1686 
   1687 - Added the hashlib module.  It provides secure hash functions for MD5 and
   1688   SHA1, 224, 256, 384, and 512.  Note that recent developments make the
   1689   historic MD5 and SHA1 unsuitable for cryptographic-strength applications.
   1690   In <http://mail.python.org/pipermail/python-dev/2005-December/058850.html>
   1691   Ronald L. Rivest offered this advice for Python:
   1692 
   1693       "The consensus of researchers in this area (at least as
   1694       expressed at the NIST Hash Function Workshop 10/31/05),
   1695       is that SHA-256 is a good choice for the time being, but
   1696       that research should continue, and other alternatives may
   1697       arise from this research.  The larger SHA's also seem OK."
   1698 
   1699 - Added a subset of Fredrik Lundh's ElementTree package.  Available
   1700   modules are xml.etree.ElementTree, xml.etree.ElementPath, and
   1701   xml.etree.ElementInclude, from ElementTree 1.2.6.
   1702 
   1703 - Patch #1162825: Support non-ASCII characters in IDLE window titles.
   1704 
   1705 - Bug #1365984: urllib now opens "data:" URLs again.
   1706 
   1707 - Patch #1314396: prevent deadlock for threading.Thread.join() when an exception
   1708   is raised within the method itself on a previous call (e.g., passing in an
   1709   illegal argument)
   1710 
   1711 - Bug #1340337: change time.strptime() to always return ValueError when there
   1712   is an error in the format string.
   1713 
   1714 - Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann).
   1715 
   1716 - Bug #729103: pydoc.py: Fix docother() method to accept additional
   1717   "parent" argument.
   1718 
   1719 - Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes
   1720   for padding.
   1721 
   1722 - Bug #1296004: httplib.py: Limit maximal amount of data read from the
   1723   socket to avoid a MemoryError on Windows.
   1724 
   1725 - Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE
   1726   to get the correct encoding.
   1727 
   1728 - Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of
   1729   languages.
   1730 
   1731 - Patch #1268314: Cache lines in StreamReader.readlines for performance.
   1732 
   1733 - Bug #1290505: Fix clearing the regex cache for time.strptime().
   1734 
   1735 - Bug #1167128: Fix size of a symlink in a tarfile to be 0.
   1736 
   1737 - Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook
   1738   functionality.
   1739 
   1740 - Bug #1163178: Make IDNA return an empty string when the input is empty.
   1741 
   1742 - Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output
   1743   separator and do not output trailing semicolon.
   1744 
   1745 - Patch #1062060: urllib.urlretrieve() now raises a new exception, named
   1746   ContentTooShortException, when the actually downloaded size does not
   1747   match the Content-Length header.
   1748 
   1749 - Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings.
   1750 
   1751 - Bug #1178484: Return complete lines from codec stream readers
   1752   even if there is an exception in later lines, resulting in
   1753   correct line numbers for decoding errors in source code.
   1754 
   1755 - Bug #1192315: Disallow negative arguments to clear() in pdb.
   1756 
   1757 - Patch #827386: Support absolute source paths in msvccompiler.py.
   1758 
   1759 - Patch #1105730: Apply the new implementation of commonprefix in posixpath
   1760   to ntpath, macpath, os2emxpath and riscospath.
   1761 
   1762 - Fix a problem in Tkinter introduced by SF patch #869468: delete bogus
   1763   __hasattr__ and __delattr__ methods on class Tk that were breaking
   1764   Tkdnd.
   1765 
   1766 - Bug #1015140: disambiguated the term "article id" in nntplib docs and
   1767   docstrings to either "article number" or "message id".
   1768 
   1769 - Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a
   1770   parameter, but uses the usual "kwargs=None".
   1771 
   1772 - textwrap now processes text chunks at O(n) speed instead of O(n**2).
   1773   Patch #1209527 (Contributed by Connelly).
   1774 
   1775 - urllib2 has now an attribute 'httpresponses' mapping from HTTP status code
   1776   to W3C name (404 -> 'Not Found'). RFE #1216944.
   1777 
   1778 - Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom,
   1779   as this can cause problems with apps closing all file descriptors.
   1780 
   1781 - Bug #839151: Fix an attempt to access sys.argv in the warnings module;
   1782   it can be missing in embedded interpreters
   1783 
   1784 - Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib.
   1785 
   1786 - Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via
   1787   error messages.
   1788 
   1789 - Bug #1108948: Cookie.py produced invalid JavaScript code.
   1790 
   1791 - The tokenize module now detects and reports indentation errors.
   1792   Bug #1224621.
   1793 
   1794 - The tokenize module has a new untokenize() function to support a full
   1795   roundtrip from lexed tokens back to Python source code.  In addition,
   1796   the generate_tokens() function now accepts a callable argument that
   1797   terminates by raising StopIteration.
   1798 
   1799 - Bug #1196315: fix weakref.WeakValueDictionary constructor.
   1800 
   1801 - Bug #1213894: os.path.realpath didn't resolve symlinks that were the first
   1802   component of the path.
   1803 
   1804 - Patch #1120353: The xmlrpclib module provides better, more transparent,
   1805   support for datetime.{datetime,date,time} objects.  With use_datetime set
   1806   to True, applications shouldn't have to fiddle with the DateTime wrapper
   1807   class at all.
   1808 
   1809 - distutils.commands.upload was added to support uploading distribution
   1810   files to PyPI.
   1811 
   1812 - distutils.commands.register now encodes the data as UTF-8 before posting
   1813   them to PyPI.
   1814 
   1815 - decimal operator and comparison methods now return NotImplemented
   1816   instead of raising a TypeError when interacting with other types.  This
   1817   allows other classes to implement __radd__ style methods and have them
   1818   work as expected.
   1819 
   1820 - Bug #1163325:  Decimal infinities failed to hash.  Attempting to
   1821   hash a NaN raised an InvalidOperation instead of a TypeError.
   1822 
   1823 - Patch #918101: Add tarfile open mode r|* for auto-detection of the
   1824   stream compression; add, for symmetry reasons, r:* as a synonym of r.
   1825 
   1826 - Patch #1043890: Add extractall method to tarfile.
   1827 
   1828 - Patch #1075887: Don't require MSVC in distutils if there is nothing
   1829   to build.
   1830 
   1831 - Patch #1103407: Properly deal with tarfile iterators when untarring
   1832   symbolic links on Windows.
   1833 
   1834 - Patch #645894: Use getrusage for computing the time consumption in
   1835   profile.py if available.
   1836 
   1837 - Patch #1046831: Use get_python_version where appropriate in sysconfig.py.
   1838 
   1839 - Patch #1117454: Remove code to special-case cookies without values
   1840   in LWPCookieJar.
   1841 
   1842 - Patch #1117339: Add cookielib special name tests.
   1843 
   1844 - Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder.
   1845 
   1846 - Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush.
   1847 
   1848 - Patch #1107973: Allow iterating over the lines of a tarfile.ExFileObject.
   1849 
   1850 - Patch #1104111: Alter setup.py --help and --help-commands.
   1851 
   1852 - Patch #1121234: Properly cleanup _exit and tkerror commands.
   1853 
   1854 - Patch #1049151: xdrlib now unpacks booleans as True or False.
   1855 
   1856 - Fixed bug in a NameError bug in cookielib.  Patch #1116583.
   1857 
   1858 - Applied a security fix to SimpleXMLRPCserver (PSF-2005-001).  This
   1859   disables recursive traversal through instance attributes, which can
   1860   be exploited in various ways.
   1861 
   1862 - Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec
   1863   flags on the HTTP listening socket.
   1864 
   1865 - Bug #792570: SimpleXMLRPCServer had problems if the request grew too large.
   1866   Fixed by reading the HTTP body in chunks instead of one big socket.read().
   1867 
   1868 - Patches #893642, #1039083: add allow_none, encoding arguments to
   1869   constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler.
   1870 
   1871 - Bug #1110478: Revert os.environ.update to do putenv again.
   1872 
   1873 - Bug #1103844: fix distutils.install.dump_dirs() with negated options.
   1874 
   1875 - os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience.
   1876 
   1877 - Enhancements to the csv module:
   1878 
   1879   + Dialects are now validated by the underlying C code, better
   1880     reflecting its capabilities, and improving its compliance with
   1881     PEP 305.
   1882   + Dialect parameter parsing has been re-implemented to improve error
   1883     reporting.
   1884   + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305
   1885     dictates.
   1886   + the parser now removes the escapechar prefix from escaped characters.
   1887   + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric
   1888     types, rather than any object that can be represented as a numeric.
   1889   + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields
   1890     to floats.
   1891   + reader now allows \r characters to be quoted (previously it only allowed
   1892     \n to be quoted).
   1893   + writer doublequote handling improved.
   1894   + Dialect classes passed to the module are no longer instantiated by
   1895     the module before being parsed (the former validation scheme required
   1896     this, but the mechanism was unreliable).
   1897   + The dialect registry now contains instances of the internal
   1898     C-coded dialect type, rather than references to python objects.
   1899   + the internal c-coded dialect type is now immutable.
   1900   + register_dialect now accepts the same keyword dialect specifications
   1901     as the reader and writer, allowing the user to register dialects
   1902     without first creating a dialect class.
   1903   + a configurable limit to the size of parsed fields has been added -
   1904     previously, an unmatched quote character could result in the entire
   1905     file being read into the field buffer before an error was reported.
   1906   + A new module method csv.field_size_limit() has been added that sets
   1907     the parser field size limit (returning the former limit). The initial
   1908     limit is 128kB.
   1909   + A line_num attribute has been added to the reader object, which tracks
   1910     the number of lines read from the source iterator. This is not
   1911     the same as the number of records returned, as records can span
   1912     multiple lines.
   1913   + reader and writer objects were not being registered with the cyclic-GC.
   1914     This has been fixed.
   1915 
   1916 - _DummyThread objects in the threading module now delete self.__block that is
   1917   inherited from _Thread since it uses up a lock allocated by 'thread'.  The
   1918   lock primitives tend to be limited in number and thus should not be wasted on
   1919   a _DummyThread object.  Fixes bug #1089632.
   1920 
   1921 - The imghdr module now detects Exif files.
   1922 
   1923 - StringIO.truncate() now correctly adjusts the size attribute.
   1924   (Bug #951915).
   1925 
   1926 - locale.py now uses an updated locale alias table (built using
   1927   Tools/i18n/makelocalealias.py, a tool to parse the X11 locale
   1928   alias file); the encoding lookup was enhanced to use Python's
   1929   encoding alias table.
   1930 
   1931 - moved deprecated modules to Lib/lib-old:  whrandom, tzparse, statcache.
   1932 
   1933 - the pickle module no longer accepts the deprecated None option in the
   1934   args tuple returned by __reduce__().
   1935 
   1936 - optparse now optionally imports gettext.  This allows its use in setup.py.
   1937 
   1938 - the pickle module no longer uses the deprecated bin parameter.
   1939 
   1940 - the shelve module no longer uses the deprecated binary parameter.
   1941 
   1942 - the pstats module no longer uses the deprecated ignore() method.
   1943 
   1944 - the filecmp module no longer uses the deprecated use_statcache argument.
   1945 
   1946 - unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully
   1947   extended or overridden by subclasses.  Formerly, the subclassed method would
   1948   be ignored by the rest of the module.  (Bug #1078905).
   1949 
   1950 - heapq.nsmallest() and heapq.nlargest() now support key= arguments with
   1951   the same meaning as in list.sort().
   1952 
   1953 - Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only
   1954   once when a size argument is given. This prevents a buffer overflow in the
   1955   tokenizer with very long source lines.
   1956 
   1957 - Bug #1083110: ``zlib.decompress.flush()`` would segfault if called
   1958   immediately after creating the object, without any intervening
   1959   ``.decompress()`` calls.
   1960 
   1961 - The reconvert.quote function can now emit triple-quoted strings.  The
   1962   reconvert module now has some simple documentation.
   1963 
   1964 - ``UserString.MutableString`` now supports negative indices in
   1965   ``__setitem__`` and ``__delitem__``
   1966 
   1967 - Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05")
   1968   correctly.
   1969 
   1970 - Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by
   1971   ``codecs.StreamReader.readline()`` has a trailing "\r", read one more
   1972   character even if the user has passed a size parameter to get a proper
   1973   line ending. Remove the special handling of a "\r\n" that has been split
   1974   between two lines.
   1975 
   1976 - Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain
   1977   about illegal code points. The codec now supports PEP 293 style error
   1978   handlers.
   1979 
   1980 - Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads
   1981   from the input stream, so that the output is a byte string in the correct
   1982   encoding instead of a unicode string.
   1983 
   1984 - Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than
   1985   considering it exactly like a '*'.
   1986 
   1987 - Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to
   1988   ``encodings.aliases``.
   1989 
   1990 - ` uu.encode()`` and ``uu.decode()`` now support unicode filenames.
   1991 
   1992 - Patch #1413711: Certain patterns of differences were making difflib
   1993   touch the recursion limit.
   1994 
   1995 - Bug #947906: An object oriented interface has been added to the calendar
   1996   module. It's possible to generate HTML calendar now and the module can be
   1997   called as a script (e.g. via ``python -mcalendar``). Localized month and
   1998   weekday names can be output (even if an exotic encoding is used) using
   1999   special classes that use unicode.
   2000 
   2001 Build
   2002 -----
   2003 
   2004 - Fix test_float, test_long, and test_struct failures on Tru64 with gcc
   2005   by using -mieee gcc option.
   2006 
   2007 - Patch #1432345: Make python compile on DragonFly.
   2008 
   2009 - Build support for Win64-AMD64 was added.
   2010 
   2011 - Patch #1428494: Prefer linking against ncursesw over ncurses library.
   2012 
   2013 - Patch #881820: look for openpty and forkpty also in libbsd.
   2014 
   2015 - The sources of zlib are now part of the Python distribution (zlib 1.2.3).
   2016   The zlib module is now built in on Windows.
   2017 
   2018 - Use -xcode=pic32 for CCSHARED on Solaris with SunPro.
   2019 
   2020 - Bug #1189330: configure did not correctly determine the necessary
   2021   value of LINKCC if python was built with GCC 4.0.
   2022 
   2023 - Upgrade Windows build to zlib 1.2.3 which eliminates a potential security
   2024   vulnerability in zlib 1.2.1 and 1.2.2.
   2025 
   2026 - EXTRA_CFLAGS has been introduced as an environment variable to hold compiler
   2027   flags that change binary compatibility.  Changes were also made to
   2028   distutils.sysconfig to also use the environment variable when used during
   2029   compilation of the interpreter and of C extensions through distutils.
   2030 
   2031 - SF patch 1171735: Darwin 8's headers are anal about POSIX compliance,
   2032   and linking has changed (prebinding is now deprecated, and libcc_dynamic
   2033   no longer exists). This configure patch makes things right.
   2034 
   2035 - Bug #1158607: Build with --disable-unicode again.
   2036 
   2037 - spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is
   2038   defined.  Discovered as a result of not being able to build on OS X.
   2039 
   2040 - setup.py now uses the directories specified in LDFLAGS using the -L option
   2041   and in CPPFLAGS using the -I option for adding library and include
   2042   directories, respectively, for compiling extension modules against.  This has
   2043   led to the core being compiled using the values in CPPFLAGS.  It also removes
   2044   the need for the special-casing of both DarwinPorts and Fink for darwin since
   2045   the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink,
   2046   ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for
   2047   Fink, ``-I/opt/local/include`` for DarwinPorts).
   2048 
   2049 - Test in configure.in that checks for tzset no longer dependent on tm->tm_zone
   2050   to exist in the struct (not required by either ISO C nor the UNIX 2 spec).
   2051   Tests for sanity in tzname when HAVE_TZNAME defined were also defined.
   2052   Closes bug #1096244.  Thanks Gregory Bond.
   2053 
   2054 C API
   2055 -----
   2056 
   2057 - ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to
   2058   ``PyObject_{Free, FREE}``.  They map to the system ``free()`` now.  If memory
   2059   is obtained via the ``PyObject_`` family, it must be released via the
   2060   ``PyObject_`` family, and likewise for the ``PyMem_`` family.  This has
   2061   always been officially true, but when Python's small-object allocator was
   2062   introduced, an attempt was made to cater to a few extension modules
   2063   discovered at the time that obtained memory via ``PyObject_New`` but
   2064   released it via ``PyMem_DEL``.  It's years later, and if such code still
   2065   exists it will fail now (probably with segfaults, but calling wrong
   2066   low-level memory management functions can yield many symptoms).
   2067 
   2068 - Added a C API for set and frozenset objects.
   2069 
   2070 - Removed PyRange_New().
   2071 
   2072 - Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the
   2073   mapping argument now. This string is used as a mapping table. Byte values
   2074   greater than the length of the string and 0xFFFE are treated as undefined
   2075   mappings.
   2076 
   2077 
   2078 Tests
   2079 -----
   2080 
   2081 - In test_os, st_?time is now truncated before comparing it with ST_?TIME.
   2082 
   2083 - Patch #1276356: New resource "urlfetch" is implemented.  This enables
   2084   even impatient people to run tests that require remote files.
   2085 
   2086 
   2087 Documentation
   2088 -------------
   2089 
   2090 - Bug #1402224: Add warning to dl docs about crashes.
   2091 
   2092 - Bug #1396471: Document that Windows' ftell() can return invalid
   2093   values for text files with UNIX-style line endings.
   2094 
   2095 - Bug #1274828: Document os.path.splitunc().
   2096 
   2097 - Bug #1190204: Clarify which directories are searched by site.py.
   2098 
   2099 - Bug #1193849: Clarify os.path.expanduser() documentation.
   2100 
   2101 - Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S.
   2102 
   2103 - Bug #755617: Document the effects of os.chown() on Windows.
   2104 
   2105 - Patch #1180012: The documentation for modulefinder is now in the library reference.
   2106 
   2107 - Patch #1213031: Document that os.chown() accepts argument values of -1.
   2108 
   2109 - Bug #1190563: Document os.waitpid() return value with WNOHANG flag.
   2110 
   2111 - Bug #1175022: Correct the example code for property().
   2112 
   2113 - Document the IterableUserDict class in the UserDict module.
   2114   Closes bug #1166582.
   2115 
   2116 - Remove all latent references for "Macintosh" that referred to semantics for
   2117   Mac OS 9 and change to reflect the state for OS X.
   2118   Closes patch #1095802.  Thanks Jack Jansen.
   2119 
   2120 Mac
   2121 ---
   2122 
   2123 
   2124 New platforms
   2125 -------------
   2126 
   2127 - FreeBSD 7 support is added.
   2128 
   2129 
   2130 Tools/Demos
   2131 -----------
   2132 
   2133 - Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that
   2134   directory for syntax highlighting in Vim.  Vim directory was added and placed
   2135   vimrc to it (was previous up a level).
   2136 
   2137 - Added two new files to Tools/scripts: pysource.py, which recursively
   2138   finds Python source files, and findnocoding.py, which finds Python
   2139   source files that need an encoding declaration.
   2140   Patch #784089, credits to Oleg Broytmann.
   2141 
   2142 - Bug #1072853: pindent.py used an uninitialized variable.
   2143 
   2144 - Patch #1177597: Correct Complex.__init__.
   2145 
   2146 - Fixed a display glitch in Pynche, which could cause the right arrow to
   2147   wiggle over by a pixel.
   2148 
   2149 
   2150 What's New in Python 2.4 final?
   2151 ===============================
   2152 
   2153 *Release date: 30-NOV-2004*
   2154 
   2155 Core and builtins
   2156 -----------------
   2157 
   2158 - Bug 875692: Improve signal handling, especially when using threads, by
   2159   forcing an early re-execution of PyEval_EvalFrame() "periodic" code when
   2160   things_to_do is not cleared by Py_MakePendingCalls().
   2161 
   2162 
   2163 What's New in Python 2.4 (release candidate 1)
   2164 ==============================================
   2165 
   2166 *Release date: 18-NOV-2004*
   2167 
   2168 Core and builtins
   2169 -----------------
   2170 
   2171 - Bug 1061968:  Fixes in 2.4a3 to address thread bug 1010677 reintroduced
   2172   the years-old thread shutdown race bug 225673.  Numeric history lesson
   2173   aside, all bugs in all three reports are fixed now.
   2174 
   2175 
   2176 Library
   2177 -------
   2178 
   2179 - Bug 1052242: If exceptions are raised by an atexit handler function an
   2180   attempt is made to execute the remaining handlers.  The last exception
   2181   raised is re-raised.
   2182 
   2183 - ``doctest``'s new support for adding ``pdb.set_trace()`` calls to
   2184   doctests was broken in a dramatic but shallow way.  Fixed.
   2185 
   2186 - Bug 1065388:  ``calendar``'s ``day_name``, ``day_abbr``, ``month_name``,
   2187   and ``month_abbr`` attributes emulate sequences of locale-correct
   2188   spellings of month and day names.  Because the locale can change at
   2189   any time, the correct spelling is recomputed whenever one of these is
   2190   indexed.  In the worst case, the index may be a slice object, so these
   2191   recomputed every day or month name each time they were indexed.  This is
   2192   much slower than necessary in the usual case, when the index is just an
   2193   integer.  In that case, only the single spelling needed is recomputed
   2194   now; and, when the index is a slice object, only the spellings needed
   2195   by the slice are recomputed now.
   2196 
   2197 - Patch 1061679: Added ``__all__`` to pickletools.py.
   2198 
   2199 Build
   2200 -----
   2201 
   2202 - Bug 1034277 / Patch 1035255: Remove compilation of core against CoreServices
   2203   and CoreFoundation on OS X.  Involved removing PyMac_GetAppletScriptFile()
   2204   which has no known users.  Thanks Bob Ippolito.
   2205 
   2206 C API
   2207 -----
   2208 
   2209 - The PyRange_New() function is deprecated.
   2210 
   2211 
   2212 What's New in Python 2.4 beta 2?
   2213 ================================
   2214 
   2215 *Release date: 03-NOV-2004*
   2216 
   2217 License
   2218 -------
   2219 
   2220 The Python Software Foundation changed the license under which Python
   2221 is released, to remove Python version numbers.  There were no other
   2222 changes to the license.  So, for example, wherever the license for
   2223 Python 2.3 said "Python 2.3", the new license says "Python".  The
   2224 intent is to make it possible to refer to the PSF license in a more
   2225 durable way.  For example, some people say they're confused by that
   2226 the Open Source Initiative's entry for the Python Software Foundation
   2227 License::
   2228 
   2229       http://www.opensource.org/licenses/PythonSoftFoundation.php
   2230 
   2231 says "Python 2.1.1" all over it, wondering whether it applies only
   2232 to Python 2.1.1.
   2233 
   2234 The official name of the new license is the Python Software Foundation
   2235 License Version 2.
   2236 
   2237 Core and builtins
   2238 -----------------
   2239 
   2240 - Bug #1055820 Cyclic garbage collection was not protecting against that
   2241   calling a live weakref to a piece of cyclic trash could resurrect an
   2242   insane mutation of the trash if any Python code ran during gc (via
   2243   running a dead object's __del__ method, running another callback on a
   2244   weakref to a dead object, or via any Python code run in any other thread
   2245   that managed to obtain the GIL while a __del__ or callback was running
   2246   in the thread doing gc).  The most likely symptom was "impossible"
   2247   ``AttributeError`` exceptions, appearing seemingly at random, on weakly
   2248   referenced objects.  The cure was to clear all weakrefs to unreachable
   2249   objects before allowing any callbacks to run.
   2250 
   2251 - Bug #1054139 _PyString_Resize() now invalidates its cached hash value.
   2252 
   2253 Extension Modules
   2254 -----------------
   2255 
   2256 - Bug #1048870:  the compiler now generates distinct code objects for
   2257   functions with identical bodies.  This was producing confusing
   2258   traceback messages which pointed to the function where the code
   2259   object was first defined rather than the function being executed.
   2260 
   2261 Library
   2262 -------
   2263 
   2264 - Patch #1056967 changes the semantics of Template.safe_substitute() so that
   2265   no ValueError is raised on an 'invalid' match group.  Now the delimiter is
   2266   returned.
   2267 
   2268 - Bug #1052503 pdb.runcall() was not passing along keyword arguments.
   2269 
   2270 - Bug #902037: XML.sax.saxutils.prepare_input_source() now combines relative
   2271   paths with a base path before checking os.path.isfile().
   2272 
   2273 - The whichdb module can now be run from the command line.
   2274 
   2275 - Bug #1045381: time.strptime() can now infer the date using %U or %W (week of
   2276   the year) when the day of the week and year are also specified.
   2277 
   2278 - Bug #1048816: fix bug in Ctrl-K at start of line in curses.textpad.Textbox
   2279 
   2280 - Bug #1017553: fix bug in tarfile.filemode()
   2281 
   2282 - Patch #737473: fix bug that old source code is shown in tracebacks even if
   2283   the source code is updated and reloaded.
   2284 
   2285 Build
   2286 -----
   2287 
   2288 - Patch #1044395: --enable-shared is allowed in FreeBSD also.
   2289 
   2290 What's New in Python 2.4 beta 1?
   2291 ================================
   2292 
   2293 *Release date: 15-OCT-2004*
   2294 
   2295 Core and builtins
   2296 -----------------
   2297 
   2298 - Patch #975056: Restartable signals were not correctly disabled on
   2299   BSD systems. Consistently use PyOS_setsig() instead of signal().
   2300 
   2301 - The internal portable implementation of thread-local storage (TLS), used
   2302   by the ``PyGILState_Ensure()``/``PyGILState_Release()`` API, was not
   2303   thread-correct.  This could lead to a variety of problems, up to and
   2304   including segfaults.  See bug 1041645 for an example.
   2305 
   2306 - Added a command line option, -m module, which searches sys.path for the
   2307   module and then runs it.  (Contributed by Nick Coghlan.)
   2308 
   2309 - The bytecode optimizer now folds tuples of constants into a single
   2310   constant.
   2311 
   2312 - SF bug #513866:  Float/long comparison anomaly.  Prior to 2.4b1, when
   2313   an integer was compared to a float, the integer was coerced to a float.
   2314   That could yield spurious overflow errors (if the integer was very
   2315   large), and to anomalies such as
   2316   ``long(1e200)+1 == 1e200 == long(1e200)-1``.  Coercion to float is no
   2317   longer performed, and cases like ``long(1e200)-1 < 1e200``,
   2318   ``long(1e200)+1 > 1e200`` and ``(1 << 20000) > 1e200`` are computed
   2319   correctly now.
   2320 
   2321 Extension modules
   2322 -----------------
   2323 
   2324 - ``collections.deque`` objects didn't play quite right with garbage
   2325   collection, which could lead to a segfault in a release build, or
   2326   an assert failure in a debug build.  Also, added overflow checks,
   2327   better detection of mutation during iteration, and shielded deque
   2328   comparisons from unusual subclass overrides of the __iter__() method.
   2329 
   2330 Library
   2331 -------
   2332 
   2333 - Patch 1046644: distutils build_ext grew two new options - --swig for
   2334   specifying the swig executable to use, and --swig-opts to specify
   2335   options to pass to swig. --swig-opts="-c++" is the new way to spell
   2336   --swig-cpp.
   2337 
   2338 - Patch 983206: distutils now obeys environment variable LDSHARED, if
   2339   it is set.
   2340 
   2341 - Added Peter Astrand's subprocess.py module.  See PEP 324 for details.
   2342 
   2343 - time.strptime() now properly escapes timezones and all other locale-specific
   2344   strings for regex-specific symbols.  Was breaking under Japanese Windows when
   2345   the timezone was specified as "Tokyo (standard time)".
   2346   Closes bug #1039270.
   2347 
   2348 - Updates for the email package:
   2349 
   2350   + email.Utils.formatdate() grew a 'usegmt' argument for HTTP support.
   2351   + All deprecated APIs that in email 2.x issued warnings have been removed:
   2352     _encoder argument to the MIMEText constructor, Message.add_payload(),
   2353     Utils.dump_address_pair(), Utils.decode(), Utils.encode()
   2354   + New deprecations: Generator.__call__(), Message.get_type(),
   2355     Message.get_main_type(), Message.get_subtype(), the 'strict' argument to
   2356     the Parser constructor.  These will be removed in email 3.1.
   2357   + Support for Python earlier than 2.3 has been removed (see PEP 291).
   2358   + All defect classes have been renamed to end in 'Defect'.
   2359   + Some FeedParser fixes; also a MultipartInvariantViolationDefect will be
   2360     added to messages that claim to be multipart but really aren't.
   2361   + Updates to documentation.
   2362 
   2363 - re's findall() and finditer() functions now take an optional flags argument
   2364   just like the compile(), search(), and match() functions.  Also, documented
   2365   the previously existing start and stop parameters for the findall() and
   2366   finditer() methods of regular expression objects.
   2367 
   2368 - rfc822 Messages now support iterating over the headers.
   2369 
   2370 - The (undocumented) tarfile.Tarfile.membernames has been removed;
   2371   applications should use the getmember function.
   2372 
   2373 - httplib now offers symbolic constants for the HTTP status codes.
   2374 
   2375 - SF bug #1028306:  Trying to compare a ``datetime.date`` to a
   2376   ``datetime.datetime`` mistakenly compared only the year, month and day.
   2377   Now it acts like a mixed-type comparison:  ``False`` for ``==``,
   2378   ``True`` for ``!=``, and raises ``TypeError`` for other comparison
   2379   operators.  Because datetime is a subclass of date, comparing only the
   2380   base class (date) members can still be done, if that's desired, by
   2381   forcing using of the appropriate date method; e.g.,
   2382   ``a_date.__eq__(a_datetime)`` is true if and only if the year, month
   2383   and day members of ``a_date`` and ``a_datetime`` are equal.
   2384 
   2385 - bdist_rpm now supports command line options --force-arch,
   2386   {pre,post}-install,  {pre,post}-uninstall, and
   2387   {prep,build,install,clean,verify}-script.
   2388 
   2389 - SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
   2390   decoding incomplete input (when the input stream is temporarily exhausted).
   2391   ``codecs.StreamReader`` now implements buffering, which enables proper
   2392   readline support for the UTF-16 decoders. ``codecs.StreamReader.read()``
   2393   has a new argument ``chars`` which specifies the number of characters to
   2394   return. ``codecs.StreamReader.readline()`` and
   2395   ``codecs.StreamReader.readlines()`` have a new argument ``keepends``.
   2396   Trailing "\n"s will be stripped from the lines if ``keepends`` is false.
   2397 
   2398 - The documentation for doctest is greatly expanded, and now covers all
   2399   the new public features (of which there are many).
   2400 
   2401 - ``doctest.master`` was put back in, and ``doctest.testmod()`` once again
   2402   updates it.  This isn't good, because every ``testmod()`` call
   2403   contributes to bloating the "hidden" state of ``doctest.master``, but
   2404   some old code apparently relies on it.  For now, all we can do is
   2405   encourage people to stitch doctests together via doctest's unittest
   2406   integration features instead.
   2407 
   2408 - httplib now handles ipv6 address/port pairs.
   2409 
   2410 - SF bug #1017864: ConfigParser now correctly handles default keys,
   2411   processing them with ``ConfigParser.optionxform`` when supplied,
   2412   consistent with the handling of config file entries and runtime-set
   2413   options.
   2414 
   2415 - SF bug #997050: Document, test, & check for non-string values in
   2416   ConfigParser.  Moved the new string-only restriction added in
   2417   rev. 1.65 to the SafeConfigParser class, leaving existing
   2418   ConfigParser & RawConfigParser behavior alone, and documented the
   2419   conditions under which non-string values work.
   2420 
   2421 Build
   2422 -----
   2423 
   2424 - Building on darwin now includes /opt/local/include and /opt/local/lib for
   2425   building extension modules.  This is so as to include software installed as
   2426   a DarwinPorts port <http://darwinports.opendarwin.org/>
   2427 
   2428 - pyport.h now defines a Py_IS_NAN macro.  It works as-is when the
   2429   platform C computes true for ``x != x`` if and only if X is a NaN.
   2430   Other platforms can override the default definition with a platform-
   2431   specific spelling in that platform's pyconfig.h.  You can also override
   2432   pyport.h's default Py_IS_INFINITY definition now.
   2433 
   2434 C API
   2435 -----
   2436 
   2437 - SF patch 1044089:  New function ``PyEval_ThreadsInitialized()`` returns
   2438   non-zero if PyEval_InitThreads() has been called.
   2439 
   2440 - The undocumented and unused extern int ``_PyThread_Started`` was removed.
   2441 
   2442 - The C API calls ``PyInterpreterState_New()`` and ``PyThreadState_New()``
   2443   are two of the very few advertised as being safe to call without holding
   2444   the GIL.  However, this wasn't true in a debug build, as bug 1041645
   2445   demonstrated.  In a debug build, Python redirects the ``PyMem`` family
   2446   of calls to Python's small-object allocator, to get the benefit of
   2447   its extra debugging capabilities.  But Python's small-object allocator
   2448   isn't threadsafe, relying on the GIL to avoid the expense of doing its
   2449   own locking.  ``PyInterpreterState_New()`` and ``PyThreadState_New()``
   2450   call the platform ``malloc()`` directly now, regardless of build type.
   2451 
   2452 - PyLong_AsUnsignedLong[Mask] now support int objects as well.
   2453 
   2454 - SF patch #998993: ``PyUnicode_DecodeUTF8Stateful`` and
   2455   ``PyUnicode_DecodeUTF16Stateful`` have been added, which implement stateful
   2456   decoding.
   2457 
   2458 Tests
   2459 -----
   2460 
   2461 - test__locale ported to unittest
   2462 
   2463 Mac
   2464 ---
   2465 
   2466 - ``plistlib`` now supports non-dict root objects.  There is also a new
   2467   interface for reading and writing plist files: ``readPlist(pathOrFile)``
   2468   and ``writePlist(rootObject, pathOrFile)``
   2469 
   2470 Tools/Demos
   2471 -----------
   2472 
   2473 - The text file comparison scripts ``ndiff.py`` and ``diff.py`` now
   2474   read the input files in universal-newline mode.  This spares them
   2475   from consuming a great deal of time to deduce the useless result that,
   2476   e.g., a file with Windows line ends and a file with Linux line ends
   2477   have no lines in common.
   2478 
   2479 
   2480 What's New in Python 2.4 alpha 3?
   2481 =================================
   2482 
   2483 *Release date: 02-SEP-2004*
   2484 
   2485 Core and builtins
   2486 -----------------
   2487 
   2488 - SF patch #1007189: ``from ... import ...`` statements now allow the name
   2489   list to be surrounded by parentheses.
   2490 
   2491 - Some speedups for long arithmetic, thanks to Trevor Perrin.  Gradeschool
   2492   multiplication was sped a little by optimizing the C code.  Gradeschool
   2493   squaring was sped by about a factor of 2, by exploiting that about half
   2494   the digit products are duplicates in a square.  Because exponentiation
   2495   uses squaring often, this also speeds long power.  For example, the time
   2496   to compute 17**1000000 dropped from about 14 seconds to 9 on my box due
   2497   to this much.  The cutoff for Karatsuba multiplication was raised,
   2498   since gradeschool multiplication got quicker, and the cutoff was
   2499   aggressively small regardless.  The exponentiation algorithm was switched
   2500   from right-to-left to left-to-right, which is more efficient for small
   2501   bases.  In addition, if the exponent is large, the algorithm now does
   2502   5 bits (instead of 1 bit) at a time.  That cut the time to compute
   2503   17**1000000 on my box in half again, down to about 4.5 seconds.
   2504 
   2505 - OverflowWarning is no longer generated.  PEP 237 scheduled this to
   2506   occur in Python 2.3, but since OverflowWarning was disabled by default,
   2507   nobody realized it was still being generated.  On the chance that user
   2508   code is still using them, the Python builtin OverflowWarning, and
   2509   corresponding C API PyExc_OverflowWarning, will exist until Python 2.5.
   2510 
   2511 - Py_InitializeEx has been added.
   2512 
   2513 - Fix the order of application of decorators.  The proper order is bottom-up;
   2514   the first decorator listed is the last one called.
   2515 
   2516 - SF patch #1005778.  Fix a seg fault if the list size changed while
   2517   calling list.index().  This could happen if a rich comparison function
   2518   modified the list.
   2519 
   2520 - The ``func_name`` (a.k.a. ``__name__``) attribute of user-defined
   2521   functions is now writable.
   2522 
   2523 - code_new (a.k.a new.code()) now checks its arguments sufficiently
   2524   carefully that passing them on to PyCode_New() won't trigger calls
   2525   to Py_FatalError() or PyErr_BadInternalCall().  It is still the case
   2526   that the returned code object might be entirely insane.
   2527 
   2528 - Subclasses of string can no longer be interned.  The semantics of
   2529   interning were not clear here -- a subclass could be mutable, for
   2530   example -- and had bugs.  Explicitly interning a subclass of string
   2531   via intern() will raise a TypeError.  Internal operations that attempt
   2532   to intern a string subclass will have no effect.
   2533 
   2534 - Bug 1003935:  xrange() could report bogus OverflowErrors.  Documented
   2535   what xrange() intends, and repaired tests accordingly.
   2536 
   2537 Extension modules
   2538 -----------------
   2539 
   2540 - difflib now supports HTML side-by-side diff.
   2541 
   2542 - os.urandom has been added for systems that support sources of random
   2543   data.
   2544 
   2545 - Patch 1012740:  truncate() on a writeable cStringIO now resets the
   2546   position to the end of the stream.  This is consistent with the original
   2547   StringIO module and avoids inadvertently resurrecting data that was
   2548   supposed to have been truncated away.
   2549 
   2550 - Added socket.socketpair().
   2551 
   2552 - Added CurrentByteIndex, CurrentColumnNumber, CurrentLineNumber
   2553   members to xml.parsers.expat.XMLParser object.
   2554 
   2555 - The mpz, rotor, and xreadlines modules, all deprecated in earlier
   2556   versions of Python, have now been removed.
   2557 
   2558 Library
   2559 -------
   2560 
   2561 - Patch #934356: if a module defines __all__, believe that rather than using
   2562   heuristics for filtering out imported names.
   2563 
   2564 - Patch #941486: added os.path.lexists(), which returns True for broken
   2565   symlinks, unlike os.path.exists().
   2566 
   2567 - the random module now uses os.urandom() for seeding if it is available.
   2568   Added a new generator based on os.urandom().
   2569 
   2570 - difflib and diff.py can now generate HTML.
   2571 
   2572 - bdist_rpm now includes version and release in the BuildRoot, and
   2573   replaces - by ``_`` in version and release.
   2574 
   2575 - distutils build/build_scripts now has an -e option to specify the
   2576   path to the Python interpreter for installed scripts.
   2577 
   2578 - PEP 292 classes Template and SafeTemplate are added to the string module.
   2579 
   2580 - tarfile now generates GNU tar files by default.
   2581 
   2582 - HTTPResponse has now a getheaders method.
   2583 
   2584 - Patch #1006219: let inspect.getsource handle '@' decorators. Thanks Simon
   2585   Percivall.
   2586 
   2587 - logging.handlers.SMTPHandler.date_time has been removed;
   2588   the class now uses email.Utils.formatdate to generate the time stamp.
   2589 
   2590 - A new function tkFont.nametofont was added to return an existing
   2591   font. The Font class constructor now has an additional exists argument
   2592   which, if True, requests to return/configure an existing font, rather
   2593   than creating a new one.
   2594 
   2595 - Updated the decimal package's min() and max() methods to match the
   2596   latest revision of the General Decimal Arithmetic Specification.
   2597   Quiet NaNs are ignored and equal values are sorted based on sign
   2598   and exponent.
   2599 
   2600 - The decimal package's Context.copy() method now returns deep copies.
   2601 
   2602 - Deprecated sys.exitfunc in favor of the atexit module.  The sys.exitfunc
   2603   attribute will be kept around for backwards compatibility and atexit
   2604   will just become the one preferred way to do it.
   2605 
   2606 - patch #675551: Add get_history_item and replace_history_item functions
   2607   to the readline module.
   2608 
   2609 - bug #989672: pdb.doc and the help messages for the help_d and help_u methods
   2610   of the pdb.Pdb class gives have been corrected. d(own) goes to a newer
   2611   frame, u(p) to an older frame, not the other way around.
   2612 
   2613 - bug #990669: os.path.realpath() will resolve symlinks before normalizing the
   2614   path, as normalizing the path may alter the meaning of the path if it
   2615   contains symlinks.
   2616 
   2617 - bug #851123: shutil.copyfile will raise an exception when trying to copy a
   2618   file onto a link to itself. Thanks Gregory Ball.
   2619 
   2620 - bug #570300: Fix inspect to resolve file locations using os.path.realpath()
   2621   so as to properly list all functions in a module when the module itself is
   2622   reached through a symlink.  Thanks Johannes Gijsbers.
   2623 
   2624 - doctest refactoring continued.  See the docs for details.  As part of
   2625   this effort, some old and little- (never?) used features are now
   2626   deprecated:  the Tester class, the module is_private() function, and the
   2627   isprivate argument to testmod().  The Tester class supplied a feeble
   2628   "by hand" way to combine multiple doctests, if you knew exactly what
   2629   you were doing.  The newer doctest features for unittest integration
   2630   already did a better job of that, are stronger now than ever, and the
   2631   new DocTestRunner class is a saner foundation if you want to do it by
   2632   hand.  The "private name" filtering gimmick was a mistake from the
   2633   start, and testmod() changed long ago to ignore it by default.  If
   2634   you want to filter out tests, the new DocTestFinder class can be used
   2635   to return a list of all doctests, and you can filter that list by
   2636   any computable criteria before passing it to a DocTestRunner instance.
   2637 
   2638 - Bug #891637, patch #1005466: fix inspect.getargs() crash on def foo((bar)).
   2639 
   2640 Tools/Demos
   2641 -----------
   2642 
   2643 - IDLE's shortcut keys for windows are now case insensitive so that
   2644   Control-V works the same as Control-v.
   2645 
   2646 - pygettext.py: Generate POT-Creation-Date header in ISO format.
   2647 
   2648 Build
   2649 -----
   2650 
   2651 - Backward incompatibility:  longintrepr.h now triggers a compile-time
   2652   error if SHIFT (the number of bits in a Python long "digit") isn't
   2653   divisible by 5.  This new requirement allows simple code for the new
   2654   5-bits-at-a-time long_pow() implementation.  If necessary, the
   2655   restriction could be removed (by complicating long_pow(), or by
   2656   falling back to the 1-bit-at-a-time algorithm), but there are no
   2657   plans to do so.
   2658 
   2659 - bug #991962: When building with --disable-toolbox-glue on Darwin no
   2660   attempt to build Mac-specific modules occurs.
   2661 
   2662 - The --with-tsc flag to configure to enable VM profiling with the
   2663   processor's timestamp counter now works on PPC platforms.
   2664 
   2665 - patch #1006629: Define _XOPEN_SOURCE to 500 on Solaris 8/9 to match
   2666   GCC's definition and avoid redefinition warnings.
   2667 
   2668 - Detect pthreads support (provided by gnu pth pthread emulation) on
   2669   GNU/k*BSD systems.
   2670 
   2671 - bug #1005737, #1007249: Fixed several build problems and warnings
   2672   found on old/legacy C compilers of HP-UX, IRIX and Tru64.
   2673 
   2674 C API
   2675 -----
   2676 
   2677 ..
   2678 
   2679 Documentation
   2680 -------------
   2681 
   2682 - patch #1005936, bug #1009373: fix index entries which contain
   2683   an underscore when viewed with Acrobat.
   2684 
   2685 - bug #990669: os.path.normpath may alter the meaning of a path if
   2686   it contains symbolic links. This has been documented in a comment
   2687   since 1992, but is now in the library reference as well.
   2688 
   2689 New platforms
   2690 -------------
   2691 
   2692 - FreeBSD 6 is now supported.
   2693 
   2694 Tests
   2695 -----
   2696 
   2697 ..
   2698 
   2699 Windows
   2700 -------
   2701 
   2702 - Boosted the stack reservation for python.exe and pythonw.exe from
   2703   the default 1MB to 2MB.  Stack frames under VC 7.1 for 2.4 are enough
   2704   bigger than under VC 6.0 for 2.3.4 that deeply recursive progams
   2705   within the default sys.getrecursionlimit() default value of 1000 were
   2706   able to suffer undetected C stack overflows.  The standard test program
   2707   test_compiler was one such program.  If a Python process on Windows
   2708   "just vanishes" without a trace, and without an error message of any
   2709   kind, but with an exit code of 128, undetected stack overflow may be
   2710   the problem.
   2711 
   2712 Mac
   2713 ---
   2714 
   2715 ..
   2716 
   2717 
   2718 What's New in Python 2.4 alpha 2?
   2719 =================================
   2720 
   2721 *Release date: 05-AUG-2004*
   2722 
   2723 Core and builtins
   2724 -----------------
   2725 
   2726 - Patch #980695:  Implements efficient string concatenation for statements
   2727   of the form s=s+t and s+=t.  This will vary across implementations.
   2728   Accordingly, the str.join() method is strongly preferred for performance
   2729   sensitive code.
   2730 
   2731 - PEP-0318, Function Decorators have been added to the language. These are
   2732   implemented using the Java-style @decorator syntax, like so::
   2733 
   2734      @staticmethod
   2735      def foo(bar):
   2736 
   2737   (The PEP needs to be updated to reflect the current state)
   2738 
   2739 - When importing a module M raises an exception, Python no longer leaves M
   2740   in sys.modules.  Before 2.4a2 it did, and a subsequent import of M would
   2741   succeed, picking up a module object from sys.modules reflecting as much
   2742   of the initialization of M as completed before the exception was raised.
   2743   Subsequent imports got no indication that M was in a partially-
   2744   initialized state, and the importers could get into arbitrarily bad
   2745   trouble as a result (the M they got was in an unintended state,
   2746   arbitrarily far removed from M's author's intent).  Now subsequent
   2747   imports of M will continue raising exceptions (but if, for example, the
   2748   source code for M is edited between import attempts, then perhaps later
   2749   attempts will succeed, or raise a different exception).
   2750 
   2751   This can break existing code, but in such cases the code was probably
   2752   working before by accident.  In the Python source, the only case of
   2753   breakage discovered was in a test accidentally relying on a damaged
   2754   module remaining in sys.modules.  Cases are also known where tests
   2755   deliberately provoking import errors remove damaged modules from
   2756   sys.modules themselves, and such tests will break now if they do an
   2757   unconditional del sys.modules[M].
   2758 
   2759 - u'%s' % obj will now try obj.__unicode__() first and fallback to
   2760   obj.__str__() if no __unicode__ method can be found.
   2761 
   2762 - Patch #550732: Add PyArg_VaParseTupleAndKeywords().  Analogous to
   2763   PyArg_VaParse().  Both are now documented.  Thanks Greg Chapman.
   2764 
   2765 - Allow string and unicode return types from .encode()/.decode()
   2766   methods on string and unicode objects.  Added unicode.decode()
   2767   which was missing for no apparent reason.
   2768 
   2769 - An attempt to fix the mess that is Python's behaviour with
   2770   signal handlers and threads, complicated by readline's behaviour.
   2771   It's quite possible that there are still bugs here.
   2772 
   2773 - Added C macros Py_CLEAR and Py_VISIT to ease the implementation of
   2774   types that support garbage collection.
   2775 
   2776 - Compiler now treats None as a constant.
   2777 
   2778 - The type of values returned by __int__, __float__, __long__,
   2779   __oct__, and __hex__ are now checked.  Returning an invalid type
   2780   will cause a TypeError to be raised.  This matches the behavior of
   2781   Jython.
   2782 
   2783 - Implemented bind_textdomain_codeset() in locale module.
   2784 
   2785 - Added a workaround for proper string operations in BSDs.  str.split
   2786   and str.is* methods can now work correctly with UTF-8 locales.
   2787 
   2788 - Bug #989185: unicode.iswide() and unicode.width() is dropped and
   2789   the East Asian Width support is moved to unicodedata extension
   2790   module.
   2791 
   2792 - Patch #941229: The source code encoding in interactive mode
   2793   now refers sys.stdin.encoding not just ISO-8859-1 anymore.  This
   2794   allows for non-latin-1 users to write unicode strings directly.
   2795 
   2796 Extension modules
   2797 -----------------
   2798 
   2799 - cpickle now supports the same keyword arguments as pickle.
   2800 
   2801 Library
   2802 -------
   2803 
   2804 - Added new codecs and aliases for ISO_8859-11, ISO_8859-16 and
   2805   TIS-620
   2806 
   2807 - Thanks to Edward Loper, doctest has been massively refactored, and
   2808   many new features were added.  Full docs will appear later.  For now
   2809   the doctest module comments and new test cases give good coverage.
   2810   The refactoring provides many hook points for customizing behavior
   2811   (such as how to report errors, and how to compare expected to actual
   2812   output).  New features include a <BLANKLINE> marker for expected
   2813   output containing blank lines, options to produce unified or context
   2814   diffs when actual output doesn't match expectations, an option to
   2815   normalize whitespace before comparing, and an option to use an
   2816   ellipsis to signify "don't care" regions of output.
   2817 
   2818 - Tkinter now supports the wish -sync and -use options.
   2819 
   2820 - The following methods in time support passing of None: ctime(), gmtime(),
   2821   and localtime().  If None is provided, the current time is used (the
   2822   same as when the argument is omitted).
   2823   [SF bug 658254, patch 663482]
   2824 
   2825 - nntplib does now allow ignoring a .netrc file.
   2826 
   2827 - urllib2 now recognizes Basic authentication even if other authentication
   2828   schemes are offered.
   2829 
   2830 - Bug #1001053.  wave.open() now accepts unicode filenames.
   2831 
   2832 - gzip.GzipFile has a new fileno() method, to retrieve the handle of the
   2833   underlying file object (provided it has a fileno() method).  This is
   2834   needed if you want to use os.fsync() on a GzipFile.
   2835 
   2836 - imaplib has two new methods: deleteacl and myrights.
   2837 
   2838 - nntplib has two new methods: description and descriptions. They
   2839   use a more RFC-compliant way of getting a newsgroup description.
   2840 
   2841 - Bug #993394.  Fix a possible red herring of KeyError in 'threading' being
   2842   raised during interpreter shutdown from a registered function with atexit
   2843   when dummy_threading is being used.
   2844 
   2845 - Bug #857297/Patch #916874.  Fix an error when extracting a hard link
   2846   from a tarfile.
   2847 
   2848 - Patch #846659.  Fix an error in tarfile.py when using
   2849   GNU longname/longlink creation.
   2850 
   2851 - The obsolete FCNTL.py has been deleted.  The built-in fcntl module
   2852   has been available (on platforms that support fcntl) since Python
   2853   1.5a3, and all FCNTL.py did is export fcntl's names, after generating
   2854   a deprecation warning telling you to use fcntl directly.
   2855 
   2856 - Several new unicode codecs are added: big5hkscs, euc_jis_2004,
   2857   iso2022_jp_2004, shift_jis_2004.
   2858 
   2859 - Bug #788520.  Queue.{get, get_nowait, put, put_nowait} have new
   2860   implementations, exploiting Conditions (which didn't exist at the time
   2861   Queue was introduced).  A minor semantic change is that the Full and
   2862   Empty exceptions raised by non-blocking calls now occur only if the
   2863   queue truly was full or empty at the instant the queue was checked (of
   2864   course the Queue may no longer be full or empty by the time a calling
   2865   thread sees those exceptions, though).  Before, the exceptions could
   2866   also be raised if it was "merely inconvenient" for the implementation
   2867   to determine the true state of the Queue (because the Queue was locked
   2868   by some other method in progress).
   2869 
   2870 - Bugs #979794 and #980117: difflib.get_grouped_opcodes() now handles the
   2871   case of comparing two empty lists.  This affected both context_diff() and
   2872   unified_diff(),
   2873 
   2874 - Bug #980938: smtplib now prints debug output to sys.stderr.
   2875 
   2876 - Bug #930024: posixpath.realpath() now handles infinite loops in symlinks by
   2877   returning the last point in the path that was not part of any loop.  Thanks
   2878   AM Kuchling.
   2879 
   2880 - Bug #980327: ntpath not handles compressing erroneous slashes between the
   2881   drive letter and the rest of the path.  Also clearly handles UNC addresses now
   2882   as well.  Thanks Paul Moore.
   2883 
   2884 - bug #679953: zipfile.py should now work for files over 2 GB.  The packed data
   2885   for file sizes (compressed and uncompressed) was being stored as signed
   2886   instead of unsigned.
   2887 
   2888 - decimal.py now only uses signals in the IBM spec.  The other conditions are
   2889   no longer part of the public API.
   2890 
   2891 - codecs module now has two new generic APIs: encode() and decode()
   2892   which don't restrict the return types (unlike the unicode and
   2893   string methods of the same name).
   2894 
   2895 - Non-blocking SSL sockets work again; they were broken in Python 2.3.
   2896   SF patch 945642.
   2897 
   2898 - doctest unittest integration improvements:
   2899 
   2900   o Improved the unitest test output for doctest-based unit tests
   2901 
   2902   o Can now pass setUp and tearDown functions when creating
   2903     DocTestSuites.
   2904 
   2905 - The threading module has a new class, local, for creating objects
   2906   that provide thread-local data.
   2907 
   2908 - Bug #990307: when keep_empty_values is True, cgi.parse_qsl()
   2909   no longer returns spurious empty fields.
   2910 
   2911 - Implemented bind_textdomain_codeset() in gettext module.
   2912 
   2913 - Introduced in gettext module the l*gettext() family of functions,
   2914   which return translation strings encoded in the preferred encoding,
   2915   as informed by locale module's getpreferredencoding().
   2916 
   2917 - optparse module (and tests) upgraded to Optik 1.5a1.  Changes:
   2918 
   2919   - Add expansion of default values in help text: the string
   2920     "%default" in an option's help string is expanded to str() of
   2921     that option's default value, or "none" if no default value.
   2922 
   2923   - Bug #955889: option default values that happen to be strings are
   2924     now processed in the same way as values from the command line; this
   2925     allows generation of nicer help when using custom types.  Can
   2926     be disabled with parser.set_process_default_values(False).
   2927 
   2928   - Bug #960515: don't crash when generating help for callback
   2929     options that specify 'type', but not 'dest' or 'metavar'.
   2930 
   2931   - Feature #815264: change the default help format for short options
   2932     that take an argument from e.g. "-oARG" to "-o ARG"; add
   2933     set_short_opt_delimiter() and set_long_opt_delimiter() methods to
   2934     HelpFormatter to allow (slight) customization of the formatting.
   2935 
   2936   - Patch #736940: internationalize Optik: all built-in user-
   2937     targeted literal strings are passed through gettext.gettext().  (If
   2938     you want translations (.po files), they're not included with Python
   2939     -- you'll find them in the Optik source distribution from
   2940     http://optik.sourceforge.net/ .)
   2941 
   2942   - Bug #878453: respect $COLUMNS environment variable for
   2943     wrapping help output.
   2944 
   2945   - Feature #988122: expand "%prog" in the 'description' passed
   2946     to OptionParser, just like in the 'usage' and 'version' strings.
   2947     (This is *not* done in the 'description' passed to OptionGroup.)
   2948 
   2949 C API
   2950 -----
   2951 
   2952 - PyImport_ExecCodeModule() and PyImport_ExecCodeModuleEx():  if an
   2953   error occurs while loading the module, these now delete the module's
   2954   entry from sys.modules.  All ways of loading modules eventually call
   2955   one of these, so this is an error-case change in semantics for all
   2956   ways of loading modules.  In rare cases, a module loader may wish
   2957   to keep a module object in sys.modules despite that the module's
   2958   code cannot be executed.  In such cases, the module loader must
   2959   arrange to reinsert the name and module object in sys.modules.
   2960   PyImport_ReloadModule() has been changed to reinsert the original
   2961   module object into sys.modules if the module reload fails, so that
   2962   its visible semantics have not changed.
   2963 
   2964 - A large pile of datetime field-extraction macros is now documented,
   2965   thanks to Anthony Tuininga (patch #986010).
   2966 
   2967 Documentation
   2968 -------------
   2969 
   2970 - Improved the tutorial on creating types in C.
   2971 
   2972   - point out the importance of reassigning data members before
   2973     assigning their values
   2974 
   2975   - correct my misconception about return values from visitprocs. Sigh.
   2976 
   2977   - mention the labor saving Py_VISIT and Py_CLEAR macros.
   2978 
   2979 - Major rewrite of the math module docs, to address common confusions.
   2980 
   2981 Tests
   2982 -----
   2983 
   2984 - The test data files for the decimal test suite are now installed on
   2985   platforms that use the Makefile.
   2986 
   2987 - SF patch 995225:  The test file testtar.tar accidentally contained
   2988   CVS keywords (like $Id$), which could cause spurious failures in
   2989   test_tarfile.py depending on how the test file was checked out.
   2990 
   2991 
   2992 What's New in Python 2.4 alpha 1?
   2993 =================================
   2994 
   2995 *Release date: 08-JUL-2004*
   2996 
   2997 Core and builtins
   2998 -----------------
   2999 
   3000 - weakref.ref is now the type object also known as
   3001   weakref.ReferenceType; it can be subclassed like any other new-style
   3002   class.  There's less per-entry overhead in WeakValueDictionary
   3003   objects now (one object instead of three).
   3004 
   3005 - Bug #951851: Python crashed when reading import table of certain
   3006   Windows DLLs.
   3007 
   3008 - Bug #215126.  The locals argument to eval(), execfile(), and exec now
   3009   accept any mapping type.
   3010 
   3011 - marshal now shares interned strings. This change introduces
   3012   a new .pyc magic.
   3013 
   3014 - Bug #966623. classes created with type() in an exec(, {}) don't
   3015   have a __module__, but code in typeobject assumed it would always
   3016   be there.
   3017 
   3018 - Python no longer relies on the LC_NUMERIC locale setting to be
   3019   the "C" locale; as a result, it no longer tries to prevent changing
   3020   the LC_NUMERIC category.
   3021 
   3022 - Bug #952807:  Unpickling pickled instances of subclasses of
   3023   datetime.date, datetime.datetime and datetime.time could yield insane
   3024   objects.  Thanks to Jiwon Seo for a fix.
   3025 
   3026 - Bug #845802: Python crashes when __init__.py is a directory.
   3027 
   3028 - Unicode objects received two new methods: iswide() and width().
   3029   These query East Asian width information, as specified in Unicode
   3030   TR11.
   3031 
   3032 - Improved the tuple hashing algorithm to give fewer collisions in
   3033   common cases.  Fixes bug  #942952.
   3034 
   3035 - Implemented generator expressions (PEP 289).  Coded by Jiwon Seo.
   3036 
   3037 - Enabled the profiling of C extension functions (and builtins) - check
   3038   new documentation and modified profile and bdb modules for more details
   3039 
   3040 - Set file.name to the object passed to open (instead of a new string)
   3041 
   3042 - Moved tracebackobject into traceback.h and renamed to PyTracebackObject
   3043 
   3044 - Optimized the byte coding for multiple assignments like "a,b=b,a" and
   3045   "a,b,c=1,2,3".  Improves their speed by 25% to 30%.
   3046 
   3047 - Limit the nested depth of a tuple for the second argument to isinstance()
   3048   and issubclass() to the recursion limit of the interpreter.
   3049   Fixes bug  #858016 .
   3050 
   3051 - Optimized dict iterators, creating separate types for each
   3052   and having them reveal their length.  Also optimized the
   3053   methods:  keys(), values(), and items().
   3054 
   3055 - Implemented a newcode opcode, LIST_APPEND, that simplifies
   3056   the generated bytecode for list comprehensions and further
   3057   improves their performance (about 35%).
   3058 
   3059 - Implemented rich comparisons for floats, which seems to make
   3060   comparisons involving NaNs somewhat less surprising when the
   3061   underlying C compiler actually implements C99 semantics.
   3062 
   3063 - Optimized list.extend() to save memory and no longer create
   3064   intermediate sequences.  Also, extend() now pre-allocates the
   3065   needed memory whenever the length of the iterable is known in
   3066   advance -- this halves the time to extend the list.
   3067 
   3068 - Optimized list resize operations to make fewer calls to the system
   3069   realloc().  Significantly speeds up list appends, list pops,
   3070   list comprehensions, and the list constructor (when the input iterable
   3071   length is not known).
   3072 
   3073 - Changed the internal list over-allocation scheme.  For larger lists,
   3074   overallocation ranged between 3% and 25%.  Now, it is a constant 12%.
   3075   For smaller lists (n<8), overallocation was upto eight elements.  Now,
   3076   the overallocation is no more than three elements -- this improves space
   3077   utilization for applications that have large numbers of small lists.
   3078 
   3079 - Most list bodies now get re-used rather than freed.  Speeds up list
   3080   instantiation and deletion by saving calls to malloc() and free().
   3081 
   3082 - The dict.update() method now accepts all the same argument forms
   3083   as the dict() constructor.  This now includes item lists and/or
   3084   keyword arguments.
   3085 
   3086 - Support for arbitrary objects supporting the read-only buffer
   3087   interface as the co_code field of code objects (something that was
   3088   only possible to create from C code) has been removed.
   3089 
   3090 - Made omitted callback and None equivalent for weakref.ref() and
   3091   weakref.proxy(); the None case wasn't handled correctly in all
   3092   cases.
   3093 
   3094 - Fixed problem where PyWeakref_NewRef() and PyWeakref_NewProxy()
   3095   assumed that initial existing entries in an object's weakref list
   3096   would not be removed while allocating a new weakref object.  Since
   3097   GC could be invoked at that time, however, that assumption was
   3098   invalid.  In a truly obscure case of GC being triggered during
   3099   creation for a new weakref object for a referent which already
   3100   has a weakref without a callback which is only referenced from
   3101   cyclic trash, a memory error can occur.  This consistently created a
   3102   segfault in a debug build, but provided less predictable behavior in
   3103   a release build.
   3104 
   3105 - input() built-in function now respects compiler flags such as
   3106   __future__ statements.  SF patch 876178.
   3107 
   3108 - Removed PendingDeprecationWarning from apply().  apply() remains
   3109   deprecated, but the nuisance warning will not be issued.
   3110 
   3111 - At Python shutdown time (Py_Finalize()), 2.3 called cyclic garbage
   3112   collection twice, both before and after tearing down modules.  The
   3113   call after tearing down modules has been disabled, because too much
   3114   of Python has been torn down then for __del__ methods and weakref
   3115   callbacks to execute sanely.  The most common symptom was a sequence
   3116   of uninformative messages on stderr when Python shut down, produced
   3117   by threads trying to raise exceptions, but unable to report the nature
   3118   of their problems because too much of the sys module had already been
   3119   destroyed.
   3120 
   3121 - Removed FutureWarnings related to hex/oct literals and conversions
   3122   and left shifts.  (Thanks to Kalle Svensson for SF patch 849227.)
   3123   This addresses most of the remaining semantic changes promised by
   3124   PEP 237, except for repr() of a long, which still shows the trailing
   3125   'L'.  The PEP appears to promise warnings for operations that
   3126   changed semantics compared to Python 2.3, but this is not
   3127   implemented; we've suffered through enough warnings related to
   3128   hex/oct literals and I think it's best to be silent now.
   3129 
   3130 - For str and unicode objects, the ljust(), center(), and rjust()
   3131   methods now accept an optional argument specifying a fill
   3132   character other than a space.
   3133 
   3134 - When method objects have an attribute that can be satisfied either
   3135   by the function object or by the method object, the function
   3136   object's attribute usually wins.  Christian Tismer pointed out that
   3137   this is really a mistake, because this only happens for special
   3138   methods (like __reduce__) where the method object's version is
   3139   really more appropriate than the function's attribute.  So from now
   3140   on, all method attributes will have precedence over function
   3141   attributes with the same name.
   3142 
   3143 - Critical bugfix, for SF bug 839548:  if a weakref with a callback,
   3144   its callback, and its weakly referenced object, all became part of
   3145   cyclic garbage during a single run of garbage collection, the order
   3146   in which they were torn down was unpredictable.  It was possible for
   3147   the callback to see partially-torn-down objects, leading to immediate
   3148   segfaults, or, if the callback resurrected garbage objects, to
   3149   resurrect insane objects that caused segfaults (or other surprises)
   3150   later.  In one sense this wasn't surprising, because Python's cyclic gc
   3151   had no knowledge of Python's weakref objects.  It does now.  When
   3152   weakrefs with callbacks become part of cyclic garbage now, those
   3153   weakrefs are cleared first.  The callbacks don't trigger then,
   3154   preventing the problems.  If you need callbacks to trigger, then just
   3155   as when cyclic gc is not involved, you need to write your code so
   3156   that weakref objects outlive the objects they weakly reference.
   3157 
   3158 - Critical bugfix, for SF bug 840829:  if cyclic garbage collection
   3159   happened to occur during a weakref callback for a new-style class
   3160   instance, subtle memory corruption was the result (in a release build;
   3161   in a debug build, a segfault occurred reliably very soon after).
   3162   This has been repaired.
   3163 
   3164 - Compiler flags set in PYTHONSTARTUP are now active in __main__.
   3165 
   3166 - Added two built-in types, set() and frozenset().
   3167 
   3168 - Added a reversed() built-in function that returns a reverse iterator
   3169   over a sequence.
   3170 
   3171 - Added a sorted() built-in function that returns a new sorted list
   3172   from any iterable.
   3173 
   3174 - CObjects are now mutable (on the C level) through PyCObject_SetVoidPtr.
   3175 
   3176 - list.sort() now supports three keyword arguments:  cmp, key, and reverse.
   3177   The key argument can be a function of one argument that extracts a
   3178   comparison key from the original record:  mylist.sort(key=str.lower).
   3179   The reverse argument is a boolean value and if True will change the
   3180   sort order as if the comparison arguments were reversed.  In addition,
   3181   the documentation has been amended to provide a guarantee that all sorts
   3182   starting with Py2.3 are guaranteed to be stable (the relative order of
   3183   records with equal keys is unchanged).
   3184 
   3185 - Added test whether wchar_t is signed or not. A signed wchar_t is not
   3186   usable as internal unicode type base for Py_UNICODE since the
   3187   unicode implementation assumes an unsigned type.
   3188 
   3189 - Fixed a bug in the cache of length-one Unicode strings that could
   3190   lead to a seg fault.  The specific problem occurred when an earlier,
   3191   non-fatal error left an uninitialized Unicode object in the
   3192   freelist.
   3193 
   3194 - The % formatting operator now supports '%F' which is equivalent to
   3195   '%f'.  This has always been documented but never implemented.
   3196 
   3197 - complex(obj) could leak a little memory if obj wasn't a string or
   3198   number.
   3199 
   3200 - zip() with no arguments now returns an empty list instead of raising
   3201   a TypeError exception.
   3202 
   3203 - obj.__contains__() now returns True/False instead of 1/0.  SF patch
   3204   820195.
   3205 
   3206 - Python no longer tries to be smart about recursive comparisons.
   3207   When comparing containers with cyclic references to themselves it
   3208   will now just hit the recursion limit.  See SF patch 825639.
   3209 
   3210 - str and unicode built-in types now have an rsplit() method that is
   3211   same as split() except that it scans the string from the end
   3212   working towards the beginning.  See SF feature request 801847.
   3213 
   3214 - Fixed a bug in object.__reduce_ex__ when using protocol 2.  Failure
   3215   to clear the error when attempts to get the __getstate__ attribute
   3216   fail caused intermittent errors and odd behavior.
   3217 
   3218 - buffer objects based on other objects no longer cache a pointer to
   3219   the data and the data length.  Instead, the appropriate tp_as_buffer
   3220   method is called as necessary.
   3221 
   3222 - fixed: if a file is opened with an explicit buffer size >= 1, repeated
   3223   close() calls would attempt to free() the buffer already free()ed on
   3224   the first call.
   3225 
   3226 
   3227 Extension modules
   3228 -----------------
   3229 
   3230 - Added socket.getservbyport(), and make the second argument in
   3231   getservbyname() and getservbyport() optional.
   3232 
   3233 - time module code that deals with input POSIX timestamps will now raise
   3234   ValueError if more than a second is lost in precision when the
   3235   timestamp is cast to the platform C time_t type.  There's no chance
   3236   that the platform will do anything sensible with the result in such
   3237   cases.  This includes ctime(), localtime() and gmtime().  Assorted
   3238   fromtimestamp() and utcfromtimestamp() methods in the datetime module
   3239   were also protected.  Closes bugs #919012 and 975996.
   3240 
   3241 - fcntl.ioctl now warns if the mutate flag is not specified.
   3242 
   3243 - nt now properly allows referring to UNC roots, e.g. in nt.stat().
   3244 
   3245 - the weakref module now supports additional objects:  array.array,
   3246   sre.pattern_objects, file objects, and sockets.
   3247 
   3248 - operator.isMappingType() and operator.isSequenceType() now give
   3249   fewer false positives.
   3250 
   3251 - socket.sslerror is now a subclass of socket.error .  Also added
   3252   socket.error to the socket module's C API.
   3253 
   3254 - Bug #920575: A problem where the _locale module segfaults on
   3255   nl_langinfo(ERA) caused by GNU libc's illegal NULL return is fixed.
   3256 
   3257 - array objects now support the copy module.  Also, their resizing
   3258   scheme has been updated to match that used for list objects.  This improves
   3259   the performance (speed and memory usage) of append() operations.
   3260   Also, array.array() and array.extend() now accept any iterable argument
   3261   for repeated appends without needing to create another temporary array.
   3262 
   3263 - cStringIO.writelines() now accepts any iterable argument and writes
   3264   the lines one at a time rather than joining them and writing once.
   3265   Made a parallel change to StringIO.writelines().  Saves memory and
   3266   makes suitable for use with generator expressions.
   3267 
   3268 - time.strftime() now checks that the values in its time tuple argument
   3269   are within the proper boundaries to prevent possible crashes from the
   3270   platform's C library implementation of strftime().  Can possibly
   3271   break code that uses values outside the range that didn't cause
   3272   problems previously (such as sitting day of year to 0).  Fixes bug
   3273   #897625.
   3274 
   3275 - The socket module now supports Bluetooth sockets, if the
   3276   system has <bluetooth/bluetooth.h>
   3277 
   3278 - Added a collections module containing a new datatype, deque(),
   3279   offering high-performance, thread-safe, memory friendly appends
   3280   and pops on either side of the deque.
   3281 
   3282 - Several modules now take advantage of collections.deque() for
   3283   improved performance:  Queue, mutex, shlex, threading, and pydoc.
   3284 
   3285 - The operator module has two new functions, attrgetter() and
   3286   itemgetter() which are useful for creating fast data extractor
   3287   functions for map(), list.sort(), itertools.groupby(), and
   3288   other functions that expect a function argument.
   3289 
   3290 - socket.SHUT_{RD,WR,RDWR} was added.
   3291 
   3292 - os.getsid was added.
   3293 
   3294 - The pwd module incorrectly advertised its struct type as
   3295   struct_pwent; this has been renamed to struct_passwd.  (The old name
   3296   is still supported for backwards compatibility.)
   3297 
   3298 - The xml.parsers.expat module now provides Expat 1.95.7.
   3299 
   3300 - socket.IPPROTO_IPV6 was added.
   3301 
   3302 - readline.clear_history was added.
   3303 
   3304 - select.select() now accepts sequences for its first three arguments.
   3305 
   3306 - cStringIO now supports the f.closed attribute.
   3307 
   3308 - The signal module now exposes SIGRTMIN and SIGRTMAX (if available).
   3309 
   3310 - curses module now supports use_default_colors().  [patch #739124]
   3311 
   3312 - Bug #811028: ncurses.h breakage on FreeBSD/MacOS X
   3313 
   3314 - Bug #814613: INET_ADDRSTRLEN fix needed for all compilers on SGI
   3315 
   3316 - Implemented non-recursive SRE matching scheme (#757624).
   3317 
   3318 - Implemented (?(id/name)yes|no) support in SRE (#572936).
   3319 
   3320 - random.seed() with no arguments or None uses time.time() as a default
   3321   seed.  Modified to match Py2.2 behavior and use fractional seconds so
   3322   that successive runs are more likely to produce different sequences.
   3323 
   3324 - random.Random has a new method, getrandbits(k), which returns an int
   3325   with k random bits.  This method is now an optional part of the API
   3326   for user defined generators.  Any generator that defines genrandbits()
   3327   can now use randrange() for ranges with a length >= 2**53.  Formerly,
   3328   randrange would return only even numbers for ranges that large (see
   3329   SF bug #812202).  Generators that do not define genrandbits() now
   3330   issue a warning when randrange() is called with a range that large.
   3331 
   3332 - itertools has a new function, groupby() for aggregating iterables
   3333   into groups sharing the same key (as determined by a key function).
   3334   It offers some of functionality of SQL's groupby keyword and of
   3335   the Unix uniq filter.
   3336 
   3337 - itertools now has a new tee() function which produces two independent
   3338   iterators from a single iterable.
   3339 
   3340 - itertools.izip() with no arguments now returns an empty iterator instead
   3341   of raising a TypeError exception.
   3342 
   3343 - Fixed #853061: allow BZ2Compressor.compress() to receive an empty string
   3344   as parameter.
   3345 
   3346 Library
   3347 -------
   3348 
   3349 - Added a new module: cProfile, a C profiler with the same interface as the
   3350   profile module.  cProfile avoids some of the drawbacks of the hotshot
   3351   profiler and provides a bit more information than the other two profilers.
   3352   Based on "lsprof" (patch #1212837).
   3353 
   3354 - Bug #1266283: The new function "lexists" is now in os.path.__all__.
   3355 
   3356 - Bug #981530: Fix UnboundLocalError in shutil.rmtree().  This affects
   3357   the documented behavior: the function passed to the onerror()
   3358   handler can now also be os.listdir.
   3359 
   3360 - Bug #754449: threading.Thread objects no longer mask exceptions raised during
   3361   interpreter shutdown with another exception from attempting to handle the
   3362   original exception.
   3363 
   3364 - Added decimal.py per PEP 327.
   3365 
   3366 - Bug #981299: rsync is now a recognized protocol in urlparse that uses a
   3367   "netloc" portion of a URL.
   3368 
   3369 - Bug #919012: shutil.move() will not try to move a directory into itself.
   3370   Thanks Johannes Gijsbers.
   3371 
   3372 - Bug #934282: pydoc.stripid() is now case-insensitive.  Thanks Robin Becker.
   3373 
   3374 - Bug #823209:  cmath.log() now takes an optional base argument so that its
   3375   API matches math.log().
   3376 
   3377 - Bug #957381: distutils bdist_rpm no longer fails on recent RPM versions
   3378   that generate a -debuginfo.rpm
   3379 
   3380 - os.path.devnull has been added for all supported platforms.
   3381 
   3382 - Fixed #877165: distutils now picks the right C++ compiler command
   3383   on cygwin and mingw32.
   3384 
   3385 - urllib.urlopen().readline() now handles HTTP/0.9 correctly.
   3386 
   3387 - refactored site.py into functions.  Also wrote regression tests for the
   3388   module.
   3389 
   3390 - The distutils install command now supports the --home option and
   3391   installation scheme for all platforms.
   3392 
   3393 - asyncore.loop now has a repeat count parameter that defaults to
   3394   looping forever.
   3395 
   3396 - The distutils sdist command now ignores all .svn directories, in
   3397   addition to CVS and RCS directories.  .svn directories hold
   3398   administrative files for the Subversion source control system.
   3399 
   3400 - Added a new module: cookielib.  Automatic cookie handling for HTTP
   3401   clients.  Also, support for cookielib has been added to urllib2, so
   3402   urllib2.urlopen() can transparently handle cookies.
   3403 
   3404 - stringprep.py now uses built-in set() instead of sets.Set().
   3405 
   3406 - Bug #876278: Unbounded recursion in modulefinder
   3407 
   3408 - Bug #780300: Swap public and system ID in LexicalHandler.startDTD.
   3409   Applications relying on the wrong order need to be corrected.
   3410 
   3411 - Bug #926075: Fixed a bug that returns a wrong pattern object
   3412   for a string or unicode object in sre.compile() when a different
   3413   type pattern with the same value exists.
   3414 
   3415 - Added countcallers arg to trace.Trace class (--trackcalls command line arg
   3416   when run from the command prompt).
   3417 
   3418 - Fixed a caching bug in platform.platform() where the argument of 'terse' was
   3419   not taken into consideration when caching value.
   3420 
   3421 - Added two new command-line arguments for profile (output file and
   3422   default sort).
   3423 
   3424 - Added global runctx function to profile module
   3425 
   3426 - Add hlist missing entryconfigure and entrycget methods.
   3427 
   3428 - The ptcp154 codec was added for Kazakh character set support.
   3429 
   3430 - Support non-anonymous ftp URLs in urllib2.
   3431 
   3432 - The encodings package will now apply codec name aliases
   3433   first before starting to try the import of the codec module.
   3434   This simplifies overriding built-in codecs with external
   3435   packages, e.g. the included CJK codecs with the JapaneseCodecs
   3436   package, by adjusting the aliases dictionary in encodings.aliases
   3437   accordingly.
   3438 
   3439 - base64 now supports RFC 3548 Base16, Base32, and Base64 encoding and
   3440   decoding standards.
   3441 
   3442 - urllib2 now supports processors.  A processor is a handler that
   3443   implements an xxx_request or xxx_response method.  These methods are
   3444   called for all requests.
   3445 
   3446 - distutils compilers now compile source files in the same order as
   3447   they are passed to the compiler.
   3448 
   3449 - pprint.pprint() and pprint.pformat() now have additional parameters
   3450   indent, width and depth.
   3451 
   3452 - Patch #750542: pprint now will pretty print subclasses of list, tuple
   3453   and dict too, as long as they don't overwrite __repr__().
   3454 
   3455 - Bug #848614: distutils' msvccompiler fails to find the MSVC6
   3456   compiler because of incomplete registry entries.
   3457 
   3458 - httplib.HTTP.putrequest now offers to omit the implicit Accept-Encoding.
   3459 
   3460 - Patch #841977: modulefinder didn't find extension modules in packages
   3461 
   3462 - imaplib.IMAP4.thread was added.
   3463 
   3464 - Plugged a minor hole in tempfile.mktemp() due to the use of
   3465   os.path.exists(), switched to using os.lstat() directly if possible.
   3466 
   3467 - bisect.py and heapq.py now have underlying C implementations
   3468   for better performance.
   3469 
   3470 - heapq.py has two new functions, nsmallest() and nlargest().
   3471 
   3472 - traceback.format_exc has been added (similar to print_exc but it returns
   3473   a string).
   3474 
   3475 - xmlrpclib.MultiCall has been added.
   3476 
   3477 - poplib.POP3_SSL has been added.
   3478 
   3479 - tmpfile.mkstemp now returns an absolute path even if dir is relative.
   3480 
   3481 - urlparse is RFC 2396 compliant.
   3482 
   3483 - The fieldnames argument to the csv module's DictReader constructor is now
   3484   optional.  If omitted, the first row of the file will be used as the
   3485   list of fieldnames.
   3486 
   3487 - encodings.bz2_codec was added for access to bz2 compression
   3488   using "a long string".encode('bz2')
   3489 
   3490 - Various improvements to unittest.py, realigned with PyUnit CVS.
   3491 
   3492 - dircache now passes exceptions to the caller, instead of returning
   3493   empty lists.
   3494 
   3495 - The bsddb module and dbhash module now support the iterator and
   3496   mapping protocols which make them more substitutable for dictionaries
   3497   and shelves.
   3498 
   3499 - The csv module's DictReader and DictWriter classes now accept keyword
   3500   arguments.  This was an omission in the initial implementation.
   3501 
   3502 - The email package handles some RFC 2231 parameters with missing
   3503   CHARSET fields better.  It also includes a patch to parameter
   3504   parsing when semicolons appear inside quotes.
   3505 
   3506 - sets.py now runs under Py2.2.  In addition, the argument restrictions
   3507   for most set methods (but not the operators) have been relaxed to
   3508   allow any iterable.
   3509 
   3510 - _strptime.py now has a behind-the-scenes caching mechanism for the most
   3511   recent TimeRE instance used along with the last five unique directive
   3512   patterns.  The overall module was also made more thread-safe.
   3513 
   3514 - random.cunifvariate() and random.stdgamma() were deprecated in Py2.3
   3515   and removed in Py2.4.
   3516 
   3517 - Bug #823328: urllib2.py's HTTP Digest Auth support works again.
   3518 
   3519 - Patch #873597: CJK codecs are imported into rank of default codecs.
   3520 
   3521 Tools/Demos
   3522 -----------
   3523 
   3524 - A hotshotmain script was added to the Tools/scripts directory that
   3525   makes it easy to run a script under control of the hotshot profiler.
   3526 
   3527 - The db2pickle and pickle2db scripts can now dump/load gdbm files.
   3528 
   3529 - The file order on the command line of the pickle2db script was reversed.
   3530   It is now [ picklefile ] dbfile.  This provides better symmetry with
   3531   db2pickle.  The file arguments to both scripts are now source followed by
   3532   destination in situations where both files are given.
   3533 
   3534 - The pydoc script will display a link to the module documentation for
   3535   modules determined to be part of the core distribution.  The documentation
   3536   base directory defaults to http://www.python.org/doc/current/lib/ but can
   3537   be changed by setting the PYTHONDOCS environment variable.
   3538 
   3539 - texcheck.py now detects double word errors.
   3540 
   3541 - md5sum.py mistakenly opened input files in text mode by default, a
   3542   silent and dangerous change from previous releases.  It once again
   3543   opens input files in binary mode by default.  The -t and -b flags
   3544   remain for compatibility with the 2.3 release, but -b is the default
   3545   now.
   3546 
   3547 - py-electric-colon now works when pending-delete/delete-selection mode is
   3548   in effect
   3549 
   3550 - py-help-at-point is no longer bound to the F1 key - it's still bound to
   3551   C-c C-h
   3552 
   3553 - Pynche was fixed to not crash when there is no ~/.pynche file and no
   3554   -d option was given.
   3555 
   3556 Build
   3557 -----
   3558 
   3559 - Bug #978645: Modules/getpath.c now builds properly in --disable-framework
   3560   build under OS X.
   3561 
   3562 - Profiling using gprof is now available if Python is configured with
   3563   --enable-profiling.
   3564 
   3565 - Profiling the VM using the Pentium TSC is now possible if Python
   3566   is configured --with-tsc.
   3567 
   3568 - In order to find libraries, setup.py now also looks in /lib64, for use
   3569   on AMD64.
   3570 
   3571 - Bug #934635: Fixed a bug where the configure script couldn't detect
   3572   getaddrinfo() properly if the KAME stack had SCTP support.
   3573 
   3574 - Support for missing ANSI C header files (limits.h, stddef.h, etc) was
   3575   removed.
   3576 
   3577 - Systems requiring the D4, D6 or D7 variants of pthreads are no longer
   3578   supported (see PEP 11).
   3579 
   3580 - Universal newline support can no longer be disabled (see PEP 11).
   3581 
   3582 - Support for DGUX, SunOS 4, IRIX 4 and Minix was removed (see PEP 11).
   3583 
   3584 - Support for systems requiring --with-dl-dld or --with-sgi-dl was removed
   3585   (see PEP 11).
   3586 
   3587 - Tests for sizeof(char) were removed since ANSI C mandates that
   3588   sizeof(char) must be 1.
   3589 
   3590 C API
   3591 -----
   3592 
   3593 - Thanks to Anthony Tuininga, the datetime module now supplies a C API
   3594   containing type-check macros and constructors.  See new docs in the
   3595   Python/C API Reference Manual for details.
   3596 
   3597 - Private function _PyTime_DoubleToTimet added, to convert a Python
   3598   timestamp (C double) to platform time_t with some out-of-bounds
   3599   checking.  Declared in new header file timefuncs.h.  It would be
   3600   good to expose some other internal timemodule.c functions there.
   3601 
   3602 - New public functions PyEval_EvaluateFrame and PyGen_New to expose
   3603   generator objects.
   3604 
   3605 - New public functions Py_IncRef() and Py_DecRef(), exposing the
   3606   functionality of the Py_XINCREF() and Py_XDECREF macros. Useful for
   3607   runtime dynamic embedding of Python.  See patch #938302, by Bob
   3608   Ippolito.
   3609 
   3610 - Added a new macro, PySequence_Fast_ITEMS, which retrieves a fast sequence's
   3611   underlying array of PyObject pointers.  Useful for high speed looping.
   3612 
   3613 - Created a new method flag, METH_COEXIST, which causes a method to be loaded
   3614   even if already defined by a slot wrapper.  This allows a __contains__
   3615   method, for example, to co-exist with a defined sq_contains slot.  This
   3616   is helpful because the PyCFunction can take advantage of optimized calls
   3617   whenever METH_O or METH_NOARGS flags are defined.
   3618 
   3619 - Added a new function, PyDict_Contains(d, k) which is like
   3620   PySequence_Contains() but is specific to dictionaries and executes
   3621   about 10% faster.
   3622 
   3623 - Added three new macros: Py_RETURN_NONE, Py_RETURN_TRUE, and Py_RETURN_FALSE.
   3624   Each return the singleton they mention after Py_INCREF()ing them.
   3625 
   3626 - Added a new function, PyTuple_Pack(n, ...) for constructing tuples from a
   3627   variable length argument list of Python objects without having to invoke
   3628   the more complex machinery of Py_BuildValue().  PyTuple_Pack(3, a, b, c)
   3629   is equivalent to Py_BuildValue("(OOO)", a, b, c).
   3630 
   3631 Windows
   3632 -------
   3633 
   3634 - The _winreg module could segfault when reading very large registry
   3635   values, due to unchecked alloca() calls (SF bug 851056).  The fix is
   3636   uses either PyMem_Malloc(n) or PyString_FromStringAndSize(NULL, n),
   3637   as appropriate, followed by a size check.
   3638 
   3639 - file.truncate() could misbehave if the file was open for update
   3640   (modes r+, rb+, w+, wb+), and the most recent file operation before
   3641   the truncate() call was an input operation.  SF bug 801631.
   3642 
   3643 
   3644 What's New in Python 2.3 final?
   3645 ===============================
   3646 
   3647 *Release date: 29-Jul-2003*
   3648 
   3649 IDLE
   3650 ----
   3651 
   3652 - Bug 778400:  IDLE hangs when selecting "Edit with IDLE" from explorer.
   3653   This was unique to Windows, and was fixed by adding an -n switch to
   3654   the command the Windows installer creates to execute "Edit with IDLE"
   3655   context-menu actions.
   3656 
   3657 - IDLE displays a new message upon startup:  some "personal firewall"
   3658   kinds of programs (for example, ZoneAlarm) open a dialog of their
   3659   own when any program opens a socket.  IDLE does use sockets, talking
   3660   on the computer's internal loopback interface.  This connection is not
   3661   visible on any external interface and no data is sent to or received
   3662   from the Internet.  So, if you get such a dialog when opening IDLE,
   3663   asking whether to let pythonw.exe talk to address 127.0.0.1, say yes,
   3664   and rest assured no communication external to your machine is taking
   3665   place.  If you don't allow it, IDLE won't be able to start.
   3666 
   3667 
   3668 What's New in Python 2.3 release candidate 2?
   3669 =============================================
   3670 
   3671 *Release date: 24-Jul-2003*
   3672 
   3673 Core and builtins
   3674 -----------------
   3675 
   3676 - It is now possible to import from zipfiles containing additional
   3677   data bytes before the zip compatible archive.  Zipfiles containing a
   3678   comment at the end are still unsupported.
   3679 
   3680 Extension modules
   3681 -----------------
   3682 
   3683 - A longstanding bug in the parser module's initialization could cause
   3684   fatal internal refcount confusion when the module got initialized more
   3685   than once.  This has been fixed.
   3686 
   3687 - Fixed memory leak in pyexpat; using the parser's ParseFile() method
   3688   with open files that aren't instances of the standard file type
   3689   caused an instance of the bound .read() method to be leaked on every
   3690   call.
   3691 
   3692 - Fixed some leaks in the locale module.
   3693 
   3694 Library
   3695 -------
   3696 
   3697 - Lib/encodings/rot_13.py when used as a script, now more properly
   3698   uses the first Python interpreter on your path.
   3699 
   3700 - Removed caching of TimeRE (and thus LocaleTime) in _strptime.py to
   3701   fix a locale related bug in the test suite.  Although another patch
   3702   was needed to actually fix the problem, the cache code was not
   3703   restored.
   3704 
   3705 IDLE
   3706 ----
   3707 
   3708 - Calltips patches.
   3709 
   3710 Build
   3711 -----
   3712 
   3713 - For MacOSX, added -mno-fused-madd to BASECFLAGS to fix test_coercion
   3714   on Panther (OSX 10.3).
   3715 
   3716 C API
   3717 -----
   3718 
   3719 Windows
   3720 -------
   3721 
   3722 - The tempfile module could do insane imports on Windows if PYTHONCASEOK
   3723   was set, making temp file creation impossible.  Repaired.
   3724 
   3725 - Add a patch to workaround pthread_sigmask() bugs in Cygwin.
   3726 
   3727 Mac
   3728 ---
   3729 
   3730 - Various fixes to pimp.
   3731 
   3732 - Scripts runs with pythonw no longer had full window manager access.
   3733 
   3734 - Don't force boot-disk-only install, for reasons unknown it causes
   3735   more problems than it solves.
   3736 
   3737 
   3738 What's New in Python 2.3 release candidate 1?
   3739 =============================================
   3740 
   3741 *Release date: 18-Jul-2003*
   3742 
   3743 Core and builtins
   3744 -----------------
   3745 
   3746 - The new function sys.getcheckinterval() returns the last value set
   3747   by sys.setcheckinterval().
   3748 
   3749 - Several bugs in the symbol table phase of the compiler have been
   3750   fixed.  Errors could be lost and compilation could fail without
   3751   reporting an error.  SF patch 763201.
   3752 
   3753 - The interpreter is now more robust about importing the warnings
   3754   module.  In an executable generated by freeze or similar programs,
   3755   earlier versions of 2.3 would fail if the warnings module could
   3756   not be found on the file system.  Fixes SF bug 771097.
   3757 
   3758 - A warning about assignments to module attributes that shadow
   3759   builtins, present in earlier releases of 2.3, has been removed.
   3760 
   3761 - It is not possible to create subclasses of built-in types like str
   3762   and tuple that define an itemsize.  Earlier releases of Python 2.3
   3763   allowed this by mistake, leading to crashes and other problems.
   3764 
   3765 - The thread_id is now initialized to 0 in a non-thread build.  SF bug
   3766   770247.
   3767 
   3768 - SF bug 762891: "del p[key]" on proxy object no longer raises SystemError.
   3769 
   3770 Extension modules
   3771 -----------------
   3772 
   3773 - weakref.proxy() can now handle "del obj[i]" for proxy objects
   3774   defining __delitem__.  Formerly, it generated a SystemError.
   3775 
   3776 - SSL no longer crashes the interpreter when the remote side disconnects.
   3777 
   3778 - On Unix the mmap module can again be used to map device files.
   3779 
   3780 - time.strptime now exclusively uses the Python implementation
   3781   contained within the _strptime module.
   3782 
   3783 - The print slot of weakref proxy objects was removed, because it was
   3784   not consistent with the object's repr slot.
   3785 
   3786 - The mmap module only checks file size for regular files, not
   3787   character or block devices.  SF patch 708374.
   3788 
   3789 - The cPickle Pickler garbage collection support was fixed to traverse
   3790   the find_class attribute, if present.
   3791 
   3792 - There are several fixes for the bsddb3 wrapper module.
   3793 
   3794   bsddb3 no longer crashes if an environment is closed before a cursor
   3795   (SF bug 763298).
   3796 
   3797   The DB and DBEnv set_get_returns_none function was extended to take
   3798   a level instead of a boolean flag.  The new level 2 means that in
   3799   addition, cursor.set()/.get() methods return None instead of raising
   3800   an exception.
   3801 
   3802   A typo was fixed in DBCursor.join_item(), preventing a crash.
   3803 
   3804 Library
   3805 -------
   3806 
   3807 - distutils now supports MSVC 7.1
   3808 
   3809 - doctest now examines all docstrings by default.  Previously, it would
   3810   skip over functions with private names (as indicated by the underscore
   3811   naming convention).  The old default created too much of a risk that
   3812   user tests were being skipped inadvertently.  Note, this change could
   3813   break code in the unlikely case that someone had intentionally put
   3814   failing tests in the docstrings of private functions.  The breakage
   3815   is easily fixable by specifying the old behavior when calling testmod()
   3816   or Tester().
   3817 
   3818 - There were several fixes to the way dumbdbms are closed.  It's vital
   3819   that a dumbdbm database be closed properly, else the on-disk data
   3820   and directory files can be left in mutually inconsistent states.
   3821   dumbdbm.py's _Database.__del__() method attempted to close the
   3822   database properly, but a shutdown race in _Database._commit() could
   3823   prevent this from working, so that a program trusting __del__() to
   3824   get the on-disk files in synch could be badly surprised.  The race
   3825   has been repaired.  A sync() method was also added so that shelve
   3826   can guarantee data is written to disk.
   3827 
   3828   The close() method can now be called more than once without complaint.
   3829 
   3830 - The classes in threading.py are now new-style classes.  That they
   3831   weren't before was an oversight.
   3832 
   3833 - The urllib2 digest authentication handlers now define the correct
   3834   auth_header.  The earlier versions would fail at runtime.
   3835 
   3836 - SF bug 763023: fix uncaught ZeroDivisionError in difflib ratio methods
   3837   when there are no lines.
   3838 
   3839 - SF bug 763637: fix exception in Tkinter with after_cancel
   3840   which could occur with Tk 8.4
   3841 
   3842 - SF bug 770601: CGIHTTPServer.py now passes the entire environment
   3843   to child processes.
   3844 
   3845 - SF bug 765238: add filter to fnmatch's __all__.
   3846 
   3847 - SF bug 748201: make time.strptime() error messages more helpful.
   3848 
   3849 - SF patch 764470: Do not dump the args attribute of a Fault object in
   3850   xmlrpclib.
   3851 
   3852 - SF patch 549151: urllib and urllib2 now redirect POSTs on 301
   3853   responses.
   3854 
   3855 - SF patch 766650: The whichdb module was fixed to recognize dbm files
   3856   generated by gdbm on OS/2 EMX.
   3857 
   3858 - SF bugs 763047 and 763052: fixes bug of timezone value being left as
   3859   -1 when ``time.tzname[0] == time.tzname[1] and not time.daylight``
   3860   is true when it should only when time.daylight is true.
   3861 
   3862 - SF bug 764548: re now allows subclasses of str and unicode to be
   3863   used as patterns.
   3864 
   3865 - SF bug 763637: In Tkinter, change after_cancel() to handle tuples
   3866   of varying sizes.  Tk 8.4 returns a different number of values
   3867   than Tk 8.3.
   3868 
   3869 - SF bug 763023: difflib.ratio() did not catch zero division.
   3870 
   3871 - The Queue module now has an __all__ attribute.
   3872 
   3873 Tools/Demos
   3874 -----------
   3875 
   3876 - See Lib/idlelib/NEWS.txt for IDLE news.
   3877 
   3878 - SF bug 753592: webchecker/wsgui now handles user supplied directories.
   3879 
   3880 - The trace.py script has been removed.  It is now in the standard library.
   3881 
   3882 Build
   3883 -----
   3884 
   3885 - Python now compiles with -fno-strict-aliasing if possible (SF bug 766696).
   3886 
   3887 - The socket module compiles on IRIX 6.5.10.
   3888 
   3889 - An irix64 system is treated the same way as an irix6 system (SF
   3890   patch 764560).
   3891 
   3892 - Several definitions were missing on FreeBSD 5.x unless the
   3893   __BSD_VISIBLE symbol was defined.  configure now defines it as
   3894   needed.
   3895 
   3896 C API
   3897 -----
   3898 
   3899 - Unicode objects now support mbcs as a built-in encoding, so the C
   3900   API can use it without deferring to the encodings package.
   3901 
   3902 Windows
   3903 -------
   3904 
   3905 - The Windows implementation of PyThread_start_new_thread() never
   3906   checked error returns from Windows functions correctly.  As a result,
   3907   it could claim to start a new thread even when the Microsoft
   3908   _beginthread() function failed (due to "too many threads" -- this is
   3909   on the order of thousands when it happens).  In these cases, the
   3910   Python exception ::
   3911 
   3912       thread.error: can't start new thread
   3913 
   3914   is raised now.
   3915 
   3916 - SF bug 766669: Prevent a GPF on interpreter exit when sockets are in
   3917   use.  The interpreter now calls WSACleanup() from Py_Finalize()
   3918   instead of from DLL teardown.
   3919 
   3920 Mac
   3921 ---
   3922 
   3923 - Bundlebuilder now inherits default values in the right way.  It was
   3924   previously possible for app bundles to get a type of "BNDL" instead
   3925   of "APPL."  Other improvements include, a --build-id option to
   3926   specify the CFBundleIdentifier and using the --python option to set
   3927   the executable in the bundle.
   3928 
   3929 - Fixed two bugs in MacOSX framework handling.
   3930 
   3931 - pythonw did not allow user interaction in 2.3rc1, this has been fixed.
   3932 
   3933 - Python is now compiled with -mno-fused-madd, making all tests pass
   3934   on Panther.
   3935 
   3936 What's New in Python 2.3 beta 2?
   3937 ================================
   3938 
   3939 *Release date: 29-Jun-2003*
   3940 
   3941 Core and builtins
   3942 -----------------
   3943 
   3944 - A program can now set the environment variable PYTHONINSPECT to some
   3945   string value in Python, and cause the interpreter to enter the
   3946   interactive prompt at program exit, as if Python had been invoked
   3947   with the -i option.
   3948 
   3949 - list.index() now accepts optional start and stop arguments.  Similar
   3950   changes were made to UserList.index(). SF feature request 754014.
   3951 
   3952 - SF patch 751998 fixes an unwanted side effect of the previous fix
   3953   for SF bug 742860 (the next item).
   3954 
   3955 - SF bug 742860: "WeakKeyDictionary __delitem__ uses iterkeys".  This
   3956   wasn't threadsafe, was very inefficient (expected time O(len(dict))
   3957   instead of O(1)), and could raise a spurious RuntimeError if another
   3958   thread mutated the dict during __delitem__, or if a comparison function
   3959   mutated it.  It also neglected to raise KeyError when the key wasn't
   3960   present; didn't raise TypeError when the key wasn't of a weakly
   3961   referencable type; and broke various more-or-less obscure dict
   3962   invariants by using a sequence of equality comparisons over the whole
   3963   set of dict keys instead of computing the key's hash code to narrow
   3964   the search to those keys with the same hash code.  All of these are
   3965   considered to be bugs.  A new implementation of __delitem__ repairs all
   3966   that, but note that fixing these bugs may change visible behavior in
   3967   code relying (whether intentionally or accidentally) on old behavior.
   3968 
   3969 - SF bug 734869: Fixed a compiler bug that caused a fatal error when
   3970   compiling a list comprehension that contained another list comprehension
   3971   embedded in a lambda expression.
   3972 
   3973 - SF bug 705231:  builtin pow() no longer lets the platform C pow()
   3974   raise -1.0 to integer powers, because (at least) glibc gets it wrong
   3975   in some cases.  The result should be -1.0 if the power is odd and 1.0
   3976   if the power is even, and any float with a sufficiently large exponent
   3977   is (mathematically) an exact even integer.
   3978 
   3979 - SF bug 759227: A new-style class that implements __nonzero__() must
   3980   return a bool or int (but not an int subclass) from that method.  This
   3981   matches the restriction on classic classes.
   3982 
   3983 - The encoding attribute has been added for file objects, and set to
   3984   the terminal encoding on Unix and Windows.
   3985 
   3986 - The softspace attribute of file objects became read-only by oversight.
   3987   It's writable again.
   3988 
   3989 - Reverted a 2.3 beta 1 change to iterators for subclasses of list and
   3990   tuple.  By default, the iterators now access data elements directly
   3991   instead of going through __getitem__.  If __getitem__ access is
   3992   preferred, then __iter__ can be overridden.
   3993 
   3994 - SF bug 735247: The staticmethod and super types participate in
   3995   garbage collection. Before this change, it was possible for leaks to
   3996   occur in functions with non-global free variables that used these types.
   3997 
   3998 Extension modules
   3999 -----------------
   4000 
   4001 - the socket module has a new exception, socket.timeout, to allow
   4002   timeouts to be handled separately from other socket errors.
   4003 
   4004 - SF bug 751276: cPickle has fixed to propagate exceptions raised in
   4005   user code.  In earlier versions, cPickle caught and ignored any
   4006   exception when it performed operations that it expected to raise
   4007   specific exceptions like AttributeError.
   4008 
   4009 - cPickle Pickler and Unpickler objects now participate in garbage
   4010   collection.
   4011 
   4012 - mimetools.choose_boundary() could return duplicate strings at times,
   4013   especially likely on Windows.  The strings returned are now guaranteed
   4014   unique within a single program run.
   4015 
   4016 - thread.interrupt_main() raises KeyboardInterrupt in the main thread.
   4017   dummy_thread has also been modified to try to simulate the behavior.
   4018 
   4019 - array.array.insert() now treats negative indices as being relative
   4020   to the end of the array, just like list.insert() does. (SF bug #739313)
   4021 
   4022 - The datetime module classes datetime, time, and timedelta are now
   4023   properly subclassable.
   4024 
   4025 - _tkinter.{get|set}busywaitinterval was added.
   4026 
   4027 - itertools.islice() now accepts stop=None as documented.
   4028   Fixes SF bug #730685.
   4029 
   4030 - the bsddb185 module is built in one restricted instance -
   4031   /usr/include/db.h exists and defines HASHVERSION to be 2.  This is true
   4032   for many BSD-derived systems.
   4033 
   4034 
   4035 Library
   4036 -------
   4037 
   4038 - Some happy doctest extensions from Jim Fulton have been added to
   4039   doctest.py.  These are already being used in Zope3.  The two
   4040   primary ones:
   4041 
   4042   doctest.debug(module, name) extracts the doctests from the named object
   4043   in the given module, puts them in a temp file, and starts pdb running
   4044   on that file.  This is great when a doctest fails.
   4045 
   4046   doctest.DocTestSuite(module=None) returns a synthesized unittest
   4047   TestSuite instance, to be run by the unittest framework, which
   4048   runs all the doctests in the module.  This allows writing tests in
   4049   doctest style (which can be clearer and shorter than writing tests
   4050   in unittest style), without losing unittest's powerful testing
   4051   framework features (which doctest lacks).
   4052 
   4053 - For compatibility with doctests created before 2.3, if an expected
   4054   output block consists solely of "1" and the actual output block
   4055   consists solely of "True", it's accepted as a match; similarly
   4056   for "0" and "False".  This is quite un-doctest-like, but is practical.
   4057   The behavior can be disabled by passing the new doctest module
   4058   constant DONT_ACCEPT_TRUE_FOR_1 to the new optionflags optional
   4059   argument.
   4060 
   4061 - ZipFile.testzip() now only traps BadZipfile exceptions.  Previously,
   4062   a bare except caught to much and reported all errors as a problem
   4063   in the archive.
   4064 
   4065 - The logging module now has a new function, makeLogRecord() making
   4066   LogHandler easier to interact with DatagramHandler and SocketHandler.
   4067 
   4068 - The cgitb module has been extended to support plain text display (SF patch
   4069   569574).
   4070 
   4071 - A brand new version of IDLE (from the IDLEfork project at
   4072   SourceForge) is now included as Lib/idlelib.  The old Tools/idle is
   4073   no more.
   4074 
   4075 - Added a new module: trace (documentation missing).  This module used
   4076   to be distributed in Tools/scripts.  It uses sys.settrace() to trace
   4077   code execution -- either function calls or individual lines.  It can
   4078   generate tracing output during execution or a post-mortem report of
   4079   code coverage.
   4080 
   4081 - The threading module has new functions settrace() and setprofile()
   4082   that cooperate with the functions of the same name in the sys
   4083   module.  A function registered with the threading module will
   4084   be used for all threads it creates.  The new trace module uses this
   4085   to provide tracing for code running in threads.
   4086 
   4087 - copy.py: applied SF patch 707900, fixing bug 702858, by Steven
   4088   Taschuk.  Copying a new-style class that had a reference to itself
   4089   didn't work.  (The same thing worked fine for old-style classes.)
   4090   Builtin functions are now treated as atomic, fixing bug #746304.
   4091 
   4092 - difflib.py has two new functions:  context_diff() and unified_diff().
   4093 
   4094 - More fixes to urllib (SF 549151): (a) When redirecting, always use
   4095   GET.  This is common practice and more-or-less sanctioned by the
   4096   HTTP standard. (b) Add a handler for 307 redirection, which becomes
   4097   an error for POST, but a regular redirect for GET and HEAD
   4098 
   4099 - Added optional 'onerror' argument to os.walk(), to control error
   4100   handling.
   4101 
   4102 - inspect.is{method|data}descriptor was added, to allow pydoc display
   4103   __doc__ of data descriptors.
   4104 
   4105 - Fixed socket speed loss caused by use of the _socketobject wrapper class
   4106   in socket.py.
   4107 
   4108 - timeit.py now checks the current directory for imports.
   4109 
   4110 - urllib2.py now knows how to order proxy classes, so the user doesn't
   4111   have to insert it in front of other classes, nor do dirty tricks like
   4112   inserting a "dummy" HTTPHandler after a ProxyHandler when building an
   4113   opener with proxy support.
   4114 
   4115 - Iterators have been added for dbm keys.
   4116 
   4117 - random.Random objects can now be pickled.
   4118 
   4119 Tools/Demos
   4120 -----------
   4121 
   4122 - pydoc now offers help on keywords and topics.
   4123 
   4124 - Tools/idle is gone; long live Lib/idlelib.
   4125 
   4126 - diff.py prints file diffs in context, unified, or ndiff formats,
   4127   providing a command line interface to difflib.py.
   4128 
   4129 - texcheck.py is a new script for making a rough validation of Python LaTeX
   4130   files.
   4131 
   4132 Build
   4133 -----
   4134 
   4135 - Setting DESTDIR during 'make install' now allows specifying a
   4136   different root directory.
   4137 
   4138 C API
   4139 -----
   4140 
   4141 - PyType_Ready():  If a type declares that it participates in gc
   4142   (Py_TPFLAGS_HAVE_GC), and its base class does not, and its base class's
   4143   tp_free slot is the default _PyObject_Del, and type does not define
   4144   a tp_free slot itself, _PyObject_GC_Del is assigned to type->tp_free.
   4145   Previously _PyObject_Del was inherited, which could at best lead to a
   4146   segfault.  In addition, if even after this magic the type's tp_free
   4147   slot is _PyObject_Del or NULL, and the type is a base type
   4148   (Py_TPFLAGS_BASETYPE), TypeError is raised:  since the type is a base
   4149   type, its dealloc function must call type->tp_free, and since the type
   4150   is gc'able, tp_free must not be NULL or _PyObject_Del.
   4151 
   4152 - PyThreadState_SetAsyncExc(): A new API (deliberately accessible only
   4153   from C) to interrupt a thread by sending it an exception.  It is
   4154   intentional that you have to write your own C extension to call it
   4155   from Python.
   4156 
   4157 
   4158 New platforms
   4159 -------------
   4160 
   4161 None this time.
   4162 
   4163 Tests
   4164 -----
   4165 
   4166 - test_imp rewritten so that it doesn't raise RuntimeError if run as a
   4167   side effect of being imported ("import test.autotest").
   4168 
   4169 Windows
   4170 -------
   4171 
   4172 - The Windows installer ships with Tcl/Tk 8.4.3 (upgraded from 8.4.1).
   4173 
   4174 - The installer always suggested that Python be installed on the C:
   4175   drive, due to a hardcoded "C:" generated by the Wise installation
   4176   wizard.  People with machines where C: is not the system drive
   4177   usually want Python installed on whichever drive is their system drive
   4178   instead.  We removed the hardcoded "C:", and two testers on machines
   4179   where C: is not the system drive report that the installer now
   4180   suggests their system drive.  Note that you can always select the
   4181   directory you want in the "Select Destination Directory" dialog --
   4182   that's what it's for.
   4183 
   4184 Mac
   4185 ---
   4186 
   4187 - There's a new module called "autoGIL", which offers a mechanism to
   4188   automatically release the Global Interpreter Lock when an event loop
   4189   goes to sleep, allowing other threads to run. It's currently only
   4190   supported on OSX, in the Mach-O version.
   4191 - The OSA modules now allow direct access to properties of the
   4192   toplevel application class (in AppleScript terminology).
   4193 - The Package Manager can now update itself.
   4194 
   4195 SourceForge Bugs and Patches Applied
   4196 ------------------------------------
   4197 
   4198 430160, 471893, 501716, 542562, 549151, 569574, 595837, 596434,
   4199 598163, 604210, 604716, 610332, 612627, 614770, 620190, 621891,
   4200 622042, 639139, 640236, 644345, 649742, 649742, 658233, 660022,
   4201 661318, 661676, 662807, 662923, 666219, 672855, 678325, 682347,
   4202 683486, 684981, 685773, 686254, 692776, 692959, 693094, 696777,
   4203 697989, 700827, 703666, 708495, 708604, 708901, 710733, 711902,
   4204 713722, 715782, 718286, 719359, 719367, 723136, 723831, 723962,
   4205 724588, 724767, 724767, 725942, 726150, 726446, 726869, 727051,
   4206 727719, 727719, 727805, 728277, 728563, 728656, 729096, 729103,
   4207 729293, 729297, 729300, 729317, 729395, 729622, 729817, 730170,
   4208 730296, 730594, 730685, 730826, 730963, 731209, 731403, 731504,
   4209 731514, 731626, 731635, 731643, 731644, 731644, 731689, 732124,
   4210 732143, 732234, 732284, 732284, 732479, 732761, 732783, 732951,
   4211 733667, 733781, 734118, 734231, 734869, 735051, 735293, 735527,
   4212 735613, 735694, 736962, 736962, 737970, 738066, 739313, 740055,
   4213 740234, 740301, 741806, 742126, 742741, 742860, 742860, 742911,
   4214 744041, 744104, 744238, 744687, 744877, 745055, 745478, 745525,
   4215 745620, 746012, 746304, 746366, 746801, 746953, 747348, 747667,
   4216 747954, 748846, 748849, 748973, 748975, 749191, 749210, 749759,
   4217 749831, 749911, 750008, 750092, 750542, 750595, 751038, 751107,
   4218 751276, 751451, 751916, 751941, 751956, 751998, 752671, 753451,
   4219 753602, 753617, 753845, 753925, 754014, 754340, 754447, 755031,
   4220 755087, 755147, 755245, 755683, 755987, 756032, 756996, 757058,
   4221 757229, 757818, 757821, 757822, 758112, 758910, 759227, 759889,
   4222 760257, 760703, 760792, 761104, 761337, 761519, 761830, 762455
   4223 
   4224 
   4225 What's New in Python 2.3 beta 1?
   4226 ================================
   4227 
   4228 *Release date: 25-Apr-2003*
   4229 
   4230 Core and builtins
   4231 -----------------
   4232 
   4233 - New format codes B, H, I, k and K have been implemented for
   4234   PyArg_ParseTuple and PyBuild_Value.
   4235 
   4236 - New built-in function sum(seq, start=0) returns the sum of all the
   4237   items in iterable object seq, plus start (items are normally numbers,
   4238   and cannot be strings).
   4239 
   4240 - bool() called without arguments now returns False rather than
   4241   raising an exception.  This is consistent with calling the
   4242   constructors for the other built-in types -- called without argument
   4243   they all return the false value of that type.  (SF patch #724135)
   4244 
   4245 - In support of PEP 269 (making the pgen parser generator accessible
   4246   from Python), some changes to the pgen code structure were made; a
   4247   few files that used to be linked only with pgen are now linked with
   4248   Python itself.
   4249 
   4250 - The repr() of a weakref object now shows the __name__ attribute of
   4251   the referenced object, if it has one.
   4252 
   4253 - super() no longer ignores data descriptors, except __class__.  See
   4254   the thread started at
   4255   http://mail.python.org/pipermail/python-dev/2003-April/034338.html
   4256 
   4257 - list.insert(i, x) now interprets negative i as it would be
   4258   interpreted by slicing, so negative values count from the end of the
   4259   list.  This was the only place where such an interpretation was not
   4260   placed on a list index.
   4261 
   4262 - range() now works even if the arguments are longs with magnitude
   4263   larger than sys.maxint, as long as the total length of the sequence
   4264   fits.  E.g., range(2**100, 2**101, 2**100) is the following list:
   4265   [1267650600228229401496703205376L].  (SF patch #707427.)
   4266 
   4267 - Some horridly obscure problems were fixed involving interaction
   4268   between garbage collection and old-style classes with "ambitious"
   4269   getattr hooks.  If an old-style instance didn't have a __del__ method,
   4270   but did have a __getattr__ hook, and the instance became reachable
   4271   only from an unreachable cycle, and the hook resurrected or deleted
   4272   unreachable objects when asked to resolve "__del__", anything up to
   4273   a segfault could happen.  That's been repaired.
   4274 
   4275 - dict.pop now takes an optional argument specifying a default
   4276   value to return if the key is not in the dict.  If a default is not
   4277   given and the key is not found, a KeyError will still be raised.
   4278   Parallel changes were made to UserDict.UserDict and UserDict.DictMixin.
   4279   [SF patch #693753] (contributed by Michael Stone.)
   4280 
   4281 - sys.getfilesystemencoding() was added to expose
   4282   Py_FileSystemDefaultEncoding.
   4283 
   4284 - New function sys.exc_clear() clears the current exception.  This is
   4285   rarely needed, but can sometimes be useful to release objects
   4286   referenced by the traceback held in sys.exc_info()[2].  (SF patch
   4287   #693195.)
   4288 
   4289 - On 64-bit systems, a dictionary could contain duplicate long/int keys
   4290   if the key value was larger than 2**32.  See SF bug #689659.
   4291 
   4292 - Fixed SF bug #663074. The codec system was using global static
   4293   variables to store internal data. As a result, any attempts to use the
   4294   unicode system with multiple active interpreters, or successive
   4295   interpreter executions, would fail.
   4296 
   4297 - "%c" % u"a" now returns a unicode string instead of raising a
   4298   TypeError. u"%c" % 0xffffffff now raises an OverflowError instead
   4299   of a ValueError to be consistent with "%c" % 256. See SF patch #710127.
   4300 
   4301 Extension modules
   4302 -----------------
   4303 
   4304 - The socket module now provides the functions inet_pton and inet_ntop
   4305   for converting between string and packed representation of IP
   4306   addresses.  There is also a new module variable, has_ipv6, which is
   4307   True iff the current Python has IPv6 support.  See SF patch #658327.
   4308 
   4309 - Tkinter wrappers around Tcl variables now pass objects directly
   4310   to Tcl, instead of first converting them to strings.
   4311 
   4312 - The .*? pattern in the re module is now special-cased to avoid the
   4313   recursion limit.  (SF patch #720991 -- many thanks to Gary Herron
   4314   and Greg Chapman.)
   4315 
   4316 - New function sys.call_tracing() allows pdb to debug code
   4317   recursively.
   4318 
   4319 - New function gc.get_referents(obj) returns a list of objects
   4320   directly referenced by obj.  In effect, it exposes what the object's
   4321   tp_traverse slot does, and can be helpful when debugging memory
   4322   leaks.
   4323 
   4324 - The iconv module has been removed from this release.
   4325 
   4326 - The platform-independent routines for packing floats in IEEE formats
   4327   (struct.pack's <f, >f, <d, and >d codes; pickle and cPickle's protocol 1
   4328   pickling of floats) ignored that rounding can cause a carry to
   4329   propagate.  The worst consequence was that, in rare cases, <f and >f
   4330   could produce strings that, when unpacked again, were a factor of 2
   4331   away from the original float.  This has been fixed.  See SF bug
   4332   #705836.
   4333 
   4334 - New function time.tzset() provides access to the C library tzset()
   4335   function, if supported.  (SF patch #675422.)
   4336 
   4337 - Using createfilehandler, deletefilehandler, createtimerhandler functions
   4338   on Tkinter.tkinter (_tkinter module) no longer crashes the interpreter.
   4339   See SF bug #692416.
   4340 
   4341 - Modified the fcntl.ioctl() function to allow modification of a passed
   4342   mutable buffer (for details see the reference documentation).
   4343 
   4344 - Made user requested changes to the itertools module.
   4345   Subsumed the times() function into repeat().
   4346   Added chain() and cycle().
   4347 
   4348 - The rotor module is now deprecated; the encryption algorithm it uses
   4349   is not believed to be secure, and including crypto code with Python
   4350   has implications for exporting and importing it in various countries.
   4351 
   4352 - The socket module now always uses the _socketobject wrapper class, even on
   4353   platforms which have dup(2).  The makefile() method is built directly
   4354   on top of the socket without duplicating the file descriptor, allowing
   4355   timeouts to work properly.
   4356 
   4357 Library
   4358 -------
   4359 
   4360 - New generator function os.walk() is an easy-to-use alternative to
   4361   os.path.walk().  See os module docs for details.  os.path.walk()
   4362   isn't deprecated at this time, but may become deprecated in a
   4363   future release.
   4364 
   4365 - Added new module "platform" which provides a wide range of tools
   4366   for querying platform dependent features.
   4367 
   4368 - netrc now allows ASCII punctuation characters in passwords.
   4369 
   4370 - shelve now supports the optional writeback argument, and exposes
   4371   pickle protocol versions.
   4372 
   4373 - Several methods of nntplib.NNTP have grown an optional file argument
   4374   which specifies a file where to divert the command's output
   4375   (already supported by the body() method).  (SF patch #720468)
   4376 
   4377 - The self-documenting XML server library DocXMLRPCServer was added.
   4378 
   4379 - Support for internationalized domain names has been added through
   4380   the 'idna' and 'punycode' encodings, the 'stringprep' module, the
   4381   'mkstringprep' tool, and enhancements to the socket and httplib
   4382   modules.
   4383 
   4384 - htmlentitydefs has two new dictionaries: name2codepoint maps
   4385   HTML entity names to Unicode codepoints (as integers).
   4386   codepoint2name is the reverse mapping. See SF patch #722017.
   4387 
   4388 - pdb has a new command, "debug", which lets you step through
   4389   arbitrary code from the debugger's (pdb) prompt.
   4390 
   4391 - unittest.failUnlessEqual and its equivalent unittest.assertEqual now
   4392   return 'not a == b' rather than 'a != b'.  This gives the desired
   4393   result for classes that define __eq__ without defining __ne__.
   4394 
   4395 - sgmllib now supports SGML marked sections, in particular the
   4396   MS Office extensions.
   4397 
   4398 - The urllib module now offers support for the iterator protocol.
   4399   SF patch 698520 contributed by Brett Cannon.
   4400 
   4401 - New module timeit provides a simple framework for timing the
   4402   execution speed of expressions and statements.
   4403 
   4404 - sets.Set objects now support mixed-type __eq__ and __ne__, instead
   4405   of raising TypeError.  If x is a Set object and y is a non-Set object,
   4406   x == y is False, and x != y is True.  This is akin to the change made
   4407   for mixed-type comparisons of datetime objects in 2.3a2; more info
   4408   about the rationale is in the NEWS entry for that.  See also SF bug
   4409   report <http://www.python.org/sf/693121>.
   4410 
   4411 - On Unix platforms, if os.listdir() is called with a Unicode argument,
   4412   it now returns Unicode strings.  (This behavior was added earlier
   4413   to the Windows NT/2k/XP version of os.listdir().)
   4414 
   4415 - Distutils: both 'py_modules' and 'packages' keywords can now be specified
   4416   in core.setup().  Previously you could supply one or the other, but
   4417   not both of them.  (SF patch #695090 from Bernhard Herzog)
   4418 
   4419 - New csv package makes it easy to read/write CSV files.
   4420 
   4421 - Module shlex has been extended to allow posix-like shell parsings,
   4422   including a split() function for easy spliting of quoted strings and
   4423   commands. An iterator interface was also implemented.
   4424 
   4425 Tools/Demos
   4426 -----------
   4427 
   4428 - New script combinerefs.py helps analyze new PYTHONDUMPREFS output.
   4429   See the module docstring for details.
   4430 
   4431 Build
   4432 -----
   4433 
   4434 - Fix problem building on OSF1 because the compiler only accepted
   4435   preprocessor directives that start in column 1.  (SF bug #691793.)
   4436 
   4437 C API
   4438 -----
   4439 
   4440 - Added PyGC_Collect(), equivalent to calling gc.collect().
   4441 
   4442 - PyThreadState_GetDict() was changed not to raise an exception or
   4443   issue a fatal error when no current thread state is available.  This
   4444   makes it possible to print dictionaries when no thread is active.
   4445 
   4446 - LONG_LONG was renamed to PY_LONG_LONG.  Extensions that use this and
   4447   need compatibility with previous versions can use this:
   4448 
   4449     #ifndef  PY_LONG_LONG
   4450     #define  PY_LONG_LONG  LONG_LONG
   4451     #endif
   4452 
   4453 - Added PyObject_SelfIter() to fill the tp_iter slot for the
   4454   typical case where the method returns its self argument.
   4455 
   4456 - The extended type structure used for heap types (new-style
   4457   classes defined by Python code using a class statement) is now
   4458   exported from object.h as PyHeapTypeObject.  (SF patch #696193.)
   4459 
   4460 New platforms
   4461 -------------
   4462 
   4463 None this time.
   4464 
   4465 Tests
   4466 -----
   4467 
   4468 - test_timeout now requires -u network to be passed to regrtest to run.
   4469   See SF bug #692988.
   4470 
   4471 Windows
   4472 -------
   4473 
   4474 - os.fsync() now exists on Windows, and calls the Microsoft _commit()
   4475   function.
   4476 
   4477 - New function winsound.MessageBeep() wraps the Win32 API
   4478   MessageBeep().
   4479 
   4480 Mac
   4481 ---
   4482 
   4483 - os.listdir() now returns Unicode strings on MacOS X when called with
   4484   a Unicode argument. See the general news item under "Library".
   4485 
   4486 - A new method MacOS.WMAvailable() returns true if it is safe to access
   4487   the window manager, false otherwise.
   4488 
   4489 - EasyDialogs dialogs are now movable-modal, and if the application is
   4490   currently in the background they will ask to be moved to the foreground
   4491   before displaying.
   4492 
   4493 - OSA Scripting support has improved a lot, and gensuitemodule.py can now
   4494   be used by mere mortals. The documentation is now also more or less
   4495   complete.
   4496 
   4497 - The IDE (in a framework build) now includes introductory documentation
   4498   in Apple Help Viewer format.
   4499 
   4500 
   4501 What's New in Python 2.3 alpha 2?
   4502 =================================
   4503 
   4504 *Release date: 19-Feb-2003*
   4505 
   4506 Core and builtins
   4507 -----------------
   4508 
   4509 - Negative positions returned from PEP 293 error callbacks are now
   4510   treated as being relative to the end of the input string. Positions
   4511   that are out of bounds raise an IndexError.
   4512 
   4513 - sys.path[0] (the directory from which the script is loaded) is now
   4514   turned into an absolute pathname, unless it is the empty string.
   4515   (SF patch #664376.)
   4516 
   4517 - Finally fixed the bug in compile() and exec where a string ending
   4518   with an indented code block but no newline would raise SyntaxError.
   4519   This would have been a four-line change in parsetok.c...  Except
   4520   codeop.py depends on this behavior, so a compilation flag had to be
   4521   invented that causes the tokenizer to revert to the old behavior;
   4522   this required extra changes to 2 .h files, 2 .c files, and 2 .py
   4523   files.  (Fixes SF bug #501622.)
   4524 
   4525 - If a new-style class defines neither __new__ nor __init__, its
   4526   constructor would ignore all arguments.  This is changed now: the
   4527   constructor refuses arguments in this case.  This might break code
   4528   that worked under Python 2.2.  The simplest fix is to add a no-op
   4529   __init__: ``def __init__(self, *args, **kw): pass``.
   4530 
   4531 - Through a bytecode optimizer bug (and I bet you didn't even know
   4532   Python *had* a bytecode optimizer :-), "unsigned" hex/oct constants
   4533   with a leading minus sign would come out with the wrong sign.
   4534   ("Unsigned" hex/oct constants are those with a face value in the
   4535   range sys.maxint+1 through sys.maxint*2+1, inclusive; these have
   4536   always been interpreted as negative numbers through sign folding.)
   4537   E.g. 0xffffffff is -1, and -(0xffffffff) is 1, but -0xffffffff would
   4538   come out as -4294967295.  This was the case in Python 2.2 through
   4539   2.2.2 and 2.3a1, and in Python 2.4 it will once again have that
   4540   value, but according to PEP 237 it really needs to be 1 now.  This
   4541   will be backported to Python 2.2.3 a well.  (SF #660455)
   4542 
   4543 - int(s, base) sometimes sign-folds hex and oct constants; it only
   4544   does this when base is 0 and s.strip() starts with a '0'.  When the
   4545   sign is actually folded, as in int("0xffffffff", 0) on a 32-bit
   4546   machine, which returns -1, a FutureWarning is now issued; in Python
   4547   2.4, this will return 4294967295L, as do int("+0xffffffff", 0) and
   4548   int("0xffffffff", 16) right now.  (PEP 347)
   4549 
   4550 - super(X, x): x may now be a proxy for an X instance, i.e.
   4551   issubclass(x.__class__, X) but not issubclass(type(x), X).
   4552 
   4553 - isinstance(x, X): if X is a new-style class, this is now equivalent
   4554   to issubclass(type(x), X) or issubclass(x.__class__, X).  Previously
   4555   only type(x) was tested.  (For classic classes this was already the
   4556   case.)
   4557 
   4558 - compile(), eval() and the exec statement now fully support source code
   4559   passed as unicode strings.
   4560 
   4561 - int subclasses can be initialized with longs if the value fits in an int.
   4562   See SF bug #683467.
   4563 
   4564 - long(string, base) takes time linear in len(string) when base is a power
   4565   of 2 now.  It used to take time quadratic in len(string).
   4566 
   4567 - filter returns now Unicode results for Unicode arguments.
   4568 
   4569 - raw_input can now return Unicode objects.
   4570 
   4571 - List objects' sort() method now accepts None as the comparison function.
   4572   Passing None is semantically identical to calling sort() with no
   4573   arguments.
   4574 
   4575 - Fixed crash when printing a subclass of str and __str__ returned self.
   4576   See SF bug #667147.
   4577 
   4578 - Fixed an invalid RuntimeWarning and an undetected error when trying
   4579   to convert a long integer into a float which couldn't fit.
   4580   See SF bug #676155.
   4581 
   4582 - Function objects now have a __module__ attribute that is bound to
   4583   the name of the module in which the function was defined.  This
   4584   applies for C functions and methods as well as functions and methods
   4585   defined in Python.  This attribute is used by pickle.whichmodule(),
   4586   which changes the behavior of whichmodule slightly.  In Python 2.2
   4587   whichmodule() returns "__main__" for functions that are not defined
   4588   at the top-level of a module (examples: methods, nested functions).
   4589   Now whichmodule() will return the proper module name.
   4590 
   4591 Extension modules
   4592 -----------------
   4593 
   4594 - operator.isNumberType() now checks that the object has a nb_int or
   4595   nb_float slot, rather than simply checking whether it has a non-NULL
   4596   tp_as_number pointer.
   4597 
   4598 - The imp module now has ways to acquire and release the "import
   4599   lock": imp.acquire_lock() and imp.release_lock().  Note: this is a
   4600   reentrant lock, so releasing the lock only truly releases it when
   4601   this is the last release_lock() call.  You can check with
   4602   imp.lock_held().  (SF bug #580952 and patch #683257.)
   4603 
   4604 - Change to cPickle to match pickle.py (see below and PEP 307).
   4605 
   4606 - Fix some bugs in the parser module.  SF bug #678518.
   4607 
   4608 - Thanks to Scott David Daniels, a subtle bug in how the zlib
   4609   extension implemented flush() was fixed.  Scott also rewrote the
   4610   zlib test suite using the unittest module.  (SF bug #640230 and
   4611   patch #678531.)
   4612 
   4613 - Added an itertools module containing high speed, memory efficient
   4614   looping constructs inspired by tools from Haskell and SML.
   4615 
   4616 - The SSL module now handles sockets with a timeout set correctly (SF
   4617   patch #675750, fixing SF bug #675552).
   4618 
   4619 - os/posixmodule has grown the sysexits.h constants (EX_OK and friends).
   4620 
   4621 - Fixed broken threadstate swap in readline that could cause fatal
   4622   errors when a readline hook was being invoked while a background
   4623   thread was active.  (SF bugs #660476 and #513033.)
   4624 
   4625 - fcntl now exposes the strops.h I_* constants.
   4626 
   4627 - Fix a crash on Solaris that occurred when calling close() on
   4628   an mmap'ed file which was already closed.  (SF patch #665913)
   4629 
   4630 - Fixed several serious bugs in the zipimport implementation.
   4631 
   4632 - datetime changes:
   4633 
   4634   The date class is now properly subclassable.  (SF bug #720908)
   4635 
   4636   The datetime and datetimetz classes have been collapsed into a single
   4637   datetime class, and likewise the time and timetz classes into a single
   4638   time class.  Previously, a datetimetz object with tzinfo=None acted
   4639   exactly like a datetime object, and similarly for timetz.  This wasn't
   4640   enough of a difference to justify distinct classes, and life is simpler
   4641   now.
   4642 
   4643   today() and now() now round system timestamps to the closest
   4644   microsecond <http://www.python.org/sf/661086>.  This repairs an
   4645   irritation most likely seen on Windows systems.
   4646 
   4647   In dt.astimezone(tz), if tz.utcoffset(dt) returns a duration,
   4648   ValueError is raised if tz.dst(dt) returns None (2.3a1 treated it
   4649   as 0 instead, but a tzinfo subclass wishing to participate in
   4650   time zone conversion has to take a stand on whether it supports
   4651   DST; if you don't care about DST, then code dst() to return 0 minutes,
   4652   meaning that DST is never in effect).
   4653 
   4654   The tzinfo methods utcoffset() and dst() must return a timedelta object
   4655   (or None) now.  In 2.3a1 they could also return an int or long, but that
   4656   was an unhelpfully redundant leftover from an earlier version wherein
   4657   they couldn't return a timedelta.  TOOWTDI.
   4658 
   4659   The example tzinfo class for local time had a bug.  It was replaced
   4660   by a later example coded by Guido.
   4661 
   4662   datetime.astimezone(tz) no longer raises an exception when the
   4663   input datetime has no UTC equivalent in tz.  For typical "hybrid" time
   4664   zones (a single tzinfo subclass modeling both standard and daylight
   4665   time), this case can arise one hour per year, at the hour daylight time
   4666   ends.  See new docs for details.  In short, the new behavior mimics
   4667   the local wall clock's behavior of repeating an hour in local time.
   4668 
   4669   dt.astimezone() can no longer be used to convert between naive and aware
   4670   datetime objects.  If you merely want to attach, or remove, a tzinfo
   4671   object, without any conversion of date and time members, use
   4672   dt.replace(tzinfo=whatever) instead, where "whatever" is None or a
   4673   tzinfo subclass instance.
   4674 
   4675   A new method tzinfo.fromutc(dt) can be overridden in tzinfo subclasses
   4676   to give complete control over how a UTC time is to be converted to
   4677   a local time.  The default astimezone() implementation calls fromutc()
   4678   as its last step, so a tzinfo subclass can affect that too by overriding
   4679   fromutc().  It's expected that the default fromutc() implementation will
   4680   be suitable as-is for "almost all" time zone subclasses, but the
   4681   creativity of political time zone fiddling appears unbounded -- fromutc()
   4682   allows the highly motivated to emulate any scheme expressible in Python.
   4683 
   4684   datetime.now():  The optional tzinfo argument was undocumented (that's
   4685   repaired), and its name was changed to tz ("tzinfo" is overloaded enough
   4686   already).  With a tz argument, now(tz) used to return the local date
   4687   and time, and attach tz to it, without any conversion of date and time
   4688   members.  This was less than useful.  Now now(tz) returns the current
   4689   date and time as local time in tz's time zone, akin to ::
   4690 
   4691       tz.fromutc(datetime.utcnow().replace(tzinfo=utc))
   4692 
   4693   where "utc" is an instance of a tzinfo subclass modeling UTC.  Without
   4694   a tz argument, now() continues to return the current local date and time,
   4695   as a naive datetime object.
   4696 
   4697   datetime.fromtimestamp():  Like datetime.now() above, this had less than
   4698   useful behavior when the optional tinzo argument was specified.  See
   4699   also SF bug report <http://www.python.org/sf/660872>.
   4700 
   4701   date and datetime comparison:  In order to prevent comparison from
   4702   falling back to the default compare-object-addresses strategy, these
   4703   raised TypeError whenever they didn't understand the other object type.
   4704   They still do, except when the other object has a "timetuple" attribute,
   4705   in which case they return NotImplemented now.  This gives other
   4706   datetime objects (e.g., mxDateTime) a chance to intercept the
   4707   comparison.
   4708 
   4709   date, time, datetime and timedelta comparison:  When the exception
   4710   for mixed-type comparisons in the last paragraph doesn't apply, if
   4711   the comparison is == then False is returned, and if the comparison is
   4712   != then True is returned.  Because dict lookup and the "in" operator
   4713   only invoke __eq__, this allows, for example, ::
   4714 
   4715       if some_datetime in some_sequence:
   4716 
   4717   and ::
   4718 
   4719       some_dict[some_timedelta] = whatever
   4720 
   4721   to work as expected, without raising TypeError just because the
   4722   sequence is heterogeneous, or the dict has mixed-type keys.  [This
   4723   seems like a good idea to implement for all mixed-type comparisons
   4724   that don't want to allow falling back to address comparison.]
   4725 
   4726   The constructors building a datetime from a timestamp could raise
   4727   ValueError if the platform C localtime()/gmtime() inserted "leap
   4728   seconds".  Leap seconds are ignored now.  On such platforms, it's
   4729   possible to have timestamps that differ by a second, yet where
   4730   datetimes constructed from them are equal.
   4731 
   4732   The pickle format of date, time and datetime objects has changed
   4733   completely.  The undocumented pickler and unpickler functions no
   4734   longer exist.  The undocumented __setstate__() and __getstate__()
   4735   methods no longer exist either.
   4736 
   4737 Library
   4738 -------
   4739 
   4740 - The logging module was updated slightly; the WARN level was renamed
   4741   to WARNING, and the matching function/method warn() to warning().
   4742 
   4743 - The pickle and cPickle modules were updated with a new pickling
   4744   protocol (documented by pickletools.py, see below) and several
   4745   extensions to the pickle customization API (__reduce__, __setstate__
   4746   etc.).  The copy module now uses more of the pickle customization
   4747   API to copy objects that don't implement __copy__ or __deepcopy__.
   4748   See PEP 307 for details.
   4749 
   4750 - The distutils "register" command now uses http://www.python.org/pypi
   4751   as the default repository.  (See PEP 301.)
   4752 
   4753 - the platform dependent path related variables sep, altsep, extsep,
   4754   pathsep, curdir, pardir and defpath are now defined in the platform
   4755   dependent path modules (e.g. ntpath.py) rather than os.py, so these
   4756   variables are now available via os.path.  They continue to be
   4757   available from the os module.
   4758   (see <http://www.python.org/sf/680789>).
   4759 
   4760 - array.array was added to the types repr.py knows about (see
   4761   <http://www.python.org/sf/680789>).
   4762 
   4763 - The new pickletools.py contains lots of documentation about pickle
   4764   internals, and supplies some helpers for working with pickles, such as
   4765   a symbolic pickle disassembler.
   4766 
   4767 - xmlrpclib.py now supports the built-in boolean type.
   4768 
   4769 - py_compile has a new 'doraise' flag and a new PyCompileError
   4770   exception.
   4771 
   4772 - SimpleXMLRPCServer now supports CGI through the CGIXMLRPCRequestHandler
   4773   class.
   4774 
   4775 - The sets module now raises TypeError in __cmp__, to clarify that
   4776   sets are not intended to be three-way-compared; the comparison
   4777   operators are overloaded as subset/superset tests.
   4778 
   4779 - Bastion.py and rexec.py are disabled.  These modules are not safe in
   4780   Python 2.2. or 2.3.
   4781 
   4782 - realpath is now exported when doing ``from poxixpath import *``.
   4783   It is also exported for ntpath, macpath, and os2emxpath.
   4784   See SF bug #659228.
   4785 
   4786 - New module tarfile from Lars Gustbel provides a comprehensive interface
   4787   to tar archive files with transparent gzip and bzip2 compression.
   4788   See SF patch #651082.
   4789 
   4790 - urlparse can now parse imap:// URLs.  See SF feature request #618024.
   4791 
   4792 - Tkinter.Canvas.scan_dragto() provides an optional parameter to support
   4793   the gain value which is passed to Tk.  SF bug# 602259.
   4794 
   4795 - Fix logging.handlers.SysLogHandler protocol when using UNIX domain sockets.
   4796   See SF patch #642974.
   4797 
   4798 - The dospath module was deleted.  Use the ntpath module when manipulating
   4799   DOS paths from other platforms.
   4800 
   4801 Tools/Demos
   4802 -----------
   4803 
   4804 - Two new scripts (db2pickle.py and pickle2db.py) were added to the
   4805   Tools/scripts directory to facilitate conversion from the old bsddb module
   4806   to the new one.  While the user-visible API of the new module is
   4807   compatible with the old one, it's likely that the version of the
   4808   underlying database library has changed.  To convert from the old library,
   4809   run the db2pickle.py script using the old version of Python to convert it
   4810   to a pickle file.  After upgrading Python, run the pickle2db.py script
   4811   using the new version of Python to reconstitute your database.  For
   4812   example:
   4813 
   4814     % python2.2 db2pickle.py -h some.db > some.pickle
   4815     % python2.3 pickle2db.py -h some.db.new < some.pickle
   4816 
   4817   Run the scripts without any args to get a usage message.
   4818 
   4819 
   4820 Build
   4821 -----
   4822 
   4823 - The audio driver tests (test_ossaudiodev.py and
   4824   test_linuxaudiodev.py) are no longer run by default.  This is
   4825   because they don't always work, depending on your hardware and
   4826   software.  To run these tests, you must use an invocation like ::
   4827 
   4828     ./python Lib/test/regrtest.py -u audio test_ossaudiodev
   4829 
   4830 - On systems which build using the configure script, compiler flags which
   4831   used to be lumped together using the OPT flag have been split into two
   4832   groups, OPT and BASECFLAGS.  OPT is meant to carry just optimization- and
   4833   debug-related flags like "-g" and "-O3".  BASECFLAGS is meant to carry
   4834   compiler flags that are required to get a clean compile.  On some
   4835   platforms (many Linux flavors in particular) BASECFLAGS will be empty by
   4836   default.  On others, such as Mac OS X and SCO, it will contain required
   4837   flags.  This change allows people building Python to override OPT without
   4838   fear of clobbering compiler flags which are required to get a clean build.
   4839 
   4840 - On Darwin/Mac OS X platforms, /sw/lib and /sw/include are added to the
   4841   relevant search lists in setup.py.  This allows users building Python to
   4842   take advantage of the many packages available from the fink project
   4843   <http://fink.sf.net/>.
   4844 
   4845 - A new Makefile target, scriptsinstall, installs a number of useful scripts
   4846   from the Tools/scripts directory.
   4847 
   4848 C API
   4849 -----
   4850 
   4851 - PyEval_GetFrame() is now declared to return a ``PyFrameObject *``
   4852   instead of a plain ``PyObject *``.  (SF patch #686601.)
   4853 
   4854 - PyNumber_Check() now checks that the object has a nb_int or nb_float
   4855   slot, rather than simply checking whether it has a non-NULL
   4856   tp_as_number pointer.
   4857 
   4858 - A C type that inherits from a base type that defines tp_as_buffer
   4859   will now inherit the tp_as_buffer pointer if it doesn't define one.
   4860   (SF #681367)
   4861 
   4862 - The PyArg_Parse functions now issue a DeprecationWarning if a float
   4863   argument is provided when an integer is specified (this affects the 'b',
   4864   'B', 'h', 'H', 'i', and 'l' codes).  Future versions of Python will
   4865   raise a TypeError.
   4866 
   4867 Tests
   4868 -----
   4869 
   4870 - Several tests weren't being run from regrtest.py (test_timeout.py,
   4871   test_tarfile.py, test_netrc.py, test_multifile.py,
   4872   test_importhooks.py and test_imp.py).  Now they are.  (Note to
   4873   developers: please read Lib/test/README when creating a new test, to
   4874   make sure to do it right!  All tests need to use either unittest or
   4875   pydoc.)
   4876 
   4877 - Added test_posix.py, a test suite for the posix module.
   4878 
   4879 - Added test_hexoct.py, a test suite for hex/oct constant folding.
   4880 
   4881 Windows
   4882 -------
   4883 
   4884 - The timeout code for socket connect() didn't work right; this has
   4885   now been fixed.  test_timeout.py should pass (at least most of the
   4886   time).
   4887 
   4888 - distutils' msvccompiler class now passes the preprocessor options to
   4889   the resource compiler.  See SF patch #669198.
   4890 
   4891 - The bsddb module now ships with Sleepycat's 4.1.25.NC, the latest
   4892   release without strong cryptography.
   4893 
   4894 - sys.path[0], if it contains a directory name, is now always an
   4895   absolute pathname. (SF patch #664376.)
   4896 
   4897 - The new logging package is now installed by the Windows installer.  It
   4898   wasn't in 2.3a1 due to oversight.
   4899 
   4900 Mac
   4901 ---
   4902 
   4903 - There are new dialogs EasyDialogs.AskFileForOpen, AskFileForSave
   4904   and AskFolder. The old macfs.StandardGetFile and friends are deprecated.
   4905 
   4906 - Most of the standard library now uses pathnames or FSRefs in preference
   4907   of FSSpecs, and use the underlying Carbon.File and Carbon.Folder modules
   4908   in stead of macfs. macfs will probably be deprecated in the future.
   4909 
   4910 - Type Carbon.File.FSCatalogInfo and supporting methods have been implemented.
   4911   This also makes macfs.FSSpec.SetDates() work again.
   4912 
   4913 - There is a new module pimp, the package install manager for Python, and
   4914   accompanying applet PackageManager. These allow you to easily download
   4915   and install pretested extension packages either in source or binary
   4916   form. Only in MacPython-OSX.
   4917 
   4918 - Applets are now built with bundlebuilder in MacPython-OSX, which should make
   4919   them more robust and also provides a path towards BuildApplication. The
   4920   downside of this change is that applets can no longer be run from the
   4921   Terminal window, this will hopefully be fixed in the 2.3b1.
   4922 
   4923 
   4924 What's New in Python 2.3 alpha 1?
   4925 =================================
   4926 
   4927 *Release date: 31-Dec-2002*
   4928 
   4929 Type/class unification and new-style classes
   4930 --------------------------------------------
   4931 
   4932 - One can now assign to __bases__ and __name__ of new-style classes.
   4933 
   4934 - dict() now accepts keyword arguments so that dict(one=1, two=2)
   4935   is the equivalent of {"one": 1, "two": 2}.  Accordingly,
   4936   the existing (but undocumented) 'items' keyword argument has
   4937   been eliminated.  This means that dict(items=someMapping) now has
   4938   a different meaning than before.
   4939 
   4940 - int() now returns a long object if the argument is outside the
   4941   integer range, so int("4" * 1000), int(1e200) and int(1L<<1000) will
   4942   all return long objects instead of raising an OverflowError.
   4943 
   4944 - Assignment to __class__ is disallowed if either the old or the new
   4945   class is a statically allocated type object (such as defined by an
   4946   extension module).  This prevents anomalies like 2.__class__ = bool.
   4947 
   4948 - New-style object creation and deallocation have been sped up
   4949   significantly; they are now faster than classic instance creation
   4950   and deallocation.
   4951 
   4952 - The __slots__ variable can now mention "private" names, and the
   4953   right thing will happen (e.g. __slots__ = ["__foo"]).
   4954 
   4955 - The built-ins slice() and buffer() are now callable types.  The
   4956   types classobj (formerly class), code, function, instance, and
   4957   instancemethod (formerly instance-method), which have no built-in
   4958   names but are accessible through the types module, are now also
   4959   callable.  The type dict-proxy is renamed to dictproxy.
   4960 
   4961 - Cycles going through the __class__ link of a new-style instance are
   4962   now detected by the garbage collector.
   4963 
   4964 - Classes using __slots__ are now properly garbage collected.
   4965   [SF bug 519621]
   4966 
   4967 - Tightened the __slots__ rules: a slot name must be a valid Python
   4968   identifier.
   4969 
   4970 - The constructor for the module type now requires a name argument and
   4971   takes an optional docstring argument.  Previously, this constructor
   4972   ignored its arguments.  As a consequence, deriving a class from a
   4973   module (not from the module type) is now illegal; previously this
   4974   created an unnamed module, just like invoking the module type did.
   4975   [SF bug 563060]
   4976 
   4977 - A new type object, 'basestring', is added.  This is a common base type
   4978   for 'str' and 'unicode', and can be used instead of
   4979   types.StringTypes, e.g. to test whether something is "a string":
   4980   isinstance(x, basestring) is True for Unicode and 8-bit strings.  This
   4981   is an abstract base class and cannot be instantiated directly.
   4982 
   4983 - Changed new-style class instantiation so that when C's __new__
   4984   method returns something that's not a C instance, its __init__ is
   4985   not called.  [SF bug #537450]
   4986 
   4987 - Fixed super() to work correctly with class methods.  [SF bug #535444]
   4988 
   4989 - If you try to pickle an instance of a class that has __slots__ but
   4990   doesn't define or override __getstate__, a TypeError is now raised.
   4991   This is done by adding a bozo __getstate__ to the class that always
   4992   raises TypeError.  (Before, this would appear to be pickled, but the
   4993   state of the slots would be lost.)
   4994 
   4995 Core and builtins
   4996 -----------------
   4997 
   4998 - Import from zipfiles is now supported.  The name of a zipfile placed
   4999   on sys.path causes the import statement to look for importable Python
   5000   modules (with .py, pyc and .pyo extensions) and packages inside the
   5001   zipfile.  The zipfile import follows the specification (though not
   5002   the sample implementation) of PEP 273.  The semantics of __path__ are
   5003   compatible with those that have been implemented in Jython since
   5004   Jython 2.1.
   5005 
   5006 - PEP 302 has been accepted.  Although it was initially developed to
   5007   support zipimport, it offers a new, general import hook mechanism.
   5008   Several new variables have been added to the sys module:
   5009   sys.meta_path, sys.path_hooks, and sys.path_importer_cache; these
   5010   make extending the import statement much more convenient than
   5011   overriding the __import__ built-in function.  For a description of
   5012   these, see PEP 302.
   5013 
   5014 - A frame object's f_lineno attribute can now be written to from a
   5015   trace function to change which line will execute next.  A command to
   5016   exploit this from pdb has been added.  [SF patch #643835]
   5017 
   5018 - The _codecs support module for codecs.py was turned into a built-in
   5019   module to assure that at least the built-in codecs are available
   5020   to the Python parser for source code decoding according to PEP 263.
   5021 
   5022 - issubclass now supports a tuple as the second argument, just like
   5023   isinstance does. ``issubclass(X, (A, B))`` is equivalent to
   5024   ``issubclass(X, A) or issubclass(X, B)``.
   5025 
   5026 - Thanks to Armin Rigo, the last known way to provoke a system crash
   5027   by cleverly arranging for a comparison function to mutate a list
   5028   during a list.sort() operation has been fixed.  The effect of
   5029   attempting to mutate a list, or even to inspect its contents or
   5030   length, while a sort is in progress, is not defined by the language.
   5031   The C implementation of Python 2.3 attempts to detect mutations,
   5032   and raise ValueError if one occurs, but there's no guarantee that
   5033   all mutations will be caught, or that any will be caught across
   5034   releases or implementations.
   5035 
   5036 - Unicode file name processing for Windows (PEP 277) is implemented.
   5037   All platforms now have an os.path.supports_unicode_filenames attribute,
   5038   which is set to True on Windows NT/2000/XP, and False elsewhere.
   5039 
   5040 - Codec error handling callbacks (PEP 293) are implemented.
   5041   Error handling in unicode.encode or str.decode can now be customized.
   5042 
   5043 - A subtle change to the semantics of the built-in function intern():
   5044   interned strings are no longer immortal.  You must keep a reference
   5045   to the return value intern() around to get the benefit.
   5046 
   5047 - Use of 'None' as a variable, argument or attribute name now
   5048   issues a SyntaxWarning.  In the future, None may become a keyword.
   5049 
   5050 - SET_LINENO is gone.  co_lnotab is now consulted to determine when to
   5051   call the trace function.  C code that accessed f_lineno should call
   5052   PyCode_Addr2Line instead (f_lineno is still there, but only kept up
   5053   to date when there is a trace function set).
   5054 
   5055 - There's a new warning category, FutureWarning.  This is used to warn
   5056   about a number of situations where the value or sign of an integer
   5057   result will change in Python 2.4 as a result of PEP 237 (integer
   5058   unification).  The warnings implement stage B0 mentioned in that
   5059   PEP.  The warnings are about the following situations:
   5060 
   5061     - Octal and hex literals without 'L' prefix in the inclusive range
   5062       [0x80000000..0xffffffff]; these are currently negative ints, but
   5063       in Python 2.4 they will be positive longs with the same bit
   5064       pattern.
   5065 
   5066     - Left shifts on integer values that cause the outcome to lose
   5067       bits or have a different sign than the left operand.  To be
   5068       precise: x<<n where this currently doesn't yield the same value
   5069       as long(x)<<n; in Python 2.4, the outcome will be long(x)<<n.
   5070 
   5071     - Conversions from ints to string that show negative values as
   5072       unsigned ints in the inclusive range [0x80000000..0xffffffff];
   5073       this affects the functions hex() and oct(), and the string
   5074       formatting codes %u, %o, %x, and %X.  In Python 2.4, these will
   5075       show signed values (e.g. hex(-1) currently returns "0xffffffff";
   5076       in Python 2.4 it will return "-0x1").
   5077 
   5078 - The bits manipulated under the cover by sys.setcheckinterval() have
   5079   been changed.  Both the check interval and the ticker used to be
   5080   per-thread values.  They are now just a pair of global variables.
   5081   In addition, the default check interval was boosted from 10 to 100
   5082   bytecode instructions.  This may have some effect on systems that
   5083   relied on the old default value.  In particular, in multi-threaded
   5084   applications which try to be highly responsive, response time will
   5085   increase by some (perhaps imperceptible) amount.
   5086 
   5087 - When multiplying very large integers, a version of the so-called
   5088   Karatsuba algorithm is now used.  This is most effective if the
   5089   inputs have roughly the same size.  If they both have about N digits,
   5090   Karatsuba multiplication has O(N**1.58) runtime (the exponent is
   5091   log_base_2(3)) instead of the previous O(N**2).  Measured results may
   5092   be better or worse than that, depending on platform quirks.  Besides
   5093   the O() improvement in raw instruction count, the Karatsuba algorithm
   5094   appears to have much better cache behavior on extremely large integers
   5095   (starting in the ballpark of a million bits).  Note that this is a
   5096   simple implementation, and there's no intent here to compete with,
   5097   e.g., GMP.  It gives a very nice speedup when it applies, but a package
   5098   devoted to fast large-integer arithmetic should run circles around it.
   5099 
   5100 - u'%c' will now raise a ValueError in case the argument is an
   5101   integer outside the valid range of Unicode code point ordinals.
   5102 
   5103 - The tempfile module has been overhauled for enhanced security.  The
   5104   mktemp() function is now deprecated; new, safe replacements are
   5105   mkstemp() (for files) and mkdtemp() (for directories), and the
   5106   higher-level functions NamedTemporaryFile() and TemporaryFile().
   5107   Use of some global variables in this module is also deprecated; the
   5108   new functions have keyword arguments to provide the same
   5109   functionality.  All Lib, Tools and Demo modules that used the unsafe
   5110   interfaces have been updated to use the safe replacements.  Thanks
   5111   to Zack Weinberg!
   5112 
   5113 - When x is an object whose class implements __mul__ and __rmul__,
   5114   1.0*x would correctly invoke __rmul__, but 1*x would erroneously
   5115   invoke __mul__.  This was due to the sequence-repeat code in the int
   5116   type.  This has been fixed now.
   5117 
   5118 - Previously, "str1 in str2" required str1 to be a string of length 1.
   5119   This restriction has been relaxed to allow str1 to be a string of
   5120   any length.  Thus "'el' in 'hello world'" returns True now.
   5121 
   5122 - File objects are now their own iterators.  For a file f, iter(f) now
   5123   returns f (unless f is closed), and f.next() is similar to
   5124   f.readline() when EOF is not reached; however, f.next() uses a
   5125   readahead buffer that messes up the file position, so mixing
   5126   f.next() and f.readline() (or other methods) doesn't work right.
   5127   Calling f.seek() drops the readahead buffer, but other operations
   5128   don't.  It so happens that this gives a nice additional speed boost
   5129   to "for line in file:"; the xreadlines method and corresponding
   5130   module are now obsolete.  Thanks to Oren Tirosh!
   5131 
   5132 - Encoding declarations (PEP 263, phase 1) have been implemented.  A
   5133   comment of the form "# -*- coding: <encodingname> -*-" in the first
   5134   or second line of a Python source file indicates the encoding.
   5135 
   5136 - list.sort() has a new implementation.  While cross-platform results
   5137   may vary, and in data-dependent ways, this is much faster on many
   5138   kinds of partially ordered lists than the previous implementation,
   5139   and reported to be just as fast on randomly ordered lists on
   5140   several major platforms.  This sort is also stable (if A==B and A
   5141   precedes B in the list at the start, A precedes B after the sort too),
   5142   although the language definition does not guarantee stability.  A
   5143   potential drawback is that list.sort() may require temp space of
   5144   len(list)*2 bytes (``*4`` on a 64-bit machine).  It's therefore possible
   5145   for list.sort() to raise MemoryError now, even if a comparison function
   5146   does not.  See <http://www.python.org/sf/587076> for full details.
   5147 
   5148 - All standard iterators now ensure that, once StopIteration has been
   5149   raised, all future calls to next() on the same iterator will also
   5150   raise StopIteration.  There used to be various counterexamples to
   5151   this behavior, which could have caused confusion or subtle program
   5152   breakage, without any benefits.  (Note that this is still an
   5153   iterator's responsibility; the iterator framework does not enforce
   5154   this.)
   5155 
   5156 - Ctrl+C handling on Windows has been made more consistent with
   5157   other platforms.  KeyboardInterrupt can now reliably be caught,
   5158   and Ctrl+C at an interactive prompt no longer terminates the
   5159   process under NT/2k/XP (it never did under Win9x).  Ctrl+C will
   5160   interrupt time.sleep() in the main thread, and any child processes
   5161   created via the popen family (on win2k; we can't make win9x work
   5162   reliably) are also interrupted (as generally happens on for Linux/Unix.)
   5163   [SF bugs 231273, 439992 and 581232]
   5164 
   5165 - sys.getwindowsversion() has been added on Windows.  This
   5166   returns a tuple with information about the version of Windows
   5167   currently running.
   5168 
   5169 - Slices and repetitions of buffer objects now consistently return
   5170   a string.  Formerly, strings would be returned most of the time,
   5171   but a buffer object would be returned when the repetition count
   5172   was one or when the slice range was all inclusive.
   5173 
   5174 - Unicode objects in sys.path are no longer ignored but treated
   5175   as directory names.
   5176 
   5177 - Fixed string.startswith and string.endswith built-in methods
   5178   so they accept negative indices.  [SF bug 493951]
   5179 
   5180 - Fixed a bug with a continue inside a try block and a yield in the
   5181   finally clause.  [SF bug 567538]
   5182 
   5183 - Most built-in sequences now support "extended slices", i.e. slices
   5184   with a third "stride" parameter.  For example, "hello world"[::-1]
   5185   gives "dlrow olleh".
   5186 
   5187 - A new warning PendingDeprecationWarning was added to provide
   5188   direction on features which are in the process of being deprecated.
   5189   The warning will not be printed by default.  To see the pending
   5190   deprecations, use -Walways::PendingDeprecationWarning::
   5191   as a command line option or warnings.filterwarnings() in code.
   5192 
   5193 - Deprecated features of xrange objects have been removed as
   5194   promised.  The start, stop, and step attributes and the tolist()
   5195   method no longer exist.  xrange repetition and slicing have been
   5196   removed.
   5197 
   5198 - New built-in function enumerate(x), from PEP 279.  Example:
   5199   enumerate("abc") is an iterator returning (0,"a"), (1,"b"), (2,"c").
   5200   The argument can be an arbitrary iterable object.
   5201 
   5202 - The assert statement no longer tests __debug__ at runtime.  This means
   5203   that assert statements cannot be disabled by assigning a false value
   5204   to __debug__.
   5205 
   5206 - A method zfill() was added to str and unicode, that fills a numeric
   5207   string to the left with zeros.  For example,
   5208   "+123".zfill(6) -> "+00123".
   5209 
   5210 - Complex numbers supported divmod() and the // and % operators, but
   5211   these make no sense.  Since this was documented, they're being
   5212   deprecated now.
   5213 
   5214 - String and unicode methods lstrip(), rstrip() and strip() now take
   5215   an optional argument that specifies the characters to strip.  For
   5216   example, "Foo!!!?!?!?".rstrip("?!") -> "Foo".
   5217 
   5218 - There's a new dictionary constructor (a class method of the dict
   5219   class), dict.fromkeys(iterable, value=None).  It constructs a
   5220   dictionary with keys taken from the iterable and all values set to a
   5221   single value.  It can be used for building sets and for removing
   5222   duplicates from sequences.
   5223 
   5224 - Added a new dict method pop(key).  This removes and returns the
   5225   value corresponding to key.  [SF patch #539949]
   5226 
   5227 - A new built-in type, bool, has been added, as well as built-in
   5228   names for its two values, True and False.  Comparisons and sundry
   5229   other operations that return a truth value have been changed to
   5230   return a bool instead.  Read PEP 285 for an explanation of why this
   5231   is backward compatible.
   5232 
   5233 - Fixed two bugs reported as SF #535905: under certain conditions,
   5234   deallocating a deeply nested structure could cause a segfault in the
   5235   garbage collector, due to interaction with the "trashcan" code;
   5236   access to the current frame during destruction of a local variable
   5237   could access a pointer to freed memory.
   5238 
   5239 - The optional object allocator ("pymalloc") has been enabled by
   5240   default.  The recommended practice for memory allocation and
   5241   deallocation has been streamlined.  A header file is included,
   5242   Misc/pymemcompat.h, which can be bundled with 3rd party extensions
   5243   and lets them use the same API with Python versions from 1.5.2
   5244   onwards.
   5245 
   5246 - PyErr_Display will provide file and line information for all exceptions
   5247   that have an attribute print_file_and_line, not just SyntaxErrors.
   5248 
   5249 - The UTF-8 codec will now encode and decode Unicode surrogates
   5250   correctly and without raising exceptions for unpaired ones.
   5251 
   5252 - Universal newlines (PEP 278) is implemented.  Briefly, using 'U'
   5253   instead of 'r' when opening a text file for reading changes the line
   5254   ending convention so that any of '\r', '\r\n', and '\n' is
   5255   recognized (even mixed in one file); all three are converted to
   5256   '\n', the standard Python line end character.
   5257 
   5258 - file.xreadlines() now raises a ValueError if the file is closed:
   5259   Previously, an xreadlines object was returned which would raise
   5260   a ValueError when the xreadlines.next() method was called.
   5261 
   5262 - sys.exit() inadvertently allowed more than one argument.
   5263   An exception will now be raised if more than one argument is used.
   5264 
   5265 - Changed evaluation order of dictionary literals to conform to the
   5266   general left to right evaluation order rule. Now {f1(): f2()} will
   5267   evaluate f1 first.
   5268 
   5269 - Fixed bug #521782: when a file was in non-blocking mode, file.read()
   5270   could silently lose data or wrongly throw an unknown error.
   5271 
   5272 - The sq_repeat, sq_inplace_repeat, sq_concat and sq_inplace_concat
   5273   slots are now always tried after trying the corresponding nb_* slots.
   5274   This fixes a number of minor bugs (see bug #624807).
   5275 
   5276 - Fix problem with dynamic loading on 64-bit AIX (see bug #639945).
   5277 
   5278 Extension modules
   5279 -----------------
   5280 
   5281 - Added three operators to the operator module:
   5282     operator.pow(a,b) which is equivalent to:  a**b.
   5283     operator.is_(a,b) which is equivalent to:  a is b.
   5284     operator.is_not(a,b) which is equivalent to:  a is not b.
   5285 
   5286 - posix.openpty now works on all systems that have /dev/ptmx.
   5287 
   5288 - A module zipimport exists to support importing code from zip
   5289   archives.
   5290 
   5291 - The new datetime module supplies classes for manipulating dates and
   5292   times.  The basic design came from the Zope "fishbowl process", and
   5293   favors practical commercial applications over calendar esoterica.  See
   5294 
   5295       http://www.zope.org/Members/fdrake/DateTimeWiki/FrontPage
   5296 
   5297 - _tkinter now returns Tcl objects, instead of strings. Objects which
   5298   have Python equivalents are converted to Python objects, other objects
   5299   are wrapped. This can be configured through the wantobjects method,
   5300   or Tkinter.wantobjects.
   5301 
   5302 - The PyBSDDB wrapper around the Sleepycat Berkeley DB library has
   5303   been added as the package bsddb.  The traditional bsddb module is
   5304   still available in source code, but not built automatically anymore,
   5305   and is now named bsddb185.  This supports Berkeley DB versions from
   5306   3.0 to 4.1.  For help converting your databases from the old module (which
   5307   probably used an obsolete version of Berkeley DB) to the new module, see
   5308   the db2pickle.py and pickle2db.py scripts described in the Tools/Demos
   5309   section above.
   5310 
   5311 - unicodedata was updated to Unicode 3.2. It supports normalization
   5312   and names for Hangul syllables and CJK unified ideographs.
   5313 
   5314 - resource.getrlimit() now returns longs instead of ints.
   5315 
   5316 - readline now dynamically adjusts its input/output stream if
   5317   sys.stdin/stdout changes.
   5318 
   5319 - The _tkinter module (and hence Tkinter) has dropped support for
   5320   Tcl/Tk 8.0 and 8.1.  Only Tcl/Tk versions 8.2, 8.3 and 8.4 are
   5321   supported.
   5322 
   5323 - cPickle.BadPickleGet is now a class.
   5324 
   5325 - The time stamps in os.stat_result are floating point numbers
   5326   after stat_float_times has been called.
   5327 
   5328 - If the size passed to mmap.mmap() is larger than the length of the
   5329   file on non-Windows platforms, a ValueError is raised. [SF bug 585792]
   5330 
   5331 - The xreadlines module is slated for obsolescence.
   5332 
   5333 - The strptime function in the time module is now always available (a
   5334   Python implementation is used when the C library doesn't define it).
   5335 
   5336 - The 'new' module is no longer an extension, but a Python module that
   5337   only exists for backwards compatibility.  Its contents are no longer
   5338   functions but callable type objects.
   5339 
   5340 - The bsddb.*open functions can now take 'None' as a filename.
   5341   This will create a temporary in-memory bsddb that won't be
   5342   written to disk.
   5343 
   5344 - posix.getloadavg, posix.lchown, posix.killpg, posix.mknod, and
   5345   posix.getpgid have been added where available.
   5346 
   5347 - The locale module now exposes the C library's gettext interface. It
   5348   also has a new function getpreferredencoding.
   5349 
   5350 - A security hole ("double free") was found in zlib-1.1.3, a popular
   5351   third party compression library used by some Python modules.  The
   5352   hole was quickly plugged in zlib-1.1.4, and the Windows build of
   5353   Python now ships with zlib-1.1.4.
   5354 
   5355 - pwd, grp, and resource return enhanced tuples now, with symbolic
   5356   field names.
   5357 
   5358 - array.array is now a type object. A new format character
   5359   'u' indicates Py_UNICODE arrays. For those, .tounicode and
   5360   .fromunicode methods are available. Arrays now support __iadd__
   5361   and __imul__.
   5362 
   5363 - dl now builds on every system that has dlfcn.h.  Failure in case
   5364   of sizeof(int)!=sizeof(long)!=sizeof(void*) is delayed until dl.open
   5365   is called.
   5366 
   5367 - The sys module acquired a new attribute, api_version, which evaluates
   5368   to the value of the PYTHON_API_VERSION macro with which the
   5369   interpreter was compiled.
   5370 
   5371 - Fixed bug #470582: sre module would return a tuple (None, 'a', 'ab')
   5372   when applying the regular expression '^((a)c)?(ab)$' on 'ab'. It now
   5373   returns (None, None, 'ab'), as expected. Also fixed handling of
   5374   lastindex/lastgroup match attributes in similar cases. For example,
   5375   when running the expression r'(a)(b)?b' over 'ab', lastindex must be
   5376   1, not 2.
   5377 
   5378 - Fixed bug #581080: sre scanner was not checking the buffer limit
   5379   before increasing the current pointer. This was creating an infinite
   5380   loop in the search function, once the pointer exceeded the buffer
   5381   limit.
   5382 
   5383 - The os.fdopen function now enforces a file mode starting with the
   5384   letter 'r', 'w' or 'a', otherwise a ValueError is raised. This fixes
   5385   bug #623464.
   5386 
   5387 - The linuxaudiodev module is now deprecated; it is being replaced by
   5388   ossaudiodev.  The interface has been extended to cover a lot more of
   5389   OSS (see www.opensound.com), including most DSP ioctls and the
   5390   OSS mixer API.  Documentation forthcoming in 2.3a2.
   5391 
   5392 Library
   5393 -------
   5394 
   5395 - imaplib.py now supports SSL (Tino Lange and Piers Lauder).
   5396 
   5397 - Freeze's modulefinder.py has been moved to the standard library;
   5398   slightly improved so it will issue less false missing submodule
   5399   reports (see sf path #643711 for details).  Documentation will follow
   5400   with Python 2.3a2.
   5401 
   5402 - os.path exposes getctime.
   5403 
   5404 - unittest.py now has two additional methods called assertAlmostEqual()
   5405   and failIfAlmostEqual().  They implement an approximate comparison
   5406   by rounding the difference between the two arguments and comparing
   5407   the result to zero.  Approximate comparison is essential for
   5408   unit tests of floating point results.
   5409 
   5410 - calendar.py now depends on the new datetime module rather than
   5411   the time module.  As a result, the range of allowable dates
   5412   has been increased.
   5413 
   5414 - pdb has a new 'j(ump)' command to select the next line to be
   5415   executed.
   5416 
   5417 - The distutils created windows installers now can run a
   5418   postinstallation script.
   5419 
   5420 - doctest.testmod can now be called without argument, which means to
   5421   test the current module.
   5422 
   5423 - When canceling a server that implemented threading with a keyboard
   5424   interrupt, the server would shut down but not terminate (waiting on
   5425   client threads). A new member variable, daemon_threads, was added to
   5426   the ThreadingMixIn class in SocketServer.py to make it explicit that
   5427   this behavior needs to be controlled.
   5428 
   5429 - A new module, optparse, provides a fancy alternative to getopt for
   5430   command line parsing.  It is a slightly modified version of Greg
   5431   Ward's Optik package.
   5432 
   5433 - UserDict.py now defines a DictMixin class which defines all dictionary
   5434   methods for classes that already have a minimum mapping interface.
   5435   This greatly simplifies writing classes that need to be substitutable
   5436   for dictionaries (such as the shelve module).
   5437 
   5438 - shelve.py now subclasses from UserDict.DictMixin.  Now shelve supports
   5439   all dictionary methods.  This eases the transition to persistent
   5440   storage for scripts originally written with dictionaries in mind.
   5441 
   5442 - shelve.open and the various classes in shelve.py now accept an optional
   5443   binary flag, which defaults to False.  If True, the values stored in the
   5444   shelf are binary pickles.
   5445 
   5446 - A new package, logging, implements the logging API defined by PEP
   5447   282.  The code is written by Vinay Sajip.
   5448 
   5449 - StreamReader, StreamReaderWriter and StreamRecoder in the codecs
   5450   modules are iterators now.
   5451 
   5452 - gzip.py now handles files exceeding 2GB.  Files over 4GB also work
   5453   now (provided the OS supports it, and Python is configured with large
   5454   file support), but in that case the underlying gzip file format can
   5455   record only the least-significant 32 bits of the file size, so that
   5456   some tools working with gzipped files may report an incorrect file
   5457   size.
   5458 
   5459 - xml.sax.saxutils.unescape has been added, to replace entity references
   5460   with their entity value.
   5461 
   5462 - Queue.Queue.{put,get} now support an optional timeout argument.
   5463 
   5464 - Various features of Tk 8.4 are exposed in Tkinter.py. The multiple
   5465   option of tkFileDialog is exposed as function askopenfile{,name}s.
   5466 
   5467 - Various configure methods of Tkinter have been stream-lined, so that
   5468   tag_configure, image_configure, window_configure now return a
   5469   dictionary when invoked with no argument.
   5470 
   5471 - Importing the readline module now no longer has the side effect of
   5472   calling setlocale(LC_CTYPE, "").  The initial "C" locale, or
   5473   whatever locale is explicitly set by the user, is preserved.  If you
   5474   want repr() of 8-bit strings in your preferred encoding to preserve
   5475   all printable characters of that encoding, you have to add the
   5476   following code to your $PYTHONSTARTUP file or to your application's
   5477   main():
   5478 
   5479     import locale
   5480     locale.setlocale(locale.LC_CTYPE, "")
   5481 
   5482 - shutil.move was added. shutil.copytree now reports errors as an
   5483   exception at the end, instead of printing error messages.
   5484 
   5485 - Encoding name normalization was generalized to not only
   5486   replace hyphens with underscores, but also all other non-alphanumeric
   5487   characters (with the exception of the dot which is used for Python
   5488   package names during lookup). The aliases.py mapping was updated
   5489   to the new standard.
   5490 
   5491 - mimetypes has two new functions: guess_all_extensions() which
   5492   returns a list of all known extensions for a mime type, and
   5493   add_type() which adds one mapping between a mime type and
   5494   an extension to the database.
   5495 
   5496 - New module: sets, defines the class Set that implements a mutable
   5497   set type using the keys of a dict to represent the set.  There's
   5498   also a class ImmutableSet which is useful when you need sets of sets
   5499   or when you need to use sets as dict keys, and a class BaseSet which
   5500   is the base class of the two.
   5501 
   5502 - Added random.sample(population,k) for random sampling without replacement.
   5503   Returns a k length list of unique elements chosen from the population.
   5504 
   5505 - random.randrange(-sys.maxint-1, sys.maxint) no longer raises
   5506   OverflowError.  That is, it now accepts any combination of 'start'
   5507   and 'stop' arguments so long as each is in the range of Python's
   5508   bounded integers.
   5509 
   5510 - Thanks to Raymond Hettinger, random.random() now uses a new core
   5511   generator.  The Mersenne Twister algorithm is implemented in C,
   5512   threadsafe, faster than the previous generator, has an astronomically
   5513   large period (2**19937-1), creates random floats to full 53-bit
   5514   precision, and may be the most widely tested random number generator
   5515   in existence.
   5516 
   5517   The random.jumpahead(n) method has different semantics for the new
   5518   generator.  Instead of jumping n steps ahead, it uses n and the
   5519   existing state to create a new state.  This means that jumpahead()
   5520   continues to support multi-threaded code needing generators of
   5521   non-overlapping sequences.  However, it will break code which relies
   5522   on jumpahead moving a specific number of steps forward.
   5523 
   5524   The attributes random.whseed and random.__whseed have no meaning for
   5525   the new generator.  Code using these attributes should switch to a
   5526   new class, random.WichmannHill which is provided for backward
   5527   compatibility and to make an alternate generator available.
   5528 
   5529 - New "algorithms" module: heapq, implements a heap queue.  Thanks to
   5530   Kevin O'Connor for the code and Franois Pinard for an entertaining
   5531   write-up explaining the theory and practical uses of heaps.
   5532 
   5533 - New encoding for the Palm OS character set: palmos.
   5534 
   5535 - binascii.crc32() and the zipfile module had problems on some 64-bit
   5536   platforms.  These have been fixed.  On a platform with 8-byte C longs,
   5537   crc32() now returns a signed-extended 4-byte result, so that its value
   5538   as a Python int is equal to the value computed a 32-bit platform.
   5539 
   5540 - xml.dom.minidom.toxml and toprettyxml now take an optional encoding
   5541   argument.
   5542 
   5543 - Some fixes in the copy module: when an object is copied through its
   5544   __reduce__ method, there was no check for a __setstate__ method on
   5545   the result [SF patch 565085]; deepcopy should treat instances of
   5546   custom metaclasses the same way it treats instances of type 'type'
   5547   [SF patch 560794].
   5548 
   5549 - Sockets now support timeout mode.  After s.settimeout(T), where T is
   5550   a float expressing seconds, subsequent operations raise an exception
   5551   if they cannot be completed within T seconds.  To disable timeout
   5552   mode, use s.settimeout(None).  There's also a module function,
   5553   socket.setdefaulttimeout(T), which sets the default for all sockets
   5554   created henceforth.
   5555 
   5556 - getopt.gnu_getopt was added.  This supports GNU-style option
   5557   processing, where options can be mixed with non-option arguments.
   5558 
   5559 - Stop using strings for exceptions.  String objects used for
   5560   exceptions are now classes deriving from Exception.  The objects
   5561   changed were: Tkinter.TclError, bdb.BdbQuit, macpath.norm_error,
   5562   tabnanny.NannyNag, and xdrlib.Error.
   5563 
   5564 - Constants BOM_UTF8, BOM_UTF16, BOM_UTF16_LE, BOM_UTF16_BE,
   5565   BOM_UTF32, BOM_UTF32_LE and BOM_UTF32_BE that represent the Byte
   5566   Order Mark in UTF-8, UTF-16 and UTF-32 encodings for little and
   5567   big endian systems were added to the codecs module. The old names
   5568   BOM32_* and BOM64_* were off by a factor of 2.
   5569 
   5570 - Added conversion functions math.degrees() and math.radians().
   5571 
   5572 - math.log() now takes an optional argument:  math.log(x[, base]).
   5573 
   5574 - ftplib.retrlines() now tests for callback is None rather than testing
   5575   for False.  Was causing an error when given a callback object which
   5576   was callable but also returned len() as zero.  The change may
   5577   create new breakage if the caller relied on the undocumented behavior
   5578   and called with callback set to [] or some other False value not
   5579   identical to None.
   5580 
   5581 - random.gauss() uses a piece of hidden state used by nothing else,
   5582   and the .seed() and .whseed() methods failed to reset it.  In other
   5583   words, setting the seed didn't completely determine the sequence of
   5584   results produced by random.gauss().  It does now.  Programs repeatedly
   5585   mixing calls to a seed method with calls to gauss() may see different
   5586   results now.
   5587 
   5588 - The pickle.Pickler class grew a clear_memo() method to mimic that
   5589   provided by cPickle.Pickler.
   5590 
   5591 - difflib's SequenceMatcher class now does a dynamic analysis of
   5592   which elements are so frequent as to constitute noise.  For
   5593   comparing files as sequences of lines, this generally works better
   5594   than the IS_LINE_JUNK function, and function ndiff's linejunk
   5595   argument defaults to None now as a result.  A happy benefit is
   5596   that SequenceMatcher may run much faster now when applied
   5597   to large files with many duplicate lines (for example, C program
   5598   text with lots of repeated "}" and "return NULL;" lines).
   5599 
   5600 - New Text.dump() method in Tkinter module.
   5601 
   5602 - New distutils commands for building packagers were added to
   5603   support pkgtool on Solaris and swinstall on HP-UX.
   5604 
   5605 - distutils now has a new abstract binary packager base class
   5606   command/bdist_packager, which simplifies writing packagers.
   5607   This will hopefully provide the missing bits to encourage
   5608   people to submit more packagers, e.g. for Debian, FreeBSD
   5609   and other systems.
   5610 
   5611 - The UTF-16, -LE and -BE stream readers now raise a
   5612   NotImplementedError for all calls to .readline(). Previously, they
   5613   used to just produce garbage or fail with an encoding error --
   5614   UTF-16 is a 2-byte encoding and the C lib's line reading APIs don't
   5615   work well with these.
   5616 
   5617 - compileall now supports quiet operation.
   5618 
   5619 - The BaseHTTPServer now implements optional HTTP/1.1 persistent
   5620   connections.
   5621 
   5622 - socket module: the SSL support was broken out of the main
   5623   _socket module C helper and placed into a new _ssl helper
   5624   which now gets imported by socket.py if available and working.
   5625 
   5626 - encodings package: added aliases for all supported IANA character
   5627   sets
   5628 
   5629 - ftplib: to safeguard the user's privacy, anonymous login will use
   5630   "anonymous@" as default password, rather than the real user and host
   5631   name.
   5632 
   5633 - webbrowser: tightened up the command passed to os.system() so that
   5634   arbitrary shell code can't be executed because a bogus URL was
   5635   passed in.
   5636 
   5637 - gettext.translation has an optional fallback argument, and
   5638   gettext.find an optional all argument. Translations will now fallback
   5639   on a per-message basis. The module supports plural forms, by means
   5640   of gettext.[d]ngettext and Translation.[u]ngettext.
   5641 
   5642 - distutils bdist commands now offer a --skip-build option.
   5643 
   5644 - warnings.warn now accepts a Warning instance as first argument.
   5645 
   5646 - The xml.sax.expatreader.ExpatParser class will no longer create
   5647   circular references by using itself as the locator that gets passed
   5648   to the content handler implementation.  [SF bug #535474]
   5649 
   5650 - The email.Parser.Parser class now properly parses strings regardless
   5651   of their line endings, which can be any of \r, \n, or \r\n (CR, LF,
   5652   or CRLF).  Also, the Header class's constructor default arguments
   5653   has changed slightly so that an explicit maxlinelen value is always
   5654   honored, and so unicode conversion error handling can be specified.
   5655 
   5656 - distutils' build_ext command now links C++ extensions with the C++
   5657   compiler available in the Makefile or CXX environment variable, if
   5658   running under \*nix.
   5659 
   5660 - New module bz2: provides a comprehensive interface for the bz2 compression
   5661   library.  It implements a complete file interface, one-shot (de)compression
   5662   functions, and types for sequential (de)compression.
   5663 
   5664 - New pdb command 'pp' which is like 'p' except that it pretty-prints
   5665   the value of its expression argument.
   5666 
   5667 - Now bdist_rpm distutils command understands a verify_script option in
   5668   the config file, including the contents of the referred filename in
   5669   the "%verifyscript" section of the rpm spec file.
   5670 
   5671 - Fixed bug #495695: webbrowser module would run graphic browsers in a
   5672   unix environment even if DISPLAY was not set. Also, support for
   5673   skipstone browser was included.
   5674 
   5675 - Fixed bug #636769: rexec would run unallowed code if subclasses of
   5676   strings were used as parameters for certain functions.
   5677 
   5678 Tools/Demos
   5679 -----------
   5680 
   5681 - pygettext.py now supports globbing on Windows, and accepts module
   5682   names in addition to accepting file names.
   5683 
   5684 - The SGI demos (Demo/sgi) have been removed.  Nobody thought they
   5685   were interesting any more.  (The SGI library modules and extensions
   5686   are still there; it is believed that at least some of these are
   5687   still used and useful.)
   5688 
   5689 - IDLE supports the new encoding declarations (PEP 263); it can also
   5690   deal with legacy 8-bit files if they use the locale's encoding. It
   5691   allows non-ASCII strings in the interactive shell and executes them
   5692   in the locale's encoding.
   5693 
   5694 - freeze.py now produces binaries which can import shared modules,
   5695   unlike before when this failed due to missing symbol exports in
   5696   the generated binary.
   5697 
   5698 Build
   5699 -----
   5700 
   5701 - On Unix, IDLE is now installed automatically.
   5702 
   5703 - The fpectl module is not built by default; it's dangerous or useless
   5704   except in the hands of experts.
   5705 
   5706 - The public Python C API will generally be declared using PyAPI_FUNC
   5707   and PyAPI_DATA macros, while Python extension module init functions
   5708   will be declared with PyMODINIT_FUNC.  DL_EXPORT/DL_IMPORT macros
   5709   are deprecated.
   5710 
   5711 - A bug was fixed that could cause COUNT_ALLOCS builds to segfault, or
   5712   get into infinite loops, when a new-style class got garbage-collected.
   5713   Unfortunately, to avoid this, the way COUNT_ALLOCS works requires
   5714   that new-style classes be immortal in COUNT_ALLOCS builds.  Note that
   5715   COUNT_ALLOCS is not enabled by default, in either release or debug
   5716   builds, and that new-style classes are immortal only in COUNT_ALLOCS
   5717   builds.
   5718 
   5719 - Compiling out the cyclic garbage collector is no longer an option.
   5720   The old symbol WITH_CYCLE_GC is now ignored, and Python.h arranges
   5721   that it's always defined (for the benefit of any extension modules
   5722   that may be conditionalizing on it).  A bonus is that any extension
   5723   type participating in cyclic gc can choose to participate in the
   5724   Py_TRASHCAN mechanism now too; in the absence of cyclic gc, this used
   5725   to require editing the core to teach the trashcan mechanism about the
   5726   new type.
   5727 
   5728 - According to Annex F of the current C standard,
   5729 
   5730     The Standard C macro HUGE_VAL and its float and long double analogs,
   5731     HUGE_VALF and HUGE_VALL, expand to expressions whose values are
   5732     positive infinities.
   5733 
   5734   Python only uses the double HUGE_VAL, and only to #define its own symbol
   5735   Py_HUGE_VAL.  Some platforms have incorrect definitions for HUGE_VAL.
   5736   pyport.h used to try to worm around that, but the workarounds triggered
   5737   other bugs on other platforms, so we gave up.  If your platform defines
   5738   HUGE_VAL incorrectly, you'll need to #define Py_HUGE_VAL to something
   5739   that works on your platform.  The only instance of this I'm sure about
   5740   is on an unknown subset of Cray systems, described here:
   5741 
   5742   http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm
   5743 
   5744   Presumably 2.3a1 breaks such systems.  If anyone uses such a system, help!
   5745 
   5746 - The configure option --without-doc-strings can be used to remove the
   5747   doc strings from the built-in functions and modules; this reduces the
   5748   size of the executable.
   5749 
   5750 - The universal newlines option (PEP 278) is on by default.  On Unix
   5751   it can be disabled by passing --without-universal-newlines to the
   5752   configure script.  On other platforms, remove
   5753   WITH_UNIVERSAL_NEWLINES from pyconfig.h.
   5754 
   5755 - On Unix, a shared libpython2.3.so can be created with --enable-shared.
   5756 
   5757 - All uses of the CACHE_HASH, INTERN_STRINGS, and DONT_SHARE_SHORT_STRINGS
   5758   preprocessor symbols were eliminated.  The internal decisions they
   5759   controlled stopped being experimental long ago.
   5760 
   5761 - The tools used to build the documentation now work under Cygwin as
   5762   well as Unix.
   5763 
   5764 - The bsddb and dbm module builds have been changed to try and avoid version
   5765   skew problems and disable linkage with Berkeley DB 1.85 unless the
   5766   installer knows what s/he's doing.  See the section on building these
   5767   modules in the README file for details.
   5768 
   5769 C API
   5770 -----
   5771 
   5772 - PyNumber_Check() now returns true for string and unicode objects.
   5773   This is a result of these types having a partially defined
   5774   tp_as_number slot.  (This is not a feature, but an indication that
   5775   PyNumber_Check() is not very useful to determine numeric behavior.
   5776   It may be deprecated.)
   5777 
   5778 - The string object's layout has changed: the pointer member
   5779   ob_sinterned has been replaced by an int member ob_sstate.  On some
   5780   platforms (e.g. most 64-bit systems) this may change the offset of
   5781   the ob_sval member, so as a precaution the API_VERSION has been
   5782   incremented.  The apparently unused feature of "indirect interned
   5783   strings", supported by the ob_sinterned member, is gone.  Interned
   5784   strings are now usually mortal; there is a new API,
   5785   PyString_InternImmortal() that creates immortal interned strings.
   5786   (The ob_sstate member can only take three values; however, while
   5787   making it a char saves a few bytes per string object on average, in
   5788   it also slowed things down a bit because ob_sval was no longer
   5789   aligned.)
   5790 
   5791 - The Py_InitModule*() functions now accept NULL for the 'methods'
   5792   argument.  Modules without global functions are becoming more common
   5793   now that factories can be types rather than functions.
   5794 
   5795 - New C API PyUnicode_FromOrdinal() which exposes unichr() at C
   5796   level.
   5797 
   5798 - New functions PyErr_SetExcFromWindowsErr() and
   5799   PyErr_SetExcFromWindowsErrWithFilename(). Similar to
   5800   PyErr_SetFromWindowsErrWithFilename() and
   5801   PyErr_SetFromWindowsErr(), but they allow specifying
   5802   the exception type to raise. Available on Windows.
   5803 
   5804 - Py_FatalError() is now declared as taking a const char* argument.  It
   5805   was previously declared without const.  This should not affect working
   5806   code.
   5807 
   5808 - Added new macro PySequence_ITEM(o, i) that directly calls
   5809   sq_item without rechecking that o is a sequence and without
   5810   adjusting for negative indices.
   5811 
   5812 - PyRange_New() now raises ValueError if the fourth argument is not 1.
   5813   This is part of the removal of deprecated features of the xrange
   5814   object.
   5815 
   5816 - PyNumber_Coerce() and PyNumber_CoerceEx() now also invoke the type's
   5817   coercion if both arguments have the same type but this type has the
   5818   CHECKTYPES flag set.  This is to better support proxies.
   5819 
   5820 - The type of tp_free has been changed from "``void (*)(PyObject *)``" to
   5821   "``void (*)(void *)``".
   5822 
   5823 - PyObject_Del, PyObject_GC_Del are now functions instead of macros.
   5824 
   5825 - A type can now inherit its metatype from its base type.  Previously,
   5826   when PyType_Ready() was called, if ob_type was found to be NULL, it
   5827   was always set to &PyType_Type; now it is set to base->ob_type,
   5828   where base is tp_base, defaulting to &PyObject_Type.
   5829 
   5830 - PyType_Ready() accidentally did not inherit tp_is_gc; now it does.
   5831 
   5832 - The PyCore_* family of APIs have been removed.
   5833 
   5834 - The "u#" parser marker will now pass through Unicode objects as-is
   5835   without going through the buffer API.
   5836 
   5837 - The enumerators of cmp_op have been renamed to use the prefix ``PyCmp_``.
   5838 
   5839 - An old #define of ANY as void has been removed from pyport.h.  This
   5840   hasn't been used since Python's pre-ANSI days, and the #define has
   5841   been marked as obsolete since then.  SF bug 495548 says it created
   5842   conflicts with other packages, so keeping it around wasn't harmless.
   5843 
   5844 - Because Python's magic number scheme broke on January 1st, we decided
   5845   to stop Python development.  Thanks for all the fish!
   5846 
   5847 - Some of us don't like fish, so we changed Python's magic number
   5848   scheme to a new one. See Python/import.c for details.
   5849 
   5850 New platforms
   5851 -------------
   5852 
   5853 - OpenVMS is now supported.
   5854 
   5855 - AtheOS is now supported.
   5856 
   5857 - the EMX runtime environment on OS/2 is now supported.
   5858 
   5859 - GNU/Hurd is now supported.
   5860 
   5861 Tests
   5862 -----
   5863 
   5864 - The regrtest.py script's -u option now provides a way to say "allow
   5865   all resources except this one."  For example, to allow everything
   5866   except bsddb, give the option '-uall,-bsddb'.
   5867 
   5868 Windows
   5869 -------
   5870 
   5871 - The Windows distribution now ships with version 4.0.14 of the
   5872   Sleepycat Berkeley database library.  This should be a huge
   5873   improvement over the previous Berkeley DB 1.85, which had many
   5874   bugs.
   5875   XXX What are the licensing issues here?
   5876   XXX If a user has a database created with a previous version of
   5877   XXX     Python, what must they do to convert it?
   5878   XXX I'm still not sure how to link this thing (see PCbuild/readme.txt).
   5879   XXX The version # is likely to change before 2.3a1.
   5880 
   5881 - The Windows distribution now ships with a Secure Sockets Library (SLL)
   5882    module (_ssl.pyd)
   5883 
   5884 - The Windows distribution now ships with Tcl/Tk version 8.4.1 (it
   5885   previously shipped with Tcl/Tk 8.3.2).
   5886 
   5887 - When Python is built under a Microsoft compiler, sys.version now
   5888   includes the compiler version number (_MSC_VER).  For example, under
   5889   MSVC 6, sys.version contains the substring "MSC v.1200 ".  1200 is
   5890   the value of _MSC_VER under MSVC 6.
   5891 
   5892 - Sometimes the uninstall executable (UNWISE.EXE) vanishes.  One cause
   5893   of that has been fixed in the installer (disabled Wise's "delete in-
   5894   use files" uninstall option).
   5895 
   5896 - Fixed a bug in urllib's proxy handling in Windows.  [SF bug #503031]
   5897 
   5898 - The installer now installs Start menu shortcuts under (the local
   5899   equivalent of) "All Users" when doing an Admin install.
   5900 
   5901 - file.truncate([newsize]) now works on Windows for all newsize values.
   5902   It used to fail if newsize didn't fit in 32 bits, reflecting a
   5903   limitation of MS _chsize (which is no longer used).
   5904 
   5905 - os.waitpid() is now implemented for Windows, and can be used to block
   5906   until a specified process exits.  This is similar to, but not exactly
   5907   the same as, os.waitpid() on POSIX systems.  If you're waiting for
   5908   a specific process whose pid was obtained from one of the spawn()
   5909   functions, the same Python os.waitpid() code works across platforms.
   5910   See the docs for details.  The docs were changed to clarify that
   5911   spawn functions return, and waitpid requires, a process handle on
   5912   Windows (not the same thing as a Windows process id).
   5913 
   5914 - New tempfile.TemporaryFile implementation for Windows:  this doesn't
   5915   need a TemporaryFileWrapper wrapper anymore, and should be immune
   5916   to a nasty problem:  before 2.3, if you got a temp file on Windows, it
   5917   got wrapped in an object whose close() method first closed the
   5918   underlying file, then deleted the file.  This usually worked fine.
   5919   However, the spawn family of functions on Windows create (at a low C
   5920   level) the same set of open files in the spawned process Q as were
   5921   open in the spawning process P.  If a temp file f was among them, then
   5922   doing f.close() in P first closed P's C-level file handle on f, but Q's
   5923   C-level file handle on f remained open, so the attempt in P to delete f
   5924   blew up with a "Permission denied" error (Windows doesn't allow
   5925   deleting open files).  This was surprising, subtle, and difficult to
   5926   work around.
   5927 
   5928 - The os module now exports all the symbolic constants usable with the
   5929   low-level os.open() on Windows:  the new constants in 2.3 are
   5930   O_NOINHERIT, O_SHORT_LIVED, O_TEMPORARY, O_RANDOM and O_SEQUENTIAL.
   5931   The others were also available in 2.2:  O_APPEND, O_BINARY, O_CREAT,
   5932   O_EXCL, O_RDONLY, O_RDWR, O_TEXT, O_TRUNC and O_WRONLY.  Contrary
   5933   to Microsoft docs, O_SHORT_LIVED does not seem to imply O_TEMPORARY
   5934   (so specify both if you want both; note that neither is useful unless
   5935   specified with O_CREAT too).
   5936 
   5937 Mac
   5938 ----
   5939 
   5940 - Mac/Relnotes is gone, the release notes are now here.
   5941 
   5942 - Python (the OSX-only, unix-based version, not the OS9-compatible CFM
   5943   version) now fully supports unicode strings as arguments to various file
   5944   system calls, eg. open(), file(), os.stat() and os.listdir().
   5945 
   5946 - The current naming convention for Python on the Macintosh is that MacPython
   5947   refers to the unix-based OSX-only version, and MacPython-OS9 refers to the
   5948   CFM-based version that runs on both OS9 and OSX.
   5949 
   5950 - All MacPython-OS9 functionality is now available in an OSX unix build,
   5951   including the Carbon modules, the IDE, OSA support, etc. A lot of this
   5952   will only work correctly in a framework build, though, because you cannot
   5953   talk to the window manager unless your application is run from a .app
   5954   bundle. There is a command line tool "pythonw" that runs your script
   5955   with an interpreter living in such a .app bundle, this interpreter should
   5956   be used to run any Python script using the window manager (including
   5957   Tkinter or wxPython scripts).
   5958 
   5959 - Most of Mac/Lib has moved to Lib/plat-mac, which is again used both in
   5960   MacPython-OSX and MacPython-OS9. The only modules remaining in Mac/Lib
   5961   are specifically for MacPython-OS9 (CFM support, preference resources, etc).
   5962 
   5963 - A new utility PythonLauncher will start a Python interpreter when a .py or
   5964   .pyw script is double-clicked in the Finder. By default .py scripts are
   5965   run with a normal Python interpreter in a Terminal window and .pyw
   5966   files are run with a window-aware pythonw interpreter without a Terminal
   5967   window, but all this can be customized.
   5968 
   5969 - MacPython-OS9 is now Carbon-only, so it runs on Mac OS 9 or Mac OS X and
   5970   possibly on Mac OS 8.6 with the right CarbonLib installed, but not on earlier
   5971   releases.
   5972 
   5973 - Many tools such as BuildApplet.py and gensuitemodule.py now support a command
   5974   line interface too.
   5975 
   5976 - All the Carbon classes are now PEP253 compliant, meaning that you can
   5977   subclass them from Python. Most of the attributes have gone, you should
   5978   now use the accessor function call API, which is also what Apple's
   5979   documentation uses. Some attributes such as grafport.visRgn are still
   5980   available for convenience.
   5981 
   5982 - New Carbon modules File (implementing the APIs in Files.h and Aliases.h)
   5983   and Folder (APIs from Folders.h). The old macfs built-in module is
   5984   gone, and replaced by a Python wrapper around the new modules.
   5985 
   5986 - Pathname handling should now be fully consistent: MacPython-OSX always uses
   5987   unix pathnames and MacPython-OS9 always uses colon-separated Mac pathnames
   5988   (also when running on Mac OS X).
   5989 
   5990 - New Carbon modules Help and AH give access to the Carbon Help Manager.
   5991   There are hooks in the IDE to allow accessing the Python documentation
   5992   (and Apple's Carbon and Cocoa documentation) through the Help Viewer.
   5993   See Mac/OSX/README for converting the Python documentation to a
   5994   Help Viewer compatible form and installing it.
   5995 
   5996 - OSA support has been redesigned and the generated Python classes now
   5997   mirror the inheritance defined by the underlying OSA classes.
   5998 
   5999 - MacPython no longer maps both \r and \n to \n on input for any text file.
   6000   This feature has been replaced by universal newline support (PEP278).
   6001 
   6002 - The default encoding for Python sourcefiles in MacPython-OS9 is no longer
   6003   mac-roman (or whatever your local Mac encoding was) but "ascii", like on
   6004   other platforms. If you really need sourcefiles with Mac characters in them
   6005   you can change this in site.py.
   6006 
   6007 
   6008 What's New in Python 2.2 final?
   6009 ===============================
   6010 
   6011 *Release date: 21-Dec-2001*
   6012 
   6013 Type/class unification and new-style classes
   6014 --------------------------------------------
   6015 
   6016 - pickle.py, cPickle: allow pickling instances of new-style classes
   6017   with a custom metaclass.
   6018 
   6019 Core and builtins
   6020 -----------------
   6021 
   6022 - weakref proxy object: when comparing, unwrap both arguments if both
   6023   are proxies.
   6024 
   6025 Extension modules
   6026 -----------------
   6027 
   6028 - binascii.b2a_base64(): fix a potential buffer overrun when encoding
   6029   very short strings.
   6030 
   6031 - cPickle: the obscure "fast" mode was suspected of causing stack
   6032   overflows on the Mac.  Hopefully fixed this by setting the recursion
   6033   limit much smaller.  If the limit is too low (it only affects
   6034   performance), you can change it by defining PY_CPICKLE_FAST_LIMIT
   6035   when compiling cPickle.c (or in pyconfig.h).
   6036 
   6037 Library
   6038 -------
   6039 
   6040 - dumbdbm.py: fixed a dumb old bug (the file didn't get synched at
   6041   close or delete time).
   6042 
   6043 - rfc822.py: fixed a bug where the address '<>' was converted to None
   6044   instead of an empty string (also fixes the email.Utils module).
   6045 
   6046 - xmlrpclib.py: version 1.0.0; uses precision for doubles.
   6047 
   6048 - test suite: the pickle and cPickle tests were not executing any code
   6049   when run from the standard regression test.
   6050 
   6051 Tools/Demos
   6052 -----------
   6053 
   6054 Build
   6055 -----
   6056 
   6057 C API
   6058 -----
   6059 
   6060 New platforms
   6061 -------------
   6062 
   6063 Tests
   6064 -----
   6065 
   6066 Windows
   6067 -------
   6068 
   6069 - distutils package: fixed broken Windows installers (bdist_wininst).
   6070 
   6071 - tempfile.py: prevent mysterious warnings when TemporaryFileWrapper
   6072   instances are deleted at process exit time.
   6073 
   6074 - socket.py: prevent mysterious warnings when socket instances are
   6075   deleted at process exit time.
   6076 
   6077 - posixmodule.c: fix a Windows crash with stat() of a filename ending
   6078   in backslash.
   6079 
   6080 Mac
   6081 ----
   6082 
   6083 - The Carbon toolbox modules have been upgraded to Universal Headers
   6084   3.4, and experimental CoreGraphics and CarbonEvents modules have
   6085   been added.  All only for framework-enabled MacOSX.
   6086 
   6087 
   6088 What's New in Python 2.2c1?
   6089 ===========================
   6090 
   6091 *Release date: 14-Dec-2001*
   6092 
   6093 Type/class unification and new-style classes
   6094 --------------------------------------------
   6095 
   6096 - Guido's tutorial introduction to the new type/class features has
   6097   been extensively updated.  See
   6098 
   6099       http://www.python.org/2.2/descrintro.html
   6100 
   6101   That remains the primary documentation in this area.
   6102 
   6103 - Fixed a leak: instance variables declared with __slots__ were never
   6104   deleted!
   6105 
   6106 - The "delete attribute" method of descriptor objects is called
   6107   __delete__, not __del__.  In previous releases, it was mistakenly
   6108   called __del__, which created an unfortunate overloading condition
   6109   with finalizers.  (The "get attribute" and "set attribute" methods
   6110   are still called __get__ and __set__, respectively.)
   6111 
   6112 - Some subtle issues with the super built-in were fixed:
   6113 
   6114   (a) When super itself is subclassed, its __get__ method would still
   6115       return an instance of the base class (i.e., of super).
   6116 
   6117   (b) super(C, C()).__class__ would return C rather than super.  This
   6118       is confusing.  To fix this, I decided to change the semantics of
   6119       super so that it only applies to code attributes, not to data
   6120       attributes.  After all, overriding data attributes is not
   6121       supported anyway.
   6122 
   6123   (c) The __get__ method didn't check whether the argument was an
   6124       instance of the type used in creation of the super instance.
   6125 
   6126 - Previously, hash() of an instance of a subclass of a mutable type
   6127   (list or dictionary) would return some value, rather than raising
   6128   TypeError.  This has been fixed.  Also, directly calling
   6129   dict.__hash__ and list.__hash__ now raises the same TypeError
   6130   (previously, these were the same as object.__hash__).
   6131 
   6132 - New-style objects now support deleting their __dict__.  This is for
   6133   all intents and purposes equivalent to assigning a brand new empty
   6134   dictionary, but saves space if the object is not used further.
   6135 
   6136 Core and builtins
   6137 -----------------
   6138 
   6139 - -Qnew now works as documented in PEP 238:  when -Qnew is passed on
   6140   the command line, all occurrences of "/" use true division instead
   6141   of classic division.  See the PEP for details.  Note that "all"
   6142   means all instances in library and 3rd-party modules, as well as in
   6143   your own code.  As the PEP says, -Qnew is intended for use only in
   6144   educational environments with control over the libraries in use.
   6145   Note that test_coercion.py in the standard Python test suite fails
   6146   under -Qnew; this is expected, and won't be repaired until true
   6147   division becomes the default (in the meantime, test_coercion is
   6148   testing the current rules).
   6149 
   6150 - complex() now only allows the first argument to be a string
   6151   argument, and raises TypeError if either the second arg is a string
   6152   or if the second arg is specified when the first is a string.
   6153 
   6154 Extension modules
   6155 -----------------
   6156 
   6157 - gc.get_referents was renamed to gc.get_referrers.
   6158 
   6159 Library
   6160 -------
   6161 
   6162 - Functions in the os.spawn() family now release the global interpreter
   6163   lock around calling the platform spawn.  They should always have done
   6164   this, but did not before 2.2c1.  Multithreaded programs calling
   6165   an os.spawn function with P_WAIT will no longer block all Python threads
   6166   until the spawned program completes.  It's possible that some programs
   6167   relies on blocking, although more likely by accident than by design.
   6168 
   6169 - webbrowser defaults to netscape.exe on OS/2 now.
   6170 
   6171 - Tix.ResizeHandle exposes detach_widget, hide, and show.
   6172 
   6173 - The charset alias windows_1252 has been added.
   6174 
   6175 - types.StringTypes is a tuple containing the defined string types;
   6176   usually this will be (str, unicode), but if Python was compiled
   6177   without Unicode support it will be just (str,).
   6178 
   6179 - The pulldom and minidom modules were synchronized to PyXML.
   6180 
   6181 Tools/Demos
   6182 -----------
   6183 
   6184 - A new script called Tools/scripts/google.py was added, which fires
   6185   off a search on Google.
   6186 
   6187 Build
   6188 -----
   6189 
   6190 - Note that release builds of Python should arrange to define the
   6191   preprocessor symbol NDEBUG on the command line (or equivalent).
   6192   In the 2.2 pre-release series we tried to define this by magic in
   6193   Python.h instead, but it proved to cause problems for extension
   6194   authors.  The Unix, Windows and Mac builds now all define NDEBUG in
   6195   release builds via cmdline (or equivalent) instead.  Ports to
   6196   other platforms should do likewise.
   6197 
   6198 - It is no longer necessary to use --with-suffix when building on a
   6199   case-insensitive file system (such as Mac OS X HFS+). In the build
   6200   directory an extension is used, but not in the installed python.
   6201 
   6202 C API
   6203 -----
   6204 
   6205 - New function PyDict_MergeFromSeq2() exposes the built-in dict
   6206   constructor's logic for updating a dictionary from an iterable object
   6207   producing key-value pairs.
   6208 
   6209 - PyArg_ParseTupleAndKeywords() requires that the number of entries in
   6210   the keyword list equal the number of argument specifiers.  This
   6211   wasn't checked correctly, and PyArg_ParseTupleAndKeywords could even
   6212   dump core in some bad cases.  This has been repaired.  As a result,
   6213   PyArg_ParseTupleAndKeywords may raise RuntimeError in bad cases that
   6214   previously went unchallenged.
   6215 
   6216 New platforms
   6217 -------------
   6218 
   6219 Tests
   6220 -----
   6221 
   6222 Windows
   6223 -------
   6224 
   6225 Mac
   6226 ----
   6227 
   6228 - In unix-Python on Mac OS X (and darwin) sys.platform is now "darwin",
   6229   without any trailing digits.
   6230 
   6231 - Changed logic for finding python home in Mac OS X framework Pythons.
   6232   Now sys.executable points to the executable again, in stead of to
   6233   the shared library. The latter is used only for locating the python
   6234   home.
   6235 
   6236 
   6237 What's New in Python 2.2b2?
   6238 ===========================
   6239 
   6240 *Release date: 16-Nov-2001*
   6241 
   6242 Type/class unification and new-style classes
   6243 --------------------------------------------
   6244 
   6245 - Multiple inheritance mixing new-style and classic classes in the
   6246   list of base classes is now allowed, so this works now:
   6247 
   6248       class Classic: pass
   6249       class Mixed(Classic, object): pass
   6250 
   6251   The MRO (method resolution order) for each base class is respected
   6252   according to its kind, but the MRO for the derived class is computed
   6253   using new-style MRO rules if any base class is a new-style class.
   6254   This needs to be documented.
   6255 
   6256 - The new built-in dictionary() constructor, and dictionary type, have
   6257   been renamed to dict.  This reflects a decade of common usage.
   6258 
   6259 - dict() now accepts an iterable object producing 2-sequences.  For
   6260   example, dict(d.items()) == d for any dictionary d.  The argument,
   6261   and the elements of the argument, can be any iterable objects.
   6262 
   6263 - New-style classes can now have a __del__ method, which is called
   6264   when the instance is deleted (just like for classic classes).
   6265 
   6266 - Assignment to object.__dict__ is now possible, for objects that are
   6267   instances of new-style classes that have a __dict__ (unless the base
   6268   class forbids it).
   6269 
   6270 - Methods of built-in types now properly check for keyword arguments
   6271   (formerly these were silently ignored).  The only built-in methods
   6272   that take keyword arguments are __call__, __init__ and __new__.
   6273 
   6274 - The socket function has been converted to a type; see below.
   6275 
   6276 Core and builtins
   6277 -----------------
   6278 
   6279 - Assignment to __debug__ raises SyntaxError at compile-time.  This
   6280   was promised when 2.1c1 was released as "What's New in Python 2.1c1"
   6281   (see below) says.
   6282 
   6283 - Clarified the error messages for unsupported operands to an operator
   6284   (like 1 + '').
   6285 
   6286 Extension modules
   6287 -----------------
   6288 
   6289 - mmap has a new keyword argument, "access", allowing a uniform way for
   6290   both Windows and Unix users to create read-only, write-through and
   6291   copy-on-write memory mappings.  This was previously possible only on
   6292   Unix.  A new keyword argument was required to support this in a
   6293   uniform way because the mmap() signatures had diverged across
   6294   platforms.  Thanks to Jay T Miller for repairing this!
   6295 
   6296 - By default, the gc.garbage list now contains only those instances in
   6297   unreachable cycles that have __del__ methods; in 2.1 it contained all
   6298   instances in unreachable cycles.  "Instances" here has been generalized
   6299   to include instances of both new-style and old-style classes.
   6300 
   6301 - The socket module defines a new method for socket objects,
   6302   sendall().  This is like send() but may make multiple calls to
   6303   send() until all data has been sent.  Also, the socket function has
   6304   been converted to a subclassable type, like list and tuple (etc.)
   6305   before it; socket and SocketType are now the same thing.
   6306 
   6307 - Various bugfixes to the curses module.  There is now a test suite
   6308   for the curses module (you have to run it manually).
   6309 
   6310 - binascii.b2a_base64 no longer places an arbitrary restriction of 57
   6311   bytes on its input.
   6312 
   6313 Library
   6314 -------
   6315 
   6316 - tkFileDialog exposes a Directory class and askdirectory
   6317   convenience function.
   6318 
   6319 - Symbolic group names in regular expressions must be unique.  For
   6320   example, the regexp r'(?P<abc>)(?P<abc>)' is not allowed, because a
   6321   single name can't mean both "group 1" and "group 2" simultaneously.
   6322   Python 2.2 detects this error at regexp compilation time;
   6323   previously, the error went undetected, and results were
   6324   unpredictable.  Also in sre, the pattern.split(), pattern.sub(), and
   6325   pattern.subn() methods have been rewritten in C.  Also, an
   6326   experimental function/method finditer() has been added, which works
   6327   like findall() but returns an iterator.
   6328 
   6329 - Tix exposes more commands through the classes DirSelectBox,
   6330   DirSelectDialog, ListNoteBook, Meter, CheckList, and the
   6331   methods tix_addbitmapdir, tix_cget, tix_configure, tix_filedialog,
   6332   tix_getbitmap, tix_getimage, tix_option_get, and tix_resetoptions.
   6333 
   6334 - Traceback objects are now scanned by cyclic garbage collection, so
   6335   cycles created by casual use of sys.exc_info() no longer cause
   6336   permanent memory leaks (provided garbage collection is enabled).
   6337 
   6338 - os.extsep -- a new variable needed by the RISCOS support.  It is the
   6339   separator used by extensions, and is '.' on all platforms except
   6340   RISCOS, where it is '/'.  There is no need to use this variable
   6341   unless you have a masochistic desire to port your code to RISCOS.
   6342 
   6343 - mimetypes.py has optional support for non-standard, but commonly
   6344   found types.  guess_type() and guess_extension() now accept an
   6345   optional 'strict' flag, defaulting to true, which controls whether
   6346   recognize non-standard types or not.  A few non-standard types we
   6347   know about have been added.  Also, when run as a script, there are
   6348   new -l and -e options.
   6349 
   6350 - statcache is now deprecated.
   6351 
   6352 - email.Utils.formatdate() now produces the preferred RFC 2822 style
   6353   dates with numeric timezones (it used to produce obsolete dates
   6354   hard coded to "GMT" timezone).  An optional 'localtime' flag is
   6355   added to produce dates in the local timezone, with daylight savings
   6356   time properly taken into account.
   6357 
   6358 - In pickle and cPickle, instead of masking errors in load() by
   6359   transforming them into SystemError, we let the original exception
   6360   propagate out.  Also, implement support for __safe_for_unpickling__
   6361   in pickle, as it already was supported in cPickle.
   6362 
   6363 Tools/Demos
   6364 -----------
   6365 
   6366 Build
   6367 -----
   6368 
   6369 - The dbm module is built using libdb1 if available.  The bsddb module
   6370   is built with libdb3 if available.
   6371 
   6372 - Misc/Makefile.pre.in has been removed by BDFL pronouncement.
   6373 
   6374 C API
   6375 -----
   6376 
   6377 - New function PySequence_Fast_GET_SIZE() returns the size of a non-
   6378   NULL result from PySequence_Fast(), more quickly than calling
   6379   PySequence_Size().
   6380 
   6381 - New argument unpacking function PyArg_UnpackTuple() added.
   6382 
   6383 - New functions PyObject_CallFunctionObjArgs() and
   6384   PyObject_CallMethodObjArgs() have been added to make it more
   6385   convenient and efficient to call functions and methods from C.
   6386 
   6387 - PyArg_ParseTupleAndKeywords() no longer masks errors, so it's
   6388   possible that this will propagate errors it didn't before.
   6389 
   6390 - New function PyObject_CheckReadBuffer(), which returns true if its
   6391   argument supports the single-segment readable buffer interface.
   6392 
   6393 New platforms
   6394 -------------
   6395 
   6396 - We've finally confirmed that this release builds on HP-UX 11.00,
   6397   *with* threads, and passes the test suite.
   6398 
   6399 - Thanks to a series of patches from Michael Muller, Python may build
   6400   again under OS/2 Visual Age C++.
   6401 
   6402 - Updated RISCOS port by Dietmar Schwertberger.
   6403 
   6404 Tests
   6405 -----
   6406 
   6407 - Added a test script for the curses module.  It isn't run automatically;
   6408   regrtest.py must be run with '-u curses' to enable it.
   6409 
   6410 Windows
   6411 -------
   6412 
   6413 Mac
   6414 ----
   6415 
   6416 - PythonScript has been moved to unsupported and is slated to be
   6417   removed completely in the next release.
   6418 
   6419 - It should now be possible to build applets that work on both OS9 and
   6420   OSX.
   6421 
   6422 - The core is now linked with CoreServices not Carbon; as a side
   6423   result, default 8bit encoding on OSX is now ASCII.
   6424 
   6425 - Python should now build on OSX 10.1.1
   6426 
   6427 
   6428 What's New in Python 2.2b1?
   6429 ===========================
   6430 
   6431 *Release date: 19-Oct-2001*
   6432 
   6433 Type/class unification and new-style classes
   6434 --------------------------------------------
   6435 
   6436 - New-style classes are now always dynamic (except for built-in and
   6437   extension types).  There is no longer a performance penalty, and I
   6438   no longer see another reason to keep this baggage around.  One relic
   6439   remains: the __dict__ of a new-style class is a read-only proxy; you
   6440   must set the class's attribute to modify it.  As a consequence, the
   6441   __defined__ attribute of new-style types no longer exists, for lack
   6442   of need: there is once again only one __dict__ (although in the
   6443   future a __cache__ may be resurrected with a similar function, if I
   6444   can prove that it actually speeds things up).
   6445 
   6446 - C.__doc__ now works as expected for new-style classes (in 2.2a4 it
   6447   always returned None, even when there was a class docstring).
   6448 
   6449 - doctest now finds and runs docstrings attached to new-style classes,
   6450   class methods, static methods, and properties.
   6451 
   6452 Core and builtins
   6453 -----------------
   6454 
   6455 - A very subtle syntactical pitfall in list comprehensions was fixed.
   6456   For example: [a+b for a in 'abc', for b in 'def'].  The comma in
   6457   this example is a mistake.  Previously, this would silently let 'a'
   6458   iterate over the singleton tuple ('abc',), yielding ['abcd', 'abce',
   6459   'abcf'] rather than the intended ['ad', 'ae', 'af', 'bd', 'be',
   6460   'bf', 'cd', 'ce', 'cf'].  Now, this is flagged as a syntax error.
   6461   Note that [a for a in <singleton>] is a convoluted way to say
   6462   [<singleton>] anyway, so it's not like any expressiveness is lost.
   6463 
   6464 - getattr(obj, name, default) now only catches AttributeError, as
   6465   documented, rather than returning the default value for all
   6466   exceptions (which could mask bugs in a __getattr__ hook, for
   6467   example).
   6468 
   6469 - Weak reference objects are now part of the core and offer a C API.
   6470   A bug which could allow a core dump when binary operations involved
   6471   proxy reference has been fixed.  weakref.ReferenceError is now a
   6472   built-in exception.
   6473 
   6474 - unicode(obj) now behaves more like str(obj), accepting arbitrary
   6475   objects, and calling a __unicode__ method if it exists.
   6476   unicode(obj, encoding) and unicode(obj, encoding, errors) still
   6477   require an 8-bit string or character buffer argument.
   6478 
   6479 - isinstance() now allows any object as the first argument and a
   6480   class, a type or something with a __bases__ tuple attribute for the
   6481   second argument.  The second argument may also be a tuple of a
   6482   class, type, or something with __bases__, in which case isinstance()
   6483   will return true if the first argument is an instance of any of the
   6484   things contained in the second argument tuple.  E.g.
   6485 
   6486   isinstance(x, (A, B))
   6487 
   6488   returns true if x is an instance of A or B.
   6489 
   6490 Extension modules
   6491 -----------------
   6492 
   6493 - thread.start_new_thread() now returns the thread ID (previously None).
   6494 
   6495 - binascii has now two quopri support functions, a2b_qp and b2a_qp.
   6496 
   6497 - readline now supports setting the startup_hook and the
   6498   pre_event_hook, and adds the add_history() function.
   6499 
   6500 - os and posix supports chroot(), setgroups() and unsetenv() where
   6501   available.  The stat(), fstat(), statvfs() and fstatvfs() functions
   6502   now return "pseudo-sequences" -- the various fields can now be
   6503   accessed as attributes (e.g. os.stat("/").st_mtime) but for
   6504   backwards compatibility they also behave as a fixed-length sequence.
   6505   Some platform-specific fields (e.g. st_rdev) are only accessible as
   6506   attributes.
   6507 
   6508 - time: localtime(), gmtime() and strptime() now return a
   6509   pseudo-sequence similar to the os.stat() return value, with
   6510   attributes like tm_year etc.
   6511 
   6512 - Decompression objects in the zlib module now accept an optional
   6513   second parameter to decompress() that specifies the maximum amount
   6514   of memory to use for the uncompressed data.
   6515 
   6516 - optional SSL support in the socket module now exports OpenSSL
   6517   functions RAND_add(), RAND_egd(), and RAND_status().  These calls
   6518   are useful on platforms like Solaris where OpenSSL does not
   6519   automatically seed its PRNG.  Also, the keyfile and certfile
   6520   arguments to socket.ssl() are now optional.
   6521 
   6522 - posixmodule (and by extension, the os module on POSIX platforms) now
   6523   exports O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
   6524 
   6525 Library
   6526 -------
   6527 
   6528 - doctest now excludes functions and classes not defined by the module
   6529   being tested, thanks to Tim Hochberg.
   6530 
   6531 - HotShot, a new profiler implemented using a C-based callback, has
   6532   been added.  This substantially reduces the overhead of profiling,
   6533   but it is still quite preliminary.  Support modules and
   6534   documentation will be added in upcoming releases (before 2.2 final).
   6535 
   6536 - profile now produces correct output in situations where an exception
   6537   raised in Python is cleared by C code (e.g. hasattr()).  This used
   6538   to cause wrong output, including spurious claims of recursive
   6539   functions and attribution of time spent to the wrong function.
   6540 
   6541   The code and documentation for the derived OldProfile and HotProfile
   6542   profiling classes was removed.  The code hasn't worked for years (if
   6543   you tried to use them, they raised exceptions).  OldProfile
   6544   intended to reproduce the behavior of the profiler Python used more
   6545   than 7 years ago, and isn't interesting anymore.  HotProfile intended
   6546   to provide a faster profiler (but producing less information), and
   6547   that's a worthy goal we intend to meet via a different approach (but
   6548   without losing information).
   6549 
   6550 - Profile.calibrate() has a new implementation that should deliver
   6551   a much better system-specific calibration constant.  The constant can
   6552   now be specified in an instance constructor, or as a Profile class or
   6553   instance variable, instead of by editing profile.py's source code.
   6554   Calibration must still be done manually (see the docs for the profile
   6555   module).
   6556 
   6557   Note that Profile.calibrate() must be overridden by subclasses.
   6558   Improving the accuracy required exploiting detailed knowledge of
   6559   profiler internals; the earlier method abstracted away the details
   6560   and measured a simplified model instead, but consequently computed
   6561   a constant too small by a factor of 2 on some modern machines.
   6562 
   6563 - quopri's encode and decode methods take an optional header parameter,
   6564   which indicates whether output is intended for the header 'Q'
   6565   encoding.
   6566 
   6567 - The SocketServer.ThreadingMixIn class now closes the request after
   6568   finish_request() returns.  (Not when it errors out though.)
   6569 
   6570 - The nntplib module's NNTP.body() method has grown a 'file' argument
   6571   to allow saving the message body to a file.
   6572 
   6573 - The email package has added a class email.Parser.HeaderParser which
   6574   only parses headers and does not recurse into the message's body.
   6575   Also, the module/class MIMEAudio has been added for representing
   6576   audio data (contributed by Anthony Baxter).
   6577 
   6578 - ftplib should be able to handle files > 2GB.
   6579 
   6580 - ConfigParser.getboolean() now also interprets TRUE, FALSE, YES, NO,
   6581   ON, and OFF.
   6582 
   6583 - xml.dom.minidom NodeList objects now support the length attribute
   6584   and item() method as required by the DOM specifications.
   6585 
   6586 Tools/Demos
   6587 -----------
   6588 
   6589 - Demo/dns was removed.  It no longer serves any purpose; a package
   6590   derived from it is now maintained by Anthony Baxter, see
   6591   http://PyDNS.SourceForge.net.
   6592 
   6593 - The freeze tool has been made more robust, and two new options have
   6594   been added: -X and -E.
   6595 
   6596 Build
   6597 -----
   6598 
   6599 - configure will use CXX in LINKCC if CXX is used to build main() and
   6600   the system requires to link a C++ main using the C++ compiler.
   6601 
   6602 C API
   6603 -----
   6604 
   6605 - The documentation for the tp_compare slot is updated to require that
   6606   the return value must be -1, 0, 1; an arbitrary number <0 or >0 is
   6607   not correct.  This is not yet enforced but will be enforced in
   6608   Python 2.3; even later, we may use -2 to indicate errors and +2 for
   6609   "NotImplemented".  Right now, -1 should be used for an error return.
   6610 
   6611 - PyLong_AsLongLong() now accepts int (as well as long) arguments.
   6612   Consequently, PyArg_ParseTuple's 'L' code also accepts int (as well
   6613   as long) arguments.
   6614 
   6615 - PyThread_start_new_thread() now returns a long int giving the thread
   6616   ID, if one can be calculated; it returns -1 for error, 0 if no
   6617   thread ID is calculated (this is an incompatible change, but only
   6618   the thread module used this API).  This code has only really been
   6619   tested on Linux and Windows; other platforms please beware (and
   6620   report any bugs or strange behavior).
   6621 
   6622 - PyUnicode_FromEncodedObject() no longer accepts Unicode objects as
   6623   input.
   6624 
   6625 New platforms
   6626 -------------
   6627 
   6628 Tests
   6629 -----
   6630 
   6631 Windows
   6632 -------
   6633 
   6634 - Installer:  If you install IDLE, and don't disable file-extension
   6635   registration, a new "Edit with IDLE" context (right-click) menu entry
   6636   is created for .py and .pyw files.
   6637 
   6638 - The signal module now supports SIGBREAK on Windows, thanks to Steven
   6639   Scott.  Note that SIGBREAK is unique to Windows.  The default SIGBREAK
   6640   action remains to call Win32 ExitProcess().  This can be changed via
   6641   signal.signal().  For example::
   6642 
   6643       # Make Ctrl+Break raise KeyboardInterrupt, like Python's default Ctrl+C
   6644       # (SIGINT) behavior.
   6645       import signal
   6646       signal.signal(signal.SIGBREAK, signal.default_int_handler)
   6647 
   6648       try:
   6649           while 1:
   6650               pass
   6651       except KeyboardInterrupt:
   6652           # We get here on Ctrl+C or Ctrl+Break now; if we had not changed
   6653           # SIGBREAK, only on Ctrl+C (and Ctrl+Break would terminate the
   6654           # program without the possibility for any Python-level cleanup).
   6655           print "Clean exit"
   6656 
   6657 
   6658 What's New in Python 2.2a4?
   6659 ===========================
   6660 
   6661 *Release date: 28-Sep-2001*
   6662 
   6663 Type/class unification and new-style classes
   6664 --------------------------------------------
   6665 
   6666 - pydoc and inspect are now aware of new-style classes;
   6667   e.g. help(list) at the interactive prompt now shows proper
   6668   documentation for all operations on list objects.
   6669 
   6670 - Applications using Jim Fulton's ExtensionClass module can now safely
   6671   be used with Python 2.2.  In particular, Zope 2.4.1 now works with
   6672   Python 2.2 (as well as with Python 2.1.1).  The Demo/metaclass
   6673   examples also work again.  It is hoped that Gtk and Boost also work
   6674   with 2.2a4 and beyond.  (If you can confirm this, please write
   6675   webmaster (a] python.org; if there are still problems, please open a bug
   6676   report on SourceForge.)
   6677 
   6678 - property() now takes 4 keyword arguments:  fget, fset, fdel and doc.
   6679   These map to read-only attributes 'fget', 'fset', 'fdel', and '__doc__'
   6680   in the constructed property object.  fget, fset and fdel weren't
   6681   discoverable from Python in 2.2a3.  __doc__ is new, and allows
   6682   associating a docstring with a property.
   6683 
   6684 - Comparison overloading is now more completely implemented.  For
   6685   example, a str subclass instance can properly be compared to a str
   6686   instance, and it can properly overload comparison.  Ditto for most
   6687   other built-in object types.
   6688 
   6689 - The repr() of new-style classes has changed; instead of <type
   6690   'M.Foo'> a new-style class is now rendered as <class 'M.Foo'>,
   6691   *except* for built-in types, which are still rendered as <type
   6692   'Foo'> (to avoid upsetting existing code that might parse or
   6693   otherwise rely on repr() of certain type objects).
   6694 
   6695 - The repr() of new-style objects is now always <Foo object at XXX>;
   6696   previously, it was sometimes <Foo instance at XXX>.
   6697 
   6698 - For new-style classes, what was previously called __getattr__ is now
   6699   called __getattribute__.  This method, if defined, is called for
   6700   *every* attribute access.  A new __getattr__ hook more similar to the
   6701   one in classic classes is defined which is called only if regular
   6702   attribute access raises AttributeError; to catch *all* attribute
   6703   access, you can use __getattribute__ (for new-style classes).  If
   6704   both are defined, __getattribute__ is called first, and if it raises
   6705   AttributeError, __getattr__ is called.
   6706 
   6707 - The __class__ attribute of new-style objects can be assigned to.
   6708   The new class must have the same C-level object layout as the old
   6709   class.
   6710 
   6711 - The built-in file type can be subclassed now.  In the usual pattern,
   6712   "file" is the name of the built-in type, and file() is a new built-in
   6713   constructor, with the same signature as the built-in open() function.
   6714   file() is now the preferred way to open a file.
   6715 
   6716 - Previously, __new__ would only see sequential arguments passed to
   6717   the type in a constructor call; __init__ would see both sequential
   6718   and keyword arguments.  This made no sense whatsoever any more, so
   6719   now both __new__ and __init__ see all arguments.
   6720 
   6721 - Previously, hash() applied to an instance of a subclass of str or
   6722   unicode always returned 0.  This has been repaired.
   6723 
   6724 - Previously, an operation on an instance of a subclass of an
   6725   immutable type (int, long, float, complex, tuple, str, unicode),
   6726   where the subtype didn't override the operation (and so the
   6727   operation was handled by the built-in type), could return that
   6728   instance instead a value of the base type.  For example, if s was of
   6729   a str subclass type, s[:] returned s as-is.  Now it returns a str
   6730   with the same value as s.
   6731 
   6732 - Provisional support for pickling new-style objects has been added.
   6733 
   6734 Core
   6735 ----
   6736 
   6737 - file.writelines() now accepts any iterable object producing strings.
   6738 
   6739 - PyUnicode_FromEncodedObject() now works very much like
   6740   PyObject_Str(obj) in that it tries to use __str__/tp_str
   6741   on the object if the object is not a string or buffer. This
   6742   makes unicode() behave like str() when applied to non-string/buffer
   6743   objects.
   6744 
   6745 - PyFile_WriteObject now passes Unicode objects to the file's write
   6746   method. As a result, all file-like objects which may be the target
   6747   of a print statement must support Unicode objects, i.e. they must
   6748   at least convert them into ASCII strings.
   6749 
   6750 - Thread scheduling on Solaris should be improved; it is no longer
   6751   necessary to insert a small sleep at the start of a thread in order
   6752   to let other runnable threads be scheduled.
   6753 
   6754 Library
   6755 -------
   6756 
   6757 - StringIO.StringIO instances and cStringIO.StringIO instances support
   6758   read character buffer compatible objects for their .write() methods.
   6759   These objects are converted to strings and then handled as such
   6760   by the instances.
   6761 
   6762 - The "email" package has been added.  This is basically a port of the
   6763   mimelib package <http://sf.net/projects/mimelib> with API changes
   6764   and some implementations updated to use iterators and generators.
   6765 
   6766 - difflib.ndiff() and difflib.Differ.compare() are generators now.  This
   6767   restores the ability of Tools/scripts/ndiff.py to start producing output
   6768   before the entire comparison is complete.
   6769 
   6770 - StringIO.StringIO instances and cStringIO.StringIO instances support
   6771   iteration just like file objects (i.e. their .readline() method is
   6772   called for each iteration until it returns an empty string).
   6773 
   6774 - The codecs module has grown four new helper APIs to access
   6775   built-in codecs: getencoder(), getdecoder(), getreader(),
   6776   getwriter().
   6777 
   6778 - SimpleXMLRPCServer: a new module (based upon SimpleHTMLServer)
   6779   simplifies writing XML RPC servers.
   6780 
   6781 - os.path.realpath(): a new function that returns the absolute pathname
   6782   after interpretation of symbolic links.  On non-Unix systems, this
   6783   is an alias for os.path.abspath().
   6784 
   6785 - operator.indexOf() (PySequence_Index() in the C API) now works with any
   6786   iterable object.
   6787 
   6788 - smtplib now supports various authentication and security features of
   6789   the SMTP protocol through the new login() and starttls() methods.
   6790 
   6791 - hmac: a new module implementing keyed hashing for message
   6792   authentication.
   6793 
   6794 - mimetypes now recognizes more extensions and file types.  At the
   6795   same time, some mappings not sanctioned by IANA were removed.
   6796 
   6797 - The "compiler" package has been brought up to date to the state of
   6798   Python 2.2 bytecode generation.  It has also been promoted from a
   6799   Tool to a standard library package.  (Tools/compiler still exists as
   6800   a sample driver.)
   6801 
   6802 Build
   6803 -----
   6804 
   6805 - Large file support (LFS) is now automatic when the platform supports
   6806   it; no more manual configuration tweaks are needed.  On Linux, at
   6807   least, it's possible to have a system whose C library supports large
   6808   files but whose kernel doesn't; in this case, large file support is
   6809   still enabled but doesn't do you any good unless you upgrade your
   6810   kernel or share your Python executable with another system whose
   6811   kernel has large file support.
   6812 
   6813 - The configure script now supplies plausible defaults in a
   6814   cross-compilation environment.  This doesn't mean that the supplied
   6815   values are always correct, or that cross-compilation now works
   6816   flawlessly -- but it's a first step (and it shuts up most of
   6817   autoconf's warnings about AC_TRY_RUN).
   6818 
   6819 - The Unix build is now a bit less chatty, courtesy of the parser
   6820   generator.  The build is completely silent (except for errors) when
   6821   using "make -s", thanks to a -q option to setup.py.
   6822 
   6823 C API
   6824 -----
   6825 
   6826 - The "structmember" API now supports some new flag bits to deny read
   6827   and/or write access to attributes in restricted execution mode.
   6828 
   6829 New platforms
   6830 -------------
   6831 
   6832 - Compaq's iPAQ handheld, running the "familiar" Linux distribution
   6833   (http://familiar.handhelds.org).
   6834 
   6835 Tests
   6836 -----
   6837 
   6838 - The "classic" standard tests, which work by comparing stdout to
   6839   an expected-output file under Lib/test/output/, no longer stop at
   6840   the first mismatch.  Instead the test is run to completion, and a
   6841   variant of ndiff-style comparison is used to report all differences.
   6842   This is much easier to understand than the previous style of reporting.
   6843 
   6844 - The unittest-based standard tests now use regrtest's test_main()
   6845   convention, instead of running as a side-effect of merely being
   6846   imported.  This allows these tests to be run in more natural and
   6847   flexible ways as unittests, outside the regrtest framework.
   6848 
   6849 - regrtest.py is much better integrated with unittest and doctest now,
   6850   especially in regard to reporting errors.
   6851 
   6852 Windows
   6853 -------
   6854 
   6855 - Large file support now also works for files > 4GB, on filesystems
   6856   that support it (NTFS under Windows 2000).  See "What's New in
   6857   Python 2.2a3" for more detail.
   6858 
   6859 
   6860 What's New in Python 2.2a3?
   6861 ===========================
   6862 
   6863 *Release Date: 07-Sep-2001*
   6864 
   6865 Core
   6866 ----
   6867 
   6868 - Conversion of long to float now raises OverflowError if the long is too
   6869   big to represent as a C double.
   6870 
   6871 - The 3-argument builtin pow() no longer allows a third non-None argument
   6872   if either of the first two arguments is a float, or if both are of
   6873   integer types and the second argument is negative (in which latter case
   6874   the arguments are converted to float, so this is really the same
   6875   restriction).
   6876 
   6877 - The builtin dir() now returns more information, and sometimes much
   6878   more, generally naming all attributes of an object, and all attributes
   6879   reachable from the object via its class, and from its class's base
   6880   classes, and so on from them too.  Example:  in 2.2a2, dir([]) returned
   6881   an empty list.  In 2.2a3,
   6882 
   6883   >>> dir([])
   6884   ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
   6885    '__eq__', '__ge__', '__getattr__', '__getitem__', '__getslice__',
   6886    '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__',
   6887    '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__repr__',
   6888    '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__',
   6889    'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
   6890    'reverse', 'sort']
   6891 
   6892   dir(module) continues to return only the module's attributes, though.
   6893 
   6894 - Overflowing operations on plain ints now return a long int rather
   6895   than raising OverflowError.  This is a partial implementation of PEP
   6896   237.  You can use -Wdefault::OverflowWarning to enable a warning for
   6897   this situation, and -Werror::OverflowWarning to revert to the old
   6898   OverflowError exception.
   6899 
   6900 - A new command line option, -Q<arg>, is added to control run-time
   6901   warnings for the use of classic division.  (See PEP 238.)  Possible
   6902   values are -Qold, -Qwarn, -Qwarnall, and -Qnew.  The default is
   6903   -Qold, meaning the / operator has its classic meaning and no
   6904   warnings are issued.  Using -Qwarn issues a run-time warning about
   6905   all uses of classic division for int and long arguments; -Qwarnall
   6906   also warns about classic division for float and complex arguments
   6907   (for use with fixdiv.py).
   6908   [Note:  the remainder of this item (preserved below) became
   6909   obsolete in 2.2c1 -- -Qnew has global effect in 2.2] ::
   6910 
   6911     Using -Qnew is questionable; it turns on new division by default, but
   6912     only in the __main__ module.  You can usefully combine -Qwarn or
   6913     -Qwarnall and -Qnew: this gives the __main__ module new division, and
   6914     warns about classic division everywhere else.
   6915 
   6916 - Many built-in types can now be subclassed.  This applies to int,
   6917   long, float, str, unicode, and tuple.  (The types complex, list and
   6918   dictionary can also be subclassed; this was introduced earlier.)
   6919   Note that restrictions apply when subclassing immutable built-in
   6920   types: you can only affect the value of the instance by overloading
   6921   __new__.  You can add mutable attributes, and the subclass instances
   6922   will have a __dict__ attribute, but you cannot change the "value"
   6923   (as implemented by the base class) of an immutable subclass instance
   6924   once it is created.
   6925 
   6926 - The dictionary constructor now takes an optional argument, a
   6927   mapping-like object, and initializes the dictionary from its
   6928   (key, value) pairs.
   6929 
   6930 - A new built-in type, super, has been added.  This facilitates making
   6931   "cooperative super calls" in a multiple inheritance setting.  For an
   6932   explanation, see http://www.python.org/2.2/descrintro.html#cooperation
   6933 
   6934 - A new built-in type, property, has been added.  This enables the
   6935   creation of "properties".  These are attributes implemented by
   6936   getter and setter functions (or only one of these for read-only or
   6937   write-only attributes), without the need to override __getattr__.
   6938   See http://www.python.org/2.2/descrintro.html#property
   6939 
   6940 - The syntax of floating-point and imaginary literals has been
   6941   liberalized, to allow leading zeroes.  Examples of literals now
   6942   legal that were SyntaxErrors before:
   6943 
   6944       00.0    0e3   0100j   07.5   00000000000000000008.
   6945 
   6946 - An old tokenizer bug allowed floating point literals with an incomplete
   6947   exponent, such as 1e and 3.1e-.  Such literals now raise SyntaxError.
   6948 
   6949 Library
   6950 -------
   6951 
   6952 - telnetlib includes symbolic names for the options, and support for
   6953   setting an option negotiation callback. It also supports processing
   6954   of suboptions.
   6955 
   6956 - The new C standard no longer requires that math libraries set errno to
   6957   ERANGE on overflow.  For platform libraries that exploit this new
   6958   freedom, Python's overflow-checking was wholly broken.  A new overflow-
   6959   checking scheme attempts to repair that, but may not be reliable on all
   6960   platforms (C doesn't seem to provide anything both useful and portable
   6961   in this area anymore).
   6962 
   6963 - Asynchronous timeout actions are available through the new class
   6964   threading.Timer.
   6965 
   6966 - math.log and math.log10 now return sensible results for even huge
   6967   long arguments.  For example, math.log10(10 ** 10000) ~= 10000.0.
   6968 
   6969 - A new function, imp.lock_held(), returns 1 when the import lock is
   6970   currently held.  See the docs for the imp module.
   6971 
   6972 - pickle, cPickle and marshal on 32-bit platforms can now correctly read
   6973   dumps containing ints written on platforms where Python ints are 8 bytes.
   6974   When read on a box where Python ints are 4 bytes, such values are
   6975   converted to Python longs.
   6976 
   6977 - In restricted execution mode (using the rexec module), unmarshalling
   6978   code objects is no longer allowed.  This plugs a security hole.
   6979 
   6980 - unittest.TestResult instances no longer store references to tracebacks
   6981   generated by test failures. This prevents unexpected dangling references
   6982   to objects that should be garbage collected between tests.
   6983 
   6984 Tools
   6985 -----
   6986 
   6987 - Tools/scripts/fixdiv.py has been added which can be used to fix
   6988   division operators as per PEP 238.
   6989 
   6990 Build
   6991 -----
   6992 
   6993 - If you are an adventurous person using Mac OS X you may want to look at
   6994   Mac/OSX. There is a Makefile there that will build Python as a real Mac
   6995   application, which can be used for experimenting with Carbon or Cocoa.
   6996   Discussion of this on pythonmac-sig, please.
   6997 
   6998 C API
   6999 -----
   7000 
   7001 - New function PyObject_Dir(obj), like Python __builtin__.dir(obj).
   7002 
   7003 - Note that PyLong_AsDouble can fail!  This has always been true, but no
   7004   callers checked for it.  It's more likely to fail now, because overflow
   7005   errors are properly detected now.  The proper way to check::
   7006 
   7007       double x = PyLong_AsDouble(some_long_object);
   7008       if (x == -1.0 && PyErr_Occurred()) {
   7009               /* The conversion failed. */
   7010       }
   7011 
   7012 - The GC API has been changed.  Extensions that use the old API will still
   7013   compile but will not participate in GC.  To upgrade an extension
   7014   module:
   7015 
   7016     - rename Py_TPFLAGS_GC to PyTPFLAGS_HAVE_GC
   7017 
   7018     - use PyObject_GC_New or PyObject_GC_NewVar to allocate objects and
   7019       PyObject_GC_Del to deallocate them
   7020 
   7021     - rename PyObject_GC_Init to PyObject_GC_Track and PyObject_GC_Fini
   7022       to PyObject_GC_UnTrack
   7023 
   7024     - remove PyGC_HEAD_SIZE from object size calculations
   7025 
   7026     - remove calls to PyObject_AS_GC and PyObject_FROM_GC
   7027 
   7028 - Two new functions: PyString_FromFormat() and PyString_FromFormatV().
   7029   These can be used safely to construct string objects from a
   7030   sprintf-style format string (similar to the format string supported
   7031   by PyErr_Format()).
   7032 
   7033 New platforms
   7034 -------------
   7035 
   7036 - Stephen Hansen contributed patches sufficient to get a clean compile
   7037   under Borland C (Windows), but he reports problems running it and ran
   7038   out of time to complete the port.  Volunteers?  Expect a MemoryError
   7039   when importing the types module; this is probably shallow, and
   7040   causing later failures too.
   7041 
   7042 Tests
   7043 -----
   7044 
   7045 Windows
   7046 -------
   7047 
   7048 - Large file support is now enabled on Win32 platforms as well as on
   7049   Win64.  This means that, for example, you can use f.tell() and f.seek()
   7050   to manipulate files larger than 2 gigabytes (provided you have enough
   7051   disk space, and are using a Windows filesystem that supports large
   7052   partitions).  Windows filesystem limits:  FAT has a 2GB (gigabyte)
   7053   filesize limit, and large file support makes no difference there.
   7054   FAT32's limit is 4GB, and files >= 2GB are easier to use from Python now.
   7055   NTFS has no practical limit on file size, and files of any size can be
   7056   used from Python now.
   7057 
   7058 - The w9xpopen hack is now used on Windows NT and 2000 too when COMPSPEC
   7059   points to command.com (patch from Brian Quinlan).
   7060 
   7061 
   7062 What's New in Python 2.2a2?
   7063 ===========================
   7064 
   7065 *Release Date: 22-Aug-2001*
   7066 
   7067 Build
   7068 -----
   7069 
   7070 - Tim Peters developed a brand new Windows installer using Wise 8.1,
   7071   generously donated to us by Wise Solutions.
   7072 
   7073 - configure supports a new option --enable-unicode, with the values
   7074   ucs2 and ucs4 (new in 2.2a1). With --disable-unicode, the Unicode
   7075   type and supporting code is completely removed from the interpreter.
   7076 
   7077 - A new configure option --enable-framework builds a Mac OS X framework,
   7078   which "make frameworkinstall" will install. This provides a starting
   7079   point for more mac-like functionality, join pythonmac-sig (a] python.org
   7080   if you are interested in helping.
   7081 
   7082 - The NeXT platform is no longer supported.
   7083 
   7084 - The 'new' module is now statically linked.
   7085 
   7086 Tools
   7087 -----
   7088 
   7089 - The new Tools/scripts/cleanfuture.py can be used to automatically
   7090   edit out obsolete future statements from Python source code.  See
   7091   the module docstring for details.
   7092 
   7093 Tests
   7094 -----
   7095 
   7096 - regrtest.py now knows which tests are expected to be skipped on some
   7097   platforms, allowing clearer test result output to be given.  regrtest
   7098   also has optional --use/-u switch to run normally disabled tests
   7099   which require network access or consume significant disk resources.
   7100 
   7101 - Several new tests in the standard test suite, with special thanks to
   7102   Nick Mathewson.
   7103 
   7104 Core
   7105 ----
   7106 
   7107 - The floor division operator // has been added as outlined in PEP
   7108   238.  The / operator still provides classic division (and will until
   7109   Python 3.0) unless "from __future__ import division" is included, in
   7110   which case the / operator will provide true division.  The operator
   7111   module provides truediv() and floordiv() functions.  Augmented
   7112   assignment variants are included, as are the equivalent overloadable
   7113   methods and C API methods.  See the PEP for a full discussion:
   7114   <http://python.sf.net/peps/pep-0238.html>
   7115 
   7116 - Future statements are now effective in simulated interactive shells
   7117   (like IDLE).  This should "just work" by magic, but read Michael
   7118   Hudson's "Future statements in simulated shells" PEP 264 for full
   7119   details:  <http://python.sf.net/peps/pep-0264.html>.
   7120 
   7121 - The type/class unification (PEP 252-253) was integrated into the
   7122   trunk and is not so tentative any more (the exact specification of
   7123   some features is still tentative).  A lot of work has done on fixing
   7124   bugs and adding robustness and features (performance still has to
   7125   come a long way).
   7126 
   7127 - Warnings about a mismatch in the Python API during extension import
   7128   now use the Python warning framework (which makes it possible to
   7129   write filters for these warnings).
   7130 
   7131 - A function's __dict__ (aka func_dict) will now always be a
   7132   dictionary.  It used to be possible to delete it or set it to None,
   7133   but now both actions raise TypeErrors.  It is still legal to set it
   7134   to a dictionary object.  Getting func.__dict__ before any attributes
   7135   have been assigned now returns an empty dictionary instead of None.
   7136 
   7137 - A new command line option, -E, was added which disables the use of
   7138   all environment variables, or at least those that are specifically
   7139   significant to Python.  Usually those have a name starting with
   7140   "PYTHON".  This was used to fix a problem where the tests fail if
   7141   the user happens to have PYTHONHOME or PYTHONPATH pointing to an
   7142   older distribution.
   7143 
   7144 Library
   7145 -------
   7146 
   7147 - New class Differ and new functions ndiff() and restore() in difflib.py.
   7148   These package the algorithms used by the popular Tools/scripts/ndiff.py,
   7149   for programmatic reuse.
   7150 
   7151 - New function xml.sax.saxutils.quoteattr():  Quote an XML attribute
   7152   value using the minimal quoting required for the value; more
   7153   reliable than using xml.sax.saxutils.escape() for attribute values.
   7154 
   7155 - Readline completion support for cmd.Cmd was added.
   7156 
   7157 - Calling os.tempnam() or os.tmpnam() generate RuntimeWarnings.
   7158 
   7159 - Added function threading.BoundedSemaphore()
   7160 
   7161 - Added Ka-Ping Yee's cgitb.py module.
   7162 
   7163 - The 'new' module now exposes the CO_xxx flags.
   7164 
   7165 - The gc module offers the get_referents function.
   7166 
   7167 New platforms
   7168 -------------
   7169 
   7170 C API
   7171 -----
   7172 
   7173 - Two new APIs PyOS_snprintf() and PyOS_vsnprintf() were added
   7174   which provide a cross-platform implementations for the
   7175   relatively new snprintf()/vsnprintf() C lib APIs. In contrast to
   7176   the standard sprintf() and vsprintf() C lib APIs, these versions
   7177   apply bounds checking on the used buffer which enhances protection
   7178   against buffer overruns.
   7179 
   7180 - Unicode APIs now use name mangling to assure that mixing interpreters
   7181   and extensions using different Unicode widths is rendered next to
   7182   impossible. Trying to import an incompatible Unicode-aware extension
   7183   will result in an ImportError.  Unicode extensions writers must make
   7184   sure to check the Unicode width compatibility in their extensions by
   7185   using at least one of the mangled Unicode APIs in the extension.
   7186 
   7187 - Two new flags METH_NOARGS and METH_O are available in method definition
   7188   tables to simplify implementation of methods with no arguments and a
   7189   single untyped argument. Calling such methods is more efficient than
   7190   calling corresponding METH_VARARGS methods. METH_OLDARGS is now
   7191   deprecated.
   7192 
   7193 Windows
   7194 -------
   7195 
   7196 - "import module" now compiles module.pyw if it exists and nothing else
   7197   relevant is found.
   7198 
   7199 
   7200 What's New in Python 2.2a1?
   7201 ===========================
   7202 
   7203 *Release date: 18-Jul-2001*
   7204 
   7205 Core
   7206 ----
   7207 
   7208 - TENTATIVELY, a large amount of code implementing much of what's
   7209   described in PEP 252 (Making Types Look More Like Classes) and PEP
   7210   253 (Subtyping Built-in Types) was added.  This will be released
   7211   with Python 2.2a1.  Documentation will be provided separately
   7212   through http://www.python.org/2.2/.  The purpose of releasing this
   7213   with Python 2.2a1 is to test backwards compatibility.  It is
   7214   possible, though not likely, that a decision is made not to release
   7215   this code as part of 2.2 final, if any serious backwards
   7216   incompatibilities are found during alpha testing that cannot be
   7217   repaired.
   7218 
   7219 - Generators were added; this is a new way to create an iterator (see
   7220   below) using what looks like a simple function containing one or
   7221   more 'yield' statements.  See PEP 255.  Since this adds a new
   7222   keyword to the language, this feature must be enabled by including a
   7223   future statement: "from __future__ import generators" (see PEP 236).
   7224   Generators will become a standard feature in a future release
   7225   (probably 2.3).  Without this future statement, 'yield' remains an
   7226   ordinary identifier, but a warning is issued each time it is used.
   7227   (These warnings currently don't conform to the warnings framework of
   7228   PEP 230; we intend to fix this in 2.2a2.)
   7229 
   7230 - The UTF-16 codec was modified to be more RFC compliant. It will now
   7231   only remove BOM characters at the start of the string and then
   7232   only if running in native mode (UTF-16-LE and -BE won't remove a
   7233   leading BMO character).
   7234 
   7235 - Strings now have a new method .decode() to complement the already
   7236   existing .encode() method. These two methods provide direct access
   7237   to the corresponding decoders and encoders of the registered codecs.
   7238 
   7239   To enhance the usability of the .encode() method, the special
   7240   casing of Unicode object return values was dropped (Unicode objects
   7241   were auto-magically converted to string using the default encoding).
   7242 
   7243   Both methods will now return whatever the codec in charge of the
   7244   requested encoding returns as object, e.g. Unicode codecs will
   7245   return Unicode objects when decoding is requested ("".decode("latin-1")
   7246   will return u""). This enables codec writer to create codecs
   7247   for various simple to use conversions.
   7248 
   7249   New codecs were added to demonstrate these new features (the .encode()
   7250   and .decode() columns indicate the type of the returned objects):
   7251 
   7252   +---------+-----------+-----------+-----------------------------+
   7253   |Name     | .encode() | .decode() | Description                 |
   7254   +=========+===========+===========+=============================+
   7255   |uu       | string    | string    | UU codec (e.g. for email)   |
   7256   +---------+-----------+-----------+-----------------------------+
   7257   |base64   | string    | string    | base64 codec                |
   7258   +---------+-----------+-----------+-----------------------------+
   7259   |quopri   | string    | string    | quoted-printable codec      |
   7260   +---------+-----------+-----------+-----------------------------+
   7261   |zlib     | string    | string    | zlib compression            |
   7262   +---------+-----------+-----------+-----------------------------+
   7263   |hex      | string    | string    | 2-byte hex codec            |
   7264   +---------+-----------+-----------+-----------------------------+
   7265   |rot-13   | string    | Unicode   | ROT-13 Unicode charmap codec|
   7266   +---------+-----------+-----------+-----------------------------+
   7267 
   7268 - Some operating systems now support the concept of a default Unicode
   7269   encoding for file system operations.  Notably, Windows supports 'mbcs'
   7270   as the default.  The Macintosh will also adopt this concept in the medium
   7271   term, although the default encoding for that platform will be other than
   7272   'mbcs'.
   7273 
   7274   On operating system that support non-ASCII filenames, it is common for
   7275   functions that return filenames (such as os.listdir()) to return Python
   7276   string objects pre-encoded using the default file system encoding for
   7277   the platform.  As this encoding is likely to be different from Python's
   7278   default encoding, converting this name to a Unicode object before passing
   7279   it back to the Operating System would result in a Unicode error, as Python
   7280   would attempt to use its default encoding (generally ASCII) rather than
   7281   the default encoding for the file system.
   7282 
   7283   In general, this change simply removes surprises when working with
   7284   Unicode and the file system, making these operations work as you expect,
   7285   increasing the transparency of Unicode objects in this context.
   7286   See [????] for more details, including examples.
   7287 
   7288 - Float (and complex) literals in source code were evaluated to full
   7289   precision only when running from a .py file; the same code loaded from a
   7290   .pyc (or .pyo) file could suffer numeric differences starting at about the
   7291   12th significant decimal digit.  For example, on a machine with IEEE-754
   7292   floating arithmetic,
   7293 
   7294       x = 9007199254740992.0
   7295       print long(x)
   7296 
   7297   printed 9007199254740992 if run directly from .py, but 9007199254740000
   7298   if from a compiled (.pyc or .pyo) file.  This was due to marshal using
   7299   str(float) instead of repr(float) when building code objects.  marshal
   7300   now uses repr(float) instead, which should reproduce floats to full
   7301   machine precision (assuming the platform C float<->string I/O conversion
   7302   functions are of good quality).
   7303 
   7304   This may cause floating-point results to change in some cases, and
   7305   usually for the better, but may also cause numerically unstable
   7306   algorithms to break.
   7307 
   7308 - The implementation of dicts suffers fewer collisions, which has speed
   7309   benefits.  However, the order in which dict entries appear in dict.keys(),
   7310   dict.values() and dict.items() may differ from previous releases for a
   7311   given dict.  Nothing is defined about this order, so no program should
   7312   rely on it.  Nevertheless, it's easy to write test cases that rely on the
   7313   order by accident, typically because of printing the str() or repr() of a
   7314   dict to an "expected results" file.  See Lib/test/test_support.py's new
   7315   sortdict(dict) function for a simple way to display a dict in sorted
   7316   order.
   7317 
   7318 - Many other small changes to dicts were made, resulting in faster
   7319   operation along the most common code paths.
   7320 
   7321 - Dictionary objects now support the "in" operator: "x in dict" means
   7322   the same as dict.has_key(x).
   7323 
   7324 - The update() method of dictionaries now accepts generic mapping
   7325   objects.  Specifically the argument object must support the .keys()
   7326   and __getitem__() methods.  This allows you to say, for example,
   7327   {}.update(UserDict())
   7328 
   7329 - Iterators were added; this is a generalized way of providing values
   7330   to a for loop.  See PEP 234.  There's a new built-in function iter()
   7331   to return an iterator.  There's a new protocol to get the next value
   7332   from an iterator using the next() method (in Python) or the
   7333   tp_iternext slot (in C).  There's a new protocol to get iterators
   7334   using the __iter__() method (in Python) or the tp_iter slot (in C).
   7335   Iterating (i.e. a for loop) over a dictionary generates its keys.
   7336   Iterating over a file generates its lines.
   7337 
   7338 - The following functions were generalized to work nicely with iterator
   7339   arguments::
   7340 
   7341     map(), filter(), reduce(), zip()
   7342     list(), tuple() (PySequence_Tuple() and PySequence_Fast() in C API)
   7343     max(), min()
   7344     join() method of strings
   7345     extend() method of lists
   7346     'x in y' and 'x not in y' (PySequence_Contains() in C API)
   7347     operator.countOf() (PySequence_Count() in C API)
   7348     right-hand side of assignment statements with multiple targets, such as ::
   7349         x, y, z = some_iterable_object_returning_exactly_3_values
   7350 
   7351 - Accessing module attributes is significantly faster (for example,
   7352   random.random or os.path or yourPythonModule.yourAttribute).
   7353 
   7354 - Comparing dictionary objects via == and != is faster, and now works even
   7355   if the keys and values don't support comparisons other than ==.
   7356 
   7357 - Comparing dictionaries in ways other than == and != is slower:  there were
   7358   insecurities in the dict comparison implementation that could cause Python
   7359   to crash if the element comparison routines for the dict keys and/or
   7360   values mutated the dicts.  Making the code bulletproof slowed it down.
   7361 
   7362 - Collisions in dicts are resolved via a new approach, which can help
   7363   dramatically in bad cases.  For example, looking up every key in a dict
   7364   d with d.keys() == [i << 16 for i in range(20000)] is approximately 500x
   7365   faster now.  Thanks to Christian Tismer for pointing out the cause and
   7366   the nature of an effective cure (last December! better late than never).
   7367 
   7368 - repr() is much faster for large containers (dict, list, tuple).
   7369 
   7370 
   7371 Library
   7372 -------
   7373 
   7374 - The constants ascii_letters, ascii_lowercase. and ascii_uppercase
   7375   were added to the string module.  These a locale-independent
   7376   constants, unlike letters, lowercase, and uppercase.  These are now
   7377   use in appropriate locations in the standard library.
   7378 
   7379 - The flags used in dlopen calls can now be configured using
   7380   sys.setdlopenflags and queried using sys.getdlopenflags.
   7381 
   7382 - Fredrik Lundh's xmlrpclib is now a standard library module.  This
   7383   provides full client-side XML-RPC support.  In addition,
   7384   Demo/xmlrpc/ contains two server frameworks (one SocketServer-based,
   7385   one asyncore-based).  Thanks to Eric Raymond for the documentation.
   7386 
   7387 - The xrange() object is simplified: it no longer supports slicing,
   7388   repetition, comparisons, efficient 'in' checking, the tolist()
   7389   method, or the start, stop and step attributes.  See PEP 260.
   7390 
   7391 - A new function fnmatch.filter to filter lists of file names was added.
   7392 
   7393 - calendar.py uses month and day names based on the current locale.
   7394 
   7395 - strop is now *really* obsolete (this was announced before with 1.6),
   7396   and issues DeprecationWarning when used (except for the four items
   7397   that are still imported into string.py).
   7398 
   7399 - Cookie.py now sorts key+value pairs by key in output strings.
   7400 
   7401 - pprint.isrecursive(object) didn't correctly identify recursive objects.
   7402   Now it does.
   7403 
   7404 - pprint functions now much faster for large containers (tuple, list, dict).
   7405 
   7406 - New 'q' and 'Q' format codes in the struct module, corresponding to C
   7407   types "long long" and "unsigned long long" (on Windows, __int64).  In
   7408   native mode, these can be used only when the platform C compiler supports
   7409   these types (when HAVE_LONG_LONG is #define'd by the Python config
   7410   process), and then they inherit the sizes and alignments of the C types.
   7411   In standard mode, 'q' and 'Q' are supported on all platforms, and are
   7412   8-byte integral types.
   7413 
   7414 - The site module installs a new built-in function 'help' that invokes
   7415   pydoc.help.  It must be invoked as 'help()'; when invoked as 'help',
   7416   it displays a message reminding the user to use 'help()' or
   7417   'help(object)'.
   7418 
   7419 Tests
   7420 -----
   7421 
   7422 - New test_mutants.py runs dict comparisons where the key and value
   7423   comparison operators mutate the dicts randomly during comparison.  This
   7424   rapidly causes Python to crash under earlier releases (not for the faint
   7425   of heart:  it can also cause Win9x to freeze or reboot!).
   7426 
   7427 - New test_pprint.py verifies that pprint.isrecursive() and
   7428   pprint.isreadable() return sensible results.  Also verifies that simple
   7429   cases produce correct output.
   7430 
   7431 C API
   7432 -----
   7433 
   7434 - Removed the unused last_is_sticky argument from the internal
   7435   _PyTuple_Resize().  If this affects you, you were cheating.
   7436 
   7437 What's New in Python 2.1 (final)?
   7438 =================================
   7439 
   7440 We only changed a few things since the last release candidate, all in
   7441 Python library code:
   7442 
   7443 - A bug in the locale module was fixed that affected locales which
   7444   define no grouping for numeric formatting.
   7445 
   7446 - A few bugs in the weakref module's implementations of weak
   7447   dictionaries (WeakValueDictionary and WeakKeyDictionary) were fixed,
   7448   and the test suite was updated to check for these bugs.
   7449 
   7450 - An old bug in the os.path.walk() function (introduced in Python
   7451   2.0!) was fixed: a non-existent file would cause an exception
   7452   instead of being ignored.
   7453 
   7454 - Fixed a few bugs in the new symtable module found by Neil Norwitz's
   7455   PyChecker.
   7456 
   7457 
   7458 What's New in Python 2.1c2?
   7459 ===========================
   7460 
   7461 A flurry of small changes, and one showstopper fixed in the nick of
   7462 time made it necessary to release another release candidate.  The list
   7463 here is the *complete* list of patches (except version updates):
   7464 
   7465 Core
   7466 
   7467 - Tim discovered a nasty bug in the dictionary code, caused by
   7468   PyDict_Next() calling dict_resize(), and the GC code's use of
   7469   PyDict_Next() violating an assumption in dict_items().  This was
   7470   fixed with considerable amounts of band-aid, but the net effect is a
   7471   saner and more robust implementation.
   7472 
   7473 - Made a bunch of symbols static that were accidentally global.
   7474 
   7475 Build and Ports
   7476 
   7477 - The setup.py script didn't check for a new enough version of zlib
   7478   (1.1.3 is needed).  Now it does.
   7479 
   7480 - Changed "make clean" target to also remove shared libraries.
   7481 
   7482 - Added a more general warning about the SGI Irix optimizer to README.
   7483 
   7484 Library
   7485 
   7486 - Fix a bug in urllib.basejoin("http://host", "../file.html") which
   7487   omitted the slash between host and file.html.
   7488 
   7489 - The mailbox module's _Mailbox class contained a completely broken
   7490   and undocumented seek() method.  Ripped it out.
   7491 
   7492 - Fixed a bunch of typos in various library modules (urllib2, smtpd,
   7493   sgmllib, netrc, chunk) found by Neil Norwitz's PyChecker.
   7494 
   7495 - Fixed a few last-minute bugs in unittest.
   7496 
   7497 Extensions
   7498 
   7499 - Reverted the patch to the OpenSSL code in socketmodule.c to support
   7500   RAND_status() and the EGD, and the subsequent patch that tried to
   7501   fix it for pre-0.9.5 versions; the problem with the patch is that on
   7502   some systems it issues a warning whenever socket is imported, and
   7503   that's unacceptable.
   7504 
   7505 Tests
   7506 
   7507 - Fixed the pickle tests to work with "import test.test_pickle".
   7508 
   7509 - Tweaked test_locale.py to actually run the test Windows.
   7510 
   7511 - In distutils/archive_util.py, call zipfile.ZipFile() with mode "w",
   7512   not "wb" (which is not a valid mode at all).
   7513 
   7514 - Fix pstats browser crashes.  Import readline if it exists to make
   7515   the user interface nicer.
   7516 
   7517 - Add "import thread" to the top of test modules that import the
   7518   threading module (test_asynchat and test_threadedtempfile).  This
   7519   prevents test failures caused by a broken threading module resulting
   7520   from a previously caught failed import.
   7521 
   7522 - Changed test_asynchat.py to set the SO_REUSEADDR option; this was
   7523   needed on some platforms (e.g. Solaris 8) when the tests are run
   7524   twice in succession.
   7525 
   7526 - Skip rather than fail test_sunaudiodev if no audio device is found.
   7527 
   7528 
   7529 What's New in Python 2.1c1?
   7530 ===========================
   7531 
   7532 This list was significantly updated when 2.1c2 was released; the 2.1c1
   7533 release didn't mention most changes that were actually part of 2.1c1:
   7534 
   7535 Legal
   7536 
   7537 - Copyright was assigned to the Python Software Foundation (PSF) and a
   7538   PSF license (very similar to the CNRI license) was added.
   7539 
   7540 - The CNRI copyright notice was updated to include 2001.
   7541 
   7542 Core
   7543 
   7544 - After a public outcry, assignment to __debug__ is no longer illegal;
   7545   instead, a warning is issued.  It will become illegal in 2.2.
   7546 
   7547 - Fixed a core dump with "%#x" % 0, and changed the semantics so that
   7548   "%#x" now always prepends "0x", even if the value is zero.
   7549 
   7550 - Fixed some nits in the bytecode compiler.
   7551 
   7552 - Fixed core dumps when calling certain kinds of non-functions.
   7553 
   7554 - Fixed various core dumps caused by reference count bugs.
   7555 
   7556 Build and Ports
   7557 
   7558 - Use INSTALL_SCRIPT to install script files.
   7559 
   7560 - New port: SCO Unixware 7, by Billy G. Allie.
   7561 
   7562 - Updated RISCOS port.
   7563 
   7564 - Updated BeOS port and notes.
   7565 
   7566 - Various other porting problems resolved.
   7567 
   7568 Library
   7569 
   7570 - The TERMIOS and SOCKET modules are now truly obsolete and
   7571   unnecessary.  Their symbols are incorporated in the termios and
   7572   socket modules.
   7573 
   7574 - Fixed some 64-bit bugs in pickle, cPickle, and struct, and added
   7575   better tests for pickling.
   7576 
   7577 - threading: make Condition.wait() robust against KeyboardInterrupt.
   7578 
   7579 - zipfile: add support to zipfile to support opening an archive
   7580   represented by an open file rather than a file name.  Fix bug where
   7581   the archive was not properly closed.  Fixed a bug in this bugfix
   7582   where flush() was called for a read-only file.
   7583 
   7584 - imputil: added an uninstall() method to the ImportManager.
   7585 
   7586 - Canvas: fixed bugs in lower() and tkraise() methods.
   7587 
   7588 - SocketServer: API change (added overridable close_request() method)
   7589   so that the TCP server can explicitly close the request.
   7590 
   7591 - pstats: Eric Raymond added a simple interactive statistics browser,
   7592   invoked when the module is run as a script.
   7593 
   7594 - locale: fixed a problem in format().
   7595 
   7596 - webbrowser: made it work when the BROWSER environment variable has a
   7597   value like "/usr/bin/netscape".  Made it auto-detect Konqueror for
   7598   KDE 2.  Fixed some other nits.
   7599 
   7600 - unittest: changes to allow using a different exception than
   7601   AssertionError, and added a few more function aliases.  Some other
   7602   small changes.
   7603 
   7604 - urllib, urllib2: fixed redirect problems and a coupleof other nits.
   7605 
   7606 - asynchat: fixed a critical bug in asynchat that slipped through the
   7607   2.1b2 release.  Fixed another rare bug.
   7608 
   7609 - Fix some unqualified except: clauses (always a bad code example).
   7610 
   7611 XML
   7612 
   7613 - pyexpat: new API get_version_string().
   7614 
   7615 - Fixed some minidom bugs.
   7616 
   7617 Extensions
   7618 
   7619 - Fixed a core dump in _weakref.  Removed the weakref.mapping()
   7620   function (it adds nothing to the API).
   7621 
   7622 - Rationalized the use of header files in the readline module, to make
   7623   it compile (albeit with some warnings) with the very recent readline
   7624   4.2, without breaking for earlier versions.
   7625 
   7626 - Hopefully fixed a buffering problem in linuxaudiodev.
   7627 
   7628 - Attempted a fix to make the OpenSSL support in the socket module
   7629   work again with pre-0.9.5 versions of OpenSSL.
   7630 
   7631 Tests
   7632 
   7633 - Added a test case for asynchat and asyncore.
   7634 
   7635 - Removed coupling between tests where one test failing could break
   7636   another.
   7637 
   7638 Tools
   7639 
   7640 - Ping added an interactive help browser to pydoc, fixed some nits
   7641   in the rest of the pydoc code, and added some features to his
   7642   inspect module.
   7643 
   7644 - An updated python-mode.el version 4.1 which integrates Ken
   7645   Manheimer's pdbtrack.el.  This makes debugging Python code via pdb
   7646   much nicer in XEmacs and Emacs.  When stepping through your program
   7647   with pdb, in either the shell window or the *Python* window, the
   7648   source file and line will be tracked by an arrow.  Very cool!
   7649 
   7650 - IDLE: syntax warnings in interactive mode are changed into errors.
   7651 
   7652 - Some improvements to Tools/webchecker (ignore some more URL types,
   7653   follow some more links).
   7654 
   7655 - Brought the Tools/compiler package up to date.
   7656 
   7657 
   7658 What's New in Python 2.1 beta 2?
   7659 ================================
   7660 
   7661 (Unlisted are many fixed bugs, more documentation, etc.)
   7662 
   7663 Core language, builtins, and interpreter
   7664 
   7665 - The nested scopes work (enabled by "from __future__ import
   7666   nested_scopes") is completed; in particular, the future now extends
   7667   into code executed through exec, eval() and execfile(), and into the
   7668   interactive interpreter.
   7669 
   7670 - When calling a base class method (e.g. BaseClass.__init__(self)),
   7671   this is now allowed even if self is not strictly spoken a class
   7672   instance (e.g. when using metaclasses or the Don Beaudry hook).
   7673 
   7674 - Slice objects are now comparable but not hashable; this prevents
   7675   dict[:] from being accepted but meaningless.
   7676 
   7677 - Complex division is now calculated using less braindead algorithms.
   7678   This doesn't change semantics except it's more likely to give useful
   7679   results in extreme cases.  Complex repr() now uses full precision
   7680   like float repr().
   7681 
   7682 - sgmllib.py now calls handle_decl() for simple <!...> declarations.
   7683 
   7684 - It is illegal to assign to the name __debug__, which is set when the
   7685   interpreter starts.  It is effectively a compile-time constant.
   7686 
   7687 - A warning will be issued if a global statement for a variable
   7688   follows a use or assignment of that variable.
   7689 
   7690 Standard library
   7691 
   7692 - unittest.py, a unit testing framework by Steve Purcell (PyUNIT,
   7693   inspired by JUnit), is now part of the standard library.  You now
   7694   have a choice of two testing frameworks: unittest requires you to
   7695   write testcases as separate code, doctest gathers them from
   7696   docstrings.  Both approaches have their advantages and
   7697   disadvantages.
   7698 
   7699 - A new module Tix was added, which wraps the Tix extension library
   7700   for Tk.  With that module, it is not necessary to statically link
   7701   Tix with _tkinter, since Tix will be loaded with Tcl's "package
   7702   require" command.  See Demo/tix/.
   7703 
   7704 - tzparse.py is now obsolete.
   7705 
   7706 - In gzip.py, the seek() and tell() methods are removed -- they were
   7707   non-functional anyway, and it's better if callers can test for their
   7708   existence with hasattr().
   7709 
   7710 Python/C API
   7711 
   7712 - PyDict_Next(): it is now safe to call PyDict_SetItem() with a key
   7713   that's already in the dictionary during a PyDict_Next() iteration.
   7714   This used to fail occasionally when a dictionary resize operation
   7715   could be triggered that would rehash all the keys.  All other
   7716   modifications to the dictionary are still off-limits during a
   7717   PyDict_Next() iteration!
   7718 
   7719 - New extended APIs related to passing compiler variables around.
   7720 
   7721 - New abstract APIs PyObject_IsInstance(), PyObject_IsSubclass()
   7722   implement isinstance() and issubclass().
   7723 
   7724 - Py_BuildValue() now has a "D" conversion to create a Python complex
   7725   number from a Py_complex C value.
   7726 
   7727 - Extensions types which support weak references must now set the
   7728   field allocated for the weak reference machinery to NULL themselves;
   7729   this is done to avoid the cost of checking each object for having a
   7730   weakly referencable type in PyObject_INIT(), since most types are
   7731   not weakly referencable.
   7732 
   7733 - PyFrame_FastToLocals() and PyFrame_LocalsToFast() copy bindings for
   7734   free variables and cell variables to and from the frame's f_locals.
   7735 
   7736 - Variants of several functions defined in pythonrun.h have been added
   7737   to support the nested_scopes future statement.  The variants all end
   7738   in Flags and take an extra argument, a PyCompilerFlags *; examples:
   7739   PyRun_AnyFileExFlags(), PyRun_InteractiveLoopFlags().  These
   7740   variants may be removed in Python 2.2, when nested scopes are
   7741   mandatory.
   7742 
   7743 Distutils
   7744 
   7745 - the sdist command now writes a PKG-INFO file, as described in PEP 241,
   7746   into the release tree.
   7747 
   7748 - several enhancements to the bdist_wininst command from Thomas Heller
   7749   (an uninstaller, more customization of the installer's display)
   7750 
   7751 - from Jack Jansen: added Mac-specific code to generate a dialog for
   7752   users to specify the command-line (because providing a command-line with
   7753   MacPython is awkward).  Jack also made various fixes for the Mac
   7754   and the Metrowerks compiler.
   7755 
   7756 - added 'platforms' and 'keywords' to the set of metadata that can be
   7757   specified for a distribution.
   7758 
   7759 - applied patches from Jason Tishler to make the compiler class work with
   7760   Cygwin.
   7761 
   7762 
   7763 What's New in Python 2.1 beta 1?
   7764 ================================
   7765 
   7766 Core language, builtins, and interpreter
   7767 
   7768 - Following an outcry from the community about the amount of code
   7769   broken by the nested scopes feature introduced in 2.1a2, we decided
   7770   to make this feature optional, and to wait until Python 2.2 (or at
   7771   least 6 months) to make it standard.  The option can be enabled on a
   7772   per-module basis by adding "from __future__ import nested_scopes" at
   7773   the beginning of a module (before any other statements, but after
   7774   comments and an optional docstring).  See PEP 236 (Back to the
   7775   __future__) for a description of the __future__ statement.  PEP 227
   7776   (Statically Nested Scopes) has been updated to reflect this change,
   7777   and to clarify the semantics in a number of endcases.
   7778 
   7779 - The nested scopes code, when enabled, has been hardened, and most
   7780   bugs and memory leaks in it have been fixed.
   7781 
   7782 - Compile-time warnings are now generated for a number of conditions
   7783   that will break or change in meaning when nested scopes are enabled:
   7784 
   7785   - Using "from...import *" or "exec" without in-clause in a function
   7786     scope that also defines a lambda or nested function with one or
   7787     more free (non-local) variables.  The presence of the import* or
   7788     bare exec makes it impossible for the compiler to determine the
   7789     exact set of local variables in the outer scope, which makes it
   7790     impossible to determine the bindings for free variables in the
   7791     inner scope.  To avoid the warning about import *, change it into
   7792     an import of explicitly name object, or move the import* statement
   7793     to the global scope; to avoid the warning about bare exec, use
   7794     exec...in... (a good idea anyway -- there's a possibility that
   7795     bare exec will be deprecated in the future).
   7796 
   7797   - Use of a global variable in a nested scope with the same name as a
   7798     local variable in a surrounding scope.  This will change in
   7799     meaning with nested scopes: the name in the inner scope will
   7800     reference the variable in the outer scope rather than the global
   7801     of the same name.  To avoid the warning, either rename the outer
   7802     variable, or use a global statement in the inner function.
   7803 
   7804 - An optional object allocator has been included.  This allocator is
   7805   optimized for Python objects and should be faster and use less memory
   7806   than the standard system allocator.  It is not enabled by default
   7807   because of possible thread safety problems.  The allocator is only
   7808   protected by the Python interpreter lock and it is possible that some
   7809   extension modules require a thread safe allocator.  The object
   7810   allocator can be enabled by providing the "--with-pymalloc" option to
   7811   configure.
   7812 
   7813 Standard library
   7814 
   7815 - pyexpat now detects the expat version if expat.h defines it. A
   7816   number of additional handlers are provided, which are only available
   7817   since expat 1.95. In addition, the methods SetParamEntityParsing and
   7818   GetInputContext of Parser objects are available with 1.95.x
   7819   only. Parser objects now provide the ordered_attributes and
   7820   specified_attributes attributes. A new module expat.model was added,
   7821   which offers a number of additional constants if 1.95.x is used.
   7822 
   7823 - xml.dom offers the new functions registerDOMImplementation and
   7824   getDOMImplementation.
   7825 
   7826 - xml.dom.minidom offers a toprettyxml method. A number of DOM
   7827   conformance issues have been resolved. In particular, Element now
   7828   has a hasAttributes method, and the handling of namespaces was
   7829   improved.
   7830 
   7831 - Ka-Ping Yee contributed two new modules: inspect.py, a module for
   7832   getting information about live Python code, and pydoc.py, a module
   7833   for interactively converting docstrings to HTML or text.
   7834   Tools/scripts/pydoc, which is now automatically installed into
   7835   <prefix>/bin, uses pydoc.py to display documentation; try running
   7836   "pydoc -h" for instructions.  "pydoc -g" pops up a small GUI that
   7837   lets you browse the module docstrings using a web browser.
   7838 
   7839 - New library module difflib.py, primarily packaging the SequenceMatcher
   7840   class at the heart of the popular ndiff.py file-comparison tool.
   7841 
   7842 - doctest.py (a framework for verifying Python code examples in docstrings)
   7843   is now part of the std library.
   7844 
   7845 Windows changes
   7846 
   7847 - A new entry in the Start menu, "Module Docs", runs "pydoc -g" -- a
   7848   small GUI that lets you browse the module docstrings using your
   7849   default web browser.
   7850 
   7851 - Import is now case-sensitive.  PEP 235 (Import on Case-Insensitive
   7852   Platforms) is implemented.  See
   7853 
   7854       http://python.sourceforge.net/peps/pep-0235.html
   7855 
   7856   for full details, especially the "Current Lower-Left Semantics" section.
   7857   The new Windows import rules are simpler than before:
   7858 
   7859   A. If the PYTHONCASEOK environment variable exists, same as
   7860      before:  silently accept the first case-insensitive match of any
   7861      kind; raise ImportError if none found.
   7862 
   7863   B. Else search sys.path for the first case-sensitive match; raise
   7864      ImportError if none found.
   7865 
   7866   The same rules have been implemented on other platforms with case-
   7867   insensitive but case-preserving filesystems too (including Cygwin, and
   7868   several flavors of Macintosh operating systems).
   7869 
   7870 - winsound module:  Under Win9x, winsound.Beep() now attempts to simulate
   7871   what it's supposed to do (and does do under NT and 2000) via direct
   7872   port manipulation.  It's unknown whether this will work on all systems,
   7873   but it does work on my Win98SE systems now and was known to be useless on
   7874   all Win9x systems before.
   7875 
   7876 - Build:  Subproject _test (effectively) renamed to _testcapi.
   7877 
   7878 New platforms
   7879 
   7880 - 2.1 should compile and run out of the box under MacOS X, even using HFS+.
   7881   Thanks to Steven Majewski!
   7882 
   7883 - 2.1 should compile and run out of the box on Cygwin.  Thanks to Jason
   7884   Tishler!
   7885 
   7886 - 2.1 contains new files and patches for RISCOS, thanks to Dietmar
   7887   Schwertberger!  See RISCOS/README for more information -- it seems
   7888   that because of the bizarre filename conventions on RISCOS, no port
   7889   to that platform is easy.
   7890 
   7891 
   7892 What's New in Python 2.1 alpha 2?
   7893 =================================
   7894 
   7895 Core language, builtins, and interpreter
   7896 
   7897 - Scopes nest.  If a name is used in a function or class, but is not
   7898   local, the definition in the nearest enclosing function scope will
   7899   be used.  One consequence of this change is that lambda statements
   7900   could reference variables in the namespaces where the lambda is
   7901   defined.  In some unusual cases, this change will break code.
   7902 
   7903   In all previous version of Python, names were resolved in exactly
   7904   three namespaces -- the local namespace, the global namespace, and
   7905   the builtins namespace.  According to this old definition, if a
   7906   function A is defined within a function B, the names bound in B are
   7907   not visible in A.  The new rules make names bound in B visible in A,
   7908   unless A contains a name binding that hides the binding in B.
   7909 
   7910   Section 4.1 of the reference manual describes the new scoping rules
   7911   in detail.  The test script in Lib/test/test_scope.py demonstrates
   7912   some of the effects of the change.
   7913 
   7914   The new rules will cause existing code to break if it defines nested
   7915   functions where an outer function has local variables with the same
   7916   name as globals or builtins used by the inner function.  Example:
   7917 
   7918     def munge(str):
   7919         def helper(x):
   7920             return str(x)
   7921         if type(str) != type(''):
   7922             str = helper(str)
   7923         return str.strip()
   7924 
   7925   Under the old rules, the name str in helper() is bound to the
   7926   built-in function str().  Under the new rules, it will be bound to
   7927   the argument named str and an error will occur when helper() is
   7928   called.
   7929 
   7930 - The compiler will report a SyntaxError if "from ... import *" occurs
   7931   in a function or class scope.  The language reference has documented
   7932   that this case is illegal, but the compiler never checked for it.
   7933   The recent introduction of nested scope makes the meaning of this
   7934   form of name binding ambiguous.  In a future release, the compiler
   7935   may allow this form when there is no possibility of ambiguity.
   7936 
   7937 - repr(string) is easier to read, now using hex escapes instead of octal,
   7938   and using \t, \n and \r instead of \011, \012 and \015 (respectively):
   7939 
   7940   >>> "\texample \r\n" + chr(0) + chr(255)
   7941   '\texample \r\n\x00\xff'         # in 2.1
   7942   '\011example \015\012\000\377'   # in 2.0
   7943 
   7944 - Functions are now compared and hashed by identity, not by value, since
   7945   the func_code attribute is writable.
   7946 
   7947 - Weak references (PEP 205) have been added.  This involves a few
   7948   changes in the core, an extension module (_weakref), and a Python
   7949   module (weakref).  The weakref module is the public interface.  It
   7950   includes support for "explicit" weak references, proxy objects, and
   7951   mappings with weakly held values.
   7952 
   7953 - A 'continue' statement can now appear in a try block within the body
   7954   of a loop.  It is still not possible to use continue in a finally
   7955   clause.
   7956 
   7957 Standard library
   7958 
   7959 - mailbox.py now has a new class, PortableUnixMailbox which is
   7960   identical to UnixMailbox but uses a more portable scheme for
   7961   determining From_ separators.  Also, the constructors for all the
   7962   classes in this module have a new optional `factory' argument, which
   7963   is a callable used when new message classes must be instantiated by
   7964   the next() method.
   7965 
   7966 - random.py is now self-contained, and offers all the functionality of
   7967   the now-deprecated whrandom.py.  See the docs for details.  random.py
   7968   also supports new functions getstate() and setstate(), for saving
   7969   and restoring the internal state of the generator; and jumpahead(n),
   7970   for quickly forcing the internal state to be the same as if n calls to
   7971   random() had been made.  The latter is particularly useful for multi-
   7972   threaded programs, creating one instance of the random.Random() class for
   7973   each thread, then using .jumpahead() to force each instance to use a
   7974   non-overlapping segment of the full period.
   7975 
   7976 - random.py's seed() function is new.  For bit-for-bit compatibility with
   7977   prior releases, use the whseed function instead.  The new seed function
   7978   addresses two problems:  (1) The old function couldn't produce more than
   7979   about 2**24 distinct internal states; the new one about 2**45 (the best
   7980   that can be done in the Wichmann-Hill generator).  (2) The old function
   7981   sometimes produced identical internal states when passed distinct
   7982   integers, and there was no simple way to predict when that would happen;
   7983   the new one guarantees to produce distinct internal states for all
   7984   arguments in [0, 27814431486576L).
   7985 
   7986 - The socket module now supports raw packets on Linux.  The socket
   7987   family is AF_PACKET.
   7988 
   7989 - test_capi.py is a start at running tests of the Python C API.  The tests
   7990   are implemented by the new Modules/_testmodule.c.
   7991 
   7992 - A new extension module, _symtable, provides provisional access to the
   7993   internal symbol table used by the Python compiler.  A higher-level
   7994   interface will be added on top of _symtable in a future release.
   7995 
   7996 - Removed the obsolete soundex module.
   7997 
   7998 - xml.dom.minidom now uses the standard DOM exceptions. Node supports
   7999   the isSameNode method; NamedNodeMap the get method.
   8000 
   8001 - xml.sax.expatreader supports the lexical handler property; it
   8002   generates comment, startCDATA, and endCDATA events.
   8003 
   8004 Windows changes
   8005 
   8006 - Build procedure:  the zlib project is built in a different way that
   8007   ensures the zlib header files used can no longer get out of synch with
   8008   the zlib binary used.  See PCbuild\readme.txt for details.  Your old
   8009   zlib-related directories can be deleted; you'll need to download fresh
   8010   source for zlib and unpack it into a new directory.
   8011 
   8012 - Build:  New subproject _test for the benefit of test_capi.py (see above).
   8013 
   8014 - Build:  New subproject _symtable, for new DLL _symtable.pyd (a nascent
   8015   interface to some Python compiler internals).
   8016 
   8017 - Build:  Subproject ucnhash is gone, since the code was folded into the
   8018   unicodedata subproject.
   8019 
   8020 What's New in Python 2.1 alpha 1?
   8021 =================================
   8022 
   8023 Core language, builtins, and interpreter
   8024 
   8025 - There is a new Unicode companion to the PyObject_Str() API
   8026   called PyObject_Unicode(). It behaves in the same way as the
   8027   former, but assures that the returned value is a Unicode object
   8028   (applying the usual coercion if necessary).
   8029 
   8030 - The comparison operators support "rich comparison overloading" (PEP
   8031   207).  C extension types can provide a rich comparison function in
   8032   the new tp_richcompare slot in the type object.  The cmp() function
   8033   and the C function PyObject_Compare() first try the new rich
   8034   comparison operators before trying the old 3-way comparison.  There
   8035   is also a new C API PyObject_RichCompare() (which also falls back on
   8036   the old 3-way comparison, but does not constrain the outcome of the
   8037   rich comparison to a Boolean result).
   8038 
   8039   The rich comparison function takes two objects (at least one of
   8040   which is guaranteed to have the type that provided the function) and
   8041   an integer indicating the opcode, which can be Py_LT, Py_LE, Py_EQ,
   8042   Py_NE, Py_GT, Py_GE (for <, <=, ==, !=, >, >=), and returns a Python
   8043   object, which may be NotImplemented (in which case the tp_compare
   8044   slot function is used as a fallback, if defined).
   8045 
   8046   Classes can overload individual comparison operators by defining one
   8047   or more of the methods__lt__, __le__, __eq__, __ne__, __gt__,
   8048   __ge__.  There are no explicit "reflected argument" versions of
   8049   these; instead, __lt__ and __gt__ are each other's reflection,
   8050   likewise for__le__ and __ge__; __eq__ and __ne__ are their own
   8051   reflection (similar at the C level).  No other implications are
   8052   made; in particular, Python does not assume that == is the Boolean
   8053   inverse of !=, or that < is the Boolean inverse of >=.  This makes
   8054   it possible to define types with partial orderings.
   8055 
   8056   Classes or types that want to implement (in)equality tests but not
   8057   the ordering operators (i.e. unordered types) should implement ==
   8058   and !=, and raise an error for the ordering operators.
   8059 
   8060   It is possible to define types whose rich comparison results are not
   8061   Boolean; e.g. a matrix type might want to return a matrix of bits
   8062   for A < B, giving elementwise comparisons.  Such types should ensure
   8063   that any interpretation of their value in a Boolean context raises
   8064   an exception, e.g. by defining __nonzero__ (or the tp_nonzero slot
   8065   at the C level) to always raise an exception.
   8066 
   8067 - Complex numbers use rich comparisons to define == and != but raise
   8068   an exception for <, <=, > and >=.  Unfortunately, this also means
   8069   that cmp() of two complex numbers raises an exception when the two
   8070   numbers differ.  Since it is not mathematically meaningful to compare
   8071   complex numbers except for equality, I hope that this doesn't break
   8072   too much code.
   8073 
   8074 - The outcome of comparing non-numeric objects of different types is
   8075   not defined by the language, other than that it's arbitrary but
   8076   consistent (see the Reference Manual).  An implementation detail changed
   8077   in 2.1a1 such that None now compares less than any other object.  Code
   8078   relying on this new behavior (like code that relied on the previous
   8079   behavior) does so at its own risk.
   8080 
   8081 - Functions and methods now support getting and setting arbitrarily
   8082   named attributes (PEP 232).  Functions have a new __dict__
   8083   (a.k.a. func_dict) which hold the function attributes.  Methods get
   8084   and set attributes on their underlying im_func.  It is a TypeError
   8085   to set an attribute on a bound method.
   8086 
   8087 - The xrange() object implementation has been improved so that
   8088   xrange(sys.maxint) can be used on 64-bit platforms.  There's still a
   8089   limitation that in this case len(xrange(sys.maxint)) can't be
   8090   calculated, but the common idiom "for i in xrange(sys.maxint)" will
   8091   work fine as long as the index i doesn't actually reach 2**31.
   8092   (Python uses regular ints for sequence and string indices; fixing
   8093   that is much more work.)
   8094 
   8095 - Two changes to from...import:
   8096 
   8097   1) "from M import X" now works even if (after loading module M)
   8098      sys.modules['M'] is not a real module; it's basically a getattr()
   8099      operation with AttributeError exceptions changed into ImportError.
   8100 
   8101   2) "from M import *" now looks for M.__all__ to decide which names to
   8102      import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but
   8103      filters out names starting with '_' as before.  Whether or not
   8104      __all__ exists, there's no restriction on the type of M.
   8105 
   8106 - File objects have a new method, xreadlines().  This is the fastest
   8107   way to iterate over all lines in a file:
   8108 
   8109   for line in file.xreadlines():
   8110       ...do something to line...
   8111 
   8112   See the xreadlines module (mentioned below) for how to do this for
   8113   other file-like objects.
   8114 
   8115 - Even if you don't use file.xreadlines(), you may expect a speedup on
   8116   line-by-line input.  The file.readline() method has been optimized
   8117   quite a bit in platform-specific ways:  on systems (like Linux) that
   8118   support flockfile(), getc_unlocked(), and funlockfile(), those are
   8119   used by default.  On systems (like Windows) without getc_unlocked(),
   8120   a complicated (but still thread-safe) method using fgets() is used by
   8121   default.
   8122 
   8123   You can force use of the fgets() method by #define'ing
   8124   USE_FGETS_IN_GETLINE at build time (it may be faster than
   8125   getc_unlocked()).
   8126 
   8127   You can force fgets() not to be used by #define'ing
   8128   DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test
   8129   test_bufio.py fails -- and let us know if it does!).
   8130 
   8131 - In addition, the fileinput module, while still slower than the other
   8132   methods on most platforms, has been sped up too, by using
   8133   file.readlines(sizehint).
   8134 
   8135 - Support for run-time warnings has been added, including a new
   8136   command line option (-W) to specify the disposition of warnings.
   8137   See the description of the warnings module below.
   8138 
   8139 - Extensive changes have been made to the coercion code.  This mostly
   8140   affects extension modules (which can now implement mixed-type
   8141   numerical operators without having to use coercion), but
   8142   occasionally, in boundary cases the coercion semantics have changed
   8143   subtly.  Since this was a terrible gray area of the language, this
   8144   is considered an improvement.  Also note that __rcmp__ is no longer
   8145   supported -- instead of calling __rcmp__, __cmp__ is called with
   8146   reflected arguments.
   8147 
   8148 - In connection with the coercion changes, a new built-in singleton
   8149   object, NotImplemented is defined.  This can be returned for
   8150   operations that wish to indicate they are not implemented for a
   8151   particular combination of arguments.  From C, this is
   8152   Py_NotImplemented.
   8153 
   8154 - The interpreter accepts now bytecode files on the command line even
   8155   if they do not have a .pyc or .pyo extension. On Linux, after executing
   8156 
   8157 import imp,sys,string
   8158 magic = string.join(["\\x%.2x" % ord(c) for c in imp.get_magic()],"")
   8159 reg = ':pyc:M::%s::%s:' % (magic, sys.executable)
   8160 open("/proc/sys/fs/binfmt_misc/register","wb").write(reg)
   8161 
   8162   any byte code file can be used as an executable (i.e. as an argument
   8163   to execve(2)).
   8164 
   8165 - %[xXo] formats of negative Python longs now produce a sign
   8166   character.  In 1.6 and earlier, they never produced a sign,
   8167   and raised an error if the value of the long was too large
   8168   to fit in a Python int.  In 2.0, they produced a sign if and
   8169   only if too large to fit in an int.  This was inconsistent
   8170   across platforms (because the size of an int varies across
   8171   platforms), and inconsistent with hex() and oct().  Example:
   8172 
   8173   >>> "%x" % -0x42L
   8174   '-42'      # in 2.1
   8175   'ffffffbe' # in 2.0 and before, on 32-bit machines
   8176   >>> hex(-0x42L)
   8177   '-0x42L'   # in all versions of Python
   8178 
   8179   The behavior of %d formats for negative Python longs remains
   8180   the same as in 2.0 (although in 1.6 and before, they raised
   8181   an error if the long didn't fit in a Python int).
   8182 
   8183   %u formats don't make sense for Python longs, but are allowed
   8184   and treated the same as %d in 2.1.  In 2.0, a negative long
   8185   formatted via %u produced a sign if and only if too large to
   8186   fit in an int.  In 1.6 and earlier, a negative long formatted
   8187   via %u raised an error if it was too big to fit in an int.
   8188 
   8189 - Dictionary objects have an odd new method, popitem().  This removes
   8190   an arbitrary item from the dictionary and returns it (in the form of
   8191   a (key, value) pair).  This can be useful for algorithms that use a
   8192   dictionary as a bag of "to do" items and repeatedly need to pick one
   8193   item.  Such algorithms normally end up running in quadratic time;
   8194   using popitem() they can usually be made to run in linear time.
   8195 
   8196 Standard library
   8197 
   8198 - In the time module, the time argument to the functions strftime,
   8199   localtime, gmtime, asctime and ctime is now optional, defaulting to
   8200   the current time (in the local timezone).
   8201 
   8202 - The ftplib module now defaults to passive mode, which is deemed a
   8203   more useful default given that clients are often inside firewalls
   8204   these days.  Note that this could break if ftplib is used to connect
   8205   to a *server* that is inside a firewall, from outside; this is
   8206   expected to be a very rare situation.  To fix that, you can call
   8207   ftp.set_pasv(0).
   8208 
   8209 - The module site now treats .pth files not only for path configuration,
   8210   but also supports extensions to the initialization code: Lines starting
   8211   with import are executed.
   8212 
   8213 - There's a new module, warnings, which implements a mechanism for
   8214   issuing and filtering warnings.  There are some new built-in
   8215   exceptions that serve as warning categories, and a new command line
   8216   option, -W, to control warnings (e.g. -Wi ignores all warnings, -We
   8217   turns warnings into errors).  warnings.warn(message[, category])
   8218   issues a warning message; this can also be called from C as
   8219   PyErr_Warn(category, message).
   8220 
   8221 - A new module xreadlines was added.  This exports a single factory
   8222   function, xreadlines().  The intention is that this code is the
   8223   absolutely fastest way to iterate over all lines in an open
   8224   file(-like) object:
   8225 
   8226   import xreadlines
   8227   for line in xreadlines.xreadlines(file):
   8228       ...do something to line...
   8229 
   8230   This is equivalent to the previous the speed record holder using
   8231   file.readlines(sizehint).  Note that if file is a real file object
   8232   (as opposed to a file-like object), this is equivalent:
   8233 
   8234   for line in file.xreadlines():
   8235       ...do something to line...
   8236 
   8237 - The bisect module has new functions bisect_left, insort_left,
   8238   bisect_right and insort_right.  The old names bisect and insort
   8239   are now aliases for bisect_right and insort_right.  XXX_right
   8240   and XXX_left methods differ in what happens when the new element
   8241   compares equal to one or more elements already in the list:  the
   8242   XXX_left methods insert to the left, the XXX_right methods to the
   8243   right.  Code that doesn't care where equal elements end up should
   8244   continue to use the old, short names ("bisect" and "insort").
   8245 
   8246 - The new curses.panel module wraps the panel library that forms part
   8247   of SYSV curses and ncurses.  Contributed by Thomas Gellekum.
   8248 
   8249 - The SocketServer module now sets the allow_reuse_address flag by
   8250   default in the TCPServer class.
   8251 
   8252 - A new function, sys._getframe(), returns the stack frame pointer of
   8253   the caller.  This is intended only as a building block for
   8254   higher-level mechanisms such as string interpolation.
   8255 
   8256 - The pyexpat module supports a number of new handlers, which are
   8257   available only in expat 1.2. If invocation of a callback fails, it
   8258   will report an additional frame in the traceback. Parser objects
   8259   participate now in garbage collection. If expat reports an unknown
   8260   encoding, pyexpat will try to use a Python codec; that works only
   8261   for single-byte charsets. The parser type objects is exposed as
   8262   XMLParserObject.
   8263 
   8264 - xml.dom now offers standard definitions for symbolic node type and
   8265   exception code constants, and a hierarchy of DOM exceptions. minidom
   8266   was adjusted to use them.
   8267 
   8268 - The conformance of xml.dom.minidom to the DOM specification was
   8269   improved. It detects a number of additional error cases; the
   8270   previous/next relationship works even when the tree is modified;
   8271   Node supports the normalize() method; NamedNodeMap, DocumentType and
   8272   DOMImplementation classes were added; Element supports the
   8273   hasAttribute and hasAttributeNS methods; and Text supports the splitText
   8274   method.
   8275 
   8276 Build issues
   8277 
   8278 - For Unix (and Unix-compatible) builds, configuration and building of
   8279   extension modules is now greatly automated.  Rather than having to
   8280   edit the Modules/Setup file to indicate which modules should be
   8281   built and where their include files and libraries are, a
   8282   distutils-based setup.py script now takes care of building most
   8283   extension modules.  All extension modules built this way are built
   8284   as shared libraries.  Only a few modules that must be linked
   8285   statically are still listed in the Setup file; you won't need to
   8286   edit their configuration.
   8287 
   8288 - Python should now build out of the box on Cygwin.  If it doesn't,
   8289   mail to Jason Tishler (jlt63 at users.sourceforge.net).
   8290 
   8291 - Python now always uses its own (renamed) implementation of getopt()
   8292   -- there's too much variation among C library getopt()
   8293   implementations.
   8294 
   8295 - C++ compilers are better supported; the CXX macro is always set to a
   8296   C++ compiler if one is found.
   8297 
   8298 Windows changes
   8299 
   8300 - select module:  By default under Windows, a select() call
   8301   can specify no more than 64 sockets.  Python now boosts
   8302   this Microsoft default to 512.  If you need even more than
   8303   that, see the MS docs (you'll need to #define FD_SETSIZE
   8304   and recompile Python from source).
   8305 
   8306 - Support for Windows 3.1, DOS and OS/2 is gone.  The Lib/dos-8x3
   8307   subdirectory is no more!
   8308 
   8309 
   8310 What's New in Python 2.0?
   8311 =========================
   8312 
   8313 Below is a list of all relevant changes since release 1.6.  Older
   8314 changes are in the file HISTORY.  If you are making the jump directly
   8315 from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the
   8316 HISTORY file!  Many important changes listed there.
   8317 
   8318 Alternatively, a good overview of the changes between 1.5.2 and 2.0 is
   8319 the document "What's New in Python 2.0" by Kuchling and Moshe Zadka:
   8320 http://www.amk.ca/python/2.0/.
   8321 
   8322 --Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
   8323 
   8324 ======================================================================
   8325 
   8326 What's new in 2.0 (since release candidate 1)?
   8327 ==============================================
   8328 
   8329 Standard library
   8330 
   8331 - The copy_reg module was modified to clarify its intended use: to
   8332   register pickle support for extension types, not for classes.
   8333   pickle() will raise a TypeError if it is passed a class.
   8334 
   8335 - Fixed a bug in gettext's "normalize and expand" code that prevented
   8336   it from finding an existing .mo file.
   8337 
   8338 - Restored support for HTTP/0.9 servers in httplib.
   8339 
   8340 - The math module was changed to stop raising OverflowError in case of
   8341   underflow, and return 0 instead in underflow cases.  Whether Python
   8342   used to raise OverflowError in case of underflow was platform-
   8343   dependent (it did when the platform math library set errno to ERANGE
   8344   on underflow).
   8345 
   8346 - Fixed a bug in StringIO that occurred when the file position was not
   8347   at the end of the file and write() was called with enough data to
   8348   extend past the end of the file.
   8349 
   8350 - Fixed a bug that caused Tkinter error messages to get lost on
   8351   Windows.  The bug was fixed by replacing direct use of
   8352   interp->result with Tcl_GetStringResult(interp).
   8353 
   8354 - Fixed bug in urllib2 that caused it to fail when it received an HTTP
   8355   redirect response.
   8356 
   8357 - Several changes were made to distutils: Some debugging code was
   8358   removed from util.  Fixed the installer used when an external zip
   8359   program (like WinZip) is not found; the source code for this
   8360   installer is in Misc/distutils.  check_lib() was modified to behave
   8361   more like AC_CHECK_LIB by add other_libraries() as a parameter.  The
   8362   test for whether installed modules are on sys.path was changed to
   8363   use both normcase() and normpath().
   8364 
   8365 - Several minor bugs were fixed in the xml package (the minidom,
   8366   pulldom, expatreader, and saxutils modules).
   8367 
   8368 - The regression test driver (regrtest.py) behavior when invoked with
   8369   -l changed: It now reports a count of objects that are recognized as
   8370   garbage but not freed by the garbage collector.
   8371 
   8372 - The regression test for the math module was changed to test
   8373   exceptional behavior when the test is run in verbose mode.  Python
   8374   cannot yet guarantee consistent exception behavior across platforms,
   8375   so the exception part of test_math is run only in verbose mode, and
   8376   may fail on your platform.
   8377 
   8378 Internals
   8379 
   8380 - PyOS_CheckStack() has been disabled on Win64, where it caused
   8381   test_sre to fail.
   8382 
   8383 Build issues
   8384 
   8385 - Changed compiler flags, so that gcc is always invoked with -Wall and
   8386   -Wstrict-prototypes.  Users compiling Python with GCC should see
   8387   exactly one warning, except if they have passed configure the
   8388   --with-pydebug flag.  The expected warning is for getopt() in
   8389   Modules/main.c.  This warning will be fixed for Python 2.1.
   8390 
   8391 - Fixed configure to add -threads argument during linking on OSF1.
   8392 
   8393 Tools and other miscellany
   8394 
   8395 - The compiler in Tools/compiler was updated to support the new
   8396   language features introduced in 2.0: extended print statement, list
   8397   comprehensions, and augmented assignments.  The new compiler should
   8398   also be backwards compatible with Python 1.5.2; the compiler will
   8399   always generate code for the version of the interpreter it runs
   8400   under.
   8401 
   8402 What's new in 2.0 release candidate 1 (since beta 2)?
   8403 =====================================================
   8404 
   8405 What is release candidate 1?
   8406 
   8407 We believe that release candidate 1 will fix all known bugs that we
   8408 intend to fix for the 2.0 final release.  This release should be a bit
   8409 more stable than the previous betas.  We would like to see even more
   8410 widespread testing before the final release, so we are producing this
   8411 release candidate.  The final release will be exactly the same unless
   8412 any show-stopping (or brown bag) bugs are found by testers of the
   8413 release candidate.
   8414 
   8415 All the changes since the last beta release are bug fixes or changes
   8416 to support building Python for specific platforms.
   8417 
   8418 Core language, builtins, and interpreter
   8419 
   8420 - A bug that caused crashes when __coerce__ was used with augmented
   8421   assignment, e.g. +=, was fixed.
   8422 
   8423 - Raise ZeroDivisionError when raising zero to a negative number,
   8424   e.g. 0.0 ** -2.0.  Note that math.pow is unrelated to the built-in
   8425   power operator and the result of math.pow(0.0, -2.0) will vary by
   8426   platform.  On Linux, it raises a ValueError.
   8427 
   8428 - A bug in Unicode string interpolation was fixed that occasionally
   8429   caused errors with formats including "%%".  For example, the
   8430   following expression "%% %s" % u"abc" no longer raises a TypeError.
   8431 
   8432 - Compilation of deeply nested expressions raises MemoryError instead
   8433   of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
   8434 
   8435 - In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode,
   8436   rendering them useless.  They are now written in binary mode again.
   8437 
   8438 Standard library
   8439 
   8440 - Keyword arguments are now accepted for most pattern and match object
   8441   methods in SRE, the standard regular expression engine.
   8442 
   8443 - In SRE, fixed error with negative lookahead and lookbehind that
   8444   manifested itself as a runtime error in patterns like "(?<!abc)(def)".
   8445 
   8446 - Several bugs in the Unicode handling and error handling in _tkinter
   8447   were fixed.
   8448 
   8449 - Fix memory management errors in Merge() and Tkapp_Call() routines.
   8450 
   8451 - Several changes were made to cStringIO to make it compatible with
   8452   the file-like object interface and with StringIO.  If operations are
   8453   performed on a closed object, an exception is raised.  The truncate
   8454   method now accepts a position argument and readline accepts a size
   8455   argument.
   8456 
   8457 - There were many changes made to the linuxaudiodev module and its
   8458   test suite; as a result, a short, unexpected audio sample should now
   8459   play when the regression test is run.
   8460 
   8461   Note that this module is named poorly, because it should work
   8462   correctly on any platform that supports the Open Sound System
   8463   (OSS).
   8464 
   8465   The module now raises exceptions when errors occur instead of
   8466   crashing.  It also defines the AFMT_A_LAW format (logarithmic A-law
   8467   audio) and defines a getptr() method that calls the
   8468   SNDCTL_DSP_GETxPTR ioctl defined in the OSS Programmer's Guide.
   8469 
   8470 - The library_version attribute, introduced in an earlier beta, was
   8471   removed because it can not be supported with early versions of the C
   8472   readline library, which provides no way to determine the version at
   8473   compile-time.
   8474 
   8475 - The binascii module is now enabled on Win64.
   8476 
   8477 - tokenize.py no longer suffers "recursion depth" errors when parsing
   8478   programs with very long string literals.
   8479 
   8480 Internals
   8481 
   8482 - Fixed several buffer overflow vulnerabilities in calculate_path(),
   8483   which is called when the interpreter starts up to determine where
   8484   the standard library is installed.  These vulnerabilities affect all
   8485   previous versions of Python and can be exploited by setting very
   8486   long values for PYTHONHOME or argv[0].  The risk is greatest for a
   8487   setuid Python script, although use of the wrapper in
   8488   Misc/setuid-prog.c will eliminate the vulnerability.
   8489 
   8490 - Fixed garbage collection bugs in instance creation that were
   8491   triggered when errors occurred during initialization.  The solution,
   8492   applied in cPickle and in PyInstance_New(), is to call
   8493   PyObject_GC_Init() after the initialization of the object's
   8494   container attributes is complete.
   8495 
   8496 - pyexpat adds definitions of PyModule_AddStringConstant and
   8497   PyModule_AddObject if the Python version is less than 2.0, which
   8498   provides compatibility with PyXML on Python 1.5.2.
   8499 
   8500 - If the platform has a bogus definition for LONG_BIT (the number of
   8501   bits in a long), an error will be reported at compile time.
   8502 
   8503 - Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
   8504   collection crashes and possibly other, unreported crashes.
   8505 
   8506 - Fixed a memory leak in _PyUnicode_Fini().
   8507 
   8508 Build issues
   8509 
   8510 - configure now accepts a --with-suffix option that specifies the
   8511   executable suffix.  This is useful for builds on Cygwin and Mac OS
   8512   X, for example.
   8513 
   8514 - The mmap.PAGESIZE constant is now initialized using sysconf when
   8515   possible, which eliminates a dependency on -lucb for Reliant UNIX.
   8516 
   8517 - The md5 file should now compile on all platforms.
   8518 
   8519 - The select module now compiles on platforms that do not define
   8520   POLLRDNORM and related constants.
   8521 
   8522 - Darwin (Mac OS X):  Initial support for static builds on this
   8523   platform.
   8524 
   8525 - BeOS: A number of changes were made to the build and installation
   8526   process.  ar-fake now operates on a directory of object files.
   8527   dl_export.h is gone, and its macros now appear on the mwcc command
   8528   line during build on PPC BeOS.
   8529 
   8530 - Platform directory in lib/python2.0 is "plat-beos5" (or
   8531   "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
   8532 
   8533 - Cygwin: Support for shared libraries, Tkinter, and sockets.
   8534 
   8535 - SunOS 4.1.4_JL: Fix test for directory existence in configure.
   8536 
   8537 Tools and other miscellany
   8538 
   8539 - Removed debugging prints from main used with freeze.
   8540 
   8541 - IDLE auto-indent no longer crashes when it encounters Unicode
   8542   characters.
   8543 
   8544 What's new in 2.0 beta 2 (since beta 1)?
   8545 ========================================
   8546 
   8547 Core language, builtins, and interpreter
   8548 
   8549 - Add support for unbounded ints in %d,i,u,x,X,o formats; for example
   8550   "%d" % 2L**64 == "18446744073709551616".
   8551 
   8552 - Add -h and -V command line options to print the usage message and
   8553   Python version number and exit immediately.
   8554 
   8555 - eval() and exec accept Unicode objects as code parameters.
   8556 
   8557 - getattr() and setattr() now also accept Unicode objects for the
   8558   attribute name, which are converted to strings using the default
   8559   encoding before lookup.
   8560 
   8561 - Multiplication on string and Unicode now does proper bounds
   8562   checking; e.g. 'a' * 65536 * 65536 will raise ValueError, "repeated
   8563   string is too long."
   8564 
   8565 - Better error message when continue is found in try statement in a
   8566   loop.
   8567 
   8568 
   8569 Standard library and extensions
   8570 
   8571 - socket module: the OpenSSL code now adds support for RAND_status()
   8572   and EGD (Entropy Gathering Device).
   8573 
   8574 - array: reverse() method of array now works.  buffer_info() now does
   8575   argument checking; it still takes no arguments.
   8576 
   8577 - asyncore/asynchat: Included most recent version from Sam Rushing.
   8578 
   8579 - cgi: Accept '&' or ';' as separator characters when parsing form data.
   8580 
   8581 - CGIHTTPServer: Now works on Windows (and perhaps even Mac).
   8582 
   8583 - ConfigParser: When reading the file, options spelled in upper case
   8584   letters are now correctly converted to lowercase.
   8585 
   8586 - copy: Copy Unicode objects atomically.
   8587 
   8588 - cPickle: Fail gracefully when copy_reg can't be imported.
   8589 
   8590 - cStringIO: Implemented readlines() method.
   8591 
   8592 - dbm: Add get() and setdefault() methods to dbm object.  Add constant
   8593   `library' to module that names the library used.  Added doc strings
   8594   and method names to error messages.  Uses configure to determine
   8595   which ndbm.h file to include; Berkeley DB's nbdm and GDBM's ndbm is
   8596   now available options.
   8597 
   8598 - distutils: Update to version 0.9.3.
   8599 
   8600 - dl: Add several dl.RTLD_ constants.
   8601 
   8602 - fpectl: Now supported on FreeBSD.
   8603 
   8604 - gc: Add DEBUG_SAVEALL option.  When enabled all garbage objects
   8605   found by the collector will be saved in gc.garbage.  This is useful
   8606   for debugging a program that creates reference cycles.
   8607 
   8608 - httplib: Three changes: Restore support for set_debuglevel feature
   8609   of HTTP class.  Do not close socket on zero-length response.  Do not
   8610   crash when server sends invalid content-length header.
   8611 
   8612 - mailbox: Mailbox class conforms better to qmail specifications.
   8613 
   8614 - marshal: When reading a short, sign-extend on platforms where shorts
   8615   are bigger than 16 bits.  When reading a long, repair the unportable
   8616   sign extension that was being done for 64-bit machines.  (It assumed
   8617   that signed right shift sign-extends.)
   8618 
   8619 - operator: Add contains(), invert(), __invert__() as aliases for
   8620   __contains__(), inv(), and __inv__() respectively.
   8621 
   8622 - os: Add support for popen2() and popen3() on all platforms where
   8623   fork() exists.  (popen4() is still in the works.)
   8624 
   8625 - os: (Windows only:) Add startfile() function that acts like double-
   8626   clicking on a file in Explorer (or passing the file name to the
   8627   DOS "start" command).
   8628 
   8629 - os.path: (Windows, DOS:) Treat trailing colon correctly in
   8630   os.path.join.  os.path.join("a:", "b") yields "a:b".
   8631 
   8632 - pickle: Now raises ValueError when an invalid pickle that contains
   8633   a non-string repr where a string repr was expected.  This behavior
   8634   matches cPickle.
   8635 
   8636 - posixfile: Remove broken __del__() method.
   8637 
   8638 - py_compile: support CR+LF line terminators in source file.
   8639 
   8640 - readline: Does not immediately exit when ^C is hit when readline and
   8641   threads are configured.  Adds definition of rl_library_version.  (The
   8642   latter addition requires GNU readline 2.2 or later.)
   8643 
   8644 - rfc822: Domain literals returned by AddrlistClass method
   8645   getdomainliteral() are now properly wrapped in brackets.
   8646 
   8647 - site: sys.setdefaultencoding() should only be called in case the
   8648   standard default encoding ("ascii") is changed. This saves quite a
   8649   few cycles during startup since the first call to
   8650   setdefaultencoding() will initialize the codec registry and the
   8651   encodings package.
   8652 
   8653 - socket: Support for size hint in readlines() method of object returned
   8654   by makefile().
   8655 
   8656 - sre: Added experimental expand() method to match objects.  Does not
   8657   use buffer interface on Unicode strings.  Does not hang if group id
   8658   is followed by whitespace.
   8659 
   8660 - StringIO: Size hint in readlines() is now supported as documented.
   8661 
   8662 - struct: Check ranges for bytes and shorts.
   8663 
   8664 - urllib: Improved handling of win32 proxy settings. Fixed quote and
   8665   quote_plus functions so that the always encode a comma.
   8666 
   8667 - Tkinter: Image objects are now guaranteed to have unique ids.  Set
   8668   event.delta to zero if Tk version doesn't support mousewheel.
   8669   Removed some debugging prints.
   8670 
   8671 - UserList: now implements __contains__().
   8672 
   8673 - webbrowser: On Windows, use os.startfile() instead of os.popen(),
   8674   which works around a bug in Norton AntiVirus 2000 that leads directly
   8675   to a Blue Screen freeze.
   8676 
   8677 - xml: New version detection code allows PyXML to override standard
   8678   XML package if PyXML version is greater than 0.6.1.
   8679 
   8680 - xml.dom: DOM level 1 support for basic XML.  Includes xml.dom.minidom
   8681   (conventional DOM), and xml.dom.pulldom, which allows building the DOM
   8682   tree only for nodes which are sufficiently interesting to a specific
   8683   application.  Does not provide the HTML-specific extensions.  Still
   8684   undocumented.
   8685 
   8686 - xml.sax: SAX 2 support for Python, including all the handler
   8687   interfaces needed to process XML 1.0 compliant XML.  Some
   8688   documentation is already available.
   8689 
   8690 - pyexpat: Renamed to xml.parsers.expat since this is part of the new,
   8691   packagized XML support.
   8692 
   8693 
   8694 C API
   8695 
   8696 - Add three new convenience functions for module initialization --
   8697   PyModule_AddObject(), PyModule_AddIntConstant(), and
   8698   PyModule_AddStringConstant().
   8699 
   8700 - Cleaned up definition of NULL in C source code; all definitions were
   8701   removed and add #error to Python.h if NULL isn't defined after
   8702   #include of stdio.h.
   8703 
   8704 - Py_PROTO() macros that were removed in 2.0b1 have been restored for
   8705   backwards compatibility (at the source level) with old extensions.
   8706 
   8707 - A wrapper API was added for signal() and sigaction().  Instead of
   8708   either function, always use PyOS_getsig() to get a signal handler
   8709   and PyOS_setsig() to set one.  A new convenience typedef
   8710   PyOS_sighandler_t is defined for the type of signal handlers.
   8711 
   8712 - Add PyString_AsStringAndSize() function that provides access to the
   8713   internal data buffer and size of a string object -- or the default
   8714   encoded version of a Unicode object.
   8715 
   8716 - PyString_Size() and PyString_AsString() accept Unicode objects.
   8717 
   8718 - The standard header <limits.h> is now included by Python.h (if it
   8719   exists).  INT_MAX and LONG_MAX will always be defined, even if
   8720   <limits.h> is not available.
   8721 
   8722 - PyFloat_FromString takes a second argument, pend, that was
   8723   effectively useless.  It is now officially useless but preserved for
   8724   backwards compatibility.  If the pend argument is not NULL, *pend is
   8725   set to NULL.
   8726 
   8727 - PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
   8728   for the attribute name.  See note on getattr() above.
   8729 
   8730 - A few bug fixes to argument processing for Unicode.
   8731   PyArg_ParseTupleAndKeywords() now accepts "es#" and "es".
   8732   PyArg_Parse() special cases "s#" for Unicode objects; it returns a
   8733   pointer to the default encoded string data instead of to the raw
   8734   UTF-16.
   8735 
   8736 - Py_BuildValue accepts B format (for bgen-generated code).
   8737 
   8738 
   8739 Internals
   8740 
   8741 - On Unix, fix code for finding Python installation directory so that
   8742   it works when argv[0] is a relative path.
   8743 
   8744 - Added a true unicode_internal_encode() function and fixed the
   8745   unicode_internal_decode function() to support Unicode objects directly
   8746   rather than by generating a copy of the object.
   8747 
   8748 - Several of the internal Unicode tables are much smaller now, and
   8749   the source code should be much friendlier to weaker compilers.
   8750 
   8751 - In the garbage collector: Fixed bug in collection of tuples.  Fixed
   8752   bug that caused some instances to be removed from the container set
   8753   while they were still live.  Fixed parsing in gc.set_debug() for
   8754   platforms where sizeof(long) > sizeof(int).
   8755 
   8756 - Fixed refcount problem in instance deallocation that only occurred
   8757   when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
   8758 
   8759 - On Windows, getpythonregpath is now protected against null data in
   8760   registry key.
   8761 
   8762 - On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
   8763   condition.
   8764 
   8765 
   8766 Build and platform-specific issues
   8767 
   8768 - Better support of GNU Pth via --with-pth configure option.
   8769 
   8770 - Python/C API now properly exposed to dynamically-loaded extension
   8771   modules on Reliant UNIX.
   8772 
   8773 - Changes for the benefit of SunOS 4.1.4 (really!).  mmapmodule.c:
   8774   Don't define MS_SYNC to be zero when it is undefined.  Added missing
   8775   prototypes in posixmodule.c.
   8776 
   8777 - Improved support for HP-UX build.  Threads should now be correctly
   8778   configured (on HP-UX 10.20 and 11.00).
   8779 
   8780 - Fix largefile support on older NetBSD systems and OpenBSD by adding
   8781   define for TELL64.
   8782 
   8783 
   8784 Tools and other miscellany
   8785 
   8786 - ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
   8787 
   8788 - freeze: The modulefinder now works with 2.0 opcodes.
   8789 
   8790 - IDLE:
   8791   Move hackery of sys.argv until after the Tk instance has been
   8792   created, which allows the application-specific Tkinter
   8793   initialization to be executed if present; also pass an explicit
   8794   className parameter to the Tk() constructor.
   8795 
   8796 
   8797 What's new in 2.0 beta 1?
   8798 =========================
   8799 
   8800 Source Incompatibilities
   8801 ------------------------
   8802 
   8803 None.  Note that 1.6 introduced several incompatibilities with 1.5.2,
   8804 such as single-argument append(), connect() and bind(), and changes to
   8805 str(long) and repr(float).
   8806 
   8807 
   8808 Binary Incompatibilities
   8809 ------------------------
   8810 
   8811 - Third party extensions built for Python 1.5.x or 1.6 cannot be used
   8812 with Python 2.0; these extensions will have to be rebuilt for Python
   8813 2.0.
   8814 
   8815 - On Windows, attempting to import a third party extension built for
   8816 Python 1.5.x or 1.6 results in an immediate crash; there's not much we
   8817 can do about this.  Check your PYTHONPATH environment variable!
   8818 
   8819 - Python bytecode files (*.pyc and *.pyo) are not compatible between
   8820 releases.
   8821 
   8822 
   8823 Overview of Changes Since 1.6
   8824 -----------------------------
   8825 
   8826 There are many new modules (including brand new XML support through
   8827 the xml package, and i18n support through the gettext module); a list
   8828 of all new modules is included below.  Lots of bugs have been fixed.
   8829 
   8830 The process for making major new changes to the language has changed
   8831 since Python 1.6.  Enhancements must now be documented by a Python
   8832 Enhancement Proposal (PEP) before they can be accepted.
   8833 
   8834 There are several important syntax enhancements, described in more
   8835 detail below:
   8836 
   8837   - Augmented assignment, e.g. x += 1
   8838 
   8839   - List comprehensions, e.g. [x**2 for x in range(10)]
   8840 
   8841   - Extended import statement, e.g. import Module as Name
   8842 
   8843   - Extended print statement, e.g. print >> file, "Hello"
   8844 
   8845 Other important changes:
   8846 
   8847   - Optional collection of cyclical garbage
   8848 
   8849 Python Enhancement Proposal (PEP)
   8850 ---------------------------------
   8851 
   8852 PEP stands for Python Enhancement Proposal.  A PEP is a design
   8853 document providing information to the Python community, or describing
   8854 a new feature for Python.  The PEP should provide a concise technical
   8855 specification of the feature and a rationale for the feature.
   8856 
   8857 We intend PEPs to be the primary mechanisms for proposing new
   8858 features, for collecting community input on an issue, and for
   8859 documenting the design decisions that have gone into Python.  The PEP
   8860 author is responsible for building consensus within the community and
   8861 documenting dissenting opinions.
   8862 
   8863 The PEPs are available at http://python.sourceforge.net/peps/.
   8864 
   8865 Augmented Assignment
   8866 --------------------
   8867 
   8868 This must have been the most-requested feature of the past years!
   8869 Eleven new assignment operators were added:
   8870 
   8871     += -= *= /= %= **= <<= >>= &= ^= |=
   8872 
   8873 For example,
   8874 
   8875     A += B
   8876 
   8877 is similar to
   8878 
   8879     A = A + B
   8880 
   8881 except that A is evaluated only once (relevant when A is something
   8882 like dict[index].attr).
   8883 
   8884 However, if A is a mutable object, A may be modified in place.  Thus,
   8885 if A is a number or a string, A += B has the same effect as A = A+B
   8886 (except A is only evaluated once); but if a is a list, A += B has the
   8887 same effect as A.extend(B)!
   8888 
   8889 Classes and built-in object types can override the new operators in
   8890 order to implement the in-place behavior; the not-in-place behavior is
   8891 used automatically as a fallback when an object doesn't implement the
   8892 in-place behavior.  For classes, the method name is derived from the
   8893 method name for the corresponding not-in-place operator by inserting
   8894 an 'i' in front of the name, e.g. __iadd__ implements in-place
   8895 __add__.
   8896 
   8897 Augmented assignment was implemented by Thomas Wouters.
   8898 
   8899 
   8900 List Comprehensions
   8901 -------------------
   8902 
   8903 This is a flexible new notation for lists whose elements are computed
   8904 from another list (or lists).  The simplest form is:
   8905 
   8906     [<expression> for <variable> in <sequence>]
   8907 
   8908 For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9].
   8909 This is more efficient than a for loop with a list.append() call.
   8910 
   8911 You can also add a condition:
   8912 
   8913     [<expression> for <variable> in <sequence> if <condition>]
   8914 
   8915 For example, [w for w in words if w == w.lower()] would yield the list
   8916 of words that contain no uppercase characters.  This is more efficient
   8917 than a for loop with an if statement and a list.append() call.
   8918 
   8919 You can also have nested for loops and more than one 'if' clause.  For
   8920 example, here's a function that flattens a sequence of sequences::
   8921 
   8922     def flatten(seq):
   8923         return [x for subseq in seq for x in subseq]
   8924 
   8925     flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
   8926 
   8927 This prints
   8928 
   8929     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
   8930 
   8931 List comprehensions originated as a patch set from Greg Ewing; Skip
   8932 Montanaro and Thomas Wouters also contributed.  Described by PEP 202.
   8933 
   8934 
   8935 Extended Import Statement
   8936 -------------------------
   8937 
   8938 Many people have asked for a way to import a module under a different
   8939 name.  This can be accomplished like this:
   8940 
   8941     import foo
   8942     bar = foo
   8943     del foo
   8944 
   8945 but this common idiom gets old quickly.  A simple extension of the
   8946 import statement now allows this to be written as follows:
   8947 
   8948     import foo as bar
   8949 
   8950 There's also a variant for 'from ... import':
   8951 
   8952     from foo import bar as spam
   8953 
   8954 This also works with packages; e.g. you can write this:
   8955 
   8956     import test.regrtest as regrtest
   8957 
   8958 Note that 'as' is not a new keyword -- it is recognized only in this
   8959 context (this is only possible because the syntax for the import
   8960 statement doesn't involve expressions).
   8961 
   8962 Implemented by Thomas Wouters.  Described by PEP 221.
   8963 
   8964 
   8965 Extended Print Statement
   8966 ------------------------
   8967 
   8968 Easily the most controversial new feature, this extension to the print
   8969 statement adds an option to make the output go to a different file
   8970 than the default sys.stdout.
   8971 
   8972 For example, to write an error message to sys.stderr, you can now
   8973 write:
   8974 
   8975     print >> sys.stderr, "Error: bad dog!"
   8976 
   8977 As a special feature, if the expression used to indicate the file
   8978 evaluates to None, the current value of sys.stdout is used.  Thus:
   8979 
   8980     print >> None, "Hello world"
   8981 
   8982 is equivalent to
   8983 
   8984     print "Hello world"
   8985 
   8986 Design and implementation by Barry Warsaw.  Described by PEP 214.
   8987 
   8988 
   8989 Optional Collection of Cyclical Garbage
   8990 ---------------------------------------
   8991 
   8992 Python is now equipped with a garbage collector that can hunt down
   8993 cyclical references between Python objects.  It's no replacement for
   8994 reference counting; in fact, it depends on the reference counts being
   8995 correct, and decides that a set of objects belong to a cycle if all
   8996 their reference counts can be accounted for from their references to
   8997 each other.  This devious scheme was first proposed by Eric Tiedemann,
   8998 and brought to implementation by Neil Schemenauer.
   8999 
   9000 There's a module "gc" that lets you control some parameters of the
   9001 garbage collection.  There's also an option to the configure script
   9002 that lets you enable or disable the garbage collection.  In 2.0b1,
   9003 it's on by default, so that we (hopefully) can collect decent user
   9004 experience with this new feature.  There are some questions about its
   9005 performance.  If it proves to be too much of a problem, we'll turn it
   9006 off by default in the final 2.0 release.
   9007 
   9008 
   9009 Smaller Changes
   9010 ---------------
   9011 
   9012 A new function zip() was added.  zip(seq1, seq2, ...) is equivalent to
   9013 map(None, seq1, seq2, ...) when the sequences have the same length;
   9014 i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)].  When
   9015 the lists are not all the same length, the shortest list wins:
   9016 zip([1,2,3], [10,20]) returns [(1,10), (2,20)].  See PEP 201.
   9017 
   9018 sys.version_info is a tuple (major, minor, micro, level, serial).
   9019 
   9020 Dictionaries have an odd new method, setdefault(key, default).
   9021 dict.setdefault(key, default) returns dict[key] if it exists; if not,
   9022 it sets dict[key] to default and returns that value.  Thus:
   9023 
   9024     dict.setdefault(key, []).append(item)
   9025 
   9026 does the same work as this common idiom:
   9027 
   9028     if not dict.has_key(key):
   9029         dict[key] = []
   9030     dict[key].append(item)
   9031 
   9032 There are two new variants of SyntaxError that are raised for
   9033 indentation-related errors: IndentationError and TabError.
   9034 
   9035 Changed \x to consume exactly two hex digits; see PEP 223.  Added \U
   9036 escape that consumes exactly eight hex digits.
   9037 
   9038 The limits on the size of expressions and file in Python source code
   9039 have been raised from 2**16 to 2**32.  Previous versions of Python
   9040 were limited because the maximum argument size the Python VM accepted
   9041 was 2**16.  This limited the size of object constructor expressions,
   9042 e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files.  This
   9043 limit was raised thanks to a patch by Charles Waldman that effectively
   9044 fixes the problem.  It is now much more likely that you will be
   9045 limited by available memory than by an arbitrary limit in Python.
   9046 
   9047 The interpreter's maximum recursion depth can be modified by Python
   9048 programs using sys.getrecursionlimit and sys.setrecursionlimit.  This
   9049 limit is the maximum number of recursive calls that can be made by
   9050 Python code.  The limit exists to prevent infinite recursion from
   9051 overflowing the C stack and causing a core dump.  The default value is
   9052 1000.  The maximum safe value for a particular platform can be found
   9053 by running Tools/scripts/find_recursionlimit.py.
   9054 
   9055 New Modules and Packages
   9056 ------------------------
   9057 
   9058 atexit - for registering functions to be called when Python exits.
   9059 
   9060 imputil - Greg Stein's alternative API for writing custom import
   9061 hooks.
   9062 
   9063 pyexpat - an interface to the Expat XML parser, contributed by Paul
   9064 Prescod.
   9065 
   9066 xml - a new package with XML support code organized (so far) in three
   9067 subpackages: xml.dom, xml.sax, and xml.parsers.  Describing these
   9068 would fill a volume.  There's a special feature whereby a
   9069 user-installed package named _xmlplus overrides the standard
   9070 xmlpackage; this is intended to give the XML SIG a hook to distribute
   9071 backwards-compatible updates to the standard xml package.
   9072 
   9073 webbrowser - a platform-independent API to launch a web browser.
   9074 
   9075 
   9076 Changed Modules
   9077 ---------------
   9078 
   9079 array -- new methods for array objects: count, extend, index, pop, and
   9080 remove
   9081 
   9082 binascii -- new functions b2a_hex and a2b_hex that convert between
   9083 binary data and its hex representation
   9084 
   9085 calendar -- Many new functions that support features including control
   9086 over which day of the week is the first day, returning strings instead
   9087 of printing them.  Also new symbolic constants for days of week,
   9088 e.g. MONDAY, ..., SUNDAY.
   9089 
   9090 cgi -- FieldStorage objects have a getvalue method that works like a
   9091 dictionary's get method and returns the value attribute of the object.
   9092 
   9093 ConfigParser -- The parser object has new methods has_option,
   9094 remove_section, remove_option, set, and write.  They allow the module
   9095 to be used for writing config files as well as reading them.
   9096 
   9097 ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
   9098 optionally support the RFC 959 REST command.
   9099 
   9100 gzip -- readline and readlines now accept optional size arguments
   9101 
   9102 httplib -- New interfaces and support for HTTP/1.1 by Greg Stein.  See
   9103 the module doc strings for details.
   9104 
   9105 locale -- implement getdefaultlocale for Win32 and Macintosh
   9106 
   9107 marshal -- no longer dumps core when marshaling deeply nested or
   9108 recursive data structures
   9109 
   9110 os -- new functions isatty, seteuid, setegid, setreuid, setregid
   9111 
   9112 os/popen2 -- popen2/popen3/popen4 support under Windows.  popen2/popen3
   9113 support under Unix.
   9114 
   9115 os/pty -- support for openpty and forkpty
   9116 
   9117 os.path -- fix semantics of os.path.commonprefix
   9118 
   9119 smtplib -- support for sending very long messages
   9120 
   9121 socket -- new function getfqdn()
   9122 
   9123 readline -- new functions to read, write and truncate history files.
   9124 The readline section of the library reference manual contains an
   9125 example.
   9126 
   9127 select -- add interface to poll system call
   9128 
   9129 shutil -- new copyfileobj function
   9130 
   9131 SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
   9132 HTTP server.
   9133 
   9134 Tkinter -- optimization of function flatten
   9135 
   9136 urllib -- scans environment variables for proxy configuration,
   9137 e.g. http_proxy.
   9138 
   9139 whichdb -- recognizes dumbdbm format
   9140 
   9141 
   9142 Obsolete Modules
   9143 ----------------
   9144 
   9145 None.  However note that 1.6 made a whole slew of modules obsolete:
   9146 stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail,
   9147 poly, zmod, strop, util, whatsound.
   9148 
   9149 
   9150 Changed, New, Obsolete Tools
   9151 ----------------------------
   9152 
   9153 None.
   9154 
   9155 
   9156 C-level Changes
   9157 ---------------
   9158 
   9159 Several cleanup jobs were carried out throughout the source code.
   9160 
   9161 All C code was converted to ANSI C; we got rid of all uses of the
   9162 Py_PROTO() macro, which makes the header files a lot more readable.
   9163 
   9164 Most of the portability hacks were moved to a new header file,
   9165 pyport.h; several other new header files were added and some old
   9166 header files were removed, in an attempt to create a more rational set
   9167 of header files.  (Few of these ever need to be included explicitly;
   9168 they are all included by Python.h.)
   9169 
   9170 Trent Mick ensured portability to 64-bit platforms, under both Linux
   9171 and Win64, especially for the new Intel Itanium processor.  Mick also
   9172 added large file support for Linux64 and Win64.
   9173 
   9174 The C APIs to return an object's size have been update to consistently
   9175 use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size.  In
   9176 previous versions, the abstract interfaces used PyXXX_Length and the
   9177 concrete interfaces used PyXXX_Size.  The old names,
   9178 e.g. PyObject_Length, are still available for backwards compatibility
   9179 at the API level, but are deprecated.
   9180 
   9181 The PyOS_CheckStack function has been implemented on Windows by
   9182 Fredrik Lundh.  It prevents Python from failing with a stack overflow
   9183 on Windows.
   9184 
   9185 The GC changes resulted in creation of two new slots on object,
   9186 tp_traverse and tp_clear.  The augmented assignment changes result in
   9187 the creation of a new slot for each in-place operator.
   9188 
   9189 The GC API creates new requirements for container types implemented in
   9190 C extension modules.  See Include/objimpl.h for details.
   9191 
   9192 PyErr_Format has been updated to automatically calculate the size of
   9193 the buffer needed to hold the formatted result string.  This change
   9194 prevents crashes caused by programmer error.
   9195 
   9196 New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
   9197 
   9198 PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions
   9199 that are the same as their non-Ex counterparts except they take an
   9200 extra flag argument that tells them to close the file when done.
   9201 
   9202 XXX There were other API changes that should be fleshed out here.
   9203 
   9204 
   9205 Windows Changes
   9206 ---------------
   9207 
   9208 New popen2/popen3/peopen4 in os module (see Changed Modules above).
   9209 
   9210 os.popen is much more usable on Windows 95 and 98.  See Microsoft
   9211 Knowledge Base article Q150956.  The Win9x workaround described there
   9212 is implemented by the new w9xpopen.exe helper in the root of your
   9213 Python installation.  Note that Python uses this internally; it is not
   9214 a standalone program.
   9215 
   9216 Administrator privileges are no longer required to install Python
   9217 on Windows NT or Windows 2000.  If you have administrator privileges,
   9218 Python's registry info will be written under HKEY_LOCAL_MACHINE.
   9219 Otherwise the installer backs off to writing Python's registry info
   9220 under HKEY_CURRENT_USER.  The latter is sufficient for all "normal"
   9221 uses of Python, but will prevent some advanced uses from working
   9222 (for example, running a Python script as an NT service, or possibly
   9223 from CGI).
   9224 
   9225 [This was new in 1.6] The installer no longer runs a separate Tcl/Tk
   9226 installer; instead, it installs the needed Tcl/Tk files directly in the
   9227 Python directory.  If you already have a Tcl/Tk installation, this
   9228 wastes some disk space (about 4 Megs) but avoids problems with
   9229 conflicting Tcl/Tk installations, and makes it much easier for Python
   9230 to ensure that Tcl/Tk can find all its files.
   9231 
   9232 [This was new in 1.6] The Windows installer now installs by default in
   9233 \Python20\ on the default volume, instead of \Program Files\Python-2.0\.
   9234 
   9235 
   9236 Updates to the changes between 1.5.2 and 1.6
   9237 --------------------------------------------
   9238 
   9239 The 1.6 NEWS file can't be changed after the release is done, so here
   9240 is some late-breaking news:
   9241 
   9242 New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
   9243 and changes to getlocale() and setlocale().
   9244 
   9245 The new module is now enabled per default.
   9246 
   9247 It is not true that the encodings codecs cannot be used for normal
   9248 strings: the string.encode() (which is also present on 8-bit strings
   9249 !) allows using them for 8-bit strings too, e.g. to convert files from
   9250 cp1252 (Windows) to latin-1 or vice-versa.
   9251 
   9252 Japanese codecs are available from Tamito KAJIYAMA:
   9253 http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
   9254 
   9255 
   9256 ======================================================================
   9257 
   9258 
   9259 =======================================
   9260 ==> Release 1.6 (September 5, 2000) <==
   9261 =======================================
   9262 
   9263 What's new in release 1.6?
   9264 ==========================
   9265 
   9266 Below is a list of all relevant changes since release 1.5.2.
   9267 
   9268 
   9269 Source Incompatibilities
   9270 ------------------------
   9271 
   9272 Several small incompatible library changes may trip you up:
   9273 
   9274   - The append() method for lists can no longer be invoked with more
   9275   than one argument.  This used to append a single tuple made out of
   9276   all arguments, but was undocumented.  To append a tuple, use
   9277   e.g. l.append((a, b, c)).
   9278 
   9279   - The connect(), connect_ex() and bind() methods for sockets require
   9280   exactly one argument.  Previously, you could call s.connect(host,
   9281   port), but this was undocumented. You must now write
   9282   s.connect((host, port)).
   9283 
   9284   - The str() and repr() functions are now different more often.  For
   9285   long integers, str() no longer appends a 'L'.  Thus, str(1L) == '1',
   9286   which used to be '1L'; repr(1L) is unchanged and still returns '1L'.
   9287   For floats, repr() now gives 17 digits of precision, to ensure no
   9288   precision is lost (on all current hardware).
   9289 
   9290   - The -X option is gone.  Built-in exceptions are now always
   9291   classes.  Many more library modules also have been converted to
   9292   class-based exceptions.
   9293 
   9294 
   9295 Binary Incompatibilities
   9296 ------------------------
   9297 
   9298 - Third party extensions built for Python 1.5.x cannot be used with
   9299 Python 1.6; these extensions will have to be rebuilt for Python 1.6.
   9300 
   9301 - On Windows, attempting to import a third party extension built for
   9302 Python 1.5.x results in an immediate crash; there's not much we can do
   9303 about this.  Check your PYTHONPATH environment variable!
   9304 
   9305 
   9306 Overview of Changes since 1.5.2
   9307 -------------------------------
   9308 
   9309 For this overview, I have borrowed from the document "What's New in
   9310 Python 2.0" by Andrew Kuchling and Moshe Zadka:
   9311 http://www.amk.ca/python/2.0/ .
   9312 
   9313 There are lots of new modules and lots of bugs have been fixed.  A
   9314 list of all new modules is included below.
   9315 
   9316 Probably the most pervasive change is the addition of Unicode support.
   9317 We've added a new fundamental datatype, the Unicode string, a new
   9318 built-in function unicode(), a numerous C APIs to deal with Unicode
   9319 and encodings.  See the file Misc/unicode.txt for details, or
   9320 http://starship.python.net/crew/lemburg/unicode-proposal.txt.
   9321 
   9322 Two other big changes, related to the Unicode support, are the
   9323 addition of string methods and (yet another) new regular expression
   9324 engine.
   9325 
   9326   - String methods mean that you can now say s.lower() etc. instead of
   9327   importing the string module and saying string.lower(s) etc.  One
   9328   peculiarity is that the equivalent of string.join(sequence,
   9329   delimiter) is delimiter.join(sequence).  Use " ".join(sequence) for
   9330   the effect of string.join(sequence); to make this more readable, try
   9331   space=" " first.  Note that the maxsplit argument defaults in
   9332   split() and replace() have changed from 0 to -1.
   9333 
   9334   - The new regular expression engine, SRE by Fredrik Lundh, is fully
   9335   backwards compatible with the old engine, and is in fact invoked
   9336   using the same interface (the "re" module).  You can explicitly
   9337   invoke the old engine by import pre, or the SRE engine by importing
   9338   sre.  SRE is faster than pre, and supports Unicode (which was the
   9339   main reason to put effort in yet another new regular expression
   9340   engine -- this is at least the fourth!).
   9341 
   9342 
   9343 Other Changes
   9344 -------------
   9345 
   9346 Other changes that won't break code but are nice to know about:
   9347 
   9348 Deleting objects is now safe even for deeply nested data structures.
   9349 
   9350 Long/int unifications: long integers can be used in seek() calls, as
   9351 slice indexes.
   9352 
   9353 String formatting (s % args) has a new formatting option, '%r', which
   9354 acts like '%s' but inserts repr(arg) instead of str(arg). (Not yet in
   9355 alpha 1.)
   9356 
   9357 Greg Ward's "distutils" package is included: this will make
   9358 installing, building and distributing third party packages much
   9359 simpler.
   9360 
   9361 There's now special syntax that you can use instead of the apply()
   9362 function.  f(*args, **kwds) is equivalent to apply(f, args, kwds).
   9363 You can also use variations f(a1, a2, *args, **kwds) and you can leave
   9364 one or the other out: f(*args), f(**kwds).
   9365 
   9366 The built-ins int() and long() take an optional second argument to
   9367 indicate the conversion base -- of course only if the first argument
   9368 is a string.  This makes string.atoi() and string.atol() obsolete.
   9369 (string.atof() was already obsolete).
   9370 
   9371 When a local variable is known to the compiler but undefined when
   9372 used, a new exception UnboundLocalError is raised.  This is a class
   9373 derived from NameError so code catching NameError should still work.
   9374 The purpose is to provide better diagnostics in the following example:
   9375   x = 1
   9376   def f():
   9377       print x
   9378       x = x+1
   9379 This used to raise a NameError on the print statement, which confused
   9380 even experienced Python programmers (especially if there are several
   9381 hundreds of lines of code between the reference and the assignment to
   9382 x :-).
   9383 
   9384 You can now override the 'in' operator by defining a __contains__
   9385 method.  Note that it has its arguments backwards: x in a causes
   9386 a.__contains__(x) to be called.  That's why the name isn't __in__.
   9387 
   9388 The exception AttributeError will have a more friendly error message,
   9389 e.g.: <code>'Spam' instance has no attribute 'eggs'</code>.  This may
   9390 <b>break code</b> that expects the message to be exactly the attribute
   9391 name.
   9392 
   9393 
   9394 New Modules in 1.6
   9395 ------------------
   9396 
   9397 UserString - base class for deriving from the string type.
   9398 
   9399 distutils - tools for distributing Python modules.
   9400 
   9401 robotparser - parse a robots.txt file, for writing web spiders.
   9402 (Moved from Tools/webchecker/.)
   9403 
   9404 linuxaudiodev - audio for Linux.
   9405 
   9406 mmap - treat a file as a memory buffer.  (Windows and Unix.)
   9407 
   9408 sre - regular expressions (fast, supports unicode).  Currently, this
   9409 code is very rough.  Eventually, the re module will be reimplemented
   9410 using sre (without changes to the re API).
   9411 
   9412 filecmp - supersedes the old cmp.py and dircmp.py modules.
   9413 
   9414 tabnanny - check Python sources for tab-width dependance.  (Moved from
   9415 Tools/scripts/.)
   9416 
   9417 urllib2 - new and improved but incompatible version of urllib (still
   9418 experimental).
   9419 
   9420 zipfile - read and write zip archives.
   9421 
   9422 codecs - support for Unicode encoders/decoders.
   9423 
   9424 unicodedata - provides access to the Unicode 3.0 database.
   9425 
   9426 _winreg - Windows registry access.
   9427 
   9428 encodings - package which provides a large set of standard codecs --
   9429 currently only for the new Unicode support. It has a drop-in extension
   9430 mechanism which allows you to add new codecs by simply copying them
   9431 into the encodings package directory. Asian codec support will
   9432 probably be made available as separate distribution package built upon
   9433 this technique and the new distutils package.
   9434 
   9435 
   9436 Changed Modules
   9437 ---------------
   9438 
   9439 readline, ConfigParser, cgi, calendar, posix, readline, xmllib, aifc,
   9440 chunk, wave, random, shelve, nntplib - minor enhancements.
   9441 
   9442 socket, httplib, urllib - optional OpenSSL support (Unix only).
   9443 
   9444 _tkinter - support for 8.0 up to 8.3.  Support for versions older than
   9445 8.0 has been dropped.
   9446 
   9447 string - most of this module is deprecated now that strings have
   9448 methods.  This no longer uses the built-in strop module, but takes
   9449 advantage of the new string methods to provide transparent support for
   9450 both Unicode and ordinary strings.
   9451 
   9452 
   9453 Changes on Windows
   9454 ------------------
   9455 
   9456 The installer no longer runs a separate Tcl/Tk installer; instead, it
   9457 installs the needed Tcl/Tk files directly in the Python directory.  If
   9458 you already have a Tcl/Tk installation, this wastes some disk space
   9459 (about 4 Megs) but avoids problems with conflincting Tcl/Tk
   9460 installations, and makes it much easier for Python to ensure that
   9461 Tcl/Tk can find all its files.  Note: the alpha installers don't
   9462 include the documentation.
   9463 
   9464 The Windows installer now installs by default in \Python16\ on the
   9465 default volume, instead of \Program Files\Python-1.6\.
   9466 
   9467 
   9468 Changed Tools
   9469 -------------
   9470 
   9471 IDLE - complete overhaul.  See the <a href="../idle/">IDLE home
   9472 page</a> for more information.  (Python 1.6 alpha 1 will come with
   9473 IDLE 0.6.)
   9474 
   9475 Tools/i18n/pygettext.py - Python equivalent of xgettext(1).  A message
   9476 text extraction tool used for internationalizing applications written
   9477 in Python.
   9478 
   9479 
   9480 Obsolete Modules
   9481 ----------------
   9482 
   9483 stdwin and everything that uses it.  (Get Python 1.5.2 if you need
   9484 it. :-)
   9485 
   9486 soundex.  (Skip Montanaro has a version in Python but it won't be
   9487 included in the Python release.)
   9488 
   9489 cmp, cmpcache, dircmp.  (Replaced by filecmp.)
   9490 
   9491 dump.  (Use pickle.)
   9492 
   9493 find.  (Easily coded using os.walk().)
   9494 
   9495 grep.  (Not very useful as a library module.)
   9496 
   9497 packmail.  (No longer has any use.)
   9498 
   9499 poly, zmod.  (These were poor examples at best.)
   9500 
   9501 strop.  (No longer needed by the string module.)
   9502 
   9503 util.  (This functionality was long ago built in elsewhere).
   9504 
   9505 whatsound.  (Use sndhdr.)
   9506 
   9507 
   9508 Detailed Changes from 1.6b1 to 1.6
   9509 ----------------------------------
   9510 
   9511 - Slight changes to the CNRI license.  A copyright notice has been
   9512 added; the requirement to indicate the nature of modifications now
   9513 applies when making a derivative work available "to others" instead of
   9514 just "to the public"; the version and date are updated.  The new
   9515 license has a new handle.
   9516 
   9517 - Added the Tools/compiler package.  This is a project led by Jeremy
   9518 Hylton to write the Python bytecode generator in Python.
   9519 
   9520 - The function math.rint() is removed.
   9521 
   9522 - In Python.h, "#define _GNU_SOURCE 1" was added.
   9523 
   9524 - Version 0.9.1 of Greg Ward's distutils is included (instead of
   9525 version 0.9).
   9526 
   9527 - A new version of SRE is included.  It is more stable, and more
   9528 compatible with the old RE module.  Non-matching ranges are indicated
   9529 by -1, not None.  (The documentation said None, but the PRE
   9530 implementation used -1; changing to None would break existing code.)
   9531 
   9532 - The winreg module has been renamed to _winreg.  (There are plans for
   9533 a higher-level API called winreg, but this has not yet materialized in
   9534 a form that is acceptable to the experts.)
   9535 
   9536 - The _locale module is enabled by default.
   9537 
   9538 - Fixed the configuration line for the _curses module.
   9539 
   9540 - A few crashes have been fixed, notably <file>.writelines() with a
   9541 list containing non-string objects would crash, and there were
   9542 situations where a lost SyntaxError could dump core.
   9543 
   9544 - The <list>.extend() method now accepts an arbitrary sequence
   9545 argument.
   9546 
   9547 - If __str__() or __repr__() returns a Unicode object, this is
   9548 converted to an 8-bit string.
   9549 
   9550 - Unicode string comparisons is no longer aware of UTF-16
   9551 encoding peculiarities; it's a straight 16-bit compare.
   9552 
   9553 - The Windows installer now installs the LICENSE file and no longer
   9554 registers the Python DLL version in the registry (this is no longer
   9555 needed).  It now uses Tcl/Tk 8.3.2.
   9556 
   9557 - A few portability problems have been fixed, in particular a
   9558 compilation error involving socklen_t.
   9559 
   9560 - The PC configuration is slightly friendlier to non-Microsoft
   9561 compilers.
   9562 
   9563 
   9564 ======================================================================
   9565 
   9566 
   9567 ======================================
   9568 ==> Release 1.5.2 (April 13, 1999) <==
   9569 ======================================
   9570 
   9571 From 1.5.2c1 to 1.5.2 (final)
   9572 =============================
   9573 
   9574 Tue Apr 13 15:44:49 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9575 
   9576 	* PCbuild/python15.wse: Bump version to 1.5.2 (final)
   9577 
   9578 	* PCbuild/python15.dsp: Added shamodule.c
   9579 
   9580 	* PC/config.c: Added sha module!
   9581 
   9582 	* README, Include/patchlevel.h: Prepare for final release.
   9583 
   9584 	* Misc/ACKS:
   9585 	More (Cameron Laird is honorary; the others are 1.5.2c1 testers).
   9586 
   9587 	* Python/thread_solaris.h:
   9588 	While I can't really test this thoroughly, Pat Knight and the Solaris
   9589 	man pages suggest that the proper thing to do is to add THR_NEW_LWP to
   9590 	the flags on thr_create(), and that there really isn't a downside, so
   9591 	I'll do that.
   9592 
   9593 	* Misc/ACKS:
   9594 	Bunch of new names who helped iron out the last wrinkles of 1.5.2.
   9595 
   9596 	* PC/python_nt.rc:
   9597 	Bump the myusterious M$ version number from 1,5,2,1 to 1,5,2,3.
   9598 	(I can't even display this on NT, maybe Win/98 can?)
   9599 
   9600 	* Lib/pstats.py:
   9601 	Fix mysterious references to jprofile that were in the source since
   9602 	its creation.  I'm assuming these were once valid references to "Jim
   9603 	Roskind's profile"...
   9604 
   9605 	* Lib/Attic/threading_api.py:
   9606 	Removed; since long subsumed in Doc/lib/libthreading.tex
   9607 
   9608 	* Modules/socketmodule.c:
   9609 	Put back __osf__ support for gethostbyname_r(); the real bug was that
   9610 	it was being used even without threads.  This of course might be an
   9611 	all-platform problem so now we only use the _r variant when we are
   9612 	using threads.
   9613 
   9614 Mon Apr 12 22:51:20 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9615 
   9616 	* Modules/cPickle.c:
   9617 	Fix accidentally reversed NULL test in load_mark().  Suggested by
   9618 	Tamito Kajiyama.  (This caused a bug only on platforms where malloc(0)
   9619 	returns NULL.)
   9620 
   9621 	* README:
   9622 	Add note about popen2 problem on Linux noticed by Pablo Bleyer.
   9623 
   9624 	* README: Add note about -D_REENTRANT for HP-UX 10.20.
   9625 
   9626 	* Modules/Makefile.pre.in: 'clean' target should remove hassignal.
   9627 
   9628 	* PC/Attic/vc40.mak, PC/readme.txt:
   9629 	Remove all VC++ info (except VC 1.5) from readme.txt;
   9630 	remove the VC++ 4.0 project file; remove the unused _tkinter extern defs.
   9631 
   9632 	* README: Clarify PC build instructions (point to PCbuild).
   9633 
   9634 	* Modules/zlibmodule.c: Cast added by Jack Jansen (for Mac port).
   9635 
   9636 	* Lib/plat-sunos5/CDIO.py, Lib/plat-linux2/CDROM.py:
   9637 	Forgot to add this file.  CDROM device parameters.
   9638 
   9639 	* Lib/gzip.py: Two different changes.
   9640 
   9641 	1. Jack Jansen reports that on the Mac, the time may be negative, and
   9642 	solves this by adding a write32u() function that writes an unsigned
   9643 	long.
   9644 
   9645 	2. On 64-bit platforms the CRC comparison fails; I've fixed this by
   9646 	casting both values to be compared to "unsigned long" i.e. modulo
   9647 	0x100000000L.
   9648 
   9649 Sat Apr 10 18:42:02 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9650 
   9651 	* PC/Attic/_tkinter.def: No longer needed.
   9652 
   9653 	* Misc/ACKS: Correct missed character in Andrew Dalke's name.
   9654 
   9655 	* README: Add DEC Ultrix notes (from Donn Cave's email).
   9656 
   9657 	* configure: The usual
   9658 
   9659 	* configure.in:
   9660 	Quote a bunch of shell variables used in test, related to long-long.
   9661 
   9662 	* Objects/fileobject.c, Modules/shamodule.c, Modules/regexpr.c:
   9663 	casts for picky compilers.
   9664 
   9665 	* Modules/socketmodule.c:
   9666 	3-arg gethostbyname_r doesn't really work on OSF/1.
   9667 
   9668 	* PC/vc15_w31/_.c, PC/vc15_lib/_.c, Tools/pynche/__init__.py:
   9669 	Avoid totally empty files.
   9670 
   9671 Fri Apr  9 14:56:35 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9672 
   9673 	* Tools/scripts/fixps.py: Use re instead of regex.
   9674 	Don't rewrite the file in place.
   9675 	(Reported by Andy Dustman.)
   9676 
   9677 	* Lib/netrc.py, Lib/shlex.py: Get rid of #! line
   9678 
   9679 Thu Apr  8 23:13:37 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9680 
   9681 	* PCbuild/python15.wse: Use the Tcl 8.0.5 installer.
   9682 	Add a variable %_TCL_% that makes it easier to switch to a different version.
   9683 
   9684 
   9685 ======================================================================
   9686 
   9687 
   9688 From 1.5.2b2 to 1.5.2c1
   9689 =======================
   9690 
   9691 Thu Apr  8 23:13:37 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9692 
   9693 	* PCbuild/python15.wse:
   9694 	Release 1.5.2c1.  Add IDLE and Uninstall to program group.
   9695 	Don't distribute zlib.dll.  Tweak some comments.
   9696 
   9697 	* PCbuild/zlib.dsp: Now using static zlib 1.1.3
   9698 
   9699 	* 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:
   9700 	The usual
   9701 
   9702 	* Include/patchlevel.h: Release 1.5.2c1
   9703 
   9704 	* README: Release 1.5.2c1.
   9705 
   9706 	* Misc/NEWS: News for the 1.5.2c1 release.
   9707 
   9708 	* Lib/test/test_strftime.py:
   9709 	On Windows, we suddenly find, strftime() may return "" for an
   9710 	unsupported format string.  (I guess this is because the logic for
   9711 	deciding whether to reallocate the buffer or not has been improved.)
   9712 	This caused the test code to crash on result[0].  Fix this by assuming
   9713 	an empty result also means the format is not supported.
   9714 
   9715 	* Demo/tkinter/matt/window-creation-w-location.py:
   9716 	This demo imported some private code from Matt.  Make it cripple along.
   9717 
   9718 	* Lib/lib-tk/Tkinter.py:
   9719 	Delete an accidentally checked-in feature that actually broke more
   9720 	than was worth it: when deleting a canvas item, it would try to
   9721 	automatically delete the bindings for that item.  Since there's
   9722 	nothing that says you can't reuse the tag and still have the bindings,
   9723 	this is not correct.  Also, it broke at least one demo
   9724 	(Demo/tkinter/matt/rubber-band-box-demo-1.py).
   9725 
   9726 	* Python/thread_wince.h: Win/CE thread support by Mark Hammond.
   9727 
   9728 Wed Apr  7 20:23:17 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9729 
   9730 	* Modules/zlibmodule.c:
   9731 	Patch by Andrew Kuchling to unflush() (flush() for deflating).
   9732 	Without this, if inflate() returned Z_BUF_ERROR asking for more output
   9733 	space, we would report the error; now, we increase the buffer size and
   9734 	try again, just as for Z_OK.
   9735 
   9736 	* Lib/test/test_gzip.py: Use binary mode for all gzip files we open.
   9737 
   9738 	* Tools/idle/ChangeLog: New change log.
   9739 
   9740 	* Tools/idle/README.txt, Tools/idle/NEWS.txt: New version.
   9741 
   9742 	* Python/pythonrun.c:
   9743 	Alas, get rid of the Win specific hack to ask the user to press Return
   9744 	before exiting when an error happened.  This didn't work right when
   9745 	Python is invoked from a daemon.
   9746 
   9747 	* Tools/idle/idlever.py: Version bump awaiting impending new release.
   9748 	(Not much has changed :-( )
   9749 
   9750 	* Lib/lib-tk/Tkinter.py:
   9751 	lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift,
   9752 	so the preferred name for them is tag_lower, tag_raise
   9753 	(similar to tag_bind, and similar to the Text widget);
   9754 	unfortunately can't delete the old ones yet (maybe in 1.6)
   9755 
   9756 	* Python/thread.c, Python/strtod.c, Python/mystrtoul.c, Python/import.c, Python/ceval.c:
   9757 	Changes by Mark Hammond for Windows CE.  Mostly of the form
   9758 	  #ifdef DONT_HAVE_header_H ... #endif around #include <header.h>.
   9759 
   9760 	* Python/bltinmodule.c:
   9761 	Remove unused variable from complex_from_string() code.
   9762 
   9763 	* Include/patchlevel.h:
   9764 	Add the possibility of a gamma release (release candidate).
   9765 	Add '+' to string version number to indicate we're beyond b2 now.
   9766 
   9767 	* Modules/posixmodule.c: Add extern decl for fsync() for SunOS 4.x.
   9768 
   9769 	* Lib/smtplib.py: Changes by Per Cederquist and The Dragon.
   9770 
   9771 	Per writes:
   9772 
   9773 	"""
   9774 	The application where Signum Support uses smtplib needs to be able to
   9775 	report good error messages to the user when sending email fails.  To
   9776 	help in diagnosing problems it is useful to be able to report the
   9777 	entire message sent by the server, not only the SMTP error code of the
   9778 	offending command.
   9779 
   9780 	A lot of the functions in sendmail.py unfortunately discards the
   9781 	message, leaving only the code.  The enclosed patch fixes that
   9782 	problem.
   9783 
   9784 	The enclosed patch also introduces a base class for exceptions that
   9785 	include an SMTP error code and error message, and make the code and
   9786 	message available on separate attributes, so that surrounding code can
   9787 	deal with them in whatever way it sees fit.  I've also added some
   9788 	documentation to the exception classes.
   9789 
   9790 	The constructor will now raise an exception if it cannot connect to
   9791 	the SMTP server.
   9792 
   9793 	The data() method will raise an SMTPDataError if it doesn't receive
   9794 	the expected 354 code in the middle of the exchange.
   9795 
   9796 	According to section 5.2.10 of RFC 1123 a smtp client must accept "any
   9797 	text, including no text at all" after the error code.  If the response
   9798 	of a HELO command contains no text self.helo_resp will be set to the
   9799 	empty string ("").  The patch fixes the test in the sendmail() method
   9800 	so that helo_resp is tested against None; if it has the empty string
   9801 	as value the sendmail() method would invoke the helo() method again.
   9802 
   9803 	The code no longer accepts a -1 reply from the ehlo() method in
   9804 	sendmail().
   9805 
   9806 	[Text about removing SMTPRecipientsRefused deleted --GvR]
   9807 	"""
   9808 
   9809 	and also:
   9810 
   9811 	"""
   9812 	smtplib.py appends an extra blank line to the outgoing mail if the
   9813 	`msg' argument to the sendmail method already contains a trailing
   9814 	newline.  This patch should fix the problem.
   9815 	"""
   9816 
   9817 	The Dragon writes:
   9818 
   9819 	"""
   9820 		Mostly I just re-added the SMTPRecipientsRefused exception
   9821 	(the exeption object now has the appropriate info in it ) [Per had
   9822 	removed this in his patch --GvR] and tweaked the behavior of the
   9823 	sendmail method whence it throws the newly added SMTPHeloException (it
   9824 	was closing the connection, which it shouldn't.  whatever catches the
   9825 	exception should do that. )
   9826 
   9827 		I pondered the change of the return values to tuples all around,
   9828 	and after some thinking I decided that regularizing the return values was
   9829 	too much of the Right Thing (tm) to not do.
   9830 
   9831 		My one concern is that code expecting an integer & getting a tuple
   9832 	may fail silently.
   9833 
   9834 	(i.e. if it's doing :
   9835 
   9836 	      x.somemethod() >= 400:
   9837 	expecting an integer, the expression will always be true if it gets a
   9838 	tuple instead. )
   9839 
   9840 		However, most smtplib code I've seen only really uses the
   9841 	sendmail() method, so this wouldn't bother it.  Usually code I've seen
   9842 	that calls the other methods usually only calls helo() and ehlo() for
   9843 	doing ESMTP, a feature which was not in the smtplib included with 1.5.1,
   9844 	and thus I would think not much code uses it yet.
   9845 	"""
   9846 
   9847 Tue Apr  6 19:38:18 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9848 
   9849 	* Lib/test/test_ntpath.py:
   9850 	Fix the tests now that splitdrive() no longer treats UNC paths special.
   9851 	(Some tests converted to splitunc() tests.)
   9852 
   9853 	* Lib/ntpath.py:
   9854 	Withdraw the UNC support from splitdrive().  Instead, a new function
   9855 	splitunc() parses UNC paths.  The contributor of the UNC parsing in
   9856 	splitdrive() doesn't like it, but I haven't heard a good reason to
   9857 	keep it, and it causes some problems.  (I think there's a
   9858 	philosophical problem -- to me, the split*() functions are purely
   9859 	syntactical, and the fact that \\foo is not a valid path doesn't mean
   9860 	that it shouldn't be considered an absolute path.)
   9861 
   9862 	Also (quite separately, but strangely related to the philosophical
   9863 	issue above) fix abspath() so that if win32api exists, it doesn't fail
   9864 	when the path doesn't actually exist -- if GetFullPathName() fails,
   9865 	fall back on the old strategy (join with getcwd() if necessary, and
   9866 	then use normpath()).
   9867 
   9868 	* configure.in, configure, config.h.in, acconfig.h:
   9869 	For BeOS PowerPC.  Chris Herborth.
   9870 
   9871 Mon Apr  5 21:54:14 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9872 
   9873 	* Modules/timemodule.c:
   9874 	Jonathan Giddy notes, and Chris Lawrence agrees, that some comments on
   9875 	#else/#endif are wrong, and that #if HAVE_TM_ZONE should be #ifdef.
   9876 
   9877 	* Misc/ACKS:
   9878 	Bunch of new contributors, including 9 who contributed to the Docs,
   9879 	reported by Fred.
   9880 
   9881 Mon Apr  5 18:37:59 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   9882 
   9883 	* Lib/gzip.py:
   9884 	Oops, missed mode parameter to open().
   9885 
   9886 	* Lib/gzip.py:
   9887 	Made the default mode 'rb' instead of 'r', for better cross-platform
   9888 	support.  (Based on comment on the documentation by Bernhard Reiter
   9889 	<bernhard (a] csd.uwm.edu>).
   9890 
   9891 Fri Apr  2 22:18:25 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9892 
   9893 	* Tools/scripts/dutree.py:
   9894 	For reasons I dare not explain, this script should always execute
   9895 	main() when imported (in other words, it is not usable as a module).
   9896 
   9897 Thu Apr  1 15:32:30 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9898 
   9899 	* Lib/test/test_cpickle.py: Jonathan Giddy write:
   9900 
   9901 	In test_cpickle.py, the module os got imported, but the line to remove
   9902 	the temp file has gone missing.
   9903 
   9904 Tue Mar 30 20:17:31 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9905 
   9906 	* Lib/BaseHTTPServer.py: Per Cederqvist writes:
   9907 
   9908 	If you send something like "PUT / HTTP/1.0" to something derived from
   9909 	BaseHTTPServer that doesn't define do_PUT, you will get a response
   9910 	that begins like this:
   9911 
   9912 		HTTP/1.0 501 Unsupported method ('do_PUT')
   9913 		Server: SimpleHTTP/0.3 Python/1.5
   9914 		Date: Tue, 30 Mar 1999 18:53:53 GMT
   9915 
   9916 	The server should complain about 'PUT' instead of 'do_PUT'.  This
   9917 	patch should fix the problem.
   9918 
   9919 Mon Mar 29 20:33:21 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9920 
   9921 	* Lib/smtplib.py: Patch by Per Cederqvist, who writes:
   9922 
   9923 	"""
   9924 	 - It needlessly used the makefile() method for each response that is
   9925 	   read from the SMTP server.
   9926 
   9927 	 - If the remote SMTP server closes the connection unexpectedly the
   9928 	   code raised an IndexError.  It now raises an SMTPServerDisconnected
   9929 	   exception instead.
   9930 
   9931 	 - The code now checks that all lines in a multiline response actually
   9932 	   contains an error code.
   9933 	"""
   9934 
   9935 	The Dragon approves.
   9936 
   9937 Mon Mar 29 20:25:40 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   9938 
   9939 	* Lib/compileall.py:
   9940 	When run as a script, report failures in the exit code as well.
   9941 	Patch largely based on changes by Andrew Dalke, as discussed in the
   9942 	distutils-sig.
   9943 
   9944 Mon Mar 29 20:23:41 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9945 
   9946 	* Lib/urllib.py:
   9947 	Hack so that if a 302 or 301 redirect contains a relative URL, the
   9948 	right thing "just happens" (basejoin() with old URL).
   9949 
   9950 	* Modules/cPickle.c:
   9951 	Protection against picling to/from closed (real) file.
   9952 	The problem was reported by Moshe Zadka.
   9953 
   9954 	* Lib/test/test_cpickle.py:
   9955 	Test protection against picling to/from closed (real) file.
   9956 
   9957 	* Modules/timemodule.c: Chris Lawrence writes:
   9958 
   9959 	"""
   9960 	The GNU folks, in their infinite wisdom, have decided not to implement
   9961 	altzone in libc6; this would not be horrible, except that timezone
   9962 	(which is implemented) includes the current DST setting (i.e. timezone
   9963 	for Central is 18000 in summer and 21600 in winter).  So Python's
   9964 	timezone and altzone variables aren't set correctly during DST.
   9965 
   9966 	Here's a patch relative to 1.5.2b2 that (a) makes timezone and altzone
   9967 	show the "right" thing on Linux (by using the tm_gmtoff stuff
   9968 	available in BSD, which is how the GLIBC manual claims things should
   9969 	be done) and (b) should cope with the southern hemisphere.  In pursuit
   9970 	of (b), I also took the liberty of renaming the "summer" and "winter"
   9971 	variables to "july" and "jan".  This patch should also make certain
   9972 	time calculations on Linux actually work right (like the tz-aware
   9973 	functions in the rfc822 module).
   9974 
   9975 	(It's hard to find DST that's currently being used in the southern
   9976 	hemisphere; I tested using Africa/Windhoek.)
   9977 	"""
   9978 
   9979 	* Lib/test/output/test_gzip:
   9980 	Jonathan Giddy discovered this file was missing.
   9981 
   9982 	* Modules/shamodule.c:
   9983 	Avoid warnings from AIX compiler.  Reported by Vladimir (AIX is my
   9984 	middlename) Marangozov, patch coded by Greg Stein.
   9985 
   9986 	* Tools/idle/ScriptBinding.py, Tools/idle/PyShell.py:
   9987 	At Tim Peters' recommendation, add a dummy flush() method to PseudoFile.
   9988 
   9989 Sun Mar 28 17:55:32 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   9990 
   9991 	* Tools/scripts/ndiff.py: Tim Peters writes:
   9992 
   9993 	I should have waited overnight <wink/sigh>.  Nothing wrong with the one I
   9994 	sent, but I couldn't resist going on to add new -r1 / -r2 cmdline options
   9995 	for recreating the original files from ndiff's output.  That's attached, if
   9996 	you're game!  Us Windows guys don't usually have a sed sitting around
   9997 	<wink>.
   9998 
   9999 Sat Mar 27 13:34:01 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10000 
   10001 	* Tools/scripts/ndiff.py: Tim Peters writes:
   10002 
   10003 	Attached is a cleaned-up version of ndiff (added useful module
   10004 	docstring, now echo'ed in case of cmd line mistake); added -q option
   10005 	to suppress initial file identification lines; + other minor cleanups,
   10006 	& a slightly faster match engine.
   10007 
   10008 Fri Mar 26 22:36:00 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   10009 
   10010 	* Tools/scripts/dutree.py:
   10011 	During display, if EPIPE is raised, it's probably because a pager was
   10012 	killed.  Discard the error in that case, but propagate it otherwise.
   10013 
   10014 Fri Mar 26 16:20:45 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10015 
   10016 	* Lib/test/output/test_userlist, Lib/test/test_userlist.py:
   10017 	Test suite for UserList.
   10018 
   10019 	* Lib/UserList.py: Use isinstance() where appropriate.
   10020 	Reformatted with 4-space indent.
   10021 
   10022 Fri Mar 26 16:11:40 1999  Barry Warsaw  <bwarsaw (a] eric.cnri.reston.va.us>
   10023 
   10024 	* Tools/pynche/PyncheWidget.py:
   10025 	Helpwin.__init__(): The text widget should get focus.
   10026 
   10027 	* Tools/pynche/pyColorChooser.py:
   10028 	Removed unnecessary import `from PyncheWidget import PyncheWidget'
   10029 
   10030 Fri Mar 26 15:32:05 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10031 
   10032 	* Lib/test/output/test_userdict, Lib/test/test_userdict.py:
   10033 	Test suite for UserDict
   10034 
   10035 	* Lib/UserDict.py: Improved a bunch of things.
   10036 	The constructor now takes an optional dictionary.
   10037 	Use isinstance() where appropriate.
   10038 
   10039 Thu Mar 25 22:38:49 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10040 
   10041 	* Lib/test/output/test_pickle, Lib/test/output/test_cpickle, Lib/test/test_pickle.py, Lib/test/test_cpickle.py:
   10042 	Basic regr tests for pickle/cPickle
   10043 
   10044 	* Lib/pickle.py:
   10045 	Don't use "exec" in find_class().  It's slow, unnecessary, and (as AMK
   10046 	points out) it doesn't work in JPython Applets.
   10047 
   10048 Thu Mar 25 21:50:27 1999  Andrew Kuchling  <akuchlin (a] eric.cnri.reston.va.us>
   10049 
   10050 	* Lib/test/test_gzip.py:
   10051 	Added a simple test suite for gzip.  It simply opens a temp file,
   10052 	writes a chunk of compressed data, closes it, writes another chunk, and
   10053 	reads the contents back to verify that they are the same.
   10054 
   10055 	* Lib/gzip.py:
   10056 	Based on a suggestion from bruce (a] hams.com, make a trivial change to
   10057 	allow using the 'a' flag as a mode for opening a GzipFile.  gzip
   10058 	files, surprisingly enough, can be concatenated and then decompressed;
   10059 	the effect is to concatenate the two chunks of data.
   10060 
   10061 	If we support it on writing, it should also be supported on reading.
   10062 	This *wasn't* trivial, and required rearranging the code in the
   10063 	reading path, particularly the _read() method.
   10064 
   10065 	Raise IOError instead of RuntimeError in two cases, 'Not a gzipped file'
   10066 	and 'Unknown compression method'
   10067 
   10068 Thu Mar 25 21:25:01 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10069 
   10070 	* Lib/test/test_b1.py:
   10071 	Add tests for float() and complex() with string args (Nick/Stephanie
   10072 	Lockwood).
   10073 
   10074 Thu Mar 25 21:21:08 1999  Andrew Kuchling  <akuchlin (a] eric.cnri.reston.va.us>
   10075 
   10076 	* Modules/zlibmodule.c:
   10077 	Add an .unused_data attribute to decompressor objects.  If .unused_data
   10078 	is not an empty string, this means that you have arrived at the
   10079 	end of the stream of compressed data, and the contents of .unused_data are
   10080 	whatever follows the compressed stream.
   10081 
   10082 Thu Mar 25 21:16:07 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10083 
   10084 	* Python/bltinmodule.c:
   10085 	Patch by Nick and Stephanie Lockwood to implement complex() with a string
   10086 	argument.  This closes TODO item 2.19.
   10087 
   10088 Wed Mar 24 19:09:00 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10089 
   10090 	* Tools/webchecker/wcnew.py: Added Samuel Bayer's new webchecker.
   10091 	Unfortunately his code breaks wcgui.py in a way that's not easy
   10092 	to fix.  I expect that this is a temporary situation --
   10093 	eventually Sam's changes will be merged back in.
   10094 	(The changes add a -t option to specify exceptions to the -x
   10095 	option, and explicit checking for #foo style fragment ids.)
   10096 
   10097 	* Objects/dictobject.c:
   10098 	Vladimir Marangozov contributed updated comments.
   10099 
   10100 	* Objects/bufferobject.c: Folded long lines.
   10101 
   10102 	* Lib/test/output/test_sha, Lib/test/test_sha.py:
   10103 	Added Jeremy's test code for the sha module.
   10104 
   10105 	* Modules/shamodule.c, Modules/Setup.in:
   10106 	Added Greg Stein and Andrew Kuchling's sha module.
   10107 	Fix comments about zlib version and URL.
   10108 
   10109 	* Lib/test/test_bsddb.py: Remove the temp file when we're done.
   10110 
   10111 	* Include/pythread.h: Conform to standard boilerplate.
   10112 
   10113 	* configure.in, configure, BeOS/linkmodule, BeOS/ar-fake:
   10114 	Chris Herborth: the new compiler in R4.1 needs some new options to work...
   10115 
   10116 	* Modules/socketmodule.c:
   10117 	Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
   10118 	data struct before calling gethostby{name,addr}_r(); (2) ignore the
   10119 	3/5/6 args determinations made by the configure script and switch on
   10120 	platform identifiers instead:
   10121 
   10122 	AIX, OSF have 3 args
   10123 	Sun, SGI have 5 args
   10124 	Linux has 6 args
   10125 
   10126 	On all other platforms, undef HAVE_GETHOSTBYNAME_R altogether.
   10127 
   10128 	* Modules/socketmodule.c:
   10129 	Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
   10130 
   10131 	* Lib/mailbox.py:
   10132 	Add readlines() to _Subfile class.  Not clear who would need it, but
   10133 	Chris Lawrence sent me a broken version; this one is a tad simpler and
   10134 	more conforming to the standard.
   10135 
   10136 Tue Mar 23 23:05:34 1999  Jeremy Hylton  <jhylton (a] eric.cnri.reston.va.us>
   10137 
   10138 	* Lib/gzip.py: use struct instead of bit-manipulate in Python
   10139 
   10140 Tue Mar 23 19:00:55 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10141 
   10142 	* Modules/Makefile.pre.in:
   10143 	Add $(EXE) to various occurrences of python so it will work on Cygwin
   10144 	with egcs (after setting EXE=.exe).  Patch by Norman Vine.
   10145 
   10146 	* configure, configure.in:
   10147 	Ack!  It never defined HAVE_GETHOSTBYNAME_R so that code was never tested!
   10148 
   10149 Mon Mar 22 22:25:39 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10150 
   10151 	* Include/thread.h:
   10152 	Adding thread.h -- unused but for b/w compatibility.
   10153 	As requested by Bill Janssen.
   10154 
   10155 	* configure.in, configure:
   10156 	Add code to test for all sorts of gethostbyname_r variants,
   10157 	donated by David Arnold.
   10158 
   10159 	* config.h.in, acconfig.h:
   10160 	Add symbols for gethostbyname_r variants (sigh).
   10161 
   10162 	* Modules/socketmodule.c: Clean up pass for the previous patches.
   10163 
   10164 	- Use HAVE_GETHOSTBYNAME_R_6_ARG instead of testing for Linux and
   10165 	glibc2.
   10166 
   10167 	- If gethostbyname takes 3 args, undefine HAVE_GETHOSTBYNAME_R --
   10168 	don't know what code should be used.
   10169 
   10170 	- New symbol USE_GETHOSTBYNAME_LOCK defined iff the lock should be used.
   10171 
   10172 	- Modify the gethostbyaddr() code to also hold on to the lock until
   10173 	after it is safe to release, overlapping with the Python lock.
   10174 
   10175 	(Note: I think that it could in theory be possible that Python code
   10176 	executed while gethostbyname_lock is held could attempt to reacquire
   10177 	the lock -- e.g. in a signal handler or destructor.  I will simply say
   10178 	"don't do that then.")
   10179 
   10180 	* Modules/socketmodule.c: Jonathan Giddy writes:
   10181 
   10182 	Here's a patch to fix the race condition, which wasn't fixed by Rob's
   10183 	patch.  It holds the gethostbyname lock until the results are copied out,
   10184 	which means that this lock and the Python global lock are held at the same
   10185 	time.  This shouldn't be a problem as long as the gethostbyname lock is
   10186 	always acquired when the global lock is not held.
   10187 
   10188 Mon Mar 22 19:25:30 1999  Andrew Kuchling  <akuchlin (a] eric.cnri.reston.va.us>
   10189 
   10190 	* Modules/zlibmodule.c:
   10191 	Fixed the flush() method of compression objects; the test for
   10192 	    the end of loop was incorrect, and failed when the flushmode != Z_FINISH.
   10193 	    Logic cleaned up and commented.
   10194 
   10195 	* Lib/test/test_zlib.py:
   10196 	Added simple test for the flush() method of compression objects, trying the
   10197 	    different flush values Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH.
   10198 
   10199 Mon Mar 22 15:28:08 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10200 
   10201 	* Lib/shlex.py:
   10202 	Bug reported by Tobias Thelen: missing "self." in assignment target.
   10203 
   10204 Fri Mar 19 21:50:11 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10205 
   10206 	* Modules/arraymodule.c:
   10207 	Use an unsigned cast to avoid a warning in VC++.
   10208 
   10209 	* Lib/dospath.py, Lib/ntpath.py:
   10210 	New code for split() by Tim Peters, behaves more like posixpath.split().
   10211 
   10212 	* Objects/floatobject.c:
   10213 	Fix a problem with Vladimir's PyFloat_Fini code: clear the free list; if
   10214 	a block cannot be freed, add its free items back to the free list.
   10215 	This is necessary to avoid leaking when Python is reinitialized later.
   10216 
   10217 	* Objects/intobject.c:
   10218 	Fix a problem with Vladimir's PyInt_Fini code: clear the free list; if
   10219 	a block cannot be freed, add its free items back to the free list, and
   10220 	add its valid ints back to the small_ints array if they are in range.
   10221 	This is necessary to avoid leaking when Python is reinitialized later.
   10222 
   10223 	* Lib/types.py:
   10224 	Added BufferType, the type returned by the new builtin buffer().  Greg Stein.
   10225 
   10226 	* Python/bltinmodule.c:
   10227 	New builtin buffer() creates a derived read-only buffer from any
   10228 	object that supports the buffer interface (e.g. strings, arrays).
   10229 
   10230 	* Objects/bufferobject.c:
   10231 	Added check for negative offset for PyBuffer_FromObject and check for
   10232 	negative size for PyBuffer_FromMemory.  Greg Stein.
   10233 
   10234 Thu Mar 18 15:10:44 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10235 
   10236 	* Lib/urlparse.py: Sjoerd Mullender writes:
   10237 
   10238 	If a filename on Windows starts with \\, it is converted to a URL
   10239 	which starts with ////.  If this URL is passed to urlparse.urlparse
   10240 	you get a path that starts with // (and an empty netloc).  If you pass
   10241 	the result back to urlparse.urlunparse, you get a URL that starts with
   10242 	//, which is parsed differently by urlparse.urlparse.  The fix is to
   10243 	add the (empty) netloc with accompanying slashes if the path in
   10244 	urlunparse starts with //.  Do this for all schemes that use a netloc.
   10245 
   10246 	* Lib/nturl2path.py: Sjoerd Mullender writes:
   10247 
   10248 	Pathnames of files on other hosts in the same domain
   10249 	(\\host\path\to\file) are not translated correctly to URLs and back.
   10250 	The URL should be something like file:////host/path/to/file.
   10251 	Note that a combination of drive letter and remote host is not
   10252 	possible.
   10253 
   10254 Wed Mar 17 22:30:10 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10255 
   10256 	* Lib/urlparse.py:
   10257 	Delete non-standard-conforming code in urljoin() that would use the
   10258 	netloc from the base url as the default netloc for the resulting url
   10259 	even if the schemes differ.
   10260 
   10261 	Once upon a time, when the web was wild, this was a valuable hack
   10262 	because some people had a URL referencing an ftp server colocated with
   10263 	an http server without having the host in the ftp URL (so they could
   10264 	replicate it or change the hostname easily).
   10265 
   10266 	More recently, after the file: scheme got added back to the list of
   10267 	schemes that accept a netloc, it turns out that this caused weirdness
   10268 	when joining an http: URL with a file: URL -- the resulting file: URL
   10269 	would always inherit the host from the http: URL because the file:
   10270 	scheme supports a netloc but in practice never has one.
   10271 
   10272 	There are two reasons to get rid of the old, once-valuable hack,
   10273 	instead of removing the file: scheme from the uses_netloc list.  One,
   10274 	the RFC says that file: uses the netloc syntax, and does not endorse
   10275 	the old hack.  Two, neither netscape 4.5 nor IE 4.0 support the old
   10276 	hack.
   10277 
   10278 	* Include/ceval.h, Include/abstract.h:
   10279 	Add DLL level b/w compat for PySequence_In and PyEval_CallObject
   10280 
   10281 Tue Mar 16 21:54:50 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10282 
   10283 	* Lib/lib-tk/Tkinter.py: Bug reported by Jim Robinson:
   10284 
   10285 	An attempt to execute grid_slaves with arguments (0,0) results in
   10286 	*all* of the slaves being returned, not just the slave associated with
   10287 	row 0, column 0.  This is because the test for arguments in the method
   10288 	does not test to see if row (and column) does not equal None, but
   10289 	rather just whether is evaluates to non-false.  A value of 0 fails
   10290 	this test.
   10291 
   10292 Tue Mar 16 14:17:48 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   10293 
   10294 	* Modules/cmathmodule.c:
   10295 	Docstring fix:  acosh() returns the hyperbolic arccosine, not the
   10296 	hyperbolic cosine.  Problem report via David Ascher by one of his
   10297 	students.
   10298 
   10299 Mon Mar 15 21:40:59 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10300 
   10301 	* configure.in:
   10302 	Should test for gethost*by*name_r, not for gethostname_r (which
   10303 	doesn't exist and doesn't make sense).
   10304 
   10305 	* Modules/socketmodule.c:
   10306 	Patch by Rob Riggs for Linux -- glibc2 has a different argument
   10307 	converntion for gethostbyname_r() etc. than Solaris!
   10308 
   10309 	* Python/thread_pthread.h: Rob Riggs wrote:
   10310 
   10311 	"""
   10312 	Spec says that on success pthread_create returns 0. It does not say
   10313 	that an error code will be < 0. Linux glibc2 pthread_create() returns
   10314 	ENOMEM (12) when one exceed process limits. (It looks like it should
   10315 	return EAGAIN, but that's another story.)
   10316 
   10317 	For reference, see:
   10318 	http://www.opengroup.org/onlinepubs/7908799/xsh/pthread_create.html
   10319 	"""
   10320 
   10321 	[I have a feeling that similar bugs were fixed before; perhaps someone
   10322 	could check that all error checks no check for != 0?]
   10323 
   10324 	* Tools/bgen/bgen/bgenObjectDefinition.py:
   10325 	New mixin class that defines cmp and hash that use
   10326 	the ob_itself pointer.  This allows (when using the mixin)
   10327 	different Python objects pointing to the same C object and
   10328 	behaving well as dictionary keys.
   10329 
   10330 	Or so sez Jack Jansen...
   10331 
   10332 	* Lib/urllib.py: Yet another patch by Sjoerd Mullender:
   10333 
   10334 	Don't convert URLs to URLs using pathname2url.
   10335 
   10336 Fri Mar 12 22:15:43 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10337 
   10338 	* Lib/cmd.py: Patch by Michael Scharf.  He writes:
   10339 
   10340 	    The module cmd requires for each do_xxx command a help_xxx
   10341 	    function. I think this is a little old fashioned.
   10342 
   10343 	    Here is a patch: use the docstring as help if no help_xxx
   10344 	    function can be found.
   10345 
   10346 	[I'm tempted to rip out all the help_* functions from pdb, but I'll
   10347 	resist it.  Any takers?  --Guido]
   10348 
   10349 	* Tools/freeze/freeze.py: Bug submitted by Wayne Knowles, who writes:
   10350 
   10351 	   Under Windows, python freeze.py -o hello hello.py
   10352 	   creates all the correct files in the hello subdirectory, but the
   10353 	   Makefile has the directory prefix in it for frozen_extensions.c
   10354 	   nmake fails because it tries to locate hello/frozen_extensions.c
   10355 
   10356 	(His fix adds a call to os.path.basename() in the appropriate place.)
   10357 
   10358 	* Objects/floatobject.c, Objects/intobject.c:
   10359 	Vladimir has restructured his code somewhat so that the blocks are now
   10360 	represented by an explicit structure.  (There are still too many casts
   10361 	in the code, but that may be unavoidable.)
   10362 
   10363 	Also added code so that with -vv it is very chatty about what it does.
   10364 
   10365 	* Demo/zlib/zlibdemo.py, Demo/zlib/minigzip.py:
   10366 	Change #! line to modern usage; also chmod +x
   10367 
   10368 	* Demo/pdist/rrcs, Demo/pdist/rcvs, Demo/pdist/rcsbump:
   10369 	Change #! line to modern usage
   10370 
   10371 	* Lib/nturl2path.py, Lib/urllib.py: From: Sjoerd Mullender
   10372 
   10373 	The filename to URL conversion didn't properly quote special
   10374 	characters.
   10375 	The URL to filename didn't properly unquote special chatacters.
   10376 
   10377 	* Objects/floatobject.c:
   10378 	OK, try again.  Vladimir gave me a fix for the alignment bus error,
   10379 	so here's his patch again.  This time it works (at least on Solaris,
   10380 	Linux and Irix).
   10381 
   10382 Thu Mar 11 23:21:23 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10383 
   10384 	* Tools/idle/PathBrowser.py:
   10385 	Don't crash when sys.path contains an empty string.
   10386 
   10387 	* Tools/idle/PathBrowser.py:
   10388 	- Don't crash in the case where a superclass is a string instead of a
   10389 	pyclbr.Class object; this can happen when the superclass is
   10390 	unrecognizable (to pyclbr), e.g. when module renaming is used.
   10391 
   10392 	- Show a watch cursor when calling pyclbr (since it may take a while
   10393 	recursively parsing imported modules!).
   10394 
   10395 Thu Mar 11 16:04:04 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   10396 
   10397 	* Lib/mimetypes.py:
   10398 	Added .rdf and .xsl as application/xml types.  (.rdf is for the
   10399 	Resource Description Framework, a metadata encoding, and .xsl is for
   10400 	the Extensible Stylesheet Language.)
   10401 
   10402 Thu Mar 11 13:26:23 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10403 
   10404 	* Lib/test/output/test_popen2, Lib/test/test_popen2.py:
   10405 	Test for popen2 module, by Chris Tismer.
   10406 
   10407 	* Objects/floatobject.c:
   10408 	Alas, Vladimir's patch caused a bus error (probably double
   10409 	alignment?), and I didn't test it.  Withdrawing it for now.
   10410 
   10411 Wed Mar 10 22:55:47 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10412 
   10413 	* Objects/floatobject.c:
   10414 	Patch by Vladimir Marangoz to allow freeing of the allocated blocks of
   10415 	floats on finalization.
   10416 
   10417 	* Objects/intobject.c:
   10418 	Patch by Vladimir Marangoz to allow freeing of the allocated blocks of
   10419 	integers on finalization.
   10420 
   10421 	* Tools/idle/EditorWindow.py, Tools/idle/Bindings.py:
   10422 	Add PathBrowser to File module
   10423 
   10424 	* Tools/idle/PathBrowser.py:
   10425 	"Path browser" - 4 scrolled lists displaying:
   10426 	    directories on sys.path
   10427 	    modules in selected directory
   10428 	    classes in selected module
   10429 	    methods of selected class
   10430 
   10431 	Sinlge clicking in a directory, module or class item updates the next
   10432 	column with info about the selected item.  Double clicking in a
   10433 	module, class or method item opens the file (and selects the clicked
   10434 	item if it is a class or method).
   10435 
   10436 	I guess eventually I should be using a tree widget for this, but the
   10437 	ones I've seen don't work well enough, so for now I use the old
   10438 	Smalltalk or NeXT style multi-column hierarchical browser.
   10439 
   10440 	* Tools/idle/MultiScrolledLists.py:
   10441 	New utility: multiple scrolled lists in parallel
   10442 
   10443 	* Tools/idle/ScrolledList.py: - White background.
   10444 	- Display "(None)" (or text of your choosing) when empty.
   10445 	- Don't set the focus.
   10446 
   10447 Tue Mar  9 19:31:21 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10448 
   10449 	* Lib/urllib.py:
   10450 	open_http also had the 'data is None' test backwards.  don't call with the
   10451 	extra argument if data is None.
   10452 
   10453 	* Demo/embed/demo.c:
   10454 	Call Py_SetProgramName() instead of redefining getprogramname(),
   10455 	reflecting changes in the runtime around 1.5 or earlier.
   10456 
   10457 	* Python/ceval.c:
   10458 	Always test for an error return (usually NULL or -1) without setting
   10459 	an exception.
   10460 
   10461 	* Modules/timemodule.c: Patch by Chris Herborth for BeOS code.
   10462 	He writes:
   10463 
   10464 	I had an off-by-1000 error in floatsleep(),
   10465 	and the problem with time.clock() is that it's not implemented properly
   10466 	on QNX... ANSI says it's supposed to return _CPU_ time used by the
   10467 	process, but on QNX it returns the amount of real time used... so I was
   10468 	confused.
   10469 
   10470 	* Tools/bgen/bgen/macsupport.py: Small change by Jack Jansen.
   10471 	Test for self.returntype behaving like OSErr rather than being it.
   10472 
   10473 Thu Feb 25 16:14:58 1999  Jeremy Hylton  <jhylton (a] eric.cnri.reston.va.us>
   10474 
   10475 	* Lib/urllib.py:
   10476 	http_error had the 'data is None' test backwards.  don't call with the
   10477 	extra argument if data is None.
   10478 
   10479 	* Lib/urllib.py: change indentation from 8 spaces to 4 spaces
   10480 
   10481 	* Lib/urllib.py: pleasing the tabnanny
   10482 
   10483 Thu Feb 25 14:26:02 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   10484 
   10485 	* Lib/colorsys.py:
   10486 	Oops, one more "x, y, z" to convert...
   10487 
   10488 	* Lib/colorsys.py:
   10489 	Adjusted comment at the top to be less confusing, following Fredrik
   10490 	Lundh's example.
   10491 
   10492 	Converted comment to docstring.
   10493 
   10494 Wed Feb 24 18:49:15 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   10495 
   10496 	* Lib/toaiff.py:
   10497 	Use sndhdr instead of the obsolete whatsound module.
   10498 
   10499 Wed Feb 24 18:42:38 1999  Jeremy Hylton  <jhylton (a] eric.cnri.reston.va.us>
   10500 
   10501 	* Lib/urllib.py:
   10502 	When performing a POST request, i.e. when the second argument to
   10503 	urlopen is used to specify form data, make sure the second argument is
   10504 	threaded through all of the http_error_NNN calls.  This allows error
   10505 	handlers like the redirect and authorization handlers to properly
   10506 	re-start the connection.
   10507 
   10508 Wed Feb 24 16:25:17 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10509 
   10510 	* Lib/mhlib.py: Patch by Lars Wirzenius:
   10511 
   10512 		o the initial comment is wrong: creating messages is already
   10513 		  implemented
   10514 
   10515 		o Message.getbodytext: if the mail or it's part contains an
   10516 		  empty content-transfer-encoding header, the code used to
   10517 		  break; the change below treats an empty encoding value the same
   10518 		  as the other types that do not need decoding
   10519 
   10520 		o SubMessage.getbodytext was missing the decode argument; the
   10521 		  change below adds it; I also made it unconditionally return
   10522 		  the raw text if decoding was not desired, because my own
   10523 		  routines needed that (and it was easier than rewriting my
   10524 		  own routines ;-)
   10525 
   10526 Wed Feb 24 00:35:43 1999  Barry Warsaw  <bwarsaw (a] eric.cnri.reston.va.us>
   10527 
   10528 	* Python/bltinmodule.c (initerrors):
   10529 	Make sure that the exception tuples ("base-classes" when
   10530 	string-based exceptions are used) reflect the real class hierarchy,
   10531 	i.e. that SystemExit derives from Exception not StandardError.
   10532 
   10533 	* Lib/exceptions.py:
   10534 	Document the correct class hierarchy for SystemExit.  It is not an
   10535 	error and so it derives from Exception and not SystemError.  The
   10536 	docstring was incorrect but the implementation was fine.
   10537 
   10538 Tue Feb 23 23:07:51 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10539 
   10540 	* Lib/shutil.py:
   10541 	Add import sys, needed by reference to sys.exc_info() in rmtree().
   10542 	Discovered by Mitch Chapman.
   10543 
   10544 	* config.h.in:
   10545 	Now that we don't have AC_CHECK_LIB(m, pow), the HAVE_LIBM symbol
   10546 	disappears.  It wasn't used anywhere anyway...
   10547 
   10548 	* Modules/arraymodule.c:
   10549 	Carefully check for overflow when allocating the memory for fromfile
   10550 	-- someone tried to pass in sys.maxint and got bitten by the bogus
   10551 	calculations.
   10552 
   10553 	* configure.in:
   10554 	Get rid of AC_CHECK_LIB(m, pow) since this is taken care of later with
   10555 	LIBM (from --with-libm=...); this actually broke the customizability
   10556 	offered by the latter option.  Thanks go to Clay Spence for reporting
   10557 	this.
   10558 
   10559 	* Lib/test/test_dl.py:
   10560 	1. Print the error message (carefully) when a dl.open() fails in verbose mode.
   10561 	2. When no test case worked, raise ImportError instead of failing.
   10562 
   10563 	* Python/bltinmodule.c:
   10564 	Patch by Tim Peters to improve the range checks for range() and
   10565 	xrange(), especially for platforms where int and long are different
   10566 	sizes (so sys.maxint isn't actually the theoretical limit for the
   10567 	length of a list, but the largest C int is -- sys.maxint is the
   10568 	largest Python int, which is actually a C long).
   10569 
   10570 	* Makefile.in:
   10571 	1. Augment the DG/UX rule so it doesn't break the BeOS build.
   10572 	2. Add $(EXE) to various occurrences of python so it will work on
   10573 	   Cygwin with egcs (after setting EXE=.exe).  These patches by
   10574 	   Norman Vine.
   10575 
   10576 	* Lib/posixfile.py:
   10577 	According to Jeffrey Honig, bsd/os 2.0 - 4.0 should be added to the
   10578 	list (of bsd variants that have a different lock structure).
   10579 
   10580 	* Lib/test/test_fcntl.py:
   10581 	According to Jeffrey Honig, bsd/os 4.0 should be added to the list.
   10582 
   10583 	* Modules/timemodule.c:
   10584 	Patch by Tadayoshi Funaba (with some changes) to be smarter about
   10585 	guessing what happened when strftime() returns 0.  Is it buffer
   10586 	overflow or was the result simply 0 bytes long?  (This happens for an
   10587 	empty format string, or when the format string is a single %Z and the
   10588 	timezone is unknown.)  if the buffer is at least 256 times as long as
   10589 	the format, assume the latter.
   10590 
   10591 Mon Feb 22 19:01:42 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10592 
   10593 	* Lib/urllib.py:
   10594 	As Des Barry points out, we need to call pathname2url(file) in two
   10595 	calls to addinfourl() in open_file().
   10596 
   10597 	* Modules/Setup.in: Document *static* -- in two places!
   10598 
   10599 	* Modules/timemodule.c:
   10600 	We don't support leap seconds, so the seconds field of a time 9-tuple
   10601 	should be in the range [0-59].  Noted by Tadayoshi Funaba.
   10602 
   10603 	* Modules/stropmodule.c:
   10604 	In atoi(), don't use isxdigit() to test whether the last character
   10605 	converted was a "digit" -- use isalnum().  This test is there only to
   10606 	guard against "+" or "-" being interpreted as a valid int literal.
   10607 	Reported by Takahiro Nakayama.
   10608 
   10609 	* Lib/os.py:
   10610 	As Finn Bock points out, _P_WAIT etc. don't have a leading underscore
   10611 	so they don't need to be treated specially here.
   10612 
   10613 Mon Feb 22 15:38:58 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   10614 
   10615 	* Misc/NEWS:
   10616 	Typo:  "apparentlt" --> "apparently"
   10617 
   10618 Mon Feb 22 15:38:46 1999  Guido van Rossum  <guido (a] eric.cnri.reston.va.us>
   10619 
   10620 	* Lib/urlparse.py: Steve Clift pointed out that 'file' allows a netloc.
   10621 
   10622 	* Modules/posixmodule.c:
   10623 	The docstring for ttyname(..) claims a second "mode" argument. The
   10624 	actual code does not allow such an argument.  (Finn Bock.)
   10625 
   10626 	* Lib/lib-old/poly.py:
   10627 	Dang.  Even though this is obsolete code, somebody found a bug, and I
   10628 	fix it.  Oh well.
   10629 
   10630 Thu Feb 18 20:51:50 1999  Fred Drake  <fdrake (a] eric.cnri.reston.va.us>
   10631 
   10632 	* Lib/pyclbr.py:
   10633 	Bow to font-lock at the end of the docstring, since it throws stuff
   10634 	off.
   10635 
   10636 	Make sure the path parameter to readmodule() is a list before adding it
   10637 	with sys.path, or the addition could fail.
   10638 
   10639 
   10640 ======================================================================
   10641 
   10642 
   10643 From 1.5.2b1 to 1.5.2b2
   10644 =======================
   10645 
   10646 General
   10647 -------
   10648 
   10649 - Many memory leaks fixed.
   10650 
   10651 - Many small bugs fixed.
   10652 
   10653 - Command line option -OO (or -O -O) suppresses inclusion of doc
   10654 strings in resulting bytecode.
   10655 
   10656 Windows-specific changes
   10657 ------------------------
   10658 
   10659 - New built-in module winsound provides an interface to the Win32
   10660 PlaySound() call.
   10661 
   10662 - Re-enable the audioop module in the config.c file.
   10663 
   10664 - On Windows, support spawnv() and associated P_* symbols.
   10665 
   10666 - Fixed the conversion of times() return values on Windows.
   10667 
   10668 - Removed freeze from the installer -- it doesn't work without the
   10669 source tree.  (See FAQ 8.11.)
   10670 
   10671 - On Windows 95/98, the Tkinter module now is smart enough to find
   10672 Tcl/Tk even when the PATH environment variable hasn't been set -- when
   10673 the import of _tkinter fails, it searches in a standard locations,
   10674 patches os.environ["PATH"], and tries again.  When it still fails, a
   10675 clearer error message is produced.  This should avoid most
   10676 installation problems with Tkinter use (e.g. in IDLE).
   10677 
   10678 - The -i option doesn't make any calls to set[v]buf() for stdin --
   10679 this apparently screwed up _kbhit() and the _tkinter main loop.
   10680 
   10681 - The ntpath module (and hence, os.path on Windows) now parses out UNC
   10682 paths (e.g. \\host\mountpoint\dir\file) as "drive letters", so that
   10683 splitdrive() will \\host\mountpoint as the drive and \dir\file as the
   10684 path.  ** EXPERIMENTAL **
   10685 
   10686 - Added a hack to the exit code so that if (1) the exit status is
   10687 nonzero and (2) we think we have our own DOS box (i.e. we're not
   10688 started from a command line shell), we print a message and wait for
   10689 the user to hit a key before the DOS box is closed.
   10690 
   10691 - Updated the installer to WISE 5.0g.  Added a dialog warning about
   10692 the imminent Tcl installation.  Added a dialog to specify the program
   10693 group name in the start menu.  Upgraded the Tcl installer to Tcl
   10694 8.0.4.
   10695 
   10696 Changes to intrinsics
   10697 ---------------------
   10698 
   10699 - The repr() or str() of a module object now shows the __file__
   10700 attribute (i.e., the file which it was loaded), or the string
   10701 "(built-in)" if there is no __file__ attribute.
   10702 
   10703 - The range() function now avoids overflow during its calculations (if
   10704 at all possible).
   10705 
   10706 - New info string sys.hexversion, which is an integer encoding the
   10707 version in hexadecimal.  In other words, hex(sys.hexversion) ==
   10708 0x010502b2 for Python 1.5.2b2.
   10709 
   10710 New or improved ports
   10711 ---------------------
   10712 
   10713 - Support for Nextstep descendants (future Mac systems).
   10714 
   10715 - Improved BeOS support.
   10716 
   10717 - Support dynamic loading of shared libraries on NetBSD platforms that 
   10718 use ELF (i.e., MIPS and Alpha systems).
   10719 
   10720 Configuration/build changes
   10721 ---------------------------
   10722 
   10723 - The Lib/test directory is no longer included in the default module
   10724 search path (sys.path) -- "test" has been a package ever since 1.5.
   10725 
   10726 - Now using autoconf 2.13.
   10727 
   10728 New library modules
   10729 -------------------
   10730 
   10731 - New library modules asyncore and asynchat: these form Sam Rushing's
   10732 famous asynchronous socket library.  Sam has gracefully allowed me to
   10733 incorporate these in the standard Python library.
   10734 
   10735 - New module statvfs contains indexing constants for [f]statvfs()
   10736 return tuple.
   10737 
   10738 Changes to the library
   10739 ----------------------
   10740 
   10741 - The wave module (platform-independent support for Windows sound
   10742 files) has been fixed to actually make it work.
   10743 
   10744 - The sunau module (platform-independent support for Sun/NeXT sound
   10745 files) has been fixed to work across platforms.  Also, a weird
   10746 encoding bug in the header of the audio test data file has been
   10747 corrected.
   10748 
   10749 - Fix a bug in the urllib module that occasionally tripped up
   10750 webchecker and other ftp retrieves.
   10751 
   10752 - ConfigParser's get() method now accepts an optional keyword argument
   10753 (vars) that is substituted on top of the defaults that were setup in
   10754 __init__.  You can now also have recusive references in your
   10755 configuration file.
   10756 
   10757 - Some improvements to the Queue module, including a put_nowait()
   10758 module and an optional "block" second argument, to get() and put(),
   10759 defaulting to 1.
   10760 
   10761 - The updated xmllib module is once again compatible with the version
   10762 present in Python 1.5.1 (this was accidentally broken in 1.5.2b1).
   10763 
   10764 - The bdb module (base class for the debugger) now supports
   10765 canonicalizing pathnames used in breakpoints.  The derived class must
   10766 override the new canonical() method for this to work.  Also changed
   10767 clear_break() to the backwards compatible old signature, and added
   10768 clear_bpbynumber() for the new functionality.
   10769 
   10770 - In sgmllib (and hence htmllib), recognize attributes even if they
   10771 don't have space in front of them.  I.e.  '<a
   10772 name="foo"href="bar.html">' will now have two attributes recognized.
   10773 
   10774 - In the debugger (pdb), change clear syntax to support three
   10775 alternatives: clear; clear file:line; clear bpno bpno ...
   10776 
   10777 - The os.path module now pretends to be a submodule within the os
   10778 "package", so you can do things like "from os.path import exists".
   10779 
   10780 - The standard exceptions now have doc strings.
   10781 
   10782 - In the smtplib module, exceptions are now classes.  Also avoid
   10783 inserting a non-standard space after "TO" in rcpt() command.
   10784 
   10785 - The rfc822 module's getaddrlist() method now uses all occurrences of
   10786 the specified header instead of just the first.  Some other bugfixes
   10787 too (to handle more weird addresses found in a very large test set,
   10788 and to avoid crashes on certain invalid dates), and a small test
   10789 module has been added.
   10790 
   10791 - Fixed bug in urlparse in the common-case code for HTTP URLs; it
   10792 would lose the query, fragment, and/or parameter information.
   10793 
   10794 - The sndhdr module no longer supports whatraw() -- it depended on a
   10795 rare extenral program.
   10796 
   10797 - The UserList module/class now supports the extend() method, like
   10798 real list objects.
   10799 
   10800 - The uu module now deals better with trailing garbage generated by
   10801 some broke uuencoders.
   10802 
   10803 - The telnet module now has a my_interact() method which uses threads
   10804 instead of select.  The interact() method uses this by default on
   10805 Windows (where the single-threaded version doesn't work).
   10806 
   10807 - Add a class to mailbox.py for dealing with qmail directory
   10808 mailboxes.  The test code was extended to notice these being used as
   10809 well.
   10810 
   10811 Changes to extension modules
   10812 ----------------------------
   10813 
   10814 - Support for the [f]statvfs() system call, where it exists.
   10815 
   10816 - Fixed some bugs in cPickle where bad input could cause it to dump
   10817 core.
   10818 
   10819 - Fixed cStringIO to make the writelines() function actually work.
   10820 
   10821 - Added strop.expandtabs() so string.expandtabs() is now much faster.
   10822 
   10823 - Added fsync() and fdatasync(), if they appear to exist.
   10824 
   10825 - Support for "long files" (64-bit seek pointers).
   10826 
   10827 - Fixed a bug in the zlib module's flush() function.
   10828 
   10829 - Added access() system call.  It returns 1 if access granted, 0 if
   10830 not.
   10831 
   10832 - The curses module implements an optional nlines argument to
   10833 w.scroll().  (It then calls wscrl(win, nlines) instead of scoll(win).)
   10834 
   10835 Changes to tools
   10836 ----------------
   10837 
   10838 - Some changes to IDLE; see Tools/idle/NEWS.txt.
   10839 
   10840 - Latest version of Misc/python-mode.el included.
   10841 
   10842 Changes to Tkinter
   10843 ------------------
   10844 
   10845 - Avoid tracebacks when an image is deleted after its root has been
   10846 destroyed.
   10847 
   10848 Changes to the Python/C API
   10849 ---------------------------
   10850 
   10851 - When parentheses are used in a PyArg_Parse[Tuple]() call, any
   10852 sequence is now accepted, instead of requiring a tuple.  This is in
   10853 line with the general trend towards accepting arbitrary sequences.
   10854 
   10855 - Added PyModule_GetFilename().
   10856 
   10857 - In PyNumber_Power(), remove unneeded and even harmful test for float
   10858 to the negative power (which is already and better done in
   10859 floatobject.c).
   10860 
   10861 - New version identification symbols; read patchlevel.h for info.  The
   10862 version numbers are now exported by Python.h.
   10863 
   10864 - Rolled back the API version change -- it's back to 1007!
   10865 
   10866 - The frozenmain.c function calls PyInitFrozenExtensions().
   10867 
   10868 - Added 'N' format character to Py_BuildValue -- like 'O' but doesn't
   10869 INCREF.
   10870 
   10871 
   10872 ======================================================================
   10873 
   10874 
   10875 From 1.5.2a2 to 1.5.2b1
   10876 =======================
   10877 
   10878 Changes to intrinsics
   10879 ---------------------
   10880 
   10881 - New extension NotImplementedError, derived from RuntimeError.  Not
   10882 used, but recommended use is for "abstract" methods to raise this.
   10883 
   10884 - The parser will now spit out a warning or error when -t or -tt is
   10885 used for parser input coming from a string, too.
   10886 
   10887 - The code generator now inserts extra SET_LINENO opcodes when
   10888 compiling multi-line argument lists.
   10889 
   10890 - When comparing bound methods, use identity test on the objects, not
   10891 equality test.
   10892 
   10893 New or improved ports
   10894 ---------------------
   10895 
   10896 - Chris Herborth has redone his BeOS port; it now works on PowerPC
   10897 (R3/R4) and x86 (R4 only).  Threads work too in this port.
   10898 
   10899 Renaming
   10900 --------
   10901 
   10902 - Thanks to Chris Herborth, the thread primitives now have proper Py*
   10903 names in the source code (they already had those for the linker,
   10904 through some smart macros; but the source still had the old, un-Py
   10905 names).
   10906 
   10907 Configuration/build changes
   10908 ---------------------------
   10909 
   10910 - Improved support for FreeBSD/3.
   10911 
   10912 - Check for pthread_detach instead of pthread_create in libc.
   10913 
   10914 - The makesetup script now searches EXECINCLUDEPY before INCLUDEPY.
   10915 
   10916 - Misc/Makefile.pre.in now also looks at Setup.thread and Setup.local.
   10917 Otherwise modules such as thread didn't get incorporated in extensions.
   10918 
   10919 New library modules
   10920 -------------------
   10921 
   10922 - shlex.py by Eric Raymond provides a lexical analyzer class for
   10923 simple shell-like syntaxes.
   10924 
   10925 - netrc.py by Eric Raymond provides a parser for .netrc files.  (The
   10926 undocumented Netrc class in ftplib.py is now obsolete.)
   10927 
   10928 - codeop.py is a new module that contains the compile_command()
   10929 function that was previously in code.py.  This is so that JPython can
   10930 provide its own version of this function, while still sharing the
   10931 higher-level classes in code.py.
   10932 
   10933 - turtle.py is a new module for simple turtle graphics.  I'm still
   10934 working on it; let me know if you use this to teach Python to children 
   10935 or other novices without prior programming experience.
   10936 
   10937 Obsoleted library modules
   10938 -------------------------
   10939 
   10940 - poly.py and zmod.py have been moved to Lib/lib-old to emphasize
   10941 their status of obsoleteness.  They don't do a particularly good job
   10942 and don't seem particularly relevant to the Python core.
   10943 
   10944 New tools
   10945 ---------
   10946 
   10947 - I've added IDLE: my Integrated DeveLopment Environment for Python.
   10948 Requires Tcl/Tk (and Tkinter).  Works on Windows and Unix (and should
   10949 work on Macintosh, but I haven't been able to test it there; it does
   10950 depend on new features in 1.5.2 and perhaps even new features in
   10951 1.5.2b1, especially the new code module).  This is very much a work in
   10952 progress.  I'd like to hear how people like it compared to PTUI (or
   10953 any other IDE they are familiar with).
   10954 
   10955 - New tools by Barry Warsaw:
   10956 
   10957   = audiopy: controls the Solaris Audio device
   10958   = pynche:  The PYthonically Natural Color and Hue Editor
   10959   = world:   Print mappings between country names and DNS country codes
   10960 
   10961 New demos
   10962 ---------
   10963 
   10964 - Demo/scripts/beer.py prints the lyrics to an arithmetic drinking
   10965 song.
   10966 
   10967 - Demo/tkinter/guido/optionmenu.py shows how to do an option menu in
   10968 Tkinter.  (By Fredrik Lundh -- not by me!)
   10969 
   10970 Changes to the library
   10971 ----------------------
   10972 
   10973 - compileall.py now avoids recompiling .py files that haven't changed;
   10974 it adds a -f option to force recompilation.
   10975 
   10976 - New version of xmllib.py by Sjoerd Mullender (0.2 with latest
   10977 patches).
   10978 
   10979 - nntplib.py: statparse() no longer lowercases the message-id.
   10980 
   10981 - types.py: use type(__stdin__) for FileType.
   10982 
   10983 - urllib.py: fix translations for filenames with "funny" characters.
   10984 Patch by Sjoerd Mullender.  Note that if you subclass one of the
   10985 URLopener classes, and you have copied code from the old urllib.py,
   10986 your subclass may stop working.  A long-term solution is to provide
   10987 more methods so that you don't have to copy code.
   10988 
   10989 - cgi.py: In read_multi, allow a subclass to override the class we
   10990 instantiate when we create a recursive instance, by setting the class
   10991 variable 'FieldStorageClass' to the desired class.  By default, this
   10992 is set to None, in which case we use self.__class__ (as before).
   10993 Also, a patch by Jim Fulton to pass additional arguments to recursive
   10994 calls to the FieldStorage constructor from its read_multi method.
   10995 
   10996 - UserList.py: In __getslice__, use self.__class__ instead of
   10997 UserList.
   10998 
   10999 - In SimpleHTTPServer.py, the server specified in test() should be
   11000 BaseHTTPServer.HTTPServer, in case the request handler should want to
   11001 reference the two attributes added by BaseHTTPServer.server_bind.  (By
   11002 Jeff Rush, for Bobo).  Also open the file in binary mode, so serving
   11003 images from a Windows box might actually work.
   11004 
   11005 - In CGIHTTPServer.py, the list of acceptable formats is -split-
   11006 on spaces but -joined- on commas, resulting in double commas
   11007 in the joined text.  (By Jeff Rush.)
   11008 
   11009 - SocketServer.py, patch by Jeff Bauer: a minor change to declare two
   11010 new threaded versions of Unix Server classes, using the ThreadingMixIn
   11011 class: ThreadingUnixStreamServer, ThreadingUnixDatagramServer.
   11012 
   11013 - bdb.py: fix bomb on deleting a temporary breakpoint: there's no
   11014 method do_delete(); do_clear() was meant.  By Greg Ward.
   11015 
   11016 - getopt.py: accept a non-list sequence for the long options (request
   11017 by Jack Jansen).  Because it might be a common mistake to pass a
   11018 single string, this situation is treated separately.  Also added
   11019 docstrings (copied from the library manual) and removed the (now
   11020 redundant) module comments.
   11021 
   11022 - tempfile.py: improvements to avoid security leaks.
   11023 
   11024 - code.py: moved compile_command() to new module codeop.py.
   11025 
   11026 - pickle.py: support pickle format 1.3 (binary float added).  By Jim
   11027 Fulton. Also get rid of the undocumented obsolete Pickler dump_special
   11028 method.
   11029 
   11030 - uu.py: Move 'import sys' to top of module, as noted by Tim Peters.
   11031 
   11032 - imaplib.py: fix problem with some versions of IMAP4 servers that
   11033 choose to mix the case in their CAPABILITIES response.
   11034 
   11035 - cmp.py: use (f1, f2) as cache key instead of f1 + ' ' + f2.  Noted
   11036 by Fredrik Lundh.
   11037 
   11038 Changes to extension modules
   11039 ----------------------------
   11040 
   11041 - More doc strings for several modules were contributed by Chris
   11042 Petrilli: math, cmath, fcntl.
   11043 
   11044 - Fixed a bug in zlibmodule.c that could cause core dumps on
   11045 decompression of rarely occurring input.
   11046 
   11047 - cPickle.c: new version from Jim Fulton, with Open Source copyright
   11048 notice.  Also, initialize self->safe_constructors early on to prevent
   11049 crash in early dealloc.
   11050 
   11051 - cStringIO.c: new version from Jim Fulton, with Open Source copyright
   11052 notice.  Also fixed a core dump in cStringIO.c when doing seeks.
   11053 
   11054 - mpzmodule.c: fix signed character usage in mpz.mpz(stringobjecty).
   11055 
   11056 - readline.c: Bernard Herzog pointed out that rl_parse_and_bind
   11057 modifies its argument string (bad function!), so we make a temporary
   11058 copy.
   11059 
   11060 - sunaudiodev.c: Barry Warsaw added more smarts to get the device and
   11061 control pseudo-device, per audio(7I).
   11062 
   11063 Changes to tools
   11064 ----------------
   11065 
   11066 - New, improved version of Barry Warsaw's Misc/python-mode.el (editing 
   11067 support for Emacs).
   11068 
   11069 - tabnanny.py: added a -q ('quiet') option to tabnanny, which causes
   11070 only the names of offending files to be printed.
   11071 
   11072 - freeze: when printing missing modules, also print the module they
   11073 were imported from.
   11074 
   11075 - untabify.py: patch by Detlef Lannert to implement -t option
   11076 (set tab size).
   11077 
   11078 Changes to Tkinter
   11079 ------------------
   11080 
   11081 - grid_bbox(): support new Tk API: grid bbox ?column row? ?column2
   11082 row2?
   11083 
   11084 - _tkinter.c: RajGopal Srinivasan noted that the latest code (1.5.2a2)
   11085 doesn't work when running in a non-threaded environment.  He added
   11086 some #ifdefs that fix this.
   11087 
   11088 Changes to the Python/C API
   11089 ---------------------------
   11090 
   11091 - Bumped API version number to 1008 -- enough things have changed!
   11092 
   11093 - There's a new macro, PyThreadState_GET(), which does the same work
   11094 as PyThreadState_Get() without the overhead of a function call (it
   11095 also avoids the error check).  The two top calling locations of
   11096 PyThreadState_Get() have been changed to use this macro.
   11097 
   11098 - All symbols intended for export from a DLL or shared library are now
   11099 marked as such (with the DL_IMPORT() macro) in the header file that
   11100 declares them.  This was needed for the BeOS port, and should also
   11101 make some other ports easier.  The PC port no longer needs the file
   11102 with exported symbols (PC/python_nt.def).  There's also a DL_EXPORT
   11103 macro which is only used for init methods in extension modules, and
   11104 for Py_Main().
   11105 
   11106 Invisible changes to internals
   11107 ------------------------------
   11108 
   11109 - Fixed a bug in new_buffersize() in fileobject.c which could
   11110 return a buffer size that was way too large.
   11111 
   11112 - Use PySys_WriteStderr instead of fprintf in most places.
   11113 
   11114 - dictobject.c: remove dead code discovered by Vladimir Marangozov.
   11115 
   11116 - tupleobject.c: make tuples less hungry -- an extra item was
   11117 allocated but never used.  Tip by Vladimir Marangozov.
   11118 
   11119 - mymath.h: Metrowerks PRO4 finally fixes the hypot snafu.  (Jack
   11120 Jansen)
   11121 
   11122 - import.c: Jim Fulton fixes a reference count bug in
   11123 PyEval_GetGlobals.
   11124 
   11125 - glmodule.c: check in the changed version after running the stubber
   11126 again -- this solves the conflict with curses over the 'clear' entry
   11127 point much nicer.  (Jack Jansen had checked in the changes to cstubs
   11128 eons ago, but I never regenrated glmodule.c :-( )
   11129 
   11130 - frameobject.c: fix reference count bug in PyFrame_New.  Vladimir
   11131 Marangozov.
   11132 
   11133 - stropmodule.c: add a missing DECREF in an error exit.  Submitted by
   11134 Jonathan Giddy.
   11135 
   11136 
   11137 ======================================================================
   11138 
   11139 
   11140 From 1.5.2a1 to 1.5.2a2
   11141 =======================
   11142 
   11143 General
   11144 -------
   11145 
   11146 - It is now a syntax error to have a function argument without a
   11147 default following one with a default.
   11148 
   11149 - __file__ is now set to the .py file if it was parsed (it used to
   11150 always be the .pyc/.pyo file).
   11151 
   11152 - Don't exit with a fatal error during initialization when there's a
   11153 problem with the exceptions.py module.
   11154 
   11155 - New environment variable PYTHONOPTIMIZE can be used to set -O.
   11156 
   11157 - New version of python-mode.el for Emacs.
   11158 
   11159 Miscellaneous fixed bugs
   11160 ------------------------
   11161 
   11162 - No longer print the (confusing) error message about stack underflow
   11163 while compiling.
   11164 
   11165 - Some threading and locking bugs fixed.
   11166 
   11167 - When errno is zero, report "Error", not "Success".
   11168 
   11169 Documentation
   11170 -------------
   11171 
   11172 - Documentation will be released separately.
   11173 
   11174 - Doc strings added to array and md5 modules by Chris Petrilli.
   11175 
   11176 Ports and build procedure
   11177 -------------------------
   11178 
   11179 - Stop installing when a move or copy fails.
   11180 
   11181 - New version of the OS/2 port code by Jeff Rush.
   11182 
   11183 - The makesetup script handles absolute filenames better.
   11184 
   11185 - The 'new' module is now enabled by default in the Setup file.
   11186 
   11187 - I *think* I've solved the problem with the Linux build blowing up
   11188 sometimes due to a conflict between sigcheck/intrcheck and
   11189 signalmodule.
   11190 
   11191 Built-in functions
   11192 ------------------
   11193 
   11194 - The second argument to apply() can now be any sequence, not just a
   11195 tuple.
   11196 
   11197 Built-in types
   11198 --------------
   11199 
   11200 - Lists have a new method: L1.extend(L2) is equivalent to the common
   11201 idiom L1[len(L1):] = L2.
   11202 
   11203 - Better error messages when a sequence is indexed with a non-integer.
   11204 
   11205 - Bettter error message when calling a non-callable object (include
   11206 the type in the message).
   11207 
   11208 Python services
   11209 ---------------
   11210 
   11211 - New version of cPickle.c fixes some bugs.
   11212 
   11213 - pickle.py: improved instantiation error handling.
   11214 
   11215 - code.py: reworked quite a bit.  New base class
   11216 InteractiveInterpreter and derived class InteractiveConsole.  Fixed
   11217 several problems in compile_command().
   11218 
   11219 - py_compile.py: print error message and continue on syntax errors.
   11220 Also fixed an old bug with the fstat code (it was never used).
   11221 
   11222 - pyclbr.py: support submodules of packages.
   11223 
   11224 String Services
   11225 ---------------
   11226 
   11227 - StringIO.py: raise the right exception (ValueError) for attempted
   11228 I/O on closed StringIO objects.
   11229 
   11230 - re.py: fixed a bug in subn(), which caused .groups() to fail inside
   11231 the replacement function called by sub().
   11232 
   11233 - The struct module has a new format 'P': void * in native mode.
   11234 
   11235 Generic OS Services
   11236 -------------------
   11237 
   11238 - Module time: Y2K robustness.  2-digit year acceptance depends on
   11239 value of time.accept2dyear, initialized from env var PYTHONY2K,
   11240 default 0.  Years 00-68 mean 2000-2068, while 69-99 mean 1969-1999
   11241 (POSIX or X/Open recommendation).
   11242 
   11243 - os.path: normpath(".//x") should return "x", not "/x".
   11244 
   11245 - getpass.py: fall back on default_getpass() when sys.stdin.fileno()
   11246 doesn't work.
   11247 
   11248 - tempfile.py: regenerate the template after a fork() call.
   11249 
   11250 Optional OS Services
   11251 --------------------
   11252 
   11253 - In the signal module, disable restarting interrupted system calls
   11254 when we have siginterrupt().
   11255 
   11256 Debugger
   11257 --------
   11258 
   11259 - No longer set __args__; this feature is no longer supported and can
   11260 affect the debugged code.
   11261 
   11262 - cmd.py, pdb.py and bdb.py have been overhauled by Richard Wolff, who
   11263 added aliases and some other useful new features, e.g. much better
   11264 breakpoint support: temporary breakpoint, disabled breakpoints,
   11265 breakpoints with ignore counts, and conditions; breakpoints can be set
   11266 on a file before it is loaded.
   11267 
   11268 Profiler
   11269 --------
   11270 
   11271 - Changes so that JPython can use it.  Also fix the calibration code
   11272 so it actually works again
   11273 .
   11274 Internet Protocols and Support
   11275 ------------------------------
   11276 
   11277 - imaplib.py: new version from Piers Lauder.
   11278 
   11279 - smtplib.py: change sendmail() method to accept a single string or a
   11280 list or strings as the destination (commom newbie mistake).
   11281 
   11282 - poplib.py: LIST with a msg argument fixed.
   11283 
   11284 - urlparse.py: some optimizations for common case (http).
   11285 
   11286 - urllib.py: support content-length in info() for ftp protocol;
   11287 support for a progress meter through a third argument to
   11288 urlretrieve(); commented out gopher test (the test site is dead).
   11289 
   11290 Internet Data handling
   11291 ----------------------
   11292 
   11293 - sgmllib.py: support tags with - or . in their name.
   11294 
   11295 - mimetypes.py: guess_type() understands 'data' URLs.
   11296 
   11297 Restricted Execution
   11298 --------------------
   11299 
   11300 - The classes rexec.RModuleLoader and rexec.RModuleImporter no
   11301 longer exist.
   11302 
   11303 Tkinter
   11304 -------
   11305 
   11306 - When reporting an exception, store its info in sys.last_*.  Also,
   11307 write all of it to stderr.
   11308 
   11309 - Added NS, EW, and NSEW constants, for grid's sticky option.
   11310 
   11311 - Fixed last-minute bug in 1.5.2a1 release: need to include "mytime.h".
   11312 
   11313 - Make bind variants without a sequence return a tuple of sequences
   11314 (formerly it returned a string, which wasn't very convenient).
   11315 
   11316 - Add image commands to the Text widget (these are new in Tk 8.0).
   11317 
   11318 - Added new listbox and canvas methods: {xview,yview}_{scroll,moveto}.)
   11319 
   11320 - Improved the thread code (but you still can't call update() from
   11321 another thread on Windows).
   11322 
   11323 - Fixed unnecessary references to _default_root in the new dialog
   11324 modules.
   11325 
   11326 - Miscellaneous problems fixed.
   11327 
   11328 
   11329 Windows General
   11330 ---------------
   11331 
   11332 - Call LoadLibraryEx(..., ..., LOAD_WITH_ALTERED_SEARCH_PATH) to
   11333 search for dependent dlls in the directory containing the .pyd.
   11334 
   11335 - In debugging mode, call DebugBreak() in Py_FatalError().
   11336 
   11337 Windows Installer
   11338 -----------------
   11339 
   11340 - Install zlib.dll in the DLLs directory instead of in the win32
   11341 system directory, to avoid conflicts with other applications that have 
   11342 their own zlib.dll.
   11343 
   11344 Test Suite
   11345 ----------
   11346 
   11347 - test_long.py: new test for long integers, by Tim Peters.
   11348 
   11349 - regrtest.py: improved so it can be used for other test suites as
   11350 well.
   11351 
   11352 - test_strftime.py: use re to compare test results, to support legal
   11353 variants (e.g. on Linux).
   11354 
   11355 Tools and Demos
   11356 ---------------
   11357 
   11358 - Four new scripts in Tools/scripts: crlf.py and lfcr.py (to
   11359 remove/add Windows style '\r\n' line endings), untabify.py (to remove
   11360 tabs), and rgrep.yp (reverse grep).
   11361 
   11362 - Improvements to Tools/freeze/.  Each Python module is now written to
   11363 its own C file.  This prevents some compilers or assemblers from
   11364 blowing up on large frozen programs, and saves recompilation time if
   11365 only a few modules are changed.  Other changes too, e.g. new command
   11366 line options -x and -i.
   11367 
   11368 - Much improved (and smaller!) version of Tools/scripts/mailerdaemon.py.
   11369 
   11370 Python/C API
   11371 ------------
   11372 
   11373 - New mechanism to support extensions of the type object while
   11374 remaining backward compatible with extensions compiled for previous
   11375 versions of Python 1.5.  A flags field indicates presence of certain
   11376 fields.
   11377 
   11378 - Addition to the buffer API to differentiate access to bytes and
   11379 8-bit characters (in anticipation of Unicode characters).
   11380 
   11381 - New argument parsing format t# ("text") to indicate 8-bit
   11382 characters; s# simply means 8-bit bytes, for backwards compatibility.
   11383 
   11384 - New object type, bufferobject.c is an example and can be used to
   11385 create buffers from memory.
   11386 
   11387 - Some support for 64-bit longs, including some MS platforms.
   11388 
   11389 - Many calls to fprintf(stderr, ...) have been replaced with calls to
   11390 PySys_WriteStderr(...).
   11391 
   11392 - The calling context for PyOS_Readline() has changed: it must now be
   11393 called with the interpreter lock held!  It releases the lock around
   11394 the call to the function pointed to by PyOS_ReadlineFunctionPointer
   11395 (default PyOS_StdioReadline()).
   11396 
   11397 - New APIs PyLong_FromVoidPtr() and PyLong_AsVoidPtr().
   11398 
   11399 - Renamed header file "thread.h" to "pythread.h".
   11400 
   11401 - The code string of code objects may now be anything that supports the
   11402 buffer API.
   11403 
   11404 
   11405 ======================================================================
   11406 
   11407 
   11408 From 1.5.1 to 1.5.2a1
   11409 =====================
   11410 
   11411 General
   11412 -------
   11413 
   11414 - When searching for the library, a landmark that is a compiled module
   11415 (string.pyc or string.pyo) is also accepted.
   11416 
   11417 - When following symbolic links to the python executable, use a loop
   11418 so that a symlink to a symlink can work.
   11419 
   11420 - Added a hack so that when you type 'quit' or 'exit' at the
   11421 interpreter, you get a friendly explanation of how to press Ctrl-D (or 
   11422 Ctrl-Z) to exit.
   11423 
   11424 - New and improved Misc/python-mode.el (Python mode for Emacs).
   11425 
   11426 - Revert a new feature in Unix dynamic loading: for one or two
   11427 revisions, modules were loaded using the RTLD_GLOBAL flag.  It turned
   11428 out to be a bad idea.
   11429 
   11430 Miscellaneous fixed bugs
   11431 ------------------------
   11432 
   11433 - All patches on the patch page have been integrated.  (But much more
   11434 has been done!)
   11435 
   11436 - Several memory leaks plugged (e.g. the one for classes with a
   11437 __getattr__ method).
   11438 
   11439 - Removed the only use of calloc().  This triggered an obscure bug on
   11440 multiprocessor Sparc Solaris 2.6.
   11441 
   11442 - Fix a peculiar bug that would allow "import sys.time" to succeed
   11443 (believing the built-in time module to be a part of the sys package).
   11444 
   11445 - Fix a bug in the overflow checking when converting a Python long to
   11446 a C long (failed to convert -2147483648L, and some other cases).
   11447 
   11448 Documentation
   11449 -------------
   11450 
   11451 - Doc strings have been added to many extension modules: __builtin__,
   11452 errno, select, signal, socket, sys, thread, time.  Also to methods of
   11453 list objects (try [].append.__doc__).  A doc string on a type will now
   11454 automatically be propagated to an instance if the instance has methods
   11455 that are accessed in the usual way.
   11456 
   11457 - The documentation has been expanded and the formatting improved.
   11458 (Remember that the documentation is now unbundled and has its own
   11459 release cycle though; see http://www.python.org/doc/.)
   11460 
   11461 - Added Misc/Porting -- a mini-FAQ on porting to a new platform.
   11462 
   11463 Ports and build procedure
   11464 -------------------------
   11465 
   11466 - The BeOS port is now integrated.  Courtesy Chris Herborth.
   11467 
   11468 - Symbol files for FreeBSD 2.x and 3.x have been contributed
   11469 (Lib/plat-freebsd[23]/*).
   11470 
   11471 - Support HPUX 10.20 DCE threads.
   11472 
   11473 - Finally fixed the configure script so that (on SGI) if -OPT:Olimit=0
   11474 works, it won't also use -Olimit 1500 (which gives a warning for every
   11475 file).  Also support the SGI_ABI environment variable better.
   11476 
   11477 - The makesetup script now understands absolute pathnames ending in .o
   11478 in the module -- it assumes it's a file for which we have no source.
   11479 
   11480 - Other miscellaneous improvements to the configure script and
   11481 Makefiles.
   11482 
   11483 - The test suite now uses a different sound sample.
   11484 
   11485 Built-in functions
   11486 ------------------
   11487 
   11488 - Better checks for invalid input to int(), long(), string.atoi(),
   11489 string.atol().  (Formerly, a sign without digits would be accepted as
   11490 a legal ways to spell zero.)
   11491 
   11492 - Changes to map() and filter() to use the length of a sequence only
   11493 as a hint -- if an IndexError happens earlier, take that.  (Formerly,
   11494 this was considered an error.)
   11495 
   11496 - Experimental feature in getattr(): a third argument can specify a
   11497 default (instead of raising AttributeError).
   11498 
   11499 - Implement round() slightly different, so that for negative ndigits
   11500 no additional errors happen in the last step.
   11501 
   11502 - The open() function now adds the filename to the exception when it
   11503 fails.
   11504 
   11505 Built-in exceptions
   11506 -------------------
   11507 
   11508 - New standard exceptions EnvironmentError and PosixError.
   11509 EnvironmentError is the base class for IOError and PosixError;
   11510 PosixError is the same as os.error.  All this so that either exception
   11511 class can be instantiated with a third argument indicating a filename.
   11512 The built-in function open() and most os/posix functions that take a
   11513 filename argument now use this.
   11514 
   11515 Built-in types
   11516 --------------
   11517 
   11518 - List objects now have an experimental pop() method; l.pop() returns
   11519 and removes the last item; l.pop(i) returns and removes the item at
   11520 i.  Also, the sort() method is faster again.  Sorting is now also
   11521 safer: it is impossible for the sorting function to modify the list
   11522 while the sort is going on (which could cause core dumps).
   11523 
   11524 - Changes to comparisons: numbers are now smaller than any other type.
   11525 This is done to prevent the circularity where [] < 0L < 1 < [] is
   11526 true.  As a side effect, cmp(None, 0) is now positive instead of
   11527 negative.  This *shouldn't* affect any working code, but I've found
   11528 that the change caused several "sleeping" bugs to become active, so
   11529 beware!
   11530 
   11531 - Instance methods may now have other callable objects than just
   11532 Python functions as their im_func.  Use new.instancemethod() or write
   11533 your own C code to create them; new.instancemethod() may be called
   11534 with None for the instance to create an unbound method.
   11535 
   11536 - Assignment to __name__, __dict__ or __bases__ of a class object is
   11537 now allowed (with stringent type checks); also allow assignment to
   11538 __getattr__ etc.  The cached values for __getattr__ etc. are
   11539 recomputed after such assignments (but not for derived classes :-( ).
   11540 
   11541 - Allow assignment to some attributes of function objects: func_code,
   11542 func_defaults and func_doc / __doc__.  (With type checks except for
   11543 __doc__ / func_doc .)
   11544 
   11545 Python services
   11546 ---------------
   11547 
   11548 - New tests (in Lib/test): reperf.py (regular expression benchmark),
   11549 sortperf.py (list sorting benchmark), test_MimeWriter.py (test case
   11550 for the MimeWriter module).
   11551 
   11552 - Generalized test/regrtest.py so that it is useful for testing other
   11553 packages.
   11554 
   11555 - The ihooks.py module now understands package imports.
   11556 
   11557 - In code.py, add a class that subsumes Fredrik Lundh's
   11558 PythonInterpreter class.  The interact() function now uses this.
   11559 
   11560 - In rlcompleter.py, in completer(), return None instead of raising an
   11561 IndexError when there are no more completions left.
   11562 
   11563 - Fixed the marshal module to test for certain common kinds of invalid
   11564 input.  (It's still not foolproof!)
   11565 
   11566 - In the operator module, add an alias (now the preferred name)
   11567 "contains" for "sequenceincludes".
   11568 
   11569 String Services
   11570 ---------------
   11571 
   11572 - In the string and strop modules, in the replace() function, treat an
   11573 empty pattern as an error (since it's not clear what was meant!).
   11574 
   11575 - Some speedups to re.py, especially the string substitution and split
   11576 functions.  Also added new function/method findall(), to find all
   11577 occurrences of a given substring.
   11578 
   11579 - In cStringIO, add better argument type checking and support the
   11580 readonly 'closed' attribute (like regular files).
   11581 
   11582 - In the struct module, unsigned 1-2 byte sized formats no longer
   11583 result in long integer values.
   11584 
   11585 Miscellaneous services
   11586 ----------------------
   11587 
   11588 - In whrandom.py, added new method and function randrange(), same as
   11589 choice(range(start, stop, step)) but faster.  This addresses the
   11590 problem that randint() was accidentally defined as taking an inclusive
   11591 range.  Also, randint(a, b) is now redefined as randrange(a, b+1),
   11592 adding extra range and type checking to its arguments!
   11593 
   11594 - Add some semi-thread-safety to random.gauss() (it used to be able to 
   11595 crash when invoked from separate threads; now the worst it can do is
   11596 give a duplicate result occasionally).
   11597 
   11598 - Some restructuring and generalization done to cmd.py.
   11599 
   11600 - Major upgrade to ConfigParser.py; converted to using 're', added new 
   11601 exceptions, support underscore in section header and option name.  No
   11602 longer add 'name' option to every section; instead, add '__name__'.
   11603 
   11604 - In getpass.py, don't use raw_input() to ask for the password -- we
   11605 don't want it to show up in the readline history!  Also don't catch
   11606 interrupts (the try-finally already does all necessary cleanup).
   11607 
   11608 Generic OS Services
   11609 -------------------
   11610 
   11611 - New functions in os.py: makedirs(), removedirs(), renames().  New
   11612 variable: linesep (the line separator as found in binary files,
   11613 i.e. '\n' on Unix, '\r\n' on DOS/Windows, '\r' on Mac.  Do *not* use
   11614 this with files opened in (default) text mode; the line separator used
   11615 will always be '\n'!
   11616 
   11617 - Changes to the 'os.path' submodule of os.py: added getsize(),
   11618 getmtime(), getatime() -- these fetch the most popular items from the
   11619 stat return tuple.
   11620 
   11621 - In the time module, add strptime(), if it exists.  (This parses a
   11622 time according to a format -- the inverse of strftime().)  Also,
   11623 remove the call to mktime() from strftime() -- it messed up the
   11624 formatting of some non-local times.
   11625 
   11626 - In the socket module, added a new function gethostbyname_ex().
   11627 Also, don't use #ifdef to test for some symbols that are enums on some
   11628 platforms (and should exist everywhere).
   11629 
   11630 Optional OS Services
   11631 --------------------
   11632 
   11633 - Some fixes to gzip.py.  In particular, the readlines() method now
   11634 returns the lines *with* trailing newline characters, like readlines()
   11635 of regular file objects.  Also, it didn't work together with cPickle;
   11636 fixed that.
   11637 
   11638 - In whichdb.py, support byte-swapped dbhash (bsddb) files.
   11639 
   11640 - In anydbm.py, look at the type of an existing database to determine
   11641 which module to use to open it.  (The anydbm.error exception is now a
   11642 tuple.)
   11643 
   11644 Unix Services
   11645 -------------
   11646 
   11647 - In the termios module, in tcsetattr(), initialize the structure vy
   11648 calling tcgetattr().
   11649 
   11650 - Added some of the "wait status inspection" macros as functions to
   11651 the posix module (and thus to the os module): WEXITSTATUS(),
   11652 WIFEXITED(), WIFSIGNALED(), WIFSTOPPED(), WSTOPSIG(), WTERMSIG().
   11653 
   11654 - In the syslog module, make the default facility more intuitive
   11655 (matching the docs).
   11656 
   11657 Debugger
   11658 --------
   11659 
   11660 - In pdb.py, support for setting breaks on files/modules that haven't
   11661 been loaded yet.
   11662 
   11663 Internet Protocols and Support
   11664 ------------------------------
   11665 
   11666 - Changes in urllib.py; sped up unquote() and quote().  Fixed an
   11667 obscure bug in quote_plus().  Added urlencode(dict) -- convenience
   11668 function for sending a POST request with urlopen().  Use the getpass
   11669 module to ask for a password.  Rewrote the (test) main program so that
   11670 when used as a script, it can retrieve one or more URLs to stdout.
   11671 Use -t to run the self-test.  Made the proxy code work again.
   11672 
   11673 - In cgi.py, treat "HEAD" the same as "GET", so that CGI scripts don't
   11674 fail when someone asks for their HEAD.  Also, for POST, set the
   11675 default content-type to application/x-www-form-urlencoded.  Also, in
   11676 FieldStorage.__init__(), when method='GET', always get the query
   11677 string from environ['QUERY_STRING'] or sys.argv[1] -- ignore an
   11678 explicitly passed in fp.
   11679 
   11680 - The smtplib.py module now supports ESMTP and has improved standard
   11681 compliance, for picky servers.
   11682 
   11683 - Improved imaplib.py.
   11684 
   11685 - Fixed UDP support in SocketServer.py (it never worked).
   11686 
   11687 - Fixed a small bug in CGIHTTPServer.py.
   11688 
   11689 Internet Data handling
   11690 ----------------------
   11691 
   11692 - In rfc822.py, add a new class AddressList.  Also support a new
   11693 overridable method, isheader().  Also add a get() method similar to
   11694 dictionaries (and make getheader() an alias for it).  Also, be smarter
   11695 about seekable (test whether fp.tell() works) and test for presence of
   11696 unread() method before trying seeks.
   11697 
   11698 - In sgmllib.py, restore the call to report_unbalanced() that was lost
   11699 long ago.  Also some other improvements: handle <? processing
   11700 instructions >, allow . and - in entity names, and allow \r\n as line
   11701 separator.
   11702 
   11703 - Some restructuring and generalization done to multifile.py; support
   11704 a 'seekable' flag.
   11705 
   11706 Restricted Execution
   11707 --------------------
   11708 
   11709 - Improvements to rexec.py: package support; support a (minimal)
   11710 sys.exc_info().  Also made the (test) main program a bit fancier (you
   11711 can now use it to run arbitrary Python scripts in restricted mode).
   11712 
   11713 Tkinter
   11714 -------
   11715 
   11716 - On Unix, Tkinter can now safely be used from a multi-threaded
   11717 application.  (Formerly, no threads would make progress while
   11718 Tkinter's mainloop() was active, because it didn't release the Python
   11719 interpreter lock.)  Unfortunately, on Windows, threads other than the
   11720 main thread should not call update() or update_idletasks() because
   11721 this will deadlock the application.
   11722 
   11723 - An interactive interpreter that uses readline and Tkinter no longer
   11724 uses up all available CPU time.
   11725 
   11726 - Even if readline is not used, Tk windows created in an interactive
   11727 interpreter now get continuously updated.  (This even works in Windows
   11728 as long as you don't hit a key.)
   11729 
   11730 - New demos in Demo/tkinter/guido/: brownian.py, redemo.py, switch.py.
   11731 
   11732 - No longer register Tcl_finalize() as a low-level exit handler.  It
   11733 may call back into Python, and that's a bad idea.
   11734 
   11735 - Allow binding of Tcl commands (given as a string).
   11736 
   11737 - Some minor speedups; replace explicitly coded getint() with int() in
   11738 most places.
   11739 
   11740 - In FileDialog.py, remember the directory of the selected file, if
   11741 given.
   11742 
   11743 - Change the names of all methods in the Wm class: they are now
   11744 wm_title(), etc.  The old names (title() etc.) are still defined as
   11745 aliases.
   11746 
   11747 - Add a new method of interpreter objects, interpaddr().  This returns
   11748 the address of the Tcl interpreter object, as an integer.  Not very
   11749 useful for the Python programmer, but this can be called by another C
   11750 extension that needs to make calls into the Tcl/Tk C API and needs to
   11751 get the address of the Tcl interpreter object.  A simple cast of the
   11752 return value to (Tcl_Interp *) will do the trick.
   11753 
   11754 Windows General
   11755 ---------------
   11756 
   11757 - Don't insist on proper case for module source files if the filename
   11758 is all uppercase (e.g. FOO.PY now matches foo; but FOO.py still
   11759 doesn't).  This should address problems with this feature on
   11760 oldfashioned filesystems (Novell servers?).
   11761 
   11762 Windows Library
   11763 ---------------
   11764 
   11765 - os.environ is now all uppercase, but accesses are case insensitive,
   11766 and the putenv() calls made as a side effect of changing os.environ
   11767 are case preserving.
   11768 
   11769 - Removed samefile(), sameopenfile(), samestat() from os.path (aka
   11770 ntpath.py) -- these cannot be made to work reliably (at least I
   11771 wouldn't know how).
   11772 
   11773 - Fixed os.pipe() so that it returns file descriptors acceptable to
   11774 os.read() and os.write() (like it does on Unix), rather than Windows
   11775 file handles.
   11776 
   11777 - Added a table of WSA error codes to socket.py.
   11778 
   11779 - In the select module, put the (huge) file descriptor arrays on the
   11780 heap.
   11781 
   11782 - The getpass module now raises KeyboardInterrupt when it sees ^C.
   11783 
   11784 - In mailbox.py, fix tell/seek when using files opened in text mode.
   11785 
   11786 - In rfc822.py, fix tell/seek when using files opened in text mode.
   11787 
   11788 - In the msvcrt extension module, release the interpreter lock for
   11789 calls that may block: _locking(), _getch(), _getche().  Also fix a
   11790 bogus error return when open_osfhandle() doesn't have the right
   11791 argument list.
   11792 
   11793 Windows Installer
   11794 -----------------
   11795 
   11796 - The registry key used is now "1.5" instead of "1.5.x" -- so future
   11797 versions of 1.5 and Mark Hammond's win32all installer don't need to be 
   11798 resynchronized.
   11799 
   11800 Windows Tools
   11801 -------------
   11802 
   11803 - Several improvements to freeze specifically for Windows.
   11804 
   11805 Windows Build Procedure
   11806 -----------------------
   11807 
   11808 - The VC++ project files and the WISE installer have been moved to the
   11809 PCbuild subdirectory, so they are distributed in the same subdirectory
   11810 where they must be used.  This avoids confusion.
   11811 
   11812 - New project files for Windows 3.1 port by Jim Ahlstrom.
   11813 
   11814 - Got rid of the obsolete subdirectory PC/setup_nt/.
   11815 
   11816 - The projects now use distinct filenames for the .exe, .dll, .lib and
   11817 .pyd files built in debug mode (by appending "_d" to the base name,
   11818 before the extension).  This makes it easier to switch between the two
   11819 and get the right versions.  There's a pragma in config.h that directs
   11820 the linker to include the appropriate .lib file (so python15.lib no
   11821 longer needs to be explicit in your project).
   11822 
   11823 - The installer now installs more files (e.g. config.h).  The idea is
   11824 that you shouldn't need the source distribution if you want build your
   11825 own extensions in C or C++.
   11826 
   11827 Tools and Demos
   11828 ---------------
   11829 
   11830 - New script nm2def.py by Marc-Andre Lemburg, to construct
   11831 PC/python_nt.def automatically (some hand editing still required).
   11832 
   11833 - New tool ndiff.py: Tim Peters' text diffing tool.
   11834 
   11835 - Various and sundry improvements to the freeze script.
   11836 
   11837 - The script texi2html.py (which was part of the Doc tree but is no
   11838 longer used there) has been moved to the Tools/scripts subdirectory.
   11839 
   11840 - Some generalizations in the webchecker code.  There's now a
   11841 primnitive gui for websucker.py: wsgui.py.  (In Tools/webchecker/.)
   11842 
   11843 - The ftpmirror.py script now handles symbolic links properly, and
   11844 also files with multiple spaces in their names.
   11845 
   11846 - The 1.5.1 tabnanny.py suffers an assert error if fed a script whose
   11847 last line is both indented and lacks a newline.  This is now fixed.
   11848 
   11849 Python/C API
   11850 ------------
   11851 
   11852 - Added missing prototypes for PyEval_CallFunction() and
   11853 PyEval_CallMethod().
   11854 
   11855 - New macro PyList_SET_ITEM().
   11856 
   11857 - New macros to access object members for PyFunction, PyCFunction
   11858 objects.
   11859 
   11860 - New APIs PyImport_AppendInittab() and PyImport_ExtendInittab() to
   11861 dynamically add one or many entries to the table of built-in modules.
   11862 
   11863 - New macro Py_InitModule3(name, methods, doc) which calls
   11864 Py_InitModule4() with appropriate arguments.  (The -4 variant requires 
   11865 you to pass an obscure version number constant which is always the same.)
   11866 
   11867 - New APIs PySys_WriteStdout() and PySys_WriteStderr() to write to
   11868 sys.stdout or sys.stderr using a printf-like interface.  (Used in
   11869 _tkinter.c, for example.)
   11870 
   11871 - New APIs for conversion between Python longs and C 'long long' if
   11872 your compiler supports it.
   11873 
   11874 - PySequence_In() is now called PySequence_Contains().
   11875 (PySequence_In() is still supported for b/w compatibility; it is
   11876 declared obsolete because its argument order is confusing.)
   11877 
   11878 - PyDict_GetItem() and PyDict_GetItemString() are changed so that they
   11879 *never* raise an exception -- (even if the hash() fails, simply clear
   11880 the error).  This was necessary because there is lots of code out
   11881 there that already assumes this.
   11882 
   11883 - Changes to PySequence_Tuple() and PySequence_List() to use the
   11884 length of a sequence only as a hint -- if an IndexError happens
   11885 earlier, take that.  (Formerly, this was considered an error.)
   11886 
   11887 - Reformatted abstract.c to give it a more familiar "look" and fixed
   11888 many error checking bugs.
   11889 
   11890 - Add NULL pointer checks to all calls of a C function through a type
   11891 object and extensions (e.g. nb_add).
   11892 
   11893 - The code that initializes sys.path now calls Py_GetPythonHome()
   11894 instead of getenv("PYTHONHOME").  This, together with the new API
   11895 Py_SetPythonHome(), makes it easier for embedding applications to
   11896 change the notion of Python's "home" directory (where the libraries
   11897 etc. are sought).
   11898 
   11899 - Fixed a very old bug in the parsing of "O?" format specifiers.
   11900 
   11901 
   11902 ======================================================================
   11903 
   11904 
   11905 ========================================
   11906 ==> Release 1.5.1 (October 31, 1998) <==
   11907 ========================================
   11908 
   11909 From 1.5 to 1.5.1
   11910 =================
   11911 
   11912 General
   11913 -------
   11914 
   11915 - The documentation is now unbundled.  It has also been extensively
   11916 modified (mostly to implement a new and more uniform formatting
   11917 style).  We figure that most people will prefer to download one of the
   11918 preformatted documentation sets (HTML, PostScript or PDF) and that
   11919 only a minority have a need for the LaTeX or FrameMaker sources.  Of
   11920 course, the unbundled documentation sources still released -- just not
   11921 in the same archive file, and perhaps not on the same date.
   11922 
   11923 - All bugs noted on the errors page (and many unnoted) are fixed.  All
   11924 new bugs take their places.
   11925 
   11926 - No longer a core dump when attempting to print (or repr(), or str())
   11927 a list or dictionary that contains an instance of itself; instead, the
   11928 recursive entry is printed as [...] or {...}.  See Py_ReprEnter() and
   11929 Py_ReprLeave() below.  Comparisons of such objects still go beserk,
   11930 since this requires a different kind of fix; fortunately, this is a
   11931 less common scenario in practice.
   11932 
   11933 Syntax change
   11934 -------------
   11935 
   11936 - The raise statement can now be used without arguments, to re-raise 
   11937 a previously set exception.  This should be used after catching an
   11938 exception with an except clause only, either in the except clause or
   11939 later in the same function.
   11940 
   11941 Import and module handling
   11942 --------------------------
   11943 
   11944 - The implementation of import has changed to use a mutex (when
   11945 threading is supported).  This means that when two threads
   11946 simultaneously import the same module, the import statements are
   11947 serialized.  Recursive imports are not affected.
   11948 
   11949 - Rewrote the finalization code almost completely, to be much more
   11950 careful with the order in which modules are destroyed.  Destructors
   11951 will now generally be able to reference built-in names such as None
   11952 without trouble.
   11953 
   11954 - Case-insensitive platforms such as Mac and Windows require the case
   11955 of a module's filename to match the case of the module name as
   11956 specified in the import statement (see below).
   11957 
   11958 - The code for figuring out the default path now distinguishes between
   11959 files, modules, executable files, and directories.  When expecting a
   11960 module, we also look for the .pyc or .pyo file.
   11961 
   11962 Parser/tokenizer changes
   11963 ------------------------
   11964 
   11965 - The tokenizer can now warn you when your source code mixes tabs and
   11966 spaces for indentation in a manner that depends on how much a tab is
   11967 worth in spaces.  Use "python -t" or "python -v" to enable this
   11968 option.  Use "python -tt" to turn the warnings into errors.  (See also
   11969 tabnanny.py and tabpolice.py below.)
   11970 
   11971 - Return unsigned characters from tok_nextc(), so '\377' isn't
   11972 mistaken for an EOF character.
   11973 
   11974 - Fixed two pernicious bugs in the tokenizer that only affected AIX.
   11975 One was actually a general bug that was triggered by AIX's smaller I/O
   11976 buffer size.  The other was a bug in the AIX optimizer's loop
   11977 unrolling code; swapping two statements made the problem go away.
   11978 
   11979 Tools, demos and miscellaneous files
   11980 ------------------------------------
   11981 
   11982 - There's a new version of Misc/python-mode.el (the Emacs mode for
   11983 Python) which is much smarter about guessing the indentation style
   11984 used in a particular file.  Lots of other cool features too!
   11985 
   11986 - There are two new tools in Tools/scripts: tabnanny.py and
   11987 tabpolice.py, implementing two different ways of checking whether a
   11988 file uses indentation in a way that is sensitive to the interpretation
   11989 of a tab.  The preferred module is tabnanny.py (by Tim Peters).
   11990 
   11991 - Some new demo programs:
   11992 
   11993 	Demo/tkinter/guido/paint.py -- Dave Mitchell
   11994 	Demo/sockets/unixserver.py -- Piet van Oostrum
   11995 	
   11996 
   11997 - Much better freeze support.  The freeze script can now freeze
   11998 hierarchical module names (with a corresponding change to import.c),
   11999 and has a few extra options (e.g. to suppress freezing specific
   12000 modules).  It also does much more on Windows NT.
   12001 
   12002 - Version 1.0 of the faq wizard is included (only very small changes
   12003 since version 0.9.0).
   12004 
   12005 - New feature for the ftpmirror script: when removing local files
   12006 (i.e., only when -r is used), do a recursive delete.
   12007 
   12008 Configuring and building Python
   12009 -------------------------------
   12010 
   12011 - Get rid of the check for -linet -- recent Sequent Dynix systems don't
   12012 need this any more and apparently it screws up their configuration.
   12013 
   12014 - Some changes because gcc on SGI doesn't support '-all'.
   12015 
   12016 - Changed the build rules to use $(LIBRARY) instead of
   12017   -L.. -lpython$(VERSION)
   12018 since the latter trips up the SunOS 4.1.x linker (sigh).
   12019 
   12020 - Fix the bug where the '# dgux is broken' comment in the Makefile
   12021 tripped over Make on some platforms.
   12022 
   12023 - Changes for AIX: install the python.exp file; properly use
   12024 $(srcdir); the makexp_aix script now removes C++ entries of the form
   12025 Class::method.
   12026 
   12027 - Deleted some Makefile targets only used by the (long obsolete)
   12028 gMakefile hacks.
   12029 
   12030 Extension modules
   12031 -----------------
   12032 
   12033 - Performance and threading improvements to the socket and bsddb
   12034 modules, by Christopher Lindblad of Infoseek.
   12035 
   12036 - Added operator.__not__ and operator.not_.
   12037 
   12038 - In the thread module, when a thread exits due to an unhandled
   12039 exception, don't store the exception information in sys.last_*; it
   12040 prevents proper calling of destructors of local variables.
   12041 
   12042 - Fixed a number of small bugs in the cPickle module.
   12043 
   12044 - Changed find() and rfind() in the strop module so that
   12045 find("x","",2) returns -1, matching the implementation in string.py.
   12046 
   12047 - In the time module, be more careful with the result of ctime(), and
   12048 test for HAVE_MKTIME before usinmg mktime().
   12049 
   12050 - Doc strings contributed by Mitch Chapman to the termios, pwd, gdbm
   12051 modules.
   12052 
   12053 - Added the LOG_SYSLOG constant to the syslog module, if defined.
   12054 
   12055 Standard library modules
   12056 ------------------------
   12057 
   12058 - All standard library modules have been converted to an indentation
   12059 style using either only tabs or only spaces -- never a mixture -- if
   12060 they weren't already consistent according to tabnanny.  This means
   12061 that the new -t option (see above) won't complain about standard
   12062 library modules.
   12063 
   12064 - New standard library modules:
   12065 
   12066 	threading -- GvR and the thread-sig
   12067 		Java style thread objects -- USE THIS!!!
   12068 
   12069 	getpass -- Piers Lauder
   12070 		simple utilities to prompt for a password and to
   12071 		retrieve the current username
   12072 
   12073 	imaplib -- Piers Lauder
   12074 		interface for the IMAP4 protocol
   12075 
   12076 	poplib -- David Ascher, Piers Lauder
   12077 		interface for the POP3 protocol
   12078 
   12079 	smtplib -- Dragon De Monsyne
   12080 		interface for the SMTP protocol
   12081 
   12082 - Some obsolete modules moved to a separate directory (Lib/lib-old)
   12083 which is *not* in the default module search path:
   12084 
   12085 	Para
   12086 	addpack
   12087 	codehack
   12088 	fmt
   12089 	lockfile
   12090 	newdir
   12091 	ni
   12092 	rand
   12093 	tb
   12094 
   12095 - New version of the PCRE code (Perl Compatible Regular Expressions --
   12096 the re module and the supporting pcre extension) by Andrew Kuchling.
   12097 Incompatible new feature in re.sub(): the handling of escapes in the
   12098 replacement string has changed.
   12099 
   12100 - Interface change in the copy module: a __deepcopy__ method is now
   12101 called with the memo dictionary as an argument.
   12102 
   12103 - Feature change in the tokenize module: differentiate between NEWLINE
   12104 token (an official newline) and NL token (a newline that the grammar
   12105 ignores).
   12106 
   12107 - Several bugfixes to the urllib module.  It is now truly thread-safe,
   12108 and several bugs and a portability problem have been fixed.  New
   12109 features, all due to Sjoerd Mullender: When creating a temporary file,
   12110 it gives it an appropriate suffix.  Support the "data:" URL scheme.
   12111 The open() method uses the tempcache.
   12112 
   12113 - New version of the xmllib module (this time with a test suite!) by
   12114 Sjoerd Mullender.
   12115 
   12116 - Added debugging code to the telnetlib module, to be able to trace
   12117 the actual traffic.
   12118 
   12119 - In the rfc822 module, added support for deleting a header (still no
   12120 support for adding headers, though).  Also fixed a bug where an
   12121 illegal address would cause a crash in getrouteaddr(), fixed a
   12122 sign reversal in mktime_tz(), and use the local timezone by default
   12123 (the latter two due to Bill van Melle).
   12124 
   12125 - The normpath() function in the dospath and ntpath modules no longer
   12126 does case normalization -- for that, use the separate function
   12127 normcase() (which always existed); normcase() has been sped up and
   12128 fixed (it was the cause of a crash in Mark Hammond's installer in
   12129 certain locales).
   12130 
   12131 - New command supported by the ftplib module: rmd(); also fixed some
   12132 minor bugs.
   12133 
   12134 - The profile module now uses a different timer function by default -- 
   12135 time.clock() is generally better than os.times().  This makes it work
   12136 better on Windows NT, too.
   12137 
   12138 - The tempfile module now recovers when os.getcwd() raises an
   12139 exception.
   12140 
   12141 - Fixed some bugs in the random module; gauss() was subtly wrong, and
   12142 vonmisesvariate() should return a full circle.  Courtesy Mike Miller,
   12143 Lambert Meertens (gauss()), and Magnus Kessler (vonmisesvariate()).
   12144 
   12145 - Better default seed in the whrandom module, courtesy Andrew Kuchling.
   12146 
   12147 - Fix slow close() in shelve module.
   12148 
   12149 - The Unix mailbox class in the mailbox module is now more robust when
   12150 a line begins with the string "From " but is definitely not the start
   12151 of a new message.  The pattern used can be changed by overriding a
   12152 method or class variable.
   12153 
   12154 - Added a rmtree() function to the copy module.
   12155 
   12156 - Fixed several typos in the pickle module.  Also fixed problems when
   12157 unpickling in restricted execution environments.
   12158 
   12159 - Added docstrings and fixed a typo in the py_compile and compileall
   12160 modules.  At Mark Hammond's repeated request, py_compile now append a
   12161 newline to the source if it needs one.  Both modules support an extra
   12162 parameter to specify the purported source filename (to be used in
   12163 error messages).
   12164 
   12165 - Some performance tweaks by Jeremy Hylton to the gzip module.
   12166 
   12167 - Fixed a bug in the merge order of dictionaries in the ConfigParser
   12168 module.  Courtesy Barry Warsaw.
   12169 
   12170 - In the multifile module, support the optional second parameter to
   12171 seek() when possible.
   12172 
   12173 - Several fixes to the gopherlib module by Lars Marius Garshol.  Also, 
   12174 urlparse now correctly handles Gopher URLs with query strings.
   12175 
   12176 - Fixed a tiny bug in format_exception() in the traceback module.
   12177 Also rewrite tb_lineno() to be compatible with JPython (and not
   12178 disturb the current exception!); by Jim Hugunin.
   12179 
   12180 - The httplib module is more robust when servers send a short response 
   12181 -- courtesy Tim O'Malley.
   12182 
   12183 Tkinter and friends
   12184 -------------------
   12185 
   12186 - Various typos and bugs fixed.
   12187 
   12188 - New module Tkdnd implements a drag-and-drop protocol (within one
   12189 application only).
   12190 
   12191 - The event_*() widget methods have been restructured slightly -- they
   12192 no longer use the default root.
   12193 
   12194 - The interfaces for the bind*() and unbind() widget methods have been
   12195 redesigned; the bind*() methods now return the name of the Tcl command 
   12196 created for the callback, and this can be passed as an optional
   12197 argument to unbind() in order to delete the command (normally, such
   12198 commands are automatically unbound when the widget is destroyed, but
   12199 for some applications this isn't enough).
   12200 
   12201 - Variable objects now have trace methods to interface to Tcl's
   12202 variable tracing facilities.
   12203 
   12204 - Image objects now have an optional keyword argument, 'master', to
   12205 specify a widget (tree) to which they belong.  The image_names() and
   12206 image_types() calls are now also widget methods.
   12207 
   12208 - There's a new global call, Tkinter.NoDefaultRoot(), which disables
   12209 all use of the default root by the Tkinter library.  This is useful to
   12210 debug applications that are in the process of being converted from
   12211 relying on the default root to explicit specification of the root
   12212 widget.
   12213 
   12214 - The 'exit' command is deleted from the Tcl interpreter, since it
   12215 provided a loophole by which one could (accidentally) exit the Python
   12216 interpreter without invoking any cleanup code.
   12217 
   12218 - Tcl_Finalize() is now registered as a Python low-level exit handle,
   12219 so Tcl will be finalized when Python exits.
   12220 
   12221 The Python/C API
   12222 ----------------
   12223 
   12224 - New function PyThreadState_GetDict() returns a per-thread dictionary
   12225 intended for storing thread-local global variables.
   12226 
   12227 - New functions Py_ReprEnter() and Py_ReprLeave() use the per-thread
   12228 dictionary to allow recursive container types to detect recursion in
   12229 their repr(), str() and print implementations.
   12230 
   12231 - New function PyObject_Not(x) calculates (not x) according to Python's 
   12232 standard rules (basically, it negates the outcome PyObject_IsTrue(x).
   12233 
   12234 - New function _PyModule_Clear(), which clears a module's dictionary
   12235 carefully without removing the __builtins__ entry.  This is implied
   12236 when a module object is deallocated (this used to clear the dictionary
   12237 completely).
   12238 
   12239 - New function PyImport_ExecCodeModuleEx(), which extends
   12240 PyImport_ExecCodeModule() by adding an extra parameter to pass it the
   12241 true file.
   12242 
   12243 - New functions Py_GetPythonHome() and Py_SetPythonHome(), intended to
   12244 allow embedded applications to force a different value for PYTHONHOME.
   12245 
   12246 - New global flag Py_FrozenFlag is set when this is a "frozen" Python
   12247 binary; it suppresses warnings about not being able to find the
   12248 standard library directories.
   12249 
   12250 - New global flag Py_TabcheckFlag is incremented by the -t option and
   12251 causes the tokenizer to issue warnings or errors about inconsistent
   12252 mixing of tabs and spaces for indentation.
   12253 
   12254 Miscellaneous minor changes and bug fixes
   12255 -----------------------------------------
   12256 
   12257 - Improved the error message when an attribute of an attribute-less
   12258 object is requested -- include the name of the attribute and the type
   12259 of the object in the message.
   12260 
   12261 - Sped up int(), long(), float() a bit.
   12262 
   12263 - Fixed a bug in list.sort() that would occasionally dump core.
   12264 
   12265 - Fixed a bug in PyNumber_Power() that caused numeric arrays to fail
   12266 when taken tothe real power.
   12267 
   12268 - Fixed a number of bugs in the file reading code, at least one of
   12269 which could cause a core dump on NT, and one of which would
   12270 occasionally cause file.read() to return less than the full contents
   12271 of the file.
   12272 
   12273 - Performance hack by Vladimir Marangozov for stack frame creation.
   12274 
   12275 - Make sure setvbuf() isn't used unless HAVE_SETVBUF is defined.
   12276 
   12277 Windows 95/NT
   12278 -------------
   12279 
   12280 - The .lib files are now part of the distribution; they are collected
   12281 in the subdirectory "libs" of the installation directory.
   12282 
   12283 - The extension modules (.pyd files) are now collected in a separate
   12284 subdirectory of the installation directory named "DLLs".
   12285 
   12286 - The case of a module's filename must now match the case of the
   12287 module name as specified in the import statement.  This is an
   12288 experimental feature -- if it turns out to break in too many
   12289 situations, it will be removed (or disabled by default) in the future.
   12290 It can be disabled on a per-case basis by setting the environment
   12291 variable PYTHONCASEOK (to any value).
   12292 
   12293 
   12294 ======================================================================
   12295 
   12296 
   12297 =====================================
   12298 ==> Release 1.5 (January 3, 1998) <==
   12299 =====================================
   12300 
   12301 
   12302 From 1.5b2 to 1.5
   12303 =================
   12304 
   12305 - Newly documentated module: BaseHTTPServer.py, thanks to Greg Stein.
   12306 
   12307 - Added doc strings to string.py, stropmodule.c, structmodule.c,
   12308 thanks to Charles Waldman.
   12309 
   12310 - Many nits fixed in the manuals, thanks to Fred Drake and many others
   12311 (especially Rob Hooft and Andrew Kuchling).  The HTML version now uses
   12312 HTML markup instead of inline GIF images for tables; only two images
   12313 are left (for obsure bits of math).  The index of the HTML version has
   12314 also been much improved.  Finally, it is once again possible to
   12315 generate an Emacs info file from the library manual (but I don't
   12316 commit to supporting this in future versions).
   12317 
   12318 - New module: telnetlib.py (a simple telnet client library).
   12319 
   12320 - New tool: Tools/versioncheck/, by Jack Jansen.
   12321 
   12322 - Ported zlibmodule.c and bsddbmodule.c to NT; The project file for MS
   12323 DevStudio 5.0 now includes new subprojects to build the zlib and bsddb
   12324 extension modules.
   12325 
   12326 - Many small changes again to Tkinter.py -- mostly bugfixes and adding
   12327 missing routines.  Thanks to Greg McFarlane for reporting a bunch of
   12328 problems and proofreading my fixes.
   12329 
   12330 - The re module and its documentation are up to date with the latest
   12331 version released to the string-sig (Dec. 22).
   12332 
   12333 - Stop test_grp.py from failing when the /etc/group file is empty
   12334 (yes, this happens!).
   12335 
   12336 - Fix bug in integer conversion (mystrtoul.c) that caused
   12337 4294967296==0 to be true!
   12338 
   12339 - The VC++ 4.2 project file should be complete again.
   12340 
   12341 - In tempfile.py, use a better template on NT, and add a new optional
   12342 argument "suffix" with default "" to specify a specific extension for
   12343 the temporary filename (needed sometimes on NT but perhaps also handy
   12344 elsewhere).
   12345 
   12346 - Fixed some bugs in the FAQ wizard, and converted it to use re
   12347 instead of regex.
   12348 
   12349 - Fixed a mysteriously undetected error in dlmodule.c (it was using a
   12350 totally bogus routine name to raise an exception).
   12351 
   12352 - Fixed bug in import.c which wasn't using the new "dos-8x3" name yet.
   12353 
   12354 - Hopefully harmless changes to the build process to support shared
   12355 libraries on DG/UX.  This adds a target to create
   12356 libpython$(VERSION).so; however this target is *only* for DG/UX.
   12357 
   12358 - Fixed a bug in the new format string error checking in getargs.c.
   12359 
   12360 - A simple fix for infinite recursion when printing __builtins__:
   12361 reset '_' to None before printing and set it to the printed variable
   12362 *after* printing (and only when printing is successful).
   12363 
   12364 - Fixed lib-tk/SimpleDialog.py to keep the dialog visible even if the
   12365 parent window is not (Skip Montanaro).
   12366 
   12367 - Fixed the two most annoying problems with ftp URLs in
   12368 urllib.urlopen(); an empty file now correctly raises an error, and it
   12369 is no longer required to explicitly close the returned "file" object
   12370 before opening another ftp URL to the same host and directory.
   12371 
   12372 
   12373 ======================================================================
   12374 
   12375 
   12376 From 1.5b1 to 1.5b2
   12377 ===================
   12378 
   12379 - Fixed a bug in cPickle.c that caused it to crash right away because
   12380 the version string had a different format.
   12381 
   12382 - Changes in pickle.py and cPickle.c: when unpickling an instance of a
   12383 class that doesn't define the __getinitargs__() method, the __init__()
   12384 constructor is no longer called.  This makes a much larger group of
   12385 classes picklable by default, but may occasionally change semantics.
   12386 To force calling __init__() on unpickling, define a __getinitargs__()
   12387 method.  Other changes too, in particular cPickle now handles classes
   12388 defined in packages correctly.  The same change applies to copying
   12389 instances with copy.py.  The cPickle.c changes and some pickle.py
   12390 changes are courtesy Jim Fulton.
   12391 
   12392 - Locale support in he "re" (Perl regular expressions) module.  Use 
   12393 the flag re.L (or re.LOCALE) to enable locale-specific matching
   12394 rules for \w and \b.  The in-line syntax for this flag is (?L).
   12395 
   12396 - The built-in function isinstance(x, y) now also succeeds when y is
   12397 a type object and type(x) is y.
   12398 
   12399 - repr() and str() of class and instance objects now reflect the
   12400 package/module in which the class is defined.
   12401 
   12402 - Module "ni" has been removed.  (If you really need it, it's been
   12403 renamed to "ni1".  Let me know if this causes any problems for you.
   12404 Package authors are encouraged to write __init__.py files that
   12405 support both ni and 1.5 package support, so the same version can be
   12406 used with Python 1.4 as well as 1.5.)
   12407 
   12408 - The thread module is now automatically included when threads are
   12409 configured.  (You must remove it from your existing Setup file,
   12410 since it is now in its own Setup.thread file.)
   12411 
   12412 - New command line option "-x" to skip the first line of the script;
   12413 handy to make executable scripts on non-Unix platforms.
   12414 
   12415 - In importdl.c, add the RTLD_GLOBAL to the dlopen() flags.  I
   12416 haven't checked how this affects things, but it should make symbols
   12417 in one shared library available to the next one.
   12418 
   12419 - The Windows installer now installs in the "Program Files" folder on
   12420 the proper volume by default.
   12421 
   12422 - The Windows configuration adds a new main program, "pythonw", and
   12423 registers a new extension, ".pyw" that invokes this.  This is a
   12424 pstandard Python interpreter that does not pop up a console window;
   12425 handy for pure Tkinter applications.  All output to the original
   12426 stdout and stderr is lost; reading from the original stdin yields
   12427 EOF.  Also, both python.exe and pythonw.exe now have a pretty icon
   12428 (a green snake in a box, courtesy Mark Hammond).
   12429 
   12430 - Lots of improvements to emacs-mode.el again.  See Barry's web page:
   12431 http://www.python.org/ftp/emacs/pmdetails.html.
   12432 
   12433 - Lots of improvements and additions to the library reference manual;
   12434 many by Fred Drake.
   12435 
   12436 - Doc strings for the following modules: rfc822.py, posixpath.py,
   12437 ntpath.py, httplib.py.  Thanks to Mitch Chapman and Charles Waldman.
   12438 
   12439 - Some more regression testing.
   12440 
   12441 - An optional 4th (maxsplit) argument to strop.replace().
   12442 
   12443 - Fixed handling of maxsplit in string.splitfields().
   12444 
   12445 - Tweaked os.environ so it can be pickled and copied.
   12446 
   12447 - The portability problems caused by indented preprocessor commands
   12448 and C++ style comments should be gone now.
   12449 
   12450 - In random.py, added Pareto and Weibull distributions.
   12451 
   12452 - The crypt module is now disabled in Modules/Setup.in by default; it
   12453 is rarely needed and causes errors on some systems where users often
   12454 don't know how to deal with those.
   12455 
   12456 - Some improvements to the _tkinter build line suggested by Case Roole.
   12457 
   12458 - A full suite of platform specific files for NetBSD 1.x, submitted by 
   12459 Anders Andersen.
   12460 
   12461 - New Solaris specific header STROPTS.py.
   12462 
   12463 - Moved a confusing occurrence of *shared* from the comments in
   12464 Modules/Setup.in (people would enable this one instead of the real
   12465 one, and get disappointing results).
   12466 
   12467 - Changed the default mode for directories to be group-writable when
   12468 the installation process creates them.
   12469 
   12470 - Check for pthread support in "-l_r" for FreeBSD/NetBSD, and support
   12471 shared libraries for both.
   12472 
   12473 - Support FreeBSD and NetBSD in posixfile.py.
   12474 
   12475 - Support for the "event" command, new in Tk 4.2.  By Case Roole.
   12476 
   12477 - Add Tix_SafeInit() support to tkappinit.c.
   12478 
   12479 - Various bugs fixed in "re.py" and "pcre.c".
   12480 
   12481 - Fixed a bug (broken use of the syntax table) in the old "regexpr.c".
   12482 
   12483 - In frozenmain.c, stdin is made unbuffered too when PYTHONUNBUFFERED
   12484 is set.
   12485 
   12486 - Provide default blocksize for retrbinary in ftplib.py (Skip
   12487 Montanaro).
   12488 
   12489 - In NT, pick the username up from different places in user.py (Jeff
   12490 Bauer).
   12491 
   12492 - Patch to urlparse.urljoin() for ".." and "..#1", Marc Lemburg.
   12493 
   12494 - Many small improvements to Jeff Rush' OS/2 support.
   12495 
   12496 - ospath.py is gone; it's been obsolete for so many years now...
   12497 
   12498 - The reference manual is now set up to prepare better HTML (still
   12499 using webmaker, alas).
   12500 
   12501 - Add special handling to /Tools/freeze for Python modules that are
   12502 imported implicitly by the Python runtime: 'site' and 'exceptions'.
   12503 
   12504 - Tools/faqwiz 0.8.3 -- add an option to suppress URL processing
   12505 inside <PRE>, by "Scott".
   12506 
   12507 - Added ConfigParser.py, a generic parser for sectioned configuration
   12508 files.
   12509 
   12510 - In _localemodule.c, LC_MESSAGES is not always defined; put it
   12511 between #ifdefs.
   12512 
   12513 - Typo in resource.c: RUSAGE_CHILDERN -> RUSAGE_CHILDREN.
   12514 
   12515 - Demo/scripts/newslist.py: Fix the way the version number is gotten
   12516 out of the RCS revision.
   12517 
   12518 - PyArg_Parse[Tuple] now explicitly check for bad characters at the
   12519 end of the format string.
   12520 
   12521 - Revamped PC/example_nt to support VC++ 5.x.
   12522 
   12523 - <listobject>.sort() now uses a modified quicksort by Raymund Galvin,
   12524 after studying the GNU libg++ quicksort.  This should be much faster
   12525 if there are lots of duplicates, and otherwise at least as good.
   12526 
   12527 - Added "uue" as an alias for "uuencode" to mimetools.py.  (Hm, the
   12528 uudecode bug where it complaints about trailing garbage is still there 
   12529 :-( ).
   12530 
   12531 - pickle.py requires integers in text mode to be in decimal notation
   12532 (it used to accept octal and hex, even though it would only generate
   12533 decimal numbers).
   12534 
   12535 - In string.atof(), don't fail when the "re" module is unavailable.
   12536 Plug the ensuing security leak by supplying an empty __builtins__
   12537 directory to eval().
   12538 
   12539 - A bunch of small fixes and improvements to Tkinter.py.
   12540 
   12541 - Fixed a buffer overrun in PC/getpathp.c.
   12542 
   12543 
   12544 ======================================================================
   12545 
   12546 
   12547 From 1.5a4 to 1.5b1
   12548 ===================
   12549 
   12550 - The Windows NT/95 installer now includes full HTML of all manuals.
   12551 It also has a checkbox that lets you decide whether to install the
   12552 interpreter and library.  The WISE installer script for the installer
   12553 is included in the source tree as PC/python15.wse, and so are the
   12554 icons used for Python files.  The config.c file for the Windows build
   12555 is now complete with the pcre module.
   12556 
   12557 - sys.ps1 and sys.ps2 can now arbitrary objects; their str() is
   12558 evaluated for the prompt.
   12559 
   12560 - The reference manual is brought up to date (more or less -- it still
   12561 needs work, e.g. in the area of package import).
   12562 
   12563 - The icons used by latex2html are now included in the Doc
   12564 subdirectory (mostly so that tarring up the HTML files can be fully
   12565 automated).  A simple index.html is also added to Doc (it only works
   12566 after you have successfully run latex2html).
   12567 
   12568 - For all you would-be proselytizers out there: a new version of
   12569 Misc/BLURB describes Python more concisely, and Misc/comparisons
   12570 compares Python to several other languages.  Misc/BLURB.WINDOWS
   12571 contains a blurb specifically aimed at Windows programmers (by Mark
   12572 Hammond).
   12573 
   12574 - A new version of the Python mode for Emacs is included as
   12575 Misc/python-mode.el.  There are too many new features to list here.
   12576 See http://www.python.org/ftp/emacs/pmdetails.html for more info.
   12577 
   12578 - New module fileinput makes iterating over the lines of a list of
   12579 files easier.  (This still needs some more thinking to make it more
   12580 extensible.)
   12581 
   12582 - There's full OS/2 support, courtesy Jeff Rush.  To build the OS/2
   12583 version, see PC/readme.txt and PC/os2vacpp.  This is for IBM's Visual
   12584 Age C++ compiler.  I expect that Jeff will also provide a binary
   12585 release for this platform.
   12586 
   12587 - On Linux, the configure script now uses '-Xlinker -export-dynamic'
   12588 instead of '-rdynamic' to link the main program so that it exports its
   12589 symbols to shared libraries it loads dynamically.  I hope this doesn't
   12590 break on older Linux versions; it is needed for mklinux and appears to
   12591 work on Linux 2.0.30.
   12592 
   12593 - Some Tkinter resstructuring: the geometry methods that apply to a
   12594 master are now properly usable on toplevel master widgets.  There's a
   12595 new (internal) widget class, BaseWidget.  New, longer "official" names
   12596 for the geometry manager methods have been added,
   12597 e.g. "grid_columnconfigure()" instead of "columnconfigure()".  The old
   12598 shorter names still work, and where there's ambiguity, pack wins over
   12599 place wins over grid.  Also, the bind_class method now returns its
   12600 value.
   12601 
   12602 - New, RFC-822 conformant parsing of email addresses and address lists
   12603 in the rfc822 module, courtesy Ben Escoto.
   12604 
   12605 - New, revamped tkappinit.c with support for popular packages (PIL,
   12606 TIX, BLT, TOGL).  For the last three, you need to execute the Tcl
   12607 command "load {} Tix" (or Blt, or Togl) to gain access to them.
   12608 The Modules/Setup line for the _tkinter module has been rewritten
   12609 using the cool line-breaking feature of most Bourne shells.
   12610 
   12611 - New socket method connect_ex() returns the error code from connect()
   12612 instead of raising an exception on errors; this makes the logic
   12613 required for asynchronous connects simpler and more efficient.
   12614 
   12615 - New "locale" module with (still experimental) interface to the
   12616 standard C library locale interface, courtesy Martin von Loewis.  This
   12617 does not repeat my mistake in 1.5a4 of always calling
   12618 setlocale(LC_ALL, "").  In fact, we've pretty much decided that
   12619 Python's standard numerical formatting operations should always use
   12620 the conventions for the C locale; the locale module contains utility
   12621 functions to format numbers according to the user specified locale.
   12622 (All this is accomplished by an explicit call to setlocale(LC_NUMERIC,
   12623 "C") after locale-changing calls.)  See the library manual. (Alas, the
   12624 promised changes to the "re" module for locale support have not been
   12625 materialized yet.  If you care, volunteer!)
   12626 
   12627 - Memory leak plugged in Py_BuildValue when building a dictionary.
   12628 
   12629 - Shared modules can now live inside packages (hierarchical module
   12630 namespaces).  No changes to the shared module itself are needed.
   12631 
   12632 - Improved policy for __builtins__: this is a module in __main__ and a
   12633 dictionary everywhere else.
   12634 
   12635 - Python no longer catches SIGHUP and SIGTERM by default.  This was
   12636 impossible to get right in the light of thread contexts.  If you want
   12637 your program to clean up when a signal happens, use the signal module
   12638 to set up your own signal handler.
   12639 
   12640 - New Python/C API PyNumber_CoerceEx() does not return an exception
   12641 when no coercion is possible.  This is used to fix a problem where
   12642 comparing incompatible numbers for equality would raise an exception
   12643 rather than return false as in Python 1.4 -- it once again will return
   12644 false.
   12645 
   12646 - The errno module is changed again -- the table of error messages
   12647 (errorstr) is removed.  Instead, you can use os.strerror().  This
   12648 removes redundance and a potential locale dependency.
   12649 
   12650 - New module xmllib, to parse XML files.  By Sjoerd Mullender.
   12651 
   12652 - New C API PyOS_AfterFork() is called after fork() in posixmodule.c.
   12653 It resets the signal module's notion of what the current process ID
   12654 and thread are, so that signal handlers will work after (and across)
   12655 calls to os.fork().
   12656 
   12657 - Fixed most occurrences of fatal errors due to missing thread state.
   12658 
   12659 - For vgrind (a flexible source pretty printer) fans, there's a simple
   12660 Python definition in Misc/vgrindefs, courtesy Neale Pickett.
   12661 
   12662 - Fixed memory leak in exec statement.
   12663 
   12664 - The test.pystone module has a new function, pystones(loops=LOOPS),
   12665 which returns a (benchtime, stones) tuple.  The main() function now
   12666 calls this and prints the report.
   12667 
   12668 - Package directories now *require* the presence of an __init__.py (or
   12669 __init__.pyc) file before they are considered as packages.  This is
   12670 done to prevent accidental subdirectories with common names from
   12671 overriding modules with the same name.
   12672 
   12673 - Fixed some strange exceptions in __del__ methods in library modules
   12674 (e.g. urllib).  This happens because the built-in names are already
   12675 deleted by the time __del__ is called.  The solution (a hack, but it
   12676 works) is to set some instance variables to 0 instead of None.
   12677 
   12678 - The table of built-in module initializers is replaced by a pointer
   12679 variable.  This makes it possible to switch to a different table at
   12680 run time, e.g. when a collection of modules is loaded from a shared
   12681 library.  (No example code of how to do this is given, but it is
   12682 possible.)  The table is still there of course, its name prefixed with
   12683 an underscore and used to initialize the pointer.
   12684 
   12685 - The warning about a thread still having a frame now only happens in
   12686 verbose mode.
   12687 
   12688 - Change the signal finalization so that it also resets the signal
   12689 handlers.  After this has been called, our signal handlers are no
   12690 longer active!
   12691 
   12692 - New version of tokenize.py (by Ka-Ping Yee) recognizes raw string
   12693 literals.  There's now also a test fort this module.
   12694 
   12695 - The copy module now also uses __dict__.update(state) instead of
   12696 going through individual attribute assignments, for class instances
   12697 without a __setstate__ method.
   12698 
   12699 - New module reconvert translates old-style (regex module) regular
   12700 expressions to new-style (re module, Perl-style) regular expressions.
   12701 
   12702 - Most modules that used to use the regex module now use the re
   12703 module.  The grep module has a new pgrep() function which uses
   12704 Perl-style regular expressions.
   12705 
   12706 - The (very old, backwards compatibility) regexp.py module has been
   12707 deleted.
   12708 
   12709 - Restricted execution (rexec): added the pcre module (support for the
   12710 re module) to the list of trusted extension modules.
   12711 
   12712 - New version of Jim Fulton's CObject object type, adds
   12713 PyCObject_FromVoidPtrAndDesc() and PyCObject_GetDesc() APIs.
   12714 
   12715 - Some patches to Lee Busby's fpectl mods that accidentally didn't
   12716 make it into 1.5a4.
   12717 
   12718 - In the string module, add an optional 4th argument to count(),
   12719 matching find() etc.
   12720 
   12721 - Patch for the nntplib module by Charles Waldman to add optional user
   12722 and password arguments to NNTP.__init__(), for nntp servers that need
   12723 them.
   12724 
   12725 - The str() function for class objects now returns
   12726 "modulename.classname" instead of returning the same as repr().
   12727 
   12728 - The parsing of \xXX escapes no longer relies on sscanf().
   12729 
   12730 - The "sharedmodules" subdirectory of the installation is renamed to
   12731 "lib-dynload".  (You may have to edit your Modules/Setup file to fix
   12732 this in an existing installation!)
   12733 
   12734 - Fixed Don Beaudry's mess-up with the OPT test in the configure
   12735 script.  Certain SGI platforms will still issue a warning for each
   12736 compile; there's not much I can do about this since the compiler's
   12737 exit status doesn't indicate that I was using an obsolete option.
   12738 
   12739 - Fixed Barry's mess-up with {}.get(), and added test cases for it.
   12740 
   12741 - Shared libraries didn't quite work under AIX because of the change
   12742 in status of the GNU readline interface.  Fix due to by Vladimir
   12743 Marangozov.
   12744 
   12745 
   12746 ======================================================================
   12747 
   12748 
   12749 From 1.5a3 to 1.5a4
   12750 ===================
   12751 
   12752 - faqwiz.py: version 0.8; Recognize https:// as URL; <html>...</html>
   12753 feature; better install instructions; removed faqmain.py (which was an
   12754 older version).
   12755 
   12756 - nntplib.py: Fixed some bugs reported by Lars Wirzenius (to Debian)
   12757 about the treatment of lines starting with '.'.  Added a minimal test
   12758 function.
   12759 
   12760 - struct module: ignore most whitespace in format strings.
   12761 
   12762 - urllib.py: close the socket and temp file in URLopener.retrieve() so
   12763 that multiple retrievals using the same connection work.
   12764 
   12765 - All standard exceptions are now classes by default; use -X to make
   12766 them strings (for backward compatibility only).
   12767 
   12768 - There's a new standard exception hierarchy, defined in the standard
   12769 library module exceptions.py (which you never need to import
   12770 explicitly).  See
   12771 http://grail.cnri.reston.va.us/python/essays/stdexceptions.html for
   12772 more info.
   12773 
   12774 - Three new C API functions:
   12775 
   12776   - int PyErr_GivenExceptionMatches(obj1, obj2)
   12777 
   12778     Returns 1 if obj1 and obj2 are the same object, or if obj1 is an
   12779     instance of type obj2, or of a class derived from obj2
   12780 
   12781   - int PyErr_ExceptionMatches(obj)
   12782 
   12783     Higher level wrapper around PyErr_GivenExceptionMatches() which uses
   12784     PyErr_Occurred() as obj1.  This will be the more commonly called
   12785     function.
   12786 
   12787   - void PyErr_NormalizeException(typeptr, valptr, tbptr)
   12788 
   12789     Normalizes exceptions, and places the normalized values in the
   12790     arguments.  If type is not a class, this does nothing.  If type is a
   12791     class, then it makes sure that value is an instance of the class by:
   12792 
   12793     1. if instance is of the type, or a class derived from type, it does
   12794        nothing.
   12795 
   12796     2. otherwise it instantiates the class, using the value as an
   12797        argument.  If value is None, it uses an empty arg tuple, and if
   12798        the value is a tuple, it uses just that.
   12799 
   12800 - Another new C API function: PyErr_NewException() creates a new
   12801 exception class derived from Exception; when -X is given, it creates a
   12802 new string exception.
   12803 
   12804 - core interpreter: remove the distinction between tuple and list
   12805 unpacking; allow an arbitrary sequence on the right hand side of any
   12806 unpack instruction.  (UNPACK_LIST and UNPACK_TUPLE now do the same
   12807 thing, which should really be called UNPACK_SEQUENCE.)
   12808 
   12809 - classes: Allow assignments to an instance's __dict__ or __class__,
   12810 so you can change ivars (including shared ivars -- shock horror) and
   12811 change classes dynamically.  Also make the check on read-only
   12812 attributes of classes less draconic -- only the specials names
   12813 __dict__, __bases__, __name__ and __{get,set,del}attr__ can't be
   12814 assigned.
   12815 
   12816 - Two new built-in functions: issubclass() and isinstance().  Both
   12817 take classes as their second arguments.  The former takes a class as
   12818 the first argument and returns true iff first is second, or is a
   12819 subclass of second.  The latter takes any object as the first argument
   12820 and returns true iff first is an instance of the second, or any
   12821 subclass of second.
   12822 
   12823 - configure: Added configuration tests for presence of alarm(),
   12824 pause(), and getpwent().
   12825 
   12826 - Doc/Makefile: changed latex2html targets.
   12827 
   12828 - classes: Reverse the search order for the Don Beaudry hook so that
   12829 the first class with an applicable hook wins.  Makes more sense.
   12830 
   12831 - Changed the checks made in Py_Initialize() and Py_Finalize().  It is
   12832 now legal to call these more than once.  The first call to
   12833 Py_Initialize() initializes, the first call to Py_Finalize()
   12834 finalizes.  There's also a new API, Py_IsInitialized() which checks
   12835 whether we are already initialized (in case you want to leave things
   12836 as they were).
   12837 
   12838 - Completely disable the declarations for malloc(), realloc() and
   12839 free().  Any 90's C compiler has these in header files, and the tests
   12840 to decide whether to suppress the declarations kept failing on some
   12841 platforms.
   12842 
   12843 - *Before* (instead of after) signalmodule.o is added, remove both
   12844 intrcheck.o and sigcheck.o.  This should get rid of warnings in ar or
   12845 ld on various systems.
   12846 
   12847 - Added reop to PC/config.c
   12848 
   12849 - configure: Decided to use -Aa -D_HPUX_SOURCE on HP-UX platforms.
   12850 Removed outdated HP-UX comments from README.  Added Cray T3E comments.
   12851 
   12852 - Various renames of statically defined functions that had name
   12853 conflicts on some systems, e.g. strndup (GNU libc), join (Cray),
   12854 roundup (sys/types.h).
   12855 
   12856 - urllib.py: Interpret three slashes in file: URL as local file (for
   12857 Netscape on Windows/Mac).
   12858 
   12859 - copy.py: Make sure the objects returned by __getinitargs__() are
   12860 kept alive (in the memo) to avoid a certain kind of nasty crash.  (Not
   12861 easily reproducible because it requires a later call to
   12862 __getinitargs__() to return a tuple that happens to be allocated at
   12863 the same address.)
   12864 
   12865 - Added definition of AR to toplevel Makefile.  Renamed @buildno temp
   12866 file to buildno1.
   12867 
   12868 - Moved Include/assert.h to Parser/assert.h, which seems to be the
   12869 only place where it's needed.
   12870 
   12871 - Tweaked the dictionary lookup code again for some more speed
   12872 (Vladimir Marangozov).
   12873 
   12874 - NT build: Changed the way python15.lib is included in the other
   12875 projects.  Per Mark Hammond's suggestion, add it to the extra libs in
   12876 Settings instead of to the project's source files.
   12877 
   12878 - regrtest.py: Change default verbosity so that there are only three
   12879 levels left: -q, default and -v.  In default mode, the name of each
   12880 test is now printed.  -v is the same as the old -vv.  -q is more quiet
   12881 than the old default mode.
   12882 
   12883 - Removed the old FAQ from the distribution.  You now have to get it
   12884 from the web!
   12885 
   12886 - Removed the PC/make_nt.in file from the distribution; it is no
   12887 longer needed.
   12888 
   12889 - Changed the build sequence so that shared modules are built last.
   12890 This fixes things for AIX and doesn't hurt elsewhere.
   12891 
   12892 - Improved test for GNU MP v1 in mpzmodule.c
   12893 
   12894 - fileobject.c: ftell() on Linux discards all buffered data; changed
   12895 read() code to use lseek() instead to get the same effect
   12896 
   12897 - configure.in, configure, importdl.c: NeXT sharedlib fixes
   12898 
   12899 - tupleobject.c: PyTuple_SetItem asserts refcnt==1
   12900 
   12901 - resource.c: Different strategy regarding whether to declare
   12902 getrusage() and getpagesize() -- #ifdef doesn't work, Linux has
   12903 conflicting decls in its headers.  Choice: only declare the return
   12904 type, not the argument prototype, and not on Linux.
   12905 
   12906 - importdl.c, configure*: set sharedlib extensions properly for NeXT
   12907 
   12908 - configure*, Makefile.in, Modules/Makefile.pre.in: AIX shared libraries
   12909 fixed; moved addition of PURIFY to LINKCC to configure
   12910 
   12911 - reopmodule.c, regexmodule.c, regexpr.c, zlibmodule.c: needed casts
   12912 added to shup up various compilers.
   12913 
   12914 - _tkinter.c: removed buggy mac #ifndef
   12915 
   12916 - Doc: various Mac documentation changes, added docs for 'ic' module
   12917 
   12918 - PC/make_nt.in: deleted
   12919 
   12920 - test_time.py, test_strftime.py: tweaks to catch %Z (which may return
   12921 "")
   12922 
   12923 - test_rotor.py: print b -> print `b`
   12924 
   12925 - Tkinter.py: (tagOrId) -> (tagOrId,)
   12926 
   12927 - Tkinter.py: the Tk class now also has a configure() method and
   12928 friends (they have been moved to the Misc class to accomplish this).
   12929 
   12930 - dict.get(key[, default]) returns dict[key] if it exists, or default
   12931 if it doesn't.  The default defaults to None.  This is quicker for
   12932 some applications than using either has_key() or try:...except
   12933 KeyError:....
   12934 
   12935 - Tools/webchecker/: some small changes to webchecker.py; added
   12936 websucker.py (a simple web site mirroring script).
   12937 
   12938 - Dictionary objects now have a get() method (also in UserDict.py).
   12939 dict.get(key, default) returns dict[key] if it exists and default
   12940 otherwise; default defaults to None.
   12941 
   12942 - Tools/scripts/logmerge.py: print the author, too.
   12943 
   12944 - Changes to import: support for "import a.b.c" is now built in.  See
   12945 http://grail.cnri.reston.va.us/python/essays/packages.html
   12946 for more info.  Most important deviations from "ni.py": __init__.py is
   12947 executed in the package's namespace instead of as a submodule; and
   12948 there's no support for "__" or "__domain__".  Note that "ni.py" is not
   12949 changed to match this -- it is simply declared obsolete (while at the
   12950 same time, it is documented...:-( ).
   12951 Unfortunately, "ihooks.py" has not been upgraded (but see "knee.py"
   12952 for an example implementation of hierarchical module import written in
   12953 Python).
   12954 
   12955 - More changes to import: the site.py module is now imported by
   12956 default when Python is initialized; use -S to disable it.  The site.py
   12957 module extends the path with several more directories: site-packages
   12958 inside the lib/python1.5/ directory, site-python in the lib/
   12959 directory, and pathnames mentioned in *.pth files found in either of
   12960 those directories.  See
   12961 http://grail.cnri.reston.va.us/python/essays/packages.html
   12962 for more info.
   12963 
   12964 - Changes to standard library subdirectory names: those subdirectories
   12965 that are not packages have been renamed with a hypen in their name,
   12966 e.g. lib-tk, lib-stdwin, plat-win, plat-linux2, plat-sunos5, dos-8x3.
   12967 The test suite is now a package -- to run a test, you must now use
   12968 "import test.test_foo".
   12969 
   12970 - A completely new re.py module is provided (thanks to Andrew
   12971 Kuchling, Tim Peters and Jeffrey Ollie) which uses Philip Hazel's
   12972 "pcre" re compiler and engine.  For a while, the "old" re.py (which
   12973 was new in 1.5a3!) will be kept around as re1.py.  The "old" regex
   12974 module and underlying parser and engine are still present -- while
   12975 regex is now officially obsolete, it will probably take several major
   12976 release cycles before it can be removed.
   12977 
   12978 - The posix module now has a strerror() function which translates an
   12979 error code to a string.
   12980 
   12981 - The emacs.py module (which was long obsolete) has been removed.
   12982 
   12983 - The universal makefile Misc/Makefile.pre.in now features an
   12984 "install" target.  By default, installed shared libraries go into
   12985 $exec_prefix/lib/python$VERSION/site-packages/.
   12986 
   12987 - The install-sh script is installed with the other configuration
   12988 specific files (in the config/ subdirectory).
   12989 
   12990 - It turns out whatsound.py and sndhdr.py were identical modules.
   12991 Since there's also an imghdr.py file, I propose to make sndhdr.py the
   12992 official one.  For compatibility, whatsound.py imports * from
   12993 sndhdr.py.
   12994 
   12995 - Class objects have a new attribute, __module__, giving the name of
   12996 the module in which they were declared.  This is useful for pickle and
   12997 for printing the full name of a class exception.
   12998 
   12999 - Many extension modules no longer issue a fatal error when their
   13000 initialization fails; the importing code now checks whether an error
   13001 occurred during module initialization, and correctly propagates the
   13002 exception to the import statement.
   13003 
   13004 - Most extension modules now raise class-based exceptions (except when
   13005 -X is used).
   13006 
   13007 - Subtle changes to PyEval_{Save,Restore}Thread(): always swap the
   13008 thread state -- just don't manipulate the lock if it isn't there.
   13009 
   13010 - Fixed a bug in Python/getopt.c that made it do the wrong thing when
   13011 an option was a single '-'.  Thanks to Andrew Kuchling.
   13012 
   13013 - New module mimetypes.py will guess a MIME type from a filename's
   13014 extension.
   13015 
   13016 - Windows: the DLL version is now settable via a resource rather than
   13017 being hardcoded.  This can be used for "branding" a binary Python
   13018 distribution.
   13019 
   13020 - urllib.py is now threadsafe -- it now uses re instead of regex, and
   13021 sys.exc_info() instead of sys.exc_{type,value}.
   13022 
   13023 - Many other library modules that used to use
   13024 sys.exc_{type,value,traceback} are now more thread-safe by virtue of
   13025 using sys.exc_info().
   13026 
   13027 - The functions in popen2 have an optional buffer size parameter.
   13028 Also, the command argument can now be either a string (passed to the
   13029 shell) or a list of arguments (passed directly to execv).
   13030 
   13031 - Alas, the thread support for _tkinter released with 1.5a3 didn't
   13032 work.  It's been rewritten.  The bad news is that it now requires a
   13033 modified version of a file in the standard Tcl distribution, which you
   13034 must compile with a -I option pointing to the standard Tcl source
   13035 tree.  For this reason, the thread support is disabled by default.
   13036 
   13037 - The errno extension module adds two tables: errorcode maps errno
   13038 numbers to errno names (e.g. EINTR), and errorstr maps them to
   13039 message strings.  (The latter is redundant because the new call
   13040 posix.strerror() now does the same, but alla...)  (Marc-Andre Lemburg)
   13041 
   13042 - The readline extension module now provides some interfaces to
   13043 internal readline routines that make it possible to write a completer
   13044 in Python.  An example completer, rlcompleter.py, is provided.
   13045 
   13046 	When completing a simple identifier, it completes keywords,
   13047 	built-ins and globals in __main__; when completing
   13048 	NAME.NAME..., it evaluates (!) the expression up to the last
   13049 	dot and completes its attributes.
   13050 
   13051 	It's very cool to do "import string" type "string.", hit the
   13052 	completion key (twice), and see the list of names defined by
   13053 	the string module!
   13054 
   13055 	Tip: to use the tab key as the completion key, call
   13056 
   13057 	    readline.parse_and_bind("tab: complete")
   13058 
   13059 - The traceback.py module has a new function tb_lineno() by Marc-Andre
   13060 Lemburg which extracts the line number from the linenumber table in
   13061 the code object.  Apparently the traceback object doesn't contain the
   13062 right linenumber when -O is used.  Rather than guessing whether -O is
   13063 on or off, the module itself uses tb_lineno() unconditionally.
   13064 
   13065 - Fixed Demo/tkinter/matt/canvas-moving-or-creating.py: change bind()
   13066 to tag_bind() so it works again.
   13067 
   13068 - The pystone script is now a standard library module.  Example use:
   13069 "import test.pystone; test.pystone.main()".
   13070 
   13071 - The import of the readline module in interactive mode is now also
   13072 attempted when -i is specified.  (Yes, I know, giving in to Marc-Andre
   13073 Lemburg, who asked for this. :-)
   13074 
   13075 - rfc822.py: Entirely rewritten parseaddr() function by Sjoerd
   13076 Mullender, to be closer to the standard.  This fixes the getaddr()
   13077 method.  Unfortunately, getaddrlist() is as broken as ever, since it
   13078 splits on commas without regard for RFC 822 quoting conventions.
   13079 
   13080 - pprint.py: correctly emit trailing "," in singleton tuples.
   13081 
   13082 - _tkinter.c: export names for its type objects, TkappType and
   13083 TkttType.
   13084 
   13085 - pickle.py: use __module__ when defined; fix a particularly hard to
   13086 reproduce bug that confuses the memo when temporary objects are
   13087 returned by custom pickling interfaces; and a semantic change: when
   13088 unpickling the instance variables of an instance, use
   13089 inst.__dict__.update(value) instead of a for loop with setattr() over
   13090 the value.keys().  This is more consistent (the pickling doesn't use
   13091 getattr() either but pickles inst.__dict__) and avoids problems with
   13092 instances that have a __setattr__ hook.  But it *is* a semantic change
   13093 (because the setattr hook is no longer used).  So beware!
   13094 
   13095 - config.h is now installed (at last) in
   13096 $exec_prefix/include/python1.5/.  For most sites, this means that it
   13097 is actually in $prefix/include/python1.5/, with all the other Python
   13098 include files, since $prefix and $exec_prefix are the same by
   13099 default.
   13100 
   13101 - The imp module now supports parts of the functionality to implement
   13102 import of hierarchical module names.  It now supports find_module()
   13103 and load_module() for all types of modules.  Docstrings have been
   13104 added for those functions in the built-in imp module that are still
   13105 relevant (some old interfaces are obsolete).  For a sample
   13106 implementation of hierarchical module import in Python, see the new
   13107 library module knee.py.
   13108 
   13109 - The % operator on string objects now allows arbitrary nested parens
   13110 in a %(...)X style format.  (Brad Howes)
   13111 
   13112 - Reverse the order in which Setup and Setup.local are passed to the
   13113 makesetup script.  This allows variable definitions in Setup.local to
   13114 override definitions in Setup.  (But you'll still have to edit Setup
   13115 if you want to disable modules that are enabled by default, or if such
   13116 modules need non-standard options.)
   13117 
   13118 - Added PyImport_ImportModuleEx(name, globals, locals, fromlist); this
   13119 is like PyImport_ImporModule(name) but receives the globals and locals
   13120 dict and the fromlist arguments as well.  (The name is a char*; the
   13121 others are PyObject*s).
   13122 
   13123 - The 'p' format in the struct extension module alloded to above is
   13124 new in 1.5a4.
   13125 
   13126 - The types.py module now uses try-except in a few places to make it
   13127 more likely that it can be imported in restricted mode.  Some type
   13128 names are undefined in that case, e.g. CodeType (inaccessible),
   13129 FileType (not always accessible), and TracebackType and FrameType
   13130 (inaccessible).
   13131 
   13132 - In urllib.py: added separate administration of temporary files
   13133 created y URLopener.retrieve() so cleanup() can properly remove them.
   13134 The old code removed everything in tempcache which was a bad idea if
   13135 the user had passed a non-temp file into it.  Also, in basejoin(),
   13136 interpret relative paths starting in "../".  This is necessary if the
   13137 server uses symbolic links.
   13138 
   13139 - The Windows build procedure and project files are now based on
   13140 Microsoft Visual C++ 5.x.  The build now takes place in the PCbuild
   13141 directory.  It is much more robust, and properly builds separate Debug
   13142 and Release versions.  (The installer will be added shortly.)
   13143 
   13144 - Added casts and changed some return types in regexpr.c to avoid
   13145 compiler warnings or errors on some platforms.
   13146 
   13147 - The AIX build tools for shared libraries now supports VPATH.  (Donn
   13148 Cave)
   13149 
   13150 - By default, disable the "portable" multimedia modules audioop,
   13151 imageop, and rgbimg, since they don't work on 64-bit platforms.
   13152 
   13153 - Fixed a nasty bug in cStringIO.c when code was actually using the
   13154 close() method (the destructors would try to free certain fields a
   13155 second time).
   13156 
   13157 - For those who think they need it, there's a "user.py" module.  This
   13158 is *not* imported by default, but can be imported to run user-specific
   13159 setup commands, ~/.pythonrc.py.
   13160 
   13161 - Various speedups suggested by Fredrik Lundh, Marc-Andre Lemburg,
   13162 Vladimir Marangozov, and others.
   13163 
   13164 - Added os.altsep; this is '/' on DOS/Windows, and None on systems
   13165 with a sane filename syntax.
   13166 
   13167 - os.py: Write out the dynamic OS choice, to avoid exec statements.
   13168 Adding support for a new OS is now a bit more work, but I bet that
   13169 'dos' or 'nt' will cover most situations...
   13170 
   13171 - The obsolete exception AccessError is now really gone.
   13172 
   13173 - Tools/faqwiz/: New installation instructions show how to maintain
   13174 multiple FAQs.  Removed bootstrap script from end of faqwiz.py module.
   13175 Added instructions to bootstrap script, too.  Version bumped to 0.8.1.
   13176 Added <html>...</html> feature suggested by Skip Montanaro.  Added
   13177 leading text for Roulette, default to 'Hit Reload ...'.  Fix typo in
   13178 default SRCDIR.
   13179 
   13180 - Documentation for the relatively new modules "keyword" and "symbol"
   13181 has been added (to the end of the section on the parser extension
   13182 module).
   13183 
   13184 - In module bisect.py, but functions have two optional argument 'lo'
   13185 and 'hi' which allow you to specify a subsequence of the array to
   13186 operate on.
   13187 
   13188 - In ftplib.py, changed most methods to return their status (even when
   13189 it is always "200 OK") rather than swallowing it.
   13190 
   13191 - main() now calls setlocale(LC_ALL, ""), if setlocale() and
   13192 <locale.h> are defined.
   13193 
   13194 - Changes to configure.in, the configure script, and both
   13195 Makefile.pre.in files, to support SGI's SGI_ABI platform selection
   13196 environment variable.
   13197 
   13198 
   13199 ======================================================================
   13200 
   13201 
   13202 From 1.4 to 1.5a3
   13203 =================
   13204 
   13205 Security
   13206 --------
   13207 
   13208 - If you are using the setuid script C wrapper (Misc/setuid-prog.c),
   13209 please use the new version.  The old version has a huge security leak.
   13210 
   13211 Miscellaneous
   13212 -------------
   13213 
   13214 - Because of various (small) incompatible changes in the Python
   13215 bytecode interpreter, the magic number for .pyc files has changed
   13216 again.
   13217 
   13218 - The default module search path is now much saner.  Both on Unix and
   13219 Windows, it is essentially derived from the path to the executable
   13220 (which can be overridden by setting the environment variable
   13221 $PYTHONHOME).  The value of $PYTHONPATH on Windows is now inserted in
   13222 front of the default path, like in Unix (instead of overriding the
   13223 default path).  On Windows, the directory containing the executable is
   13224 added to the end of the path.
   13225 
   13226 - A new version of python-mode.el for Emacs has been included.  Also,
   13227 a new file ccpy-style.el has been added to configure Emacs cc-mode for
   13228 the preferred style in Python C sources.
   13229 
   13230 - On Unix, when using sys.argv[0] to insert the script directory in
   13231 front of sys.path, expand a symbolic link.  You can now install a
   13232 program in a private directory and have a symbolic link to it in a
   13233 public bin directory, and it will put the private directory in the
   13234 module search path.  Note that the symlink is expanded in sys.path[0]
   13235 but not in sys.argv[0], so you can still tell the name by which you
   13236 were invoked.
   13237 
   13238 - It is now recommended to use ``#!/usr/bin/env python'' instead of
   13239 ``#!/usr/local/bin/python'' at the start of executable scripts, except
   13240 for CGI scripts.  It has been determined that the use of /usr/bin/env
   13241 is more portable than that of /usr/local/bin/python -- scripts almost
   13242 never have to be edited when the Python interpreter lives in a
   13243 non-standard place.  Note that this doesn't work for CGI scripts since
   13244 the python executable often doesn't live in the HTTP server's default
   13245 search path.
   13246 
   13247 - The silly -s command line option and the corresponding
   13248 PYTHONSUPPRESS environment variable (and the Py_SuppressPrint global
   13249 flag in the Python/C API) are gone.
   13250 
   13251 - Most problems on 64-bit platforms should now be fixed.  Andrew
   13252 Kuchling helped.  Some uncommon extension modules are still not
   13253 clean (image and audio ops?).
   13254 
   13255 - Fixed a bug where multiple anonymous tuple arguments would be mixed up
   13256 when using the debugger or profiler (reported by Just van Rossum).
   13257 The simplest example is ``def f((a,b),(c,d)): print a,b,c,d''; this
   13258 would print the wrong value when run under the debugger or profiler.
   13259 
   13260 - The hacks that the dictionary implementation used to speed up
   13261 repeated lookups of the same C string were removed; these were a
   13262 source of subtle problems and don't seem to serve much of a purpose
   13263 any longer.
   13264 
   13265 - All traces of support for the long dead access statement have been
   13266 removed from the sources.
   13267 
   13268 - Plugged the two-byte memory leak in the tokenizer when reading an
   13269 interactive EOF.
   13270 
   13271 - There's a -O option to the interpreter that removes SET_LINENO
   13272 instructions and assert statements (see below); it uses and produces
   13273 .pyo files instead of .pyc files.  The speedup is only a few percent
   13274 in most cases.  The line numbers are still available in the .pyo file,
   13275 as a separate table (which is also available in .pyc files).  However,
   13276 the removal of the SET_LINENO instructions means that the debugger
   13277 (pdb) can't set breakpoints on lines in -O mode.  The traceback module
   13278 contains a function to extract a line number from the code object
   13279 referenced in a traceback object.  In the future it should be possible
   13280 to write external bytecode optimizers that create better optimized
   13281 .pyo files, and there should be more control over optimization;
   13282 consider the -O option a "teaser".  Without -O, the assert statement
   13283 actually generates code that first checks __debug__; if this variable
   13284 is false, the assertion is not checked.  __debug__ is a built-in
   13285 variable whose value is initialized to track the -O flag (it's true
   13286 iff -O is not specified).  With -O, no code is generated for assert
   13287 statements, nor for code of the form ``if __debug__: <something>''.
   13288 Sorry, no further constant folding happens.
   13289 
   13290 
   13291 Performance
   13292 -----------
   13293 
   13294 - It's much faster (almost twice for pystone.py -- see
   13295 Tools/scripts).  See the entry on string interning below.
   13296 
   13297 - Some speedup by using separate free lists for method objects (both
   13298 the C and the Python variety) and for floating point numbers.
   13299 
   13300 - Big speedup by allocating frame objects with a single malloc() call.
   13301 The Python/C API for frames is changed (you shouldn't be using this
   13302 anyway).
   13303 
   13304 - Significant speedup by inlining some common opcodes for common operand 
   13305 types (e.g.  i+i, i-i, and list[i]).  Fredrik Lundh.
   13306 
   13307 - Small speedup by reordering the method tables of some common
   13308 objects (e.g. list.append is now first).
   13309 
   13310 - Big optimization to the read() method of file objects.  A read()
   13311 without arguments now attempts to use fstat to allocate a buffer of
   13312 the right size; for pipes and sockets, it will fall back to doubling
   13313 the buffer size.  While that the improvement is real on all systems,
   13314 it is most dramatic on Windows.
   13315 
   13316 
   13317 Documentation
   13318 -------------
   13319 
   13320 - Many new pieces of library documentation were contributed, mostly by
   13321 Andrew Kuchling.  Even cmath is now documented!  There's also a
   13322 chapter of the library manual, "libundoc.tex", which provides a
   13323 listing of all undocumented modules, plus their status (e.g. internal,
   13324 obsolete, or in need of documentation).  Also contributions by Sue
   13325 Williams, Skip Montanaro, and some module authors who succumbed to
   13326 pressure to document their own contributed modules :-).  Note that
   13327 printing the documentation now kills fewer trees -- the margins have
   13328 been reduced.
   13329 
   13330 - I have started documenting the Python/C API. Unfortunately this project 
   13331 hasn't been completed yet.  It will be complete before the final release of 
   13332 Python 1.5, though.  At the moment, it's better to read the LaTeX source 
   13333 than to attempt to run it through LaTeX and print the resulting dvi file.
   13334 
   13335 - The posix module (and hence os.py) now has doc strings!  Thanks to Neil 
   13336 Schemenauer.  I received a few other contributions of doc strings.  In most 
   13337 other places, doc strings are still wishful thinking...
   13338 
   13339 
   13340 Language changes
   13341 ----------------
   13342 
   13343 - Private variables with leading double underscore are now a permanent 
   13344 feature of the language.  (These were experimental in release 1.4.  I have 
   13345 favorable experience using them; I can't label them "experimental" 
   13346 forever.)
   13347 
   13348 - There's new string literal syntax for "raw strings".  Prefixing a string 
   13349 literal with the letter r (or R) disables all escape processing in the 
   13350 string; for example, r'\n' is a two-character string consisting of a 
   13351 backslash followed by the letter n.  This combines with all forms of string 
   13352 quotes; it is actually useful for triple quoted doc strings which might 
   13353 contain references to \n or \t.  An embedded quote prefixed with a 
   13354 backslash does not terminate the string, but the backslash is still 
   13355 included in the string; for example, r'\'' is a two-character string 
   13356 consisting of a backslash and a quote.  (Raw strings are also 
   13357 affectionately known as Robin strings, after their inventor, Robin 
   13358 Friedrich.)
   13359 
   13360 - There's a simple assert statement, and a new exception
   13361 AssertionError.  For example, ``assert foo > 0'' is equivalent to ``if
   13362 not foo > 0: raise AssertionError''.  Sorry, the text of the asserted
   13363 condition is not available; it would be too complicated to generate
   13364 code for this (since the code is generated from a parse tree).
   13365 However, the text is displayed as part of the traceback!
   13366 
   13367 - The raise statement has a new feature: when using "raise SomeClass,
   13368 somevalue" where somevalue is not an instance of SomeClass, it
   13369 instantiates SomeClass(somevalue).  In 1.5a4, if somevalue is an
   13370 instance of a *derived* class of SomeClass, the exception class raised
   13371 is set to somevalue.__class__, and SomeClass is ignored after that.
   13372 
   13373 - Duplicate keyword arguments are now detected at compile time;
   13374 f(a=1,a=2) is now a syntax error.
   13375 
   13376 
   13377 Changes to built-in features
   13378 ----------------------------
   13379 
   13380 - There's a new exception FloatingPointError (used only by Lee Busby's
   13381 patches to catch floating point exceptions, at the moment).
   13382 
   13383 - The obsolete exception ConflictError (presumably used by the long
   13384 obsolete access statement) has been deleted.
   13385 
   13386 - There's a new function sys.exc_info() which returns the tuple 
   13387 (sys.exc_type, sys.exc_value, sys.exc_traceback) in a thread-safe way.
   13388 
   13389 - There's a new variable sys.executable, pointing to the executable file 
   13390 for the Python interpreter.
   13391 
   13392 - The sort() methods for lists no longer uses the C library qsort(); I
   13393 wrote my own quicksort implementation, with lots of help (in the form
   13394 of a kind of competition) from Tim Peters.  This solves a bug in
   13395 dictionary comparisons on some Solaris versions when Python is built
   13396 with threads, and makes sorting lists even faster.
   13397 
   13398 - The semantics of comparing two dictionaries have changed, to make
   13399 comparison of unequal dictionaries faster.  A shorter dictionary is
   13400 always considered smaller than a larger dictionary.  For dictionaries
   13401 of the same size, the smallest differing element determines the
   13402 outcome (which yields the same results as before in this case, without
   13403 explicit sorting).  Thanks to Aaron Watters for suggesting something
   13404 like this.
   13405 
   13406 - The semantics of try-except have changed subtly so that calling a
   13407 function in an exception handler that itself raises and catches an
   13408 exception no longer overwrites the sys.exc_* variables.  This also
   13409 alleviates the problem that objects referenced in a stack frame that
   13410 caught an exception are kept alive until another exception is caught
   13411 -- the sys.exc_* variables are restored to their previous value when
   13412 returning from a function that caught an exception.
   13413 
   13414 - There's a new "buffer" interface.  Certain objects (e.g. strings and
   13415 arrays) now support the "buffer" protocol.  Buffer objects are acceptable 
   13416 whenever formerly a string was required for a write operation; mutable 
   13417 buffer objects can be the target of a read operation using the call
   13418 f.readinto(buffer).  A cool feature is that regular expression matching now 
   13419 also work on array objects.  Contribution by Jack Jansen.  (Needs 
   13420 documentation.)
   13421 
   13422 - String interning: dictionary lookups are faster when the lookup
   13423 string object is the same object as the key in the dictionary, not
   13424 just a string with the same value.  This is done by having a pool of
   13425 "interned" strings.  Most names generated by the interpreter are now
   13426 automatically interned, and there's a new built-in function intern(s)
   13427 that returns the interned version of a string.  Interned strings are
   13428 not a different object type, and interning is totally optional, but by
   13429 interning most keys a speedup of about 15% was obtained for the
   13430 pystone benchmark.
   13431 
   13432 - Dictionary objects have several new methods; clear() and copy() have
   13433 the obvious semantics, while update(d) merges the contents of another
   13434 dictionary d into this one, overriding existing keys.  The dictionary
   13435 implementation file is now called dictobject.c rather than the
   13436 confusing mappingobject.c.
   13437 
   13438 - The intrinsic function dir() is much smarter; it looks in __dict__,
   13439 __members__ and __methods__.
   13440 
   13441 - The intrinsic functions int(), long() and float() can now take a
   13442 string argument and then do the same thing as string.atoi(),
   13443 string.atol(), and string.atof().  No second 'base' argument is
   13444 allowed, and complex() does not take a string (nobody cared enough).
   13445 
   13446 - When a module is deleted, its globals are now deleted in two phases.
   13447 In the first phase, all variables whose name begins with exactly one
   13448 underscore are replaced by None; in the second phase, all variables
   13449 are deleted.  This makes it possible to have global objects whose
   13450 destructors depend on other globals.  The deletion order within each
   13451 phase is still random.
   13452 
   13453 - It is no longer an error for a function to be called without a
   13454 global variable __builtins__ -- an empty directory will be provided
   13455 by default.
   13456 
   13457 - Guido's corollary to the "Don Beaudry hook": it is now possible to
   13458 do metaprogramming by using an instance as a base class.  Not for the
   13459 faint of heart; and undocumented as yet, but basically if a base class
   13460 is an instance, its class will be instantiated to create the new
   13461 class.  Jim Fulton will love it -- it also works with instances of his
   13462 "extension classes", since it is triggered by the presence of a
   13463 __class__ attribute on the purported base class.  See
   13464 Demo/metaclasses/index.html for an explanation and see that directory
   13465 for examples.
   13466 
   13467 - Another change is that the Don Beaudry hook is now invoked when
   13468 *any* base class is special.  (Up to 1.5a3, the *last* special base
   13469 class is used; in 1.5a4, the more rational choice of the *first*
   13470 special base class is used.)
   13471 
   13472 - New optional parameter to the readlines() method of file objects.
   13473 This indicates the number of bytes to read (the actual number of bytes
   13474 read will be somewhat larger due to buffering reading until the end of
   13475 the line).  Some optimizations have also been made to speed it up (but
   13476 not as much as read()).
   13477 
   13478 - Complex numbers no longer have the ".conj" pseudo attribute; use
   13479 z.conjugate() instead, or complex(z.real, -z.imag).  Complex numbers
   13480 now *do* support the __members__ and __methods__ special attributes.
   13481 
   13482 - The complex() function now looks for a __complex__() method on class
   13483 instances before giving up.
   13484 
   13485 - Long integers now support arbitrary shift counts, so you can now
   13486 write 1L<<1000000, memory permitting.  (Python 1.4 reports "outrageous
   13487 shift count for this.)
   13488 
   13489 - The hex() and oct() functions have been changed so that for regular
   13490 integers, they never emit a minus sign.  For example, on a 32-bit
   13491 machine, oct(-1) now returns '037777777777' and hex(-1) returns
   13492 '0xffffffff'.  While this may seem inconsistent, it is much more
   13493 useful.  (For long integers, a minus sign is used as before, to fit
   13494 the result in memory :-)
   13495 
   13496 - The hash() function computes better hashes for several data types,
   13497 including strings, floating point numbers, and complex numbers.
   13498 
   13499 
   13500 New extension modules
   13501 ---------------------
   13502 
   13503 - New extension modules cStringIO.c and cPickle.c, written by Jim
   13504 Fulton and other folks at Digital Creations.  These are much more
   13505 efficient than their Python counterparts StringIO.py and pickle.py,
   13506 but don't support subclassing.  cPickle.c clocks up to 1000 times
   13507 faster than pickle.py; cStringIO.c's improvement is less dramatic but
   13508 still significant.
   13509 
   13510 - New extension module zlibmodule.c, interfacing to the free zlib
   13511 library (gzip compatible compression).  There's also a module gzip.py
   13512 which provides a higher level interface.  Written by Andrew Kuchling
   13513 and Jeremy Hylton.
   13514 
   13515 - New module readline; see the "miscellaneous" section above.
   13516 
   13517 - New Unix extension module resource.c, by Jeremy Hylton, provides
   13518 access to getrlimit(), getrusage(), setrusage(), getpagesize(), and
   13519 related symbolic constants.
   13520 
   13521 - New extension puremodule.c, by Barry Warsaw, which interfaces to the
   13522 Purify(TM) C API.  See also the file Misc/PURIFY.README.  It is also
   13523 possible to enable Purify by simply setting the PURIFY Makefile
   13524 variable in the Modules/Setup file.
   13525 
   13526 
   13527 Changes in extension modules
   13528 ----------------------------
   13529 
   13530 - The struct extension module has several new features to control byte
   13531 order and word size.  It supports reading and writing IEEE floats even
   13532 on platforms where this is not the native format.  It uses uppercase
   13533 format codes for unsigned integers of various sizes (always using
   13534 Python long ints for 'I' and 'L'), 's' with a size prefix for strings,
   13535 and 'p' for "Pascal strings" (with a leading length byte, included in
   13536 the size; blame Hannu Krosing; new in 1.5a4).  A prefix '>' forces
   13537 big-endian data and '<' forces little-endian data; these also select
   13538 standard data sizes and disable automatic alignment (use pad bytes as
   13539 needed).
   13540 
   13541 - The array module supports uppercase format codes for unsigned data
   13542 formats (like the struct module).
   13543 
   13544 - The fcntl extension module now exports the needed symbolic
   13545 constants.  (Formerly these were in FCNTL.py which was not available
   13546 or correct for all platforms.)
   13547 
   13548 - The extension modules dbm, gdbm and bsddb now check that the
   13549 database is still open before making any new calls.
   13550 
   13551 - The dbhash module is no more.  Use bsddb instead.  (There's a third
   13552 party interface for the BSD 2.x code somewhere on the web; support for
   13553 bsddb will be deprecated.)
   13554 
   13555 - The gdbm module now supports a sync() method.
   13556 
   13557 - The socket module now has some new functions: getprotobyname(), and
   13558 the set {ntoh,hton}{s,l}().
   13559 
   13560 - Various modules now export their type object: socket.SocketType,
   13561 array.ArrayType.
   13562 
   13563 - The socket module's accept() method now returns unknown addresses as
   13564 a tuple rather than raising an exception.  (This can happen in
   13565 promiscuous mode.)  Theres' also a new function getprotobyname().
   13566 
   13567 - The pthread support for the thread module now works on most platforms.
   13568 
   13569 - STDWIN is now officially obsolete.  Support for it will eventually
   13570 be removed from the distribution.
   13571 
   13572 - The binascii extension module is now hopefully fully debugged.
   13573 (XXX Oops -- Fredrik Lundh promised me a uuencode fix that I never
   13574 received.)
   13575 
   13576 - audioop.c: added a ratecv() function; better handling of overflow in
   13577 add().
   13578 
   13579 - posixmodule.c: now exports the O_* flags (O_APPEND etc.).  On
   13580 Windows, also O_TEXT and O_BINARY.  The 'error' variable (the
   13581 exception is raises) is renamed -- its string value is now "os.error",
   13582 so newbies don't believe they have to import posix (or nt) to catch
   13583 it when they see os.error reported as posix.error.  The execve()
   13584 function now accepts any mapping object for the environment.
   13585 
   13586 - A new version of the al (audio library) module for SGI was
   13587 contributed by Sjoerd Mullender.
   13588 
   13589 - The regex module has a new function get_syntax() which retrieves the
   13590 syntax setting set by set_syntax().  The code was also sanitized,
   13591 removing worries about unclean error handling.  See also below for its
   13592 successor, re.py.
   13593 
   13594 - The "new" module (which creates new objects of various types) once
   13595 again has a fully functioning new.function() method.  Dangerous as
   13596 ever!  Also, new.code() has several new arguments.
   13597 
   13598 - A problem has been fixed in the rotor module: on systems with signed
   13599 characters, rotor-encoded data was not portable when the key contained
   13600 8-bit characters.  Also, setkey() now requires its argument rather
   13601 than having broken code to default it.
   13602 
   13603 - The sys.builtin_module_names variable is now a tuple.  Another new
   13604 variables in sys is sys.executable (the full path to the Python
   13605 binary, if known).
   13606 
   13607 - The specs for time.strftime() have undergone some revisions.  It
   13608 appears that not all format characters are supported in the same way
   13609 on all platforms.  Rather than reimplement it, we note these
   13610 differences in the documentation, and emphasize the shared set of
   13611 features.  There's also a thorough test set (that occasionally finds
   13612 problems in the C library implementation, e.g. on some Linuxes),
   13613 thanks to Skip Montanaro.
   13614 
   13615 - The nis module seems broken when used with NIS+; unfortunately
   13616 nobody knows how to fix it.  It should still work with old NIS.
   13617 
   13618 
   13619 New library modules
   13620 -------------------
   13621 
   13622 - New (still experimental) Perl-style regular expression module,
   13623 re.py, which uses a new interface for matching as well as a new
   13624 syntax; the new interface avoids the thread-unsafety of the regex
   13625 interface.  This comes with a helper extension reopmodule.c and vastly
   13626 rewritten regexpr.c.  Most work on this was done by Jeffrey Ollie, Tim
   13627 Peters, and Andrew Kuchling.  See the documentation libre.tex.  In
   13628 1.5, the old regex module is still fully supported; in the future, it
   13629 will become obsolete.
   13630 
   13631 - New module gzip.py; see zlib above.
   13632 
   13633 - New module keyword.py exports knowledge about Python's built-in
   13634 keywords.  (New version by Ka-Ping Yee.)
   13635 
   13636 - New module pprint.py (with documentation) which supports
   13637 pretty-printing of lists, tuples, & dictionaries recursively.  By Fred
   13638 Drake.
   13639 
   13640 - New module code.py.  The function code.compile_command() can
   13641 determine whether an interactively entered command is complete or not,
   13642 distinguishing incomplete from invalid input.  (XXX Unfortunately,
   13643 this seems broken at this moment, and I don't have the time to fix
   13644 it.  It's probably better to add an explicit interface to the parser
   13645 for this.)
   13646 
   13647 - There is now a library module xdrlib.py which can read and write the
   13648 XDR data format as used by Sun RPC, for example.  It uses the struct
   13649 module.
   13650 
   13651 
   13652 Changes in library modules
   13653 --------------------------
   13654 
   13655 - Module codehack.py is now completely obsolete.
   13656 
   13657 - The pickle.py module has been updated to make it compatible with the
   13658 new binary format that cPickle.c produces.  By default it produces the
   13659 old all-ASCII format compatible with the old pickle.py, still much
   13660 faster than pickle.py; it will read both formats automatically.  A few
   13661 other updates have been made.
   13662 
   13663 - A new helper module, copy_reg.py, is provided to register extensions
   13664 to the pickling code.
   13665 
   13666 - Revamped module tokenize.py is much more accurate and has an
   13667 interface that makes it a breeze to write code to colorize Python
   13668 source code.  Contributed by Ka-Ping Yee.
   13669 
   13670 - In ihooks.py, ModuleLoader.load_module() now closes the file under
   13671 all circumstances.
   13672 
   13673 - The tempfile.py module has a new class, TemporaryFile, which creates
   13674 an open temporary file that will be deleted automatically when
   13675 closed.  This works on Windows and MacOS as well as on Unix.  (Jim
   13676 Fulton.)
   13677 
   13678 - Changes to the cgi.py module: Most imports are now done at the
   13679 top of the module, which provides a speedup when using ni (Jim
   13680 Fulton).  The problem with file upload to a Windows platform is solved
   13681 by using the new tempfile.TemporaryFile class; temporary files are now
   13682 always opened in binary mode (Jim Fulton).  The cgi.escape() function
   13683 now takes an optional flag argument that quotes '"' to '&quot;'.  It
   13684 is now possible to invoke cgi.py from a command line script, to test
   13685 cgi scripts more easily outside an http server.  There's an optional
   13686 limit to the size of uploads to POST (Skip Montanaro).  Added a
   13687 'strict_parsing' option to all parsing functions (Jim Fulton).  The
   13688 function parse_qs() now uses urllib.unquote() on the name as well as
   13689 the value of fields (Clarence Gardner).  The FieldStorage class now
   13690 has a __len__() method.
   13691 
   13692 - httplib.py: the socket object is no longer closed; all HTTP/1.*
   13693 responses are now accepted; and it is now thread-safe (by not using
   13694 the regex module).
   13695 
   13696 - BaseHTTPModule.py: treat all HTTP/1.* versions the same.
   13697 
   13698 - The popen2.py module is now rewritten using a class, which makes
   13699 access to the standard error stream and the process id of the
   13700 subprocess possible.
   13701 
   13702 - Added timezone support to the rfc822.py module, in the form of a
   13703 getdate_tz() method and a parsedate_tz() function; also a mktime_tz().
   13704 Also added recognition of some non-standard date formats, by Lars
   13705 Wirzenius, and RFC 850 dates (Chris Lawrence).
   13706 
   13707 - mhlib.py: various enhancements, including almost compatible parsing
   13708 of message sequence specifiers without invoking a subprocess.  Also
   13709 added a createmessage() method by Lars Wirzenius.
   13710 
   13711 - The StringIO.StringIO class now supports readline(nbytes).  (Lars 
   13712 Wirzenius.)  (Of course, you should be using cStringIO for performance.)
   13713 
   13714 - UserDict.py supports the new dictionary methods as well.
   13715 
   13716 - Improvements for whrandom.py by Tim Peters: use 32-bit arithmetic to
   13717 speed it up, and replace 0 seed values by 1 to avoid degeneration.
   13718 A bug was fixed in the test for invalid arguments.
   13719 
   13720 - Module ftplib.py: added support for parsing a .netrc file (Fred
   13721 Drake).  Also added an ntransfercmd() method to the FTP class, which
   13722 allows access to the expected size of a transfer when available, and a
   13723 parse150() function to the module which parses the corresponding 150
   13724 response.
   13725 
   13726 - urllib.py: the ftp cache is now limited to 10 entries.  Added
   13727 quote_plus() and unquote_plus() functions which are like quote() and
   13728 unquote() but also replace spaces with '+' or vice versa, for
   13729 encoding/decoding CGI form arguments.  Catch all errors from the ftp
   13730 module.  HTTP requests now add the Host: header line.  The proxy
   13731 variable names are now mapped to lower case, for Windows.  The
   13732 spliturl() function no longer erroneously throws away all data past
   13733 the first newline.  The basejoin() function now intereprets "../"
   13734 correctly.  I *believe* that the problems with "exception raised in
   13735 __del__" under certain circumstances have been fixed (mostly by
   13736 changes elsewher in the interpreter).
   13737 
   13738 - In urlparse.py, there is a cache for results in urlparse.urlparse();
   13739 its size limit is set to 20.  Also, new URL schemes shttp, https, and
   13740 snews are "supported".
   13741 
   13742 - shelve.py: use cPickle and cStringIO when available.  Also added
   13743 a sync() method, which calls the database's sync() method if there is
   13744 one.
   13745 
   13746 - The mimetools.py module now uses the available Python modules for
   13747 decoding quoted-printable, uuencode and base64 formats, rather than
   13748 creating a subprocess.
   13749 
   13750 - The python debugger (pdb.py, and its base class bdb.py) now support
   13751 conditional breakpoints.  See the docs.
   13752 
   13753 - The modules base64.py, uu.py and quopri.py can now be used as simple
   13754 command line utilities.
   13755 
   13756 - Various small fixes to the nntplib.py module that I can't bother to
   13757 document in detail.
   13758 
   13759 - Sjoerd Mullender's mimify.py module now supports base64 encoding and 
   13760 includes functions to handle the funny encoding you sometimes see in mail 
   13761 headers.  It is now documented.
   13762 
   13763 - mailbox.py: Added BabylMailbox.  Improved the way the mailbox is
   13764 gotten from the environment.
   13765 
   13766 - Many more modules now correctly open files in binary mode when this
   13767 is necessary on non-Unix platforms.
   13768 
   13769 - The copying functions in the undocumented module shutil.py are
   13770 smarter.
   13771 
   13772 - The Writer classes in the formatter.py module now have a flush()
   13773 method.
   13774 
   13775 - The sgmllib.py module accepts hyphens and periods in the middle of
   13776 attribute names.  While this is against the SGML standard, there is
   13777 some HTML out there that uses this...
   13778 
   13779 - The interface for the Python bytecode disassembler module, dis.py,
   13780 has been enhanced quite a bit.  There's now one main function,
   13781 dis.dis(), which takes almost any kind of object (function, module,
   13782 class, instance, method, code object) and disassembles it; without
   13783 arguments it disassembles the last frame of the last traceback.  The
   13784 other functions have changed slightly, too.
   13785 
   13786 - The imghdr.py module recognizes new image types: BMP, PNG.
   13787 
   13788 - The string.py module has a new function replace(str, old, new,
   13789 [maxsplit]) which does substring replacements.  It is actually
   13790 implemented in C in the strop module.  The functions [r]find() an
   13791 [r]index() have an optional 4th argument indicating the end of the
   13792 substring to search, alsoo implemented by their strop counterparts.
   13793 (Remember, never import strop -- import string uses strop when
   13794 available with zero overhead.)
   13795 
   13796 - The string.join() function now accepts any sequence argument, not
   13797 just lists and tuples.
   13798 
   13799 - The string.maketrans() requires its first two arguments to be
   13800 present.  The old version didn't require them, but there's not much
   13801 point without them, and the documentation suggests that they are
   13802 required, so we fixed the code to match the documentation.
   13803 
   13804 - The regsub.py module has a function clear_cache(), which clears its
   13805 internal cache of compiled regular expressions.  Also, the cache now
   13806 takes the current syntax setting into account.  (However, this module
   13807 is now obsolete -- use the sub() or subn() functions or methods in the
   13808 re module.)
   13809 
   13810 - The undocumented module Complex.py has been removed, now that Python
   13811 has built-in complex numbers.  A similar module remains as
   13812 Demo/classes/Complex.py, as an example.
   13813 
   13814 
   13815 Changes to the build process
   13816 ----------------------------
   13817 
   13818 - The way GNU readline is configured is totally different.  The
   13819 --with-readline configure option is gone.  It is now an extension
   13820 module, which may be loaded dynamically.  You must enable it (and
   13821 specify the correct libraries to link with) in the Modules/Setup file.
   13822 Importing the module installs some hooks which enable command line
   13823 editing.  When the interpreter shell is invoked interactively, it
   13824 attempts to import the readline module; when this fails, the default
   13825 input mechanism is used.  The hook variables are PyOS_InputHook and
   13826 PyOS_ReadlineFunctionPointer.  (Code contributed by Lee Busby, with
   13827 ideas from William Magro.)
   13828 
   13829 - New build procedure: a single library, libpython1.5.a, is now built,
   13830 which contains absolutely everything except for a one-line main()
   13831 program (which calls Py_Main(argc, argv) to start the interpreter
   13832 shell).  This makes life much simpler for applications that need to
   13833 embed Python.  The serial number of the build is now included in the
   13834 version string (sys.version).
   13835 
   13836 - As far as I can tell, neither gcc -Wall nor the Microsoft compiler
   13837 emits a single warning any more when compiling Python.
   13838 
   13839 - A number of new Makefile variables have been added for special
   13840 situations, e.g. LDLAST is appended to the link command.  These are
   13841 used by editing the Makefile or passing them on the make command
   13842 line.
   13843 
   13844 - A set of patches from Lee Busby has been integrated that make it
   13845 possible to catch floating point exceptions.  Use the configure option
   13846 --with-fpectl to enable the patches; the extension modules fpectl and
   13847 fpetest provide control to enable/disable and test the feature,
   13848 respectively.
   13849 
   13850 - The support for shared libraries under AIX is now simpler and more
   13851 robust.  Thanks to Vladimir Marangozov for revamping his own patches!
   13852 
   13853 - The Modules/makesetup script now reads a file Setup.local as well as
   13854 a file Setup.  Most changes to the Setup script can be done by editing
   13855 Setup.local instead, which makes it easier to carry a particular setup
   13856 over from one release to the next.
   13857 
   13858 - The Modules/makesetup script now copies any "include" lines it
   13859 encounters verbatim into the output Makefile.  It also recognizes .cxx
   13860 and .cpp as C++ source files.
   13861 
   13862 - The configure script is smarter about C compiler options; e.g. with
   13863 gcc it uses -O2 and -g when possible, and on some other platforms it
   13864 uses -Olimit 1500 to avoid a warning from the optimizer about the main
   13865 loop in ceval.c (which has more than 1000 basic blocks).
   13866 
   13867 - The configure script now detects whether malloc(0) returns a NULL
   13868 pointer or a valid block (of length zero).  This avoids the nonsense
   13869 of always adding one byte to all malloc() arguments on most platforms.
   13870 
   13871 - The configure script has a new option, --with-dec-threads, to enable
   13872 DEC threads on DEC Alpha platforms.  Also, --with-threads is now an
   13873 alias for --with-thread (this was the Most Common Typo in configure
   13874 arguments).
   13875 
   13876 - Many changes in Doc/Makefile; amongst others, latex2html is now used
   13877 to generate HTML from all latex documents.
   13878 
   13879 
   13880 Change to the Python/C API
   13881 --------------------------
   13882 
   13883 - Because some interfaces have changed, the PYTHON_API macro has been
   13884 bumped.  Most extensions built for the old API version will still run,
   13885 but I can't guarantee this.  Python prints a warning message on
   13886 version mismatches; it dumps core when the version mismatch causes a
   13887 serious problem :-)
   13888 
   13889 - I've completed the Grand Renaming, with the help of Roger Masse and
   13890 Barry Warsaw.  This makes reading or debugging the code much easier.
   13891 Many other unrelated code reorganizations have also been carried out.
   13892 The allobjects.h header file is gone; instead, you would have to
   13893 include Python.h followed by rename2.h.  But you're better off running
   13894 Tools/scripts/fixcid.py -s Misc/RENAME on your source, so you can omit
   13895 the rename2.h; it will disappear in the next release.
   13896 
   13897 - Various and sundry small bugs in the "abstract" interfaces have been
   13898 fixed.  Thanks to all the (involuntary) testers of the Python 1.4
   13899 version!  Some new functions have been added, e.g. PySequence_List(o),
   13900 equivalent to list(o) in Python.
   13901 
   13902 - New API functions PyLong_FromUnsignedLong() and
   13903 PyLong_AsUnsignedLong().
   13904 
   13905 - The API functions in the file cgensupport.c are no longer
   13906 supported.  This file has been moved to Modules and is only ever
   13907 compiled when the SGI specific 'gl' module is built.
   13908 
   13909 - PyObject_Compare() can now raise an exception.  Check with
   13910 PyErr_Occurred().  The comparison function in an object type may also
   13911 raise an exception.
   13912 
   13913 - The slice interface uses an upper bound of INT_MAX when no explicit
   13914 upper bound is given (e.x. for a[1:]).  It used to ask the object for
   13915 its length and do the calculations.
   13916 
   13917 - Support for multiple independent interpreters.  See Doc/api.tex,
   13918 functions Py_NewInterpreter() and Py_EndInterpreter().  Since the
   13919 documentation is incomplete, also see the new Demo/pysvr example
   13920 (which shows how to use these in a threaded application) and the
   13921 source code.
   13922 
   13923 - There is now a Py_Finalize() function which "de-initializes"
   13924 Python.  It is possible to completely restart the interpreter
   13925 repeatedly by calling Py_Finalize() followed by Py_Initialize().  A
   13926 change of functionality in Py_Initialize() means that it is now a
   13927 fatal error to call it while the interpreter is already initialized.
   13928 The old, half-hearted Py_Cleanup() routine is gone.  Use of Py_Exit()
   13929 is deprecated (it is nothing more than Py_Finalize() followed by
   13930 exit()).
   13931 
   13932 - There are no known memory leaks left.  While Py_Finalize() doesn't
   13933 free *all* allocated memory (some of it is hard to track down),
   13934 repeated calls to Py_Finalize() and Py_Initialize() do not create
   13935 unaccessible heap blocks.
   13936 
   13937 - There is now explicit per-thread state.  (Inspired by, but not the
   13938 same as, Greg Stein's free threading patches.)
   13939 
   13940 - There is now better support for threading C applications.  There are
   13941 now explicit APIs to manipulate the interpreter lock.  Read the source
   13942 or the Demo/pysvr example; the new functions are
   13943 PyEval_{Acquire,Release}{Lock,Thread}().
   13944 
   13945 - The test macro DEBUG has changed to Py_DEBUG, to avoid interference
   13946 with other libraries' DEBUG macros.  Likewise for any other test
   13947 macros that didn't yet start with Py_.
   13948 
   13949 - New wrappers around malloc() and friends: Py_Malloc() etc. call
   13950 malloc() and call PyErr_NoMemory() when it fails; PyMem_Malloc() call
   13951 just malloc().  Use of these wrappers could be essential if multiple
   13952 memory allocators exist (e.g. when using certain DLL setups under
   13953 Windows).  (Idea by Jim Fulton.)
   13954 
   13955 - New C API PyImport_Import() which uses whatever __import__() hook
   13956 that is installed for the current execution environment.  By Jim
   13957 Fulton.
   13958 
   13959 - It is now possible for an extension module's init function to fail
   13960 non-fatally, by calling one of the PyErr_* functions and returning.
   13961 
   13962 - The PyInt_AS_LONG() and PyFloat_AS_DOUBLE() macros now cast their
   13963 argument to the proper type, like the similar PyString macros already
   13964 did.  (Suggestion by Marc-Andre Lemburg.)  Similar for PyList_GET_SIZE
   13965 and PyList_GET_ITEM.
   13966 
   13967 - Some of the Py_Get* function, like Py_GetVersion() (but not yet
   13968 Py_GetPath()) are now declared as returning a const char *.  (More
   13969 should follow.)
   13970 
   13971 - Changed the run-time library to check for exceptions after object
   13972 comparisons.  PyObject_Compare() can now return an exception; use
   13973 PyErr_Occurred() to check (there is *no* special return value).
   13974 
   13975 - PyFile_WriteString() and Py_Flushline() now return error indicators
   13976 instead of clearing exceptions.  This fixes an obscure bug where using
   13977 these would clear a pending exception, discovered by Just van Rossum.
   13978 
   13979 - There's a new function, PyArg_ParseTupleAndKeywords(), which parses
   13980 an argument list including keyword arguments.  Contributed by Geoff
   13981 Philbrick.
   13982 
   13983 - PyArg_GetInt() is gone.
   13984 
   13985 - It's no longer necessary to include graminit.h when calling one of
   13986 the extended parser API functions.  The three public grammar start
   13987 symbols are now in Python.h as Py_single_input, Py_file_input, and
   13988 Py_eval_input.
   13989 
   13990 - The CObject interface has a new function,
   13991 PyCObject_Import(module, name).  It calls PyCObject_AsVoidPtr()
   13992 on the object referenced by "module.name".
   13993 
   13994 
   13995 Tkinter
   13996 -------
   13997 
   13998 - On popular demand, _tkinter once again installs a hook for readline
   13999 that processes certain Tk events while waiting for the user to type
   14000 (using PyOS_InputHook).
   14001 
   14002 - A patch by Craig McPheeters plugs the most obnoxious memory leaks,
   14003 caused by command definitions referencing widget objects beyond their
   14004 lifetime.
   14005 
   14006 - New standard dialog modules: tkColorChooser.py, tkCommonDialog.py,
   14007 tkMessageBox.py, tkFileDialog.py, tkSimpleDialog.py These interface
   14008 with the new Tk dialog scripts, and provide more "native platform"
   14009 style file selection dialog boxes on some platforms.  Contributed by
   14010 Fredrik Lundh.
   14011 
   14012 - Tkinter.py: when the first Tk object is destroyed, it sets the
   14013 hiddel global _default_root to None, so that when another Tk object is
   14014 created it becomes the new default root.  Other miscellaneous
   14015 changes and fixes.
   14016 
   14017 - The Image class now has a configure method.
   14018 
   14019 - Added a bunch of new winfo options to Tkinter.py; we should now be
   14020 up to date with Tk 4.2.  The new winfo options supported are:
   14021 mananger, pointerx, pointerxy, pointery, server, viewable, visualid,
   14022 visualsavailable.
   14023 
   14024 - The broken bind() method on Canvas objects defined in the Canvas.py
   14025 module has been fixed.  The CanvasItem and Group classes now also have
   14026 an unbind() method.
   14027 
   14028 - The problem with Tkinter.py falling back to trying to import
   14029 "tkinter" when "_tkinter" is not found has been fixed -- it no longer
   14030 tries "tkinter", ever.  This makes diagnosing the problem "_tkinter
   14031 not configured" much easier and will hopefully reduce the newsgroup
   14032 traffic on this topic.
   14033 
   14034 - The ScrolledText module once again supports the 'cnf' parameter, to
   14035 be compatible with the examples in Mark Lutz' book (I know, I know,
   14036 too late...)
   14037 
   14038 - The _tkinter.c extension module has been revamped.  It now support
   14039 Tk versions 4.1 through 8.0; support for 4.0 has been dropped.  It
   14040 works well under Windows and Mac (with the latest Tk ports to those
   14041 platforms).  It also supports threading -- it is safe for one
   14042 (Python-created) thread to be blocked in _tkinter.mainloop() while
   14043 other threads modify widgets.  To make the changes visible, those
   14044 threads must use update_idletasks()method.  (The patch for threading
   14045 in 1.5a3 was broken; in 1.5a4, it is back in a different version,
   14046 which requires access to the Tcl sources to get it to work -- hence it
   14047 is disabled by default.)
   14048 
   14049 - A bug in _tkinter.c has been fixed, where Split() with a string
   14050 containing an unmatched '"' could cause an exception or core dump.
   14051 
   14052 - Unfortunately, on Windows and Mac, Tk 8.0 no longer supports
   14053 CreateFileHandler, so _tkinter.createfilehandler is not available on
   14054 those platforms when using Tk 8.0 or later.  I will have to rethink
   14055 how to interface with Tcl's lower-level event mechanism, or with its
   14056 channels (which are like Python's file-like objects).  Jack Jansen has
   14057 provided a fix for the Mac, so createfilehandler *is* actually
   14058 supported there; maybe I can adapt his fix for Windows.
   14059 
   14060 
   14061 Tools and Demos
   14062 ---------------
   14063 
   14064 - A new regression test suite is provided, which tests most of the
   14065 standard and built-in modules.  The regression test is run by invoking
   14066 the script Lib/test/regrtest.py.  Barry Warsaw wrote the test harnass;
   14067 he and Roger Masse contributed most of the new tests.
   14068 
   14069 - New tool: faqwiz -- the CGI script that is used to maintain the
   14070 Python FAQ (http://grail.cnri.reston.va.us/cgi-bin/faqw.py).  In
   14071 Tools/faqwiz.
   14072 
   14073 - New tool: webchecker -- a simple extensible web robot that, when
   14074 aimed at a web server, checks that server for dead links.  Available
   14075 are a command line utility as well as a Tkinter based GUI version.  In
   14076 Tools/webchecker.  A simplified version of this program is dissected
   14077 in my article in O'Reilly's WWW Journal, the issue on Scripting
   14078 Languages (Vol 2, No 2); Scripting the Web with Python (pp 97-120).
   14079 Includes a parser for robots.txt files by Skip Montanaro.
   14080 
   14081 - New small tools: cvsfiles.py (prints a list of all files under CVS
   14082 n a particular directory tree), treesync.py (a rather Guido-specific
   14083 script to synchronize two source trees, one on Windows NT, the other
   14084 one on Unix under CVS but accessible from the NT box), and logmerge.py
   14085 (sort a collection of RCS or CVS logs by date).  In Tools/scripts.
   14086 
   14087 - The freeze script now also works under Windows (NT).  Another
   14088 feature allows the -p option to be pointed at the Python source tree
   14089 instead of the installation prefix.  This was loosely based on part of
   14090 xfreeze by Sam Rushing and Bill Tutt.
   14091 
   14092 - New examples (Demo/extend) that show how to use the generic
   14093 extension makefile (Misc/Makefile.pre.in).
   14094 
   14095 - Tools/scripts/h2py.py now supports C++ comments.
   14096 
   14097 - Tools/scripts/pystone.py script is upgraded to version 1.1; there
   14098 was a bug in version 1.0 (distributed with Python 1.4) that leaked
   14099 memory.  Also, in 1.1, the LOOPS variable is incremented to 10000.
   14100 
   14101 - Demo/classes/Rat.py completely rewritten by Sjoerd Mullender.
   14102 
   14103 
   14104 Windows (NT and 95)
   14105 -------------------
   14106 
   14107 - New project files for Developer Studio (Visual C++) 5.0 for Windows
   14108 NT (the old VC++ 4.2 Makefile is also still supported, but will
   14109 eventually be withdrawn due to its bulkiness).
   14110 
   14111 - See the note on the new module search path in the "Miscellaneous" section 
   14112 above.
   14113 
   14114 - Support for Win32s (the 32-bit Windows API under Windows 3.1) is
   14115 basically withdrawn.  If it still works for you, you're lucky.
   14116 
   14117 - There's a new extension module, msvcrt.c, which provides various 
   14118 low-level operations defined in the Microsoft Visual C++ Runtime Library.  
   14119 These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and 
   14120 console I/O functions like kbhit(), getch() and putch().
   14121 
   14122 - The -u option not only sets the standard I/O streams to unbuffered
   14123 status, but also sets them in binary mode.  (This can also be done
   14124 using msvcrt.setmode(), by the way.)
   14125 
   14126 - The, sys.prefix and sys.exec_prefix variables point to the directory 
   14127 where Python is installed, or to the top of the source tree, if it was run 
   14128 from there.
   14129 
   14130 - The various os.path modules (posixpath, ntpath, macpath) now support
   14131 passing more than two arguments to the join() function, so
   14132 os.path.join(a, b, c) is the same as os.path.join(a, os.path.join(b,
   14133 c)).
   14134 
   14135 - The ntpath module (normally used as os.path) supports ~ to $HOME 
   14136 expansion in expanduser().
   14137 
   14138 - The freeze tool now works on Windows.
   14139 
   14140 - See also the Tkinter category for a sad note on
   14141 _tkinter.createfilehandler().
   14142 
   14143 - The truncate() method for file objects now works on Windows.
   14144 
   14145 - Py_Initialize() is no longer called when the DLL is loaded.  You
   14146 must call it yourself.
   14147 
   14148 - The time module's clock() function now has good precision through
   14149 the use of the Win32 API QueryPerformanceCounter().
   14150 
   14151 - Mark Hammond will release Python 1.5 versions of PythonWin and his
   14152 other Windows specific code: the win32api extensions, COM/ActiveX
   14153 support, and the MFC interface.
   14154 
   14155 
   14156 Mac
   14157 ---
   14158 
   14159 - As always, the Macintosh port will be done by Jack Jansen.  He will
   14160 make a separate announcement for the Mac specific source code and the
   14161 binary distribution(s) when these are ready.
   14162 
   14163 
   14164 ======================================================================
   14165 
   14166 
   14167 =====================================
   14168 ==> Release 1.4 (October 25 1996) <==
   14169 =====================================
   14170 
   14171 (Starting in reverse chronological order:)
   14172 
   14173 - Changed disclaimer notice.
   14174 
   14175 - Added SHELL=/bin/sh to Misc/Makefile.pre.in -- some Make versions
   14176 default to the user's login shell.
   14177 
   14178 - In Lib/tkinter/Tkinter.py, removed bogus binding of <Delete> in Text
   14179 widget, and bogus bspace() function.
   14180 
   14181 - In Lib/cgi.py, bumped __version__ to 2.0 and restored a truncated
   14182 paragraph.
   14183 
   14184 - Fixed the NT Makefile (PC/vc40.mak) for VC 4.0 to set /MD for all
   14185 subprojects, and to remove the (broken) experimental NumPy
   14186 subprojects.
   14187 
   14188 - In Lib/py_compile.py, cast mtime to long() so it will work on Mac
   14189 (where os.stat() returns mtimes as floats.)
   14190 - Set self.rfile unbuffered (like self.wfile) in SocketServer.py, to
   14191 fix POST in CGIHTTPServer.py.
   14192 
   14193 - Version 2.83 of Misc/python-mode.el for Emacs is included.
   14194 
   14195 - In Modules/regexmodule.c, fixed symcomp() to correctly handle a new
   14196 group starting immediately after a group tag.
   14197 
   14198 - In Lib/SocketServer.py, changed the mode for rfile to unbuffered.
   14199 
   14200 - In Objects/stringobject.c, fixed the compare function to do the
   14201 first char comparison in unsigned mode, for consistency with the way
   14202 other characters are compared by memcmp().
   14203 
   14204 - In Lib/tkinter/Tkinter.py, fixed Scale.get() to support floats.
   14205 
   14206 - In Lib/urllib.py, fix another case where openedurl wasn't set.
   14207 
   14208 (XXX Sorry, the rest is in totally random order.  No time to fix it.)
   14209 
   14210 - SyntaxError exceptions detected during code generation
   14211 (e.g. assignment to an expression) now include a line number.
   14212 
   14213 - Don't leave trailing / or \ in script directory inserted in front of
   14214 sys.path.
   14215 
   14216 - Added a note to Tools/scripts/classfix.py abouts its historical
   14217 importance.
   14218 
   14219 - Added Misc/Makefile.pre.in, a universal Makefile for extensions
   14220 built outside the distribution.
   14221 
   14222 - Rewritten Misc/faq2html.py, by Ka-Ping Yee.
   14223 
   14224 - Install shared modules with mode 555 (needed for performance on some
   14225 platforms).
   14226 
   14227 - Some changes to standard library modules to avoid calling append()
   14228 with more than one argument -- while supported, this should be
   14229 outlawed, and I don't want to set a bad example.
   14230 
   14231 - bdb.py (and hence pdb.py) supports calling run() with a code object
   14232 instead of a code string.
   14233 
   14234 - Fixed an embarrassing bug cgi.py which prevented correct uploading
   14235 of binary files from Netscape (which doesn't distinguish between
   14236 binary and text files).  Also added dormant logging support, which
   14237 makes it easier to debug the cgi module itself.
   14238 
   14239 - Added default writer to constructor of NullFormatter class.
   14240 
   14241 - Use binary mode for socket.makefile() calls in ftplib.py.
   14242 
   14243 - The ihooks module no longer "installs" itself upon import -- this
   14244 was an experimental feature that helped ironing out some bugs but that
   14245 slowed down code that imported it without the need to install it
   14246 (e.g. the rexec module).  Also close the file in some cases and add
   14247 the __file__ attribute to loaded modules.
   14248 
   14249 - The test program for mailbox.py is now more useful.
   14250 
   14251 - Added getparamnames() to Message class in mimetools.py -- it returns
   14252 the names of parameters to the content-type header.
   14253 
   14254 - Fixed a typo in ni that broke the loop stripping "__." from names.
   14255 
   14256 - Fix sys.path[0] for scripts run via pdb.py's new main program.
   14257 
   14258 - profile.py can now also run a script, like pdb.
   14259 
   14260 - Fix a small bug in pyclbr -- don't add names starting with _ when
   14261 emulating from ... import *.
   14262 
   14263 - Fixed a series of embarrassing typos in rexec's handling of standard
   14264 I/O redirection.  Added some more "safe" built-in modules: cmath,
   14265 errno, operator.
   14266 
   14267 - Fixed embarrassing typo in shelve.py.
   14268 
   14269 - Added SliceType and EllipsisType to types.py.
   14270 
   14271 - In urllib.py, added handling for error 301 (same as 302); added
   14272 geturl() method to get the URL after redirection.
   14273 
   14274 - Fixed embarrassing typo in xdrlib.py.  Also fixed typo in Setup.in
   14275 for _xdrmodule.c and removed redundant #include from _xdrmodule.c.
   14276 
   14277 - Fixed bsddbmodule.c to add binary mode indicator on platforms that
   14278 have it.  This should make it working on Windows NT.
   14279 
   14280 - Changed last uses of #ifdef NT to #ifdef MS_WINDOWS or MS_WIN32,
   14281 whatever applies.  Also rationalized some other tests for various MS
   14282 platforms.
   14283 
   14284 - Added the sources for the NT installer script used for Python
   14285 1.4beta3.  Not tested with this release, but better than nothing.
   14286 
   14287 - A compromise in pickle's defenses against Trojan horses: a
   14288 user-defined function is now okay where a class is expected.  A
   14289 built-in function is not okay, to prevent pickling something that
   14290 will execute os.system("rm -f *") when unpickling.
   14291 
   14292 - dis.py will print the name of local variables referenced by local
   14293 load/store/delete instructions.
   14294 
   14295 - Improved portability of SimpleHTTPServer module to non-Unix
   14296 platform.
   14297 
   14298 - The thread.h interface adds an extra argument to down_sema().  This
   14299 only affects other C code that uses thread.c; the Python thread module
   14300 doesn't use semaphores (which aren't provided on all platforms where
   14301 Python threads are supported).  Note: on NT, this change is not
   14302 implemented.
   14303 
   14304 - Fixed some typos in abstract.h; corrected signature of
   14305 PyNumber_Coerce, added PyMapping_DelItem.  Also fixed a bug in
   14306 abstract.c's PyObject_CallMethod().
   14307 
   14308 - apply(classname, (), {}) now works even if the class has no
   14309 __init__() method.
   14310 
   14311 - Implemented complex remainder and divmod() (these would dump core!).
   14312 Conversion of complex numbers to int, long int or float now raises an
   14313 exception, since there is no meaningful way to do it without losing
   14314 information.
   14315 
   14316 - Fixed bug in built-in complex() function which gave the wrong result
   14317 for two real arguments.
   14318 
   14319 - Change the hash algorithm for strings -- the multiplier is now
   14320 1000003 instead of 3, which gives better spread for short strings.
   14321 
   14322 - New default path for Windows NT, the registry structure now supports
   14323 default paths for different install packages.  (Mark Hammond -- the
   14324 next PythonWin release will use this.)
   14325 
   14326 - Added more symbols to the python_nt.def file.
   14327 
   14328 - When using GNU readline, set rl_readline_name to "python".
   14329 
   14330 - The Ellipses built-in name has been renamed to Ellipsis -- this is
   14331 the correct singular form.  Thanks to Ka-Ping Yee, who saved us from
   14332 eternal embarrassment.
   14333 
   14334 - Bumped the PYTHON_API_VERSION to 1006, due to the Ellipses ->
   14335 Ellipsis name change.
   14336 
   14337 - Updated the library reference manual.  Added documentation of
   14338 restricted mode (rexec, Bastion) and the formatter module (for use
   14339 with the htmllib module).  Fixed the documentation of htmllib
   14340 (finally).
   14341 
   14342 - The reference manual is now maintained in FrameMaker.
   14343 
   14344 - Upgraded scripts Doc/partparse.py and Doc/texi2html.py.
   14345 
   14346 - Slight improvements to Doc/Makefile.
   14347 
   14348 - Added fcntl.lockf(). This should be used for Unix file locking
   14349 instead of the posixfile module; lockf() is more portable.
   14350 
   14351 - The getopt module now supports long option names, thanks to Lars
   14352 Wizenius.
   14353 
   14354 - Plenty of changes to Tkinter and Canvas, mostly due to Fred Drake
   14355 and Nils Fischbeck.
   14356 
   14357 - Use more bits of time.time() in whrandom's default seed().
   14358 
   14359 - Performance hack for regex module's regs attribute.
   14360 
   14361 - Don't close already closed socket in socket module.
   14362 
   14363 - Correctly handle separators containing embedded nulls in
   14364 strop.split, strop.find and strop.rfind.  Also added more detail to
   14365 error message for strop.atoi and friends.
   14366 
   14367 - Moved fallback definition for hypot() to Python/hypot.c.
   14368 
   14369 - Added fallback definition for strdup, in Python/strdup.c.
   14370 
   14371 - Fixed some bugs where a function would return 0 to indicate an error
   14372 where it should return -1.
   14373 
   14374 - Test for error returned by time.localtime(), and rationalized its MS
   14375 tests.
   14376 
   14377 - Added Modules/Setup.local file, which is processed after Setup.
   14378 
   14379 - Corrected bug in toplevel Makefile.in -- execution of regen script
   14380 would not use the right PATH and PYTHONPATH.
   14381 
   14382 - Various and sundry NeXT configuration changes (sigh).
   14383 
   14384 - Support systems where libreadline needs neither termcap nor curses.
   14385 
   14386 - Improved ld_so_aix script and python.exp file (for AIX).
   14387 
   14388 - More stringent test for working <stdarg.h> in configure script.
   14389 
   14390 - Removed Demo/www subdirectory -- it was totally out of date.
   14391 
   14392 - Improved demos and docs for Fred Drake's parser module; fixed one
   14393 typo in the module itself.
   14394 
   14395 
   14396 =========================================
   14397 ==> Release 1.4beta3 (August 26 1996) <==
   14398 =========================================
   14399 
   14400 
   14401 (XXX This is less readable that it should.  I promise to restructure
   14402 it for the final 1.4 release.)
   14403 
   14404 
   14405 What's new in 1.4beta3 (since beta2)?
   14406 -------------------------------------
   14407 
   14408 - Name mangling to implement a simple form of class-private variables.
   14409 A name of the form "__spam" can't easily be used outside the class.
   14410 (This was added in 1.4beta3, but left out of the 1.4beta3 release
   14411 message.)
   14412 
   14413 - In urllib.urlopen(): HTTP URLs containing user:passwd@host are now
   14414 handled correctly when using a proxy server.
   14415 
   14416 - In ntpath.normpath(): don't truncate to 8+3 format.
   14417 
   14418 - In mimetools.choose_boundary(): don't die when getuid() or getpid()
   14419 aren't defined.
   14420 
   14421 - Module urllib: some optimizations to (un)quoting.
   14422 
   14423 - New module MimeWriter for writing MIME documents.
   14424 
   14425 - More changes to formatter module.
   14426 
   14427 - The freeze script works once again and is much more robust (using
   14428 sys.prefix etc.).  It also supports a -o option to specify an
   14429 output directory.
   14430 
   14431 - New module whichdb recognizes dbm, gdbm and bsddb/dbhash files.
   14432 
   14433 - The Doc/Makefile targets have been reorganized somewhat to remove the 
   14434 insistence on always generating PostScript.
   14435 
   14436 - The texinfo to html filter (Doc/texi2html.py) has been improved somewhat.
   14437 
   14438 - "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing 
   14439 name conflict on the Mac.
   14440 
   14441 - Linking a module compiled with a different setting for Py_TRACE_REFS now 
   14442 generates a linker error rather than a core dump.
   14443 
   14444 - The cgi module has a new convenience function print_exception(), which 
   14445 formats a python exception using HTML.  It also fixes a bug in the 
   14446 compatibility code and adds a dubious feature which makes it possible to 
   14447 have two query strings, one in the URL and one in the POST data.
   14448 
   14449 - A subtle change in the unpickling of class instances makes it possible 
   14450 to unpickle in restricted execution mode, where the __dict__ attribute is 
   14451 not available (but setattr() is).
   14452 
   14453 - Documentation for os.path.splitext() (== posixpath.splitext()) has been 
   14454 cleared up.  It splits at the *last* dot.
   14455 
   14456 - posixfile locking is now also correctly supported on AIX.
   14457 
   14458 - The tempfile module once again honors an initial setting of tmpdir.  It 
   14459 now works on Windows, too.
   14460 
   14461 - The traceback module has some new functions to extract, format and print 
   14462 the active stack.
   14463 
   14464 - Some translation functions in the urllib module have been made a little 
   14465 less sluggish.
   14466 
   14467 - The addtag_* methods for Canvas widgets in Tkinter as well as in the 
   14468 separate Canvas class have been fixed so they actually do something 
   14469 meaningful.
   14470 
   14471 - A tiny _test() function has been added to Tkinter.py.
   14472 
   14473 - A generic Makefile for dynamically loaded modules is provided in the Misc 
   14474 subdirectory (Misc/gMakefile).
   14475 
   14476 - A new version of python-mode.el for Emacs is provided.  See
   14477 http://www.python.org/ftp/emacs/pmdetails.html for details.  The
   14478 separate file pyimenu.el is no longer needed, imenu support is folded
   14479 into python-mode.el.
   14480 
   14481 - The configure script can finally correctly find the readline library in a 
   14482 non-standard location.  The LDFLAGS variable is passed on the Makefiles 
   14483 from the configure script.
   14484 
   14485 - Shared libraries are now installed as programs (i.e. with executable 
   14486 permission).  This is required on HP-UX and won't hurt on other systems.
   14487 
   14488 - The objc.c module is no longer part of the distribution.  Objective-C 
   14489 support may become available as contributed software on the ftp site.
   14490 
   14491 - The sybase module is no longer part of the distribution.  A much
   14492 improved sybase module is available as contributed software from the
   14493 ftp site.
   14494 
   14495 - _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and 
   14496 Mac (don't use unpatched Tcl/Tk!).  The default line in the Setup.in file 
   14497 now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0.
   14498 
   14499 - In Setup, you can now write "*shared*" instead of "*noconfig*", and you 
   14500 can use *.so and *.sl as shared libraries.
   14501 
   14502 - Some more fidgeting for AIX shared libraries.
   14503 
   14504 - The mpz module is now compatible with GMP 2.x.  (Not tested by me.)
   14505 (Note -- a complete replacement by Niels Mo"ller, called gpmodule, is
   14506 available from the contrib directory on the ftp site.)
   14507 
   14508 - A warning is written to sys.stderr when a __del__ method raises an 
   14509 exception (formerly, such exceptions were completely ignored).
   14510 
   14511 - The configure script now defines HAVE_OLD_CPP if the C preprocessor is 
   14512 incapable of ANSI style token concatenation and stringification.
   14513 
   14514 - All source files (except a few platform specific modules) are once again 
   14515 compatible with K&R C compilers as well as ANSI compilers.  In particular,
   14516 ANSI-isms have been removed or made conditional in complexobject.c, 
   14517 getargs.c and operator.c.
   14518 
   14519 - The abstract object API has three new functions, PyObject_DelItem, 
   14520 PySequence_DelItem, and PySequence_DelSlice.
   14521 
   14522 - The operator module has new functions delitem and delslice, and the 
   14523 functions "or" and "and" are renamed to "or_" and "and_" (since "or" and 
   14524 "and" are reserved words).  ("__or__" and "__and__" are unchanged.)
   14525 
   14526 - The environment module is no longer supported; putenv() is now a function 
   14527 in posixmodule (also under NT).
   14528 
   14529 - Error in filter(<function>, "") has been fixed.
   14530 
   14531 - Unrecognized keyword arguments raise TypeError, not KeyError.
   14532 
   14533 - Better portability, fewer bugs and memory leaks, fewer compiler warnings, 
   14534 some more documentation.
   14535 
   14536 - Bug in float power boundary case (0.0 to the negative integer power) 
   14537 fixed.
   14538 
   14539 - The test of negative number to the float power has been moved from the 
   14540 built-in pow() function to floatobject.c (so complex numbers can yield the
   14541 correct result).
   14542 
   14543 - The bug introduced in beta2 where shared libraries loaded (using 
   14544 dlopen()) from the current directory would fail, has been fixed.
   14545 
   14546 - Modules imported as shared libraries now also have a __file__ attribute, 
   14547 giving the filename from which they were loaded.  The only modules without 
   14548 a __file__ attribute now are built-in modules.
   14549 
   14550 - On the Mac, dynamically loaded modules can end in either ".slb" or 
   14551 ".<platform>.slb" where <platform> is either "CFM68K" or "ppc".  The ".slb" 
   14552 extension should only be used for "fat" binaries.
   14553 
   14554 - C API addition: marshal.c now supports 
   14555 PyMarshal_WriteObjectToString(object).
   14556 
   14557 - C API addition: getargs.c now supports
   14558 PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...)
   14559 to parse keyword arguments.
   14560 
   14561 - The PC versioning scheme (sys.winver) has changed once again.  the 
   14562 version number is now "<digit>.<digit>.<digit>.<apiversion>", where the 
   14563 first three <digit>s are the Python version (e.g. "1.4.0" for Python 1.4, 
   14564 "1.4.1" for Python 1.4.1 -- the beta level is not included) and 
   14565 <apiversion> is the four-digit PYTHON_API_VERSION (currently 1005).
   14566 
   14567 - h2py.py accepts whitespace before the # in CPP directives
   14568 
   14569 - On Solaris 2.5, it should now be possible to use either Posix threads or 
   14570 Solaris threads (XXX: how do you select which is used???).  (Note: the 
   14571 Python pthreads interface doesn't fully support semaphores yet -- anyone 
   14572 care to fix this?)
   14573 
   14574 - Thread support should now work on AIX, using either DCE threads or 
   14575 pthreads.
   14576 
   14577 - New file Demo/sockets/unicast.py
   14578 
   14579 - Working Mac port, with CFM68K support, with Tk 4.1 support (though not 
   14580 both) (XXX)
   14581 
   14582 - New project setup for PC port, now compatible with PythonWin, with 
   14583 _tkinter and NumPy support (XXX)
   14584 
   14585 - New module site.py (XXX)
   14586 
   14587 - New module xdrlib.py and optional support module _xdrmodule.c (XXX)
   14588 
   14589 - parser module adapted to new grammar, complete w/ Doc & Demo (XXX)
   14590 
   14591 - regen script fixed (XXX)
   14592 
   14593 - new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX)
   14594 
   14595 - testall now also tests math module (XXX)
   14596 
   14597 - string.atoi c.s. now raise an exception for an empty input string.
   14598 
   14599 - At last, it is no longer necessary to define HAVE_CONFIG_H in order to 
   14600 have config.h included at various places.
   14601 
   14602 - Unrecognized keyword arguments now raise TypeError rather than KeyError.
   14603 
   14604 - The makesetup script recognizes files with extension .so or .sl as
   14605 (shared) libraries.
   14606 
   14607 - 'access' is no longer a reserved word, and all code related to its 
   14608 implementation is gone (or at least #ifdef'ed out).  This should make 
   14609 Python a little speedier too!
   14610 
   14611 - Performance enhancements suggested by Sjoerd Mullender.  This includes 
   14612 the introduction of two new optional function pointers in type object, 
   14613 getattro and setattro, which are like getattr and setattr but take a 
   14614 string object instead of a C string pointer.
   14615 
   14616 - New operations in string module: lstrip(s) and rstrip(s) strip whitespace 
   14617 only on the left or only on the right, A new optional third argument to 
   14618 split() specifies the maximum number of separators honored (so 
   14619 splitfields(s, sep, n) returns a list of at most n+1 elements).  (Since 
   14620 1.3, splitfields(s, None) is totally equivalent to split(s).)
   14621 string.capwords() has an optional second argument specifying the 
   14622 separator (which is passed to split()).
   14623 
   14624 - regsub.split() has the same addition as string.split().  regsub.splitx(s, 
   14625 sep, maxsep) implements the functionality that was regsub.split(s, 1) in 
   14626 1.4beta2 (return a list containing the delimiters as well as the words).
   14627 
   14628 - Final touch for AIX loading, rewritten Misc/AIX-NOTES.
   14629 
   14630 - In Modules/_tkinter.c, when using Tk 4.1 or higher, use className
   14631 argument to _tkinter.create() to set Tcl's argv0 variable, so X
   14632 resources use the right resource class again.
   14633 
   14634 - Add #undef fabs to Modules/mathmodule.c for macintosh.
   14635 
   14636 - Added some macro renames for AIX in Modules/operator.c.
   14637 
   14638 - Removed spurious 'E' from Doc/liberrno.tex.
   14639 
   14640 - Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new
   14641 Misc/gMakefile and new version of Misc/python-mode.el.
   14642 
   14643 - Fixed typo in Lib/ntpath.py (islink has "return false" which gives a
   14644 NameError).
   14645 
   14646 - Added missing "from types import *" to Lib/tkinter/Canvas.py.
   14647 
   14648 - Added hint about using default args for __init__ to pickle docs.
   14649 
   14650 - Corrected typo in Inclide/abstract.h: PySequence_Lenth ->
   14651 PySequence_Length.
   14652 
   14653 - Some improvements to Doc/texi2html.py.
   14654 
   14655 - In Python/import.c, Cast unsigned char * in struct _frozen to char *
   14656 in calls to rds_object().
   14657 
   14658 - In doc/ref4.tex, added note about scope of lambda bodies.
   14659 
   14660 What's new in 1.4beta2 (since beta1)?
   14661 -------------------------------------
   14662 
   14663 - Portability bug in the md5.h header solved.
   14664 
   14665 - The PC build procedure now really works, and sets sys.platform to a
   14666 meaningful value (a few things were botched in beta 1).  Lib/dos_8x3
   14667 is now a standard part of the distribution (alas).
   14668 
   14669 - More improvements to the installation procedure.  Typing "make install" 
   14670 now inserts the version number in the pathnames of almost everything 
   14671 installed, and creates the machine dependent modules (FCNTL.py etc.) if not 
   14672 supplied by the distribution.  (XXX There's still a problem with the latter 
   14673 because the "regen" script requires that Python is installed.  Some manual 
   14674 intervention may still be required.) (This has been fixed in 1.4beta3.)
   14675 
   14676 - New modules: errno, operator (XXX).
   14677 
   14678 - Changes for use with Numerical Python: built-in function slice() and
   14679 Ellipses object, and corresponding syntax:
   14680 
   14681 	x[lo:hi:stride]		==	x[slice(lo, hi, stride)]
   14682 	x[a, ..., z]		==	x[(a, Ellipses, z)]
   14683 
   14684 - New documentation for errno and cgi modules.
   14685 
   14686 - The directory containing the script passed to the interpreter is
   14687 inserted in from of sys.path; "." is no longer a default path
   14688 component.
   14689 
   14690 - Optional third string argument to string.translate() specifies
   14691 characters to delete.  New function string.maketrans() creates a
   14692 translation table for translate() or for regex.compile().
   14693 
   14694 - Module posix (and hence module os under Unix) now supports putenv().
   14695 Moreover, module os is enhanced so that if putenv() is supported,
   14696 assignments to os.environ entries make the appropriate putenv() call.
   14697 (XXX the putenv() implementation can leak a small amount of memory per
   14698 call.)
   14699 
   14700 - pdb.py can now be invoked from the command line to debug a script:
   14701 python pdb.py <script> <arg> ...
   14702 
   14703 - Much improved parseaddr() in rfc822.
   14704 
   14705 - In cgi.py, you can now pass an alternative value for environ to
   14706 nearly all functions.
   14707 
   14708 - You can now assign to instance variables whose name begins and ends
   14709 with '__'.
   14710 
   14711 - New version of Fred Drake's parser module and associates (token,
   14712 symbol, AST).
   14713 
   14714 - New PYTHON_API_VERSION value and .pyc file magic number (again!).
   14715 
   14716 - The "complex" internal structure type is now called "Py_complex" to
   14717 avoid name conflicts.
   14718 
   14719 - Numerous small bugs fixed.
   14720 
   14721 - Slight pickle speedups.
   14722 
   14723 - Some slight speedups suggested by Sjoerd (more coming in 1.4 final).
   14724 
   14725 - NeXT portability mods by Bill Bumgarner integrated.
   14726 
   14727 - Modules regexmodule.c, bsddbmodule.c and xxmodule.c have been
   14728 converted to new naming style.
   14729 
   14730 
   14731 What's new in 1.4beta1 (since 1.3)?
   14732 -----------------------------------
   14733 
   14734 - Added sys.platform and sys.exec_platform for Bill Janssen.
   14735 
   14736 - Installation has been completely overhauled.  "make install" now installs 
   14737 everything, not just the python binary.  Installation uses the install-sh 
   14738 script (borrowed from X11) to install each file.
   14739 
   14740 - New functions in the posix module: mkfifo, plock, remove (== unlink),
   14741 and ftruncate.  More functions are also available under NT.
   14742 
   14743 - New function in the fcntl module: flock.
   14744 
   14745 - Shared library support for FreeBSD.
   14746 
   14747 - The --with-readline option can now be used without a DIRECTORY argument, 
   14748 for systems where libreadline.* is in one of the standard places.  It is 
   14749 also possible for it to be a shared library.
   14750 
   14751 - The extension tkinter has been renamed to _tkinter, to avoid confusion 
   14752 with Tkinter.py oncase insensitive file systems.  It now supports Tk 4.1 as 
   14753 well as 4.0.
   14754 
   14755 - Author's change of address from CWI in Amsterdam, The Netherlands, to 
   14756 CNRI in Reston, VA, USA.
   14757 
   14758 - The math.hypot() function is now always available (if it isn't found in 
   14759 the C math library, Python provides its own implementation).
   14760 
   14761 - The latex documentation is now compatible with latex2e, thanks to David 
   14762 Ascher.
   14763 
   14764 - The expression x**y is now equivalent to pow(x, y).
   14765 
   14766 - The indexing expression x[a, b, c] is now equivalent to x[(a, b, c)].
   14767 
   14768 - Complex numbers are now supported.  Imaginary constants are written with 
   14769 a 'j' or 'J' prefix, general complex numbers can be formed by adding a real 
   14770 part to an imaginary part, like 3+4j.  Complex numbers are always stored in 
   14771 floating point form, so this is equivalent to 3.0+4.0j.  It is also 
   14772 possible to create complex numbers with the new built-in function 
   14773 complex(re, [im]).  For the footprint-conscious, complex number support can 
   14774 be disabled by defining the symbol WITHOUT_COMPLEX.
   14775 
   14776 - New built-in function list() is the long-awaited counterpart of tuple().
   14777 
   14778 - There's a new "cmath" module which provides the same functions as the 
   14779 "math" library but with complex arguments and results.  (There are very 
   14780 good reasons why math.sqrt(-1) still raises an exception -- you have to use 
   14781 cmath.sqrt(-1) to get 1j for an answer.)
   14782 
   14783 - The Python.h header file (which is really the same as allobjects.h except 
   14784 it disables support for old style names) now includes several more files, 
   14785 so you have to have fewer #include statements in the average extension.
   14786 
   14787 - The NDEBUG symbol is no longer used.  Code that used to be dependent on 
   14788 the presence of NDEBUG is now present on the absence of DEBUG.  TRACE_REFS 
   14789 and REF_DEBUG have been renamed to Py_TRACE_REFS and Py_REF_DEBUG, 
   14790 respectively.  At long last, the source actually compiles and links without 
   14791 errors when this symbol is defined.
   14792 
   14793 - Several symbols that didn't follow the new naming scheme have been 
   14794 renamed (usually by adding to rename2.h) to use a Py or _Py prefix.  There 
   14795 are no external symbols left without a Py or _Py prefix, not even those 
   14796 defined by sources that were incorporated from elsewhere (regexpr.c, 
   14797 md5c.c).  (Macros are a different story...)
   14798 
   14799 - There are now typedefs for the structures defined in config.c and 
   14800 frozen.c.
   14801 
   14802 - New PYTHON_API_VERSION value and .pyc file magic number.
   14803 
   14804 - New module Bastion.  (XXX)
   14805 
   14806 - Improved performance of StringIO module.
   14807 
   14808 - UserList module now supports + and * operators.
   14809 
   14810 - The binhex and binascii modules now actually work.
   14811 
   14812 - The cgi module has been almost totally rewritten and documented.
   14813 It now supports file upload and a new data type to handle forms more 
   14814 flexibly.
   14815 
   14816 - The formatter module (for use with htmllib) has been overhauled (again).
   14817 
   14818 - The ftplib module now supports passive mode and has doc strings.
   14819 
   14820 - In (ideally) all places where binary files are read or written, the file 
   14821 is now correctly opened in binary mode ('rb' or 'wb') so the code will work 
   14822 on Mac or PC.
   14823 
   14824 - Dummy versions of os.path.expandvars() and expanduser() are now provided 
   14825 on non-Unix platforms.
   14826 
   14827 - Module urllib now has two new functions url2pathname and pathname2url 
   14828 which turn local filenames into "file:..." URLs using the same rules as 
   14829 Netscape (why be different).  it also supports urlretrieve() with a 
   14830 pathname parameter, and honors the proxy environment variables (http_proxy 
   14831 etc.).  The URL parsing has been improved somewhat, too.
   14832 
   14833 - Micro improvements to urlparse.  Added urlparse.urldefrag() which 
   14834 removes a trailing ``#fragment'' if any.
   14835 
   14836 - The mailbox module now supports MH style message delimiters as well.
   14837 
   14838 - The mhlib module contains some new functionality: setcontext() to set the 
   14839 current folder and parsesequence() to parse a sequence as commonly passed 
   14840 to MH commands (e.g. 1-10 or last:5).
   14841 
   14842 - New module mimify for conversion to and from MIME format of email 
   14843 messages.
   14844 
   14845 - Module ni now automatically installs itself when first imported -- this 
   14846 is against the normal rule that modules should define classes and functions 
   14847 but not invoke them, but appears more useful in the case that two 
   14848 different, independent modules want to use ni's features.
   14849 
   14850 - Some small performance enhancements in module pickle.
   14851 
   14852 - Small interface change to the profile.run*() family of functions -- more 
   14853 sensible handling of return values.
   14854 
   14855 - The officially registered Mac creator for Python files is 'Pyth'.  This 
   14856 replaces 'PYTH' which was used before but never registered.
   14857 
   14858 - Added regsub.capwords().  (XXX)
   14859 
   14860 - Added string.capwords(), string.capitalize() and string.translate().  
   14861 (XXX)
   14862 
   14863 - Fixed an interface bug in the rexec module: it was impossible to pass a 
   14864 hooks instance to the RExec class.  rexec now also supports the dynamic 
   14865 loading of modules from shared libraries.  Some other interfaces have been 
   14866 added too.
   14867 
   14868 - Module rfc822 now caches the headers in a dictionary for more efficient 
   14869 lookup.
   14870 
   14871 - The sgmllib module now understands a limited number of SGML "shorthands" 
   14872 like <A/.../ for <A>...</A>.  (It's not clear that this was a good idea...)
   14873 
   14874 - The tempfile module actually tries a number of different places to find a 
   14875 usable temporary directory.  (This was prompted by certain Linux 
   14876 installations that appear to be missing a /usr/tmp directory.) [A bug in 
   14877 the implementation that would ignore a pre-existing tmpdir global has been 
   14878 fixed in beta3.]
   14879 
   14880 - Much improved and enhanved FileDialog module for Tkinter.
   14881 
   14882 - Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as 
   14883 well as Tk 4.1).
   14884 
   14885 - New socket interfaces include ntohs(), ntohl(), htons(), htonl(), and 
   14886 s.dup().  Sockets now work correctly on Windows.  On Windows, the built-in 
   14887 extension is called _socket and a wrapper module win/socket.py provides 
   14888 "makefile()" and "dup()" functionality.  On Windows, the select module 
   14889 works only with socket objects.
   14890 
   14891 - Bugs in bsddb module fixed (e.g. missing default argument values).
   14892 
   14893 - The curses extension now includes <ncurses.h> when available.
   14894 
   14895 - The gdbm module now supports opening databases in "fast" mode by 
   14896 specifying 'f' as the second character or the mode string.
   14897 
   14898 - new variables sys.prefix and sys.exec_prefix pass corresponding 
   14899 configuration options / Makefile variables to the Python programmer.
   14900 
   14901 - The ``new'' module now supports creating new user-defined classes as well 
   14902 as instances thereof.
   14903 
   14904 - The soundex module now sports get_soundex() to get the soundex value for an 
   14905 arbitrary string (formerly it would only do soundex-based string 
   14906 comparison) as well as doc strings.
   14907 
   14908 - New object type "cobject" to safely wrap void pointers for passing them 
   14909 between various extension modules.
   14910 
   14911 - More efficient computation of float**smallint.
   14912 
   14913 - The mysterious bug whereby "x.x" (two occurrences of the same 
   14914 one-character name) typed from the commandline would sometimes fail 
   14915 mysteriously.
   14916 
   14917 - The initialization of the readline function can now be invoked by a C 
   14918 extension through PyOS_ReadlineInit().
   14919 
   14920 - There's now an externally visible pointer PyImport_FrozenModules which 
   14921 can be changed by an embedding application.
   14922 
   14923 - The argument parsing functions now support a new format character 'D' to 
   14924 specify complex numbers.
   14925 
   14926 - Various memory leaks plugged and bugs fixed.
   14927 
   14928 - Improved support for posix threads (now that real implementations are 
   14929 beginning to apepar).  Still no fully functioning semaphores.
   14930 
   14931 - Some various and sundry improvements and new entries in the Tools 
   14932 directory.
   14933 
   14934 
   14935 =====================================
   14936 ==> Release 1.3 (13 October 1995) <==
   14937 =====================================
   14938 
   14939 Major change
   14940 ============
   14941 
   14942 Two words: Keyword Arguments.  See the first section of Chapter 12 of
   14943 the Tutorial.
   14944 
   14945 (The rest of this file is textually the same as the remaining sections
   14946 of that chapter.)
   14947 
   14948 
   14949 Changes to the WWW and Internet tools
   14950 =====================================
   14951 
   14952 The "htmllib" module has been rewritten in an incompatible fashion.
   14953 The new version is considerably more complete (HTML 2.0 except forms,
   14954 but including all ISO-8859-1 entity definitions), and easy to use.
   14955 Small changes to "sgmllib" have also been made, to better match the
   14956 tokenization of HTML as recognized by other web tools.
   14957 
   14958 A new module "formatter" has been added, for use with the new
   14959 "htmllib" module.
   14960 
   14961 The "urllib"and "httplib" modules have been changed somewhat to allow
   14962 overriding unknown URL types and to support authentication.  They now
   14963 use "mimetools.Message" instead of "rfc822.Message" to parse headers.
   14964 The "endrequest()" method has been removed from the HTTP class since
   14965 it breaks the interaction with some servers.
   14966 
   14967 The "rfc822.Message" class has been changed to allow a flag to be
   14968 passed in that says that the file is unseekable.
   14969 
   14970 The "ftplib" module has been fixed to be (hopefully) more robust on
   14971 Linux.
   14972 
   14973 Several new operations that are optionally supported by servers have
   14974 been added to "nntplib": "xover", "xgtitle", "xpath" and "date".
   14975 
   14976 Other Language Changes
   14977 ======================
   14978 
   14979 The "raise" statement now takes an optional argument which specifies
   14980 the traceback to be used when printing the exception's stack trace.
   14981 This must be a traceback object, such as found in "sys.exc_traceback".
   14982 When omitted or given as "None", the old behavior (to generate a stack
   14983 trace entry for the current stack frame) is used.
   14984 
   14985 The tokenizer is now more tolerant of alien whitespace.  Control-L in
   14986 the leading whitespace of a line resets the column number to zero,
   14987 while Control-R just before the end of the line is ignored.
   14988 
   14989 Changes to Built-in Operations
   14990 ==============================
   14991 
   14992 For file objects, "f.read(0)" and "f.readline(0)" now return an empty
   14993 string rather than reading an unlimited number of bytes.  For the
   14994 latter, omit the argument altogether or pass a negative value.
   14995 
   14996 A new system variable, "sys.platform", has been added.  It specifies
   14997 the current platform, e.g. "sunos5" or "linux1".
   14998 
   14999 The built-in functions "input()" and "raw_input()" now use the GNU
   15000 readline library when it has been configured (formerly, only
   15001 interactive input to the interpreter itself was read using GNU
   15002 readline).  The GNU readline library provides elaborate line editing
   15003 and history.  The Python debugger ("pdb") is the first beneficiary of
   15004 this change.
   15005 
   15006 Two new built-in functions, "globals()" and "locals()", provide access
   15007 to dictionaries containming current global and local variables,
   15008 respectively.  (These augment rather than replace "vars()", which
   15009 returns the current local variables when called without an argument,
   15010 and a module's global variables when called with an argument of type
   15011 module.)
   15012 
   15013 The built-in function "compile()" now takes a third possible value for
   15014 the kind of code to be compiled: specifying "'single'" generates code
   15015 for a single interactive statement, which prints the output of
   15016 expression statements that evaluate to something else than "None".
   15017 
   15018 Library Changes
   15019 ===============
   15020 
   15021 There are new module "ni" and "ihooks" that support importing modules
   15022 with hierarchical names such as "A.B.C".  This is enabled by writing
   15023 "import ni; ni.ni()" at the very top of the main program.  These
   15024 modules are amply documented in the Python source.
   15025 
   15026 The module "rexec" has been rewritten (incompatibly) to define a class
   15027 and to use "ihooks".
   15028 
   15029 The "string.split()" and "string.splitfields()" functions are now the
   15030 same function (the presence or absence of the second argument
   15031 determines which operation is invoked); similar for "string.join()"
   15032 and "string.joinfields()".
   15033 
   15034 The "Tkinter" module and its helper "Dialog" have been revamped to use
   15035 keyword arguments.  Tk 4.0 is now the standard.  A new module
   15036 "FileDialog" has been added which implements standard file selection
   15037 dialogs.
   15038 
   15039 The optional built-in modules "dbm" and "gdbm" are more coordinated
   15040 --- their "open()" functions now take the same values for their "flag"
   15041 argument, and the "flag" and "mode" argument have default values (to
   15042 open the database for reading only, and to create the database with
   15043 mode "0666" minuse the umask, respectively).  The memory leaks have
   15044 finally been fixed.
   15045 
   15046 A new dbm-like module, "bsddb", has been added, which uses the BSD DB
   15047 package's hash method.
   15048 
   15049 A portable (though slow) dbm-clone, implemented in Python, has been
   15050 added for systems where none of the above is provided.  It is aptly
   15051 dubbed "dumbdbm".
   15052 
   15053 The module "anydbm" provides a unified interface to "bsddb", "gdbm",
   15054 "dbm", and "dumbdbm", choosing the first one available.
   15055 
   15056 A new extension module, "binascii", provides a variety of operations
   15057 for conversion of text-encoded binary data.
   15058 
   15059 There are three new or rewritten companion modules implemented in
   15060 Python that can encode and decode the most common such formats: "uu"
   15061 (uuencode), "base64" and "binhex".
   15062 
   15063 A module to handle the MIME encoding quoted-printable has also been
   15064 added: "quopri".
   15065 
   15066 The parser module (which provides an interface to the Python parser's
   15067 abstract syntax trees) has been rewritten (incompatibly) by Fred
   15068 Drake.  It now lets you change the parse tree and compile the result!
   15069 
   15070 The \code{syslog} module has been upgraded and documented.
   15071 
   15072 Other Changes
   15073 =============
   15074 
   15075 The dynamic module loader recognizes the fact that different filenames
   15076 point to the same shared library and loads the library only once, so
   15077 you can have a single shared library that defines multiple modules.
   15078 (SunOS / SVR4 style shared libraries only.)
   15079 
   15080 Jim Fulton's ``abstract object interface'' has been incorporated into
   15081 the run-time API.  For more detailes, read the files
   15082 "Include/abstract.h" and "Objects/abstract.c".
   15083 
   15084 The Macintosh version is much more robust now.
   15085 
   15086 Numerous things I have forgotten or that are so obscure no-one will
   15087 notice them anyway :-)
   15088 
   15089 
   15090 ===================================
   15091 ==> Release 1.2 (13 April 1995) <==
   15092 ===================================
   15093 
   15094 - Changes to Misc/python-mode.el:
   15095   - Wrapping and indentation within triple quote strings should work
   15096     properly now.
   15097   - `Standard' bug reporting mechanism (use C-c C-b)
   15098   - py-mark-block was moved to C-c C-m
   15099   - C-c C-v shows you the python-mode version
   15100   - a basic python-font-lock-keywords has been added for Emacs 19
   15101     font-lock colorizations.
   15102   - proper interaction with pending-del and del-sel modes.
   15103   - New py-electric-colon (:) command for improved outdenting.  Also
   15104     py-indent-line (TAB) should handle outdented lines better.
   15105   - New commands py-outdent-left (C-c C-l) and py-indent-right (C-c C-r)
   15106 
   15107 - The Library Reference has been restructured, and many new and
   15108 existing modules are now documented, in particular the debugger and
   15109 the profiler, as well as the persistency and the WWW/Internet support
   15110 modules.
   15111 
   15112 - All known bugs have been fixed.  For example the pow(2,2,3L) bug on
   15113 Linux has been fixed.  Also the re-entrancy problems with __del__ have
   15114 been fixed.
   15115 
   15116 - All known memory leaks have been fixed.
   15117 
   15118 - Phase 2 of the Great Renaming has been executed.  The header files
   15119 now use the new names (PyObject instead of object, etc.).  The linker
   15120 also sees the new names.  Most source files still use the old names,
   15121 by virtue of the rename2.h header file.  If you include Python.h, you
   15122 only see the new names.  Dynamically linked modules have to be
   15123 recompiled.  (Phase 3, fixing the rest of the sources, will be
   15124 executed gradually with the release later versions.)
   15125 
   15126 - The hooks for implementing "safe-python" (better called "restricted
   15127 execution") are in place.  Specifically, the import statement is
   15128 implemented by calling the built-in function __import__, and the
   15129 built-in names used in a particular scope are taken from the
   15130 dictionary __builtins__ in that scope's global dictionary.  See also
   15131 the new (unsupported, undocumented) module rexec.py.
   15132 
   15133 - The import statement now supports the syntax "import a.b.c" and
   15134 "from a.b.c import name".  No officially supported implementation
   15135 exists, but one can be prototyped by replacing the built-in __import__
   15136 function.  A proposal by Ken Manheimer is provided as newimp.py.
   15137 
   15138 - All machinery used by the import statement (or the built-in
   15139 __import__ function) is now exposed through the new built-in module
   15140 "imp" (see the library reference manual).  All dynamic loading
   15141 machinery is moved to the new file importdl.c.
   15142 
   15143 - Persistent storage is supported through the use of the modules
   15144 "pickle" and "shelve" (implemented in Python).  There's also a "copy"
   15145 module implementing deepcopy and normal (shallow) copy operations.
   15146 See the library reference manual.
   15147 
   15148 - Documentation strings for many object types are accessible through
   15149 the __doc__ attribute.  Modules, classes and functions support special
   15150 syntax to initialize the __doc__ attribute: if the first statement
   15151 consists of just a string literal, that string literal becomes the
   15152 value of the __doc__ attribute.  The default __doc__ attribute is
   15153 None.  Documentation strings are also supported for built-in
   15154 functions, types and modules; however this feature hasn't been widely
   15155 used yet.  See the 'new' module for an example.  (Basically, the type
   15156 object's tp_doc field contains the doc string for the type, and the
   15157 4th member of the methodlist structure contains the doc string for the
   15158 method.)
   15159 
   15160 - The __coerce__ and __cmp__ methods for user-defined classes once
   15161 again work as expected.  As an example, there's a new standard class
   15162 Complex in the library.
   15163 
   15164 - The functions posix.popen() and posix.fdopen() now have an optional
   15165 third argument to specify the buffer size, and default their second
   15166 (mode) argument to 'r' -- in analogy to the built-in open() function.
   15167 The same applies to posixfile.open() and the socket method makefile().
   15168 
   15169 - The thread.exit_thread() function now raises SystemExit so that
   15170 'finally' clauses are honored and a memory leak is plugged.
   15171 
   15172 - Improved X11 and Motif support, by Sjoerd Mullender.  This extension
   15173 is being maintained and distributed separately.
   15174 
   15175 - Improved support for the Apple Macintosh, in part by Jack Jansen,
   15176 e.g. interfaces to (a few) resource mananger functions, get/set file
   15177 type and creator, gestalt, sound manager, speech manager, MacTCP, comm
   15178 toolbox, and the think C console library.  This is being maintained
   15179 and distributed separately.
   15180 
   15181 - Improved version for Windows NT, by Mark Hammond.  This is being
   15182 maintained and distributed separately.
   15183 
   15184 - Used autoconf 2.0 to generate the configure script.  Adapted
   15185 configure.in to use the new features in autoconf 2.0.
   15186 
   15187 - It now builds on the NeXT without intervention, even on the 3.3
   15188 Sparc pre-release.
   15189 
   15190 - Characters passed to isspace() and friends are masked to nonnegative
   15191 values.
   15192 
   15193 - Correctly compute pow(-3.0, 3).
   15194 
   15195 - Fix portability problems with getopt (configure now checks for a
   15196 non-GNU getopt).
   15197 
   15198 - Don't add frozenmain.o to libPython.a.
   15199 
   15200 - Exceptions can now be classes.  ALl built-in exceptions are still
   15201 string objects, but this will change in the future.
   15202 
   15203 - The socket module exports a long list of socket related symbols.
   15204 (More built-in modules will export their symbolic constants instead of
   15205 relying on a separately generated Python module.)
   15206 
   15207 - When a module object is deleted, it clears out its own dictionary.
   15208 This fixes a circularity in the references between functions and
   15209 their global dictionary.
   15210 
   15211 - Changed the error handling by [new]getargs() e.g. for "O&".
   15212 
   15213 - Dynamic loading of modules using shared libraries is supported for
   15214 several new platforms.
   15215 
   15216 - Support "O&", "[...]" and "{...}" in mkvalue().
   15217 
   15218 - Extension to findmethod(): findmethodinchain() (where a chain is a
   15219 linked list of methodlist arrays).  The calling interface for
   15220 findmethod() has changed: it now gets a pointer to the (static!)
   15221 methodlist structure rather than just to the function name -- this
   15222 saves copying flags etc. into the (short-lived) method object.
   15223 
   15224 - The callable() function is now public.
   15225 
   15226 - Object types can define a few new operations by setting function
   15227 pointers in the type object structure: tp_call defines how an object
   15228 is called, and tp_str defines how an object's str() is computed.
   15229 
   15230 
   15231 ===================================
   15232 ==> Release 1.1.1 (10 Nov 1994) <==
   15233 ===================================
   15234 
   15235 This is a pure bugfix release again.  See the ChangeLog file for details.
   15236 
   15237 One exception: a few new features were added to tkinter.
   15238 
   15239 
   15240 =================================
   15241 ==> Release 1.1 (11 Oct 1994) <==
   15242 =================================
   15243 
   15244 This release adds several new features, improved configuration and
   15245 portability, and fixes more bugs than I can list here (including some
   15246 memory leaks).
   15247 
   15248 The source compiles and runs out of the box on more platforms than
   15249 ever -- including Windows NT.  Makefiles or projects for a variety of
   15250 non-UNIX platforms are provided.
   15251 
   15252 APOLOGY: some new features are badly documented or not at all.  I had
   15253 the choice -- postpone the new release indefinitely, or release it
   15254 now, with working code but some undocumented areas.  The problem with
   15255 postponing the release is that people continue to suffer from existing
   15256 bugs, and send me patches based on the previous release -- which I
   15257 can't apply directly because my own source has changed.  Also, some
   15258 new modules (like signal) have been ready for release for quite some
   15259 time, and people are anxiously waiting for them.  In the case of
   15260 signal, the interface is simple enough to figure out without
   15261 documentation (if you're anxious enough :-).  In this case it was not
   15262 simple to release the module on its own, since it relies on many small
   15263 patches elsewhere in the source.
   15264 
   15265 For most new Python modules, the source code contains comments that
   15266 explain how to use them.  Documentation for the Tk interface, written
   15267 by Matt Conway, is available as tkinter-doc.tar.gz from the Python
   15268 home and mirror ftp sites (see Misc/FAQ for ftp addresses).  For the
   15269 new operator overloading facilities, have a look at Demo/classes:
   15270 Complex.py and Rat.py show how to implement a numeric type without and
   15271 with __coerce__ method.  Also have a look at the end of the Tutorial
   15272 document (Doc/tut.tex).  If you're still confused: use the newsgroup
   15273 or mailing list.
   15274 
   15275 
   15276 New language features:
   15277 
   15278     - More flexible operator overloading for user-defined classes
   15279     (INCOMPATIBLE WITH PREVIOUS VERSIONS!)  See end of tutorial.
   15280 
   15281     - Classes can define methods named __getattr__, __setattr__ and
   15282     __delattr__ to trap attribute accesses.  See end of tutorial.
   15283 
   15284     - Classes can define method __call__ so instances can be called
   15285     directly.  See end of tutorial.
   15286 
   15287 
   15288 New support facilities:
   15289 
   15290     - The Makefiles (for the base interpreter as well as for extensions)
   15291     now support creating dynamically loadable modules if the platform
   15292     supports shared libraries.
   15293 
   15294     - Passing the interpreter a .pyc file as script argument will execute
   15295     the code in that file.  (On the Mac such files can be double-clicked!)
   15296 
   15297     - New Freeze script, to create independently distributable "binaries"
   15298     of Python programs -- look in Demo/freeze
   15299 
   15300     - Improved h2py script (in Demo/scripts) follows #includes and
   15301     supports macros with one argument
   15302 
   15303     - New module compileall generates .pyc files for all modules in a
   15304     directory (tree) without also executing them
   15305 
   15306     - Threads should work on more platforms
   15307 
   15308 
   15309 New built-in modules:
   15310 
   15311     - tkinter (support for Tcl's Tk widget set) is now part of the base
   15312     distribution
   15313 
   15314     - signal allows catching or ignoring UNIX signals (unfortunately still
   15315     undocumented -- any taker?)
   15316 
   15317     - termios provides portable access to POSIX tty settings
   15318 
   15319     - curses provides an interface to the System V curses library
   15320 
   15321     - syslog provides an interface to the (BSD?) syslog daemon
   15322 
   15323     - 'new' provides interfaces to create new built-in object types
   15324     (e.g. modules and functions)
   15325 
   15326     - sybase provides an interface to SYBASE database
   15327 
   15328 
   15329 New/obsolete built-in methods:
   15330 
   15331     - callable(x) tests whether x can be called
   15332 
   15333     - sockets now have a setblocking() method
   15334 
   15335     - sockets no longer have an allowbroadcast() method
   15336 
   15337     - socket methods send() and sendto() return byte count
   15338 
   15339 
   15340 New standard library modules:
   15341 
   15342     - types.py defines standard names for built-in types, e.g. StringType
   15343 
   15344     - urlparse.py parses URLs according to the latest Internet draft
   15345 
   15346     - uu.py does uuencode/uudecode (not the fastest in the world, but
   15347     quicker than installing uuencode on a non-UNIX machine :-)
   15348 
   15349     - New, faster and more powerful profile module.py
   15350 
   15351     - mhlib.py provides interface to MH folders and messages
   15352 
   15353 
   15354 New facilities for extension writers (unfortunately still
   15355 undocumented):
   15356 
   15357     - newgetargs() supports optional arguments and improved error messages
   15358 
   15359     - O!, O& O? formats for getargs allow more versatile type checking of
   15360     non-standard types
   15361 
   15362     - can register pending asynchronous callback, to be called the next
   15363     time the Python VM begins a new instruction (Py_AddPendingCall)
   15364 
   15365     - can register cleanup routines to be called when Python exits
   15366     (Py_AtExit)
   15367 
   15368     - makesetup script understands C++ files in Setup file (use file.C
   15369     or file.cc)
   15370 
   15371     - Make variable OPT is passed on to sub-Makefiles
   15372 
   15373     - An init<module>() routine may signal an error by not entering
   15374     the module in the module table and raising an exception instead
   15375 
   15376     - For long module names, instead of foobarbletchmodule.c you can
   15377     use foobarbletch.c
   15378 
   15379     - getintvalue() and getfloatvalue() try to convert any object
   15380     instead of requiring an "intobject" or "floatobject"
   15381 
   15382     - All the [new]getargs() formats that retrieve an integer value
   15383     will now also work if a float is passed
   15384 
   15385     - C function listtuple() converts list to tuple, fast
   15386 
   15387     - You should now call sigcheck() instead of intrcheck();
   15388     sigcheck() also sets an exception when it returns nonzero
   15389 
   15390 
   15391 ====================================
   15392 ==> Release 1.0.3 (14 July 1994) <==
   15393 ====================================
   15394 
   15395 This release consists entirely of bug fixes to the C sources; see the
   15396 head of ../ChangeLog for a complete list.  Most important bugs fixed:
   15397 
   15398 - Sometimes the format operator (string%expr) would drop the last
   15399 character of the format string
   15400 
   15401 - Tokenizer looped when last line did not end in \n
   15402 
   15403 - Bug when triple-quoted string ended in quote plus newline
   15404 
   15405 - Typo in socketmodule (listen) (== instead of =)
   15406 
   15407 - typing vars() at the >>> prompt would cause recursive output
   15408 
   15409 
   15410 ==================================
   15411 ==> Release 1.0.2 (4 May 1994) <==
   15412 ==================================
   15413 
   15414 Overview of the most visible changes.  Bug fixes are not listed.  See
   15415 also ChangeLog.
   15416 
   15417 Tokens
   15418 ------
   15419 
   15420 * String literals follow Standard C rules: they may be continued on
   15421 the next line using a backslash; adjacent literals are concatenated
   15422 at compile time.
   15423 
   15424 * A new kind of string literals, surrounded by triple quotes (""" or
   15425 '''), can be continued on the next line without a backslash.
   15426 
   15427 Syntax
   15428 ------
   15429 
   15430 * Function arguments may have a default value, e.g. def f(a, b=1);
   15431 defaults are evaluated at function definition time.  This also applies
   15432 to lambda.
   15433 
   15434 * The try-except statement has an optional else clause, which is
   15435 executed when no exception occurs in the try clause.
   15436 
   15437 Interpreter
   15438 -----------
   15439 
   15440 * The result of a statement-level expression is no longer printed,
   15441 except_ for expressions entered interactively.  Consequently, the -k
   15442 command line option is gone.
   15443 
   15444 * The result of the last printed interactive expression is assigned to
   15445 the variable '_'.
   15446 
   15447 * Access to implicit global variables has been speeded up by removing
   15448 an always-failing dictionary lookup in the dictionary of local
   15449 variables (mod suggested by Steve Makewski and Tim Peters).
   15450 
   15451 * There is a new command line option, -u, to force stdout and stderr
   15452 to be unbuffered.
   15453 
   15454 * Incorporated Steve Majewski's mods to import.c for dynamic loading
   15455 under AIX.
   15456 
   15457 * Fewer chances of dumping core when trying to reload or re-import
   15458 static built-in, dynamically loaded built-in, or frozen modules.
   15459 
   15460 * Loops over sequences now don't ask for the sequence's length when
   15461 they start, but try to access items 0, 1, 2, and so on until they hit
   15462 an IndexError.  This makes it possible to create classes that generate
   15463 infinite or indefinite sequences a la Steve Majewski.  This affects
   15464 for loops, the (not) in operator, and the built-in functions filter(),
   15465 map(), max(), min(), reduce().
   15466 
   15467 Changed Built-in operations
   15468 ---------------------------
   15469 
   15470 * The '%' operator on strings (printf-style formatting) supports a new
   15471 feature (adapted from a patch by Donald Beaudry) to allow
   15472 '%(<key>)<format>' % {...} to take values from a dictionary by name
   15473 instead of from a tuple by position (see also the new function
   15474 vars()).
   15475 
   15476 * The '%s' formatting operator is changed to accept any type and
   15477 convert it to a string using str().
   15478 
   15479 * Dictionaries with more than 20,000 entries can now be created
   15480 (thanks to Steve Kirsch).
   15481 
   15482 New Built-in Functions
   15483 ----------------------
   15484 
   15485 * vars() returns a dictionary containing the local variables; vars(m)
   15486 returns a dictionary containing the variables of module m.  Note:
   15487 dir(x) is now equivalent to vars(x).keys().
   15488 
   15489 Changed Built-in Functions
   15490 --------------------------
   15491 
   15492 * open() has an optional third argument to specify the buffer size: 0
   15493 for unbuffered, 1 for line buffered, >1 for explicit buffer size, <0
   15494 for default.
   15495 
   15496 * open()'s second argument is now optional; it defaults to "r".
   15497 
   15498 * apply() now checks that its second argument is indeed a tuple.
   15499 
   15500 New Built-in Modules
   15501 --------------------
   15502 
   15503 Changed Built-in Modules
   15504 ------------------------
   15505 
   15506 The thread module no longer supports exit_prog().
   15507 
   15508 New Python Modules
   15509 ------------------
   15510 
   15511 * Module addpack contains a standard interface to modify sys.path to
   15512 find optional packages (groups of related modules).
   15513 
   15514 * Module urllib contains a number of functions to access
   15515 World-Wide-Web files specified by their URL.
   15516 
   15517 * Module httplib implements the client side of the HTTP protocol used
   15518 by World-Wide-Web servers.
   15519 
   15520 * Module gopherlib implements the client side of the Gopher protocol.
   15521 
   15522 * Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF
   15523 style mailbox files.
   15524 
   15525 * Module random contains various random distributions, e.g. gauss().
   15526 
   15527 * Module lockfile locks and unlocks open files using fcntl (inspired
   15528 by a similar module by Andy Bensky).
   15529 
   15530 * Module ntpath (by Jaap Vermeulen) implements path operations for
   15531 Windows/NT.
   15532 
   15533 * Module test_thread (in Lib/test) contains a small test set for the
   15534 thread module.
   15535 
   15536 Changed Python Modules
   15537 ----------------------
   15538 
   15539 * The string module's expandvars() function is now documented and is
   15540 implemented in Python (using regular expressions) instead of forking
   15541 off a shell process.
   15542 
   15543 * Module rfc822 now supports accessing the header fields using the
   15544 mapping/dictionary interface, e.g. h['subject'].
   15545 
   15546 * Module pdb now makes it possible to set a break on a function
   15547 (syntax: break <expression>, where <expression> yields a function
   15548 object).
   15549 
   15550 Changed Demos
   15551 -------------
   15552 
   15553 * The Demo/scripts/freeze.py script is working again (thanks to Jaap
   15554 Vermeulen).
   15555 
   15556 New Demos
   15557 ---------
   15558 
   15559 * Demo/threads/Generator.py is a proposed interface for restartable
   15560 functions a la Tim Peters.
   15561 
   15562 * Demo/scripts/newslist.py, by Quentin Stafford-Fraser, generates a
   15563 directory full of HTML pages which between them contain links to all
   15564 the newsgroups available on your server.
   15565 
   15566 * Demo/dns contains a DNS (Domain Name Server) client.
   15567 
   15568 * Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a
   15569 nice enhanced Python shell!!!).
   15570 
   15571 * Demo/turing contains a Turing machine by Amrit Prem.
   15572 
   15573 Documentation
   15574 -------------
   15575 
   15576 * Documented new language features mentioned above (but not all new
   15577 modules).
   15578 
   15579 * Added a chapter to the Tutorial describing recent additions to
   15580 Python.
   15581 
   15582 * Clarified some sentences in the reference manual,
   15583 e.g. break/continue, local/global scope, slice assignment.
   15584 
   15585 Source Structure
   15586 ----------------
   15587 
   15588 * Moved Include/tokenizer.h to Parser/tokenizer.h.
   15589 
   15590 * Added Python/getopt.c for systems that don't have it.
   15591 
   15592 Emacs mode
   15593 ----------
   15594 
   15595 * Indentation of continuated lines is done more intelligently;
   15596 consequently the variable py-continuation-offset is gone.
   15597 
   15598 
   15599 ========================================
   15600 ==> Release 1.0.1 (15 February 1994) <==
   15601 ========================================
   15602 
   15603 * Many portability fixes should make it painless to build Python on
   15604 several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows.
   15605 
   15606 * Fixed test for <stdarg.h> -- this broke on some platforms.
   15607 
   15608 * Fixed test for shared library dynalic loading -- this broke on SunOS
   15609 4.x using the GNU loader.
   15610 
   15611 * Changed order and number of SVR4 networking libraries (it is now
   15612 -lsocket -linet -lnsl, if these libraries exist).
   15613 
   15614 * Installing the build intermediate stages with "make libainstall" now
   15615 also installs config.c.in, Setup and makesetup, which are used by the
   15616 new Extensions mechanism.
   15617 
   15618 * Improved README file contains more hints and new troubleshooting
   15619 section.
   15620 
   15621 * The built-in module strop now defines fast versions of three more
   15622 functions of the standard string module: atoi(), atol() and atof().
   15623 The strop versions of atoi() and atol() support an optional second
   15624 argument to specify the base (default 10).  NOTE: you don't have to
   15625 explicitly import strop to use the faster versions -- the string
   15626 module contains code to let versions from stop override the default
   15627 versions.
   15628 
   15629 * There is now a working Lib/dospath.py for those who use Python under
   15630 DOS (or Windows).  Thanks, Jaap!
   15631 
   15632 * There is now a working Modules/dosmodule.c for DOS (or Windows)
   15633 system calls.
   15634 
   15635 * Lib.os.py has been reorganized (making it ready for more operating
   15636 systems).
   15637 
   15638 * Lib/ospath.py is now obsolete (use os.path instead).
   15639 
   15640 * Many fixes to the tutorial to make it match Python 1.0.  Thanks,
   15641 Tim!
   15642 
   15643 * Fixed Doc/Makefile, Doc/README and various scripts there.
   15644 
   15645 * Added missing description of fdopen to Doc/libposix.tex.
   15646 
   15647 * Made cleanup() global, for the benefit of embedded applications.
   15648 
   15649 * Added parsing of addresses and dates to Lib/rfc822.py.
   15650 
   15651 * Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make
   15652 them usable at all.
   15653 
   15654 * New module Lib/wave.py reads RIFF (*.wav) audio files.
   15655 
   15656 * Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it
   15657 belongs.
   15658 
   15659 * New options and comments for Modules/makesetup (used by new
   15660 Extension mechanism).
   15661 
   15662 * Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc
   15663 and elsewhere.
   15664 
   15665 * Fixed coredump in filter(None, 'abcdefg').
   15666 
   15667 
   15668 =======================================
   15669 ==> Release 1.0.0 (26 January 1994) <==
   15670 =======================================
   15671 
   15672 As is traditional, so many things have changed that I can't pretend to
   15673 be complete in these release notes, but I'll try anyway :-)
   15674 
   15675 Note that the very last section is labeled "remaining bugs".
   15676 
   15677 
   15678 Source organization and build process
   15679 -------------------------------------
   15680 
   15681 * The sources have finally been split: instead of a single src
   15682 subdirectory there are now separate directories Include, Parser,
   15683 Grammar, Objects, Python and Modules.  Other directories also start
   15684 with a capital letter: Misc, Doc, Lib, Demo.
   15685 
   15686 * A few extensions (notably Amoeba and X support) have been moved to a
   15687 separate subtree Extensions, which is no longer in the core
   15688 distribution, but separately ftp'able as extensions.tar.Z.  (The
   15689 distribution contains a placeholder Ext-dummy with a description of
   15690 the Extensions subtree as well as the most recent versions of the
   15691 scripts used there.)
   15692 
   15693 * A few large specialized demos (SGI video and www) have been
   15694 moved to a separate subdirectory Demo2, which is no longer in the core
   15695 distribution, but separately ftp'able as demo2.tar.Z.
   15696 
   15697 * Parts of the standard library have been moved to subdirectories:
   15698 there are now standard subdirectories stdwin, test, sgi and sun4.
   15699 
   15700 * The configuration process has radically changed: I now use GNU
   15701 autoconf.  This makes it much easier to build on new Unix flavors, as
   15702 well as fully supporting VPATH (if your Make has it).  The scripts
   15703 Configure.py and Addmodule.sh are no longer needed.  Many source files
   15704 have been adapted in order to work with the symbols that the configure
   15705 script generated by autoconf defines (or not); the resulting source is
   15706 much more portable to different C compilers and operating systems,
   15707 even non Unix systems (a Mac port was done in an afternoon).  See the
   15708 toplevel README file for a description of the new build process.
   15709 
   15710 * GNU readline (a slightly newer version) is now a subdirectory of the
   15711 Python toplevel.  It is still not automatically configured (being
   15712 totally autoconf-unaware :-).  One problem has been solved: typing
   15713 Control-C to a readline prompt will now work.  The distribution no
   15714 longer contains a "super-level" directory (above the python toplevel
   15715 directory), and dl, dl-dld and GNU dld are no longer part of the
   15716 Python distribution (you can still ftp them from
   15717 ftp.cwi.nl:/pub/dynload).
   15718 
   15719 * The DOS functions have been taken out of posixmodule.c and moved
   15720 into a separate file dosmodule.c.
   15721 
   15722 * There's now a separate file version.c which contains nothing but
   15723 the version number.
   15724 
   15725 * The actual main program is now contained in config.c (unless NO_MAIN
   15726 is defined); pythonmain.c now contains a function realmain() which is
   15727 called from config.c's main().
   15728 
   15729 * All files needed to use the built-in module md5 are now contained in
   15730 the distribution.  The module has been cleaned up considerably.
   15731 
   15732 
   15733 Documentation
   15734 -------------
   15735 
   15736 * The library manual has been split into many more small latex files,
   15737 so it is easier to edit Doc/lib.tex file to create a custom library
   15738 manual, describing only those modules supported on your system.  (This
   15739 is not automated though.)
   15740 
   15741 * A fourth manual has been added, titled "Extending and Embedding the
   15742 Python Interpreter" (Doc/ext.tex), which collects information about
   15743 the interpreter which was previously spread over several files in the
   15744 misc subdirectory.
   15745 
   15746 * The entire documentation is now also available on-line for those who
   15747 have a WWW browser (e.g. NCSA Mosaic).  Point your browser to the URL
   15748 "http://www.cwi.nl/~guido/Python.html".
   15749 
   15750 
   15751 Syntax
   15752 ------
   15753 
   15754 * Strings may now be enclosed in double quotes as well as in single
   15755 quotes.  There is no difference in interpretation.  The repr() of
   15756 string objects will use double quotes if the string contains a single
   15757 quote and no double quotes.  Thanks to Amrit Prem for these changes!
   15758 
   15759 * There is a new keyword 'exec'.  This replaces the exec() built-in
   15760 function.  If a function contains an exec statement, local variable
   15761 optimization is not performed for that particular function, thus
   15762 making assignment to local variables in exec statements less
   15763 confusing.  (As a consequence, os.exec and python.exec have been
   15764 renamed to execv.)
   15765 
   15766 * There is a new keyword 'lambda'.  An expression of the form
   15767 
   15768 	lambda <parameters> : <expression>
   15769 
   15770 yields an anonymous function.  This is really only syntactic sugar;
   15771 you can just as well define a local function using
   15772 
   15773 	def some_temporary_name(<parameters>): return <expression>
   15774 
   15775 Lambda expressions are particularly useful in combination with map(),
   15776 filter() and reduce(), described below.  Thanks to Amrit Prem for
   15777 submitting this code (as well as map(), filter(), reduce() and
   15778 xrange())!
   15779 
   15780 
   15781 Built-in functions
   15782 ------------------
   15783 
   15784 * The built-in module containing the built-in functions is called
   15785 __builtin__ instead of builtin.
   15786 
   15787 * New built-in functions map(), filter() and reduce() perform standard
   15788 functional programming operations (though not lazily):
   15789 
   15790 - map(f, seq) returns a new sequence whose items are the items from
   15791 seq with f() applied to them.
   15792 
   15793 - filter(f, seq) returns a subsequence of seq consisting of those
   15794 items for which f() is true.
   15795 
   15796 - reduce(f, seq, initial) returns a value computed as follows:
   15797 	acc = initial
   15798 	for item in seq: acc = f(acc, item)
   15799 	return acc
   15800 
   15801 * New function xrange() creates a "range object".  Its arguments are
   15802 the same as those of range(), and when used in a for loop a range
   15803 objects also behaves identical.  The advantage of xrange() over
   15804 range() is that its representation (if the range contains many
   15805 elements) is much more compact than that of range().  The disadvantage
   15806 is that the result cannot be used to initialize a list object or for
   15807 the "Python idiom" [RED, GREEN, BLUE] = range(3).  On some modern
   15808 architectures, benchmarks have shown that "for i in range(...): ..."
   15809 actually executes *faster* than "for i in xrange(...): ...", but on
   15810 memory starved machines like PCs running DOS range(100000) may be just
   15811 too big to be represented at all...
   15812 
   15813 * Built-in function exec() has been replaced by the exec statement --
   15814 see above.
   15815 
   15816 
   15817 The interpreter
   15818 ---------------
   15819 
   15820 * Syntax errors are now not printed to stderr by the parser, but
   15821 rather the offending line and other relevant information are packed up
   15822 in the SyntaxError exception argument.  When the main loop catches a
   15823 SyntaxError exception it will print the error in the same format as
   15824 previously, but at the proper position in the stack traceback.
   15825 
   15826 * You can now set a maximum to the number of traceback entries
   15827 printed by assigning to sys.tracebacklimit.  The default is 1000.
   15828 
   15829 * The version number in .pyc files has changed yet again.
   15830 
   15831 * It is now possible to have a .pyc file without a corresponding .py
   15832 file.  (Warning: this may break existing installations if you have an
   15833 old .pyc file lingering around somewhere on your module search path
   15834 without a corresponding .py file, when there is a .py file for a
   15835 module of the same name further down the path -- the new interpreter
   15836 will find the first .pyc file and complain about it, while the old
   15837 interpreter would ignore it and use the .py file further down.)
   15838 
   15839 * The list sys.builtin_module_names is now sorted and also contains
   15840 the names of a few hardwired built-in modules (sys, __main__ and
   15841 __builtin__).
   15842 
   15843 * A module can now find its own name by accessing the global variable
   15844 __name__.  Assigning to this variable essentially renames the module
   15845 (it should also be stored under a different key in sys.modules).
   15846 A neat hack follows from this: a module that wants to execute a main
   15847 program when called as a script no longer needs to compare
   15848 sys.argv[0]; it can simply do "if __name__ == '__main__': main()".
   15849 
   15850 * When an object is printed by the print statement, its implementation
   15851 of str() is used.  This means that classes can define __str__(self) to
   15852 direct how their instances are printed.  This is different from
   15853 __repr__(self), which should define an unambigous string
   15854 representation of the instance.  (If __str__() is not defined, it
   15855 defaults to __repr__().)
   15856 
   15857 * Functions and code objects can now be compared meaningfully.
   15858 
   15859 * On systems supporting SunOS or SVR4 style shared libraries, dynamic
   15860 loading of modules using shared libraries is automatically configured.
   15861 Thanks to Bill Jansen and Denis Severson for contributing this change!
   15862 
   15863 
   15864 Built-in objects
   15865 ----------------
   15866 
   15867 * File objects have acquired a new method writelines() which is the
   15868 reverse of readlines().  (It does not actually write lines, just a
   15869 list of strings, but the symmetry makes the choice of name OK.)
   15870 
   15871 
   15872 Built-in modules
   15873 ----------------
   15874 
   15875 * Socket objects no longer support the avail() method.  Use the select
   15876 module instead, or use this function to replace it:
   15877 
   15878 	def avail(f):
   15879 		import select
   15880 		return f in select.select([f], [], [], 0)[0]
   15881 
   15882 * Initialization of stdwin is done differently.  It actually modifies
   15883 sys.argv (taking out the options the X version of stdwin recognizes)
   15884 the first time it is imported.
   15885 
   15886 * A new built-in module parser provides a rudimentary interface to the
   15887 python parser.  Corresponding standard library modules token and symbol
   15888 defines the numeric values of tokens and non-terminal symbols.
   15889 
   15890 * The posix module has acquired new functions setuid(), setgid(),
   15891 execve(), and exec() has been renamed to execv().
   15892 
   15893 * The array module is extended with 8-byte object swaps, the 'i'
   15894 format character, and a reverse() method.  The read() and write()
   15895 methods are renamed to fromfile() and tofile().
   15896 
   15897 * The rotor module has freed of portability bugs.  This introduces a
   15898 backward compatibility problem: strings encoded with the old rotor
   15899 module can't be decoded by the new version.
   15900 
   15901 * For select.select(), a timeout (4th) argument of None means the same
   15902 as leaving the timeout argument out.
   15903 
   15904 * Module strop (and hence standard library module string) has acquired
   15905 a new function: rindex().  Thanks to Amrit Prem!
   15906 
   15907 * Module regex defines a new function symcomp() which uses an extended
   15908 regular expression syntax: parenthesized subexpressions may be labeled
   15909 using the form "\(<labelname>...\)", and the group() method can return
   15910 sub-expressions by name.  Thanks to Tracy Tims for these changes!
   15911 
   15912 * Multiple threads are now supported on Solaris 2.  Thanks to Sjoerd
   15913 Mullender!
   15914 
   15915 
   15916 Standard library modules
   15917 ------------------------
   15918 
   15919 * The library is now split in several subdirectories: all stuff using
   15920 stdwin is in Lib/stdwin, all SGI specific (or SGI Indigo or GL) stuff
   15921 is in Lib/sgi, all Sun Sparc specific stuff is in Lib/sun4, and all
   15922 test modules are in Lib/test.  The default module search path will
   15923 include all relevant subdirectories by default.
   15924 
   15925 * Module os now knows about trying to import dos.  It defines
   15926 functions execl(), execle(), execlp() and execvp().
   15927 
   15928 * New module dospath (should be attacked by a DOS hacker though).
   15929 
   15930 * All modules defining classes now define __init__() constructors
   15931 instead of init() methods.  THIS IS AN INCOMPATIBLE CHANGE!
   15932 
   15933 * Some minor changes and bugfixes module ftplib (mostly Steve
   15934 Majewski's suggestions); the debug() method is renamed to
   15935 set_debuglevel().
   15936 
   15937 * Some new test modules (not run automatically by testall though):
   15938 test_audioop, test_md5, test_rgbimg, test_select.
   15939 
   15940 * Module string now defines rindex() and rfind() in analogy of index()
   15941 and find().  It also defines atof() and atol() (and corresponding
   15942 exceptions) in analogy to atoi().
   15943 
   15944 * Added help() functions to modules profile and pdb.
   15945 
   15946 * The wdb debugger (now in Lib/stdwin) now shows class or instance
   15947 variables on a double click.  Thanks to Sjoerd Mullender!
   15948 
   15949 * The (undocumented) module lambda has gone -- you couldn't import it
   15950 any more, and it was basically more a demo than a library module...
   15951 
   15952 
   15953 Multimedia extensions
   15954 ---------------------
   15955 
   15956 * The optional built-in modules audioop and imageop are now standard
   15957 parts of the interpreter.  Thanks to Sjoerd Mullender and Jack Jansen
   15958 for contributing this code!
   15959 
   15960 * There's a new operation in audioop: minmax().
   15961 
   15962 * There's a new built-in module called rgbimg which supports portable
   15963 efficient reading of SGI RCG image files.  Thanks also to Paul
   15964 Haeberli for the original code!  (Who will contribute a GIF reader?)
   15965 
   15966 * The module aifc is gone -- you should now always use aifc, which has
   15967 received a facelift.
   15968 
   15969 * There's a new module sunau., for reading Sun (and NeXT) audio files.
   15970 
   15971 * There's a new module audiodev which provides a uniform interface to
   15972 (SGI Indigo and Sun Sparc) audio hardware.
   15973 
   15974 * There's a new module sndhdr which recognizes various sound files by
   15975 looking in their header and checking for various magic words.
   15976 
   15977 
   15978 Optimizations
   15979 -------------
   15980 
   15981 * Most optimizations below can be configured by compile-time flags.
   15982 Thanks to Sjoerd Mullender for submitting these optimizations!
   15983 
   15984 * Small integers (default -1..99) are shared -- i.e. if two different
   15985 functions compute the same value it is possible (but not
   15986 guaranteed!!!) that they return the same *object*.  Python programs
   15987 can detect this but should *never* rely on it.
   15988 
   15989 * Empty tuples (which all compare equal) are shared in the same
   15990 manner.
   15991 
   15992 * Tuples of size up to 20 (default) are put in separate free lists
   15993 when deallocated.
   15994 
   15995 * There is a compile-time option to cache a string's hash function,
   15996 but this appeared to have a negligeable effect, and as it costs 4
   15997 bytes per string it is disabled by default.
   15998 
   15999 
   16000 Embedding Python
   16001 ----------------
   16002 
   16003 * The initialization interface has been simplified somewhat.  You now
   16004 only call "initall()" to initialize the interpreter.
   16005 
   16006 * The previously announced renaming of externally visible identifiers
   16007 has not been carried out.  It will happen in a later release.  Sorry.
   16008 
   16009 
   16010 Miscellaneous bugs that have been fixed
   16011 ---------------------------------------
   16012 
   16013 * All known portability bugs.
   16014 
   16015 * Version 0.9.9 dumped core in <listobject>.sort() which has been
   16016 fixed.  Thanks to Jaap Vermeulen for fixing this and posting the fix
   16017 on the mailing list while I was away!
   16018 
   16019 * Core dump on a format string ending in '%', e.g. in the expression
   16020 '%' % None.
   16021 
   16022 * The array module yielded a bogus result for concatenation (a+b would
   16023 yield a+a).
   16024 
   16025 * Some serious memory leaks in strop.split() and strop.splitfields().
   16026 
   16027 * Several problems with the nis module.
   16028 
   16029 * Subtle problem when copying a class method from another class
   16030 through assignment (the method could not be called).
   16031 
   16032 
   16033 Remaining bugs
   16034 --------------
   16035 
   16036 * One problem with 64-bit machines remains -- since .pyc files are
   16037 portable and use only 4 bytes to represent an integer object, 64-bit
   16038 integer literals are silently truncated when written into a .pyc file.
   16039 Work-around: use eval('123456789101112').
   16040 
   16041 * The freeze script doesn't work any more.  A new and more portable
   16042 one can probably be cooked up using tricks from Extensions/mkext.py.
   16043 
   16044 * The dos support hasn't been tested yet.  (Really Soon Now we should
   16045 have a PC with a working C compiler!)
   16046 
   16047 
   16048 ===================================
   16049 ==> Release 0.9.9 (29 Jul 1993) <==
   16050 ===================================
   16051 
   16052 I *believe* these are the main user-visible changes in this release,
   16053 but there may be others.  SGI users may scan the {src,lib}/ChangeLog
   16054 files for improvements of some SGI specific modules, e.g. aifc and
   16055 cl.  Developers of extension modules should also read src/ChangeLog.
   16056 
   16057 
   16058 Naming of C symbols used by the Python interpreter
   16059 --------------------------------------------------
   16060 
   16061 * This is the last release using the current naming conventions.  New
   16062 naming conventions are explained in the file misc/NAMING.
   16063 Summarizing, all externally visible symbols get (at least) a "Py"
   16064 prefix, and most functions are renamed to the standard form
   16065 PyModule_FunctionName.
   16066 
   16067 * Writers of extensions are urged to start using the new naming
   16068 conventions.  The next release will use the new naming conventions
   16069 throughout (it will also have a different source directory
   16070 structure).
   16071 
   16072 * As a result of the preliminary work for the great renaming, many
   16073 functions that were accidentally global have been made static.
   16074 
   16075 
   16076 BETA X11 support
   16077 ----------------
   16078 
   16079 * There are now modules interfacing to the X11 Toolkit Intrinsics, the
   16080 Athena widgets, and the Motif 1.1 widget set.  These are not yet
   16081 documented except through the examples and README file in the demo/x11
   16082 directory.  It is expected that this interface will be replaced by a
   16083 more powerful and correct one in the future, which may or may not be
   16084 backward compatible.  In other words, this part of the code is at most
   16085 BETA level software!  (Note: the rest of Python is rock solid as ever!)
   16086 
   16087 * I understand that the above may be a bit of a disappointment,
   16088 however my current schedule does not allow me to change this situation
   16089 before putting the release out of the door.  By releasing it
   16090 undocumented and buggy, at least some of the (working!) demo programs,
   16091 like itr (my Internet Talk Radio browser) become available to a larger
   16092 audience.
   16093 
   16094 * There are also modules interfacing to SGI's "Glx" widget (a GL
   16095 window wrapped in a widget) and to NCSA's "HTML" widget (which can
   16096 format HyperText Markup Language, the document format used by the
   16097 World Wide Web).
   16098 
   16099 * I've experienced some problems when building the X11 support.  In
   16100 particular, the Xm and Xaw widget sets don't go together, and it
   16101 appears that using X11R5 is better than using X11R4.  Also the threads
   16102 module and its link time options may spoil things.  My own strategy is
   16103 to build two Python binaries: one for use with X11 and one without
   16104 it, which can contain a richer set of built-in modules.  Don't even
   16105 *think* of loading the X11 modules dynamically...
   16106 
   16107 
   16108 Environmental changes
   16109 ---------------------
   16110 
   16111 * Compiled files (*.pyc files) created by this Python version are
   16112 incompatible with those created by the previous version.  Both
   16113 versions detect this and silently create a correct version, but it
   16114 means that it is not a good idea to use the same library directory for
   16115 an old and a new interpreter, since they will start to "fight" over
   16116 the *.pyc files...
   16117 
   16118 * When a stack trace is printed, the exception is printed last instead
   16119 of first.  This means that if the beginning of the stack trace
   16120 scrolled out of your window you can still see what exception caused
   16121 it.
   16122 
   16123 * Sometimes interrupting a Python operation does not work because it
   16124 hangs in a blocking system call.  You can now kill the interpreter by
   16125 interrupting it three times.  The second time you interrupt it, a
   16126 message will be printed telling you that the third interrupt will kill
   16127 the interpreter.  The "sys.exitfunc" feature still makes limited
   16128 clean-up possible in this case.
   16129 
   16130 
   16131 Changes to the command line interface
   16132 -------------------------------------
   16133 
   16134 * The python usage message is now much more informative.
   16135 
   16136 * New option -i enters interactive mode after executing a script --
   16137 useful for debugging.
   16138 
   16139 * New option -k raises an exception when an expression statement
   16140 yields a value other than None.
   16141 
   16142 * For each option there is now also a corresponding environment
   16143 variable.
   16144 
   16145 
   16146 Using Python as an embedded language
   16147 ------------------------------------
   16148 
   16149 * The distribution now contains (some) documentation on the use of
   16150 Python as an "embedded language" in other applications, as well as a
   16151 simple example.  See the file misc/EMBEDDING and the directory embed/.
   16152 
   16153 
   16154 Speed improvements
   16155 ------------------
   16156 
   16157 * Function local variables are now generally stored in an array and
   16158 accessed using an integer indexing operation, instead of through a
   16159 dictionary lookup.  (This compensates the somewhat slower dictionary
   16160 lookup caused by the generalization of the dictionary module.)
   16161 
   16162 
   16163 Changes to the syntax
   16164 ---------------------
   16165 
   16166 * Continuation lines can now *sometimes* be written without a
   16167 backslash: if the continuation is contained within nesting (), [] or
   16168 {} brackets the \ may be omitted.  There's a much improved
   16169 python-mode.el in the misc directory which knows about this as well.
   16170 
   16171 * You can no longer use an empty set of parentheses to define a class
   16172 without base classes.  That is, you no longer write this:
   16173 
   16174 	class Foo(): # syntax error
   16175 		...
   16176 
   16177 You must write this instead:
   16178 
   16179 	class Foo:
   16180 		...
   16181 
   16182 This was already the preferred syntax in release 0.9.8 but many
   16183 people seemed not to have picked it up.  There's a Python script that
   16184 fixes old code: demo/scripts/classfix.py.
   16185 
   16186 * There's a new reserved word: "access".  The syntax and semantics are
   16187 still subject of research and debate (as well as undocumented), but
   16188 the parser knows about the keyword so you must not use it as a
   16189 variable, function, or attribute name.
   16190 
   16191 
   16192 Changes to the semantics of the language proper
   16193 -----------------------------------------------
   16194 
   16195 * The following compatibility hack is removed: if a function was
   16196 defined with two or more arguments, and called with a single argument
   16197 that was a tuple with just as many arguments, the items of this tuple
   16198 would be used as the arguments.  This is no longer supported.
   16199 
   16200 
   16201 Changes to the semantics of classes and instances
   16202 -------------------------------------------------
   16203 
   16204 * Class variables are now also accessible as instance variables for
   16205 reading (assignment creates an instance variable which overrides the
   16206 class variable of the same name though).
   16207 
   16208 * If a class attribute is a user-defined function, a new kind of
   16209 object is returned: an "unbound method".  This contains a pointer to
   16210 the class and can only be called with a first argument which is a
   16211 member of that class (or a derived class).
   16212 
   16213 * If a class defines a method __init__(self, arg1, ...) then this
   16214 method is called when a class instance is created by the classname()
   16215 construct.  Arguments passed to classname() are passed to the
   16216 __init__() method.  The __init__() methods of base classes are not
   16217 automatically called; the derived __init__() method must call these if
   16218 necessary (this was done so the derived __init__() method can choose
   16219 the call order and arguments for the base __init__() methods).
   16220 
   16221 * If a class defines a method __del__(self) then this method is called
   16222 when an instance of the class is about to be destroyed.  This makes it
   16223 possible to implement clean-up of external resources attached to the
   16224 instance.  As with __init__(), the __del__() methods of base classes
   16225 are not automatically called.  If __del__ manages to store a reference
   16226 to the object somewhere, its destruction is postponed; when the object
   16227 is again about to be destroyed its __del__() method will be called
   16228 again.
   16229 
   16230 * Classes may define a method __hash__(self) to allow their instances
   16231 to be used as dictionary keys.  This must return a 32-bit integer.
   16232 
   16233 
   16234 Minor improvements
   16235 ------------------
   16236 
   16237 * Function and class objects now know their name (the name given in
   16238 the 'def' or 'class' statement that created them).
   16239 
   16240 * Class instances now know their class name.
   16241 
   16242 
   16243 Additions to built-in operations
   16244 --------------------------------
   16245 
   16246 * The % operator with a string left argument implements formatting
   16247 similar to sprintf() in C.  The right argument is either a single
   16248 value or a tuple of values.  All features of Standard C sprintf() are
   16249 supported except %p.
   16250 
   16251 * Dictionaries now support almost any key type, instead of just
   16252 strings.  (The key type must be an immutable type or must be a class
   16253 instance where the class defines a method __hash__(), in order to
   16254 avoid losing track of keys whose value may change.)
   16255 
   16256 * Built-in methods are now compared properly: when comparing x.meth1
   16257 and y.meth2, if x is equal to y and the methods are defined by the
   16258 same function, x.meth1 compares equal to y.meth2.
   16259 
   16260 
   16261 Additions to built-in functions
   16262 -------------------------------
   16263 
   16264 * str(x) returns a string version of its argument.  If the argument is
   16265 a string it is returned unchanged, otherwise it returns `x`.
   16266 
   16267 * repr(x) returns the same as `x`.  (Some users found it easier to
   16268 have this as a function.)
   16269 
   16270 * round(x) returns the floating point number x rounded to a whole
   16271 number, represented as a floating point number.  round(x, n) returns x
   16272 rounded to n digits.
   16273 
   16274 * hasattr(x, name) returns true when x has an attribute with the given
   16275 name.
   16276 
   16277 * hash(x) returns a hash code (32-bit integer) of an arbitrary
   16278 immutable object's value.
   16279 
   16280 * id(x) returns a unique identifier (32-bit integer) of an arbitrary
   16281 object.
   16282 
   16283 * compile() compiles a string to a Python code object.
   16284 
   16285 * exec() and eval() now support execution of code objects.
   16286 
   16287 
   16288 Changes to the documented part of the library (standard modules)
   16289 ----------------------------------------------------------------
   16290 
   16291 * os.path.normpath() (a.k.a. posixpath.normpath()) has been fixed so
   16292 the border case '/foo/..' returns '/' instead of ''.
   16293 
   16294 * A new function string.find() is added with similar semantics to
   16295 string.index(); however when it does not find the given substring it
   16296 returns -1 instead of raising string.index_error.
   16297 
   16298 
   16299 Changes to built-in modules
   16300 ---------------------------
   16301 
   16302 * New optional module 'array' implements operations on sequences of
   16303 integers or floating point numbers of a particular size.  This is
   16304 useful to manipulate large numerical arrays or to read and write
   16305 binary files consisting of numerical data.
   16306 
   16307 * Regular expression objects created by module regex now support a new
   16308 method named group(), which returns one or more \(...\) groups by number.
   16309 The number of groups is increased from 10 to 100.
   16310 
   16311 * Function compile() in module regex now supports an optional mapping
   16312 argument; a variable casefold is added to the module which can be used
   16313 as a standard uppercase to lowercase mapping.
   16314 
   16315 * Module time now supports many routines that are defined in the
   16316 Standard C time interface (<time.h>): gmtime(), localtime(),
   16317 asctime(), ctime(), mktime(), as well as these variables (taken from
   16318 System V): timezone, altzone, daylight and tzname.  (The corresponding
   16319 functions in the undocumented module calendar have been removed; the
   16320 undocumented and unfinished module tzparse is now obsolete and will
   16321 disappear in a future release.)
   16322 
   16323 * Module strop (the fast built-in version of standard module string)
   16324 now uses C's definition of whitespace instead of fixing it to space,
   16325 tab and newline; in practice this usually means that vertical tab,
   16326 form feed and return are now also considered whitespace.  It exports
   16327 the string of characters that are considered whitespace as well as the
   16328 characters that are considered lowercase or uppercase.
   16329 
   16330 * Module sys now defines the variable builtin_module_names, a list of
   16331 names of modules built into the current interpreter (including not
   16332 yet imported, but excluding two special modules that always have to be
   16333 defined -- sys and builtin).
   16334 
   16335 * Objects created by module sunaudiodev now also support flush() and
   16336 close() methods.
   16337 
   16338 * Socket objects created by module socket now support an optional
   16339 flags argument for their methods sendto() and recvfrom().
   16340 
   16341 * Module marshal now supports dumping to and loading from strings,
   16342 through the functions dumps() and loads().
   16343 
   16344 * Module stdwin now supports some new functionality.  You may have to
   16345 ftp the latest version: ftp.cwi.nl:/pub/stdwin/stdwinforviews.tar.Z.)
   16346 
   16347 
   16348 Bugs fixed
   16349 ----------
   16350 
   16351 * Fixed comparison of negative long integers.
   16352 
   16353 * The tokenizer no longer botches input lines longer than BUFSIZ.
   16354 
   16355 * Fixed several severe memory leaks in module select.
   16356 
   16357 * Fixed memory leaks in modules socket and sv.
   16358 
   16359 * Fixed memory leak in divmod() for long integers.
   16360 
   16361 * Problems with definition of floatsleep() on Suns fixed.
   16362 
   16363 * Many portability bugs fixed (and undoubtedly new ones added :-).
   16364 
   16365 
   16366 Changes to the build procedure
   16367 ------------------------------
   16368 
   16369 * The Makefile supports some new targets: "make default" and "make
   16370 all".  Both are by normally equivalent to "make python".
   16371 
   16372 * The Makefile no longer uses $> since it's not supported by all
   16373 versions of Make.
   16374 
   16375 * The header files now all contain #ifdef constructs designed to make
   16376 it safe to include the same header file twice, as well as support for
   16377 inclusion from C++ programs (automatic extern "C" { ... } added).
   16378 
   16379 
   16380 Freezing Python scripts
   16381 -----------------------
   16382 
   16383 * There is now some support for "freezing" a Python script as a
   16384 stand-alone executable binary file.  See the script
   16385 demo/scripts/freeze.py.  It will require some site-specific tailoring
   16386 of the script to get this working, but is quite worthwhile if you write
   16387 Python code for other who may not have built and installed Python.
   16388 
   16389 
   16390 MS-DOS
   16391 ------
   16392 
   16393 * A new MS-DOS port has been done, using MSC 6.0 (I believe).  Thanks,
   16394 Marcel van der Peijl!  This requires fewer compatibility hacks in
   16395 posixmodule.c.  The executable is not yet available but will be soon
   16396 (check the mailing list).
   16397 
   16398 * The default PYTHONPATH has changed.
   16399 
   16400 
   16401 Changes for developers of extension modules
   16402 -------------------------------------------
   16403 
   16404 * Read src/ChangeLog for full details.
   16405 
   16406 
   16407 SGI specific changes
   16408 --------------------
   16409 
   16410 * Read src/ChangeLog for full details.
   16411 
   16412 
   16413 ==================================
   16414 ==> Release 0.9.8 (9 Jan 1993) <==
   16415 ==================================
   16416 
   16417 I claim no completeness here, but I've tried my best to scan the log
   16418 files throughout my source tree for interesting bits of news.  A more
   16419 complete account of the changes is to be found in the various
   16420 ChangeLog files. See also "News for release 0.9.7beta" below if you're
   16421 still using release 0.9.6, and the file HISTORY if you have an even
   16422 older release.
   16423 
   16424 	--Guido
   16425 
   16426 
   16427 Changes to the language proper
   16428 ------------------------------
   16429 
   16430 There's only one big change: the conformance checking for function
   16431 argument lists (of user-defined functions only) is stricter.  Earlier,
   16432 you could get away with the following:
   16433 
   16434 	(a) define a function of one argument and call it with any
   16435 	    number of arguments; if the actual argument count wasn't
   16436 	    one, the function would receive a tuple containing the
   16437 	    arguments (an empty tuple if there were none).
   16438 
   16439 	(b) define a function of two arguments, and call it with more
   16440 	    than two arguments; if there were more than two arguments,
   16441 	    the second argument would be passed as a tuple containing
   16442 	    the second and further actual arguments.
   16443 
   16444 (Note that an argument (formal or actual) that is a tuple is counted as
   16445 one; these rules don't apply inside such tuples, only at the top level
   16446 of the argument list.)
   16447 
   16448 Case (a) was needed to accommodate variable-length argument lists;
   16449 there is now an explicit "varargs" feature (precede the last argument
   16450 with a '*').  Case (b) was needed for compatibility with old class
   16451 definitions: up to release 0.9.4 a method with more than one argument
   16452 had to be declared as "def meth(self, (arg1, arg2, ...)): ...".
   16453 Version 0.9.6 provide better ways to handle both casees, bot provided
   16454 backward compatibility; version 0.9.8 retracts the compatibility hacks
   16455 since they also cause confusing behavior if a function is called with
   16456 the wrong number of arguments.
   16457 
   16458 There's a script that helps converting classes that still rely on (b),
   16459 provided their methods' first argument is called "self":
   16460 demo/scripts/methfix.py.
   16461 
   16462 If this change breaks lots of code you have developed locally, try
   16463 #defining COMPAT_HACKS in ceval.c.
   16464 
   16465 (There's a third compatibility hack, which is the reverse of (a): if a
   16466 function is defined with two or more arguments, and called with a
   16467 single argument that is a tuple with just as many arguments, the items
   16468 of this tuple will be used as the arguments.  Although this can (and
   16469 should!) be done using the built-in function apply() instead, it isn't
   16470 withdrawn yet.)
   16471 
   16472 
   16473 One minor change: comparing instance methods works like expected, so
   16474 that if x is an instance of a user-defined class and has a method m,
   16475 then (x.m==x.m) yields 1.
   16476 
   16477 
   16478 The following was already present in 0.9.7beta, but not explicitly
   16479 mentioned in the NEWS file: user-defined classes can now define types
   16480 that behave in almost allrespects like numbers.  See
   16481 demo/classes/Rat.py for a simple example.
   16482 
   16483 
   16484 Changes to the build process
   16485 ----------------------------
   16486 
   16487 The Configure.py script and the Makefile has been made somewhat more
   16488 bullet-proof, after reports of (minor) trouble on certain platforms.
   16489 
   16490 There is now a script to patch Makefile and config.c to add a new
   16491 optional built-in module: Addmodule.sh.  Read the script before using!
   16492 
   16493 Using Addmodule.sh, all optional modules can now be configured at
   16494 compile time using Configure.py, so there are no modules left that
   16495 require dynamic loading.
   16496 
   16497 The Makefile has been fixed to make it easier to use with the VPATH
   16498 feature of some Make versions (e.g. SunOS).
   16499 
   16500 
   16501 Changes affecting portability
   16502 -----------------------------
   16503 
   16504 Several minor portability problems have been solved, e.g. "malloc.h"
   16505 has been renamed to "mymalloc.h", "strdup.c" is no longer used, and
   16506 the system now tolerates malloc(0) returning 0.
   16507 
   16508 For dynamic loading on the SGI, Jack Jansen's dl 1.6 is now
   16509 distributed with Python.  This solves several minor problems, in
   16510 particular scripts invoked using #! can now use dynamic loading.
   16511 
   16512 
   16513 Changes to the interpreter interface
   16514 ------------------------------------
   16515 
   16516 On popular demand, there's finally a "profile" feature for interactive
   16517 use of the interpreter.  If the environment variable $PYTHONSTARTUP is
   16518 set to the name of an existing file, Python statements in this file
   16519 are executed when the interpreter is started in interactive mode.
   16520 
   16521 There is a new clean-up mechanism, complementing try...finally: if you
   16522 assign a function object to sys.exitfunc, it will be called when
   16523 Python exits or receives a SIGTERM or SIGHUP signal.
   16524 
   16525 The interpreter is now generally assumed to live in
   16526 /usr/local/bin/python (as opposed to /usr/local/python).  The script
   16527 demo/scripts/fixps.py will update old scripts in place (you can easily
   16528 modify it to do other similar changes).
   16529 
   16530 Most I/O that uses sys.stdin/stdout/stderr will now use any object
   16531 assigned to those names as long as the object supports readline() or
   16532 write() methods.
   16533 
   16534 The parser stack has been increased to 500 to accommodate more
   16535 complicated expressions (7 levels used to be the practical maximum,
   16536 it's now about 38).
   16537 
   16538 The limit on the size of the *run-time* stack has completely been
   16539 removed -- this means that tuple or list displays can contain any
   16540 number of elements (formerly more than 50 would crash the
   16541 interpreter). 
   16542 
   16543 
   16544 Changes to existing built-in functions and methods
   16545 --------------------------------------------------
   16546 
   16547 The built-in functions int(), long(), float(), oct() and hex() now
   16548 also apply to class instalces that define corresponding methods
   16549 (__int__ etc.).
   16550 
   16551 
   16552 New built-in functions
   16553 ----------------------
   16554 
   16555 The new functions str() and repr() convert any object to a string.
   16556 The function repr(x) is in all respects equivalent to `x` -- some
   16557 people prefer a function for this.  The function str(x) does the same
   16558 except if x is already a string -- then it returns x unchanged
   16559 (repr(x) adds quotes and escapes "funny" characters as octal escapes).
   16560 
   16561 The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y.
   16562 
   16563 
   16564 Changes to general built-in modules
   16565 -----------------------------------
   16566 
   16567 The time module's functions are more general: time() returns a
   16568 floating point number and sleep() accepts one.  Their accuracies
   16569 depends on the precision of the system clock.  Millisleep is no longer
   16570 needed (although it still exists for now), but millitimer is still
   16571 needed since on some systems wall clock time is only available with
   16572 seconds precision, while a source of more precise time exists that
   16573 isn't synchronized with the wall clock.  (On UNIX systems that support
   16574 the BSD gettimeofday() function, time.time() is as time.millitimer().)
   16575 
   16576 The string representation of a file object now includes an address:
   16577 '<file 'filename', mode 'r' at #######>' where ###### is a hex number
   16578 (the object's address) to make it unique.
   16579 
   16580 New functions added to posix: nice(), setpgrp(), and if your system
   16581 supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp().
   16582 
   16583 Improvements to the socket module: socket objects have new methods
   16584 getpeername() and getsockname(), and the {get,set}sockopt methods can
   16585 now get/set any kind of option using strings built with the new struct
   16586 module.  And there's a new function fromfd() which creates a socket
   16587 object given a file descriptor (useful for servers started by inetd,
   16588 which have a socket connected to stdin and stdout).
   16589 
   16590 
   16591 Changes to SGI-specific built-in modules
   16592 ----------------------------------------
   16593 
   16594 The FORMS library interface (fl) now requires FORMS 2.1a.  Some new
   16595 functions have been added and some bugs have been fixed.
   16596 
   16597 Additions to al (audio library interface): added getname(),
   16598 getdefault() and getminmax().
   16599 
   16600 The gl modules doesn't call "foreground()" when initialized (this
   16601 caused some problems) like it dit in 0.9.7beta (but not before).
   16602 There's a new gl function 'gversion() which returns a version string.
   16603 
   16604 The interface to sv (Indigo video interface) has totally changed.
   16605 (Sorry, still no documentation, but see the examples in
   16606 demo/sgi/{sv,video}.)
   16607 
   16608 
   16609 Changes to standard library modules
   16610 -----------------------------------
   16611 
   16612 Most functions in module string are now much faster: they're actually
   16613 implemented in C.  The module containing the C versions is called
   16614 "strop" but you should still import "string" since strop doesn't
   16615 provide all the interfaces defined in string (and strop may be renamed
   16616 to string when it is complete in a future release).
   16617 
   16618 string.index() now accepts an optional third argument giving an index
   16619 where to start searching in the first argument, so you can find second
   16620 and further occurrences (this is similar to the regular expression
   16621 functions in regex).
   16622 
   16623 The definition of what string.splitfields(anything, '') should return
   16624 is changed for the last time: it returns a singleton list containing
   16625 its whole first argument unchanged.  This is compatible with
   16626 regsub.split() which also ignores empty delimiter matches.
   16627 
   16628 posixpath, macpath: added dirname() and normpath() (and basename() to
   16629 macpath).
   16630 
   16631 The mainloop module (for use with stdwin) can now demultiplex input
   16632 from other sources, as long as they can be polled with select().
   16633 
   16634 
   16635 New built-in modules
   16636 --------------------
   16637 
   16638 Module struct defines functions to pack/unpack values to/from strings
   16639 representing binary values in native byte order.
   16640 
   16641 Module strop implements C versions of many functions from string (see
   16642 above).
   16643 
   16644 Optional module fcntl defines interfaces to fcntl() and ioctl() --
   16645 UNIX only.  (Not yet properly documented -- see however src/fcntl.doc.)
   16646 
   16647 Optional module mpz defines an interface to an altaernative long
   16648 integer implementation, the GNU MPZ library.
   16649 
   16650 Optional module md5 uses the GNU MPZ library to calculate MD5
   16651 signatures of strings.
   16652 
   16653 There are also optional new modules specific to SGI machines: imageop
   16654 defines some simple operations to images represented as strings; sv
   16655 interfaces to the Indigo video board; cl interfaces to the (yet
   16656 unreleased) compression library.
   16657 
   16658 
   16659 New standard library modules
   16660 ----------------------------
   16661 
   16662 (Unfortunately the following modules are not all documented; read the
   16663 sources to find out more about them!)
   16664 
   16665 autotest: run testall without showing any output unless it differs
   16666 from the expected output
   16667 
   16668 bisect: use bisection to insert or find an item in a sorted list
   16669 
   16670 colorsys: defines conversions between various color systems (e.g. RGB
   16671 <-> YUV)
   16672 
   16673 nntplib: a client interface to NNTP servers
   16674 
   16675 pipes: utility to construct pipeline from templates, e.g. for
   16676 conversion from one file format to another using several utilities.
   16677 
   16678 regsub: contains three functions that are more or less compatible with
   16679 awk functions of the same name: sub() and gsub() do string
   16680 substitution, split() splits a string using a regular expression to
   16681 define how separators are define.
   16682 
   16683 test_types: test operations on the built-in types of Python
   16684 
   16685 toaiff: convert various audio file formats to AIFF format
   16686 
   16687 tzparse: parse the TZ environment parameter (this may be less general
   16688 than it could be, let me know if you fix it).
   16689 
   16690 (Note that the obsolete module "path" no longer exists.)
   16691 
   16692 
   16693 New SGI-specific library modules
   16694 --------------------------------
   16695 
   16696 CL: constants for use with the built-in compression library interface (cl)
   16697 
   16698 Queue: a multi-producer, multi-consumer queue class implemented for
   16699 use with the built-in thread module
   16700 
   16701 SOCKET: constants for use with built-in module socket, e.g. to set/get
   16702 socket options.  This is SGI-specific because the constants to be
   16703 passed are system-dependent.  You can generate a version for your own
   16704 system by running the script demo/scripts/h2py.py with
   16705 /usr/include/sys/socket.h as input.
   16706 
   16707 cddb: interface to the database used by the CD player
   16708 
   16709 torgb: convert various image file types to rgb format (requires pbmplus)
   16710 
   16711 
   16712 New demos
   16713 ---------
   16714 
   16715 There's an experimental interface to define Sun RPC clients and
   16716 servers in demo/rpc.
   16717 
   16718 There's a collection of interfaces to WWW, WAIS and Gopher (both
   16719 Python classes and program providing a user interface) in demo/www.
   16720 This includes a program texi2html.py which converts texinfo files to
   16721 HTML files (the format used hy WWW).
   16722 
   16723 The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse.
   16724 
   16725 For SGI systems, there's a whole collection of programs and classes
   16726 that make use of the Indigo video board in demo/sgi/{sv,video}.  This
   16727 represents a significant amount of work that we're giving away!
   16728 
   16729 There are demos "rsa" and "md5test" that exercise the mpz and md5
   16730 modules, respectively.  The rsa demo is a complete implementation of
   16731 the RSA public-key cryptosystem!
   16732 
   16733 A bunch of games and examples submitted by Stoffel Erasmus have been
   16734 included in demo/stoffel.
   16735 
   16736 There are miscellaneous new files in some existing demo
   16737 subdirectories: classes/bitvec.py, scripts/{fixps,methfix}.py,
   16738 sgi/al/cmpaf.py, sockets/{mcast,gopher}.py.
   16739 
   16740 There are also many minor changes to existing files, but I'm too lazy
   16741 to run a diff and note the differences -- you can do this yourself if
   16742 you save the old distribution's demos.  One highlight: the
   16743 stdwin/python.py demo is much improved!
   16744 
   16745 
   16746 Changes to the documentation
   16747 ----------------------------
   16748 
   16749 The LaTeX source for the library uses different macros to enable it to
   16750 be converted to texinfo, and from there to INFO or HTML format so it
   16751 can be browsed as a hypertext.  The net result is that you can now
   16752 read the Python library documentation in Emacs info mode!
   16753 
   16754 
   16755 Changes to the source code that affect C extension writers
   16756 ----------------------------------------------------------
   16757 
   16758 The function strdup() no longer exists (it was used only in one places
   16759 and is somewhat of a portability problem since some systems have the
   16760 same function in their C library.
   16761 
   16762 The functions NEW() and RENEW() allocate one spare byte to guard
   16763 against a NULL return from malloc(0) being taken for an error, but
   16764 this should not be relied upon.
   16765 
   16766 
   16767 =========================
   16768 ==> Release 0.9.7beta <==
   16769 =========================
   16770 
   16771 
   16772 Changes to the language proper
   16773 ------------------------------
   16774 
   16775 User-defined classes can now implement operations invoked through
   16776 special syntax, such as x[i] or `x` by defining methods named
   16777 __getitem__(self, i) or __repr__(self), etc.
   16778 
   16779 
   16780 Changes to the build process
   16781 ----------------------------
   16782 
   16783 Instead of extensive manual editing of the Makefile to select
   16784 compile-time options, you can now run a Configure.py script.
   16785 The Makefile as distributed builds a minimal interpreter sufficient to
   16786 run Configure.py.  See also misc/BUILD
   16787 
   16788 The Makefile now includes more "utility" targets, e.g. install and
   16789 tags/TAGS
   16790 
   16791 Using the provided strtod.c and strtol.c are now separate options, as
   16792 on the Sun the provided strtod.c dumps core :-(
   16793 
   16794 The regex module is now an option chosen by the Makefile, since some
   16795 (old) C compilers choke on regexpr.c
   16796 
   16797 
   16798 Changes affecting portability
   16799 -----------------------------
   16800 
   16801 You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin
   16802 interface
   16803 
   16804 Dynamic loading is now supported for Sun (and other non-COFF systems)
   16805 throug dld-3.2.3, as well as for SGI (a new version of Jack Jansen's
   16806 DL is out, 1.4)
   16807 
   16808 The system-dependent code for the use of the select() system call is
   16809 moved to one file: myselect.h
   16810 
   16811 Thanks to Jaap Vermeulen, the code should now port cleanly to the
   16812 SEQUENT
   16813 
   16814 
   16815 Changes to the interpreter interface
   16816 ------------------------------------
   16817 
   16818 The interpretation of $PYTHONPATH in the environment is different: it
   16819 is inserted in front of the default path instead of overriding it
   16820 
   16821 
   16822 Changes to existing built-in functions and methods
   16823 --------------------------------------------------
   16824 
   16825 List objects now support an optional argument to their sort() method,
   16826 which is a comparison function similar to qsort(3) in C
   16827 
   16828 File objects now have a method fileno(), used by the new select module
   16829 (see below)
   16830 
   16831 
   16832 New built-in function
   16833 ---------------------
   16834 
   16835 coerce(x, y): take two numbers and return a tuple containing them
   16836 both converted to a common type
   16837 
   16838 
   16839 Changes to built-in modules
   16840 ---------------------------
   16841 
   16842 sys: fixed core dumps in settrace() and setprofile()
   16843 
   16844 socket: added socket methods setsockopt() and getsockopt(); and
   16845 fileno(), used by the new select module (see below)
   16846 
   16847 stdwin: added fileno() == connectionnumber(), in support of new module
   16848 select (see below)
   16849 
   16850 posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function.
   16851 
   16852 gl: added qgetfd()
   16853 
   16854 fl: added several new functions, fixed several obscure bugs, adapted
   16855 to FORMS 2.1
   16856 
   16857 
   16858 Changes to standard modules
   16859 ---------------------------
   16860 
   16861 posixpath: changed implementation of ismount()
   16862 
   16863 string: atoi() no longer mistakes leading zero for octal number
   16864 
   16865 ...
   16866 
   16867 
   16868 New built-in modules
   16869 --------------------
   16870 
   16871 Modules marked "dynamic only" are not configured at compile time but
   16872 can be loaded dynamically.  You need to turn on the DL or DLD option in
   16873 the Makefile for support dynamic loading of modules (this requires
   16874 external code).
   16875 
   16876 select: interfaces to the BSD select() system call
   16877 
   16878 dbm: interfaces to the (new) dbm library (dynamic only)
   16879 
   16880 nis: interfaces to some NIS functions (aka yellow pages)
   16881 
   16882 thread: limited form of multiple threads (sgi only)
   16883 
   16884 audioop: operations useful for audio programs, e.g. u-LAW and ADPCM
   16885 coding (dynamic only)
   16886 
   16887 cd: interface to Indigo SCSI CDROM player audio library (sgi only)
   16888 
   16889 jpeg: read files in JPEG format (dynamic only, sgi only; needs
   16890 external code)
   16891 
   16892 imgfile: read SGI image files (dynamic only, sgi only)
   16893 
   16894 sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only)
   16895 
   16896 sv: interface to Indigo video library (sgi only)
   16897 
   16898 pc: a minimal set of MS-DOS interfaces (MS-DOS only)
   16899 
   16900 rotor: encryption, by Lance Ellinghouse (dynamic only)
   16901 
   16902 
   16903 New standard modules
   16904 --------------------
   16905 
   16906 Not all these modules are documented.  Read the source:
   16907 lib/<modulename>.py.  Sometimes a file lib/<modulename>.doc contains
   16908 additional documentation.
   16909 
   16910 imghdr: recognizes image file headers
   16911 
   16912 sndhdr: recognizes sound file headers
   16913 
   16914 profile: print run-time statistics of Python code
   16915 
   16916 readcd, cdplayer: companion modules for built-in module cd (sgi only)
   16917 
   16918 emacs: interface to Emacs using py-connect.el (see below).
   16919 
   16920 SOCKET: symbolic constant definitions for socket options
   16921 
   16922 SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only)
   16923 
   16924 SV: symbolic constant definitions for sv (sgi only)
   16925 
   16926 CD: symbolic constant definitions for cd (sgi only)
   16927 
   16928 
   16929 New demos
   16930 ---------
   16931 
   16932 scripts/pp.py: execute Python as a filter with a Perl-like command
   16933 line interface
   16934 
   16935 classes/: examples using the new class features
   16936 
   16937 threads/: examples using the new thread module
   16938 
   16939 sgi/cd/: examples using the new cd module
   16940 
   16941 
   16942 Changes to the documentation
   16943 ----------------------------
   16944 
   16945 The last-minute syntax changes of release 0.9.6 are now reflected
   16946 everywhere in the manuals
   16947 
   16948 The reference manual has a new section (3.2) on implementing new kinds
   16949 of numbers, sequences or mappings with user classes
   16950 
   16951 Classes are now treated extensively in the tutorial (chapter 9)
   16952 
   16953 Slightly restructured the system-dependent chapters of the library
   16954 manual
   16955 
   16956 The file misc/EXTENDING incorporates documentation for mkvalue() and
   16957 a new section on error handling
   16958 
   16959 The files misc/CLASSES and misc/ERRORS are no longer necessary
   16960 
   16961 The doc/Makefile now creates PostScript files automatically
   16962 
   16963 
   16964 Miscellaneous changes
   16965 ---------------------
   16966 
   16967 Incorporated Tim Peters' changes to python-mode.el, it's now version
   16968 1.06
   16969 
   16970 A python/Emacs bridge (provided by Terrence M. Brannon) lets a Python
   16971 program running in an Emacs buffer execute Emacs lisp code.  The
   16972 necessary Python code is in lib/emacs.py.  The Emacs code is
   16973 misc/py-connect.el (it needs some external Emacs lisp code)
   16974 
   16975 
   16976 Changes to the source code that affect C extension writers
   16977 ----------------------------------------------------------
   16978 
   16979 New service function mkvalue() to construct a Python object from C
   16980 values according to a "format" string a la getargs()
   16981 
   16982 Most functions from pythonmain.c moved to new pythonrun.c which is
   16983 in libpython.a.  This should make embedded versions of Python easier
   16984 
   16985 ceval.h is split in eval.h (which needs compile.h and only declares
   16986 eval_code) and ceval.h (which doesn't need compile.hand declares the
   16987 rest)
   16988 
   16989 ceval.h defines macros BGN_SAVE / END_SAVE for use with threads (to
   16990 improve the parallellism of multi-threaded programs by letting other
   16991 Python code run when a blocking system call or something similar is
   16992 made)
   16993 
   16994 In structmember.[ch], new member types BYTE, CHAR and unsigned
   16995 variants have been added
   16996 
   16997 New file xxmodule.c is a template for new extension modules.
   16998 
   16999 
   17000 ==================================
   17001 ==> Release 0.9.6 (6 Apr 1992) <==
   17002 ==================================
   17003 
   17004 Misc news in 0.9.6:
   17005 - Restructured the misc subdirectory
   17006 - Reference manual completed, library manual much extended (with indexes!)
   17007 - the GNU Readline library is now distributed standard with Python
   17008 - the script "../demo/scripts/classfix.py" fixes Python modules using old
   17009   class syntax
   17010 - Emacs python-mode.el (was python.el) vastly improved (thanks, Tim!)
   17011 - Because of the GNU copyleft business I am not using the GNU regular
   17012   expression implementation but a free re-implementation by Tatu Ylonen
   17013   that recently appeared in comp.sources.misc (Bravo, Tatu!)
   17014 
   17015 New features in 0.9.6:
   17016 - stricter try stmt syntax: cannot mix except and finally clauses on 1 try
   17017 - New module 'os' supplants modules 'mac' and 'posix' for most cases;
   17018   module 'path' is replaced by 'os.path'
   17019 - os.path.split() return value differs from that of old path.split()
   17020 - sys.exc_type, sys.exc_value, sys.exc_traceback are set to the exception
   17021   currently being handled
   17022 - sys.last_type, sys.last_value, sys.last_traceback remember last unhandled
   17023   exception
   17024 - New function string.expandtabs() expands tabs in a string
   17025 - Added times() interface to posix (user & sys time of process & children)
   17026 - Added uname() interface to posix (returns OS type, hostname, etc.)
   17027 - New built-in function execfile() is like exec() but from a file
   17028 - Functions exec() and eval() are less picky about whitespace/newlines
   17029 - New built-in functions getattr() and setattr() access arbitrary attributes
   17030 - More generic argument handling in built-in functions (see "./EXTENDING")
   17031 - Dynamic loading of modules written in C or C++ (see "./DYNLOAD")
   17032 - Division and modulo for long and plain integers with negative operands
   17033   have changed; a/b is now floor(float(a)/float(b)) and a%b is defined
   17034   as a-(a/b)*b.  So now the outcome of divmod(a,b) is the same as
   17035   (a/b, a%b) for integers.  For floats, % is also changed, but of course
   17036   / is unchanged, and divmod(x,y) does not yield (x/y, x%y)...
   17037 - A function with explicit variable-length argument list can be declared
   17038   like this: def f(*args): ...; or even like this: def f(a, b, *rest): ...
   17039 - Code tracing and profiling features have been added, and two source
   17040   code debuggers are provided in the library (pdb.py, tty-oriented,
   17041   and wdb, window-oriented); you can now step through Python programs!
   17042   See sys.settrace() and sys.setprofile(), and "../lib/pdb.doc"
   17043 - '==' is now the only equality operator; "../demo/scripts/eqfix.py" is
   17044   a script that fixes old Python modules
   17045 - Plain integer right shift now uses sign extension
   17046 - Long integer shift/mask operations now simulate 2's complement
   17047   to give more useful results for negative operands
   17048 - Changed/added range checks for long/plain integer shifts
   17049 - Options found after "-c command" are now passed to the command in sys.argv
   17050   (note subtle incompatibility with "python -c command -- -options"!)
   17051 - Module stdwin is better protected against touching objects after they've
   17052   been closed; menus can now also be closed explicitly
   17053 - Stdwin now uses its own exception (stdwin.error)
   17054 
   17055 New features in 0.9.5 (released as Macintosh application only, 2 Jan 1992):
   17056 - dictionary objects can now be compared properly; e.g., {}=={} is true
   17057 - new exception SystemExit causes termination if not caught;
   17058   it is raised by sys.exit() so that 'finally' clauses can clean up,
   17059   and it may even be caught.  It does work interactively!
   17060 - new module "regex" implements GNU Emacs style regular expressions;
   17061   module "regexp" is rewritten in Python for backward compatibility
   17062 - formal parameter lists may contain trailing commas
   17063 
   17064 Bugs fixed in 0.9.6:
   17065 - assigning to or deleting a list item with a negative index dumped core
   17066 - divmod(-10L,5L) returned (-3L, 5L) instead of (-2L, 0L)
   17067 
   17068 Bugs fixed in 0.9.5:
   17069 - masking operations involving negative long integers gave wrong results
   17070 
   17071 
   17072 ===================================
   17073 ==> Release 0.9.4 (24 Dec 1991) <==
   17074 ===================================
   17075 
   17076 - new function argument handling (see below)
   17077 - built-in apply(func, args) means func(args[0], args[1], ...)
   17078 - new, more refined exceptions
   17079 - new exception string values (NameError = 'NameError' etc.)
   17080 - better checking for math exceptions
   17081 - for sequences (string/tuple/list), x[-i] is now equivalent to x[len(x)-i]
   17082 - fixed list assignment bug: "a[1:1] = a" now works correctly
   17083 - new class syntax, without extraneous parentheses
   17084 - new 'global' statement to assign global variables from within a function
   17085 
   17086 
   17087 New class syntax
   17088 ----------------
   17089 
   17090 You can now declare a base class as follows:
   17091 
   17092 	class B:			# Was: class B():
   17093 		def some_method(self): ...
   17094 		...
   17095 
   17096 and a derived class thusly:
   17097 
   17098 	class D(B):			# Was: class D() = B():
   17099 		def another_method(self, arg): ...
   17100 
   17101 Multiple inheritance looks like this:
   17102 
   17103 	class M(B, D):			# Was: class M() = B(), D():
   17104 		def this_or_that_method(self, arg): ...
   17105 
   17106 The old syntax is still accepted by Python 0.9.4, but will disappear
   17107 in Python 1.0 (to be posted to comp.sources).
   17108 
   17109 
   17110 New 'global' statement
   17111 ----------------------
   17112 
   17113 Every now and then you have a global variable in a module that you
   17114 want to change from within a function in that module -- say, a count
   17115 of calls to a function, or an option flag, etc.  Until now this was
   17116 not directly possible.  While several kludges are known that
   17117 circumvent the problem, and often the need for a global variable can
   17118 be avoided by rewriting the module as a class, this does not always
   17119 lead to clearer code.
   17120 
   17121 The 'global' statement solves this dilemma.  Its occurrence in a
   17122 function body means that, for the duration of that function, the
   17123 names listed there refer to global variables.  For instance:
   17124 
   17125 	total = 0.0
   17126 	count = 0
   17127 
   17128 	def add_to_total(amount):
   17129 		global total, count
   17130 		total = total + amount
   17131 		count = count + 1
   17132 
   17133 'global' must be repeated in each function where it is needed.  The
   17134 names listed in a 'global' statement must not be used in the function
   17135 before the statement is reached.
   17136 
   17137 Remember that you don't need to use 'global' if you only want to *use*
   17138 a global variable in a function; nor do you need ot for assignments to
   17139 parts of global variables (e.g., list or dictionary items or
   17140 attributes of class instances).  This has not changed; in fact
   17141 assignment to part of a global variable was the standard workaround.
   17142 
   17143 
   17144 New exceptions
   17145 --------------
   17146 
   17147 Several new exceptions have been defined, to distinguish more clearly
   17148 between different types of errors.
   17149 
   17150 name			meaning					was
   17151 
   17152 AttributeError		reference to non-existing attribute	NameError
   17153 IOError			unexpected I/O error			RuntimeError
   17154 ImportError		import of non-existing module or name	NameError
   17155 IndexError		invalid string, tuple or list index	RuntimeError
   17156 KeyError		key not in dictionary			RuntimeError
   17157 OverflowError		numeric overflow			RuntimeError
   17158 SyntaxError		invalid syntax				RuntimeError
   17159 ValueError		invalid argument value			RuntimeError
   17160 ZeroDivisionError	division by zero			RuntimeError
   17161 
   17162 The string value of each exception is now its name -- this makes it
   17163 easier to experimentally find out which operations raise which
   17164 exceptions; e.g.:
   17165 
   17166 	>>> KeyboardInterrupt
   17167 	'KeyboardInterrupt'
   17168 	>>>
   17169 
   17170 
   17171 New argument passing semantics
   17172 ------------------------------
   17173 
   17174 Off-line discussions with Steve Majewski and Daniel LaLiberte have
   17175 convinced me that Python's parameter mechanism could be changed in a
   17176 way that made both of them happy (I hope), kept me happy, fixed a
   17177 number of outstanding problems, and, given some backward compatibility
   17178 provisions, would only break a very small amount of existing code --
   17179 probably all mine anyway.  In fact I suspect that most Python users
   17180 will hardly notice the difference.  And yet it has cost me at least
   17181 one sleepless night to decide to make the change...
   17182 
   17183 Philosophically, the change is quite radical (to me, anyway): a
   17184 function is no longer called with either zero or one argument, which
   17185 is a tuple if there appear to be more arguments.  Every function now
   17186 has an argument list containing 0, 1 or more arguments.  This list is
   17187 always implemented as a tuple, and it is a (run-time) error if a
   17188 function is called with a different number of arguments than expected.
   17189 
   17190 What's the difference? you may ask.  The answer is, very little unless
   17191 you want to write variadic functions -- functions that may be called
   17192 with a variable number of arguments.  Formerly, you could write a
   17193 function that accepted one or more arguments with little trouble, but
   17194 writing a function that could be called with either 0 or 1 argument
   17195 (or more) was next to impossible.  This is now a piece of cake: you
   17196 can simply declare an argument that receives the entire argument
   17197 tuple, and check its length -- it will be of size 0 if there are no
   17198 arguments.
   17199 
   17200 Another anomaly of the old system was the way multi-argument methods
   17201 (in classes) had to be declared, e.g.:
   17202 
   17203 	class Point():
   17204 		def init(self, (x, y, color)): ...
   17205 		def setcolor(self, color): ...
   17206 		dev moveto(self, (x, y)): ...
   17207 		def draw(self): ...
   17208 
   17209 Using the new scheme there is no need to enclose the method arguments
   17210 in an extra set of parentheses, so the above class could become:
   17211 
   17212 	class Point:
   17213 		def init(self, x, y, color): ...
   17214 		def setcolor(self, color): ...
   17215 		dev moveto(self, x, y): ...
   17216 		def draw(self): ...
   17217 
   17218 That is, the equivalence rule between methods and functions has
   17219 changed so that now p.moveto(x,y) is equivalent to Point.moveto(p,x,y)
   17220 while formerly it was equivalent to Point.moveto(p,(x,y)).
   17221 
   17222 A special backward compatibility rule makes that the old version also
   17223 still works: whenever a function with exactly two arguments (at the top
   17224 level) is called with more than two arguments, the second and further
   17225 arguments are packed into a tuple and passed as the second argument.
   17226 This rule is invoked independently of whether the function is actually a
   17227 method, so there is a slight chance that some erroneous calls of
   17228 functions expecting two arguments with more than that number of
   17229 arguments go undetected at first -- when the function tries to use the
   17230 second argument it may find it is a tuple instead of what was expected.
   17231 Note that this rule will be removed from future versions of the
   17232 language; it is a backward compatibility provision *only*.
   17233 
   17234 Two other rules and a new built-in function handle conversion between
   17235 tuples and argument lists:
   17236 
   17237 Rule (a): when a function with more than one argument is called with a
   17238 single argument that is a tuple of the right size, the tuple's items
   17239 are used as arguments.
   17240 
   17241 Rule (b): when a function with exactly one argument receives no
   17242 arguments or more than one, that one argument will receive a tuple
   17243 containing the arguments (the tuple will be empty if there were no
   17244 arguments).
   17245 
   17246 
   17247 A new built-in function, apply(), was added to support functions that
   17248 need to call other functions with a constructed argument list.  The call
   17249 
   17250 	apply(function, tuple)
   17251 
   17252 is equivalent to
   17253 
   17254 	function(tuple[0], tuple[1], ..., tuple[len(tuple)-1])
   17255 
   17256 
   17257 While no new argument syntax was added in this phase, it would now be
   17258 quite sensible to add explicit syntax to Python for default argument
   17259 values (as in C++ or Modula-3), or a "rest" argument to receive the
   17260 remaining arguments of a variable-length argument list.
   17261 
   17262 
   17263 ========================================================
   17264 ==> Release 0.9.3 (never made available outside CWI) <==
   17265 ========================================================
   17266 
   17267 - string sys.version shows current version (also printed on interactive entry)
   17268 - more detailed exceptions, e.g., IOError, ZeroDivisionError, etc.
   17269 - 'global' statement to declare module-global variables assigned in functions.
   17270 - new class declaration syntax: class C(Base1, Base2, ...): suite
   17271   (the old syntax is still accepted -- be sure to convert your classes now!)
   17272 - C shifting and masking operators: << >> ~ & ^ | (for ints and longs).
   17273 - C comparison operators: == != (the old = and <> remain valid).
   17274 - floating point numbers may now start with a period (e.g., .14).
   17275 - definition of integer division tightened (always truncates towards zero).
   17276 - new builtins hex(x), oct(x) return hex/octal string from (long) integer.
   17277 - new list method l.count(x) returns the number of occurrences of x in l.
   17278 - new SGI module: al (Indigo and 4D/35 audio library).
   17279 - the FORMS interface (modules fl and FL) now uses FORMS 2.0
   17280 - module gl: added lrect{read,write}, rectzoom and pixmode;
   17281   added (non-GL) functions (un)packrect.
   17282 - new socket method: s.allowbroadcast(flag).
   17283 - many objects support __dict__, __methods__ or __members__.
   17284 - dir() lists anything that has __dict__.
   17285 - class attributes are no longer read-only.
   17286 - classes support __bases__, instances support __class__ (and __dict__).
   17287 - divmod() now also works for floats.
   17288 - fixed obscure bug in eval('1            ').
   17289 
   17290 
   17291 ===================================
   17292 ==> Release 0.9.2 (Autumn 1991) <==
   17293 ===================================
   17294 
   17295 Highlights
   17296 ----------
   17297 
   17298 - tutorial now (almost) complete; library reference reorganized
   17299 - new syntax: continue statement; semicolons; dictionary constructors;
   17300   restrictions on blank lines in source files removed
   17301 - dramatically improved module load time through precompiled modules
   17302 - arbitrary precision integers: compute 2 to the power 1000 and more...
   17303 - arithmetic operators now accept mixed type operands, e.g., 3.14/4
   17304 - more operations on list: remove, index, reverse; repetition
   17305 - improved/new file operations: readlines, seek, tell, flush, ...
   17306 - process management added to the posix module: fork/exec/wait/kill etc.
   17307 - BSD socket operations (with example servers and clients!)
   17308 - many new STDWIN features (color, fonts, polygons, ...)
   17309 - new SGI modules: font manager and FORMS library interface
   17310 
   17311 
   17312 Extended list of changes in 0.9.2
   17313 ---------------------------------
   17314 
   17315 Here is a summary of the most important user-visible changes in 0.9.2,
   17316 in somewhat arbitrary order.  Changes in later versions are listed in
   17317 the "highlights" section above.
   17318 
   17319 
   17320 1. Changes to the interpreter proper
   17321 
   17322 - Simple statements can now be separated by semicolons.
   17323   If you write "if t: s1; s2", both s1 and s2 are executed
   17324   conditionally.
   17325 - The 'continue' statement was added, with semantics as in C.
   17326 - Dictionary displays are now allowed on input: {key: value, ...}.
   17327 - Blank lines and lines bearing only a comment no longer need to
   17328   be indented properly.  (A completely empty line still ends a multi-
   17329   line statement interactively.)
   17330 - Mixed arithmetic is supported, 1 compares equal to 1.0, etc.
   17331 - Option "-c command" to execute statements from the command line
   17332 - Compiled versions of modules are cached in ".pyc" files, giving a
   17333   dramatic improvement of start-up time
   17334 - Other, smaller speed improvements, e.g., extracting characters from
   17335   strings, looking up single-character keys, and looking up global
   17336   variables
   17337 - Interrupting a print operation raises KeyboardInterrupt instead of
   17338   only cancelling the print operation
   17339 - Fixed various portability problems (it now passes gcc with only
   17340   warnings -- more Standard C compatibility will be provided in later
   17341   versions)
   17342 - Source is prepared for porting to MS-DOS
   17343 - Numeric constants are now checked for overflow (this requires
   17344   standard-conforming strtol() and strtod() functions; a correct
   17345   strtol() implementation is provided, but the strtod() provided
   17346   relies on atof() for everything, including error checking
   17347 
   17348 
   17349 2. Changes to the built-in types, functions and modules
   17350 
   17351 - New module socket: interface to BSD socket primitives
   17352 - New modules pwd and grp: access the UNIX password and group databases
   17353 - (SGI only:) New module "fm" interfaces to the SGI IRIX Font Manager
   17354 - (SGI only:) New module "fl" interfaces to Mark Overmars' FORMS library
   17355 - New numeric type: long integer, for unlimited precision
   17356 	- integer constants suffixed with 'L' or 'l' are long integers
   17357 	- new built-in function long(x) converts int or float to long
   17358 	- int() and float() now also convert from long integers
   17359 - New built-in function:
   17360 	- pow(x, y) returns x to the power y
   17361 - New operation and methods for lists:
   17362 	- l*n returns a new list consisting of n concatenated copies of l
   17363 	- l.remove(x) removes the first occurrence of the value x from l
   17364 	- l.index(x) returns the index of the first occurrence of x in l
   17365 	- l.reverse() reverses l in place
   17366 - New operation for tuples:
   17367 	- t*n returns a tuple consisting of n concatenated copies of t
   17368 - Improved file handling:
   17369 	- f.readline() no longer restricts the line length, is faster,
   17370 	  and isn't confused by null bytes; same for raw_input()
   17371 	- f.read() without arguments reads the entire (rest of the) file
   17372 	- mixing of print and sys.stdout.write() has different effect
   17373 - New methods for files:
   17374 	- f.readlines() returns a list containing the lines of the file,
   17375 	  as read with f.readline()
   17376 	- f.flush(), f.tell(), f.seek() call their stdio counterparts
   17377 	- f.isatty() tests for "tty-ness"
   17378 - New posix functions:
   17379 	- _exit(), exec(), fork(), getpid(), getppid(), kill(), wait()
   17380 	- popen() returns a file object connected to a pipe
   17381 	- utime() replaces utimes() (the latter is not a POSIX name)
   17382 - New stdwin features, including:
   17383 	- font handling
   17384 	- color drawing
   17385 	- scroll bars made optional
   17386 	- polygons
   17387 	- filled and xor shapes
   17388 	- text editing objects now have a 'settext' method
   17389 
   17390 
   17391 3. Changes to the standard library
   17392 
   17393 - Name change: the functions path.cat and macpath.cat are now called
   17394   path.join and macpath.join
   17395 - Added new modules: formatter, mutex, persist, sched, mainloop
   17396 - Added some modules and functionality to the "widget set" (which is
   17397   still under development, so please bear with me):
   17398 	DirList, FormSplit, TextEdit, WindowSched
   17399 - Fixed module testall to work non-interactively
   17400 - Module string:
   17401 	- added functions join() and joinfields()
   17402 	- fixed center() to work correct and make it "transitive"
   17403 - Obsolete modules were removed: util, minmax
   17404 - Some modules were moved to the demo directory
   17405 
   17406 
   17407 4. Changes to the demonstration programs
   17408 
   17409 - Added new useful scipts: byteyears, eptags, fact, from, lfact,
   17410   objgraph, pdeps, pi, primes, ptags, which
   17411 - Added a bunch of socket demos
   17412 - Doubled the speed of ptags
   17413 - Added new stdwin demos: microedit, miniedit
   17414 - Added a windowing interface to the Python interpreter: python (most
   17415   useful on the Mac)
   17416 - Added a browser for Emacs info files: demo/stdwin/ibrowse
   17417   (yes, I plan to put all STDWIN and Python documentation in texinfo
   17418   form in the future)
   17419 
   17420 
   17421 5. Other changes to the distribution
   17422 
   17423 - An Emacs Lisp file "python.el" is provided to facilitate editing
   17424   Python programs in GNU Emacs (slightly improved since posted to
   17425   gnu.emacs.sources)
   17426 - Some info on writing an extension in C is provided
   17427 - Some info on building Python on non-UNIX platforms is provided
   17428 
   17429 
   17430 =====================================
   17431 ==> Release 0.9.1 (February 1991) <==
   17432 =====================================
   17433 
   17434 - Micro changes only
   17435 - Added file "patchlevel.h"
   17436 
   17437 
   17438 =====================================
   17439 ==> Release 0.9.0 (February 1991) <==
   17440 =====================================
   17441 
   17442 Original posting to alt.sources.
   17443