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