--- On Fri, 10/24/08, Ovid <[EMAIL PROTECTED]> wrote:
> From: Ovid <[EMAIL PROTECTED]>
> Subject: ![PATCH] Moose::Util
> To: moose@perl.org
> Date: Friday, October 24, 2008, 8:50 AM
> 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 :)
Is the problem that Moose is underperforming for you, or is there a test case
we can try to make it fail?
>
> We tried to do this:
>
> if ($metaclass_name !~ /^Moose/) {
>
> But our test suite fell down and went BOOM!
I'll have to let someone else comment on this, but I would imagine somehow this
is always getting called. Problem not worth trying to debug this bit.
>
> 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')