- constructor should pass the args through the accessors, accepting a list of key value pairs, keyed by field, for the layout. - next/super etc -- methods must be MRO aware - this required a split into ::Compiled much like attr is right now. - Emitter TODO - foreign dispatch types must be dispatchable via ->meta calls, i guess - use a comparative-merge approach so that foreign MROs can still work (depends on next/super) - do roles get emitted? we need something for disambiguation... I guess stubs are skipped, but aside from that methods (including accessors) should get created, with accessors getting a null target. - exclude subs who come from elsewhere from the dump (imported routines, etc). Talk to demerphq about this. - Perl::Generate based slot/accessor incest - Array based layouts - option for vtable based dispatch (as opposed to named) - refactor MO::Compile::Class to be pluggable: precendence list based enumartion: MO::Compile::Enumera(ting|ble) get_all_using_* combinators this require ordering for sub extractors via extra methods interface composition: private / public interface merging (easy) multiple public interface merging (harder - declare which extractors shadow?) meta-instance data: attribute merging, field extraction, layout helpers method merging - Abstract roles for top level objects (MO::Compile::Concept?) and sub objects (MO::Compile::Element?) (split to two levels?) - Split MO::Compile::Aux from MO::Run::Aux to improve load times (the PMC compilation shit doesn't have to be in runtime). - Also consider removing 'use warnings' as it nearly doubles the load time right now (from MO::Run::Aux for runtime support and MO::Emit::P5 for serialized code refs).