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