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