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