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