I also like having the header fixed-size, so it might be possible to
rewrite headers (e.g. to flip the source bit) without moving the rest of
the file.

On Fri, Sep 8, 2017 at 3:38 AM, Antoine Pitrou <solip...@pitrou.net> wrote:

> On Fri, 8 Sep 2017 12:04:52 +0200
> Antoine Pitrou <solip...@pitrou.net> wrote:
> > On Thu, 7 Sep 2017 18:47:20 -0700
> > Nick Coghlan <ncogh...@gmail.com> wrote:
> > > However, I do wonder whether we could encode *all* the mode settings
> > > into the magic number, such that we did something like reserving the
> > > top 3 bits for format flags:
> > >
> > > * number & 0x1FFF -> the traditional magic number
> > > * number & 0x8000 -> timestamp or hash?
> > > * number & 0x4000 -> checked or not?
> > > * number & 0x2000 -> reserved for future format changes
> >
> > I'd rather a single magic number and a separate bitfield that tells
> > what the header encodes exactly.  We don't *have* to fight for a tiny
> > size reduction of pyc files.
>
> Let me expand a bit on this.  Currently, the format is:
>
> - bytes 0..3: magic number
> - bytes 4..7: source file timestamp
> - bytes 8..11: source file size
> - bytes 12+: pyc file body (marshal format)
>
> What I'm proposing is:
>
> - bytes 0..3: magic number
> - bytes 4..7: header options (bitfield)
> - bytes 8..15: header contents
>    Depending on header options:
>     - bytes 8..11: source file timestamp
>     - bytes 12..15: source file size
>    or:
>     - bytes 8..15: 64-bit source file hash
> - bytes 16+: pyc file body (marshal format)
>
> This way, we keep a single magic number, a single header size, and
> there's only a per-build variation in the middle of the header.
>
>
> Of course, there are possible ways to encode information.  For
> example, the header could be a sequence of Type-Length-Value triplets,
> perhaps prefixed with header size or body offset for easy seeking.
>
> My whole point here is that we can easily avoid the annoyance of dual
> magic numbers and encodings which must be maintained in parallel.
>
> Regards
>
> Antoine.
>
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: https://mail.python.org/mailman/options/python-dev/
> guido%40python.org
>



-- 
--Guido van Rossum (python.org/~guido)
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to