Wrote Extending recipe 1, on using an alternate object base class.
[gitmo/Moose.git] / Changes
1 Revision history for Perl extension Moose
2
3 0.55
4     * Moose::Meta::Attribute
5       - breaking down the way 'handles' methods are 
6         created so that the process can be more easily 
7         overridden by subclasses (stevan)
8
9     * Moose::Meta::TypeConstraint
10       - fixing what is passed into a ->message with 
11         the type constraints (RT #37569)
12         - added tests for this (Charles Alderman)
13
14     * Moose::Util::TypeConstraints
15       - fix coerce to accept anon types like subtype can
16
17     * Moose::Cookbook
18       - reorganized the recipes into sections - Basics, Roles, Meta,
19         Extending - and wrote abstracts for each section (Dave Rolsky)
20
21     * Moose::Cookbook::Basics::Recipe10
22       - A new recipe that demonstrates operator overloading
23         in combination with Moose. (bluefeet)
24
25     * Moose::Cookbook::Meta::Recipe1
26       - an introduction to what meta is and why you'd want to make
27         your own metaclass extensions (Dave Rolsky)
28
29     * Moose::Cookbook::Meta::Recipe4
30       - a very simple metaclass example (Dave Rolsky)
31
32     * Moose::Cookbook::Extending::Recipe1
33       - how to write a Moose-alike module to use your own object base
34         class (Dave Rolsky)
35
36     * Moose::Cookbook::Extending::Recipe2
37       - how to write modules with an API just like C<Moose.pm> (Dave
38         Rolsky)
39
40 0.54 Thurs. July 3, 2008
41     ... this is not my day today ...
42     
43     * Moose::Meta::Attribute
44       - fixed legal_options_for_inheritance such that 
45         clone_and_inherit options still works for 
46         Class::MOP::Attribute objects and therefore 
47         does not break MooseX::AttributeHelpers
48         (stevan)
49
50 0.53 Thurs. July 3, 2008
51     * Whoops, I guess I should run 'make manifest' before 
52       actually releasing the module. No actual changes 
53       in this release, except the fact that it includes
54       the changes that I didn't include in the last 
55       release. (stevan--)
56
57 0.52 Thurs. July 3, 2008
58     * Moose
59       - added "FEATURE REQUESTS" section to the Moose docs
60         to properly direct people (stevan) (RT #34333)
61       - making 'extends' croak if it is passed a Role since 
62         this is not ever something you want to do 
63         (fixed by stevan, found by obra)
64         - added tests for this (stevan)
65
66     * Moose::Object
67       - adding support for DOES (as in UNIVERSAL::DOES) 
68         (nothingmuch)
69         - added test for this
70
71     * Moose::Meta::Attribute
72       - added legal_options_for_inheritance (wreis)
73         - added tests for this (wreis)
74
75     * Moose::Cookbook::Snacks::*
76       - removed some of the unfinished snacks that should 
77         not have been released yet. Added some more examples
78         to the 'Keywords' snack. (stevan)
79
80     * Moose::Cookbook::Style
81       - added general Moose "style guide" of sorts to the 
82         cookbook (nothingmuch) (RT #34335)
83
84     * t/
85       - added more BUILDARGS tests (stevan)
86
87 0.51 Thurs. Jun 26, 2008
88     * Moose::Role
89       - add unimport so "no Moose::Role" actually does
90         something (sartak)
91
92     * Moose::Meta::Role::Application::ToRole
93       - when RoleA did RoleB, and RoleA aliased a method from RoleB in
94         order to provide its own implementation, that method still got
95         added to the list of required methods for consumers of
96         RoleB. Now an aliased method is only added to the list of
97         required methods if the role doing the aliasing does not
98         provide its own implementation. See Recipe 11 for an example
99         of all this. (Dave Rolsky)
100         - added tests for this
101
102     * Moose::Meta::Method::Constructor
103       - when a single argument that wasn't a hashref was provided to
104         an immutabilized constructor, the error message was very
105         unhelpful, as opposed to the non-immutable error. Reported by
106         dew. (Dave Rolsky)
107         - added test for this (Dave Rolsky)
108
109     * Moose::Meta::Attribute
110       - added support for meta_attr->does("ShortAlias") (sartak)
111         - added tests for this (sartak)
112       - moved the bulk of the `handles` handling to the new
113         install_delegation method (Stevan)
114
115     * Moose::Object
116       - Added BUILDARGS, a new step in new()
117
118     * Moose::Meta::Role::Application::RoleSummation
119       - fix typos no one ever sees (sartak)
120
121     * Moose::Util::TypeConstraints
122     * Moose::Meta::TypeConstraint
123     * Moose::Meta::TypeCoercion
124       - Attempt to work around the ??{ } vs. threads issue
125         (not yet fixed)
126       - Some null_constraint optimizations
127
128 0.50 Thurs. Jun 11, 2008
129     - Fixed a version number issue by bumping all modules
130       to 0.50.
131
132 0.49 Thurs. Jun 11, 2008
133     !! This version now approx. 20-25% !!
134     !! faster with new Class::MOP 0.59 !!
135
136     * Moose::Meta::Attribute
137       - fixed how the is => (ro|rw) works with 
138         custom defined reader, writer and accessor
139         options. 
140         - added docs for this (TODO).
141         - added tests for this (Thanks to Penfold)
142       - added the custom attribute alias for regular
143         Moose attributes which is "Moose"
144       - fix builder and default both being used
145         (groditi)
146
147     * Moose
148       Moose::Meta::Class
149       Moose::Meta::Attribute
150       Moose::Meta::Role
151       Moose::Meta::Role::Composite
152       Moose::Util::TypeConstraints
153       - switched usage of reftype to ref because 
154         it is much faster
155         
156     * Moose::Meta::Role
157       - changing add_package_symbol to use the new
158         HASH ref form
159     
160     * Moose::Object
161       - fixed how DEMOLISHALL is called so that it 
162         can be overrided in subclasses (thanks to Sartak)
163         - added test for this (thanks to Sartak)
164
165     * Moose::Util::TypeConstraints
166       - move the ClassName type check code to
167         Class::MOP::is_class_loaded (thanks to Sartak)
168
169     * Moose::Cookbook::Recipe11
170       - add tests for this (thanks to tokuhirom)
171
172 0.48 Thurs. May 29, 2008
173     (early morning release engineering)--
174
175     - fixing the version in Moose::Meta::Method::Destructor
176       which was causing the indexer to choke
177
178 0.47 Thurs. May 29, 2008
179     (late night release engineering)--
180
181     - fixing the version is META.yml, no functional 
182       changes in this release
183
184 0.46 Wed. May 28, 2008
185     !! This version now approx. 20-25% !!
186     !! faster with new Class::MOP 0.57 !!
187
188     * Moose::Meta::Class
189       - some optimizations of the &initialize method
190         since it is called so often by &meta    
191         
192     * Moose::Meta::Class
193       Moose::Meta::Role
194       - now use the get_all_package_symbols from the 
195         updated Class::MOP, test suite is now 10 seconds 
196         faster
197     
198     * Moose::Meta::Method::Destructor
199       - is_needed can now also be called as a class 
200         method for immutablization to check if the 
201         destructor object even needs to be created 
202         at all
203     
204     * Moose::Meta::Method::Destructor
205       Moose::Meta::Method::Constructor
206       - added more descriptive error message to help 
207         keep people from wasting time tracking an error
208         that is easily fixed by upgrading.
209
210 0.45 Saturday, May 24, 2008
211     * Moose
212       - Because of work in Class::MOP 0.56, all 
213         XS based functionality is now optional
214         and a Pure Perl version is supplied
215         - the CLASS_MOP_NO_XS environment variable
216           can now be used to force non-XS versions 
217           to always be used   
218         - several of the packages have been tweaked
219           to take care of this, mostly we added
220           support for the package_name and name 
221           variables in all the Method metaclasses
222       - before/around/after method modifiers now 
223         support regexp matching of names
224         (thanks to Takatoshi Kitano)
225         - tests added for this
226         - NOTE: this only works for classes, it 
227           is currently not supported in roles, 
228           but, ... patches welcome
229       - All usage of Carp::confess have been replaced
230         by Carp::croak in the "keyword" functions since
231         the stack trace is usually not helpful
232       
233     * Moose::Role
234       - All usage of Carp::confess have been replaced
235         by Carp::croak in the "keyword" functions since
236         the stack trace is usually not helpful  
237       - The 'has' keyword for roles now accepts the 
238         same array ref form that Moose.pm does 
239         (has [qw/foo bar/] => (is => 'rw', ...))
240         - added test for this
241       
242     * Moose::Meta::Attribute
243       - trigger on a ro-attribute is no longer an
244         error, as it's useful to trigger off of the
245         constructor
246
247     * Moose::Meta::Class
248       - added same 'add_package_symbol' fix as in 
249         Class::MOP 0.56
250
251     * Moose::Util
252       - does_role now handles non-Moose classes 
253         more gracefully
254         - added tests for this
255       - added the 'add_method_modifier' function 
256         (thanks to Takatoshi Kitano)
257
258     * Moose::Util::TypeConstraints
259       - subtypes of parameterizable types now are 
260         themselves parameterizable types
261
262     * Moose::Meta::Method::Constructor
263       - fixed bug where trigger was not being 
264         called by the inlined immutable 
265         constructors 
266         - added test for this (thanks to Caelum)
267     
268     * Moose::Meta::Role::Application::ToInstance
269       - now uses the metaclass of the instance
270         (if possible) to create the anon-class
271         (thanks Jonathan Rockway)
272     
273     * Moose::Cookbook::Recipe22
274       - added the meta-attribute trait recipe
275         (thanks to Sartak)
276     
277     * t/
278       - fixed hash-ordering test bug that was 
279         causing occasional cpantester failures
280       - renamed the t/000_recipe/*.t tests to be 
281         more descriptive (thanks to Sartak) 
282
283 0.44 Sat. May 10, 2008
284     * Moose
285       - made make_immutable warning cluck to 
286         show where the error is (thanks mst)
287     
288     * Moose::Object
289       - BUILDALL and DEMOLISHALL now call 
290         ->body when looping through the 
291         methods, to avoid the overloaded
292         method call.
293       - fixed issue where DEMOLISHALL was
294         eating the $@ values, and so not 
295         working correctly, it still kind of
296         eats them, but so does vanilla perl 
297         - added tests for this
298       
299     * Moose::Cookbook::Recipe7
300       - added new recipe for immutable 
301         functionality (thanks Dave Rolsky)
302       
303     * Moose::Cookbook::Recipe9
304       - added new recipe for builder and 
305         lazy_build (thanks Dave Rolsky)
306       
307     * Moose::Cookbook::Recipe11
308       - added new recipe for method aliasing 
309         and exclusion with Roles (thanks Dave Rolsky)
310
311     * t/
312       - fixed Win32 test failure (thanks spicyjack)
313
314     ~ removed Build.PL and Module::Build compat 
315       since Module::Install has done that.
316
317 0.43 Wed. April, 30, 2008
318     * NOTE TO SELF:
319         drink more coffee before 
320         doing release engineering
321       
322     - whoops, forgot to do the smolder tests, 
323       and we broke some of the custom meta-attr
324       modules. This fixes that.
325
326 0.42 Mon. April 28, 2008
327     - some bad tests slipped by, nothing else 
328       changed in this release (cpantesters++)
329       
330     - upped the Class::MOP dependency to 0.55 
331       since we have tests which need the C3 
332       support
333
334 0.41 Mon. April 28, 2008
335     ~~ numerous documentation updates ~~
336     
337     - Changed all usage of die to Carp::croak for better
338       error reporting (initial patch by Tod Hagan)
339
340     ** IMPORTANT NOTE **
341     - the make_immutable keyword is now deprecated, don't
342       use it in any new code and please fix your old code
343       as well. There will be 2 releases, and then it will
344       be removed.
345
346     * Moose
347       Moose::Role
348       Moose::Meta::Class
349       - refactored the way inner and super work to avoid
350         any method/@ISA cache penalty (nothingmuch)
351
352     * Moose::Meta::Class
353       - fixing &new_object to make sure trigger gets the 
354         coerced value (spotted by Charles Alderman on the 
355         mailing list)
356         - added test for this
357
358     * Moose::Meta::Method::Constructor
359       - immutable classes which had non-lazy attributes were calling
360         the default generating sub twice in the constructor. (bug
361         found by Jesse Luehrs, fixed by Dave Rolsky)
362         - added tests for this (Dave Rolsky)
363       - fix typo in initialize_body method (nothingmuch)
364       
365     * Moose::Meta::Method::Destructor
366       - fix typo in initialize_body method (nothingmuch)
367
368     * Moose::Meta::Method::Overriden
369       Moose::Meta::Method::Augmented
370       - moved the logic for these into their own 
371         classes (nothingmuch)
372
373     * Moose::Meta::Attribute
374       - inherited attributes may now be extended without 
375         restriction on the type ('isa', 'does') (Sartak)
376         - added tests for this (Sartak)
377       - when an attribute property is malformed (such as lazy without 
378         a default), give the name of the attribute in the error 
379         message (Sartak)
380       - added the &applied_traits and &has_applied_traits methods 
381         to allow introspection of traits
382         - added tests for this
383       - moved 'trait' and 'metaclass' argument handling to here from
384         Moose::Meta::Class
385       - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
386         '+foo' syntax) (nothingmuch)
387         - added tests for this (t0m)
388      
389     * Moose::Object 
390       - localize $@ inside DEMOLISHALL to avoid it 
391         eating $@ (found by Ernesto)
392         - added test for this (thanks to Ernesto)
393
394     * Moose::Util::TypeConstraints
395       - &find_type_constraint now DWIMs when given an 
396         type constraint object or name (nothingmuch)
397       - &find_or_create_type_constraint superseded with a number of more
398         specific functions:
399         - find_or_create_{isa,does}_type_constraint
400         - find_or_parse_type_constraint
401
402     * Moose::Meta::TypeConstraint
403       Moose::Meta::TypeConstraint::Class
404       Moose::Meta::TypeConstraint::Role
405       Moose::Meta::TypeConstraint::Enum
406       Moose::Meta::TypeConstraint::Union
407       Moose::Meta::TypeConstraint::Parameterized
408         - added the &equals method for comparing two type 
409           constraints (nothingmuch)
410           - added tests for this (nothingmuch)
411
412     * Moose::Meta::TypeConstraint
413       - add the &parents method, which is just an alias to &parent. 
414         Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
415
416     * Moose::Meta::TypeConstraint::Class
417       - added the class attribute for introspection purposes
418         (nothingmuch)
419         - added tests for this
420         
421     * Moose::Meta::TypeConstraint::Enum
422       Moose::Meta::TypeConstraint::Role
423       - broke these out into their own classes (nothingmuch)
424
425     * Moose::Cookbook::Recipe*
426       - fixed references to test file locations in the POD
427         and updated up some text for new Moose features
428         (Sartak)
429
430     * Moose::Util
431       - Added &resolve_metaclass_alias, a helper function for finding an actual
432         class for a short name (e.g. in the traits list)
433
434 0.40 Fri. March 14, 2008
435     - I hate Pod::Coverage
436
437 0.39 Fri. March 14, 2008
438     * Moose
439       - documenting the use of '+name' with attributes 
440         that come from recently composed roles. It makes
441         sense, people are using it, and so why not just 
442         officially support it.
443       - fixing the 'extends' keyword so that it will not 
444         trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
445       
446     * oose
447       - added the perl -Moose=+Class::Name feature to allow 
448         monkeypatching of classes in one liners
449       
450     * Moose::Util
451       - fixing the 'apply_all_roles' keyword so that it will not 
452         trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)    
453     
454     * Moose::Meta::Class
455       - added ->create method which now supports roles (thanks to jrockway)
456         - added tests for this
457       - added ->create_anon_class which now supports roles and caching of 
458         the results (thanks to jrockway)
459         - added tests for this
460       - made ->does_role a little more forgiving when it is
461         checking a Class::MOP era metaclasses.
462     
463     * Moose::Meta::Role::Application::ToInstance
464       - it is now possible to pass extra params to be used when 
465         a role is applied to an the instance (rebless_params)
466         - added tests for this
467     
468     * Moose::Util::TypeConstraints
469       - class_type now accepts an optional second argument for a
470         custom message. POD anotated accordingly (groditi)
471         - added tests for this 
472       - it is now possible to make anon-enums by passing 'enum' an 
473         ARRAY ref instead of the $name => @values. Everything else 
474         works as before.
475         - added tests for this
476     
477     * t/
478       - making test for using '+name' on attributes consumed 
479         from a role, it works and makes sense too.    
480
481     * Moose::Meta::Attribute 
482       - fix handles so that it doesn't return nothing 
483         when the method cannot be found, not sure why 
484         it ever did this originally, this means we now
485         have slightly better support for AUTOLOADed 
486         objects
487         - added more delegation tests
488       - adding ->does method to this so as to better 
489         support traits and their introspection.
490         - added tests for this
491     
492     * Moose::Object
493       - localizing the Data::Dumper configurations so 
494         that it does not pollute others (RT #33509)
495       - made ->does a little more forgiving when it is
496         passed Class::MOP era metaclasses.
497
498 0.38 Fri. Feb. 15, 2008
499     * Moose::Meta::Attribute 
500       - fixed initializer to correctly do 
501         type checking and coercion in the 
502         callback 
503         - added tests for this
504
505     * t/
506       - fixed some finicky tests (thanks to konobi)
507
508 0.37 Thurs. Feb. 14, 2008
509     * Moose
510       - fixed some details in Moose::init_meta 
511         and its superclass handling (thanks thepler)
512         - added tests for this (thanks thepler)
513       - 'has' now dies if you don't pass in name 
514         value pairs
515       - added the 'make_immutable' keyword as a shortcut
516         to make_immutable
517
518     * Moose::Meta::Class
519       Moose::Meta::Method::Constructor
520       Moose::Meta::Attribute        
521       - making (init_arg => undef) work here too
522         (thanks to nothingmuch)
523         
524     * Moose::Meta::Attribute        
525       Moose::Meta::Method::Constructor
526       Moose::Meta::Method::Accessor                
527       - make lazy attributes respect attr initializers (rjbs)
528         - added tests for this
529     
530     * Moose::Util::TypeConstraints
531       Moose::Util::TypeConstraints::OptimizedConstraints
532       Moose::Meta::TypeConstraints
533       Moose::Meta::Attribute
534       Moose::Meta::Method::Constructor
535       Moose::Meta::Method::Accessor            
536       - making type errors use the 
537         assigned message (thanks to Sartak)
538         - added tests for this
539
540     * Moose::Meta::Method::Destructor
541       - making sure DESTROY gets inlined properly 
542         with successive DEMOLISH calls (thanks to manito)
543
544     * Moose::Meta::Attribute  
545       Moose::Meta::Method::Accessor 
546       - fixed handling of undef with type constraints 
547         (thanks to Ernesto)               
548         - added tests for this
549     
550     * Moose::Util
551       - added &get_all_init_args and &get_all_attribute_values 
552         (thanks to Sartak and nothingmuch)
553
554 0.36 Sat. Jan. 26, 2008
555     * Moose::Role
556       Moose::Meta::Attribute
557       - role type tests now support when roles are 
558         applied to non-Moose classes (found by ash)
559         - added tests for this (thanks to ash)
560       - couple extra tests to boost code coverage
561
562     * Moose::Meta::Method::Constructor    
563       - improved fix for handling Class::MOP attributes
564         - added test for this        
565       
566     * Moose::Meta::Class
567       - handled the add_attribute($attribute_meta_object)
568         case correctly
569         - added test for this
570
571 0.35 Tues. Jan. 22, 2008
572     * Moose::Meta::Method::Constructor
573       - fix to make sure even Class::MOP attributes 
574         are handled correctly (Thanks to Dave Rolsky)
575         - added test for this (also Dave Rolsky)
576     
577     * Moose::Meta::Class
578       - improved error message on _apply_all_roles, 
579         you should now use Moose::Util::apply_all_roles
580         and you shouldnt have been using a _ prefixed
581         method in the first place ;)
582
583 0.34 Mon. Jan. 21, 2008
584     ~~~ more misc. doc. fixes ~~~
585     ~~ updated copyright dates ~~
586
587     Moose is now a postmodern object system :)
588       - (see the POD for details)
589       
590     * <<Role System Refactoring>>    
591     - this release contains a major reworking and 
592       cleanup of the role system     
593       - 100% backwards compat.
594       - Role application now restructured into seperate
595         classes based on type of applicants
596       - Role summation (combining of more than one role)
597         is much cleaner and anon-classes are no longer 
598         used in this process
599       - new Composite role metaclass    
600       - runtime application of roles to instances
601         is now more efficient and re-uses generated
602         classes when applicable
603         
604     * <<New Role composition features>>
605       - methods can now be excluded from a given role 
606         during composition
607       - methods can now be aliased to another name (and 
608         still retain the original as well)        
609     
610     * Moose::Util::TypeConstraints::OptimizedConstraints
611       - added this module (see above)
612
613     * Moose::Meta::Class
614       - fixed the &_process_attribute method to be called
615         by &add_attribute, so that the API is now correct
616
617     * Moose::Meta::Method::Accessor
618       - fixed bug when passing a list of values to
619         an accessor would get (incorrectly) ignored.
620         Thanks to Sartak for finding this ;)
621         - added tests for this (Sartak again)
622
623     * Moose::Meta::Method::Accessor
624       Moose::Meta::Method::Constructor
625       Moose::Meta::Attribute
626       Moose::Meta::TypeConstraint      
627       Moose::Meta::TypeCoercion      
628       - lots of cleanup of such things as: 
629         - generated methods
630         - type constraint handling
631         - error handling/messages 
632         (thanks to nothingmuch)   
633     
634     * Moose::Meta::TypeConstraint::Parameterizable
635       - added this module to support the refactor 
636         in Moose::Meta::TypeConstraint::Parameterized
637
638     * Moose::Meta::TypeConstraint::Parameterized
639       - refactored how these types are handled so they 
640         are more generic and not confined to ArrayRef
641         and HashRef only
642
643     * t/
644       - shortened some file names for better VMS support (RT #32381)
645
646 0.33 Fri. Dec. 14, 2007
647     !! Moose now loads 2 x faster !!
648     !!  with new Class::MOP 0.49  !!
649
650     ++ new oose.pm module to make command line
651        Moose-ness easier (see POD docs for more)
652
653     * Moose::Meta::Class
654     * Moose::Meta::Role
655       - several tweaks to take advantage of the
656         new method map caching in Class::MOP
657
658     * Moose::Meta::TypeConstraint::Parameterized
659       - allow subtypes of ArrayRef and HashRef to
660         be used as a container (sartak)
661         - added tests for this
662       - basic support for coercion to ArrayRef and
663         HashRef for containers (sartak)
664         - added tests for this
665
666     * Moose::Meta::TypeCoercion
667       - coercions will now create subtypes as needed
668         so you can now add coercions to parameterized
669         types without having to explictly define them
670         - added tests for this
671
672     * Moose::Meta::Method::Accessor
673       - allow subclasses to decide whether we need
674         to copy the value into a new variable (sartak)
675
676 0.32 Tues. Dec. 4, 2007
677     * Moose::Util::TypeConstraints
678       - fixing how subtype aliases of unions work
679         they should inherit the parent's coercion
680         - added tests for this
681       - you can now define multiple coercions on
682         a single type at different times instead of
683         having to do it all in one place
684         - added tests for this
685
686     * Moose::Meta::TypeConstraint
687       - there is now a default constraint of sub { 1 }
688         instead of Moose::Util::TypeConstraints setting
689         this for us
690
691     * Moose::Meta::TypeCoercion
692     * Moose::Meta::TypeCoercion::Union
693       - added the &has_coercion_for_type and
694         &add_type_coercions methods to support the
695         new features above (although you cannot add
696         more type coercions for Union types)
697
698 0.31 Mon. Nov. 26, 2007
699     * Moose::Meta::Attribute
700       - made the +attr syntax handle extending types with
701         parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
702         now works if the original foo is an ArrayRef.
703         - added tests for this.
704       - delegation now works even if the attribute does not
705         have a reader method using the get_read_method_ref
706         method from Class::MOP::Attribute.
707         - added tests for this
708         - added docs for this
709
710     * Moose::Util::TypeConstraints
711       - passing no "additional attribute info" to
712         &find_or_create_type_constraint will no longer
713         attempt to create an __ANON__ type for you,
714         instead it will just return undef.
715         - added docs for this
716
717 0.30 Fri. Nov. 23, 2007
718     * Moose::Meta::Method::Constructor
719       -builder related bug in inlined constructor. (groditi)
720
721     * Moose::Meta::Method::Accessor
722       - genereate unnecessary calls to predicates and refactor
723         code generation for runtime speed (groditi)
724
725     * Moose::Util::TypeConstraints
726       - fix ClassName constraint to introspect symbol table (mst)
727         - added more tests for this (mst)
728       - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
729         with work correctly.
730         - added tests for this
731
732     * Moose::Cookbook
733       - adding the link to Recipie 11 (written by Sartak)
734         - adding test for SYNOPSIS code
735
736     * t/
737       - New tests for builder bug. Upon instantiation, if an
738         attribute had a builder, no value and was not lazy the
739         builder default was not getting run, oops. (groditi)
740
741 0.29 Tues. Nov. 13, 2007
742     * Moose::Meta::Attribute
743       - Fix error message on missing builder method (groditi)
744
745     * Moose::Meta::Method::Accessor
746       - Fix error message on missing builder method (groditi)
747
748     * t/
749       - Add test to check for the correct error message when
750         builder method is missing (groditi)
751
752 0.28 Tues. Nov. 13, 2007
753     - 0.27 packaged incorrectly (groditi)
754
755 0.27 Tues. Nov. 13, 2007
756     * Moose::Meta::Attribute
757       - Added support for the new builder option (groditi)
758       - Added support for lazy_build option (groditi)
759       - Changed slot initialization for predicate changes (groditi)
760
761     * Moose::Meta::Method::Accessor
762       - Added support for lazy_build option (groditi)
763       - Fix inline methods to work with corrected predicate
764         behavior (groditi)
765
766     * Moose::Meta::Method::Constructor
767       - Added support for lazy_build option (groditi)
768
769     * t/
770       - tests for builder and lazy_build (groditi)
771
772     * fixing some misc. bits in the docs that
773       got mentioned on CPAN Forum & perlmonks
774
775     * Moose::Meta::Role
776       - fixed how required methods are handled
777         when they encounter overriden or modified
778         methods from a class (thanks to confound).
779         - added tests for this
780
781     * Moose::Util::TypeConstraint
782       - fixed the type notation parser so that
783         the | always creates a union and so is
784         no longer a valid type char (thanks to
785         konobi, mugwump and #moose for working
786         this one out.)
787         - added more tests for this
788
789 0.26 Thurs. Sept. 27, 2007
790     == New Features ==
791
792     * Parameterized Types
793       We now support parameterized collection types, such as:
794           ArrayRef[Int]    # array or integers
795           HashRef[Object]  # a hash with object values
796       They can also be nested:
797           ArrayRef[HashRef[RegExpr]] # an array of hashes with regexpr values
798       And work with the type unions as well:
799           ArrayRef[Int | Str]  # array of integers of strings
800
801     * Better Framework Extendability
802       Moose.pm is now "extendable" such that it is now much
803       easier to extend the framework and add your own keywords
804       and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
805       section of the Moose.pm docs.
806
807     * Moose Snacks!
808       In an effort to begin documenting some of the various
809       details of Moose as well as some common idioms, we have
810       created Moose::Cookbook::Snacks as a place to find
811       small (easily digestable) nuggets of Moose code.
812
813     ====
814     ~ Several doc updates/cleanup thanks to castaway ~
815
816     - converted build system to use Module::Install instead of
817       Module::Build (thanks to jrockway)
818
819     * Moose
820       - added all the meta classes to the immutable list and
821         set it to inline the accessors
822       - fix import to allow Sub::Exporter like { into => }
823             and { into_level => } (perigrin)
824       - exposed and documented init_meta() to allow better
825             embedding and extending of Moose (perigrin)
826
827         * t/
828           - complete re-organization of the test suite
829           - added some new tests as well
830           - finally re-enabled the Moose::POOP test since
831             the new version of DBM::Deep now works again
832             (thanks rob)
833
834     * Moose::Meta::Class
835       - fixed very odd and very nasty recursion bug with
836         inner/augment (mst)
837         - added tests for this (eilara)
838
839     * Moose::Meta::Attribute
840       Moose::Meta::Method::Constructor
841       Moose::Meta::Method::Accessor
842       - fixed issue with overload::Overloaded getting called
843         on non-blessed items. (RT #29269)
844         - added tests for this
845
846     * Moose::Meta::Method::Accessor
847       - fixed issue with generated accessor code making
848         assumptions about hash based classes (thanks to dexter)
849
850     * Moose::Coookbook::Snacks
851       - these are bits of documentation, not quite as big as
852         Recipes but which have no clear place in the module docs.
853         So they are Snacks! (horray for castaway++)
854
855     * Moose::Cookbook::Recipe4
856       - updated it to use the new ArrayRef[MyType] construct
857         - updated the accompanying test as well
858
859     +++ Major Refactor of the Type Constraint system +++
860     +++       with new features added as well        +++
861
862     * Moose::Util::TypeConstraint
863       - no longer uses package variable to keep track of
864         the type constraints, now uses the an instance of
865         Moose::Meta::TypeConstraint::Registry to do it
866       - added more sophisticated type notation parsing
867         (thanks to mugwump)
868         - added tests for this
869
870     * Moose::Meta::TypeConstraint
871       - some minor adjustments to make subclassing easier
872       - added the package_defined_in attribute so that we
873         can track where the type constraints are created
874
875     * Moose::Meta::TypeConstraint::Union
876       - this is now been refactored to be a subclass of
877         Moose::Meta::TypeConstraint
878
879     * Moose::Meta::TypeCoercion::Union
880       - this has been added to service the newly refactored
881         Moose::Meta::TypeConstraint::Union and is itself
882         a subclass of Moose::Meta::TypeCoercion
883
884     * Moose::Meta::TypeConstraint::Parameterized
885       - added this module (taken from MooseX::AttributeHelpers)
886         to help construct nested collection types
887         - added tests for this
888
889     * Moose::Meta::TypeConstraint::Registry
890       - added this class to keep track of type constraints
891
892 0.25 Mon. Aug. 13, 2007
893     * Moose
894       - Documentation update to reference Moose::Util::TypeConstraints
895         under 'isa' in 'has' for how to define a new type
896         (thanks to shlomif).
897
898     * Moose::Meta::Attribute
899       - required attributes now will no longer accept undef
900         from the constructor, even if there is a default and lazy
901         - added tests for this
902       - default subroutines must return a value which passes the
903         type constraint
904         - added tests for this
905
906     * Moose::Meta::Attribute
907     * Moose::Meta::Method::Constructor
908     * Moose::Meta::Method::Accessor
909       - type-constraint tests now handle overloaded objects correctly
910         in the error message
911         - added tests for this (thanks to EvanCarroll)
912
913     * Moose::Meta::TypeConstraint::Union
914       - added (has_)hand_optimized_constraint to this class so that
915         it behaves as the regular Moose::Meta::TypeConstraint does.
916
917     * Moose::Meta::Role
918       - large refactoring of this code
919       - added several more tests
920         - tests for subtle conflict resolition issues
921           added, but not currently running
922           (thanks to kolibre)
923
924     * Moose::Cookbook::Recipe7
925       - added new recipe for augment/inner functionality
926         (still in progress)
927         - added test for this
928
929     * Moose::Spec::Role
930       - a formal definition of roles (still in progress)
931
932     * Moose::Util
933       - utilities for easier working with Moose classes
934         - added tests for these
935
936     * Test::Moose
937       - This contains Moose specific test functions
938         - added tests for these
939
940 0.24 Tues. July 3, 2007
941     ~ Some doc updates/cleanup ~
942
943     * Moose::Meta::Attribute
944       - added support for roles to be given as parameters
945         to the 'handles' option.
946         - added tests and docs for this
947       - the has '+foo' attribute form now accepts changes to
948         the lazy option, and the addition of a handles option
949         (but not changing the handles option)
950         - added tests and docs for this
951
952     * Moose::Meta::Role
953       - required methods are now fetched using find_method_by_name
954         so that required methods can come from superclasses
955         - adjusted tests for this
956
957 0.23 Mon. June 18, 2007
958     * Moose::Meta::Method::Constructor
959       - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
960     * Moose::Meta::Class
961       - Modify make_immutable to work with the new Class::MOP immutable
962         mechanism + POD + very basic test (groditi)
963     * Moose::Meta::Attribute
964       - Fix handles to use goto() so that caller() comes out properly on
965         the other side (perigrin)
966
967 0.22 Thurs. May 31, 2007
968     * Moose::Util::TypeConstraints
969       - fix for prototype undeclared issue when Moose::Util::TypeConstraints
970         loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
971         prototypes for functions
972       - added the ClassName type constraint, this checks for strings
973         which will respond true to ->isa(UNIVERSAL).
974         - added tests and docs for this
975       - subtyping just in name now works correctly by making the
976         default for where be { 1 }
977         - added test for this
978
979     * Moose::Meta::Method::Accessor
980       - coerce and lazy now work together correctly, thanks to
981         merlyn for finding this bug
982         - tests added for this
983       - fix reader presedence bug in Moose::Meta::Attribute + tests
984
985     * Moose::Object
986       - Foo->new(undef) now gets ignored, it is assumed you meant to pass
987         a HASH-ref and missed. This produces better error messages then
988         having it die cause undef is not a HASH.
989         - added tests for this
990
991 0.21 Thursday, May 2nd, 2007
992     * Moose
993       - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
994       - modified unimport to remove super and inner along with the rest
995         - altered unimport tests to handle this
996
997     * Moose::Role
998       - altered super export to populate SUPER_SLOT
999
1000     * Moose::Meta::Class
1001       - altered augment and override modifier application to use *_SLOT
1002         - modified tests for these to unimport one test class each to test
1003
1004     * Moose::Meta::Role
1005       - fixed issue where custom attribute metaclasses
1006         where not handled correctly in roles
1007         - added tests for this
1008
1009     * Moose::Meta::Class
1010       - fixed issue where extending metaclasses with
1011         roles would blow up. Thanks to Aankhen`` for
1012         finding this insidious error, and it's solution.
1013
1014     ~~ lots of spelling and grammer fixes in the docs,
1015        many many thanks to rlb3 and Aankhen for these :)
1016
1017 0.20 Friday, April 6th, 2007
1018     >> I messed up the SKIP logic in one test
1019        so this release is just to fix that.
1020
1021     * Moose
1022       - 'has' now also accepts an ARRAY ref
1023         to create multiple attrs (see docs)
1024         (thanks to konobi for this)
1025          - added tests and docs
1026
1027 0.19 Thurs. April 5th, 2007
1028     ~~ More documentation updates ~~
1029
1030     * Moose::Util::TypeConstraints
1031       - 'type' now supports messages as well
1032         thanks to phaylon for finding this
1033         - added tests for this
1034       - added &list_all_type_constraints and
1035         &list_all_builtin_type_constraints
1036         functions to facilitate introspection.
1037
1038     * Moose::Meta::Attribute
1039       - fixed regexp 'handles' declarations
1040         to build the list of delegated methods
1041         correctly (and not override important
1042         things like &new) thanks to ashleyb
1043         for finding this
1044         - added tests and docs for this
1045       - added the 'documentation' attributes
1046         so that you can actually document your
1047         attributes and inspect them through the
1048         meta-object.
1049         - added tests and docs for this
1050
1051     * Moose::Meta::Class
1052       - when loading custom attribute metaclasses
1053         it will first look in for the class in the
1054         Moose::Meta::Attribute::Custom::$name, and
1055         then default to just loading $name.
1056         - added tests and docs for this
1057
1058     * Moose::Meta::TypeConstraint
1059       - type constraints now stringify to their names.
1060         - added test for this
1061
1062     * misc.
1063       - added tests to assure we work with Module::Refresh
1064       - added stricter test skip logic in the Moose POOP
1065         test, ask Rob Kinyon why.
1066         - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
1067
1068 0.18 Sat. March 10, 2007
1069     ~~ Many, many documentation updates ~~
1070
1071     * misc.
1072       - We now use Class::MOP::load_class to
1073         load all classes.
1074       - added tests to show types and subtypes
1075         working with Declare::Constraints::Simple
1076         and Test::Deep as constraint engines.
1077
1078 0.18_001
1079     !! You must have Class::MOP 0.37_001  !!
1080     !! for this developer release to work !!
1081
1082     This release was primarily adding the immutable
1083     feature to Moose. An immutable class is one which
1084     you promise not to alter. When you set the class
1085     as immutable it will perform various bits of
1086     memoization and inline certain part of the code
1087     (constructors, destructors and accessors). This
1088     minimizes (and in some cases totally eliminates)
1089     one of Moose's biggest performance hits. This
1090     feature is not on by default, and is 100% optional.
1091     It has several configurable bits as well, so you
1092     can pick and choose to your specific needs.
1093
1094     The changes involved in this were fairly wide and
1095     highly specific, but 100% backwards compatible, so
1096     I am not going to enumerate them here. If you are
1097     truely interested in what was changed, please do
1098     a diff :)
1099
1100 0.17 Tues. Nov. 14, 2006
1101     * Moose::Meta::Method::Accessor
1102       - bugfix for read-only accessors which
1103         are have a type constraint and lazy.
1104         Thanks to chansen for finding it.
1105
1106 0.16 Tues. Nov. 14, 2006
1107     ++ NOTE ++
1108     There are some speed improvements in this release,
1109     but they are only the begining, so stay tuned.
1110
1111     * Moose::Object
1112       - BUILDALL and DEMOLISHALL no longer get
1113         called unless they actually need to be.
1114         This gave us a signifigant speed boost
1115         for the cases when there is no BUILD or
1116         DEMOLISH method present.
1117
1118     * Moose::Util::TypeConstraints
1119     * Moose::Meta::TypeConstraint
1120       - added an 'optimize_as' option to the
1121         type constraint, which allows for a
1122         hand optimized version of the type
1123         constraint to be used when possible.
1124       - Any internally created type constraints
1125         now provide an optimized version as well.
1126
1127 0.15 Sun. Nov. 5, 2006
1128     ++ NOTE ++
1129     This version of Moose *must* have Class::MOP 0.36 in order
1130     to work correctly. A number of small internal tweaks have
1131     been made in order to be compatible with that release.
1132
1133     * Moose::Util::TypeConstraints
1134       - added &unimport so that you can clean out
1135         your class namespace of these exported
1136         keywords
1137
1138     * Moose::Meta::Class
1139       - fixed minor issue which occasionally
1140         comes up during global destruction
1141         (thanks omega)
1142       - moved Moose::Meta::Method::Overriden into
1143         its own file.
1144
1145     * Moose::Meta::Role
1146       - moved Moose::Meta::Role::Method into
1147         its own file.
1148
1149     * Moose::Meta::Attribute
1150       - changed how we do type checks so that
1151         we reduce the overall cost, but still
1152         retain correctness.
1153        *** API CHANGE ***
1154       - moved accessor generation methods to
1155         Moose::Meta::Method::Accessor to
1156         conform to the API changes from
1157         Class::MOP 0.36
1158
1159     * Moose::Meta::TypeConstraint
1160       - changed how constraints are compiled
1161         so that we do less recursion and more
1162         iteration. This makes the type check
1163         faster :)
1164       - moved Moose::Meta::TypeConstraint::Union
1165         into its own file
1166
1167     * Moose::Meta::Method::Accessor
1168       - created this from methods formerly found in
1169         Moose::Meta::Attribute
1170
1171     * Moose::Meta::Role::Method
1172       - moved this from Moose::Meta::Role
1173
1174     * Moose::Meta::Method::Overriden
1175       - moved this from Moose::Meta::Class
1176
1177     * Moose::Meta::TypeConstraint::Union
1178       - moved this from Moose::Meta::TypeConstraint
1179
1180 0.14 Mon. Oct. 9, 2006
1181
1182     * Moose::Meta::Attribute
1183       - fixed lazy attributes which were not getting
1184         checked with the type constraint (thanks ashley)
1185         - added tests for this
1186       - removed the over-enthusiastic DWIMery of the
1187         automatic ArrayRef and HashRef defaults, it
1188         broke predicates in an ugly way.
1189         - removed tests for this
1190
1191 0.13 Sat. Sept. 30, 2006
1192     ++ NOTE ++
1193     This version of Moose *must* have Class::MOP 0.35 in order
1194     to work correctly. A number of small internal tweaks have
1195     been made in order to be compatible with that release.
1196
1197     * Moose
1198       - Removed the use of UNIVERSAL::require to be a better
1199         symbol table citizen and remove a dependency
1200         (thanks Adam Kennedy)
1201
1202       **~~ removed experimental & undocumented feature ~~**
1203       - commented out the 'method' and 'self' keywords, see the
1204         comments for more info.
1205
1206     * Moose::Cookbook
1207       - added a FAQ and WTF files to document frequently
1208         asked questions and common problems
1209
1210     * Moose::Util::TypeConstraints
1211       - added GlobRef and FileHandle type constraint
1212         - added tests for this
1213
1214     * Moose::Meta::Attribute
1215       - if your attribute 'isa' ArrayRef of HashRef, and you have
1216         not explicitly set a default, then make the default DWIM.
1217         This will also work for subtypes of ArrayRef and HashRef
1218         as well.
1219       - you can now auto-deref subtypes of ArrayRef or HashRef too.
1220         - new test added for this (thanks to ashley)
1221
1222     * Moose::Meta::Role
1223       - added basic support for runtime role composition
1224         but this is still *highly experimental*, so feedback
1225         is much appreciated :)
1226         - added tests for this
1227
1228     * Moose::Meta::TypeConstraint
1229       - the type constraint now handles the coercion process
1230         through delegation, this is to support the coercion
1231         of unions
1232
1233     * Moose::Meta::TypeConstraint::Union
1234       - it is now possible for coercions to be performed
1235         on a type union
1236         - added tests for this (thanks to konobi)
1237
1238     * Moose::Meta::TypeCoercion
1239       - properly capturing error when type constraint
1240         is not found
1241
1242     * Build.PL
1243       - Scalar::Util 1.18 is bad on Win32, so temporarily
1244         only require version 1.17 for Win32 and cygwin.
1245         (thanks Adam Kennedy)
1246
1247 0.12 Sat. Sept. 1, 2006
1248     * Moose::Cookbook
1249       - Recipe5 (subtypes & coercion) has been written
1250
1251     * Moose
1252       - fixed "bad meta" error message to be more descriptive
1253       - fixed &unimport to not remove the &inner and &super
1254         keywords because we need to localize them.
1255       - fixed number of spelling/grammer issues, thanks Theory :)
1256
1257       **~~ experimental & undocumented feature ~~**
1258       - added the method and self keywords, they are basically
1259         just sugar, and they may not stay around.
1260
1261     * Moose::Object
1262       - added &dump method to easily Data::Dumper
1263         an object
1264
1265     * Moose::Meta::TypeConstraint
1266       - added the &is_a_type_of method to check both the current
1267         and the subtype of a method (similar to &isa with classes)
1268
1269     * Moose::Meta::Role
1270       - this is now a subclass of Class::MOP::Module, and no longer
1271         creates the _role_meta ugliness of before.
1272         - fixed tests to reflect this change
1273
1274 0.11 Wed. July 12, 2006
1275     * Moose
1276       - added an &unimport method to remove all the keywords
1277         that Moose will import, simply add 'no Moose' to the
1278         bottom of your class file.
1279
1280     * t/
1281       - fixed some test failures caused by a forgotten test
1282         dependency.
1283
1284 0.10 Thurs. July 6, 2006
1285     * Moose
1286       - improved error message when loading modules so
1287         it is less confusing when you load a role.
1288       - added &calculate_all_roles method to
1289         Moose::Meta::Class and Moose::Meta::Role
1290
1291     NOTE:
1292     This module has been tested against Class::MOP 0.30
1293     but it does not yet utilize the optimizations
1294     it makes available. Stay tuned for that ;)
1295
1296 0.09_03 Fri. June 23, 2006
1297     ++ DEVELOPER RELEASE ++
1298     * Moose
1299       - 'use strict' and 'use warnings' are no longer
1300          needed in Moose classes, Moose itself will
1301          turn them on for you.
1302          - added tests for this
1303       - moved code from exported subs to private methods
1304         in Moose::Meta::Class
1305
1306     * Moose::Role
1307       - as with Moose, strict and warnings are
1308         automatically turned on for you.
1309          - added tests for this
1310
1311     * Moose::Meta::Role
1312       - now handles an edge case for override errors
1313         - added tests for this
1314       - added some more edge case tests
1315
1316 0.09_02 Tues. May 16, 2006
1317     ++ DEVELOPER RELEASE ++
1318     * Moose
1319       - added prototypes to the exported subs
1320       - updated docs
1321
1322     * Moose::Role
1323       - added prototypes to the exported subs
1324       - updated docs
1325
1326     * Moose::Util::TypeConstraints
1327       - cleaned up prototypes for the subs
1328       - updated docs
1329
1330 0.09_01 Fri. May 12, 2006
1331     ++ DEVELOPER RELEASE ++
1332       - This release works in combination with
1333         Class::MOP 0.29_01, it is a developer
1334         release because it uses the a new
1335         instance sub-protocol and a fairly
1336         complete Role implementation. It has
1337         not yet been optimized, so it slower
1338         the the previous CPAN version. This
1339         release also lacks good updated docs,
1340         the official release will have updated docs.
1341
1342     * Moose
1343       - refactored the keyword exports
1344         - 'with' now checks Role validaity and
1345           accepts more than one Role at a time
1346         - 'extends' makes metaclass adjustments as
1347            needed to ensure metaclass compatability
1348
1349     * Moose::Role
1350       - refactored the keyword exports
1351         - 'with' now checks Role validaity and
1352           accepts more than one Role at a time
1353
1354     * Moose::Util::TypeConstraints
1355       - added the 'enum' keyword for simple
1356         string enumerations which can be used as
1357         type constraints
1358         - see example of usage in t/202_example.t
1359
1360     * Moose::Object
1361       - more careful checking of params to new()
1362
1363     * Moose::Meta::Role
1364       - much work done on the role composition
1365         - many new tests for conflict detection
1366           and composition edge cases
1367         - not enough documentation, I suggest
1368           looking at the tests
1369
1370     * Moose::Meta::Instance
1371       - added new Instance metaclass to support
1372         the new Class::MOP instance protocol
1373
1374     * Moose::Meta::Class
1375       - some small changes to support the new
1376         instance protocol
1377       - some small additions to support Roles
1378
1379     * Moose::Meta::Attribute
1380       - some improvements to the accessor generation code
1381         by nothingmuch
1382       - some small changes to support the new
1383         instance protocol
1384       - (still somewhat) experimental delegation support
1385         with the 'handles' option
1386         - added several tests for this
1387         - no docs for this yet
1388
1389 0.05 Thurs. April 27, 2006
1390     * Moose
1391       - keywords are now exported with Sub::Exporter
1392         thanks to chansen for this commit
1393       - has keyword now takes a 'metaclass' option
1394         to support custom attribute meta-classes
1395         on a per-attribute basis
1396         - added tests for this
1397       - the 'has' keyword not accepts inherited slot
1398         specifications (has '+foo'). This is still an
1399         experimental feature and probably not finished
1400         see t/038_attribute_inherited_slot_specs.t for
1401         more details, or ask about it on #moose
1402         - added tests for this
1403
1404     * Moose::Role
1405       - keywords are now exported with Sub::Exporter
1406
1407     * Moose::Utils::TypeConstraints
1408       - reorganized the type constraint hierarchy, thanks
1409         to nothingmuch and chansen for his help and advice
1410         on this
1411         - added some tests for this
1412       - keywords are now exported with Sub::Exporter
1413         thanks to chansen for this commit
1414
1415     * Moose::Meta::Class
1416       - due to changes in Class::MOP, we had to change
1417         construct_instance (for the better)
1418
1419     * Moose::Meta::Attribute
1420       - due to changes in Class::MOP, we had to add the
1421         initialize_instance_slot method (it's a good thing)
1422
1423     * Moose::Meta::TypeConstraint
1424       - added type constraint unions
1425         - added tests for this
1426       - added the is_subtype_of predicate method
1427         - added tests for this
1428
1429 0.04 Sun. April 16th, 2006
1430     * Moose::Role
1431       - Roles can now consume other roles
1432         - added tests for this
1433       - Roles can specify required methods now with
1434         the requires() keyword
1435         - added tests for this
1436
1437     * Moose::Meta::Role
1438       - ripped out much of it's guts ,.. much cleaner now
1439       - added required methods and correct handling of
1440         them in apply() for both classes and roles
1441         - added tests for this
1442       - no longer adds a does() method to consuming classes
1443         it relys on the one in Moose::Object
1444       - added roles attribute and some methods to support
1445         roles consuming roles
1446
1447     * Moose::Meta::Attribute
1448       - added support for triggers on attributes
1449         - added tests for this
1450       - added support for does option on an attribute
1451         - added tests for this
1452
1453     * Moose::Meta::Class
1454       - added support for attribute triggers in the
1455         object construction
1456         - added tests for this
1457
1458     * Moose
1459       - Moose no longer creates a subtype for your class
1460         if a subtype of the same name already exists, this
1461         should DWIM in 99.9999% of all cases
1462
1463     * Moose::Util::TypeConstraints
1464       - fixed bug where incorrect subtype conflicts were
1465         being reported
1466         - added test for this
1467
1468     * Moose::Object
1469       - this class can now be extended with 'use base' if
1470         you need it, it properly loads the metaclass class now
1471         - added test for this
1472
1473 0.03_02 Wed. April 12, 2006
1474     * Moose
1475       - you must now explictly use Moose::Util::TypeConstraints
1476         it no longer gets exported for you automatically
1477
1478     * Moose::Object
1479       - new() now accepts hash-refs as well as key/value lists
1480       - added does() method to check for Roles
1481         - added tests for this
1482
1483     * Moose::Meta::Class
1484       - added roles attribute along with the add_role() and
1485         does_role() methods
1486         - added tests for this
1487
1488     * Moose::Meta::Role
1489       - now adds a does() method to consuming classes
1490         which tests the class's hierarchy for roles
1491         - added tests for this
1492
1493 0.03_01 Mon. April 10, 2006
1494     * Moose::Cookbook
1495       - added new Role recipe (no content yet, only code)
1496
1497     * Moose
1498       - added 'with' keyword for Role support
1499         - added test and docs for this
1500       - fixed subtype quoting bug
1501         - added test for this
1502
1503     * Moose::Role
1504       - Roles for Moose
1505         - added test and docs
1506
1507     * Moose::Util::TypeConstraints
1508       - added the message keyword to add custom
1509         error messages to type constraints
1510
1511     * Moose::Meta::Role
1512       - the meta role to support Moose::Role
1513         - added tests and docs
1514
1515     * Moose::Meta::Class
1516       - moved a number of things from Moose.pm
1517         to here, they should have been here
1518         in the first place
1519
1520     * Moose::Meta::Attribute
1521       - moved the attribute option macros here
1522         instead of putting them in Moose.pm
1523
1524     * Moose::Meta::TypeConstraint
1525       - added the message attributes and the
1526         validate method
1527         - added tests and docs for this
1528
1529 0.03 Thurs. March 30, 2006
1530     * Moose::Cookbook
1531       - added the Moose::Cookbook with 5 recipes,
1532         describing all the stuff Moose can do.
1533
1534     * Moose
1535       - fixed an issue with &extends super class loading
1536         it now captures errors and deals with inline
1537         packages correctly (bug found by mst, solution
1538         stolen from alias)
1539       - added super/override & inner/augment features
1540         - added tests and docs for these
1541
1542     * Moose::Object
1543       - BUILDALL now takes a reference of the %params
1544         that are passed to &new, and passes that to
1545         each BUILD as well.
1546
1547     * Moose::Util::TypeConstraints
1548       - Type constraints now survive runtime reloading
1549         - added test for this
1550
1551         * Moose::Meta::Class
1552           - fixed the way attribute defaults are handled
1553             during instance construction (bug found by chansen)
1554
1555     * Moose::Meta::Attribute
1556       - read-only attributes now actually enforce their
1557         read-only-ness (this corrected in Class::MOP as
1558         well)
1559
1560 0.02 Tues. March 21, 2006
1561     * Moose
1562       - many more tests, fixing some bugs and
1563         edge cases
1564       - &extends now loads the base module with
1565         UNIVERSAL::require
1566         - added UNIVERSAL::require to the
1567           dependencies list
1568       ** API CHANGES **
1569       - each new Moose class will also create
1570         and register a subtype of Object which
1571         correspond to the new Moose class.
1572       - the 'isa' option in &has now only
1573         accepts strings, and will DWIM in
1574         almost all cases
1575
1576     * Moose::Util::TypeConstraints
1577       - added type coercion features
1578         - added tests for this
1579         - added support for this in attributes
1580           and instance construction
1581       ** API CHANGES **
1582       - type construction no longer creates a
1583         function, it registers the type instead.
1584         - added several functions to get the
1585           registered types
1586
1587     * Moose::Object
1588       - BUILDALL and DEMOLISHALL were broken
1589         because of a mis-named hash key, Whoops :)
1590
1591     * Moose::Meta::Attribute
1592       - adding support for coercion in the
1593         autogenerated accessors
1594
1595     * Moose::Meta::Class
1596       - adding support for coercion in the
1597         instance construction
1598
1599     * Moose::Meta::TypeConstraint
1600     * Moose::Meta::TypeCoercion
1601           - type constraints and coercions are now
1602             full fledges meta-objects
1603
1604 0.01 Wed. March 15, 2006
1605     - Moooooooooooooooooose!!!