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