python-dev Summary for 2006-10-01 through 2006-10-15

steven.bethard at gmail.com steven.bethard at gmail.com
Sun Nov 26 23:44:00 EST 2006


python-dev Summary for 2006-10-01 through 2006-10-15
++++++++++++++++++++++++++++++++++++++++++++++++++++

.. contents::

[The HTML version of this Summary is available at
http://www.python.org/dev/summary/2006-10-01_2006-10-15]



=============
Announcements
=============

-----------------------------
QOTF: Quotes of the Fortnight
-----------------------------

Martin v. Lowis on a small change to Python that wouldn't affect many applications:

    I'm pretty sure someone will notice, though; someone always notices.

Contributing thread:

- `Caching float(0.0) <http://mail.python.org/pipermail/python-dev/2006-October/069175.html>`__

Steve Holden reminds us that patch submissions are dramatically preferred to verbose thread discussions:

    This thread has disappeared down a rat-hole, never to re-emerge with anything of significant benefit to users. C'mon, guys, implement a patch or leave it alone :-)

Contributing thread:

- `Caching float(0.0) <http://mail.python.org/pipermail/python-dev/2006-October/069190.html>`__


=========
Summaries
=========

--------------
Caching floats
--------------

Nick Craig-Wood discovered that he could save 7MB in his application by adding the following simple code::

    if age == 0.0:
        age = 0.0

A large number of his calculations were producing the value 0.0, which meant that many copies of 0.0 were being stored. Since all 0.0 literals refer to the same object, the code above was removing all the duplicate copies of 0.0.

Skip Montanaro and played around a bit with floatobject.c, and found that Python's test suite allocated a large number of small integral floats (though only a couple hundred were generally allocated at the same time). Kristjan V. Jonsson played around with caching for float values between -10.0 and 10.0 with the EVE server and got a 25% savings in allocations.

There was some concern that for systems with both +0.0 and -0.0, the cache might cause problems, since determining which zero you have seemed difficult. However, James Y Knight showed how to do this fairly easily in C with a double/uint64_t union. Eventually, people agreed that it should be fine to just cache +0.0.

Kristjan V. Jonsson and Josiah Carlson proposed patches, but nothing was posted to SourceForge.

Contributing threads:

- `Caching float(0.0) <http://mail.python.org/pipermail/python-dev/2006-September/069049.html>`__
- `Caching float(0.0) <http://mail.python.org/pipermail/python-dev/2006-October/069092.html>`__

--------------------------------------------
Buffer overrun in repr() and Python releases
--------------------------------------------

The implications of PSF-2006-001_, a buffer overrun problem in repr(), were considered for the various Python releases. The bug had been fixed before Python 2.5 was released, and had been applied to the Python 2.4 branch shortly before Python 2.4.4 was released. The security advisory provided patches for both Python 2.3 and 2.4, but to make sure that full source releases were available for all major versions of Python still in use, it looked like there would be a source-only 2.3.6 release (source-only because neither Mac nor Windows builds were affected).

.. _PSF-2006-001: http://www.python.org/news/security/PSF-2006-001/

Contributing threads:

- `Security Advisory for unicode repr() bug? <http://mail.python.org/pipermail/python-dev/2006-October/069247.html>`__
- `2.3.6 for the unicode buffer overrun <http://mail.python.org/pipermail/python-dev/2006-October/069327.html>`__

---------------------------
Build system for python.org
---------------------------

Anthony, Barry Warsaw, Georg Brandl and others indicated that the current website build system was making releases and other updates more difficult than they should be. Most people didn't have enough cycles to spare for this, but Michael Foord said he could help with a transition to rest2web_ if that was desirable. Fredrik Lundh also suggested a few options, including his older proposal to `use Django`_. No definite plans were made though.

.. _rest2web: http://www.voidspace.org.uk/python/rest2web/
.. _use Django: http://effbot.org/zone/pydotorg-cache.htm

Contributing thread:

- `2.3.6 for the unicode buffer overrun <http://mail.python.org/pipermail/python-dev/2006-October/069327.html>`__

--------------------
String concatenation
--------------------

Larry Hastings posted a `patch for string concatenation`_ that delays the creation of a new string until someone asks for the string's value. As a result, the following code would be about as fast as the ``''.join(strings)`` idiom::

    result = ''
    for s in strings:
        result += s

To achieve this, he had to change ``PyStringObject.ob_sval`` from a ``char[1]`` array, to a ``char *``. Reaction was mixed -- some people really disliked using ``join()``, while others didn't see the need for such a change.

.. _patch for string concatenation: http://bugs.python.org/1569040

Contributing thread:

- `PATCH submitted: Speed up + for string concatenation, now as fast as "".join(x) idiom <http://mail.python.org/pipermail/python-dev/2006-October/069224.html>`__

----------------------------
PEP 315: Enhanced While Loop
----------------------------

Hans Polak revived the discussion about `PEP 315`_, which proposes a do-while loop for Python that would allow the current code::

    while True:
        <setup code>
        if not <condition>:
            break
        <loop body>

to be written instead as::

    do:
        <setup code>
    while <condition>:
        <loop body>

Hans was hoping to simplify the situation where there is no ``<loop body>`` following the ``<condition>`` test and a number of syntax suggestions were proposed to this end. In the end, Guido indicated that none of the suggestions were acceptable, and Raymond Hettinger offered to withdraw the PEP.

.. _PEP 315: http://www.python.org/dev/peps/pep-0315/

Contributing threads:

- `PEP 351 - do while <http://mail.python.org/pipermail/python-dev/2006-September/069088.html>`__
- `PEP 351 - do while <http://mail.python.org/pipermail/python-dev/2006-October/069100.html>`__
- `PEP 315 - do while <http://mail.python.org/pipermail/python-dev/2006-October/069205.html>`__

------------------------------
PEP 355: path objects rejected
------------------------------

Luis P Caamano asked about the status of `PEP 355`_, which aimed to introduce an object-oriented reorganization of Python's path-related functions. Guido indicated that the current "amalgam of unrelated functionality" was unacceptable and pronounced it dead. Nick Coghlan elaborated the "amalgam" point, explaining that `PEP 355`_ lumped together all the following:

- string manipulation operations
- abstract path manipulation operations
- read-only traversal of a concrete filesystem
- addition and removal of files/directories/links within a concrete filesystem

Jason Orendorff pointed out some other problems with the PEP:

- the motivation was weak
- the API had too many methods
- it didn't fix all the perceived problems with the existing APIs
- it would have introduced a Second Way To Do It without being clearly better than the current way

There were some rumors of a new PEP based on Twisted's filepath_ module, but nothing concrete at the time of this summary.

.. _PEP 355: http://www.python.org/dev/peps/pep-0355/
.. _filepath: http://twistedmatrix.com/trac/browser/trunk/twisted/python/filepath.py

Contributing threads:

- `PEP 355 status <http://mail.python.org/pipermail/python-dev/2006-September/069059.html>`__
- `PEP 355 status <http://mail.python.org/pipermail/python-dev/2006-October/069093.html>`__

----------------------------------
Processes and threading module API
----------------------------------

Richard Oudkerk proposed a module that would make processes usable with an API like that of the threading module. People seemed unsure as to whether it would be better to have a threading-style or XML-RPC-style API. A few other relevant modules were identified, including PyXMLRPC_ and POSH_. No clear winner emerged.

.. _PyXMLRPC: http://sourceforge.net/projects/py-xmlrpc/
.. _POSH: http://poshmodule.sourceforge.net/

Contributing thread:

- `Cloning threading.py using proccesses <http://mail.python.org/pipermail/python-dev/2006-October/069297.html>`__

------------------------------------
Python 3.0: registering methods in C
------------------------------------

After a brief exchange about which ``tp_flags`` implied which others, there was some discussion on how to simplify ``tp_flags`` for Python 3000. Raymond Hettinger suggested that the NULL or non-NULL status of a slot should be enough to indicate its presence. Martin v. Lowis pointed out that this would require recompiling extension modules for every release, since if a new slot is added, extension modules from earlier releases wouldn't even *have* the slot. Fredrik Lundh suggested a `dynamic registration method`_ instead, which would look something like::

    static PyTypeObject *NoddyType;
    NoddyType = PyType_Setup("noddy.Noddy", sizeof(Noddy));
    PyType_Register(NoddyType, PY_TP_DEALLOC, Noddy_dealloc);
    PyType_Register(NoddyType, PY_TP_DOC, "Noddy objects");
    ...
    PyType_Register(NoddyType, PY_TP_NEW, Noddy_new);
    if (PyType_Ready(&NoddyType) < 0)
        return;

People thought this looked like a good idea, and Fredrik Lundh planned to look into it seriously for Python 3000.

.. _dynamic registration method: http://effbot.org/zone/idea-register-type.htm

Contributing thread:

- `2.4.4: backport classobject.c HAVE_WEAKREFS? <http://mail.python.org/pipermail/python-dev/2006-October/069235.html>`__

-----------------------------------------
Tracker Recommendations: JIRA and Roundup
-----------------------------------------

The PSF Infrastructure Committee announced their recommendations for trackers to replace SourceForge. Both JIRA and Roundup were definite improvements over SourceForge, though the Infrastructure Committee was leaning towards JIRA since Atlassian had offered to host it for them. Roundup was still under consideration if 6-10 admins could volunteer to maintain the installation.

(More updates on this in the next summary.)

Contributing thread:

- `PSF Infrastructure Committee's recommendation for a new issue tracker <http://mail.python.org/pipermail/python-dev/2006-October/069139.html>`__

-----------------------------
PEP 302: import hooks phase 2
-----------------------------

Brett Cannon announced that he'd be working on a C implementation of phase 2 of `PEP 302`_. Phillip J. Eby pointed out that phase 2 could not be implemented in a backwards-compatible way, and so the code should be targeted at the p3yk branch. He also suggested that rewriting the import mechanisms in Python was probably going to be easier than trying to do it in C, particularly since some of the pieces were already available in the pkgutil module. Neal Norwitz strongly agreed, pointing out that string and list manipulation, which is necessary in a variety of places in the import mechanisms, is much easier in Python than in C. Brett promised a Python implementation as part of his research work.

.. _PEP 302: http://www.python.org/dev/peps/pep-0302/

Contributing thread:

- `Created branch for PEP 302 phase 2 work (in C) <http://mail.python.org/pipermail/python-dev/2006-October/069133.html>`__

------------------------------------------
Web crawlers and development documentation
------------------------------------------

Fredrik Lundh noticed that Google was sometimes finding the `development documentation`_ instead of the `current release documentation`_. A.M. Kuchling added a ``robots.txt`` to keep crawlers out of the development area.

.. _development documentation: http://docs.python.org/dev/
.. _current release documentation: http://docs.python.org/

Contributing thread:

- `what's really new in python 2.5 ? <http://mail.python.org/pipermail/python-dev/2006-October/069158.html>`__

-----------------------------------------
Buildbots, compile errors and batch files
-----------------------------------------

Tim Peters noticed that bsddb was getting compile errors on Windows but the buildbots were not reporting anything. Because some additional commands were added after the call to ``devenv.com`` in the ``build.bat`` script, the error status was not getting propagated appropriately. After Tim and Martin v. Lowis figured out how to repair this, the buildbots were again able to report compile errors.

Contributing thread:

- `2.4 vs Windows vs bsddb <http://mail.python.org/pipermail/python-dev/2006-October/069283.html>`__

---------------------------------
Python 2.5 and Visual Studio 2005
---------------------------------

Kristjan V. Jonsson showed that using Visual Studio 2005 instead of Visual Studio 2003 gave a 7% gain in speed, and a 10% gain when performance guided optimization (PGO) was enabled. While the "official" compiler can't get changed at a point release, everyone agreed that making the PCBuild8 directory work out of the box and adding an appropriate buildslave was a good idea. Kristjan promised to look into setting up a buildslave.

Contributing thread:

- `Python 2.5 performance <http://mail.python.org/pipermail/python-dev/2006-October/069338.html>`__

----------------------------------
Distributing debug build of Python
----------------------------------

David Abrahams asked if python.org would be willing to post links to the ActiveState debug builds of Python to make it easier for Boost.Python_ users to obtain a debug build. People seemed to think that Boost.Python_ users should be able to create a debug build of Python themselves if necessary.

.. _Boost.Python: http://www.boost.org/libs/python/doc/index.html

Contributing thread:

- `Plea to distribute debugging lib <http://mail.python.org/pipermail/python-dev/2006-October/069325.html>`__

-----------------------------------------
Unmarshalling/Unpickling multiple objects
-----------------------------------------

Tim Lesher proposed adding a generator to marshal and pickle so that instead of::

    while True:
        try:
            obj = marshal.load(fobj)    # or pickle.load(fobj)
        except EOFError:
            break
        ... do something with obj ...

you could write something like::

    for obj in marshal.loaditer(fobj):    # or pickle.loaditer(fobj)
        ... do something with obj ...

when you wanted to load multiple objects in sequence from the same file. Both Perforce and Mailman store objects in a way that would benefit from such a function, so it seemed like such an API might be reasonable.  No patch had been submitted at the time of this summary.

Contributing thread:

- `Iterating over marshal/pickle <http://mail.python.org/pipermail/python-dev/2006-October/069277.html>`__

-------------------------------
spawnvp and spawnvpe on Windows
-------------------------------

Alexey Borzenkov asked why spawnvp and spawnvpe weren't available in Python on Windows even though they were implemented in the CRT. He got the usual answer, that no one had submitted an appropriate patch, but that such a patch would be a reasonable addition for Python 2.6. Fredrik Lundh pointed out that the subprocess module was probably a better choice than spawnvp and spawnvpe anyway.

Contributing thread:

- `Why spawnvp not implemented on Windows? <http://mail.python.org/pipermail/python-dev/2006-October/069342.html>`__


==================
Previous Summaries
==================
- `difficulty of implementing phase 2 of PEP 302 in Python source <http://mail.python.org/pipermail/python-dev/2006-October/069116.html>`__
- `Python Doc problems <http://mail.python.org/pipermail/python-dev/2006-October/069252.html>`__
- `Signals, threads, blocking C functions <http://mail.python.org/pipermail/python-dev/2006-October/069334.html>`__

===============
Skipped Threads
===============
- `Removing __del__ <http://mail.python.org/pipermail/python-dev/2006-September/068875.html>`__
- `Tix not included in 2.5 for Windows <http://mail.python.org/pipermail/python-dev/2006-October/069095.html>`__
- `Weekly Python Patch/Bug Summary <http://mail.python.org/pipermail/python-dev/2006-October/069098.html>`__
- `HAVE_UINTPTR_T test in configure.in <http://mail.python.org/pipermail/python-dev/2006-October/069103.html>`__
- `OT: How many other people got this spam? <http://mail.python.org/pipermail/python-dev/2006-October/069117.html>`__
- `2.4.4 fixes <http://mail.python.org/pipermail/python-dev/2006-October/069160.html>`__
- `2.4.4 fix: Socketmodule Ctl-C patch <http://mail.python.org/pipermail/python-dev/2006-October/069189.html>`__
- `[Python-checkins] r51862 - python/branches/release25-maint/Tools/msi/msi.py <http://mail.python.org/pipermail/python-dev/2006-October/069201.html>`__
- `Fwd: [ python-Feature Requests-1567948 ] poplib.py list interface <http://mail.python.org/pipermail/python-dev/2006-October/069223.html>`__
- `Can't check in on release25-maint branch <http://mail.python.org/pipermail/python-dev/2006-October/069256.html>`__
- `if __debug__: except Exception, e: pdb.set_trace() <http://mail.python.org/pipermail/python-dev/2006-October/069271.html>`__
- `2.5, 64 bit <http://mail.python.org/pipermail/python-dev/2006-October/069275.html>`__
- `BUG (urllib2) Authentication request header is broken on long usernames and passwords <http://mail.python.org/pipermail/python-dev/2006-October/069284.html>`__
- `[Python-3000] Sky pie: a "var" keyword <http://mail.python.org/pipermail/python-dev/2006-October/069292.html>`__
- `Proprietary code in python? <http://mail.python.org/pipermail/python-dev/2006-October/069294.html>`__
- `DRAFT: python-dev summary for 2006-08-16 to 2006-08-31 <http://mail.python.org/pipermail/python-dev/2006-October/069299.html>`__
- `BRANCH FREEZE, release24-maint for 2.4.4c1. 00:00UTC, 11 October 2006 <http://mail.python.org/pipermail/python-dev/2006-October/069302.html>`__
- `2.4 vs Windows vs bsddb [correction] <http://mail.python.org/pipermail/python-dev/2006-October/069310.html>`__
- `RELEASED Python 2.4.4, release candidate 1 <http://mail.python.org/pipermail/python-dev/2006-October/069326.html>`__
- `ConfigParser: whitespace leading comment lines <http://mail.python.org/pipermail/python-dev/2006-October/069337.html>`__
- `Exceptions and slicing <http://mail.python.org/pipermail/python-dev/2006-October/069363.html>`__
- `Proposal: No more standard library additions <http://mail.python.org/pipermail/python-dev/2006-October/069398.html>`__
- `[py3k] Re: Proposal: No more standard library additions <http://mail.python.org/pipermail/python-dev/2006-October/069399.html>`__
- `Modulefinder <http://mail.python.org/pipermail/python-dev/2006-October/069412.html>`__
- `VC6 support on release25-maint <http://mail.python.org/pipermail/python-dev/2006-October/069426.html>`__
- `os.utime on directories: bug fix or new feature? <http://mail.python.org/pipermail/python-dev/2006-October/069431.html>`__
- `Problem building module against Mac Python 2.4 and Python 2.5 <http://mail.python.org/pipermail/python-dev/2006-October/069434.html>`__




========
Epilogue
========

This is a summary of traffic on the `python-dev mailing list`_ from
October 01, 2006 through October 15, 2006.
It is intended to inform the wider Python community of on-going
developments on the list on a semi-monthly basis.  An archive_ of
previous summaries is available online.

An `RSS feed`_ of the titles of the summaries is available.
You can also watch comp.lang.python or comp.lang.python.announce for
new summaries (or through their email gateways of python-list or
python-announce, respectively, as found at http://mail.python.org).

This python-dev summary is the 14th written by 
Steve Bethard. 

To contact me, please send email:

- Steve Bethard (steven.bethard at gmail.com)

Do *not* post to comp.lang.python if you wish to reach me.

The `Python Software Foundation`_ is the non-profit organization that
holds the intellectual property for Python.  It also tries to advance
the development and use of Python.  If you find the python-dev Summary
helpful please consider making a donation.  You can make a donation at
http://python.org/psf/donations.html .  Every cent counts so even a
small donation with a credit card, check, or by PayPal helps.


--------------------
Commenting on Topics
--------------------

To comment on anything mentioned here, just post to
`comp.lang.python`_ (or email python-list at python.org which is a
gateway to the newsgroup) with a subject line mentioning what you are
discussing.  All python-dev members are interested in seeing ideas
discussed by the community, so don't hesitate to take a stance on
something.  And if all of this really interests you then get involved
and join `python-dev`_!


-------------------------
How to Read the Summaries
-------------------------

This summary is written using reStructuredText_. Any unfamiliar
punctuation is probably markup for reST_ (otherwise it is probably
regular expression syntax or a typo :); you can safely ignore it.  We
do suggest learning reST, though; it's simple and is accepted for
`PEP markup`_ and can be turned into many different formats like HTML
and LaTeX.

.. _python-dev: http://www.python.org/dev/
.. _python-dev mailing list: http://mail.python.org/mailman/listinfo/python-dev
.. _comp.lang.python: http://groups.google.com/groups?q=comp.lang.python
.. _PEP Markup: http://www.python.org/peps/pep-0012.html

.. _reST:
.. _reStructuredText: http://docutils.sf.net/rst.html
.. _Python Software Foundation: http://python.org/psf/

.. _archive: http://www.python.org/dev/summary/
.. _RSS feed: http://www.python.org/dev/summary/channews.rdf





More information about the Python-list mailing list