On Thu, May 31, 2012 at 6:56 PM, Benjamin Peterson <benjamin@python.org> wrote:
2012/5/31 Nick Coghlan <ncoghlan@gmail.com>:
> On Thu, May 31, 2012 at 8:26 PM, Mark Shannon <mark@hotpy.org> wrote:
>> Eric Snow wrote:
>>>
>>> The implementation for sys.implementation is going to use a new (but
>>> "private") type[1].  It's basically equivalent to the following:
>>
>>
>> Does this really need to be written in C rather than Python?
>
> Yes, because we want to use it in the sys module. As you get lower
> down in the interpreter stack, implementing things in Python actually
> starts getting painful because of bootstrapping issues (e.g. that's
> why both _structseq and collections.namedtuple exist).

sys.implementation could be added by site or some other startup file.

 
Yes, why not do that instead of a new thing in C? I don't care about PyPy actually (since we kind of have to implement sys.implementation in python/RPython anyway, since it'll be different) but more that more code in C means more trouble usually.

Another question (might be out of topic here). What we do in PyPy to avoid bootstrapping issues (since we have quite a bit implemented in Python, rather than RPython) is to "freeze" the bytecode at compile time (or make time) and put it in the executable. This avoids all sort of filesystem access issues, but might be slightly too complicated.

Cheers,
fijal