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