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