Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Moose::Manual::Delta.3pm
diff --git a/local-lib5/man/man3/Moose::Manual::Delta.3pm b/local-lib5/man/man3/Moose::Manual::Delta.3pm
new file mode 100644 (file)
index 0000000..2a385f6
--- /dev/null
@@ -0,0 +1,635 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Moose::Manual::Delta 3"
+.TH Moose::Manual::Delta 3 "2009-10-24" "perl v5.8.7" "User Contributed Perl Documentation"
+.SH "NAME"
+Moose::Manual::Delta \- Important Changes in Moose
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This documents any important or noteworthy changes in Moose, with a
+focus on backwards. This does duplicate data from the \fIChanges\fR file,
+but aims to provide more details and when possible workarounds.
+.PP
+Besides helping keep up with changes, you can also use this document
+for finding the lowest version of Moose that supported a given
+feature.  If you encounter a problem and have a solution but don't see
+it documented here, or think we missed an important feature, please
+send us a patch.
+.SH "0.93"
+.IX Header "0.93"
+.ie n .IP "Calling $object\fR\->\fInew() is no longer deprecated" 4
+.el .IP "Calling \f(CW$object\fR\->\fInew()\fR is no longer deprecated" 4
+.IX Item "Calling $object->new() is no longer deprecated"
+We decided to undeprecate this. Now it just works.
+.SH "0.90"
+.IX Header "0.90"
+.IP "Added Native delegation for Code refs" 4
+.IX Item "Added Native delegation for Code refs"
+See Moose::Meta::Attribute::Native::Trait::Code for details.
+.ie n .IP "Calling $object\fR\->\fInew() is deprecated" 4
+.el .IP "Calling \f(CW$object\fR\->\fInew()\fR is deprecated" 4
+.IX Item "Calling $object->new() is deprecated"
+Moose has long supported this, but it's never really been documented, and we
+don't think this is a good practice. If you want to construct an object from
+an existing object, you should provide some sort of alternate constructor like
+\&\f(CW\*(C`$object\->clone\*(C'\fR.
+.Sp
+Calling \f(CW\*(C`$object\->new\*(C'\fR now issues a warning, and will be an error in a
+future release.
+.ie n .IP "Moose no longer warns if you call ""make_immutable"" for a class with mutable ancestors" 4
+.el .IP "Moose no longer warns if you call \f(CWmake_immutable\fR for a class with mutable ancestors" 4
+.IX Item "Moose no longer warns if you call make_immutable for a class with 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.
+.SH "Version 0.89_02"
+.IX Header "Version 0.89_02"
+.IP "New Native delegation methods from List::Util and List::MoreUtils" 4
+.IX Item "New Native delegation methods from List::Util and List::MoreUtils"
+In particular, we now have \f(CW\*(C`reduce\*(C'\fR, \f(CW\*(C`shuffle\*(C'\fR, \f(CW\*(C`uniq\*(C'\fR, and \f(CW\*(C`natatime\*(C'\fR.
+.IP "The Moose::Exporter with_caller feature is now deprecated" 4
+.IX Item "The Moose::Exporter with_caller feature is now deprecated"
+Use \f(CW\*(C`with_meta\*(C'\fR instead. The \f(CW\*(C`with_caller\*(C'\fR option will start warning in a
+future release.
+.ie n .IP "Moose now warns if you call ""make_immutable"" for a class with mutable ancestors" 4
+.el .IP "Moose now warns if you call \f(CWmake_immutable\fR for a class with mutable ancestors" 4
+.IX Item "Moose now warns if you call make_immutable for a class with mutable ancestors"
+This is dangerous because modifying a class after a subclass has been
+immutabilized will lead to incorrect results in the subclass, due to inlining,
+caching, etc. This occasionally happens accidentally, when a class loads one
+of its subclasses in the middle of its class definition, so pointing out that
+this may cause issues should be helpful. Metaclasses (classes that inherit
+from Class::MOP::Object) are currently exempt from this check, since at the
+moment we aren't very consistent about which metaclasses we immutabilize.
+.ie n .IP """enum""\fR and \f(CW""duck_type"" now take arrayrefs for all forms" 4
+.el .IP "\f(CWenum\fR and \f(CWduck_type\fR now take arrayrefs for all forms" 4
+.IX Item "enum and duck_type now take arrayrefs for all forms"
+Previously, calling these functions with a list would take the first element of
+the list as the type constraint name, and use the remainder as the enum values
+or method names. This makes the interface inconsistent with the anon-type forms
+of these functions (which must take an arrayref), and a free-form list where
+the first value is sometimes special is hard to validate (and harder to give
+reasonable error messages for). These functions have been changed to take
+arrayrefs in all their forms \- so, \f(CW\*(C`enum 'My::Type' => [qw(foo bar)]\*(C'\fR is
+now the preferred way to create an enum type constraint. The old syntax still
+works for now, but it will hopefully be deprecated and removed in a future
+release.
+.SH "Version 0.89_01"
+.IX Header "Version 0.89_01"
+Moose::Meta::Attribute::Native has been moved into the Moose core from
+MooseX::AttributeHelpers.  Major changes include:
+.ie n .IP """traits""\fR, not \f(CW""metaclass""" 4
+.el .IP "\f(CWtraits\fR, not \f(CWmetaclass\fR" 4
+.IX Item "traits, not metaclass"
+Method providers are only available via traits.
+.ie n .IP """handles""\fR, not \f(CW""provides""\fR or \f(CW""curries""" 4
+.el .IP "\f(CWhandles\fR, not \f(CWprovides\fR or \f(CWcurries\fR" 4
+.IX Item "handles, not provides or curries"
+The \f(CW\*(C`provides\*(C'\fR syntax was like core Moose \f(CW\*(C`handles => HASHREF\*(C'\fR
+syntax, but with the keys and values reversed.  This was confusing,
+and AttributeHelpers now uses \f(CW\*(C`handles => HASHREF\*(C'\fR in a way that
+should be intuitive to anyone already familiar with how it is used for
+other attributes.
+.Sp
+The \f(CW\*(C`curries\*(C'\fR functionality provided by AttributeHelpers has been
+generalized to apply to all cases of \f(CW\*(C`handles => HASHREF\*(C'\fR, though
+not every piece of functionality has been ported (currying with a
+\&\s-1CODEREF\s0 is not supported).
+.ie n .IP """empty""\fR is now \f(CW""is_empty"", and means empty, not non-empty" 4
+.el .IP "\f(CWempty\fR is now \f(CWis_empty\fR, and means empty, not non-empty" 4
+.IX Item "empty is now is_empty, and means empty, not non-empty"
+Previously, the \f(CW\*(C`empty\*(C'\fR method provided by Arrays and Hashes returned true if
+the attribute was \fBnot\fR empty (no elements).  Now it returns true if the
+attribute \fBis\fR empty. It was also renamed to \f(CW\*(C`is_empty\*(C'\fR, to reflect this.
+.ie n .IP """find""\fR was renamed to \f(CW""first""\fR, and \f(CW""first""\fR and \f(CW""last"" were removed" 4
+.el .IP "\f(CWfind\fR was renamed to \f(CWfirst\fR, and \f(CWfirst\fR and \f(CWlast\fR were removed" 4
+.IX Item "find was renamed to first, and first and last were removed"
+List::Util refers to the functionality that we used to provide under \f(CW\*(C`find\*(C'\fR
+as first, so that will likely be more familiar (and will
+fit in better if we decide to add more List::Util functions). \f(CW\*(C`first\*(C'\fR and
+\&\f(CW\*(C`last\*(C'\fR were removed, since their functionality is easily duplicated with
+curries of \f(CW\*(C`get\*(C'\fR.
+.ie n .IP "Helpers that take a coderef of one argument now use $_" 4
+.el .IP "Helpers that take a coderef of one argument now use \f(CW$_\fR" 4
+.IX Item "Helpers that take a coderef of one argument now use $_"
+Subroutines passed as the first argument to \f(CW\*(C`first\*(C'\fR, \f(CW\*(C`map\*(C'\fR, and \f(CW\*(C`grep\*(C'\fR now
+receive their argument in \f(CW$_\fR rather than as a parameter to the subroutine.
+Helpers that take a coderef of two or more arguments remain using the argument
+list (there are technical limitations to using \f(CW$a\fR and \f(CW$b\fR like \f(CW\*(C`sort\*(C'\fR
+does).
+.Sp
+See Moose::Meta::Attribute::Native for the new documentation.
+.PP
+The \f(CW\*(C`alias\*(C'\fR and \f(CW\*(C`excludes\*(C'\fR role parameters have been renamed to \f(CW\*(C`\-alias\*(C'\fR
+and \f(CW\*(C`\-excludes\*(C'\fR. The old names still work, but new code should use the new
+names, and eventually the old ones will be deprecated and removed.
+.SH "Version 0.89"
+.IX Header "Version 0.89"
+\&\f(CW\*(C`use Moose \-metaclass => 'Foo'\*(C'\fR now does alias resolution, just like
+\&\f(CW\*(C`\-traits\*(C'\fR (and the \f(CW\*(C`metaclass\*(C'\fR and \f(CW\*(C`traits\*(C'\fR options to \f(CW\*(C`has\*(C'\fR).
+.PP
+Added two functions \f(CW\*(C`meta_class_alias\*(C'\fR and \f(CW\*(C`meta_attribute_alias\*(C'\fR to
+Moose::Util, to simplify aliasing metaclasses and metatraits. This is
+a wrapper around the old
+.PP
+.Vb 2
+\&  package Moose::Meta::Class::Custom::Trait::FooTrait;
+\&  sub register_implementation { 'My::Meta::Trait' }
+.Ve
+.PP
+way of doing this.
+.SH "Version 0.84"
+.IX Header "Version 0.84"
+When an attribute generates \fIno\fR accessors, we now warn. This is to help
+users who forget the \f(CW\*(C`is\*(C'\fR option. If you really do not want any accessors,
+you can use \f(CW\*(C`is => 'bare'\*(C'\fR. You can maintain back compat with older
+versions of Moose by using something like:
+.PP
+.Vb 1
+\&    ($Moose::VERSION >= 0.84 ? is => 'bare' : ())
+.Ve
+.PP
+When an accessor overwrites an existing method, we now warn. To work around
+this warning (if you really must have this behavior), you can explicitly
+remove the method before creating it as an accessor:
+.PP
+.Vb 1
+\&    sub foo {}
+.Ve
+.PP
+.Vb 1
+\&    __PACKAGE__\->meta\->remove_method('foo');
+.Ve
+.PP
+.Vb 3
+\&    has foo => (
+\&        is => 'ro',
+\&    );
+.Ve
+.PP
+When an unknown option is passed to \f(CW\*(C`has\*(C'\fR, we now warn. You can silence
+the warning by fixing your code. :)
+.PP
+The \f(CW\*(C`Role\*(C'\fR type has been deprecated. On its own, it was useless,
+since it just checked \f(CW\*(C`$object\->can('does')\*(C'\fR. If you were using
+it as a parent type, just call \f(CW\*(C`role_type('Role::Name')\*(C'\fR to create an
+appropriate type instead.
+.SH "Version 0.78"
+.IX Header "Version 0.78"
+\&\f(CW\*(C`use Moose::Exporter;\*(C'\fR now imports \f(CW\*(C`strict\*(C'\fR and \f(CW\*(C`warnings\*(C'\fR into packages
+that use it.
+.SH "Version 0.77"
+.IX Header "Version 0.77"
+\&\f(CW\*(C`DEMOLISHALL\*(C'\fR and \f(CW\*(C`DEMOLISH\*(C'\fR now receive an argument indicating whether or
+not we are in global destruction.
+.SH "Version 0.76"
+.IX Header "Version 0.76"
+Type constraints no longer run coercions for a value that already matches the
+constraint.  This may affect some (arguably buggy) edge case coercions that
+rely on side effects in the \f(CW\*(C`via\*(C'\fR clause.
+.SH "Version 0.75"
+.IX Header "Version 0.75"
+Moose::Exporter now accepts the \f(CW\*(C`\-metaclass\*(C'\fR option for easily
+overriding the metaclass (without metaclass). This works for classes
+and roles.
+.SH "Version 0.74"
+.IX Header "Version 0.74"
+Added a \f(CW\*(C`duck_type\*(C'\fR sugar function to Moose::Util::TypeConstraints
+to make integration with non-Moose classes easier. It simply checks if
+\&\f(CW\*(C`$obj\->can()\*(C'\fR a list of methods.
+.PP
+A number of methods (mostly inherited from Class::MOP) have been
+renamed with a leading underscore to indicate their internal\-ness. The
+old method names will still work for a while, but will warn that the
+method has been renamed. In a few cases, the method will be removed
+entirely in the future. This may affect MooseX authors who were using
+these methods.
+.SH "Version 0.73"
+.IX Header "Version 0.73"
+Calling \f(CW\*(C`subtype\*(C'\fR with a name as the only argument now throws an
+exception. If you want an anonymous subtype do:
+.PP
+.Vb 1
+\&    my $subtype = subtype as 'Foo';
+.Ve
+.PP
+This is related to the changes in version 0.71_01.
+.PP
+The \f(CW\*(C`is_needed\*(C'\fR method in Moose::Meta::Method::Destructor is now
+only usable as a class method. Previously, it worked as a class or
+object method, with a different internal implementation for each
+version.
+.PP
+The internals of making a class immutable changed a lot in Class::MOP
+0.78_02, and Moose's internals have changed along with it. The
+external \f(CW\*(C`$metaclass\->make_immutable\*(C'\fR method still works the same
+way.
+.SH "Version 0.72"
+.IX Header "Version 0.72"
+A mutable class accepted \f(CW\*(C`Foo\->new(undef)\*(C'\fR without complaint,
+while an immutable class would blow up with an unhelpful error. Now,
+in both cases we throw a helpful error instead.
+.PP
+This \*(L"feature\*(R" was originally added to allow for cases such as this:
+.PP
+.Vb 1
+\&  my $args;
+.Ve
+.PP
+.Vb 3
+\&  if ( something() ) {
+\&      $args = {...};
+\&  }
+.Ve
+.PP
+.Vb 1
+\&  return My::Class\->new($args);
+.Ve
+.PP
+But we decided this is a bad idea and a little too magical, because it
+can easily mask real errors.
+.SH "Version 0.71_01"
+.IX Header "Version 0.71_01"
+Calling \f(CW\*(C`type\*(C'\fR or \f(CW\*(C`subtype\*(C'\fR without the sugar helpers (\f(CW\*(C`as\*(C'\fR,
+\&\f(CW\*(C`where\*(C'\fR, \f(CW\*(C`message\*(C'\fR) is now deprecated.
+.PP
+As a side effect, this meant we ended up using Perl prototypes on
+\&\f(CW\*(C`as\*(C'\fR, and code like this will no longer work:
+.PP
+.Vb 2
+\&  use Moose::Util::TypeConstraints;
+\&  use Declare::Constraints::Simple \-All;
+.Ve
+.PP
+.Vb 3
+\&  subtype 'ArrayOfInts'
+\&      => as 'ArrayRef'
+\&      => IsArrayRef(IsInt);
+.Ve
+.PP
+Instead it must be changed to this:
+.PP
+.Vb 6
+\&  subtype(
+\&      'ArrayOfInts' => {
+\&          as    => 'ArrayRef',
+\&          where => IsArrayRef(IsInt)
+\&      }
+\&  );
+.Ve
+.PP
+If you want to maintain backwards compat with older versions of Moose,
+you must explicitly test Moose's \f(CW\*(C`VERSION\*(C'\fR:
+.PP
+.Vb 13
+\&  if ( Moose\->VERSION < 0.71_01 ) {
+\&      subtype 'ArrayOfInts'
+\&          => as 'ArrayRef'
+\&          => IsArrayRef(IsInt);
+\&  }
+\&  else {
+\&      subtype(
+\&          'ArrayOfInts' => {
+\&              as    => 'ArrayRef',
+\&              where => IsArrayRef(IsInt)
+\&          }
+\&      );
+\&  }
+.Ve
+.SH "Version 0.70"
+.IX Header "Version 0.70"
+We no longer pass the meta-attribute object as a final argument to
+triggers. This actually changed for inlined code a while back, but the
+non-inlined version and the docs were still out of date.
+.PP
+If by some chance you actually used this feature, the workaround is
+simple. You fetch the attribute object from out of the \f(CW$self\fR
+that is passed as the first argument to trigger, like so:
+.PP
+.Vb 6
+\&  has 'foo' => (
+\&      is      => 'ro',
+\&      isa     => 'Any',
+\&      trigger => sub {
+\&          my ( $self, $value ) = @_;
+\&          my $attr = $self\->meta\->find_attribute_by_name('foo');
+.Ve
+.PP
+.Vb 3
+\&          # ...
+\&      }
+\&  );
+.Ve
+.SH "Version 0.66"
+.IX Header "Version 0.66"
+If you created a subtype and passed a parent that Moose didn't know
+about, it simply ignored the parent. Now it automatically creates the
+parent as a class type. This may not be what you want, but is less
+broken than before.
+.PP
+You could declare a name with subtype such as \*(L"Foo!Bar\*(R". Moose would
+accept this allowed, but if you used it in a parameterized type such
+as \*(L"ArrayRef[Foo!Bar]\*(R" it wouldn't work. We now do some vetting on
+names created via the sugar functions, so that they can only contain
+alphanumerics, \*(L":\*(R", and \*(L".\*(R".
+.SH "Version 0.65"
+.IX Header "Version 0.65"
+Methods created via an attribute can now fulfill a \f(CW\*(C`requires\*(C'\fR
+declaration for a role. Honestly we don't know why Stevan didn't make
+this work originally, he was just insane or something.
+.PP
+Stack traces from inlined code will now report the line and file as
+being in your class, as opposed to in Moose guts.
+.SH "Version 0.62_02"
+.IX Header "Version 0.62_02"
+When a class does not provide all of a role's required methods, the
+error thrown now mentions all of the missing methods, as opposed to
+just the first missing method.
+.PP
+Moose will no longer inline a constructor for your class unless it
+inherits its constructor from Moose::Object, and will warn when it
+doesn't inline. If you want to force inlining anyway, pass
+\&\f(CW\*(C`replace_constructor => 1\*(C'\fR to \f(CW\*(C`make_immutable\*(C'\fR.
+.PP
+If you want to get rid of the warning, pass \f(CW\*(C`inline_constructor =>
+0\*(C'\fR.
+.SH "Version 0.62"
+.IX Header "Version 0.62"
+Removed the (deprecated) \f(CW\*(C`make_immutable\*(C'\fR keyword.
+.PP
+Removing an attribute from a class now also removes delegation
+(\f(CW\*(C`handles\*(C'\fR) methods installed for that attribute. This is correct
+behavior, but if you were wrongly relying on it you might get bit.
+.SH "Version 0.58"
+.IX Header "Version 0.58"
+Roles now add methods by calling \f(CW\*(C`add_method\*(C'\fR, not
+\&\f(CW\*(C`alias_method\*(C'\fR. They make sure to always provide a method object,
+which will be cloned internally. This means that it is now possible to
+track the source of a method provided by a role, and even follow its
+history through intermediate roles.  This means that methods added by
+a role now show up when looking at a class's method list/map.
+.PP
+Parameter and Union args are now sorted, this makes Int|Str the same
+constraint as Str|Int. Also, incoming type constraint strings are
+normalized to remove all whitespace differences. This is mostly for
+internals and should not affect outside code.
+.PP
+Moose::Exporter will no longer remove a subroutine that the
+exporting package re\-exports. Moose re-exports the Carp::confess
+function, among others. The reasoning is that we cannot know whether
+you have also explicitly imported those functions for your own use, so
+we err on the safe side and always keep them.
+.SH "Version 0.56"
+.IX Header "Version 0.56"
+\&\f(CW\*(C`Moose::init_meta\*(C'\fR should now be called as a method.
+.PP
+New modules for extension writers, Moose::Exporter and
+Moose::Util::MetaRole.
+.SH "Version 0.55_01"
+.IX Header "Version 0.55_01"
+Implemented metaclass traits (and wrote a recipe for it):
+.PP
+.Vb 1
+\&  use Moose \-traits => 'Foo'
+.Ve
+.PP
+This should make writing small Moose extensions a little
+easier.
+.SH "Version 0.55"
+.IX Header "Version 0.55"
+Fixed \f(CW\*(C`coerce\*(C'\fR to accept anon types just like \f(CW\*(C`subtype\*(C'\fR can.
+So that you can do:
+.PP
+.Vb 1
+\&  coerce $some_anon_type => from 'Str' => via { ... };
+.Ve
+.SH "Version 0.51"
+.IX Header "Version 0.51"
+Added \f(CW\*(C`BUILDARGS\*(C'\fR, a new step in \f(CW\*(C`Moose::Object\->new()\*(C'\fR.
+.SH "Version 0.49"
+.IX Header "Version 0.49"
+Fixed how the \f(CW\*(C`is => (ro|rw)\*(C'\fR works with custom defined
+\&\f(CW\*(C`reader\*(C'\fR, \f(CW\*(C`writer\*(C'\fR and \f(CW\*(C`accessor\*(C'\fR options. See the below table for
+details:
+.PP
+.Vb 4
+\&  is => ro, writer => _foo    # turns into (reader => foo, writer => _foo)
+\&  is => rw, writer => _foo    # turns into (reader => foo, writer => _foo)
+\&  is => rw, accessor => _foo  # turns into (accessor => _foo)
+\&  is => ro, accessor => _foo  # error, accesor is rw
+.Ve
+.SH "Version 0.45"
+.IX Header "Version 0.45"
+The \f(CW\*(C`before/around/after\*(C'\fR method modifiers now support regexp
+matching of method names. \s-1NOTE:\s0 this only works for classes, it is
+currently not supported in roles, but, ... patches welcome.
+.PP
+The \f(CW\*(C`has\*(C'\fR keyword for roles now accepts the same array ref form that
+Moose.pm does for classes.
+.PP
+A trigger on a read-only attribute is no longer an error, as it's
+useful to trigger off of the constructor.
+.PP
+Subtypes of parameterizable types now are parameterizable types
+themselves.
+.SH "Version 0.44"
+.IX Header "Version 0.44"
+Fixed issue where \f(CW\*(C`DEMOLISHALL\*(C'\fR was eating the value in \f(CW$@\fR, and so
+not working correctly. It still kind of eats them, but so does vanilla
+perl.
+.SH "Version 0.41"
+.IX Header "Version 0.41"
+Inherited attributes may now be extended without restriction on the
+type ('isa', 'does').
+.PP
+The entire set of Moose::Meta::TypeConstraint::* classes were
+refactored in this release. If you were relying on their internals you
+should test your code carefully.
+.SH "Version 0.40"
+.IX Header "Version 0.40"
+Documenting the use of '+name' with attributes that come from recently
+composed roles. It makes sense, people are using it, and so why not
+just officially support it.
+.PP
+The \f(CW\*(C`Moose::Meta::Class\->create\*(C'\fR method now supports roles.
+.PP
+It is now possible to make anonymous enum types by passing \f(CW\*(C`enum\*(C'\fR an
+array reference instead of the \f(CW\*(C`enum $name => @values\*(C'\fR.
+.SH "Version 0.37"
+.IX Header "Version 0.37"
+Added the \f(CW\*(C`make_immutable\*(C'\fR keyword as a shortcut to calling
+\&\f(CW\*(C`make_immutable\*(C'\fR on the meta object. This eventually got removed!
+.PP
+Made \f(CW\*(C`init_arg => undef\*(C'\fR work in Moose. This means \*(L"do not accept
+a constructor parameter for this attribute\*(R".
+.PP
+Type errors now use the provided message. Prior to this release they
+didn't.
+.SH "Version 0.34"
+.IX Header "Version 0.34"
+Moose is now a postmodern object system :)
+.PP
+The Role system was completely refactored. It is 100% backwards
+compat, but the internals were totally changed. If you relied on the
+internals then you are advised to test carefully.
+.PP
+Added method exclusion and aliasing for Roles in this release.
+.PP
+Added the Moose::Util::TypeConstraints::OptimizedConstraints
+module.
+.PP
+Passing a list of values to an accessor (which is only expecting one
+value) used to be silently ignored, now it throws an error.
+.SH "Version 0.26"
+.IX Header "Version 0.26"
+Added parameterized types and did a pretty heavy refactoring of the
+type constraint system.
+.PP
+Better framework extendability and better support for \*(L"making your own
+Moose\*(R".
+.SH "Version 0.25 or before"
+.IX Header "Version 0.25 or before"
+Honestly, you shouldn't be using versions of Moose that are this old,
+so many bug fixes and speed improvements have been made you would be
+crazy to not upgrade.
+.PP
+Also, I am tired of going through the Changelog so I am stopping here,
+if anyone would like to continue this please feel free.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Stevan Little <stevan@iinteractive.com>
+.SH "COPYRIGHT AND LICENSE"
+.IX Header "COPYRIGHT AND LICENSE"
+Copyright 2009 by Infinity Interactive, Inc.
+.PP
+<http://www.iinteractive.com>
+.PP
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.