Various minor additions and clarifications, mostly suggested by Jeremy

This commit is contained in:
Andrew M. Kuchling 2000-10-12 03:04:22 +00:00
parent 7486c6b0ef
commit ec1722e8d4
1 changed files with 57 additions and 29 deletions

View File

@ -29,7 +29,11 @@ steady flow of bug fixes and improvements are always being submitted.
A host of minor fixes, a few optimizations, additional docstrings, and A host of minor fixes, a few optimizations, additional docstrings, and
better error messages went into 2.0; to list them all would be better error messages went into 2.0; to list them all would be
impossible, but they're certainly significant. Consult the impossible, but they're certainly significant. Consult the
publicly-available CVS logs if you want to see the full list. publicly-available CVS logs if you want to see the full list. This
progress is due to the five developers working for
PythonLabs are now getting paid to spend their days fixing bugs,
and also due to the improved communication resulting
from moving to SourceForge.
% ====================================================================== % ======================================================================
\section{What About Python 1.6?} \section{What About Python 1.6?}
@ -88,12 +92,14 @@ The shift to using SourceForge's services has resulted in a remarkable
increase in the speed of development. Patches now get submitted, increase in the speed of development. Patches now get submitted,
commented on, revised by people other than the original submitter, and commented on, revised by people other than the original submitter, and
bounced back and forth between people until the patch is deemed worth bounced back and forth between people until the patch is deemed worth
checking in. This didn't come without a cost: developers now have checking in. Bugs are tracked in one central location and can be
more e-mail to deal with, more mailing lists to follow, and special assigned to a specific person for fixing, and we can count the number
tools had to be written for the new environment. For example, of open bugs to measure progress. This didn't come without a cost:
SourceForge sends default patch and bug notification e-mail messages developers now have more e-mail to deal with, more mailing lists to
that are completely unhelpful, so Ka-Ping Yee wrote an HTML follow, and special tools had to be written for the new environment.
screen-scraper that sends more useful messages. For example, SourceForge sends default patch and bug notification
e-mail messages that are completely unhelpful, so Ka-Ping Yee wrote an
HTML screen-scraper that sends more useful messages.
The ease of adding code caused a few initial growing pains, such as The ease of adding code caused a few initial growing pains, such as
code was checked in before it was ready or without getting clear code was checked in before it was ready or without getting clear
@ -102,10 +108,11 @@ emerged is somewhat similar to that used by the Apache group.
Developers can vote +1, +0, -0, or -1 on a patch; +1 and -1 denote Developers can vote +1, +0, -0, or -1 on a patch; +1 and -1 denote
acceptance or rejection, while +0 and -0 mean the developer is mostly acceptance or rejection, while +0 and -0 mean the developer is mostly
indifferent to the change, though with a slight positive or negative indifferent to the change, though with a slight positive or negative
slant. The most significant change from the Apache model is that slant. The most significant change from the Apache model is that the
Guido van Rossum, who has Benevolent Dictator For Life status, can voting is essentially advisory, letting Guido van Rossum, who has
ignore the votes of the other developers and approve or reject a Benevolent Dictator For Life status, know what the general opinion is.
change, effectively giving him a +Infinity / -Infinity vote. He can still ignore the result of a vote, and approve or
reject a change even if the community disagrees with him.
Producing an actual patch is the last step in adding a new feature, Producing an actual patch is the last step in adding a new feature,
and is usually easy compared to the earlier task of coming up with a and is usually easy compared to the earlier task of coming up with a
@ -474,7 +481,7 @@ words, \code{s.join(seq)} is equivalent to the old
\code{string.join(seq, s)}. \code{string.join(seq, s)}.
% ====================================================================== % ======================================================================
\section{Optional Collection of Cycles} \section{Garbage Collection of Cycles}
The C implementation of Python uses reference counting to implement The C implementation of Python uses reference counting to implement
garbage collection. Every Python object maintains a count of the garbage collection. Every Python object maintains a count of the
@ -513,18 +520,23 @@ code, and it could be deleted. Several objects can participate in a
cycle if they have references to each other, causing all of the cycle if they have references to each other, causing all of the
objects to be leaked. objects to be leaked.
An experimental step has been made toward fixing this problem. When Python 2.0 fixes this problem by periodically executing a cycle
compiling Python, the \verb|--with-cycle-gc| option can be specified. detection algorithm which looks for inaccessible cycles and deletes
This causes a cycle detection algorithm to be periodically executed, the objects involved. A new \module{gc} module provides functions to
which looks for inaccessible cycles and deletes the objects involved. perform a garbage collection, obtain debugging statistics, and tuning
A new \module{gc} module provides functions to perform a garbage the collector's parameters.
collection, obtain debugging statistics, and tuning the collector's parameters.
Why isn't cycle detection enabled by default? Running the cycle detection Running the cycle detection algorithm takes some time, and therefore
algorithm takes some time, and some tuning will be required to will result in some additional overhead. It is hoped that after we've
minimize the overhead cost. It's not yet obvious how much performance gotten experience with the cycle collection from using 2.0, Python 2.1
is lost, because benchmarking this is tricky and depends crucially will be able to minimize the overhead with careful tuning. It's not
on how often the program creates and destroys objects. yet obvious how much performance is lost, because benchmarking this is
tricky and depends crucially on how often the program creates and
destroys objects. The detection of cycles can be disabled when Python
is compiled, if you can't afford even a tiny speed penalty or suspect
that the cycle collection is buggy, by specifying the
\samp{--without-cycle-gc} switch when running the \file{configure}
script.
Several people tackled this problem and contributed to a solution. An Several people tackled this problem and contributed to a solution. An
early implementation of the cycle detection approach was written by early implementation of the cycle detection approach was written by
@ -618,10 +630,16 @@ The comparison \code{a==b} returns true, because the two recursive
data structures are isomorphic. See the thread ``trashcan data structures are isomorphic. See the thread ``trashcan
and PR\#7'' in the April 2000 archives of the python-dev mailing list and PR\#7'' in the April 2000 archives of the python-dev mailing list
for the discussion leading up to this implementation, and some useful for the discussion leading up to this implementation, and some useful
relevant links. relevant links.
% Starting URL: % Starting URL:
% http://www.python.org/pipermail/python-dev/2000-April/004834.html % http://www.python.org/pipermail/python-dev/2000-April/004834.html
Note that comparisons can now also raise exceptions. In earlier
versions of Python, a comparison operation such as \code{cmp(a,b)}
would always produce an answer, even if a user-defined
\method{__cmp__} method encountered an error, since the resulting
exception would simply be silently swallowed.
Work has been done on porting Python to 64-bit Windows on the Itanium Work has been done on porting Python to 64-bit Windows on the Itanium
processor, mostly by Trent Mick of ActiveState. (Confusingly, processor, mostly by Trent Mick of ActiveState. (Confusingly,
\code{sys.platform} is still \code{'win32'} on Win64 because it seems \code{sys.platform} is still \code{'win32'} on Win64 because it seems
@ -630,6 +648,11 @@ PythonWin also supports Windows CE; see the Python CE page at
\url{http://starship.python.net/crew/mhammond/ce/} for more \url{http://starship.python.net/crew/mhammond/ce/} for more
information. information.
Another new platform is Darwin/MacOS X; inital support for it is in
Python 2.0. Dynamic loading works, if you specify ``configure
--with-dyld --with-suffix=.x''. Consult the README in the Python
source distribution for more instructions.
An attempt has been made to alleviate one of Python's warts, the An attempt has been made to alleviate one of Python's warts, the
often-confusing \exception{NameError} exception when code refers to a often-confusing \exception{NameError} exception when code refers to a
local variable before the variable has been assigned a value. For local variable before the variable has been assigned a value. For
@ -1136,8 +1159,6 @@ standard library; some of the affected modules include
and \module{nntplib}. Consult the CVS logs for the exact and \module{nntplib}. Consult the CVS logs for the exact
patch-by-patch details. patch-by-patch details.
% XXX gettext support
Brian Gallew contributed OpenSSL support for the \module{socket} Brian Gallew contributed OpenSSL support for the \module{socket}
module. OpenSSL is an implementation of the Secure Socket Layer, module. OpenSSL is an implementation of the Secure Socket Layer,
which encrypts the data being sent over a socket. When compiling which encrypts the data being sent over a socket. When compiling
@ -1201,9 +1222,15 @@ the function to be called on exit.
\module{dircmp} modules, which have now become deprecated. \module{dircmp} modules, which have now become deprecated.
(Contributed by Gordon MacMillan and Moshe Zadka.) (Contributed by Gordon MacMillan and Moshe Zadka.)
\item{\module{gettext}:} This module provides internationalization
(I18N) and localization (L10N) support for Python programs by
providing an interface to the GNU gettext message catalog library.
(Integrated by Barry Warsaw, from separate contributions by Martin von
Loewis, Peter Funk, and James Henstridge.)
\item{\module{linuxaudiodev}:} Support for the \file{/dev/audio} \item{\module{linuxaudiodev}:} Support for the \file{/dev/audio}
device on Linux, a twin to the existing \module{sunaudiodev} module. device on Linux, a twin to the existing \module{sunaudiodev} module.
(Contributed by Peter Bosch.) (Contributed by Peter Bosch, with fixes by Jeremy Hylton.)
\item{\module{mmap}:} An interface to memory-mapped files on both \item{\module{mmap}:} An interface to memory-mapped files on both
Windows and Unix. A file's contents can be mapped directly into Windows and Unix. A file's contents can be mapped directly into
@ -1314,7 +1341,8 @@ these modules.
The authors would like to thank the following people for offering The authors would like to thank the following people for offering
suggestions on drafts of this article: Mark Hammond, Gregg Hauser, suggestions on drafts of this article: Mark Hammond, Gregg Hauser,
Fredrik Lundh, Detlef Lannert, Aahz Maruch, Skip Montanaro, Vladimir Jeremy Hylton, Fredrik Lundh, Detlef Lannert, Aahz Maruch, Skip
Marangozov, Guido van Rossum, Neil Schemenauer, and Russ Schmidt. Montanaro, Vladimir Marangozov, Guido van Rossum, Neil Schemenauer,
and Russ Schmidt.
\end{document} \end{document}