Changes for version 0.90

  • Moose::Meta::Attribute::Native::Trait::Counter
  • Moose::Meta::Attribute::Native::Trait::String
    • For these two traits, an attribute which did not explicitly provide methods to handles magically ended up delegating *all* the helper methods. This has been removed. You must be explicit in your handles declaration for all Native Traits. (Dave Rolsky)
  • Moose::Object
    • DEMOLISHALL behavior has changed. If any DEMOLISH method dies, we make sure to rethrow its error message. However, we also localize $@ before this so that if all the DEMOLISH methods success, the value of $@ will be preserved. (nothingmuch and Dave Rolsky)
    • We now also localize $? during object destruction. (nothingmuch and Dave Rolsky)
    • The handling of DEMOLISH methods was broken for immutablized classes, which were not receiving the value of Devel::GlobalDestruction::in_global_destruction.
    • These two fixes address some of RT #48271, reported by Zefram.
    • This is all now documented in Moose::Manual::Construction.
    • Calling $object->new() is now deprecated. A warning will be issued. (perigrin)
  • Moose::Meta::Role
    • Added more hooks to customize how roles are applied. The role summation class, used to create composite roles, can now be changed and/or have meta-roles applied to it. (rafl)
  • Moose::Meta::Method::Delegation
    • fixed delegated methods to make sure that any modifiers attached to the accessor being delegated on will be called (Stevan)
      • added tests for this (Stevan)
  • Moose::Meta::Class
    • Moose no longer warns when a class that is being made immutable has mutable ancestors. While in theory this is a good thing to warn about, we found so many exceptions to this that doing this properly became quite problematic.

Changes for version 0.89_02

  • Moose::Meta::Attribute::Native
    • Fix Hash, which still had 'empty' instead of 'is_empty'. (hdp)
  • Moose::Meta::Attribute::Native::Trait::Array
    • Added a number of functions from List::Util and List::MoreUtils, including reduce, shuffle, uniq, and natatime. (doy)
  • Moose::Exporter
    • This module will now generate an init_meta method for your exporting class if you pass it options for Moose::Util::MetaRole::apply_metaclass_roles or apply_base_class_roles. This eliminates a lot of repetitive boilerplate for typical MooseX modules. (doy).
    • Documented the with_meta feature, which is a replacement for with_caller. This feature was added by josh a while ago.
    • The with_caller feature is now deprecated, but will not issue a warning yet. (Dave Rolsky)
    • If you try to wrap/export a subroutine which doesn't actually exist, Moose::Exporter will warn you about this. (doy)
  • Moose::Meta::Role::Application::ToRole
    • When a role aliased a method from another role, it was only getting the new (aliased) name, not the original name. This differed from what happens when a class aliases a role's methods. If you _only_ want the aliased name, make sure to also exclue the original name. (Dave Rolsky)

Changes for version 0.89_01

  • Moose::Meta::Attribute
    • Added the currying syntax for delegation from AttributeHelpers to the existing delegation API. (hdp)
  • Moose::Meta::Attribute::Native
    • We have merged the functionality of MooseX::AttributeHelpers into the Moose core with some API tweaks. You can continue to use MooseX::AttributeHelpers, but it will not be maintained except (perhaps) for critical bug fixes in the future. See Moose::Manual::Delta for details. (hdp, jhannah, rbuels, Sartak, perigrin, doy)
  • Moose::Error::Croak
  • Moose::Error::Confess
    • Clarify documentation on how to use different error-throwing modules. (Curtis Jewell)
  • Moose
    • Correct POD for builder to point to Recipe8, not 9. (gphat)
  • Moose::Exporter
    • When a nonexistent sub name is passed to as_is, with_caller, or with_meta, throw a warning and skip the exporting, rather than installing a broken sub. (doy)
  • Moose::Meta::Class
    • Moose now warns if you call C<make_immutable> for a class with mutable ancestors. (doy)

Documentation

How to cook a Moose
The (always classic) Point example.
Using BUILDARGS and BUILD to hook into object construction
Extending a non-Moose base class
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
Operator overloading, subtypes, and coercion
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
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
A method metaclass for marking methods public or private
Creating a glob reference meta-instance class
The Moose::Role example
Advanced Role Composition - method exclusion and aliasing
Applying a role to an object instance
Restricted "keywords" in Moose
Snippets of code for using Types and Type Constraints
Expanded into Moose::Manual::BestPractices, so go read that
Expanded into Moose::Manual, so go read that
What is Moose, and how do I use it?
Object attributes with Moose
Get the most out of Moose
Making your classes use Moose (and subclassing)
Moose OO concepts
Object construction (and destruction) with Moose
How to get involved in Moose
Attribute delegation
Important Changes in Moose
Frequently asked questions about Moose
The Moose (and Class::MOP) meta API
Moose's method modifiers
Recommended Moose extensions
Roles, an alternative to deep hierarchies and base classes
Moose's type system
Moose idioms in plain old Perl 5 without the sugar
Formal spec for Role behavior
Moved to Moose::Manual::Unsweetened, so go read that

Modules

A postmodern object system for Perl 5
Prefer confess
Prefer croak
Carp based error generation for Moose.
make an import() and unimport() just like Moose.pm
The Moose attribute metaclass
Extend your attribute interfaces
Helper trait for ArrayRef attributes
Helper trait for Bool attributes
Helper trait for HashRef attributes
Helper trait for Num attributes
Helper trait for Str attributes
The Moose metaclass
Implements immutability for metaclass objects
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
A Moose Method metaclass for delegation methods
Method Meta Object for destructors
A Moose Method metaclass for overridden 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 conflicting methods in 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 duck typing
Type constraint for enumerated values.
Type constraints which can take a parameter (ArrayRef)
Type constraints with a bound parameter (ArrayRef[Int])
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