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