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