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

Changes for version 0.56

  • For those not following the series of dev releases, there are several major changes in this release of Moose. ! Moose::init_meta should now be called as a method. See the docs for details.
    • Major performance improvements by nothingmuch.
    • New modules for extension writers, Moose::Exporter and Moose::Util::MetaRole by Dave Rolsky.
    • Lots of doc improvements and additions, especially in the cookbook sections.
    • Various bug fixes.
  • Removed all references to the experimental-but-no-longer-needed Moose::Meta::Role::Application::ToMetaclassInstance.
  • Require Class::MOP 0.65.

Changes for version 0.55_04

  • Moose::Util::MetaRole
  • Moose::Cookbook::Extending::Recipe2
    • This simplifies the application of roles to any meta class, as well as the base object class. Reimplemented metaclass traits using this module. (Dave Rolsky)
  • Moose::Cookbook::Extending::Recipe1
    • This a new recipe, an overview of various ways to write Moose extensions (Dave Rolsky)
  • Moose::Cookbook::Extending::Recipe3
  • Moose::Cookbook::Extending::Recipe4
    • These used to be Extending::Recipe1 and Extending::Recipe2, respectively.

Changes for version 0.55_03

  • No changes from 0.55_02 except increasing the Class::MOP dependency to 0.64_07.

Changes for version 0.55_02

  • Makefile.PL and Moose.pm
    • explicitly require Perl 5.8.0+ (Dave Rolsky)
  • Moose::Util::TypeConstraints
    • Fix warnings from find_type_constraint if the type is not found (t0m).
  • Moose::Meta::TypeConstraint
    • Predicate methods (equals/is_a_type_of/is_subtype_of) now return false if the type you specify cannot be found in the type registry, rather than throwing an unhelpful and coincidental exception. (t0m).
      • added docs & test for this (t0m)
  • Moose::Meta::TypeConstraint::Registry
    • add_type_constraint now throws an exception if a parameter is not supplied (t0m).
      • added docs & test for this (t0m)
  • Moose::Cookbook::FAQ
    • Added a faq entry on the difference between "role" and "trait" (t0m)
  • Moose::Meta::Role
    • Fixed a bug that caused role composition to not see a required method when that method was provided by another role being composed at the same time. (Dave Rolsky)
      • test and bug finding (tokuhirom)

Changes for version 0.55_01

  • !! Calling Moose::init_meta as a function is now !! !! deprecated. Please see the Moose.pm docs for details. !!
  • Moose::Meta::Method::Constructor
    • Fix inlined constructor so that values produced by default or builder methods are coerced as required. (t0m)
      • added test for this (t0m)
  • Moose::Meta::Attribute
    • A lazy attribute with a default or builder did not attempt to coerce the default value. The immutable code _did_ coerce. (t0m)
      • added test for this (t0m)
  • Moose::Exporter
    • This is a new helper module for writing "Moose-alike" modules. This should make the lives of MooseX module authors much easier. (Dave Rolsky)
  • Moose
  • Moose::Cookbook::Meta::Recipe5
    • Implemented metaclass traits (and wrote a recipe for it):
      • use Moose -traits => 'Foo'
      • This should make writing small Moose extensions a little easier (Dave Rolsky)
  • Moose::Cookbook::Basics::Recipe1
    • Removed any examples of direct hashref access, and applied an editorial axe to reduce verbosity. (Dave Rolsky)
  • Moose::Cookbook::Basics::Recipe1
    • Also applied an editorial axe here. (Dave Rolsky)
  • Moose
  • Moose::Cookbook::Extending::Recipe1
  • Moose::Cookbook::Extending::Recipe2
    • Rewrote extending and embedding moose documentation and recipes to use Moose::Exporter (Dave Rolsky)
  • Moose
  • Moose::Role
    • These two modules now warn when you load them from the main package "main" package, because we will not export sugar to main. Previously it just did nothing. (Dave Rolsky)
  • Moose::Role
    • Now provide an init_meta method just like Moose.pm, and you can call this to provide an alternate role metaclass. (Dave Rolsky and nothingmuch)
    • get_method_map now respects the package cache flag (nothingmuch)
  • Moose::Meta::Role
    • Two new methods - add_method and wrap_method_body (nothingmuch)
  • many modules
    • Optimizations including allowing constructors to accept hash refs, making many more classes immutable, and making constructors immutable. (nothingmuch)

Documentation

How to cook a Moose
The (always classic) Point example.
Operator overloading, subtypes, and coercion
A simple BankAccount example
A lazy BinaryTree example
Subtypes, and modeling a simple Company class hierarchy
More subtypes, coercion in a Request class
The augment/inner example
Making Moose fast with immutable
Builder methods and lazy_build
Moose extension overview
Providing a role for the base object class
Providing an alternate base object class
Acting like Moose.pm and providing sugar Moose-style
Frequently asked questions about Moose
Welcome to the meta world (Why Go Meta?)
A meta-attribute, attributes with labels
Labels implemented via attribute traits
Adding a "table" attribute to the metaclass
The "table" attribute as a metaclass trait
The Moose::Role example
Advanced Role Composition - method exclusion and aliasing
Restricted keywords in Moose
Snippets of code for using Types and Type Constraints
The latest in trendy Moose cuisine
For when things go wrong with Moose
Formal spec for Role behavior

Modules

A postmodern object system for Perl 5
make an import() and unimport() just like Moose.pm
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
Apply roles to any metaclass, as well as the object base class
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

Provides

in lib/Moose/Meta/Attribute.pm