[Python-checkins] python/dist/src/Python import.c,2.229,2.230
jhylton at users.sourceforge.net
jhylton at users.sourceforge.net
Wed Mar 31 21:45:25 EST 2004
Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32543
Modified Files:
import.c
Log Message:
Bump the magic number to avoid sharing bytecode between 2.3 and 2.4.
Revise the long comment that explained details of the magic number
in gory detail.
Index: import.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/import.c,v
retrieving revision 2.229
retrieving revision 2.230
diff -C2 -d -r2.229 -r2.230
*** import.c 26 Mar 2004 15:09:27 -0000 2.229
--- import.c 1 Apr 2004 02:45:22 -0000 2.230
***************
*** 20,56 ****
/* In getmtime.c */
! /* Magic word to reject .pyc files generated by other Python versions */
! /* Change for each incompatible change */
! /* The value of CR and LF is incorporated so if you ever read or write
a .pyc file in text mode the magic number will be wrong; also, the
Apple MPW compiler swaps their values, botching string constants.
- XXX That probably isn't important anymore.
- */
- /* XXX Perhaps the magic number should be frozen and a version field
- added to the .pyc file header? */
- /* New way to come up with the low 16 bits of the magic number:
- (YEAR-1995) * 10000 + MONTH * 100 + DAY
- where MONTH and DAY are 1-based.
- XXX Whatever the "old way" may have been isn't documented.
- XXX This scheme breaks in 2002, as (2002-1995)*10000 = 70000 doesn't
- fit in 16 bits.
- XXX Later, sometimes 1 gets added to MAGIC in order to record that
- the Unicode -U option is in use. IMO (Tim's), that's a Bad Idea
- (quite apart from that the -U option doesn't work so isn't used
- anyway).
! XXX MAL, 2002-02-07: I had to modify the MAGIC due to a fix of the
! UTF-8 encoder (it previously produced invalid UTF-8 for unpaired
! high surrogates), so I simply bumped the month value to 20 (invalid
! month) and set the day to 1. This should be recognizable by any
! algorithm relying on the above scheme. Perhaps we should simply
! start counting in increments of 10 from now on ?!
!
! MWH, 2002-08-03: Removed SET_LINENO. Couldn't be bothered figuring
! out the MAGIC schemes, so just incremented it by 10.
! GvR, 2002-08-31: Because MWH changed the bytecode again, moved the
! magic number *back* to 62011. This should get the snake-farm to
! throw away its old .pyc files, amongst others.
Known values:
--- 20,37 ----
/* In getmtime.c */
! /* Magic word to reject .pyc files generated by other Python versions.
! It should change for each incompatible change to the bytecode.
!
! The value of CR and LF is incorporated so if you ever read or write
a .pyc file in text mode the magic number will be wrong; also, the
Apple MPW compiler swaps their values, botching string constants.
! Apparently, there was a distinction made between even and odd
! bytecodes that is related to Unicode. The details aren't clear,
! but the magic number has been odd for a long time.
! There were a variety of old schemes for setting the magic number.
! The current working scheme is to increment the previous value by
! 10.
Known values:
***************
*** 67,72 ****
Python 2.3a0: 62021
Python 2.3a0: 62011 (!)
*/
! #define MAGIC (62011 | ((long)'\r'<<16) | ((long)'\n'<<24))
/* Magic word as global; note that _PyImport_Init() can change the
--- 48,54 ----
Python 2.3a0: 62021
Python 2.3a0: 62011 (!)
+ Python 2.4a0: 62031
*/
! #define MAGIC (62031 | ((long)'\r'<<16) | ((long)'\n'<<24))
/* Magic word as global; note that _PyImport_Init() can change the
More information about the Python-checkins
mailing list