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