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