Changes for version 0.26

  • New Features ==
  • Parameterized Types We now support parameterized collection types, such as: ArrayRef[Int] # array or integers HashRef[Object] # a hash with object values They can also be nested: ArrayRef[HashRef[RegExpr]] # an array of hashes with regexpr values And work with the type unions as well: ArrayRef[Int | Str] # array of integers of strings
  • Better Framework Extendability Moose.pm is now "extendable" such that it is now much easier to extend the framework and add your own keywords and customizations. See the "EXTENDING AND EMBEDDING MOOSE" section of the Moose.pm docs.
  • Moose Snacks! In an effort to begin documenting some of the various details of Moose as well as some common idioms, we have created Moose::Cookbook::Snacks as a place to find small (easily digestable) nuggets of Moose code.
  • ~ Several doc updates/cleanup thanks to castaway ~
  • converted build system to use Module::Install instead of Module::Build (thanks to jrockway)
  • Moose
    • added all the meta classes to the immutable list and set it to inline the accessors
    • fix import to allow Sub::Exporter like { into => } and { into_level => } (perigrin)
    • exposed and documented init_meta() to allow better embedding and extending of Moose (perigrin)
      • t/
        • complete re-organization of the test suite
        • added some new tests as well
        • finally re-enabled the Moose::POOP test since the new version of DBM::Deep now works again (thanks rob)
  • Moose::Meta::Class
    • fixed very odd and very nasty recursion bug with inner/augment (mst)
      • added tests for this (eilara)
  • Moose::Meta::Attribute Moose::Meta::Method::Constructor Moose::Meta::Method::Accessor
    • fixed issue with overload::Overloaded getting called on non-blessed items. (RT #29269)
      • added tests for this
  • Moose::Meta::Method::Accessor
    • fixed issue with generated accessor code making assumptions about hash based classes (thanks to dexter)
  • Moose::Coookbook::Snacks
    • these are bits of documentation, not quite as big as Recipes but which have no clear place in the module docs. So they are Snacks! (horray for castaway++)
  • Moose::Cookbook::Recipe4
    • updated it to use the new ArrayRef[MyType] construct
      • updated the accompanying test as well
  • Major Refactor of the Type Constraint system +++
  • with new features added as well +++
  • Moose::Util::TypeConstraint
    • no longer uses package variable to keep track of the type constraints, now uses the an instance of Moose::Meta::TypeConstraint::Registry to do it
    • added more sophisticated type notation parsing (thanks to mugwump)
      • added tests for this
  • Moose::Meta::TypeConstraint
    • some minor adjustments to make subclassing easier
    • added the package_defined_in attribute so that we can track where the type constraints are created
  • Moose::Meta::TypeConstraint::Union
    • this is now been refactored to be a subclass of Moose::Meta::TypeConstraint
  • Moose::Meta::TypeCoercion::Union
    • this has been added to service the newly refactored Moose::Meta::TypeConstraint::Union and is itself a subclass of Moose::Meta::TypeCoercion
  • Moose::Meta::TypeConstraint::Parameterized
    • added this module (taken from MooseX::AttributeHelpers) to help construct nested collection types
      • added tests for this
  • Moose::Meta::TypeConstraint::Registry
    • added this class to keep track of type constraints

Documentation

How to cook a Moose
Frequently asked questions about Moose
The (always classic) Point example.
A simple BankAccount example
A lazy BinaryTree example
Subtypes, and modeling a simple Company class hierarchy
More subtypes, coercion in a Request class
The Moose::Role example
The augment/inner example
Snippets of code for using Types and Type Constraints
For when things go wrong with Moose
Formal spec for Role behavior

Modules

A complete modern object system for Perl 5
The Moose attribute metaclass
The Moose metaclass
The Moose Instance metaclass
A Moose Method metaclass
A Moose Method metaclass for accessors
Method Meta Object for constructors
Method Meta Object for destructors
A Moose Method metaclass for overriden methods
The Moose Role metaclass
A Moose Method metaclass for Roles
A Moose metaclass for required methods in Roles
The Moose Type Coercion metaclass
The Moose Type Coercion metaclass for Unions
The Moose Type Constraint metaclass
Higher Order type constraints for Moose
A union of Moose type constraints
The base object for Moose
The Moose Role
Utilities for working with Moose classes
Type constraint system for Moose
Test functions for Moose specific features