This would be my comment at chromatic's book-promotion blog -- in particular in reply to Ovid's comment -- if I weren't required to sign in there.
Perl6 will be out soon, right? Why put MooseX::Declare in the Perl5 core?
Anyway, the module failed to install for me. I'll try to work out why, though at first glance... MooseX::Method::Signatures failed to install, and it required
Context::Preserve [requires] Parse::Method::Signatures [requires] MooseX::Meta::TypeConstraint::ForceCoercion [requires] MooseX::Types::Structured [requires] aliased [requires] B::Hooks::EndOfScope [requires] MooseX::Types [requires] Devel::Declare [requires]
and of course Parse::Method::Signatures requires
PPI [requires] MooseX::Types::Structured [requires] aliased [requires] MooseX::Traits [requires] namespace::clean [requires] MooseX::Types [requires]
and naturally PPI needs
Test::Object [requires] Test::ClassAPI [requires] Test::SubCalls [requires]
and Test::SubCalls wants to have
Hook::LexWrap [requires]
Maybe I'll see where the error is sometime soon. Oh, here we go again, MooseX::Types::Structured needs
Sub::Exporter [requires] Devel::PartialDump [requires]
which I'm quite happy to install, yes, now namespace::clean would like
B::Hooks::EndOfScope [requires]
and why shouldn't it since MooseX::Method::Signatures itself did, but it'll need
Variable::Magic [requires]
which I thought I had installed already, but that must've been another machine. So now we're installing MooseX::Meta::TypeConstraint::ForceCoercion which couldn't live without
namespace::autoclean [requires]
which needs a newer version of
Class::MOP [requires]
which warns me that
*** This version of Class::MOP conflicts with the version of Moose (0.69) you have installed. You will need to upgrade Moose after installing this version of Class::MOP. ***
Yes, yes, fine fine. But, oh no, finally a test failure in the version 0.01 module MooseX::Meta::TypeConstraint::ForceCoercion. I'll try to get back to you after I analyze the Moose / Class::MOP stacktrace explosion, but in the meantime, yeah sure, put that in the core. Thanks. ^.^
It's much easier to add those features to the Perl parser than to shove it in sideways with Devel::Declare and other modules which hijack the compilation process. Several of those dependencies would go away.