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