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