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