[Python-Dev] Unexpected bytecode difference (original) (raw)

Victor Stinner victor.stinner at gmail.com
Fri Jan 19 18:54:30 EST 2018


Python bytecode format changed deeply in Python 3.6. It now uses regular units of 2 bytes, instead of 1 or 3 bytes depending if the instruction has an argument.

See for example https://bugs.python.org/issue26647 "wordcode".

But CALL_FUNCTION bytecode also evolved.

Victor

2018-01-20 0:46 GMT+01:00 Alexander Belopolsky <alexander.belopolsky at gmail.com>:

I have encountered the following difference between Python 3 and 2:

(py3)

compile('xxx', '<>', 'eval').cocode b'e\x00S\x00' (py2) compile('xxx', '<>', 'eval').cocode 'e\x00\x00S' Note that 'S' (the code for RETURNVALUE) and a zero byte are swapped in Python 2 compared to Python 3. Is this change documented somewhere?


Python-Dev mailing list Python-Dev at python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/victor.stinner%40gmail.com



More information about the Python-Dev mailing list