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