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