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