Changes for version 1.16

  • ENHANCEMENTS
    • Almost every native delegation method which changes the attribute value now has an explicitly documented return value. In general, this return value matches what Perl would return for the same operation. (Dave Rolsky)
    • Lots of work on native delegation documentation, including documenting what arguments each native delegation method allows or requires. (Dave Rolsky)
    • Passing an odd number of args to ->new() now gives a more useful warning than Perl's builtin warning. Suggested by Sir Robert Burbridge. (Dave Rolsky)
    • Allow disabling stack traces by setting an environment variable. See Moose::Error::Default for details. This feature is considered experimental, and may change in a future release. (Marcus Ramberg)
    • The deprecation warning for using alias and excludes without a leading dash now tells you the role being applied and what it was being applied to. (mst).
  • BUG FIXES
    • A number of native trait methods which expected strings as arguments did not allow the empty string. This included Array->join, String->match, String->replace, and String->substr. Reported by Whitney Jackson. RT #61962. (Dave Rolsky)
    • 'no Moose' no longer inadvertently removes imports it didn't create itself. RT #60013. (Florian Ragwitz, doy)
    • Roles now support passing an array reference of method names to method modifier sugar functions. (doy)
    • Native traits no longer use optimized inlining routines if the instance requests it (in particular, if inline_get_slot_value doesn't return something that can be assigned to). This should fix issues with KiokuDB::Class. (doy)
    • We now ignore all Class::MOP and Moose classes when determining what package called a deprecated feature. This should make the deprecation warnings saner, and make it possible to turn them off more easily. (Dave Rolsky)
    • The deprecated "default is" warning no longer happens if the attribute has any accessor method defined (accessor, reader, writer). Also, this warning only happens when a method that was generated because of the "default is" gets called, rather than when the attribute is defined. (Dave Rolsky)
    • The "default default" code for some native delegations no longer issues a deprecation warning when the attribute is required or has a builder. (Dave Rolsky)
    • Setting a "default default" caused a fatal error if you used the builder or lazy_build options for the attribute. Reported by Kent Fredric. RT #59613. (Dave Rolsky)

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
Policies regarding support, releases, and compatibility.
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
Manages deprecation warnings for Moose
Prefer confess
Prefer croak
Carp based error generation for Moose.
make an import() and unimport() just like Moose.pm
The Moose attribute metaclass
Delegate to native Perl types
Shared role for native delegation traits
Helper trait for array delegation
Helper trait for Bool attributes
Helper trait for Code 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 meta methods
A Moose Method metaclass for overridden methods
Core attributes shared by attribute metaclasses
Some overrides for Class::MOP::Object functionality
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
A Moose Attribute metaclass for Roles
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
in lib/Moose/Meta/Method/Accessor/Native.pm
in lib/Moose/Meta/Method/Accessor/Native/Array.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/Writer.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/accessor.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/clear.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/count.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/delete.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/elements.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/first.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/get.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/grep.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/insert.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/is_empty.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/join.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/map.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/natatime.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/pop.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/push.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/reduce.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/set.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/shift.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/shuffle.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/sort.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/sort_in_place.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/splice.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/uniq.pm
in lib/Moose/Meta/Method/Accessor/Native/Array/unshift.pm
in lib/Moose/Meta/Method/Accessor/Native/Bool/not.pm
in lib/Moose/Meta/Method/Accessor/Native/Bool/set.pm
in lib/Moose/Meta/Method/Accessor/Native/Bool/toggle.pm
in lib/Moose/Meta/Method/Accessor/Native/Bool/unset.pm
in lib/Moose/Meta/Method/Accessor/Native/Code/execute.pm
in lib/Moose/Meta/Method/Accessor/Native/Code/execute_method.pm
in lib/Moose/Meta/Method/Accessor/Native/Collection.pm
in lib/Moose/Meta/Method/Accessor/Native/Counter/Writer.pm
in lib/Moose/Meta/Method/Accessor/Native/Counter/dec.pm
in lib/Moose/Meta/Method/Accessor/Native/Counter/inc.pm
in lib/Moose/Meta/Method/Accessor/Native/Counter/reset.pm
in lib/Moose/Meta/Method/Accessor/Native/Counter/set.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/Writer.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/clear.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/count.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/defined.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/elements.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/exists.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/get.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/is_empty.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/keys.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/kv.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/set.pm
in lib/Moose/Meta/Method/Accessor/Native/Hash/values.pm
in lib/Moose/Meta/Method/Accessor/Native/Number/abs.pm
in lib/Moose/Meta/Method/Accessor/Native/Number/add.pm
in lib/Moose/Meta/Method/Accessor/Native/Number/div.pm
in lib/Moose/Meta/Method/Accessor/Native/Number/mod.pm
in lib/Moose/Meta/Method/Accessor/Native/Number/mul.pm
in lib/Moose/Meta/Method/Accessor/Native/Number/set.pm
in lib/Moose/Meta/Method/Accessor/Native/Number/sub.pm
in lib/Moose/Meta/Method/Accessor/Native/Reader.pm
in lib/Moose/Meta/Method/Accessor/Native/String/append.pm
in lib/Moose/Meta/Method/Accessor/Native/String/chomp.pm
in lib/Moose/Meta/Method/Accessor/Native/String/chop.pm
in lib/Moose/Meta/Method/Accessor/Native/String/clear.pm
in lib/Moose/Meta/Method/Accessor/Native/String/inc.pm
in lib/Moose/Meta/Method/Accessor/Native/String/length.pm
in lib/Moose/Meta/Method/Accessor/Native/String/match.pm
in lib/Moose/Meta/Method/Accessor/Native/String/prepend.pm
in lib/Moose/Meta/Method/Accessor/Native/String/replace.pm
in lib/Moose/Meta/Method/Accessor/Native/String/substr.pm
in lib/Moose/Meta/Method/Accessor/Native/Writer.pm