not running this test with MSVC6
[python.git] / Misc / HISTORY
blob14f283d92d75fbb196d185c3f04a76cc91cd7e65
1 Python History
2 --------------
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.)
10 ======================================================================
13 What's New in Python 2.5 release candidate 1?
14 =============================================
16 *Release date: 17-AUG-2006*
18 Core and builtins
19 -----------------
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.
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.
31   Note that compare operators other than equal and unequal will still
32   raise UnicodeDecodeError exceptions as they've always done.
34 - Fix segfault when doing string formatting on subclasses of long.
36 - Fix bug related to __len__ functions using values > 2**32 on 64-bit machines
37   with new-style classes.
39 - Fix bug related to __len__ functions returning negative values with
40   classic classes.
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__.
47 - Bug #1536021: __hash__ may now return long int; the final hash
48   value is obtained by invoking hash on the long int.
50 - Bug #1536786: buffer comparison could emit a RuntimeWarning.
52 - Bug #1535165: fixed a segfault in input() and raw_input() when
53   sys.stdin is closed.
55 - On Windows, the PyErr_Warn function is now exported from
56   the Python dll again.
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.
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.
67 - Fixed a reference-counting problem in property().
70 Library
71 -------
73 - Fix a bug in the ``compiler`` package that caused invalid code to be
74   generated for generator expressions.
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.
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.
86 - The __repr__ method of a NULL ctypes.py_object() no longer raises
87   an exception.
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.
94 - Patch #1540892: site.py Quitter() class attempts to close sys.stdin
95   before raising SystemExit, allowing IDLE to honor quit() and exit().
97 - Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize.
99 - Patch #1536071: trace.py should now find the full module name of a
100   file correctly even on Windows.
102 - logging's atexit hook now runs even if the rest of the module has
103   already been cleaned up.
105 - Bug #1112549, fix DoS attack on cgi.FieldStorage.
107 - Bug #1531405, format_exception no longer raises an exception if
108   str(exception) raised an exception.
110 - Fix a bug in the ``compiler`` package that caused invalid code to be
111   generated for nested functions.
114 Extension Modules
115 -----------------
117 - Patch #1511317: don't crash on invalid hostname (alias) info.
119 - Patch #1535500: fix segfault in BZ2File.writelines and make sure it
120   raises the correct exceptions.
122 - Patch # 1536908: enable building ctypes on OpenBSD/AMD64.  The
123   '-no-stack-protector' compiler flag for OpenBSD has been removed.
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.
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.
134 Tests
135 -----
137 - test_socketserver should now work on cygwin and not fail sporadically
138   on other platforms.
140 - test_mailbox should now work on cygwin versions 2006-08-10 and later.
142 - Bug #1535182: really test the xreadlines() method of bz2 objects.
144 - test_threading now skips testing alternate thread stack sizes on
145   platforms that don't support changing thread stack size.
148 Documentation
149 -------------
151 - Patch #1534922: unittest docs were corrected and enhanced.
154 Build
155 -----
157 - Bug #1535502, build _hashlib on Windows, and use masm assembler
158   code in OpenSSL.
160 - Bug #1534738, win32 debug version of _msi should be _msi_d.pyd.
162 - Bug #1530448, ctypes build failure on Solaris 10 was fixed.
165 C API
166 -----
168 - New API for Unicode rich comparisons: PyUnicode_RichCompare()
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).
176 What's New in Python 2.5 beta 3?
177 ================================
179 *Release date: 03-AUG-2006*
181 Core and builtins
182 -----------------
184 - _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously
185   returned a long (see PEP 353).
187 - Bug #1515471: string.replace() accepts character buffers again.
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().
193 - Patch #1531113: Fix augmented assignment with yield expressions.
194   Also fix a SystemError when trying to assign to yield expressions.
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.
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.
206 - Bug #1524310: Properly report errors from FindNextFile in os.listdir.
208 - Patch #1232023: Stop including current directory in search
209   path on Windows.
211 - Fix some potential crashes found with failmalloc.
213 - Fix warnings reported by Klocwork's static analysis tool.
215 - Bug #1512814, Fix incorrect lineno's when code within a function
216   had more than 255 blank lines.
218 - Patch #1521179: Python now accepts the standard options ``--help`` and
219   ``--version`` as well as ``/?`` on Windows.
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.
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.
230 - Bug #1525447: build on MacOS X on a case-sensitive filesystem.
233 Library
234 -------
236 - Fix #1693149.  Now you can pass several modules separated by
237   comma to trace.py in the same --ignore-module option.
239 - Correction of patch #1455898: In the mbcs decoder, set final=False
240   for stream decoder, but final=True for the decode function.
242 - os.urandom no longer masks unrelated exceptions like SystemExit or
243   KeyboardInterrupt.
245 - Bug #1525866: Don't copy directory stat times in
246   shutil.copytree on Windows
248 - Bug #1002398: The documentation for os.path.sameopenfile now correctly
249   refers to file descriptors, not file objects.
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.
255 - Bug #1441397: The compiler module now recognizes module and function
256   docstrings correctly as it did in Python 2.4.
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.
264 - The distutils version has been changed to 2.5.0, and is now kept
265   in sync with sys.version_info[:3].
267 - Bug #978833: Really close underlying socket in _socketobject.close.
269 - Bug #1459963: urllib and urllib2 now normalize HTTP header names with
270   title().
272 - Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback
273   to recursive calls and call it with the failing package name.
275 - Bug #1525817: Don't truncate short lines in IDLE's tool tips.
277 - Patch #1515343: Fix printing of deprecated string exceptions with a
278   value in the traceback module.
280 - Resync optparse with Optik 1.5.3: minor tweaks for/to tests.
282 - Patch #1524429: Use repr() instead of backticks in Tkinter again.
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.
290 - Patch #1220874: Update the binhex module for Mach-O.
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).
301   Also, whereas % values were decoded in all parameter continuations, they are
302   now only decoded in encoded parameter parts.
304 - Bug #1517990: IDLE keybindings on MacOS X now work correctly
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
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.
315 Extension Modules
316 -----------------
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.
322 - Patch #1529514: The _ctypes extension is now compiled on more
323   openbsd target platforms.
325 - The ``__reduce__()`` method of the new ``collections.defaultdict`` had
326   a memory leak, affecting pickles and deep copies.
328 - Bug #1471938: Fix curses module build problem on Solaris 8; patch by
329   Paul Eggert.
331 - Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry.
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.
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.
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.
344 - Because of a misspelled preprocessor symbol, ctypes was always
345   compiled without thread support; this is now fixed.
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.
351 - Bug #1526460: Fix socketmodule compile on NetBSD as it has a different
352   bluetooth API compared with Linux and FreeBSD.
354 Tests
355 -----
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.
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.
365 Build
366 -----
368 - Bug #1439538: Drop usage of test -e in configure as it is not portable.
373 - PythonLauncher now works correctly when the path to the script contains
374   characters that are treated specially by the shell (such as quotes).
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.
382 What's New in Python 2.5 beta 2?
383 ================================
385 *Release date: 11-JUL-2006*
387 Core and builtins
388 -----------------
390 - Bug #1441486: The literal representation of -(sys.maxint - 1)
391   again evaluates to a int object, not a long.
393 - Bug #1501934: The scope of global variables that are locally assigned
394   using augmented assignment is now correctly determined.
396 - Bug #927248: Recursive method-wrapper objects can now safely
397   be released.
399 - Bug #1417699: Reject locale-specific decimal point in float()
400   and atof().
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.
406 - Bug #1519018: 'as' is now validated properly in import statements.
408 - On 64 bit systems, int literals that use less than 64 bits are
409   now ints rather than longs.
411 - Bug #1512814, Fix incorrect lineno's when code at module scope
412   started after line 256.
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.
421 Library
422 -------
424 - Bug #1257728: Mention Cygwin in distutils error message about a missing
425   VS 2003.
427 - Patch #1519566: Update turtle demo, make begin_fill idempotent.
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.
433 - Bug #1515998: Properly generate logical ids for files in bdist_msi.
435 - warnings.py now ignores ImportWarning by default
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.
441 - Bug #822974: Honor timeout in telnetlib.{expect,read_until}
442   even if some data are received.
444 - Bug #1267547: Put proper recursive setup.py call into the
445   spec file generated by bdist_rpm.
447 - Bug #1514693: Update turtle's heading when switching between
448   degrees and radians.
450 - Reimplement turtle.circle using a polyline, to allow correct
451   filling of arcs.
453 - Bug #1514703: Only setup canvas window in turtle when the canvas
454   is created.
456 - Bug #1513223: .close() of a _socketobj now releases the underlying
457   socket again, which then gets closed as it becomes unreferenced.
459 - Bug #1504333: Make sgmllib support angle brackets in quoted
460   attribute values.
462 - Bug #853506: Fix IPv6 address parsing in unquoted attributes in
463   sgmllib ('[' and ']' were not accepted).
465 - Fix a bug in the turtle module's end_fill function.
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.
471 - The compiler module now correctly compiles the new try-except-finally
472   statement (bug #1509132).
474 - The wsgiref package is now installed properly on Unix.
476 - A bug was fixed in logging.config.fileConfig() which caused a crash on
477   shutdown when fileConfig() was called multiple times.
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.
483 Extension Modules
484 -----------------
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.
490 - Assigning None to pointer type fields in ctypes structures possible
491   overwrote the wrong fields, this is fixed now.
493 - Fixed a segfault in _ctypes when ctypes.wintypes were imported
494   on non-Windows platforms.
496 - Bug #1518190: The ctypes.c_void_p constructor now accepts any
497   integer or long, without range checking.
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.
503 - The '_ctypes' extension module now works when Python is configured
504   with the --without-threads option.
506 - Bug #1513646: os.access on Windows now correctly determines write
507   access, again.
509 - Bug #1512695: cPickle.loads could crash if it was interrupted with
510   a KeyboardInterrupt.
512 - Bug #1296433: parsing XML with a non-default encoding and
513   a CharacterDataHandler could crash the interpreter in pyexpat.
515 - Patch #1516912: improve Modules support for OpenVMS.
517 Build
518 -----
520 - Automate Windows build process for the Win64 SSL module.
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.
526 - The MSI compileall step was fixed to also support a TARGETDIR
527   with spaces in it.
529 - Bug #1517388: sqlite3.dll is now installed on Windows independent
530   of Tcl/Tk.
532 - Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old
533   trying to be installed even though it's empty.
535 Tests
536 -----
538 - Call os.waitpid() at the end of tests that spawn child processes in order
539   to minimize resources (zombies).
541 Documentation
542 -------------
544 - Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the
545   documentation for the warnings module.
547 - Patch #1509163: MS Toolkit Compiler no longer available.
549 - Patch #1504046: Add documentation for xml.etree.
552 What's New in Python 2.5 beta 1?
553 ================================
555 *Release date: 20-JUN-2006*
557 Core and builtins
558 -----------------
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.
564 - Bug #992017: A classic class that defined a __coerce__() method that returned
565   its arguments swapped would infinitely recurse and segfault the interpreter.
567 - Fix the socket tests so they can be run concurrently.
569 - Removed 5 integers from C frame objects (PyFrameObject).
570   f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted.
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.
578 - The string and unicode methods startswith() and endswith() now accept
579   a tuple of prefixes/suffixes to look for. Implements RFE #1491485.
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.
587 - Patch #1346214: Statements like "if 0: suite" are now again optimized
588   away like they were in Python 2.4.
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.
594 - Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to
595   Unicode 4.1.
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.
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).
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.
612 - Patch #1337051: reduced size of frame objects.
614 - PyErr_NewException now accepts a tuple of base classes as its
615   "base" parameter.
617 - Patch #876206: function call speedup by retaining allocated frame
618   objects.
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.
624 - Patch #1488312, Fix memory alignment problem on SPARC in unicode
626 - Bug #1487966: Fix SystemError with conditional expression in assignment
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.
633 - Patch #1475845: Raise IndentationError for unexpected indent.
635 - Patch #1479181: split open() and file() from being aliases for each other.
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).
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 ;-)
647 Extension Modules
648 -----------------
650 - Bug #1295808: expat symbols should be namespaced in pyexpat
652 - Patch #1462338: Upgrade pyexpat to expat 2.0.0
654 - Change binascii.hexlify to accept a read-only buffer instead of only a char
655   buffer and actually follow its documentation.
657 - Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder.
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.
664 - Patch #1493701: performance enhancements for struct module.
666 - Patch #1490224: time.altzone is now set correctly on Cygwin.
668 - Patch #1435422: zlib's compress and decompress objects now have a
669   copy() method.
671 - Patch #1454481: thread stack size is now tunable at runtime for thread
672   enabled builds on Windows and systems with Posix threads support.
674 - On Win32, os.listdir now supports arbitrarily-long Unicode path names
675   (up to the system limit of 32K characters).
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.
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).
684 - Calling Tk_Init twice is refused if the first call failed as that
685   may deadlock.
687 - bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to
688   accept it without potentially using an uninitialized pointer.
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]
694 - bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class.
695   [pybsddb project SF patch number 1466734]
697 - bsddb: fix DBCursor.pget() bug with keyword argument names when no data
698   parameter is supplied.  [SF pybsddb bug #1477863]
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).
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.
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]
713 - Patch #1446489: add support for the ZIP64 extensions to zipfile.
715 - Patch #1506645: add Python wrappers for the curses functions
716   is_term_resized, resize_term and resizeterm.
718 Library
719 -------
721 - Patch #815924: Restore ability to pass type= and icon= in tkMessageBox
722   functions.
724 - Patch #812986: Update turtle output even if not tracing.
726 - Patch #1494750: Destroy master after deleting children in
727   Tkinter.BaseWidget.
729 - Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap.
731 - Patch #763580: Add name and value arguments to Tkinter variable
732   classes.
734 - Bug #1117556: SimpleHTTPServer now tries to find and use the system's
735   mime.types file for determining MIME types.
737 - Bug #1339007: Shelf objects now don't raise an exception in their
738   __del__ method when initialization failed.
740 - Patch #1455898: The MBCS codec now supports the incremental mode for
741   double-byte encodings.
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.
749 - Bug #1498146: fix optparse to handle Unicode strings in option help,
750   description, and epilog.
752 - Bug #1366250: minor optparse documentation error.
754 - Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately;
755   clarify docs.
757 - The wsgiref package has been added to the standard library.
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.
763 - The optional ``isprivate`` argument to ``doctest.testmod()``, and the
764   ``doctest.is_private()`` function, both deprecated in 2.4, were removed.
766 - Patch #1359618: Speed up charmap encoder by using a trie structure
767   for lookup.
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.
775 - Patch #1497027: try HTTP digest auth before basic auth in urllib2
776   (thanks for J. J. Lee).
778 - Patch #1496206: improve urllib2 handling of passwords with respect to
779   default HTTP and HTTPS ports.
781 - Patch #1080727: add "encoding" parameter to doctest.DocFileSuite.
783 - Patch #1281707: speed up gzip.readline.
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.
789 - Patch #1486962: Several bugs in the turtle Tk demo module were fixed
790   and several features added, such as speed and geometry control.
792 - Patch #1488881: add support for external file objects in bz2 compressed
793   tarfiles.
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.
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.
803 - Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a
804   new flag when ``name`` is already the name of an option flag.
806 - Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler
807   package.
809 - Patch #1472854: make the rlcompleter.Completer class usable on non-
810   UNIX platforms.
812 - Patch #1470846: fix urllib2 ProxyBasicAuthHandler.
814 - Bug #1472827: correctly escape newlines and tabs in attribute values in
815   the saxutils.XMLGenerator class.
818 Build
819 -----
821 - Bug #1502728: Correctly link against librt library on HP-UX.
823 - OpenBSD 3.9 is supported now.
825 - Patch #1492356: Port to Windows CE.
827 - Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64.
829 - Patch #1471883: Add --enable-universalsdk.
831 C API
832 -----
834 Tests
835 -----
837 Tools
838 -----
840 Documentation
841 -------------
845 What's New in Python 2.5 alpha 2?
846 =================================
848 *Release date: 27-APR-2006*
850 Core and builtins
851 -----------------
853 - Bug #1465834: 'bdist_wininst preinstall script support' was fixed
854   by converting these apis from macros into exported functions again:
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
862 - Under COUNT_ALLOCS, types are not necessarily immortal anymore.
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.
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.
872 - Py_UNICODE is unsigned.  It was always documented as unsigned, but
873   due to a bug had a signed value in previous versions.
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:
881       def __hash__(self):
882           return id(self)  # WRONG
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.
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)
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.)
901 Extension Modules
902 -----------------
904 - Patch #1191065: Fix preprocessor problems on systems where recvfrom
905   is a macro.
907 - Bug #1467952: os.listdir() now correctly raises an error if readdir()
908   fails with an error condition.
910 - Fixed bsddb.db.DBError derived exceptions so they can be unpickled.
912 - Bug #1117761: bsddb.*open() no longer raises an exception when using
913   the cachesize parameter.
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.
918 - Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3
919   as older versions cause excessive test failures.
921 - Patch #1062014: AF_UNIX sockets under Linux have a special
922   abstract namespace that is now fully supported.
924 Library
925 -------
927 - Bug #1223937: subprocess.CalledProcessError reports the exit status
928   of the process using the returncode attribute, instead of
929   abusing errno.
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).
935 - Fixed contextlib.nested to cope with exceptions being raised and
936   caught inside exit handlers.
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).
943 - Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when
944   called from a thread spawned as a side effect of importing a module.
946 - The pydoc module now supports documenting packages contained in
947   .zip or .egg files.
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.
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.
958 - The ``__del__`` method of class ``local`` in module ``_threading_local``
959   returned before accomplishing any of its intended cleanup.
961 - Patch #790710: Add breakpoint command lists in pdb.
963 - Patch #1063914: Add Tkinter.Misc.clipboard_get().
965 - Patch #1191700: Adjust column alignment in bdb breakpoint lists.
967 - SimpleXMLRPCServer relied on the fcntl module, which is unavailable on
968   Windows. Bug #1469163.
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.
974 - Patch #1467770: Reduce usage of subprocess._active to processes which
975   the application hasn't waited on.
977 - Patch #1462222: Fix Tix.Grid.
979 - Fix exception when doing glob.glob('anything*/')
981 - The pstats.Stats class accepts an optional stream keyword argument to
982   direct output to an alternate file-like object.
984 Build
985 -----
987 - The Makefile now has a reindent target, which runs reindent.py on
988   the library.
990 - Patch #1470875: Building Python with MS Free Compiler
992 - Patch #1161914: Add a python-config script.
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.
999 - Patch #1429775: Link extension modules with the shared libpython.
1001 - Fixed a libffi build problem on MIPS systems.
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``.
1007 Tests
1008 -----
1010 - test_contextlib now checks contextlib.nested can cope with exceptions
1011   being raised and caught inside exit handlers.
1013 - test_cmd_line now checks operation of the -m and -c command switches
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.
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.
1024 Tools
1025 -----
1027 - Added the Python benchmark suite pybench to the Tools/ directory;
1028   contributed by Marc-Andre Lemburg.
1030 Documentation
1031 -------------
1033 - Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``.
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.
1039 - Bug #1337990: clarified that ``doctest`` does not support examples
1040   requiring both expected output and an exception.
1043 What's New in Python 2.5 alpha 1?
1044 =================================
1046 *Release date: 05-APR-2006*
1048 Core and builtins
1049 -----------------
1051 - PEP 338: -m command line switch now delegates to runpy.run_module
1052   allowing it to support modules in packages and zipfiles
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.
1058 - Bug #1421664: sys.stderr.encoding is now set to the same value as
1059   sys.stdout.encoding.
1061 - __import__ accepts keyword arguments.
1063 - Patch #1460496: round() now accepts keyword arguments.
1065 - Fixed bug #1459029 - unicode reprs were double-escaped.
1067 - Patch #1396919: The system scope threads are reenabled on FreeBSD
1068   5.4 and later versions.
1070 - Bug #1115379: Compiling a Unicode string with an encoding declaration
1071   now gives a SyntaxError.
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).
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.
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.
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.
1098 - Fixed various bugs reported by Coverity's Prevent tool.
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.
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.
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.
1115 - CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default.
1116   The name was removed from Include/code.h.
1118 - PEP 308: conditional expressions were added: (x if cond else y).
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.
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.
1136 - Fix the encodings package codec search function to only search
1137   inside its own package. Fixes problem reported in patch #1433198.
1139   Note: Codec packages should implement and register their own
1140   codec search function. PEP 100 has the details.
1142 - PEP 353: Using ``Py_ssize_t`` as the index type.
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.
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.
1154 - Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8.
1155   configure would break checking curses.h.
1157 - Bug #959576: The pwd module is now builtin. This allows Python to be
1158   built on UNIX platforms without $HOME set.
1160 - Bug #1072182, fix some potential problems if characters are signed.
1162 - Bug #889500, fix line number on SyntaxWarning for global declarations.
1164 - Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
1166 - Support for converting hex strings to floats no longer works.
1167   This was not portable.  float('0x3') now raises a ValueError.
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.
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.
1177 - Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec
1178   now encodes backslash correctly.
1180 - Patch #1350409: Work around signal handling bug in Visual Studio 2005.
1182 - Bug #1281408: Py_BuildValue now works correctly even with unsigned longs
1183   and long longs.
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.
1189 - Replaced most Unicode charmap codecs with new ones using the
1190   new Unicode translate string feature in the builtin 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)
1195 - Added a few more codecs for Mac OS encodings
1197 - Sped up some Unicode operations.
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.
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))
1206 - SF Bug #976608: fix SystemError when mtime of an imported file is -1.
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.
1211 - Fix segfault with invalid coding.
1213 - SF bug #772896: unknown encoding results in MemoryError.
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.
1219 - On 64-bit platforms, when __len__() returns a value that cannot be
1220   represented as a C int, raise OverflowError.
1222 - test__locale is skipped on OS X < 10.4 (only partial locale support is
1223   present).
1225 - SF bug #893549: parsing keyword arguments was broken with a few format
1226   codes.
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).
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).
1235 - Disallow keyword arguments for type constructors that don't use them
1236   (fixes bug #1119418).
1238 - Forward UnicodeDecodeError into SyntaxError for source encoding errors.
1240 - SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for
1241   exceptions that cause a function to exit.
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.
1247 - SF bug #1238681:  freed pointer is used in longobject.c:long_pow().
1249 - SF bug #1229429: PyObject_CallMethod failed to decrement some
1250   reference counts in some error exit cases.
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.
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().
1264 - SF bug #1224347: hex longs now print with lowercase letters just
1265   like their int counterparts.
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).
1273 - SF patch #1180995: marshal now uses a binary format by default when
1274   serializing floats.
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.
1280 - bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP
1281   278.
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 D�rwald.
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.
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).
1302 - Typing Ctrl-C whilst raw_input() was waiting in a build with threads
1303   disabled caused a crash.
1305 - Bug #1165306: instancemethod_new allowed the creation of a method
1306   with im_class == im_self == NULL, which caused a crash when called.
1308 - Move exception finalisation later in the shutdown process - this
1309   fixes the crash seen in bug #1165761
1311 - Added two new builtins, any() and all().
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).
1318 - Patch #1115086: Support PY_LONGLONG in structmember.
1320 - Bug #1155938: new style classes did not check that __init__() was
1321   returning None.
1323 - Patch #802188: Report characters after line continuation character
1324   ('\') with a specific error message.
1326 - Bug #723201: Raise a TypeError for passing bad objects to 'L' format.
1328 - Bug #1124295: the __name__ attribute of file objects was
1329   inadvertently made inaccessible in restricted mode.
1331 - Bug #1074011: closing sys.std{out,err} now causes a flush() and
1332   an ferror() call.
1334 - min() and max() now support key= arguments with the same meaning as in
1335   list.sort().
1337 - The peephole optimizer now performs simple constant folding in expressions:
1338       (2+3) --> (5).
1340 - set and frozenset objects can now be marshalled.  SF #1098985.
1342 - Bug #1077106: Poor argument checking could cause memory corruption
1343   in calls to os.read().
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.
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.
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).
1359 Extension Modules
1360 -----------------
1362 - Patch #1380952: fix SSL objects timing out on consecutive read()s
1364 - Patch #1309579: wait3 and wait4 were added to the posix module.
1366 - Patch #1231053: The audioop module now supports encoding/decoding of alaw.
1367   In addition, the existing ulaw code was updated.
1369 - RFE #567972: Socket objects' family, type and proto properties are
1370   now exposed via new attributes.
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
1377 - The following modules were removed:  regsub, reconvert, regex, regex_syntax.
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.
1382 - Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle
1383   SS2 (single-shift 2) escape sequences correctly.
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).
1389 - The timing module is no longer built by default.  It was deprecated
1390   in PEP 4 in Python 2.0 or earlier.
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).
1395 - Bug #854823: socketmodule now builds on Sun platforms even when
1396   INET_ADDRSTRLEN is not defined.
1398 - Patch #1393157: os.startfile() now has an optional argument to specify
1399   a "command verb" to invoke on the file.
1401 - Bug #876637, prevent stack corruption when socket descriptor
1402   is larger than FD_SETSIZE.
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.
1408 - Patch #1422385: The nis module now supports access to domains other
1409   than the system default domain.
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).
1415 - Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery.
1417 - Bug #1413192, fix seg fault in bsddb if a transaction was deleted
1418   before the env.
1420 - Patch #1103116: Basic AF_NETLINK support.
1422 - Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...)
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.
1428 - Bug #1400115, Fix segfault when calling curses.panel.userptr()
1429   without prior setting of the userptr.
1431 - Fix 64-bit problems in bsddb.
1433 - Patch #1365916: fix some unsafe 64-bit mmap methods.
1435 - Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build
1436   problem on AIX.
1438 - Bug #869197: os.setgroups rejects long integer arguments
1440 - Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint
1442 - Bug #1344508, Fix UNIX mmap leaking file descriptors
1444 - Patch #1338314, Bug #1336623: fix tarfile so it can extract
1445   REGTYPE directories from tarfiles written by old programs.
1447 - Patch #1407992, fixes broken bsddb module db associate when using
1448   BerkeleyDB 3.3, 4.0 or 4.1.
1450 - Get bsddb module to build with BerkeleyDB version 4.4
1452 - Get bsddb module to build with BerkeleyDB version 3.2
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
1457 - Fix parse errors in the readline module when compiling without threads.
1459 - Patch #1288833: Removed thread lock from socket.getaddrinfo on
1460   FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3).
1462 - Patches #1298449 and #1298499: Add some missing checks for error
1463   returns in cStringIO.c.
1465 - Patch #1297028: fix segfault if call type on MultibyteCodec,
1466   MultibyteStreamReader, or MultibyteStreamWriter
1468 - Fix memory leak in posix.access().
1470 - Patch #1213831: Fix typo in unicodedata._getcode.
1472 - Bug #1007046: os.startfile() did not accept unicode strings encoded in
1473   the file system encoding.
1475 - Patch #756021: Special-case socket.inet_aton('255.255.255.255') for
1476   platforms that don't have inet_aton().
1478 - Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets.
1480 - Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one
1481   line without newlines.
1483 - Bug #728515: mmap.resize() now resizes the file on Unix as it did
1484   on Windows.
1486 - Patch #1180695: Add nanosecond stat resolution, and st_gen,
1487   st_birthtime for FreeBSD.
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.
1493 - Bug #1234979: For the argument of thread.Lock.acquire, the Windows
1494   implementation treated all integer values except 1 as false.
1496 - Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly.
1498 - Patch #1212117: os.stat().st_flags is now accessible as a attribute
1499   if available on the platform.
1501 - Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if
1502   available on the platform.
1504 - Bug #1166660: The readline module could segfault if hook functions
1505   were set in a different thread than that which called readline.
1507 - collections.deque objects now support a remove() method.
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).
1513 - os.access now supports Unicode path names on non-Win32 systems.
1515 - Patches #925152, #1118602: Avoid reading after the end of the buffer
1516   in pyexpat.GetInputContext.
1518 - Patches #749830, #1144555: allow UNIX mmap size to default to current
1519   file size.
1521 - Added functional.partial().  See PEP309.
1523 - Patch #1093585: raise a ValueError for negative history items in readline.
1524   {remove_history,replace_history}
1526 - The spwd module has been added, allowing access to the shadow password
1527   database.
1529 - stat_float_times is now True.
1531 - array.array objects are now picklable.
1533 - the cPickle module no longer accepts the deprecated None option in the
1534   args tuple returned by __reduce__().
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)
1540 - datetime.datetime() now has a strptime class method which can be used to
1541   create datetime object using a string and format.
1543 - Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc
1544   with the implementation from http://sourceforge.net/projects/libmd5-rfc/.
1546 Library
1547 -------
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.
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.
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.
1561 - Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results
1562   now sport attributes that provide access to the parts of the result.
1564 - Patch #1462498: sgmllib now handles entity and character references
1565   in attribute values.
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.
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.
1577 - Bug #1445068: getpass.getpass() can now be given an explicit stream
1578   argument to specify where to write the prompt.
1580 - Patch #1462313, bug #1443328: the pickle modules now can handle classes
1581   that have __private names in their __slots__.
1583 - Bug #1250170: mimetools now handles socket.gethostname() failures gracefully.
1585 - patch #1457316: "setup.py upload" now supports --identity to select the
1586   key to be used for signing the uploaded code.
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.
1592 - popen2.Popen objects now preserve the command in a .cmd attribute.
1594 - Added the ctypes ffi package.
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.
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.
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).
1616 - A regrtest option -w was added to re-run failed tests in verbose mode.
1618 - Patch #1446372: quit and exit can now be called from the interactive
1619   interpreter to exit.
1621 - The function get_count() has been added to the gc module, and gc.collect()
1622   grew an optional 'generation' argument.
1624 - A library msilib to generate Windows Installer files, and a distutils
1625   command bdist_msi have been added.
1627 - PEP 343: new module contextlib.py defines decorator @contextmanager
1628   and helpful context managers nested() and closing().
1630 - The compiler package now supports future imports after the module docstring.
1632 - Bug #1413790: zipfile now sanitizes absolute archive names that are
1633   not allowed by the specs.
1635 - Patch #1215184: FileInput now can be given an opening hook which can
1636   be used to control how files are opened.
1638 - Patch #1212287: fileinput.input() now has a mode parameter for
1639   specifying the file mode input files should be opened with.
1641 - Patch #1215184: fileinput now has a fileno() function for getting the
1642   current file number.
1644 - Patch #1349274: gettext.install() now optionally installs additional
1645   translation functions other than _() in the builtin namespace.
1647 - Patch #1337756: fileinput now accepts Unicode filenames.
1649 - Patch #1373643: The chunk module can now read chunks larger than
1650   two gigabytes.
1652 - Patch #1417555: SimpleHTTPServer now returns Last-Modified headers.
1654 - Bug #1430298: It is now possible to send a mail with an empty
1655   return address using smtplib.
1657 - Bug #1432260: The names of lambda functions are now properly displayed
1658   in pydoc.
1660 - Patch #1412872: zipfile now sets the creator system to 3 (Unix)
1661   unless the system is Win32.
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.
1667 - Bug #902075: urllib2 now supports 'host:port' style proxy specifications.
1669 - Bug #1407902: Add support for sftp:// URIs to urlparse.
1671 - Bug #1371247: Update Windows locale identifiers in locale.py.
1673 - Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters
1674   any more.
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.
1679 - Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature.
1681 - Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode
1683 - Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise
1684   LoadError as documented, instead of IOError.  For compatibility,
1685   LoadError subclasses IOError.
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:
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."
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.
1703 - Patch #1162825: Support non-ASCII characters in IDLE window titles.
1705 - Bug #1365984: urllib now opens "data:" URLs again.
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)
1711 - Bug #1340337: change time.strptime() to always return ValueError when there
1712   is an error in the format string.
1714 - Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann).
1716 - Bug #729103: pydoc.py: Fix docother() method to accept additional
1717   "parent" argument.
1719 - Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes
1720   for padding.
1722 - Bug #1296004: httplib.py: Limit maximal amount of data read from the
1723   socket to avoid a MemoryError on Windows.
1725 - Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE
1726   to get the correct encoding.
1728 - Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of
1729   languages.
1731 - Patch #1268314: Cache lines in StreamReader.readlines for performance.
1733 - Bug #1290505: Fix clearing the regex cache for time.strptime().
1735 - Bug #1167128: Fix size of a symlink in a tarfile to be 0.
1737 - Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook
1738   functionality.
1740 - Bug #1163178: Make IDNA return an empty string when the input is empty.
1742 - Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output
1743   separator and do not output trailing semicolon.
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.
1749 - Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings.
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.
1755 - Bug #1192315: Disallow negative arguments to clear() in pdb.
1757 - Patch #827386: Support absolute source paths in msvccompiler.py.
1759 - Patch #1105730: Apply the new implementation of commonprefix in posixpath
1760   to ntpath, macpath, os2emxpath and riscospath.
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.
1766 - Bug #1015140: disambiguated the term "article id" in nntplib docs and
1767   docstrings to either "article number" or "message id".
1769 - Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a
1770   parameter, but uses the usual "kwargs=None".
1772 - textwrap now processes text chunks at O(n) speed instead of O(n**2).
1773   Patch #1209527 (Contributed by Connelly).
1775 - urllib2 has now an attribute 'httpresponses' mapping from HTTP status code
1776   to W3C name (404 -> 'Not Found'). RFE #1216944.
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.
1781 - Bug #839151: Fix an attempt to access sys.argv in the warnings module;
1782   it can be missing in embedded interpreters
1784 - Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib.
1786 - Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via
1787   error messages.
1789 - Bug #1108948: Cookie.py produced invalid JavaScript code.
1791 - The tokenize module now detects and reports indentation errors.
1792   Bug #1224621.
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.
1799 - Bug #1196315: fix weakref.WeakValueDictionary constructor.
1801 - Bug #1213894: os.path.realpath didn't resolve symlinks that were the first
1802   component of the path.
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.
1809 - distutils.commands.upload was added to support uploading distribution
1810   files to PyPI.
1812 - distutils.commands.register now encodes the data as UTF-8 before posting
1813   them to PyPI.
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.
1820 - Bug #1163325:  Decimal infinities failed to hash.  Attempting to
1821   hash a NaN raised an InvalidOperation instead of a TypeError.
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.
1826 - Patch #1043890: Add extractall method to tarfile.
1828 - Patch #1075887: Don't require MSVC in distutils if there is nothing
1829   to build.
1831 - Patch #1103407: Properly deal with tarfile iterators when untarring
1832   symbolic links on Windows.
1834 - Patch #645894: Use getrusage for computing the time consumption in
1835   profile.py if available.
1837 - Patch #1046831: Use get_python_version where appropriate in sysconfig.py.
1839 - Patch #1117454: Remove code to special-case cookies without values
1840   in LWPCookieJar.
1842 - Patch #1117339: Add cookielib special name tests.
1844 - Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder.
1846 - Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush.
1848 - Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject.
1850 - Patch #1104111: Alter setup.py --help and --help-commands.
1852 - Patch #1121234: Properly cleanup _exit and tkerror commands.
1854 - Patch #1049151: xdrlib now unpacks booleans as True or False.
1856 - Fixed bug in a NameError bug in cookielib.  Patch #1116583.
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.
1862 - Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec
1863   flags on the HTTP listening socket.
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().
1868 - Patches #893642, #1039083: add allow_none, encoding arguments to
1869   constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler.
1871 - Bug #1110478: Revert os.environ.update to do putenv again.
1873 - Bug #1103844: fix distutils.install.dump_dirs() with negated options.
1875 - os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience.
1877 - Enhancements to the csv module:
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.
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.
1921 - The imghdr module now detects Exif files.
1923 - StringIO.truncate() now correctly adjusts the size attribute.
1924   (Bug #951915).
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.
1931 - moved deprecated modules to Lib/lib-old:  whrandom, tzparse, statcache.
1933 - the pickle module no longer accepts the deprecated None option in the
1934   args tuple returned by __reduce__().
1936 - optparse now optionally imports gettext.  This allows its use in setup.py.
1938 - the pickle module no longer uses the deprecated bin parameter.
1940 - the shelve module no longer uses the deprecated binary parameter.
1942 - the pstats module no longer uses the deprecated ignore() method.
1944 - the filecmp module no longer uses the deprecated use_statcache argument.
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).
1950 - heapq.nsmallest() and heapq.nlargest() now support key= arguments with
1951   the same meaning as in list.sort().
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.
1957 - Bug #1083110: ``zlib.decompress.flush()`` would segfault if called
1958   immediately after creating the object, without any intervening
1959   ``.decompress()`` calls.
1961 - The reconvert.quote function can now emit triple-quoted strings.  The
1962   reconvert module now has some simple documentation.
1964 - ``UserString.MutableString`` now supports negative indices in
1965   ``__setitem__`` and ``__delitem__``
1967 - Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05")
1968   correctly.
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.
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.
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.
1984 - Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than
1985   considering it exactly like a '*'.
1987 - Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to
1988   ``encodings.aliases``.
1990 - ` uu.encode()`` and ``uu.decode()`` now support unicode filenames.
1992 - Patch #1413711: Certain patterns of differences were making difflib
1993   touch the recursion limit.
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 ouput (even if an exotic encoding is used) using
1999   special classes that use unicode.
2001 Build
2002 -----
2004 - Fix test_float, test_long, and test_struct failures on Tru64 with gcc
2005   by using -mieee gcc option.
2007 - Patch #1432345: Make python compile on DragonFly.
2009 - Build support for Win64-AMD64 was added.
2011 - Patch #1428494: Prefer linking against ncursesw over ncurses library.
2013 - Patch #881820: look for openpty and forkpty also in libbsd.
2015 - The sources of zlib are now part of the Python distribution (zlib 1.2.3).
2016   The zlib module is now builtin on Windows.
2018 - Use -xcode=pic32 for CCSHARED on Solaris with SunPro.
2020 - Bug #1189330: configure did not correctly determine the necessary
2021   value of LINKCC if python was built with GCC 4.0.
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.
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.
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.
2035 - Bug #1158607: Build with --disable-unicode again.
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.
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).
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.
2054 C API
2055 -----
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).
2068 - Added a C API for set and frozenset objects.
2070 - Removed PyRange_New().
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.
2078 Tests
2079 -----
2081 - In test_os, st_?time is now truncated before comparing it with ST_?TIME.
2083 - Patch #1276356: New resource "urlfetch" is implemented.  This enables
2084   even impatient people to run tests that require remote files.
2087 Documentation
2088 -------------
2090 - Bug #1402224: Add warning to dl docs about crashes.
2092 - Bug #1396471: Document that Windows' ftell() can return invalid
2093   values for text files with UNIX-style line endings.
2095 - Bug #1274828: Document os.path.splitunc().
2097 - Bug #1190204: Clarify which directories are searched by site.py.
2099 - Bug #1193849: Clarify os.path.expanduser() documentation.
2101 - Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S.
2103 - Bug #755617: Document the effects of os.chown() on Windows.
2105 - Patch #1180012: The documentation for modulefinder is now in the library reference.
2107 - Patch #1213031: Document that os.chown() accepts argument values of -1.
2109 - Bug #1190563: Document os.waitpid() return value with WNOHANG flag.
2111 - Bug #1175022: Correct the example code for property().
2113 - Document the IterableUserDict class in the UserDict module.
2114   Closes bug #1166582.
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.
2124 New platforms
2125 -------------
2127 - FreeBSD 7 support is added.
2130 Tools/Demos
2131 -----------
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).
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.
2142 - Bug #1072853: pindent.py used an uninitialized variable.
2144 - Patch #1177597: Correct Complex.__init__.
2146 - Fixed a display glitch in Pynche, which could cause the right arrow to
2147   wiggle over by a pixel.
2150 What's New in Python 2.4 final?
2151 ===============================
2153 *Release date: 30-NOV-2004*
2155 Core and builtins
2156 -----------------
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().
2163 What's New in Python 2.4 (release candidate 1)
2164 ==============================================
2166 *Release date: 18-NOV-2004*
2168 Core and builtins
2169 -----------------
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.
2176 Library
2177 -------
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.
2183 - ``doctest``'s new support for adding ``pdb.set_trace()`` calls to
2184   doctests was broken in a dramatic but shallow way.  Fixed.
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.
2197 - Patch 1061679: Added ``__all__`` to pickletools.py.
2199 Build
2200 -----
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.
2206 C API
2207 -----
2209 - The PyRange_New() function is deprecated.
2212 What's New in Python 2.4 beta 2?
2213 ================================
2215 *Release date: 03-NOV-2004*
2217 License
2218 -------
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::
2229       http://www.opensource.org/licenses/PythonSoftFoundation.php
2231 says "Python 2.1.1" all over it, wondering whether it applies only
2232 to Python 2.1.1.
2234 The official name of the new license is the Python Software Foundation
2235 License Version 2.
2237 Core and builtins
2238 -----------------
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.
2251 - Bug #1054139 _PyString_Resize() now invalidates its cached hash value.
2253 Extension Modules
2254 -----------------
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.
2261 Library
2262 -------
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.
2268 - Bug #1052503 pdb.runcall() was not passing along keyword arguments.
2270 - Bug #902037: XML.sax.saxutils.prepare_input_source() now combines relative
2271   paths with a base path before checking os.path.isfile().
2273 - The whichdb module can now be run from the command line.
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.
2278 - Bug #1048816: fix bug in Ctrl-K at start of line in curses.textpad.Textbox
2280 - Bug #1017553: fix bug in tarfile.filemode()
2282 - Patch #737473: fix bug that old source code is shown in tracebacks even if
2283   the source code is updated and reloaded.
2285 Build
2286 -----
2288 - Patch #1044395: --enable-shared is allowed in FreeBSD also.
2290 What's New in Python 2.4 beta 1?
2291 ================================
2293 *Release date: 15-OCT-2004*
2295 Core and builtins
2296 -----------------
2298 - Patch #975056: Restartable signals were not correctly disabled on
2299   BSD systems. Consistently use PyOS_setsig() instead of signal().
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.
2306 - Added a command line option, -m module, which searches sys.path for the
2307   module and then runs it.  (Contributed by Nick Coghlan.)
2309 - The bytecode optimizer now folds tuples of constants into a single
2310   constant.
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.
2321 Extension modules
2322 -----------------
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.
2330 Library
2331 -------
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.
2338 - Patch 983206: distutils now obeys environment variable LDSHARED, if
2339   it is set.
2341 - Added Peter Astrand's subprocess.py module.  See PEP 324 for details.
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.
2348 - Updates for the email package:
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.
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.
2368 - rfc822 Messages now support iterating over the headers.
2370 - The (undocumented) tarfile.Tarfile.membernames has been removed;
2371   applications should use the getmember function.
2373 - httplib now offers symbolic constants for the HTTP status codes.
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 approprate 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.
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.
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.
2398 - The documentation for doctest is greatly expanded, and now covers all
2399   the new public features (of which there are many).
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.
2408 - httplib now handles ipv6 address/port pairs.
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.
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.
2421 Build
2422 -----
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/>
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.
2434 C API
2435 -----
2437 - SF patch 1044089:  New function ``PyEval_ThreadsInitialized()`` returns
2438   non-zero if PyEval_InitThreads() has been called.
2440 - The undocumented and unused extern int ``_PyThread_Started`` was removed.
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.
2452 - PyLong_AsUnsignedLong[Mask] now support int objects as well.
2454 - SF patch #998993: ``PyUnicode_DecodeUTF8Stateful`` and
2455   ``PyUnicode_DecodeUTF16Stateful`` have been added, which implement stateful
2456   decoding.
2458 Tests
2459 -----
2461 - test__locale ported to unittest
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)``
2470 Tools/Demos
2471 -----------
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.
2480 What's New in Python 2.4 alpha 3?
2481 =================================
2483 *Release date: 02-SEP-2004*
2485 Core and builtins
2486 -----------------
2488 - SF patch #1007189: ``from ... import ...`` statements now allow the name
2489   list to be surrounded by parentheses.
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.
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.
2511 - Py_InitializeEx has been added.
2513 - Fix the order of application of decorators.  The proper order is bottom-up;
2514   the first decorator listed is the last one called.
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.
2520 - The ``func_name`` (a.k.a. ``__name__``) attribute of user-defined
2521   functions is now writable.
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.
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.
2534 - Bug 1003935:  xrange() could report bogus OverflowErrors.  Documented
2535   what xrange() intends, and repaired tests accordingly.
2537 Extension modules
2538 -----------------
2540 - difflib now supports HTML side-by-side diff.
2542 - os.urandom has been added for systems that support sources of random
2543   data.
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.
2550 - Added socket.socketpair().
2552 - Added CurrentByteIndex, CurrentColumnNumber, CurrentLineNumber
2553   members to xml.parsers.expat.XMLParser object.
2555 - The mpz, rotor, and xreadlines modules, all deprecated in earlier
2556   versions of Python, have now been removed.
2558 Library
2559 -------
2561 - Patch #934356: if a module defines __all__, believe that rather than using
2562   heuristics for filtering out imported names.
2564 - Patch #941486: added os.path.lexists(), which returns True for broken
2565   symlinks, unlike os.path.exists().
2567 - the random module now uses os.urandom() for seeding if it is available.
2568   Added a new generator based on os.urandom().
2570 - difflib and diff.py can now generate HTML.
2572 - bdist_rpm now includes version and release in the BuildRoot, and
2573   replaces - by ``_`` in version and release.
2575 - distutils build/build_scripts now has an -e option to specify the
2576   path to the Python interpreter for installed scripts.
2578 - PEP 292 classes Template and SafeTemplate are added to the string module.
2580 - tarfile now generates GNU tar files by default.
2582 - HTTPResponse has now a getheaders method.
2584 - Patch #1006219: let inspect.getsource handle '@' decorators. Thanks Simon
2585   Percivall.
2587 - logging.handlers.SMTPHandler.date_time has been removed;
2588   the class now uses email.Utils.formatdate to generate the time stamp.
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.
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.
2600 - The decimal package's Context.copy() method now returns deep copies.
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.
2606 - patch #675551: Add get_history_item and replace_history_item functions
2607   to the readline module.
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.
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.
2617 - bug #851123: shutil.copyfile will raise an exception when trying to copy a
2618   file onto a link to itself. Thanks Gregory Ball.
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.
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.
2638 - Bug #891637, patch #1005466: fix inspect.getargs() crash on def foo((bar)).
2640 Tools/Demos
2641 -----------
2643 - IDLE's shortcut keys for windows are now case insensitive so that
2644   Control-V works the same as Control-v.
2646 - pygettext.py: Generate POT-Creation-Date header in ISO format.
2648 Build
2649 -----
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.
2659 - bug #991962: When building with --disable-toolbox-glue on Darwin no
2660   attempt to build Mac-specific modules occurs.
2662 - The --with-tsc flag to configure to enable VM profiling with the
2663   processor's timestamp counter now works on PPC platforms.
2665 - patch #1006629: Define _XOPEN_SOURCE to 500 on Solaris 8/9 to match
2666   GCC's definition and avoid redefinition warnings.
2668 - Detect pthreads support (provided by gnu pth pthread emulation) on
2669   GNU/k*BSD systems.
2671 - bug #1005737, #1007249: Fixed several build problems and warnings
2672   found on old/legacy C compilers of HP-UX, IRIX and Tru64.
2674 C API
2675 -----
2679 Documentation
2680 -------------
2682 - patch #1005936, bug #1009373: fix index entries which contain
2683   an underscore when viewed with Acrobat.
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.
2689 New platforms
2690 -------------
2692 - FreeBSD 6 is now supported.
2694 Tests
2695 -----
2699 Windows
2700 -------
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.
2718 What's New in Python 2.4 alpha 2?
2719 =================================
2721 *Release date: 05-AUG-2004*
2723 Core and builtins
2724 -----------------
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.
2731 - PEP-0318, Function Decorators have been added to the language. These are
2732   implemented using the Java-style @decorator syntax, like so::
2734      @staticmethod
2735      def foo(bar):
2737   (The PEP needs to be updated to reflect the current state)
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).
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].
2759 - u'%s' % obj will now try obj.__unicode__() first and fallback to
2760   obj.__str__() if no __unicode__ method can be found.
2762 - Patch #550732: Add PyArg_VaParseTupleAndKeywords().  Analogous to
2763   PyArg_VaParse().  Both are now documented.  Thanks Greg Chapman.
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.
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.
2773 - Added C macros Py_CLEAR and Py_VISIT to ease the implementation of
2774   types that support garbage collection.
2776 - Compiler now treats None as a constant.
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.
2783 - Implemented bind_textdomain_codeset() in locale module.
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.
2788 - Bug #989185: unicode.iswide() and unicode.width() is dropped and
2789   the East Asian Width support is moved to unicodedata extension
2790   module.
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.
2796 Extension modules
2797 -----------------
2799 - cpickle now supports the same keyword arguments as pickle.
2801 Library
2802 -------
2804 - Added new codecs and aliases for ISO_8859-11, ISO_8859-16 and
2805   TIS-620
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.
2818 - Tkinter now supports the wish -sync and -use options.
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]
2825 - nntplib does now allow to ignore a .netrc file.
2827 - urllib2 now recognizes Basic authentication even if other authentication
2828   schemes are offered.
2830 - Bug #1001053.  wave.open() now accepts unicode filenames.
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.
2836 - imaplib has two new methods: deleteacl and myrights.
2838 - nntplib has two new methods: description and descriptions. They
2839   use a more RFC-compliant way of getting a newsgroup description.
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.
2845 - Bug #857297/Patch #916874.  Fix an error when extracting a hard link
2846   from a tarfile.
2848 - Patch #846659.  Fix an error in tarfile.py when using
2849   GNU longname/longlink creation.
2851 - The obsolete FCNTL.py has been deleted.  The builtin 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.
2856 - Several new unicode codecs are added: big5hkscs, euc_jis_2004,
2857   iso2022_jp_2004, shift_jis_2004.
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).
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(),
2874 - Bug #980938: smtplib now prints debug output to sys.stderr.
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.
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.
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.
2888 - decimal.py now only uses signals in the IBM spec.  The other conditions are
2889   no longer part of the public API.
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).
2895 - Non-blocking SSL sockets work again; they were broken in Python 2.3.
2896   SF patch 945642.
2898 - doctest unittest integration improvements:
2900   o Improved the unitest test output for doctest-based unit tests
2902   o Can now pass setUp and tearDown functions when creating
2903     DocTestSuites.
2905 - The threading module has a new class, local, for creating objects
2906   that provide thread-local data.
2908 - Bug #990307: when keep_empty_values is True, cgi.parse_qsl()
2909   no longer returns spurious empty fields.
2911 - Implemented bind_textdomain_codeset() in gettext module.
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().
2917 - optparse module (and tests) upgraded to Optik 1.5a1.  Changes:
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.
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).
2928   - Bug #960515: don't crash when generating help for callback
2929     options that specify 'type', but not 'dest' or 'metavar'.
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.
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/ .)
2942   - Bug #878453: respect $COLUMNS environment variable for
2943     wrapping help output.
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.)
2949 C API
2950 -----
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.
2964 - A large pile of datetime field-extraction macros is now documented,
2965   thanks to Anthony Tuininga (patch #986010).
2967 Documentation
2968 -------------
2970 - Improved the tutorial on creating types in C.
2972   - point out the importance of reassigning data members before
2973     assigning their values
2975   - correct my misconception about return values from visitprocs. Sigh.
2977   - mention the labor saving Py_VISIT and Py_CLEAR macros.
2979 - Major rewrite of the math module docs, to address common confusions.
2981 Tests
2982 -----
2984 - The test data files for the decimal test suite are now installed on
2985   platforms that use the Makefile.
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.
2992 What's New in Python 2.4 alpha 1?
2993 =================================
2995 *Release date: 08-JUL-2004*
2997 Core and builtins
2998 -----------------
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).
3005 - Bug #951851: Python crashed when reading import table of certain
3006   Windows DLLs.
3008 - Bug #215126.  The locals argument to eval(), execfile(), and exec now
3009   accept any mapping type.
3011 - marshal now shares interned strings. This change introduces
3012   a new .pyc magic.
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.
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.
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.
3026 - Bug #845802: Python crashes when __init__.py is a directory.
3028 - Unicode objects received two new methods: iswide() and width().
3029   These query East Asian width information, as specified in Unicode
3030   TR11.
3032 - Improved the tuple hashing algorithm to give fewer collisions in
3033   common cases.  Fixes bug  #942952.
3035 - Implemented generator expressions (PEP 289).  Coded by Jiwon Seo.
3037 - Enabled the profiling of C extension functions (and builtins) - check
3038   new documentation and modified profile and bdb modules for more details
3040 - Set file.name to the object passed to open (instead of a new string)
3042 - Moved tracebackobject into traceback.h and renamed to PyTracebackObject
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%.
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 .
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().
3055 - Implemented a newcode opcode, LIST_APPEND, that simplifies
3056   the generated bytecode for list comprehensions and further
3057   improves their performance (about 35%).
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.
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.
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).
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.
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().
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.
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.
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.
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 an 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.
3105 - input() builtin function now respects compiler flags such as
3106   __future__ statements.  SF patch 876178.
3108 - Removed PendingDeprecationWarning from apply().  apply() remains
3109   deprecated, but the nuisance warning will not be issued.
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.
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.
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.
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   that 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.
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.
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.
3164 - Compiler flags set in PYTHONSTARTUP are now active in __main__.
3166 - Added two builtin types, set() and frozenset().
3168 - Added a reversed() builtin function that returns a reverse iterator
3169   over a sequence.
3171 - Added a sorted() builtin function that returns a new sorted list
3172   from any iterable.
3174 - CObjects are now mutable (on the C level) through PyCObject_SetVoidPtr.
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).
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.
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.
3194 - The % formatting operator now supports '%F' which is equivalent to
3195   '%f'.  This has always been documented but never implemented.
3197 - complex(obj) could leak a little memory if obj wasn't a string or
3198   number.
3200 - zip() with no arguments now returns an empty list instead of raising
3201   a TypeError exception.
3203 - obj.__contains__() now returns True/False instead of 1/0.  SF patch
3204   820195.
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.
3210 - str and unicode builtin 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.
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.
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.
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.
3227 Extension modules
3228 -----------------
3230 - Added socket.getservbyport(), and make the second argument in
3231   getservbyname() and getservbyport() optional.
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.
3241 - fcntl.ioctl now warns if the mutate flag is not specified.
3243 - nt now properly allows to refer to UNC roots, e.g. in nt.stat().
3245 - the weakref module now supports additional objects:  array.array,
3246   sre.pattern_objects, file objects, and sockets.
3248 - operator.isMappingType() and operator.isSequenceType() now give
3249   fewer false positives.
3251 - socket.sslerror is now a subclass of socket.error .  Also added
3252   socket.error to the socket module's C API.
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.
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.
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.
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.
3275 - The socket module now supports Bluetooth sockets, if the
3276   system has <bluetooth/bluetooth.h>
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.
3282 - Several modules now take advantage of collections.deque() for
3283   improved performance:  Queue, mutex, shlex, threading, and pydoc.
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.
3290 - socket.SHUT_{RD,WR,RDWR} was added.
3292 - os.getsid was added.
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.)
3298 - The xml.parsers.expat module now provides Expat 1.95.7.
3300 - socket.IPPROTO_IPV6 was added.
3302 - readline.clear_history was added.
3304 - select.select() now accepts sequences for its first three arguments.
3306 - cStringIO now supports the f.closed attribute.
3308 - The signal module now exposes SIGRTMIN and SIGRTMAX (if available).
3310 - curses module now supports use_default_colors().  [patch #739124]
3312 - Bug #811028: ncurses.h breakage on FreeBSD/MacOS X
3314 - Bug #814613: INET_ADDRSTRLEN fix needed for all compilers on SGI
3316 - Implemented non-recursive SRE matching scheme (#757624).
3318 - Implemented (?(id/name)yes|no) support in SRE (#572936).
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.
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.
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.
3337 - itertools now has a new tee() function which produces two independent
3338   iterators from a single iterable.
3340 - itertools.izip() with no arguments now returns an empty iterator instead
3341   of raising a TypeError exception.
3343 - Fixed #853061: allow BZ2Compressor.compress() to receive an empty string
3344   as parameter.
3346 Library
3347 -------
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).
3354 - Bug #1266283: The new function "lexists" is now in os.path.__all__.
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.
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.
3364 - Added decimal.py per PEP 327.
3366 - Bug #981299: rsync is now a recognized protocol in urlparse that uses a
3367   "netloc" portion of a URL.
3369 - Bug #919012: shutil.move() will not try to move a directory into itself.
3370   Thanks Johannes Gijsbers.
3372 - Bug #934282: pydoc.stripid() is now case-insensitive.  Thanks Robin Becker.
3374 - Bug #823209:  cmath.log() now takes an optional base argument so that its
3375   API matches math.log().
3377 - Bug #957381: distutils bdist_rpm no longer fails on recent RPM versions
3378   that generate a -debuginfo.rpm
3380 - os.path.devnull has been added for all supported platforms.
3382 - Fixed #877165: distutils now picks the right C++ compiler command
3383   on cygwin and mingw32.
3385 - urllib.urlopen().readline() now handles HTTP/0.9 correctly.
3387 - refactored site.py into functions.  Also wrote regression tests for the
3388   module.
3390 - The distutils install command now supports the --home option and
3391   installation scheme for all platforms.
3393 - asyncore.loop now has a repeat count parameter that defaults to
3394   looping forever.
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.
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.
3404 - stringprep.py now uses built-in set() instead of sets.Set().
3406 - Bug #876278: Unbounded recursion in modulefinder
3408 - Bug #780300: Swap public and system ID in LexicalHandler.startDTD.
3409   Applications relying on the wrong order need to be corrected.
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.
3415 - Added countcallers arg to trace.Trace class (--trackcalls command line arg
3416   when run from the command prompt).
3418 - Fixed a caching bug in platform.platform() where the argument of 'terse' was
3419   not taken into consideration when caching value.
3421 - Added two new command-line arguments for profile (output file and
3422   default sort).
3424 - Added global runctx function to profile module
3426 - Add hlist missing entryconfigure and entrycget methods.
3428 - The ptcp154 codec was added for Kazakh character set support.
3430 - Support non-anonymous ftp URLs in urllib2.
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.
3439 - base64 now supports RFC 3548 Base16, Base32, and Base64 encoding and
3440   decoding standards.
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.
3446 - distutils compilers now compile source files in the same order as
3447   they are passed to the compiler.
3449 - pprint.pprint() and pprint.pformat() now have additional parameters
3450   indent, width and depth.
3452 - Patch #750542: pprint now will pretty print subclasses of list, tuple
3453   and dict too, as long as they don't overwrite __repr__().
3455 - Bug #848614: distutils' msvccompiler fails to find the MSVC6
3456   compiler because of incomplete registry entries.
3458 - httplib.HTTP.putrequest now offers to omit the implicit Accept-Encoding.
3460 - Patch #841977: modulefinder didn't find extension modules in packages
3462 - imaplib.IMAP4.thread was added.
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.
3467 - bisect.py and heapq.py now have underlying C implementations
3468   for better performance.
3470 - heapq.py has two new functions, nsmallest() and nlargest().
3472 - traceback.format_exc has been added (similar to print_exc but it returns
3473   a string).
3475 - xmlrpclib.MultiCall has been added.
3477 - poplib.POP3_SSL has been added.
3479 - tmpfile.mkstemp now returns an absolute path even if dir is relative.
3481 - urlparse is RFC 2396 compliant.
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.
3487 - encodings.bz2_codec was added for access to bz2 compression
3488   using "a long string".encode('bz2')
3490 - Various improvements to unittest.py, realigned with PyUnit CVS.
3492 - dircache now passes exceptions to the caller, instead of returning
3493   empty lists.
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.
3499 - The csv module's DictReader and DictWriter classes now accept keyword
3500   arguments.  This was an omission in the initial implementation.
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.
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.
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.
3514 - random.cunifvariate() and random.stdgamma() were deprecated in Py2.3
3515   and removed in Py2.4.
3517 - Bug #823328: urllib2.py's HTTP Digest Auth support works again.
3519 - Patch #873597: CJK codecs are imported into rank of default codecs.
3521 Tools/Demos
3522 -----------
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.
3527 - The db2pickle and pickle2db scripts can now dump/load gdbm files.
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.
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.
3539 - texcheck.py now detects double word errors.
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.
3547 - py-electric-colon now works when pending-delete/delete-selection mode is
3548   in effect
3550 - py-help-at-point is no longer bound to the F1 key - it's still bound to
3551   C-c C-h
3553 - Pynche was fixed to not crash when there is no ~/.pynche file and no
3554   -d option was given.
3556 Build
3557 -----
3559 - Bug #978645: Modules/getpath.c now builds properly in --disable-framework
3560   build under OS X.
3562 - Profiling using gprof is now available if Python is configured with
3563   --enable-profiling.
3565 - Profiling the VM using the Pentium TSC is now possible if Python
3566   is configured --with-tsc.
3568 - In order to find libraries, setup.py now also looks in /lib64, for use
3569   on AMD64.
3571 - Bug #934635: Fixed a bug where the configure script couldn't detect
3572   getaddrinfo() properly if the KAME stack had SCTP support.
3574 - Support for missing ANSI C header files (limits.h, stddef.h, etc) was
3575   removed.
3577 - Systems requiring the D4, D6 or D7 variants of pthreads are no longer
3578   supported (see PEP 11).
3580 - Universal newline support can no longer be disabled (see PEP 11).
3582 - Support for DGUX, SunOS 4, IRIX 4 and Minix was removed (see PEP 11).
3584 - Support for systems requiring --with-dl-dld or --with-sgi-dl was removed
3585   (see PEP 11).
3587 - Tests for sizeof(char) were removed since ANSI C mandates that
3588   sizeof(char) must be 1.
3590 C API
3591 -----
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.
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.
3602 - New public functions PyEval_EvaluateFrame and PyGen_New to expose
3603   generator objects.
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.
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.
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.
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.
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.
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).
3631 Windows
3632 -------
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.
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.
3644 What's New in Python 2.3 final?
3645 ===============================
3647 *Release date: 29-Jul-2003*
3649 IDLE
3650 ----
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.
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.
3668 What's New in Python 2.3 release candidate 2?
3669 =============================================
3671 *Release date: 24-Jul-2003*
3673 Core and builtins
3674 -----------------
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.
3680 Extension modules
3681 -----------------
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.
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.
3692 - Fixed some leaks in the locale module.
3694 Library
3695 -------
3697 - Lib/encodings/rot_13.py when used as a script, now more properly
3698   uses the first Python interpreter on your path.
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.
3705 IDLE
3706 ----
3708 - Calltips patches.
3710 Build
3711 -----
3713 - For MacOSX, added -mno-fused-madd to BASECFLAGS to fix test_coercion
3714   on Panther (OSX 10.3).
3716 C API
3717 -----
3719 Windows
3720 -------
3722 - The tempfile module could do insane imports on Windows if PYTHONCASEOK
3723   was set, making temp file creation impossible.  Repaired.
3725 - Add a patch to workaround pthread_sigmask() bugs in Cygwin.
3730 - Various fixes to pimp.
3732 - Scripts runs with pythonw no longer had full window manager access.
3734 - Don't force boot-disk-only install, for reasons unknown it causes
3735   more problems than it solves.
3738 What's New in Python 2.3 release candidate 1?
3739 =============================================
3741 *Release date: 18-Jul-2003*
3743 Core and builtins
3744 -----------------
3746 - The new function sys.getcheckinterval() returns the last value set
3747   by sys.setcheckinterval().
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.
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.
3758 - A warning about assignments to module attributes that shadow
3759   builtins, present in earlier releases of 2.3, has been removed.
3761 - It is not possible to create subclasses of builtin 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.
3765 - The thread_id is now initialized to 0 in a non-thread build.  SF bug
3766   770247.
3768 - SF bug 762891: "del p[key]" on proxy object no longer raises SystemError.
3770 Extension modules
3771 -----------------
3773 - weakref.proxy() can now handle "del obj[i]" for proxy objects
3774   defining __delitem__.  Formerly, it generated a SystemError.
3776 - SSL no longer crashes the interpreter when the remote side disconnects.
3778 - On Unix the mmap module can again be used to map device files.
3780 - time.strptime now exclusively uses the Python implementation
3781   contained within the _strptime module.
3783 - The print slot of weakref proxy objects was removed, because it was
3784   not consistent with the object's repr slot.
3786 - The mmap module only checks file size for regular files, not
3787   character or block devices.  SF patch 708374.
3789 - The cPickle Pickler garbage collection support was fixed to traverse
3790   the find_class attribute, if present.
3792 - There are several fixes for the bsddb3 wrapper module.
3794   bsddb3 no longer crashes if an environment is closed before a cursor
3795   (SF bug 763298).
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.
3802   A typo was fixed in DBCursor.join_item(), preventing a crash.
3804 Library
3805 -------
3807 - distutils now supports MSVC 7.1
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().
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.
3828   The close() method can now be called more than once without complaint.
3830 - The classes in threading.py are now new-style classes.  That they
3831   weren't before was an oversight.
3833 - The urllib2 digest authentication handlers now define the correct
3834   auth_header.  The earlier versions would fail at runtime.
3836 - SF bug 763023: fix uncaught ZeroDivisionError in difflib ratio methods
3837   when there are no lines.
3839 - SF bug 763637: fix exception in Tkinter with after_cancel
3840   which could occur with Tk 8.4
3842 - SF bug 770601: CGIHTTPServer.py now passes the entire environment
3843   to child processes.
3845 - SF bug 765238: add filter to fnmatch's __all__.
3847 - SF bug 748201: make time.strptime() error messages more helpful.
3849 - SF patch 764470: Do not dump the args attribute of a Fault object in
3850   xmlrpclib.
3852 - SF patch 549151: urllib and urllib2 now redirect POSTs on 301
3853   responses.
3855 - SF patch 766650: The whichdb module was fixed to recognize dbm files
3856   generated by gdbm on OS/2 EMX.
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.
3862 - SF bug 764548: re now allows subclasses of str and unicode to be
3863   used as patterns.
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.
3869 - SF bug 763023: difflib.ratio() did not catch zero division.
3871 - The Queue module now has an __all__ attribute.
3873 Tools/Demos
3874 -----------
3876 - See Lib/idlelib/NEWS.txt for IDLE news.
3878 - SF bug 753592: webchecker/wsgui now handles user supplied directories.
3880 - The trace.py script has been removed.  It is now in the standard library.
3882 Build
3883 -----
3885 - Python now compiles with -fno-strict-aliasing if possible (SF bug 766696).
3887 - The socket module compiles on IRIX 6.5.10.
3889 - An irix64 system is treated the same way as an irix6 system (SF
3890   patch 764560).
3892 - Several definitions were missing on FreeBSD 5.x unless the
3893   __BSD_VISIBLE symbol was defined.  configure now defines it as
3894   needed.
3896 C API
3897 -----
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.
3902 Windows
3903 -------
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 ::
3912       thread.error: can't start new thread
3914   is raised now.
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.
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.
3929 - Fixed two bugs in MacOSX framework handling.
3931 - pythonw did not allow user interaction in 2.3rc1, this has been fixed.
3933 - Python is now compiled with -mno-fused-madd, making all tests pass
3934   on Panther.
3936 What's New in Python 2.3 beta 2?
3937 ================================
3939 *Release date: 29-Jun-2003*
3941 Core and builtins
3942 -----------------
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.
3949 - list.index() now accepts optional start and stop arguments.  Similar
3950   changes were made to UserList.index(). SF feature request 754014.
3952 - SF patch 751998 fixes an unwanted side effect of the previous fix
3953   for SF bug 742860 (the next item).
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.
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.
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.
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.
3983 - The encoding attribute has been added for file objects, and set to
3984   the terminal encoding on Unix and Windows.
3986 - The softspace attribute of file objects became read-only by oversight.
3987   It's writable again.
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.
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.
3998 Extension modules
3999 -----------------
4001 - the socket module has a new exception, socket.timeout, to allow
4002   timeouts to be handled separately from other socket errors.
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.
4009 - cPickle Pickler and Unpickler objects now participate in garbage
4010   collection.
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.
4016 - thread.interrupt_main() raises KeyboardInterrupt in the main thread.
4017   dummy_thread has also been modified to try to simulate the behavior.
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)
4022 - The datetime module classes datetime, time, and timedelta are now
4023   properly subclassable.
4025 - _tkinter.{get|set}busywaitinterval was added.
4027 - itertools.islice() now accepts stop=None as documented.
4028   Fixes SF bug #730685.
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.
4035 Library
4036 -------
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:
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.
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).
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.
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.
4065 - The logging module now has a new function, makeLogRecord() making
4066   LogHandler easier to interact with DatagramHandler and SocketHandler.
4068 - The cgitb module has been extended to support plain text display (SF patch
4069   569574).
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.
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.
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.
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.
4092 - difflib.py has two new functions:  context_diff() and unified_diff().
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
4099 - Added optional 'onerror' argument to os.walk(), to control error
4100   handling.
4102 - inspect.is{method|data}descriptor was added, to allow pydoc display
4103   __doc__ of data descriptors.
4105 - Fixed socket speed loss caused by use of the _socketobject wrapper class
4106   in socket.py.
4108 - timeit.py now checks the current directory for imports.
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.
4115 - Iterators have been added for dbm keys.
4117 - random.Random objects can now be pickled.
4119 Tools/Demos
4120 -----------
4122 - pydoc now offers help on keywords and topics.
4124 - Tools/idle is gone; long live Lib/idlelib.
4126 - diff.py prints file diffs in context, unified, or ndiff formats,
4127   providing a command line interface to difflib.py.
4129 - texcheck.py is a new script for making a rough validation of Python LaTeX
4130   files.
4132 Build
4133 -----
4135 - Setting DESTDIR during 'make install' now allows specifying a
4136   different root directory.
4138 C API
4139 -----
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.
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.
4158 New platforms
4159 -------------
4161 None this time.
4163 Tests
4164 -----
4166 - test_imp rewritten so that it doesn't raise RuntimeError if run as a
4167   side effect of being imported ("import test.autotest").
4169 Windows
4170 -------
4172 - The Windows installer ships with Tcl/Tk 8.4.3 (upgraded from 8.4.1).
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.
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.
4195 SourceForge Bugs and Patches Applied
4196 ------------------------------------
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
4225 What's New in Python 2.3 beta 1?
4226 ================================
4228 *Release date: 25-Apr-2003*
4230 Core and builtins
4231 -----------------
4233 - New format codes B, H, I, k and K have been implemented for
4234   PyArg_ParseTuple and PyBuild_Value.
4236 - New builtin 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).
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 builtin types -- called without argument
4243   they all return the false value of that type.  (SF patch #724135)
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.
4250 - The repr() of a weakref object now shows the __name__ attribute of
4251   the referenced object, if it has one.
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
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.
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.)
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.
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.)
4281 - sys.getfilesystemencoding() was added to expose
4282   Py_FileSystemDefaultEncoding.
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.)
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.
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.
4297 - "%c" % u"a" now returns a unicode string instead of raising a
4298   TypeError. u"%c" % 0xffffffff now raises a OverflowError instead
4299   of a ValueError to be consistent with "%c" % 256. See SF patch #710127.
4301 Extension modules
4302 -----------------
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.
4309 - Tkinter wrappers around Tcl variables now pass objects directly
4310   to Tcl, instead of first converting them to strings.
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.)
4316 - New function sys.call_tracing() allows pdb to debug code
4317   recursively.
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.
4324 - The iconv module has been removed from this release.
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.
4334 - New function time.tzset() provides access to the C library tzset()
4335   function, if supported.  (SF patch #675422.)
4337 - Using createfilehandler, deletefilehandler, createtimerhandler functions
4338   on Tkinter.tkinter (_tkinter module) no longer crashes the interpreter.
4339   See SF bug #692416.
4341 - Modified the fcntl.ioctl() function to allow modification of a passed
4342   mutable buffer (for details see the reference documentation).
4344 - Made user requested changes to the itertools module.
4345   Subsumed the times() function into repeat().
4346   Added chain() and cycle().
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.
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.
4357 Library
4358 -------
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.
4365 - Added new module "platform" which provides a wide range of tools
4366   for querying platform dependent features.
4368 - netrc now allows ASCII punctuation characters in passwords.
4370 - shelve now supports the optional writeback argument, and exposes
4371   pickle protocol versions.
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)
4377 - The self-documenting XML server library DocXMLRPCServer was added.
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.
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.
4388 - pdb has a new command, "debug", which lets you step through
4389   arbitrary code from the debugger's (pdb) prompt.
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__.
4395 - sgmllib now supports SGML marked sections, in particular the
4396   MS Office extensions.
4398 - The urllib module now offers support for the iterator protocol.
4399   SF patch 698520 contributed by Brett Cannon.
4401 - New module timeit provides a simple framework for timing the
4402   execution speed of expressions and statements.
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>.
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().)
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)
4419 - New csv package makes it easy to read/write CSV files.
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.
4425 Tools/Demos
4426 -----------
4428 - New script combinerefs.py helps analyze new PYTHONDUMPREFS output.
4429   See the module docstring for details.
4431 Build
4432 -----
4434 - Fix problem building on OSF1 because the compiler only accepted
4435   preprocessor directives that start in column 1.  (SF bug #691793.)
4437 C API
4438 -----
4440 - Added PyGC_Collect(), equivalent to calling gc.collect().
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.
4446 - LONG_LONG was renamed to PY_LONG_LONG.  Extensions that use this and
4447   need compatibility with previous versions can use this:
4449     #ifndef  PY_LONG_LONG
4450     #define  PY_LONG_LONG  LONG_LONG
4451     #endif
4453 - Added PyObject_SelfIter() to fill the tp_iter slot for the
4454   typical case where the method returns its self argument.
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.)
4460 New platforms
4461 -------------
4463 None this time.
4465 Tests
4466 -----
4468 - test_timeout now requires -u network to be passed to regrtest to run.
4469   See SF bug #692988.
4471 Windows
4472 -------
4474 - os.fsync() now exists on Windows, and calls the Microsoft _commit()
4475   function.
4477 - New function winsound.MessageBeep() wraps the Win32 API
4478   MessageBeep().
4483 - os.listdir() now returns Unicode strings on MacOS X when called with
4484   a Unicode argument. See the general news item under "Library".
4486 - A new method MacOS.WMAvailable() returns true if it is safe to access
4487   the window manager, false otherwise.
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.
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.
4497 - The IDE (in a framework build) now includes introductory documentation
4498   in Apple Help Viewer format.
4501 What's New in Python 2.3 alpha 2?
4502 =================================
4504 *Release date: 19-Feb-2003*
4506 Core and builtins
4507 -----------------
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.
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.)
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.)
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``.
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)
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)
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).
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.)
4558 - compile(), eval() and the exec statement now fully support source code
4559   passed as unicode strings.
4561 - int subclasses can be initialized with longs if the value fits in an int.
4562   See SF bug #683467.
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).
4567 - filter returns now Unicode results for Unicode arguments.
4569 - raw_input can now return Unicode objects.
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.
4575 - Fixed crash when printing a subclass of str and __str__ returned self.
4576   See SF bug #667147.
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.
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.
4591 Extension modules
4592 -----------------
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.
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.)
4604 - Change to cPickle to match pickle.py (see below and PEP 307).
4606 - Fix some bugs in the parser module.  SF bug #678518.
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.)
4613 - Added an itertools module containing high speed, memory efficient
4614   looping constructs inspired by tools from Haskell and SML.
4616 - The SSL module now handles sockets with a timeout set correctly (SF
4617   patch #675750, fixing SF bug #675552).
4619 - os/posixmodule has grown the sysexits.h constants (EX_OK and friends).
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.)
4625 - fcntl now exposes the strops.h I_* constants.
4627 - Fix a crash on Solaris that occurred when calling close() on
4628   an mmap'ed file which was already closed.  (SF patch #665913)
4630 - Fixed several serious bugs in the zipimport implementation.
4632 - datetime changes:
4634   The date class is now properly subclassable.  (SF bug #720908)
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.
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.
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).
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.
4659   The example tzinfo class for local time had a bug.  It was replaced
4660   by a later example coded by Guido.
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.
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.
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.
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 ::
4691       tz.fromutc(datetime.utcnow().replace(tzinfo=utc))
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.
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>.
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.
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, ::
4715       if some_datetime in some_sequence:
4717   and ::
4719       some_dict[some_timedelta] = whatever
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.]
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.
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.
4737 Library
4738 -------
4740 - The logging module was updated slightly; the WARN level was renamed
4741   to WARNING, and the matching function/method warn() to warning().
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.
4750 - The distutils "register" command now uses http://www.python.org/pypi
4751   as the default repository.  (See PEP 301.)
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>).
4760 - array.array was added to the types repr.py knows about (see
4761   <http://www.python.org/sf/680789>).
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.
4767 - Xmlrpclib.py now supports the builtin boolean type.
4769 - py_compile has a new 'doraise' flag and a new PyCompileError
4770   exception.
4772 - SimpleXMLRPCServer now supports CGI through the CGIXMLRPCRequestHandler
4773   class.
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.
4779 - Bastion.py and rexec.py are disabled.  These modules are not safe in
4780   Python 2.2. or 2.3.
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.
4786 - New module tarfile from Lars Gustäbel provides a comprehensive interface
4787   to tar archive files with transparent gzip and bzip2 compression.
4788   See SF patch #651082.
4790 - urlparse can now parse imap:// URLs.  See SF feature request #618024.
4792 - Tkinter.Canvas.scan_dragto() provides an optional parameter to support
4793   the gain value which is passed to Tk.  SF bug# 602259.
4795 - Fix logging.handlers.SysLogHandler protocol when using UNIX domain sockets.
4796   See SF patch #642974.
4798 - The dospath module was deleted.  Use the ntpath module when manipulating
4799   DOS paths from other platforms.
4801 Tools/Demos
4802 -----------
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:
4814     % python2.2 db2pickle.py -h some.db > some.pickle
4815     % python2.3 pickle2db.py -h some.db.new < some.pickle
4817   Run the scripts without any args to get a usage message.
4820 Build
4821 -----
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 ::
4828     ./python Lib/test/regrtest.py -u audio test_ossaudiodev
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.
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/>.
4845 - A new Makefile target, scriptsinstall, installs a number of useful scripts
4846   from the Tools/scripts directory.
4848 C API
4849 -----
4851 - PyEval_GetFrame() is now declared to return a ``PyFrameObject *``
4852   instead of a plain ``PyObject *``.  (SF patch #686601.)
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.
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)
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.
4867 Tests
4868 -----
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.)
4877 - Added test_posix.py, a test suite for the posix module.
4879 - Added test_hexoct.py, a test suite for hex/oct constant folding.
4881 Windows
4882 -------
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).
4888 - distutils' msvccompiler class now passes the preprocessor options to
4889   the resource compiler.  See SF patch #669198.
4891 - The bsddb module now ships with Sleepycat's 4.1.25.NC, the latest
4892   release without strong cryptography.
4894 - sys.path[0], if it contains a directory name, is now always an
4895   absolute pathname. (SF patch #664376.)
4897 - The new logging package is now installed by the Windows installer.  It
4898   wasn't in 2.3a1 due to oversight.
4903 - There are new dialogs EasyDialogs.AskFileForOpen, AskFileForSave
4904   and AskFolder. The old macfs.StandardGetFile and friends are deprecated.
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.
4910 - Type Carbon.File.FSCatalogInfo and supporting methods have been implemented.
4911   This also makes macfs.FSSpec.SetDates() work again.
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.
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.
4924 What's New in Python 2.3 alpha 1?
4925 =================================
4927 *Release date: 31-Dec-2002*
4929 Type/class unification and new-style classes
4930 --------------------------------------------
4932 - One can now assign to __bases__ and __name__ of new-style classes.
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.
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.
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.
4948 - New-style object creation and deallocation have been sped up
4949   significantly; they are now faster than classic instance creation
4950   and deallocation.
4952 - The __slots__ variable can now mention "private" names, and the
4953   right thing will happen (e.g. __slots__ = ["__foo"]).
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.
4961 - Cycles going through the __class__ link of a new-style instance are
4962   now detected by the garbage collector.
4964 - Classes using __slots__ are now properly garbage collected.
4965   [SF bug 519621]
4967 - Tightened the __slots__ rules: a slot name must be a valid Python
4968   identifier.
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]
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.
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]
4987 - Fixed super() to work correctly with class methods.  [SF bug #535444]
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.)
4995 Core and builtins
4996 -----------------
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.
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.
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]
5018 - The _codecs support module for codecs.py was turned into a builtin
5019   module to assure that at least the builtin codecs are available
5020   to the Python parser for source code decoding according to PEP 263.
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)``.
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.
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.
5040 - Codec error handling callbacks (PEP 293) are implemented.
5041   Error handling in unicode.encode or str.decode can now be customized.
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.
5047 - Use of 'None' as a variable, argument or attribute name now
5048   issues a SyntaxWarning.  In the future, None may become a keyword.
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).
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:
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.
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.
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").
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.
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.
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.
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!
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.
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.
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!
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.
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.
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 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.)
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]
5165 - sys.getwindowsversion() has been added on Windows.  This
5166   returns a tuple with information about the version of Windows
5167   currently running.
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.
5174 - Unicode objects in sys.path are no longer ignored but treated
5175   as directory names.
5177 - Fixed string.startswith and string.endswith builtin methods
5178   so they accept negative indices.  [SF bug 493951]
5180 - Fixed a bug with a continue inside a try block and a yield in the
5181   finally clause.  [SF bug 567538]
5183 - Most builtin sequences now support "extended slices", i.e. slices
5184   with a third "stride" parameter.  For example, "hello world"[::-1]
5185   gives "dlrow olleh".
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.
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.
5198 - New builtin 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.
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__.
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".
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.
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".
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.
5224 - Added a new dict method pop(key).  This removes and returns the
5225   value corresponding to key.  [SF patch #539949]
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.
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.
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.
5246 - PyErr_Display will provide file and line information for all exceptions
5247   that have an attribute print_file_and_line, not just SyntaxErrors.
5249 - The UTF-8 codec will now encode and decode Unicode surrogates
5250   correctly and without raising exceptions for unpaired ones.
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.
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.
5262 - sys.exit() inadvertently allowed more than one argument.
5263   An exception will now be raised if more than one argument is used.
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.
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.
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).
5276 - Fix problem with dynamic loading on 64-bit AIX (see bug #639945).
5278 Extension modules
5279 -----------------
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.
5286 - posix.openpty now works on all systems that have /dev/ptmx.
5288 - A module zipimport exists to support importing code from zip
5289   archives.
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
5295       http://www.zope.org/Members/fdrake/DateTimeWiki/FrontPage
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.
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.
5311 - unicodedata was updated to Unicode 3.2. It supports normalization
5312   and names for Hangul syllables and CJK unified ideographs.
5314 - resource.getrlimit() now returns longs instead of ints.
5316 - readline now dynamically adjusts its input/output stream if
5317   sys.stdin/stdout changes.
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.
5323 - cPickle.BadPickleGet is now a class.
5325 - The time stamps in os.stat_result are floating point numbers
5326   after stat_float_times has been called.
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]
5331 - The xreadlines module is slated for obsolescence.
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).
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.
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.
5344 - posix.getloadavg, posix.lchown, posix.killpg, posix.mknod, and
5345   posix.getpgid have been added where available.
5347 - The locale module now exposes the C library's gettext interface. It
5348   also has a new function getpreferredencoding.
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.
5355 - pwd, grp, and resource return enhanced tuples now, with symbolic
5356   field names.
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__.
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.
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.
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.
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.
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.
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.
5392 Library
5393 -------
5395 - imaplib.py now supports SSL (Tino Lange and Piers Lauder).
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.
5402 - os.path exposes getctime.
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.
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.
5414 - pdb has a new 'j(ump)' command to select the next line to be
5415   executed.
5417 - The distutils created windows installers now can run a
5418   postinstallation script.
5420 - doctest.testmod can now be called without argument, which means to
5421   test the current module.
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.
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.
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).
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.
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.
5446 - A new package, logging, implements the logging API defined by PEP
5447   282.  The code is written by Vinay Sajip.
5449 - StreamReader, StreamReaderWriter and StreamRecoder in the codecs
5450   modules are iterators now.
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.
5459 - xml.sax.saxutils.unescape has been added, to replace entity references
5460   with their entity value.
5462 - Queue.Queue.{put,get} now support an optional timeout argument.
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.
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.
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():
5479     import locale
5480     locale.setlocale(locale.LC_CTYPE, "")
5482 - shutil.move was added. shutil.copytree now reports errors as an
5483   exception at the end, instead of printing error messages.
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.
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.
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.
5502 - Added random.sample(population,k) for random sampling without replacement.
5503   Returns a k length list of unique elements chosen from the population.
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.
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.
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.
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.
5529 - New "algorithms" module: heapq, implements a heap queue.  Thanks to
5530   Kevin O'Connor for the code and François Pinard for an entertaining
5531   write-up explaining the theory and practical uses of heaps.
5533 - New encoding for the Palm OS character set: palmos.
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.
5540 - xml.dom.minidom.toxml and toprettyxml now take an optional encoding
5541   argument.
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].
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.
5556 - getopt.gnu_getopt was added.  This supports GNU-style option
5557   processing, where options can be mixed with non-option arguments.
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.
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.
5570 - Added conversion functions math.degrees() and math.radians().
5572 - math.log() now takes an optional argument:  math.log(x[, base]).
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.
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.
5588 - The pickle.Pickler class grew a clear_memo() method to mimic that
5589   provided by cPickle.Pickler.
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).
5600 - New Text.dump() method in Tkinter module.
5602 - New distutils commands for building packagers were added to
5603   support pkgtool on Solaris and swinstall on HP-UX.
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.
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.
5617 - compileall now supports quiet operation.
5619 - The BaseHTTPServer now implements optional HTTP/1.1 persistent
5620   connections.
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.
5626 - encodings package: added aliases for all supported IANA character
5627   sets
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.
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.
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.
5642 - distutils bdist commands now offer a --skip-build option.
5644 - warnings.warn now accepts a Warning instance as first argument.
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]
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.
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.
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.
5664 - New pdb command 'pp' which is like 'p' except that it pretty-prints
5665   the value of its expression argument.
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.
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.
5675 - Fixed bug #636769: rexec would run unallowed code if subclasses of
5676   strings were used as parameters for certain functions.
5678 Tools/Demos
5679 -----------
5681 - pygettext.py now supports globbing on Windows, and accepts module
5682   names in addition to accepting file names.
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.)
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.
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.
5698 Build
5699 -----
5701 - On Unix, IDLE is now installed automatically.
5703 - The fpectl module is not built by default; it's dangerous or useless
5704   except in the hands of experts.
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.
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.
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.
5728 - According to Annex F of the current C standard,
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.
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:
5742   http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm
5744   Presumably 2.3a1 breaks such systems.  If anyone uses such a system, help!
5746 - The configure option --without-doc-strings can be used to remove the
5747   doc strings from the builtin functions and modules; this reduces the
5748   size of the executable.
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.
5755 - On Unix, a shared libpython2.3.so can be created with --enable-shared.
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.
5761 - The tools used to build the documentation now work under Cygwin as
5762   well as Unix.
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.
5769 C API
5770 -----
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.)
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.)
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.
5795 - New C API PyUnicode_FromOrdinal() which exposes unichr() at C
5796   level.
5798 - New functions PyErr_SetExcFromWindowsErr() and
5799   PyErr_SetExcFromWindowsErrWithFilename(). Similar to
5800   PyErr_SetFromWindowsErrWithFilename() and
5801   PyErr_SetFromWindowsErr(), but they allow to specify
5802   the exception type to raise. Available on Windows.
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.
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.
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.
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.
5820 - The type of tp_free has been changed from "``void (*)(PyObject *)``" to
5821   "``void (*)(void *)``".
5823 - PyObject_Del, PyObject_GC_Del are now functions instead of macros.
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.
5830 - PyType_Ready() accidentally did not inherit tp_is_gc; now it does.
5832 - The PyCore_* family of APIs have been removed.
5834 - The "u#" parser marker will now pass through Unicode objects as-is
5835   without going through the buffer API.
5837 - The enumerators of cmp_op have been renamed to use the prefix ``PyCmp_``.
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.
5844 - Because Python's magic number scheme broke on January 1st, we decided
5845   to stop Python development.  Thanks for all the fish!
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.
5850 New platforms
5851 -------------
5853 - OpenVMS is now supported.
5855 - AtheOS is now supported.
5857 - the EMX runtime environment on OS/2 is now supported.
5859 - GNU/Hurd is now supported.
5861 Tests
5862 -----
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'.
5868 Windows
5869 -------
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.
5881 - The Windows distribution now ships with a Secure Sockets Library (SLL)
5882    module (_ssl.pyd)
5884 - The Windows distribution now ships with Tcl/Tk version 8.4.1 (it
5885   previously shipped with Tcl/Tk 8.3.2).
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.
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).
5896 - Fixed a bug in urllib's proxy handling in Windows.  [SF bug #503031]
5898 - The installer now installs Start menu shortcuts under (the local
5899   equivalent of) "All Users" when doing an Admin install.
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).
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).
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.
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).
5938 ----
5940 - Mac/Relnotes is gone, the release notes are now here.
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().
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.
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).
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).
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.
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.
5973 - Many tools such as BuildApplet.py and gensuitemodule.py now support a command
5974   line interface too.
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.
5982 - New Carbon modules File (implementing the APIs in Files.h and Aliases.h)
5983   and Folder (APIs from Folders.h). The old macfs builtin module is
5984   gone, and replaced by a Python wrapper around the new modules.
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).
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.
5996 - OSA support has been redesigned and the generated Python classes now
5997   mirror the inheritance defined by the underlying OSA classes.
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).
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.
6008 What's New in Python 2.2 final?
6009 ===============================
6011 *Release date: 21-Dec-2001*
6013 Type/class unification and new-style classes
6014 --------------------------------------------
6016 - pickle.py, cPickle: allow pickling instances of new-style classes
6017   with a custom metaclass.
6019 Core and builtins
6020 -----------------
6022 - weakref proxy object: when comparing, unwrap both arguments if both
6023   are proxies.
6025 Extension modules
6026 -----------------
6028 - binascii.b2a_base64(): fix a potential buffer overrun when encoding
6029   very short strings.
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).
6037 Library
6038 -------
6040 - dumbdbm.py: fixed a dumb old bug (the file didn't get synched at
6041   close or delete time).
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).
6046 - xmlrpclib.py: version 1.0.0; uses precision for doubles.
6048 - test suite: the pickle and cPickle tests were not executing any code
6049   when run from the standard regression test.
6051 Tools/Demos
6052 -----------
6054 Build
6055 -----
6057 C API
6058 -----
6060 New platforms
6061 -------------
6063 Tests
6064 -----
6066 Windows
6067 -------
6069 - distutils package: fixed broken Windows installers (bdist_wininst).
6071 - tempfile.py: prevent mysterious warnings when TemporaryFileWrapper
6072   instances are deleted at process exit time.
6074 - socket.py: prevent mysterious warnings when socket instances are
6075   deleted at process exit time.
6077 - posixmodule.c: fix a Windows crash with stat() of a filename ending
6078   in backslash.
6081 ----
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.
6088 What's New in Python 2.2c1?
6089 ===========================
6091 *Release date: 14-Dec-2001*
6093 Type/class unification and new-style classes
6094 --------------------------------------------
6096 - Guido's tutorial introduction to the new type/class features has
6097   been extensively updated.  See
6099       http://www.python.org/2.2/descrintro.html
6101   That remains the primary documentation in this area.
6103 - Fixed a leak: instance variables declared with __slots__ were never
6104   deleted!
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.)
6112 - Some subtle issues with the super built-in were fixed:
6114   (a) When super itself is subclassed, its __get__ method would still
6115       return an instance of the base class (i.e., of super).
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.
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.
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__).
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.
6136 Core and builtins
6137 -----------------
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).
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.
6154 Extension modules
6155 -----------------
6157 - gc.get_referents was renamed to gc.get_referrers.
6159 Library
6160 -------
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.
6169 - webbrowser defaults to netscape.exe on OS/2 now.
6171 - Tix.ResizeHandle exposes detach_widget, hide, and show.
6173 - The charset alias windows_1252 has been added.
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,).
6179 - The pulldom and minidom modules were synchronized to PyXML.
6181 Tools/Demos
6182 -----------
6184 - A new script called Tools/scripts/google.py was added, which fires
6185   off a search on Google.
6187 Build
6188 -----
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.
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.
6202 C API
6203 -----
6205 - New function PyDict_MergeFromSeq2() exposes the builtin dict
6206   constructor's logic for updating a dictionary from an iterable object
6207   producing key-value pairs.
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.
6216 New platforms
6217 -------------
6219 Tests
6220 -----
6222 Windows
6223 -------
6226 ----
6228 - In unix-Python on Mac OS X (and darwin) sys.platform is now "darwin",
6229   without any trailing digits.
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.
6237 What's New in Python 2.2b2?
6238 ===========================
6240 *Release date: 16-Nov-2001*
6242 Type/class unification and new-style classes
6243 --------------------------------------------
6245 - Multiple inheritance mixing new-style and classic classes in the
6246   list of base classes is now allowed, so this works now:
6248       class Classic: pass
6249       class Mixed(Classic, object): pass
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.
6256 - The new builtin dictionary() constructor, and dictionary type, have
6257   been renamed to dict.  This reflects a decade of common usage.
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.
6263 - New-style classes can now have a __del__ method, which is called
6264   when the instance is deleted (just like for classic classes).
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).
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__.
6274 - The socket function has been converted to a type; see below.
6276 Core and builtins
6277 -----------------
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.
6283 - Clarified the error messages for unsupported operands to an operator
6284   (like 1 + '').
6286 Extension modules
6287 -----------------
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!
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.
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.
6307 - Various bugfixes to the curses module.  There is now a test suite
6308   for the curses module (you have to run it manually).
6310 - binascii.b2a_base64 no longer places an arbitrary restriction of 57
6311   bytes on its input.
6313 Library
6314 -------
6316 - tkFileDialog exposes a Directory class and askdirectory
6317   convenience function.
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.
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.
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).
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.
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.
6350 - statcache is now deprecated.
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.
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.
6363 Tools/Demos
6364 -----------
6366 Build
6367 -----
6369 - The dbm module is built using libdb1 if available.  The bsddb module
6370   is built with libdb3 if available.
6372 - Misc/Makefile.pre.in has been removed by BDFL pronouncement.
6374 C API
6375 -----
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().
6381 - New argument unpacking function PyArg_UnpackTuple() added.
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.
6387 - PyArg_ParseTupleAndKeywords() no longer masks errors, so it's
6388   possible that this will propagate errors it didn't before.
6390 - New function PyObject_CheckReadBuffer(), which returns true if its
6391   argument supports the single-segment readable buffer interface.
6393 New platforms
6394 -------------
6396 - We've finally confirmed that this release builds on HP-UX 11.00,
6397   *with* threads, and passes the test suite.
6399 - Thanks to a series of patches from Michael Muller, Python may build
6400   again under OS/2 Visual Age C++.
6402 - Updated RISCOS port by Dietmar Schwertberger.
6404 Tests
6405 -----
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.
6410 Windows
6411 -------
6414 ----
6416 - PythonScript has been moved to unsupported and is slated to be
6417   removed completely in the next release.
6419 - It should now be possible to build applets that work on both OS9 and
6420   OSX.
6422 - The core is now linked with CoreServices not Carbon; as a side
6423   result, default 8bit encoding on OSX is now ASCII.
6425 - Python should now build on OSX 10.1.1
6428 What's New in Python 2.2b1?
6429 ===========================
6431 *Release date: 19-Oct-2001*
6433 Type/class unification and new-style classes
6434 --------------------------------------------
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).
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).
6449 - doctest now finds and runs docstrings attached to new-style classes,
6450   class methods, static methods, and properties.
6452 Core and builtins
6453 -----------------
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.
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).
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.
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.
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.
6486   isinstance(x, (A, B))
6488   returns true if x is an instance of A or B.
6490 Extension modules
6491 -----------------
6493 - thread.start_new_thread() now returns the thread ID (previously None).
6495 - binascii has now two quopri support functions, a2b_qp and b2a_qp.
6497 - readline now supports setting the startup_hook and the
6498   pre_event_hook, and adds the add_history() function.
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.
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.
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.
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.
6522 - posixmodule (and by extension, the os module on POSIX platforms) now
6523   exports O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
6525 Library
6526 -------
6528 - doctest now excludes functions and classes not defined by the module
6529   being tested, thanks to Tim Hochberg.
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).
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.
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).
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).
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.
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.
6567 - The SocketServer.ThreadingMixIn class now closes the request after
6568   finish_request() returns.  (Not when it errors out though.)
6570 - The nntplib module's NNTP.body() method has grown a 'file' argument
6571   to allow saving the message body to a file.
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).
6578 - ftplib should be able to handle files > 2GB.
6580 - ConfigParser.getboolean() now also interprets TRUE, FALSE, YES, NO,
6581   ON, and OFF.
6583 - xml.dom.minidom NodeList objects now support the length attribute
6584   and item() method as required by the DOM specifications.
6586 Tools/Demos
6587 -----------
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.
6593 - The freeze tool has been made more robust, and two new options have
6594   been added: -X and -E.
6596 Build
6597 -----
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.
6602 C API
6603 -----
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.
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.
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).
6622 - PyUnicode_FromEncodedObject() no longer accepts Unicode objects as
6623   input.
6625 New platforms
6626 -------------
6628 Tests
6629 -----
6631 Windows
6632 -------
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.
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::
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)
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"
6658 What's New in Python 2.2a4?
6659 ===========================
6661 *Release date: 28-Sep-2001*
6663 Type/class unification and new-style classes
6664 --------------------------------------------
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.
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@python.org; if there are still problems, please open a bug
6676   report on SourceForge.)
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 to
6682   associate a docstring with a property.
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.
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).
6695 - The repr() of new-style objects is now always <Foo object at XXX>;
6696   previously, it was sometimes <Foo instance at XXX>.
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.
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.
6711 - The builtin file type can be subclassed now.  In the usual pattern,
6712   "file" is the name of the builtin type, and file() is a new builtin
6713   constructor, with the same signature as the builtin open() function.
6714   file() is now the preferred way to open a file.
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.
6721 - Previously, hash() applied to an instance of a subclass of str or
6722   unicode always returned 0.  This has been repaired.
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 builtin 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.
6732 - Provisional support for pickling new-style objects has been added.
6734 Core
6735 ----
6737 - file.writelines() now accepts any iterable object producing strings.
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.
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.
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.
6754 Library
6755 -------
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.
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.
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.
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).
6774 - The codecs module has grown four new helper APIs to access
6775   builtin codecs: getencoder(), getdecoder(), getreader(),
6776   getwriter().
6778 - SimpleXMLRPCServer: a new module (based upon SimpleHTMLServer)
6779   simplifies writing XML RPC servers.
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().
6785 - operator.indexOf() (PySequence_Index() in the C API) now works with any
6786   iterable object.
6788 - smtplib now supports various authentication and security features of
6789   the SMTP protocol through the new login() and starttls() methods.
6791 - hmac: a new module implementing keyed hashing for message
6792   authentication.
6794 - mimetypes now recognizes more extensions and file types.  At the
6795   same time, some mappings not sanctioned by IANA were removed.
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.)
6802 Build
6803 -----
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.
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).
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.
6823 C API
6824 -----
6826 - The "structmember" API now supports some new flag bits to deny read
6827   and/or write access to attributes in restricted execution mode.
6829 New platforms
6830 -------------
6832 - Compaq's iPAQ handheld, running the "familiar" Linux distribution
6833   (http://familiar.handhelds.org).
6835 Tests
6836 -----
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.
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.
6849 - regrtest.py is much better integrated with unittest and doctest now,
6850   especially in regard to reporting errors.
6852 Windows
6853 -------
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.
6860 What's New in Python 2.2a3?
6861 ===========================
6863 *Release Date: 07-Sep-2001*
6865 Core
6866 ----
6868 - Conversion of long to float now raises OverflowError if the long is too
6869   big to represent as a C double.
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).
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,
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']
6892   dir(module) continues to return only the module's attributes, though.
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.
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] ::
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.
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.
6926 - The dictionary constructor now takes an optional argument, a
6927   mapping-like object, and initializes the dictionary from its
6928   (key, value) pairs.
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
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
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:
6944       00.0    0e3   0100j   07.5   00000000000000000008.
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.
6949 Library
6950 -------
6952 - telnetlib includes symbolic names for the options, and support for
6953   setting an option negotiation callback. It also supports processing
6954   of suboptions.
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).
6963 - Asynchronous timeout actions are available through the new class
6964   threading.Timer.
6966 - math.log and math.log10 now return sensible results for even huge
6967   long arguments.  For example, math.log10(10 ** 10000) ~= 10000.0.
6969 - A new function, imp.lock_held(), returns 1 when the import lock is
6970   currently held.  See the docs for the imp module.
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.
6977 - In restricted execution mode (using the rexec module), unmarshalling
6978   code objects is no longer allowed.  This plugs a security hole.
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.
6984 Tools
6985 -----
6987 - Tools/scripts/fixdiv.py has been added which can be used to fix
6988   division operators as per PEP 238.
6990 Build
6991 -----
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.
6998 C API
6999 -----
7001 - New function PyObject_Dir(obj), like Python __builtin__.dir(obj).
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::
7007       double x = PyLong_AsDouble(some_long_object);
7008       if (x == -1.0 && PyErr_Occurred()) {
7009               /* The conversion failed. */
7010       }
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:
7016     - rename Py_TPFLAGS_GC to PyTPFLAGS_HAVE_GC
7018     - use PyObject_GC_New or PyObject_GC_NewVar to allocate objects and
7019       PyObject_GC_Del to deallocate them
7021     - rename PyObject_GC_Init to PyObject_GC_Track and PyObject_GC_Fini
7022       to PyObject_GC_UnTrack
7024     - remove PyGC_HEAD_SIZE from object size calculations
7026     - remove calls to PyObject_AS_GC and PyObject_FROM_GC
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()).
7033 New platforms
7034 -------------
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.
7042 Tests
7043 -----
7045 Windows
7046 -------
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.
7058 - The w9xpopen hack is now used on Windows NT and 2000 too when COMPSPEC
7059   points to command.com (patch from Brian Quinlan).
7062 What's New in Python 2.2a2?
7063 ===========================
7065 *Release Date: 22-Aug-2001*
7067 Build
7068 -----
7070 - Tim Peters developed a brand new Windows installer using Wise 8.1,
7071   generously donated to us by Wise Solutions.
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.
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@python.org
7080   if you are interested in helping.
7082 - The NeXT platform is no longer supported.
7084 - The 'new' module is now statically linked.
7086 Tools
7087 -----
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.
7093 Tests
7094 -----
7096 - regrtest.py now knows which tests are expected to be skipped on some
7097   platforms, allowing to give clearer test result output.  regrtest
7098   also has optional --use/-u switch to run normally disabled tests
7099   which require network access or consume significant disk resources.
7101 - Several new tests in the standard test suite, with special thanks to
7102   Nick Mathewson.
7104 Core
7105 ----
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>
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>.
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).
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).
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.
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.
7144 Library
7145 -------
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.
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.
7155 - Readline completion support for cmd.Cmd was added.
7157 - Calling os.tempnam() or os.tmpnam() generate RuntimeWarnings.
7159 - Added function threading.BoundedSemaphore()
7161 - Added Ka-Ping Yee's cgitb.py module.
7163 - The 'new' module now exposes the CO_xxx flags.
7165 - The gc module offers the get_referents function.
7167 New platforms
7168 -------------
7170 C API
7171 -----
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.
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.
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.
7193 Windows
7194 -------
7196 - "import module" now compiles module.pyw if it exists and nothing else
7197   relevant is found.
7200 What's New in Python 2.2a1?
7201 ===========================
7203 *Release date: 18-Jul-2001*
7205 Core
7206 ----
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.
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.)
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).
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.
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).
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.
7249   New codecs were added to demonstrate these new features (the .encode()
7250   and .decode() columns indicate the type of the returned objects):
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   +---------+-----------+-----------+-----------------------------+
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'.
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.
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.
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,
7294       x = 9007199254740992.0
7295       print long(x)
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).
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.
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.
7318 - Many other small changes to dicts were made, resulting in faster
7319   operation along the most common code paths.
7321 - Dictionary objects now support the "in" operator: "x in dict" means
7322   the same as dict.has_key(x).
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())
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.
7338 - The following functions were generalized to work nicely with iterator
7339   arguments::
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
7351 - Accessing module attributes is significantly faster (for example,
7352   random.random or os.path or yourPythonModule.yourAttribute).
7354 - Comparing dictionary objects via == and != is faster, and now works even
7355   if the keys and values don't support comparisons other than ==.
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.
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).
7368 - repr() is much faster for large containers (dict, list, tuple).
7371 Library
7372 -------
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.
7379 - The flags used in dlopen calls can now be configured using
7380   sys.setdlopenflags and queried using sys.getdlopenflags.
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.
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.
7391 - A new function fnmatch.filter to filter lists of file names was added.
7393 - calendar.py uses month and day names based on the current locale.
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).
7399 - Cookie.py now sorts key+value pairs by key in output strings.
7401 - pprint.isrecursive(object) didn't correctly identify recursive objects.
7402   Now it does.
7404 - pprint functions now much faster for large containers (tuple, list, dict).
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.
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)'.
7419 Tests
7420 -----
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!).
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.
7431 C API
7432 -----
7434 - Removed the unused last_is_sticky argument from the internal
7435   _PyTuple_Resize().  If this affects you, you were cheating.
7437 What's New in Python 2.1 (final)?
7438 =================================
7440 We only changed a few things since the last release candidate, all in
7441 Python library code:
7443 - A bug in the locale module was fixed that affected locales which
7444   define no grouping for numeric formatting.
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.
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.
7454 - Fixed a few bugs in the new symtable module found by Neil Norwitz's
7455   PyChecker.
7458 What's New in Python 2.1c2?
7459 ===========================
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):
7465 Core
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.
7473 - Made a bunch of symbols static that were accidentally global.
7475 Build and Ports
7477 - The setup.py script didn't check for a new enough version of zlib
7478   (1.1.3 is needed).  Now it does.
7480 - Changed "make clean" target to also remove shared libraries.
7482 - Added a more general warning about the SGI Irix optimizer to README.
7484 Library
7486 - Fix a bug in urllib.basejoin("http://host", "../file.html") which
7487   omitted the slash between host and file.html.
7489 - The mailbox module's _Mailbox class contained a completely broken
7490   and undocumented seek() method.  Ripped it out.
7492 - Fixed a bunch of typos in various library modules (urllib2, smtpd,
7493   sgmllib, netrc, chunk) found by Neil Norwitz's PyChecker.
7495 - Fixed a few last-minute bugs in unittest.
7497 Extensions
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.
7505 Tests
7507 - Fixed the pickle tests to work with "import test.test_pickle".
7509 - Tweaked test_locale.py to actually run the test Windows.
7511 - In distutils/archive_util.py, call zipfile.ZipFile() with mode "w",
7512   not "wb" (which is not a valid mode at all).
7514 - Fix pstats browser crashes.  Import readline if it exists to make
7515   the user interface nicer.
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.
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.
7526 - Skip rather than fail test_sunaudiodev if no audio device is found.
7529 What's New in Python 2.1c1?
7530 ===========================
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:
7535 Legal
7537 - Copyright was assigned to the Python Software Foundation (PSF) and a
7538   PSF license (very similar to the CNRI license) was added.
7540 - The CNRI copyright notice was updated to include 2001.
7542 Core
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.
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.
7550 - Fixed some nits in the bytecode compiler.
7552 - Fixed core dumps when calling certain kinds of non-functions.
7554 - Fixed various core dumps caused by reference count bugs.
7556 Build and Ports
7558 - Use INSTALL_SCRIPT to install script files.
7560 - New port: SCO Unixware 7, by Billy G. Allie.
7562 - Updated RISCOS port.
7564 - Updated BeOS port and notes.
7566 - Various other porting problems resolved.
7568 Library
7570 - The TERMIOS and SOCKET modules are now truly obsolete and
7571   unnecessary.  Their symbols are incorporated in the termios and
7572   socket modules.
7574 - Fixed some 64-bit bugs in pickle, cPickle, and struct, and added
7575   better tests for pickling.
7577 - threading: make Condition.wait() robust against KeyboardInterrupt.
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.
7584 - imputil: added an uninstall() method to the ImportManager.
7586 - Canvas: fixed bugs in lower() and tkraise() methods.
7588 - SocketServer: API change (added overridable close_request() method)
7589   so that the TCP server can explicitly close the request.
7591 - pstats: Eric Raymond added a simple interactive statistics browser,
7592   invoked when the module is run as a script.
7594 - locale: fixed a problem in format().
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.
7600 - unittest: changes to allow using a different exception than
7601   AssertionError, and added a few more function aliases.  Some other
7602   small changes.
7604 - urllib, urllib2: fixed redirect problems and a coupleof other nits.
7606 - asynchat: fixed a critical bug in asynchat that slipped through the
7607   2.1b2 release.  Fixed another rare bug.
7609 - Fix some unqualified except: clauses (always a bad code example).
7613 - pyexpat: new API get_version_string().
7615 - Fixed some minidom bugs.
7617 Extensions
7619 - Fixed a core dump in _weakref.  Removed the weakref.mapping()
7620   function (it adds nothing to the API).
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.
7626 - Hopefully fixed a buffering problem in linuxaudiodev.
7628 - Attempted a fix to make the OpenSSL support in the socket module
7629   work again with pre-0.9.5 versions of OpenSSL.
7631 Tests
7633 - Added a test case for asynchat and asyncore.
7635 - Removed coupling between tests where one test failing could break
7636   another.
7638 Tools
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.
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!
7650 - IDLE: syntax warnings in interactive mode are changed into errors.
7652 - Some improvements to Tools/webchecker (ignore some more URL types,
7653   follow some more links).
7655 - Brought the Tools/compiler package up to date.
7658 What's New in Python 2.1 beta 2?
7659 ================================
7661 (Unlisted are many fixed bugs, more documentation, etc.)
7663 Core language, builtins, and interpreter
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.
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).
7674 - Slice objects are now comparable but not hashable; this prevents
7675   dict[:] from being accepted but meaningless.
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().
7682 - sgmllib.py now calls handle_decl() for simple <!...> declarations.
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.
7687 - A warning will be issued if a global statement for a variable
7688   follows a use or assignment of that variable.
7690 Standard library
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.
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/.
7704 - tzparse.py is now obsolete.
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().
7710 Python/C API
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!
7719 - New extended APIs related to passing compiler variables around.
7721 - New abstract APIs PyObject_IsInstance(), PyObject_IsSubclass()
7722   implement isinstance() and issubclass().
7724 - Py_BuildValue() now has a "D" conversion to create a Python complex
7725   number from a Py_complex C value.
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.
7733 - PyFrame_FastToLocals() and PyFrame_LocalsToFast() copy bindings for
7734   free variables and cell variables to and from the frame's f_locals.
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.
7743 Distutils
7745 - the sdist command now writes a PKG-INFO file, as described in PEP 241,
7746   into the release tree.
7748 - several enhancements to the bdist_wininst command from Thomas Heller
7749   (an uninstaller, more customization of the installer's display)
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.
7756 - added 'platforms' and 'keywords' to the set of metadata that can be
7757   specified for a distribution.
7759 - applied patches from Jason Tishler to make the compiler class work with
7760   Cygwin.
7763 What's New in Python 2.1 beta 1?
7764 ================================
7766 Core language, builtins, and interpreter
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.
7779 - The nested scopes code, when enabled, has been hardened, and most
7780   bugs and memory leaks in it have been fixed.
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:
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).
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.
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.
7813 Standard library
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.
7823 - xml.dom offers the new functions registerDOMImplementation and
7824   getDOMImplementation.
7826 - xml.dom.minidom offers a toprettyxml method. A number of DOM
7827   conformance issues have been resolved. In particular, Element now
7828   has an hasAttributes method, and the handling of namespaces was
7829   improved.
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.
7839 - New library module difflib.py, primarily packaging the SequenceMatcher
7840   class at the heart of the popular ndiff.py file-comparison tool.
7842 - doctest.py (a framework for verifying Python code examples in docstrings)
7843   is now part of the std library.
7845 Windows changes
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.
7851 - Import is now case-sensitive.  PEP 235 (Import on Case-Insensitive
7852   Platforms) is implemented.  See
7854       http://python.sourceforge.net/peps/pep-0235.html
7856   for full details, especially the "Current Lower-Left Semantics" section.
7857   The new Windows import rules are simpler than before:
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.
7863   B. Else search sys.path for the first case-sensitive match; raise
7864      ImportError if none found.
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).
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.
7876 - Build:  Subproject _test (effectively) renamed to _testcapi.
7878 New platforms
7880 - 2.1 should compile and run out of the box under MacOS X, even using HFS+.
7881   Thanks to Steven Majewski!
7883 - 2.1 should compile and run out of the box on Cygwin.  Thanks to Jason
7884   Tishler!
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.
7892 What's New in Python 2.1 alpha 2?
7893 =================================
7895 Core language, builtins, and interpreter
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.
7903   In all previous version of Python, names were resolved in exactly
7904   three namespaces -- the local namespace, the global namespace, and
7905   the builtin 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.
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.
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:
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()
7925   Under the old rules, the name str in helper() is bound to the
7926   builtin 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.
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.
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):
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
7944 - Functions are now compared and hashed by identity, not by value, since
7945   the func_code attribute is writable.
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.
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.
7957 Standard library
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.
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.
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).
7986 - The socket module now supports raw packets on Linux.  The socket
7987   family is AF_PACKET.
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.
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.
7996 - Removed the obsolete soundex module.
7998 - xml.dom.minidom now uses the standard DOM exceptions. Node supports
7999   the isSameNode method; NamedNodeMap the get method.
8001 - xml.sax.expatreader supports the lexical handler property; it
8002   generates comment, startCDATA, and endCDATA events.
8004 Windows changes
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.
8012 - Build:  New subproject _test for the benefit of test_capi.py (see above).
8014 - Build:  New subproject _symtable, for new DLL _symtable.pyd (a nascent
8015   interface to some Python compiler internals).
8017 - Build:  Subproject ucnhash is gone, since the code was folded into the
8018   unicodedata subproject.
8020 What's New in Python 2.1 alpha 1?
8021 =================================
8023 Core language, builtins, and interpreter
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 an Unicode object
8028   (applying the usual coercion if necessary).
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).
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).
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.
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.
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.
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.
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.
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.
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.)
8095 - Two changes to from...import:
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.
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.
8106 - File objects have a new method, xreadlines().  This is the fastest
8107   way to iterate over all lines in a file:
8109   for line in file.xreadlines():
8110       ...do something to line...
8112   See the xreadlines module (mentioned below) for how to do this for
8113   other file-like objects.
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.
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()).
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!).
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).
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.
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.
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.
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
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)
8162   any byte code file can be used as an executable (i.e. as an argument
8163   to execve(2)).
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:
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
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).
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.
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.
8196 Standard library
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).
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).
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.
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).
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:
8226   import xreadlines
8227   for line in xreadlines.xreadlines(file):
8228       ...do something to line...
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:
8234   for line in file.xreadlines():
8235       ...do something to line...
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").
8246 - The new curses.panel module wraps the panel library that forms part
8247   of SYSV curses and ncurses.  Contributed by Thomas Gellekum.
8249 - The SocketServer module now sets the allow_reuse_address flag by
8250   default in the TCPServer class.
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.
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.
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.
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.
8276 Build issues
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.
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).
8291 - Python now always uses its own (renamed) implementation of getopt()
8292   -- there's too much variation among C library getopt()
8293   implementations.
8295 - C++ compilers are better supported; the CXX macro is always set to a
8296   C++ compiler if one is found.
8298 Windows changes
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).
8306 - Support for Windows 3.1, DOS and OS/2 is gone.  The Lib/dos-8x3
8307   subdirectory is no more!
8310 What's New in Python 2.0?
8311 =========================
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.
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/.
8322 --Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)
8324 ======================================================================
8326 What's new in 2.0 (since release candidate 1)?
8327 ==============================================
8329 Standard library
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.
8335 - Fixed a bug in gettext's "normalize and expand" code that prevented
8336   it from finding an existing .mo file.
8338 - Restored support for HTTP/0.9 servers in httplib.
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).
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.
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).
8354 - Fixed bug in urllib2 that caused it to fail when it received an HTTP
8355   redirect response.
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().
8365 - Several minor bugs were fixed in the xml package (the minidom,
8366   pulldom, expatreader, and saxutils modules).
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.
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.
8378 Internals
8380 - PyOS_CheckStack() has been disabled on Win64, where it caused
8381   test_sre to fail.
8383 Build issues
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.
8391 - Fixed configure to add -threads argument during linking on OSF1.
8393 Tools and other miscellany
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.
8402 What's new in 2.0 release candidate 1 (since beta 2)?
8403 =====================================================
8405 What is release candidate 1?
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.
8415 All the changes since the last beta release are bug fixes or changes
8416 to support building Python for specific platforms.
8418 Core language, builtins, and interpreter
8420 - A bug that caused crashes when __coerce__ was used with augmented
8421   assignment, e.g. +=, was fixed.
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 builtin
8425   power operator and the result of math.pow(0.0, -2.0) will vary by
8426   platform.  On Linux, it raises a ValueError.
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.
8432 - Compilation of deeply nested expressions raises MemoryError instead
8433   of SyntaxError, e.g. eval("[" * 50 + "]" * 50).
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.
8438 Standard library
8440 - Keyword arguments are now accepted for most pattern and match object
8441   methods in SRE, the standard regular expression engine.
8443 - In SRE, fixed error with negative lookahead and lookbehind that
8444   manifested itself as a runtime error in patterns like "(?<!abc)(def)".
8446 - Several bugs in the Unicode handling and error handling in _tkinter
8447   were fixed.
8449 - Fix memory management errors in Merge() and Tkapp_Call() routines.
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.
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.
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).
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.
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.
8475 - The binascii module is now enabled on Win64.
8477 - tokenize.py no longer suffers "recursion depth" errors when parsing
8478   programs with very long string literals.
8480 Internals
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.
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.
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.
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.
8503 - Fix bugs in _PyTuple_Resize() which caused hard-to-interpret garbage
8504   collection crashes and possibly other, unreported crashes.
8506 - Fixed a memory leak in _PyUnicode_Fini().
8508 Build issues
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.
8514 - The mmap.PAGESIZE constant is now initialized using sysconf when
8515   possible, which eliminates a dependency on -lucb for Reliant UNIX.
8517 - The md5 file should now compile on all platforms.
8519 - The select module now compiles on platforms that do not define
8520   POLLRDNORM and related constants.
8522 - Darwin (Mac OS X):  Initial support for static builds on this
8523   platform.
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.
8530 - Platform directory in lib/python2.0 is "plat-beos5" (or
8531   "plat-beos4", if building on BeOS 4.5), rather than "plat-beos".
8533 - Cygwin: Support for shared libraries, Tkinter, and sockets.
8535 - SunOS 4.1.4_JL: Fix test for directory existence in configure.
8537 Tools and other miscellany
8539 - Removed debugging prints from main used with freeze.
8541 - IDLE auto-indent no longer crashes when it encounters Unicode
8542   characters.
8544 What's new in 2.0 beta 2 (since beta 1)?
8545 ========================================
8547 Core language, builtins, and interpreter
8549 - Add support for unbounded ints in %d,i,u,x,X,o formats; for example
8550   "%d" % 2L**64 == "18446744073709551616".
8552 - Add -h and -V command line options to print the usage message and
8553   Python version number and exit immediately.
8555 - eval() and exec accept Unicode objects as code parameters.
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.
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."
8565 - Better error message when continue is found in try statement in a
8566   loop.
8569 Standard library and extensions
8571 - socket module: the OpenSSL code now adds support for RAND_status()
8572   and EGD (Entropy Gathering Device).
8574 - array: reverse() method of array now works.  buffer_info() now does
8575   argument checking; it still takes no arguments.
8577 - asyncore/asynchat: Included most recent version from Sam Rushing.
8579 - cgi: Accept '&' or ';' as separator characters when parsing form data.
8581 - CGIHTTPServer: Now works on Windows (and perhaps even Mac).
8583 - ConfigParser: When reading the file, options spelled in upper case
8584   letters are now correctly converted to lowercase.
8586 - copy: Copy Unicode objects atomically.
8588 - cPickle: Fail gracefully when copy_reg can't be imported.
8590 - cStringIO: Implemented readlines() method.
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.
8598 - distutils: Update to version 0.9.3.
8600 - dl: Add several dl.RTLD_ constants.
8602 - fpectl: Now supported on FreeBSD.
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.
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.
8612 - mailbox: Mailbox class conforms better to qmail specifications.
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.)
8619 - operator: Add contains(), invert(), __invert__() as aliases for
8620   __contains__(), inv(), and __inv__() respectively.
8622 - os: Add support for popen2() and popen3() on all platforms where
8623   fork() exists.  (popen4() is still in the works.)
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).
8629 - os.path: (Windows, DOS:) Treat trailing colon correctly in
8630   os.path.join.  os.path.join("a:", "b") yields "a:b".
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.
8636 - posixfile: Remove broken __del__() method.
8638 - py_compile: support CR+LF line terminators in source file.
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.)
8644 - rfc822: Domain literals returned by AddrlistClass method
8645   getdomainliteral() are now properly wrapped in brackets.
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.
8653 - socket: Support for size hint in readlines() method of object returned
8654   by makefile().
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.
8660 - StringIO: Size hint in readlines() is now supported as documented.
8662 - struct: Check ranges for bytes and shorts.
8664 - urllib: Improved handling of win32 proxy settings. Fixed quote and
8665   quote_plus functions so that the always encode a comma.
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.
8671 - UserList: now implements __contains__().
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.
8677 - xml: New version detection code allows PyXML to override standard
8678   XML package if PyXML version is greater than 0.6.1.
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.
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.
8690 - pyexpat: Renamed to xml.parsers.expat since this is part of the new,
8691   packagized XML support.
8694 C API
8696 - Add three new convenience functions for module initialization --
8697   PyModule_AddObject(), PyModule_AddIntConstant(), and
8698   PyModule_AddStringConstant().
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.
8704 - Py_PROTO() macros that were removed in 2.0b1 have been restored for
8705   backwards compatibility (at the source level) with old extensions.
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.
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.
8716 - PyString_Size() and PyString_AsString() accept Unicode objects.
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.
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.
8727 - PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects
8728   for the attribute name.  See note on getattr() above.
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.
8736 - Py_BuildValue accepts B format (for bgen-generated code).
8739 Internals
8741 - On Unix, fix code for finding Python installation directory so that
8742   it works when argv[0] is a relative path.
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.
8748 - Several of the internal Unicode tables are much smaller now, and
8749   the source code should be much friendlier to weaker compilers.
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).
8756 - Fixed refcount problem in instance deallocation that only occurred
8757   when Py_REF_DEBUG was defined and Py_TRACE_REFS was not.
8759 - On Windows, getpythonregpath is now protected against null data in
8760   registry key.
8762 - On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race
8763   condition.
8766 Build and platform-specific issues
8768 - Better support of GNU Pth via --with-pth configure option.
8770 - Python/C API now properly exposed to dynamically-loaded extension
8771   modules on Reliant UNIX.
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.
8777 - Improved support for HP-UX build.  Threads should now be correctly
8778   configured (on HP-UX 10.20 and 11.00).
8780 - Fix largefile support on older NetBSD systems and OpenBSD by adding
8781   define for TELL64.
8784 Tools and other miscellany
8786 - ftpmirror: Call to main() is wrapped in if __name__ == "__main__".
8788 - freeze: The modulefinder now works with 2.0 opcodes.
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.
8797 What's new in 2.0 beta 1?
8798 =========================
8800 Source Incompatibilities
8801 ------------------------
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).
8808 Binary Incompatibilities
8809 ------------------------
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.
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!
8819 - Python bytecode files (*.pyc and *.pyo) are not compatible between
8820 releases.
8823 Overview of Changes Since 1.6
8824 -----------------------------
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.
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.
8834 There are several important syntax enhancements, described in more
8835 detail below:
8837   - Augmented assignment, e.g. x += 1
8839   - List comprehensions, e.g. [x**2 for x in range(10)]
8841   - Extended import statement, e.g. import Module as Name
8843   - Extended print statement, e.g. print >> file, "Hello"
8845 Other important changes:
8847   - Optional collection of cyclical garbage
8849 Python Enhancement Proposal (PEP)
8850 ---------------------------------
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.
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.
8863 The PEPs are available at http://python.sourceforge.net/peps/.
8865 Augmented Assignment
8866 --------------------
8868 This must have been the most-requested feature of the past years!
8869 Eleven new assignment operators were added:
8871     += -= *= /= %= **= <<= >>= &= ^= |=
8873 For example,
8875     A += B
8877 is similar to
8879     A = A + B
8881 except that A is evaluated only once (relevant when A is something
8882 like dict[index].attr).
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)!
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__.
8897 Augmented assignment was implemented by Thomas Wouters.
8900 List Comprehensions
8901 -------------------
8903 This is a flexible new notation for lists whose elements are computed
8904 from another list (or lists).  The simplest form is:
8906     [<expression> for <variable> in <sequence>]
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.
8911 You can also add a condition:
8913     [<expression> for <variable> in <sequence> if <condition>]
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.
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::
8922     def flatten(seq):
8923         return [x for subseq in seq for x in subseq]
8925     flatten([[0], [1,2,3], [4,5], [6,7,8,9], []])
8927 This prints
8929     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
8931 List comprehensions originated as a patch set from Greg Ewing; Skip
8932 Montanaro and Thomas Wouters also contributed.  Described by PEP 202.
8935 Extended Import Statement
8936 -------------------------
8938 Many people have asked for a way to import a module under a different
8939 name.  This can be accomplished like this:
8941     import foo
8942     bar = foo
8943     del foo
8945 but this common idiom gets old quickly.  A simple extension of the
8946 import statement now allows this to be written as follows:
8948     import foo as bar
8950 There's also a variant for 'from ... import':
8952     from foo import bar as spam
8954 This also works with packages; e.g. you can write this:
8956     import test.regrtest as regrtest
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).
8962 Implemented by Thomas Wouters.  Described by PEP 221.
8965 Extended Print Statement
8966 ------------------------
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.
8972 For example, to write an error message to sys.stderr, you can now
8973 write:
8975     print >> sys.stderr, "Error: bad dog!"
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:
8980     print >> None, "Hello world"
8982 is equivalent to
8984     print "Hello world"
8986 Design and implementation by Barry Warsaw.  Described by PEP 214.
8989 Optional Collection of Cyclical Garbage
8990 ---------------------------------------
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.
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.
9009 Smaller Changes
9010 ---------------
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.
9018 sys.version_info is a tuple (major, minor, micro, level, serial).
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:
9024     dict.setdefault(key, []).append(item)
9026 does the same work as this common idiom:
9028     if not dict.has_key(key):
9029         dict[key] = []
9030     dict[key].append(item)
9032 There are two new variants of SyntaxError that are raised for
9033 indentation-related errors: IndentationError and TabError.
9035 Changed \x to consume exactly two hex digits; see PEP 223.  Added \U
9036 escape that consumes exactly eight hex digits.
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.
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 Misc/find_recursionlimit.py.
9055 New Modules and Packages
9056 ------------------------
9058 atexit - for registering functions to be called when Python exits.
9060 imputil - Greg Stein's alternative API for writing custom import
9061 hooks.
9063 pyexpat - an interface to the Expat XML parser, contributed by Paul
9064 Prescod.
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.
9073 webbrowser - a platform-independent API to launch a web browser.
9076 Changed Modules
9077 ---------------
9079 array -- new methods for array objects: count, extend, index, pop, and
9080 remove
9082 binascii -- new functions b2a_hex and a2b_hex that convert between
9083 binary data and its hex representation
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.
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.
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.
9097 ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now
9098 optionally support the RFC 959 REST command.
9100 gzip -- readline and readlines now accept optional size arguments
9102 httplib -- New interfaces and support for HTTP/1.1 by Greg Stein.  See
9103 the module doc strings for details.
9105 locale -- implement getdefaultlocale for Win32 and Macintosh
9107 marshal -- no longer dumps core when marshaling deeply nested or
9108 recursive data structures
9110 os -- new functions isatty, seteuid, setegid, setreuid, setregid
9112 os/popen2 -- popen2/popen3/popen4 support under Windows.  popen2/popen3
9113 support under Unix.
9115 os/pty -- support for openpty and forkpty
9117 os.path -- fix semantics of os.path.commonprefix
9119 smtplib -- support for sending very long messages
9121 socket -- new function getfqdn()
9123 readline -- new functions to read, write and truncate history files.
9124 The readline section of the library reference manual contains an
9125 example.
9127 select -- add interface to poll system call
9129 shutil -- new copyfileobj function
9131 SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the
9132 HTTP server.
9134 Tkinter -- optimization of function flatten
9136 urllib -- scans environment variables for proxy configuration,
9137 e.g. http_proxy.
9139 whichdb -- recognizes dumbdbm format
9142 Obsolete Modules
9143 ----------------
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.
9150 Changed, New, Obsolete Tools
9151 ----------------------------
9153 None.
9156 C-level Changes
9157 ---------------
9159 Several cleanup jobs were carried out throughout the source code.
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.
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.)
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.
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.
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.
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.
9189 The GC API creates new requirements for container types implemented in
9190 C extension modules.  See Include/objimpl.h for details.
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.
9196 New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable.
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.
9202 XXX There were other API changes that should be fleshed out here.
9205 Windows Changes
9206 ---------------
9208 New popen2/popen3/peopen4 in os module (see Changed Modules above).
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.
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).
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.
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\.
9236 Updates to the changes between 1.5.2 and 1.6
9237 --------------------------------------------
9239 The 1.6 NEWS file can't be changed after the release is done, so here
9240 is some late-breaking news:
9242 New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(),
9243 and changes to getlocale() and setlocale().
9245 The new module is now enabled per default.
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.
9252 Japanese codecs are available from Tamito KAJIYAMA:
9253 http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/
9256 ======================================================================
9259 =======================================
9260 ==> Release 1.6 (September 5, 2000) <==
9261 =======================================
9263 What's new in release 1.6?
9264 ==========================
9266 Below is a list of all relevant changes since release 1.5.2.
9269 Source Incompatibilities
9270 ------------------------
9272 Several small incompatible library changes may trip you up:
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)).
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)).
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).
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.
9295 Binary Incompatibilities
9296 ------------------------
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.
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!
9306 Overview of Changes since 1.5.2
9307 -------------------------------
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/ .
9313 There are lots of new modules and lots of bugs have been fixed.  A
9314 list of all new modules is included below.
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 build-in function unicode(), an 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.
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.
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.
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!).
9343 Other Changes
9344 -------------
9346 Other changes that won't break code but are nice to know about:
9348 Deleting objects is now safe even for deeply nested data structures.
9350 Long/int unifications: long integers can be used in seek() calls, as
9351 slice indexes.
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.)
9357 Greg Ward's "distutils" package is included: this will make
9358 installing, building and distributing third party packages much
9359 simpler.
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).
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).
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 :-).
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__.
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.
9394 New Modules in 1.6
9395 ------------------
9397 UserString - base class for deriving from the string type.
9399 distutils - tools for distributing Python modules.
9401 robotparser - parse a robots.txt file, for writing web spiders.
9402 (Moved from Tools/webchecker/.)
9404 linuxaudiodev - audio for Linux.
9406 mmap - treat a file as a memory buffer.  (Windows and Unix.)
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).
9412 filecmp - supersedes the old cmp.py and dircmp.py modules.
9414 tabnanny - check Python sources for tab-width dependance.  (Moved from
9415 Tools/scripts/.)
9417 urllib2 - new and improved but incompatible version of urllib (still
9418 experimental).
9420 zipfile - read and write zip archives.
9422 codecs - support for Unicode encoders/decoders.
9424 unicodedata - provides access to the Unicode 3.0 database.
9426 _winreg - Windows registry access.
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.
9436 Changed Modules
9437 ---------------
9439 readline, ConfigParser, cgi, calendar, posix, readline, xmllib, aifc,
9440 chunk, wave, random, shelve, nntplib - minor enhancements.
9442 socket, httplib, urllib - optional OpenSSL support (Unix only).
9444 _tkinter - support for 8.0 up to 8.3.  Support for versions older than
9445 8.0 has been dropped.
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.
9453 Changes on Windows
9454 ------------------
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.
9464 The Windows installer now installs by default in \Python16\ on the
9465 default volume, instead of \Program Files\Python-1.6\.
9468 Changed Tools
9469 -------------
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.)
9475 Tools/i18n/pygettext.py - Python equivalent of xgettext(1).  A message
9476 text extraction tool used for internationalizing applications written
9477 in Python.
9480 Obsolete Modules
9481 ----------------
9483 stdwin and everything that uses it.  (Get Python 1.5.2 if you need
9484 it. :-)
9486 soundex.  (Skip Montanaro has a version in Python but it won't be
9487 included in the Python release.)
9489 cmp, cmpcache, dircmp.  (Replaced by filecmp.)
9491 dump.  (Use pickle.)
9493 find.  (Easily coded using os.walk().)
9495 grep.  (Not very useful as a library module.)
9497 packmail.  (No longer has any use.)
9499 poly, zmod.  (These were poor examples at best.)
9501 strop.  (No longer needed by the string module.)
9503 util.  (This functionality was long ago built in elsewhere).
9505 whatsound.  (Use sndhdr.)
9508 Detailed Changes from 1.6b1 to 1.6
9509 ----------------------------------
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.
9517 - Added the Tools/compiler package.  This is a project led by Jeremy
9518 Hylton to write the Python bytecode generator in Python.
9520 - The function math.rint() is removed.
9522 - In Python.h, "#define _GNU_SOURCE 1" was added.
9524 - Version 0.9.1 of Greg Ward's distutils is included (instead of
9525 version 0.9).
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.)
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.)
9536 - The _locale module is enabled by default.
9538 - Fixed the configuration line for the _curses module.
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.
9544 - The <list>.extend() method now accepts an arbitrary sequence
9545 argument.
9547 - If __str__() or __repr__() returns a Unicode object, this is
9548 converted to an 8-bit string.
9550 - Unicode string comparisons is no longer aware of UTF-16
9551 encoding peculiarities; it's a straight 16-bit compare.
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.
9557 - A few portability problems have been fixed, in particular a
9558 compilation error involving socklen_t.
9560 - The PC configuration is slightly friendlier to non-Microsoft
9561 compilers.
9564 ======================================================================
9567 ======================================
9568 ==> Release 1.5.2 (April 13, 1999) <==
9569 ======================================
9571 From 1.5.2c1 to 1.5.2 (final)
9572 =============================
9574 Tue Apr 13 15:44:49 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
9576         * PCbuild/python15.wse: Bump version to 1.5.2 (final)
9578         * PCbuild/python15.dsp: Added shamodule.c
9580         * PC/config.c: Added sha module!
9582         * README, Include/patchlevel.h: Prepare for final release.
9584         * Misc/ACKS:
9585         More (Cameron Laird is honorary; the others are 1.5.2c1 testers).
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.
9593         * Misc/ACKS:
9594         Bunch of new names who helped iron out the last wrinkles of 1.5.2.
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?)
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"...
9605         * Lib/Attic/threading_api.py:
9606         Removed; since long subsumed in Doc/lib/libthreading.tex
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.
9614 Mon Apr 12 22:51:20 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.)
9621         * README:
9622         Add note about popen2 problem on Linux noticed by Pablo Bleyer.
9624         * README: Add note about -D_REENTRANT for HP-UX 10.20.
9626         * Modules/Makefile.pre.in: 'clean' target should remove hassignal.
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.
9632         * README: Clarify PC build instructions (point to PCbuild).
9634         * Modules/zlibmodule.c: Cast added by Jack Jansen (for Mac port).
9636         * Lib/plat-sunos5/CDIO.py, Lib/plat-linux2/CDROM.py:
9637         Forgot to add this file.  CDROM device parameters.
9639         * Lib/gzip.py: Two different changes.
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.
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.
9649 Sat Apr 10 18:42:02 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
9651         * PC/Attic/_tkinter.def: No longer needed.
9653         * Misc/ACKS: Correct missed character in Andrew Dalke's name.
9655         * README: Add DEC Ultrix notes (from Donn Cave's email).
9657         * configure: The usual
9659         * configure.in:
9660         Quote a bunch of shell variables used in test, related to long-long.
9662         * Objects/fileobject.c, Modules/shamodule.c, Modules/regexpr.c:
9663         casts for picky compilers.
9665         * Modules/socketmodule.c:
9666         3-arg gethostbyname_r doesn't really work on OSF/1.
9668         * PC/vc15_w31/_.c, PC/vc15_lib/_.c, Tools/pynche/__init__.py:
9669         Avoid totally empty files.
9671 Fri Apr  9 14:56:35 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
9673         * Tools/scripts/fixps.py: Use re instead of regex.
9674         Don't rewrite the file in place.
9675         (Reported by Andy Dustman.)
9677         * Lib/netrc.py, Lib/shlex.py: Get rid of #! line
9679 Thu Apr  8 23:13:37 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.
9685 ======================================================================
9688 From 1.5.2b2 to 1.5.2c1
9689 =======================
9691 Thu Apr  8 23:13:37 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.
9697         * PCbuild/zlib.dsp: Now using static zlib 1.1.3
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
9702         * Include/patchlevel.h: Release 1.5.2c1
9704         * README: Release 1.5.2c1.
9706         * Misc/NEWS: News for the 1.5.2c1 release.
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.
9715         * Demo/tkinter/matt/window-creation-w-location.py:
9716         This demo imported some private code from Matt.  Make it cripple along.
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).
9726         * Python/thread_wince.h: Win/CE thread support by Mark Hammond.
9728 Wed Apr  7 20:23:17 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.
9736         * Lib/test/test_gzip.py: Use binary mode for all gzip files we open.
9738         * Tools/idle/ChangeLog: New change log.
9740         * Tools/idle/README.txt, Tools/idle/NEWS.txt: New version.
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.
9747         * Tools/idle/idlever.py: Version bump awaiting impending new release.
9748         (Not much has changed :-( )
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)
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>.
9760         * Python/bltinmodule.c:
9761         Remove unused variable from complex_from_string() code.
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.
9767         * Modules/posixmodule.c: Add extern decl for fsync() for SunOS 4.x.
9769         * Lib/smtplib.py: Changes by Per Cederquist and The Dragon.
9771         Per writes:
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.
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.
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.
9790         The constructor will now raise an exception if it cannot connect to
9791         the SMTP server.
9793         The data() method will raise an SMTPDataError if it doesn't receive
9794         the expected 354 code in the middle of the exchange.
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.
9803         The code no longer accepts a -1 reply from the ehlo() method in
9804         sendmail().
9806         [Text about removing SMTPRecipientsRefused deleted --GvR]
9807         """
9809         and also:
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         """
9817         The Dragon writes:
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. )
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.
9831                 My one concern is that code expecting an integer & getting a tuple
9832         may fail silently.
9834         (i.e. if it's doing :
9836               x.somemethod() >= 400:
9837         expecting an integer, the expression will always be true if it gets a
9838         tuple instead. )
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         """
9847 Tue Apr  6 19:38:18 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.)
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.)
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()).
9868         * configure.in, configure, config.h.in, acconfig.h:
9869         For BeOS PowerPC.  Chris Herborth.
9871 Mon Apr  5 21:54:14 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.
9877         * Misc/ACKS:
9878         Bunch of new contributors, including 9 who contributed to the Docs,
9879         reported by Fred.
9881 Mon Apr  5 18:37:59 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
9883         * Lib/gzip.py:
9884         Oops, missed mode parameter to open().
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@csd.uwm.edu>).
9891 Fri Apr  2 22:18:25 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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).
9897 Thu Apr  1 15:32:30 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
9899         * Lib/test/test_cpickle.py: Jonathan Giddy write:
9901         In test_cpickle.py, the module os got imported, but the line to remove
9902         the temp file has gone missing.
9904 Tue Mar 30 20:17:31 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
9906         * Lib/BaseHTTPServer.py: Per Cederqvist writes:
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:
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
9916         The server should complain about 'PUT' instead of 'do_PUT'.  This
9917         patch should fix the problem.
9919 Mon Mar 29 20:33:21 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
9921         * Lib/smtplib.py: Patch by Per Cederqvist, who writes:
9923         """
9924          - It needlessly used the makefile() method for each response that is
9925            read from the SMTP server.
9927          - If the remote SMTP server closes the connection unexpectedly the
9928            code raised an IndexError.  It now raises an SMTPServerDisconnected
9929            exception instead.
9931          - The code now checks that all lines in a multiline response actually
9932            contains an error code.
9933         """
9935         The Dragon approves.
9937 Mon Mar 29 20:25:40 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
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.
9944 Mon Mar 29 20:23:41 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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).
9950         * Modules/cPickle.c:
9951         Protection against picling to/from closed (real) file.
9952         The problem was reported by Moshe Zadka.
9954         * Lib/test/test_cpickle.py:
9955         Test protection against picling to/from closed (real) file.
9957         * Modules/timemodule.c: Chris Lawrence writes:
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.
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).
9975         (It's hard to find DST that's currently being used in the southern
9976         hemisphere; I tested using Africa/Windhoek.)
9977         """
9979         * Lib/test/output/test_gzip:
9980         Jonathan Giddy discovered this file was missing.
9982         * Modules/shamodule.c:
9983         Avoid warnings from AIX compiler.  Reported by Vladimir (AIX is my
9984         middlename) Marangozov, patch coded by Greg Stein.
9986         * Tools/idle/ScriptBinding.py, Tools/idle/PyShell.py:
9987         At Tim Peters' recommendation, add a dummy flush() method to PseudoFile.
9989 Sun Mar 28 17:55:32 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
9991         * Tools/scripts/ndiff.py: Tim Peters writes:
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>.
9999 Sat Mar 27 13:34:01 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10001         * Tools/scripts/ndiff.py: Tim Peters writes:
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.
10008 Fri Mar 26 22:36:00 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
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 propogate it otherwise.
10014 Fri Mar 26 16:20:45 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10016         * Lib/test/output/test_userlist, Lib/test/test_userlist.py:
10017         Test suite for UserList.
10019         * Lib/UserList.py: Use isinstance() where appropriate.
10020         Reformatted with 4-space indent.
10022 Fri Mar 26 16:11:40 1999  Barry Warsaw  <bwarsaw@eric.cnri.reston.va.us>
10024         * Tools/pynche/PyncheWidget.py:
10025         Helpwin.__init__(): The text widget should get focus.
10027         * Tools/pynche/pyColorChooser.py:
10028         Removed unnecessary import `from PyncheWidget import PyncheWidget'
10030 Fri Mar 26 15:32:05 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10032         * Lib/test/output/test_userdict, Lib/test/test_userdict.py:
10033         Test suite for UserDict
10035         * Lib/UserDict.py: Improved a bunch of things.
10036         The constructor now takes an optional dictionary.
10037         Use isinstance() where appropriate.
10039 Thu Mar 25 22:38:49 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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
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.
10048 Thu Mar 25 21:50:27 1999  Andrew Kuchling  <akuchlin@eric.cnri.reston.va.us>
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.
10055         * Lib/gzip.py:
10056         Based on a suggestion from bruce@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.
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.
10065         Raise IOError instead of RuntimeError in two cases, 'Not a gzipped file'
10066         and 'Unknown compression method'
10068 Thu Mar 25 21:25:01 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10070         * Lib/test/test_b1.py:
10071         Add tests for float() and complex() with string args (Nick/Stephanie
10072         Lockwood).
10074 Thu Mar 25 21:21:08 1999  Andrew Kuchling  <akuchlin@eric.cnri.reston.va.us>
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.
10082 Thu Mar 25 21:16:07 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.
10088 Wed Mar 24 19:09:00 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.)
10097         * Objects/dictobject.c:
10098         Vladimir Marangozov contributed updated comments.
10100         * Objects/bufferobject.c: Folded long lines.
10102         * Lib/test/output/test_sha, Lib/test/test_sha.py:
10103         Added Jeremy's test code for the sha module.
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.
10109         * Lib/test/test_bsddb.py: Remove the temp file when we're done.
10111         * Include/pythread.h: Conform to standard boilerplate.
10113         * configure.in, configure, BeOS/linkmodule, BeOS/ar-fake:
10114         Chris Herborth: the new compiler in R4.1 needs some new options to work...
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:
10122         AIX, OSF have 3 args
10123         Sun, SGI have 5 args
10124         Linux has 6 args
10126         On all other platforms, undef HAVE_GETHOSTBYNAME_R altogether.
10128         * Modules/socketmodule.c:
10129         Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
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.
10136 Tue Mar 23 23:05:34 1999  Jeremy Hylton  <jhylton@eric.cnri.reston.va.us>
10138         * Lib/gzip.py: use struct instead of bit-manipulate in Python
10140 Tue Mar 23 19:00:55 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.
10146         * configure, configure.in:
10147         Ack!  It never defined HAVE_GETHOSTBYNAME_R so that code was never tested!
10149 Mon Mar 22 22:25:39 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10151         * Include/thread.h:
10152         Adding thread.h -- unused but for b/w compatibility.
10153         As requested by Bill Janssen.
10155         * configure.in, configure:
10156         Add code to test for all sorts of gethostbyname_r variants,
10157         donated by David Arnold.
10159         * config.h.in, acconfig.h:
10160         Add symbols for gethostbyname_r variants (sigh).
10162         * Modules/socketmodule.c: Clean up pass for the previous patches.
10164         - Use HAVE_GETHOSTBYNAME_R_6_ARG instead of testing for Linux and
10165         glibc2.
10167         - If gethostbyname takes 3 args, undefine HAVE_GETHOSTBYNAME_R --
10168         don't know what code should be used.
10170         - New symbol USE_GETHOSTBYNAME_LOCK defined iff the lock should be used.
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.
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.")
10180         * Modules/socketmodule.c: Jonathan Giddy writes:
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.
10188 Mon Mar 22 19:25:30 1999  Andrew Kuchling  <akuchlin@eric.cnri.reston.va.us>
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.
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.
10199 Mon Mar 22 15:28:08 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10201         * Lib/shlex.py:
10202         Bug reported by Tobias Thelen: missing "self." in assignment target.
10204 Fri Mar 19 21:50:11 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10206         * Modules/arraymodule.c:
10207         Use an unsigned cast to avoid a warning in VC++.
10209         * Lib/dospath.py, Lib/ntpath.py:
10210         New code for split() by Tim Peters, behaves more like posixpath.split().
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.
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.
10223         * Lib/types.py:
10224         Added BufferType, the type returned by the new builtin buffer().  Greg Stein.
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).
10230         * Objects/bufferobject.c:
10231         Added check for negative offset for PyBuffer_FromObject and check for
10232         negative size for PyBuffer_FromMemory.  Greg Stein.
10234 Thu Mar 18 15:10:44 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10236         * Lib/urlparse.py: Sjoerd Mullender writes:
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.
10246         * Lib/nturl2path.py: Sjoerd Mullender writes:
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.
10254 Wed Mar 17 22:30:10 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.
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).
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.
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.
10278         * Include/ceval.h, Include/abstract.h:
10279         Add DLL level b/w compat for PySequence_In and PyEval_CallObject
10281 Tue Mar 16 21:54:50 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10283         * Lib/lib-tk/Tkinter.py: Bug reported by Jim Robinson:
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.
10292 Tue Mar 16 14:17:48 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
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.
10299 Mon Mar 15 21:40:59 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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).
10305         * Modules/socketmodule.c:
10306         Patch by Rob Riggs for Linux -- glibc2 has a different argument
10307         converntion for gethostbyname_r() etc. than Solaris!
10309         * Python/thread_pthread.h: Rob Riggs wrote:
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.)
10317         For reference, see:
10318         http://www.opengroup.org/onlinepubs/7908799/xsh/pthread_create.html
10319         """
10321         [I have a feeling that similar bugs were fixed before; perhaps someone
10322         could check that all error checks no check for != 0?]
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.
10330         Or so sez Jack Jansen...
10332         * Lib/urllib.py: Yet another patch by Sjoerd Mullender:
10334         Don't convert URLs to URLs using pathname2url.
10336 Fri Mar 12 22:15:43 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10338         * Lib/cmd.py: Patch by Michael Scharf.  He writes:
10340             The module cmd requires for each do_xxx command a help_xxx
10341             function. I think this is a little old fashioned.
10343             Here is a patch: use the docstring as help if no help_xxx
10344             function can be found.
10346         [I'm tempted to rip out all the help_* functions from pdb, but I'll
10347         resist it.  Any takers?  --Guido]
10349         * Tools/freeze/freeze.py: Bug submitted by Wayne Knowles, who writes:
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
10356         (His fix adds a call to os.path.basename() in the appropriate place.)
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.)
10363         Also added code so that with -vv it is very chatty about what it does.
10365         * Demo/zlib/zlibdemo.py, Demo/zlib/minigzip.py:
10366         Change #! line to modern usage; also chmod +x
10368         * Demo/pdist/rrcs, Demo/pdist/rcvs, Demo/pdist/rcsbump:
10369         Change #! line to modern usage
10371         * Lib/nturl2path.py, Lib/urllib.py: From: Sjoerd Mullender
10373         The filename to URL conversion didn't properly quote special
10374         characters.
10375         The URL to filename didn't properly unquote special chatacters.
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).
10382 Thu Mar 11 23:21:23 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10384         * Tools/idle/PathBrowser.py:
10385         Don't crash when sys.path contains an empty string.
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.
10392         - Show a watch cursor when calling pyclbr (since it may take a while
10393         recursively parsing imported modules!).
10395 Thu Mar 11 16:04:04 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
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.)
10402 Thu Mar 11 13:26:23 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10404         * Lib/test/output/test_popen2, Lib/test/test_popen2.py:
10405         Test for popen2 module, by Chris Tismer.
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.
10411 Wed Mar 10 22:55:47 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10413         * Objects/floatobject.c:
10414         Patch by Vladimir Marangoz to allow freeing of the allocated blocks of
10415         floats on finalization.
10417         * Objects/intobject.c:
10418         Patch by Vladimir Marangoz to allow freeing of the allocated blocks of
10419         integers on finalization.
10421         * Tools/idle/EditorWindow.py, Tools/idle/Bindings.py:
10422         Add PathBrowser to File module
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
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).
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.
10440         * Tools/idle/MultiScrolledLists.py:
10441         New utility: multiple scrolled lists in parallel
10443         * Tools/idle/ScrolledList.py: - White background.
10444         - Display "(None)" (or text of your choosing) when empty.
10445         - Don't set the focus.
10447 Tue Mar  9 19:31:21 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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.
10453         * Demo/embed/demo.c:
10454         Call Py_SetProgramName() instead of redefining getprogramname(),
10455         reflecting changes in the runtime around 1.5 or earlier.
10457         * Python/ceval.c:
10458         Always test for an error return (usually NULL or -1) without setting
10459         an exception.
10461         * Modules/timemodule.c: Patch by Chris Herborth for BeOS code.
10462         He writes:
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.
10470         * Tools/bgen/bgen/macsupport.py: Small change by Jack Jansen.
10471         Test for self.returntype behaving like OSErr rather than being it.
10473 Thu Feb 25 16:14:58 1999  Jeremy Hylton  <jhylton@eric.cnri.reston.va.us>
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.
10479         * Lib/urllib.py: change indentation from 8 spaces to 4 spaces
10481         * Lib/urllib.py: pleasing the tabnanny
10483 Thu Feb 25 14:26:02 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
10485         * Lib/colorsys.py:
10486         Oops, one more "x, y, z" to convert...
10488         * Lib/colorsys.py:
10489         Adjusted comment at the top to be less confusing, following Fredrik
10490         Lundh's example.
10492         Converted comment to docstring.
10494 Wed Feb 24 18:49:15 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
10496         * Lib/toaiff.py:
10497         Use sndhdr instead of the obsolete whatsound module.
10499 Wed Feb 24 18:42:38 1999  Jeremy Hylton  <jhylton@eric.cnri.reston.va.us>
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.
10508 Wed Feb 24 16:25:17 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10510         * Lib/mhlib.py: Patch by Lars Wirzenius:
10512                 o the initial comment is wrong: creating messages is already
10513                   implemented
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
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 ;-)
10526 Wed Feb 24 00:35:43 1999  Barry Warsaw  <bwarsaw@eric.cnri.reston.va.us>
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.
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.
10538 Tue Feb 23 23:07:51 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10540         * Lib/shutil.py:
10541         Add import sys, needed by reference to sys.exc_info() in rmtree().
10542         Discovered by Mitch Chapman.
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...
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.
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.
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.
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).
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.
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).
10580         * Lib/test/test_fcntl.py:
10581         According to Jeffrey Honig, bsd/os 4.0 should be added to the list.
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.
10591 Mon Feb 22 19:01:42 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
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().
10597         * Modules/Setup.in: Document *static* -- in two places!
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.
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.
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.
10613 Mon Feb 22 15:38:58 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
10615         * Misc/NEWS:
10616         Typo:  "apparentlt" --> "apparently"
10618 Mon Feb 22 15:38:46 1999  Guido van Rossum  <guido@eric.cnri.reston.va.us>
10620         * Lib/urlparse.py: Steve Clift pointed out that 'file' allows a netloc.
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.)
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.
10630 Thu Feb 18 20:51:50 1999  Fred Drake  <fdrake@eric.cnri.reston.va.us>
10632         * Lib/pyclbr.py:
10633         Bow to font-lock at the end of the docstring, since it throws stuff
10634         off.
10636         Make sure the path paramter to readmodule() is a list before adding it
10637         with sys.path, or the addition could fail.
10640 ======================================================================
10643 From 1.5.2b1 to 1.5.2b2
10644 =======================
10646 General
10647 -------
10649 - Many memory leaks fixed.
10651 - Many small bugs fixed.
10653 - Command line option -OO (or -O -O) suppresses inclusion of doc
10654 strings in resulting bytecode.
10656 Windows-specific changes
10657 ------------------------
10659 - New built-in module winsound provides an interface to the Win32
10660 PlaySound() call.
10662 - Re-enable the audioop module in the config.c file.
10664 - On Windows, support spawnv() and associated P_* symbols.
10666 - Fixed the conversion of times() return values on Windows.
10668 - Removed freeze from the installer -- it doesn't work without the
10669 source tree.  (See FAQ 8.11.)
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).
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.
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 **
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.
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.
10696 Changes to intrinsics
10697 ---------------------
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.
10703 - The range() function now avoids overflow during its calculations (if
10704 at all possible).
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.
10710 New or improved ports
10711 ---------------------
10713 - Support for Nextstep descendants (future Mac systems).
10715 - Improved BeOS support.
10717 - Support dynamic loading of shared libraries on NetBSD platforms that 
10718 use ELF (i.e., MIPS and Alpha systems).
10720 Configuration/build changes
10721 ---------------------------
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.
10726 - Now using autoconf 2.13.
10728 New library modules
10729 -------------------
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.
10735 - New module statvfs contains indexing constants for [f]statvfs()
10736 return tuple.
10738 Changes to the library
10739 ----------------------
10741 - The wave module (platform-independent support for Windows sound
10742 files) has been fixed to actually make it work.
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.
10749 - Fix a bug in the urllib module that occasionally tripped up
10750 webchecker and other ftp retrieves.
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.
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.
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).
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.
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.
10774 - In the debugger (pdb), change clear syntax to support three
10775 alternatives: clear; clear file:line; clear bpno bpno ...
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".
10780 - The standard exceptions now have doc strings.
10782 - In the smtplib module, exceptions are now classes.  Also avoid
10783 inserting a non-standard space after "TO" in rcpt() command.
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.
10791 - Fixed bug in urlparse in the common-case code for HTTP URLs; it
10792 would lose the query, fragment, and/or parameter information.
10794 - The sndhdr module no longer supports whatraw() -- it depended on a
10795 rare extenral program.
10797 - The UserList module/class now supports the extend() method, like
10798 real list objects.
10800 - The uu module now deals better with trailing garbage generated by
10801 some broke uuencoders.
10803 - The telnet module now has an 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).
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.
10811 Changes to extension modules
10812 ----------------------------
10814 - Support for the [f]statvfs() system call, where it exists.
10816 - Fixed some bugs in cPickle where bad input could cause it to dump
10817 core.
10819 - Fixed cStringIO to make the writelines() function actually work.
10821 - Added strop.expandtabs() so string.expandtabs() is now much faster.
10823 - Added fsync() and fdatasync(), if they appear to exist.
10825 - Support for "long files" (64-bit seek pointers).
10827 - Fixed a bug in the zlib module's flush() function.
10829 - Added access() system call.  It returns 1 if access granted, 0 if
10830 not.
10832 - The curses module implements an optional nlines argument to
10833 w.scroll().  (It then calls wscrl(win, nlines) instead of scoll(win).)
10835 Changes to tools
10836 ----------------
10838 - Some changes to IDLE; see Tools/idle/NEWS.txt.
10840 - Latest version of Misc/python-mode.el included.
10842 Changes to Tkinter
10843 ------------------
10845 - Avoid tracebacks when an image is deleted after its root has been
10846 destroyed.
10848 Changes to the Python/C API
10849 ---------------------------
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.
10855 - Added PyModule_GetFilename().
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).
10861 - New version identification symbols; read patchlevel.h for info.  The
10862 version numbers are now exported by Python.h.
10864 - Rolled back the API version change -- it's back to 1007!
10866 - The frozenmain.c function calls PyInitFrozenExtensions().
10868 - Added 'N' format character to Py_BuildValue -- like 'O' but doesn't
10869 INCREF.
10872 ======================================================================
10875 From 1.5.2a2 to 1.5.2b1
10876 =======================
10878 Changes to intrinsics
10879 ---------------------
10881 - New extension NotImplementedError, derived from RuntimeError.  Not
10882 used, but recommended use is for "abstract" methods to raise this.
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.
10887 - The code generator now inserts extra SET_LINENO opcodes when
10888 compiling multi-line argument lists.
10890 - When comparing bound methods, use identity test on the objects, not
10891 equality test.
10893 New or improved ports
10894 ---------------------
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.
10899 Renaming
10900 --------
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).
10907 Configuration/build changes
10908 ---------------------------
10910 - Improved support for FreeBSD/3.
10912 - Check for pthread_detach instead of pthread_create in libc.
10914 - The makesetup script now searches EXECINCLUDEPY before INCLUDEPY.
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.
10919 New library modules
10920 -------------------
10922 - shlex.py by Eric Raymond provides a lexical analyzer class for
10923 simple shell-like syntaxes.
10925 - netrc.py by Eric Raymond provides a parser for .netrc files.  (The
10926 undocumented Netrc class in ftplib.py is now obsolete.)
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.
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.
10937 Obsoleted library modules
10938 -------------------------
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.
10944 New tools
10945 ---------
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).
10955 - New tools by Barry Warsaw:
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
10961 New demos
10962 ---------
10964 - Demo/scripts/beer.py prints the lyrics to an arithmetic drinking
10965 song.
10967 - Demo/tkinter/guido/optionmenu.py shows how to do an option menu in
10968 Tkinter.  (By Fredrik Lundh -- not by me!)
10970 Changes to the library
10971 ----------------------
10973 - compileall.py now avoids recompiling .py files that haven't changed;
10974 it adds a -f option to force recompilation.
10976 - New version of xmllib.py by Sjoerd Mullender (0.2 with latest
10977 patches).
10979 - nntplib.py: statparse() no longer lowercases the message-id.
10981 - types.py: use type(__stdin__) for FileType.
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.
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.
10996 - UserList.py: In __getslice__, use self.__class__ instead of
10997 UserList.
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.
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.)
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.
11013 - bdb.py: fix bomb on deleting a temporary breakpoint: there's no
11014 method do_delete(); do_clear() was meant.  By Greg Ward.
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.
11022 - tempfile.py: improvements to avoid security leaks.
11024 - code.py: moved compile_command() to new module codeop.py.
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.
11030 - uu.py: Move 'import sys' to top of module, as noted by Tim Peters.
11032 - imaplib.py: fix problem with some versions of IMAP4 servers that
11033 choose to mix the case in their CAPABILITIES response.
11035 - cmp.py: use (f1, f2) as cache key instead of f1 + ' ' + f2.  Noted
11036 by Fredrik Lundh.
11038 Changes to extension modules
11039 ----------------------------
11041 - More doc strings for several modules were contributed by Chris
11042 Petrilli: math, cmath, fcntl.
11044 - Fixed a bug in zlibmodule.c that could cause core dumps on
11045 decompression of rarely occurring input.
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.
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.
11054 - mpzmodule.c: fix signed character usage in mpz.mpz(stringobjecty).
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.
11060 - sunaudiodev.c: Barry Warsaw added more smarts to get the device and
11061 control pseudo-device, per audio(7I).
11063 Changes to tools
11064 ----------------
11066 - New, improved version of Barry Warsaw's Misc/python-mode.el (editing 
11067 support for Emacs).
11069 - tabnanny.py: added a -q ('quiet') option to tabnanny, which causes
11070 only the names of offending files to be printed.
11072 - freeze: when printing missing modules, also print the module they
11073 were imported from.
11075 - untabify.py: patch by Detlef Lannert to implement -t option
11076 (set tab size).
11078 Changes to Tkinter
11079 ------------------
11081 - grid_bbox(): support new Tk API: grid bbox ?column row? ?column2
11082 row2?
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.
11088 Changes to the Python/C API
11089 ---------------------------
11091 - Bumped API version number to 1008 -- enough things have changed!
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.
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().
11106 Invisible changes to internals
11107 ------------------------------
11109 - Fixed a bug in new_buffersize() in fileobject.c which could
11110 return a buffer size that was way too large.
11112 - Use PySys_WriteStderr instead of fprintf in most places.
11114 - dictobject.c: remove dead code discovered by Vladimir Marangozov.
11116 - tupleobject.c: make tuples less hungry -- an extra item was
11117 allocated but never used.  Tip by Vladimir Marangozov.
11119 - mymath.h: Metrowerks PRO4 finally fixes the hypot snafu.  (Jack
11120 Jansen)
11122 - import.c: Jim Fulton fixes a reference count bug in
11123 PyEval_GetGlobals.
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 :-( )
11130 - frameobject.c: fix reference count bug in PyFrame_New.  Vladimir
11131 Marangozov.
11133 - stropmodule.c: add a missing DECREF in an error exit.  Submitted by
11134 Jonathan Giddy.
11137 ======================================================================
11140 From 1.5.2a1 to 1.5.2a2
11141 =======================
11143 General
11144 -------
11146 - It is now a syntax error to have a function argument without a
11147 default following one with a default.
11149 - __file__ is now set to the .py file if it was parsed (it used to
11150 always be the .pyc/.pyo file).
11152 - Don't exit with a fatal error during initialization when there's a
11153 problem with the exceptions.py module.
11155 - New environment variable PYTHONOPTIMIZE can be used to set -O.
11157 - New version of python-mode.el for Emacs.
11159 Miscellaneous fixed bugs
11160 ------------------------
11162 - No longer print the (confusing) error message about stack underflow
11163 while compiling.
11165 - Some threading and locking bugs fixed.
11167 - When errno is zero, report "Error", not "Success".
11169 Documentation
11170 -------------
11172 - Documentation will be released separately.
11174 - Doc strings added to array and md5 modules by Chris Petrilli.
11176 Ports and build procedure
11177 -------------------------
11179 - Stop installing when a move or copy fails.
11181 - New version of the OS/2 port code by Jeff Rush.
11183 - The makesetup script handles absolute filenames better.
11185 - The 'new' module is now enabled by default in the Setup file.
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.
11191 Built-in functions
11192 ------------------
11194 - The second argument to apply() can now be any sequence, not just a
11195 tuple.
11197 Built-in types
11198 --------------
11200 - Lists have a new method: L1.extend(L2) is equivalent to the common
11201 idiom L1[len(L1):] = L2.
11203 - Better error messages when a sequence is indexed with a non-integer.
11205 - Bettter error message when calling a non-callable object (include
11206 the type in the message).
11208 Python services
11209 ---------------
11211 - New version of cPickle.c fixes some bugs.
11213 - pickle.py: improved instantiation error handling.
11215 - code.py: reworked quite a bit.  New base class
11216 InteractiveInterpreter and derived class InteractiveConsole.  Fixed
11217 several problems in compile_command().
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).
11222 - pyclbr.py: support submodules of packages.
11224 String Services
11225 ---------------
11227 - StringIO.py: raise the right exception (ValueError) for attempted
11228 I/O on closed StringIO objects.
11230 - re.py: fixed a bug in subn(), which caused .groups() to fail inside
11231 the replacement function called by sub().
11233 - The struct module has a new format 'P': void * in native mode.
11235 Generic OS Services
11236 -------------------
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).
11243 - os.path: normpath(".//x") should return "x", not "/x".
11245 - getpass.py: fall back on default_getpass() when sys.stdin.fileno()
11246 doesn't work.
11248 - tempfile.py: regenerate the template after a fork() call.
11250 Optional OS Services
11251 --------------------
11253 - In the signal module, disable restarting interrupted system calls
11254 when we have siginterrupt().
11256 Debugger
11257 --------
11259 - No longer set __args__; this feature is no longer supported and can
11260 affect the debugged code.
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.
11268 Profiler
11269 --------
11271 - Changes so that JPython can use it.  Also fix the calibration code
11272 so it actually works again
11274 Internet Protocols and Support
11275 ------------------------------
11277 - imaplib.py: new version from Piers Lauder.
11279 - smtplib.py: change sendmail() method to accept a single string or a
11280 list or strings as the destination (commom newbie mistake).
11282 - poplib.py: LIST with a msg argument fixed.
11284 - urlparse.py: some optimizations for common case (http).
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).
11290 Internet Data handling
11291 ----------------------
11293 - sgmllib.py: support tags with - or . in their name.
11295 - mimetypes.py: guess_type() understands 'data' URLs.
11297 Restricted Execution
11298 --------------------
11300 - The classes rexec.RModuleLoader and rexec.RModuleImporter no
11301 longer exist.
11303 Tkinter
11304 -------
11306 - When reporting an exception, store its info in sys.last_*.  Also,
11307 write all of it to stderr.
11309 - Added NS, EW, and NSEW constants, for grid's sticky option.
11311 - Fixed last-minute bug in 1.5.2a1 release: need to include "mytime.h".
11313 - Make bind variants without a sequence return a tuple of sequences
11314 (formerly it returned a string, which wasn't very convenient).
11316 - Add image commands to the Text widget (these are new in Tk 8.0).
11318 - Added new listbox and canvas methods: {xview,yview}_{scroll,moveto}.)
11320 - Improved the thread code (but you still can't call update() from
11321 another thread on Windows).
11323 - Fixed unnecessary references to _default_root in the new dialog
11324 modules.
11326 - Miscellaneous problems fixed.
11329 Windows General
11330 ---------------
11332 - Call LoadLibraryEx(..., ..., LOAD_WITH_ALTERED_SEARCH_PATH) to
11333 search for dependent dlls in the directory containing the .pyd.
11335 - In debugging mode, call DebugBreak() in Py_FatalError().
11337 Windows Installer
11338 -----------------
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.
11344 Test Suite
11345 ----------
11347 - test_long.py: new test for long integers, by Tim Peters.
11349 - regrtest.py: improved so it can be used for other test suites as
11350 well.
11352 - test_strftime.py: use re to compare test results, to support legal
11353 variants (e.g. on Linux).
11355 Tools and Demos
11356 ---------------
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).
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.
11368 - Much improved (and smaller!) version of Tools/scripts/mailerdaemon.py.
11370 Python/C API
11371 ------------
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.
11378 - Addition to the buffer API to differentiate access to bytes and
11379 8-bit characters (in anticipation of Unicode characters).
11381 - New argument parsing format t# ("text") to indicate 8-bit
11382 characters; s# simply means 8-bit bytes, for backwards compatibility.
11384 - New object type, bufferobject.c is an example and can be used to
11385 create buffers from memory.
11387 - Some support for 64-bit longs, including some MS platforms.
11389 - Many calls to fprintf(stderr, ...) have been replaced with calls to
11390 PySys_WriteStderr(...).
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()).
11397 - New APIs PyLong_FromVoidPtr() and PyLong_AsVoidPtr().
11399 - Renamed header file "thread.h" to "pythread.h".
11401 - The code string of code objects may now be anything that supports the
11402 buffer API.
11405 ======================================================================
11408 From 1.5.1 to 1.5.2a1
11409 =====================
11411 General
11412 -------
11414 - When searching for the library, a landmark that is a compiled module
11415 (string.pyc or string.pyo) is also accepted.
11417 - When following symbolic links to the python executable, use a loop
11418 so that a symlink to a symlink can work.
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.
11424 - New and improved Misc/python-mode.el (Python mode for Emacs).
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.
11430 Miscellaneous fixed bugs
11431 ------------------------
11433 - All patches on the patch page have been integrated.  (But much more
11434 has been done!)
11436 - Several memory leaks plugged (e.g. the one for classes with a
11437 __getattr__ method).
11439 - Removed the only use of calloc().  This triggered an obscure bug on
11440 multiprocessor Sparc Solaris 2.6.
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).
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).
11448 Documentation
11449 -------------
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.
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/.)
11461 - Added Misc/Porting -- a mini-FAQ on porting to a new platform.
11463 Ports and build procedure
11464 -------------------------
11466 - The BeOS port is now integrated.  Courtesy Chris Herborth.
11468 - Symbol files for FreeBSD 2.x and 3.x have been contributed
11469 (Lib/plat-freebsd[23]/*).
11471 - Support HPUX 10.20 DCE threads.
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.
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.
11480 - Other miscellaneous improvements to the configure script and
11481 Makefiles.
11483 - The test suite now uses a different sound sample.
11485 Built-in functions
11486 ------------------
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.)
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.)
11496 - Experimental feature in getattr(): a third argument can specify a
11497 default (instead of raising AttributeError).
11499 - Implement round() slightly different, so that for negative ndigits
11500 no additional errors happen in the last step.
11502 - The open() function now adds the filename to the exception when it
11503 fails.
11505 Built-in exceptions
11506 -------------------
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.
11515 Built-in types
11516 --------------
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).
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!
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.
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 :-( ).
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 .)
11545 Python services
11546 ---------------
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).
11552 - Generalized test/regrtest.py so that it is useful for testing other
11553 packages.
11555 - The ihooks.py module now understands package imports.
11557 - In code.py, add a class that subsumes Fredrik Lundh's
11558 PythonInterpreter class.  The interact() function now uses this.
11560 - In rlcompleter.py, in completer(), return None instead of raising an
11561 IndexError when there are no more completions left.
11563 - Fixed the marshal module to test for certain common kinds of invalid
11564 input.  (It's still not foolproof!)
11566 - In the operator module, add an alias (now the preferred name)
11567 "contains" for "sequenceincludes".
11569 String Services
11570 ---------------
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!).
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.
11579 - In cStringIO, add better argument type checking and support the
11580 readonly 'closed' attribute (like regular files).
11582 - In the struct module, unsigned 1-2 byte sized formats no longer
11583 result in long integer values.
11585 Miscellaneous services
11586 ----------------------
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!
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).
11598 - Some restructuring and generalization done to cmd.py.
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__'.
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).
11608 Generic OS Services
11609 -------------------
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'!
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.
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.
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).
11630 Optional OS Services
11631 --------------------
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.
11638 - In whichdb.py, support byte-swapped dbhash (bsddb) files.
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.)
11644 Unix Services
11645 -------------
11647 - In the termios module, in tcsetattr(), initialize the structure vy
11648 calling tcgetattr().
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().
11654 - In the syslog module, make the default facility more intuitive
11655 (matching the docs).
11657 Debugger
11658 --------
11660 - In pdb.py, support for setting breaks on files/modules that haven't
11661 been loaded yet.
11663 Internet Protocols and Support
11664 ------------------------------
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.
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.
11680 - The smtplib.py module now supports ESMTP and has improved standard
11681 compliance, for picky servers.
11683 - Improved imaplib.py.
11685 - Fixed UDP support in SocketServer.py (it never worked).
11687 - Fixed a small bug in CGIHTTPServer.py.
11689 Internet Data handling
11690 ----------------------
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.
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.
11703 - Some restructuring and generalization done to multifile.py; support
11704 a 'seekable' flag.
11706 Restricted Execution
11707 --------------------
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).
11713 Tkinter
11714 -------
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.
11723 - An interactive interpreter that uses readline and Tkinter no longer
11724 uses up all available CPU time.
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.)
11730 - New demos in Demo/tkinter/guido/: brownian.py, redemo.py, switch.py.
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.
11735 - Allow binding of Tcl commands (given as a string).
11737 - Some minor speedups; replace explicitly coded getint() with int() in
11738 most places.
11740 - In FileDialog.py, remember the directory of the selected file, if
11741 given.
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.
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.
11754 Windows General
11755 ---------------
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?).
11762 Windows Library
11763 ---------------
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.
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).
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.
11777 - Added a table of WSA error codes to socket.py.
11779 - In the select module, put the (huge) file descriptor arrays on the
11780 heap.
11782 - The getpass module now raises KeyboardInterrupt when it sees ^C.
11784 - In mailbox.py, fix tell/seek when using files opened in text mode.
11786 - In rfc822.py, fix tell/seek when using files opened in text mode.
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.
11793 Windows Installer
11794 -----------------
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.
11800 Windows Tools
11801 -------------
11803 - Several improvements to freeze specifically for Windows.
11805 Windows Build Procedure
11806 -----------------------
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.
11812 - New project files for Windows 3.1 port by Jim Ahlstrom.
11814 - Got rid of the obsolete subdirectory PC/setup_nt/.
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).
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++.
11827 Tools and Demos
11828 ---------------
11830 - New script nm2def.py by Marc-Andre Lemburg, to construct
11831 PC/python_nt.def automatically (some hand editing still required).
11833 - New tool ndiff.py: Tim Peters' text diffing tool.
11835 - Various and sundry improvements to the freeze script.
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.
11840 - Some generalizations in the webchecker code.  There's now a
11841 primnitive gui for websucker.py: wsgui.py.  (In Tools/webchecker/.)
11843 - The ftpmirror.py script now handles symbolic links properly, and
11844 also files with multiple spaces in their names.
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.
11849 Python/C API
11850 ------------
11852 - Added missing prototypes for PyEval_CallFunction() and
11853 PyEval_CallMethod().
11855 - New macro PyList_SET_ITEM().
11857 - New macros to access object members for PyFunction, PyCFunction
11858 objects.
11860 - New APIs PyImport_AppendInittab() an PyImport_ExtendInittab() to
11861 dynamically add one or many entries to the table of built-in modules.
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.)
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.)
11871 - New APIs for conversion between Python longs and C 'long long' if
11872 your compiler supports it.
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.)
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.
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.)
11887 - Reformatted abstract.c to give it a more familiar "look" and fixed
11888 many error checking bugs.
11890 - Add NULL pointer checks to all calls of a C function through a type
11891 object and extensions (e.g. nb_add).
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).
11899 - Fixed a very old bug in the parsing of "O?" format specifiers.
11902 ======================================================================
11905 ========================================
11906 ==> Release 1.5.1 (October 31, 1998) <==
11907 ========================================
11909 From 1.5 to 1.5.1
11910 =================
11912 General
11913 -------
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.
11923 - All bugs noted on the errors page (and many unnoted) are fixed.  All
11924 new bugs take their places.
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.
11933 Syntax change
11934 -------------
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.
11941 Import and module handling
11942 --------------------------
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.
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.
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).
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.
11962 Parser/tokenizer changes
11963 ------------------------
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.)
11971 - Return unsigned characters from tok_nextc(), so '\377' isn't
11972 mistaken for an EOF character.
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.
11979 Tools, demos and miscellaneous files
11980 ------------------------------------
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!
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).
11991 - Some new demo programs:
11993         Demo/tkinter/guido/paint.py -- Dave Mitchell
11994         Demo/sockets/unixserver.py -- Piet van Oostrum
11995         
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.
12002 - Version 1.0 of the faq wizard is included (only very small changes
12003 since version 0.9.0).
12005 - New feature for the ftpmirror script: when removing local files
12006 (i.e., only when -r is used), do a recursive delete.
12008 Configuring and building Python
12009 -------------------------------
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.
12014 - Some changes because gcc on SGI doesn't support '-all'.
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).
12020 - Fix the bug where the '# dgux is broken' comment in the Makefile
12021 tripped over Make on some platforms.
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.
12027 - Deleted some Makefile targets only used by the (long obsolete)
12028 gMakefile hacks.
12030 Extension modules
12031 -----------------
12033 - Performance and threading improvements to the socket and bsddb
12034 modules, by Christopher Lindblad of Infoseek.
12036 - Added operator.__not__ and operator.not_.
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.
12042 - Fixed a number of small bugs in the cPickle module.
12044 - Changed find() and rfind() in the strop module so that
12045 find("x","",2) returns -1, matching the implementation in string.py.
12047 - In the time module, be more careful with the result of ctime(), and
12048 test for HAVE_MKTIME before usinmg mktime().
12050 - Doc strings contributed by Mitch Chapman to the termios, pwd, gdbm
12051 modules.
12053 - Added the LOG_SYSLOG constant to the syslog module, if defined.
12055 Standard library modules
12056 ------------------------
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.
12064 - New standard library modules:
12066         threading -- GvR and the thread-sig
12067                 Java style thread objects -- USE THIS!!!
12069         getpass -- Piers Lauder
12070                 simple utilities to prompt for a password and to
12071                 retrieve the current username
12073         imaplib -- Piers Lauder
12074                 interface for the IMAP4 protocol
12076         poplib -- David Ascher, Piers Lauder
12077                 interface for the POP3 protocol
12079         smtplib -- Dragon De Monsyne
12080                 interface for the SMTP protocol
12082 - Some obsolete modules moved to a separate directory (Lib/lib-old)
12083 which is *not* in the default module search path:
12085         Para
12086         addpack
12087         codehack
12088         fmt
12089         lockfile
12090         newdir
12091         ni
12092         rand
12093         tb
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.
12100 - Interface change in the copy module: a __deepcopy__ method is now
12101 called with the memo dictionary as an argument.
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).
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.
12113 - New version of the xmllib module (this time with a test suite!) by
12114 Sjoerd Mullender.
12116 - Added debugging code to the telnetlib module, to be able to trace
12117 the actual traffic.
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).
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).
12131 - New command supported by the ftplib module: rmd(); also fixed some
12132 minor bugs.
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.
12138 - The tempfile module now recovers when os.getcwd() raises an
12139 exception.
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()).
12145 - Better default seed in the whrandom module, courtesy Andrew Kuchling.
12147 - Fix slow close() in shelve module.
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.
12154 - Added a rmtree() function to the copy module.
12156 - Fixed several typos in the pickle module.  Also fixed problems when
12157 unpickling in restricted execution environments.
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).
12165 - Some performance tweaks by Jeremy Hylton to the gzip module.
12167 - Fixed a bug in the merge order of dictionaries in the ConfigParser
12168 module.  Courtesy Barry Warsaw.
12170 - In the multifile module, support the optional second parameter to
12171 seek() when possible.
12173 - Several fixes to the gopherlib module by Lars Marius Garshol.  Also, 
12174 urlparse now correctly handles Gopher URLs with query strings.
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.
12180 - The httplib module is more robust when servers send a short response 
12181 -- courtesy Tim O'Malley.
12183 Tkinter and friends
12184 -------------------
12186 - Various typos and bugs fixed.
12188 - New module Tkdnd implements a drag-and-drop protocol (within one
12189 application only).
12191 - The event_*() widget methods have been restructured slightly -- they
12192 no longer use the default root.
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 a 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).
12201 - Variable objects now have trace methods to interface to Tcl's
12202 variable tracing facilities.
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.
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.
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.
12218 - Tcl_Finalize() is now registered as a Python low-level exit handle,
12219 so Tcl will be finalized when Python exits.
12221 The Python/C API
12222 ----------------
12224 - New function PyThreadState_GetDict() returns a per-thread dictionary
12225 intended for storing thread-local global variables.
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.
12231 - New function PyObject_Not(x) calculates (not x) according to Python's 
12232 standard rules (basically, it negates the outcome PyObject_IsTrue(x).
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).
12239 - New function PyImport_ExecCodeModuleEx(), which extends
12240 PyImport_ExecCodeModule() by adding an extra parameter to pass it the
12241 true file.
12243 - New functions Py_GetPythonHome() and Py_SetPythonHome(), intended to
12244 allow embedded applications to force a different value for PYTHONHOME.
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.
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.
12254 Miscellaneous minor changes and bug fixes
12255 -----------------------------------------
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.
12261 - Sped up int(), long(), float() a bit.
12263 - Fixed a bug in list.sort() that would occasionally dump core.
12265 - Fixed a bug in PyNumber_Power() that caused numeric arrays to fail
12266 when taken tothe real power.
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.
12273 - Performance hack by Vladimir Marangozov for stack frame creation.
12275 - Make sure setvbuf() isn't used unless HAVE_SETVBUF is defined.
12277 Windows 95/NT
12278 -------------
12280 - The .lib files are now part of the distribution; they are collected
12281 in the subdirectory "libs" of the installation directory.
12283 - The extension modules (.pyd files) are now collected in a separate
12284 subdirectory of the installation directory named "DLLs".
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).
12294 ======================================================================
12297 =====================================
12298 ==> Release 1.5 (January 3, 1998) <==
12299 =====================================
12302 From 1.5b2 to 1.5
12303 =================
12305 - Newly documentated module: BaseHTTPServer.py, thanks to Greg Stein.
12307 - Added doc strings to string.py, stropmodule.c, structmodule.c,
12308 thanks to Charles Waldman.
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).
12318 - New module: telnetlib.py (a simple telnet client library).
12320 - New tool: Tools/versioncheck/, by Jack Jansen.
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.
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.
12330 - The re module and its documentation are up to date with the latest
12331 version released to the string-sig (Dec. 22).
12333 - Stop test_grp.py from failing when the /etc/group file is empty
12334 (yes, this happens!).
12336 - Fix bug in integer conversion (mystrtoul.c) that caused
12337 4294967296==0 to be true!
12339 - The VC++ 4.2 project file should be complete again.
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).
12346 - Fixed some bugs in the FAQ wizard, and converted it to use re
12347 instead of regex.
12349 - Fixed a mysteriously undetected error in dlmodule.c (it was using a
12350 totally bogus routine name to raise an exception).
12352 - Fixed bug in import.c which wasn't using the new "dos-8x3" name yet.
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.
12358 - Fixed a bug in the new format string error checking in getargs.c.
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).
12364 - Fixed lib-tk/SimpleDialog.py to keep the dialog visible even if the
12365 parent window is not (Skip Montanaro).
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.
12373 ======================================================================
12376 From 1.5b1 to 1.5b2
12377 ===================
12379 - Fixed a bug in cPickle.c that caused it to crash right away because
12380 the version string had a different format.
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.
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).
12396 - The built-in function isinstance(x, y) now also succeeds when y is
12397 a type object and type(x) is y.
12399 - repr() and str() of class and instance objects now reflect the
12400 package/module in which the class is defined.
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.)
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.)
12412 - New command line option "-x" to skip the first line of the script;
12413 handy to make executable scripts on non-Unix platforms.
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.
12419 - The Windows installer now installs in the "Program Files" folder on
12420 the proper volume by default.
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).
12430 - Lots of improvements to emacs-mode.el again.  See Barry's web page:
12431 http://www.python.org/ftp/emacs/pmdetails.html.
12433 - Lots of improvements and additions to the library reference manual;
12434 many by Fred Drake.
12436 - Doc strings for the following modules: rfc822.py, posixpath.py,
12437 ntpath.py, httplib.py.  Thanks to Mitch Chapman and Charles Waldman.
12439 - Some more regression testing.
12441 - An optional 4th (maxsplit) argument to strop.replace().
12443 - Fixed handling of maxsplit in string.splitfields().
12445 - Tweaked os.environ so it can be pickled and copied.
12447 - The portability problems caused by indented preprocessor commands
12448 and C++ style comments should be gone now.
12450 - In random.py, added Pareto and Weibull distributions.
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.
12456 - Some improvements to the _tkinter build line suggested by Case Roole.
12458 - A full suite of platform specific files for NetBSD 1.x, submitted by 
12459 Anders Andersen.
12461 - New Solaris specific header STROPTS.py.
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).
12467 - Changed the default mode for directories to be group-writable when
12468 the installation process creates them.
12470 - Check for pthread support in "-l_r" for FreeBSD/NetBSD, and support
12471 shared libraries for both.
12473 - Support FreeBSD and NetBSD in posixfile.py.
12475 - Support for the "event" command, new in Tk 4.2.  By Case Roole.
12477 - Add Tix_SafeInit() support to tkappinit.c.
12479 - Various bugs fixed in "re.py" and "pcre.c".
12481 - Fixed a bug (broken use of the syntax table) in the old "regexpr.c".
12483 - In frozenmain.c, stdin is made unbuffered too when PYTHONUNBUFFERED
12484 is set.
12486 - Provide default blocksize for retrbinary in ftplib.py (Skip
12487 Montanaro).
12489 - In NT, pick the username up from different places in user.py (Jeff
12490 Bauer).
12492 - Patch to urlparse.urljoin() for ".." and "..#1", Marc Lemburg.
12494 - Many small improvements to Jeff Rush' OS/2 support.
12496 - ospath.py is gone; it's been obsolete for so many years now...
12498 - The reference manual is now set up to prepare better HTML (still
12499 using webmaker, alas).
12501 - Add special handling to /Tools/freeze for Python modules that are
12502 imported implicitly by the Python runtime: 'site' and 'exceptions'.
12504 - Tools/faqwiz 0.8.3 -- add an option to suppress URL processing
12505 inside <PRE>, by "Scott".
12507 - Added ConfigParser.py, a generic parser for sectioned configuration
12508 files.
12510 - In _localemodule.c, LC_MESSAGES is not always defined; put it
12511 between #ifdefs.
12513 - Typo in resource.c: RUSAGE_CHILDERN -> RUSAGE_CHILDREN.
12515 - Demo/scripts/newslist.py: Fix the way the version number is gotten
12516 out of the RCS revision.
12518 - PyArg_Parse[Tuple] now explicitly check for bad characters at the
12519 end of the format string.
12521 - Revamped PC/example_nt to support VC++ 5.x.
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.
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 :-( ).
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).
12535 - In string.atof(), don't fail when the "re" module is unavailable.
12536 Plug the ensueing security leak by supplying an empty __builtins__
12537 directory to eval().
12539 - A bunch of small fixes and improvements to Tkinter.py.
12541 - Fixed a buffer overrun in PC/getpathp.c.
12544 ======================================================================
12547 From 1.5a4 to 1.5b1
12548 ===================
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.
12557 - sys.ps1 and sys.ps2 can now arbitrary objects; their str() is
12558 evaluated for the prompt.
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).
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).
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).
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.
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.)
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.
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.
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.
12602 - New, RFC-822 conformant parsing of email addresses and address lists
12603 in the rfc822 module, courtesy Ben Escoto.
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.
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.
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!)
12627 - Memory leak plugged in Py_BuildValue when building a dictionary.
12629 - Shared modules can now live inside packages (hierarchical module
12630 namespaces).  No changes to the shared module itself are needed.
12632 - Improved policy for __builtins__: this is a module in __main__ and a
12633 dictionary everywhere else.
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.
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.
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.
12650 - New module xmllib, to parse XML files.  By Sjoerd Mullender.
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().
12657 - Fixed most occurrences of fatal errors due to missing thread state.
12659 - For vgrind (a flexible source pretty printer) fans, there's a simple
12660 Python definition in Misc/vgrindefs, courtesy Neale Pickett.
12662 - Fixed memory leak in exec statement.
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.
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.
12673 - Fixed some strange exceptions in __del__ methods in library modules
12674 (e.g. urllib).  This happens because the builtin 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.
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.
12685 - The warning about a thread still having a frame now only happens in
12686 verbose mode.
12688 - Change the signal finialization so that it also resets the signal
12689 handlers.  After this has been called, our signal handlers are no
12690 longer active!
12692 - New version of tokenize.py (by Ka-Ping Yee) recognizes raw string
12693 literals.  There's now also a test fort this module.
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.
12699 - New module reconvert translates old-style (regex module) regular
12700 expressions to new-style (re module, Perl-style) regular expressions.
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.
12706 - The (very old, backwards compatibility) regexp.py module has been
12707 deleted.
12709 - Restricted execution (rexec): added the pcre module (support for the
12710 re module) to the list of trusted extension modules.
12712 - New version of Jim Fulton's CObject object type, adds
12713 PyCObject_FromVoidPtrAndDesc() and PyCObject_GetDesc() APIs.
12715 - Some patches to Lee Busby's fpectl mods that accidentally didn't
12716 make it into 1.5a4.
12718 - In the string module, add an optional 4th argument to count(),
12719 matching find() etc.
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.
12725 - The str() function for class objects now returns
12726 "modulename.classname" instead of returning the same as repr().
12728 - The parsing of \xXX escapes no longer relies on sscanf().
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!)
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.
12739 - Fixed Barry's mess-up with {}.get(), and added test cases for it.
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.
12746 ======================================================================
12749 From 1.5a3 to 1.5a4
12750 ===================
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).
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.
12760 - struct module: ignore most whitespace in format strings.
12762 - urllib.py: close the socket and temp file in URLopener.retrieve() so
12763 that multiple retrievals using the same connection work.
12765 - All standard exceptions are now classes by default; use -X to make
12766 them strings (for backward compatibility only).
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.
12774 - Three new C API functions:
12776   - int PyErr_GivenExceptionMatches(obj1, obj2)
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
12781   - int PyErr_ExceptionMatches(obj)
12783     Higher level wrapper around PyErr_GivenExceptionMatches() which uses
12784     PyErr_Occurred() as obj1.  This will be the more commonly called
12785     function.
12787   - void PyErr_NormalizeException(typeptr, valptr, tbptr)
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:
12793     1. if instance is of the type, or a class derived from type, it does
12794        nothing.
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.
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.
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.)
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.
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.
12823 - configure: Added configuration tests for presence of alarm(),
12824 pause(), and getpwent().
12826 - Doc/Makefile: changed latex2html targets.
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.
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_IsInitalized() which checks
12835 whether we are already initialized (in case you want to leave things
12836 as they were).
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.
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.
12847 - Added reop to PC/config.c
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.
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).
12856 - urllib.py: Interpret three slashes in file: URL as local file (for
12857 Netscape on Windows/Mac).
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 reproducable because it requires a later call to
12862 __getinitargs__() to return a tuple that happens to be allocated at
12863 the same address.)
12865 - Added definition of AR to toplevel Makefile.  Renamed @buildno temp
12866 file to buildno1.
12868 - Moved Include/assert.h to Parser/assert.h, which seems to be the
12869 only place where it's needed.
12871 - Tweaked the dictionary lookup code again for some more speed
12872 (Vladimir Marangozov).
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.
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.
12883 - Removed the old FAQ from the distribution.  You now have to get it
12884 from the web!
12886 - Removed the PC/make_nt.in file from the distribution; it is no
12887 longer needed.
12889 - Changed the build sequence so that shared modules are built last.
12890 This fixes things for AIX and doesn't hurt elsewhere.
12892 - Improved test for GNU MP v1 in mpzmodule.c
12894 - fileobject.c: ftell() on Linux discards all buffered data; changed
12895 read() code to use lseek() instead to get the same effect
12897 - configure.in, configure, importdl.c: NeXT sharedlib fixes
12899 - tupleobject.c: PyTuple_SetItem asserts refcnt==1
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.
12906 - importdl.c, configure*: set sharedlib extensions properly for NeXT
12908 - configure*, Makefile.in, Modules/Makefile.pre.in: AIX shared libraries
12909 fixed; moved addition of PURIFY to LINKCC to configure
12911 - reopmodule.c, regexmodule.c, regexpr.c, zlibmodule.c: needed casts
12912 added to shup up various compilers.
12914 - _tkinter.c: removed buggy mac #ifndef
12916 - Doc: various Mac documentation changes, added docs for 'ic' module
12918 - PC/make_nt.in: deleted
12920 - test_time.py, test_strftime.py: tweaks to catch %Z (which may return
12923 - test_rotor.py: print b -> print `b`
12925 - Tkinter.py: (tagOrId) -> (tagOrId,)
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).
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:....
12935 - Tools/webchecker/: some small changes to webchecker.py; added
12936 websucker.py (a simple web site mirroring script).
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.
12942 - Tools/scripts/logmerge.py: print the author, too.
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).
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.
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".
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.
12978 - The posix module now has a strerror() function which translates an
12979 error code to a string.
12981 - The emacs.py module (which was long obsolete) has been removed.
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/.
12987 - The install-sh script is installed with the other configuration
12988 specific files (in the config/ subdirectory).
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.
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.
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.
13004 - Most extension modules now raise class-based exceptions (except when
13005 -X is used).
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.
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.
13013 - New module mimetypes.py will guess a MIME type from a filename's
13014 extension.
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.
13020 - urllib.py is now threadsafe -- it now uses re instead of regex, and
13021 sys.exc_info() instead of sys.exc_{type,value}.
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().
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).
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.
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)
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.
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.
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!
13055         Tip: to use the tab key as the completion key, call
13057             readline.parse_and_bind("tab: complete")
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 contains 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.
13065 - Fixed Demo/tkinter/matt/canvas-moving-or-creating.py: change bind()
13066 to tag_bind() so it works again.
13068 - The pystone script is now a standard library module.  Example use:
13069 "import test.pystone; test.pystone.main()".
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. :-)
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.
13080 - pprint.py: correctly emit trailing "," in singleton tuples.
13082 - _tkinter.c: export names for its type objects, TkappType and
13083 TkttType.
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!
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.
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.
13109 - The % operator on string objects now allows arbitrary nested parens
13110 in a %(...)X style format.  (Brad Howes)
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.)
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).
13123 - The 'p' format in the struct extension module alloded to above is
13124 new in 1.5a4.
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).
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.
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.)
13144 - Added casts and changed some return types in regexpr.c to avoid
13145 compiler warnings or errors on some platforms.
13147 - The AIX build tools for shared libraries now supports VPATH.  (Donn
13148 Cave)
13150 - By default, disable the "portable" multimedia modules audioop,
13151 imageop, and rgbimg, since they don't work on 64-bit platforms.
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).
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.
13161 - Various speedups suggested by Fredrik Lundh, Marc-Andre Lemburg,
13162 Vladimir Marangozov, and others.
13164 - Added os.altsep; this is '/' on DOS/Windows, and None on systems
13165 with a sane filename syntax.
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...
13171 - The obsolete exception AccessError is now really gone.
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.
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).
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.
13188 - In ftplib.py, changed most methods to return their status (even when
13189 it is always "200 OK") rather than swallowing it.
13191 - main() now calls setlocale(LC_ALL, ""), if setlocale() and
13192 <locale.h> are defined.
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.
13199 ======================================================================
13202 From 1.4 to 1.5a3
13203 =================
13205 Security
13206 --------
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.
13211 Miscellaneous
13212 -------------
13214 - Because of various (small) incompatible changes in the Python
13215 bytecode interpreter, the magic number for .pyc files has changed
13216 again.
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.
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.
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.
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.
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.
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?).
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.
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.
13265 - All traces of support for the long dead access statement have been
13266 removed from the sources.
13268 - Plugged the two-byte memory leak in the tokenizer when reading an
13269 interactive EOF.
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.
13291 Performance
13292 -----------
13294 - It's much faster (almost twice for pystone.py -- see
13295 Tools/scripts).  See the entry on string interning below.
13297 - Some speedup by using separate free lists for method objects (both
13298 the C and the Python variety) and for floating point numbers.
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).
13304 - Significant speedup by inlining some common opcodes for common operand 
13305 types (e.g.  i+i, i-i, and list[i]).  Fredrik Lundh.
13307 - Small speedup by reordering the method tables of some common
13308 objects (e.g. list.append is now first).
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.
13317 Documentation
13318 -------------
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.
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.
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...
13340 Language changes
13341 ----------------
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.)
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.)
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!
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.
13373 - Duplicate keyword arguments are now detected at compile time;
13374 f(a=1,a=2) is now a syntax error.
13377 Changes to builtin features
13378 ---------------------------
13380 - There's a new exception FloatingPointError (used only by Lee Busby's
13381 patches to catch floating point exceptions, at the moment).
13383 - The obsolete exception ConflictError (presumably used by the long
13384 obsolete access statement) has been deleted.
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.
13389 - There's a new variable sys.executable, pointing to the executable file 
13390 for the Python interpreter.
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.
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.
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.
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.)
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.
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.
13438 - The intrinsic function dir() is much smarter; it looks in __dict__,
13439 __members__ and __methods__.
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).
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.
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.
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.
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.)
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()).
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.
13482 - The complex() function now looks for a __complex__() method on class
13483 instances before giving up.
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.)
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 :-)
13496 - The hash() function computes better hashes for several data types,
13497 including strings, floating point numbers, and complex numbers.
13500 New extension modules
13501 ---------------------
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.
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.
13515 - New module readline; see the "miscellaneous" section above.
13517 - New Unix extension module resource.c, by Jeremy Hylton, provides
13518 access to getrlimit(), getrusage(), setrusage(), getpagesize(), and
13519 related symbolic constants.
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.
13527 Changes in extension modules
13528 ----------------------------
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).
13541 - The array module supports uppercase format codes for unsigned data
13542 formats (like the struct module).
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.)
13548 - The extension modules dbm, gdbm and bsddb now check that the
13549 database is still open before making any new calls.
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.)
13555 - The gdbm module now supports a sync() method.
13557 - The socket module now has some new functions: getprotobyname(), and
13558 the set {ntoh,hton}{s,l}().
13560 - Various modules now export their type object: socket.SocketType,
13561 array.ArrayType.
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().
13567 - The pthread support for the thread module now works on most platforms.
13569 - STDWIN is now officially obsolete.  Support for it will eventually
13570 be removed from the distribution.
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.)
13576 - audioop.c: added a ratecv() function; better handling of overflow in
13577 add().
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.
13586 - A new version of the al (audio library) module for SGI was
13587 contributed by Sjoerd Mullender.
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.
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.
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.
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).
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.
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.
13619 New library modules
13620 -------------------
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.
13631 - New module gzip.py; see zlib above.
13633 - New module keyword.py exports knowledge about Python's built-in
13634 keywords.  (New version by Ka-Ping Yee.)
13636 - New module pprint.py (with documentation) which supports
13637 pretty-printing of lists, tuples, & dictionaries recursively.  By Fred
13638 Drake.
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.)
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.
13652 Changes in library modules
13653 --------------------------
13655 - Module codehack.py is now completely obsolete.
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.
13663 - A new helper module, copy_reg.py, is provided to register extensions
13664 to the pickling code.
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.
13670 - In ihooks.py, ModuleLoader.load_module() now closes the file under
13671 all circumstances.
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.)
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.
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).
13696 - BaseHTTPModule.py: treat all HTTP/1.* versions the same.
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.
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).
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.
13711 - The StringIO.StringIO class now supports readline(nbytes).  (Lars 
13712 Wirzenius.)  (Of course, you should be using cStringIO for performance.)
13714 - UserDict.py supports the new dictionary methods as well.
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.
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.
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).
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".
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.
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.
13750 - The python debugger (pdb.py, and its base class bdb.py) now support
13751 conditional breakpoints.  See the docs.
13753 - The modules base64.py, uu.py and quopri.py can now be used as simple
13754 command line utilities.
13756 - Various small fixes to the nntplib.py module that I can't bother to
13757 document in detail.
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.
13763 - mailbox.py: Added BabylMailbox.  Improved the way the mailbox is
13764 gotten from the environment.
13766 - Many more modules now correctly open files in binary mode when this
13767 is necessary on non-Unix platforms.
13769 - The copying functions in the undocumented module shutil.py are
13770 smarter.
13772 - The Writer classes in the formatter.py module now have a flush()
13773 method.
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...
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.
13786 - The imghdr.py module recognizes new image types: BMP, PNG.
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.)
13796 - The string.join() function now accepts any sequence argument, not
13797 just lists and tuples.
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.
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.)
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.
13815 Changes to the build process
13816 ----------------------------
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.)
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).
13836 - As far as I can tell, neither gcc -Wall nor the Microsoft compiler
13837 emits a single warning any more when compiling Python.
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.
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.
13850 - The support for shared libraries under AIX is now simpler and more
13851 robust.  Thanks to Vladimir Marangozov for revamping his own patches!
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.
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.
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).
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.
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).
13876 - Many changes in Doc/Makefile; amongst others, latex2html is now used
13877 to generate HTML from all latex documents.
13880 Change to the Python/C API
13881 --------------------------
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 :-)
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.
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.
13902 - New API functions PyLong_FromUnsignedLong() and
13903 PyLong_AsUnsignedLong().
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.
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.
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.
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.
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()).
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.
13937 - There is now explicit per-thread state.  (Inspired by, but not the
13938 same as, Greg Stein's free threading patches.)
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}().
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_.
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.)
13955 - New C API PyImport_Import() which uses whatever __import__() hook
13956 that is installed for the current execution environment.  By Jim
13957 Fulton.
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.
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.
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.)
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).
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.
13979 - There's a new function, PyArg_ParseTupleAndKeywords(), which parses
13980 an argument list including keyword arguments.  Contributed by Geoff
13981 Philbrick.
13983 - PyArg_GetInt() is gone.
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.
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".
13995 Tkinter
13996 -------
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).
14002 - A patch by Craig McPheeters plugs the most obnoxious memory leaks,
14003 caused by command definitions referencing widget objects beyond their
14004 lifetime.
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.
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.
14017 - The Image class now has a configure method.
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.
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.
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.
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...)
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.)
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.
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.
14061 Tools and Demos
14062 ---------------
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.
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.
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.
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.
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.
14092 - New examples (Demo/extend) that show how to use the generic
14093 extension makefile (Misc/Makefile.pre.in).
14095 - Tools/scripts/h2py.py now supports C++ comments.
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.
14101 - Demo/classes/Rat.py completely rewritten by Sjoerd Mullender.
14104 Windows (NT and 95)
14105 -------------------
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).
14111 - See the note on the new module search path in the "Miscellaneous" section 
14112 above.
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.
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().
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.)
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.
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)).
14135 - The ntpath module (normally used as os.path) supports ~ to $HOME 
14136 expansion in expanduser().
14138 - The freeze tool now works on Windows.
14140 - See also the Tkinter category for a sad note on
14141 _tkinter.createfilehandler().
14143 - The truncate() method for file objects now works on Windows.
14145 - Py_Initialize() is no longer called when the DLL is loaded.  You
14146 must call it yourself.
14148 - The time module's clock() function now has good precision through
14149 the use of the Win32 API QueryPerformanceCounter().
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.
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.
14164 ======================================================================
14167 =====================================
14168 ==> Release 1.4 (October 25 1996) <==
14169 =====================================
14171 (Starting in reverse chronological order:)
14173 - Changed disclaimer notice.
14175 - Added SHELL=/bin/sh to Misc/Makefile.pre.in -- some Make versions
14176 default to the user's login shell.
14178 - In Lib/tkinter/Tkinter.py, removed bogus binding of <Delete> in Text
14179 widget, and bogus bspace() function.
14181 - In Lib/cgi.py, bumped __version__ to 2.0 and restored a truncated
14182 paragraph.
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.
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.
14193 - Version 2.83 of Misc/python-mode.el for Emacs is included.
14195 - In Modules/regexmodule.c, fixed symcomp() to correctly handle a new
14196 group starting immediately after a group tag.
14198 - In Lib/SocketServer.py, changed the mode for rfile to unbuffered.
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().
14204 - In Lib/tkinter/Tkinter.py, fixed Scale.get() to support floats.
14206 - In Lib/urllib.py, fix another case where openedurl wasn't set.
14208 (XXX Sorry, the rest is in totally random order.  No time to fix it.)
14210 - SyntaxError exceptions detected during code generation
14211 (e.g. assignment to an expression) now include a line number.
14213 - Don't leave trailing / or \ in script directory inserted in front of
14214 sys.path.
14216 - Added a note to Tools/scripts/classfix.py abouts its historical
14217 importance.
14219 - Added Misc/Makefile.pre.in, a universal Makefile for extensions
14220 built outside the distribution.
14222 - Rewritten Misc/faq2html.py, by Ka-Ping Yee.
14224 - Install shared modules with mode 555 (needed for performance on some
14225 platforms).
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.
14231 - bdb.py (and hence pdb.py) supports calling run() with a code object
14232 instead of a code string.
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.
14239 - Added default writer to constructor of NullFormatter class.
14241 - Use binary mode for socket.makefile() calls in ftplib.py.
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.
14249 - The test program for mailbox.py is now more useful.
14251 - Added getparamnames() to Message class in mimetools.py -- it returns
14252 the names of parameters to the content-type header.
14254 - Fixed a typo in ni that broke the loop stripping "__." from names.
14256 - Fix sys.path[0] for scripts run via pdb.py's new main program.
14258 - profile.py can now also run a script, like pdb.
14260 - Fix a small bug in pyclbr -- don't add names starting with _ when
14261 emulating from ... import *.
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.
14267 - Fixed embarrassing typo in shelve.py.
14269 - Added SliceType and EllipsisType to types.py.
14271 - In urllib.py, added handling for error 301 (same as 302); added
14272 geturl() method to get the URL after redirection.
14274 - Fixed embarrassing typo in xdrlib.py.  Also fixed typo in Setup.in
14275 for _xdrmodule.c and removed redundant #include from _xdrmodule.c.
14277 - Fixed bsddbmodule.c to add binary mode indicator on platforms that
14278 have it.  This should make it working on Windows NT.
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.
14284 - Added the sources for the NT installer script used for Python
14285 1.4beta3.  Not tested with this release, but better than nothing.
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.
14292 - dis.py will print the name of local variables referenced by local
14293 load/store/delete instructions.
14295 - Improved portability of SimpleHTTPServer module to non-Unix
14296 platform.
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.
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().
14308 - apply(classname, (), {}) now works even if the class has no
14309 __init__() method.
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.
14316 - Fixed bug in built-in complex() function which gave the wrong result
14317 for two real arguments.
14319 - Change the hash algorithm for strings -- the multiplier is now
14320 1000003 instead of 3, which gives better spread for short strings.
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.)
14326 - Added more symbols to the python_nt.def file.
14328 - When using GNU readline, set rl_readline_name to "python".
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.
14334 - Bumped the PYTHON_API_VERSION to 1006, due to the Ellipses ->
14335 Ellipsis name change.
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).
14342 - The reference manual is now maintained in FrameMaker.
14344 - Upgraded scripts Doc/partparse.py and Doc/texi2html.py.
14346 - Slight improvements to Doc/Makefile.
14348 - Added fcntl.lockf(). This should be used for Unix file locking
14349 instead of the posixfile module; lockf() is more portable.
14351 - The getopt module now supports long option names, thanks to Lars
14352 Wizenius.
14354 - Plenty of changes to Tkinter and Canvas, mostly due to Fred Drake
14355 and Nils Fischbeck.
14357 - Use more bits of time.time() in whrandom's default seed().
14359 - Performance hack for regex module's regs attribute.
14361 - Don't close already closed socket in socket module.
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.
14367 - Moved fallback definition for hypot() to Python/hypot.c.
14369 - Added fallback definition for strdup, in Python/strdup.c.
14371 - Fixed some bugs where a function would return 0 to indicate an error
14372 where it should return -1.
14374 - Test for error returned by time.localtime(), and rationalized its MS
14375 tests.
14377 - Added Modules/Setup.local file, which is processed after Setup.
14379 - Corrected bug in toplevel Makefile.in -- execution of regen script
14380 would not use the right PATH and PYTHONPATH.
14382 - Various and sundry NeXT configuration changes (sigh).
14384 - Support systems where libreadline needs neither termcap nor curses.
14386 - Improved ld_so_aix script and python.exp file (for AIX).
14388 - More stringent test for working <stdarg.h> in configure script.
14390 - Removed Demo/www subdirectory -- it was totally out of date.
14392 - Improved demos and docs for Fred Drake's parser module; fixed one
14393 typo in the module itself.
14396 =========================================
14397 ==> Release 1.4beta3 (August 26 1996) <==
14398 =========================================
14401 (XXX This is less readable that it should.  I promise to restructure
14402 it for the final 1.4 release.)
14405 What's new in 1.4beta3 (since beta2)?
14406 -------------------------------------
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.)
14413 - In urllib.urlopen(): HTTP URLs containing user:passwd@host are now
14414 handled correctly when using a proxy server.
14416 - In ntpath.normpath(): don't truncate to 8+3 format.
14418 - In mimetools.choose_boundary(): don't die when getuid() or getpid()
14419 aren't defined.
14421 - Module urllib: some optimizations to (un)quoting.
14423 - New module MimeWriter for writing MIME documents.
14425 - More changes to formatter module.
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.
14431 - New module whichdb recognizes dbm, gdbm and bsddb/dbhash files.
14433 - The Doc/Makefile targets have been reorganized somewhat to remove the 
14434 insistence on always generating PostScript.
14436 - The texinfo to html filter (Doc/texi2html.py) has been improved somewhat.
14438 - "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing 
14439 name conflict on the Mac.
14441 - Linking a module compiled with a different setting for Py_TRACE_REFS now 
14442 generates a linker error rather than a core dump.
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.
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).
14453 - Documentation for os.path.splitext() (== posixpath.splitext()) has been 
14454 cleared up.  It splits at the *last* dot.
14456 - posixfile locking is now also correctly supported on AIX.
14458 - The tempfile module once again honors an initial setting of tmpdir.  It 
14459 now works on Windows, too.
14461 - The traceback module has some new functions to extract, format and print 
14462 the active stack.
14464 - Some translation functions in the urllib module have been made a little 
14465 less sluggish.
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.
14471 - A tiny _test() function has been added to Tkinter.py.
14473 - A generic Makefile for dynamically loaded modules is provided in the Misc 
14474 subdirectory (Misc/gMakefile).
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.
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.
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.
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.
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.
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.
14499 - In Setup, you can now write "*shared*" instead of "*noconfig*", and you 
14500 can use *.so and *.sl as shared libraries.
14502 - Some more fidgeting for AIX shared libraries.
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.)
14508 - A warning is written to sys.stderr when a __del__ method raises an 
14509 exception (formerly, such exceptions were completely ignored).
14511 - The configure script now defines HAVE_OLD_CPP if the C preprocessor is 
14512 incapable of ANSI style token concatenation and stringification.
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.
14519 - The abstract object API has three new functions, PyObject_DelItem, 
14520 PySequence_DelItem, and PySequence_DelSlice.
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.)
14526 - The environment module is no longer supported; putenv() is now a function 
14527 in posixmodule (also under NT).
14529 - Error in filter(<function>, "") has been fixed.
14531 - Unrecognized keyword arguments raise TypeError, not KeyError.
14533 - Better portability, fewer bugs and memory leaks, fewer compiler warnings, 
14534 some more documentation.
14536 - Bug in float power boundary case (0.0 to the negative integer power) 
14537 fixed.
14539 - The test of negative number to the float power has been moved from the 
14540 built-in pow() functin to floatobject.c (so complex numbers can yield the 
14541 correct result).
14543 - The bug introduced in beta2 where shared libraries loaded (using 
14544 dlopen()) from the current directory would fail, has been fixed.
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.
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.
14554 - C API addition: marshal.c now supports 
14555 PyMarshal_WriteObjectToString(object).
14557 - C API addition: getargs.c now supports
14558 PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...)
14559 to parse keyword arguments.
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).
14567 - h2py.py accepts whitespace before the # in CPP directives
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?)
14574 - Thread support should now work on AIX, using either DCE threads or 
14575 pthreads.
14577 - New file Demo/sockets/unicast.py
14579 - Working Mac port, with CFM68K support, with Tk 4.1 support (though not 
14580 both) (XXX)
14582 - New project setup for PC port, now compatible with PythonWin, with 
14583 _tkinter and NumPy support (XXX)
14585 - New module site.py (XXX)
14587 - New module xdrlib.py and optional support module _xdrmodule.c (XXX)
14589 - parser module adapted to new grammar, complete w/ Doc & Demo (XXX)
14591 - regen script fixed (XXX)
14593 - new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX)
14595 - testall now also tests math module (XXX)
14597 - string.atoi c.s. now raise an exception for an empty input string.
14599 - At last, it is no longer necessary to define HAVE_CONFIG_H in order to 
14600 have config.h included at various places.
14602 - Unrecognized keyword arguments now raise TypeError rather than KeyError.
14604 - The makesetup script recognizes files with extension .so or .sl as
14605 (shared) libraries.
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!
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.
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()).
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).
14628 - Final touch for AIX loading, rewritten Misc/AIX-NOTES.
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.
14634 - Add #undef fabs to Modules/mathmodule.c for macintosh.
14636 - Added some macro renames for AIX in Modules/operator.c.
14638 - Removed spurious 'E' from Doc/liberrno.tex.
14640 - Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new
14641 Misc/gMakefile and new version of Misc/python-mode.el.
14643 - Fixed typo in Lib/ntpath.py (islink has "return false" which gives a
14644 NameError).
14646 - Added missing "from types import *" to Lib/tkinter/Canvas.py.
14648 - Added hint about using default args for __init__ to pickle docs.
14650 - Corrected typo in Inclide/abstract.h: PySequence_Lenth ->
14651 PySequence_Length.
14653 - Some improvements to Doc/texi2html.py.
14655 - In Python/import.c, Cast unsigned char * in struct _frozen to char *
14656 in calls to rds_object().
14658 - In doc/ref4.tex, added note about scope of lambda bodies.
14660 What's new in 1.4beta2 (since beta1)?
14661 -------------------------------------
14663 - Portability bug in the md5.h header solved.
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).
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.)
14676 - New modules: errno, operator (XXX).
14678 - Changes for use with Numerical Python: builtin function slice() and
14679 Ellipses object, and corresponding syntax:
14681         x[lo:hi:stride]         ==      x[slice(lo, hi, stride)]
14682         x[a, ..., z]            ==      x[(a, Ellipses, z)]
14684 - New documentation for errno and cgi modules.
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.
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().
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.)
14700 - pdb.py can now be invoked from the command line to debug a script:
14701 python pdb.py <script> <arg> ...
14703 - Much improved parseaddr() in rfc822.
14705 - In cgi.py, you can now pass an alternative value for environ to
14706 nearly all functions.
14708 - You can now assign to instance variables whose name begins and ends
14709 with '__'.
14711 - New version of Fred Drake's parser module and associates (token,
14712 symbol, AST).
14714 - New PYTHON_API_VERSION value and .pyc file magic number (again!).
14716 - The "complex" internal structure type is now called "Py_complex" to
14717 avoid name conflicts.
14719 - Numerous small bugs fixed.
14721 - Slight pickle speedups.
14723 - Some slight speedups suggested by Sjoerd (more coming in 1.4 final).
14725 - NeXT portability mods by Bill Bumgarner integrated.
14727 - Modules regexmodule.c, bsddbmodule.c and xxmodule.c have been
14728 converted to new naming style.
14731 What's new in 1.4beta1 (since 1.3)?
14732 -----------------------------------
14734 - Added sys.platform and sys.exec_platform for Bill Janssen.
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.
14740 - New functions in the posix module: mkfifo, plock, remove (== unlink),
14741 and ftruncate.  More functions are also available under NT.
14743 - New function in the fcntl module: flock.
14745 - Shared library support for FreeBSD.
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.
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.
14755 - Author's change of address from CWI in Amsterdam, The Netherlands, to 
14756 CNRI in Reston, VA, USA.
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).
14761 - The latex documentation is now compatible with latex2e, thanks to David 
14762 Ascher.
14764 - The expression x**y is now equivalent to pow(x, y).
14766 - The indexing expression x[a, b, c] is now equivalent to x[(a, b, c)].
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.
14776 - New built-in function list() is the long-awaited counterpart of tuple().
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.)
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.
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.
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...)
14799 - There are now typedefs for the structures defined in config.c and 
14800 frozen.c.
14802 - New PYTHON_API_VERSION value and .pyc file magic number.
14804 - New module Bastion.  (XXX)
14806 - Improved performance of StringIO module.
14808 - UserList module now supports + and * operators.
14810 - The binhex and binascii modules now actually work.
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.
14816 - The formatter module (for use with htmllib) has been overhauled (again).
14818 - The ftplib module now supports passive mode and has doc strings.
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.
14824 - Dummy versions of os.path.expandvars() and expanduser() are now provided 
14825 on non-Unix platforms.
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.
14833 - Micro improvements to urlparse.  Added urlparse.urldefrag() which 
14834 removes a trailing ``#fragment'' if any.
14836 - The mailbox module now supports MH style message delimiters as well.
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).
14842 - New module mimify for conversion to and from MIME format of email 
14843 messages.
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.
14850 - Some small performance enhancements in module pickle.
14852 - Small interface change to the profile.run*() family of functions -- more 
14853 sensible handling of return values.
14855 - The officially registered Mac creator for Python files is 'Pyth'.  This 
14856 replaces 'PYTH' which was used before but never registered.
14858 - Added regsub.capwords().  (XXX)
14860 - Added string.capwords(), string.capitalize() and string.translate().  
14861 (XXX)
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.
14868 - Module rfc822 now caches the headers in a dictionary for more efficient 
14869 lookup.
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...)
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.]
14880 - Much improved and enhanved FileDialog module for Tkinter.
14882 - Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as 
14883 well as Tk 4.1).
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.
14891 - Bugs in bsddb module fixed (e.g. missing default argument values).
14893 - The curses extension now includes <ncurses.h> when available.
14895 - The gdbm module now supports opening databases in "fast" mode by 
14896 specifying 'f' as the second character or the mode string.
14898 - new variables sys.prefix and sys.exec_prefix pass corresponding 
14899 configuration options / Makefile variables to the Python programmer.
14901 - The ``new'' module now supports creating new user-defined classes as well 
14902 as instances thereof.
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.
14908 - New object type "cobject" to safely wrap void pointers for passing them 
14909 between various extension modules.
14911 - More efficient computation of float**smallint.
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.
14917 - The initialization of the readline function can now be invoked by a C 
14918 extension through PyOS_ReadlineInit().
14920 - There's now an externally visible pointer PyImport_FrozenModules which 
14921 can be changed by an embedding application.
14923 - The argument parsing functions now support a new format character 'D' to 
14924 specify complex numbers.
14926 - Various memory leaks plugged and bugs fixed.
14928 - Improved support for posix threads (now that real implementations are 
14929 beginning to apepar).  Still no fully functioning semaphores.
14931 - Some various and sundry improvements and new entries in the Tools 
14932 directory.
14935 =====================================
14936 ==> Release 1.3 (13 October 1995) <==
14937 =====================================
14939 Major change
14940 ============
14942 Two words: Keyword Arguments.  See the first section of Chapter 12 of
14943 the Tutorial.
14945 (The rest of this file is textually the same as the remaining sections
14946 of that chapter.)
14949 Changes to the WWW and Internet tools
14950 =====================================
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.
14958 A new module "formatter" has been added, for use with the new
14959 "htmllib" module.
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.
14967 The "rfc822.Message" class has been changed to allow a flag to be
14968 passed in that says that the file is unseekable.
14970 The "ftplib" module has been fixed to be (hopefully) more robust on
14971 Linux.
14973 Several new operations that are optionally supported by servers have
14974 been added to "nntplib": "xover", "xgtitle", "xpath" and "date".
14976 Other Language Changes
14977 ======================
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.
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.
14989 Changes to Built-in Operations
14990 ==============================
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.
14996 A new system variable, "sys.platform", has been added.  It specifies
14997 the current platform, e.g. "sunos5" or "linux1".
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.
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.)
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".
15018 Library Changes
15019 ===============
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.
15026 The module "rexec" has been rewritten (incompatibly) to define a class
15027 and to use "ihooks".
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()".
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.
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.
15046 A new dbm-like module, "bsddb", has been added, which uses the BSD DB
15047 package's hash method.
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".
15053 The module "anydbm" provides a unified interface to "bsddb", "gdbm",
15054 "dbm", and "dumbdbm", choosing the first one available.
15056 A new extension module, "binascii", provides a variety of operations
15057 for conversion of text-encoded binary data.
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".
15063 A module to handle the MIME encoding quoted-printable has also been
15064 added: "quopri".
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!
15070 The \code{syslog} module has been upgraded and documented.
15072 Other Changes
15073 =============
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.)
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".
15084 The Macintosh version is much more robust now.
15086 Numerous things I have forgotten or that are so obscure no-one will
15087 notice them anyway :-)
15090 ===================================
15091 ==> Release 1.2 (13 April 1995) <==
15092 ===================================
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)
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.
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.
15116 - All known memory leaks have been fixed.
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.)
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.
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.
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.
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.
15148 - Documentation strings for many objects 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.)
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.
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 builtin open() function.
15167 The same applies to posixfile.open() and the socket method makefile().
15169 - The thread.exit_thread() function now raises SystemExit so that
15170 'finally' clauses are honored and a memory leak is plugged.
15172 - Improved X11 and Motif support, by Sjoerd Mullender.  This extension
15173 is being maintained and distributed separately.
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.
15181 - Improved version for Windows NT, by Mark Hammond.  This is being
15182 maintained and distributed separately.
15184 - Used autoconf 2.0 to generate the configure script.  Adapted
15185 configure.in to use the new features in autoconf 2.0.
15187 - It now builds on the NeXT without intervention, even on the 3.3
15188 Sparc pre-release.
15190 - Characters passed to isspace() and friends are masked to nonnegative
15191 values.
15193 - Correctly compute pow(-3.0, 3).
15195 - Fix portability problems with getopt (configure now checks for a
15196 non-GNU getopt).
15198 - Don't add frozenmain.o to libPython.a.
15200 - Exceptions can now be classes.  ALl built-in exceptions are still
15201 string objects, but this will change in the future.
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.)
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.
15211 - Changed the error handling by [new]getargs() e.g. for "O&".
15213 - Dynamic loading of modules using shared libraries is supported for
15214 several new platforms.
15216 - Support "O&", "[...]" and "{...}" in mkvalue().
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.
15224 - The callable() function is now public.
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.
15231 ===================================
15232 ==> Release 1.1.1 (10 Nov 1994) <==
15233 ===================================
15235 This is a pure bugfix release again.  See the ChangeLog file for details.
15237 One exception: a few new features were added to tkinter.
15240 =================================
15241 ==> Release 1.1 (11 Oct 1994) <==
15242 =================================
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).
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.
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.
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.
15276 New language features:
15278     - More flexible operator overloading for user-defined classes
15279     (INCOMPATIBLE WITH PREVIOUS VERSIONS!)  See end of tutorial.
15281     - Classes can define methods named __getattr__, __setattr__ and
15282     __delattr__ to trap attribute accesses.  See end of tutorial.
15284     - Classes can define method __call__ so instances can be called
15285     directly.  See end of tutorial.
15288 New support facilities:
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.
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!)
15297     - New Freeze script, to create independently distributable "binaries"
15298     of Python programs -- look in Demo/freeze
15300     - Improved h2py script (in Demo/scripts) follows #includes and
15301     supports macros with one argument
15303     - New module compileall generates .pyc files for all modules in a
15304     directory (tree) without also executing them
15306     - Threads should work on more platforms
15309 New built-in modules:
15311     - tkinter (support for Tcl's Tk widget set) is now part of the base
15312     distribution
15314     - signal allows catching or ignoring UNIX signals (unfortunately still
15315     undocumented -- any taker?)
15317     - termios provides portable access to POSIX tty settings
15319     - curses provides an interface to the System V curses library
15321     - syslog provides an interface to the (BSD?) syslog daemon
15323     - 'new' provides interfaces to create new built-in object types
15324     (e.g. modules and functions)
15326     - sybase provides an interface to SYBASE database
15329 New/obsolete built-in methods:
15331     - callable(x) tests whether x can be called
15333     - sockets now have a setblocking() method
15335     - sockets no longer have an allowbroadcast() method
15337     - socket methods send() and sendto() return byte count
15340 New standard library modules:
15342     - types.py defines standard names for built-in types, e.g. StringType
15344     - urlparse.py parses URLs according to the latest Internet draft
15346     - uu.py does uuencode/uudecode (not the fastest in the world, but
15347     quicker than installing uuencode on a non-UNIX machine :-)
15349     - New, faster and more powerful profile module.py
15351     - mhlib.py provides interface to MH folders and messages
15354 New facilities for extension writers (unfortunately still
15355 undocumented):
15357     - newgetargs() supports optional arguments and improved error messages
15359     - O!, O& O? formats for getargs allow more versatile type checking of
15360     non-standard types
15362     - can register pending asynchronous callback, to be called the next
15363     time the Python VM begins a new instruction (Py_AddPendingCall)
15365     - can register cleanup routines to be called when Python exits
15366     (Py_AtExit)
15368     - makesetup script understands C++ files in Setup file (use file.C
15369     or file.cc)
15371     - Make variable OPT is passed on to sub-Makefiles
15373     - An init<module>() routine may signal an error by not entering
15374     the module in the module table and raising an exception instead
15376     - For long module names, instead of foobarbletchmodule.c you can
15377     use foobarbletch.c
15379     - getintvalue() and getfloatvalue() try to convert any object
15380     instead of requiring an "intobject" or "floatobject"
15382     - All the [new]getargs() formats that retrieve an integer value
15383     will now also work if a float is passed
15385     - C function listtuple() converts list to tuple, fast
15387     - You should now call sigcheck() instead of intrcheck();
15388     sigcheck() also sets an exception when it returns nonzero
15391 ====================================
15392 ==> Release 1.0.3 (14 July 1994) <==
15393 ====================================
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:
15398 - Sometimes the format operator (string%expr) would drop the last
15399 character of the format string
15401 - Tokenizer looped when last line did not end in \n
15403 - Bug when triple-quoted string ended in quote plus newline
15405 - Typo in socketmodule (listen) (== instead of =)
15407 - typing vars() at the >>> prompt would cause recursive output
15410 ==================================
15411 ==> Release 1.0.2 (4 May 1994) <==
15412 ==================================
15414 Overview of the most visible changes.  Bug fixes are not listed.  See
15415 also ChangeLog.
15417 Tokens
15418 ------
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.
15424 * A new kind of string literals, surrounded by triple quotes (""" or
15425 '''), can be continued on the next line without a backslash.
15427 Syntax
15428 ------
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.
15434 * The try-except statement has an optional else clause, which is
15435 executed when no exception occurs in the try clause.
15437 Interpreter
15438 -----------
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.
15444 * The result of the last printed interactive expression is assigned to
15445 the variable '_'.
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).
15451 * There is a new command line option, -u, to force stdout and stderr
15452 to be unbuffered.
15454 * Incorporated Steve Majewski's mods to import.c for dynamic loading
15455 under AIX.
15457 * Fewer chances of dumping core when trying to reload or re-import
15458 static built-in, dynamically loaded built-in, or frozen modules.
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().
15467 Changed Built-in operations
15468 ---------------------------
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()).
15476 * The '%s' formatting operator is changed to accept any type and
15477 convert it to a string using str().
15479 * Dictionaries with more than 20,000 entries can now be created
15480 (thanks to Steve Kirsch).
15482 New Built-in Functions
15483 ----------------------
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().
15489 Changed Built-in Functions
15490 --------------------------
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.
15496 * open()'s second argument is now optional; it defaults to "r".
15498 * apply() now checks that its second argument is indeed a tuple.
15500 New Built-in Modules
15501 --------------------
15503 Changed Built-in Modules
15504 ------------------------
15506 The thread module no longer supports exit_prog().
15508 New Python Modules
15509 ------------------
15511 * Module addpack contains a standard interface to modify sys.path to
15512 find optional packages (groups of related modules).
15514 * Module urllib contains a number of functions to access
15515 World-Wide-Web files specified by their URL.
15517 * Module httplib implements the client side of the HTTP protocol used
15518 by World-Wide-Web servers.
15520 * Module gopherlib implements the client side of the Gopher protocol.
15522 * Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF
15523 style mailbox files.
15525 * Module random contains various random distributions, e.g. gauss().
15527 * Module lockfile locks and unlocks open files using fcntl (inspired
15528 by a similar module by Andy Bensky).
15530 * Module ntpath (by Jaap Vermeulen) implements path operations for
15531 Windows/NT.
15533 * Module test_thread (in Lib/test) contains a small test set for the
15534 thread module.
15536 Changed Python Modules
15537 ----------------------
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.
15543 * Module rfc822 now supports accessing the header fields using the
15544 mapping/dictionary interface, e.g. h['subject'].
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).
15550 Changed Demos
15551 -------------
15553 * The Demo/scripts/freeze.py script is working again (thanks to Jaap
15554 Vermeulen).
15556 New Demos
15557 ---------
15559 * Demo/threads/Generator.py is a proposed interface for restartable
15560 functions a la Tim Peters.
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.
15566 * Demo/dns contains a DNS (Domain Name Server) client.
15568 * Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a
15569 nice enhanced Python shell!!!).
15571 * Demo/turing contains a Turing machine by Amrit Prem.
15573 Documentation
15574 -------------
15576 * Documented new language features mentioned above (but not all new
15577 modules).
15579 * Added a chapter to the Tutorial describing recent additions to
15580 Python.
15582 * Clarified some sentences in the reference manual,
15583 e.g. break/continue, local/global scope, slice assignment.
15585 Source Structure
15586 ----------------
15588 * Moved Include/tokenizer.h to Parser/tokenizer.h.
15590 * Added Python/getopt.c for systems that don't have it.
15592 Emacs mode
15593 ----------
15595 * Indentation of continuated lines is done more intelligently;
15596 consequently the variable py-continuation-offset is gone.
15599 ========================================
15600 ==> Release 1.0.1 (15 February 1994) <==
15601 ========================================
15603 * Many portability fixes should make it painless to build Python on
15604 several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows.
15606 * Fixed test for <stdarg.h> -- this broke on some platforms.
15608 * Fixed test for shared library dynalic loading -- this broke on SunOS
15609 4.x using the GNU loader.
15611 * Changed order and number of SVR4 networking libraries (it is now
15612 -lsocket -linet -lnsl, if these libraries exist).
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.
15618 * Improved README file contains more hints and new troubleshooting
15619 section.
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.
15629 * There is now a working Lib/dospath.py for those who use Python under
15630 DOS (or Windows).  Thanks, Jaap!
15632 * There is now a working Modules/dosmodule.c for DOS (or Windows)
15633 system calls.
15635 * Lib.os.py has been reorganized (making it ready for more operating
15636 systems).
15638 * Lib/ospath.py is now obsolete (use os.path instead).
15640 * Many fixes to the tutorial to make it match Python 1.0.  Thanks,
15641 Tim!
15643 * Fixed Doc/Makefile, Doc/README and various scripts there.
15645 * Added missing description of fdopen to Doc/libposix.tex.
15647 * Made cleanup() global, for the benefit of embedded applications.
15649 * Added parsing of addresses and dates to Lib/rfc822.py.
15651 * Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make
15652 them usable at all.
15654 * New module Lib/wave.py reads RIFF (*.wav) audio files.
15656 * Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it
15657 belongs.
15659 * New options and comments for Modules/makesetup (used by new
15660 Extension mechanism).
15662 * Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc
15663 and elsewhere.
15665 * Fixed coredump in filter(None, 'abcdefg').
15668 =======================================
15669 ==> Release 1.0.0 (26 January 1994) <==
15670 =======================================
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 :-)
15675 Note that the very last section is labeled "remaining bugs".
15678 Source organization and build process
15679 -------------------------------------
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.
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.)
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.
15697 * Parts of the standard library have been moved to subdirectories:
15698 there are now standard subdirectories stdwin, test, sgi and sun4.
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.
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).
15719 * The DOS functions have been taken out of posixmodule.c and moved
15720 into a separate file dosmodule.c.
15722 * There's now a separate file version.c which contains nothing but
15723 the version number.
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().
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.
15733 Documentation
15734 -------------
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.)
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.
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".
15751 Syntax
15752 ------
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!
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.)
15766 * There is a new keyword 'lambda'.  An expression of the form
15768         lambda <parameters> : <expression>
15770 yields an anonymous function.  This is really only syntactic sugar;
15771 you can just as well define a local function using
15773         def some_temporary_name(<parameters>): return <expression>
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())!
15781 Built-in functions
15782 ------------------
15784 * The built-in module containing the built-in functions is called
15785 __builtin__ instead of builtin.
15787 * New built-in functions map(), filter() and reduce() perform standard
15788 functional programming operations (though not lazily):
15790 - map(f, seq) returns a new sequence whose items are the items from
15791 seq with f() applied to them.
15793 - filter(f, seq) returns a subsequence of seq consisting of those
15794 items for which f() is true.
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
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...
15813 * Built-in function exec() has been replaced by the exec statement --
15814 see above.
15817 The interpreter
15818 ---------------
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.
15826 * You can now set a maximum to the number of traceback entries
15827 printed by assigning to sys.tracebacklimit.  The default is 1000.
15829 * The version number in .pyc files has changed yet again.
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.)
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__).
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()".
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__().)
15857 * Functions and code objects can now be compared meaningfully.
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!
15864 Built-in objects
15865 ----------------
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.)
15872 Built-in modules
15873 ----------------
15875 * Socket objects no longer support the avail() method.  Use the select
15876 module instead, or use this function to replace it:
15878         def avail(f):
15879                 import select
15880                 return f in select.select([f], [], [], 0)[0]
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.
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.
15890 * The posix module has aquired new functions setuid(), setgid(),
15891 execve(), and exec() has been renamed to execv().
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().
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.
15901 * For select.select(), a timeout (4th) argument of None means the same
15902 as leaving the timeout argument out.
15904 * Module strop (and hence standard library module string) has aquired
15905 a new function: rindex().  Thanks to Amrit Prem!
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!
15912 * Multiple threads are now supported on Solaris 2.  Thanks to Sjoerd
15913 Mullender!
15916 Standard library modules
15917 ------------------------
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.
15925 * Module os now knows about trying to import dos.  It defines
15926 functions execl(), execle(), execlp() and execvp().
15928 * New module dospath (should be attacked by a DOS hacker though).
15930 * All modules defining classes now define __init__() constructors
15931 instead of init() methods.  THIS IS AN INCOMPATIBLE CHANGE!
15933 * Some minor changes and bugfixes module ftplib (mostly Steve
15934 Majewski's suggestions); the debug() method is renamed to
15935 set_debuglevel().
15937 * Some new test modules (not run automatically by testall though):
15938 test_audioop, test_md5, test_rgbimg, test_select.
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().
15944 * Added help() functions to modules profile and pdb.
15946 * The wdb debugger (now in Lib/stdwin) now shows class or instance
15947 variables on a double click.  Thanks to Sjoerd Mullender!
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...
15953 Multimedia extensions
15954 ---------------------
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!
15960 * There's a new operation in audioop: minmax().
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?)
15966 * The module aifc is gone -- you should now always use aifc, which has
15967 received a facelift.
15969 * There's a new module sunau., for reading Sun (and NeXT) audio files.
15971 * There's a new module audiodev which provides a uniform interface to
15972 (SGI Indigo and Sun Sparc) audio hardware.
15974 * There's a new module sndhdr which recognizes various sound files by
15975 looking in their header and checking for various magic words.
15978 Optimizations
15979 -------------
15981 * Most optimizations below can be configured by compile-time flags.
15982 Thanks to Sjoerd Mullender for submitting these optimizations!
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.
15989 * Empty tuples (which all compare equal) are shared in the same
15990 manner.
15992 * Tuples of size up to 20 (default) are put in separate free lists
15993 when deallocated.
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.
16000 Embedding Python
16001 ----------------
16003 * The initialization interface has been simplified somewhat.  You now
16004 only call "initall()" to initialize the interpreter.
16006 * The previously announced renaming of externally visible identifiers
16007 has not been carried out.  It will happen in a later release.  Sorry.
16010 Miscellaneous bugs that have been fixed
16011 ---------------------------------------
16013 * All known portability bugs.
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!
16019 * Core dump on a format string ending in '%', e.g. in the expression
16020 '%' % None.
16022 * The array module yielded a bogus result for concatenation (a+b would
16023 yield a+a).
16025 * Some serious memory leaks in strop.split() and strop.splitfields().
16027 * Several problems with the nis module.
16029 * Subtle problem when copying a class method from another class
16030 through assignment (the method could not be called).
16033 Remaining bugs
16034 --------------
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').
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.
16044 * The dos support hasn't been tested yet.  (Really Soon Now we should
16045 have a PC with a working C compiler!)
16048 ===================================
16049 ==> Release 0.9.9 (29 Jul 1993) <==
16050 ===================================
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.
16058 Naming of C symbols used by the Python interpreter
16059 --------------------------------------------------
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.
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).
16072 * As a result of the preliminary work for the great renaming, many
16073 functions that were accidentally global have been made static.
16076 BETA X11 support
16077 ----------------
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!)
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.
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).
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...
16108 Environmental changes
16109 ---------------------
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...
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
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.
16131 Changes to the command line interface
16132 -------------------------------------
16134 * The python usage message is now much more informative.
16136 * New option -i enters interactive mode after executing a script --
16137 useful for debugging.
16139 * New option -k raises an exception when an expression statement
16140 yields a value other than None.
16142 * For each option there is now also a corresponding environment
16143 variable.
16146 Using Python as an embedded language
16147 ------------------------------------
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/.
16154 Speed improvements
16155 ------------------
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.)
16163 Changes to the syntax
16164 ---------------------
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.
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:
16174         class Foo(): # syntax error
16175                 ...
16177 You must write this instead:
16179         class Foo:
16180                 ...
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.
16186 * There's a new reserved word: "access".  The syntax and semantics are
16187 still subject of 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.
16192 Changes to the semantics of the language proper
16193 -----------------------------------------------
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.
16201 Changes to the semantics of classes and instances
16202 -------------------------------------------------
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).
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).
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).
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.
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.
16234 Minor improvements
16235 ------------------
16237 * Function and class objects now know their name (the name given in
16238 the 'def' or 'class' statement that created them).
16240 * Class instances now know their class name.
16243 Additions to built-in operations
16244 --------------------------------
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.
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.)
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.
16261 Additions to built-in functions
16262 -------------------------------
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`.
16267 * repr(x) returns the same as `x`.  (Some users found it easier to
16268 have this as a function.)
16270 * round(x) returns the floating point number x rounded to an whole
16271 number, represented as a floating point number.  round(x, n) returns x
16272 rounded to n digits.
16274 * hasattr(x, name) returns true when x has an attribute with the given
16275 name.
16277 * hash(x) returns a hash code (32-bit integer) of an arbitrary
16278 immutable object's value.
16280 * id(x) returns a unique identifier (32-bit integer) of an arbitrary
16281 object.
16283 * compile() compiles a string to a Python code object.
16285 * exec() and eval() now support execution of code objects.
16288 Changes to the documented part of the library (standard modules)
16289 ----------------------------------------------------------------
16291 * os.path.normpath() (a.k.a. posixpath.normpath()) has been fixed so
16292 the border case '/foo/..' returns '/' instead of ''.
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.
16299 Changes to built-in modules
16300 ---------------------------
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.
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.
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.
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.)
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.
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).
16335 * Objects created by module sunaudiodev now also support flush() and
16336 close() methods.
16338 * Socket objects created by module socket now support an optional
16339 flags argument for their methods sendto() and recvfrom().
16341 * Module marshal now supports dumping to and loading from strings,
16342 through the functions dumps() and loads().
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.)
16348 Bugs fixed
16349 ----------
16351 * Fixed comparison of negative long integers.
16353 * The tokenizer no longer botches input lines longer than BUFSIZ.
16355 * Fixed several severe memory leaks in module select.
16357 * Fixed memory leaks in modules socket and sv.
16359 * Fixed memory leak in divmod() for long integers.
16361 * Problems with definition of floatsleep() on Suns fixed.
16363 * Many portability bugs fixed (and undoubtedly new ones added :-).
16366 Changes to the build procedure
16367 ------------------------------
16369 * The Makefile supports some new targets: "make default" and "make
16370 all".  Both are by normally equivalent to "make python".
16372 * The Makefile no longer uses $> since it's not supported by all
16373 versions of Make.
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).
16380 Freezing Python scripts
16381 -----------------------
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.
16390 MS-DOS
16391 ------
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).
16398 * The default PYTHONPATH has changed.
16401 Changes for developers of extension modules
16402 -------------------------------------------
16404 * Read src/ChangeLog for full details.
16407 SGI specific changes
16408 --------------------
16410 * Read src/ChangeLog for full details.
16413 ==================================
16414 ==> Release 0.9.8 (9 Jan 1993) <==
16415 ==================================
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.
16424         --Guido
16427 Changes to the language proper
16428 ------------------------------
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:
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 arguments (an empty tuple if there were none).
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.
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.)
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.
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.
16462 If this change breaks lots of code you have developed locally, try
16463 #defining COMPAT_HACKS in ceval.c.
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.)
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.
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.
16484 Changes to the build process
16485 ----------------------------
16487 The Configure.py script and the Makefile has been made somewhat more
16488 bullet-proof, after reports of (minor) trouble on certain platforms.
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!
16493 Useing 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.
16497 The Makefile has been fixed to make it easier to use with the VPATH
16498 feature of some Make versions (e.g. SunOS).
16501 Changes affecting portability
16502 -----------------------------
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.
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.
16513 Changes to the interpreter interface
16514 ------------------------------------
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.
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.
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).
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.
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).
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). 
16544 Changes to existing built-in functions and methods
16545 --------------------------------------------------
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.).
16552 New built-in functions
16553 ----------------------
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).
16561 The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y.
16564 Changes to general built-in modules
16565 -----------------------------------
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().)
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.
16580 New functions added to posix: nice(), setpgrp(), and if your system
16581 supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp().
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).
16591 Changes to SGI-specific built-in modules
16592 ----------------------------------------
16594 The FORMS library interface (fl) now requires FORMS 2.1a.  Some new
16595 functions have been added and some bugs have been fixed.
16597 Additions to al (audio library interface): added getname(),
16598 getdefault() and getminmax().
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.
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}.)
16609 Changes to standard library modules
16610 -----------------------------------
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).
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).
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.
16628 posixpath, macpath: added dirname() and normpath() (and basename() to
16629 macpath).
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().
16635 New built-in modules
16636 --------------------
16638 Module struct defines functions to pack/unpack values to/from strings
16639 representing binary values in native byte order.
16641 Module strop implements C versions of many functions from string (see
16642 above).
16644 Optional module fcntl defines interfaces to fcntl() and ioctl() --
16645 UNIX only.  (Not yet properly documented -- see however src/fcntl.doc.)
16647 Optional module mpz defines an interface to an altaernative long
16648 integer implementation, the GNU MPZ library.
16650 Optional module md5 uses the GNU MPZ library to calculate MD5
16651 signatures of strings.
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.
16659 New standard library modules
16660 ----------------------------
16662 (Unfortunately the following modules are not all documented; read the
16663 sources to find out more about them!)
16665 autotest: run testall without showing any output unless it differs
16666 from the expected output
16668 bisect: use bisection to insert or find an item in a sorted list
16670 colorsys: defines conversions between various color systems (e.g. RGB
16671 <-> YUV)
16673 nntplib: a client interface to NNTP servers
16675 pipes: utility to construct pipeline from templates, e.g. for
16676 conversion from one file format to another using several utilities.
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.
16683 test_types: test operations on the built-in types of Python
16685 toaiff: convert various audio file formats to AIFF format
16687 tzparse: parse the TZ environment parameter (this may be less general
16688 than it could be, let me know if you fix it).
16690 (Note that the obsolete module "path" no longer exists.)
16693 New SGI-specific library modules
16694 --------------------------------
16696 CL: constants for use with the built-in compression library interface (cl)
16698 Queue: a multi-producer, multi-consumer queue class implemented for
16699 use with the built-in thread module
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.
16707 cddb: interface to the database used by the CD player
16709 torgb: convert various image file types to rgb format (requires pbmplus)
16712 New demos
16713 ---------
16715 There's an experimental interface to define Sun RPC clients and
16716 servers in demo/rpc.
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).
16723 The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse.
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!
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!
16733 A bunch of games and examples submitted by Stoffel Erasmus have been
16734 included in demo/stoffel.
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.
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!
16746 Changes to the documentation
16747 ----------------------------
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!
16755 Changes to the source code that affect C extension writers
16756 ----------------------------------------------------------
16758 The function strdup() no longer exists (it was used only in one places
16759 and is somewhat of a a portability problem sice some systems have the
16760 same function in their C library.
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.
16767 =========================
16768 ==> Release 0.9.7beta <==
16769 =========================
16772 Changes to the language proper
16773 ------------------------------
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.
16780 Changes to the build process
16781 ----------------------------
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
16788 The Makefile now includes more "utility" targets, e.g. install and
16789 tags/TAGS
16791 Using the provided strtod.c and strtol.c are now separate options, as
16792 on the Sun the provided strtod.c dumps core :-(
16794 The regex module is now an option chosen by the Makefile, since some
16795 (old) C compilers choke on regexpr.c
16798 Changes affecting portability
16799 -----------------------------
16801 You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin
16802 interface
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)
16808 The system-dependent code for the use of the select() system call is
16809 moved to one file: myselect.h
16811 Thanks to Jaap Vermeulen, the code should now port cleanly to the
16812 SEQUENT
16815 Changes to the interpreter interface
16816 ------------------------------------
16818 The interpretation of $PYTHONPATH in the environment is different: it
16819 is inserted in front of the default path instead of overriding it
16822 Changes to existing built-in functions and methods
16823 --------------------------------------------------
16825 List objects now support an optional argument to their sort() method,
16826 which is a comparison function similar to qsort(3) in C
16828 File objects now have a method fileno(), used by the new select module
16829 (see below)
16832 New built-in function
16833 ---------------------
16835 coerce(x, y): take two numbers and return a tuple containing them
16836 both converted to a common type
16839 Changes to built-in modules
16840 ---------------------------
16842 sys: fixed core dumps in settrace() and setprofile()
16844 socket: added socket methods setsockopt() and getsockopt(); and
16845 fileno(), used by the new select module (see below)
16847 stdwin: added fileno() == connectionnumber(), in support of new module
16848 select (see below)
16850 posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function.
16852 gl: added qgetfd()
16854 fl: added several new functions, fixed several obscure bugs, adapted
16855 to FORMS 2.1
16858 Changes to standard modules
16859 ---------------------------
16861 posixpath: changed implementation of ismount()
16863 string: atoi() no longer mistakes leading zero for octal number
16868 New built-in modules
16869 --------------------
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).
16876 select: interfaces to the BSD select() system call
16878 dbm: interfaces to the (new) dbm library (dynamic only)
16880 nis: interfaces to some NIS functions (aka yellow pages)
16882 thread: limited form of multiple threads (sgi only)
16884 audioop: operations useful for audio programs, e.g. u-LAW and ADPCM
16885 coding (dynamic only)
16887 cd: interface to Indigo SCSI CDROM player audio library (sgi only)
16889 jpeg: read files in JPEG format (dynamic only, sgi only; needs
16890 external code)
16892 imgfile: read SGI image files (dynamic only, sgi only)
16894 sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only)
16896 sv: interface to Indigo video library (sgi only)
16898 pc: a minimal set of MS-DOS interfaces (MS-DOS only)
16900 rotor: encryption, by Lance Ellinghouse (dynamic only)
16903 New standard modules
16904 --------------------
16906 Not all these modules are documented.  Read the source:
16907 lib/<modulename>.py.  Sometimes a file lib/<modulename>.doc contains
16908 additional documentation.
16910 imghdr: recognizes image file headers
16912 sndhdr: recognizes sound file headers
16914 profile: print run-time statistics of Python code
16916 readcd, cdplayer: companion modules for built-in module cd (sgi only)
16918 emacs: interface to Emacs using py-connect.el (see below).
16920 SOCKET: symbolic constant definitions for socket options
16922 SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only)
16924 SV: symbolic constat definitions for sv (sgi only)
16926 CD: symbolic constat definitions for cd (sgi only)
16929 New demos
16930 ---------
16932 scripts/pp.py: execute Python as a filter with a Perl-like command
16933 line interface
16935 classes/: examples using the new class features
16937 threads/: examples using the new thread module
16939 sgi/cd/: examples using the new cd module
16942 Changes to the documentation
16943 ----------------------------
16945 The last-minute syntax changes of release 0.9.6 are now reflected
16946 everywhere in the manuals
16948 The reference manual has a new section (3.2) on implementing new kinds
16949 of numbers, sequences or mappings with user classes
16951 Classes are now treated extensively in the tutorial (chapter 9)
16953 Slightly restructured the system-dependent chapters of the library
16954 manual
16956 The file misc/EXTENDING incorporates documentation for mkvalue() and
16957 a new section on error handling
16959 The files misc/CLASSES and misc/ERRORS are no longer necessary
16961 The doc/Makefile now creates PostScript files automatically
16964 Miscellaneous changes
16965 ---------------------
16967 Incorporated Tim Peters' changes to python-mode.el, it's now version
16968 1.06
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)
16976 Changes to the source code that affect C extension writers
16977 ----------------------------------------------------------
16979 New service function mkvalue() to construct a Python object from C
16980 values according to a "format" string a la getargs()
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
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)
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)
16994 In structmember.[ch], new member types BYTE, CHAR and unsigned
16995 variants have been added
16997 New file xxmodule.c is a template for new extension modules.
17000 ==================================
17001 ==> Release 0.9.6 (6 Apr 1992) <==
17002 ==================================
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!)
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 incompatiblity 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)
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
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)
17068 Bugs fixed in 0.9.5:
17069 - masking operations involving negative long integers gave wrong results
17072 ===================================
17073 ==> Release 0.9.4 (24 Dec 1991) <==
17074 ===================================
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
17087 New class syntax
17088 ----------------
17090 You can now declare a base class as follows:
17092         class B:                        # Was: class B():
17093                 def some_method(self): ...
17094                 ...
17096 and a derived class thusly:
17098         class D(B):                     # Was: class D() = B():
17099                 def another_method(self, arg): ...
17101 Multiple inheritance looks like this:
17103         class M(B, D):                  # Was: class M() = B(), D():
17104                 def this_or_that_method(self, arg): ...
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).
17110 New 'global' statement
17111 ----------------------
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.
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:
17125         total = 0.0
17126         count = 0
17128         def add_to_total(amount):
17129                 global total, count
17130                 total = total + amount
17131                 count = count + 1
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.
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.
17144 New exceptions
17145 --------------
17147 Several new exceptions have been defined, to distinguish more clearly
17148 between different types of errors.
17150 name                    meaning                                 was
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
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.:
17166         >>> KeyboardInterrupt
17167         'KeyboardInterrupt'
17168         >>>
17171 New argument passing semantics
17172 ------------------------------
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...
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.
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.
17200 Another anomaly of the old system was the way multi-argument methods
17201 (in classes) had to be declared, e.g.:
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): ...
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:
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): ...
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)).
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*.
17234 Two other rules and a new built-in function handle conversion between
17235 tuples and argument lists:
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.
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).
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
17250         apply(function, tuple)
17252 is equivalent to
17254         function(tuple[0], tuple[1], ..., tuple[len(tuple)-1])
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.
17263 ========================================================
17264 ==> Release 0.9.3 (never made available outside CWI) <==
17265 ========================================================
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            ').
17291 ===================================
17292 ==> Release 0.9.2 (Autumn 1991) <==
17293 ===================================
17295 Highlights
17296 ----------
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
17312 Extended list of changes in 0.9.2
17313 ---------------------------------
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.
17320 1. Changes to the interpreter proper
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
17349 2. Changes to the built-in types, functions and modules
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
17391 3. Changes to the standard library
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
17407 4. Changes to the demonstration programs
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)
17421 5. Other changes to the distribution
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
17430 =====================================
17431 ==> Release 0.9.1 (February 1991) <==
17432 =====================================
17434 - Micro changes only
17435 - Added file "patchlevel.h"
17438 =====================================
17439 ==> Release 0.9.0 (February 1991) <==
17440 =====================================
17442 Original posting to alt.sources.