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