[Python-Dev] importlib is now bootstrapped (and what that means) (original) (raw)

Brett Cannon brett at python.org
Tue Apr 17 17:41:32 CEST 2012


On Tue, Apr 17, 2012 at 06:43, Eric V. Smith <eric at trueblade.com> wrote:

On 4/17/2012 5:52 AM, Antoine Pitrou wrote: > On Mon, 16 Apr 2012 20:41:56 -0400 > Brett Cannon <brett at python.org> wrote: >> On Mon, Apr 16, 2012 at 20:27, Antoine Pitrou <solipsis at pitrou.net> wrote: >> >>> On Tue, 17 Apr 2012 01:11:14 +0200 >>> Georg Brandl <g.brandl at gmx.net> wrote: >>>> >>>> No, it's not just an existing Python, it is (at least currently) the same >>>> version of Python being built. Therefore I wrote about the bootstrapping >>>> problems when bytecode changes. >>>> >>>> Depending on Cython is better in that it breaks the bootstrapping cycle, >>>> but on the other hand the C code may need to be regenerated when the C >>> API >>>> changes in an incompatible way. >>> >>> Cython OTOH probably needs Python 2.x, which isn't that great for >>> building Python 3. And requiring Cython for developing is not very >>> contributor-friendly. >>> >> >> Well, required to regenerate frozenimportlib, but nothing else. I mean >> making fixes go into importlib directly and get tested that way, not >> through import(). So really Cython would only be needed when >> importlib.bootstrap has been changed and you are making a commit. > > That's still a large dependency to bring in, while we already have a > working solution. > I'd understand using Cython to develop some new extension module which > requires linking against a C library (and is thus impossible to write > in pure Python). But for importlib that's totally non-necessary. > > I guess I'm -1 on it.

I agree. If the problem we're trying to solve is that the generated file isn't always rebuilt, bringing in a large dependency like Cython seems like overkill to me.

Actually Cython would help with a subtle maintenance burden of maintaining any C code for import. Right now, Python/import.c:PyImport_ImportModuleLevelObject() is an accelerated C version of importlib.import() through checking sys.modules, after which it calls into the Python code. Cython would do away with that C acceleration code (which I have already had to modify once and Antoine found a couple refleaks in).

We basically have a working solution now (thanks, Brett). I think we should focus on getting it polished. Maybe we can bring in Cython in a later release, if in the 3.4 timeframe it still seems like we have a problem to solve. I suspect things will be working fine.

I don't view this discussion as work/not work but more of work/work better (possibly; I have severe bias here to cut the C code down to zilch since I don't want to write anymore of it so I'm definitely not going to make any final call on this topic). -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20120417/f85a7552/attachment.html>



More information about the Python-Dev mailing list