diff options
author | Guido van Rossum <guido@python.org> | 2008-02-21 19:46:35 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2008-02-21 19:46:35 (GMT) |
commit | af16ece18e420d110ae7ef4d44fe34181de5199f (patch) | |
tree | e2b3aa9a99dfd65480abc6fb241b35573fac315a /Misc | |
parent | 31ce5cb989da7a8362b7ea232fc263f0fb738a75 (diff) | |
download | cpython-af16ece18e420d110ae7ef4d44fe34181de5199f.zip cpython-af16ece18e420d110ae7ef4d44fe34181de5199f.tar.gz cpython-af16ece18e420d110ae7ef4d44fe34181de5199f.tar.bz2 |
Fix a few typos and layout glitches (more work is needed).
Move 2.5 news to Misc/HISTORY.
Diffstat (limited to 'Misc')
-rw-r--r-- | Misc/HISTORY | 2139 | ||||
-rw-r--r-- | Misc/NEWS | 2146 |
2 files changed, 2144 insertions, 2141 deletions
diff --git a/Misc/HISTORY b/Misc/HISTORY index f2452f2..ef33b26 100644 --- a/Misc/HISTORY +++ b/Misc/HISTORY @@ -3,11 +3,2150 @@ Python History This file contains the release messages for previous Python releases. As you read on you go back to the dark ages of Python's history. +(Note: news about 2.5c2 and later 2.5 releases is in the Misc/NEWS +file of the release25-maint branch.) ====================================================================== +What's New in Python 2.5 release candidate 1? +============================================= + +*Release date: 17-AUG-2006* + +Core and builtins +----------------- + +- Unicode objects will no longer raise an exception when being + compared equal or unequal to a string and a UnicodeDecodeError + exception occurs, e.g. as result of a decoding failure. + + Instead, the equal (==) and unequal (!=) comparison operators will + now issue a UnicodeWarning and interpret the two objects as + unequal. The UnicodeWarning can be filtered as desired using + the warning framework, e.g. silenced completely, turned into an + exception, logged, etc. + + Note that compare operators other than equal and unequal will still + raise UnicodeDecodeError exceptions as they've always done. + +- Fix segfault when doing string formatting on subclasses of long. + +- Fix bug related to __len__ functions using values > 2**32 on 64-bit machines + with new-style classes. + +- Fix bug related to __len__ functions returning negative values with + classic classes. + +- Patch #1538606, Fix __index__() clipping. There were some problems + discovered with the API and how integers that didn't fit into Py_ssize_t + were handled. This patch attempts to provide enough alternatives + to effectively use __index__. + +- Bug #1536021: __hash__ may now return long int; the final hash + value is obtained by invoking hash on the long int. + +- Bug #1536786: buffer comparison could emit a RuntimeWarning. + +- Bug #1535165: fixed a segfault in input() and raw_input() when + sys.stdin is closed. + +- On Windows, the PyErr_Warn function is now exported from + the Python dll again. + +- Bug #1191458: tracing over for loops now produces a line event + on each iteration. Fixing this problem required changing the .pyc + magic number. This means that .pyc files generated before 2.5c1 + will be regenerated. + +- Bug #1333982: string/number constants were inappropriately stored + in the byte code and co_consts even if they were not used, ie + immediately popped off the stack. + +- Fixed a reference-counting problem in property(). + + +Library +------- + +- Fix a bug in the ``compiler`` package that caused invalid code to be + generated for generator expressions. + +- The distutils version has been changed to 2.5.0. The change to + keep it programmatically in sync with the Python version running + the code (introduced in 2.5b3) has been reverted. It will continue + to be maintained manually as static string literal. + +- If the Python part of a ctypes callback function returns None, + and this cannot be converted to the required C type, an exception is + printed with PyErr_WriteUnraisable. Before this change, the C + callback returned arbitrary values to the calling code. + +- The __repr__ method of a NULL ctypes.py_object() no longer raises + an exception. + +- uuid.UUID now has a bytes_le attribute. This returns the UUID in + little-endian byte order for Windows. In addition, uuid.py gained some + workarounds for clocks with low resolution, to stop the code yielding + duplicate UUIDs. + +- Patch #1540892: site.py Quitter() class attempts to close sys.stdin + before raising SystemExit, allowing IDLE to honor quit() and exit(). + +- Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize. + +- Patch #1536071: trace.py should now find the full module name of a + file correctly even on Windows. + +- logging's atexit hook now runs even if the rest of the module has + already been cleaned up. + +- Bug #1112549, fix DoS attack on cgi.FieldStorage. + +- Bug #1531405, format_exception no longer raises an exception if + str(exception) raised an exception. + +- Fix a bug in the ``compiler`` package that caused invalid code to be + generated for nested functions. + + +Extension Modules +----------------- + +- Patch #1511317: don't crash on invalid hostname (alias) info. + +- Patch #1535500: fix segfault in BZ2File.writelines and make sure it + raises the correct exceptions. + +- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The + '-no-stack-protector' compiler flag for OpenBSD has been removed. + +- Patch #1532975 was applied, which fixes Bug #1533481: ctypes now + uses the _as_parameter_ attribute when objects are passed to foreign + function calls. The ctypes version number was changed to 1.0.1. + +- Bug #1530559, struct.pack raises TypeError where it used to convert. + Passing float arguments to struct.pack when integers are expected + now triggers a DeprecationWarning. + + +Tests +----- + +- test_socketserver should now work on cygwin and not fail sporadically + on other platforms. + +- test_mailbox should now work on cygwin versions 2006-08-10 and later. + +- Bug #1535182: really test the xreadlines() method of bz2 objects. + +- test_threading now skips testing alternate thread stack sizes on + platforms that don't support changing thread stack size. + + +Documentation +------------- + +- Patch #1534922: unittest docs were corrected and enhanced. + + +Build +----- + +- Bug #1535502, build _hashlib on Windows, and use masm assembler + code in OpenSSL. + +- Bug #1534738, win32 debug version of _msi should be _msi_d.pyd. + +- Bug #1530448, ctypes build failure on Solaris 10 was fixed. + + +C API +----- + +- New API for Unicode rich comparisons: PyUnicode_RichCompare() + +- Bug #1069160. Internal correctness changes were made to + ``PyThreadState_SetAsyncExc()``. A test case was added, and + the documentation was changed to state that the return value + is always 1 (normal) or 0 (if the specified thread wasn't found). + + +What's New in Python 2.5 beta 3? +================================ + +*Release date: 03-AUG-2006* + +Core and builtins +----------------- + +- _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously + returned a long (see PEP 353). + +- Bug #1515471: string.replace() accepts character buffers again. + +- Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn(). + This provides the proper warning for struct.pack(). + PyErr_Warn() is now deprecated in favor of PyErr_WarnEx(). + +- Patch #1531113: Fix augmented assignment with yield expressions. + Also fix a SystemError when trying to assign to yield expressions. + +- Bug #1529871: The speed enhancement patch #921466 broke Python's compliance + with PEP 302. This was fixed by adding an ``imp.NullImporter`` type that is + used in ``sys.path_importer_cache`` to cache non-directory paths and avoid + excessive filesystem operations during imports. + +- Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some + operations on signed longs that are formally undefined by C. + Unfortunately, at least one compiler now cares about that, so complicated + the code to make that compiler happy again. + +- Bug #1524310: Properly report errors from FindNextFile in os.listdir. + +- Patch #1232023: Stop including current directory in search + path on Windows. + +- Fix some potential crashes found with failmalloc. + +- Fix warnings reported by Klocwork's static analysis tool. + +- Bug #1512814, Fix incorrect lineno's when code within a function + had more than 255 blank lines. + +- Patch #1521179: Python now accepts the standard options ``--help`` and + ``--version`` as well as ``/?`` on Windows. + +- Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works + again. Fixing this problem required changing the .pyc magic number. + This means that .pyc files generated before 2.5b3 will be regenerated. + +- Bug #1524317: Compiling Python ``--without-threads`` failed. + The Python core compiles again, and, in a build without threads, the + new ``sys._current_frames()`` returns a dictionary with one entry, + mapping the faux "thread id" 0 to the current frame. + +- Bug #1525447: build on MacOS X on a case-sensitive filesystem. + + +Library +------- + +- Fix #1693149. Now you can pass several modules separated by + comma to trace.py in the same --ignore-module option. + +- Correction of patch #1455898: In the mbcs decoder, set final=False + for stream decoder, but final=True for the decode function. + +- os.urandom no longer masks unrelated exceptions like SystemExit or + KeyboardInterrupt. + +- Bug #1525866: Don't copy directory stat times in + shutil.copytree on Windows + +- Bug #1002398: The documentation for os.path.sameopenfile now correctly + refers to file descriptors, not file objects. + +- The renaming of the xml package to xmlcore, and the import hackery done + to make it appear at both names, has been removed. Bug #1511497, + #1513611, and probably others. + +- Bug #1441397: The compiler module now recognizes module and function + docstrings correctly as it did in Python 2.4. + +- Bug #1529297: The rewrite of doctest for Python 2.4 unintentionally + lost that tests are sorted by name before being run. This rarely + matters for well-written tests, but can create baffling symptoms if + side effects from one test to the next affect outcomes. ``DocTestFinder`` + has been changed to sort the list of tests it returns. + +- The distutils version has been changed to 2.5.0, and is now kept + in sync with sys.version_info[:3]. + +- Bug #978833: Really close underlying socket in _socketobject.close. + +- Bug #1459963: urllib and urllib2 now normalize HTTP header names with + title(). + +- Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback + to recursive calls and call it with the failing package name. + +- Bug #1525817: Don't truncate short lines in IDLE's tool tips. + +- Patch #1515343: Fix printing of deprecated string exceptions with a + value in the traceback module. + +- Resync optparse with Optik 1.5.3: minor tweaks for/to tests. + +- Patch #1524429: Use repr() instead of backticks in Tkinter again. + +- Bug #1520914: Change time.strftime() to accept a zero for any position in its + argument tuple. For arguments where zero is illegal, the value is forced to + the minimum value that is correct. This is to support an undocumented but + common way people used to fill in inconsequential information in the time + tuple pre-2.4. + +- Patch #1220874: Update the binhex module for Mach-O. + +- The email package has improved RFC 2231 support, specifically for + recognizing the difference between encoded (name*0*=<blah>) and non-encoded + (name*0=<blah>) parameter continuations. This may change the types of + values returned from email.message.Message.get_param() and friends. + Specifically in some cases where non-encoded continuations were used, + get_param() used to return a 3-tuple of (None, None, string) whereas now it + will just return the string (since non-encoded continuations don't have + charset and language parts). + + Also, whereas % values were decoded in all parameter continuations, they are + now only decoded in encoded parameter parts. + +- Bug #1517990: IDLE keybindings on MacOS X now work correctly + +- Bug #1517996: IDLE now longer shows the default Tk menu when a + path browser, class browser or debugger is the frontmost window on MacOS X + +- Patch #1520294: Support for getset and member descriptors in types.py, + inspect.py, and pydoc.py. Specifically, this allows for querying the type + of an object against these built-in types and more importantly, for getting + their docstrings printed in the interactive interpreter's help() function. + + +Extension Modules +----------------- + +- Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during + a socket operation on a socket with a timeout, the exception will be + caught correctly. Previously, the exception was not caught. + +- Patch #1529514: The _ctypes extension is now compiled on more + openbsd target platforms. + +- The ``__reduce__()`` method of the new ``collections.defaultdict`` had + a memory leak, affecting pickles and deep copies. + +- Bug #1471938: Fix curses module build problem on Solaris 8; patch by + Paul Eggert. + +- Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry. + +- Patch #1521817: Index range checking on ctypes arrays containing + exactly one element enabled again. This allows iterating over these + arrays, without the need to check the array size before. + +- Bug #1521375: When the code in ctypes.util.find_library was + run with root privileges, it could overwrite or delete + /dev/null in certain cases; this is now fixed. + +- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the + default mode for loading shared libraries in ctypes. + +- Because of a misspelled preprocessor symbol, ctypes was always + compiled without thread support; this is now fixed. + +- pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename + methods now allow their database parameter to be None as the + sleepycat API allows. + +- Bug #1526460: Fix socketmodule compile on NetBSD as it has a different + bluetooth API compared with Linux and FreeBSD. + +Tests +----- + +- Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of + how long the test file should take to play. Now accepts taking 2.93 secs + (exact time) +/- 10% instead of the hard-coded 3.1 sec. + +- Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``, + ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when + run via ``regrtest.py``. Now they do. + +Build +----- + +- Bug #1439538: Drop usage of test -e in configure as it is not portable. + +Mac +--- + +- PythonLauncher now works correctly when the path to the script contains + characters that are treated specially by the shell (such as quotes). + +- Bug #1527397: PythonLauncher now launches scripts with the working directory + set to the directory that contains the script instead of the user home + directory. That latter was an implementation accident and not what users + expect. + + +What's New in Python 2.5 beta 2? +================================ + +*Release date: 11-JUL-2006* + +Core and builtins +----------------- + +- Bug #1441486: The literal representation of -(sys.maxint - 1) + again evaluates to a int object, not a long. + +- Bug #1501934: The scope of global variables that are locally assigned + using augmented assignment is now correctly determined. + +- Bug #927248: Recursive method-wrapper objects can now safely + be released. + +- Bug #1417699: Reject locale-specific decimal point in float() + and atof(). + +- Bug #1511381: codec_getstreamcodec() in codec.c is corrected to + omit a default "error" argument for NULL pointer. This allows + the parser to take a codec from cjkcodecs again. + +- Bug #1519018: 'as' is now validated properly in import statements. + +- On 64 bit systems, int literals that use less than 64 bits are + now ints rather than longs. + +- Bug #1512814, Fix incorrect lineno's when code at module scope + started after line 256. + +- New function ``sys._current_frames()`` returns a dict mapping thread + id to topmost thread stack frame. This is for expert use, and is + especially useful for debugging application deadlocks. The functionality + was previously available in Fazal Majid's ``threadframe`` extension + module, but it wasn't possible to do this in a wholly threadsafe way from + an extension. + +Library +------- + +- Bug #1257728: Mention Cygwin in distutils error message about a missing + VS 2003. + +- Patch #1519566: Update turtle demo, make begin_fill idempotent. + +- Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK + environment variable to be set in order to the SDK environment + for finding the compiler, include files, etc. + +- Bug #1515998: Properly generate logical ids for files in bdist_msi. + +- warnings.py now ignores ImportWarning by default + +- string.Template() now correctly handles tuple-values. Previously, + multi-value tuples would raise an exception and single-value tuples would + be treated as the value they contain, instead. + +- Bug #822974: Honor timeout in telnetlib.{expect,read_until} + even if some data are received. + +- Bug #1267547: Put proper recursive setup.py call into the + spec file generated by bdist_rpm. + +- Bug #1514693: Update turtle's heading when switching between + degrees and radians. + +- Reimplement turtle.circle using a polyline, to allow correct + filling of arcs. + +- Bug #1514703: Only setup canvas window in turtle when the canvas + is created. + +- Bug #1513223: .close() of a _socketobj now releases the underlying + socket again, which then gets closed as it becomes unreferenced. + +- Bug #1504333: Make sgmllib support angle brackets in quoted + attribute values. + +- Bug #853506: Fix IPv6 address parsing in unquoted attributes in + sgmllib ('[' and ']' were not accepted). + +- Fix a bug in the turtle module's end_fill function. + +- Bug #1510580: The 'warnings' module improperly required that a Warning + category be either a types.ClassType and a subclass of Warning. The proper + check is just that it is a subclass with Warning as the documentation states. + +- The compiler module now correctly compiles the new try-except-finally + statement (bug #1509132). + +- The wsgiref package is now installed properly on Unix. + +- A bug was fixed in logging.config.fileConfig() which caused a crash on + shutdown when fileConfig() was called multiple times. + +- The sqlite3 module did cut off data from the SQLite database at the first + null character before sending it to a custom converter. This has been fixed + now. + +Extension Modules +----------------- + +- #1494314: Fix a regression with high-numbered sockets in 2.4.3. This + means that select() on sockets > FD_SETSIZE (typically 1024) work again. + The patch makes sockets use poll() internally where available. + +- Assigning None to pointer type fields in ctypes structures possible + overwrote the wrong fields, this is fixed now. + +- Fixed a segfault in _ctypes when ctypes.wintypes were imported + on non-Windows platforms. + +- Bug #1518190: The ctypes.c_void_p constructor now accepts any + integer or long, without range checking. + +- Patch #1517790: It is now possible to use custom objects in the ctypes + foreign function argtypes sequence as long as they provide a from_param + method, no longer is it required that the object is a ctypes type. + +- The '_ctypes' extension module now works when Python is configured + with the --without-threads option. + +- Bug #1513646: os.access on Windows now correctly determines write + access, again. + +- Bug #1512695: cPickle.loads could crash if it was interrupted with + a KeyboardInterrupt. + +- Bug #1296433: parsing XML with a non-default encoding and + a CharacterDataHandler could crash the interpreter in pyexpat. + +- Patch #1516912: improve Modules support for OpenVMS. + +Build +----- + +- Automate Windows build process for the Win64 SSL module. + +- 'configure' now detects the zlib library the same way as distutils. + Previously, the slight difference could cause compilation errors of the + 'zlib' module on systems with more than one version of zlib. + +- The MSI compileall step was fixed to also support a TARGETDIR + with spaces in it. + +- Bug #1517388: sqlite3.dll is now installed on Windows independent + of Tcl/Tk. + +- Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old + trying to be installed even though it's empty. + +Tests +----- + +- Call os.waitpid() at the end of tests that spawn child processes in order + to minimize resources (zombies). + +Documentation +------------- + +- Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the + documentation for the warnings module. + +- Patch #1509163: MS Toolkit Compiler no longer available. + +- Patch #1504046: Add documentation for xml.etree. + + +What's New in Python 2.5 beta 1? +================================ + +*Release date: 20-JUN-2006* + +Core and builtins +----------------- + +- Patch #1507676: Error messages returned by invalid abstract object operations + (such as iterating over an integer) have been improved and now include the + type of the offending object to help with debugging. + +- Bug #992017: A classic class that defined a __coerce__() method that returned + its arguments swapped would infinitely recurse and segfault the interpreter. + +- Fix the socket tests so they can be run concurrently. + +- Removed 5 integers from C frame objects (PyFrameObject). + f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted. + +- Bug #532646: object.__call__() will continue looking for the __call__ + attribute on objects until one without one is found. This leads to recursion + when you take a class and set its __call__ attribute to an instance of the + class. Originally fixed for classic classes, but this fix is for new-style. + Removes the infinite_rec_3 crasher. + +- The string and unicode methods startswith() and endswith() now accept + a tuple of prefixes/suffixes to look for. Implements RFE #1491485. + +- Buffer objects, at the C level, never used the char buffer + implementation even when the char buffer for the wrapped object was + explicitly requested (originally returned the read or write buffer). + Now a TypeError is raised if the char buffer is not present but is + requested. + +- Patch #1346214: Statements like "if 0: suite" are now again optimized + away like they were in Python 2.4. + +- Builtin exceptions are now full-blown new-style classes instead of + instances pretending to be classes, which speeds up exception handling + by about 80% in comparison to 2.5a2. + +- Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to + Unicode 4.1. + +- Patch #921466: sys.path_importer_cache is now used to cache valid and + invalid file paths for the built-in import machinery which leads to + fewer open calls on startup. + +- Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power- + of-2 bases. The largest speedup is for inputs with about 1000 decimal + digits. Conversion from non-power-of-2 bases remains quadratic-time in + the number of input digits (it was and remains linear-time for bases + 2, 4, 8, 16 and 32). + +- Bug #1334662: ``int(string, base)`` could deliver a wrong answer + when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented + an integer close to ``sys.maxint``. This was repaired by patch + #1335972, which also gives a nice speedup. + +- Patch #1337051: reduced size of frame objects. + +- PyErr_NewException now accepts a tuple of base classes as its + "base" parameter. + +- Patch #876206: function call speedup by retaining allocated frame + objects. + +- Bug #1462152: file() now checks more thoroughly for invalid mode + strings and removes a possible "U" before passing the mode to the + C library function. + +- Patch #1488312, Fix memory alignment problem on SPARC in unicode + +- Bug #1487966: Fix SystemError with conditional expression in assignment + +- WindowsError now has two error code attributes: errno, which carries + the error values from errno.h, and winerror, which carries the error + values from winerror.h. Previous versions put the winerror.h values + (from GetLastError()) into the errno attribute. + +- Patch #1475845: Raise IndentationError for unexpected indent. + +- Patch #1479181: split open() and file() from being aliases for each other. + +- Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()`` + methods were always silently ignored by dictionaries when comparing keys. + They are now passed through (except when using the C API function + ``PyDict_GetItem()``, whose semantics did not change). + +- Bug #1456209: In some obscure cases it was possible for a class with a + custom ``__eq__()`` method to confuse dict internals when class instances + were used as a dict's keys and the ``__eq__()`` method mutated the dict. + No, you don't have any code that did this ;-) + +Extension Modules +----------------- + +- Bug #1295808: expat symbols should be namespaced in pyexpat + +- Patch #1462338: Upgrade pyexpat to expat 2.0.0 + +- Change binascii.hexlify to accept a read-only buffer instead of only a char + buffer and actually follow its documentation. + +- Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder. + +- Patch #1478788 (modified version): The functional extension module has + been renamed to _functools and a functools Python wrapper module added. + This provides a home for additional function related utilities that are + not specifically about functional programming. See PEP 309. + +- Patch #1493701: performance enhancements for struct module. + +- Patch #1490224: time.altzone is now set correctly on Cygwin. + +- Patch #1435422: zlib's compress and decompress objects now have a + copy() method. + +- Patch #1454481: thread stack size is now tunable at runtime for thread + enabled builds on Windows and systems with Posix threads support. + +- On Win32, os.listdir now supports arbitrarily-long Unicode path names + (up to the system limit of 32K characters). + +- Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}. + As a result, these functions now raise WindowsError instead of OSError. + +- ``time.clock()`` on Win64 should use the high-performance Windows + ``QueryPerformanceCounter()`` now (as was already the case on 32-bit + Windows platforms). + +- Calling Tk_Init twice is refused if the first call failed as that + may deadlock. + +- bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to + accept it without potentially using an uninitialized pointer. + +- bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods + assuming BerkeleyDB >= 4.0 and 4.4 respectively. [pybsddb project SF + patch numbers 1494885 and 1494902] + +- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class. + [pybsddb project SF patch number 1466734] + +- bsddb: fix DBCursor.pget() bug with keyword argument names when no data + parameter is supplied. [SF pybsddb bug #1477863] + +- bsddb: the __len__ method of a DB object has been fixed to return correct + results. It could previously incorrectly return 0 in some cases. + Fixes SF bug 1493322 (pybsddb bug 1184012). + +- bsddb: the bsddb.dbtables Modify method now raises the proper error and + aborts the db transaction safely when a modifier callback fails. + Fixes SF python patch/bug #1408584. + +- bsddb: multithreaded DB access using the simple bsddb module interface + now works reliably. It has been updated to use automatic BerkeleyDB + deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry + database calls that would previously deadlock. [SF python bug #775414] + +- Patch #1446489: add support for the ZIP64 extensions to zipfile. + +- Patch #1506645: add Python wrappers for the curses functions + is_term_resized, resize_term and resizeterm. + +Library +------- + +- Patch #815924: Restore ability to pass type= and icon= in tkMessageBox + functions. + +- Patch #812986: Update turtle output even if not tracing. + +- Patch #1494750: Destroy master after deleting children in + Tkinter.BaseWidget. + +- Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap. + +- Patch #763580: Add name and value arguments to Tkinter variable + classes. + +- Bug #1117556: SimpleHTTPServer now tries to find and use the system's + mime.types file for determining MIME types. + +- Bug #1339007: Shelf objects now don't raise an exception in their + __del__ method when initialization failed. + +- Patch #1455898: The MBCS codec now supports the incremental mode for + double-byte encodings. + +- ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to + guarantee that adjacent triples in the return list always describe + non-adjacent blocks. Previously, a pair of matching blocks could end + up being described by multiple adjacent triples that formed a partition + of the matching pair. + +- Bug #1498146: fix optparse to handle Unicode strings in option help, + description, and epilog. + +- Bug #1366250: minor optparse documentation error. + +- Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately; + clarify docs. + +- The wsgiref package has been added to the standard library. + +- The functions update_wrapper() and wraps() have been added to the functools + module. These make it easier to copy relevant metadata from the original + function when writing wrapper functions. + +- The optional ``isprivate`` argument to ``doctest.testmod()``, and the + ``doctest.is_private()`` function, both deprecated in 2.4, were removed. + +- Patch #1359618: Speed up charmap encoder by using a trie structure + for lookup. + +- The functions in the ``pprint`` module now sort dictionaries by key + before computing the display. Before 2.5, ``pprint`` sorted a dictionary + if and only if its display required more than one line, although that + wasn't documented. The new behavior increases predictability; e.g., + using ``pprint.pprint(a_dict)`` in a doctest is now reliable. + +- Patch #1497027: try HTTP digest auth before basic auth in urllib2 + (thanks for J. J. Lee). + +- Patch #1496206: improve urllib2 handling of passwords with respect to + default HTTP and HTTPS ports. + +- Patch #1080727: add "encoding" parameter to doctest.DocFileSuite. + +- Patch #1281707: speed up gzip.readline. + +- Patch #1180296: Two new functions were added to the locale module: + format_string() to get the effect of "format % items" but locale-aware, + and currency() to format a monetary number with currency sign. + +- Patch #1486962: Several bugs in the turtle Tk demo module were fixed + and several features added, such as speed and geometry control. + +- Patch #1488881: add support for external file objects in bz2 compressed + tarfiles. + +- Patch #721464: pdb.Pdb instances can now be given explicit stdin and + stdout arguments, making it possible to redirect input and output + for remote debugging. + +- Patch #1484695: Update the tarfile module to version 0.8. This fixes + a couple of issues, notably handling of long file names using the + GNU LONGNAME extension. + +- Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a + new flag when ``name`` is already the name of an option flag. + +- Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler + package. + +- Patch #1472854: make the rlcompleter.Completer class usable on non- + UNIX platforms. + +- Patch #1470846: fix urllib2 ProxyBasicAuthHandler. + +- Bug #1472827: correctly escape newlines and tabs in attribute values in + the saxutils.XMLGenerator class. + + +Build +----- + +- Bug #1502728: Correctly link against librt library on HP-UX. + +- OpenBSD 3.9 is supported now. + +- Patch #1492356: Port to Windows CE. + +- Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64. + +- Patch #1471883: Add --enable-universalsdk. + +C API +----- + +Tests +----- + +Tools +----- + +Documentation +------------- + + + +What's New in Python 2.5 alpha 2? +================================= + +*Release date: 27-APR-2006* + +Core and builtins +----------------- + +- Bug #1465834: 'bdist_wininst preinstall script support' was fixed + by converting these apis from macros into exported functions again: + + PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile + PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx + PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne + PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString + PyRun_String Py_CompileString + +- Under COUNT_ALLOCS, types are not necessarily immortal anymore. + +- All uses of PyStructSequence_InitType have been changed to initialize + the type objects only once, even if the interpreter is initialized + multiple times. + +- Bug #1454485, array.array('u') could crash the interpreter. This was + due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) + to unicode when it didn't make sense. 'u#' now requires a unicode string. + +- Py_UNICODE is unsigned. It was always documented as unsigned, but + due to a bug had a signed value in previous versions. + +- Patch #837242: ``id()`` of any Python object always gives a positive + number now, which might be a long integer. ``PyLong_FromVoidPtr`` and + ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has + never been correct to implement a ``__hash()__`` method that returns the + ``id()`` of an object: + + def __hash__(self): + return id(self) # WRONG + + because a hash result must be a (short) Python int but it was always + possible for ``id()`` to return a Python long. However, because ``id()`` + could return negative values before, on a 32-bit box an ``id()`` result + was always usable as a hash value before this patch. That's no longer + necessarily so. + +- Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) + to load extension modules and now provides the dl module. As a result, + sys.setdlopenflags() now works correctly on these systems. (SF patch + #1454844) + +- Patch #1463867: enhanced garbage collection to allow cleanup of cycles + involving generators that have paused outside of any ``try`` or ``with`` + blocks. (In 2.5a1, a paused generator that was part of a reference + cycle could not be garbage collected, regardless of whether it was + paused in a ``try`` or ``with`` block.) + +Extension Modules +----------------- + +- Patch #1191065: Fix preprocessor problems on systems where recvfrom + is a macro. + +- Bug #1467952: os.listdir() now correctly raises an error if readdir() + fails with an error condition. + +- Fixed bsddb.db.DBError derived exceptions so they can be unpickled. + +- Bug #1117761: bsddb.*open() no longer raises an exception when using + the cachesize parameter. + +- Bug #1149413: bsddb.*open() no longer raises an exception when using + a temporary db (file=None) with the 'n' flag to truncate on open. + +- Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 + as older versions cause excessive test failures. + +- Patch #1062014: AF_UNIX sockets under Linux have a special + abstract namespace that is now fully supported. + +Library +------- + +- Bug #1223937: subprocess.CalledProcessError reports the exit status + of the process using the returncode attribute, instead of + abusing errno. + +- Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes + a doctest to be skipped (the code is not run, and the expected output + or exception is ignored). + +- Fixed contextlib.nested to cope with exceptions being raised and + caught inside exit handlers. + +- Updated optparse module to Optik 1.5.1 (allow numeric constants in + hex, octal, or binary; add ``append_const`` action; keep going if + gettext cannot be imported; added ``OptionParser.destroy()`` method; + added ``epilog`` for better help generation). + +- Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when + called from a thread spawned as a side effect of importing a module. + +- The pydoc module now supports documenting packages contained in + .zip or .egg files. + +- The pkgutil module now has several new utility functions, such + as ``walk_packages()`` to support working with packages that are either + in the filesystem or zip files. + +- The mailbox module can now modify and delete messages from + mailboxes, in addition to simply reading them. Thanks to Gregory + K. Johnson for writing the code, and to the 2005 Google Summer of + Code for funding his work. + +- The ``__del__`` method of class ``local`` in module ``_threading_local`` + returned before accomplishing any of its intended cleanup. + +- Patch #790710: Add breakpoint command lists in pdb. + +- Patch #1063914: Add Tkinter.Misc.clipboard_get(). + +- Patch #1191700: Adjust column alignment in bdb breakpoint lists. + +- SimpleXMLRPCServer relied on the fcntl module, which is unavailable on + Windows. Bug #1469163. + +- The warnings, linecache, inspect, traceback, site, and doctest modules + were updated to work correctly with modules imported from zipfiles or + via other PEP 302 __loader__ objects. + +- Patch #1467770: Reduce usage of subprocess._active to processes which + the application hasn't waited on. + +- Patch #1462222: Fix Tix.Grid. + +- Fix exception when doing glob.glob('anything*/') + +- The pstats.Stats class accepts an optional stream keyword argument to + direct output to an alternate file-like object. + +Build +----- + +- The Makefile now has a reindent target, which runs reindent.py on + the library. + +- Patch #1470875: Building Python with MS Free Compiler + +- Patch #1161914: Add a python-config script. + +- Patch #1324762:Remove ccpython.cc; replace --with-cxx with + --with-cxx-main. Link with C++ compiler only if --with-cxx-main was + specified. (Can be overridden by explicitly setting LINKCC.) Decouple + CXX from --with-cxx-main, see description in README. + +- Patch #1429775: Link extension modules with the shared libpython. + +- Fixed a libffi build problem on MIPS systems. + +- ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV`` + now accept formats "%u" for unsigned ints, "%lu" for unsigned longs, + and "%zu" for unsigned integers of type ``size_t``. + +Tests +----- + +- test_contextlib now checks contextlib.nested can cope with exceptions + being raised and caught inside exit handlers. + +- test_cmd_line now checks operation of the -m and -c command switches + +- The test_contextlib test in 2.5a1 wasn't actually run unless you ran + it separately and by hand. It also wasn't cleaning up its changes to + the current Decimal context. + +- regrtest.py now has a -M option to run tests that test the new limits of + containers, on 64-bit architectures. Running these tests is only sensible + on 64-bit machines with more than two gigabytes of memory. The argument + passed is the maximum amount of memory for the tests to use. + +Tools +----- + +- Added the Python benchmark suite pybench to the Tools/ directory; + contributed by Marc-Andre Lemburg. + +Documentation +------------- + +- Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``. + +- PEP 343: Added Context Types section to the library reference + and attempted to bring other PEP 343 related documentation into + line with the implementation and/or python-dev discussions. + +- Bug #1337990: clarified that ``doctest`` does not support examples + requiring both expected output and an exception. + + +What's New in Python 2.5 alpha 1? +================================= + +*Release date: 05-APR-2006* + +Core and builtins +----------------- + +- PEP 338: -m command line switch now delegates to runpy.run_module + allowing it to support modules in packages and zipfiles + +- On Windows, .DLL is not an accepted file name extension for + extension modules anymore; extensions are only found if they + end in .PYD. + +- Bug #1421664: sys.stderr.encoding is now set to the same value as + sys.stdout.encoding. + +- __import__ accepts keyword arguments. + +- Patch #1460496: round() now accepts keyword arguments. + +- Fixed bug #1459029 - unicode reprs were double-escaped. + +- Patch #1396919: The system scope threads are reenabled on FreeBSD + 5.4 and later versions. + +- Bug #1115379: Compiling a Unicode string with an encoding declaration + now gives a SyntaxError. + +- Previously, Python code had no easy way to access the contents of a + cell object. Now, a ``cell_contents`` attribute has been added + (closes patch #1170323). + +- Patch #1123430: Python's small-object allocator now returns an arena to + the system ``free()`` when all memory within an arena becomes unused + again. Prior to Python 2.5, arenas (256KB chunks of memory) were never + freed. Some applications will see a drop in virtual memory size now, + especially long-running applications that, from time to time, temporarily + use a large number of small objects. Note that when Python returns an + arena to the platform C's ``free()``, there's no guarantee that the + platform C library will in turn return that memory to the operating system. + The effect of the patch is to stop making that impossible, and in tests it + appears to be effective at least on Microsoft C and gcc-based systems. + Thanks to Evan Jones for hard work and patience. + +- Patch #1434038: property() now uses the getter's docstring if there is + no "doc" argument given. This makes it possible to legitimately use + property() as a decorator to produce a read-only property. + +- PEP 357, patch 1436368: add an __index__ method to int/long and a matching + nb_index slot to the PyNumberMethods struct. The slot is consulted instead + of requiring an int or long in slicing and a few other contexts, enabling + other objects (e.g. Numeric Python's integers) to be used as slice indices. + +- Fixed various bugs reported by Coverity's Prevent tool. + +- PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the + new exception base class, BaseException, which has a new message attribute. + KeyboardInterrupt and SystemExit to directly inherit from BaseException now. + Raising a string exception now raises a DeprecationWarning. + +- Patch #1438387, PEP 328: relative and absolute imports. Imports can now be + explicitly relative, using 'from .module import name' to mean 'from the same + package as this module is in. Imports without dots still default to the + old relative-then-absolute, unless 'from __future__ import + absolute_import' is used. + +- Properly check if 'warnings' raises an exception (usually when a filter set + to "error" is triggered) when raising a warning for raising string + exceptions. + +- CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. + The name was removed from Include/code.h. + +- PEP 308: conditional expressions were added: (x if cond else y). + +- Patch 1433928: + - The copy module now "copies" function objects (as atomic objects). + - dict.__getitem__ now looks for a __missing__ hook before raising + KeyError. + +- PEP 343: with statement implemented. Needs ``from __future__ import + with_statement``. Use of 'with' as a variable will generate a warning. + Use of 'as' as a variable will also generate a warning (unless it's + part of an import statement). + The following objects have __context__ methods: + - The built-in file type. + - The thread.LockType type. + - The following types defined by the threading module: + Lock, RLock, Condition, Semaphore, BoundedSemaphore. + - The decimal.Context class. + +- Fix the encodings package codec search function to only search + inside its own package. Fixes problem reported in patch #1433198. + + Note: Codec packages should implement and register their own + codec search function. PEP 100 has the details. + +- PEP 353: Using ``Py_ssize_t`` as the index type. + +- ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging + info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353) + now allow Python to make use of memory blocks exceeding 2**32 bytes for + some purposes on 64-bit boxes. A ``PYMALLOC_DEBUG`` build was limited + to 4-byte allocations before. + +- Patch #1400181, fix unicode string formatting to not use the locale. + This is how string objects work. u'%f' could use , instead of . + for the decimal point. Now both strings and unicode always use periods. + +- Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. + configure would break checking curses.h. + +- Bug #959576: The pwd module is now builtin. This allows Python to be + built on UNIX platforms without $HOME set. + +- Bug #1072182, fix some potential problems if characters are signed. + +- Bug #889500, fix line number on SyntaxWarning for global declarations. + +- Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. + +- Support for converting hex strings to floats no longer works. + This was not portable. float('0x3') now raises a ValueError. + +- Patch #1382163: Expose Subversion revision number to Python. New C API + function Py_GetBuildNumber(). New attribute sys.subversion. Build number + is now displayed in interactive prompt banner. + +- Implementation of PEP 341 - Unification of try/except and try/finally. + "except" clauses can now be written together with a "finally" clause in + one try statement instead of two nested ones. Patch #1355913. + +- Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec + now encodes backslash correctly. + +- Patch #1350409: Work around signal handling bug in Visual Studio 2005. + +- Bug #1281408: Py_BuildValue now works correctly even with unsigned longs + and long longs. + +- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" + It was possible for dlerror() to return a NULL pointer, so + it will now use a default error message in this case. + +- Replaced most Unicode charmap codecs with new ones using the + new Unicode translate string feature in the builtin charmap + codec; the codecs were created from the mapping tables available + at ftp.unicode.org and contain a few updates (e.g. the Mac OS + encodings now include a mapping for the Apple logo) + +- Added a few more codecs for Mac OS encodings + +- Sped up some Unicode operations. + +- A new AST parser implementation was completed. The abstract + syntax tree is available for read-only (non-compile) access + to Python code; an _ast module was added. + +- SF bug #1167751: fix incorrect code being produced for generator expressions. + The following code now raises a SyntaxError: foo(a = i for i in range(10)) + +- SF Bug #976608: fix SystemError when mtime of an imported file is -1. + +- SF Bug #887946: fix segfault when redirecting stdin from a directory. + Provide a warning when a directory is passed on the command line. + +- Fix segfault with invalid coding. + +- SF bug #772896: unknown encoding results in MemoryError. + +- All iterators now have a Boolean value of True. Formerly, some iterators + supported a __len__() method which evaluated to False when the iterator + was empty. + +- On 64-bit platforms, when __len__() returns a value that cannot be + represented as a C int, raise OverflowError. + +- test__locale is skipped on OS X < 10.4 (only partial locale support is + present). + +- SF bug #893549: parsing keyword arguments was broken with a few format + codes. + +- Changes donated by Elemental Security to make it work on AIX 5.3 + with IBM's 64-bit compiler (SF patch #1284289). This also closes SF + bug #105470: test_pwd fails on 64bit system (Opteron). + +- Changes donated by Elemental Security to make it work on HP-UX 11 on + Itanium2 with HP's 64-bit compiler (SF patch #1225212). + +- Disallow keyword arguments for type constructors that don't use them + (fixes bug #1119418). + +- Forward UnicodeDecodeError into SyntaxError for source encoding errors. + +- SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for + exceptions that cause a function to exit. + +- The implementation of set() and frozenset() was revised to use its + own internal data structure. Memory consumption is reduced by 1/3 + and there are modest speed-ups as well. The API is unchanged. + +- SF bug #1238681: freed pointer is used in longobject.c:long_pow(). + +- SF bug #1229429: PyObject_CallMethod failed to decrement some + reference counts in some error exit cases. + +- SF bug #1185883: Python's small-object memory allocator took over + a block managed by the platform C library whenever a realloc specified + a small new size. However, there's no portable way to know then how + much of the address space following the pointer is valid, so there's no + portable way to copy data from the C-managed block into Python's + small-object space without risking a memory fault. Python's small-object + realloc now leaves such blocks under the control of the platform C + realloc. + +- SF bug #1232517: An overflow error was not detected properly when + attempting to convert a large float to an int in os.utime(). + +- SF bug #1224347: hex longs now print with lowercase letters just + like their int counterparts. + +- SF bug #1163563: the original fix for bug #1010677 ("thread Module + Breaks PyGILState_Ensure()") broke badly in the case of multiple + interpreter states; back out that fix and do a better job (see + http://mail.python.org/pipermail/python-dev/2005-June/054258.html + for a longer write-up of the problem). + +- SF patch #1180995: marshal now uses a binary format by default when + serializing floats. + +- SF patch #1181301: on platforms that appear to use IEEE 754 floats, + the routines that promise to produce IEEE 754 binary representations + of floats now simply copy bytes around. + +- bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP + 278. + +- patch #1109424: int, long, float, complex, and unicode now check for the + proper magic slot for type conversions when subclassed. Previously the + magic slot was ignored during conversion. Semantics now match the way + subclasses of str always behaved. int/long/float, conversion of an instance + to the base class has been moved to the proper nb_* magic slot and out of + PyNumber_*(). + Thanks Walter D�rwald. + +- Descriptors defined in C with a PyGetSetDef structure, where the setter is + NULL, now raise an AttributeError when attempting to set or delete the + attribute. Previously a TypeError was raised, but this was inconsistent + with the equivalent pure-Python implementation. + +- It is now safe to call PyGILState_Release() before + PyEval_InitThreads() (note that if there is reason to believe there + are multiple threads around you still must call PyEval_InitThreads() + before using the Python API; this fix is for extension modules that + have no way of knowing if Python is multi-threaded yet). + +- Typing Ctrl-C whilst raw_input() was waiting in a build with threads + disabled caused a crash. + +- Bug #1165306: instancemethod_new allowed the creation of a method + with im_class == im_self == NULL, which caused a crash when called. + +- Move exception finalisation later in the shutdown process - this + fixes the crash seen in bug #1165761 + +- Added two new builtins, any() and all(). + +- Defining a class with empty parentheses is now allowed + (e.g., ``class C(): pass`` is no longer a syntax error). + Patch #1176012 added support to the 'parser' module and 'compiler' package + (thanks to logistix for that added support). + +- Patch #1115086: Support PY_LONGLONG in structmember. + +- Bug #1155938: new style classes did not check that __init__() was + returning None. + +- Patch #802188: Report characters after line continuation character + ('\') with a specific error message. + +- Bug #723201: Raise a TypeError for passing bad objects to 'L' format. + +- Bug #1124295: the __name__ attribute of file objects was + inadvertently made inaccessible in restricted mode. + +- Bug #1074011: closing sys.std{out,err} now causes a flush() and + an ferror() call. + +- min() and max() now support key= arguments with the same meaning as in + list.sort(). + +- The peephole optimizer now performs simple constant folding in expressions: + (2+3) --> (5). + +- set and frozenset objects can now be marshalled. SF #1098985. + +- Bug #1077106: Poor argument checking could cause memory corruption + in calls to os.read(). + +- The parser did not complain about future statements in illegal + positions. It once again reports a syntax error if a future + statement occurs after anything other than a doc string. + +- Change the %s format specifier for str objects so that it returns a + unicode instance if the argument is not an instance of basestring and + calling __str__ on the argument returns a unicode instance. + +- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the + current thread state when the auto-GIL-state machinery knows about + it (since the thread state is being deleted, continuing to remember it + can't help, but can hurt if another thread happens to get created with + the same thread id). + +Extension Modules +----------------- + +- Patch #1380952: fix SSL objects timing out on consecutive read()s + +- Patch #1309579: wait3 and wait4 were added to the posix module. + +- Patch #1231053: The audioop module now supports encoding/decoding of alaw. + In addition, the existing ulaw code was updated. + +- RFE #567972: Socket objects' family, type and proto properties are + now exposed via new attributes. + +- Everything under lib-old was removed. This includes the following modules: + Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, + lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, + util, whatsound, whrandom, zmod + +- The following modules were removed: regsub, reconvert, regex, regex_syntax. + +- re and sre were swapped, so help(re) provides full help. importing sre + is deprecated. The undocumented re.engine variable no longer exists. + +- Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle + SS2 (single-shift 2) escape sequences correctly. + +- The unicodedata module was updated to the 4.1 version of the Unicode + database. The 3.2 version is still available as unicodedata.db_3_2_0 + for applications that require this specific version (such as IDNA). + +- The timing module is no longer built by default. It was deprecated + in PEP 4 in Python 2.0 or earlier. + +- Patch 1433928: Added a new type, defaultdict, to the collections module. + This uses the new __missing__ hook behavior added to dict (see above). + +- Bug #854823: socketmodule now builds on Sun platforms even when + INET_ADDRSTRLEN is not defined. + +- Patch #1393157: os.startfile() now has an optional argument to specify + a "command verb" to invoke on the file. + +- Bug #876637, prevent stack corruption when socket descriptor + is larger than FD_SETSIZE. + +- Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. + mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. + mmap.mmap(0, size) should not be used on Windows for anonymous memory. + +- Patch #1422385: The nis module now supports access to domains other + than the system default domain. + +- Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps + are reported, the limit on path name lengths is removed, and stat reports + WindowsError now (instead of OSError). + +- Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. + +- Bug #1413192, fix seg fault in bsddb if a transaction was deleted + before the env. + +- Patch #1103116: Basic AF_NETLINK support. + +- Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) + +- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. + Also fix ungetmouse() which did not accept arguments properly. + The code now conforms to the documented signature. + +- Bug #1400115, Fix segfault when calling curses.panel.userptr() + without prior setting of the userptr. + +- Fix 64-bit problems in bsddb. + +- Patch #1365916: fix some unsafe 64-bit mmap methods. + +- Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build + problem on AIX. + +- Bug #869197: os.setgroups rejects long integer arguments + +- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint + +- Bug #1344508, Fix UNIX mmap leaking file descriptors + +- Patch #1338314, Bug #1336623: fix tarfile so it can extract + REGTYPE directories from tarfiles written by old programs. + +- Patch #1407992, fixes broken bsddb module db associate when using + BerkeleyDB 3.3, 4.0 or 4.1. + +- Get bsddb module to build with BerkeleyDB version 4.4 + +- Get bsddb module to build with BerkeleyDB version 3.2 + +- Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, + but Python incorrectly assumes it is in UTF-8 format + +- Fix parse errors in the readline module when compiling without threads. + +- Patch #1288833: Removed thread lock from socket.getaddrinfo on + FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). + +- Patches #1298449 and #1298499: Add some missing checks for error + returns in cStringIO.c. + +- Patch #1297028: fix segfault if call type on MultibyteCodec, + MultibyteStreamReader, or MultibyteStreamWriter + +- Fix memory leak in posix.access(). + +- Patch #1213831: Fix typo in unicodedata._getcode. + +- Bug #1007046: os.startfile() did not accept unicode strings encoded in + the file system encoding. + +- Patch #756021: Special-case socket.inet_aton('255.255.255.255') for + platforms that don't have inet_aton(). + +- Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. + +- Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one + line without newlines. + +- Bug #728515: mmap.resize() now resizes the file on Unix as it did + on Windows. + +- Patch #1180695: Add nanosecond stat resolution, and st_gen, + st_birthtime for FreeBSD. + +- Patch #1231069: The fcntl.ioctl function now uses the 'I' code for + the request code argument, which results in more C-like behaviour + for large or negative values. + +- Bug #1234979: For the argument of thread.Lock.acquire, the Windows + implementation treated all integer values except 1 as false. + +- Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. + +- Patch #1212117: os.stat().st_flags is now accessible as a attribute + if available on the platform. + +- Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if + available on the platform. + +- Bug #1166660: The readline module could segfault if hook functions + were set in a different thread than that which called readline. + +- collections.deque objects now support a remove() method. + +- operator.itemgetter() and operator.attrgetter() now support retrieving + multiple fields. This provides direct support for sorting on multiple + keys (primary, secondary, etc). + +- os.access now supports Unicode path names on non-Win32 systems. + +- Patches #925152, #1118602: Avoid reading after the end of the buffer + in pyexpat.GetInputContext. + +- Patches #749830, #1144555: allow UNIX mmap size to default to current + file size. + +- Added functional.partial(). See PEP309. + +- Patch #1093585: raise a ValueError for negative history items in readline. + {remove_history,replace_history} + +- The spwd module has been added, allowing access to the shadow password + database. + +- stat_float_times is now True. + +- array.array objects are now picklable. + +- the cPickle module no longer accepts the deprecated None option in the + args tuple returned by __reduce__(). + +- itertools.islice() now accepts None for the start and step arguments. + This allows islice() to work more readily with slices: + islice(s.start, s.stop, s.step) + +- datetime.datetime() now has a strptime class method which can be used to + create datetime object using a string and format. + +- Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc + with the implementation from http://sourceforge.net/projects/libmd5-rfc/. + +Library +------- + +- Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have + been renamed to have only a single underscore prefix. This was done to + make subclassing easier. + +- PEP 338: new module runpy defines a run_module function to support + executing modules which provide access to source code or a code object + via the PEP 302 import mechanisms. + +- The email module's parsedate_tz function now sets the daylight savings + flag to -1 (unknown) since it can't tell from the date whether it should + be set. + +- Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results + now sport attributes that provide access to the parts of the result. + +- Patch #1462498: sgmllib now handles entity and character references + in attribute values. + +- Added the sqlite3 package. This is based on pysqlite2.1.3, and provides + a DB-API interface in the standard library. You'll need sqlite 3.0.8 or + later to build this - if you have an earlier version, the C extension + module will not be built. + +- Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts + aren't officially supported here, and trying to use them will probably + raise an exception some day. But dicts have been allowed, and "mostly + worked", so support for them won't go away without warning. + +- Bug #1445068: getpass.getpass() can now be given an explicit stream + argument to specify where to write the prompt. + +- Patch #1462313, bug #1443328: the pickle modules now can handle classes + that have __private names in their __slots__. + +- Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. + +- patch #1457316: "setup.py upload" now supports --identity to select the + key to be used for signing the uploaded code. + +- Queue.Queue objects now support .task_done() and .join() methods + to make it easier to monitor when daemon threads have completed + processing all enqueued tasks. Patch #1455676. + +- popen2.Popen objects now preserve the command in a .cmd attribute. + +- Added the ctypes ffi package. + +- email 4.0 package now integrated. This is largely the same as the email 3.0 + package that was included in Python 2.3, except that PEP 8 module names are + now used (e.g. mail.message instead of email.Message). The MIME classes + have been moved to a subpackage (e.g. email.mime.text instead of + email.MIMEText). The old names are still supported for now. Several + deprecated Message methods have been removed and lots of bugs have been + fixed. More details can be found in the email package documentation. + +- Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object + (a subclass of tuple) that provides incremental decoders and encoders + (a way to use stateful codecs without the stream API). Python functions + codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well + as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() + have been added. + +- Patch #1359365: Calling next() on a closed StringIO.String object raises + a ValueError instead of a StopIteration now (like file and cString.String do). + cStringIO.StringIO.isatty() will raise a ValueError now if close() has been + called before (like file and StringIO.StringIO do). + +- A regrtest option -w was added to re-run failed tests in verbose mode. + +- Patch #1446372: quit and exit can now be called from the interactive + interpreter to exit. + +- The function get_count() has been added to the gc module, and gc.collect() + grew an optional 'generation' argument. + +- A library msilib to generate Windows Installer files, and a distutils + command bdist_msi have been added. + +- PEP 343: new module contextlib.py defines decorator @contextmanager + and helpful context managers nested() and closing(). + +- The compiler package now supports future imports after the module docstring. + +- Bug #1413790: zipfile now sanitizes absolute archive names that are + not allowed by the specs. + +- Patch #1215184: FileInput now can be given an opening hook which can + be used to control how files are opened. + +- Patch #1212287: fileinput.input() now has a mode parameter for + specifying the file mode input files should be opened with. + +- Patch #1215184: fileinput now has a fileno() function for getting the + current file number. + +- Patch #1349274: gettext.install() now optionally installs additional + translation functions other than _() in the builtin namespace. + +- Patch #1337756: fileinput now accepts Unicode filenames. + +- Patch #1373643: The chunk module can now read chunks larger than + two gigabytes. + +- Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. + +- Bug #1430298: It is now possible to send a mail with an empty + return address using smtplib. + +- Bug #1432260: The names of lambda functions are now properly displayed + in pydoc. + +- Patch #1412872: zipfile now sets the creator system to 3 (Unix) + unless the system is Win32. + +- Patch #1349118: urllib now supports user:pass@ style proxy + specifications, raises IOErrors when proxies for unsupported protocols + are defined, and uses the https proxy on https redirections. + +- Bug #902075: urllib2 now supports 'host:port' style proxy specifications. + +- Bug #1407902: Add support for sftp:// URIs to urlparse. + +- Bug #1371247: Update Windows locale identifiers in locale.py. + +- Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters + any more. + +- Bug #1403410: The warnings module now doesn't get confused + when it can't find out the module name it generates a warning for. + +- Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. + +- Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode + +- Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise + LoadError as documented, instead of IOError. For compatibility, + LoadError subclasses IOError. + +- Added the hashlib module. It provides secure hash functions for MD5 and + SHA1, 224, 256, 384, and 512. Note that recent developments make the + historic MD5 and SHA1 unsuitable for cryptographic-strength applications. + In <http://mail.python.org/pipermail/python-dev/2005-December/058850.html> + Ronald L. Rivest offered this advice for Python: + + "The consensus of researchers in this area (at least as + expressed at the NIST Hash Function Workshop 10/31/05), + is that SHA-256 is a good choice for the time being, but + that research should continue, and other alternatives may + arise from this research. The larger SHA's also seem OK." + +- Added a subset of Fredrik Lundh's ElementTree package. Available + modules are xml.etree.ElementTree, xml.etree.ElementPath, and + xml.etree.ElementInclude, from ElementTree 1.2.6. + +- Patch #1162825: Support non-ASCII characters in IDLE window titles. + +- Bug #1365984: urllib now opens "data:" URLs again. + +- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception + is raised within the method itself on a previous call (e.g., passing in an + illegal argument) + +- Bug #1340337: change time.strptime() to always return ValueError when there + is an error in the format string. + +- Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). + +- Bug #729103: pydoc.py: Fix docother() method to accept additional + "parent" argument. + +- Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes + for padding. + +- Bug #1296004: httplib.py: Limit maximal amount of data read from the + socket to avoid a MemoryError on Windows. + +- Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE + to get the correct encoding. + +- Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of + languages. + +- Patch #1268314: Cache lines in StreamReader.readlines for performance. + +- Bug #1290505: Fix clearing the regex cache for time.strptime(). + +- Bug #1167128: Fix size of a symlink in a tarfile to be 0. + +- Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook + functionality. + +- Bug #1163178: Make IDNA return an empty string when the input is empty. + +- Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output + separator and do not output trailing semicolon. + +- Patch #1062060: urllib.urlretrieve() now raises a new exception, named + ContentTooShortException, when the actually downloaded size does not + match the Content-Length header. + +- Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. + +- Bug #1178484: Return complete lines from codec stream readers + even if there is an exception in later lines, resulting in + correct line numbers for decoding errors in source code. + +- Bug #1192315: Disallow negative arguments to clear() in pdb. + +- Patch #827386: Support absolute source paths in msvccompiler.py. + +- Patch #1105730: Apply the new implementation of commonprefix in posixpath + to ntpath, macpath, os2emxpath and riscospath. + +- Fix a problem in Tkinter introduced by SF patch #869468: delete bogus + __hasattr__ and __delattr__ methods on class Tk that were breaking + Tkdnd. + +- Bug #1015140: disambiguated the term "article id" in nntplib docs and + docstrings to either "article number" or "message id". + +- Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a + parameter, but uses the usual "kwargs=None". + +- textwrap now processes text chunks at O(n) speed instead of O(n**2). + Patch #1209527 (Contributed by Connelly). + +- urllib2 has now an attribute 'httpresponses' mapping from HTTP status code + to W3C name (404 -> 'Not Found'). RFE #1216944. + +- Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, + as this can cause problems with apps closing all file descriptors. + +- Bug #839151: Fix an attempt to access sys.argv in the warnings module; + it can be missing in embedded interpreters + +- Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. + +- Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via + error messages. + +- Bug #1108948: Cookie.py produced invalid JavaScript code. + +- The tokenize module now detects and reports indentation errors. + Bug #1224621. + +- The tokenize module has a new untokenize() function to support a full + roundtrip from lexed tokens back to Python source code. In addition, + the generate_tokens() function now accepts a callable argument that + terminates by raising StopIteration. + +- Bug #1196315: fix weakref.WeakValueDictionary constructor. + +- Bug #1213894: os.path.realpath didn't resolve symlinks that were the first + component of the path. + +- Patch #1120353: The xmlrpclib module provides better, more transparent, + support for datetime.{datetime,date,time} objects. With use_datetime set + to True, applications shouldn't have to fiddle with the DateTime wrapper + class at all. + +- distutils.commands.upload was added to support uploading distribution + files to PyPI. + +- distutils.commands.register now encodes the data as UTF-8 before posting + them to PyPI. + +- decimal operator and comparison methods now return NotImplemented + instead of raising a TypeError when interacting with other types. This + allows other classes to implement __radd__ style methods and have them + work as expected. + +- Bug #1163325: Decimal infinities failed to hash. Attempting to + hash a NaN raised an InvalidOperation instead of a TypeError. + +- Patch #918101: Add tarfile open mode r|* for auto-detection of the + stream compression; add, for symmetry reasons, r:* as a synonym of r. + +- Patch #1043890: Add extractall method to tarfile. + +- Patch #1075887: Don't require MSVC in distutils if there is nothing + to build. + +- Patch #1103407: Properly deal with tarfile iterators when untarring + symbolic links on Windows. + +- Patch #645894: Use getrusage for computing the time consumption in + profile.py if available. + +- Patch #1046831: Use get_python_version where appropriate in sysconfig.py. + +- Patch #1117454: Remove code to special-case cookies without values + in LWPCookieJar. + +- Patch #1117339: Add cookielib special name tests. + +- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. + +- Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. + +- Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject. + +- Patch #1104111: Alter setup.py --help and --help-commands. + +- Patch #1121234: Properly cleanup _exit and tkerror commands. + +- Patch #1049151: xdrlib now unpacks booleans as True or False. + +- Fixed bug in a NameError bug in cookielib. Patch #1116583. + +- Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This + disables recursive traversal through instance attributes, which can + be exploited in various ways. + +- Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec + flags on the HTTP listening socket. + +- Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. + Fixed by reading the HTTP body in chunks instead of one big socket.read(). + +- Patches #893642, #1039083: add allow_none, encoding arguments to + constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler. + +- Bug #1110478: Revert os.environ.update to do putenv again. + +- Bug #1103844: fix distutils.install.dump_dirs() with negated options. + +- os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. + +- Enhancements to the csv module: + + + Dialects are now validated by the underlying C code, better + reflecting its capabilities, and improving its compliance with + PEP 305. + + Dialect parameter parsing has been re-implemented to improve error + reporting. + + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 + dictates. + + the parser now removes the escapechar prefix from escaped characters. + + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric + types, rather than any object that can be represented as a numeric. + + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields + to floats. + + reader now allows \r characters to be quoted (previously it only allowed + \n to be quoted). + + writer doublequote handling improved. + + Dialect classes passed to the module are no longer instantiated by + the module before being parsed (the former validation scheme required + this, but the mechanism was unreliable). + + The dialect registry now contains instances of the internal + C-coded dialect type, rather than references to python objects. + + the internal c-coded dialect type is now immutable. + + register_dialect now accepts the same keyword dialect specifications + as the reader and writer, allowing the user to register dialects + without first creating a dialect class. + + a configurable limit to the size of parsed fields has been added - + previously, an unmatched quote character could result in the entire + file being read into the field buffer before an error was reported. + + A new module method csv.field_size_limit() has been added that sets + the parser field size limit (returning the former limit). The initial + limit is 128kB. + + A line_num attribute has been added to the reader object, which tracks + the number of lines read from the source iterator. This is not + the same as the number of records returned, as records can span + multiple lines. + + reader and writer objects were not being registered with the cyclic-GC. + This has been fixed. + +- _DummyThread objects in the threading module now delete self.__block that is + inherited from _Thread since it uses up a lock allocated by 'thread'. The + lock primitives tend to be limited in number and thus should not be wasted on + a _DummyThread object. Fixes bug #1089632. + +- The imghdr module now detects Exif files. + +- StringIO.truncate() now correctly adjusts the size attribute. + (Bug #951915). + +- locale.py now uses an updated locale alias table (built using + Tools/i18n/makelocalealias.py, a tool to parse the X11 locale + alias file); the encoding lookup was enhanced to use Python's + encoding alias table. + +- moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. + +- the pickle module no longer accepts the deprecated None option in the + args tuple returned by __reduce__(). + +- optparse now optionally imports gettext. This allows its use in setup.py. + +- the pickle module no longer uses the deprecated bin parameter. + +- the shelve module no longer uses the deprecated binary parameter. + +- the pstats module no longer uses the deprecated ignore() method. + +- the filecmp module no longer uses the deprecated use_statcache argument. + +- unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully + extended or overridden by subclasses. Formerly, the subclassed method would + be ignored by the rest of the module. (Bug #1078905). + +- heapq.nsmallest() and heapq.nlargest() now support key= arguments with + the same meaning as in list.sort(). + +- Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only + once when a size argument is given. This prevents a buffer overflow in the + tokenizer with very long source lines. + +- Bug #1083110: ``zlib.decompress.flush()`` would segfault if called + immediately after creating the object, without any intervening + ``.decompress()`` calls. + +- The reconvert.quote function can now emit triple-quoted strings. The + reconvert module now has some simple documentation. + +- ``UserString.MutableString`` now supports negative indices in + ``__setitem__`` and ``__delitem__`` + +- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") + correctly. + +- Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by + ``codecs.StreamReader.readline()`` has a trailing "\r", read one more + character even if the user has passed a size parameter to get a proper + line ending. Remove the special handling of a "\r\n" that has been split + between two lines. + +- Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain + about illegal code points. The codec now supports PEP 293 style error + handlers. + +- Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads + from the input stream, so that the output is a byte string in the correct + encoding instead of a unicode string. + +- Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than + considering it exactly like a '*'. + +- Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to + ``encodings.aliases``. + +- ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. + +- Patch #1413711: Certain patterns of differences were making difflib + touch the recursion limit. + +- Bug #947906: An object oriented interface has been added to the calendar + module. It's possible to generate HTML calendar now and the module can be + called as a script (e.g. via ``python -mcalendar``). Localized month and + weekday names can be ouput (even if an exotic encoding is used) using + special classes that use unicode. + +Build +----- + +- Fix test_float, test_long, and test_struct failures on Tru64 with gcc + by using -mieee gcc option. + +- Patch #1432345: Make python compile on DragonFly. + +- Build support for Win64-AMD64 was added. + +- Patch #1428494: Prefer linking against ncursesw over ncurses library. + +- Patch #881820: look for openpty and forkpty also in libbsd. + +- The sources of zlib are now part of the Python distribution (zlib 1.2.3). + The zlib module is now builtin on Windows. + +- Use -xcode=pic32 for CCSHARED on Solaris with SunPro. + +- Bug #1189330: configure did not correctly determine the necessary + value of LINKCC if python was built with GCC 4.0. + +- Upgrade Windows build to zlib 1.2.3 which eliminates a potential security + vulnerability in zlib 1.2.1 and 1.2.2. + +- EXTRA_CFLAGS has been introduced as an environment variable to hold compiler + flags that change binary compatibility. Changes were also made to + distutils.sysconfig to also use the environment variable when used during + compilation of the interpreter and of C extensions through distutils. + +- SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, + and linking has changed (prebinding is now deprecated, and libcc_dynamic + no longer exists). This configure patch makes things right. + +- Bug #1158607: Build with --disable-unicode again. + +- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is + defined. Discovered as a result of not being able to build on OS X. + +- setup.py now uses the directories specified in LDFLAGS using the -L option + and in CPPFLAGS using the -I option for adding library and include + directories, respectively, for compiling extension modules against. This has + led to the core being compiled using the values in CPPFLAGS. It also removes + the need for the special-casing of both DarwinPorts and Fink for darwin since + the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, + ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for + Fink, ``-I/opt/local/include`` for DarwinPorts). + +- Test in configure.in that checks for tzset no longer dependent on tm->tm_zone + to exist in the struct (not required by either ISO C nor the UNIX 2 spec). + Tests for sanity in tzname when HAVE_TZNAME defined were also defined. + Closes bug #1096244. Thanks Gregory Bond. + +C API +----- + +- ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to + ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory + is obtained via the ``PyObject_`` family, it must be released via the + ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has + always been officially true, but when Python's small-object allocator was + introduced, an attempt was made to cater to a few extension modules + discovered at the time that obtained memory via ``PyObject_New`` but + released it via ``PyMem_DEL``. It's years later, and if such code still + exists it will fail now (probably with segfaults, but calling wrong + low-level memory management functions can yield many symptoms). + +- Added a C API for set and frozenset objects. + +- Removed PyRange_New(). + +- Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the + mapping argument now. This string is used as a mapping table. Byte values + greater than the length of the string and 0xFFFE are treated as undefined + mappings. + + +Tests +----- + +- In test_os, st_?time is now truncated before comparing it with ST_?TIME. + +- Patch #1276356: New resource "urlfetch" is implemented. This enables + even impatient people to run tests that require remote files. + + +Documentation +------------- + +- Bug #1402224: Add warning to dl docs about crashes. + +- Bug #1396471: Document that Windows' ftell() can return invalid + values for text files with UNIX-style line endings. + +- Bug #1274828: Document os.path.splitunc(). + +- Bug #1190204: Clarify which directories are searched by site.py. + +- Bug #1193849: Clarify os.path.expanduser() documentation. + +- Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. + +- Bug #755617: Document the effects of os.chown() on Windows. + +- Patch #1180012: The documentation for modulefinder is now in the library reference. + +- Patch #1213031: Document that os.chown() accepts argument values of -1. + +- Bug #1190563: Document os.waitpid() return value with WNOHANG flag. + +- Bug #1175022: Correct the example code for property(). + +- Document the IterableUserDict class in the UserDict module. + Closes bug #1166582. + +- Remove all latent references for "Macintosh" that referred to semantics for + Mac OS 9 and change to reflect the state for OS X. + Closes patch #1095802. Thanks Jack Jansen. + +Mac +--- + + +New platforms +------------- + +- FreeBSD 7 support is added. + + +Tools/Demos +----------- + +- Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that + directory for syntax highlighting in Vim. Vim directory was added and placed + vimrc to it (was previous up a level). + +- Added two new files to Tools/scripts: pysource.py, which recursively + finds Python source files, and findnocoding.py, which finds Python + source files that need an encoding declaration. + Patch #784089, credits to Oleg Broytmann. + +- Bug #1072853: pindent.py used an uninitialized variable. + +- Patch #1177597: Correct Complex.__init__. + +- Fixed a display glitch in Pynche, which could cause the right arrow to + wiggle over by a pixel. + + What's New in Python 2.4 final? =============================== @@ -1057,14 +1057,14 @@ Library written to disk after calling .flush() or .close(). (Patch by David Watson.) -- Patch #1592250: Add elidge argument to Tkinter.Text.search. +- Patch #1592250: Add elide argument to Tkinter.Text.search. -- Patch #838546: Make terminal become controlling in pty.fork() +- Patch #838546: Make terminal become controlling in pty.fork(). - Patch #1351744: Add askyesnocancel helper for tkMessageBox. - Patch #1060577: Extract list of RPM files from spec file in - bdist_rpm + bdist_rpm. - Bug #1586613: fix zlib and bz2 codecs' incremental en/decoders. @@ -1148,7 +1148,8 @@ Library - idle: Honor the "Cancel" action in the save dialog (Debian bug #299092). - Fix utf-8-sig incremental decoder, which didn't recognise a BOM when the - first chunk fed to the decoder started with a BOM, but was longer than 3 bytes. + first chunk fed to the decoder started with a BOM, but was longer than 3 + bytes. - The implementation of UnicodeError objects has been simplified (start and end attributes are now stored directly as Py_ssize_t members). @@ -1648,2143 +1649,6 @@ Mac lead to the deprecation of macostools.touched() as it relied solely on macfs and was a no-op under OS X. - -What's New in Python 2.5 release candidate 1? -============================================= - -*Release date: 17-AUG-2006* - -Core and builtins ------------------ - -- Unicode objects will no longer raise an exception when being - compared equal or unequal to a string and a UnicodeDecodeError - exception occurs, e.g. as result of a decoding failure. - - Instead, the equal (==) and unequal (!=) comparison operators will - now issue a UnicodeWarning and interpret the two objects as - unequal. The UnicodeWarning can be filtered as desired using - the warning framework, e.g. silenced completely, turned into an - exception, logged, etc. - - Note that compare operators other than equal and unequal will still - raise UnicodeDecodeError exceptions as they've always done. - -- Fix segfault when doing string formatting on subclasses of long. - -- Fix bug related to __len__ functions using values > 2**32 on 64-bit machines - with new-style classes. - -- Fix bug related to __len__ functions returning negative values with - classic classes. - -- Patch #1538606, Fix __index__() clipping. There were some problems - discovered with the API and how integers that didn't fit into Py_ssize_t - were handled. This patch attempts to provide enough alternatives - to effectively use __index__. - -- Bug #1536021: __hash__ may now return long int; the final hash - value is obtained by invoking hash on the long int. - -- Bug #1536786: buffer comparison could emit a RuntimeWarning. - -- Bug #1535165: fixed a segfault in input() and raw_input() when - sys.stdin is closed. - -- On Windows, the PyErr_Warn function is now exported from - the Python dll again. - -- Bug #1191458: tracing over for loops now produces a line event - on each iteration. Fixing this problem required changing the .pyc - magic number. This means that .pyc files generated before 2.5c1 - will be regenerated. - -- Bug #1333982: string/number constants were inappropriately stored - in the byte code and co_consts even if they were not used, ie - immediately popped off the stack. - -- Fixed a reference-counting problem in property(). - - -Library -------- - -- Fix a bug in the ``compiler`` package that caused invalid code to be - generated for generator expressions. - -- The distutils version has been changed to 2.5.0. The change to - keep it programmatically in sync with the Python version running - the code (introduced in 2.5b3) has been reverted. It will continue - to be maintained manually as static string literal. - -- If the Python part of a ctypes callback function returns None, - and this cannot be converted to the required C type, an exception is - printed with PyErr_WriteUnraisable. Before this change, the C - callback returned arbitrary values to the calling code. - -- The __repr__ method of a NULL ctypes.py_object() no longer raises - an exception. - -- uuid.UUID now has a bytes_le attribute. This returns the UUID in - little-endian byte order for Windows. In addition, uuid.py gained some - workarounds for clocks with low resolution, to stop the code yielding - duplicate UUIDs. - -- Patch #1540892: site.py Quitter() class attempts to close sys.stdin - before raising SystemExit, allowing IDLE to honor quit() and exit(). - -- Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize. - -- Patch #1536071: trace.py should now find the full module name of a - file correctly even on Windows. - -- logging's atexit hook now runs even if the rest of the module has - already been cleaned up. - -- Bug #1112549, fix DoS attack on cgi.FieldStorage. - -- Bug #1531405, format_exception no longer raises an exception if - str(exception) raised an exception. - -- Fix a bug in the ``compiler`` package that caused invalid code to be - generated for nested functions. - - -Extension Modules ------------------ - -- Patch #1511317: don't crash on invalid hostname (alias) info. - -- Patch #1535500: fix segfault in BZ2File.writelines and make sure it - raises the correct exceptions. - -- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The - '-no-stack-protector' compiler flag for OpenBSD has been removed. - -- Patch #1532975 was applied, which fixes Bug #1533481: ctypes now - uses the _as_parameter_ attribute when objects are passed to foreign - function calls. The ctypes version number was changed to 1.0.1. - -- Bug #1530559, struct.pack raises TypeError where it used to convert. - Passing float arguments to struct.pack when integers are expected - now triggers a DeprecationWarning. - - -Tests ------ - -- test_socketserver should now work on cygwin and not fail sporadically - on other platforms. - -- test_mailbox should now work on cygwin versions 2006-08-10 and later. - -- Bug #1535182: really test the xreadlines() method of bz2 objects. - -- test_threading now skips testing alternate thread stack sizes on - platforms that don't support changing thread stack size. - - -Documentation -------------- - -- Patch #1534922: unittest docs were corrected and enhanced. - - -Build ------ - -- Bug #1535502, build _hashlib on Windows, and use masm assembler - code in OpenSSL. - -- Bug #1534738, win32 debug version of _msi should be _msi_d.pyd. - -- Bug #1530448, ctypes build failure on Solaris 10 was fixed. - - -C API ------ - -- New API for Unicode rich comparisons: PyUnicode_RichCompare() - -- Bug #1069160. Internal correctness changes were made to - ``PyThreadState_SetAsyncExc()``. A test case was added, and - the documentation was changed to state that the return value - is always 1 (normal) or 0 (if the specified thread wasn't found). - - -What's New in Python 2.5 beta 3? -================================ - -*Release date: 03-AUG-2006* - -Core and builtins ------------------ - -- _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously - returned a long (see PEP 353). - -- Bug #1515471: string.replace() accepts character buffers again. - -- Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn(). - This provides the proper warning for struct.pack(). - PyErr_Warn() is now deprecated in favor of PyErr_WarnEx(). - -- Patch #1531113: Fix augmented assignment with yield expressions. - Also fix a SystemError when trying to assign to yield expressions. - -- Bug #1529871: The speed enhancement patch #921466 broke Python's compliance - with PEP 302. This was fixed by adding an ``imp.NullImporter`` type that is - used in ``sys.path_importer_cache`` to cache non-directory paths and avoid - excessive filesystem operations during imports. - -- Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some - operations on signed longs that are formally undefined by C. - Unfortunately, at least one compiler now cares about that, so complicated - the code to make that compiler happy again. - -- Bug #1524310: Properly report errors from FindNextFile in os.listdir. - -- Patch #1232023: Stop including current directory in search - path on Windows. - -- Fix some potential crashes found with failmalloc. - -- Fix warnings reported by Klocwork's static analysis tool. - -- Bug #1512814, Fix incorrect lineno's when code within a function - had more than 255 blank lines. - -- Patch #1521179: Python now accepts the standard options ``--help`` and - ``--version`` as well as ``/?`` on Windows. - -- Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works - again. Fixing this problem required changing the .pyc magic number. - This means that .pyc files generated before 2.5b3 will be regenerated. - -- Bug #1524317: Compiling Python ``--without-threads`` failed. - The Python core compiles again, and, in a build without threads, the - new ``sys._current_frames()`` returns a dictionary with one entry, - mapping the faux "thread id" 0 to the current frame. - -- Bug #1525447: build on MacOS X on a case-sensitive filesystem. - - -Library -------- - -- Fix #1693149. Now you can pass several modules separated by - comma to trace.py in the same --ignore-module option. - -- Correction of patch #1455898: In the mbcs decoder, set final=False - for stream decoder, but final=True for the decode function. - -- os.urandom no longer masks unrelated exceptions like SystemExit or - KeyboardInterrupt. - -- Bug #1525866: Don't copy directory stat times in - shutil.copytree on Windows - -- Bug #1002398: The documentation for os.path.sameopenfile now correctly - refers to file descriptors, not file objects. - -- The renaming of the xml package to xmlcore, and the import hackery done - to make it appear at both names, has been removed. Bug #1511497, - #1513611, and probably others. - -- Bug #1441397: The compiler module now recognizes module and function - docstrings correctly as it did in Python 2.4. - -- Bug #1529297: The rewrite of doctest for Python 2.4 unintentionally - lost that tests are sorted by name before being run. This rarely - matters for well-written tests, but can create baffling symptoms if - side effects from one test to the next affect outcomes. ``DocTestFinder`` - has been changed to sort the list of tests it returns. - -- The distutils version has been changed to 2.5.0, and is now kept - in sync with sys.version_info[:3]. - -- Bug #978833: Really close underlying socket in _socketobject.close. - -- Bug #1459963: urllib and urllib2 now normalize HTTP header names with - title(). - -- Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback - to recursive calls and call it with the failing package name. - -- Bug #1525817: Don't truncate short lines in IDLE's tool tips. - -- Patch #1515343: Fix printing of deprecated string exceptions with a - value in the traceback module. - -- Resync optparse with Optik 1.5.3: minor tweaks for/to tests. - -- Patch #1524429: Use repr() instead of backticks in Tkinter again. - -- Bug #1520914: Change time.strftime() to accept a zero for any position in its - argument tuple. For arguments where zero is illegal, the value is forced to - the minimum value that is correct. This is to support an undocumented but - common way people used to fill in inconsequential information in the time - tuple pre-2.4. - -- Patch #1220874: Update the binhex module for Mach-O. - -- The email package has improved RFC 2231 support, specifically for - recognizing the difference between encoded (name*0*=<blah>) and non-encoded - (name*0=<blah>) parameter continuations. This may change the types of - values returned from email.message.Message.get_param() and friends. - Specifically in some cases where non-encoded continuations were used, - get_param() used to return a 3-tuple of (None, None, string) whereas now it - will just return the string (since non-encoded continuations don't have - charset and language parts). - - Also, whereas % values were decoded in all parameter continuations, they are - now only decoded in encoded parameter parts. - -- Bug #1517990: IDLE keybindings on MacOS X now work correctly - -- Bug #1517996: IDLE now longer shows the default Tk menu when a - path browser, class browser or debugger is the frontmost window on MacOS X - -- Patch #1520294: Support for getset and member descriptors in types.py, - inspect.py, and pydoc.py. Specifically, this allows for querying the type - of an object against these built-in types and more importantly, for getting - their docstrings printed in the interactive interpreter's help() function. - - -Extension Modules ------------------ - -- Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during - a socket operation on a socket with a timeout, the exception will be - caught correctly. Previously, the exception was not caught. - -- Patch #1529514: The _ctypes extension is now compiled on more - openbsd target platforms. - -- The ``__reduce__()`` method of the new ``collections.defaultdict`` had - a memory leak, affecting pickles and deep copies. - -- Bug #1471938: Fix curses module build problem on Solaris 8; patch by - Paul Eggert. - -- Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry. - -- Patch #1521817: Index range checking on ctypes arrays containing - exactly one element enabled again. This allows iterating over these - arrays, without the need to check the array size before. - -- Bug #1521375: When the code in ctypes.util.find_library was - run with root privileges, it could overwrite or delete - /dev/null in certain cases; this is now fixed. - -- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the - default mode for loading shared libraries in ctypes. - -- Because of a misspelled preprocessor symbol, ctypes was always - compiled without thread support; this is now fixed. - -- pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename - methods now allow their database parameter to be None as the - sleepycat API allows. - -- Bug #1526460: Fix socketmodule compile on NetBSD as it has a different - bluetooth API compared with Linux and FreeBSD. - -Tests ------ - -- Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of - how long the test file should take to play. Now accepts taking 2.93 secs - (exact time) +/- 10% instead of the hard-coded 3.1 sec. - -- Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``, - ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when - run via ``regrtest.py``. Now they do. - -Build ------ - -- Bug #1439538: Drop usage of test -e in configure as it is not portable. - -Mac ---- - -- PythonLauncher now works correctly when the path to the script contains - characters that are treated specially by the shell (such as quotes). - -- Bug #1527397: PythonLauncher now launches scripts with the working directory - set to the directory that contains the script instead of the user home - directory. That latter was an implementation accident and not what users - expect. - - -What's New in Python 2.5 beta 2? -================================ - -*Release date: 11-JUL-2006* - -Core and builtins ------------------ - -- Bug #1441486: The literal representation of -(sys.maxint - 1) - again evaluates to a int object, not a long. - -- Bug #1501934: The scope of global variables that are locally assigned - using augmented assignment is now correctly determined. - -- Bug #927248: Recursive method-wrapper objects can now safely - be released. - -- Bug #1417699: Reject locale-specific decimal point in float() - and atof(). - -- Bug #1511381: codec_getstreamcodec() in codec.c is corrected to - omit a default "error" argument for NULL pointer. This allows - the parser to take a codec from cjkcodecs again. - -- Bug #1519018: 'as' is now validated properly in import statements. - -- On 64 bit systems, int literals that use less than 64 bits are - now ints rather than longs. - -- Bug #1512814, Fix incorrect lineno's when code at module scope - started after line 256. - -- New function ``sys._current_frames()`` returns a dict mapping thread - id to topmost thread stack frame. This is for expert use, and is - especially useful for debugging application deadlocks. The functionality - was previously available in Fazal Majid's ``threadframe`` extension - module, but it wasn't possible to do this in a wholly threadsafe way from - an extension. - -Library -------- - -- Bug #1257728: Mention Cygwin in distutils error message about a missing - VS 2003. - -- Patch #1519566: Update turtle demo, make begin_fill idempotent. - -- Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK - environment variable to be set in order to the SDK environment - for finding the compiler, include files, etc. - -- Bug #1515998: Properly generate logical ids for files in bdist_msi. - -- warnings.py now ignores ImportWarning by default - -- string.Template() now correctly handles tuple-values. Previously, - multi-value tuples would raise an exception and single-value tuples would - be treated as the value they contain, instead. - -- Bug #822974: Honor timeout in telnetlib.{expect,read_until} - even if some data are received. - -- Bug #1267547: Put proper recursive setup.py call into the - spec file generated by bdist_rpm. - -- Bug #1514693: Update turtle's heading when switching between - degrees and radians. - -- Reimplement turtle.circle using a polyline, to allow correct - filling of arcs. - -- Bug #1514703: Only setup canvas window in turtle when the canvas - is created. - -- Bug #1513223: .close() of a _socketobj now releases the underlying - socket again, which then gets closed as it becomes unreferenced. - -- Bug #1504333: Make sgmllib support angle brackets in quoted - attribute values. - -- Bug #853506: Fix IPv6 address parsing in unquoted attributes in - sgmllib ('[' and ']' were not accepted). - -- Fix a bug in the turtle module's end_fill function. - -- Bug #1510580: The 'warnings' module improperly required that a Warning - category be either a types.ClassType and a subclass of Warning. The proper - check is just that it is a subclass with Warning as the documentation states. - -- The compiler module now correctly compiles the new try-except-finally - statement (bug #1509132). - -- The wsgiref package is now installed properly on Unix. - -- A bug was fixed in logging.config.fileConfig() which caused a crash on - shutdown when fileConfig() was called multiple times. - -- The sqlite3 module did cut off data from the SQLite database at the first - null character before sending it to a custom converter. This has been fixed - now. - -Extension Modules ------------------ - -- #1494314: Fix a regression with high-numbered sockets in 2.4.3. This - means that select() on sockets > FD_SETSIZE (typically 1024) work again. - The patch makes sockets use poll() internally where available. - -- Assigning None to pointer type fields in ctypes structures possible - overwrote the wrong fields, this is fixed now. - -- Fixed a segfault in _ctypes when ctypes.wintypes were imported - on non-Windows platforms. - -- Bug #1518190: The ctypes.c_void_p constructor now accepts any - integer or long, without range checking. - -- Patch #1517790: It is now possible to use custom objects in the ctypes - foreign function argtypes sequence as long as they provide a from_param - method, no longer is it required that the object is a ctypes type. - -- The '_ctypes' extension module now works when Python is configured - with the --without-threads option. - -- Bug #1513646: os.access on Windows now correctly determines write - access, again. - -- Bug #1512695: cPickle.loads could crash if it was interrupted with - a KeyboardInterrupt. - -- Bug #1296433: parsing XML with a non-default encoding and - a CharacterDataHandler could crash the interpreter in pyexpat. - -- Patch #1516912: improve Modules support for OpenVMS. - -Build ------ - -- Automate Windows build process for the Win64 SSL module. - -- 'configure' now detects the zlib library the same way as distutils. - Previously, the slight difference could cause compilation errors of the - 'zlib' module on systems with more than one version of zlib. - -- The MSI compileall step was fixed to also support a TARGETDIR - with spaces in it. - -- Bug #1517388: sqlite3.dll is now installed on Windows independent - of Tcl/Tk. - -- Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old - trying to be installed even though it's empty. - -Tests ------ - -- Call os.waitpid() at the end of tests that spawn child processes in order - to minimize resources (zombies). - -Documentation -------------- - -- Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the - documentation for the warnings module. - -- Patch #1509163: MS Toolkit Compiler no longer available. - -- Patch #1504046: Add documentation for xml.etree. - - -What's New in Python 2.5 beta 1? -================================ - -*Release date: 20-JUN-2006* - -Core and builtins ------------------ - -- Patch #1507676: Error messages returned by invalid abstract object operations - (such as iterating over an integer) have been improved and now include the - type of the offending object to help with debugging. - -- Bug #992017: A classic class that defined a __coerce__() method that returned - its arguments swapped would infinitely recurse and segfault the interpreter. - -- Fix the socket tests so they can be run concurrently. - -- Removed 5 integers from C frame objects (PyFrameObject). - f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted. - -- Bug #532646: object.__call__() will continue looking for the __call__ - attribute on objects until one without one is found. This leads to recursion - when you take a class and set its __call__ attribute to an instance of the - class. Originally fixed for classic classes, but this fix is for new-style. - Removes the infinite_rec_3 crasher. - -- The string and unicode methods startswith() and endswith() now accept - a tuple of prefixes/suffixes to look for. Implements RFE #1491485. - -- Buffer objects, at the C level, never used the char buffer - implementation even when the char buffer for the wrapped object was - explicitly requested (originally returned the read or write buffer). - Now a TypeError is raised if the char buffer is not present but is - requested. - -- Patch #1346214: Statements like "if 0: suite" are now again optimized - away like they were in Python 2.4. - -- Builtin exceptions are now full-blown new-style classes instead of - instances pretending to be classes, which speeds up exception handling - by about 80% in comparison to 2.5a2. - -- Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to - Unicode 4.1. - -- Patch #921466: sys.path_importer_cache is now used to cache valid and - invalid file paths for the built-in import machinery which leads to - fewer open calls on startup. - -- Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power- - of-2 bases. The largest speedup is for inputs with about 1000 decimal - digits. Conversion from non-power-of-2 bases remains quadratic-time in - the number of input digits (it was and remains linear-time for bases - 2, 4, 8, 16 and 32). - -- Bug #1334662: ``int(string, base)`` could deliver a wrong answer - when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented - an integer close to ``sys.maxint``. This was repaired by patch - #1335972, which also gives a nice speedup. - -- Patch #1337051: reduced size of frame objects. - -- PyErr_NewException now accepts a tuple of base classes as its - "base" parameter. - -- Patch #876206: function call speedup by retaining allocated frame - objects. - -- Bug #1462152: file() now checks more thoroughly for invalid mode - strings and removes a possible "U" before passing the mode to the - C library function. - -- Patch #1488312, Fix memory alignment problem on SPARC in unicode - -- Bug #1487966: Fix SystemError with conditional expression in assignment - -- WindowsError now has two error code attributes: errno, which carries - the error values from errno.h, and winerror, which carries the error - values from winerror.h. Previous versions put the winerror.h values - (from GetLastError()) into the errno attribute. - -- Patch #1475845: Raise IndentationError for unexpected indent. - -- Patch #1479181: split open() and file() from being aliases for each other. - -- Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()`` - methods were always silently ignored by dictionaries when comparing keys. - They are now passed through (except when using the C API function - ``PyDict_GetItem()``, whose semantics did not change). - -- Bug #1456209: In some obscure cases it was possible for a class with a - custom ``__eq__()`` method to confuse dict internals when class instances - were used as a dict's keys and the ``__eq__()`` method mutated the dict. - No, you don't have any code that did this ;-) - -Extension Modules ------------------ - -- Bug #1295808: expat symbols should be namespaced in pyexpat - -- Patch #1462338: Upgrade pyexpat to expat 2.0.0 - -- Change binascii.hexlify to accept a read-only buffer instead of only a char - buffer and actually follow its documentation. - -- Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder. - -- Patch #1478788 (modified version): The functional extension module has - been renamed to _functools and a functools Python wrapper module added. - This provides a home for additional function related utilities that are - not specifically about functional programming. See PEP 309. - -- Patch #1493701: performance enhancements for struct module. - -- Patch #1490224: time.altzone is now set correctly on Cygwin. - -- Patch #1435422: zlib's compress and decompress objects now have a - copy() method. - -- Patch #1454481: thread stack size is now tunable at runtime for thread - enabled builds on Windows and systems with Posix threads support. - -- On Win32, os.listdir now supports arbitrarily-long Unicode path names - (up to the system limit of 32K characters). - -- Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}. - As a result, these functions now raise WindowsError instead of OSError. - -- ``time.clock()`` on Win64 should use the high-performance Windows - ``QueryPerformanceCounter()`` now (as was already the case on 32-bit - Windows platforms). - -- Calling Tk_Init twice is refused if the first call failed as that - may deadlock. - -- bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to - accept it without potentially using an uninitialized pointer. - -- bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods - assuming BerkeleyDB >= 4.0 and 4.4 respectively. [pybsddb project SF - patch numbers 1494885 and 1494902] - -- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class. - [pybsddb project SF patch number 1466734] - -- bsddb: fix DBCursor.pget() bug with keyword argument names when no data - parameter is supplied. [SF pybsddb bug #1477863] - -- bsddb: the __len__ method of a DB object has been fixed to return correct - results. It could previously incorrectly return 0 in some cases. - Fixes SF bug 1493322 (pybsddb bug 1184012). - -- bsddb: the bsddb.dbtables Modify method now raises the proper error and - aborts the db transaction safely when a modifier callback fails. - Fixes SF python patch/bug #1408584. - -- bsddb: multithreaded DB access using the simple bsddb module interface - now works reliably. It has been updated to use automatic BerkeleyDB - deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry - database calls that would previously deadlock. [SF python bug #775414] - -- Patch #1446489: add support for the ZIP64 extensions to zipfile. - -- Patch #1506645: add Python wrappers for the curses functions - is_term_resized, resize_term and resizeterm. - -Library -------- - -- Patch #815924: Restore ability to pass type= and icon= in tkMessageBox - functions. - -- Patch #812986: Update turtle output even if not tracing. - -- Patch #1494750: Destroy master after deleting children in - Tkinter.BaseWidget. - -- Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap. - -- Patch #763580: Add name and value arguments to Tkinter variable - classes. - -- Bug #1117556: SimpleHTTPServer now tries to find and use the system's - mime.types file for determining MIME types. - -- Bug #1339007: Shelf objects now don't raise an exception in their - __del__ method when initialization failed. - -- Patch #1455898: The MBCS codec now supports the incremental mode for - double-byte encodings. - -- ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to - guarantee that adjacent triples in the return list always describe - non-adjacent blocks. Previously, a pair of matching blocks could end - up being described by multiple adjacent triples that formed a partition - of the matching pair. - -- Bug #1498146: fix optparse to handle Unicode strings in option help, - description, and epilog. - -- Bug #1366250: minor optparse documentation error. - -- Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately; - clarify docs. - -- The wsgiref package has been added to the standard library. - -- The functions update_wrapper() and wraps() have been added to the functools - module. These make it easier to copy relevant metadata from the original - function when writing wrapper functions. - -- The optional ``isprivate`` argument to ``doctest.testmod()``, and the - ``doctest.is_private()`` function, both deprecated in 2.4, were removed. - -- Patch #1359618: Speed up charmap encoder by using a trie structure - for lookup. - -- The functions in the ``pprint`` module now sort dictionaries by key - before computing the display. Before 2.5, ``pprint`` sorted a dictionary - if and only if its display required more than one line, although that - wasn't documented. The new behavior increases predictability; e.g., - using ``pprint.pprint(a_dict)`` in a doctest is now reliable. - -- Patch #1497027: try HTTP digest auth before basic auth in urllib2 - (thanks for J. J. Lee). - -- Patch #1496206: improve urllib2 handling of passwords with respect to - default HTTP and HTTPS ports. - -- Patch #1080727: add "encoding" parameter to doctest.DocFileSuite. - -- Patch #1281707: speed up gzip.readline. - -- Patch #1180296: Two new functions were added to the locale module: - format_string() to get the effect of "format % items" but locale-aware, - and currency() to format a monetary number with currency sign. - -- Patch #1486962: Several bugs in the turtle Tk demo module were fixed - and several features added, such as speed and geometry control. - -- Patch #1488881: add support for external file objects in bz2 compressed - tarfiles. - -- Patch #721464: pdb.Pdb instances can now be given explicit stdin and - stdout arguments, making it possible to redirect input and output - for remote debugging. - -- Patch #1484695: Update the tarfile module to version 0.8. This fixes - a couple of issues, notably handling of long file names using the - GNU LONGNAME extension. - -- Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a - new flag when ``name`` is already the name of an option flag. - -- Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler - package. - -- Patch #1472854: make the rlcompleter.Completer class usable on non- - UNIX platforms. - -- Patch #1470846: fix urllib2 ProxyBasicAuthHandler. - -- Bug #1472827: correctly escape newlines and tabs in attribute values in - the saxutils.XMLGenerator class. - - -Build ------ - -- Bug #1502728: Correctly link against librt library on HP-UX. - -- OpenBSD 3.9 is supported now. - -- Patch #1492356: Port to Windows CE. - -- Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64. - -- Patch #1471883: Add --enable-universalsdk. - -C API ------ - -Tests ------ - -Tools ------ - -Documentation -------------- - - - -What's New in Python 2.5 alpha 2? -================================= - -*Release date: 27-APR-2006* - -Core and builtins ------------------ - -- Bug #1465834: 'bdist_wininst preinstall script support' was fixed - by converting these apis from macros into exported functions again: - - PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile - PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx - PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne - PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString - PyRun_String Py_CompileString - -- Under COUNT_ALLOCS, types are not necessarily immortal anymore. - -- All uses of PyStructSequence_InitType have been changed to initialize - the type objects only once, even if the interpreter is initialized - multiple times. - -- Bug #1454485, array.array('u') could crash the interpreter. This was - due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) - to unicode when it didn't make sense. 'u#' now requires a unicode string. - -- Py_UNICODE is unsigned. It was always documented as unsigned, but - due to a bug had a signed value in previous versions. - -- Patch #837242: ``id()`` of any Python object always gives a positive - number now, which might be a long integer. ``PyLong_FromVoidPtr`` and - ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has - never been correct to implement a ``__hash()__`` method that returns the - ``id()`` of an object: - - def __hash__(self): - return id(self) # WRONG - - because a hash result must be a (short) Python int but it was always - possible for ``id()`` to return a Python long. However, because ``id()`` - could return negative values before, on a 32-bit box an ``id()`` result - was always usable as a hash value before this patch. That's no longer - necessarily so. - -- Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) - to load extension modules and now provides the dl module. As a result, - sys.setdlopenflags() now works correctly on these systems. (SF patch - #1454844) - -- Patch #1463867: enhanced garbage collection to allow cleanup of cycles - involving generators that have paused outside of any ``try`` or ``with`` - blocks. (In 2.5a1, a paused generator that was part of a reference - cycle could not be garbage collected, regardless of whether it was - paused in a ``try`` or ``with`` block.) - -Extension Modules ------------------ - -- Patch #1191065: Fix preprocessor problems on systems where recvfrom - is a macro. - -- Bug #1467952: os.listdir() now correctly raises an error if readdir() - fails with an error condition. - -- Fixed bsddb.db.DBError derived exceptions so they can be unpickled. - -- Bug #1117761: bsddb.*open() no longer raises an exception when using - the cachesize parameter. - -- Bug #1149413: bsddb.*open() no longer raises an exception when using - a temporary db (file=None) with the 'n' flag to truncate on open. - -- Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 - as older versions cause excessive test failures. - -- Patch #1062014: AF_UNIX sockets under Linux have a special - abstract namespace that is now fully supported. - -Library -------- - -- Bug #1223937: subprocess.CalledProcessError reports the exit status - of the process using the returncode attribute, instead of - abusing errno. - -- Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes - a doctest to be skipped (the code is not run, and the expected output - or exception is ignored). - -- Fixed contextlib.nested to cope with exceptions being raised and - caught inside exit handlers. - -- Updated optparse module to Optik 1.5.1 (allow numeric constants in - hex, octal, or binary; add ``append_const`` action; keep going if - gettext cannot be imported; added ``OptionParser.destroy()`` method; - added ``epilog`` for better help generation). - -- Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when - called from a thread spawned as a side effect of importing a module. - -- The pydoc module now supports documenting packages contained in - .zip or .egg files. - -- The pkgutil module now has several new utility functions, such - as ``walk_packages()`` to support working with packages that are either - in the filesystem or zip files. - -- The mailbox module can now modify and delete messages from - mailboxes, in addition to simply reading them. Thanks to Gregory - K. Johnson for writing the code, and to the 2005 Google Summer of - Code for funding his work. - -- The ``__del__`` method of class ``local`` in module ``_threading_local`` - returned before accomplishing any of its intended cleanup. - -- Patch #790710: Add breakpoint command lists in pdb. - -- Patch #1063914: Add Tkinter.Misc.clipboard_get(). - -- Patch #1191700: Adjust column alignment in bdb breakpoint lists. - -- SimpleXMLRPCServer relied on the fcntl module, which is unavailable on - Windows. Bug #1469163. - -- The warnings, linecache, inspect, traceback, site, and doctest modules - were updated to work correctly with modules imported from zipfiles or - via other PEP 302 __loader__ objects. - -- Patch #1467770: Reduce usage of subprocess._active to processes which - the application hasn't waited on. - -- Patch #1462222: Fix Tix.Grid. - -- Fix exception when doing glob.glob('anything*/') - -- The pstats.Stats class accepts an optional stream keyword argument to - direct output to an alternate file-like object. - -Build ------ - -- The Makefile now has a reindent target, which runs reindent.py on - the library. - -- Patch #1470875: Building Python with MS Free Compiler - -- Patch #1161914: Add a python-config script. - -- Patch #1324762:Remove ccpython.cc; replace --with-cxx with - --with-cxx-main. Link with C++ compiler only if --with-cxx-main was - specified. (Can be overridden by explicitly setting LINKCC.) Decouple - CXX from --with-cxx-main, see description in README. - -- Patch #1429775: Link extension modules with the shared libpython. - -- Fixed a libffi build problem on MIPS systems. - -- ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV`` - now accept formats "%u" for unsigned ints, "%lu" for unsigned longs, - and "%zu" for unsigned integers of type ``size_t``. - -Tests ------ - -- test_contextlib now checks contextlib.nested can cope with exceptions - being raised and caught inside exit handlers. - -- test_cmd_line now checks operation of the -m and -c command switches - -- The test_contextlib test in 2.5a1 wasn't actually run unless you ran - it separately and by hand. It also wasn't cleaning up its changes to - the current Decimal context. - -- regrtest.py now has a -M option to run tests that test the new limits of - containers, on 64-bit architectures. Running these tests is only sensible - on 64-bit machines with more than two gigabytes of memory. The argument - passed is the maximum amount of memory for the tests to use. - -Tools ------ - -- Added the Python benchmark suite pybench to the Tools/ directory; - contributed by Marc-Andre Lemburg. - -Documentation -------------- - -- Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``. - -- PEP 343: Added Context Types section to the library reference - and attempted to bring other PEP 343 related documentation into - line with the implementation and/or python-dev discussions. - -- Bug #1337990: clarified that ``doctest`` does not support examples - requiring both expected output and an exception. - - -What's New in Python 2.5 alpha 1? -================================= - -*Release date: 05-APR-2006* - -Core and builtins ------------------ - -- PEP 338: -m command line switch now delegates to runpy.run_module - allowing it to support modules in packages and zipfiles - -- On Windows, .DLL is not an accepted file name extension for - extension modules anymore; extensions are only found if they - end in .PYD. - -- Bug #1421664: sys.stderr.encoding is now set to the same value as - sys.stdout.encoding. - -- __import__ accepts keyword arguments. - -- Patch #1460496: round() now accepts keyword arguments. - -- Fixed bug #1459029 - unicode reprs were double-escaped. - -- Patch #1396919: The system scope threads are reenabled on FreeBSD - 5.4 and later versions. - -- Bug #1115379: Compiling a Unicode string with an encoding declaration - now gives a SyntaxError. - -- Previously, Python code had no easy way to access the contents of a - cell object. Now, a ``cell_contents`` attribute has been added - (closes patch #1170323). - -- Patch #1123430: Python's small-object allocator now returns an arena to - the system ``free()`` when all memory within an arena becomes unused - again. Prior to Python 2.5, arenas (256KB chunks of memory) were never - freed. Some applications will see a drop in virtual memory size now, - especially long-running applications that, from time to time, temporarily - use a large number of small objects. Note that when Python returns an - arena to the platform C's ``free()``, there's no guarantee that the - platform C library will in turn return that memory to the operating system. - The effect of the patch is to stop making that impossible, and in tests it - appears to be effective at least on Microsoft C and gcc-based systems. - Thanks to Evan Jones for hard work and patience. - -- Patch #1434038: property() now uses the getter's docstring if there is - no "doc" argument given. This makes it possible to legitimately use - property() as a decorator to produce a read-only property. - -- PEP 357, patch 1436368: add an __index__ method to int/long and a matching - nb_index slot to the PyNumberMethods struct. The slot is consulted instead - of requiring an int or long in slicing and a few other contexts, enabling - other objects (e.g. Numeric Python's integers) to be used as slice indices. - -- Fixed various bugs reported by Coverity's Prevent tool. - -- PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the - new exception base class, BaseException, which has a new message attribute. - KeyboardInterrupt and SystemExit to directly inherit from BaseException now. - Raising a string exception now raises a DeprecationWarning. - -- Patch #1438387, PEP 328: relative and absolute imports. Imports can now be - explicitly relative, using 'from .module import name' to mean 'from the same - package as this module is in. Imports without dots still default to the - old relative-then-absolute, unless 'from __future__ import - absolute_import' is used. - -- Properly check if 'warnings' raises an exception (usually when a filter set - to "error" is triggered) when raising a warning for raising string - exceptions. - -- CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. - The name was removed from Include/code.h. - -- PEP 308: conditional expressions were added: (x if cond else y). - -- Patch 1433928: - - The copy module now "copies" function objects (as atomic objects). - - dict.__getitem__ now looks for a __missing__ hook before raising - KeyError. - -- PEP 343: with statement implemented. Needs ``from __future__ import - with_statement``. Use of 'with' as a variable will generate a warning. - Use of 'as' as a variable will also generate a warning (unless it's - part of an import statement). - The following objects have __context__ methods: - - The built-in file type. - - The thread.LockType type. - - The following types defined by the threading module: - Lock, RLock, Condition, Semaphore, BoundedSemaphore. - - The decimal.Context class. - -- Fix the encodings package codec search function to only search - inside its own package. Fixes problem reported in patch #1433198. - - Note: Codec packages should implement and register their own - codec search function. PEP 100 has the details. - -- PEP 353: Using ``Py_ssize_t`` as the index type. - -- ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging - info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353) - now allow Python to make use of memory blocks exceeding 2**32 bytes for - some purposes on 64-bit boxes. A ``PYMALLOC_DEBUG`` build was limited - to 4-byte allocations before. - -- Patch #1400181, fix unicode string formatting to not use the locale. - This is how string objects work. u'%f' could use , instead of . - for the decimal point. Now both strings and unicode always use periods. - -- Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. - configure would break checking curses.h. - -- Bug #959576: The pwd module is now builtin. This allows Python to be - built on UNIX platforms without $HOME set. - -- Bug #1072182, fix some potential problems if characters are signed. - -- Bug #889500, fix line number on SyntaxWarning for global declarations. - -- Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. - -- Support for converting hex strings to floats no longer works. - This was not portable. float('0x3') now raises a ValueError. - -- Patch #1382163: Expose Subversion revision number to Python. New C API - function Py_GetBuildNumber(). New attribute sys.subversion. Build number - is now displayed in interactive prompt banner. - -- Implementation of PEP 341 - Unification of try/except and try/finally. - "except" clauses can now be written together with a "finally" clause in - one try statement instead of two nested ones. Patch #1355913. - -- Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec - now encodes backslash correctly. - -- Patch #1350409: Work around signal handling bug in Visual Studio 2005. - -- Bug #1281408: Py_BuildValue now works correctly even with unsigned longs - and long longs. - -- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" - It was possible for dlerror() to return a NULL pointer, so - it will now use a default error message in this case. - -- Replaced most Unicode charmap codecs with new ones using the - new Unicode translate string feature in the builtin charmap - codec; the codecs were created from the mapping tables available - at ftp.unicode.org and contain a few updates (e.g. the Mac OS - encodings now include a mapping for the Apple logo) - -- Added a few more codecs for Mac OS encodings - -- Sped up some Unicode operations. - -- A new AST parser implementation was completed. The abstract - syntax tree is available for read-only (non-compile) access - to Python code; an _ast module was added. - -- SF bug #1167751: fix incorrect code being produced for generator expressions. - The following code now raises a SyntaxError: foo(a = i for i in range(10)) - -- SF Bug #976608: fix SystemError when mtime of an imported file is -1. - -- SF Bug #887946: fix segfault when redirecting stdin from a directory. - Provide a warning when a directory is passed on the command line. - -- Fix segfault with invalid coding. - -- SF bug #772896: unknown encoding results in MemoryError. - -- All iterators now have a Boolean value of True. Formerly, some iterators - supported a __len__() method which evaluated to False when the iterator - was empty. - -- On 64-bit platforms, when __len__() returns a value that cannot be - represented as a C int, raise OverflowError. - -- test__locale is skipped on OS X < 10.4 (only partial locale support is - present). - -- SF bug #893549: parsing keyword arguments was broken with a few format - codes. - -- Changes donated by Elemental Security to make it work on AIX 5.3 - with IBM's 64-bit compiler (SF patch #1284289). This also closes SF - bug #105470: test_pwd fails on 64bit system (Opteron). - -- Changes donated by Elemental Security to make it work on HP-UX 11 on - Itanium2 with HP's 64-bit compiler (SF patch #1225212). - -- Disallow keyword arguments for type constructors that don't use them - (fixes bug #1119418). - -- Forward UnicodeDecodeError into SyntaxError for source encoding errors. - -- SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for - exceptions that cause a function to exit. - -- The implementation of set() and frozenset() was revised to use its - own internal data structure. Memory consumption is reduced by 1/3 - and there are modest speed-ups as well. The API is unchanged. - -- SF bug #1238681: freed pointer is used in longobject.c:long_pow(). - -- SF bug #1229429: PyObject_CallMethod failed to decrement some - reference counts in some error exit cases. - -- SF bug #1185883: Python's small-object memory allocator took over - a block managed by the platform C library whenever a realloc specified - a small new size. However, there's no portable way to know then how - much of the address space following the pointer is valid, so there's no - portable way to copy data from the C-managed block into Python's - small-object space without risking a memory fault. Python's small-object - realloc now leaves such blocks under the control of the platform C - realloc. - -- SF bug #1232517: An overflow error was not detected properly when - attempting to convert a large float to an int in os.utime(). - -- SF bug #1224347: hex longs now print with lowercase letters just - like their int counterparts. - -- SF bug #1163563: the original fix for bug #1010677 ("thread Module - Breaks PyGILState_Ensure()") broke badly in the case of multiple - interpreter states; back out that fix and do a better job (see - http://mail.python.org/pipermail/python-dev/2005-June/054258.html - for a longer write-up of the problem). - -- SF patch #1180995: marshal now uses a binary format by default when - serializing floats. - -- SF patch #1181301: on platforms that appear to use IEEE 754 floats, - the routines that promise to produce IEEE 754 binary representations - of floats now simply copy bytes around. - -- bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP - 278. - -- patch #1109424: int, long, float, complex, and unicode now check for the - proper magic slot for type conversions when subclassed. Previously the - magic slot was ignored during conversion. Semantics now match the way - subclasses of str always behaved. int/long/float, conversion of an instance - to the base class has been moved to the proper nb_* magic slot and out of - PyNumber_*(). - Thanks Walter D�rwald. - -- Descriptors defined in C with a PyGetSetDef structure, where the setter is - NULL, now raise an AttributeError when attempting to set or delete the - attribute. Previously a TypeError was raised, but this was inconsistent - with the equivalent pure-Python implementation. - -- It is now safe to call PyGILState_Release() before - PyEval_InitThreads() (note that if there is reason to believe there - are multiple threads around you still must call PyEval_InitThreads() - before using the Python API; this fix is for extension modules that - have no way of knowing if Python is multi-threaded yet). - -- Typing Ctrl-C whilst raw_input() was waiting in a build with threads - disabled caused a crash. - -- Bug #1165306: instancemethod_new allowed the creation of a method - with im_class == im_self == NULL, which caused a crash when called. - -- Move exception finalisation later in the shutdown process - this - fixes the crash seen in bug #1165761 - -- Added two new builtins, any() and all(). - -- Defining a class with empty parentheses is now allowed - (e.g., ``class C(): pass`` is no longer a syntax error). - Patch #1176012 added support to the 'parser' module and 'compiler' package - (thanks to logistix for that added support). - -- Patch #1115086: Support PY_LONGLONG in structmember. - -- Bug #1155938: new style classes did not check that __init__() was - returning None. - -- Patch #802188: Report characters after line continuation character - ('\') with a specific error message. - -- Bug #723201: Raise a TypeError for passing bad objects to 'L' format. - -- Bug #1124295: the __name__ attribute of file objects was - inadvertently made inaccessible in restricted mode. - -- Bug #1074011: closing sys.std{out,err} now causes a flush() and - an ferror() call. - -- min() and max() now support key= arguments with the same meaning as in - list.sort(). - -- The peephole optimizer now performs simple constant folding in expressions: - (2+3) --> (5). - -- set and frozenset objects can now be marshalled. SF #1098985. - -- Bug #1077106: Poor argument checking could cause memory corruption - in calls to os.read(). - -- The parser did not complain about future statements in illegal - positions. It once again reports a syntax error if a future - statement occurs after anything other than a doc string. - -- Change the %s format specifier for str objects so that it returns a - unicode instance if the argument is not an instance of basestring and - calling __str__ on the argument returns a unicode instance. - -- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the - current thread state when the auto-GIL-state machinery knows about - it (since the thread state is being deleted, continuing to remember it - can't help, but can hurt if another thread happens to get created with - the same thread id). - -Extension Modules ------------------ - -- Patch #1380952: fix SSL objects timing out on consecutive read()s - -- Patch #1309579: wait3 and wait4 were added to the posix module. - -- Patch #1231053: The audioop module now supports encoding/decoding of alaw. - In addition, the existing ulaw code was updated. - -- RFE #567972: Socket objects' family, type and proto properties are - now exposed via new attributes. - -- Everything under lib-old was removed. This includes the following modules: - Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, - lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, - util, whatsound, whrandom, zmod - -- The following modules were removed: regsub, reconvert, regex, regex_syntax. - -- re and sre were swapped, so help(re) provides full help. importing sre - is deprecated. The undocumented re.engine variable no longer exists. - -- Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle - SS2 (single-shift 2) escape sequences correctly. - -- The unicodedata module was updated to the 4.1 version of the Unicode - database. The 3.2 version is still available as unicodedata.db_3_2_0 - for applications that require this specific version (such as IDNA). - -- The timing module is no longer built by default. It was deprecated - in PEP 4 in Python 2.0 or earlier. - -- Patch 1433928: Added a new type, defaultdict, to the collections module. - This uses the new __missing__ hook behavior added to dict (see above). - -- Bug #854823: socketmodule now builds on Sun platforms even when - INET_ADDRSTRLEN is not defined. - -- Patch #1393157: os.startfile() now has an optional argument to specify - a "command verb" to invoke on the file. - -- Bug #876637, prevent stack corruption when socket descriptor - is larger than FD_SETSIZE. - -- Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. - mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. - mmap.mmap(0, size) should not be used on Windows for anonymous memory. - -- Patch #1422385: The nis module now supports access to domains other - than the system default domain. - -- Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps - are reported, the limit on path name lengths is removed, and stat reports - WindowsError now (instead of OSError). - -- Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. - -- Bug #1413192, fix seg fault in bsddb if a transaction was deleted - before the env. - -- Patch #1103116: Basic AF_NETLINK support. - -- Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) - -- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. - Also fix ungetmouse() which did not accept arguments properly. - The code now conforms to the documented signature. - -- Bug #1400115, Fix segfault when calling curses.panel.userptr() - without prior setting of the userptr. - -- Fix 64-bit problems in bsddb. - -- Patch #1365916: fix some unsafe 64-bit mmap methods. - -- Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build - problem on AIX. - -- Bug #869197: os.setgroups rejects long integer arguments - -- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint - -- Bug #1344508, Fix UNIX mmap leaking file descriptors - -- Patch #1338314, Bug #1336623: fix tarfile so it can extract - REGTYPE directories from tarfiles written by old programs. - -- Patch #1407992, fixes broken bsddb module db associate when using - BerkeleyDB 3.3, 4.0 or 4.1. - -- Get bsddb module to build with BerkeleyDB version 4.4 - -- Get bsddb module to build with BerkeleyDB version 3.2 - -- Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, - but Python incorrectly assumes it is in UTF-8 format - -- Fix parse errors in the readline module when compiling without threads. - -- Patch #1288833: Removed thread lock from socket.getaddrinfo on - FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). - -- Patches #1298449 and #1298499: Add some missing checks for error - returns in cStringIO.c. - -- Patch #1297028: fix segfault if call type on MultibyteCodec, - MultibyteStreamReader, or MultibyteStreamWriter - -- Fix memory leak in posix.access(). - -- Patch #1213831: Fix typo in unicodedata._getcode. - -- Bug #1007046: os.startfile() did not accept unicode strings encoded in - the file system encoding. - -- Patch #756021: Special-case socket.inet_aton('255.255.255.255') for - platforms that don't have inet_aton(). - -- Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. - -- Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one - line without newlines. - -- Bug #728515: mmap.resize() now resizes the file on Unix as it did - on Windows. - -- Patch #1180695: Add nanosecond stat resolution, and st_gen, - st_birthtime for FreeBSD. - -- Patch #1231069: The fcntl.ioctl function now uses the 'I' code for - the request code argument, which results in more C-like behaviour - for large or negative values. - -- Bug #1234979: For the argument of thread.Lock.acquire, the Windows - implementation treated all integer values except 1 as false. - -- Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. - -- Patch #1212117: os.stat().st_flags is now accessible as a attribute - if available on the platform. - -- Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if - available on the platform. - -- Bug #1166660: The readline module could segfault if hook functions - were set in a different thread than that which called readline. - -- collections.deque objects now support a remove() method. - -- operator.itemgetter() and operator.attrgetter() now support retrieving - multiple fields. This provides direct support for sorting on multiple - keys (primary, secondary, etc). - -- os.access now supports Unicode path names on non-Win32 systems. - -- Patches #925152, #1118602: Avoid reading after the end of the buffer - in pyexpat.GetInputContext. - -- Patches #749830, #1144555: allow UNIX mmap size to default to current - file size. - -- Added functional.partial(). See PEP309. - -- Patch #1093585: raise a ValueError for negative history items in readline. - {remove_history,replace_history} - -- The spwd module has been added, allowing access to the shadow password - database. - -- stat_float_times is now True. - -- array.array objects are now picklable. - -- the cPickle module no longer accepts the deprecated None option in the - args tuple returned by __reduce__(). - -- itertools.islice() now accepts None for the start and step arguments. - This allows islice() to work more readily with slices: - islice(s.start, s.stop, s.step) - -- datetime.datetime() now has a strptime class method which can be used to - create datetime object using a string and format. - -- Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc - with the implementation from http://sourceforge.net/projects/libmd5-rfc/. - -Library -------- - -- Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have - been renamed to have only a single underscore prefix. This was done to - make subclassing easier. - -- PEP 338: new module runpy defines a run_module function to support - executing modules which provide access to source code or a code object - via the PEP 302 import mechanisms. - -- The email module's parsedate_tz function now sets the daylight savings - flag to -1 (unknown) since it can't tell from the date whether it should - be set. - -- Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results - now sport attributes that provide access to the parts of the result. - -- Patch #1462498: sgmllib now handles entity and character references - in attribute values. - -- Added the sqlite3 package. This is based on pysqlite2.1.3, and provides - a DB-API interface in the standard library. You'll need sqlite 3.0.8 or - later to build this - if you have an earlier version, the C extension - module will not be built. - -- Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts - aren't officially supported here, and trying to use them will probably - raise an exception some day. But dicts have been allowed, and "mostly - worked", so support for them won't go away without warning. - -- Bug #1445068: getpass.getpass() can now be given an explicit stream - argument to specify where to write the prompt. - -- Patch #1462313, bug #1443328: the pickle modules now can handle classes - that have __private names in their __slots__. - -- Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. - -- patch #1457316: "setup.py upload" now supports --identity to select the - key to be used for signing the uploaded code. - -- Queue.Queue objects now support .task_done() and .join() methods - to make it easier to monitor when daemon threads have completed - processing all enqueued tasks. Patch #1455676. - -- popen2.Popen objects now preserve the command in a .cmd attribute. - -- Added the ctypes ffi package. - -- email 4.0 package now integrated. This is largely the same as the email 3.0 - package that was included in Python 2.3, except that PEP 8 module names are - now used (e.g. mail.message instead of email.Message). The MIME classes - have been moved to a subpackage (e.g. email.mime.text instead of - email.MIMEText). The old names are still supported for now. Several - deprecated Message methods have been removed and lots of bugs have been - fixed. More details can be found in the email package documentation. - -- Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object - (a subclass of tuple) that provides incremental decoders and encoders - (a way to use stateful codecs without the stream API). Python functions - codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well - as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() - have been added. - -- Patch #1359365: Calling next() on a closed StringIO.String object raises - a ValueError instead of a StopIteration now (like file and cString.String do). - cStringIO.StringIO.isatty() will raise a ValueError now if close() has been - called before (like file and StringIO.StringIO do). - -- A regrtest option -w was added to re-run failed tests in verbose mode. - -- Patch #1446372: quit and exit can now be called from the interactive - interpreter to exit. - -- The function get_count() has been added to the gc module, and gc.collect() - grew an optional 'generation' argument. - -- A library msilib to generate Windows Installer files, and a distutils - command bdist_msi have been added. - -- PEP 343: new module contextlib.py defines decorator @contextmanager - and helpful context managers nested() and closing(). - -- The compiler package now supports future imports after the module docstring. - -- Bug #1413790: zipfile now sanitizes absolute archive names that are - not allowed by the specs. - -- Patch #1215184: FileInput now can be given an opening hook which can - be used to control how files are opened. - -- Patch #1212287: fileinput.input() now has a mode parameter for - specifying the file mode input files should be opened with. - -- Patch #1215184: fileinput now has a fileno() function for getting the - current file number. - -- Patch #1349274: gettext.install() now optionally installs additional - translation functions other than _() in the builtin namespace. - -- Patch #1337756: fileinput now accepts Unicode filenames. - -- Patch #1373643: The chunk module can now read chunks larger than - two gigabytes. - -- Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. - -- Bug #1430298: It is now possible to send a mail with an empty - return address using smtplib. - -- Bug #1432260: The names of lambda functions are now properly displayed - in pydoc. - -- Patch #1412872: zipfile now sets the creator system to 3 (Unix) - unless the system is Win32. - -- Patch #1349118: urllib now supports user:pass@ style proxy - specifications, raises IOErrors when proxies for unsupported protocols - are defined, and uses the https proxy on https redirections. - -- Bug #902075: urllib2 now supports 'host:port' style proxy specifications. - -- Bug #1407902: Add support for sftp:// URIs to urlparse. - -- Bug #1371247: Update Windows locale identifiers in locale.py. - -- Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters - any more. - -- Bug #1403410: The warnings module now doesn't get confused - when it can't find out the module name it generates a warning for. - -- Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. - -- Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode - -- Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise - LoadError as documented, instead of IOError. For compatibility, - LoadError subclasses IOError. - -- Added the hashlib module. It provides secure hash functions for MD5 and - SHA1, 224, 256, 384, and 512. Note that recent developments make the - historic MD5 and SHA1 unsuitable for cryptographic-strength applications. - In <http://mail.python.org/pipermail/python-dev/2005-December/058850.html> - Ronald L. Rivest offered this advice for Python: - - "The consensus of researchers in this area (at least as - expressed at the NIST Hash Function Workshop 10/31/05), - is that SHA-256 is a good choice for the time being, but - that research should continue, and other alternatives may - arise from this research. The larger SHA's also seem OK." - -- Added a subset of Fredrik Lundh's ElementTree package. Available - modules are xml.etree.ElementTree, xml.etree.ElementPath, and - xml.etree.ElementInclude, from ElementTree 1.2.6. - -- Patch #1162825: Support non-ASCII characters in IDLE window titles. - -- Bug #1365984: urllib now opens "data:" URLs again. - -- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception - is raised within the method itself on a previous call (e.g., passing in an - illegal argument) - -- Bug #1340337: change time.strptime() to always return ValueError when there - is an error in the format string. - -- Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). - -- Bug #729103: pydoc.py: Fix docother() method to accept additional - "parent" argument. - -- Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes - for padding. - -- Bug #1296004: httplib.py: Limit maximal amount of data read from the - socket to avoid a MemoryError on Windows. - -- Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE - to get the correct encoding. - -- Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of - languages. - -- Patch #1268314: Cache lines in StreamReader.readlines for performance. - -- Bug #1290505: Fix clearing the regex cache for time.strptime(). - -- Bug #1167128: Fix size of a symlink in a tarfile to be 0. - -- Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook - functionality. - -- Bug #1163178: Make IDNA return an empty string when the input is empty. - -- Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output - separator and do not output trailing semicolon. - -- Patch #1062060: urllib.urlretrieve() now raises a new exception, named - ContentTooShortException, when the actually downloaded size does not - match the Content-Length header. - -- Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. - -- Bug #1178484: Return complete lines from codec stream readers - even if there is an exception in later lines, resulting in - correct line numbers for decoding errors in source code. - -- Bug #1192315: Disallow negative arguments to clear() in pdb. - -- Patch #827386: Support absolute source paths in msvccompiler.py. - -- Patch #1105730: Apply the new implementation of commonprefix in posixpath - to ntpath, macpath, os2emxpath and riscospath. - -- Fix a problem in Tkinter introduced by SF patch #869468: delete bogus - __hasattr__ and __delattr__ methods on class Tk that were breaking - Tkdnd. - -- Bug #1015140: disambiguated the term "article id" in nntplib docs and - docstrings to either "article number" or "message id". - -- Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a - parameter, but uses the usual "kwargs=None". - -- textwrap now processes text chunks at O(n) speed instead of O(n**2). - Patch #1209527 (Contributed by Connelly). - -- urllib2 has now an attribute 'httpresponses' mapping from HTTP status code - to W3C name (404 -> 'Not Found'). RFE #1216944. - -- Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, - as this can cause problems with apps closing all file descriptors. - -- Bug #839151: Fix an attempt to access sys.argv in the warnings module; - it can be missing in embedded interpreters - -- Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. - -- Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via - error messages. - -- Bug #1108948: Cookie.py produced invalid JavaScript code. - -- The tokenize module now detects and reports indentation errors. - Bug #1224621. - -- The tokenize module has a new untokenize() function to support a full - roundtrip from lexed tokens back to Python source code. In addition, - the generate_tokens() function now accepts a callable argument that - terminates by raising StopIteration. - -- Bug #1196315: fix weakref.WeakValueDictionary constructor. - -- Bug #1213894: os.path.realpath didn't resolve symlinks that were the first - component of the path. - -- Patch #1120353: The xmlrpclib module provides better, more transparent, - support for datetime.{datetime,date,time} objects. With use_datetime set - to True, applications shouldn't have to fiddle with the DateTime wrapper - class at all. - -- distutils.commands.upload was added to support uploading distribution - files to PyPI. - -- distutils.commands.register now encodes the data as UTF-8 before posting - them to PyPI. - -- decimal operator and comparison methods now return NotImplemented - instead of raising a TypeError when interacting with other types. This - allows other classes to implement __radd__ style methods and have them - work as expected. - -- Bug #1163325: Decimal infinities failed to hash. Attempting to - hash a NaN raised an InvalidOperation instead of a TypeError. - -- Patch #918101: Add tarfile open mode r|* for auto-detection of the - stream compression; add, for symmetry reasons, r:* as a synonym of r. - -- Patch #1043890: Add extractall method to tarfile. - -- Patch #1075887: Don't require MSVC in distutils if there is nothing - to build. - -- Patch #1103407: Properly deal with tarfile iterators when untarring - symbolic links on Windows. - -- Patch #645894: Use getrusage for computing the time consumption in - profile.py if available. - -- Patch #1046831: Use get_python_version where appropriate in sysconfig.py. - -- Patch #1117454: Remove code to special-case cookies without values - in LWPCookieJar. - -- Patch #1117339: Add cookielib special name tests. - -- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. - -- Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. - -- Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject. - -- Patch #1104111: Alter setup.py --help and --help-commands. - -- Patch #1121234: Properly cleanup _exit and tkerror commands. - -- Patch #1049151: xdrlib now unpacks booleans as True or False. - -- Fixed bug in a NameError bug in cookielib. Patch #1116583. - -- Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This - disables recursive traversal through instance attributes, which can - be exploited in various ways. - -- Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec - flags on the HTTP listening socket. - -- Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. - Fixed by reading the HTTP body in chunks instead of one big socket.read(). - -- Patches #893642, #1039083: add allow_none, encoding arguments to - constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler. - -- Bug #1110478: Revert os.environ.update to do putenv again. - -- Bug #1103844: fix distutils.install.dump_dirs() with negated options. - -- os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. - -- Enhancements to the csv module: - - + Dialects are now validated by the underlying C code, better - reflecting its capabilities, and improving its compliance with - PEP 305. - + Dialect parameter parsing has been re-implemented to improve error - reporting. - + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 - dictates. - + the parser now removes the escapechar prefix from escaped characters. - + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric - types, rather than any object that can be represented as a numeric. - + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields - to floats. - + reader now allows \r characters to be quoted (previously it only allowed - \n to be quoted). - + writer doublequote handling improved. - + Dialect classes passed to the module are no longer instantiated by - the module before being parsed (the former validation scheme required - this, but the mechanism was unreliable). - + The dialect registry now contains instances of the internal - C-coded dialect type, rather than references to python objects. - + the internal c-coded dialect type is now immutable. - + register_dialect now accepts the same keyword dialect specifications - as the reader and writer, allowing the user to register dialects - without first creating a dialect class. - + a configurable limit to the size of parsed fields has been added - - previously, an unmatched quote character could result in the entire - file being read into the field buffer before an error was reported. - + A new module method csv.field_size_limit() has been added that sets - the parser field size limit (returning the former limit). The initial - limit is 128kB. - + A line_num attribute has been added to the reader object, which tracks - the number of lines read from the source iterator. This is not - the same as the number of records returned, as records can span - multiple lines. - + reader and writer objects were not being registered with the cyclic-GC. - This has been fixed. - -- _DummyThread objects in the threading module now delete self.__block that is - inherited from _Thread since it uses up a lock allocated by 'thread'. The - lock primitives tend to be limited in number and thus should not be wasted on - a _DummyThread object. Fixes bug #1089632. - -- The imghdr module now detects Exif files. - -- StringIO.truncate() now correctly adjusts the size attribute. - (Bug #951915). - -- locale.py now uses an updated locale alias table (built using - Tools/i18n/makelocalealias.py, a tool to parse the X11 locale - alias file); the encoding lookup was enhanced to use Python's - encoding alias table. - -- moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. - -- the pickle module no longer accepts the deprecated None option in the - args tuple returned by __reduce__(). - -- optparse now optionally imports gettext. This allows its use in setup.py. - -- the pickle module no longer uses the deprecated bin parameter. - -- the shelve module no longer uses the deprecated binary parameter. - -- the pstats module no longer uses the deprecated ignore() method. - -- the filecmp module no longer uses the deprecated use_statcache argument. - -- unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully - extended or overridden by subclasses. Formerly, the subclassed method would - be ignored by the rest of the module. (Bug #1078905). - -- heapq.nsmallest() and heapq.nlargest() now support key= arguments with - the same meaning as in list.sort(). - -- Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only - once when a size argument is given. This prevents a buffer overflow in the - tokenizer with very long source lines. - -- Bug #1083110: ``zlib.decompress.flush()`` would segfault if called - immediately after creating the object, without any intervening - ``.decompress()`` calls. - -- The reconvert.quote function can now emit triple-quoted strings. The - reconvert module now has some simple documentation. - -- ``UserString.MutableString`` now supports negative indices in - ``__setitem__`` and ``__delitem__`` - -- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") - correctly. - -- Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by - ``codecs.StreamReader.readline()`` has a trailing "\r", read one more - character even if the user has passed a size parameter to get a proper - line ending. Remove the special handling of a "\r\n" that has been split - between two lines. - -- Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain - about illegal code points. The codec now supports PEP 293 style error - handlers. - -- Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads - from the input stream, so that the output is a byte string in the correct - encoding instead of a unicode string. - -- Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than - considering it exactly like a '*'. - -- Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to - ``encodings.aliases``. - -- ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. - -- Patch #1413711: Certain patterns of differences were making difflib - touch the recursion limit. - -- Bug #947906: An object oriented interface has been added to the calendar - module. It's possible to generate HTML calendar now and the module can be - called as a script (e.g. via ``python -mcalendar``). Localized month and - weekday names can be ouput (even if an exotic encoding is used) using - special classes that use unicode. - -Build ------ - -- Fix test_float, test_long, and test_struct failures on Tru64 with gcc - by using -mieee gcc option. - -- Patch #1432345: Make python compile on DragonFly. - -- Build support for Win64-AMD64 was added. - -- Patch #1428494: Prefer linking against ncursesw over ncurses library. - -- Patch #881820: look for openpty and forkpty also in libbsd. - -- The sources of zlib are now part of the Python distribution (zlib 1.2.3). - The zlib module is now builtin on Windows. - -- Use -xcode=pic32 for CCSHARED on Solaris with SunPro. - -- Bug #1189330: configure did not correctly determine the necessary - value of LINKCC if python was built with GCC 4.0. - -- Upgrade Windows build to zlib 1.2.3 which eliminates a potential security - vulnerability in zlib 1.2.1 and 1.2.2. - -- EXTRA_CFLAGS has been introduced as an environment variable to hold compiler - flags that change binary compatibility. Changes were also made to - distutils.sysconfig to also use the environment variable when used during - compilation of the interpreter and of C extensions through distutils. - -- SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, - and linking has changed (prebinding is now deprecated, and libcc_dynamic - no longer exists). This configure patch makes things right. - -- Bug #1158607: Build with --disable-unicode again. - -- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is - defined. Discovered as a result of not being able to build on OS X. - -- setup.py now uses the directories specified in LDFLAGS using the -L option - and in CPPFLAGS using the -I option for adding library and include - directories, respectively, for compiling extension modules against. This has - led to the core being compiled using the values in CPPFLAGS. It also removes - the need for the special-casing of both DarwinPorts and Fink for darwin since - the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, - ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for - Fink, ``-I/opt/local/include`` for DarwinPorts). - -- Test in configure.in that checks for tzset no longer dependent on tm->tm_zone - to exist in the struct (not required by either ISO C nor the UNIX 2 spec). - Tests for sanity in tzname when HAVE_TZNAME defined were also defined. - Closes bug #1096244. Thanks Gregory Bond. - -C API ------ - -- ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to - ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory - is obtained via the ``PyObject_`` family, it must be released via the - ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has - always been officially true, but when Python's small-object allocator was - introduced, an attempt was made to cater to a few extension modules - discovered at the time that obtained memory via ``PyObject_New`` but - released it via ``PyMem_DEL``. It's years later, and if such code still - exists it will fail now (probably with segfaults, but calling wrong - low-level memory management functions can yield many symptoms). - -- Added a C API for set and frozenset objects. - -- Removed PyRange_New(). - -- Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the - mapping argument now. This string is used as a mapping table. Byte values - greater than the length of the string and 0xFFFE are treated as undefined - mappings. - - -Tests ------ - -- In test_os, st_?time is now truncated before comparing it with ST_?TIME. - -- Patch #1276356: New resource "urlfetch" is implemented. This enables - even impatient people to run tests that require remote files. - - -Documentation -------------- - -- Bug #1402224: Add warning to dl docs about crashes. - -- Bug #1396471: Document that Windows' ftell() can return invalid - values for text files with UNIX-style line endings. - -- Bug #1274828: Document os.path.splitunc(). - -- Bug #1190204: Clarify which directories are searched by site.py. - -- Bug #1193849: Clarify os.path.expanduser() documentation. - -- Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. - -- Bug #755617: Document the effects of os.chown() on Windows. - -- Patch #1180012: The documentation for modulefinder is now in the library reference. - -- Patch #1213031: Document that os.chown() accepts argument values of -1. - -- Bug #1190563: Document os.waitpid() return value with WNOHANG flag. - -- Bug #1175022: Correct the example code for property(). - -- Document the IterableUserDict class in the UserDict module. - Closes bug #1166582. - -- Remove all latent references for "Macintosh" that referred to semantics for - Mac OS 9 and change to reflect the state for OS X. - Closes patch #1095802. Thanks Jack Jansen. - -Mac ---- - - -New platforms -------------- - -- FreeBSD 7 support is added. - - -Tools/Demos ------------ - -- Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that - directory for syntax highlighting in Vim. Vim directory was added and placed - vimrc to it (was previous up a level). - -- Added two new files to Tools/scripts: pysource.py, which recursively - finds Python source files, and findnocoding.py, which finds Python - source files that need an encoding declaration. - Patch #784089, credits to Oleg Broytmann. - -- Bug #1072853: pindent.py used an uninitialized variable. - -- Patch #1177597: Correct Complex.__init__. - -- Fixed a display glitch in Pynche, which could cause the right arrow to - wiggle over by a pixel. - ---- **(For information about older versions, consult the HISTORY file.)** |