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