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