diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst index 46439553ab5..717500ab79a 100644 --- a/Doc/whatsnew/2.6.rst +++ b/Doc/whatsnew/2.6.rst @@ -75,7 +75,23 @@ Python 3.0 .. % XXX add general comment about Python 3.0 features in 2.6 -.. % XXX mention -3 switch +The development cycle for Python 2.6 also saw the release of the first +alphas of Python 3.0, and the development of 3.0 has influenced +a number of features in 2.6. + +Python 3.0 is a far-ranging redesign of Python that breaks +compatibility with the 2.x series. This means that existing Python +code will need a certain amount of conversion in order to run on +Python 3.0. However, not all the changes in 3.0 necessarily break +compatibility. In cases where new features won't cause existing code +to break, they've been backported to 2.6 and are described in this +document in the appropriate place. Some of the 3.0-derived features +are: + +* A :meth:`__complex__` method for converting objects to a complex number. +* Alternate syntax for catching exceptions: ``except TypeError as exc``. +* The addition of :func:`functools.reduce` as a synonym for the built-in + :func:`reduce` function. A new command-line switch, :option:`-3`, enables warnings about features that will be removed in Python 3.0. You can run code @@ -406,11 +422,6 @@ Other Language Changes Here are all of the changes that Python 2.6 makes to the core Python language. -* Changes to the :class:`Exception` interface - as dictated by :pep:`352` continue to be made. For 2.6, - the :attr:`message` attribute is being deprecated in favor of the - :attr:`args` attribute. - * When calling a function using the ``**`` syntax to provide keyword arguments, you are no longer required to use a Python dictionary; any mapping will now work:: @@ -426,8 +437,29 @@ Here are all of the changes that Python 2.6 makes to the core Python language. .. % Patch 1686487 +* The built-in types now have improved support for extended slicing syntax, + where various combinations of ``(start, stop, step)`` are supplied. + Previously, the support was partial and certain corner cases wouldn't work. + (Implemented by Thomas Wouters.) + + .. % Revision 57619 + +* C functions and methods that use + :cfunc:`PyComplex_AsCComplex` will now accept arguments that + have a :meth:`__complex__` method. In particular, the functions in the + :mod:`cmath` module will now accept objects with this method. + This is a backport of a Python 3.0 change. + (Contributed by Mark Dickinson.) + + .. % Patch #1675423 + +* Changes to the :class:`Exception` interface + as dictated by :pep:`352` continue to be made. For 2.6, + the :attr:`message` attribute is being deprecated in favor of the + :attr:`args` attribute. + * The :func:`compile` built-in function now accepts keyword arguments - as well as positional parameters. (Contributed by XXX.) + as well as positional parameters. (Contributed by Thomas Wouters.) .. % Patch 1444529 @@ -487,17 +519,32 @@ complete list of changes, or look through the CVS logs for all the details. fieldnames)` is a factory function that creates subclasses of the standard tuple whose fields are accessible by name as well as index. For example:: - var_type = collections.NamedTuple('variable', - 'id name type size') - var = var_type(1, 'frequency', 'int', 4) + >>> var_type = collections.NamedTuple('variable', + ... 'id name type size') + # Names are separated by spaces or commas. + # 'id, name, type, size' would also work. + >>> var_type.__fields__ + ('id', 'name', 'type', 'size') - print var[0], var.id # Equivalent - print var[2], var.type # Equivalent + >>> var = var_type(1, 'frequency', 'int', 4) + >>> print var[0], var.id # Equivalent + 1 1 + >>> print var[2], var.type # Equivalent + int int + >>> v2 = var.__replace__('name', 'amplitude') + >>> v2 + variable(id=1, name='amplitude', type='int', size=4) (Contributed by Raymond Hettinger.) +* The :mod:`ctypes` module now supports a :class:`c_bool` datatype + that represents the C99 ``bool`` type. (Contributed by David Remahl.) + + .. % Patch 1649190 + * A new method in the :mod:`curses` module: for a window, :meth:`chgat` changes - the display characters for a certain number of characters on a single line. :: + the display characters for a certain number of characters on a single line. + :: # Boldface text starting at y=0,x=21 # and affecting the rest of the line. @@ -505,11 +552,33 @@ complete list of changes, or look through the CVS logs for all the details. (Contributed by Fabian Kreutz.) +* The :mod:`decimal` module was updated to version 1.66 of + `the General Decimal Specification `__. New features + include some methods for some basic mathematical functions such as + :meth:`exp` and :meth:`log10`:: + + >>> Decimal(1).exp() + Decimal("2.718281828459045235360287471") + >>> Decimal("2.7182818").ln() + Decimal("0.9999999895305022877376682436") + >>> Decimal(1000).log10() + Decimal("3") + + (Implemented by Facundo Batista and Mark Dickinson.) + * An optional ``timeout`` parameter was added to the :class:`ftplib.FTP` class constructor as well as the :meth:`connect` method, specifying a timeout measured in seconds. (Added by Facundo Batista.) +* The :func:`reduce` built-in function is also available in the + :mod:`functools` module. In Python 3.0, the built-in is dropped and it's + only available from :mod:`functools`; currently there are no plans + to drop the built-in in the 2.x series. (Patched by + Christian Heimes.) + + .. % Patch 1739906 + * The :func:`glob.glob` function can now return Unicode filenames if a Unicode path was used and Unicode filenames are matched within the directory. @@ -548,7 +617,7 @@ complete list of changes, or look through the CVS logs for all the details. .. % Patch #1490190 -* The :func:`os.walk` function now has a "followlinks" parameter. If +* The :func:`os.walk` function now has a ``followlinks`` parameter. If set to True, it will follow symlinks pointing to directories and visit the directory's contents. For backward compatibility, the parameter's default value is false. Note that the function can fall @@ -574,10 +643,17 @@ complete list of changes, or look through the CVS logs for all the details. On Windows, :func:`os.path.expandvars` will now expand environment variables in the form "%var%", and "~user" will be expanded into the - user's home directory path. (Contributed by XXX.) + user's home directory path. (Contributed by Josiah Carlson.) .. % Patch 957650 +* The Python debugger provided by the :mod:`pdb` module + gained a new command: "run" restarts the Python program being debugged, + and can optionally take new command-line arguments for the program. + (Contributed by Rocky Bernstein.) + + .. % Patch #1393667 + * New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags` are wrappers for the corresponding system calls (where they're available). Constants for the flag values are defined in the :mod:`stat` module; some @@ -701,6 +777,17 @@ complete list of changes, or look through the CVS logs for all the details. (Added by Facundo Batista.) +* The XML-RPC classes :class:`SimpleXMLRPCServer` and :class:`DocXMLRPCServer` + classes can now be preventing from immediately opening and binding to + their socket by passing True as the ``bind_and_activate`` + constructor parameter. This can be used to modify the instance's + :attr:`allow_reuse_address` attribute before calling the + :meth:`server_bind` and :meth:`server_activate` methods to + open the socket and begin listening for connections. + (Contributed by Peter Parente.) + + .. % Patch 1599845 + .. % ====================================================================== .. % whole new modules get described in \subsections here @@ -712,7 +799,7 @@ Build and C API Changes Changes to Python's build process and to the C API include: -* Detailed changes are listed here. +* Detailed changes will be listed here. .. % ====================================================================== @@ -737,7 +824,7 @@ are likely to be underestimates. Some of the more notable changes are: -* Details go here. +* Details will go here. .. % ======================================================================