Reini Urban wrote:

I'm sorry, I totally overreacted then here and in r37222 - trunk/src/ops.

Forgiven.

But I miss more details in the "Bytecode Compatibility" section in respect to our current PBC_COMPAT and packfile.c policy. opsrenumber reflects the current policy, but the PBC_COMPAT and packfile.c policy not.

The "bytecode format" section you cited talks about the pbc format, which has nothing to do with the bytecode versions which depends mainly on pmc or ops changes.

Opcode and PMC numbering are part of the bytecode format, because they're frozen within the bytecode. That is, a PBC file stored with a different opcode and PMC numbering than the current interpreter will require file translation just as much as a PBC file with a different packfile structure. All of these kinds of changes (and more) are required to add entries in PBC_COMPAT.

"In future releases, we might make changes to the bytecode format that
would prevent bytecode generated on one supported release from running
on a later supported release. These changes will follow our usual
deprecation guidelines, with adequate advance notice."

This prevents any ops and pmc changes, even adds, for half a year, which is clearly not what we want. Or do you want that?

It just means we have to include a deprecation notice if we anticipate changing the bytecode between two supported releases. The way the deprecation cycle works, we can make changes with a deprecation notice right after the supported release.

Thanks for the reminder, deprecation notice added in r37446.

> Currently any change in PBC_COMPAT makes the pbc totally unportable
> within one deprecation cycle, but with the change in opsrenumber
> post-1.0 we at least try to be compatible with older pbc bytecode
> versions, so consider TT #407 to allow PBC_COMPAT changes *within* a 6
> months cycle. Otherwise we are not allowed to change any ops or pmc
> interface at all. That would be a bit harsh to forbid any change
> there.

Once the pace of development settles, we will start supporting versions of bytecode older than the current latest version. A bytecode migration tool is on the roadmap for 2.0, and increased portability and packfile format work is on the roadmap for 2.6. So, it will likely be 3.0 or later before we adopt a feature similar to TT #407.

When we do adopt it, I expect it'll take a form something like "support all versions within a major series", so bytecode versions 4.0 through 4.22 are all compatible, but 5.0 is not compatible with 4.0. But, we have a couple years to think about it, and can decide what makes sense for Parrot when we get there.

Allison
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to