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