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