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