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