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