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