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