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