[Python-checkins] r66091 - python/trunk/Doc/whatsnew/2.6.rst

andrew.kuchling python-checkins at python.org
Sun Aug 31 17:41:48 CEST 2008


Author: andrew.kuchling
Date: Sun Aug 31 17:41:48 2008
New Revision: 66091

Log:
Last batch of edits; remove the 'other changes' section

Modified:
   python/trunk/Doc/whatsnew/2.6.rst

Modified: python/trunk/Doc/whatsnew/2.6.rst
==============================================================================
--- python/trunk/Doc/whatsnew/2.6.rst	(original)
+++ python/trunk/Doc/whatsnew/2.6.rst	Sun Aug 31 17:41:48 2008
@@ -67,6 +67,11 @@
 there aren't many new features that aren't related to Python 3.0 in
 some way.
 
+Python 2.6 also sees a number of improvements and bugfixes throughout
+the source.  A search through the change logs finds there were XXX
+patches applied and YYY bugs fixed between Python 2.5 and 2.6.  Both
+figures are likely to be underestimates.
+
 This article doesn't attempt to provide a complete specification of
 the new features, but instead provides a convenient overview.  For
 full details, you should refer to the documentation for Python 2.6. If
@@ -2503,7 +2508,7 @@
   :meth:`activeCount` method is renamed to :meth:`active_count`.  The
   2.6 version of the module supports the same properties and renamed
   methods, but doesn't remove the old methods.  (Carried out by
-  various people, most notably Benjamin Peterson.)
+  several people, most notably Benjamin Peterson.)
 
   The :mod:`threading` module's :class:`Thread` objects
   gained an :attr:`ident` property that returns the thread's
@@ -2619,11 +2624,12 @@
 The :mod:`ast` module
 ----------------------
 
-The :mod:`ast` module provides an Abstract Syntax Tree representation
-of Python code.  For Python 2.6, Armin Ronacher contributed a set of
-helper functions that perform various common tasks.  These will be useful
-for HTML templating packages, code analyzers, and similar tools that
-process Python code.
+The :mod:`ast` module provides an Abstract Syntax Tree
+representation of Python code, and Armin Ronacher
+contributed a set of helper functions that perform a variety of
+common tasks.  These will be useful for HTML templating
+packages, code analyzers, and similar tools that process
+Python code.
 
 The :func:`parse` function takes an expression and returns an AST.
 The :func:`dump` function outputs a representation of a tree, suitable
