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