|
|
|||||||||
|
Writing this summary was difficult, because there were no large themes in the last two weeks of discussion. Instead there were lots and lots of small items; as the release date for 2.0b1 nears, people are concentrating on resolving outstanding patches, fixing bugs, and making last-minute tweaks. Python 1.6 progress =================== Python 1.6b1 was released a few days into the month; the plan is to release 1.6final after a few weeks of testing. GvR's announcement: http://mail.python.org/pipermail/python-dev/2000-August/007937.html The 1.6 page on python.org: http://www.python.org/1.6/ 1.6 is the "Contractual Obligations" release of Python, containing all the work done while the Pythoneers were working at CNRI. 1.6 is worth trying out if you're interested in testing Python's new Unicode support. Otherwise, unless you're CNRI's lawyer, you don't really care about this release, and can just wait for 2.0b1. 2.0 will contain all the features of 1.6 plus the additional work and bugfixes that have been made since May 2000, and the first beta release is scheduled for the end of August. (Maintainers of Linux distributions also probably don't need to bother packaging 1.6.) Python 2.0 progress =================== August 14 was the feature freeze date for Python 2.0; after that date, no new features can be proposed. The freeze announcement: http://mail.python.org/pipermail/python-dev/2000-August/008245.html The planned release schedule for 2.0: http://python.sourceforge.net/peps/pep-0200.html List comprehensions (PEP 202) were finally checked into the main CVS tree, after existing as a separate patch for a long time, and as documented in this PEP: http://python.sourceforge.net/peps/pep-0202.html Stackless Python ================ Christian Tismer's patches for Stackless Python came up as a discussion topic again. They're available from: http://www.stackless.com The Stackless patches make two major changes. 1) First, the main loop of the bytecode interpreter (Python/ceval.c in the source code) is modified so that calling a new Python function does not allocate a new frame on the C stack. Right now an infinite Python recursion will fill up the C stack fairly quickly and segfault; in Stackless Python, the Python stack frames will be allocated from the heap and won't fill up the C stack. 2) Second, they add a module for creating continuations. Continuations are an idea most commonly seen in Scheme and ML, as summed up by Tim Peters: http://mail.python.org/pipermail/python-dev/2000-August/008015.html Continuations allow storing the state of a running function and resuming its execution later; a stackless bytecode interpreter is required to make it possible to implement them at all. Continuations are a fundamental building block in that other abstractions such as generators and coroutines can be built on top of them. Having continuations can make some applications, such as writing network servers, much easier, but understanding continuations, and explaining them clearly can be difficult. See Sam Rushing's notes on Python coroutines: http://www.nightmare.com/~rushing/copython/ The first change simply makes an improved implementation of the interpreter; it introduces no changes visible to Python programmers and imposes no obligation upon the maintainers of other Python implementations. The second change is the one that causes the most disagreement, because it adds new language features that are user-visible, and these features would be very difficult to add to JPython. (Essentially you'd need to rewrite a Java VM to be stackless, and JPython would then require this VM to run. I don't know if Microsoft's Common Language Runtime would make continuations easy or difficult.) The current plan is for Gordon McMillan to write PEP 219 describing the first part of this change, the stackless version of the CPython interpreter. Continuations will be left to a separate proposal, PEP 220. http://python.sourceforge.net/peps/pep-0219.html http://python.sourceforge.net/peps/pep-0220.html The winreg module ================= The winreg module was the subject of a squabble. The original winreg was written by Mark Hammond and is part of PythonWin; it exactly wraps the Windows API for manipulating the registry. Around the end of June Paul Prescod suggested writing an object-oriented wrapper on top of the low-level API: http://mail.python.org/pipermail/python-dev/2000-June/004867.html Mark Hammond provisionally agreed with the idea: http://mail.python.org/pipermail/python-dev/2000-June/004881.html Paul proceeded to write the module and check it in. Later on Mark Hammond objected to the interface: http://mail.python.org/pipermail/python-dev/2000-July/007570.html Paul explained his reasons for writing the new module: http://mail.python.org/pipermail/python-dev/2000-August/007734.html http://mail.python.org/pipermail/python-dev/2000-August/007747.html The opinion of most other people was that, yes, the Windows registry interface is ugly, but it's so infrequently used that it's not worth making it tidy. Paul returned with a proposed interface specification: http://mail.python.org/pipermail/python-dev/2000-August/008162.html No one has commented on this interface yet. Windows-based Python programmers with an interest in the registry should take a look, and offer their opinions on this issue; most of the members of python-dev use some stripe of Unix. Is a higher-level interface to the registry needed? If yes, what do you think of Paul's proposal? Small matters ============= Jeremy Hylton moved the bug database from Jitterbug running on python.org to the SourceForge bug tracker: http://sourceforge.net/bugs/?group_id=5470 Peter Schneider-Kamp announced a fork of IDLE. The goal is to speed up development of IDLE and ultimately merge the improved version back into the Python source tree: http://idlefork.sourceforge.net An odd little method was added to dictionaries after some discussion. .setdefault(key, default) behaves like .get(key, default), but also inserts the value of 'default' into the dictionary if 'key' wasn't found. /F posted some benchmarks of SRE versus the old re module: http://mail.python.org/pipermail/python-dev/2000-August/007797.html |