Hi folks, I didn't attach a patch for Moose::Util. I pasted it. That's because you shouldn't apply it, but we (BBC) have to as a temporary fix until we can understand exactly what's going on and how to better fix this.
Basically, the patch changes &Moose::Util::resolve_metaclass_alias to actually use *our* metaclass name if it contains the string 'Pips3'. This more than *doubles* the speed of our test suite. However, 'Pips3' probably isn't terribly useful for most folks :) We tried to do this: if ($metaclass_name !~ /^Moose/) { But our test suite fell down and went BOOM! This is deeply mysterious to us, so if anyone can offer insight into this, we'd be grateful. Cheers, Ovid -- Buy the book - http://www.oreilly.com/catalog/perlhks/ Tech blog - http://use.perl.org/~Ovid/journal/ Twitter - http://twitter.com/OvidPerl Official Perl 6 Wiki - http://www.perlfoundation.org/perl6 =================================================================== --- Util.pm (revision 11775) +++ Util.pm (working copy) @@ -126,9 +126,17 @@ sub resolve_metaclass_alias { my ( $type, $metaclass_name, %options ) = @_; + + if ( my $resolved = eval { - my $possible_full_name = 'Moose::Meta::' . $type . '::Custom::' . ( $options{trait} ? "Trait::" : "" ) . $metaclass_name; + my $possible_full_name; + if ($metaclass_name =~ /Pips3/) { + $possible_full_name = $metaclass_name; + } else { + + $possible_full_name = 'Moose::Meta::' . $type . '::Custom::' . ( $options{trait} ? "Trait::" : "" ) . $metaclass_name; + } Class::MOP::load_class($possible_full_name); $possible_full_name->can('register_implementation')