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