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