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

Reply via email to