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