Planet Moose - December 2013
Happy new year, and 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.
Perl Advent Calendar
There were a handful of Moose/Moo-related articles in the 2013 Perl Advent Calendar:
- Toystore Story covers MooseX::Storage and GitStore.
- Advent-based Programming... oops Event-based programming... using Moo and Beam::Emitter.
- More Moose, More Discipline covers type constraints and MooseX::StrictConstructor.
- Throw Now, Describe Later discusses some extensions to Throwable, the exception role commonly used by Moose- and Moo-based projects.
Moo 1.4.0 (a.k.a. 1.004000), and 1.4.1, and 1.4.2 have been released, with a variety of interesting changes over the 1.3.x line, including:
- It now uses Class::XSAccessor to accelerate predicate methods. (As does MooseX::XSAccessor.)
- strictures is now properly applied to classes and roles using Moo. (This was always documented as happening, but it broke somewhere along the lines and nobody noticed for a while.)
- Type constraint inflation (i.e. the process where type libraries written for Moo can integrate with the Moose meta object protocol if/when Moose gets loaded) now works in multi-threaded situations.
The type constraint changes in 1.4.0 and 1.4.1 broke current stable releases of Type::Tiny on threaded builds of Perl, but 1.4.2 fixes this. (And Type::Tiny 0.037_03 also includes a fix, and should work OK with Moo 1.4.0 and 1.4.1.)
In other news...
- Buddy Burden has been writing a series Perl and Me which discusses Moose a bit. Part 1, part 2, part 3, and part 4.
- Celogeek points out an important caveat using Moo::Role.
- I've released a new version of Lexical::Accessor (which provides private attributes for Moo/Mouse/Moose objects), and integrated it into Moops. There's an example of it being used in the Moops tutorial.