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