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