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