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