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