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