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