[Python-Dev] PYC Magic

M.-A. Lemburg mal@lemburg.com
Thu, 07 Feb 2002 12:48:11 +0100


FYI, I've bumped the PYC magic in a non-standard way (the old 
standard broke on 2002-01-01); please review:

import.c:
"""
/* 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 ?!

   Known values:
       Python 1.5:   20121
       Python 1.5.1: 20121
       Python 1.5.2: 20121
       Python 2.0:   50823
       Python 2.0.1: 50823
       Python 2.1:   60202
       Python 2.1.1: 60202
       Python 2.1.2: 60202
       Python 2.2:   60717
       Python 2.3a0: 62001
*/
#define MAGIC (62001 | ((long)'\r'<<16) | ((long)'\n'<<24))
"""

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/