We're most of the way through the implementation of PDD 15, but still
have a few final steps before it can completely replace the current
implementation. Much of the current implementation of OO lives in
src/objects.c and src/ops/object.ops. Much of the code is specific to
the ParrotClass/ParrotObject way of doing things.
To finish off the implementation we can either branch, rip out the old
implementation, and reintegrate (the "big thud" approach, as chromatic
would call it), or we can refactor the existing ops and supporting code
to support the old and new metamodels, and when both are passing all the
tests, we can switch 'newclass' over to creating new style classes by
default.
In this case, my preference is the refactor approach. We need to support
multiple class/object implementations anyway. Refactoring to support the
two we have now moves us closer to our goals than simply replacing the
old implementation. Running two implementations will also force us to
respect encapsulation boundaries much more than the current
implementation does.
Any concerns? Existing uses of OO code shouldn't be affected until we
make the switch of 'newclass' creating new classes by default. I suspect
PGE and TGE are our heaviest users of the current object implementation
and will act as the best stress test.
Allison