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