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