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