
Given Christian Tismer's testimonial and inspection of marshal.c, I think Peter's small patch is acceptable. A bigger question is whether we should freeze the magic number and add a version number. In theory I'm all for that, but it means more changes; there are several tools (e.c. Lib/py_compile.py, Tools/freeze/modulefinder.py and Tools/scripts/checkpyc.py) that have intimate knowledge of the .pyc file format that would have to be modified to match. The current format of a .pyc file is as follows: bytes 0-3 magic number bytes 4-7 timestamp (mtime of .py file) bytes 8-* marshalled code object The magic number itself is used to convey various bits of information, all implicit: - the Python version - whether \r and \n are swapped (some old Mac compilers did this) - whether all string literals are Unicode (experimental -U flag) The current (1.6) value of the magic number (as a string -- the .pyc file format is byte order independent) is '\374\304\015\012' on most platforms; it's '\374\304\012\015' for the old Mac compilers mentioned; and it's '\375\304\015\012' with -U. Can anyone come up with a proposal? I'm swamped! --Guido van Rossum (home page: http://www.python.org/~guido/)