The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.41

  • ~~ numerous documentation updates ~~
  • Changed all usage of die to Carp::croak for better error reporting (initial patch by Tod Hagan)
  • IMPORTANT NOTE **
  • the make_immutable keyword is now deprecated, don't use it in any new code and please fix your old code as well. There will be 2 releases, and then it will be removed.
  • Moose Moose::Role Moose::Meta::Class
    • refactored the way inner and super work to avoid any method/@ISA cache penalty (nothingmuch)
  • Moose::Meta::Class
    • fixing &new_object to make sure trigger gets the coerced value (spotted by Charles Alderman on the mailing list)
      • added test for this
  • Moose::Meta::Method::Constructor
    • immutable classes which had non-lazy attributes were calling the default generating sub twice in the constructor. (bug found by Jesse Luehrs, fixed by Dave Rolsky)
      • added tests for this (Dave Rolsky)
    • fix typo in initialize_body method (nothingmuch)
  • Moose::Meta::Method::Destructor
    • fix typo in initialize_body method (nothingmuch)
  • Moose::Meta::Method::Overriden Moose::Meta::Method::Augmented
    • moved the logic for these into their own classes (nothingmuch)
  • Moose::Meta::Attribute
    • inherited attributes may now be extended without restriction on the type ('isa', 'does') (Sartak)
      • added tests for this (Sartak)
    • when an attribute property is malformed (such as lazy without a default), give the name of the attribute in the error message (Sartak)
    • added the &applied_traits and &has_applied_traits methods to allow introspection of traits
      • added tests for this
    • moved 'trait' and 'metaclass' argument handling to here from Moose::Meta::Class
    • clone_and_inherit_options now handles 'trait' and 'metaclass' (has '+foo' syntax) (nothingmuch)
      • added tests for this (t0m)
  • Moose::Object
    • localize $@ inside DEMOLISHALL to avoid it eating $@ (found by Ernesto)
      • added test for this (thanks to Ernesto)
  • Moose::Util::TypeConstraints
    • &find_type_constraint now DWIMs when given an type constraint object or name (nothingmuch)
    • &find_or_create_type_constraint superseded with a number of more specific functions:
      • find_or_create_{isa,does}_type_constraint
      • find_or_parse_type_constraint
  • Moose::Meta::TypeConstraint Moose::Meta::TypeConstraint::Class Moose::Meta::TypeConstraint::Role Moose::Meta::TypeConstraint::Enum Moose::Meta::TypeConstraint::Union Moose::Meta::TypeConstraint::Parameterized
    • added the &equals method for comparing two type constraints (nothingmuch)
      • added tests for this (nothingmuch)
  • Moose::Meta::TypeConstraint
    • add the &parents method, which is just an alias to &parent. Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
  • Moose::Meta::TypeConstraint::Class
    • added the class attribute for introspection purposes (nothingmuch)
      • added tests for this
  • Moose::Meta::TypeConstraint::Enum Moose::Meta::TypeConstraint::Role
    • broke these out into their own classes (nothingmuch)
  • Moose::Cookbook::Recipe*
    • fixed references to test file locations in the POD and updated up some text for new Moose features (Sartak)
  • Moose::Util
    • Added &resolve_metaclass_alias, a helper function for finding an actual class for a short name (e.g. in the traits list)

Documentation

How to cook a Moose
Frequently asked questions about Moose
The (always classic) Point example.
The Moose::Role example
A simple BankAccount example
The meta-attribute example
A lazy BinaryTree example
Subtypes, and modeling a simple Company class hierarchy
More subtypes, coercion in a Request class
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 postmodern 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
A Moose Method metaclass for augmented methods
Method Meta Object for constructors
Method Meta Object for destructors
A Moose Method metaclass for overriden methods
The Moose Role metaclass
A base class for role application
Compose a role into a class
Compose a role into an instance
Compose a role into another role
An object to represent the set of roles
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
Class/TypeConstraint parallel hierarchy
Type constraint for enumerated values.
Higher Order type constraints for Moose
Higher Order type constraints for Moose
registry for type constraints
Role/TypeConstraint parallel hierarchy
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
Optimized constraint bodies for various moose types
Test functions for Moose specific features
syntactic sugar to make Moose one-liners easier