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