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