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