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