mirror of https://github.com/python/cpython
3765 lines
140 KiB
Plaintext
3765 lines
140 KiB
Plaintext
+++++++++++
|
||
Python News
|
||
+++++++++++
|
||
|
||
(editors: check NEWS.help for information about editing NEWS using ReST.)
|
||
|
||
What's New in Python 2.6 alpha 1?
|
||
=================================
|
||
|
||
*Release date: XX-XXX-2008*
|
||
|
||
Core and builtins
|
||
-----------------
|
||
|
||
- Fixed several potential crashes, all caused by specially crafted __del__
|
||
methods exploiting objects in temporarily inconsistent state.
|
||
|
||
- Issue #2115: Important speedup in setting __slot__ attributes. Also
|
||
prevent a possible crash: an Abstract Base Class would try to access a slot
|
||
on a registered virtual subclass.
|
||
|
||
- Fixed repr() and str() of complex numbers with infinity or nan as real or
|
||
imaginary part.
|
||
|
||
- Clear all free list during a gc.collect() of the highest generation in order
|
||
to allow pymalloc to free more arenas. Python may give back memory to the
|
||
OS earlier.
|
||
|
||
- Issue #2045: Fix an infinite recursion triggered when printing a subclass of
|
||
collections.defaultdict, if its default_factory is set to a bound method.
|
||
|
||
- Fixed a minor memory leak in dictobject.c. The content of the free
|
||
list was not freed on interpreter shutdown.
|
||
|
||
- Limit free list of method and builtin function objects to 256 entries
|
||
each.
|
||
|
||
- Patch #1953: Added ``sys._compact_freelists()`` and the C API functions
|
||
``PyInt_CompactFreeList`` and ``PyFloat_CompactFreeList``
|
||
to compact the internal free lists of pre-allocted ints and floats.
|
||
|
||
- Bug #1983: Fixed return type of fork(), fork1() and forkpty() calls.
|
||
Python expected the return type int but the fork familie returns pi_t.
|
||
|
||
- Issue #1678380: Fix a bug that identifies 0j and -0j when they appear
|
||
in the same code unit.
|
||
|
||
- Issue #2025 : Add tuple.count() and tuple.index() methods to comply with
|
||
the collections.Sequence API.
|
||
|
||
- Patch #1970 by Antoine Pitrou: Speedup unicode whitespace and linebreak
|
||
detection
|
||
|
||
- Added ``PyType_ClearCache()`` and ``sys._clear_type_cache`` to clear the
|
||
internal lookup cache for ref leak tests.
|
||
|
||
- Patch #1473257: generator objects gain a gi_code attribute. This is the
|
||
same object as the func_code attribute of the function that produced the
|
||
generator.
|
||
|
||
- Issue #1920: "while 0" statements were completely removed by the compiler,
|
||
even in the presence of an "else" clause, which is supposed to be run when
|
||
the condition is false. Now the compiler correctly emits bytecode for the
|
||
"else" suite.
|
||
|
||
- A few crashers fixed: weakref_in_del.py (issue #1377858);
|
||
loosing_dict_ref.py (issue #1303614, test67.py);
|
||
borrowed_ref_[34].py (not in tracker).
|
||
|
||
- Issue #1069410: The "can't load dll" message box on Windows is
|
||
suppressed while an extension is loaded by calling SetErrorMode in
|
||
dynload_win.c. The error is still reported properly.
|
||
|
||
- Bug #1915: Python compiles with --enable-unicode=no again. However
|
||
several extension methods and modules do not work without unicode
|
||
support.
|
||
|
||
- Issue #1882: when compiling code from a string, encoding cookies in the
|
||
second line of code were not always recognized correctly.
|
||
|
||
- Issue #1679: "0x" was taken as a valid integer literal.
|
||
|
||
- Issue #1865: ``bytes`` as an alias for ``str`` and b"" as an alias "" were
|
||
added.
|
||
|
||
- sys.float_info / PyFloat_GetInfo: The floating point information
|
||
object was converted from a dict to a specialized structseq object.
|
||
|
||
- Patch #1816: Added sys.flags structseq. It exposes the status of most
|
||
command line arguments and PYTHON* environment variables.
|
||
|
||
- Objects/structseq.c: Implemented new structseq representation. The patch
|
||
makes structseqs (e.g. the return value of os.stat) more readable.
|
||
|
||
- Patch #1700288: added a type attribute cache that caches method accesses,
|
||
resulting in speedups in heavily object-oriented code.
|
||
|
||
- Bug #1776: __import__() no longer accepts filenames on any platform.
|
||
The first parameter to __import__() must be a valid module name.
|
||
|
||
- Patch #1668: renamed THREADDEBUG envvar to PYTHONTHREADDEBUG.
|
||
|
||
- Patch #602345: Add -B command line option, PYTHONDONTWRITEBYTECODE envvar
|
||
and sys.dont_write_bytecode attribute. All these can be set to forbid Python
|
||
to attempt to write compiled bytecode files.
|
||
|
||
- Improve some exception messages when Windows fails to load an extension
|
||
module. Now we get for example '%1 is not a valid Win32 application' instead
|
||
of 'error code 193'.
|
||
|
||
- Bug #1481296: Fixed long(float('nan'))!=0L.
|
||
|
||
- Issue #1640: Added math.isinf(x), math.isnan(x) and math.copysign(x, y)
|
||
functions.
|
||
|
||
- Issue #1635: Platform independent creation and representation of NaN
|
||
and INF. float("nan"), float("inf") and float("-inf") now work on every
|
||
platform with IEEE 754 semantics.
|
||
|
||
- Compiler now generates simpler and faster code for dictionary literals.
|
||
The oparg for BUILD_MAP now indicates an estimated dictionary size.
|
||
There is a new opcode, STORE_MAP, for adding entries to the dictionary.
|
||
|
||
- Issue #1638: %zd configure test fails on Linux
|
||
|
||
- Issue #1620: New property decorator syntax was modifying the decorator
|
||
in place instead of creating a new decorator object.
|
||
|
||
- Issue #1580: New free format floating point representation based on
|
||
"Floating-Point Printer Sample Code", by Robert G. Burger. For example
|
||
repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
|
||
|
||
- Issue #1538: Avoid copying string in split/rsplit if the split
|
||
char is not found.
|
||
|
||
- Issue #1553: An erroneous __length_hint__ can make list() raise a
|
||
SystemError.
|
||
|
||
- PEP 366: Allow explicit relative imports when executing modules
|
||
inside packages with the -m switch via a new module level
|
||
__package__ attribute.
|
||
|
||
- Issue #1402: Fix a crash on exit, when another thread is still running, and
|
||
if the deallocation of its frames somehow calls the PyGILState_Ensure() /
|
||
PyGILState_Release() functions.
|
||
|
||
- Expose the Py_Py3kWarningFlag as sys.py3kwarning.
|
||
|
||
- Issue #1445: Fix a SystemError when accessing the ``cell_contents``
|
||
attribute of an empty cell object.
|
||
|
||
- Issue #1460: The utf-7 incremental decoder did not accept truncated input.
|
||
It now correctly saves its state between chunks of data.
|
||
|
||
- Patch #1739468: Directories and zipfiles containing a __main__.py file can
|
||
now be directly executed by passing their name to the interpreter. The
|
||
directory/zipfile is automatically inserted as the first entry in sys.path.
|
||
|
||
- Issue #1265: Fix a problem with sys.settrace, if the tracing function uses a
|
||
generator expression when at the same time the executed code is closing a
|
||
paused generator.
|
||
|
||
- sets and frozensets now have an isdisjoint() method.
|
||
|
||
- optimize the performance of builtin.sum().
|
||
|
||
- Fix warnings found by the new version of the Coverity checker.
|
||
|
||
- The enumerate() builtin function is no longer bounded to sequences smaller
|
||
than LONG_MAX. Formerly, it raised an OverflowError. Now, automatically
|
||
shifts from ints to longs.
|
||
|
||
- Issue #1686386: Tuple's tp_repr did not take into account the possibility of
|
||
having a self-referential tuple, which is possible from C code. Nor did
|
||
object's tp_str consider that a type's tp_str could do something that could
|
||
lead to an inifinite recursion. Py_ReprEnter() and Py_EnterRecursiveCall(),
|
||
respectively, fixed the issues.
|
||
|
||
- Issue #1164: It was possible to trigger deadlock when using the 'print'
|
||
statement to write to a file since the GIL was not released as needed. Now
|
||
PyObject_Print() does the right thing along with various tp_print
|
||
implementations of the built-in types and those in the collections module.
|
||
|
||
- Issue #1147: Exceptions were directly allowing string exceptions in their
|
||
throw() method even though string exceptions no longer allowed.
|
||
|
||
- Issue #1096: Prevent a segfault from getting the repr of a very deeply nested
|
||
list by using the recursion counter.
|
||
|
||
- Issue #1202533: Fix infinite recursion calls triggered by calls to
|
||
PyObject_Call() never calling back out to Python code to trigger recursion
|
||
depth updates/checks. Required the creation of a static RuntimeError
|
||
instance in case normalizing an exception put the recursion check value past
|
||
its limit. Fixes crashers infinite_rec_(1|2|4|5).py.
|
||
|
||
- Patch #1031213: Decode source line in SyntaxErrors back to its original source
|
||
encoding.
|
||
|
||
- Patch #1673759: add a missing overflow check when formatting floats
|
||
with %G.
|
||
|
||
- Prevent expandtabs() on string and unicode objects from causing a segfault
|
||
when a large width is passed on 32-bit platforms.
|
||
|
||
- Bug #1733488: Fix compilation of bufferobject.c on AIX.
|
||
|
||
- Bug #1722485: remove docstrings again when running with -OO.
|
||
|
||
- Add new attribute names for function objects. All the func_* become
|
||
__*__ attributes. (Some already existed, e.g., __doc__ and __name__.)
|
||
|
||
- Add -3 option to the interpreter to warn about features that are
|
||
deprecated and will be changed/removed in Python 3.0.
|
||
|
||
- Patch #1686487: you can now pass any mapping after '**' in function
|
||
calls.
|
||
|
||
- except clauses may now be spelled either "except E, target:" or
|
||
"except E as target:". This is to provide forwards compatibility with
|
||
Python 3.0.
|
||
|
||
- Deprecate BaseException.message as per PEP 352.
|
||
|
||
- Bug #1303614: don't expose object's __dict__ when the dict is
|
||
inherited from a builtin base.
|
||
|
||
- When __slots__ are set to a unicode string, make it work the same as
|
||
setting a plain string, ie don't expand to single letter identifiers.
|
||
|
||
- Request #1191699: Slices can now be pickled.
|
||
|
||
- Request #1193128: str.translate() now allows a None argument for
|
||
translations that only remove characters without re-mapping the
|
||
remaining characters.
|
||
|
||
- Patch #1682205: a TypeError while unpacking an iterable is no longer
|
||
masked by a generic one with the message "unpack non-sequence".
|
||
|
||
- Remove unused file Python/fmod.c.
|
||
|
||
- Bug #1683368: The object.__init__() and object.__new__() methods are
|
||
now stricter in rejecting excess arguments. The only time when
|
||
either allows excess arguments is when it is not overridden and the
|
||
other one is. For backwards compatibility, when both are
|
||
overridden, it is a deprecation warning (for now; maybe a Py3k
|
||
warning later). Also, type.__init__() insists on the same signature
|
||
as supported by type.__new__().
|
||
|
||
- Patch #1675423: PyComplex_AsCComplex() now tries to convert an object
|
||
to complex using its __complex__() method before falling back to the
|
||
__float__() method. Therefore, the functions in the cmath module now
|
||
can operate on objects that define a __complex__() method.
|
||
|
||
- Patch #1623563: allow __class__ assignment for classes with __slots__.
|
||
The old and the new class are still required to have the same slot names.
|
||
|
||
- Patch #1642547: Fix an error/crash when encountering syntax errors in
|
||
complex if statements.
|
||
|
||
- Patch #1462488: Python no longer segfaults when ``object.__reduce_ex__()``
|
||
is called with an object that is faking its type.
|
||
|
||
- Patch #1680015: Don't modify __slots__ tuple if it contains an unicode
|
||
name.
|
||
|
||
- Patch #1444529: the builtin compile() now accepts keyword arguments.
|
||
|
||
- Bug #1678647: write a newline after printing an exception in any
|
||
case, even when converting the value to a string failed.
|
||
|
||
- The dir() function has been extended to call the __dir__() method on
|
||
its argument, if it exists. If not, it will work like before. This allows
|
||
customizing the output of dir() in the presence of a __getattr__().
|
||
|
||
- Patch #922167: Python no longer segfaults when faced with infinitely
|
||
self-recursive reload() calls (as reported by bug #742342).
|
||
|
||
- Patch #1675981: remove unreachable code from ``type.__new__()`` method.
|
||
|
||
- Patch #1491866: change the complex() constructor to allow parthensized
|
||
forms. This means complex(repr(x)) now works instead of raising a
|
||
ValueError.
|
||
|
||
- Patch #703779: unset __file__ in __main__ after running a file. This
|
||
makes the filenames the warning module prints much more sensible when
|
||
a PYTHONSTARTUP file is used.
|
||
|
||
- Variant of patch #697613: don't exit the interpreter on a SystemExit
|
||
exception if the -i command line option or PYTHONINSPECT environment
|
||
variable is given, but break into the interactive interpreter just like
|
||
on other exceptions or normal program exit.
|
||
|
||
- Patch #1638879: don't accept strings with embedded NUL bytes in long().
|
||
|
||
- Bug #1674503: close the file opened by execfile() in an error condition.
|
||
|
||
- Patch #1674228: when assigning a slice (old-style), check for the
|
||
sq_ass_slice instead of the sq_slice slot.
|
||
|
||
- When printing an unraisable error, don't print exceptions. before the name.
|
||
This duplicates the behavior whening normally printing exceptions.
|
||
|
||
- Bug #1653736: Properly discard third argument to slot_nb_inplace_power.
|
||
|
||
- PEP 352: Raising a string exception now triggers a TypeError. Attempting to
|
||
catch a string exception raises DeprecationWarning.
|
||
|
||
- Bug #1377858: Fix the segfaulting of the interpreter when an object created
|
||
a weakref on itself during a __del__ call for new-style classes (classic
|
||
classes still have the bug).
|
||
|
||
- Bug #1579370: Make PyTraceBack_Here use the current thread, not the
|
||
frame's thread state.
|
||
|
||
- patch #1630975: Fix crash when replacing sys.stdout in sitecustomize.py
|
||
|
||
- Prevent seg fault on shutdown which could occur if an object
|
||
raised a warning.
|
||
|
||
- Bug #1566280: Explicitly invoke threading._shutdown from Py_Main,
|
||
to avoid relying on atexit.
|
||
|
||
- Bug #1590891: random.randrange don't return correct value for big number
|
||
|
||
- Patch #1586791: Better exception messages for some operations on strings,
|
||
tuples and lists.
|
||
|
||
- Bug #1067760: Deprecate passing floats to file.seek.
|
||
|
||
- Bug #1591996: Correctly forward exception in instance_contains().
|
||
|
||
- Bug #1588287: fix invalid assertion for `1,2` in debug builds.
|
||
|
||
- Bug #1576657: when setting a KeyError for a tuple key, make sure that
|
||
the tuple isn't used as the "exception arguments tuple".
|
||
|
||
- Bug #1565514, SystemError not raised on too many nested blocks.
|
||
|
||
- Bug #1576174: WindowsError now displays the windows error code
|
||
again, no longer the posix error code.
|
||
|
||
- Patch #1549049: Support long values in structmember, issue warnings
|
||
if the assigned value for structmember fields gets truncated.
|
||
|
||
- Update the peephole optimizer to remove more dead code (jumps after returns)
|
||
and inline unconditional jumps to returns.
|
||
|
||
- Bug #1545497: when given an explicit base, int() did ignore NULs
|
||
embedded in the string to convert.
|
||
|
||
- Bug #1569998: break inside a try statement (outside a loop) is now
|
||
recognized and rejected.
|
||
|
||
- list.pop(x) accepts any object x following the __index__ protocol.
|
||
|
||
- A number of places, including integer negation and absolute value,
|
||
were fixed to not rely on undefined behaviour of the C compiler
|
||
anymore.
|
||
|
||
- Bug #1566800: make sure that EnvironmentError can be called with any
|
||
number of arguments, as was the case in Python 2.4.
|
||
|
||
- Patch #1567691: super() and new.instancemethod() now don't accept
|
||
keyword arguments any more (previously they accepted them, but didn't
|
||
use them).
|
||
|
||
- Fix a bug in the parser's future statement handling that led to "with"
|
||
not being recognized as a keyword after, e.g., this statement:
|
||
from __future__ import division, with_statement
|
||
|
||
- Bug #1557232: fix seg fault with def f((((x)))) and def f(((x),)).
|
||
|
||
- Fix %zd string formatting on Mac OS X so it prints negative numbers.
|
||
|
||
- Allow exception instances to be directly sliced again.
|
||
|
||
- Bug #1551432: Exceptions do not define an explicit __unicode__ method. This
|
||
allows calling unicode() on exceptions classes directly to succeed.
|
||
|
||
- Bug #1542051: Exceptions now correctly call PyObject_GC_UnTrack.
|
||
Also make sure that every exception class has __module__ set to
|
||
'exceptions'.
|
||
|
||
- Bug #1550983: emit better error messages for erroneous relative
|
||
imports (if not in package and if beyond toplevel package).
|
||
|
||
- Overflow checking code in integer division ran afoul of new gcc
|
||
optimizations. Changed to be more standard-conforming.
|
||
|
||
- Patch #1542451: disallow continue anywhere under a finally.
|
||
|
||
- Patch #1546288: fix seg fault in dict_equal due to ref counting bug.
|
||
|
||
- The return tuple from str.rpartition(sep) is (tail, sep, head) where
|
||
head is the original string if sep was not found.
|
||
|
||
- Bug #1520864: unpacking singleton tuples in list comprehensions and
|
||
generator expressions (x for x, in ... ) works again. Fixing this problem
|
||
required changing the .pyc magic number. This means that .pyc files
|
||
generated before 2.5c2 will be regenerated.
|
||
|
||
- ``with`` and ``as`` are now keywords.
|
||
|
||
- Bug #1664966: Fix crash in exec if Unicode filename can't be decoded.
|
||
|
||
- Issue #1537: Changed GeneratorExit's base class from Exception to
|
||
BaseException.
|
||
|
||
- Fix Issue #1703448: A joined thread could show up in the
|
||
threading.enumerate() list after the join() for a brief period until
|
||
it actually exited.
|
||
|
||
|
||
Library
|
||
-------
|
||
|
||
- ctypes instances that are not or do not contain pointers can now be
|
||
pickled.
|
||
|
||
- Patch #1966: Break infinite loop in httplib when the servers
|
||
implements the chunked encoding incorrectly.
|
||
|
||
- Rename rational.py to fractions.py and the rational.Rational class
|
||
to fractions.Fraction, to avoid the name clash with the abstract
|
||
base class numbers.Rational. See discussion in issue #1682.
|
||
|
||
- The pickletools module now provides an optimize() function
|
||
that eliminates unused PUT opcodes from a pickle string.
|
||
|
||
- #2021: Allow tempfile.NamedTemporaryFile and SpooledTemporaryFile
|
||
to be used in with statements by correctly supporting the context
|
||
management protocol.
|
||
|
||
- #1979: Add rich comparisons to Decimal, and make Decimal comparisons
|
||
involving a NaN follow the IEEE 754 standard.
|
||
|
||
- #2004: tarfile.py: Use mode 0700 for temporary directories and default
|
||
permissions for missing directories.
|
||
|
||
- #175006: The debugger used to skip the condition of a "while" statement
|
||
after the first iteration. Now it correctly steps on the expression, and
|
||
breakpoints on the "while" statement are honored on each loop.
|
||
|
||
- #1765140: add an optional delay argument to FileHandler and its
|
||
subclasses. Defaults to false (existing behaviour), but if true,
|
||
defers opening the file until the first call to emit().
|
||
|
||
- The pprint module now supports sets and frozensets.
|
||
|
||
- #1221598: add optional callbacks to ftplib.FTP's storbinary() and
|
||
storlines() methods. (Contributed by Phil Schwartz)
|
||
|
||
- #1715: include sub-extension modules in pydoc's text output.
|
||
|
||
- #1836: fix an off-by-one bug in TimedRotatingHandler's rollover
|
||
time calculation.
|
||
|
||
- #1021: fix a bug to allow basicConfig to accept NOTSET as a level.
|
||
|
||
- #932563: add LoggerAdapter convenience class to make it easier to add
|
||
contextual information in logging output.
|
||
|
||
- #1760556: fix a bug to avoid FileHandler throwing an exception in
|
||
flush().
|
||
|
||
- Bug #1530959: distutils' build command now uses different build directory
|
||
when building extension modules against versions of Python compiled
|
||
with ``--with-pydebug``.
|
||
|
||
- #1555501: move plistlib from plat-mac directory to general library.
|
||
|
||
- #1269: fix a bug in pstats.add_callers() and add a unit test file for
|
||
pstats.
|
||
|
||
- #1669: don't allow shutil.rmtree() to be called on a symlink to a
|
||
directory.
|
||
|
||
- #1664522: in urllib, don't read non-existing directories in ftp mode,
|
||
returning a 0-byte file -- raise an IOError instead.
|
||
|
||
- #856047: respect the ``no_proxy`` environment variable when using the
|
||
``http_proxy`` etc. environment variables in urllib.
|
||
|
||
- #1178141: add a getcode() method to the addinfourls that urllib.open()
|
||
returns so that you can retrieve the HTTP status code.
|
||
|
||
- Issue #1003: Fix zipfile decryption check, it would fail zip files
|
||
with extended local headers.
|
||
|
||
- #1189216: Fix the zipfile module to work on archives with headers
|
||
past the 2**31 byte boundary.
|
||
|
||
- #1336: fix a race condition in subprocess.Popen if the garbage
|
||
collector kicked in at the wrong time that would cause the process
|
||
to hang when the child wrote to stderr.
|
||
|
||
- #1146: fix how textwrap breaks a long word that would start in the
|
||
last column of a line.
|
||
|
||
- #1693149: trace.py --ignore-module - accept multiple comma-separated
|
||
modules to be given.
|
||
|
||
- #1822: MIMEMultipart.is_multipart() behaves correctly for a just-created
|
||
(and empty) instance. Thanks Jonathan Share.
|
||
|
||
- #1861: Added an attribute to the sched module which returns an ordered
|
||
list of upcoming events (displayed as named tuples).
|
||
|
||
- #1837: The queue module now also supports a LIFO queue and a priority queue.
|
||
|
||
- Patch #1048820: Add insert-mode editing to curses.textpad.Textbox
|
||
(patch by Stefan Wehr). Also, fix an off-by-one bug in
|
||
Textbox.gather().
|
||
|
||
- Issue #1831: ctypes now raises a TypeError if conflicting positional
|
||
and named arguments are passed to a Structure or Union initializer.
|
||
When too many positional arguments are passed, also a TypeError is
|
||
raised instead of a ValueError.
|
||
|
||
- Convert the internal ctypes array type cache to a WeakValueDict so
|
||
that array types do not live longer than needed.
|
||
|
||
- Issue #1786: pdb should use its own stdin/stdout around an exec call
|
||
and when creating a recursive instance.
|
||
|
||
- Issue #1698398 Zipfile.printdir() crashed because the format string
|
||
expected a tuple type of length six instead of time.struct_time object.
|
||
|
||
- Issue #1780: The Decimal constructor now accepts arbitrary leading
|
||
and trailing whitespace when constructing from a string.
|
||
Context.create_decimal no longer accepts trailing newlines.
|
||
|
||
- Decimal.as_tuple(), difflib.find_longest_match() and inspect functions
|
||
that returned a tuple now return a named tuple.
|
||
|
||
- Doctest now returns results as a named tuple for readability:
|
||
(0, 7) --> TestResults(failed=0, attempted=7)
|
||
|
||
- Issue #846388. re.match is interruptible now, which is particularly
|
||
good for long regular expression matches.
|
||
|
||
- pyexpat, patch #1137: allow setting buffer_size attribute
|
||
on Parser objects to set the character data buffer size.
|
||
|
||
- Issue #1757: The hash of a Decimal instance is no longer affected by
|
||
the current context.
|
||
|
||
- Patch #467924: add ZipFile.extract() and ZipFile.extractall() in the
|
||
zipfile module.
|
||
|
||
- Issue #1646: Make socket support the TIPC protocol.
|
||
|
||
- Bug #1742: return os.curdir from os.path.relpath() if both arguments are
|
||
equal instead of raising an exception.
|
||
|
||
- Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
|
||
|
||
- Patch #1698: allow '@' in username parsed by urlparse.py.
|
||
|
||
- Issue #1735: TarFile.extractall() now correctly sets directory permissions
|
||
and times.
|
||
|
||
- Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a mountpoint.
|
||
|
||
- Bug #1687: Fxed plistlib.py restricts <integer> to Python int when writing
|
||
|
||
- Issue #1700: Regular expression inline flags incorrectly handle certain
|
||
unicode characters.
|
||
|
||
- Issue #1689: PEP 3141, numeric abstract base classes.
|
||
|
||
- Tk issue #1851526: Return results from Python callbacks to Tcl as
|
||
Tcl objects.
|
||
|
||
- Issue #1642: Fix segfault in ctypes when trying to delete attributes.
|
||
|
||
- Issue #1727780: Support loading pickles of random.Random objects created
|
||
on 32-bit systems on 64-bit systems, and vice versa. As a consequence
|
||
of the change, Random pickles created by Python 2.6 cannot be loaded
|
||
in Python 2.5.
|
||
|
||
- Issue #1455: The distutils package now supports VS 2005 and VS 2008 for
|
||
both the msvccompiler and cygwincompiler.
|
||
|
||
- Issue #1531: tarfile.py: Read fileobj from the current offset, do not
|
||
seek to the start.
|
||
|
||
- Issue #1534: Added a dictionary sys.float_info with information about the
|
||
internal floating point type to the sys module.
|
||
|
||
- Issue 1429818: patch for trace and doctest modules so they play nicely
|
||
together.
|
||
|
||
- doctest made a bad assumption that a package's __loader__.get_data()
|
||
method used universal newlines.
|
||
|
||
- Issue #1705170: contextlib.contextmanager was still swallowing
|
||
StopIteration in some cases. This should no longer happen.
|
||
|
||
- Issue #1292: On alpha, arm, ppc, and s390 linux systems the
|
||
--with-system-ffi configure option defaults to "yes".
|
||
|
||
- IN module for FreeBSD 8 is added and preexisting FreeBSD 6 and 7
|
||
files are updated.
|
||
|
||
- Issues #1181, #1287: unsetenv() is now called when the os.environ.pop()
|
||
and os.environ.clear() methods are used.
|
||
|
||
- ctypes will now work correctly on 32-bit systems when Python is
|
||
configured with --with-system-ffi.
|
||
|
||
- Patch #1203: ctypes now does work on OS X when Python is built with
|
||
--disable-toolbox-glue.
|
||
|
||
- collections.deque() now supports a "maxlen" argument.
|
||
|
||
- itertools.count() is no longer bounded to LONG_MAX. Formerly, it raised
|
||
an OverflowError. Now, automatically shifts from ints to longs.
|
||
|
||
- Patch #1541463: optimize performance of cgi.FieldStorage operations.
|
||
|
||
- Decimal is fully updated to the latest Decimal Specification (v1.66).
|
||
|
||
- Bug #1153: repr.repr() now doesn't require set and dictionary items
|
||
to be orderable to properly represent them.
|
||
|
||
- A 'c_longdouble' type was added to the ctypes module.
|
||
|
||
- Bug #1709599: Run test_1565150 only if the file system is NTFS.
|
||
|
||
- When encountering a password-protected robots.txt file the RobotFileParser
|
||
no longer prompts interactively for a username and password (bug 813986).
|
||
|
||
- TarFile.__init__() no longer fails if no name argument is passed and
|
||
the fileobj argument has no usable name attribute (e.g. StringIO).
|
||
|
||
- The functools module now provides 'reduce', for forward compatibility
|
||
with Python 3000.
|
||
|
||
- Server-side SSL support and cert verification added, by Bill Janssen.
|
||
|
||
- socket.ssl deprecated; use new ssl module instead.
|
||
|
||
- uuid creation is now threadsafe.
|
||
|
||
- EUC-KR codec now handles the cheot-ga-keut composed make-up hangul
|
||
syllables.
|
||
|
||
- GB18030 codec now can encode additional two-byte characters that
|
||
are missing in GBK.
|
||
|
||
- Add new codecs for UTF-32, UTF-32-LE and UTF-32-BE.
|
||
|
||
- Bug #1704793: Return UTF-16 pair if unicodedata.lookup cannot
|
||
represent the result in a single character.
|
||
|
||
- Bug #978833: Close https sockets by releasing the _ssl object.
|
||
|
||
- Change location of the package index to pypi.python.org/pypi
|
||
|
||
- Bug #1701409: Fix a segfault in printing ctypes.c_char_p and
|
||
ctypes.c_wchar_p when they point to an invalid location. As a
|
||
sideeffect the representation of these instances has changed.
|
||
|
||
- tarfile.py: Added "exclude" keyword argument to TarFile.add().
|
||
|
||
- Bug #1734723: Fix repr.Repr() so it doesn't ignore the maxtuple attribute.
|
||
|
||
- The urlopen function of urllib2 now has an optional timeout parameter (note
|
||
that it actually works with HTTP, HTTPS, FTP and FTPS connections).
|
||
|
||
- In ftplib, the FTP.ntransfercmd method, when in passive mode, now uses
|
||
the socket.create_connection function, using the timeout specified at
|
||
connection time.
|
||
|
||
- Bug #1728403: Fix a bug that CJKCodecs StreamReader hangs when it
|
||
reads a file that ends with incomplete sequence and sizehint argument
|
||
for .read() is specified.
|
||
|
||
- Bug #1730389: Change time.strptime() to use ``\s+`` instead of ``\s*`` when
|
||
matching spaces in the specified format argument.
|
||
|
||
- SF 1668596/1720897: distutils now copies data files
|
||
even if package_dir is empty.
|
||
|
||
- sha now raises a DeprecationWarning upon import.
|
||
|
||
- md5 now raises a DeprecationWarning upon import.
|
||
|
||
- Issue1385: The hmac module now computes the correct hmac when using hashes
|
||
with a block size other than 64 bytes (such as sha384 and sha512).
|
||
|
||
- mimify now raises a DeprecationWarning upon import.
|
||
|
||
- MimeWriter now raises a DeprecationWarning upon import.
|
||
|
||
- tarfile.py: Improved unicode support. Unicode input names are now
|
||
officially supported. Added "errors" argument to the TarFile class.
|
||
|
||
- urllib.ftpwrapper class now accepts an optional timeout.
|
||
|
||
- shlex.split() now has an optional "posix" parameter.
|
||
|
||
- The posixfile module now raises a DeprecationWarning.
|
||
|
||
- Remove the gopherlib module. This also leads to the removal of gopher
|
||
support in urllib/urllib2.
|
||
|
||
- Fix bug in marshal where bad data would cause a segfault due to
|
||
lack of an infinite recursion check.
|
||
|
||
- Removed plat-freebsd2 and plat-freebsd3 directories (and IN.py in
|
||
the directories).
|
||
|
||
- HTML-escape the plain traceback in cgitb's HTML output, to prevent
|
||
the traceback inadvertently or maliciously closing the comment and
|
||
injecting HTML into the error page.
|
||
|
||
- The popen2 module and os.popen* are deprecated. Use the subprocess module.
|
||
|
||
- Added an optional credentials argument to SMTPHandler, for use with SMTP
|
||
servers which require authentication.
|
||
|
||
- Patch #1695948: Added optional timeout parameter to SocketHandler.
|
||
|
||
- Bug #1652788: Minor fix for currentframe.
|
||
|
||
- Patch #1598415: Added WatchedFileHandler to better support external
|
||
log file rotation using e.g. newsyslog or logrotate. This handler is
|
||
only useful in Unix/Linux environments.
|
||
|
||
- Bug #1706381: Specifying the SWIG option "-c++" in the setup.py file
|
||
(as opposed to the command line) will now write file names ending in
|
||
".cpp" too.
|
||
|
||
- As specified in RFC 2616, an HTTP response like 2xx indicates that
|
||
the client's request was successfully received, understood, and accepted.
|
||
Now in these cases no error is raised in urllib (issue #1177) and urllib2.
|
||
|
||
- Bug #1290505: time.strptime's internal cache of locale information is now
|
||
properly recreated when the locale is changed.
|
||
|
||
- Patch #1685563: remove (don't add) duplicate paths in distutils.MSVCCompiler.
|
||
|
||
- Added a timeout parameter to the constructor of other protocols
|
||
(telnetlib, ftplib, smtplib and poplib). This is second part of the
|
||
work started with create_connection() and timeout in httplib, and
|
||
closes patch #723312.
|
||
|
||
- Patch #1676823: Added create_connection() to socket.py, which may be
|
||
called with a timeout, and use it from httplib (whose HTTPConnection
|
||
and HTTPSConnection now accept an optional timeout).
|
||
|
||
- Bug #978833: Revert r50844, as it broke _socketobject.dup.
|
||
|
||
- Bug #1675967: re patterns pickled with Python 2.4 and earlier can
|
||
now be unpickled with Python 2.5 and newer.
|
||
|
||
- Patch #1630118: add a SpooledTemporaryFile class to tempfile.py.
|
||
|
||
- Patch #1273829: os.walk() now has a "followlinks" parameter. If set to
|
||
True (which is not the default), it visits symlinks pointing to
|
||
directories.
|
||
|
||
- Bug #1681228: the webbrowser module now correctly uses the default
|
||
GNOME or KDE browser, depending on whether there is a session of one
|
||
of those present. Also, it tries the Windows default browser before
|
||
trying Mozilla variants.
|
||
|
||
- Patch #1339796: add a relpath() function to os.path.
|
||
|
||
- Patch #1681153: the wave module now closes a file object it opened if
|
||
initialization failed.
|
||
|
||
- Bug #767111: fix long-standing bug in urllib which caused an
|
||
AttributeError instead of an IOError when the server's response didn't
|
||
contain a valid HTTP status line.
|
||
|
||
- Patch #957650: "%var%" environment variable references are now properly
|
||
expanded in ntpath.expandvars(), also "~user" home directory references
|
||
are recognized and handled on Windows.
|
||
|
||
- Patch #1429539: pdb now correctly initializes the __main__ module for
|
||
the debugged script, which means that imports from __main__ work
|
||
correctly now.
|
||
|
||
- The nonobvious commands.getstatus() function is now deprecated.
|
||
|
||
- Patch #1393667: pdb now has a "run" command which restarts the debugged
|
||
Python program, optionally with different arguments.
|
||
|
||
- Patch #1649190: Adding support for _Bool to ctypes as c_bool.
|
||
|
||
- Patch #1530482: add pydoc.render_doc() which returns the documentation
|
||
for a thing instead of paging it to stdout, which pydoc.doc() does.
|
||
|
||
- Patch #1533909: the timeit module now accepts callables in addition to
|
||
strings for the code to time and the setup code. Also added two
|
||
convenience functions for instantiating a Timer and calling its methods.
|
||
|
||
- Patch #1537850: tempfile.NamedTemporaryFile now has a "delete" parameter
|
||
which can be set to False to prevent the default delete-on-close
|
||
behavior.
|
||
|
||
- Patch #1581073: add a flag to textwrap that prevents the dropping of
|
||
whitespace while wrapping.
|
||
|
||
- Patch #1603688: ConfigParser.SafeConfigParser now checks values that
|
||
are set for invalid interpolation sequences that would lead to errors
|
||
on reading back those values.
|
||
|
||
- Added support for the POSIX.1-2001 (pax) format to tarfile.py. Extended
|
||
and cleaned up the test suite. Added a new testtar.tar.
|
||
|
||
- Patch #1449244: Support Unicode strings in
|
||
email.message.Message.{set_charset,get_content_charset}.
|
||
|
||
- Patch #1542681: add entries for "with", "as" and "CONTEXTMANAGERS" to
|
||
pydoc's help keywords.
|
||
|
||
- Patch #1555098: use str.join() instead of repeated string
|
||
concatenation in robotparser.
|
||
|
||
- Patch #1635454: the csv.DictWriter class now includes the offending
|
||
field names in its exception message if you try to write a record with
|
||
a dictionary containing fields not in the CSV field names list.
|
||
|
||
- Patch #1668100: urllib2 now correctly raises URLError instead of
|
||
OSError if accessing a local file via the file:// protocol fails.
|
||
|
||
- Patch #1677862: Require a space or tab after import in .pth files.
|
||
|
||
- Patch #1192590: Fix pdb's "ignore" and "condition" commands so they trap
|
||
the IndexError caused by passing in an invalid breakpoint number.
|
||
|
||
- Patch #1599845: Add an option to disable the implicit calls to server_bind()
|
||
and server_activate() in the constructors for TCPServer, SimpleXMLRPCServer
|
||
and DocXMLRPCServer.
|
||
|
||
- Bug #1531963: Make SocketServer.TCPServer's server_address always
|
||
be equal to calling getsockname() on the server's socket. Fixed by
|
||
patch #1545011.
|
||
|
||
- Patch #742598: Add .timeout attribute to SocketServer that calls
|
||
.handle_timeout() when no requests are received.
|
||
|
||
- Bug #1651235: When a tuple was passed to a ctypes function call,
|
||
Python would crash instead of raising an error.
|
||
|
||
- Bug #1646630: ctypes.string_at(buf, 0) and ctypes.wstring_at(buf, 0)
|
||
returned string up to the first NUL character.
|
||
|
||
- Patch #957003: Implement smtplib.LMTP.
|
||
|
||
- Patch #1481079: add support for HTTP_REFERER to CGIHTTPServer.
|
||
|
||
- Patch #1675424: Added tests for uncovered code in the zipfile module.
|
||
The KeyError raised by Zipfile.getinfo for nonexistent names now has
|
||
a descriptive message.
|
||
|
||
- Bug #1115886: os.path.splitext('.cshrc') gives now ('.cshrc', '').
|
||
|
||
- unittest now verifies more of its assumptions. In particular, TestCase
|
||
and TestSuite subclasses (not instances) are no longer accepted in
|
||
TestSuite.addTest(). This should cause no incompatibility since it
|
||
never made sense with ordinary subclasses -- the failure just occurred
|
||
later, with a more cumbersome exception.
|
||
|
||
- Patch #787789: allow to pass custom TestRunner instances to unittest's
|
||
main() function.
|
||
|
||
- Patches #1550273, #1550272: fix a few bugs in unittest and add a
|
||
comprehensive test suite for the module.
|
||
|
||
- Patch #1001604: glob.glob() now returns unicode filenames if it was
|
||
given a unicode argument and os.listdir() returns unicode filenames.
|
||
|
||
- Patch #1673619: setup.py identifies extension modules it doesn't know how
|
||
to build and those it knows how to build but that fail to build.
|
||
|
||
- Patch #912410: Replace HTML entity references for attribute values
|
||
in HTMLParser.
|
||
|
||
- Patch #1663234: you can now run doctest on test files and modules
|
||
using "python -m doctest [-v] filename ...".
|
||
|
||
- Patch #1121142: Implement ZipFile.open.
|
||
|
||
- Taught setup.py how to locate Berkeley DB on Macs using MacPorts.
|
||
|
||
- Added heapq.merge() for merging sorted input streams.
|
||
|
||
- Added collections.namedtuple() for assigning field names to tuples.
|
||
|
||
- Added itertools.izip_longest().
|
||
|
||
- Have the encoding package's search function dynamically import using absolute
|
||
import semantics.
|
||
|
||
- Patch #1647484: Renamed GzipFile's filename attribute to name.
|
||
|
||
- Patch #1517891: Mode 'a' for ZipFile now creates the file if it
|
||
doesn't exist.
|
||
|
||
- Patch #698833: Support file decryption in zipfile.
|
||
|
||
- Patch #685268: Consider a package's __path__ in imputil.
|
||
|
||
- Patch 1463026: Support default namespace in XMLGenerator.
|
||
|
||
- Patch 1571379: Make trace's --ignore-dir facility work in the face of
|
||
relative directory names.
|
||
|
||
- Bug #1600860: Search for shared python library in LIBDIR,
|
||
not lib/python/config, on "linux" and "gnu" systems.
|
||
|
||
- Patch #1652681: tarfile.py: create nonexistent files in append mode and
|
||
allow appending to empty files.
|
||
|
||
- Bug #1124861: Automatically create pipes if GetStdHandle fails in
|
||
subprocess.
|
||
|
||
- Patch #1634778: add missing encoding aliases for iso8859_15 and
|
||
iso8859_16.
|
||
|
||
- Patch #1638243: the compiler package is now able to correctly compile
|
||
a with statement; previously, executing code containing a with statement
|
||
compiled by the compiler package crashed the interpreter.
|
||
|
||
- Bug #1643943: Fix time.strptime's support for the %U directive.
|
||
|
||
- Patch #1507247: tarfile.py: use current umask for intermediate
|
||
directories.
|
||
|
||
- Patch #1627441: close sockets properly in urllib2.
|
||
|
||
- Bug #494589: make ntpath.expandvars behave according to its docstring.
|
||
|
||
- Changed platform module API python_version_tuple() to actually
|
||
return a tuple (it used to return a list).
|
||
|
||
- Added new platform module APIs python_branch(), python_revision(),
|
||
python_implementation() and linux_distribution().
|
||
|
||
- Added support for IronPython and Jython to the platform module.
|
||
|
||
- The sets module has been deprecated. Use the built-in set/frozenset types
|
||
instead.
|
||
|
||
- Bug #1610795: make ctypes.util.find_library work on BSD systems.
|
||
|
||
- Fixes for 64-bit Windows: In ctypes.wintypes, correct the
|
||
definitions of HANDLE, WPARAM, LPARAM data types. Make
|
||
parameterless foreign function calls work.
|
||
|
||
- The version number of the ctypes package changed to "1.1.0".
|
||
|
||
- Bug #1627575: logging: Added _open() method to FileHandler which can
|
||
be used to reopen files. The FileHandler instance now saves the
|
||
encoding (which can be None) in an attribute called "encoding".
|
||
|
||
- Bug #411881: logging.handlers: bare except clause removed from
|
||
SMTPHandler.emit. Now, only ImportError is trapped.
|
||
|
||
- Bug #411881: logging.handlers: bare except clause removed from
|
||
SocketHandler.createSocket. Now, only socket.error is trapped.
|
||
|
||
- Bug #411881: logging: bare except clause removed from LogRecord.__init__.
|
||
Now, only ValueError, TypeError and AttributeError are trapped.
|
||
|
||
- Patch #1504073: Fix tarfile.open() for mode "r" with a fileobj argument.
|
||
|
||
- Patch #1182394 from Shane Holloway: speed up HMAC.hexdigest.
|
||
|
||
- Patch #1262036: Prevent TarFiles from being added to themselves under
|
||
certain conditions.
|
||
|
||
- Patch #1230446: tarfile.py: fix ExFileObject so that read() and tell()
|
||
work correctly together with readline().
|
||
|
||
- Patch #1484695: The tarfile module now raises a HeaderError exception
|
||
if a buffer given to frombuf() is invalid.
|
||
|
||
- Bug #1503765: Fix a problem in logging.config with spaces in comma-
|
||
separated lists read from logging config files.
|
||
|
||
- Patch #1604907: Fix problems in logging.handlers caused at logging shutdown
|
||
when syslog handlers fail to initialize because of syslogd problems.
|
||
|
||
- Patch #1608267: fix a race condition in os.makedirs() if the directory
|
||
to be created is already there.
|
||
|
||
- Patch #1610437: fix a tarfile bug with long filename headers.
|
||
|
||
- Patch #1371075: Make ConfigParser accept optional dict type
|
||
for ordering, sorting, etc.
|
||
|
||
- Bug #1563807: _ctypes built on AIX fails with ld ffi error.
|
||
|
||
- Bug #1598620: A ctypes Structure cannot contain itself.
|
||
|
||
- Patch #1070046: Marshal new-style objects like InstanceType
|
||
in xmlrpclib.
|
||
|
||
- cStringIO.truncate(-1) now raises an IOError, like StringIO and
|
||
regular files.
|
||
|
||
- Patch #1472877: Fix Tix subwidget name resolution.
|
||
|
||
- Patch #1594554: Always close a tkSimpleDialog on ok(), even
|
||
if an exception occurs.
|
||
|
||
- Patch #1538878: Don't make tkSimpleDialog dialogs transient if
|
||
the parent window is withdrawn.
|
||
|
||
- Bug #1597824: return the registered function from atexit.register()
|
||
to facilitate usage as a decorator.
|
||
|
||
- Patch #1360200: Use unmangled_version RPM spec field to deal with
|
||
file name mangling.
|
||
|
||
- Patch #1359217: Process 2xx response in an ftplib transfer
|
||
that precedes an 1xx response.
|
||
|
||
- Patch #1355023: support whence argument for GzipFile.seek.
|
||
|
||
- Patch #1065257: Support passing open files as body in
|
||
HTTPConnection.request().
|
||
|
||
- Bug #1569790: mailbox.py: Maildir.get_folder() and MH.get_folder()
|
||
weren't passing the message factory on to newly created Maildir/MH
|
||
objects.
|
||
|
||
- Patch #1514543: mailbox.py: In the Maildir class, report errors if there's
|
||
a filename clash instead of possibly losing a message. (Patch by David
|
||
Watson.)
|
||
|
||
- Patch #1514544: Try to ensure that messages/indexes have been physically
|
||
written to disk after calling .flush() or .close(). (Patch by David
|
||
Watson.)
|
||
|
||
- Patch #1592250: Add elidge argument to Tkinter.Text.search.
|
||
|
||
- 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
|
||
|
||
- Bug #1586613: fix zlib and bz2 codecs' incremental en/decoders.
|
||
|
||
- Patch #1583880: fix tarfile's problems with long names and posix/
|
||
GNU modes.
|
||
|
||
- Bug #1586448: the compiler module now emits the same bytecode for
|
||
list comprehensions as the builtin compiler, using the LIST_APPEND
|
||
opcode.
|
||
|
||
- Fix codecs.EncodedFile which did not use file_encoding in 2.5.0, and
|
||
fix all codecs file wrappers to work correctly with the "with"
|
||
statement (bug #1586513).
|
||
|
||
- Lib/modulefinder.py now handles absolute and relative imports
|
||
correctly.
|
||
|
||
- Patch #1567274: Support SMTP over TLS.
|
||
|
||
- Patch #1560695: Add .note.GNU-stack to ctypes' sysv.S so that
|
||
ctypes isn't considered as requiring executable stacks.
|
||
|
||
- ctypes callback functions only support 'fundamental' data types as
|
||
result type. Raise an error when something else is used. This is a
|
||
partial fix for Bug #1574584.
|
||
|
||
- Fix turtle so that time.sleep is imported for the entire library. Allows
|
||
the demo2 function to be executed on its own instead of only when the
|
||
module is run as a script.
|
||
|
||
- Bug #813342: Start the IDLE subprocess with -Qnew if the parent
|
||
is started with that option.
|
||
|
||
- Bug #1565150: Fix subsecond processing for os.utime on Windows.
|
||
|
||
- Support for MSVC 8 was added to bdist_wininst.
|
||
|
||
- Bug #1446043: correctly raise a LookupError if an encoding name given
|
||
to encodings.search_function() contains a dot.
|
||
|
||
- Bug #1560617: in pyclbr, return full module name not only for classes,
|
||
but also for functions.
|
||
|
||
- Bug #1457823: cgi.(Sv)FormContentDict's constructor now takes
|
||
keep_blank_values and strict_parsing keyword arguments.
|
||
|
||
- Bug #1566602: correct failure of posixpath unittest when $HOME ends
|
||
with a slash.
|
||
|
||
- Bug #1565661: in webbrowser, split() the command for the default
|
||
GNOME browser in case it is a command with args.
|
||
|
||
- Made the error message for time.strptime when the data data and format do
|
||
match be more clear.
|
||
|
||
- Fix a bug in traceback.format_exception_only() that led to an error
|
||
being raised when print_exc() was called without an exception set.
|
||
In version 2.4, this printed "None", restored that behavior.
|
||
|
||
- Make webbrowser.BackgroundBrowser usable in Windows (it wasn't because
|
||
the close_fds arg to subprocess.Popen is not supported).
|
||
|
||
- Reverted patch #1504333 to sgmllib because it introduced an infinite loop.
|
||
|
||
- Patch #1553314: Fix the inspect.py slowdown that was hurting IPython & SAGE
|
||
by adding smarter caching in inspect.getmodule()
|
||
|
||
- Fix missing import of the types module in logging.config.
|
||
|
||
- Patch #1550886: Fix decimal module context management implementation
|
||
to match the localcontext() example from PEP 343.
|
||
|
||
- Bug #1545341: The 'classifier' keyword argument to the Distutils setup()
|
||
function now accepts tuples as well as lists.
|
||
|
||
- Bug #1541863: uuid.uuid1 failed to generate unique identifiers
|
||
on systems with low clock resolution.
|
||
|
||
- Bug #1531862: Do not close standard file descriptors in subprocess.
|
||
|
||
- 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.
|
||
|
||
- The implementation of UnicodeError objects has been simplified (start and end
|
||
attributes are now stored directly as Py_ssize_t members).
|
||
|
||
- Issue829951: In the smtplib module, SMTP.starttls() now complies with
|
||
RFC 3207 and forgets any knowledge obtained from the server not obtained
|
||
from the TLS negotiation itself. Patch contributed by Bill Fenner.
|
||
|
||
- Issue1339: The smtplib.SMTP class has been refactored a bit such
|
||
that the SMTP.starttls() caller no longer needs to call ehlo()
|
||
beforehand. SMTP.starttls() now raises an exception of the server
|
||
does not claim to support starttls. Adds the SMTP.ehlo_or_helo_if_needed()
|
||
method. Patch contributed by Bill Fenner.
|
||
|
||
|
||
Extension Modules
|
||
-----------------
|
||
|
||
- Bug #2111: mmap segfaults when trying to write a block opened with PROT_READ
|
||
|
||
- #2063: correct order of utime and stime in os.times() result on Windows.
|
||
|
||
- Patch #1736: Fix file name handling of _msi.FCICreate.
|
||
|
||
- Updated ``big5hkscs`` codec to the HKSCS revision of 2004.
|
||
|
||
- #1940: make it possible to use curses.filter() before curses.initscr()
|
||
as the documentation says.
|
||
|
||
- Backport of _fileio module from Python 3.0.
|
||
|
||
- #1087741: mmap.mmap is now a class, not a factory function. It is also
|
||
subclassable now.
|
||
|
||
- Patch #1648: added ``sys.getprofile()`` and ``sys.gettrace()``.
|
||
|
||
- Patch #1663329: added ``os.closerange()`` function to quickly close a range
|
||
of file descriptors without considering errors.
|
||
|
||
- Patch 976880: ``mmap`` objects now have an ``rfind`` method that
|
||
works as expected. ``mmap.find`` also takes an optional ``end``
|
||
parameter.
|
||
|
||
- _winreg's HKEY object has gained __enter__ and __exit__ methods to support
|
||
the context manager protocol. The _winreg module also gained a new function
|
||
``ExpandEnvironmentStrings`` to expand REG_EXPAND_SZ keys.
|
||
|
||
- itertools.starmap() now accepts any iterable input. Previously, it required
|
||
the function inputs to be tuples.
|
||
|
||
- Issue #1646: Make socket support TIPC. The socket module now has support
|
||
for TIPC under Linux, see http://tipc.sf.net/ for more information.
|
||
|
||
- Added interface for Windows' WSAIoctl to socket object and added an example
|
||
for a simple network sniffer.
|
||
|
||
- Bug #1301: Bad assert in _tkinter fixed.
|
||
|
||
- Added bdist_wininst executable for VS 2008.
|
||
|
||
- Bug #1604: collections.deque.__init__(iterable) now clears any prior contents
|
||
before adding elements from the iterable. This fix brings the behavior into
|
||
line with that for list.__init__().
|
||
|
||
- Added wide char functions to msvcrt module: getwch, getwche, putwch and
|
||
ungetwch. The functions accept or return unicode.
|
||
|
||
- os.access now returns True on Windows for any existing directory.
|
||
|
||
- Added warnpy3k function to the warnings module.
|
||
|
||
- Marshal.dumps() now expects exact type matches for int, long, float, complex,
|
||
tuple, list, dict, set, and frozenset. Formerly, it would silently miscode
|
||
subclasses of those types. Now, it raises a ValueError instead.
|
||
|
||
- Patch #1388440: Add set_completion_display_matches_hook and
|
||
get_completion_type to readline.
|
||
|
||
- Bug #1649098: Avoid declaration of zero-sized array declaration in
|
||
structure.
|
||
|
||
- Removed the rgbimg module; been deprecated since Python 2.5.
|
||
|
||
- Bug #1721309: prevent bsddb module from freeing random memory.
|
||
|
||
- Bug #1233: fix bsddb.dbshelve.DBShelf append method to work as
|
||
intended for RECNO databases.
|
||
|
||
- pybsddb.sf.net Bug #477182: Load the database flags at database open
|
||
time so that opening a database previously created with the DB_DUP or
|
||
DB_DUPSORT flag set will keep the proper behavior on subsequent opens.
|
||
Specifically: dictionary assignment to a DB object will replace all
|
||
values for a given key when the database allows duplicate values.
|
||
DB users should use DB.put(k, v) when they want to store duplicates; not
|
||
DB[k] = v.
|
||
|
||
- Add the bsddb.db.DBEnv.lock_id_free method.
|
||
|
||
- Bug #1686475: Support stat'ing open files on Windows again.
|
||
|
||
- Patch #1185447: binascii.b2a_qp() now correctly quotes binary characters
|
||
with ASCII value less than 32. Also, it correctly quotes dots only if
|
||
they occur on a single line, as opposed to the previous behavior of
|
||
quoting dots if they are the second character of any line.
|
||
|
||
- Bug #1622896: fix a rare corner case where the bz2 module raised an
|
||
error in spite of a succesful compression.
|
||
|
||
- Patch #1654417: make operator.{get,set,del}slice use the full range
|
||
of Py_ssize_t.
|
||
|
||
- Patch #1646728: datetime.fromtimestamp fails with negative
|
||
fractional times. With unittest.
|
||
|
||
- Patch #1490190: posixmodule now includes os.chflags() and os.lchflags()
|
||
functions on platforms where the underlying system calls are available.
|
||
|
||
- Patch #1494140: Add documentation for the new struct.Struct object.
|
||
|
||
- Patch #1432399: Support the HCI protocol for bluetooth sockets
|
||
|
||
- Patch #1657276: Make NETLINK_DNRTMSG conditional.
|
||
|
||
- Bug #1653736: Complain about keyword arguments to time.isoformat.
|
||
|
||
- Bug #1486663: don't reject keyword arguments for subclasses of builtin
|
||
types.
|
||
|
||
- Patch #1610575: The struct module now supports the 't' code, for
|
||
C99 _Bool.
|
||
|
||
- Patch #1635058: ensure that htonl and friends never accept or
|
||
return negative numbers, per the underlying C implementation.
|
||
|
||
- Patch #1544279: Improve thread-safety of the socket module by moving
|
||
the sock_addr_t storage out of the socket object.
|
||
|
||
- Patch #1019808: fix bug that causes an incorrect error to be returned
|
||
when a socket timeout is set and a connection attempt fails.
|
||
|
||
- Speed up function calls into the math module.
|
||
|
||
- Bug #1588217: don't parse "= " as a soft line break in binascii's
|
||
a2b_qp() function, instead leave it in the string as quopri.decode()
|
||
does.
|
||
|
||
- Bug #1599782: Fix segfault on bsddb.db.DB().type().
|
||
|
||
- Bug #1567666: Emulate GetFileAttributesExA for Win95.
|
||
|
||
- Patch #1576166: Support os.utime for directories on Windows NT+.
|
||
|
||
- Patch #1572724: fix typo ('=' instead of '==') in _msi.c.
|
||
|
||
- Bug #1572832: fix a bug in ISO-2022 codecs which may cause segfault
|
||
when encoding non-BMP unicode characters.
|
||
|
||
- Bug #1556784: allow format strings longer than 127 characters in
|
||
datetime's strftime function.
|
||
|
||
- Fix itertools.count(n) to work with negative numbers again.
|
||
|
||
- RLIMIT_SBSIZE was added to the resource module where available.
|
||
|
||
- Bug #1551427: fix a wrong NULL pointer check in the win32 version
|
||
of os.urandom().
|
||
|
||
- Bug #1548092: fix curses.tparm seg fault on invalid input.
|
||
|
||
- Patch #1114: fix curses module compilation on 64-bit AIX, & possibly
|
||
other 64-bit LP64 platforms where attr_t is not the same size as a long.
|
||
(Contributed by Luke Mewburn.)
|
||
|
||
- Bug #1550714: fix SystemError from itertools.tee on negative value for n.
|
||
|
||
- Fixed a few bugs on cjkcodecs:
|
||
- gbk and gb18030 codec now handle U+30FB KATAKANA MIDDLE DOT correctly.
|
||
- iso2022_jp_2 codec now encodes into G0 for KS X 1001, GB2312
|
||
codepoints to conform the standard.
|
||
- iso2022_jp_3 and iso2022_jp_2004 codec can encode JIS X 0213:2
|
||
codepoints now.
|
||
|
||
- Bug #1552726: in readline.c, avoid repeatedly polling in interactive
|
||
mode by only placing a timeout on the select() if an input hook has
|
||
been defined. This prevents an interactive Python from waking up 10
|
||
times per second. Patch by Richard Boulton.
|
||
|
||
- fixed a bug with bsddb.DB.stat: the flags and txn keyword arguments
|
||
were transposed.
|
||
|
||
- Added support for linking the bsddb module against BerkeleyDB 4.5.x
|
||
and 4.6.x.
|
||
|
||
- Bug #1633621: if curses.resizeterm() or curses.resize_term() is called,
|
||
update _curses.LINES, _curses.COLS, curses.LINES and curses.COLS.
|
||
|
||
- Fix an off-by-one bug in locale.strxfrm().
|
||
|
||
- Fix libffi configure for hppa*-*-linux* | parisc*-*-linux*.
|
||
|
||
- Build using system ffi library on arm*-linux*.
|
||
|
||
- Bug #1372: zlibmodule.c: int overflow in PyZlib_decompress
|
||
|
||
- bsddb module: Fix memory leak when using database cursors on
|
||
databases without a DBEnv.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- Refactor test_logging to use doctest.
|
||
|
||
- Refactor test_profile and test_cprofile to use the same code to profile.
|
||
|
||
- Make test_runpy reentrant by fixing _check_module to clear out any module
|
||
being tested. Was causing an error by __import__ doing a reload on the
|
||
second run and thus suppressing bytecode recreation.
|
||
|
||
- Capture socket connection resets and timeouts in test_socket_ssl and
|
||
test_urllib2net and raise test.test_support.ResourceDenied.
|
||
|
||
- Patch #1559413: Fix test_cmd_line if sys.executable contains a space.
|
||
|
||
- Added test.test_support.TransientResource which is a context manager to
|
||
surround calls to resources that are not guaranteed to work even if
|
||
test.test_support.requires says that the resource should exist.
|
||
|
||
- Added a test for slicing of an exception.
|
||
|
||
- Added test.test_support.EnvironmentVarGuard. It's a class that provides a
|
||
context manager so that one can temporarily set or unset environment
|
||
variables.
|
||
|
||
- Added some tests for modulefinder.
|
||
|
||
- Converted test_imp to use unittest.
|
||
|
||
- Fix bsddb test_basics.test06_Transactions to check the version
|
||
number properly.
|
||
|
||
- test.test_support.catch_warning is a new context manager that can be used
|
||
to catch the warnings issued by the warning framework.
|
||
|
||
|
||
Tools
|
||
-----
|
||
|
||
- Tools/scripts/win_add2path.py was added. The simple script modifes the
|
||
PATH environment var of the HKCU tree and adds the python bin and script
|
||
directory.
|
||
|
||
- Tools/18n/pygettext.py was added to the list of scripts installed by
|
||
Tools/scripts/setup.py (tracker item 642309).
|
||
|
||
- Added IronPython and Jython support to pybench (part of which
|
||
was patch #1563844)
|
||
|
||
- Made some minor changes to pybench output to allow the user
|
||
to see which Python version is running pybench
|
||
|
||
- Added support for the new platform module feature
|
||
platform.python_implementation(); this will now be saved
|
||
in the benchmark pickle
|
||
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- RFE #1765140: Updated documentation on FileHandler and subclasses to
|
||
include new optional delay argument.
|
||
|
||
- Bug #932563: Added section on getting contextual information into logging
|
||
output, and added documentation for the new LoggerAdapter class.
|
||
|
||
- Bug #1295: Added information about caching of formatted exception
|
||
information in the LogRecord by Formatter.format().
|
||
|
||
- Bug #1637365: add subsection about "__name__ == __main__" to the
|
||
Python tutorial.
|
||
|
||
- Patch #1698768: updated the "using Python on the Mac" intro.
|
||
|
||
- Bug #1569057: Document that calling file.next() when the file is open for
|
||
writing is undefined.
|
||
|
||
- Patch #1489771: the syntax rules in Python Reference Manual were
|
||
updated to reflect the current Python syntax.
|
||
|
||
- Patch #1686451: Fix return type for
|
||
PySequence_{Count,Index,Fast_GET_SIZE}.
|
||
|
||
- Patch #1679379: add documentation for fnmatch.translate().
|
||
|
||
- Bug #1629566: clarify the docs on the return values of parsedate()
|
||
and parsedate_tz() in email.utils and rfc822.
|
||
|
||
- Patch #1671450: add a section about subclassing builtin types to the
|
||
"extending and embedding" tutorial.
|
||
|
||
- Bug #1629125: fix wrong data type (int -> Py_ssize_t) in PyDict_Next
|
||
docs.
|
||
|
||
- Bug #1565919: document set types in the Language Reference.
|
||
|
||
- Bug #1546052: clarify that PyString_FromString(AndSize) copies the
|
||
string pointed to by its parameter.
|
||
|
||
- Bug #1566663: remove obsolete example from datetime docs.
|
||
|
||
- Bug #1541682: Fix example in the "Refcount details" API docs.
|
||
Additionally, remove a faulty example showing PySequence_SetItem applied
|
||
to a newly created list object and add notes that this isn't a good idea.
|
||
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- Patch #1552024: add decorator support to unparse.py demo script.
|
||
|
||
- Make auto-generated python.vim file list built-ins and exceptions in
|
||
alphatbetical order. Makes output more deterministic and easier to tell if
|
||
the file is stale or not.
|
||
|
||
- Bug #1546372: Fixed small bugglet in pybench that caused a missing
|
||
file not to get reported properly.
|
||
|
||
|
||
Build
|
||
-----
|
||
|
||
- Have the search path for building extensions follow the declared order in
|
||
$CPPFLAGS and $LDFLAGS when adding directories from those environment
|
||
variables.
|
||
|
||
- Bug #1983: Added a check to pyport to verify that sizeof(pid_t) is
|
||
smaller or equal sizeof(long).
|
||
|
||
- Bug #1234: Fixed semaphore errors on AIX 5.2
|
||
|
||
- Issue #1726: Remove Python/atof.c from PCBuild/pythoncore.vcproj
|
||
|
||
- Removed PCbuild8/ directory and added a new build directory for VS 2005
|
||
based on the VS 2008 build directory to PC/VS8.0. The script
|
||
PCbuild/vs8to9.py was added to sync changes from PCbuild to PC/VS8.0.
|
||
|
||
- Moved PCbuild/ directory for VS 2003 to PC/VS7.1 and renamed PCBuild9/
|
||
directory to PCBuild/.
|
||
|
||
- Bug #1699: Define _BSD_SOURCE only on OpenBSD.
|
||
|
||
- Bug #1608: use -fwrapv when GCC supports it. This is important,
|
||
newer GCC versions may optimize away overflow buffer overflow checks
|
||
without this option!
|
||
|
||
- Patch #1418: Make the AC_REPLACE_FUNCS object files actually work.
|
||
|
||
- Add a FAST_LOOPS build option that speeds-up looping by trading away
|
||
periodic threadstate and signal checking in tight loops. By default,
|
||
this option is turned-off. It should only be enabled in debugged,
|
||
performance critical applications.
|
||
|
||
- Patch #786737: Allow building in a tree of symlinks pointing to
|
||
a readonly source.
|
||
|
||
- Bug #1737210: Change Manufacturer of Windows installer to PSF.
|
||
|
||
- Bug #1746880: Correctly install DLLs into system32 folder on Win64.
|
||
|
||
- Define _BSD_SOURCE, to get access to POSIX extensions on OpenBSD 4.1+.
|
||
|
||
- Stop supporting AtheOS and cause a build error in configure for the platform.
|
||
|
||
- Bug #1655392: don't add -L/usr/lib/pythonX.Y/config to the LDFLAGS
|
||
returned by python-config if Python was built with --enable-shared
|
||
because that prevented the shared library from being used.
|
||
|
||
- Patch #1569798: fix a bug in distutils when building Python from a
|
||
directory within sys.exec_prefix.
|
||
|
||
- Bug #1675511: Use -Kpic instead of -xcode=pic32 on Solaris/x86.
|
||
|
||
- Disable _XOPEN_SOURCE on NetBSD 1.x.
|
||
|
||
- configure now checks whether gcc supports the PyArg_ParseTuple format
|
||
attribute.
|
||
|
||
- Bug #1578513: Cross compilation was broken by a change to configure.
|
||
Repair so that it's back to how it was in 2.4.3.
|
||
|
||
- Patch #1576954: Update VC6 build directory; remove redundant
|
||
files in VC7.
|
||
|
||
- Bug #1568842: Fix test for uintptr_t.
|
||
|
||
- Patch #1540470, for OpenBSD 4.0.
|
||
|
||
- Fix build failure on kfreebsd and on the hurd.
|
||
|
||
- Fix the build of the library reference in info format.
|
||
|
||
- Allow Emacs 22 for building the documentation in info format.
|
||
|
||
- Makefile.pre.in(buildbottest): Run an optional script pybuildbot.identify
|
||
to include some information about the build environment.
|
||
|
||
|
||
C API
|
||
-----
|
||
|
||
- Unified naming convention for free lists and their limits. All free lists
|
||
in Object/ are named ``free_list``, the counter ``numfree`` and the upper
|
||
limit is a macro ``PyName_MAXFREELIST`` inside an #ifndef block.
|
||
|
||
- ``PySet_Add()`` can now modify a newly created frozenset. Similarly to
|
||
``PyTuple_SetItem``, it can be used to populate a brand new frozenset; but
|
||
it does not steal a reference to the added item.
|
||
|
||
- Added ``PySet_Check()`` and ``PyFrozenSet_Check()`` to the set API.
|
||
|
||
- Backport of PyUnicode_FromString(), _FromStringAndSize(), _Format and
|
||
_FormatV from Python 3.0. Made PyLong_AsSsize_t and PyLong_FromSsize_t
|
||
public functions.
|
||
|
||
- Patch #1720595: add T_BOOL to the range of structmember types.
|
||
|
||
- Issue #1534: Added ``PyFloat_GetMax()``, ``PyFloat_GetMin()`` and
|
||
``PyFloat_GetInfo()`` to the float API.
|
||
|
||
- Issue #1521: On 64bit platforms, using PyArgs_ParseTuple with the t# of w#
|
||
format code incorrectly truncated the length to an int, even when
|
||
PY_SSIZE_T_CLEAN is set. The str.decode method used to return incorrect
|
||
results with huge strings.
|
||
|
||
- Issue #1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE
|
||
and Py_REFCNT.
|
||
|
||
- PEP 3123: Provide forward compatibility with Python 3.0, while keeping
|
||
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
|
||
PyVarObject_HEAD_INIT.
|
||
|
||
- Py_ssize_t fields work in structmember when HAVE_LONG_LONG is not defined.
|
||
|
||
- Patch #1733960: Allow T_LONGLONG to accept ints.
|
||
|
||
- T_PYSSIZET can now be used in PyMemberDef lists for Py_ssize_t members.
|
||
|
||
- Added a new API function ``PyImport_ImportModuleNoBlock``.
|
||
|
||
- Bug #1637022: Prefix AST symbols with _Py_.
|
||
|
||
- Fix some leftovers from the conversion from int to Py_ssize_t
|
||
(relevant to strings and sequences of more than 2**31 items).
|
||
|
||
- Make _PyGILState_NoteThreadState() static, it was not used anywhere
|
||
outside of pystate.c and should not be necessary.
|
||
|
||
- ``PyImport_Import`` and ``PyImport_ImportModule`` now always do absolute
|
||
imports. In earlier versions they might have used relative imports under
|
||
some conditions.
|
||
|
||
- Added case insensitive comparison methods ``PyOS_stricmp(char*, char*)``
|
||
and ``PyOS_strnicmp(char*, char*, Py_ssize_t)``.
|
||
|
||
- Bug #1542693: remove semi-colon at end of PyImport_ImportModuleEx macro
|
||
so it can be used as an expression.
|
||
|
||
|
||
Windows
|
||
-------
|
||
|
||
- Patch #1706: Drop support for Win9x, WinME and NT4. Python now requires
|
||
Windows 2000 or greater. The _WINVER and NTDDI_VERSION macros are set to
|
||
Win2k for x86/32bit builds and WinXP for AMD64 builds.
|
||
|
||
- Conditionalize definition of _CRT_SECURE_NO_DEPRECATE
|
||
and _CRT_NONSTDC_NO_DEPRECATE.
|
||
|
||
- Bug #1216: Restore support for Visual Studio 2002.
|
||
|
||
|
||
Mac
|
||
---
|
||
|
||
- cfmfile now raises a DeprecationWarning.
|
||
|
||
- buildtools now raises a DeprecationWarning.
|
||
|
||
- Removed the macfs module. It had been deprecated since Python 2.5. This
|
||
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.)**
|