optimize inlined accessors
[gitmo/Moose.git] / Changes
1 Revision history for Perl extension Moose
2
3     * Moose::Meta::Method::Accessor
4       - genereate unnecessary calls to predicates and refactor
5         code generation for runtime speed (groditi)
6
7     * Moose::Util::TypeConstraints
8       - fix ClassName constraint to introspect symbol table
9
10 0.29 Tues. Nov. 13, 2007
11     * Moose::Meta::Attribute
12       - Fix error message on missing builder method (groditi)
13
14     * Moose::Meta::Method::Accessor
15       - Fix error message on missing builder method (groditi)
16
17     * t/ 
18       - Add test to check for the correct error message when
19         builder method is missing (groditi)
20
21 0.28 Tues. Nov. 13, 2007
22     - 0.27 packaged incorrectly (groditi)     
23
24 0.27 Tues. Nov. 13, 2007
25     * Moose::Meta::Attribute
26       - Added support for the new builder option (groditi)
27       - Added support for lazy_build option (groditi)
28       - Changed slot initialization for predicate changes (groditi)
29
30     * Moose::Meta::Method::Accessor
31       - Added support for lazy_build option (groditi)
32       - Fix inline methods to work with corrected predicate 
33         behavior (groditi)
34
35     * Moose::Meta::Method::Constructor
36       - Added support for lazy_build option (groditi)
37
38     * t/
39       - tests for builder and lazy_build (groditi)
40
41     * fixing some misc. bits in the docs that 
42       got mentioned on CPAN Forum & perlmonks
43     
44     * Moose::Meta::Role
45       - fixed how required methods are handled 
46         when they encounter overriden or modified
47         methods from a class (thanks to confound).
48         - added tests for this
49
50     * Moose::Util::TypeConstraint
51       - fixed the type notation parser so that 
52         the | always creates a union and so is 
53         no longer a valid type char (thanks to 
54         konobi, mugwump and #moose for working 
55         this one out.)
56         - added more tests for this
57
58 0.26 Thurs. Sept. 27, 2007
59     == New Features ==
60     
61     * Parameterized Types
62       We now support parameterized collection types, such as: 
63           ArrayRef[Int]    # array or integers
64           HashRef[Object]  # a hash with object values
65       They can also be nested:
66           ArrayRef[HashRef[RegExpr]] # an array of hashes with regexpr values
67       And work with the type unions as well:
68           ArrayRef[Int | Str]  # array of integers of strings
69     
70     * Better Framework Extendability
71       Moose.pm is now "extendable" such that it is now much 
72       easier to extend the framework and add your own keywords 
73       and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
74       section of the Moose.pm docs.
75     
76     * Moose Snacks!
77       In an effort to begin documenting some of the various 
78       details of Moose as well as some common idioms, we have 
79       created Moose::Cookbook::Snacks as a place to find 
80       small (easily digestable) nuggets of Moose code.
81     
82     ====
83     ~ Several doc updates/cleanup thanks to castaway ~
84     
85     - converted build system to use Module::Install instead of 
86       Module::Build (thanks to jrockway)
87
88     * Moose
89       - added all the meta classes to the immutable list and 
90         set it to inline the accessors
91       - fix import to allow Sub::Exporter like { into => } 
92             and { into_level => } (perigrin)
93       - exposed and documented init_meta() to allow better 
94             embedding and extending of Moose (perigrin)
95             
96         * t/
97           - complete re-organization of the test suite
98           - added some new tests as well 
99           - finally re-enabled the Moose::POOP test since
100             the new version of DBM::Deep now works again
101             (thanks rob)
102
103     * Moose::Meta::Class
104       - fixed very odd and very nasty recursion bug with 
105         inner/augment (mst)
106         - added tests for this (eilara)
107
108     * Moose::Meta::Attribute
109       Moose::Meta::Method::Constructor
110       Moose::Meta::Method::Accessor
111       - fixed issue with overload::Overloaded getting called 
112         on non-blessed items. (RT #29269)
113         - added tests for this
114     
115     * Moose::Meta::Method::Accessor
116       - fixed issue with generated accessor code making 
117         assumptions about hash based classes (thanks to dexter)
118     
119     * Moose::Coookbook::Snacks
120       - these are bits of documentation, not quite as big as 
121         Recipes but which have no clear place in the module docs. 
122         So they are Snacks! (horray for castaway++)
123
124     * Moose::Cookbook::Recipe4
125       - updated it to use the new ArrayRef[MyType] construct
126         - updated the accompanying test as well
127
128     +++ Major Refactor of the Type Constraint system +++
129     +++       with new features added as well        +++
130
131     * Moose::Util::TypeConstraint
132       - no longer uses package variable to keep track of 
133         the type constraints, now uses the an instance of
134         Moose::Meta::TypeConstraint::Registry to do it
135       - added more sophisticated type notation parsing
136         (thanks to mugwump)
137         - added tests for this
138
139     * Moose::Meta::TypeConstraint
140       - some minor adjustments to make subclassing easier
141       - added the package_defined_in attribute so that we 
142         can track where the type constraints are created
143       
144     * Moose::Meta::TypeConstraint::Union
145       - this is now been refactored to be a subclass of 
146         Moose::Meta::TypeConstraint
147         
148     * Moose::Meta::TypeCoercion::Union
149       - this has been added to service the newly refactored
150         Moose::Meta::TypeConstraint::Union and is itself 
151         a subclass of Moose::Meta::TypeCoercion
152       
153     * Moose::Meta::TypeConstraint::Parameterized
154       - added this module (taken from MooseX::AttributeHelpers)
155         to help construct nested collection types
156         - added tests for this
157     
158     * Moose::Meta::TypeConstraint::Registry
159       - added this class to keep track of type constraints
160
161 0.25 Mon. Aug. 13, 2007
162     * Moose
163       - Documentation update to reference Moose::Util::TypeConstraints 
164         under 'isa' in 'has' for how to define a new type 
165         (thanks to shlomif).
166
167     * Moose::Meta::Attribute
168       - required attributes now will no longer accept undef 
169         from the constructor, even if there is a default and lazy
170         - added tests for this
171       - default subroutines must return a value which passes the 
172         type constraint
173         - added tests for this
174     
175     * Moose::Meta::Attribute
176     * Moose::Meta::Method::Constructor
177     * Moose::Meta::Method::Accessor        
178       - type-constraint tests now handle overloaded objects correctly
179         in the error message
180         - added tests for this (thanks to EvanCarroll) 
181
182     * Moose::Meta::TypeConstraint::Union
183       - added (has_)hand_optimized_constraint to this class so that 
184         it behaves as the regular Moose::Meta::TypeConstraint does.
185
186     * Moose::Meta::Role
187       - large refactoring of this code
188       - added several more tests 
189         - tests for subtle conflict resolition issues 
190           added, but not currently running
191           (thanks to kolibre)
192
193     * Moose::Cookbook::Recipe7 
194       - added new recipe for augment/inner functionality 
195         (still in progress)
196         - added test for this
197
198     * Moose::Spec::Role
199       - a formal definition of roles (still in progress)
200
201     * Moose::Util
202       - utilities for easier working with Moose classes
203         - added tests for these
204
205     * Test::Moose
206       - This contains Moose specific test functions
207         - added tests for these
208
209 0.24 Tues. July 3, 2007
210     ~ Some doc updates/cleanup ~
211
212     * Moose::Meta::Attribute
213       - added support for roles to be given as parameters 
214         to the 'handles' option.
215         - added tests and docs for this
216       - the has '+foo' attribute form now accepts changes to 
217         the lazy option, and the addition of a handles option
218         (but not changing the handles option)
219         - added tests and docs for this
220
221     * Moose::Meta::Role
222       - required methods are now fetched using find_method_by_name
223         so that required methods can come from superclasses
224         - adjusted tests for this
225
226 0.23 Mon. June 18, 2007
227     * Moose::Meta::Method::Constructor
228       - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
229     * Moose::Meta::Class
230       - Modify make_immutable to work with the new Class::MOP immutable
231         mechanism + POD + very basic test (groditi)
232     * Moose::Meta::Attribute
233       - Fix handles to use goto() so that caller() comes out properly on 
234         the other side (perigrin)
235
236 0.22 Thurs. May 31, 2007
237     * Moose::Util::TypeConstraints
238       - fix for prototype undeclared issue when Moose::Util::TypeConstraints 
239         loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
240         prototypes for functions
241       - added the ClassName type constraint, this checks for strings 
242         which will respond true to ->isa(UNIVERSAL). 
243         - added tests and docs for this
244       - subtyping just in name now works correctly by making the 
245         default for where be { 1 }
246         - added test for this 
247
248     * Moose::Meta::Method::Accessor
249       - coerce and lazy now work together correctly, thanks to 
250         merlyn for finding this bug
251         - tests added for this
252       - fix reader presedence bug in Moose::Meta::Attribute + tests
253
254     * Moose::Object
255       - Foo->new(undef) now gets ignored, it is assumed you meant to pass
256         a HASH-ref and missed. This produces better error messages then 
257         having it die cause undef is not a HASH.
258         - added tests for this
259
260 0.21 Thursday, May 2nd, 2007
261     * Moose
262       - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
263       - modified unimport to remove super and inner along with the rest
264         - altered unimport tests to handle this
265
266     * Moose::Role
267       - altered super export to populate SUPER_SLOT
268
269     * Moose::Meta::Class
270       - altered augment and override modifier application to use *_SLOT
271         - modified tests for these to unimport one test class each to test
272
273     * Moose::Meta::Role
274       - fixed issue where custom attribute metaclasses
275         where not handled correctly in roles
276         - added tests for this
277     
278     * Moose::Meta::Class
279       - fixed issue where extending metaclasses with 
280         roles would blow up. Thanks to Aankhen`` for
281         finding this insidious error, and it's solution.
282         
283     ~~ lots of spelling and grammer fixes in the docs, 
284        many many thanks to rlb3 and Aankhen for these :)
285
286 0.20 Friday, April 6th, 2007
287     >> I messed up the SKIP logic in one test
288        so this release is just to fix that.
289
290     * Moose
291       - 'has' now also accepts an ARRAY ref
292         to create multiple attrs (see docs)
293         (thanks to konobi for this)
294          - added tests and docs 
295
296 0.19 Thurs. April 5th, 2007
297     ~~ More documentation updates ~~
298
299     * Moose::Util::TypeConstraints
300       - 'type' now supports messages as well
301         thanks to phaylon for finding this
302         - added tests for this
303       - added &list_all_type_constraints and 
304         &list_all_builtin_type_constraints
305         functions to facilitate introspection.
306     
307     * Moose::Meta::Attribute
308       - fixed regexp 'handles' declarations 
309         to build the list of delegated methods
310         correctly (and not override important 
311         things like &new) thanks to ashleyb 
312         for finding this
313         - added tests and docs for this
314       - added the 'documentation' attributes
315         so that you can actually document your 
316         attributes and inspect them through the 
317         meta-object.
318         - added tests and docs for this
319
320     * Moose::Meta::Class
321       - when loading custom attribute metaclasses
322         it will first look in for the class in the 
323         Moose::Meta::Attribute::Custom::$name, and 
324         then default to just loading $name.
325         - added tests and docs for this
326
327     * Moose::Meta::TypeConstraint
328       - type constraints now stringify to their names.
329         - added test for this
330
331     * misc.
332       - added tests to assure we work with Module::Refresh 
333       - added stricter test skip logic in the Moose POOP 
334         test, ask Rob Kinyon why.
335         - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
336
337 0.18 Sat. March 10, 2007
338     ~~ Many, many documentation updates ~~
339
340     * misc.
341       - We now use Class::MOP::load_class to 
342         load all classes.    
343       - added tests to show types and subtypes 
344         working with Declare::Constraints::Simple
345         and Test::Deep as constraint engines.
346
347 0.18_001
348     !! You must have Class::MOP 0.37_001  !!
349     !! for this developer release to work !!
350
351     This release was primarily adding the immutable
352     feature to Moose. An immutable class is one which 
353     you promise not to alter. When you set the class 
354     as immutable it will perform various bits of 
355     memoization and inline certain part of the code
356     (constructors, destructors and accessors). This 
357     minimizes (and in some cases totally eliminates)
358     one of Moose's biggest performance hits. This 
359     feature is not on by default, and is 100% optional.
360     It has several configurable bits as well, so you 
361     can pick and choose to your specific needs.
362     
363     The changes involved in this were fairly wide and 
364     highly specific, but 100% backwards compatible, so 
365     I am not going to enumerate them here. If you are 
366     truely interested in what was changed, please do 
367     a diff :)
368
369 0.17 Tues. Nov. 14, 2006
370     * Moose::Meta::Method::Accessor
371       - bugfix for read-only accessors which 
372         are have a type constraint and lazy.
373         Thanks to chansen for finding it.
374
375 0.16 Tues. Nov. 14, 2006
376     ++ NOTE ++
377     There are some speed improvements in this release, 
378     but they are only the begining, so stay tuned.
379     
380     * Moose::Object
381       - BUILDALL and DEMOLISHALL no longer get 
382         called unless they actually need to be.
383         This gave us a signifigant speed boost
384         for the cases when there is no BUILD or 
385         DEMOLISH method present.
386         
387     * Moose::Util::TypeConstraints
388     * Moose::Meta::TypeConstraint
389       - added an 'optimize_as' option to the 
390         type constraint, which allows for a
391         hand optimized version of the type 
392         constraint to be used when possible.
393       - Any internally created type constraints
394         now provide an optimized version as well.
395
396 0.15 Sun. Nov. 5, 2006
397     ++ NOTE ++
398     This version of Moose *must* have Class::MOP 0.36 in order 
399     to work correctly. A number of small internal tweaks have 
400     been made in order to be compatible with that release.
401
402     * Moose::Util::TypeConstraints
403       - added &unimport so that you can clean out 
404         your class namespace of these exported 
405         keywords
406     
407     * Moose::Meta::Class
408       - fixed minor issue which occasionally 
409         comes up during global destruction 
410         (thanks omega)
411       - moved Moose::Meta::Method::Overriden into 
412         its own file.
413       
414     * Moose::Meta::Role      
415       - moved Moose::Meta::Role::Method into 
416         its own file.
417               
418     * Moose::Meta::Attribute
419       - changed how we do type checks so that 
420         we reduce the overall cost, but still 
421         retain correctness.
422        *** API CHANGE ***
423       - moved accessor generation methods to 
424         Moose::Meta::Method::Accessor to 
425         conform to the API changes from 
426         Class::MOP 0.36
427           
428     * Moose::Meta::TypeConstraint
429       - changed how constraints are compiled
430         so that we do less recursion and more
431         iteration. This makes the type check 
432         faster :)
433       - moved Moose::Meta::TypeConstraint::Union
434         into its own file
435     
436     * Moose::Meta::Method::Accessor
437       - created this from methods formerly found in 
438         Moose::Meta::Attribute
439     
440     * Moose::Meta::Role::Method
441       - moved this from Moose::Meta::Role
442           
443     * Moose::Meta::Method::Overriden
444       - moved this from Moose::Meta::Class
445       
446     * Moose::Meta::TypeConstraint::Union
447       - moved this from Moose::Meta::TypeConstraint
448
449 0.14 Mon. Oct. 9, 2006
450
451     * Moose::Meta::Attribute
452       - fixed lazy attributes which were not getting 
453         checked with the type constraint (thanks ashley)
454         - added tests for this
455       - removed the over-enthusiastic DWIMery of the 
456         automatic ArrayRef and HashRef defaults, it 
457         broke predicates in an ugly way.
458         - removed tests for this
459
460 0.13 Sat. Sept. 30, 2006
461     ++ NOTE ++
462     This version of Moose *must* have Class::MOP 0.35 in order 
463     to work correctly. A number of small internal tweaks have 
464     been made in order to be compatible with that release.
465
466     * Moose
467       - Removed the use of UNIVERSAL::require to be a better
468         symbol table citizen and remove a dependency 
469         (thanks Adam Kennedy)
470
471       **~~ removed experimental & undocumented feature ~~**
472       - commented out the 'method' and 'self' keywords, see the 
473         comments for more info.
474
475     * Moose::Cookbook
476       - added a FAQ and WTF files to document frequently 
477         asked questions and common problems
478         
479     * Moose::Util::TypeConstraints
480       - added GlobRef and FileHandle type constraint
481         - added tests for this
482         
483     * Moose::Meta::Attribute
484       - if your attribute 'isa' ArrayRef of HashRef, and you have
485         not explicitly set a default, then make the default DWIM.
486         This will also work for subtypes of ArrayRef and HashRef 
487         as well.
488       - you can now auto-deref subtypes of ArrayRef or HashRef too.
489         - new test added for this (thanks to ashley)
490         
491     * Moose::Meta::Role
492       - added basic support for runtime role composition
493         but this is still *highly experimental*, so feedback 
494         is much appreciated :)
495         - added tests for this
496
497     * Moose::Meta::TypeConstraint
498       - the type constraint now handles the coercion process
499         through delegation, this is to support the coercion 
500         of unions
501         
502     * Moose::Meta::TypeConstraint::Union
503       - it is now possible for coercions to be performed 
504         on a type union
505         - added tests for this (thanks to konobi)
506
507     * Moose::Meta::TypeCoercion
508       - properly capturing error when type constraint 
509         is not found
510
511     * Build.PL
512       - Scalar::Util 1.18 is bad on Win32, so temporarily
513         only require version 1.17 for Win32 and cygwin.
514         (thanks Adam Kennedy)        
515
516 0.12 Sat. Sept. 1, 2006
517     * Moose::Cookbook
518       - Recipe5 (subtypes & coercion) has been written
519       
520     * Moose
521       - fixed "bad meta" error message to be more descriptive      
522       - fixed &unimport to not remove the &inner and &super  
523         keywords because we need to localize them.
524       - fixed number of spelling/grammer issues, thanks Theory :)
525       
526       **~~ experimental & undocumented feature ~~**
527       - added the method and self keywords, they are basically 
528         just sugar, and they may not stay around.
529         
530     * Moose::Object
531       - added &dump method to easily Data::Dumper 
532         an object
533         
534     * Moose::Meta::TypeConstraint
535       - added the &is_a_type_of method to check both the current
536         and the subtype of a method (similar to &isa with classes)
537
538     * Moose::Meta::Role
539       - this is now a subclass of Class::MOP::Module, and no longer
540         creates the _role_meta ugliness of before. 
541         - fixed tests to reflect this change
542     
543 0.11 Wed. July 12, 2006
544     * Moose
545       - added an &unimport method to remove all the keywords
546         that Moose will import, simply add 'no Moose' to the 
547         bottom of your class file. 
548         
549     * t/
550       - fixed some test failures caused by a forgotten test 
551         dependency.
552
553 0.10 Thurs. July 6, 2006
554     * Moose
555       - improved error message when loading modules so
556         it is less confusing when you load a role.
557       - added &calculate_all_roles method to 
558         Moose::Meta::Class and Moose::Meta::Role
559         
560     NOTE:
561     This module has been tested against Class::MOP 0.30
562     but it does not yet utilize the optimizations 
563     it makes available. Stay tuned for that ;)
564     
565 0.09_03 Fri. June 23, 2006
566     ++ DEVELOPER RELEASE ++
567     * Moose
568       - 'use strict' and 'use warnings' are no longer
569          needed in Moose classes, Moose itself will 
570          turn them on for you.
571          - added tests for this
572       - moved code from exported subs to private methods
573         in Moose::Meta::Class
574          
575     * Moose::Role
576       - as with Moose, strict and warnings are 
577         automatically turned on for you.
578          - added tests for this        
579         
580     * Moose::Meta::Role
581       - now handles an edge case for override errors
582         - added tests for this
583       - added some more edge case tests
584
585 0.09_02 Tues. May 16, 2006
586     ++ DEVELOPER RELEASE ++
587     * Moose
588       - added prototypes to the exported subs
589       - updated docs
590       
591     * Moose::Role
592       - added prototypes to the exported subs      
593       - updated docs
594       
595     * Moose::Util::TypeConstraints
596       - cleaned up prototypes for the subs      
597       - updated docs      
598
599 0.09_01 Fri. May 12, 2006
600     ++ DEVELOPER RELEASE ++
601       - This release works in combination with 
602         Class::MOP 0.29_01, it is a developer 
603         release because it uses the a new 
604         instance sub-protocol and a fairly
605         complete Role implementation. It has 
606         not yet been optimized, so it slower
607         the the previous CPAN version. This 
608         release also lacks good updated docs, 
609         the official release will have updated docs.
610
611     * Moose 
612       - refactored the keyword exports
613         - 'with' now checks Role validaity and 
614           accepts more than one Role at a time
615         - 'extends' makes metaclass adjustments as 
616            needed to ensure metaclass compatability
617           
618     * Moose::Role
619       - refactored the keyword exports
620         - 'with' now checks Role validaity and 
621           accepts more than one Role at a time
622           
623     * Moose::Util::TypeConstraints
624       - added the 'enum' keyword for simple 
625         string enumerations which can be used as 
626         type constraints
627         - see example of usage in t/202_example.t
628         
629     * Moose::Object
630       - more careful checking of params to new()
631       
632     * Moose::Meta::Role
633       - much work done on the role composition
634         - many new tests for conflict detection 
635           and composition edge cases
636         - not enough documentation, I suggest 
637           looking at the tests    
638       
639     * Moose::Meta::Instance
640       - added new Instance metaclass to support 
641         the new Class::MOP instance protocol
642         
643     * Moose::Meta::Class
644       - some small changes to support the new 
645         instance protocol
646       - some small additions to support Roles
647         
648     * Moose::Meta::Attribute
649       - some improvements to the accessor generation code
650         by nothingmuch
651       - some small changes to support the new 
652         instance protocol
653       - (still somewhat) experimental delegation support 
654         with the 'handles' option
655         - added several tests for this
656         - no docs for this yet
657
658 0.05 Thurs. April 27, 2006
659     * Moose
660       - keywords are now exported with Sub::Exporter
661         thanks to chansen for this commit
662       - has keyword now takes a 'metaclass' option 
663         to support custom attribute meta-classes 
664         on a per-attribute basis
665         - added tests for this  
666       - the 'has' keyword not accepts inherited slot
667         specifications (has '+foo'). This is still an 
668         experimental feature and probably not finished
669         see t/038_attribute_inherited_slot_specs.t for 
670         more details, or ask about it on #moose
671         - added tests for this
672         
673     * Moose::Role
674       - keywords are now exported with Sub::Exporter
675
676     * Moose::Utils::TypeConstraints
677       - reorganized the type constraint hierarchy, thanks
678         to nothingmuch and chansen for his help and advice 
679         on this
680         - added some tests for this
681       - keywords are now exported with Sub::Exporter
682         thanks to chansen for this commit
683
684     * Moose::Meta::Class
685       - due to changes in Class::MOP, we had to change
686         construct_instance (for the better)
687         
688     * Moose::Meta::Attribute
689       - due to changes in Class::MOP, we had to add the 
690         initialize_instance_slot method (it's a good thing)
691         
692     * Moose::Meta::TypeConstraint
693       - added type constraint unions 
694         - added tests for this
695       - added the is_subtype_of predicate method
696         - added tests for this
697
698 0.04 Sun. April 16th, 2006
699     * Moose::Role
700       - Roles can now consume other roles
701         - added tests for this
702       - Roles can specify required methods now with 
703         the requires() keyword
704         - added tests for this
705
706     * Moose::Meta::Role
707       - ripped out much of it's guts ,.. much cleaner now
708       - added required methods and correct handling of 
709         them in apply() for both classes and roles
710         - added tests for this
711       - no longer adds a does() method to consuming classes 
712         it relys on the one in Moose::Object
713       - added roles attribute and some methods to support 
714         roles consuming roles
715
716     * Moose::Meta::Attribute
717       - added support for triggers on attributes
718         - added tests for this
719       - added support for does option on an attribute 
720         - added tests for this
721         
722     * Moose::Meta::Class
723       - added support for attribute triggers in the 
724         object construction
725         - added tests for this
726     
727     * Moose
728       - Moose no longer creates a subtype for your class 
729         if a subtype of the same name already exists, this 
730         should DWIM in 99.9999% of all cases
731         
732     * Moose::Util::TypeConstraints
733       - fixed bug where incorrect subtype conflicts were 
734         being reported
735         - added test for this
736         
737     * Moose::Object
738       - this class can now be extended with 'use base' if
739         you need it, it properly loads the metaclass class now
740         - added test for this
741
742 0.03_02 Wed. April 12, 2006
743     * Moose
744       - you must now explictly use Moose::Util::TypeConstraints
745         it no longer gets exported for you automatically
746         
747     * Moose::Object
748       - new() now accepts hash-refs as well as key/value lists
749       - added does() method to check for Roles
750         - added tests for this
751
752     * Moose::Meta::Class
753       - added roles attribute along with the add_role() and 
754         does_role() methods
755         - added tests for this 
756
757     * Moose::Meta::Role
758       - now adds a does() method to consuming classes 
759         which tests the class's hierarchy for roles
760         - added tests for this
761
762 0.03_01 Mon. April 10, 2006
763     * Moose::Cookbook
764       - added new Role recipe (no content yet, only code)
765       
766     * Moose
767       - added 'with' keyword for Role support
768         - added test and docs for this
769       - fixed subtype quoting bug
770         - added test for this 
771
772     * Moose::Role
773       - Roles for Moose
774         - added test and docs
775
776     * Moose::Util::TypeConstraints
777       - added the message keyword to add custom
778         error messages to type constraints        
779       
780     * Moose::Meta::Role
781       - the meta role to support Moose::Role
782         - added tests and docs
783         
784     * Moose::Meta::Class
785       - moved a number of things from Moose.pm 
786         to here, they should have been here 
787         in the first place
788
789     * Moose::Meta::Attribute
790       - moved the attribute option macros here
791         instead of putting them in Moose.pm
792
793     * Moose::Meta::TypeConstraint
794       - added the message attributes and the 
795         validate method
796         - added tests and docs for this
797
798 0.03 Thurs. March 30, 2006
799     * Moose::Cookbook
800       - added the Moose::Cookbook with 5 recipes, 
801         describing all the stuff Moose can do.
802
803     * Moose
804       - fixed an issue with &extends super class loading
805         it now captures errors and deals with inline 
806         packages correctly (bug found by mst, solution 
807         stolen from alias)
808       - added super/override & inner/augment features
809         - added tests and docs for these
810     
811     * Moose::Object
812       - BUILDALL now takes a reference of the %params 
813         that are passed to &new, and passes that to 
814         each BUILD as well.
815         
816     * Moose::Util::TypeConstraints
817       - Type constraints now survive runtime reloading
818         - added test for this
819
820         * Moose::Meta::Class
821           - fixed the way attribute defaults are handled 
822             during instance construction (bug found by chansen)
823
824     * Moose::Meta::Attribute
825       - read-only attributes now actually enforce their
826         read-only-ness (this corrected in Class::MOP as 
827         well)
828
829 0.02 Tues. March 21, 2006
830     * Moose
831       - many more tests, fixing some bugs and  
832         edge cases
833       - &extends now loads the base module with
834         UNIVERSAL::require 
835         - added UNIVERSAL::require to the 
836           dependencies list
837       ** API CHANGES **
838       - each new Moose class will also create 
839         and register a subtype of Object which 
840         correspond to the new Moose class.      
841       - the 'isa' option in &has now only 
842         accepts strings, and will DWIM in 
843         almost all cases
844     
845     * Moose::Util::TypeConstraints
846       - added type coercion features
847         - added tests for this
848         - added support for this in attributes 
849           and instance construction
850       ** API CHANGES **
851       - type construction no longer creates a 
852         function, it registers the type instead.
853         - added several functions to get the 
854           registered types 
855
856     * Moose::Object
857       - BUILDALL and DEMOLISHALL were broken 
858         because of a mis-named hash key, Whoops :)
859     
860     * Moose::Meta::Attribute
861       - adding support for coercion in the
862         autogenerated accessors
863         
864     * Moose::Meta::Class
865       - adding support for coercion in the
866         instance construction  
867
868     * Moose::Meta::TypeConstraint
869     * Moose::Meta::TypeCoercion
870           - type constraints and coercions are now 
871             full fledges meta-objects
872
873 0.01 Wed. March 15, 2006
874     - Moooooooooooooooooose!!!