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