[Python-Dev] Python 2.3a1's mandatory use of cyclic GC causes existing applications to fail

Guido van Rossum guido@python.org
Wed, 05 Feb 2003 11:19:23 -0500


> I do not believe my experiences will prove to be unique among the
> Python community.  Given this possibility, is it desirable to
> re-insert the logic to make the cyclic GC optional now, heading off
> potential problems that would surface only months from now, once
> Python 2.3 is officially rolled out and installed worldwide?

Everything's possible, but the manpower available to create and write
this code is limited.

Here's a challenge.  If you are right, and others will feel the same
pain, you and those others should get together and produce a patch to
Python that makes cyclic GC optional again.  You should also allocate
some ongoing time in the future to maintain your code and make sure it
still works in future versions.  It's a fact of life that
configuration options that aren't used by the core Python maintainers
tend to stop working after one or two releases, and that's one of the
reasons that we removed GC's optionality -- nobody was keeping the
endless nests of #ifdefs up-to-date as other code changes were
implemented, and the result was poor code readability (hence more
effort needed for code maintenance) with no benefit -- the feature
didn't work.

This may seem like a cheap shot back, but it isn't.  Python is a
volunteer project (the PythonLabs folks make a living writing Zope
code, and others working on the code are either in school or in a
similar position), and there's only so much we can do.  If nobody
steps up to maintain a particular feature, that feature is likely to
be removed at some point, because keeping around dead code is never
free.  (Witness the numerous style changes made to standard library
modules that nobody uses. :-)

I assure you that if you put in the time it takes to maintain your
code, and you are a decent coder, and the feature doesn't interfere
with other Python goals (like wide portability), your code isn't
likely to be thrown out.  As it was, nobody so far was interested in
maintaining GC's optionality, so out it went.  I'll welcome it back if
it comes with a maintenance offer.

--Guido van Rossum (home page: http://www.python.org/~guido/)