Hey Terry,

On Fri, Jan 29, 2010 at 2:47 PM, Terry Reedy <tjre...@udel.edu> wrote:
> On 1/29/2010 4:19 PM, Collin Winter wrote:
>>
>> On Fri, Jan 29, 2010 at 7:22 AM, Nick Coghlan<ncogh...@gmail.com>  wrote:
>
>> Agreed. We originally switched Unladen Swallow to wordcode in our
>> 2009Q1 release, and saw a performance improvement from this across the
>> board. We switched back to bytecode for the JIT compiler to make
>> upstream merger easier. The Unladen Swallow benchmark suite should
>> provided a thorough assessment of the impact of the wordcode ->
>> bytecode switch. This would be complementary to a JIT compiler, rather
>> than a replacement for it.
>>
>> I would note that the switch will introduce incompatibilities with
>> libraries like Twisted. IIRC, Twisted has a traceback prettifier that
>> removes its trampoline functions from the traceback, parsing CPython's
>> bytecode in the process. If running under CPython, it assumes that the
>> bytecode is as it expects. We broke this in Unladen's wordcode switch.
>> I think parsing bytecode is a bad idea, but any switch to wordcode
>> should be advertised widely.
>
> Several years, there was serious consideration of switching to a
> registerbased vm, which would have been even more of a change. Since I
> learned 1.4, Guido has consistently insisted that the CPython vm is not part
> of the language definition and, as far as I know, he has rejected any
> byte-code hackery in the stdlib. While he is not one to, say, randomly
> permute the codes just to frustrate such hacks, I believe he has always
> considered vm details private and subject to change and any usage thereof
> 'at one's own risk'.

No, I agree entirely: bytecode is an implementation detail that could
be changed at any time. But like reference counting, it's an
implementation detail that people have -- for better or worse -- come
to rely on. My only point was that a switch to wordcode should be
announced prominently in the release notes and not assumed to be
without impact on user code. That people are directly munging CPython
bytecode means that CPython should provide a better, more abstract way
to do the same thing that's more resistant to these kinds of changes.

Collin Winter
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to