Meta-object programming sees us using object orientation to implement...object orientation. It may sound loopy at first, but the upshot is that we can take advantage of all the good things about OO - such as easy extensibility and clean interfaces - when implementing our object oriented language features. Furthermore, we can provide hooks for people to build upon the object model to extend it in interesting ways.
In this talk, I'll look at a new factoring of the Perl 6 metamodel that we'll be including in future releases of the Rakudo Perl 6 compiler (most probably from July onwards). Along the way, we'll see how various features - classes, attributes, methods, inheritance and roles - are implemented. I'll also discuss issues surrounding bootstrapping, performance and meta-circularity.