Document Moose::Meta::Role get_*_method_modifiers fix
[gitmo/Moose.git] / Changes
1 Also see Moose::Manual::Delta for more details of, and workarounds
2 for, noteworthy changes.
3
4 0.84 Fri, Jun 26, 2009
5     * Moose::Role
6       - has now sets definition_context for attributes defined in
7         roles. (doy)
8
9     * Moose::Meta::Attribute
10       - When adding an attribute to a metaclass, if the attribute has
11         no associated methods, it will give a deprecation
12         warning. (hdp)
13       - Methods generated by delegation were not being added to
14         associated_methods. (hdp)
15       - Attribute accessors (reader, writer, accessor, predicate,
16         clearer) now warn if they overwrite an existing method. (doy)
17       - Attribute constructors now warn very noisily about unknown (or
18         mispelled) arguments
19
20     * Moose::Util::TypeConstraints
21       - Deprecated the totally useless Role type name, which just
22         checked if $object->can('does'). Note that this is _not_ the
23         same as a type created by calling role_type('RoleName').
24
25     * Moose::Util::TypeConstraints
26     * Moose::Meta::TypeConstraint::DuckType
27       - Reify duck type from a regular subtype into an actual class
28         (Sartak)
29         - Document this because Sartak did all my work for me
30           (perigrin)
31
32     * Moose::Meta::Attribute
33       - Allow Moose::Meta::TypeConstraint::DuckType in handles, since
34         it is just a list of methods (Sartak)
35
36     * Moose::Meta::Role
37       - The get_*_method_modifiers methods would die if the role had
38         no modifiers of the given type (Robert Buels).
39
40 0.83 Tue, Jun 23, 2009
41     * Moose::Meta::Class
42       - Fix _construct_instance not setting the special __MOP__ object
43         key in instances of anon classes. (doy)
44
45 0.82 Sun, Jun 21, 2009
46     * Moose::Manual::Types
47       - Mention MooseX::Types early to avoid users falling down the
48         string parsing rathole (mst)
49
50     * Moose::Manual::MooseX
51       - Add warnings about class-level extensions and mention considering
52         using plain objects instead
53
54 0.81 Sun, Jun 7, 2009
55     * Bumped our Class::MOP prereq to the latest version (0.85), since
56       that's what we need.
57
58 0.80 Sat, Jun 6, 2009
59     * Moose::Manual::FAQ 
60       - Add FAQ about the coercion change from 0.76 because it came up
61         three times today (perigrin)
62         - Win doy $10 dollars because Sartak didn't think anybody
63           would document this fast enough (perigrin)
64
65     * Moose::Meta::Method::Destructor
66       - Inline a DESTROY method even if there are no DEMOLISH methods
67         to prevent unnecessary introspection in
68         Moose::Object::DEMOLISHALL
69
70     * Moose::*
71       - A role's required methods are now represented by
72         Moose::Meta::Role::Method::Required objects. Conflicts are now
73         represented by Moose::Meta::Role::Method::Conflicting
74         objects. The benefit for end-users in that unresolved
75         conflicts generate different, more instructive, errors,
76         resolving Ovid's #44895. (Sartak)
77
78     * Moose::Role
79       - Improve the error message of "extends" as suggested by Adam
80         Kennedy and confound (Sartak)
81       - Link to Moose::Manual::Roles from Moose::Role as we now have
82         excellent documentation (Adam Kennedy)
83
84     * Tests
85       - Update test suite for subname change in Class::MOP
86         (nothingmuch)
87       - Add TODO test for infinite recursion in Moose::Meta::Class
88         (groditi)
89
90 0.79 Wed, May 13, 2009
91     * Tests
92       - More fixes for Win32 problems. Reported by Robert Krimen.
93
94     * Moose::Object
95       - The DEMOLISHALL method could still blow up in some cases
96         during global destruction. This method has been made more
97         resilient in the face of global destruction's random garbage
98         collection order.
99
100     * Moose::Exporter
101       - If you "also" a module that isn't loaded, the error message
102         now acknowledges that (Sartak)
103
104     * Moose
105       - When your ->meta method does not return a Moose::Meta::Class,
106         the error message gave the wrong output (Sartak)
107
108 0.78 Tue, May 12, 2009
109     * Moose::Cookbook::FAQ and Moose::Cookbook::WTF
110       - Merged these documents into what is now Moose::Manual::FAQ
111
112     * Moose::Unsweetened
113       - Moved to Moose::Manual::Unsweetened
114
115     * Moose::Cookbook::Basics::Recipes 9-12
116       - Renamed to be 8-11, since recipe 8 did not exist
117
118     * Moose::Exporter
119       - Make Moose::Exporter import strict and warnings into packages
120         that use it (doy)
121
122     * Moose::Object
123       - Fix DEMOLISHALL sometimes not being able to find DEMOLISH
124         methods during global destruction (doy)
125
126     * Moose::Meta::Class
127     * Moose::Meta::Role::Application::ToClass
128       - Track the Role::Application objects created during class-role
129         consumption (Sartak)
130
131     * Moose::Meta::Class
132       - Fix metaclass incompatibility errors when extending a vanilla perl
133         class which isa Moose class with a metaclass role applied (t0m)
134
135     * Moose::Meta::Role
136       - Add a role-combination hook, _role_for_combination, for the
137         benefit of MooseX::Role::Parameterized (Sartak)
138
139     * Tests
140       - Some tests were failing on Win32 because they explicit checked
141         warning output for newlines. Reported by Nickolay Platonov.
142
143 0.77 Sat, May 2, 2009
144     * Moose::Meta::Role
145       - Add explicit use of Devel::GlobalDestruction and Sub::Name
146         (perigrin)
147
148     * Moose::Object
149       - Pass a boolean to DEMOLISHALL and DEMOLISH indicating whether
150         or not we are currently in global destruction (doy)
151       - Add explicit use of Devel::GlobalDestruction and Sub::Name
152         (perigrin)
153
154     * Moose::Cookbook::FAQ
155       - Reworked much of the existing content to be more useful to
156         modern Moose hackers (Sartak)
157
158     * Makefile.PL
159       - Depend on Class::MOP 0.83 instead of 0.82_01.
160
161 0.76 Mon, April 27, 2009
162     * Moose::Meta::TypeConstraint
163       - Do not run coercions in coerce() if the value already passes the type
164         constraint (hdp)
165
166     * Moose::Meta::TypeConstraint::Class
167       - In validation error messages, specifically say that the value is not
168         an instance of the class. This should alleviate some frustrating
169         forgot-to-load-my-type bugs. rt.cpan.org #44639 (Sartak)
170
171     * Moose::Meta::Role::Application::ToClass
172       - Revert the class-overrides-role warning in favor of a solution outside
173         of the Moose core (Sartak)
174
175     * Tests
176       - Make Test::Output optional again, since it's only used in a few files
177         (Sartak)
178
179 0.75_01 Thu, April 23, 2009
180     * Moose::Meta::Role::Application::ToClass
181       - Moose now warns about each class overriding methods from roles it
182         consumes (Sartak)
183
184     * Tests
185       - Warnings tests have standardized on Test::Output which is now an
186         unconditionally dependency (Sartak)
187
188     * Moose::Meta::Class
189       - Changes to immutabilization to work with Class::MOP 0.82_01+.
190
191 0.75 Mon, April 20, 2009
192     * Moose
193     * Moose::Meta::Class
194       - Move validation of not inheriting from roles from Moose::extends to
195         Moose::Meta::Class::superclasses (doy)
196
197     * Moose::Util
198       - add ensure_all_roles() function to encapsulate the common "apply this
199         role unless the object already does it" pattern (hdp)
200
201     * Moose::Exporter
202       - Users can now select a different metaclass with the "-metaclass"
203         option to import, for classes and roles (Sartak)
204
205     * Moose::Meta::Role
206       - Make method_metaclass an attr so that it can accept a metarole
207         application.  (jdv)
208
209 0.74 Tue, April 7, 2009
210     * Moose::Meta::Role
211     * Moose::Meta::Method::Destructor
212       - Include stack traces in the deprecation warnings.
213         (Florian Ragwitz)
214
215     * Moose::Meta::Class
216       - Removed the long-deprecated _apply_all_roles method.
217
218     * Moose::Meta::TypeConstraint
219       - Removed the long-deprecated union method.
220
221
222 0.73_02 Mon, April 6, 2009
223     * More deprecations and renamings
224       - Moose::Meta::Method::Constructor
225         - initialize_body => _initialize_body (this is always called
226           when an object is constructed)
227
228     * Moose::Object
229       - The DEMOLISHALL method could throw an exception during global
230         destruction, meaning that your class's DEMOLISH methods would
231         not be properly called. Reported by t0m.
232
233     * Moose::Meta::Method::Destructor
234       - Destructor inlining was totally broken by the change to the
235         is_needed method in 0.72_01. Now there is a test for this
236         feature, and it works again.
237
238     * Moose::Util
239       - Bold the word 'not' in the POD for find_meta (t0m)
240
241 0.73_01 Sun, April 5, 2009
242     * Moose::*
243       - Call user_class->meta in fewer places, with the eventual goal
244         of allowing the user to rename or exclude ->meta
245         altogether. Instead uses Class::MOP::class_of. (Sartak)
246
247     * Moose::Meta::Method::Accessor
248       - If an attribute had a lazy default, and that value did not
249         pass the attribute's type constraint, it did not get the
250         message from the type constraint, instead using a generic
251         message. Test provided by perigrin.
252
253     * Moose::Util::TypeConstraints
254       - Add duck_type keyword. It's sugar over making sure an object
255         can() a list of methods. This is easier than jrockway's
256         suggestion to fork all of CPAN. (perigrin)
257         - add tests and documentation (perigrin)
258
259     * Moose
260       - Document the fact that init_meta() returns the target class's
261         metaclass object. (hdp)
262
263     * Moose::Cookbook::Extending::Recipe1
264     * Moose::Cookbook::Extending::Recipe2
265     * Moose::Cookbook::Extending::Recipe3
266     * Moose::Cookbook::Extending::Recipe4
267       - Make init_meta() examples explicitly return the metaclass and
268         point out this fact. (hdp)
269
270     * Moose::Cookbook::Basics::Recipe12
271       - A new recipe, creating a custom meta-method class.
272
273     * Moose::Cookbook::Meta::Recipe6
274       - A new recipe, creating a custom meta-method class.
275
276     * Moose::Meta::Class
277     * Moose::Meta::Method::Constructor
278       - Attribute triggers no longer receive the meta-attribute object
279         as an argument in any circumstance. Previously, triggers
280         called during instance construction were passed the
281         meta-attribute, but triggers called by normal accessors were
282         not. Fixes RT#44429, reported by Mark Swayne. (hdp)
283
284     * Moose::Manual::Attributes
285       - Remove references to triggers receving the meta-attribute object as an
286         argument. (hdp)
287
288     * Moose::Cookbook::FAQ
289       - Remove recommendation for deprecated Moose::Policy and
290         Moose::Policy::FollowPBP; recommend MooseX::FollowPBP
291         instead. (hdp)
292
293     * Many methods have been renamed with a leading underscore, and a
294       few have been deprecated entirely. The methods with a leading
295       underscore are consider "internals only". People writing
296       subclasses or extensions to Moose should feel free to override
297       them, but they are not for "public" use.
298
299       - Moose::Meta::Class
300         - check_metaclass_compatibility => _check_metaclass_compatibility
301
302       - Moose::Meta::Method::Accessor
303         - initialize_body => _initialize_body (this is always called
304           when an object is constructed)
305         - /(generate_.*_method(?:_inline)?)/ => '_' . $1
306
307       - Moose::Meta::Method::Constructor
308         - initialize_body => _initialize_body (this is always called
309           when an object is constructed)
310         - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
311         - attributes => _attributes (now inherited from parent)
312         - meta_instance => _meta_instance (now inherited from parent)
313
314       - Moose::Meta::Role
315         - alias_method is deprecated. Use add_method
316
317 0.73 Fri, March 29, 2009
318     * No changes from 0.72_01.
319
320 0.72_01 Thu, March 26, 2009
321     * Everything
322       - Almost every module has complete API documentation. A few
323         methods (and even whole classes) have been intentionally
324         excluded pending some rethinking of their APIs.
325
326     * Moose::Util::TypeConstraints
327       - Calling subtype with a name as the only argument is now an
328         exception. If you want an anonymous subtype do:
329
330          my $subtype = subtype as 'Foo';
331
332     * Moose::Cookbook::Meta::Recipe7
333       - A new recipe, creating a custom meta-instance class.
334
335     * Moose::Cookbook::Basics::Recipe5
336       - Fix various typos and mistakes. Includes a patch from Radu
337         Greab.
338
339     * Moose::Cookbook::Basics::Recipe9
340       - Link to this recipe from Moose.pm's builder blurb
341
342     * Moose::Exporter
343       - When wrapping a function with a prototype, Moose::Exporter now
344         makes sure the wrapped function still has the same
345         prototype. (Daisuke Maki)
346
347     * Moose::Meta::Attribute
348       - Allow a subclass to set lazy_build for an inherited
349         attribute. (hdp)
350
351     * Makefile.PL
352       - Explicitly depend on Data::OptList. We already had this dependency
353         via Sub::Exporter, but since we're using it directly we're
354         better off with it listed. (Sartak)
355
356     * Moose::Meta::Method::Constructor
357       - Make it easier to subclass the inlining behaviour. (Ash
358         Berlin)
359
360     * Moose::Manual::Delta
361       - Details significant changes in the history of Moose, along
362         with recommended workarounds.
363
364     * Moose::Manual::Contributing
365       - Contributor's guide to Moose.
366
367     * Moose::Meta::Method::Constructor
368       - The long-deprecated intialize_body method has been removed
369         (yes, spelled like that).
370
371     * Moose::Meta::Method::Destructor
372       - This is_needed method is now always a class method.
373
374     * Moose::Meta::Class
375       - Changes to the internals of how make_immutable works to match
376         changes in latest Class::MOP.
377
378 0.72 Mon, February 23, 2009
379     * Moose::Object
380     * Moose::Meta::Method::Constructor
381       - A mutable class accepted Foo->new(undef) without complaint,
382         while an immutable class would blow up with an unhelpful
383         error. Now, in both cases we throw a helpful error
384         instead. Reported by doy.
385
386 0.71_01 Sun, February 22, 2009
387     * Moose::Cookbook
388       - Hopefully fixed some POD errors in a few recipes that caused
389         them to display weird on search.cpan.org.
390
391     * Moose::Util::TypeConstraints
392       - Calling type or subtype without the sugar helpers (as, where,
393         message) is now deprecated.
394       - The subtype function tried hard to guess what you meant, but
395         often got it wrong. For example:
396
397          my $subtype = subtype as 'ArrayRef[Object]';
398
399         This caused an error in the past, but now works as you'd
400         expect.
401
402     * Everywhere
403       - Make sure Moose.pm is loaded before calling
404         Moose->throw_error. This wasn't normally an issue, but could
405         bite you in weird cases.
406
407 0.71 Thu, February 19, 2009
408     * Moose::Cookbook::Basics::Recipe11
409       - A new recipe which demonstrates the use of BUILDARGS and
410         BUILD. (Dave Rolsky)
411
412     * Moose::Cookbook::Roles::Recipe3
413       - A new recipe, applying a role to an object instance. (Dave
414         Rolsky)
415
416     * Moose::Exporter
417       - Allow overriding specific keywords from "also" packages. (doy)
418
419     * Tests
420       - Replace hardcoded cookbook tests with Test::Inline to ensure
421         the tests match the actual code in the recipes. (Dave Rolsky)
422
423     * Moose::Cookbook
424       - Working on the above turned up a number of little bugs in the
425         recipe code. (Dave Rolsky)
426
427     * Moose::Util::TypeConstraints::Optimized
428       - Just use Class::MOP for the optimized ClassName check. (Dave
429         Rolsky)
430
431 0.70 Sat, February 14, 2009
432     * Moose::Util::TypeConstraints
433       - Added the RoleName type (stevan)
434         - added tests for this (stevan)
435
436     * Moose::Cookbook::Basics::Recipe3
437       - Updated the before qw[left right] sub to be a little more
438         defensive about what it accepts (stevan)
439         - added more tests to t/000_recipies/basics/003_binary_tree.t
440           (stevan)
441
442     * Moose::Object
443       - We now always call DEMOLISHALL, even if a class does not
444         define DEMOLISH. This makes sure that method modifiers on
445         DEMOLISHALL work as expected. (doy)
446         - added tests for this (EvanCarroll)
447
448     * Moose::Util::MetaRole
449       - Accept roles for the wrapped_method_metaclass (rafl)
450         - added tests for this (rafl)
451
452     * Moose::Meta::Attribute
453       - We no longer pass the meta-attribute object as a final
454         argument to triggers. This actually changed for inlined code a
455         while back, but the non-inlined version and the docs were
456         still out of date.
457
458     * Tests
459       - Some tests tried to use Test::Warn 0.10, which had bugs. Now
460         they require 0.11. (Dave Rolsky)
461
462     * Documentation
463       - Lots of small changes to the manual, cookbook, and
464         elsewhere. These were based on feedback from various
465         users, too many to list here. (Dave Rolsky)
466
467 0.69 Thu, February 12, 2009
468     * Moose
469       - Make some keyword errors use throw_error instead of croak
470         since Moose::Exporter wraps keywords now (Sartak)
471
472     * Moose::Cookbook::*
473       - Revised every recipe for style and clarity. Also moved some
474         documentation out of cookbook recipes and into Moose::Manual
475         pages. This work was funded as part of the Moose docs grant
476         from TPF. (Dave Rolsky)
477
478     * Moose::Meta::Method::Delegation
479       - If the attribute doing the delegation was not populated, the
480         error message did not specify the attribute name
481         properly. (doy)
482
483 0.68 Wed, February 4, 2009
484     * POD
485       - Many spelling, typo, and formatting fixes by daxim.
486
487     * Moose::Manual::Attributes
488       - The NAME section in the POD used "Attribute" so search.cpan
489         didn't resolve links from other documents properly.
490
491     * Moose::Meta::Method::Overriden
492       - Now properly spelled as Overridden. Thanks to daxim for
493         noticing this.
494
495 0.67 Tue, February 3, 2009
496     * Moose::Manual::*
497       - Lots of little typo fixes and a few clarifications. Several
498         pages didn't have proper titles, and so weren't actually
499         visible on search.cpan.org. Thanks to hanekomu for a variety
500         of fixes and formatting improvements.
501
502 0.66 Tue, February 3, 2009
503     * Moose::Manual
504       - This is a brand new, extensive manual for Moose. This aims to
505         provide a complete introduction to all of Moose's
506         features. This work was funded as part of the Moose docs grant
507         from TPF. (Dave Rolsky)
508
509     * Moose::Meta::Attribute
510       - Added a delegation_metaclass method to replace a hard-coded
511         use of Moose::Meta::Method::Delegation. (Dave Rolsky)
512
513     * Moose::Util::TypeConstraints
514       - If you created a subtype and passed a parent that Moose didn't
515         know about, it simply ignored the parent. Now it automatically
516         creates the parent as a class type. This may not be what you
517         want, but is less broken than before. (Dave Rolsky)
518
519     * Moose::Util::TypeConstraints
520       - This module tried throw errors by calling Moose->throw_error,
521         but it did not ensure that Moose was loaded first. This could
522         cause very unhelpful errors when it tried to throw an error
523         before Moose was loaded. (Dave Rolsky)
524
525     * Moose::Util::TypeConstraints
526       - You could declare a name with subtype such as "Foo!Bar" that
527         would be allowed, but if you used it in a parameterized type
528         such as "ArrayRef[Foo!Bar]" it wouldn't work. We now do some
529         vetting on names created via the sugar functions, so that they
530         can only contain alphanumerics, ":", and ".". (Dave Rolsky)
531
532 0.65 Thu, January 22, 2008
533     * Moose and Moose::Meta::Method::Overridden
534       - If an overridden method called super(), and then the
535         superclass's method (not overridden) _also_ called super(),
536         Moose went into an endless recursion loop. Test provided by
537         Chris Prather. (Dave Rolsky)
538
539     * Moose::Meta::TypeConstraint
540       - All methods are now documented. (gphat)
541
542     * t/100_bugs/011_DEMOLISH_eats_exceptions.t
543       - Fixed some bogus failures that occurred because we tried to
544         validate filesystem paths in a very ad-hoc and
545         not-quite-correct way. (Dave Rolsky)
546
547     * Moose::Util::TypeConstraints
548       - Added maybe_type to exports. See docs for details. (rjbs)
549
550     * Moose
551       - Added Moose::Util::TypeConstraints to the SEE ALSO
552         section. (pjf)
553
554     * Moose::Role
555       - Methods created via an attribute can now fulfill a "requires"
556         declaration for a role. (nothingmuch)
557
558     * Moose::Meta::Method::*
559       - Stack traces from inlined code will now report its line and
560         file as being in your class, as opposed to in Moose
561         guts. (nothingmuch).
562
563 0.64 Wed, December 31, 2008
564     * Moose::Meta::Method::Accessor
565       - Always inline predicate and clearer methods (Sartak)
566
567     * Moose::Meta::Attribute
568       - Support for parameterized traits (Sartak)
569       - verify_against_type_constraint method to avoid duplication
570         and enhance extensibility (Sartak)
571
572     * Moose::Meta::Class
573       - Tests (but no support yet) for parameterized traits (Sartak)
574
575     * Moose
576       - Require Class::MOP 0.75+, which has the side effect of making
577         sure we work on Win32. (Dave Rolsky)
578
579 0.63 Mon, December 8, 2008
580     * Moose::Unsweetened
581       - Some small grammar tweaks and bug fixes in non-Moose example
582         code. (Dave Rolsky)
583
584 0.62_02 Fri, December 5, 2008
585     * Moose::Meta::Role::Application::ToClass
586       - When a class does not provide all of a role's required
587         methods, the error thrown now mentions all of the missing
588         methods, as opposed to just the first one found. Requested by
589         Curtis Poe (RT #41119). (Dave Rolsky)
590
591     * Moose::Meta::Method::Constructor
592       - Moose will no longer inline a constructor for your class
593         unless it inherits its constructor from Moose::Object, and
594         will warn when it doesn't inline. If you want to force
595         inlining anyway, pass "replace_constructor => 1" to
596         make_immutable. Addresses RT #40968, reported by Jon
597         Swartz. (Dave Rolsky)
598       - The quoting of default values could be broken if the default
599         contained a single quote ('). Now we use quotemeta to escape
600         anything potentially dangerous in the defaults. (Dave Rolsky)
601
602 0.62_01 Wed, December 3, 2008
603     * Moose::Object
604       - use the method->execute API for BUILDALL
605         and DEMOLISHALL (Sartak)
606
607     * Moose::Util::TypeConstraints
608       - We now make all the type constraint meta classes immutable
609         before creating the default types provided by Moose. This
610         should make loading Moose a little faster. (Dave Rolsky)
611
612 0.62 Wed November 26, 2008
613     * Moose::Meta::Role::Application::ToClass
614       Moose::Meta::Role::Application::ToRole
615       - fixed issues where excluding and aliasing the
616         same methods for a single role did not work
617         right (worked just fine with multiple
618         roles) (stevan)
619         - added test for this (stevan)
620
621     * Moose::Meta::Role::Application::RoleSummation
622       - fixed the error message when trying to compose
623         a role with a role it excludes (Sartak)
624
625     * Moose::Exporter
626       - Catch another case where recursion caused the value
627         of $CALLER to be stamped on (t0m)
628         - added test for this (t0m)
629
630     * Moose
631       - Remove the make_immutable keyword, which has been
632         deprecated since April. It breaks metaclasses that
633         use Moose without no Moose (Sartak)
634
635     * Moose::Meta::Attribute
636       - Removing an attribute from a class now also removes delegation
637         (handles) methods installed for that attribute (t0m)
638         - added test for this (t0m)
639
640     * Moose::Meta::Method::Constructor
641       - An attribute with a default that looked like a number (but was
642         really a string) would accidentally be treated as a number
643         when the constructor was made immutable (perigrin)
644         - added test for this (perigrin)
645
646     * Moose::Meta::Role
647       - create method for constructing a role
648         dynamically (Sartak)
649         - added test for this (Sartak)
650       - anonymous roles! (Sartak)
651         - added test for this (Sartak)
652
653     * Moose::Role
654       - more consistent error messages (Sartak)
655
656     * Moose::Cookbook::Roles::Recipe1
657       - attempt to explain why a role that just requires
658         methods is useful (Sartak)
659
660 0.61 Fri November 7, 2008
661     * Moose::Meta::Attribute
662       - When passing a role to handles, it will be loaded if necessary
663         (perigrin)
664
665     * Moose::Meta::Class
666       - Method objects returned by get_method (and other methods)
667         Could end up being returned without an associated_metaclass
668         attribute. Removing get_method_map, which is provided by
669         Class::MOP::Class, fixed this. The Moose version did nothing
670         different from its parent except introduce a bug. (Dave Rolsky)
671         - added tests for this (jdv79)
672
673     * Various
674       - Added a $VERSION to all .pm files which didn't have one. Fixes
675         RT #40049, reported by Adam Kennedy. (Dave Rolsky)
676
677     * Moose::Cookbook::Basics::Recipe4
678     * Moose::Cookbook::Basics::Recipe6
679       - These files had spaces on the first line of the SYNOPSIS, as
680         opposed to a totally empty line. According to RT #40432, this
681         confuses POD parsers. (Dave Rolsky)
682
683 0.60 Fri October 24, 2008
684     * Moose::Exporter
685       - Passing "-traits" when loading Moose caused the Moose.pm
686         exports to be broken. Reported by t0m. (Dave Rolsky)
687         - Tests for this bug. (t0m)
688
689     * Moose::Util
690       - Change resolve_metaclass alias to use the new
691         load_first_existing_class function. This makes it a lot
692         simpler, and also around 5 times faster. (t0m)
693       - Add caching to resolve_metaclass_alias, which gives an order
694         of magnitude speedup to things which repeatedly call the
695         Moose::Meta::Attribute->does method, notably MooseX::Storage
696         (t0m)
697
698     * Moose::Util::TypeConstraint
699       - Put back the changes for parameterized constraints that
700         shouldn't have been removed in 0.59. We still cannot parse
701         them, but MooseX modules can create them in some other
702         way. See the 0.58 changes for more details. (jnapiorkowski)
703       - Changed the way subtypes are created so that the job is
704         delegated to a type constraint parent. This clears up some
705         hardcoded checking and should allow correct subtypes of
706         Moose::Meta::Type::Constraint. Don't rely on this new API too
707         much (create_child_type) because it may go away in the
708         future. (jnapiorkowski)
709
710     * Moose::Meta::TypeConstraint::Union
711       - Type constraint names are sorted as strings, not numbers.
712         (jnapiorkowski)
713
714     * Moose::Meta::TypeConstraint::Parameterizable
715       - New parameterize method. This can be used as a factory method
716         to make a new type constraint with a given parameterized
717         type. (jnapiorkowski)
718         - added tests (jnapiorkowski)
719
720 0.59 Tue October 14, 2008
721     * Moose
722       - Add abridged documentation for builder/default/initializer/
723         predicate, and link to more details sections in
724         Class::MOP::Attribute. (t0m)
725
726     * Moose::Util::TypeConstraints
727       - removed prototypes from all but the &-based stuff (mst)
728
729     * Moose::Util::TypeConstraints
730       - Creating a anonymous subtype with both a constraint and a
731         message failed with a very unhelpful error, but should just
732         work. Reported by t0m. (Dave Rolsky)
733
734     * Tests
735       - Some tests that used Test::Warn if it was available failed
736         with older versions of Test::Warn. Reported by Fayland. (Dave
737         Rolsky)
738       - Test firing behavior of triggers in relation to builder/default/
739         lazy_build. (t0m)
740       - Test behavior of equals/is_a_type_of/is_a_subtype_of for all
741         kinds of supported type. (t0m)
742
743     * Moose::Meta::Class
744       - In create(), do not pass "roles" option to the superclass
745         - added related test that creates an anon metaclass with
746           a required attribute
747
748     * Moose::Meta::TypeConstraint::Class
749     * Moose::Meta::TypeConstraint::Role
750       - Unify behavior of equals/is_a_type_of/is_a_subtype_of with
751         other types (as per change in 0.55_02). (t0m)
752
753     * Moose::Meta::TypeConstraint::Registry
754       - Fix warning when dealing with unknown type names (t0m)
755
756     * Moose::Util::TypeConstraints
757       - Reverted changes from 0.58 related to handle parameterized
758         types. This caused random failures on BSD and Win32 systems,
759         apparently related to the regex engine. This means that Moose
760         can no longer parse structured type constraints like
761         ArrayRef[Int,Int] or HashRef[name=>Str]. This will be
762         supported in a slightly different way via MooseX::Types some
763         time in the future. (Dave Rolsky)
764
765 0.58 Sat September 20, 2008
766     !! This release has an incompatible change regarding !!
767     !! how roles add methods to a class !!
768
769     * Roles and role application
770       ! Roles now add methods by calling add_method, not
771         alias_method. They make sure to always provide a method
772         object, which will be cloned internally. This means that it is
773         now possible to track the source of a method provided by a
774         role, and even follow its history through intermediate roles.
775
776         This means that methods added by a role now show up when
777         looking at a class's method list/map. (Dave Rolsky)
778
779     * Makefile.PL
780       - From this release on, we'll try to maintain a list of
781         conflicting modules, and warn you if you have one
782         installed. For example, this release conflicts with ...
783         - MooseX::Singleton        <= 0.11
784         - MooseX::Params::Validate <= 0.05
785         - Fey::ORM                 <= 0.10
786
787         In general, we try to not break backwards compatibility for
788         most Moose users, but MooseX modules and other code which
789         extends Moose's metaclasses is often affected by very small
790         changes in the Moose internals.
791
792     * Moose::Meta::Method::Delegation
793     * Moose::Meta::Attribute
794       - Delegation methods now have their own method class. (Dave
795         Rolsky)
796
797     * Moose::Meta::TypeConstraint::Parameterizable
798       - Added a new method 'parameterize' which is basically a factory
799         for the containing constraint. This makes it easier to create
800         new types of parameterized constraints. (jnapiorkowski)
801
802     * Moose::Meta::TypeConstraint::Union
803       - Changed the way Union types canonicalize their names to follow
804         the normalized TC naming rules, which means we strip all
805         whitespace. (jnapiorkowski)
806
807     * Moose::Util::TypeConstraints
808       - Parameter and Union args are now sorted, this makes Int|Str
809         the same constraint as Str|Int. (jnapiorkowski)
810       - Changes to the way Union types are parsed to more correctly
811         stringify their names. (jnapiorkowski)
812       - When creating a parameterized type, we now use the new
813         parameterize method. (jnapiorkowski)
814       - Incoming type constraint strings are now normalized to remove
815         all whitespace differences. (jnapiorkowski)
816       - Changed the way we parse type constraint strings so that we now
817         match TC[Int,Int,...] and TC[name=>Str] as parameterized type
818         constraints. This lays the foundation for more flexible type
819         constraint implementations.
820
821     * Tests and docs for all the above. (jnapiorkowski)
822
823     * Moose::Exporter
824     * Moose
825       - Moose::Exporter will no longer remove a subroutine that the
826         exporting package re-exports. Moose re-exports the
827         Carp::confess function, among others. The reasoning is that we
828         cannot know whether you have also explicitly imported those
829         functions for your own use, so we err on the safe side and
830         always keep them. (Dave Rolsky)
831         - added tests for this (rafl)
832
833     * Moose::Meta::Class
834       - Changes to how we fix metaclass compatibility that are much
835         too complicated to go into. The summary is that Moose is much
836         less likely to complain about metaclass incompatibility
837         now. In particular, if two metaclasses differ because
838         Moose::Util::MetaRole was used on the two corresponding
839         classes, then the difference in roles is reconciled for the
840         subclass's metaclass. (Dave Rolsky)
841       - Squashed an warning in _process_attribute (thepler)
842
843     * Moose::Meta::Role
844       - throw exceptions (sooner) for invalid attribute names (thepler)
845         - added tests for this (thepler)
846
847     * Moose::Util::MetaRole
848       - If you explicitly set a constructor or destructor class for a
849         metaclass object, and then applied roles to the metaclass,
850         that explicitly set class would be lost and replaced with the
851         default.
852
853     * Moose::Meta::Class
854     * Moose::Meta::Attribute
855     * Moose::Meta::Method
856     * Moose
857     * Moose::Object
858     * Moose::Error::Default
859     * Moose::Error::Croak
860     * Moose::Error::Confess
861       - All instances of confess() changed to use overridable
862         C<throw_error> method. This method ultimately calls a class
863         constructor, and you can change the class being called. In
864         addition, errors now pass more information than just a string.
865         The default C<error_class> behaves like C<Carp::confess>, so
866         the behavior is not visibly different for end users.
867
868 0.57 Wed September 3, 2008
869     * Moose::Intro
870       - A new bit of doc intended to introduce folks familiar with
871         "standard" Perl 5 OO to Moose concepts. (Dave Rolsky)
872
873     * Moose::Unsweetened
874       - Shows examples of two classes, each done first with and then
875         without Moose. This makes a nice parallel to
876         Moose::Intro. (Dave Rolsky)
877
878     * Moose::Util::TypeConstraints
879       - Fixed a bug in find_or_parse_type_constraint so that it
880         accepts a Moose::Meta::TypeConstraint object as the parent
881         type, not just a name (jnapiorkowski)
882         - added tests (jnapiorkowski)
883
884     * Moose::Exporter
885       - If Sub::Name was not present, unimporting failed to actually
886         remove some sugar subs, causing test failures (Dave Rolsky)
887
888 0.56 Mon September 1, 2008
889     For those not following the series of dev releases, there are
890     several major changes in this release of Moose.
891       ! Moose::init_meta should now be called as a method. See the
892         docs for details.
893
894       - Major performance improvements by nothingmuch.
895
896       - New modules for extension writers, Moose::Exporter and
897         Moose::Util::MetaRole by Dave Rolsky.
898
899       - Lots of doc improvements and additions, especially in the
900         cookbook sections.
901
902       - Various bug fixes.
903
904     * Removed all references to the experimental-but-no-longer-needed
905       Moose::Meta::Role::Application::ToMetaclassInstance.
906
907     * Require Class::MOP 0.65.
908
909 0.55_04 Sat August 30, 2008
910     * Moose::Util::MetaRole
911     * Moose::Cookbook::Extending::Recipe2
912       - This simplifies the application of roles to any meta class, as
913         well as the base object class. Reimplemented metaclass traits
914         using this module. (Dave Rolsky)
915
916     * Moose::Cookbook::Extending::Recipe1
917       - This a new recipe, an overview of various ways to write Moose
918         extensions (Dave Rolsky)
919
920     * Moose::Cookbook::Extending::Recipe3
921     * Moose::Cookbook::Extending::Recipe4
922       - These used to be Extending::Recipe1 and Extending::Recipe2,
923         respectively.
924
925 0.55_03 Fri August 29, 2008
926     * No changes from 0.55_02 except increasing the Class::MOP
927       dependency to 0.64_07.
928
929 0.55_02 Fri August 29, 2008
930     * Makefile.PL and Moose.pm
931       - explicitly require Perl 5.8.0+ (Dave Rolsky)
932
933     * Moose::Util::TypeConstraints
934       - Fix warnings from find_type_constraint if the type is not
935         found (t0m).
936
937     * Moose::Meta::TypeConstraint
938       - Predicate methods (equals/is_a_type_of/is_subtype_of) now
939         return false if the type you specify cannot be found in the
940         type registry, rather than throwing an unhelpful and
941         coincidental exception. (t0m).
942         - added docs & test for this (t0m)
943
944     * Moose::Meta::TypeConstraint::Registry
945       - add_type_constraint now throws an exception if a parameter is
946         not supplied (t0m).
947         - added docs & test for this (t0m)
948
949     * Moose::Cookbook::FAQ
950       - Added a faq entry on the difference between "role" and "trait"
951         (t0m)
952
953     * Moose::Meta::Role
954       - Fixed a bug that caused role composition to not see a required
955         method when that method was provided by another role being
956         composed at the same time. (Dave Rolsky)
957         - test and bug finding (tokuhirom)
958
959 0.55_01 Wed August 20, 2008
960
961     !! Calling Moose::init_meta as a function is now         !!
962     !! deprecated. Please see the Moose.pm docs for details. !!
963
964     * Moose::Meta::Method::Constructor
965       - Fix inlined constructor so that values produced by default
966         or builder methods are coerced as required. (t0m)
967         - added test for this (t0m)
968
969     * Moose::Meta::Attribute
970       - A lazy attribute with a default or builder did not attempt to
971         coerce the default value. The immutable code _did_
972         coerce. (t0m)
973         - added test for this (t0m)
974
975     * Moose::Exporter
976       - This is a new helper module for writing "Moose-alike"
977         modules. This should make the lives of MooseX module authors
978         much easier. (Dave Rolsky)
979
980     * Moose
981     * Moose::Cookbook::Meta::Recipe5
982       - Implemented metaclass traits (and wrote a recipe for it):
983
984           use Moose -traits => 'Foo'
985
986         This should make writing small Moose extensions a little
987         easier (Dave Rolsky)
988
989     * Moose::Cookbook::Basics::Recipe1
990       - Removed any examples of direct hashref access, and applied an
991         editorial axe to reduce verbosity. (Dave Rolsky)
992
993     * Moose::Cookbook::Basics::Recipe1
994       - Also applied an editorial axe here. (Dave Rolsky)
995
996     * Moose
997     * Moose::Cookbook::Extending::Recipe1
998     * Moose::Cookbook::Extending::Recipe2
999       - Rewrote extending and embedding moose documentation and
1000         recipes to use Moose::Exporter (Dave Rolsky)
1001
1002     * Moose
1003     * Moose::Role
1004       - These two modules now warn when you load them from the main
1005         package "main" package, because we will not export sugar to
1006         main. Previously it just did nothing. (Dave Rolsky)
1007
1008     * Moose::Role
1009       - Now provide an init_meta method just like Moose.pm, and you
1010         can call this to provide an alternate role metaclass. (Dave
1011         Rolsky and nothingmuch)
1012       - get_method_map now respects the package cache flag (nothingmuch)
1013
1014     * Moose::Meta::Role
1015       - Two new methods - add_method and wrap_method_body
1016         (nothingmuch)
1017
1018     * many modules
1019       - Optimizations including allowing constructors to accept hash
1020         refs, making many more classes immutable, and making
1021         constructors immutable. (nothingmuch)
1022
1023 0.55 Sun August 3, 2008
1024     * Moose::Meta::Attribute
1025       - breaking down the way 'handles' methods are
1026         created so that the process can be more easily
1027         overridden by subclasses (stevan)
1028
1029     * Moose::Meta::TypeConstraint
1030       - fixing what is passed into a ->message with
1031         the type constraints (RT #37569)
1032         - added tests for this (Charles Alderman)
1033
1034     * Moose::Util::TypeConstraints
1035       - fix coerce to accept anon types like subtype can (mst)
1036
1037     * Moose::Cookbook
1038       - reorganized the recipes into sections - Basics, Roles, Meta,
1039         Extending - and wrote abstracts for each section (Dave Rolsky)
1040
1041     * Moose::Cookbook::Basics::Recipe10
1042       - A new recipe that demonstrates operator overloading
1043         in combination with Moose. (bluefeet)
1044
1045     * Moose::Cookbook::Meta::Recipe1
1046       - an introduction to what meta is and why you'd want to make
1047         your own metaclass extensions (Dave Rolsky)
1048
1049     * Moose::Cookbook::Meta::Recipe4
1050       - a very simple metaclass example (Dave Rolsky)
1051
1052     * Moose::Cookbook::Extending::Recipe1
1053       - how to write a Moose-alike module to use your own object base
1054         class (Dave Rolsky)
1055
1056     * Moose::Cookbook::Extending::Recipe2
1057       - how to write modules with an API just like C<Moose.pm> (Dave
1058         Rolsky)
1059
1060     * all documentation
1061       - Tons of fixes, both syntactical and grammatical (Dave
1062         Rolsky, Paul Fenwick)
1063
1064 0.54 Thurs. July 3, 2008
1065     ... this is not my day today ...
1066
1067     * Moose::Meta::Attribute
1068       - fixed legal_options_for_inheritance such that
1069         clone_and_inherit options still works for
1070         Class::MOP::Attribute objects and therefore
1071         does not break MooseX::AttributeHelpers
1072         (stevan)
1073
1074 0.53 Thurs. July 3, 2008
1075     * Whoops, I guess I should run 'make manifest' before
1076       actually releasing the module. No actual changes
1077       in this release, except the fact that it includes
1078       the changes that I didn't include in the last
1079       release. (stevan--)
1080
1081 0.52 Thurs. July 3, 2008
1082     * Moose
1083       - added "FEATURE REQUESTS" section to the Moose docs
1084         to properly direct people (stevan) (RT #34333)
1085       - making 'extends' croak if it is passed a Role since
1086         this is not ever something you want to do
1087         (fixed by stevan, found by obra)
1088         - added tests for this (stevan)
1089
1090     * Moose::Object
1091       - adding support for DOES (as in UNIVERSAL::DOES)
1092         (nothingmuch)
1093         - added test for this
1094
1095     * Moose::Meta::Attribute
1096       - added legal_options_for_inheritance (wreis)
1097         - added tests for this (wreis)
1098
1099     * Moose::Cookbook::Snacks::*
1100       - removed some of the unfinished snacks that should
1101         not have been released yet. Added some more examples
1102         to the 'Keywords' snack. (stevan)
1103
1104     * Moose::Cookbook::Style
1105       - added general Moose "style guide" of sorts to the
1106         cookbook (nothingmuch) (RT #34335)
1107
1108     * t/
1109       - added more BUILDARGS tests (stevan)
1110
1111 0.51 Thurs. Jun 26, 2008
1112     * Moose::Role
1113       - add unimport so "no Moose::Role" actually does
1114         something (sartak)
1115
1116     * Moose::Meta::Role::Application::ToRole
1117       - when RoleA did RoleB, and RoleA aliased a method from RoleB in
1118         order to provide its own implementation, that method still got
1119         added to the list of required methods for consumers of
1120         RoleB. Now an aliased method is only added to the list of
1121         required methods if the role doing the aliasing does not
1122         provide its own implementation. See Recipe 11 for an example
1123         of all this. (Dave Rolsky)
1124         - added tests for this
1125
1126     * Moose::Meta::Method::Constructor
1127       - when a single argument that wasn't a hashref was provided to
1128         an immutabilized constructor, the error message was very
1129         unhelpful, as opposed to the non-immutable error. Reported by
1130         dew. (Dave Rolsky)
1131         - added test for this (Dave Rolsky)
1132
1133     * Moose::Meta::Attribute
1134       - added support for meta_attr->does("ShortAlias") (sartak)
1135         - added tests for this (sartak)
1136       - moved the bulk of the `handles` handling to the new
1137         install_delegation method (Stevan)
1138
1139     * Moose::Object
1140       - Added BUILDARGS, a new step in new()
1141
1142     * Moose::Meta::Role::Application::RoleSummation
1143       - fix typos no one ever sees (sartak)
1144
1145     * Moose::Util::TypeConstraints
1146     * Moose::Meta::TypeConstraint
1147     * Moose::Meta::TypeCoercion
1148       - Attempt to work around the ??{ } vs. threads issue
1149         (not yet fixed)
1150       - Some null_constraint optimizations
1151
1152 0.50 Thurs. Jun 11, 2008
1153     - Fixed a version number issue by bumping all modules
1154       to 0.50.
1155
1156 0.49 Thurs. Jun 11, 2008
1157     !! This version now approx. 20-25% !!
1158     !! faster with new Class::MOP 0.59 !!
1159
1160     * Moose::Meta::Attribute
1161       - fixed how the is => (ro|rw) works with
1162         custom defined reader, writer and accessor
1163         options.
1164         - added docs for this (TODO).
1165         - added tests for this (Thanks to Penfold)
1166       - added the custom attribute alias for regular
1167         Moose attributes which is "Moose"
1168       - fix builder and default both being used
1169         (groditi)
1170
1171     * Moose
1172       Moose::Meta::Class
1173       Moose::Meta::Attribute
1174       Moose::Meta::Role
1175       Moose::Meta::Role::Composite
1176       Moose::Util::TypeConstraints
1177       - switched usage of reftype to ref because
1178         it is much faster
1179
1180     * Moose::Meta::Role
1181       - changing add_package_symbol to use the new
1182         HASH ref form
1183
1184     * Moose::Object
1185       - fixed how DEMOLISHALL is called so that it
1186         can be overrided in subclasses (thanks to Sartak)
1187         - added test for this (thanks to Sartak)
1188
1189     * Moose::Util::TypeConstraints
1190       - move the ClassName type check code to
1191         Class::MOP::is_class_loaded (thanks to Sartak)
1192
1193     * Moose::Cookbook::Recipe11
1194       - add tests for this (thanks to tokuhirom)
1195
1196 0.48 Thurs. May 29, 2008
1197     (early morning release engineering)--
1198
1199     - fixing the version in Moose::Meta::Method::Destructor
1200       which was causing the indexer to choke
1201
1202 0.47 Thurs. May 29, 2008
1203     (late night release engineering)--
1204
1205     - fixing the version is META.yml, no functional
1206       changes in this release
1207
1208 0.46 Wed. May 28, 2008
1209     !! This version now approx. 20-25% !!
1210     !! faster with new Class::MOP 0.57 !!
1211
1212     * Moose::Meta::Class
1213       - some optimizations of the &initialize method
1214         since it is called so often by &meta
1215
1216     * Moose::Meta::Class
1217       Moose::Meta::Role
1218       - now use the get_all_package_symbols from the
1219         updated Class::MOP, test suite is now 10 seconds
1220         faster
1221
1222     * Moose::Meta::Method::Destructor
1223       - is_needed can now also be called as a class
1224         method for immutablization to check if the
1225         destructor object even needs to be created
1226         at all
1227
1228     * Moose::Meta::Method::Destructor
1229       Moose::Meta::Method::Constructor
1230       - added more descriptive error message to help
1231         keep people from wasting time tracking an error
1232         that is easily fixed by upgrading.
1233
1234 0.45 Saturday, May 24, 2008
1235     * Moose
1236       - Because of work in Class::MOP 0.57, all
1237         XS based functionality is now optional
1238         and a Pure Perl version is supplied
1239         - the CLASS_MOP_NO_XS environment variable
1240           can now be used to force non-XS versions
1241           to always be used
1242         - several of the packages have been tweaked
1243           to take care of this, mostly we added
1244           support for the package_name and name
1245           variables in all the Method metaclasses
1246       - before/around/after method modifiers now
1247         support regexp matching of names
1248         (thanks to Takatoshi Kitano)
1249         - tests added for this
1250         - NOTE: this only works for classes, it
1251           is currently not supported in roles,
1252           but, ... patches welcome
1253       - All usage of Carp::confess have been replaced
1254         by Carp::croak in the "keyword" functions since
1255         the stack trace is usually not helpful
1256
1257     * Moose::Role
1258       - All usage of Carp::confess have been replaced
1259         by Carp::croak in the "keyword" functions since
1260         the stack trace is usually not helpful
1261       - The 'has' keyword for roles now accepts the
1262         same array ref form that Moose.pm does
1263         (has [qw/foo bar/] => (is => 'rw', ...))
1264         - added test for this
1265
1266     * Moose::Meta::Attribute
1267       - trigger on a ro-attribute is no longer an
1268         error, as it's useful to trigger off of the
1269         constructor
1270
1271     * Moose::Meta::Class
1272       - added same 'add_package_symbol' fix as in
1273         Class::MOP 0.57
1274
1275     * Moose::Util
1276       - does_role now handles non-Moose classes
1277         more gracefully
1278         - added tests for this
1279       - added the 'add_method_modifier' function
1280         (thanks to Takatoshi Kitano)
1281
1282     * Moose::Util::TypeConstraints
1283       - subtypes of parameterizable types now are
1284         themselves parameterizable types
1285
1286     * Moose::Meta::Method::Constructor
1287       - fixed bug where trigger was not being
1288         called by the inlined immutable
1289         constructors
1290         - added test for this (thanks to Caelum)
1291
1292     * Moose::Meta::Role::Application::ToInstance
1293       - now uses the metaclass of the instance
1294         (if possible) to create the anon-class
1295         (thanks Jonathan Rockway)
1296
1297     * Moose::Cookbook::Recipe22
1298       - added the meta-attribute trait recipe
1299         (thanks to Sartak)
1300
1301     * t/
1302       - fixed hash-ordering test bug that was
1303         causing occasional cpantester failures
1304       - renamed the t/000_recipe/*.t tests to be
1305         more descriptive (thanks to Sartak)
1306
1307 0.44 Sat. May 10, 2008
1308     * Moose
1309       - made make_immutable warning cluck to
1310         show where the error is (thanks mst)
1311
1312     * Moose::Object
1313       - BUILDALL and DEMOLISHALL now call
1314         ->body when looping through the
1315         methods, to avoid the overloaded
1316         method call.
1317       - fixed issue where DEMOLISHALL was
1318         eating the $@ values, and so not
1319         working correctly, it still kind of
1320         eats them, but so does vanilla perl
1321         - added tests for this
1322
1323     * Moose::Cookbook::Recipe7
1324       - added new recipe for immutable
1325         functionality (thanks Dave Rolsky)
1326
1327     * Moose::Cookbook::Recipe9
1328       - added new recipe for builder and
1329         lazy_build (thanks Dave Rolsky)
1330
1331     * Moose::Cookbook::Recipe11
1332       - added new recipe for method aliasing
1333         and exclusion with Roles (thanks Dave Rolsky)
1334
1335     * t/
1336       - fixed Win32 test failure (thanks spicyjack)
1337
1338     ~ removed Build.PL and Module::Build compat
1339       since Module::Install has done that.
1340
1341 0.43 Wed. April, 30, 2008
1342     * NOTE TO SELF:
1343         drink more coffee before
1344         doing release engineering
1345
1346     - whoops, forgot to do the smolder tests,
1347       and we broke some of the custom meta-attr
1348       modules. This fixes that.
1349
1350 0.42 Mon. April 28, 2008
1351     - some bad tests slipped by, nothing else
1352       changed in this release (cpantesters++)
1353
1354     - upped the Class::MOP dependency to 0.55
1355       since we have tests which need the C3
1356       support
1357
1358 0.41 Mon. April 28, 2008
1359     ~~ numerous documentation updates ~~
1360
1361     - Changed all usage of die to Carp::croak for better
1362       error reporting (initial patch by Tod Hagan)
1363
1364     ** IMPORTANT NOTE **
1365     - the make_immutable keyword is now deprecated, don't
1366       use it in any new code and please fix your old code
1367       as well. There will be 2 releases, and then it will
1368       be removed.
1369
1370     * Moose
1371       Moose::Role
1372       Moose::Meta::Class
1373       - refactored the way inner and super work to avoid
1374         any method/@ISA cache penalty (nothingmuch)
1375
1376     * Moose::Meta::Class
1377       - fixing &new_object to make sure trigger gets the
1378         coerced value (spotted by Charles Alderman on the
1379         mailing list)
1380         - added test for this
1381
1382     * Moose::Meta::Method::Constructor
1383       - immutable classes which had non-lazy attributes were calling
1384         the default generating sub twice in the constructor. (bug
1385         found by Jesse Luehrs, fixed by Dave Rolsky)
1386         - added tests for this (Dave Rolsky)
1387       - fix typo in initialize_body method (nothingmuch)
1388
1389     * Moose::Meta::Method::Destructor
1390       - fix typo in initialize_body method (nothingmuch)
1391
1392     * Moose::Meta::Method::Overriden
1393       Moose::Meta::Method::Augmented
1394       - moved the logic for these into their own
1395         classes (nothingmuch)
1396
1397     * Moose::Meta::Attribute
1398       - inherited attributes may now be extended without
1399         restriction on the type ('isa', 'does') (Sartak)
1400         - added tests for this (Sartak)
1401       - when an attribute property is malformed (such as lazy without
1402         a default), give the name of the attribute in the error
1403         message (Sartak)
1404       - added the &applied_traits and &has_applied_traits methods
1405         to allow introspection of traits
1406         - added tests for this
1407       - moved 'trait' and 'metaclass' argument handling to here from
1408         Moose::Meta::Class
1409       - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
1410         '+foo' syntax) (nothingmuch)
1411         - added tests for this (t0m)
1412
1413     * Moose::Object
1414       - localize $@ inside DEMOLISHALL to avoid it
1415         eating $@ (found by Ernesto)
1416         - added test for this (thanks to Ernesto)
1417
1418     * Moose::Util::TypeConstraints
1419       - &find_type_constraint now DWIMs when given an
1420         type constraint object or name (nothingmuch)
1421       - &find_or_create_type_constraint superseded with a number of more
1422         specific functions:
1423         - find_or_create_{isa,does}_type_constraint
1424         - find_or_parse_type_constraint
1425
1426     * Moose::Meta::TypeConstraint
1427       Moose::Meta::TypeConstraint::Class
1428       Moose::Meta::TypeConstraint::Role
1429       Moose::Meta::TypeConstraint::Enum
1430       Moose::Meta::TypeConstraint::Union
1431       Moose::Meta::TypeConstraint::Parameterized
1432         - added the &equals method for comparing two type
1433           constraints (nothingmuch)
1434           - added tests for this (nothingmuch)
1435
1436     * Moose::Meta::TypeConstraint
1437       - add the &parents method, which is just an alias to &parent.
1438         Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
1439
1440     * Moose::Meta::TypeConstraint::Class
1441       - added the class attribute for introspection purposes
1442         (nothingmuch)
1443         - added tests for this
1444
1445     * Moose::Meta::TypeConstraint::Enum
1446       Moose::Meta::TypeConstraint::Role
1447       - broke these out into their own classes (nothingmuch)
1448
1449     * Moose::Cookbook::Recipe*
1450       - fixed references to test file locations in the POD
1451         and updated up some text for new Moose features
1452         (Sartak)
1453
1454     * Moose::Util
1455       - Added &resolve_metaclass_alias, a helper function for finding an actual
1456         class for a short name (e.g. in the traits list)
1457
1458 0.40 Fri. March 14, 2008
1459     - I hate Pod::Coverage
1460
1461 0.39 Fri. March 14, 2008
1462     * Moose
1463       - documenting the use of '+name' with attributes
1464         that come from recently composed roles. It makes
1465         sense, people are using it, and so why not just
1466         officially support it.
1467       - fixing the 'extends' keyword so that it will not
1468         trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
1469
1470     * oose
1471       - added the perl -Moose=+Class::Name feature to allow
1472         monkeypatching of classes in one liners
1473
1474     * Moose::Util
1475       - fixing the 'apply_all_roles' keyword so that it will not
1476         trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
1477
1478     * Moose::Meta::Class
1479       - added ->create method which now supports roles (thanks to jrockway)
1480         - added tests for this
1481       - added ->create_anon_class which now supports roles and caching of
1482         the results (thanks to jrockway)
1483         - added tests for this
1484       - made ->does_role a little more forgiving when it is
1485         checking a Class::MOP era metaclasses.
1486
1487     * Moose::Meta::Role::Application::ToInstance
1488       - it is now possible to pass extra params to be used when
1489         a role is applied to an the instance (rebless_params)
1490         - added tests for this
1491
1492     * Moose::Util::TypeConstraints
1493       - class_type now accepts an optional second argument for a
1494         custom message. POD anotated accordingly (groditi)
1495         - added tests for this
1496       - it is now possible to make anon-enums by passing 'enum' an
1497         ARRAY ref instead of the $name => @values. Everything else
1498         works as before.
1499         - added tests for this
1500
1501     * t/
1502       - making test for using '+name' on attributes consumed
1503         from a role, it works and makes sense too.
1504
1505     * Moose::Meta::Attribute
1506       - fix handles so that it doesn't return nothing
1507         when the method cannot be found, not sure why
1508         it ever did this originally, this means we now
1509         have slightly better support for AUTOLOADed
1510         objects
1511         - added more delegation tests
1512       - adding ->does method to this so as to better
1513         support traits and their introspection.
1514         - added tests for this
1515
1516     * Moose::Object
1517       - localizing the Data::Dumper configurations so
1518         that it does not pollute others (RT #33509)
1519       - made ->does a little more forgiving when it is
1520         passed Class::MOP era metaclasses.
1521
1522 0.38 Fri. Feb. 15, 2008
1523     * Moose::Meta::Attribute
1524       - fixed initializer to correctly do
1525         type checking and coercion in the
1526         callback
1527         - added tests for this
1528
1529     * t/
1530       - fixed some finicky tests (thanks to konobi)
1531
1532 0.37 Thurs. Feb. 14, 2008
1533     * Moose
1534       - fixed some details in Moose::init_meta
1535         and its superclass handling (thanks thepler)
1536         - added tests for this (thanks thepler)
1537       - 'has' now dies if you don't pass in name
1538         value pairs
1539       - added the 'make_immutable' keyword as a shortcut
1540         to make_immutable
1541
1542     * Moose::Meta::Class
1543       Moose::Meta::Method::Constructor
1544       Moose::Meta::Attribute
1545       - making (init_arg => undef) work here too
1546         (thanks to nothingmuch)
1547
1548     * Moose::Meta::Attribute
1549       Moose::Meta::Method::Constructor
1550       Moose::Meta::Method::Accessor
1551       - make lazy attributes respect attr initializers (rjbs)
1552         - added tests for this
1553
1554     * Moose::Util::TypeConstraints
1555       Moose::Util::TypeConstraints::OptimizedConstraints
1556       Moose::Meta::TypeConstraints
1557       Moose::Meta::Attribute
1558       Moose::Meta::Method::Constructor
1559       Moose::Meta::Method::Accessor
1560       - making type errors use the
1561         assigned message (thanks to Sartak)
1562         - added tests for this
1563
1564     * Moose::Meta::Method::Destructor
1565       - making sure DESTROY gets inlined properly
1566         with successive DEMOLISH calls (thanks to manito)
1567
1568     * Moose::Meta::Attribute
1569       Moose::Meta::Method::Accessor
1570       - fixed handling of undef with type constraints
1571         (thanks to Ernesto)
1572         - added tests for this
1573
1574     * Moose::Util
1575       - added &get_all_init_args and &get_all_attribute_values
1576         (thanks to Sartak and nothingmuch)
1577
1578 0.36 Sat. Jan. 26, 2008
1579     * Moose::Role
1580       Moose::Meta::Attribute
1581       - role type tests now support when roles are
1582         applied to non-Moose classes (found by ash)
1583         - added tests for this (thanks to ash)
1584       - couple extra tests to boost code coverage
1585
1586     * Moose::Meta::Method::Constructor
1587       - improved fix for handling Class::MOP attributes
1588         - added test for this
1589
1590     * Moose::Meta::Class
1591       - handled the add_attribute($attribute_meta_object)
1592         case correctly
1593         - added test for this
1594
1595 0.35 Tues. Jan. 22, 2008
1596     * Moose::Meta::Method::Constructor
1597       - fix to make sure even Class::MOP attributes
1598         are handled correctly (Thanks to Dave Rolsky)
1599         - added test for this (also Dave Rolsky)
1600
1601     * Moose::Meta::Class
1602       - improved error message on _apply_all_roles,
1603         you should now use Moose::Util::apply_all_roles
1604         and you shouldnt have been using a _ prefixed
1605         method in the first place ;)
1606
1607 0.34 Mon. Jan. 21, 2008
1608     ~~~ more misc. doc. fixes ~~~
1609     ~~ updated copyright dates ~~
1610
1611     Moose is now a postmodern object system :)
1612       - (see the POD for details)
1613
1614     * <<Role System Refactoring>>
1615     - this release contains a major reworking and
1616       cleanup of the role system
1617       - 100% backwards compat.
1618       - Role application now restructured into seperate
1619         classes based on type of applicants
1620       - Role summation (combining of more than one role)
1621         is much cleaner and anon-classes are no longer
1622         used in this process
1623       - new Composite role metaclass
1624       - runtime application of roles to instances
1625         is now more efficient and re-uses generated
1626         classes when applicable
1627
1628     * <<New Role composition features>>
1629       - methods can now be excluded from a given role
1630         during composition
1631       - methods can now be aliased to another name (and
1632         still retain the original as well)
1633
1634     * Moose::Util::TypeConstraints::OptimizedConstraints
1635       - added this module (see above)
1636
1637     * Moose::Meta::Class
1638       - fixed the &_process_attribute method to be called
1639         by &add_attribute, so that the API is now correct
1640
1641     * Moose::Meta::Method::Accessor
1642       - fixed bug when passing a list of values to
1643         an accessor would get (incorrectly) ignored.
1644         Thanks to Sartak for finding this ;)
1645         - added tests for this (Sartak again)
1646
1647     * Moose::Meta::Method::Accessor
1648       Moose::Meta::Method::Constructor
1649       Moose::Meta::Attribute
1650       Moose::Meta::TypeConstraint
1651       Moose::Meta::TypeCoercion
1652       - lots of cleanup of such things as:
1653         - generated methods
1654         - type constraint handling
1655         - error handling/messages
1656         (thanks to nothingmuch)
1657
1658     * Moose::Meta::TypeConstraint::Parameterizable
1659       - added this module to support the refactor
1660         in Moose::Meta::TypeConstraint::Parameterized
1661
1662     * Moose::Meta::TypeConstraint::Parameterized
1663       - refactored how these types are handled so they
1664         are more generic and not confined to ArrayRef
1665         and HashRef only
1666
1667     * t/
1668       - shortened some file names for better VMS support (RT #32381)
1669
1670 0.33 Fri. Dec. 14, 2007
1671     !! Moose now loads 2 x faster !!
1672     !!  with new Class::MOP 0.49  !!
1673
1674     ++ new oose.pm module to make command line
1675        Moose-ness easier (see POD docs for more)
1676
1677     * Moose::Meta::Class
1678     * Moose::Meta::Role
1679       - several tweaks to take advantage of the
1680         new method map caching in Class::MOP
1681
1682     * Moose::Meta::TypeConstraint::Parameterized
1683       - allow subtypes of ArrayRef and HashRef to
1684         be used as a container (sartak)
1685         - added tests for this
1686       - basic support for coercion to ArrayRef and
1687         HashRef for containers (sartak)
1688         - added tests for this
1689
1690     * Moose::Meta::TypeCoercion
1691       - coercions will now create subtypes as needed
1692         so you can now add coercions to parameterized
1693         types without having to explictly define them
1694         - added tests for this
1695
1696     * Moose::Meta::Method::Accessor
1697       - allow subclasses to decide whether we need
1698         to copy the value into a new variable (sartak)
1699
1700 0.32 Tues. Dec. 4, 2007
1701     * Moose::Util::TypeConstraints
1702       - fixing how subtype aliases of unions work
1703         they should inherit the parent's coercion
1704         - added tests for this
1705       - you can now define multiple coercions on
1706         a single type at different times instead of
1707         having to do it all in one place
1708         - added tests for this
1709
1710     * Moose::Meta::TypeConstraint
1711       - there is now a default constraint of sub { 1 }
1712         instead of Moose::Util::TypeConstraints setting
1713         this for us
1714
1715     * Moose::Meta::TypeCoercion
1716     * Moose::Meta::TypeCoercion::Union
1717       - added the &has_coercion_for_type and
1718         &add_type_coercions methods to support the
1719         new features above (although you cannot add
1720         more type coercions for Union types)
1721
1722 0.31 Mon. Nov. 26, 2007
1723     * Moose::Meta::Attribute
1724       - made the +attr syntax handle extending types with
1725         parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
1726         now works if the original foo is an ArrayRef.
1727         - added tests for this.
1728       - delegation now works even if the attribute does not
1729         have a reader method using the get_read_method_ref
1730         method from Class::MOP::Attribute.
1731         - added tests for this
1732         - added docs for this
1733
1734     * Moose::Util::TypeConstraints
1735       - passing no "additional attribute info" to
1736         &find_or_create_type_constraint will no longer
1737         attempt to create an __ANON__ type for you,
1738         instead it will just return undef.
1739         - added docs for this
1740
1741 0.30 Fri. Nov. 23, 2007
1742     * Moose::Meta::Method::Constructor
1743       -builder related bug in inlined constructor. (groditi)
1744
1745     * Moose::Meta::Method::Accessor
1746       - genereate unnecessary calls to predicates and refactor
1747         code generation for runtime speed (groditi)
1748
1749     * Moose::Util::TypeConstraints
1750       - fix ClassName constraint to introspect symbol table (mst)
1751         - added more tests for this (mst)
1752       - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
1753         with work correctly.
1754         - added tests for this
1755
1756     * Moose::Cookbook
1757       - adding the link to Recipie 11 (written by Sartak)
1758         - adding test for SYNOPSIS code
1759
1760     * t/
1761       - New tests for builder bug. Upon instantiation, if an
1762         attribute had a builder, no value and was not lazy the
1763         builder default was not getting run, oops. (groditi)
1764
1765 0.29 Tues. Nov. 13, 2007
1766     * Moose::Meta::Attribute
1767       - Fix error message on missing builder method (groditi)
1768
1769     * Moose::Meta::Method::Accessor
1770       - Fix error message on missing builder method (groditi)
1771
1772     * t/
1773       - Add test to check for the correct error message when
1774         builder method is missing (groditi)
1775
1776 0.28 Tues. Nov. 13, 2007
1777     - 0.27 packaged incorrectly (groditi)
1778
1779 0.27 Tues. Nov. 13, 2007
1780     * Moose::Meta::Attribute
1781       - Added support for the new builder option (groditi)
1782       - Added support for lazy_build option (groditi)
1783       - Changed slot initialization for predicate changes (groditi)
1784
1785     * Moose::Meta::Method::Accessor
1786       - Added support for lazy_build option (groditi)
1787       - Fix inline methods to work with corrected predicate
1788         behavior (groditi)
1789
1790     * Moose::Meta::Method::Constructor
1791       - Added support for lazy_build option (groditi)
1792
1793     * t/
1794       - tests for builder and lazy_build (groditi)
1795
1796     * fixing some misc. bits in the docs that
1797       got mentioned on CPAN Forum & perlmonks
1798
1799     * Moose::Meta::Role
1800       - fixed how required methods are handled
1801         when they encounter overriden or modified
1802         methods from a class (thanks to confound).
1803         - added tests for this
1804
1805     * Moose::Util::TypeConstraint
1806       - fixed the type notation parser so that
1807         the | always creates a union and so is
1808         no longer a valid type char (thanks to
1809         konobi, mugwump and #moose for working
1810         this one out.)
1811         - added more tests for this
1812
1813 0.26 Thurs. Sept. 27, 2007
1814     == New Features ==
1815
1816     * Parameterized Types
1817       We now support parameterized collection types, such as:
1818           ArrayRef[Int]    # array or integers
1819           HashRef[Object]  # a hash with object values
1820       They can also be nested:
1821           ArrayRef[HashRef[RegexpRef]] # an array of hashes with regex values
1822       And work with the type unions as well:
1823           ArrayRef[Int | Str]  # array of integers of strings
1824
1825     * Better Framework Extendability
1826       Moose.pm is now "extendable" such that it is now much
1827       easier to extend the framework and add your own keywords
1828       and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
1829       section of the Moose.pm docs.
1830
1831     * Moose Snacks!
1832       In an effort to begin documenting some of the various
1833       details of Moose as well as some common idioms, we have
1834       created Moose::Cookbook::Snacks as a place to find
1835       small (easily digestable) nuggets of Moose code.
1836
1837     ====
1838     ~ Several doc updates/cleanup thanks to castaway ~
1839
1840     - converted build system to use Module::Install instead of
1841       Module::Build (thanks to jrockway)
1842
1843     * Moose
1844       - added all the meta classes to the immutable list and
1845         set it to inline the accessors
1846       - fix import to allow Sub::Exporter like { into => }
1847             and { into_level => } (perigrin)
1848       - exposed and documented init_meta() to allow better
1849             embedding and extending of Moose (perigrin)
1850
1851         * t/
1852           - complete re-organization of the test suite
1853           - added some new tests as well
1854           - finally re-enabled the Moose::POOP test since
1855             the new version of DBM::Deep now works again
1856             (thanks rob)
1857
1858     * Moose::Meta::Class
1859       - fixed very odd and very nasty recursion bug with
1860         inner/augment (mst)
1861         - added tests for this (eilara)
1862
1863     * Moose::Meta::Attribute
1864       Moose::Meta::Method::Constructor
1865       Moose::Meta::Method::Accessor
1866       - fixed issue with overload::Overloaded getting called
1867         on non-blessed items. (RT #29269)
1868         - added tests for this
1869
1870     * Moose::Meta::Method::Accessor
1871       - fixed issue with generated accessor code making
1872         assumptions about hash based classes (thanks to dexter)
1873
1874     * Moose::Coookbook::Snacks
1875       - these are bits of documentation, not quite as big as
1876         Recipes but which have no clear place in the module docs.
1877         So they are Snacks! (horray for castaway++)
1878
1879     * Moose::Cookbook::Recipe4
1880       - updated it to use the new ArrayRef[MyType] construct
1881         - updated the accompanying test as well
1882
1883     +++ Major Refactor of the Type Constraint system +++
1884     +++       with new features added as well        +++
1885
1886     * Moose::Util::TypeConstraint
1887       - no longer uses package variable to keep track of
1888         the type constraints, now uses the an instance of
1889         Moose::Meta::TypeConstraint::Registry to do it
1890       - added more sophisticated type notation parsing
1891         (thanks to mugwump)
1892         - added tests for this
1893
1894     * Moose::Meta::TypeConstraint
1895       - some minor adjustments to make subclassing easier
1896       - added the package_defined_in attribute so that we
1897         can track where the type constraints are created
1898
1899     * Moose::Meta::TypeConstraint::Union
1900       - this is now been refactored to be a subclass of
1901         Moose::Meta::TypeConstraint
1902
1903     * Moose::Meta::TypeCoercion::Union
1904       - this has been added to service the newly refactored
1905         Moose::Meta::TypeConstraint::Union and is itself
1906         a subclass of Moose::Meta::TypeCoercion
1907
1908     * Moose::Meta::TypeConstraint::Parameterized
1909       - added this module (taken from MooseX::AttributeHelpers)
1910         to help construct nested collection types
1911         - added tests for this
1912
1913     * Moose::Meta::TypeConstraint::Registry
1914       - added this class to keep track of type constraints
1915
1916 0.25 Mon. Aug. 13, 2007
1917     * Moose
1918       - Documentation update to reference Moose::Util::TypeConstraints
1919         under 'isa' in 'has' for how to define a new type
1920         (thanks to shlomif).
1921
1922     * Moose::Meta::Attribute
1923       - required attributes now will no longer accept undef
1924         from the constructor, even if there is a default and lazy
1925         - added tests for this
1926       - default subroutines must return a value which passes the
1927         type constraint
1928         - added tests for this
1929
1930     * Moose::Meta::Attribute
1931     * Moose::Meta::Method::Constructor
1932     * Moose::Meta::Method::Accessor
1933       - type-constraint tests now handle overloaded objects correctly
1934         in the error message
1935         - added tests for this (thanks to EvanCarroll)
1936
1937     * Moose::Meta::TypeConstraint::Union
1938       - added (has_)hand_optimized_constraint to this class so that
1939         it behaves as the regular Moose::Meta::TypeConstraint does.
1940
1941     * Moose::Meta::Role
1942       - large refactoring of this code
1943       - added several more tests
1944         - tests for subtle conflict resolition issues
1945           added, but not currently running
1946           (thanks to kolibre)
1947
1948     * Moose::Cookbook::Recipe7
1949       - added new recipe for augment/inner functionality
1950         (still in progress)
1951         - added test for this
1952
1953     * Moose::Spec::Role
1954       - a formal definition of roles (still in progress)
1955
1956     * Moose::Util
1957       - utilities for easier working with Moose classes
1958         - added tests for these
1959
1960     * Test::Moose
1961       - This contains Moose specific test functions
1962         - added tests for these
1963
1964 0.24 Tues. July 3, 2007
1965     ~ Some doc updates/cleanup ~
1966
1967     * Moose::Meta::Attribute
1968       - added support for roles to be given as parameters
1969         to the 'handles' option.
1970         - added tests and docs for this
1971       - the has '+foo' attribute form now accepts changes to
1972         the lazy option, and the addition of a handles option
1973         (but not changing the handles option)
1974         - added tests and docs for this
1975
1976     * Moose::Meta::Role
1977       - required methods are now fetched using find_method_by_name
1978         so that required methods can come from superclasses
1979         - adjusted tests for this
1980
1981 0.23 Mon. June 18, 2007
1982     * Moose::Meta::Method::Constructor
1983       - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
1984     * Moose::Meta::Class
1985       - Modify make_immutable to work with the new Class::MOP immutable
1986         mechanism + POD + very basic test (groditi)
1987     * Moose::Meta::Attribute
1988       - Fix handles to use goto() so that caller() comes out properly on
1989         the other side (perigrin)
1990
1991 0.22 Thurs. May 31, 2007
1992     * Moose::Util::TypeConstraints
1993       - fix for prototype undeclared issue when Moose::Util::TypeConstraints
1994         loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
1995         prototypes for functions
1996       - added the ClassName type constraint, this checks for strings
1997         which will respond true to ->isa(UNIVERSAL).
1998         - added tests and docs for this
1999       - subtyping just in name now works correctly by making the
2000         default for where be { 1 }
2001         - added test for this
2002
2003     * Moose::Meta::Method::Accessor
2004       - coerce and lazy now work together correctly, thanks to
2005         merlyn for finding this bug
2006         - tests added for this
2007       - fix reader presedence bug in Moose::Meta::Attribute + tests
2008
2009     * Moose::Object
2010       - Foo->new(undef) now gets ignored, it is assumed you meant to pass
2011         a HASH-ref and missed. This produces better error messages then
2012         having it die cause undef is not a HASH.
2013         - added tests for this
2014
2015 0.21 Thursday, May 2nd, 2007
2016     * Moose
2017       - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
2018       - modified unimport to remove super and inner along with the rest
2019         - altered unimport tests to handle this
2020
2021     * Moose::Role
2022       - altered super export to populate SUPER_SLOT
2023
2024     * Moose::Meta::Class
2025       - altered augment and override modifier application to use *_SLOT
2026         - modified tests for these to unimport one test class each to test
2027
2028     * Moose::Meta::Role
2029       - fixed issue where custom attribute metaclasses
2030         where not handled correctly in roles
2031         - added tests for this
2032
2033     * Moose::Meta::Class
2034       - fixed issue where extending metaclasses with
2035         roles would blow up. Thanks to Aankhen`` for
2036         finding this insidious error, and it's solution.
2037
2038     ~~ lots of spelling and grammer fixes in the docs,
2039        many many thanks to rlb3 and Aankhen for these :)
2040
2041 0.20 Friday, April 6th, 2007
2042     >> I messed up the SKIP logic in one test
2043        so this release is just to fix that.
2044
2045     * Moose
2046       - 'has' now also accepts an ARRAY ref
2047         to create multiple attrs (see docs)
2048         (thanks to konobi for this)
2049          - added tests and docs
2050
2051 0.19 Thurs. April 5th, 2007
2052     ~~ More documentation updates ~~
2053
2054     * Moose::Util::TypeConstraints
2055       - 'type' now supports messages as well
2056         thanks to phaylon for finding this
2057         - added tests for this
2058       - added &list_all_type_constraints and
2059         &list_all_builtin_type_constraints
2060         functions to facilitate introspection.
2061
2062     * Moose::Meta::Attribute
2063       - fixed regexp 'handles' declarations
2064         to build the list of delegated methods
2065         correctly (and not override important
2066         things like &new) thanks to ashleyb
2067         for finding this
2068         - added tests and docs for this
2069       - added the 'documentation' attributes
2070         so that you can actually document your
2071         attributes and inspect them through the
2072         meta-object.
2073         - added tests and docs for this
2074
2075     * Moose::Meta::Class
2076       - when loading custom attribute metaclasses
2077         it will first look in for the class in the
2078         Moose::Meta::Attribute::Custom::$name, and
2079         then default to just loading $name.
2080         - added tests and docs for this
2081
2082     * Moose::Meta::TypeConstraint
2083       - type constraints now stringify to their names.
2084         - added test for this
2085
2086     * misc.
2087       - added tests to assure we work with Module::Refresh
2088       - added stricter test skip logic in the Moose POOP
2089         test, ask Rob Kinyon why.
2090         - *cough* DBM::Deep 1.0 backwards compatibility sucks *cough* ;)
2091
2092 0.18 Sat. March 10, 2007
2093     ~~ Many, many documentation updates ~~
2094
2095     * misc.
2096       - We now use Class::MOP::load_class to
2097         load all classes.
2098       - added tests to show types and subtypes
2099         working with Declare::Constraints::Simple
2100         and Test::Deep as constraint engines.
2101
2102 0.18_001
2103     !! You must have Class::MOP 0.37_001  !!
2104     !! for this developer release to work !!
2105
2106     This release was primarily adding the immutable
2107     feature to Moose. An immutable class is one which
2108     you promise not to alter. When you set the class
2109     as immutable it will perform various bits of
2110     memoization and inline certain part of the code
2111     (constructors, destructors and accessors). This
2112     minimizes (and in some cases totally eliminates)
2113     one of Moose's biggest performance hits. This
2114     feature is not on by default, and is 100% optional.
2115     It has several configurable bits as well, so you
2116     can pick and choose to your specific needs.
2117
2118     The changes involved in this were fairly wide and
2119     highly specific, but 100% backwards compatible, so
2120     I am not going to enumerate them here. If you are
2121     truely interested in what was changed, please do
2122     a diff :)
2123
2124 0.17 Tues. Nov. 14, 2006
2125     * Moose::Meta::Method::Accessor
2126       - bugfix for read-only accessors which
2127         are have a type constraint and lazy.
2128         Thanks to chansen for finding it.
2129
2130 0.16 Tues. Nov. 14, 2006
2131     ++ NOTE ++
2132     There are some speed improvements in this release,
2133     but they are only the begining, so stay tuned.
2134
2135     * Moose::Object
2136       - BUILDALL and DEMOLISHALL no longer get
2137         called unless they actually need to be.
2138         This gave us a signifigant speed boost
2139         for the cases when there is no BUILD or
2140         DEMOLISH method present.
2141
2142     * Moose::Util::TypeConstraints
2143     * Moose::Meta::TypeConstraint
2144       - added an 'optimize_as' option to the
2145         type constraint, which allows for a
2146         hand optimized version of the type
2147         constraint to be used when possible.
2148       - Any internally created type constraints
2149         now provide an optimized version as well.
2150
2151 0.15 Sun. Nov. 5, 2006
2152     ++ NOTE ++
2153     This version of Moose *must* have Class::MOP 0.36 in order
2154     to work correctly. A number of small internal tweaks have
2155     been made in order to be compatible with that release.
2156
2157     * Moose::Util::TypeConstraints
2158       - added &unimport so that you can clean out
2159         your class namespace of these exported
2160         keywords
2161
2162     * Moose::Meta::Class
2163       - fixed minor issue which occasionally
2164         comes up during global destruction
2165         (thanks omega)
2166       - moved Moose::Meta::Method::Overriden into
2167         its own file.
2168
2169     * Moose::Meta::Role
2170       - moved Moose::Meta::Role::Method into
2171         its own file.
2172
2173     * Moose::Meta::Attribute
2174       - changed how we do type checks so that
2175         we reduce the overall cost, but still
2176         retain correctness.
2177        *** API CHANGE ***
2178       - moved accessor generation methods to
2179         Moose::Meta::Method::Accessor to
2180         conform to the API changes from
2181         Class::MOP 0.36
2182
2183     * Moose::Meta::TypeConstraint
2184       - changed how constraints are compiled
2185         so that we do less recursion and more
2186         iteration. This makes the type check
2187         faster :)
2188       - moved Moose::Meta::TypeConstraint::Union
2189         into its own file
2190
2191     * Moose::Meta::Method::Accessor
2192       - created this from methods formerly found in
2193         Moose::Meta::Attribute
2194
2195     * Moose::Meta::Role::Method
2196       - moved this from Moose::Meta::Role
2197
2198     * Moose::Meta::Method::Overriden
2199       - moved this from Moose::Meta::Class
2200
2201     * Moose::Meta::TypeConstraint::Union
2202       - moved this from Moose::Meta::TypeConstraint
2203
2204 0.14 Mon. Oct. 9, 2006
2205
2206     * Moose::Meta::Attribute
2207       - fixed lazy attributes which were not getting
2208         checked with the type constraint (thanks ashley)
2209         - added tests for this
2210       - removed the over-enthusiastic DWIMery of the
2211         automatic ArrayRef and HashRef defaults, it
2212         broke predicates in an ugly way.
2213         - removed tests for this
2214
2215 0.13 Sat. Sept. 30, 2006
2216     ++ NOTE ++
2217     This version of Moose *must* have Class::MOP 0.35 in order
2218     to work correctly. A number of small internal tweaks have
2219     been made in order to be compatible with that release.
2220
2221     * Moose
2222       - Removed the use of UNIVERSAL::require to be a better
2223         symbol table citizen and remove a dependency
2224         (thanks Adam Kennedy)
2225
2226       **~~ removed experimental & undocumented feature ~~**
2227       - commented out the 'method' and 'self' keywords, see the
2228         comments for more info.
2229
2230     * Moose::Cookbook
2231       - added a FAQ and WTF files to document frequently
2232         asked questions and common problems
2233
2234     * Moose::Util::TypeConstraints
2235       - added GlobRef and FileHandle type constraint
2236         - added tests for this
2237
2238     * Moose::Meta::Attribute
2239       - if your attribute 'isa' ArrayRef of HashRef, and you have
2240         not explicitly set a default, then make the default DWIM.
2241         This will also work for subtypes of ArrayRef and HashRef
2242         as well.
2243       - you can now auto-deref subtypes of ArrayRef or HashRef too.
2244         - new test added for this (thanks to ashley)
2245
2246     * Moose::Meta::Role
2247       - added basic support for runtime role composition
2248         but this is still *highly experimental*, so feedback
2249         is much appreciated :)
2250         - added tests for this
2251
2252     * Moose::Meta::TypeConstraint
2253       - the type constraint now handles the coercion process
2254         through delegation, this is to support the coercion
2255         of unions
2256
2257     * Moose::Meta::TypeConstraint::Union
2258       - it is now possible for coercions to be performed
2259         on a type union
2260         - added tests for this (thanks to konobi)
2261
2262     * Moose::Meta::TypeCoercion
2263       - properly capturing error when type constraint
2264         is not found
2265
2266     * Build.PL
2267       - Scalar::Util 1.18 is bad on Win32, so temporarily
2268         only require version 1.17 for Win32 and cygwin.
2269         (thanks Adam Kennedy)
2270
2271 0.12 Sat. Sept. 1, 2006
2272     * Moose::Cookbook
2273       - Recipe5 (subtypes & coercion) has been written
2274
2275     * Moose
2276       - fixed "bad meta" error message to be more descriptive
2277       - fixed &unimport to not remove the &inner and &super
2278         keywords because we need to localize them.
2279       - fixed number of spelling/grammer issues, thanks Theory :)
2280
2281       **~~ experimental & undocumented feature ~~**
2282       - added the method and self keywords, they are basically
2283         just sugar, and they may not stay around.
2284
2285     * Moose::Object
2286       - added &dump method to easily Data::Dumper
2287         an object
2288
2289     * Moose::Meta::TypeConstraint
2290       - added the &is_a_type_of method to check both the current
2291         and the subtype of a method (similar to &isa with classes)
2292
2293     * Moose::Meta::Role
2294       - this is now a subclass of Class::MOP::Module, and no longer
2295         creates the _role_meta ugliness of before.
2296         - fixed tests to reflect this change
2297
2298 0.11 Wed. July 12, 2006
2299     * Moose
2300       - added an &unimport method to remove all the keywords
2301         that Moose will import, simply add 'no Moose' to the
2302         bottom of your class file.
2303
2304     * t/
2305       - fixed some test failures caused by a forgotten test
2306         dependency.
2307
2308 0.10 Thurs. July 6, 2006
2309     * Moose
2310       - improved error message when loading modules so
2311         it is less confusing when you load a role.
2312       - added &calculate_all_roles method to
2313         Moose::Meta::Class and Moose::Meta::Role
2314
2315     NOTE:
2316     This module has been tested against Class::MOP 0.30
2317     but it does not yet utilize the optimizations
2318     it makes available. Stay tuned for that ;)
2319
2320 0.09_03 Fri. June 23, 2006
2321     ++ DEVELOPER RELEASE ++
2322     * Moose
2323       - 'use strict' and 'use warnings' are no longer
2324          needed in Moose classes, Moose itself will
2325          turn them on for you.
2326          - added tests for this
2327       - moved code from exported subs to private methods
2328         in Moose::Meta::Class
2329
2330     * Moose::Role
2331       - as with Moose, strict and warnings are
2332         automatically turned on for you.
2333          - added tests for this
2334
2335     * Moose::Meta::Role
2336       - now handles an edge case for override errors
2337         - added tests for this
2338       - added some more edge case tests
2339
2340 0.09_02 Tues. May 16, 2006
2341     ++ DEVELOPER RELEASE ++
2342     * Moose
2343       - added prototypes to the exported subs
2344       - updated docs
2345
2346     * Moose::Role
2347       - added prototypes to the exported subs
2348       - updated docs
2349
2350     * Moose::Util::TypeConstraints
2351       - cleaned up prototypes for the subs
2352       - updated docs
2353
2354 0.09_01 Fri. May 12, 2006
2355     ++ DEVELOPER RELEASE ++
2356       - This release works in combination with
2357         Class::MOP 0.29_01, it is a developer
2358         release because it uses the a new
2359         instance sub-protocol and a fairly
2360         complete Role implementation. It has
2361         not yet been optimized, so it slower
2362         the the previous CPAN version. This
2363         release also lacks good updated docs,
2364         the official release will have updated docs.
2365
2366     * Moose
2367       - refactored the keyword exports
2368         - 'with' now checks Role validaity and
2369           accepts more than one Role at a time
2370         - 'extends' makes metaclass adjustments as
2371            needed to ensure metaclass compatibility
2372
2373     * Moose::Role
2374       - refactored the keyword exports
2375         - 'with' now checks Role validaity and
2376           accepts more than one Role at a time
2377
2378     * Moose::Util::TypeConstraints
2379       - added the 'enum' keyword for simple
2380         string enumerations which can be used as
2381         type constraints
2382         - see example of usage in t/202_example.t
2383
2384     * Moose::Object
2385       - more careful checking of params to new()
2386
2387     * Moose::Meta::Role
2388       - much work done on the role composition
2389         - many new tests for conflict detection
2390           and composition edge cases
2391         - not enough documentation, I suggest
2392           looking at the tests
2393
2394     * Moose::Meta::Instance
2395       - added new Instance metaclass to support
2396         the new Class::MOP instance protocol
2397
2398     * Moose::Meta::Class
2399       - some small changes to support the new
2400         instance protocol
2401       - some small additions to support Roles
2402
2403     * Moose::Meta::Attribute
2404       - some improvements to the accessor generation code
2405         by nothingmuch
2406       - some small changes to support the new
2407         instance protocol
2408       - (still somewhat) experimental delegation support
2409         with the 'handles' option
2410         - added several tests for this
2411         - no docs for this yet
2412
2413 0.05 Thurs. April 27, 2006
2414     * Moose
2415       - keywords are now exported with Sub::Exporter
2416         thanks to chansen for this commit
2417       - has keyword now takes a 'metaclass' option
2418         to support custom attribute meta-classes
2419         on a per-attribute basis
2420         - added tests for this
2421       - the 'has' keyword not accepts inherited slot
2422         specifications (has '+foo'). This is still an
2423         experimental feature and probably not finished
2424         see t/038_attribute_inherited_slot_specs.t for
2425         more details, or ask about it on #moose
2426         - added tests for this
2427
2428     * Moose::Role
2429       - keywords are now exported with Sub::Exporter
2430
2431     * Moose::Utils::TypeConstraints
2432       - reorganized the type constraint hierarchy, thanks
2433         to nothingmuch and chansen for his help and advice
2434         on this
2435         - added some tests for this
2436       - keywords are now exported with Sub::Exporter
2437         thanks to chansen for this commit
2438
2439     * Moose::Meta::Class
2440       - due to changes in Class::MOP, we had to change
2441         construct_instance (for the better)
2442
2443     * Moose::Meta::Attribute
2444       - due to changes in Class::MOP, we had to add the
2445         initialize_instance_slot method (it's a good thing)
2446
2447     * Moose::Meta::TypeConstraint
2448       - added type constraint unions
2449         - added tests for this
2450       - added the is_subtype_of predicate method
2451         - added tests for this
2452
2453 0.04 Sun. April 16th, 2006
2454     * Moose::Role
2455       - Roles can now consume other roles
2456         - added tests for this
2457       - Roles can specify required methods now with
2458         the requires() keyword
2459         - added tests for this
2460
2461     * Moose::Meta::Role
2462       - ripped out much of it's guts ,.. much cleaner now
2463       - added required methods and correct handling of
2464         them in apply() for both classes and roles
2465         - added tests for this
2466       - no longer adds a does() method to consuming classes
2467         it relys on the one in Moose::Object
2468       - added roles attribute and some methods to support
2469         roles consuming roles
2470
2471     * Moose::Meta::Attribute
2472       - added support for triggers on attributes
2473         - added tests for this
2474       - added support for does option on an attribute
2475         - added tests for this
2476
2477     * Moose::Meta::Class
2478       - added support for attribute triggers in the
2479         object construction
2480         - added tests for this
2481
2482     * Moose
2483       - Moose no longer creates a subtype for your class
2484         if a subtype of the same name already exists, this
2485         should DWIM in 99.9999% of all cases
2486
2487     * Moose::Util::TypeConstraints
2488       - fixed bug where incorrect subtype conflicts were
2489         being reported
2490         - added test for this
2491
2492     * Moose::Object
2493       - this class can now be extended with 'use base' if
2494         you need it, it properly loads the metaclass class now
2495         - added test for this
2496
2497 0.03_02 Wed. April 12, 2006
2498     * Moose
2499       - you must now explictly use Moose::Util::TypeConstraints
2500         it no longer gets exported for you automatically
2501
2502     * Moose::Object
2503       - new() now accepts hash-refs as well as key/value lists
2504       - added does() method to check for Roles
2505         - added tests for this
2506
2507     * Moose::Meta::Class
2508       - added roles attribute along with the add_role() and
2509         does_role() methods
2510         - added tests for this
2511
2512     * Moose::Meta::Role
2513       - now adds a does() method to consuming classes
2514         which tests the class's hierarchy for roles
2515         - added tests for this
2516
2517 0.03_01 Mon. April 10, 2006
2518     * Moose::Cookbook
2519       - added new Role recipe (no content yet, only code)
2520
2521     * Moose
2522       - added 'with' keyword for Role support
2523         - added test and docs for this
2524       - fixed subtype quoting bug
2525         - added test for this
2526
2527     * Moose::Role
2528       - Roles for Moose
2529         - added test and docs
2530
2531     * Moose::Util::TypeConstraints
2532       - added the message keyword to add custom
2533         error messages to type constraints
2534
2535     * Moose::Meta::Role
2536       - the meta role to support Moose::Role
2537         - added tests and docs
2538
2539     * Moose::Meta::Class
2540       - moved a number of things from Moose.pm
2541         to here, they should have been here
2542         in the first place
2543
2544     * Moose::Meta::Attribute
2545       - moved the attribute option macros here
2546         instead of putting them in Moose.pm
2547
2548     * Moose::Meta::TypeConstraint
2549       - added the message attributes and the
2550         validate method
2551         - added tests and docs for this
2552
2553 0.03 Thurs. March 30, 2006
2554     * Moose::Cookbook
2555       - added the Moose::Cookbook with 5 recipes,
2556         describing all the stuff Moose can do.
2557
2558     * Moose
2559       - fixed an issue with &extends super class loading
2560         it now captures errors and deals with inline
2561         packages correctly (bug found by mst, solution
2562         stolen from alias)
2563       - added super/override & inner/augment features
2564         - added tests and docs for these
2565
2566     * Moose::Object
2567       - BUILDALL now takes a reference of the %params
2568         that are passed to &new, and passes that to
2569         each BUILD as well.
2570
2571     * Moose::Util::TypeConstraints
2572       - Type constraints now survive runtime reloading
2573         - added test for this
2574
2575         * Moose::Meta::Class
2576           - fixed the way attribute defaults are handled
2577             during instance construction (bug found by chansen)
2578
2579     * Moose::Meta::Attribute
2580       - read-only attributes now actually enforce their
2581         read-only-ness (this corrected in Class::MOP as
2582         well)
2583
2584 0.02 Tues. March 21, 2006
2585     * Moose
2586       - many more tests, fixing some bugs and
2587         edge cases
2588       - &extends now loads the base module with
2589         UNIVERSAL::require
2590         - added UNIVERSAL::require to the
2591           dependencies list
2592       ** API CHANGES **
2593       - each new Moose class will also create
2594         and register a subtype of Object which
2595         correspond to the new Moose class.
2596       - the 'isa' option in &has now only
2597         accepts strings, and will DWIM in
2598         almost all cases
2599
2600     * Moose::Util::TypeConstraints
2601       - added type coercion features
2602         - added tests for this
2603         - added support for this in attributes
2604           and instance construction
2605       ** API CHANGES **
2606       - type construction no longer creates a
2607         function, it registers the type instead.
2608         - added several functions to get the
2609           registered types
2610
2611     * Moose::Object
2612       - BUILDALL and DEMOLISHALL were broken
2613         because of a mis-named hash key, Whoops :)
2614
2615     * Moose::Meta::Attribute
2616       - adding support for coercion in the
2617         autogenerated accessors
2618
2619     * Moose::Meta::Class
2620       - adding support for coercion in the
2621         instance construction
2622
2623     * Moose::Meta::TypeConstraint
2624     * Moose::Meta::TypeCoercion
2625           - type constraints and coercions are now
2626             full fledges meta-objects
2627
2628 0.01 Wed. March 15, 2006
2629     - Moooooooooooooooooose!!!