@@ -2639,28 +2645,46 @@
     """)
     print ast.dump(t)
 
-This outputs::
+This outputs a deeply nested tree::
 
-    Module(body=[Assign(targets=[Name(id='d', ctx=Store())],
-    value=Dict(keys=[], values=[])), For(target=Name(id='i',
-    ctx=Store()), iter=Str(s='abcdefghijklm'),
-    body=[Assign(targets=[Subscript(value=Name(id='d', ctx=Load()),
-    slice=Index(value=BinOp(left=Name(id='i', ctx=Load()), op=Add(),
-    right=Name(id='i', ctx=Load()))), ctx=Store())],
-    value=BinOp(left=BinOp(left=Call(func=Name(id='ord', ctx=Load()),
-    args=[Name(id='i', ctx=Load())], keywords=[], starargs=None,
-    kwargs=None), op=Sub(), right=Call(func=Name(id='ord',
-    ctx=Load()), args=[Str(s='a')], keywords=[], starargs=None,
-    kwargs=None)), op=Add(), right=Num(n=1)))], orelse=[]),
-    Print(dest=None, values=[Name(id='d', ctx=Load())], nl=True)])
+    Module(body=[
+      Assign(targets=[
+	Name(id='d', ctx=Store())
+       ], value=Dict(keys=[], values=[]))
+      For(target=Name(id='i', ctx=Store()),
+	  iter=Str(s='abcdefghijklm'), body=[
+	Assign(targets=[
+	  Subscript(value=
+	   Name(id='d', ctx=Load()),
+	     slice=
+	     Index(value=
+	    BinOp(left=Name(id='i', ctx=Load()), op=Add(),
+	     right=Name(id='i', ctx=Load()))), ctx=Store())
+	 ], value=
+	 BinOp(left=
+	  BinOp(left=
+	   Call(func=
+	    Name(id='ord', ctx=Load()), args=[
+	     Name(id='i', ctx=Load())
+	    ], keywords=[], starargs=None, kwargs=None),
+	   op=Sub(), right=Call(func=
+	    Name(id='ord', ctx=Load()), args=[
+	     Str(s='a')
+	    ], keywords=[], starargs=None, kwargs=None)),
+          op=Add(), right=Num(n=1)))
+       ], orelse=[])
+      Print(dest=None, values=[
+	Name(id='d', ctx=Load())
+       ], nl=True)
+     ])
 
 The :func:`literal_eval` method takes a string or an AST
-representing a literal expression, one that contains a Python
-expression containing only strings, numbers, dictionaries, etc. but no
-statements or function calls, and returns the resulting value.  If you
-need to unserialize an expression but need to worry about security
-and can't risk using an :func:`eval` call, :func:`literal_eval` will
-handle it safely::
+representing a literal expression, parses and evaluates it, and
+returns the resulting value.  A literal expression is a Python
+expression containing only strings, numbers, dictionaries,
+etc. but no statements or function calls.  If you need to
+evaluate an expression but accept the security risk of using an
+:func:`eval` call, :func:`literal_eval` will handle it safely::
 
     >>> literal = '("a", "b", {2:4, 3:8, 1:2})'
     >>> print ast.literal_eval(literal)
@@ -2680,7 +2704,7 @@
 The :mod:`future_builtins` module
 --------------------------------------
 
-Python 3.0 makes various changes to the repertoire of built-in
+Python 3.0 makes many changes to the repertoire of built-in
 functions, and most of the changes can't be introduced in the Python
 2.x series because they would break compatibility.
 The :mod:`future_builtins` module provides versions
@@ -2695,17 +2719,18 @@
 
 * ``filter(*predicate*, *iterable*)``,
   ``map(*func*, *iterable1*, ...)``: the 3.0 versions
-  return iterators, differing from the 2.x built-ins that return lists.
+  return iterators, unlike the 2.x built-ins which return lists.
 
 * ``hex(*value*)``, ``oct(*value*)``: instead of calling the
   :meth:`__hex__` or :meth:`__oct__` methods, these versions will
   call the :meth:`__index__` method and convert the result to hexadecimal
-  or octal.
+  or octal.  :func:`oct` will use the new ``0o`` notation for its
+  result.
 
 .. ======================================================================
 
-The :mod:`json` module
-----------------------
+The :mod:`json` module: JavaScript Object Notation
+--------------------------------------------------------------------
 
 The new :mod:`json` module supports the encoding and decoding of Python types in
 JSON (Javascript Object Notation). JSON is a lightweight interchange format
@@ -2723,21 +2748,22 @@
        >>> json.loads(in_json) # Decode into a Python object
        {"spam" : "foo", "parrot" : 42}
 
-It is also possible to write your own decoders and encoders to support more
-types. Pretty-printing of the JSON strings is also supported.
+It's also possible to write your own decoders and encoders to support
+more types. Pretty-printing of the JSON strings is also supported.
 
-:mod:`json` (originally called simplejson) was written by Bob Ippolito.
+:mod:`json` (originally called simplejson) was written by Bob
+Ippolito.
 
 
 .. ======================================================================
 
-plistlib: A Property-List Parser
+The :mod:`plistlib` module: A Property-List Parser
 --------------------------------------------------
 
-A commonly-used format on MacOS X is the ``.plist`` format,
-which stores basic data types (numbers, strings, lists,
-and dictionaries) and serializes them into an XML-based format.
-(It's a lot like the XML-RPC serialization of data types.)
+The ``.plist`` format is commonly used on MacOS X to
+store basic data types (numbers, strings, lists,
+and dictionaries) by serializing them into an XML-based format.
+It resembles the XML-RPC serialization of data types.
 
 Despite being primarily used on MacOS X, the format
 has nothing Mac-specific about it and the Python implementation works
@@ -2753,7 +2779,7 @@
     # Create data structure
     data_struct = dict(lastAccessed=datetime.datetime.now(),
 		       version=1,
-		       categories=('Personal', 'Shared', 'Private'))
+		       categories=('Personal','Shared','Private'))
 
     # Create string containing XML.
     plist_str = plistlib.writePlistToString(data_struct)
@@ -2798,13 +2824,13 @@
 Win32 LastError variables at the outset of each wrapped call.
 (Implemented by Thomas Heller; :issue:`1798`.)
 
-For the Unix ``errno`` variable: when creating a wrapped function,
-you can supply ``use_errno=True`` as a keyword parameter
-to the :func:`DLL` function
-and then call the module-level methods :meth:`set_errno`
-and :meth:`get_errno` to set and retrieve the error value.
+You can now retrieve the Unix ``errno`` variable after a function
+call.  When creating a wrapped function, you can supply
+``use_errno=True`` as a keyword parameter to the :func:`DLL` function
+and then call the module-level methods :meth:`set_errno` and
+:meth:`get_errno` to set and retrieve the error value.
 
-The Win32 LastError variable is supported similarly by
+The Win32 LastError variable is similarly supported by
 the :func:`DLL`, :func:`OleDLL`, and :func:`WinDLL` functions.
 You supply ``use_last_error=True`` as a keyword parameter
 and then call the module-level methods :meth:`set_last_error`
@@ -2820,15 +2846,15 @@
 --------------------------------------------------
 
 Bill Janssen made extensive improvements to Python 2.6's support for
-the Secure Sockets Layer by adding a new module, :mod:`ssl`, on top of
-the `OpenSSL <http://www.openssl.org/>`__ library.  This new module
-provides more control over the protocol negotiated, the X.509
-certificates used, and has better support for writing SSL servers (as
-opposed to clients) in Python.  The existing SSL support in the
-:mod:`socket` module hasn't been removed and continues to work,
+the Secure Sockets Layer by adding a new module, :mod:`ssl`, that's
+built atop the `OpenSSL <http://www.openssl.org/>`__ library.
+This new module provides more control over the protocol negotiated,
+the X.509 certificates used, and has better support for writing SSL
+servers (as opposed to clients) in Python.  The existing SSL support
+in the :mod:`socket` module hasn't been removed and continues to work,
 though it will be removed in Python 3.0.
 
-To use the new module, first you must create a TCP connection in the
+To use the new module, you must first create a TCP connection in the
 usual way and then pass it to the :func:`ssl.wrap_socket` function.
 It's possible to specify whether a certificate is required, and to
 obtain certificate info by calling the :meth:`getpeercert` method.
@@ -2845,9 +2871,15 @@
 
 Changes to Python's build process and to the C API include:
 
-* Python 2.6 can be built with Microsoft Visual Studio 2008.
-  See the :file:`PCbuild9` directory for the build files.
-  (Implemented by Christian Heimes.)
+* Python now must be compiled with C89 compilers (after 19
+  years!).  This means that the Python source tree has dropped its
+  own implementations of :cfunc:`memmove` and :cfunc:`strerror`, which
+  are in the C89 standard library.
+
+* Python 2.6 can be built with Microsoft Visual Studio 2008 (version
+  9.0), and this is the new default compiler.  See the
+  :file:`PCbuild` directory for the build files.  (Implemented by
+  Christian Heimes.)
 
 * On MacOS X, Python 2.6 can be compiled as a 4-way universal build.
   The :program:`configure` script
@@ -2856,11 +2888,6 @@
   architectures (x86, PowerPC), 64-bit (x86-64 and PPC-64), or both.
   (Contributed by Ronald Oussoren.)
 
-* Python now can only be compiled with C89 compilers (after 19
-  years!).  This means that the Python source tree can now drop its
-  own implementations of :cfunc:`memmove` and :cfunc:`strerror`, which
-  are in the C89 standard library.
-
 * The BerkeleyDB module now has a C API object, available as
   ``bsddb.db.api``.   This object can be used by other C extensions
   that wish to use the :mod:`bsddb` module for their own purposes.
@@ -2889,14 +2916,14 @@
   function, :cfunc:`PyImport_ImportModuleNoBlock`, will look for a
   module in ``sys.modules`` first, then try to import it after
   acquiring an import lock.  If the import lock is held by another
-  thread, the :exc:`ImportError` is raised.
+  thread, an :exc:`ImportError` is raised.
   (Contributed by Christian Heimes.)
 
 * Several functions return information about the platform's
   floating-point support.  :cfunc:`PyFloat_GetMax` returns
   the maximum representable floating point value,
   and :cfunc:`PyFloat_GetMin` returns the minimum
-  positive value.  :cfunc:`PyFloat_GetInfo` returns a dictionary
+  positive value.  :cfunc:`PyFloat_GetInfo` returns an object
   containing more information from the :file:`float.h` file, such as
   ``"mant_dig"`` (number of digits in the mantissa), ``"epsilon"``
   (smallest difference between 1.0 and the next largest value
@@ -2939,7 +2966,7 @@
   internal free lists of objects that can be re-used.  The data
   structures for these free lists now follow a naming convention: the
   variable is always named ``free_list``, the counter is always named
-  ``numfree``, and a macro :cmacro:`Py<typename>_MAXFREELIST` is
+  ``numfree``, and a macro ``Py<typename>_MAXFREELIST`` is
   always defined.
 
 * A new Makefile target, "make check", prepares the Python source tree
@@ -2963,6 +2990,14 @@
 * The support for Windows 95, 98, ME and NT4 has been dropped.
   Python 2.6 requires at least Windows 2000 SP4.
 
+* The new default compiler on Windows is Visual Studio 2008 (version
+  9.0). The build directories for Visual Studio 2003 (version 7.1) and
+  2005 (version 8.0) were moved into the PC/ directory. The new
+  :file:`PCbuild` directory supports cross compilation for X64, debug
+  builds and Profile Guided Optimization (PGO). PGO builds are roughly
+  10% faster than normal builds.  (Contributed by Christian Heimes
+  with help from Amaury Forgeot d'Arc and Martin von Loewis.)
+
 * The :mod:`msvcrt` module now supports
   both the normal and wide char variants of the console I/O
   API.  The :func:`getwch` function reads a keypress and returns a Unicode
@@ -2970,9 +3005,9 @@
   takes a Unicode character and writes it to the console.
   (Contributed by Christian Heimes.)
 
-* :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 Josiah Carlson.)
+* :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 Josiah Carlson; :issue:`957650`.)
 
 * The :mod:`socket` module's socket objects now have an
   :meth:`ioctl` method that provides a limited interface to the
@@ -2996,14 +3031,6 @@
   return field values as an integer or a string.
   (Contributed by Floris Bruynooghe; :issue:`2125`.)
 
-* The new default compiler on Windows is Visual Studio 2008 (VS 9.0). The
-  build directories for Visual Studio 2003 (VS7.1) and 2005 (VS8.0)
-  were moved into the PC/ directory. The new PCbuild directory supports
-  cross compilation for X64, debug builds and Profile Guided Optimization
-  (PGO). PGO builds are roughly 10% faster than normal builds.
-  (Contributed by Christian Heimes with help from Amaury Forgeot d'Arc and
-  Martin von Loewis.)
-
 .. ======================================================================
 
 Port-Specific Changes: MacOS X
@@ -3089,32 +3116,6 @@
 :mod:`videoreader`, and
 :mod:`WAIT`.
 
-
-
-.. ======================================================================
-
-
-.. _section-other:
-
-Other Changes and Fixes
-=======================
-
-As usual, there were a bunch of other improvements and bugfixes
-scattered throughout the source tree.  A search through the change
-logs finds there were XXX patches applied and YYY bugs fixed between
-Python 2.5 and 2.6.  Both figures are likely to be underestimates.
-
-Some of the more notable changes are:
-
-* It's now possible to prevent Python from writing any :file:`.pyc`
-  or :file:`.pyo` files by either supplying the :option:`-B` switch
-  or setting the :envvar:`PYTHONDONTWRITEBYTECODE` environment variable
-  to any non-empty string when running the Python interpreter.  These
-  are also used to set the :data:`sys.dont_write_bytecode` attribute;
-  Python code can change this variable to control whether bytecode
-  files are subsequently written.
-  (Contributed by Neal Norwitz and Georg Brandl.)
-
 .. ======================================================================
 
 


More information about the Python-checkins mailing list