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