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