[Python-Dev] Re: proto-pep: How to change Python's bytecode

Terry Reedy tjreedy at udel.edu
Sat Dec 25 02:54:32 CET 2004

"Brett C." <bac at ocf.berkeley.edu> wrote in message 
news:41CC7F67.9070009 at ocf.berkeley.edu...

At to the title, bytecodes are a property of the CPython implementation, 
not of Python itself.  Since I think the distinction is quite important to 
maintain, I would insert the missing 'C' and everywhere else as 

> After implementing over 10 new opcodes for my thesis I figured I should 
> write down the basic steps in an info PEP so that there is enough 
> guidelines with this PEP and PEP 306 to cover the bases on changes to the 
> language itself.

Over the last several years, various people have reported experimenting 
with CPython's bytecodes.  I wonder if it would be helpful to have a 
respository of the results, in one place, for new experimenters and curious 
people to peruse.

> Anyway, let me know if I seem to be missing anything or have something to 
> add.

As I said, the importanct 'C' qualifier.

> Title: How to change Python's bytecode


> Python source code is compiled down to something called bytecode.

Suggested replacements in quotes:
"CPython compiles Python source code to something called bytecode."

> This  bytecode (which can be viewed as sequences of opcodes)
> defines what Python is capable of.

This is backwards.  "The language, as defined in the Reference Manual, 
determines what bytecodes are needed (collectively, not one by one) for a 
bytecode implementation."

>  As such, knowing how to add, remove, or change the bytecode is
> important to do properly when changing the abilities of the Python 
> language.

"Therefore, changes in the language may require changes in the set of 
bytecodes.  In addition, changing the bytecode set for a given definition 
may result in desireable changes in the interpreter behavior.  This 
document describes how to do so for either reason."

> Rationale
> =========
> While changing Python's bytecode is not a frequent occurence, it still 
> happens.

/P/CP/   Experiments are much more frequent than committed changes -- all 
of which start as experiments.

Terry J. Reedy

More information about the Python-Dev mailing list