Meta-Meta-Meta Problem Solving

OK, so I'm working on a project and some unexpected bug crops up. It turns out to be a bug in a dependency. I could work around it, but...

I happen to maintain the dependency, so better to fix it at source. Done. Let's set up Travis testing for this dependency too...

Oh no, build fails. Test::Modern won't install on all the versions of Perl I'd hoped it would. (In particular, Perl 5.6.) Why? Turns out some of Test::Modern's dependencies use Module::Build and Module::Build::Tiny, and they require Perl 5.8.

So let's try out Ingy's Alt concept and release alternative distributions of these dependencies which will install cleanly on Perl 5.6. Hence Alt::Test::Warnings::ButEUMM (which led to this) and Alt::Module::Runtime::ButEUMM.

Because Sometimes Lightspeed is Too Slow

Spaceballs: Lightspeed is too slow. We'll have to go right to ludicrous speed.

I've pushed Type::Tiny 0.045_03 to CPAN this afternoon. Initial results from CPAN testers seem promising, but if you've got a distribution that uses Type::Tiny it might be worth trying it out with the new version to see if anything breaks. (I don't think anything should!)

The big change in this release is that it adds support for an optional XS backend, which massively boosts the speed of many type constraint checks — especially parameterized types like ArrayRef[InstanceOf["HTTP::Response"]]. The XS backend is a fork of Mouse's type constraints, and needs to be installed separately. It's called Type::Tiny::XS. (OK; not a very creative name.)

Planet Moose - June 2014

Welcome to Planet Moose, a brief write up on what's been happening in the world of Moose in the past month, for the benefit of those of you who don't have their eyes permanently glued to the #moose IRC channel, or the MetaCPAN recent uploads page.

If you'd like to contribute some news for next month's issue, you can do so on the wiki.

Moose

Moose 2.1208 and 2.1209 have been released containing some minor bugfixes.

Planet Moose - May 2014

Welcome to Planet Moose, a brief write up on what's been happening in the world of Moose in the past month, for the benefit of those of you who don't have their eyes permanently glued to the #moose IRC channel, or the MetaCPAN recent uploads page.

If you'd like to contribute some news for next month's issue, you can do so on the wiki.

Moose

Moose 2.1206 and 2.1207 have been released; they don't contain any jaw-dropping new features. If you're running an earlier 2.12xx release, you should probably upgrade for bugfixyness, and you shouldn't have to deal with your code breaking because of Moose changes.

Enumerations in Moose

It's quite a common pattern in object-oriented programming to have an attribute which takes a string as its value, but which only has a small number of valid values. For example:

 package Shirt;
 use Moose;
 
 # "S", "M", "L", or "XL"
 has size => (is => 'ro', isa => 'Str', required => 1);

This offers no protection against invalid string values.

 # No exception is thrown
 my $shirt = Shirt->new(size => "LX");