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