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