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