[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