/Misc/HISTORY
http://unladen-swallow.googlecode.com/ · #! · 17442 lines · 12462 code · 4980 blank · 0 comment · 0 complexity · 9c1bc4d2e0906898e8397430f132aece MD5 · raw file
Large files are truncated click here to view the full file
- 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 #115…