Remove MooseX::MultiObject - it has a test dep on Class::API, which does not exist...
[gitmo/Moose.git] / Changes
1 Also see Moose::Manual::Delta for more details of, and workarounds
2 for, noteworthy changes.
3
4 {{$NEXT}}
5
6   [BUG FIXES]
7
8   * Revert the List::MoreUtils version bump, as it breaks backwards
9     compatibility. The dependency will be bumped with Moose 2.0200.
10
11 2.0005 Mon, May 09, 2011
12
13   [BUG FIXES]
14
15   * Only sort the alias keys when determining caching.
16
17 2.0004 Mon, May 09, 2011
18
19   [BUG FIXES]
20
21   * Bump the List::MoreUtils dep to avoid buggy behavior in old versions.
22
23   * Sort the list of roles and the alias and excludes parameters when
24     determining caching, since their order doesn't matter.
25
26 2.0003 Mon, May 09, 2011
27
28   [BUG FIXES]
29
30   * Applying multiple role objects (rather than role names) at once no longer
31     skips every other role. (rjbs)
32
33   * Caching of anon classes now works more sanely in the presence of role
34     application parameters - alias and excludes options are taken into account,
35     and caching is disabled entirely if other parameters exist. Asking for
36     caching (instead of just not weakening) when parameters are given will
37     begin warning in Moose 2.0200. (doy, autarch)
38
39 2.0002 Thu, Apr 28, 2011
40
41   [ENHANCEMENTS]
42
43   * Provide definition context information for constructors and destructors, so
44     that they will show up as something other than "generated method (unknown
45     origin)". Also, add the package that accessors are defined in to their
46     definition context.
47
48   * Use Devel::PartialDump in type constraint error messages, if it is
49     installed.
50
51   [BUG FIXES]
52
53   * Stop hiding warnings produced by throwing errors in DEMOLISH methods.
54
55   * The 'reset' native delegation for Counter attributes will now also respect
56     builders (previously, it only respected defaults).
57
58 2.0001 Fri, Apr 22, 2011
59
60   [ENHANCEMENTS]
61
62   * Anonymous classes and roles now have a unified implementation in
63     Class::MOP::Package. This means that anonymous packages are now also
64     possible. (Shawn M Moore, doy)
65
66   [BUG FIXES]
67
68   * No longer call XSLoader from multiple places, as this causes issues on
69     older perls. (doy, ribasushi)
70
71   * Moose::Meta::Role->create now accepts the 'roles' parameter, as it was
72     documented to. (Chris Weyl)
73
74   * Depend on Eval::Closure 0.04, which fixes some issues in mod_perl
75     environments. (doy, mateu)
76
77 2.0000 Mon, Apr 11, 2011
78
79   [API CHANGES]
80
81   * The RegexpRef type constraint now accepts regular expressions blessed into
82     other classes, such as those found in pluggable regexp engines.
83     Additionally the 'Object' constraint no longer rejects objects implemented
84     as a blessed regular expression. (David Leadbeater)
85
86   [OTHER]
87
88   * Moose::Manual::Support now explicitly states when major releases are
89     allowed to happen (January, April, July, or October).
90
91 1.9906-TRIAL Mon, Apr 04, 2011
92
93   [OTHER]
94
95   * Update conflicts list.
96   * Minor pod updates.
97
98 1.9905-TRIAL Mon, Mar 28, 2011
99
100   [NEW FEATURES]
101
102   * The Moose::Meta::Role::Attribute class now has an original_role method
103     which returns the role which first defined an attribute. See the docs for
104     details. (Dave Rolsky)
105
106   * Moose::Util::MetaRole will make sure that the class to which you're
107     applying metaroles or base class roles can actually have them applied. If
108     not (it's not a Moose class, it has a non-Moose metaclass, etc.), then it
109     gives a useful error message. Previously, this would just end up dying in
110     the MetaRole code without a useful message. (Dave Rolsky)
111
112   [BUG FIXES]
113
114   * When a role had its own applied_attribute metaclass (usually from MetaRole
115     application), that metaclass would get lost when that role participated in
116     role composition. It was also lost if that role was consumed by some other
117     role. Both of these cases have been fixed. Attributes are always applied
118     with the applied_attribute metaclass of the role which originally defined
119     them. (Dave Rolsky)
120
121 1.9904-TRIAL Fri, Mar 04, 2011
122
123   [BUG FIXES]
124
125   * Reinitializing anonymous roles used to accidentally clear out the role's
126     stash in some circumstances. This is now fixed. (doy)
127
128   * The Int type constraint now rejects integers with trailing newlines.
129     (Matthew Horsfall)
130
131 1.9903-TRIAL Mon, Feb 28, 2011
132
133   [BUG FIXES]
134
135   * Reverse the order that Moose::Exporter 'also' exports are dispatched. When
136     trying to re-export from a package that itself exported a modified set of
137     Moose sugar, you'd get the original Moose sugar instead of the overrides.
138     There are also now tests for this. (perigrin)
139
140   * Don't initialize lazy attributes with defaults in the constructor (for
141     immutable classes). (mo)
142
143   * When reinitializing meta objects for classes and roles, we failed to
144     preserve roles and role applications. This led to weird bugs. Many MooseX
145     modules end up reinitializing your class or role. (Dave Rolsky)
146
147 1.9902-TRIAL Mon, Jan 03, 2011
148
149   [OTHER]
150
151   * Fix generation of CCFLAGS.
152
153   * Add a bit more Dist::Zilla functionality.
154
155 1.9901-TRIAL Mon, Jan 03, 2011
156
157   [OTHER]
158
159   * Fix some indexing issues.
160
161   * Fix a few issues with the conflict checking stuff.
162
163 1.9900-TRIAL Sat, Jan 01, 2011
164
165   [OTHER]
166
167   * The entire Class::MOP distribution has been merged with Moose. In the
168     future, the Class::MOP code itself will be merged into Moose, and
169     eventually the Class::MOP namespace will disappear entirely. For the
170     current release, we have simply changed how Class::MOP is
171     distributed. (Dave Rolsky).
172
173   * Switched to Dist::Zilla for development. However, we still have a minimal
174     Makefile.PL in the repository that can be used for development. (Dave
175     Rolsky)
176
177   [API CHANGES]
178
179   * Roles now have their own default attribute metaclass to use during
180     application to a class, rather than just using the class's
181     attribute_metaclass. This is also overridable via ::MetaRole, with the
182     applied_attribute key in the role_metaroles hashref (doy).
183
184   * The internal code used to generate inlined methods (accessor, constructor,
185     etc.) has been massively rewritten. MooseX modules that do inlining will
186     almost certainly need to be updated as well.
187
188   [ENHANCEMENTS]
189
190   * We now load the roles needed for native delegations only as needed. This
191     speeds up the compilation time for Moose itself. (doy)
192
193
194 1.25 Fri, Apr 1, 2011
195
196   [BUG FIXES]
197
198   * Reinitializing anonymous roles used to accidentally clear out the role's
199     stash in some circumstances. This is now fixed. (doy) (backported from
200     1.9904)
201
202
203 1.24 Tue, Feb 24, 2011
204
205   [BUG FIXES]
206
207   * Reverse the order that Moose::Exporter 'also' exports are dispatched. When
208     trying to re-export from a package that itself exported a modified set of
209     Moose sugar, you'd get the original Moose sugar instead of the overrides.
210     There are also now tests for this. (perigrin) (backported from 1.9903)
211
212
213 1.23 Sun, Feb 13, 2011
214
215   [PACKAGING FIX]
216
217   * The 1.22 release had a bad MANIFEST. This has been fixed.
218
219
220 1.22 Sun, Feb 13, 2011
221
222   [BUG FIXES]
223
224   * When reinitializing meta objects for classes and roles, we failed to
225     preserve roles and role applications. This led to weird bugs. Many MooseX
226     modules end up reinitializing your class or role. (Dave Rolsky) (backported
227     from 1.9903)
228
229 1.21 Wed, Nov 24, 2010
230
231   [ENHANCEMENTS]
232
233   * The Support manual has been updated to reflect our new major/minor version
234     policy. (Chris Prather)
235
236   * The Contributing manual has been updated to reflect workflow changes based
237     on this new support policy. (doy)
238
239   [BUG FIXES]
240
241   * The role attribute metaclass did not inherit from Class::MOP::Object,
242     which could cause errors when trying to resolve metaclass compatibility
243     issues. Reported by Daniel Ruoso. (doy)
244
245   * The lazy_build feature was accidentally removed from all the docs. Now
246     it's listed in Moose.pm again. (Chris Prather)
247
248 1.20 Fri, Nov 19, 2010
249
250   [BUG FIXES]
251
252   * When using native delegations, if an array or hash ref member failed a
253     type constraint check, Moose ended up erroring out with "Can't call method
254     "get_message" on unblessed reference" instead of generating a useful error
255     based on the failed type constraint. Reported by t0m. RT #63113. (Dave
256     Rolsky)
257
258 1.19 Tue, Nov 2, 2010
259
260   [BUG FIXES]
261
262   * There was still one place in the code trying to load Test::Exception
263     instead of Test::Fatal. (Karen Etheridge)
264
265
266 1.18 Sun, Oct 31, 2010
267
268   [ENHANCEMENTS]
269
270   * Type constraint objects now have an assert_coerce method which will either
271     return a valid value or throw an error. (rjbs)
272
273   * We now warn when an accessor for one attribute overwrites an accessor for
274     another attribute. RT #57510. (Dave Rolsky)
275
276   [BUG FIXES]
277
278   * The native Array and Hash delegation methods now coerce individual new
279     members if the _member type_ has a coercion. In other words, if the array
280     reference is defined as an ArrayRef[DateTime], and you've defined a
281     coercion from Int to DateTime, then pushing an integer via a delegation
282     method will coerce the integer to a DateTime object. Reported by Karen
283     Etheridge. RT #62351. (Dave Rolsky)
284
285   * An attribute using native delegations did not always properly coerce and
286     type check a lazily set default value. (doy and Dave Rolsky)
287
288   * Using a regexp to define delegations for a class which was not yet loaded
289     did not actually work, but did not explicitly fail. However, it caused an
290     error when the class was loaded later. Reported by Max Kanat-Alexander. RT
291     #60596. (Dave Rolsky)
292
293   * Attempting to delegate to a class or role which is not yet loaded will now
294     throw an explicit error. (Dave Rolsky)
295
296   * Attempting to set lazy_build in an inherited attribute was ignored. RT
297     #62057. (perigrin)
298
299   [OTHER]
300
301   * The Moose test suite now uses Test::Fatal instead of
302     Test::Exception. (rjbs)
303
304 1.17 Tue, Oct 19, 2010
305
306   [BUG FIXES]
307
308   * Make native delegation inlining work with instance metaclasses where slot
309     access is an do {} block, like Kioku. This fixes the use of native
310     delegations together with Kioku. (Scott, doy)
311
312 1.16 Mon, Oct 18, 2010
313
314   [ENHANCEMENTS]
315
316   * Almost every native delegation method which changes the attribute value
317     now has an explicitly documented return value. In general, this return
318     value matches what Perl would return for the same operation. (Dave Rolsky)
319
320   * Lots of work on native delegation documentation, including documenting
321     what arguments each native delegation method allows or requires. (Dave
322     Rolsky)
323
324   * Passing an odd number of args to ->new() now gives a more useful warning
325     than Perl's builtin warning. Suggested by Sir Robert Burbridge. (Dave
326     Rolsky)
327
328   * Allow disabling stack traces by setting an environment variable. See
329     Moose::Error::Default for details. This feature is considered
330     experimental, and may change in a future release. (Marcus Ramberg)
331
332   * The deprecation warning for using alias and excludes without a leading
333     dash now tells you the role being applied and what it was being applied
334     to. (mst).
335
336   [BUG FIXES]
337
338   * A number of native trait methods which expected strings as arguments did
339     not allow the empty string. This included Array->join, String->match,
340     String->replace, and String->substr. Reported by Whitney Jackson. RT
341     #61962. (Dave Rolsky)
342
343   * 'no Moose' no longer inadvertently removes imports it didn't create
344     itself. RT #60013. (Florian Ragwitz, doy)
345
346   * Roles now support passing an array reference of method names to method
347     modifier sugar functions. (doy)
348
349   * Native traits no longer use optimized inlining routines if the instance
350     requests it (in particular, if inline_get_slot_value doesn't return
351     something that can be assigned to). This should fix issues with
352     KiokuDB::Class. (doy)
353
354   * We now ignore all Class::MOP and Moose classes when determining what
355     package called a deprecated feature. This should make the deprecation
356     warnings saner, and make it possible to turn them off more easily. (Dave
357     Rolsky)
358
359   * The deprecated "default is" warning no longer happens if the attribute has
360     any accessor method defined (accessor, reader, writer). Also, this warning
361     only happens when a method that was generated because of the "default is"
362     gets called, rather than when the attribute is defined. (Dave Rolsky)
363
364   * The "default default" code for some native delegations no longer issues a
365     deprecation warning when the attribute is required or has a builder. (Dave
366     Rolsky)
367
368   * Setting a "default default" caused a fatal error if you used the builder
369     or lazy_build options for the attribute. Reported by Kent Fredric. RT
370     #59613. (Dave Rolsky)
371
372 1.15 Tue, Oct 5, 2010
373
374   [API CHANGES]
375
376   * Major changes to Native Traits, most of which make them act more like
377     "normal" attributes. This should be mostly compatible with existing code,
378     but see Moose::Manual::Delta for details.
379
380   * A few native traits (String, Counter, Bool) provide default values of "is"
381     and "default" when you created an attribute. Allowing them to provide
382     these values is now deprecated. Supply the value yourself when creating
383     the attribute.
384
385   * New option 'trait_aliases' for Moose::Exporter, which will allow you to
386     generate non-global aliases for your traits (and allow your users to
387     rename the aliases, etc). (doy)
388
389   * 'use Moose' and 'use Moose::Role' now accept a '-meta_name' option, to
390     determine which name to install the 'meta' name under. Passing 'undef'
391     to this option will suppress generation of the meta method entirely. (doy)
392
393   * Moose now warns if it overwrites an existing method named "meta" in your
394     class when you "use Moose". (doy)
395
396   [ENHANCEMENTS]
397
398   * Native Trait delegations are now all generated as inline code. This should
399     be much faster than the previous method of delegation. In the best case,
400     native trait methods will be very highly optimized.
401
402   * Reinitializing a metaclass no longer removes the existing method and
403     attribute objects (it instead fixes them so they are correct for the
404     reinitialized metaclass). This should make the order of loading many
405     MooseX modules less of an issue. (doy)
406
407   * The Moose::Manual docs have been revised and updated. (Dave Rolsky)
408
409   [BUG FIXES]
410
411   * If an attribute was weak, setting it to a non-ref value after the object
412     was constructed caused an error. Now we only call weaken when the new
413     value is a reference.
414
415   * t/040_type_constraints/036_match_type_operator.t failed on 5.13.5+. Fixed
416     based on a patch from Andreas Koenig.
417
418 1.14 Tue, Sep 21, 2010
419
420   [BUG FIXES]
421
422   * Work around what looks like a bug in List::MoreUtils::any. This bug caused
423     a weird error when defining the same union type twice, but only when using
424     MooseX::Types. Reported by Curtis Jewell. RT #61001. (Dave Rolsky)
425
426 1.13 Mon, Sep 13, 2010
427
428   [API CHANGES]
429
430   * The deprecation warnings for alias and excludes are back, use -alias and
431     -excludes instead. (Dave Rolsky)
432
433   [ENHANCEMENTS]
434
435   * When composing one role into another and there is an attribute conflict,
436     the error message now includes the attribute name. Reported by Sam
437     Graham. RT #59985. (Dave Rolsky)
438
439   * When a class is made immutable, the does_role method is overridden with a
440     much faster version that simply looks role names up in a hash. Code which
441     uses lots of role-based type constraints should be faster. (Dave Rolsky)
442
443 1.12 Sat, Aug 28, 2010
444
445   [BUG FIXES]
446
447   * Fix the MANIFEST. Fixes RT #60831, reported by Alberto Simões.
448
449 1.11 Fri, Aug 27, 2010
450
451   [API CHANGES]
452
453   * An attribute in a subclass can now override the value of "is". (doy)
454
455   * The deprecation warnings for alias and excludes have been turned back off
456     for this release, to give other module authors a chance to tweak their
457     code. (Dave Rolsky)
458
459   [BUG FIXES]
460
461   * mro::get_linear_isa was being called as a function rather than a method,
462     which caused problems with Perl 5.8.x. (t0m)
463
464   * Union types always created a type constraint, even if their constituent
465     constraints did not have any coercions. This bogus coercion always
466     returned undef, which meant that a union which included Undef as a member
467     always coerced bad values to undef. Reported by Eric Brine. RT
468     #58411. (Dave Rolsky)
469
470   * Union types with coercions would always fall back to coercing the value to
471     undef (unintentionally). Now if all the coercions for a union type fail,
472     the value returned by the coercion is the original value that we attempted
473     to coerce. (Dave Rolsky).
474
475 1.10 Sun, Aug 22, 2010
476
477   [API CHANGES]
478
479   * The long-deprecated alias and excludes options for role applications now
480     issue a deprecation warning. Use -alias and -excludes instead. (Dave
481     Rolsky)
482
483   [BUG FIXES]
484
485   * Inlined code no longer stringifies numeric attribute defaults. (vg, doy)
486
487   * default => undef now works properly. (doy)
488
489   * Enum type constraints now throw errors if their values are nonsensical.
490     (Sartak)
491
492   [ENHANCEMENTS]
493
494   * Optimizations that should help speed up compilation time (Dave Rolsky).
495
496 1.09 Tue, Jul 25, 2010
497
498   [API CHANGES]
499
500   * You can no longer pass "coerce => 1" for an attribute unless its type
501     constraint has a coercion defined. Doing so will issue a deprecation
502     warning. (Dave Rolsky)
503
504   * Previously, '+foo' only allowed a specific set of options to be
505     overridden, which made it impossible to change attribute options related
506     to extensions. Now we blacklist some options, and anything else is
507     allowed. (doy, Tuomas Jormola)
508
509   * Most features which have been declared deprecated now issue a warning using
510     Moose::Deprecated. Warnings are issued once per calling package, not
511     repeatedly. See Moose::Deprecated for information on how you can shut
512     these warnings up entirely. Note that deprecated features will eventually
513     be removed, so shutting up the warnings may not be the best idea. (Dave
514     Rolsky)
515
516   * Removed the long-deprecated Moose::Meta::Role->alias_method method. (Dave
517     Rolsky).
518
519   [NEW FEATURES]
520
521   * We no longer unimport strict and warnings when Moose, Moose::Role, or
522     Moose::Exporter are unimported. Doing this was broken if the user
523     explicitly loaded strict and warnings themself, and the results could be
524     generally surprising. We decided that it was best to err on the side of
525     safety and leave these on. Reported by David Wheeler. RT #58310. (Dave
526     Rolsky)
527
528   * New with_traits helper function in Moose::Util. (doy)
529
530   [BUG FIXES]
531
532   * Accessors will no longer be inlined if the instance metaclass isn't
533     inlinable. (doy)
534
535   * Use Perl 5.10's new recursive regex features, if possible, for the type
536     constraint parser. (doy, nothingmuch)
537
538   [ENHANCEMENTS]
539
540   * Attributes now warn if their accessors overwrite a locally defined
541     function (not just method). (doy)
542
543   [OTHER]
544
545   * Bump our required perl version to 5.8.3, since earlier versions fail tests
546     and aren't easily installable/testable.
547
548 1.08 Tue, Jun 15, 2010
549
550   [ENHANCEMENTS]
551
552   * Refactored a small amount of Moose::Meta::Method::Constructor to allow it
553     to be overridden more easily (doy).
554
555 1.07 Sat, Jun 05, 2010
556
557   [BUG FIXES]
558
559   * Fixed a minor metaclass compatibility fixing bug dealing with immutable
560     classes and non-class metaclass traits (doy, dougdude).
561
562 1.06 Tue, Jun 01, 2010
563
564   [NEW FEATURES]
565
566   * Added '0+' overloading in Moose::Meta::TypeConstraint so that we can
567     more uniformly compare type constraints between 'classic' Moose type
568     constraints and MooseX::Types based type constraints.
569
570 1.05 Thu, May 20, 2010
571
572   [API CHANGES]
573
574   * Packages and modules no longer have methods - this functionality was
575     moved back up into Moose::Meta::Class and Moose::Meta::Role individually
576     (through the Class::MOP::Mixin::HasMethods mixin) (doy).
577
578   * BUILDALL is now called by Moose::Meta::Class::new_object, rather than by
579     Moose::Object::new. (doy)
580
581   [NEW FEATURES]
582
583   * strict and warnings are now unimported when Moose, Moose::Role, or
584     Moose::Exporter are unimported. (doy, Adam Kennedy)
585
586   * Added a 'consumers' method to Moose::Meta::Role for finding all
587     classes/roles which consume the given role. (doy)
588
589   [BUG FIXES]
590
591   * Fix has '+attr' in Roles to explode immediately, rather than when the role
592     is applied to a class (t0m).
593
594   * Fix type constraint validation messages to not include the string 'failed'
595     twice in the same sentence (Florian Ragwitz).
596
597   * New type constraints will default to being unequal, rather than equal
598     (rjbs).
599
600   * The tests no longer check for perl's behavior of clobbering $@, which has
601     been fixed in perl-5.13.1 (Florian Ragwitz).
602
603   * Metaclass compatibility fixing has been completely rewritten, and should
604     be much more robust. (doy)
605
606 1.04 Thu, May 20, 2010
607
608   * This release was broken and has been deleted from CPAN shortly after its
609     upload.
610
611 1.03 Thu, May 06, 2010
612
613   [NEW FEATURES]
614
615   * Allow specifying required versions when setting superclasses or applying
616     roles (Florian Ragwitz).
617
618 1.02 Sat, May 01, 2010
619
620   [BUG FIXES]
621
622   * Stop the natatime method provided by the native Array trait from returning
623     an exhausted iterator when being called with a callback. (Florian Ragwitz)
624
625   * Make Moose::Meta::TypeConstraint::Class correctly reject RegexpRefs.
626     (Florian Ragwitz)
627
628   * Calling is_subtype_of on a Moose::Meta::TypeConstraint::Class with itself or
629     the class the TC represents as an argument incorrectly returned true. This
630     behavior is correct for is_type_of, not is_subtype_of. (Guillermo Roditi)
631
632   * Use File::Temp for temp files created during tests. Previously, files were
633     written to the t/ dir, which could cause problems of the user running the
634     tests did not have write access to that directory.. (Chris Weyl, Ã†var
635     Arnfjörð Bjarmason)
636
637   * Pass role arguments along when applying roles to instances. (doy, lsm)
638
639 1.01 Fri, Mar 26, 2010
640
641   [NEW FEATURES]
642
643   * The handles option now also accepts a role type constraint in addition to a
644     plain role name. (Florian Ragwitz)
645
646   [OTHER]
647
648   * Record the Sartak/doy debt properly in Changes (perigrin)
649
650 1.00 Tue, Mar 25, 2010
651
652   [BUG FIXES]
653
654   * Moose::Meta::Attribute::Native::Trait::Code no longer creates reader
655     methods by default. (Florian Ragwitz)
656
657   [DOCUMENTATION]
658
659   * Improve various parts of the documentation and fix many typos.
660     (Dave Rolsky, Mateu Hunter, Graham Knop, Robin V, Jay Hannah, Jesse Luehrs)
661
662   [OTHER]
663
664   * Paid the $10 debt to doy from 0.80 Sat, Jun 6, 2009 (Sartak)
665
666 0.99 Mon, Mar 8, 2010
667
668   [NEW FEATURES]
669
670   * New method find_type_for in Moose::Meta::TypeConstraint::Union, for finding
671     which member of the union a given value validates for. (Cory Watson)
672
673   [BUG FIXES]
674
675   * DEMOLISH methods in mutable subclasses of immutable classes are now called
676     properly (Chia-liang Kao, Jesse Luehrs)
677
678   [NEW DOCUMENTATION]
679
680   * Added Moose::Manual::Support that defines the support, compatiblity, and
681     release policies for Moose. (Chris Prather)
682
683 0.98 Wed, Feb 10, 2010
684
685   [BUG FIXES]
686
687   * An internals change in 0.97 broke role application to an instance in some
688     cases. The bug occurred when two different roles were applied to different
689     instances of the same class. (Rafael Kitover)
690
691
692 0.97 Tue, Feb 9, 2010
693
694   [BUG FIXES]
695
696   * Calling ->reinitialize on a cached anonymous class effectively uncached
697     the metaclass object, causing the metaclass to go out of scope
698     unexpectedly. This could easily happen at a distance by applying a
699     metarole to an anonymous class. (Dave Rolsky).
700
701 0.96 Sat, Feb 6, 2010
702
703   [NEW FEATURES]
704
705   * ScalarRef is now a parameterized type. You can now specify a type
706     constraint for whatever the reference points to. (Closes RT#50857)
707     (Michael G. Schwern, Florian Ragwitz)
708
709   [BUG FIXES]
710
711   * ScalarRef now accepts references to other references. (Closes RT#50934)
712     (Michael G. Schwern)
713
714 0.95 Thu, Feb 4, 2010
715
716   [NEW FEATURES]
717
718   * Moose::Meta::Attribute::Native::Trait::Code now provides execute_method as
719     a delegation option. This allows the code reference to be called as a
720     method on the object. (Florian Ragwitz)
721
722   [ENHANCEMENTS]
723
724   * Moose::Object::does no longer checks the entire inheritance tree, since
725     Moose::Meta::Class::does_role already does this. (doy)
726
727   * Moose::Util::add_method_modifier (and subsequently the sugar functions
728     Moose::before, Moose::after, and Moose::around) can now accept arrayrefs,
729     with the same behavior as lists. Types other than arrayref and regexp
730     result in an error.  (Dylan Hardison)
731
732 0.94 Mon, Jan 18, 2010
733
734   [API CHANGES]
735
736   * Please see the changes listed for 0.93_01 and Moose::Manual::Delta.
737
738   [ENHANCEMENTS]
739
740   * Improved support for anonymous roles by changing various APIs to take
741     Moose::Meta::Role objects as well as role names. This included
742
743   - Moose::Meta::Class->does_role
744   - Moose::Meta::Role->does_role
745   - Moose::Util::does_role
746   - Moose::Util::apply_all_roles
747   - Moose::Util::ensure_all_roles
748   - Moose::Util::search_class_by_role
749
750   Requested by Shawn Moore. Addresses RT #51143 (and then some). (Dave Rolsky)
751
752   [BUG FIXES]
753
754   * Fix handling of non-alphanumeric attributes names like '@foo'. This should
755     work as long as the accessor method names are explicitly set to valid Perl
756     method names. Reported by Doug Treder. RT #53731. (Dave Rolsky)
757
758
759 0.93_03 Tue, Jan 5, 2010
760
761   [BUG FIXES]
762
763   * Portability fixes to our XS code so we compile with 5.8.8 and Visual
764     C++. Fixes RT #53391. Reported by Taro Nishino. (rafl)
765
766
767 0.93_02 Tue, Jan 5, 2010
768
769  [BUG FIXES]
770
771   * Depend on Class::MOP 0.97_01 so we can get useful results from CPAN
772     testers. (Dave Rolsky)
773
774
775 0.93_01 Mon, Jan 4, 2010
776
777   [API CHANGES]
778
779   See Moose::Manual::Delta for more details on backwards compatiblity issues.
780
781   * Role attributes are now objects of the Moose::Meta::Role::Attribute
782     class. (Dave Rolsky).
783
784   * There were major changes to how metaroles are applied. We now distinguish
785     between metaroles for classes vs those for roles. See the
786     Moose::Util::MetaRole docs for details. (Dave Rolsky)
787
788   * The old MetaRole API has been deprecated, but will continue to
789     work. However, if you are applying an attribute metaclass role, this may
790     break because of the fact that roles now have an attribute metaclass
791     too. (Dave Rolsky)
792
793   * Moose::Util::MetaRole::apply_metaclass_roles is now called
794     apply_metaroles. The old name is deprecated. (Dave Rolsky)
795
796   * The unimport subs created by Moose::Exporter now clean up re-exported
797     functions like blessed and confess, unless the caller imported them from
798     somewhere else too. See Moose::Manua::Delta for backcompat details. (rafl)
799
800   [ENHANCEMENTS AND BUG FIXES]
801
802   * Changed the Str constraint to accept magic lvalue strings like one gets from
803     substr et al, again. (sorear)
804
805   * Sped up the type constraint parsing regex. (Sam Vilain)
806
807   * The Moose::Cookbook::Extending::Recipe2 recipe was broken. Fix suggested by
808     jrey.
809
810   * Added Moose::Util::TypeConstraints exports when using oose.pm to allow
811     easier testing of TypeConstraints from the command line. (perigrin)
812
813   * Added a with_immutable test function to Test::Moose, to run a block of tests
814     with and without certain classes being immutable. (doy)
815
816   * We now use Module::Install extensions explicitly to avoid confusing errors
817     if they're not installed. We use Module::Install::AuthorRequires to stop
818     test extraction and general failures if you don't have the author side
819     dependencies installed.
820
821   * Fixed a grammar error in Moose::Cookbook::Basics::Recipe4. rt.cpan.org
822     #51791. (Amir E. Aharoni)
823
824
825 0.93 Thu, Nov 19, 2009
826     * Moose::Object
827       - Calling $object->new() is no longer deprecated, and no longer
828         warns. (doy)
829
830     * Moose::Meta::Role
831       - The get_attribute_map method is now deprecated. (Dave Rolsky)
832
833     * Moose::Meta::Method::Delegation
834       - Preserve variable aliasing in @_ for delegated methods, so that
835         altering @_ affects the passed value. (doy)
836
837     * Moose::Util::TypeConstraints
838       - Allow array refs for non-anonymous form of enum and duck_type, not
839         just anonymous. The non-arrayref forms may be removed in the
840         future. (doy)
841       - Changed Str constraint to not accept globs (*STDIN or *FOO). (chansen)
842       - Properly document Int being a subtype of Str. (doy)
843
844     * Moose::Exporter
845       - Moose::Exporter using modules can now export their functions to the
846         main package. This applied to Moose and Moose::Role, among
847         others. (nothingmuch)
848
849     * Moose::Meta::Attribute
850       - Don't remove attribute accessors we never installed, during
851         remove_accessors. (doy)
852
853     * Moose::Meta::Attribute::Native::Trait::Array
854       - Don't bypass prototype checking when calling List::Util::first, to
855         avoid a segfault when it is called with a non-code argument. (doy)
856
857     * Moose::Meta::Attribute::Native::Trait::Code
858       - Fix passing arguments to code execute helpers. (doy)
859
860 0.92 Tue, Sep 22, 2009
861     * Moose::Util::TypeConstraints
862       - added the match_on_type operator (Stevan)
863         - added tests and docs for this (Stevan)
864
865     * Moose::Meta::Class
866       - Metaclass compat fixing should already happen recursively, there's no
867         need to explicitly walk up the inheritance tree. (doy)
868
869     * Moose::Meta::Attribute
870       - Add tests for set_raw_value and get_raw_value. (nothingmuch)
871
872 0.91 Thu, Sep 17, 2009
873     * Moose::Object
874       - Don't import any functions, in order to avoid polluting our namespace
875         with things that can look like methods (blessed, try, etc)
876         (nothingmuch)
877
878     * Moose::Meta::Method::Constructor
879       - The generated code needs to called Scalar::Util::blessed by its
880         fully-qualified name or else Perl can interpret the call to blessed as
881         an indirect method call. This broke Search::GIN, which in turn broke
882         KiokuDB. (nothingmuch)
883
884 0.90 Tue, Sep 15, 2009
885     * Moose::Meta::Attribute::Native::Trait::Counter
886     * Moose::Meta::Attribute::Native::Trait::String
887       - For these two traits, an attribute which did not explicitly provide
888         methods to handles magically ended up delegating *all* the helper
889         methods. This has been removed. You must be explicit in your handles
890         declaration for all Native Traits. (Dave Rolsky)
891
892     * Moose::Object
893       - DEMOLISHALL behavior has changed. If any DEMOLISH method dies, we make
894         sure to rethrow its error message. However, we also localize $@ before
895         this so that if all the DEMOLISH methods success, the value of $@ will
896         be preserved. (nothingmuch and Dave Rolsky)
897       - We now also localize $? during object destruction. (nothingmuch and
898         Dave Rolsky)
899       - The handling of DEMOLISH methods was broken for immutablized classes,
900         which were not receiving the value of
901         Devel::GlobalDestruction::in_global_destruction.
902       - These two fixes address some of RT #48271, reported by Zefram.
903       - This is all now documented in Moose::Manual::Construction.
904       - Calling $object->new() is now deprecated. A warning will be
905         issued. (perigrin)
906
907     * Moose::Meta::Role
908       - Added more hooks to customize how roles are applied. The role
909         summation class, used to create composite roles, can now be changed
910         and/or have meta-roles applied to it. (rafl)
911       - The get_method_list method no longer explicitly excludes the "meta"
912         method. This was a hack that has been replaced by better hacks. (Dave
913         Rolsky)
914
915     * Moose::Meta::Method::Delegation
916       - fixed delegated methods to make sure that any modifiers attached to
917         the accessor being delegated on will be called (Stevan)
918         - added tests for this (Stevan)
919
920     * Moose::Meta::Class
921       - Moose no longer warns when a class that is being made immutable has
922         mutable ancestors. While in theory this is a good thing to warn about,
923         we found so many exceptions to this that doing this properly became
924         quite problematic.
925
926 0.89_02 Thu, Sep 10, 2009
927     * Moose::Meta::Attribute::Native
928       - Fix Hash, which still had 'empty' instead of 'is_empty'. (hdp)
929
930     * Moose::Meta::Attribute::Native::Trait::Array
931       - Added a number of functions from List::Util and List::MoreUtils,
932         including reduce, shuffle, uniq, and natatime. (doy)
933
934     * Moose::Exporter
935       - This module will now generate an init_meta method for your exporting
936         class if you pass it options for
937         Moose::Util::MetaRole::apply_metaclass_roles or
938         apply_base_class_roles. This eliminates a lot of repetitive
939         boilerplate for typical MooseX modules. (doy).
940       - Documented the with_meta feature, which is a replacement for
941         with_caller. This feature was added by josh a while ago.
942       - The with_caller feature is now deprecated, but will not issue a
943         warning yet. (Dave Rolsky)
944       - If you try to wrap/export a subroutine which doesn't actually exist,
945         Moose::Exporter will warn you about this. (doy)
946
947     * Moose::Meta::Role::Application::ToRole
948       - When a role aliased a method from another role, it was only getting
949         the new (aliased) name, not the original name. This differed from what
950         happens when a class aliases a role's methods. If you _only_ want the
951         aliased name, make sure to also exclue the original name. (Dave
952         Rolsky)
953
954 0.89_01 Wed Sep 2, 2009
955     * Moose::Meta::Attribute
956       - Added the currying syntax for delegation from AttributeHelpers to the
957         existing delegation API. (hdp)
958
959     * Moose::Meta::Attribute::Native
960       - We have merged the functionality of MooseX::AttributeHelpers into the
961         Moose core with some API tweaks. You can continue to use
962         MooseX::AttributeHelpers, but it will not be maintained except
963         (perhaps) for critical bug fixes in the future. See
964         Moose::Manual::Delta for details. (hdp, jhannah, rbuels, Sartak,
965         perigrin, doy)
966
967     * Moose::Error::Croak
968     * Moose::Error::Confess
969       - Clarify documentation on how to use different error-throwing
970         modules. (Curtis Jewell)
971
972     * Moose
973       - Correct POD for builder to point to Recipe8, not 9. (gphat)
974
975     * Moose::Exporter
976       - When a nonexistent sub name is passed to as_is, with_caller, or
977         with_meta, throw a warning and skip the exporting, rather than
978         installing a broken sub. (doy)
979
980     * Moose::Meta::Class
981       - Moose now warns if you call C<make_immutable> for a class with mutable
982         ancestors. (doy)
983
984 0.89 Thu Aug 13, 2009
985     * Moose::Manual::Attributes
986       - Clarify "is", include discussion of "bare". (Sartak)
987
988     * Moose::Meta::Role::Method::Conflicting
989     * Moose::Meta::Role::Application::ToClass
990       - For the first set of roles involved in a conflict, report all
991         unresolved method conflicts, not just the first method. Fixes #47210
992         reported by Ovid. (Sartak)
993
994     * Moose::Meta::TypeConstraint
995       - Add assert_valid method to use a TypeConstraint for assertion (rjbs)
996
997     * Moose::Exporter
998       - Make "use Moose -metaclass => 'Foo'" do alias resolution, like -traits
999         does. (doy)
1000       - Allow specifying role options (alias, excludes, MXRP stuff) in the
1001         arrayref passed to "use Moose -traits" (doy)
1002
1003     * Moose::Util
1004       - Add functions meta_class_alias and meta_attribute_alias for creating
1005         aliases for class and attribute metaclasses and metatraits. (doy)
1006
1007     * Moose::Meta::Attribute
1008     * Moose::Meta::Method::Accessor
1009       - A trigger now receives the old value as a second argument, if the
1010         attribute had one. (Dave Rolsky)
1011
1012     * Moose::Meta::Method::Constructor
1013       - Fix a bug with $obj->new when $obj has stringify overloading.
1014         Reported by Andrew Suffield [rt.cpan.org #47882] (Sartak)
1015         - However, we will probably deprecate $obj->new, so please don't start
1016           using it for new code!
1017
1018     * Moose::Meta::Role::Application
1019     * Moose::Meta::Role::Application::RoleSummation
1020       - Rename alias and excludes to -alias and -excludes (but keep the old
1021         names for now, for backcompat) (doy)
1022
1023 0.88 Fri Jul 24, 2009
1024     * Moose::Manual::Contributing
1025       - Re-write the Moose::Manual::Contributing document to reflect
1026         the new layout and methods of work for the Git repository. All
1027         work now should be done in topic branches and reviewed by a
1028         core committer before being applied to master. All releases
1029         are done by a cabal member and merged from master to
1030         stable. This plan was devised by Yuval, blame him. (perigrin)
1031
1032     * Moose::Meta::Role
1033       - Create metaclass attributes for the different role application
1034         classes.  (rafl)
1035
1036     * Moose::Util::MetaRole
1037       - Allow applying roles to a meta role's role application
1038         classes. (rafl)
1039
1040     * Moose::Meta::Attribute
1041       - Add weak_ref to allowed options for "has '+foo'" (mst)
1042
1043     * Moose::Meta::Method::Accessor
1044       - No longer uses inline_slot_access in accessors, to support
1045         non-lvalue-based meta instances. (sorear)
1046
1047 0.87 Tue Jul 7, 2009
1048     * Moose::Meta::Method::Delegation
1049       - Once again allow class names as well as objects for
1050         delegation. This was changed in 0.86.
1051
1052 0.86 Fri Jul 3, 2009
1053     * Moose::Meta::Class::Immutable::Trait
1054       - Fixes to work with the latest Class::MOP.
1055
1056     * Moose::Meta::Method::Delegation
1057       - Delegation now dies with a more useful error message if the
1058         attribute's accessor returns something defined but
1059         unblessed. (hdp)
1060
1061 0.85 Fri, Jun 26, 2009
1062     * Moose::Meta::Attribute
1063       - The warning for 'no associated methods' is now split out into
1064         the _check_associated_methods method, so that extensions can
1065         safely call 'after install_accessors => ...'. This fixes a
1066         warning from MooseX::AttributeHelpers. (hdp)
1067
1068 0.84 Fri, Jun 26, 2009
1069     * Moose::Role
1070       - has now sets definition_context for attributes defined in
1071         roles. (doy)
1072
1073     * Moose::Meta::Attribute
1074       - When adding an attribute to a metaclass, if the attribute has
1075         no associated methods, it will give a deprecation
1076         warning. (hdp)
1077       - Methods generated by delegation were not being added to
1078         associated_methods. (hdp)
1079       - Attribute accessors (reader, writer, accessor, predicate,
1080         clearer) now warn if they overwrite an existing method. (doy)
1081       - Attribute constructors now warn very noisily about unknown (or
1082         misspelled) arguments
1083
1084     * Moose::Util::TypeConstraints
1085       - Deprecated the totally useless Role type name, which just
1086         checked if $object->can('does'). Note that this is _not_ the
1087         same as a type created by calling role_type('RoleName').
1088
1089     * Moose::Util::TypeConstraints
1090     * Moose::Meta::TypeConstraint::DuckType
1091       - Reify duck type from a regular subtype into an actual class
1092         (Sartak)
1093         - Document this because Sartak did all my work for me
1094           (perigrin)
1095
1096     * Moose::Meta::Attribute
1097       - Allow Moose::Meta::TypeConstraint::DuckType in handles, since
1098         it is just a list of methods (Sartak)
1099
1100     * Moose::Meta::Role
1101       - The get_*_method_modifiers methods would die if the role had
1102         no modifiers of the given type (Robert Buels).
1103
1104 0.83 Tue, Jun 23, 2009
1105     * Moose::Meta::Class
1106       - Fix _construct_instance not setting the special __MOP__ object
1107         key in instances of anon classes. (doy)
1108
1109 0.82 Sun, Jun 21, 2009
1110     * Moose::Manual::Types
1111       - Mention MooseX::Types early to avoid users falling down the
1112         string parsing rathole (mst)
1113
1114     * Moose::Manual::MooseX
1115       - Add warnings about class-level extensions and mention considering
1116         using plain objects instead
1117
1118 0.81 Sun, Jun 7, 2009
1119     * Bumped our Class::MOP prereq to the latest version (0.85), since
1120       that's what we need.
1121
1122 0.80 Sat, Jun 6, 2009
1123     * Moose::Manual::FAQ
1124       - Add FAQ about the coercion change from 0.76 because it came up
1125         three times today (perigrin)
1126         - Win doy $10 dollars because Sartak didn't think anybody
1127           would document this fast enough (perigrin)
1128
1129     * Moose::Meta::Method::Destructor
1130       - Inline a DESTROY method even if there are no DEMOLISH methods
1131         to prevent unnecessary introspection in
1132         Moose::Object::DEMOLISHALL
1133
1134     * Moose::*
1135       - A role's required methods are now represented by
1136         Moose::Meta::Role::Method::Required objects. Conflicts are now
1137         represented by Moose::Meta::Role::Method::Conflicting
1138         objects. The benefit for end-users in that unresolved
1139         conflicts generate different, more instructive, errors,
1140         resolving Ovid's #44895. (Sartak)
1141
1142     * Moose::Role
1143       - Improve the error message of "extends" as suggested by Adam
1144         Kennedy and confound (Sartak)
1145       - Link to Moose::Manual::Roles from Moose::Role as we now have
1146         excellent documentation (Adam Kennedy)
1147
1148     * Tests
1149       - Update test suite for subname change in Class::MOP
1150         (nothingmuch)
1151       - Add TODO test for infinite recursion in Moose::Meta::Class
1152         (groditi)
1153
1154 0.79 Wed, May 13, 2009
1155     * Tests
1156       - More fixes for Win32 problems. Reported by Robert Krimen.
1157
1158     * Moose::Object
1159       - The DEMOLISHALL method could still blow up in some cases
1160         during global destruction. This method has been made more
1161         resilient in the face of global destruction's random garbage
1162         collection order.
1163
1164     * Moose::Exporter
1165       - If you "also" a module that isn't loaded, the error message
1166         now acknowledges that (Sartak)
1167
1168     * Moose
1169       - When your ->meta method does not return a Moose::Meta::Class,
1170         the error message gave the wrong output (Sartak)
1171
1172 0.78 Tue, May 12, 2009
1173     * Moose::Cookbook::FAQ and Moose::Cookbook::WTF
1174       - Merged these documents into what is now Moose::Manual::FAQ
1175
1176     * Moose::Unsweetened
1177       - Moved to Moose::Manual::Unsweetened
1178
1179     * Moose::Cookbook::Basics::Recipes 9-12
1180       - Renamed to be 8-11, since recipe 8 did not exist
1181
1182     * Moose::Exporter
1183       - Make Moose::Exporter import strict and warnings into packages
1184         that use it (doy)
1185
1186     * Moose::Object
1187       - Fix DEMOLISHALL sometimes not being able to find DEMOLISH
1188         methods during global destruction (doy)
1189
1190     * Moose::Meta::Class
1191     * Moose::Meta::Role::Application::ToClass
1192       - Track the Role::Application objects created during class-role
1193         consumption (Sartak)
1194
1195     * Moose::Meta::Class
1196       - Fix metaclass incompatibility errors when extending a vanilla perl
1197         class which isa Moose class with a metaclass role applied (t0m)
1198
1199     * Moose::Meta::Role
1200       - Add a role-combination hook, _role_for_combination, for the
1201         benefit of MooseX::Role::Parameterized (Sartak)
1202
1203     * Tests
1204       - Some tests were failing on Win32 because they explicit checked
1205         warning output for newlines. Reported by Nickolay Platonov.
1206
1207 0.77 Sat, May 2, 2009
1208     * Moose::Meta::Role
1209       - Add explicit use of Devel::GlobalDestruction and Sub::Name
1210         (perigrin)
1211
1212     * Moose::Object
1213       - Pass a boolean to DEMOLISHALL and DEMOLISH indicating whether
1214         or not we are currently in global destruction (doy)
1215       - Add explicit use of Devel::GlobalDestruction and Sub::Name
1216         (perigrin)
1217
1218     * Moose::Cookbook::FAQ
1219       - Reworked much of the existing content to be more useful to
1220         modern Moose hackers (Sartak)
1221
1222     * Makefile.PL
1223       - Depend on Class::MOP 0.83 instead of 0.82_01.
1224
1225 0.76 Mon, April 27, 2009
1226     * Moose::Meta::TypeConstraint
1227       - Do not run coercions in coerce() if the value already passes the type
1228         constraint (hdp)
1229
1230     * Moose::Meta::TypeConstraint::Class
1231       - In validation error messages, specifically say that the value is not
1232         an instance of the class. This should alleviate some frustrating
1233         forgot-to-load-my-type bugs. rt.cpan.org #44639 (Sartak)
1234
1235     * Moose::Meta::Role::Application::ToClass
1236       - Revert the class-overrides-role warning in favor of a solution outside
1237         of the Moose core (Sartak)
1238
1239     * Tests
1240       - Make Test::Output optional again, since it's only used in a few files
1241         (Sartak)
1242
1243 0.75_01 Thu, April 23, 2009
1244     * Moose::Meta::Role::Application::ToClass
1245       - Moose now warns about each class overriding methods from roles it
1246         consumes (Sartak)
1247
1248     * Tests
1249       - Warnings tests have standardized on Test::Output which is now an
1250         unconditionally dependency (Sartak)
1251
1252     * Moose::Meta::Class
1253       - Changes to immutabilization to work with Class::MOP 0.82_01+.
1254
1255 0.75 Mon, April 20, 2009
1256     * Moose
1257     * Moose::Meta::Class
1258       - Move validation of not inheriting from roles from Moose::extends to
1259         Moose::Meta::Class::superclasses (doy)
1260
1261     * Moose::Util
1262       - add ensure_all_roles() function to encapsulate the common "apply this
1263         role unless the object already does it" pattern (hdp)
1264
1265     * Moose::Exporter
1266       - Users can now select a different metaclass with the "-metaclass"
1267         option to import, for classes and roles (Sartak)
1268
1269     * Moose::Meta::Role
1270       - Make method_metaclass an attr so that it can accept a metarole
1271         application.  (jdv)
1272
1273 0.74 Tue, April 7, 2009
1274     * Moose::Meta::Role
1275     * Moose::Meta::Method::Destructor
1276       - Include stack traces in the deprecation warnings.
1277         (Florian Ragwitz)
1278
1279     * Moose::Meta::Class
1280       - Removed the long-deprecated _apply_all_roles method.
1281
1282     * Moose::Meta::TypeConstraint
1283       - Removed the long-deprecated union method.
1284
1285
1286 0.73_02 Mon, April 6, 2009
1287     * More deprecations and renamings
1288       - Moose::Meta::Method::Constructor
1289         - initialize_body => _initialize_body (this is always called
1290           when an object is constructed)
1291
1292     * Moose::Object
1293       - The DEMOLISHALL method could throw an exception during global
1294         destruction, meaning that your class's DEMOLISH methods would
1295         not be properly called. Reported by t0m.
1296
1297     * Moose::Meta::Method::Destructor
1298       - Destructor inlining was totally broken by the change to the
1299         is_needed method in 0.72_01. Now there is a test for this
1300         feature, and it works again.
1301
1302     * Moose::Util
1303       - Bold the word 'not' in the POD for find_meta (t0m)
1304
1305 0.73_01 Sun, April 5, 2009
1306     * Moose::*
1307       - Call user_class->meta in fewer places, with the eventual goal
1308         of allowing the user to rename or exclude ->meta
1309         altogether. Instead uses Class::MOP::class_of. (Sartak)
1310
1311     * Moose::Meta::Method::Accessor
1312       - If an attribute had a lazy default, and that value did not
1313         pass the attribute's type constraint, it did not get the
1314         message from the type constraint, instead using a generic
1315         message. Test provided by perigrin.
1316
1317     * Moose::Util::TypeConstraints
1318       - Add duck_type keyword. It's sugar over making sure an object
1319         can() a list of methods. This is easier than jrockway's
1320         suggestion to fork all of CPAN. (perigrin)
1321         - add tests and documentation (perigrin)
1322
1323     * Moose
1324       - Document the fact that init_meta() returns the target class's
1325         metaclass object. (hdp)
1326
1327     * Moose::Cookbook::Extending::Recipe1
1328     * Moose::Cookbook::Extending::Recipe2
1329     * Moose::Cookbook::Extending::Recipe3
1330     * Moose::Cookbook::Extending::Recipe4
1331       - Make init_meta() examples explicitly return the metaclass and
1332         point out this fact. (hdp)
1333
1334     * Moose::Cookbook::Basics::Recipe12
1335       - A new recipe, creating a custom meta-method class.
1336
1337     * Moose::Cookbook::Meta::Recipe6
1338       - A new recipe, creating a custom meta-method class.
1339
1340     * Moose::Meta::Class
1341     * Moose::Meta::Method::Constructor
1342       - Attribute triggers no longer receive the meta-attribute object
1343         as an argument in any circumstance. Previously, triggers
1344         called during instance construction were passed the
1345         meta-attribute, but triggers called by normal accessors were
1346         not. Fixes RT#44429, reported by Mark Swayne. (hdp)
1347
1348     * Moose::Manual::Attributes
1349       - Remove references to triggers receving the meta-attribute object as an
1350         argument. (hdp)
1351
1352     * Moose::Cookbook::FAQ
1353       - Remove recommendation for deprecated Moose::Policy and
1354         Moose::Policy::FollowPBP; recommend MooseX::FollowPBP
1355         instead. (hdp)
1356
1357     * Many methods have been renamed with a leading underscore, and a
1358       few have been deprecated entirely. The methods with a leading
1359       underscore are consider "internals only". People writing
1360       subclasses or extensions to Moose should feel free to override
1361       them, but they are not for "public" use.
1362
1363       - Moose::Meta::Class
1364         - check_metaclass_compatibility => _check_metaclass_compatibility
1365
1366       - Moose::Meta::Method::Accessor
1367         - initialize_body => _initialize_body (this is always called
1368           when an object is constructed)
1369         - /(generate_.*_method(?:_inline)?)/ => '_' . $1
1370
1371       - Moose::Meta::Method::Constructor
1372         - initialize_body => _initialize_body (this is always called
1373           when an object is constructed)
1374         - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
1375         - attributes => _attributes (now inherited from parent)
1376         - meta_instance => _meta_instance (now inherited from parent)
1377
1378       - Moose::Meta::Role
1379         - alias_method is deprecated. Use add_method
1380
1381 0.73 Fri, March 29, 2009
1382     * No changes from 0.72_01.
1383
1384 0.72_01 Thu, March 26, 2009
1385     * Everything
1386       - Almost every module has complete API documentation. A few
1387         methods (and even whole classes) have been intentionally
1388         excluded pending some rethinking of their APIs.
1389
1390     * Moose::Util::TypeConstraints
1391       - Calling subtype with a name as the only argument is now an
1392         exception. If you want an anonymous subtype do:
1393
1394          my $subtype = subtype as 'Foo';
1395
1396     * Moose::Cookbook::Meta::Recipe7
1397       - A new recipe, creating a custom meta-instance class.
1398
1399     * Moose::Cookbook::Basics::Recipe5
1400       - Fix various typos and mistakes. Includes a patch from Radu
1401         Greab.
1402
1403     * Moose::Cookbook::Basics::Recipe9
1404       - Link to this recipe from Moose.pm's builder blurb
1405
1406     * Moose::Exporter
1407       - When wrapping a function with a prototype, Moose::Exporter now
1408         makes sure the wrapped function still has the same
1409         prototype. (Daisuke Maki)
1410
1411     * Moose::Meta::Attribute
1412       - Allow a subclass to set lazy_build for an inherited
1413         attribute. (hdp)
1414
1415     * Makefile.PL
1416       - Explicitly depend on Data::OptList. We already had this dependency
1417         via Sub::Exporter, but since we're using it directly we're
1418         better off with it listed. (Sartak)
1419
1420     * Moose::Meta::Method::Constructor
1421       - Make it easier to subclass the inlining behaviour. (Ash
1422         Berlin)
1423
1424     * Moose::Manual::Delta
1425       - Details significant changes in the history of Moose, along
1426         with recommended workarounds.
1427
1428     * Moose::Manual::Contributing
1429       - Contributor's guide to Moose.
1430
1431     * Moose::Meta::Method::Constructor
1432       - The long-deprecated intialize_body method has been removed
1433         (yes, spelled like that).
1434
1435     * Moose::Meta::Method::Destructor
1436       - This is_needed method is now always a class method.
1437
1438     * Moose::Meta::Class
1439       - Changes to the internals of how make_immutable works to match
1440         changes in latest Class::MOP.
1441
1442 0.72 Mon, February 23, 2009
1443     * Moose::Object
1444     * Moose::Meta::Method::Constructor
1445       - A mutable class accepted Foo->new(undef) without complaint,
1446         while an immutable class would blow up with an unhelpful
1447         error. Now, in both cases we throw a helpful error
1448         instead. Reported by doy.
1449
1450 0.71_01 Sun, February 22, 2009
1451     * Moose::Cookbook
1452       - Hopefully fixed some POD errors in a few recipes that caused
1453         them to display weird on search.cpan.org.
1454
1455     * Moose::Util::TypeConstraints
1456       - Calling type or subtype without the sugar helpers (as, where,
1457         message) is now deprecated.
1458       - The subtype function tried hard to guess what you meant, but
1459         often got it wrong. For example:
1460
1461          my $subtype = subtype as 'ArrayRef[Object]';
1462
1463         This caused an error in the past, but now works as you'd
1464         expect.
1465
1466     * Everywhere
1467       - Make sure Moose.pm is loaded before calling
1468         Moose->throw_error. This wasn't normally an issue, but could
1469         bite you in weird cases.
1470
1471 0.71 Thu, February 19, 2009
1472     * Moose::Cookbook::Basics::Recipe11
1473       - A new recipe which demonstrates the use of BUILDARGS and
1474         BUILD. (Dave Rolsky)
1475
1476     * Moose::Cookbook::Roles::Recipe3
1477       - A new recipe, applying a role to an object instance. (Dave
1478         Rolsky)
1479
1480     * Moose::Exporter
1481       - Allow overriding specific keywords from "also" packages. (doy)
1482
1483     * Tests
1484       - Replace hardcoded cookbook tests with Test::Inline to ensure
1485         the tests match the actual code in the recipes. (Dave Rolsky)
1486
1487     * Moose::Cookbook
1488       - Working on the above turned up a number of little bugs in the
1489         recipe code. (Dave Rolsky)
1490
1491     * Moose::Util::TypeConstraints::Optimized
1492       - Just use Class::MOP for the optimized ClassName check. (Dave
1493         Rolsky)
1494
1495 0.70 Sat, February 14, 2009
1496     * Moose::Util::TypeConstraints
1497       - Added the RoleName type (stevan)
1498         - added tests for this (stevan)
1499
1500     * Moose::Cookbook::Basics::Recipe3
1501       - Updated the before qw[left right] sub to be a little more
1502         defensive about what it accepts (stevan)
1503         - added more tests to t/000_recipies/basics/003_binary_tree.t
1504           (stevan)
1505
1506     * Moose::Object
1507       - We now always call DEMOLISHALL, even if a class does not
1508         define DEMOLISH. This makes sure that method modifiers on
1509         DEMOLISHALL work as expected. (doy)
1510         - added tests for this (EvanCarroll)
1511
1512     * Moose::Util::MetaRole
1513       - Accept roles for the wrapped_method_metaclass (rafl)
1514         - added tests for this (rafl)
1515
1516     * Moose::Meta::Attribute
1517       - We no longer pass the meta-attribute object as a final
1518         argument to triggers. This actually changed for inlined code a
1519         while back, but the non-inlined version and the docs were
1520         still out of date.
1521
1522     * Tests
1523       - Some tests tried to use Test::Warn 0.10, which had bugs. Now
1524         they require 0.11. (Dave Rolsky)
1525
1526     * Documentation
1527       - Lots of small changes to the manual, cookbook, and
1528         elsewhere. These were based on feedback from various
1529         users, too many to list here. (Dave Rolsky)
1530
1531 0.69 Thu, February 12, 2009
1532     * Moose
1533       - Make some keyword errors use throw_error instead of croak
1534         since Moose::Exporter wraps keywords now (Sartak)
1535
1536     * Moose::Cookbook::*
1537       - Revised every recipe for style and clarity. Also moved some
1538         documentation out of cookbook recipes and into Moose::Manual
1539         pages. This work was funded as part of the Moose docs grant
1540         from TPF. (Dave Rolsky)
1541
1542     * Moose::Meta::Method::Delegation
1543       - If the attribute doing the delegation was not populated, the
1544         error message did not specify the attribute name
1545         properly. (doy)
1546
1547 0.68 Wed, February 4, 2009
1548     * POD
1549       - Many spelling, typo, and formatting fixes by daxim.
1550
1551     * Moose::Manual::Attributes
1552       - The NAME section in the POD used "Attribute" so search.cpan
1553         didn't resolve links from other documents properly.
1554
1555     * Moose::Meta::Method::Overriden
1556       - Now properly spelled as Overridden. Thanks to daxim for
1557         noticing this.
1558
1559 0.67 Tue, February 3, 2009
1560     * Moose::Manual::*
1561       - Lots of little typo fixes and a few clarifications. Several
1562         pages didn't have proper titles, and so weren't actually
1563         visible on search.cpan.org. Thanks to hanekomu for a variety
1564         of fixes and formatting improvements.
1565
1566 0.66 Tue, February 3, 2009
1567     * Moose::Manual
1568       - This is a brand new, extensive manual for Moose. This aims to
1569         provide a complete introduction to all of Moose's
1570         features. This work was funded as part of the Moose docs grant
1571         from TPF. (Dave Rolsky)
1572
1573     * Moose::Meta::Attribute
1574       - Added a delegation_metaclass method to replace a hard-coded
1575         use of Moose::Meta::Method::Delegation. (Dave Rolsky)
1576
1577     * Moose::Util::TypeConstraints
1578       - If you created a subtype and passed a parent that Moose didn't
1579         know about, it simply ignored the parent. Now it automatically
1580         creates the parent as a class type. This may not be what you
1581         want, but is less broken than before. (Dave Rolsky)
1582
1583     * Moose::Util::TypeConstraints
1584       - This module tried throw errors by calling Moose->throw_error,
1585         but it did not ensure that Moose was loaded first. This could
1586         cause very unhelpful errors when it tried to throw an error
1587         before Moose was loaded. (Dave Rolsky)
1588
1589     * Moose::Util::TypeConstraints
1590       - You could declare a name with subtype such as "Foo!Bar" that
1591         would be allowed, but if you used it in a parameterized type
1592         such as "ArrayRef[Foo!Bar]" it wouldn't work. We now do some
1593         vetting on names created via the sugar functions, so that they
1594         can only contain alphanumerics, ":", and ".". (Dave Rolsky)
1595
1596 0.65 Thu, January 22, 2009
1597     * Moose and Moose::Meta::Method::Overridden
1598       - If an overridden method called super(), and then the
1599         superclass's method (not overridden) _also_ called super(),
1600         Moose went into an endless recursion loop. Test provided by
1601         Chris Prather. (Dave Rolsky)
1602
1603     * Moose::Meta::TypeConstraint
1604       - All methods are now documented. (gphat)
1605
1606     * t/100_bugs/011_DEMOLISH_eats_exceptions.t
1607       - Fixed some bogus failures that occurred because we tried to
1608         validate filesystem paths in a very ad-hoc and
1609         not-quite-correct way. (Dave Rolsky)
1610
1611     * Moose::Util::TypeConstraints
1612       - Added maybe_type to exports. See docs for details. (rjbs)
1613
1614     * Moose
1615       - Added Moose::Util::TypeConstraints to the SEE ALSO
1616         section. (pjf)
1617
1618     * Moose::Role
1619       - Methods created via an attribute can now fulfill a "requires"
1620         declaration for a role. (nothingmuch)
1621
1622     * Moose::Meta::Method::*
1623       - Stack traces from inlined code will now report its line and
1624         file as being in your class, as opposed to in Moose
1625         guts. (nothingmuch).
1626
1627 0.64 Wed, December 31, 2008
1628     * Moose::Meta::Method::Accessor
1629       - Always inline predicate and clearer methods (Sartak)
1630
1631     * Moose::Meta::Attribute
1632       - Support for parameterized traits (Sartak)
1633       - verify_against_type_constraint method to avoid duplication
1634         and enhance extensibility (Sartak)
1635
1636     * Moose::Meta::Class
1637       - Tests (but no support yet) for parameterized traits (Sartak)
1638
1639     * Moose
1640       - Require Class::MOP 0.75+, which has the side effect of making
1641         sure we work on Win32. (Dave Rolsky)
1642
1643 0.63 Mon, December 8, 2008
1644     * Moose::Unsweetened
1645       - Some small grammar tweaks and bug fixes in non-Moose example
1646         code. (Dave Rolsky)
1647
1648 0.62_02 Fri, December 5, 2008
1649     * Moose::Meta::Role::Application::ToClass
1650       - When a class does not provide all of a role's required
1651         methods, the error thrown now mentions all of the missing
1652         methods, as opposed to just the first one found. Requested by
1653         Curtis Poe (RT #41119). (Dave Rolsky)
1654
1655     * Moose::Meta::Method::Constructor
1656       - Moose will no longer inline a constructor for your class
1657         unless it inherits its constructor from Moose::Object, and
1658         will warn when it doesn't inline. If you want to force
1659         inlining anyway, pass "replace_constructor => 1" to
1660         make_immutable. Addresses RT #40968, reported by Jon
1661         Swartz. (Dave Rolsky)
1662       - The quoting of default values could be broken if the default
1663         contained a single quote ('). Now we use quotemeta to escape
1664         anything potentially dangerous in the defaults. (Dave Rolsky)
1665
1666 0.62_01 Wed, December 3, 2008
1667     * Moose::Object
1668       - use the method->execute API for BUILDALL
1669         and DEMOLISHALL (Sartak)
1670
1671     * Moose::Util::TypeConstraints
1672       - We now make all the type constraint meta classes immutable
1673         before creating the default types provided by Moose. This
1674         should make loading Moose a little faster. (Dave Rolsky)
1675
1676 0.62 Wed November 26, 2008
1677     * Moose::Meta::Role::Application::ToClass
1678       Moose::Meta::Role::Application::ToRole
1679       - fixed issues where excluding and aliasing the
1680         same methods for a single role did not work
1681         right (worked just fine with multiple
1682         roles) (stevan)
1683         - added test for this (stevan)
1684
1685     * Moose::Meta::Role::Application::RoleSummation
1686       - fixed the error message when trying to compose
1687         a role with a role it excludes (Sartak)
1688
1689     * Moose::Exporter
1690       - Catch another case where recursion caused the value
1691         of $CALLER to be stamped on (t0m)
1692         - added test for this (t0m)
1693
1694     * Moose
1695       - Remove the make_immutable keyword, which has been
1696         deprecated since April. It breaks metaclasses that
1697         use Moose without no Moose (Sartak)
1698
1699     * Moose::Meta::Attribute
1700       - Removing an attribute from a class now also removes delegation
1701         (handles) methods installed for that attribute (t0m)
1702         - added test for this (t0m)
1703
1704     * Moose::Meta::Method::Constructor
1705       - An attribute with a default that looked like a number (but was
1706         really a string) would accidentally be treated as a number
1707         when the constructor was made immutable (perigrin)
1708         - added test for this (perigrin)
1709
1710     * Moose::Meta::Role
1711       - create method for constructing a role
1712         dynamically (Sartak)
1713         - added test for this (Sartak)
1714       - anonymous roles! (Sartak)
1715         - added test for this (Sartak)
1716
1717     * Moose::Role
1718       - more consistent error messages (Sartak)
1719
1720     * Moose::Cookbook::Roles::Recipe1
1721       - attempt to explain why a role that just requires
1722         methods is useful (Sartak)
1723
1724 0.61 Fri November 7, 2008
1725     * Moose::Meta::Attribute
1726       - When passing a role to handles, it will be loaded if necessary
1727         (perigrin)
1728
1729     * Moose::Meta::Class
1730       - Method objects returned by get_method (and other methods)
1731         Could end up being returned without an associated_metaclass
1732         attribute. Removing get_method_map, which is provided by
1733         Class::MOP::Class, fixed this. The Moose version did nothing
1734         different from its parent except introduce a bug. (Dave Rolsky)
1735         - added tests for this (jdv79)
1736
1737     * Various
1738       - Added a $VERSION to all .pm files which didn't have one. Fixes
1739         RT #40049, reported by Adam Kennedy. (Dave Rolsky)
1740
1741     * Moose::Cookbook::Basics::Recipe4
1742     * Moose::Cookbook::Basics::Recipe6
1743       - These files had spaces on the first line of the SYNOPSIS, as
1744         opposed to a totally empty line. According to RT #40432, this
1745         confuses POD parsers. (Dave Rolsky)
1746
1747 0.60 Fri October 24, 2008
1748     * Moose::Exporter
1749       - Passing "-traits" when loading Moose caused the Moose.pm
1750         exports to be broken. Reported by t0m. (Dave Rolsky)
1751         - Tests for this bug. (t0m)
1752
1753     * Moose::Util
1754       - Change resolve_metaclass alias to use the new
1755         load_first_existing_class function. This makes it a lot
1756         simpler, and also around 5 times faster. (t0m)
1757       - Add caching to resolve_metaclass_alias, which gives an order
1758         of magnitude speedup to things which repeatedly call the
1759         Moose::Meta::Attribute->does method, notably MooseX::Storage
1760         (t0m)
1761
1762     * Moose::Util::TypeConstraint
1763       - Put back the changes for parameterized constraints that
1764         shouldn't have been removed in 0.59. We still cannot parse
1765         them, but MooseX modules can create them in some other
1766         way. See the 0.58 changes for more details. (jnapiorkowski)
1767       - Changed the way subtypes are created so that the job is
1768         delegated to a type constraint parent. This clears up some
1769         hardcoded checking and should allow correct subtypes of
1770         Moose::Meta::Type::Constraint. Don't rely on this new API too
1771         much (create_child_type) because it may go away in the
1772         future. (jnapiorkowski)
1773
1774     * Moose::Meta::TypeConstraint::Union
1775       - Type constraint names are sorted as strings, not numbers.
1776         (jnapiorkowski)
1777
1778     * Moose::Meta::TypeConstraint::Parameterizable
1779       - New parameterize method. This can be used as a factory method
1780         to make a new type constraint with a given parameterized
1781         type. (jnapiorkowski)
1782         - added tests (jnapiorkowski)
1783
1784 0.59 Tue October 14, 2008
1785     * Moose
1786       - Add abridged documentation for builder/default/initializer/
1787         predicate, and link to more details sections in
1788         Class::MOP::Attribute. (t0m)
1789
1790     * Moose::Util::TypeConstraints
1791       - removed prototypes from all but the &-based stuff (mst)
1792
1793     * Moose::Util::TypeConstraints
1794       - Creating a anonymous subtype with both a constraint and a
1795         message failed with a very unhelpful error, but should just
1796         work. Reported by t0m. (Dave Rolsky)
1797
1798     * Tests
1799       - Some tests that used Test::Warn if it was available failed
1800         with older versions of Test::Warn. Reported by Fayland. (Dave
1801         Rolsky)
1802       - Test firing behavior of triggers in relation to builder/default/
1803         lazy_build. (t0m)
1804       - Test behavior of equals/is_a_type_of/is_a_subtype_of for all
1805         kinds of supported type. (t0m)
1806
1807     * Moose::Meta::Class
1808       - In create(), do not pass "roles" option to the superclass
1809         - added related test that creates an anon metaclass with
1810           a required attribute
1811
1812     * Moose::Meta::TypeConstraint::Class
1813     * Moose::Meta::TypeConstraint::Role
1814       - Unify behavior of equals/is_a_type_of/is_a_subtype_of with
1815         other types (as per change in 0.55_02). (t0m)
1816
1817     * Moose::Meta::TypeConstraint::Registry
1818       - Fix warning when dealing with unknown type names (t0m)
1819
1820     * Moose::Util::TypeConstraints
1821       - Reverted changes from 0.58 related to handle parameterized
1822         types. This caused random failures on BSD and Win32 systems,
1823         apparently related to the regex engine. This means that Moose
1824         can no longer parse structured type constraints like
1825         ArrayRef[Int,Int] or HashRef[name=>Str]. This will be
1826         supported in a slightly different way via MooseX::Types some
1827         time in the future. (Dave Rolsky)
1828
1829 0.58 Sat September 20, 2008
1830     !! This release has an incompatible change regarding !!
1831     !! how roles add methods to a class !!
1832
1833     * Roles and role application
1834       ! Roles now add methods by calling add_method, not
1835         alias_method. They make sure to always provide a method
1836         object, which will be cloned internally. This means that it is
1837         now possible to track the source of a method provided by a
1838         role, and even follow its history through intermediate roles.
1839
1840         This means that methods added by a role now show up when
1841         looking at a class's method list/map. (Dave Rolsky)
1842
1843     * Makefile.PL
1844       - From this release on, we'll try to maintain a list of
1845         conflicting modules, and warn you if you have one
1846         installed. For example, this release conflicts with ...
1847         - MooseX::Singleton        <= 0.11
1848         - MooseX::Params::Validate <= 0.05
1849         - Fey::ORM                 <= 0.10
1850
1851         In general, we try to not break backwards compatibility for
1852         most Moose users, but MooseX modules and other code which
1853         extends Moose's metaclasses is often affected by very small
1854         changes in the Moose internals.
1855
1856     * Moose::Meta::Method::Delegation
1857     * Moose::Meta::Attribute
1858       - Delegation methods now have their own method class. (Dave
1859         Rolsky)
1860
1861     * Moose::Meta::TypeConstraint::Parameterizable
1862       - Added a new method 'parameterize' which is basically a factory
1863         for the containing constraint. This makes it easier to create
1864         new types of parameterized constraints. (jnapiorkowski)
1865
1866     * Moose::Meta::TypeConstraint::Union
1867       - Changed the way Union types canonicalize their names to follow
1868         the normalized TC naming rules, which means we strip all
1869         whitespace. (jnapiorkowski)
1870
1871     * Moose::Util::TypeConstraints
1872       - Parameter and Union args are now sorted, this makes Int|Str
1873         the same constraint as Str|Int. (jnapiorkowski)
1874       - Changes to the way Union types are parsed to more correctly
1875         stringify their names. (jnapiorkowski)
1876       - When creating a parameterized type, we now use the new
1877         parameterize method. (jnapiorkowski)
1878       - Incoming type constraint strings are now normalized to remove
1879         all whitespace differences. (jnapiorkowski)
1880       - Changed the way we parse type constraint strings so that we now
1881         match TC[Int,Int,...] and TC[name=>Str] as parameterized type
1882         constraints. This lays the foundation for more flexible type
1883         constraint implementations.
1884
1885     * Tests and docs for all the above. (jnapiorkowski)
1886
1887     * Moose::Exporter
1888     * Moose
1889       - Moose::Exporter will no longer remove a subroutine that the
1890         exporting package re-exports. Moose re-exports the
1891         Carp::confess function, among others. The reasoning is that we
1892         cannot know whether you have also explicitly imported those
1893         functions for your own use, so we err on the safe side and
1894         always keep them. (Dave Rolsky)
1895         - added tests for this (rafl)
1896
1897     * Moose::Meta::Class
1898       - Changes to how we fix metaclass compatibility that are much
1899         too complicated to go into. The summary is that Moose is much
1900         less likely to complain about metaclass incompatibility
1901         now. In particular, if two metaclasses differ because
1902         Moose::Util::MetaRole was used on the two corresponding
1903         classes, then the difference in roles is reconciled for the
1904         subclass's metaclass. (Dave Rolsky)
1905       - Squashed an warning in _process_attribute (thepler)
1906
1907     * Moose::Meta::Role
1908       - throw exceptions (sooner) for invalid attribute names (thepler)
1909         - added tests for this (thepler)
1910
1911     * Moose::Util::MetaRole
1912       - If you explicitly set a constructor or destructor class for a
1913         metaclass object, and then applied roles to the metaclass,
1914         that explicitly set class would be lost and replaced with the
1915         default.
1916
1917     * Moose::Meta::Class
1918     * Moose::Meta::Attribute
1919     * Moose::Meta::Method
1920     * Moose
1921     * Moose::Object
1922     * Moose::Error::Default
1923     * Moose::Error::Croak
1924     * Moose::Error::Confess
1925       - All instances of confess() changed to use overridable
1926         C<throw_error> method. This method ultimately calls a class
1927         constructor, and you can change the class being called. In
1928         addition, errors now pass more information than just a string.
1929         The default C<error_class> behaves like C<Carp::confess>, so
1930         the behavior is not visibly different for end users.
1931
1932 0.57 Wed September 3, 2008
1933     * Moose::Intro
1934       - A new bit of doc intended to introduce folks familiar with
1935         "standard" Perl 5 OO to Moose concepts. (Dave Rolsky)
1936
1937     * Moose::Unsweetened
1938       - Shows examples of two classes, each done first with and then
1939         without Moose. This makes a nice parallel to
1940         Moose::Intro. (Dave Rolsky)
1941
1942     * Moose::Util::TypeConstraints
1943       - Fixed a bug in find_or_parse_type_constraint so that it
1944         accepts a Moose::Meta::TypeConstraint object as the parent
1945         type, not just a name (jnapiorkowski)
1946         - added tests (jnapiorkowski)
1947
1948     * Moose::Exporter
1949       - If Sub::Name was not present, unimporting failed to actually
1950         remove some sugar subs, causing test failures (Dave Rolsky)
1951
1952 0.56 Mon September 1, 2008
1953     For those not following the series of dev releases, there are
1954     several major changes in this release of Moose.
1955       ! Moose::init_meta should now be called as a method. See the
1956         docs for details.
1957
1958       - Major performance improvements by nothingmuch.
1959
1960       - New modules for extension writers, Moose::Exporter and
1961         Moose::Util::MetaRole by Dave Rolsky.
1962
1963       - Lots of doc improvements and additions, especially in the
1964         cookbook sections.
1965
1966       - Various bug fixes.
1967
1968     * Removed all references to the experimental-but-no-longer-needed
1969       Moose::Meta::Role::Application::ToMetaclassInstance.
1970
1971     * Require Class::MOP 0.65.
1972
1973 0.55_04 Sat August 30, 2008
1974     * Moose::Util::MetaRole
1975     * Moose::Cookbook::Extending::Recipe2
1976       - This simplifies the application of roles to any meta class, as
1977         well as the base object class. Reimplemented metaclass traits
1978         using this module. (Dave Rolsky)
1979
1980     * Moose::Cookbook::Extending::Recipe1
1981       - This a new recipe, an overview of various ways to write Moose
1982         extensions (Dave Rolsky)
1983
1984     * Moose::Cookbook::Extending::Recipe3
1985     * Moose::Cookbook::Extending::Recipe4
1986       - These used to be Extending::Recipe1 and Extending::Recipe2,
1987         respectively.
1988
1989 0.55_03 Fri August 29, 2008
1990     * No changes from 0.55_02 except increasing the Class::MOP
1991       dependency to 0.64_07.
1992
1993 0.55_02 Fri August 29, 2008
1994     * Makefile.PL and Moose.pm
1995       - explicitly require Perl 5.8.0+ (Dave Rolsky)
1996
1997     * Moose::Util::TypeConstraints
1998       - Fix warnings from find_type_constraint if the type is not
1999         found (t0m).
2000
2001     * Moose::Meta::TypeConstraint
2002       - Predicate methods (equals/is_a_type_of/is_subtype_of) now
2003         return false if the type you specify cannot be found in the
2004         type registry, rather than throwing an unhelpful and
2005         coincidental exception. (t0m).
2006         - added docs & test for this (t0m)
2007
2008     * Moose::Meta::TypeConstraint::Registry
2009       - add_type_constraint now throws an exception if a parameter is
2010         not supplied (t0m).
2011         - added docs & test for this (t0m)
2012
2013     * Moose::Cookbook::FAQ
2014       - Added a faq entry on the difference between "role" and "trait"
2015         (t0m)
2016
2017     * Moose::Meta::Role
2018       - Fixed a bug that caused role composition to not see a required
2019         method when that method was provided by another role being
2020         composed at the same time. (Dave Rolsky)
2021         - test and bug finding (tokuhirom)
2022
2023 0.55_01 Wed August 20, 2008
2024
2025     !! Calling Moose::init_meta as a function is now         !!
2026     !! deprecated. Please see the Moose.pm docs for details. !!
2027
2028     * Moose::Meta::Method::Constructor
2029       - Fix inlined constructor so that values produced by default
2030         or builder methods are coerced as required. (t0m)
2031         - added test for this (t0m)
2032
2033     * Moose::Meta::Attribute
2034       - A lazy attribute with a default or builder did not attempt to
2035         coerce the default value. The immutable code _did_
2036         coerce. (t0m)
2037         - added test for this (t0m)
2038
2039     * Moose::Exporter
2040       - This is a new helper module for writing "Moose-alike"
2041         modules. This should make the lives of MooseX module authors
2042         much easier. (Dave Rolsky)
2043
2044     * Moose
2045     * Moose::Cookbook::Meta::Recipe5
2046       - Implemented metaclass traits (and wrote a recipe for it):
2047
2048           use Moose -traits => 'Foo'
2049
2050         This should make writing small Moose extensions a little
2051         easier (Dave Rolsky)
2052
2053     * Moose::Cookbook::Basics::Recipe1
2054       - Removed any examples of direct hashref access, and applied an
2055         editorial axe to reduce verbosity. (Dave Rolsky)
2056
2057     * Moose::Cookbook::Basics::Recipe1
2058       - Also applied an editorial axe here. (Dave Rolsky)
2059
2060     * Moose
2061     * Moose::Cookbook::Extending::Recipe1
2062     * Moose::Cookbook::Extending::Recipe2
2063       - Rewrote extending and embedding moose documentation and
2064         recipes to use Moose::Exporter (Dave Rolsky)
2065
2066     * Moose
2067     * Moose::Role
2068       - These two modules now warn when you load them from the main
2069         package "main" package, because we will not export sugar to
2070         main. Previously it just did nothing. (Dave Rolsky)
2071
2072     * Moose::Role
2073       - Now provide an init_meta method just like Moose.pm, and you
2074         can call this to provide an alternate role metaclass. (Dave
2075         Rolsky and nothingmuch)
2076       - get_method_map now respects the package cache flag (nothingmuch)
2077
2078     * Moose::Meta::Role
2079       - Two new methods - add_method and wrap_method_body
2080         (nothingmuch)
2081
2082     * many modules
2083       - Optimizations including allowing constructors to accept hash
2084         refs, making many more classes immutable, and making
2085         constructors immutable. (nothingmuch)
2086
2087 0.55 Sun August 3, 2008
2088     * Moose::Meta::Attribute
2089       - breaking down the way 'handles' methods are
2090         created so that the process can be more easily
2091         overridden by subclasses (stevan)
2092
2093     * Moose::Meta::TypeConstraint
2094       - fixing what is passed into a ->message with
2095         the type constraints (RT #37569)
2096         - added tests for this (Charles Alderman)
2097
2098     * Moose::Util::TypeConstraints
2099       - fix coerce to accept anon types like subtype can (mst)
2100
2101     * Moose::Cookbook
2102       - reorganized the recipes into sections - Basics, Roles, Meta,
2103         Extending - and wrote abstracts for each section (Dave Rolsky)
2104
2105     * Moose::Cookbook::Basics::Recipe10
2106       - A new recipe that demonstrates operator overloading
2107         in combination with Moose. (bluefeet)
2108
2109     * Moose::Cookbook::Meta::Recipe1
2110       - an introduction to what meta is and why you'd want to make
2111         your own metaclass extensions (Dave Rolsky)
2112
2113     * Moose::Cookbook::Meta::Recipe4
2114       - a very simple metaclass example (Dave Rolsky)
2115
2116     * Moose::Cookbook::Extending::Recipe1
2117       - how to write a Moose-alike module to use your own object base
2118         class (Dave Rolsky)
2119
2120     * Moose::Cookbook::Extending::Recipe2
2121       - how to write modules with an API just like C<Moose.pm> (Dave
2122         Rolsky)
2123
2124     * all documentation
2125       - Tons of fixes, both syntactical and grammatical (Dave
2126         Rolsky, Paul Fenwick)
2127
2128 0.54 Thurs. July 3, 2008
2129     ... this is not my day today ...
2130
2131     * Moose::Meta::Attribute
2132       - fixed legal_options_for_inheritance such that
2133         clone_and_inherit options still works for
2134         Class::MOP::Attribute objects and therefore
2135         does not break MooseX::AttributeHelpers
2136         (stevan)
2137
2138 0.53 Thurs. July 3, 2008
2139     * Whoops, I guess I should run 'make manifest' before
2140       actually releasing the module. No actual changes
2141       in this release, except the fact that it includes
2142       the changes that I didn't include in the last
2143       release. (stevan--)
2144
2145 0.52 Thurs. July 3, 2008
2146     * Moose
2147       - added "FEATURE REQUESTS" section to the Moose docs
2148         to properly direct people (stevan) (RT #34333)
2149       - making 'extends' croak if it is passed a Role since
2150         this is not ever something you want to do
2151         (fixed by stevan, found by obra)
2152         - added tests for this (stevan)
2153
2154     * Moose::Object
2155       - adding support for DOES (as in UNIVERSAL::DOES)
2156         (nothingmuch)
2157         - added test for this
2158
2159     * Moose::Meta::Attribute
2160       - added legal_options_for_inheritance (wreis)
2161         - added tests for this (wreis)
2162
2163     * Moose::Cookbook::Snacks::*
2164       - removed some of the unfinished snacks that should
2165         not have been released yet. Added some more examples
2166         to the 'Keywords' snack. (stevan)
2167
2168     * Moose::Cookbook::Style
2169       - added general Moose "style guide" of sorts to the
2170         cookbook (nothingmuch) (RT #34335)
2171
2172     * t/
2173       - added more BUILDARGS tests (stevan)
2174
2175 0.51 Thurs. Jun 26, 2008
2176     * Moose::Role
2177       - add unimport so "no Moose::Role" actually does
2178         something (sartak)
2179
2180     * Moose::Meta::Role::Application::ToRole
2181       - when RoleA did RoleB, and RoleA aliased a method from RoleB in
2182         order to provide its own implementation, that method still got
2183         added to the list of required methods for consumers of
2184         RoleB. Now an aliased method is only added to the list of
2185         required methods if the role doing the aliasing does not
2186         provide its own implementation. See Recipe 11 for an example
2187         of all this. (Dave Rolsky)
2188         - added tests for this
2189
2190     * Moose::Meta::Method::Constructor
2191       - when a single argument that wasn't a hashref was provided to
2192         an immutabilized constructor, the error message was very
2193         unhelpful, as opposed to the non-immutable error. Reported by
2194         dew. (Dave Rolsky)
2195         - added test for this (Dave Rolsky)
2196
2197     * Moose::Meta::Attribute
2198       - added support for meta_attr->does("ShortAlias") (sartak)
2199         - added tests for this (sartak)
2200       - moved the bulk of the `handles` handling to the new
2201         install_delegation method (Stevan)
2202
2203     * Moose::Object
2204       - Added BUILDARGS, a new step in new()
2205
2206     * Moose::Meta::Role::Application::RoleSummation
2207       - fix typos no one ever sees (sartak)
2208
2209     * Moose::Util::TypeConstraints
2210     * Moose::Meta::TypeConstraint
2211     * Moose::Meta::TypeCoercion
2212       - Attempt to work around the ??{ } vs. threads issue
2213         (not yet fixed)
2214       - Some null_constraint optimizations
2215
2216 0.50 Thurs. Jun 11, 2008
2217     - Fixed a version number issue by bumping all modules
2218       to 0.50.
2219
2220 0.49 Thurs. Jun 11, 2008
2221     !! This version now approx. 20-25% !!
2222     !! faster with new Class::MOP 0.59 !!
2223
2224     * Moose::Meta::Attribute
2225       - fixed how the is => (ro|rw) works with
2226         custom defined reader, writer and accessor
2227         options.
2228         - added docs for this (TODO).
2229         - added tests for this (Thanks to Penfold)
2230       - added the custom attribute alias for regular
2231         Moose attributes which is "Moose"
2232       - fix builder and default both being used
2233         (groditi)
2234
2235     * Moose
2236       Moose::Meta::Class
2237       Moose::Meta::Attribute
2238       Moose::Meta::Role
2239       Moose::Meta::Role::Composite
2240       Moose::Util::TypeConstraints
2241       - switched usage of reftype to ref because
2242         it is much faster
2243
2244     * Moose::Meta::Role
2245       - changing add_package_symbol to use the new
2246         HASH ref form
2247
2248     * Moose::Object
2249       - fixed how DEMOLISHALL is called so that it
2250         can be overrided in subclasses (thanks to Sartak)
2251         - added test for this (thanks to Sartak)
2252
2253     * Moose::Util::TypeConstraints
2254       - move the ClassName type check code to
2255         Class::MOP::is_class_loaded (thanks to Sartak)
2256
2257     * Moose::Cookbook::Recipe11
2258       - add tests for this (thanks to tokuhirom)
2259
2260 0.48 Thurs. May 29, 2008
2261     (early morning release engineering)--
2262
2263     - fixing the version in Moose::Meta::Method::Destructor
2264       which was causing the indexer to choke
2265
2266 0.47 Thurs. May 29, 2008
2267     (late night release engineering)--
2268
2269     - fixing the version is META.yml, no functional
2270       changes in this release
2271
2272 0.46 Wed. May 28, 2008
2273     !! This version now approx. 20-25% !!
2274     !! faster with new Class::MOP 0.57 !!
2275
2276     * Moose::Meta::Class
2277       - some optimizations of the &initialize method
2278         since it is called so often by &meta
2279
2280     * Moose::Meta::Class
2281       Moose::Meta::Role
2282       - now use the get_all_package_symbols from the
2283         updated Class::MOP, test suite is now 10 seconds
2284         faster
2285
2286     * Moose::Meta::Method::Destructor
2287       - is_needed can now also be called as a class
2288         method for immutablization to check if the
2289         destructor object even needs to be created
2290         at all
2291
2292     * Moose::Meta::Method::Destructor
2293       Moose::Meta::Method::Constructor
2294       - added more descriptive error message to help
2295         keep people from wasting time tracking an error
2296         that is easily fixed by upgrading.
2297
2298 0.45 Saturday, May 24, 2008
2299     * Moose
2300       - Because of work in Class::MOP 0.57, all
2301         XS based functionality is now optional
2302         and a Pure Perl version is supplied
2303         - the CLASS_MOP_NO_XS environment variable
2304           can now be used to force non-XS versions
2305           to always be used
2306         - several of the packages have been tweaked
2307           to take care of this, mostly we added
2308           support for the package_name and name
2309           variables in all the Method metaclasses
2310       - before/around/after method modifiers now
2311         support regexp matching of names
2312         (thanks to Takatoshi Kitano)
2313         - tests added for this
2314         - NOTE: this only works for classes, it
2315           is currently not supported in roles,
2316           but, ... patches welcome
2317       - All usage of Carp::confess have been replaced
2318         by Carp::croak in the "keyword" functions since
2319         the stack trace is usually not helpful
2320
2321     * Moose::Role
2322       - All usage of Carp::confess have been replaced
2323         by Carp::croak in the "keyword" functions since
2324         the stack trace is usually not helpful
2325       - The 'has' keyword for roles now accepts the
2326         same array ref form that Moose.pm does
2327         (has [qw/foo bar/] => (is => 'rw', ...))
2328         - added test for this
2329
2330     * Moose::Meta::Attribute
2331       - trigger on a ro-attribute is no longer an
2332         error, as it's useful to trigger off of the
2333         constructor
2334
2335     * Moose::Meta::Class
2336       - added same 'add_package_symbol' fix as in
2337         Class::MOP 0.57
2338
2339     * Moose::Util
2340       - does_role now handles non-Moose classes
2341         more gracefully
2342         - added tests for this
2343       - added the 'add_method_modifier' function
2344         (thanks to Takatoshi Kitano)
2345
2346     * Moose::Util::TypeConstraints
2347       - subtypes of parameterizable types now are
2348         themselves parameterizable types
2349
2350     * Moose::Meta::Method::Constructor
2351       - fixed bug where trigger was not being
2352         called by the inlined immutable
2353         constructors
2354         - added test for this (thanks to Caelum)
2355
2356     * Moose::Meta::Role::Application::ToInstance
2357       - now uses the metaclass of the instance
2358         (if possible) to create the anon-class
2359         (thanks Jonathan Rockway)
2360
2361     * Moose::Cookbook::Recipe22
2362       - added the meta-attribute trait recipe
2363         (thanks to Sartak)
2364
2365     * t/
2366       - fixed hash-ordering test bug that was
2367         causing occasional cpantester failures
2368       - renamed the t/000_recipe/*.t tests to be
2369         more descriptive (thanks to Sartak)
2370
2371 0.44 Sat. May 10, 2008
2372     * Moose
2373       - made make_immutable warning cluck to
2374         show where the error is (thanks mst)
2375
2376     * Moose::Object
2377       - BUILDALL and DEMOLISHALL now call
2378         ->body when looping through the
2379         methods, to avoid the overloaded
2380         method call.
2381       - fixed issue where DEMOLISHALL was
2382         eating the $@ values, and so not
2383         working correctly, it still kind of
2384         eats them, but so does vanilla perl
2385         - added tests for this
2386
2387     * Moose::Cookbook::Recipe7
2388       - added new recipe for immutable
2389         functionality (thanks Dave Rolsky)
2390
2391     * Moose::Cookbook::Recipe9
2392       - added new recipe for builder and
2393         lazy_build (thanks Dave Rolsky)
2394
2395     * Moose::Cookbook::Recipe11
2396       - added new recipe for method aliasing
2397         and exclusion with Roles (thanks Dave Rolsky)
2398
2399     * t/
2400       - fixed Win32 test failure (thanks spicyjack)
2401
2402     ~ removed Build.PL and Module::Build compat
2403       since Module::Install has done that.
2404
2405 0.43 Wed. April, 30, 2008
2406     * NOTE TO SELF:
2407         drink more coffee before
2408         doing release engineering
2409
2410     - whoops, forgot to do the smolder tests,
2411       and we broke some of the custom meta-attr
2412       modules. This fixes that.
2413
2414 0.42 Mon. April 28, 2008
2415     - some bad tests slipped by, nothing else
2416       changed in this release (cpantesters++)
2417
2418     - upped the Class::MOP dependency to 0.55
2419       since we have tests which need the C3
2420       support
2421
2422 0.41 Mon. April 28, 2008
2423     ~~ numerous documentation updates ~~
2424
2425     - Changed all usage of die to Carp::croak for better
2426       error reporting (initial patch by Tod Hagan)
2427
2428     ** IMPORTANT NOTE **
2429     - the make_immutable keyword is now deprecated, don't
2430       use it in any new code and please fix your old code
2431       as well. There will be 2 releases, and then it will
2432       be removed.
2433
2434     * Moose
2435       Moose::Role
2436       Moose::Meta::Class
2437       - refactored the way inner and super work to avoid
2438         any method/@ISA cache penalty (nothingmuch)
2439
2440     * Moose::Meta::Class
2441       - fixing &new_object to make sure trigger gets the
2442         coerced value (spotted by Charles Alderman on the
2443         mailing list)
2444         - added test for this
2445
2446     * Moose::Meta::Method::Constructor
2447       - immutable classes which had non-lazy attributes were calling
2448         the default generating sub twice in the constructor. (bug
2449         found by Jesse Luehrs, fixed by Dave Rolsky)
2450         - added tests for this (Dave Rolsky)
2451       - fix typo in initialize_body method (nothingmuch)
2452
2453     * Moose::Meta::Method::Destructor
2454       - fix typo in initialize_body method (nothingmuch)
2455
2456     * Moose::Meta::Method::Overriden
2457       Moose::Meta::Method::Augmented
2458       - moved the logic for these into their own
2459         classes (nothingmuch)
2460
2461     * Moose::Meta::Attribute
2462       - inherited attributes may now be extended without
2463         restriction on the type ('isa', 'does') (Sartak)
2464         - added tests for this (Sartak)
2465       - when an attribute property is malformed (such as lazy without
2466         a default), give the name of the attribute in the error
2467         message (Sartak)
2468       - added the &applied_traits and &has_applied_traits methods
2469         to allow introspection of traits
2470         - added tests for this
2471       - moved 'trait' and 'metaclass' argument handling to here from
2472         Moose::Meta::Class
2473       - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
2474         '+foo' syntax) (nothingmuch)
2475         - added tests for this (t0m)
2476
2477     * Moose::Object
2478       - localize $@ inside DEMOLISHALL to avoid it
2479         eating $@ (found by Ernesto)
2480         - added test for this (thanks to Ernesto)
2481
2482     * Moose::Util::TypeConstraints
2483       - &find_type_constraint now DWIMs when given an
2484         type constraint object or name (nothingmuch)
2485       - &find_or_create_type_constraint superseded with a number of more
2486         specific functions:
2487         - find_or_create_{isa,does}_type_constraint
2488         - find_or_parse_type_constraint
2489
2490     * Moose::Meta::TypeConstraint
2491       Moose::Meta::TypeConstraint::Class
2492       Moose::Meta::TypeConstraint::Role
2493       Moose::Meta::TypeConstraint::Enum
2494       Moose::Meta::TypeConstraint::Union
2495       Moose::Meta::TypeConstraint::Parameterized
2496         - added the &equals method for comparing two type
2497           constraints (nothingmuch)
2498           - added tests for this (nothingmuch)
2499
2500     * Moose::Meta::TypeConstraint
2501       - add the &parents method, which is just an alias to &parent.
2502         Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
2503
2504     * Moose::Meta::TypeConstraint::Class
2505       - added the class attribute for introspection purposes
2506         (nothingmuch)
2507         - added tests for this
2508
2509     * Moose::Meta::TypeConstraint::Enum
2510       Moose::Meta::TypeConstraint::Role
2511       - broke these out into their own classes (nothingmuch)
2512
2513     * Moose::Cookbook::Recipe*
2514       - fixed references to test file locations in the POD
2515         and updated up some text for new Moose features
2516         (Sartak)
2517
2518     * Moose::Util
2519       - Added &resolve_metaclass_alias, a helper function for finding an actual
2520         class for a short name (e.g. in the traits list)
2521
2522 0.40 Fri. March 14, 2008
2523     - I hate Pod::Coverage
2524
2525 0.39 Fri. March 14, 2008
2526     * Moose
2527       - documenting the use of '+name' with attributes
2528         that come from recently composed roles. It makes
2529         sense, people are using it, and so why not just
2530         officially support it.
2531       - fixing the 'extends' keyword so that it will not
2532         trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
2533
2534     * oose
2535       - added the perl -Moose=+Class::Name feature to allow
2536         monkeypatching of classes in one liners
2537
2538     * Moose::Util
2539       - fixing the 'apply_all_roles' keyword so that it will not
2540         trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
2541
2542     * Moose::Meta::Class
2543       - added ->create method which now supports roles (thanks to jrockway)
2544         - added tests for this
2545       - added ->create_anon_class which now supports roles and caching of
2546         the results (thanks to jrockway)
2547         - added tests for this
2548       - made ->does_role a little more forgiving when it is
2549         checking a Class::MOP era metaclasses.
2550
2551     * Moose::Meta::Role::Application::ToInstance
2552       - it is now possible to pass extra params to be used when
2553         a role is applied to an the instance (rebless_params)
2554         - added tests for this
2555
2556     * Moose::Util::TypeConstraints
2557       - class_type now accepts an optional second argument for a
2558         custom message. POD anotated accordingly (groditi)
2559         - added tests for this
2560       - it is now possible to make anon-enums by passing 'enum' an
2561         ARRAY ref instead of the $name => @values. Everything else
2562         works as before.
2563         - added tests for this
2564
2565     * t/
2566       - making test for using '+name' on attributes consumed
2567         from a role, it works and makes sense too.
2568
2569     * Moose::Meta::Attribute
2570       - fix handles so that it doesn't return nothing
2571         when the method cannot be found, not sure why
2572         it ever did this originally, this means we now
2573         have slightly better support for AUTOLOADed
2574         objects
2575         - added more delegation tests
2576       - adding ->does method to this so as to better
2577         support traits and their introspection.
2578         - added tests for this
2579
2580     * Moose::Object
2581       - localizing the Data::Dumper configurations so
2582         that it does not pollute others (RT #33509)
2583       - made ->does a little more forgiving when it is
2584         passed Class::MOP era metaclasses.
2585
2586 0.38 Fri. Feb. 15, 2008
2587     * Moose::Meta::Attribute
2588       - fixed initializer to correctly do
2589         type checking and coercion in the
2590         callback
2591         - added tests for this
2592
2593     * t/
2594       - fixed some finicky tests (thanks to konobi)
2595
2596 0.37 Thurs. Feb. 14, 2008
2597     * Moose
2598       - fixed some details in Moose::init_meta
2599         and its superclass handling (thanks thepler)
2600         - added tests for this (thanks thepler)
2601       - 'has' now dies if you don't pass in name
2602         value pairs
2603       - added the 'make_immutable' keyword as a shortcut
2604         to make_immutable
2605
2606     * Moose::Meta::Class
2607       Moose::Meta::Method::Constructor
2608       Moose::Meta::Attribute
2609       - making (init_arg => undef) work here too
2610         (thanks to nothingmuch)
2611
2612     * Moose::Meta::Attribute
2613       Moose::Meta::Method::Constructor
2614       Moose::Meta::Method::Accessor
2615       - make lazy attributes respect attr initializers (rjbs)
2616         - added tests for this
2617
2618     * Moose::Util::TypeConstraints
2619       Moose::Util::TypeConstraints::OptimizedConstraints
2620       Moose::Meta::TypeConstraints
2621       Moose::Meta::Attribute
2622       Moose::Meta::Method::Constructor
2623       Moose::Meta::Method::Accessor
2624       - making type errors use the
2625         assigned message (thanks to Sartak)
2626         - added tests for this
2627
2628     * Moose::Meta::Method::Destructor
2629       - making sure DESTROY gets inlined properly
2630         with successive DEMOLISH calls (thanks to manito)
2631
2632     * Moose::Meta::Attribute
2633       Moose::Meta::Method::Accessor
2634       - fixed handling of undef with type constraints
2635         (thanks to Ernesto)
2636         - added tests for this
2637
2638     * Moose::Util
2639       - added &get_all_init_args and &get_all_attribute_values
2640         (thanks to Sartak and nothingmuch)
2641
2642 0.36 Sat. Jan. 26, 2008
2643     * Moose::Role
2644       Moose::Meta::Attribute
2645       - role type tests now support when roles are
2646         applied to non-Moose classes (found by ash)
2647         - added tests for this (thanks to ash)
2648       - couple extra tests to boost code coverage
2649
2650     * Moose::Meta::Method::Constructor
2651       - improved fix for handling Class::MOP attributes
2652         - added test for this
2653
2654     * Moose::Meta::Class
2655       - handled the add_attribute($attribute_meta_object)
2656         case correctly
2657         - added test for this
2658
2659 0.35 Tues. Jan. 22, 2008
2660     * Moose::Meta::Method::Constructor
2661       - fix to make sure even Class::MOP attributes
2662         are handled correctly (Thanks to Dave Rolsky)
2663         - added test for this (also Dave Rolsky)
2664
2665     * Moose::Meta::Class
2666       - improved error message on _apply_all_roles,
2667         you should now use Moose::Util::apply_all_roles
2668         and you shouldnt have been using a _ prefixed
2669         method in the first place ;)
2670
2671 0.34 Mon. Jan. 21, 2008
2672     ~~~ more misc. doc. fixes ~~~
2673     ~~ updated copyright dates ~~
2674
2675     Moose is now a postmodern object system :)
2676       - (see the POD for details)
2677
2678     * <<Role System Refactoring>>
2679     - this release contains a major reworking and
2680       cleanup of the role system
2681       - 100% backwards compat.
2682       - Role application now restructured into seperate
2683         classes based on type of applicants
2684       - Role summation (combining of more than one role)
2685         is much cleaner and anon-classes are no longer
2686         used in this process
2687       - new Composite role metaclass
2688       - runtime application of roles to instances
2689         is now more efficient and re-uses generated
2690         classes when applicable
2691
2692     * <<New Role composition features>>
2693       - methods can now be excluded from a given role
2694         during composition
2695       - methods can now be aliased to another name (and
2696         still retain the original as well)
2697
2698     * Moose::Util::TypeConstraints::OptimizedConstraints
2699       - added this module (see above)
2700
2701     * Moose::Meta::Class
2702       - fixed the &_process_attribute method to be called
2703         by &add_attribute, so that the API is now correct
2704
2705     * Moose::Meta::Method::Accessor
2706       - fixed bug when passing a list of values to
2707         an accessor would get (incorrectly) ignored.
2708         Thanks to Sartak for finding this ;)
2709         - added tests for this (Sartak again)
2710
2711     * Moose::Meta::Method::Accessor
2712       Moose::Meta::Method::Constructor
2713       Moose::Meta::Attribute
2714       Moose::Meta::TypeConstraint
2715       Moose::Meta::TypeCoercion
2716       - lots of cleanup of such things as:
2717         - generated methods
2718         - type constraint handling
2719         - error handling/messages
2720         (thanks to nothingmuch)
2721
2722     * Moose::Meta::TypeConstraint::Parameterizable
2723       - added this module to support the refactor
2724         in Moose::Meta::TypeConstraint::Parameterized
2725
2726     * Moose::Meta::TypeConstraint::Parameterized
2727       - refactored how these types are handled so they
2728         are more generic and not confined to ArrayRef
2729         and HashRef only
2730
2731     * t/
2732       - shortened some file names for better VMS support (RT #32381)
2733
2734 0.33 Fri. Dec. 14, 2007
2735     !! Moose now loads 2 x faster !!
2736     !!  with new Class::MOP 0.49  !!
2737
2738     ++ new oose.pm module to make command line
2739        Moose-ness easier (see POD docs for more)
2740
2741     * Moose::Meta::Class
2742     * Moose::Meta::Role
2743       - several tweaks to take advantage of the
2744         new method map caching in Class::MOP
2745
2746     * Moose::Meta::TypeConstraint::Parameterized
2747       - allow subtypes of ArrayRef and HashRef to
2748         be used as a container (sartak)
2749         - added tests for this
2750       - basic support for coercion to ArrayRef and
2751         HashRef for containers (sartak)
2752         - added tests for this
2753
2754     * Moose::Meta::TypeCoercion
2755       - coercions will now create subtypes as needed
2756         so you can now add coercions to parameterized
2757         types without having to explictly define them
2758         - added tests for this
2759
2760     * Moose::Meta::Method::Accessor
2761       - allow subclasses to decide whether we need
2762         to copy the value into a new variable (sartak)
2763
2764 0.32 Tues. Dec. 4, 2007
2765     * Moose::Util::TypeConstraints
2766       - fixing how subtype aliases of unions work
2767         they should inherit the parent's coercion
2768         - added tests for this
2769       - you can now define multiple coercions on
2770         a single type at different times instead of
2771         having to do it all in one place
2772         - added tests for this
2773
2774     * Moose::Meta::TypeConstraint
2775       - there is now a default constraint of sub { 1 }
2776         instead of Moose::Util::TypeConstraints setting
2777         this for us
2778
2779     * Moose::Meta::TypeCoercion
2780     * Moose::Meta::TypeCoercion::Union
2781       - added the &has_coercion_for_type and
2782         &add_type_coercions methods to support the
2783         new features above (although you cannot add
2784         more type coercions for Union types)
2785
2786 0.31 Mon. Nov. 26, 2007
2787     * Moose::Meta::Attribute
2788       - made the +attr syntax handle extending types with
2789         parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
2790         now works if the original foo is an ArrayRef.
2791         - added tests for this.
2792       - delegation now works even if the attribute does not
2793         have a reader method using the get_read_method_ref
2794         method from Class::MOP::Attribute.
2795         - added tests for this
2796         - added docs for this
2797
2798     * Moose::Util::TypeConstraints
2799       - passing no "additional attribute info" to
2800         &find_or_create_type_constraint will no longer
2801         attempt to create an __ANON__ type for you,
2802         instead it will just return undef.
2803         - added docs for this
2804
2805 0.30 Fri. Nov. 23, 2007
2806     * Moose::Meta::Method::Constructor
2807       -builder related bug in inlined constructor. (groditi)
2808
2809     * Moose::Meta::Method::Accessor
2810       - genereate unnecessary calls to predicates and refactor
2811         code generation for runtime speed (groditi)
2812
2813     * Moose::Util::TypeConstraints
2814       - fix ClassName constraint to introspect symbol table (mst)
2815         - added more tests for this (mst)
2816       - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
2817         with work correctly.
2818         - added tests for this
2819
2820     * Moose::Cookbook
2821       - adding the link to Recipie 11 (written by Sartak)
2822         - adding test for SYNOPSIS code
2823
2824     * t/
2825       - New tests for builder bug. Upon instantiation, if an
2826         attribute had a builder, no value and was not lazy the
2827         builder default was not getting run, oops. (groditi)
2828
2829 0.29 Tues. Nov. 13, 2007
2830     * Moose::Meta::Attribute
2831       - Fix error message on missing builder method (groditi)
2832
2833     * Moose::Meta::Method::Accessor
2834       - Fix error message on missing builder method (groditi)
2835
2836     * t/
2837       - Add test to check for the correct error message when
2838         builder method is missing (groditi)
2839
2840 0.28 Tues. Nov. 13, 2007
2841     - 0.27 packaged incorrectly (groditi)
2842
2843 0.27 Tues. Nov. 13, 2007
2844     * Moose::Meta::Attribute
2845       - Added support for the new builder option (groditi)
2846       - Added support for lazy_build option (groditi)
2847       - Changed slot initialization for predicate changes (groditi)
2848
2849     * Moose::Meta::Method::Accessor
2850       - Added support for lazy_build option (groditi)
2851       - Fix inline methods to work with corrected predicate
2852         behavior (groditi)
2853
2854     * Moose::Meta::Method::Constructor
2855       - Added support for lazy_build option (groditi)
2856
2857     * t/
2858       - tests for builder and lazy_build (groditi)
2859
2860     * fixing some misc. bits in the docs that
2861       got mentioned on CPAN Forum & perlmonks
2862
2863     * Moose::Meta::Role
2864       - fixed how required methods are handled
2865         when they encounter overriden or modified
2866         methods from a class (thanks to confound).
2867         - added tests for this
2868
2869     * Moose::Util::TypeConstraint
2870       - fixed the type notation parser so that
2871         the | always creates a union and so is
2872         no longer a valid type char (thanks to
2873         konobi, mugwump and #moose for working
2874         this one out.)
2875         - added more tests for this
2876
2877 0.26 Thurs. Sept. 27, 2007
2878     == New Features ==
2879
2880     * Parameterized Types
2881       We now support parameterized collection types, such as:
2882           ArrayRef[Int]    # array or integers
2883           HashRef[Object]  # a hash with object values
2884       They can also be nested:
2885           ArrayRef[HashRef[RegexpRef]] # an array of hashes with regex values
2886       And work with the type unions as well:
2887           ArrayRef[Int | Str]  # array of integers of strings
2888
2889     * Better Framework Extendability
2890       Moose.pm is now "extendable" such that it is now much
2891       easier to extend the framework and add your own keywords
2892       and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
2893       section of the Moose.pm docs.
2894
2895     * Moose Snacks!
2896       In an effort to begin documenting some of the various
2897       details of Moose as well as some common idioms, we have
2898       created Moose::Cookbook::Snacks as a place to find
2899       small (easily digestable) nuggets of Moose code.
2900
2901     ====
2902     ~ Several doc updates/cleanup thanks to castaway ~
2903
2904     - converted build system to use Module::Install instead of
2905       Module::Build (thanks to jrockway)
2906
2907     * Moose
2908       - added all the meta classes to the immutable list and
2909         set it to inline the accessors
2910       - fix import to allow Sub::Exporter like { into => }
2911             and { into_level => } (perigrin)
2912       - exposed and documented init_meta() to allow better
2913             embedding and extending of Moose (perigrin)
2914
2915         * t/
2916           - complete re-organization of the test suite
2917           - added some new tests as well
2918           - finally re-enabled the Moose::POOP test since
2919             the new version of DBM::Deep now works again
2920             (thanks rob)
2921
2922     * Moose::Meta::Class
2923       - fixed very odd and very nasty recursion bug with
2924         inner/augment (mst)
2925         - added tests for this (eilara)
2926
2927     * Moose::Meta::Attribute
2928       Moose::Meta::Method::Constructor
2929       Moose::Meta::Method::Accessor
2930       - fixed issue with overload::Overloaded getting called
2931         on non-blessed items. (RT #29269)
2932         - added tests for this
2933
2934     * Moose::Meta::Method::Accessor
2935       - fixed issue with generated accessor code making
2936         assumptions about hash based classes (thanks to dexter)
2937
2938     * Moose::Coookbook::Snacks
2939       - these are bits of documentation, not quite as big as
2940         Recipes but which have no clear place in the module docs.
2941         So they are Snacks! (horray for castaway++)
2942
2943     * Moose::Cookbook::Recipe4
2944       - updated it to use the new ArrayRef[MyType] construct
2945         - updated the accompanying test as well
2946
2947     +++ Major Refactor of the Type Constraint system +++
2948     +++       with new features added as well        +++
2949
2950     * Moose::Util::TypeConstraint
2951       - no longer uses package variable to keep track of
2952         the type constraints, now uses the an instance of
2953         Moose::Meta::TypeConstraint::Registry to do it
2954       - added more sophisticated type notation parsing
2955         (thanks to mugwump)
2956         - added tests for this
2957
2958     * Moose::Meta::TypeConstraint
2959       - some minor adjustments to make subclassing easier
2960       - added the package_defined_in attribute so that we
2961         can track where the type constraints are created
2962
2963     * Moose::Meta::TypeConstraint::Union
2964       - this is now been refactored to be a subclass of
2965         Moose::Meta::TypeConstraint
2966
2967     * Moose::Meta::TypeCoercion::Union
2968       - this has been added to service the newly refactored
2969         Moose::Meta::TypeConstraint::Union and is itself
2970         a subclass of Moose::Meta::TypeCoercion
2971
2972     * Moose::Meta::TypeConstraint::Parameterized
2973       - added this module (taken from MooseX::AttributeHelpers)
2974         to help construct nested collection types
2975         - added tests for this
2976
2977     * Moose::Meta::TypeConstraint::Registry
2978       - added this class to keep track of type constraints
2979
2980 0.25 Mon. Aug. 13, 2007
2981     * Moose
2982       - Documentation update to reference Moose::Util::TypeConstraints
2983         under 'isa' in 'has' for how to define a new type
2984         (thanks to shlomif).
2985
2986     * Moose::Meta::Attribute
2987       - required attributes now will no longer accept undef
2988         from the constructor, even if there is a default and lazy
2989         - added tests for this
2990       - default subroutines must return a value which passes the
2991         type constraint
2992         - added tests for this
2993
2994     * Moose::Meta::Attribute
2995     * Moose::Meta::Method::Constructor
2996     * Moose::Meta::Method::Accessor
2997       - type-constraint tests now handle overloaded objects correctly
2998         in the error message
2999         - added tests for this (thanks to EvanCarroll)
3000
3001     * Moose::Meta::TypeConstraint::Union
3002       - added (has_)hand_optimized_constraint to this class so that
3003         it behaves as the regular Moose::Meta::TypeConstraint does.
3004
3005     * Moose::Meta::Role
3006       - large refactoring of this code
3007       - added several more tests
3008         - tests for subtle conflict resolition issues
3009           added, but not currently running
3010           (thanks to kolibre)
3011
3012     * Moose::Cookbook::Recipe7
3013       - added new recipe for augment/inner functionality
3014         (still in progress)
3015         - added test for this
3016
3017     * Moose::Spec::Role
3018       - a formal definition of roles (still in progress)
3019
3020     * Moose::Util
3021       - utilities for easier working with Moose classes
3022         - added tests for these
3023
3024     * Test::Moose
3025       - This contains Moose specific test functions
3026         - added tests for these
3027
3028 0.24 Tues. July 3, 2007
3029     ~ Some doc updates/cleanup ~
3030
3031     * Moose::Meta::Attribute
3032       - added support for roles to be given as parameters
3033         to the 'handles' option.
3034         - added tests and docs for this
3035       - the has '+foo' attribute form now accepts changes to
3036         the lazy option, and the addition of a handles option
3037         (but not changing the handles option)
3038         - added tests and docs for this
3039
3040     * Moose::Meta::Role
3041       - required methods are now fetched using find_method_by_name
3042         so that required methods can come from superclasses
3043         - adjusted tests for this
3044
3045 0.23 Mon. June 18, 2007
3046     * Moose::Meta::Method::Constructor
3047       - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
3048     * Moose::Meta::Class
3049       - Modify make_immutable to work with the new Class::MOP immutable
3050         mechanism + POD + very basic test (groditi)
3051     * Moose::Meta::Attribute
3052       - Fix handles to use goto() so that caller() comes out properly on
3053         the other side (perigrin)
3054
3055 0.22 Thurs. May 31, 2007
3056     * Moose::Util::TypeConstraints
3057       - fix for prototype undeclared issue when Moose::Util::TypeConstraints
3058         loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
3059         prototypes for functions
3060       - added the ClassName type constraint, this checks for strings
3061         which will respond true to ->isa(UNIVERSAL).
3062         - added tests and docs for this
3063       - subtyping just in name now works correctly by making the
3064         default for where be { 1 }
3065         - added test for this
3066
3067     * Moose::Meta::Method::Accessor
3068       - coerce and lazy now work together correctly, thanks to
3069         merlyn for finding this bug
3070         - tests added for this
3071       - fix reader presedence bug in Moose::Meta::Attribute + tests
3072
3073     * Moose::Object
3074       - Foo->new(undef) now gets ignored, it is assumed you meant to pass
3075         a HASH-ref and missed. This produces better error messages then
3076         having it die cause undef is not a HASH.
3077         - added tests for this
3078
3079 0.21 Thursday, May 2nd, 2007
3080     * Moose
3081       - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
3082       - modified unimport to remove super and inner along with the rest
3083         - altered unimport tests to handle this
3084
3085     * Moose::Role
3086       - altered super export to populate SUPER_SLOT
3087
3088     * Moose::Meta::Class
3089       - altered augment and override modifier application to use *_SLOT
3090         - modified tests for these to unimport one test class each to test
3091
3092     * Moose::Meta::Role
3093       - fixed issue where custom attribute metaclasses
3094         where not handled correctly in roles
3095         - added tests for this
3096
3097     * Moose::Meta::Class
3098       - fixed issue where extending metaclasses with
3099         roles would blow up. Thanks to Aankhen`` for
3100         finding this insidious error, and it's solution.
3101
3102     ~~ lots of spelling and grammer fixes in the docs,
3103        many many thanks to rlb3 and Aankhen for these :)
3104
3105 0.20 Friday, April 6th, 2007
3106     >> I messed up the SKIP logic in one test
3107        so this release is just to fix that.
3108
3109     * Moose
3110       - 'has' now also accepts an ARRAY ref
3111         to create multiple attrs (see docs)
3112         (thanks to konobi for this)
3113          - added tests and docs
3114
3115 0.19 Thurs. April 5th, 2007
3116     ~~ More documentation updates ~~
3117
3118     * Moose::Util::TypeConstraints
3119       - 'type' now supports messages as well
3120         thanks to phaylon for finding this
3121         - added tests for this
3122       - added &list_all_type_constraints and
3123         &list_all_builtin_type_constraints
3124         functions to facilitate introspection.
3125
3126     * Moose::Meta::Attribute
3127       - fixed regexp 'handles' declarations
3128         to build the list of delegated methods
3129         correctly (and not override important
3130         things like &new) thanks to ashleyb
3131         for finding this
3132         - added tests and docs for this
3133       - added the 'documentation' attributes
3134         so that you can actually document your
3135         attributes and inspect them through the
3136         meta-object.
3137         - added tests and docs for this
3138
3139     * Moose::Meta::Class
3140       - when loading custom attribute metaclasses
3141         it will first look in for the class in the
3142         Moose::Meta::Attribute::Custom::$name, and
3143         then default to just loading $name.
3144         - added tests and docs for this
3145
3146     * Moose::Meta::TypeConstraint
3147       - type constraints now stringify to their names.
3148         - added test for this
3149
3150     * misc.
3151       - added tests to assure we work with Module::Refresh
3152       - added stricter test skip logic in the Moose POOP
3153         test, ask Rob Kinyon why.
3154         - *cough* DBM::Deep 1.0 backwards compatibility sucks *cough* ;)
3155
3156 0.18 Sat. March 10, 2007
3157     ~~ Many, many documentation updates ~~
3158
3159     * misc.
3160       - We now use Class::MOP::load_class to
3161         load all classes.
3162       - added tests to show types and subtypes
3163         working with Declare::Constraints::Simple
3164         and Test::Deep as constraint engines.
3165
3166 0.18_001
3167     !! You must have Class::MOP 0.37_001  !!
3168     !! for this developer release to work !!
3169
3170     This release was primarily adding the immutable
3171     feature to Moose. An immutable class is one which
3172     you promise not to alter. When you set the class
3173     as immutable it will perform various bits of
3174     memoization and inline certain part of the code
3175     (constructors, destructors and accessors). This
3176     minimizes (and in some cases totally eliminates)
3177     one of Moose's biggest performance hits. This
3178     feature is not on by default, and is 100% optional.
3179     It has several configurable bits as well, so you
3180     can pick and choose to your specific needs.
3181
3182     The changes involved in this were fairly wide and
3183     highly specific, but 100% backwards compatible, so
3184     I am not going to enumerate them here. If you are
3185     truely interested in what was changed, please do
3186     a diff :)
3187
3188 0.17 Tues. Nov. 14, 2006
3189     * Moose::Meta::Method::Accessor
3190       - bugfix for read-only accessors which
3191         are have a type constraint and lazy.
3192         Thanks to chansen for finding it.
3193
3194 0.16 Tues. Nov. 14, 2006
3195     ++ NOTE ++
3196     There are some speed improvements in this release,
3197     but they are only the begining, so stay tuned.
3198
3199     * Moose::Object
3200       - BUILDALL and DEMOLISHALL no longer get
3201         called unless they actually need to be.
3202         This gave us a signifigant speed boost
3203         for the cases when there is no BUILD or
3204         DEMOLISH method present.
3205
3206     * Moose::Util::TypeConstraints
3207     * Moose::Meta::TypeConstraint
3208       - added an 'optimize_as' option to the
3209         type constraint, which allows for a
3210         hand optimized version of the type
3211         constraint to be used when possible.
3212       - Any internally created type constraints
3213         now provide an optimized version as well.
3214
3215 0.15 Sun. Nov. 5, 2006
3216     ++ NOTE ++
3217     This version of Moose *must* have Class::MOP 0.36 in order
3218     to work correctly. A number of small internal tweaks have
3219     been made in order to be compatible with that release.
3220
3221     * Moose::Util::TypeConstraints
3222       - added &unimport so that you can clean out
3223         your class namespace of these exported
3224         keywords
3225
3226     * Moose::Meta::Class
3227       - fixed minor issue which occasionally
3228         comes up during global destruction
3229         (thanks omega)
3230       - moved Moose::Meta::Method::Overriden into
3231         its own file.
3232
3233     * Moose::Meta::Role
3234       - moved Moose::Meta::Role::Method into
3235         its own file.
3236
3237     * Moose::Meta::Attribute
3238       - changed how we do type checks so that
3239         we reduce the overall cost, but still
3240         retain correctness.
3241        *** API CHANGE ***
3242       - moved accessor generation methods to
3243         Moose::Meta::Method::Accessor to
3244         conform to the API changes from
3245         Class::MOP 0.36
3246
3247     * Moose::Meta::TypeConstraint
3248       - changed how constraints are compiled
3249         so that we do less recursion and more
3250         iteration. This makes the type check
3251         faster :)
3252       - moved Moose::Meta::TypeConstraint::Union
3253         into its own file
3254
3255     * Moose::Meta::Method::Accessor
3256       - created this from methods formerly found in
3257         Moose::Meta::Attribute
3258
3259     * Moose::Meta::Role::Method
3260       - moved this from Moose::Meta::Role
3261
3262     * Moose::Meta::Method::Overriden
3263       - moved this from Moose::Meta::Class
3264
3265     * Moose::Meta::TypeConstraint::Union
3266       - moved this from Moose::Meta::TypeConstraint
3267
3268 0.14 Mon. Oct. 9, 2006
3269
3270     * Moose::Meta::Attribute
3271       - fixed lazy attributes which were not getting
3272         checked with the type constraint (thanks ashley)
3273         - added tests for this
3274       - removed the over-enthusiastic DWIMery of the
3275         automatic ArrayRef and HashRef defaults, it
3276         broke predicates in an ugly way.
3277         - removed tests for this
3278
3279 0.13 Sat. Sept. 30, 2006
3280     ++ NOTE ++
3281     This version of Moose *must* have Class::MOP 0.35 in order
3282     to work correctly. A number of small internal tweaks have
3283     been made in order to be compatible with that release.
3284
3285     * Moose
3286       - Removed the use of UNIVERSAL::require to be a better
3287         symbol table citizen and remove a dependency
3288         (thanks Adam Kennedy)
3289
3290       **~~ removed experimental & undocumented feature ~~**
3291       - commented out the 'method' and 'self' keywords, see the
3292         comments for more info.
3293
3294     * Moose::Cookbook
3295       - added a FAQ and WTF files to document frequently
3296         asked questions and common problems
3297
3298     * Moose::Util::TypeConstraints
3299       - added GlobRef and FileHandle type constraint
3300         - added tests for this
3301
3302     * Moose::Meta::Attribute
3303       - if your attribute 'isa' ArrayRef of HashRef, and you have
3304         not explicitly set a default, then make the default DWIM.
3305         This will also work for subtypes of ArrayRef and HashRef
3306         as well.
3307       - you can now auto-deref subtypes of ArrayRef or HashRef too.
3308         - new test added for this (thanks to ashley)
3309
3310     * Moose::Meta::Role
3311       - added basic support for runtime role composition
3312         but this is still *highly experimental*, so feedback
3313         is much appreciated :)
3314         - added tests for this
3315
3316     * Moose::Meta::TypeConstraint
3317       - the type constraint now handles the coercion process
3318         through delegation, this is to support the coercion
3319         of unions
3320
3321     * Moose::Meta::TypeConstraint::Union
3322       - it is now possible for coercions to be performed
3323         on a type union
3324         - added tests for this (thanks to konobi)
3325
3326     * Moose::Meta::TypeCoercion
3327       - properly capturing error when type constraint
3328         is not found
3329
3330     * Build.PL
3331       - Scalar::Util 1.18 is bad on Win32, so temporarily
3332         only require version 1.17 for Win32 and cygwin.
3333         (thanks Adam Kennedy)
3334
3335 0.12 Sat. Sept. 1, 2006
3336     * Moose::Cookbook
3337       - Recipe5 (subtypes & coercion) has been written
3338
3339     * Moose
3340       - fixed "bad meta" error message to be more descriptive
3341       - fixed &unimport to not remove the &inner and &super
3342         keywords because we need to localize them.
3343       - fixed number of spelling/grammer issues, thanks Theory :)
3344
3345       **~~ experimental & undocumented feature ~~**
3346       - added the method and self keywords, they are basically
3347         just sugar, and they may not stay around.
3348
3349     * Moose::Object
3350       - added &dump method to easily Data::Dumper
3351         an object
3352
3353     * Moose::Meta::TypeConstraint
3354       - added the &is_a_type_of method to check both the current
3355         and the subtype of a method (similar to &isa with classes)
3356
3357     * Moose::Meta::Role
3358       - this is now a subclass of Class::MOP::Module, and no longer
3359         creates the _role_meta ugliness of before.
3360         - fixed tests to reflect this change
3361
3362 0.11 Wed. July 12, 2006
3363     * Moose
3364       - added an &unimport method to remove all the keywords
3365         that Moose will import, simply add 'no Moose' to the
3366         bottom of your class file.
3367
3368     * t/
3369       - fixed some test failures caused by a forgotten test
3370         dependency.
3371
3372 0.10 Thurs. July 6, 2006
3373     * Moose
3374       - improved error message when loading modules so
3375         it is less confusing when you load a role.
3376       - added &calculate_all_roles method to
3377         Moose::Meta::Class and Moose::Meta::Role
3378
3379     NOTE:
3380     This module has been tested against Class::MOP 0.30
3381     but it does not yet utilize the optimizations
3382     it makes available. Stay tuned for that ;)
3383
3384 0.09_03 Fri. June 23, 2006
3385     ++ DEVELOPER RELEASE ++
3386     * Moose
3387       - 'use strict' and 'use warnings' are no longer
3388          needed in Moose classes, Moose itself will
3389          turn them on for you.
3390          - added tests for this
3391       - moved code from exported subs to private methods
3392         in Moose::Meta::Class
3393
3394     * Moose::Role
3395       - as with Moose, strict and warnings are
3396         automatically turned on for you.
3397          - added tests for this
3398
3399     * Moose::Meta::Role
3400       - now handles an edge case for override errors
3401         - added tests for this
3402       - added some more edge case tests
3403
3404 0.09_02 Tues. May 16, 2006
3405     ++ DEVELOPER RELEASE ++
3406     * Moose
3407       - added prototypes to the exported subs
3408       - updated docs
3409
3410     * Moose::Role
3411       - added prototypes to the exported subs
3412       - updated docs
3413
3414     * Moose::Util::TypeConstraints
3415       - cleaned up prototypes for the subs
3416       - updated docs
3417
3418 0.09_01 Fri. May 12, 2006
3419     ++ DEVELOPER RELEASE ++
3420       - This release works in combination with
3421         Class::MOP 0.29_01, it is a developer
3422         release because it uses the a new
3423         instance sub-protocol and a fairly
3424         complete Role implementation. It has
3425         not yet been optimized, so it slower
3426         the the previous CPAN version. This
3427         release also lacks good updated docs,
3428         the official release will have updated docs.
3429
3430     * Moose
3431       - refactored the keyword exports
3432         - 'with' now checks Role validaity and
3433           accepts more than one Role at a time
3434         - 'extends' makes metaclass adjustments as
3435            needed to ensure metaclass compatibility
3436
3437     * Moose::Role
3438       - refactored the keyword exports
3439         - 'with' now checks Role validaity and
3440           accepts more than one Role at a time
3441
3442     * Moose::Util::TypeConstraints
3443       - added the 'enum' keyword for simple
3444         string enumerations which can be used as
3445         type constraints
3446         - see example of usage in t/202_example.t
3447
3448     * Moose::Object
3449       - more careful checking of params to new()
3450
3451     * Moose::Meta::Role
3452       - much work done on the role composition
3453         - many new tests for conflict detection
3454           and composition edge cases
3455         - not enough documentation, I suggest
3456           looking at the tests
3457
3458     * Moose::Meta::Instance
3459       - added new Instance metaclass to support
3460         the new Class::MOP instance protocol
3461
3462     * Moose::Meta::Class
3463       - some small changes to support the new
3464         instance protocol
3465       - some small additions to support Roles
3466
3467     * Moose::Meta::Attribute
3468       - some improvements to the accessor generation code
3469         by nothingmuch
3470       - some small changes to support the new
3471         instance protocol
3472       - (still somewhat) experimental delegation support
3473         with the 'handles' option
3474         - added several tests for this
3475         - no docs for this yet
3476
3477 0.05 Thurs. April 27, 2006
3478     * Moose
3479       - keywords are now exported with Sub::Exporter
3480         thanks to chansen for this commit
3481       - has keyword now takes a 'metaclass' option
3482         to support custom attribute meta-classes
3483         on a per-attribute basis
3484         - added tests for this
3485       - the 'has' keyword not accepts inherited slot
3486         specifications (has '+foo'). This is still an
3487         experimental feature and probably not finished
3488         see t/038_attribute_inherited_slot_specs.t for
3489         more details, or ask about it on #moose
3490         - added tests for this
3491
3492     * Moose::Role
3493       - keywords are now exported with Sub::Exporter
3494
3495     * Moose::Utils::TypeConstraints
3496       - reorganized the type constraint hierarchy, thanks
3497         to nothingmuch and chansen for his help and advice
3498         on this
3499         - added some tests for this
3500       - keywords are now exported with Sub::Exporter
3501         thanks to chansen for this commit
3502
3503     * Moose::Meta::Class
3504       - due to changes in Class::MOP, we had to change
3505         construct_instance (for the better)
3506
3507     * Moose::Meta::Attribute
3508       - due to changes in Class::MOP, we had to add the
3509         initialize_instance_slot method (it's a good thing)
3510
3511     * Moose::Meta::TypeConstraint
3512       - added type constraint unions
3513         - added tests for this
3514       - added the is_subtype_of predicate method
3515         - added tests for this
3516
3517 0.04 Sun. April 16th, 2006
3518     * Moose::Role
3519       - Roles can now consume other roles
3520         - added tests for this
3521       - Roles can specify required methods now with
3522         the requires() keyword
3523         - added tests for this
3524
3525     * Moose::Meta::Role
3526       - ripped out much of it's guts ,.. much cleaner now
3527       - added required methods and correct handling of
3528         them in apply() for both classes and roles
3529         - added tests for this
3530       - no longer adds a does() method to consuming classes
3531         it relys on the one in Moose::Object
3532       - added roles attribute and some methods to support
3533         roles consuming roles
3534
3535     * Moose::Meta::Attribute
3536       - added support for triggers on attributes
3537         - added tests for this
3538       - added support for does option on an attribute
3539         - added tests for this
3540
3541     * Moose::Meta::Class
3542       - added support for attribute triggers in the
3543         object construction
3544         - added tests for this
3545
3546     * Moose
3547       - Moose no longer creates a subtype for your class
3548         if a subtype of the same name already exists, this
3549         should DWIM in 99.9999% of all cases
3550
3551     * Moose::Util::TypeConstraints
3552       - fixed bug where incorrect subtype conflicts were
3553         being reported
3554         - added test for this
3555
3556     * Moose::Object
3557       - this class can now be extended with 'use base' if
3558         you need it, it properly loads the metaclass class now
3559         - added test for this
3560
3561 0.03_02 Wed. April 12, 2006
3562     * Moose
3563       - you must now explictly use Moose::Util::TypeConstraints
3564         it no longer gets exported for you automatically
3565
3566     * Moose::Object
3567       - new() now accepts hash-refs as well as key/value lists
3568       - added does() method to check for Roles
3569         - added tests for this
3570
3571     * Moose::Meta::Class
3572       - added roles attribute along with the add_role() and
3573         does_role() methods
3574         - added tests for this
3575
3576     * Moose::Meta::Role
3577       - now adds a does() method to consuming classes
3578         which tests the class's hierarchy for roles
3579         - added tests for this
3580
3581 0.03_01 Mon. April 10, 2006
3582     * Moose::Cookbook
3583       - added new Role recipe (no content yet, only code)
3584
3585     * Moose
3586       - added 'with' keyword for Role support
3587         - added test and docs for this
3588       - fixed subtype quoting bug
3589         - added test for this
3590
3591     * Moose::Role
3592       - Roles for Moose
3593         - added test and docs
3594
3595     * Moose::Util::TypeConstraints
3596       - added the message keyword to add custom
3597         error messages to type constraints
3598
3599     * Moose::Meta::Role
3600       - the meta role to support Moose::Role
3601         - added tests and docs
3602
3603     * Moose::Meta::Class
3604       - moved a number of things from Moose.pm
3605         to here, they should have been here
3606         in the first place
3607
3608     * Moose::Meta::Attribute
3609       - moved the attribute option macros here
3610         instead of putting them in Moose.pm
3611
3612     * Moose::Meta::TypeConstraint
3613       - added the message attributes and the
3614         validate method
3615         - added tests and docs for this
3616
3617 0.03 Thurs. March 30, 2006
3618     * Moose::Cookbook
3619       - added the Moose::Cookbook with 5 recipes,
3620         describing all the stuff Moose can do.
3621
3622     * Moose
3623       - fixed an issue with &extends super class loading
3624         it now captures errors and deals with inline
3625         packages correctly (bug found by mst, solution
3626         stolen from alias)
3627       - added super/override & inner/augment features
3628         - added tests and docs for these
3629
3630     * Moose::Object
3631       - BUILDALL now takes a reference of the %params
3632         that are passed to &new, and passes that to
3633         each BUILD as well.
3634
3635     * Moose::Util::TypeConstraints
3636       - Type constraints now survive runtime reloading
3637         - added test for this
3638
3639         * Moose::Meta::Class
3640           - fixed the way attribute defaults are handled
3641             during instance construction (bug found by chansen)
3642
3643     * Moose::Meta::Attribute
3644       - read-only attributes now actually enforce their
3645         read-only-ness (this corrected in Class::MOP as
3646         well)
3647
3648 0.02 Tues. March 21, 2006
3649     * Moose
3650       - many more tests, fixing some bugs and
3651         edge cases
3652       - &extends now loads the base module with
3653         UNIVERSAL::require
3654         - added UNIVERSAL::require to the
3655           dependencies list
3656       ** API CHANGES **
3657       - each new Moose class will also create
3658         and register a subtype of Object which
3659         correspond to the new Moose class.
3660       - the 'isa' option in &has now only
3661         accepts strings, and will DWIM in
3662         almost all cases
3663
3664     * Moose::Util::TypeConstraints
3665       - added type coercion features
3666         - added tests for this
3667         - added support for this in attributes
3668           and instance construction
3669       ** API CHANGES **
3670       - type construction no longer creates a
3671         function, it registers the type instead.
3672         - added several functions to get the
3673           registered types
3674
3675     * Moose::Object
3676       - BUILDALL and DEMOLISHALL were broken
3677         because of a mis-named hash key, Whoops :)
3678
3679     * Moose::Meta::Attribute
3680       - adding support for coercion in the
3681         autogenerated accessors
3682
3683     * Moose::Meta::Class
3684       - adding support for coercion in the
3685         instance construction
3686
3687     * Moose::Meta::TypeConstraint
3688     * Moose::Meta::TypeCoercion
3689           - type constraints and coercions are now
3690             full fledges meta-objects
3691
3692 0.01 Wed. March 15, 2006
3693     - Moooooooooooooooooose!!!