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