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